diff options
author | Arystanbek Dyussenov <arystan.d@gmail.com> | 2010-01-30 17:12:51 +0300 |
---|---|---|
committer | Arystanbek Dyussenov <arystan.d@gmail.com> | 2010-01-30 17:12:51 +0300 |
commit | 1f863d0122b37d99a49383e7695d1a0c47a0b114 (patch) | |
tree | c97feebfa202b4d1cfabedd849d070888fd58af7 /source/blender | |
parent | 669533437778339e293c8b2bfefa32166a6cc708 (diff) | |
parent | 7a76bc9a361e6cb45e4292c0ac5c7bb08936b829 (diff) |
COLLADA branch: merge from trunk -r 25745:26429.
scons+vc build crashes on Blender start when BF_COLLADA is on, don't know why this happens.
Merging from trunk to get working vc project files, then will try to debug and locate the problem.
Diffstat (limited to 'source/blender')
481 files changed, 37953 insertions, 24370 deletions
diff --git a/source/blender/Makefile b/source/blender/Makefile index 6bc874c3c93..1c4ff6935b9 100644 --- a/source/blender/Makefile +++ b/source/blender/Makefile @@ -37,13 +37,17 @@ DIRS += python nodes gpu DIRS += blenfont ikplugin ifeq ($(WITH_QUICKTIME), true) - DIRS += quicktime + DIRS += quicktime endif ifeq ($(WITH_OPENJPEG), true) CFLAGS += -DWITH_OPENJPEG -I../../../../extern/libopenjpeg endif +ifeq ($(WITH_OPENCOLLADA), true) + DIRS += collada +endif + DIR = $(OCGDIR)/blender SOURCEDIR = source/blender diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h index 821c963de1c..29b3d09807d 100644 --- a/source/blender/blenkernel/BKE_DerivedMesh.h +++ b/source/blender/blenkernel/BKE_DerivedMesh.h @@ -78,6 +78,12 @@ typedef struct DMGridAdjacency { int rotation[4]; } DMGridAdjacency; +typedef enum DerivedMeshType { + DM_TYPE_CDDM, + DM_TYPE_EDITMESH, + DM_TYPE_CCGDM +} DerivedMeshType; + typedef struct DerivedMesh DerivedMesh; struct DerivedMesh { /* Private DerivedMesh data, only for internal DerivedMesh use */ @@ -87,6 +93,7 @@ struct DerivedMesh { int deformedOnly; /* set by modifier stack if only deformed from original */ BVHCache bvhCache; struct GPUDrawObject *drawObject; + DerivedMeshType type; /* Misc. Queries */ @@ -329,12 +336,14 @@ void DM_init_funcs(DerivedMesh *dm); * of vertices, edges and faces (doesn't allocate memory for them, just * sets up the custom data layers) */ -void DM_init(DerivedMesh *dm, int numVerts, int numEdges, int numFaces); +void DM_init(DerivedMesh *dm, DerivedMeshType type, + int numVerts, int numEdges, int numFaces); /* utility function to initialise a DerivedMesh for the desired number * of vertices, edges and faces, with a layer setup copied from source */ void DM_from_template(DerivedMesh *dm, DerivedMesh *source, + DerivedMeshType type, int numVerts, int numEdges, int numFaces); /* utility function to release a DerivedMesh's layers @@ -493,8 +502,8 @@ void makeDerivedMesh(struct Scene *scene, struct Object *ob, struct EditMesh *em /* returns an array of deform matrices for crazyspace correction, and the number of modifiers left */ -int editmesh_get_first_deform_matrices(struct Object *, struct EditMesh *em, float (**deformmats)[3][3], - float (**deformcos)[3]); +int editmesh_get_first_deform_matrices(struct Scene *, struct Object *, struct EditMesh *em, + float (**deformmats)[3][3], float (**deformcos)[3]); void weight_to_rgb(float input, float *fr, float *fg, float *fb); diff --git a/source/blender/blenkernel/BKE_anim.h b/source/blender/blenkernel/BKE_anim.h index 5507a8b380e..c664469527e 100644 --- a/source/blender/blenkernel/BKE_anim.h +++ b/source/blender/blenkernel/BKE_anim.h @@ -40,6 +40,7 @@ struct Scene; struct ListBase; struct bAnimVizSettings; struct bMotionPath; +struct bPoseChannel; #include "DNA_object_types.h" @@ -51,6 +52,11 @@ void animviz_settings_init(struct bAnimVizSettings *avs); void animviz_free_motionpath_cache(struct bMotionPath *mpath); void animviz_free_motionpath(struct bMotionPath *mpath); +struct bMotionPath *animviz_verify_motionpaths(struct Scene *scene, struct Object *ob, struct bPoseChannel *pchan); + +void animviz_get_object_motionpaths(Object *ob, ListBase *targets); +void animviz_calc_motionpaths(struct Scene *scene, ListBase *targets); + /* ---------------------------------------------------- */ /* Curve Paths */ diff --git a/source/blender/blenkernel/BKE_animsys.h b/source/blender/blenkernel/BKE_animsys.h index 045095567bc..1bf0164884a 100644 --- a/source/blender/blenkernel/BKE_animsys.h +++ b/source/blender/blenkernel/BKE_animsys.h @@ -43,7 +43,10 @@ struct AnimMapper; /* ************************************* */ /* AnimData API */ -/* Get AnimData from the given ID-block. */ +/* Check if the given ID-block can have AnimData */ +short id_type_can_have_animdata(struct ID *id); + +/* Get AnimData from the given ID-block */ struct AnimData *BKE_animdata_from_id(struct ID *id); /* Add AnimData to the given ID-block */ @@ -55,6 +58,9 @@ void BKE_free_animdata(struct ID *id); /* Copy AnimData */ struct AnimData *BKE_copy_animdata(struct AnimData *adt); +/* Copy AnimData */ +int BKE_copy_animdata_id(struct ID *id_to, struct ID *id_from); + /* Make Local */ void BKE_animdata_make_local(struct AnimData *adt); @@ -89,6 +95,16 @@ void BKE_animdata_fix_paths_rename(struct ID *owner_id, struct AnimData *adt, ch void BKE_all_animdata_fix_paths_rename(char *prefix, char *oldName, char *newName); /* ************************************* */ +/* Batch AnimData API */ + +/* Define for callback looper used in BKE_animdata_main_cb */ +typedef void (*ID_AnimData_Edit_Callback)(struct ID *id, struct AnimData *adt, void *user_data); + + +/* Loop over all datablocks applying callback */ +void BKE_animdata_main_cb(struct Main *main, ID_AnimData_Edit_Callback func, void *user_data); + +/* ************************************* */ // TODO: overrides, remapping, and path-finding api's /* ************************************* */ diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h index 8e7e698a986..45df0913079 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 11 +#define BLENDER_SUBVERSION 15 #define BLENDER_MINVERSION 250 #define BLENDER_MINSUBVERSION 0 @@ -62,12 +62,6 @@ void BKE_userdef_free(void); void set_blender_test_break_cb(void (*func)(void) ); int blender_test_break(void); -void pushdata(void *data, int len); -void popfirst(void *data); -void poplast(void *data); -void free_pushpop(void); -void pushpop_test(void); - /* global undo */ extern void BKE_write_undo(struct bContext *C, char *name); extern void BKE_undo_step(struct bContext *C, int step); diff --git a/source/blender/blenkernel/BKE_brush.h b/source/blender/blenkernel/BKE_brush.h index 40e1859ade2..cf8af56a5a9 100644 --- a/source/blender/blenkernel/BKE_brush.h +++ b/source/blender/blenkernel/BKE_brush.h @@ -55,7 +55,7 @@ int brush_clone_image_set_nr(struct Brush *brush, int nr); int brush_clone_image_delete(struct Brush *brush); /* brush curve */ -void brush_curve_preset(struct Brush *b, enum CurveMappingPreset preset); +void brush_curve_preset(struct Brush *b, /*enum CurveMappingPreset*/int preset); float brush_curve_strength_clamp(struct Brush *br, float p, const float len); float brush_curve_strength(struct Brush *br, float p, const float len); /* used for sculpt */ diff --git a/source/blender/blenkernel/BKE_colortools.h b/source/blender/blenkernel/BKE_colortools.h index 85215592ff0..11c5e51b2c1 100644 --- a/source/blender/blenkernel/BKE_colortools.h +++ b/source/blender/blenkernel/BKE_colortools.h @@ -31,9 +31,20 @@ struct CurveMapping; struct CurveMap; +struct Histogram; struct ImBuf; struct rctf; +#if defined _WIN32 +# define DO_INLINE __inline +#elif defined (__sgi) +# define DO_INLINE +#elif defined (__sun) || defined (__sun__) +# define DO_INLINE +#else +# define DO_INLINE static inline +#endif + typedef enum CurveMappingPreset { CURVE_PRESET_LINE, CURVE_PRESET_SHARP, @@ -70,6 +81,7 @@ void curvemapping_initialize(struct CurveMapping *cumap); void curvemapping_table_RGBA(struct CurveMapping *cumap, float **array, int *size); void colorcorrection_do_ibuf(struct ImBuf *ibuf, const char *profile); +void histogram_update(struct Histogram *hist, struct ImBuf *ibuf); #endif diff --git a/source/blender/blenkernel/BKE_deform.h b/source/blender/blenkernel/BKE_deform.h index 8a34b286881..53844c1e6a5 100644 --- a/source/blender/blenkernel/BKE_deform.h +++ b/source/blender/blenkernel/BKE_deform.h @@ -40,15 +40,30 @@ struct ListBase; struct bDeformGroup; struct MDeformVert; -void copy_defgroups (struct ListBase *lb1, struct ListBase *lb2); -struct bDeformGroup *copy_defgroup (struct bDeformGroup *ingroup); -struct bDeformGroup *get_named_vertexgroup (Object *ob, char *name); -int get_defgroup_num (struct Object *ob, struct bDeformGroup *dg); -int get_named_vertexgroup_num (Object *ob, const char *name); -void unique_vertexgroup_name (struct bDeformGroup *dg, struct Object *ob); - -float deformvert_get_weight(const struct MDeformVert *dvert, int group_num); -float vertexgroup_get_vertex_weight(const struct MDeformVert *dvert, int index, int group_num); +void defgroup_copy_list(struct ListBase *lb1, struct ListBase *lb2); +struct bDeformGroup *defgroup_duplicate(struct bDeformGroup *ingroup); +struct bDeformGroup *defgroup_find_name(struct Object *ob, char *name); +int defgroup_find_index(struct Object *ob, struct bDeformGroup *dg); +int *defgroup_flip_map(struct Object *ob, int use_default); +int defgroup_flip_index(struct Object *ob, int index, int use_default); +int defgroup_name_index(struct Object *ob, const char *name); +void defgroup_unique_name(struct bDeformGroup *dg, struct Object *ob); + +struct MDeformWeight *defvert_find_index(const struct MDeformVert *dv, int defgroup); +struct MDeformWeight *defvert_verify_index(struct MDeformVert *dv, int defgroup); + +float defvert_find_weight(const struct MDeformVert *dvert, int group_num); +float defvert_array_find_weight_safe(const struct MDeformVert *dvert, int index, int group_num); + +void defvert_copy(struct MDeformVert *dvert_r, const struct MDeformVert *dvert); +void defvert_sync(struct MDeformVert *dvert_r, const struct MDeformVert *dvert, int use_verify); +void defvert_sync_mapped(struct MDeformVert *dvert_r, const struct MDeformVert *dvert, int *flip_map, int use_verify); +void defvert_flip(struct MDeformVert *dvert, int *flip_map); +void defvert_normalize(struct MDeformVert *dvert); + +/* utility function, note that 32 chars is the maximum string length since its only + * used with defgroups currently */ +void flip_side_name(char *name, const char *from_name, int strip_number); #endif diff --git a/source/blender/blenkernel/BKE_fcurve.h b/source/blender/blenkernel/BKE_fcurve.h index d3457a5f5ae..9839cde9a22 100644 --- a/source/blender/blenkernel/BKE_fcurve.h +++ b/source/blender/blenkernel/BKE_fcurve.h @@ -36,6 +36,8 @@ struct DriverTarget; struct BezTriple; struct StructRNA; +struct PointerRNA; +struct PropertyRNA; #include "DNA_curve_types.h" @@ -191,6 +193,9 @@ struct FCurve *id_data_find_fcurve(ID *id, void *data, struct StructRNA *type, c */ int list_find_data_fcurves(ListBase *dst, ListBase *src, const char *dataPrefix, const char *dataName); +/* find an f-curve based on an rna property */ +struct FCurve *rna_get_fcurve(struct PointerRNA *ptr, struct PropertyRNA *prop, int rnaindex, struct bAction **action, int *driven); + /* 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_global.h b/source/blender/blenkernel/BKE_global.h index 2e9ac2f65f0..9684aa1c602 100644 --- a/source/blender/blenkernel/BKE_global.h +++ b/source/blender/blenkernel/BKE_global.h @@ -146,6 +146,7 @@ typedef struct Global { #define G_FILE_GLSL_NO_EXTRA_TEX (1 << 21) /* deprecated */ #define G_FILE_IGNORE_DEPRECATION_WARNINGS (1 << 22) /* deprecated */ #define G_FILE_RECOVER (1 << 23) +#define G_FILE_RELATIVE_REMAP (1 << 24) /* G.windowstate */ #define G_WINDOWSTATE_USERDEF 0 diff --git a/source/blender/blenkernel/BKE_group.h b/source/blender/blenkernel/BKE_group.h index 877e09b037f..1a194cf2cfa 100644 --- a/source/blender/blenkernel/BKE_group.h +++ b/source/blender/blenkernel/BKE_group.h @@ -37,8 +37,7 @@ struct Object; struct bAction; struct Scene; -void free_group_object(struct GroupObject *go); -void free_group(struct Group *group); +void free_group_objects(struct Group *group); void unlink_group(struct Group *group); struct Group *add_group(char *name); struct Group *copy_group(struct Group *group); diff --git a/source/blender/blenkernel/BKE_image.h b/source/blender/blenkernel/BKE_image.h index 97b298186bf..01e23e81fbe 100644 --- a/source/blender/blenkernel/BKE_image.h +++ b/source/blender/blenkernel/BKE_image.h @@ -48,8 +48,8 @@ void free_image(struct Image *me); void BKE_stamp_info(struct Scene *scene, struct ImBuf *ibuf); void BKE_stamp_buf(struct Scene *scene, unsigned char *rect, float *rectf, int width, int height, int channels); int BKE_write_ibuf(struct Scene *scene, struct ImBuf *ibuf, char *name, int imtype, int subimtype, int quality); -void BKE_makepicstring(struct Scene *scene, char *string, char *base, int frame, int imtype); -void BKE_add_image_extension(struct Scene *scene, char *string, int imtype); +void BKE_makepicstring(char *string, char *base, int frame, int imtype, int use_ext); +void BKE_add_image_extension(char *string, int imtype); int BKE_ftype_to_imtype(int ftype); int BKE_imtype_to_ftype(int imtype); int BKE_imtype_is_movie(int imtype); @@ -129,7 +129,7 @@ struct Image *BKE_image_verify_viewer(int type, const char *name); void BKE_image_assign_ibuf(struct Image *ima, struct ImBuf *ibuf); /* called on frame change or before render */ -void BKE_image_user_calc_imanr(struct ImageUser *iuser, int cfra, int fieldnr); +void BKE_image_user_calc_frame(struct ImageUser *iuser, int cfra, int fieldnr); /* produce image export path */ int BKE_get_image_export_path(struct Image *im, const char *dest_dir, char *abs, int abs_size, char *rel, int rel_size); @@ -143,7 +143,7 @@ struct RenderPass *BKE_image_multilayer_index(struct RenderResult *rr, struct Im /* for multilayer images as well as for render-viewer */ struct RenderResult *BKE_image_acquire_renderresult(struct Scene *scene, struct Image *ima); void BKE_image_release_renderresult(struct Scene *scene, struct Image *ima); - + /* goes over all textures that use images */ void BKE_image_free_all_textures(void); diff --git a/source/blender/blenkernel/BKE_material.h b/source/blender/blenkernel/BKE_material.h index 3ea7cae2c86..c8cbf21a093 100644 --- a/source/blender/blenkernel/BKE_material.h +++ b/source/blender/blenkernel/BKE_material.h @@ -77,6 +77,12 @@ int material_in_material(struct Material *parmat, struct Material *mat); void ramp_blend(int type, float *r, float *g, float *b, float fac, float *col); +/* copy/paste */ +void clear_matcopybuf(void); +void free_matcopybuf(void); +void copy_matcopybuf(struct Material *ma); +void paste_matcopybuf(struct Material *ma); + #ifdef __cplusplus } #endif diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h index dd5f391cc5c..562144d2edb 100644 --- a/source/blender/blenkernel/BKE_modifier.h +++ b/source/blender/blenkernel/BKE_modifier.h @@ -279,10 +279,10 @@ void modifier_unique_name(struct ListBase *modifiers, struct ModifierData *m void modifier_copyData(struct ModifierData *md, struct ModifierData *target); int modifier_dependsOnTime(struct ModifierData *md); int modifier_supportsMapping(struct ModifierData *md); -int modifier_couldBeCage(struct ModifierData *md); +int modifier_couldBeCage(struct Scene *scene, struct ModifierData *md); int modifier_isCorrectableDeformed(struct ModifierData *md); int modifier_sameTopology(ModifierData *md); -int modifier_isEnabled(struct ModifierData *md, int required_mode); +int modifier_isEnabled(struct Scene *scene, struct ModifierData *md, int required_mode); void modifier_setError(struct ModifierData *md, char *format, ...); void modifiers_foreachObjectLink(struct Object *ob, @@ -293,7 +293,7 @@ void modifiers_foreachIDLink(struct Object *ob, void *userData); struct ModifierData *modifiers_findByType(struct Object *ob, ModifierType type); void modifiers_clearErrors(struct Object *ob); -int modifiers_getCageIndex(struct Object *ob, +int modifiers_getCageIndex(struct Scene *scene, struct Object *ob, int *lastPossibleCageIndex_r, int virtual_); int modifiers_isSoftbodyEnabled(struct Object *ob); @@ -313,7 +313,8 @@ int modifiers_indexInObject(struct Object *ob, struct ModifierData *md * evaluation, assuming the data indicated by dataMask is required at the * end of the stack. */ -struct LinkNode *modifiers_calcDataMasks(struct Object *ob, +struct LinkNode *modifiers_calcDataMasks(struct Scene *scene, + struct Object *ob, struct ModifierData *md, CustomDataMask dataMask, int required_mode); diff --git a/source/blender/blenkernel/BKE_nla.h b/source/blender/blenkernel/BKE_nla.h index 989043c1d67..780f871ebd8 100644 --- a/source/blender/blenkernel/BKE_nla.h +++ b/source/blender/blenkernel/BKE_nla.h @@ -83,6 +83,7 @@ struct NlaStrip *BKE_nlastrip_find_active(struct NlaTrack *nlt); void BKE_nlastrip_set_active(struct AnimData *adt, struct NlaStrip *strip); short BKE_nlastrip_within_bounds(struct NlaStrip *strip, float min, float max); +void BKE_nlastrip_recalculate_bounds(struct NlaStrip *strip); void BKE_nlastrip_validate_name(struct AnimData *adt, struct NlaStrip *strip); diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h index 8da732af2dd..6d99d1848bf 100644 --- a/source/blender/blenkernel/BKE_node.h +++ b/source/blender/blenkernel/BKE_node.h @@ -354,6 +354,8 @@ void ntreeGPUMaterialNodes(struct bNodeTree *ntree, struct GPUMaterial *mat); #define CMP_NODE_DIST_MATTE 257 #define CMP_NODE_VIEW_LEVELS 258 #define CMP_NODE_COLOR_MATTE 259 +#define CMP_NODE_COLORBALANCE 260 +#define CMP_NODE_HUECORRECT 261 #define CMP_NODE_GLARE 301 #define CMP_NODE_TONEMAP 302 diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h index d0c2052f0d6..9d763ea78a8 100644 --- a/source/blender/blenkernel/BKE_object.h +++ b/source/blender/blenkernel/BKE_object.h @@ -67,6 +67,7 @@ void object_link_modifiers(struct Object *ob, struct Object *from); void object_free_modifiers(struct Object *ob); void object_make_proxy(struct Object *ob, struct Object *target, struct Object *gob); +void object_copy_proxy_drivers(struct Object *ob, struct Object *target); void unlink_object(struct Scene *scene, struct Object *ob); int exist_object(struct Object *obtest); diff --git a/source/blender/blenkernel/BKE_pointcache.h b/source/blender/blenkernel/BKE_pointcache.h index 4b26eaa6d76..6686d10bb31 100644 --- a/source/blender/blenkernel/BKE_pointcache.h +++ b/source/blender/blenkernel/BKE_pointcache.h @@ -213,7 +213,7 @@ typedef struct PTCacheEdit { struct ParticleSystem *psys; struct ParticleData *particles; struct KDTree *emitter_field; - float *emitter_cosnos; + float *emitter_cosnos; /* localspace face centers and normals (average of its verts), from the derived mesh */ int *mirror_cache; struct ParticleCacheKey **pathcache; /* path cache (runtime) */ diff --git a/source/blender/blenkernel/BKE_screen.h b/source/blender/blenkernel/BKE_screen.h index 21150af7144..3a0cbd9d872 100644 --- a/source/blender/blenkernel/BKE_screen.h +++ b/source/blender/blenkernel/BKE_screen.h @@ -84,6 +84,8 @@ typedef struct SpaceType { void (*operatortypes)(void); /* add default items to WM keymap */ void (*keymap)(struct wmKeyConfig *); + /* on startup, define dropboxes for spacetype+regions */ + void (*dropboxes)(void); /* return context data */ int (*context)(const struct bContext *, const char*, struct bContextDataResult *); @@ -93,7 +95,7 @@ typedef struct SpaceType { /* tool shelf definitions */ ListBase toolshelf; - + /* read and write... */ /* default keymaps to add */ @@ -142,6 +144,8 @@ typedef struct ARegionType { /* hardcoded constraints, smaller than these values region is not visible */ int minsizex, minsizey; + /* when new region opens (region prefsizex/y are zero then */ + int prefsizex, prefsizey; /* default keymaps to add */ int keymapflag; } ARegionType; diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index dc7b6d3ad9b..0c84d729d47 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -28,8 +28,8 @@ * ***** END GPL LICENSE BLOCK ***** */ -#ifndef BKE_SEQUENCE_H -#define BKE_SEQUENCE_H +#ifndef BKE_SEQUENCER_H +#define BKE_SEQUENCER_H struct Editing; struct Sequence; @@ -77,8 +77,6 @@ void seq_array(struct Editing *ed, struct Sequence ***seqarray, int *tot, int us seq_end(&iter); \ } -#endif - /* Wipe effect */ enum {DO_SINGLE_WIPE, DO_DOUBLE_WIPE, DO_BOX_WIPE, DO_CROSS_WIPE, @@ -206,6 +204,7 @@ void active_seq_set(struct Scene *scene, struct Sequence *seq); /* api for adding new sequence strips */ typedef struct SeqLoadInfo { int start_frame; + int end_frame; int channel; int flag; /* use sound, replace sel */ int type; @@ -238,3 +237,5 @@ struct Sequence *sequencer_add_movie_strip(struct bContext *C, ListBase *seqbase /* copy/paste */ extern ListBase seqbase_clipboard; extern int seqbase_clipboard_frame; + +#endif // BKE_SEQUENCER_H diff --git a/source/blender/blenkernel/BKE_texture.h b/source/blender/blenkernel/BKE_texture.h index 95ada45f5d8..735a4e1dd71 100644 --- a/source/blender/blenkernel/BKE_texture.h +++ b/source/blender/blenkernel/BKE_texture.h @@ -31,6 +31,7 @@ #ifndef BKE_TEXTURE_H #define BKE_TEXTURE_H +struct bNode; struct Brush; struct ColorBand; struct EnvMap; @@ -75,6 +76,8 @@ struct Tex *give_current_lamp_texture(struct Lamp *la); struct Tex *give_current_world_texture(struct World *world); struct Tex *give_current_brush_texture(struct Brush *br); +struct bNode *give_current_material_texture_node(struct Material *ma); + int give_active_mtex(struct ID *id, struct MTex ***mtex_ar, short *act); void set_active_mtex(struct ID *id, short act); diff --git a/source/blender/blenkernel/BKE_utildefines.h b/source/blender/blenkernel/BKE_utildefines.h index 77015876290..b33aa3d163c 100644 --- a/source/blender/blenkernel/BKE_utildefines.h +++ b/source/blender/blenkernel/BKE_utildefines.h @@ -262,3 +262,11 @@ behaviour, though it may not be the best in practice. #endif +/*little macro so inline keyword works*/ +#if defined(_MSC_VER) +#define BM_INLINE static __forceinline +#else +#define BM_INLINE static inline __attribute((always_inline)) +#endif + +#define BMEMSET(mem, val, size) {unsigned int _i; char *_c = (char*) mem; for (_i=0; _i<size; _i++) *_c++ = val;} diff --git a/source/blender/blenkernel/BKE_writeavi.h b/source/blender/blenkernel/BKE_writeavi.h index a8d38dda103..e2778ebb54c 100644 --- a/source/blender/blenkernel/BKE_writeavi.h +++ b/source/blender/blenkernel/BKE_writeavi.h @@ -40,19 +40,16 @@ struct RenderData; struct ReportList; struct Scene; -int start_avi(struct Scene *scene, struct RenderData *rd, int rectx, int recty, struct ReportList *reports); -void end_avi(void); -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 { 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, struct ReportList *reports); /* optional */ + void (*get_movie_path)(char *string, struct RenderData *rd); /* optional */ } bMovieHandle; bMovieHandle *BKE_get_movie_handle(int imtype); +void BKE_makeanimstring(char *string, struct RenderData *rd); #ifdef __cplusplus } diff --git a/source/blender/blenkernel/BKE_writeffmpeg.h b/source/blender/blenkernel/BKE_writeffmpeg.h index 6ec8320f026..98c385ea2e1 100644 --- a/source/blender/blenkernel/BKE_writeffmpeg.h +++ b/source/blender/blenkernel/BKE_writeffmpeg.h @@ -63,6 +63,7 @@ struct Scene; extern int start_ffmpeg(struct Scene *scene, struct RenderData *rd, int rectx, int recty, struct ReportList *reports); extern void end_ffmpeg(void); extern int append_ffmpeg(struct RenderData *rd, int frame, int *pixels, int rectx, int recty, struct ReportList *reports); +void filepath_ffmpeg(char* string, struct RenderData* rd); 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/intern/BME_Customdata.c b/source/blender/blenkernel/intern/BME_Customdata.c index ea149e03959..822a0d8a080 100644 --- a/source/blender/blenkernel/intern/BME_Customdata.c +++ b/source/blender/blenkernel/intern/BME_Customdata.c @@ -84,7 +84,7 @@ void BME_CD_Create(BME_CustomData *data, BME_CustomDataInit *init, int initalloc if(data->totlayer){ /*alloc memory*/ data->layers = MEM_callocN(sizeof(BME_CustomDataLayer)*data->totlayer, "BMesh Custom Data Layers"); - data->pool = BLI_mempool_create(data->totsize, initalloc, initalloc); + data->pool = BLI_mempool_create(data->totsize, initalloc, initalloc, 0); /*initialize layer data*/ for(i=0; i < BME_CD_NUMTYPES; i++){ if(init->layout[i]){ diff --git a/source/blender/blenkernel/intern/BME_mesh.c b/source/blender/blenkernel/intern/BME_mesh.c index f635cfcfcd2..3b769a11ccb 100644 --- a/source/blender/blenkernel/intern/BME_mesh.c +++ b/source/blender/blenkernel/intern/BME_mesh.c @@ -55,10 +55,10 @@ BME_Mesh *BME_make_mesh(int allocsize[4]) /*allocate the structure*/ BME_Mesh *bm = MEM_callocN(sizeof(BME_Mesh),"BMesh"); /*allocate the memory pools for the mesh elements*/ - bm->vpool = BLI_mempool_create(sizeof(BME_Vert), allocsize[0], allocsize[0]); - bm->epool = BLI_mempool_create(sizeof(BME_Edge), allocsize[1], allocsize[1]); - bm->lpool = BLI_mempool_create(sizeof(BME_Loop), allocsize[2], allocsize[2]); - bm->ppool = BLI_mempool_create(sizeof(BME_Poly), allocsize[3], allocsize[3]); + bm->vpool = BLI_mempool_create(sizeof(BME_Vert), allocsize[0], allocsize[0], 0); + bm->epool = BLI_mempool_create(sizeof(BME_Edge), allocsize[1], allocsize[1], 0); + bm->lpool = BLI_mempool_create(sizeof(BME_Loop), allocsize[2], allocsize[2], 0); + bm->ppool = BLI_mempool_create(sizeof(BME_Poly), allocsize[3], allocsize[3], 0); return bm; } /* diff --git a/source/blender/blenkernel/intern/CCGSubSurf.c b/source/blender/blenkernel/intern/CCGSubSurf.c index dc863869ad8..60e1015f190 100644 --- a/source/blender/blenkernel/intern/CCGSubSurf.c +++ b/source/blender/blenkernel/intern/CCGSubSurf.c @@ -467,12 +467,10 @@ 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(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(CCGEdge *e, CCGVert *v, int lvl, int x, int dataSize) { int levelBase = lvl + (1<<lvl) - 1; if (v==e->v0) { @@ -535,6 +533,12 @@ static CCG_INLINE void *_face_getIECo(CCGFace *f, int lvl, int S, int x, int lev byte *gridBase = FACE_getCenterData(f) + dataSize*(1 + S*(maxGridSize + maxGridSize*maxGridSize)); return &gridBase[dataSize*x*spacing]; } +static CCG_INLINE void *_face_getIENo(CCGFace *f, int lvl, int S, int x, 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 &gridBase[dataSize*x*spacing + normalDataOffset]; +} 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); @@ -1139,8 +1143,11 @@ CCGError ccgSubSurf_processSync(CCGSubSurf *ss) { return eCCGError_None; } +#define VERT_getNo(e, lvl) _vert_getNo(e, lvl, vertDataSize, normalDataOffset) +#define EDGE_getNo(e, lvl, x) _edge_getNo(e, lvl, x, vertDataSize, normalDataOffset) #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) +#define FACE_getIENo(f, lvl, S, x) _face_getIENo(f, lvl, S, x, subdivLevels, vertDataSize, normalDataOffset) static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss, CCGVert **effectedV, CCGEdge **effectedE, CCGFace **effectedF, int numEffectedV, int numEffectedE, int numEffectedF) { @@ -1304,6 +1311,26 @@ static void ccgSubSurf__calcVertNormals(CCGSubSurf *ss, } } } + + VertDataCopy((float*)((byte*)FACE_getCenterData(f) + normalDataOffset), + FACE_getIFNo(f, lvl, S, 0, 0)); + + for (x=1; x<gridSize-1; x++) + NormCopy(FACE_getIENo(f, lvl, S, x), + FACE_getIFNo(f, lvl, S, x, 0)); + } + } + + for (ptrIdx=0; ptrIdx<numEffectedE; ptrIdx++) { + CCGEdge *e = (CCGEdge*) effectedE[ptrIdx]; + + if (e->numFaces) { + CCGFace *f = e->faces[0]; + int x; + + for (x=0; x<edgeSize; x++) + NormCopy(EDGE_getNo(e, lvl, x), + _face_getIFNoEdge(f, e, lvl, x, 0, subdivLevels, vertDataSize, normalDataOffset)); } } } diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index a614404dc5e..c9d293d0a75 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -184,9 +184,10 @@ void DM_init_funcs(DerivedMesh *dm) bvhcache_init(&dm->bvhCache); } -void DM_init(DerivedMesh *dm, +void DM_init(DerivedMesh *dm, DerivedMeshType type, int numVerts, int numEdges, int numFaces) { + dm->type = type; dm->numVertData = numVerts; dm->numEdgeData = numEdges; dm->numFaceData = numFaces; @@ -196,7 +197,7 @@ void DM_init(DerivedMesh *dm, dm->needsFree = 1; } -void DM_from_template(DerivedMesh *dm, DerivedMesh *source, +void DM_from_template(DerivedMesh *dm, DerivedMesh *source, DerivedMeshType type, int numVerts, int numEdges, int numFaces) { CustomData_copy(&source->vertData, &dm->vertData, CD_MASK_DERIVEDMESH, @@ -206,6 +207,7 @@ void DM_from_template(DerivedMesh *dm, DerivedMesh *source, CustomData_copy(&source->faceData, &dm->faceData, CD_MASK_DERIVEDMESH, CD_CALLOC, numFaces); + dm->type = type; dm->numVertData = numVerts; dm->numEdgeData = numEdges; dm->numFaceData = numFaces; @@ -336,16 +338,25 @@ void *DM_get_face_data(DerivedMesh *dm, int index, int type) void *DM_get_vert_data_layer(DerivedMesh *dm, int type) { + if(type == CD_MVERT) + return dm->getVertArray(dm); + return CustomData_get_layer(&dm->vertData, type); } void *DM_get_edge_data_layer(DerivedMesh *dm, int type) { + if(type == CD_MEDGE) + return dm->getEdgeArray(dm); + return CustomData_get_layer(&dm->edgeData, type); } void *DM_get_face_data_layer(DerivedMesh *dm, int type) { + if(type == CD_MFACE) + return dm->getFaceArray(dm); + return CustomData_get_layer(&dm->faceData, type); } @@ -512,56 +523,14 @@ static void emDM_drawMappedEdges(DerivedMesh *dm, int (*setDrawOptions)(void *us } glEnd(); } else { - GPUBuffer *buffer = NULL; - float *varray; - - if(GPU_buffer_legacy(dm)==FALSE) - buffer = GPU_buffer_alloc( sizeof(float)*3*2*emdm->em->totedge, 0 ); - - if( buffer != 0 && (varray = GPU_buffer_lock_stream( buffer )) ) { - int prevdraw = 0; - int numedges = 0; - int draw = 0; - int datatype[] = { GPU_BUFFER_INTER_V3F, GPU_BUFFER_INTER_END }; - GPU_buffer_unlock( buffer ); - GPU_interleaved_setup( buffer, datatype ); - varray = GPU_buffer_lock_stream( buffer ); - for(i=0,eed= emdm->em->edges.first; eed; i++,eed= eed->next) { - if(!setDrawOptions || setDrawOptions(userData, i)) { - draw = 1; - } else { - draw = 0; - } - if( prevdraw != draw && prevdraw != 0 && numedges > 0) { - GPU_buffer_unlock( buffer ); - glDrawArrays(GL_LINES,0,numedges*2); - varray = GPU_buffer_lock_stream( buffer ); - numedges = 0; - } - if( draw != 0 ) { - VECCOPY(&varray[numedges*6],eed->v1->co); - VECCOPY(&varray[numedges*6+3],eed->v2->co); - numedges++; - } - prevdraw = draw; - } - GPU_buffer_unlock( buffer ); - if( prevdraw != 0 && numedges > 0) { - glDrawArrays(GL_LINES,0,numedges*2); - } - GPU_buffer_unbind(); - } else { - glBegin(GL_LINES); - for(i=0,eed= emdm->em->edges.first; eed; i++,eed= eed->next) { - if(!setDrawOptions || setDrawOptions(userData, i)) { - glVertex3fv(eed->v1->co); - glVertex3fv(eed->v2->co); - } + glBegin(GL_LINES); + for(i=0,eed= emdm->em->edges.first; eed; i++,eed= eed->next) { + if(!setDrawOptions || setDrawOptions(userData, i)) { + glVertex3fv(eed->v1->co); + glVertex3fv(eed->v2->co); } - glEnd(); } - if( buffer != 0 ) - GPU_buffer_free( buffer, 0 ); + glEnd(); } } static void emDM_drawEdges(DerivedMesh *dm, int drawLooseEdges) @@ -722,135 +691,41 @@ static void emDM_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *us } } } else { - GPUBuffer *buffer = 0; - float *varray; - if( setDrawOptions == 0 ) { - /* 3 floats for position, 3 for normal and times two because the faces may actually be quads instead of triangles */ - buffer = GPU_buffer_alloc( sizeof(float)*6*emdm->em->totface*3*2, 0 ); - } - if( buffer != 0 && (varray = GPU_buffer_lock_stream( buffer )) ) { - int prevdraw = 0; - int numfaces = 0; - int datatype[] = { GPU_BUFFER_INTER_V3F, GPU_BUFFER_INTER_N3F, GPU_BUFFER_INTER_END }; - GPU_buffer_unlock( buffer ); - GPU_interleaved_setup( buffer, datatype ); - glShadeModel(GL_SMOOTH); - varray = GPU_buffer_lock_stream( buffer ); - for (i=0,efa= emdm->em->faces.first; efa; i++,efa= efa->next) { - int drawSmooth = (efa->flag & ME_SMOOTH); - draw = setDrawOptions==NULL ? 1 : setDrawOptions(userData, i, &drawSmooth); - if( prevdraw != draw && prevdraw != 0 && numfaces > 0) { - if( prevdraw==2 ) { - glEnable(GL_POLYGON_STIPPLE); - glPolygonStipple(stipple_quarttone); - } - GPU_buffer_unlock( buffer ); - glDrawArrays(GL_TRIANGLES,0,numfaces*3); - if( prevdraw==2 ) { - glDisable(GL_POLYGON_STIPPLE); - } - varray = GPU_buffer_lock_stream( buffer ); - numfaces = 0; - } - if( draw != 0 ) { - if(!drawSmooth) { - VECCOPY(&varray[numfaces*18],efa->v1->co); - VECCOPY(&varray[numfaces*18+3],efa->n); - - VECCOPY(&varray[numfaces*18+6],efa->v2->co); - VECCOPY(&varray[numfaces*18+9],efa->n); - - VECCOPY(&varray[numfaces*18+12],efa->v3->co); - VECCOPY(&varray[numfaces*18+15],efa->n); - numfaces++; - if( efa->v4 ) { - VECCOPY(&varray[numfaces*18],efa->v3->co); - VECCOPY(&varray[numfaces*18+3],efa->n); - - VECCOPY(&varray[numfaces*18+6],efa->v4->co); - VECCOPY(&varray[numfaces*18+9],efa->n); - - VECCOPY(&varray[numfaces*18+12],efa->v1->co); - VECCOPY(&varray[numfaces*18+15],efa->n); - numfaces++; - } - } - else { - VECCOPY(&varray[numfaces*18],efa->v1->co); - VECCOPY(&varray[numfaces*18+3],efa->v1->no); - - VECCOPY(&varray[numfaces*18+6],efa->v2->co); - VECCOPY(&varray[numfaces*18+9],efa->v2->no); - - VECCOPY(&varray[numfaces*18+12],efa->v3->co); - VECCOPY(&varray[numfaces*18+15],efa->v3->no); - numfaces++; - if( efa->v4 ) { - VECCOPY(&varray[numfaces*18],efa->v3->co); - VECCOPY(&varray[numfaces*18+3],efa->v3->no); - - VECCOPY(&varray[numfaces*18+6],efa->v4->co); - VECCOPY(&varray[numfaces*18+9],efa->v4->no); - - VECCOPY(&varray[numfaces*18+12],efa->v1->co); - VECCOPY(&varray[numfaces*18+15],efa->v1->no); - numfaces++; - } - } - } - prevdraw = draw; - } - GPU_buffer_unlock( buffer ); - if( prevdraw != 0 && numfaces > 0) { - if( prevdraw==2 ) { + for (i=0,efa= emdm->em->faces.first; efa; i++,efa= efa->next) { + int drawSmooth = (efa->flag & ME_SMOOTH); + draw = setDrawOptions==NULL ? 1 : setDrawOptions(userData, i, &drawSmooth); + if(draw) { + if (draw==2) { /* enabled with stipple */ glEnable(GL_POLYGON_STIPPLE); - glPolygonStipple(stipple_quarttone); - } - glDrawArrays(GL_TRIANGLES,0,numfaces*3); - if( prevdraw==2 ) { - glDisable(GL_POLYGON_STIPPLE); + glPolygonStipple(stipple_quarttone); } - } - GPU_buffer_unbind(); - } else { - for (i=0,efa= emdm->em->faces.first; efa; i++,efa= efa->next) { - int drawSmooth = (efa->flag & ME_SMOOTH); - draw = setDrawOptions==NULL ? 1 : setDrawOptions(userData, i, &drawSmooth); - if(draw) { - if (draw==2) { /* enabled with stipple */ - glEnable(GL_POLYGON_STIPPLE); - glPolygonStipple(stipple_quarttone); - } - glShadeModel(drawSmooth?GL_SMOOTH:GL_FLAT); + glShadeModel(drawSmooth?GL_SMOOTH:GL_FLAT); - glBegin(efa->v4?GL_QUADS:GL_TRIANGLES); - if (!drawSmooth) { - glNormal3fv(efa->n); - glVertex3fv(efa->v1->co); - glVertex3fv(efa->v2->co); - glVertex3fv(efa->v3->co); - if(efa->v4) glVertex3fv(efa->v4->co); - } else { - glNormal3fv(efa->v1->no); - glVertex3fv(efa->v1->co); - glNormal3fv(efa->v2->no); - glVertex3fv(efa->v2->co); - glNormal3fv(efa->v3->no); - glVertex3fv(efa->v3->co); - if(efa->v4) { - glNormal3fv(efa->v4->no); - glVertex3fv(efa->v4->co); - } + glBegin(efa->v4?GL_QUADS:GL_TRIANGLES); + if (!drawSmooth) { + glNormal3fv(efa->n); + glVertex3fv(efa->v1->co); + glVertex3fv(efa->v2->co); + glVertex3fv(efa->v3->co); + if(efa->v4) glVertex3fv(efa->v4->co); + } else { + glNormal3fv(efa->v1->no); + glVertex3fv(efa->v1->co); + glNormal3fv(efa->v2->no); + glVertex3fv(efa->v2->co); + glNormal3fv(efa->v3->no); + glVertex3fv(efa->v3->co); + if(efa->v4) { + glNormal3fv(efa->v4->no); + glVertex3fv(efa->v4->co); } - glEnd(); - - if (draw==2) - glDisable(GL_POLYGON_STIPPLE); } + glEnd(); + + if (draw==2) + glDisable(GL_POLYGON_STIPPLE); } } - if( buffer != 0 ) - GPU_buffer_free( buffer, 0 ); } } @@ -1450,7 +1325,7 @@ static DerivedMesh *getEditMeshDerivedMesh(EditMesh *em, Object *ob, { EditMeshDerivedMesh *emdm = MEM_callocN(sizeof(*emdm), "emdm"); - DM_init(&emdm->dm, BLI_countlist(&em->verts), + DM_init(&emdm->dm, DM_TYPE_EDITMESH, BLI_countlist(&em->verts), BLI_countlist(&em->edges), BLI_countlist(&em->faces)); emdm->dm.getMinMax = emDM_getMinMax; @@ -1768,7 +1643,7 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos /* we always want to keep original indices */ dataMask |= CD_MASK_ORIGINDEX; - datamasks = modifiers_calcDataMasks(ob, md, dataMask, required_mode); + datamasks = modifiers_calcDataMasks(scene, ob, md, dataMask, required_mode); curr = datamasks; if(deform_r) *deform_r = NULL; @@ -1784,7 +1659,7 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos md->scene= scene; - if(!modifier_isEnabled(md, required_mode)) continue; + if(!modifier_isEnabled(scene, md, required_mode)) continue; if(useDeform < 0 && mti->dependsOnTime && mti->dependsOnTime(md)) continue; if(mti->type == eModifierTypeType_OnlyDeform) { @@ -1833,7 +1708,7 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos md->scene= scene; - if(!modifier_isEnabled(md, required_mode)) continue; + if(!modifier_isEnabled(scene, md, required_mode)) continue; if(mti->type == eModifierTypeType_OnlyDeform && !useDeform) continue; if((mti->flags & eModifierTypeFlag_RequiresOriginalData) && dm) { modifier_setError(md, "Modifier requires original data, bad stack position."); @@ -1894,7 +1769,7 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos CDDM_calc_normals(dm); } - if(dataMask & CD_MASK_WEIGHT_MCOL) + if((dataMask & CD_MASK_WEIGHT_MCOL) && (ob->mode & OB_MODE_WEIGHT_PAINT)) add_weight_mcol_dm(ob, dm); } @@ -1960,7 +1835,7 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos CDDM_apply_vert_coords(finaldm, deformedVerts); CDDM_calc_normals(finaldm); - if(dataMask & CD_MASK_WEIGHT_MCOL) + if((dataMask & CD_MASK_WEIGHT_MCOL) && (ob->mode & OB_MODE_WEIGHT_PAINT)) add_weight_mcol_dm(ob, finaldm); } else if(dm) { finaldm = dm; @@ -1972,7 +1847,7 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos CDDM_calc_normals(finaldm); } - if(dataMask & CD_MASK_WEIGHT_MCOL) + if((dataMask & CD_MASK_WEIGHT_MCOL) && (ob->mode & OB_MODE_WEIGHT_PAINT)) add_weight_mcol_dm(ob, finaldm); } @@ -2009,12 +1884,12 @@ static float (*editmesh_getVertexCos(EditMesh *em, int *numVerts_r))[3] return cos; } -static int editmesh_modifier_is_enabled(ModifierData *md, DerivedMesh *dm) +static int editmesh_modifier_is_enabled(Scene *scene, ModifierData *md, DerivedMesh *dm) { ModifierTypeInfo *mti = modifierType_getInfo(md->type); int required_mode = eModifierMode_Realtime | eModifierMode_Editmode; - if(!modifier_isEnabled(md, required_mode)) return 0; + if(!modifier_isEnabled(scene, md, required_mode)) return 0; if((mti->flags & eModifierTypeFlag_RequiresOriginalData) && dm) { modifier_setError(md, "Modifier requires original data, bad stack position."); return 0; @@ -2031,7 +1906,7 @@ static void editmesh_calc_modifiers(Scene *scene, Object *ob, EditMesh *em, Deri float (*deformedVerts)[3] = NULL; CustomDataMask mask; DerivedMesh *dm, *orcodm = NULL; - int i, numVerts = 0, cageIndex = modifiers_getCageIndex(ob, NULL, 1); + int i, numVerts = 0, cageIndex = modifiers_getCageIndex(scene, ob, NULL, 1); LinkNode *datamasks, *curr; int required_mode = eModifierMode_Realtime | eModifierMode_Editmode; @@ -2047,7 +1922,7 @@ static void editmesh_calc_modifiers(Scene *scene, Object *ob, EditMesh *em, Deri /* we always want to keep original indices */ dataMask |= CD_MASK_ORIGINDEX; - datamasks = modifiers_calcDataMasks(ob, md, dataMask, required_mode); + datamasks = modifiers_calcDataMasks(scene, ob, md, dataMask, required_mode); curr = datamasks; for(i = 0; md; i++, md = md->next, curr = curr->next) { @@ -2055,7 +1930,7 @@ static void editmesh_calc_modifiers(Scene *scene, Object *ob, EditMesh *em, Deri md->scene= scene; - if(!editmesh_modifier_is_enabled(md, dm)) + if(!editmesh_modifier_is_enabled(scene, md, dm)) continue; /* add an orco layer if needed by this modifier */ @@ -2233,7 +2108,8 @@ static void mesh_build_data(Scene *scene, Object *ob, CustomDataMask dataMask) { Object *obact = scene->basact?scene->basact->object:NULL; int editing = paint_facesel_test(ob); - int needMapping = editing && (ob==obact); + /* weight paint and face select need original indicies because of selection buffer drawing */ + int needMapping = (ob==obact) && (editing || (ob->mode & OB_MODE_WEIGHT_PAINT) || paint_facesel_test(ob)); float min[3], max[3]; clear_mesh_caches(ob); @@ -2473,12 +2349,12 @@ float *mesh_get_mapped_verts_nors(Scene *scene, Object *ob) /* ********* crazyspace *************** */ -int editmesh_get_first_deform_matrices(Object *ob, EditMesh *em, float (**deformmats)[3][3], float (**deformcos)[3]) +int editmesh_get_first_deform_matrices(Scene *scene, Object *ob, EditMesh *em, float (**deformmats)[3][3], float (**deformcos)[3]) { ModifierData *md; DerivedMesh *dm; int i, a, numleft = 0, numVerts = 0; - int cageIndex = modifiers_getCageIndex(ob, NULL, 1); + int cageIndex = modifiers_getCageIndex(scene, ob, NULL, 1); float (*defmats)[3][3] = NULL, (*deformedVerts)[3] = NULL; modifiers_clearErrors(ob); @@ -2492,7 +2368,7 @@ int editmesh_get_first_deform_matrices(Object *ob, EditMesh *em, float (**deform for(i = 0; md && i <= cageIndex; i++, md = md->next) { ModifierTypeInfo *mti = modifierType_getInfo(md->type); - if(!editmesh_modifier_is_enabled(md, dm)) + if(!editmesh_modifier_is_enabled(scene, md, dm)) continue; if(mti->type==eModifierTypeType_OnlyDeform && mti->deformMatricesEM) { @@ -2513,7 +2389,7 @@ int editmesh_get_first_deform_matrices(Object *ob, EditMesh *em, float (**deform } for(; md && i <= cageIndex; md = md->next, i++) - if(editmesh_modifier_is_enabled(md, dm) && modifier_isCorrectableDeformed(md)) + if(editmesh_modifier_is_enabled(scene, md, dm) && modifier_isCorrectableDeformed(md)) numleft++; if(dm) diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c index a7d1ac10195..6d95df3ca84 100644 --- a/source/blender/blenkernel/intern/anim.c +++ b/source/blender/blenkernel/intern/anim.c @@ -44,6 +44,7 @@ #include "DNA_anim_types.h" #include "DNA_action_types.h" +#include "DNA_armature_types.h" #include "DNA_curve_types.h" #include "DNA_effect_types.h" #include "DNA_group_types.h" @@ -72,6 +73,7 @@ #include "BKE_mesh.h" #include "BKE_object.h" #include "BKE_particle.h" +#include "BKE_scene.h" #include "BKE_utildefines.h" #ifdef HAVE_CONFIG_H @@ -152,7 +154,7 @@ void animviz_free_motionpath(bMotionPath *mpath) /* ------------------- */ -/* Setup motion paths for the given data +/* Setup motion paths for the given data * - scene: current scene (for frame ranges, etc.) * - ob: object to add paths for (must be provided) * - pchan: posechannel to add paths for (optional; if not provided, object-paths are assumed) @@ -178,14 +180,21 @@ bMotionPath *animviz_verify_motionpaths(Scene *scene, Object *ob, bPoseChannel * dst= &ob->mpath; } - /* if there is already a motionpath, just return that... */ - // TODO: maybe we should validate the settings in this case - if (*dst != NULL) - return *dst; + /* if there is already a motionpath, just return that, + * but provided it's settings are ok + */ + if (*dst != NULL) { + mpath= *dst; - /* create a new motionpath, and assign it */ - mpath= MEM_callocN(sizeof(bMotionPath), "bMotionPath"); - *dst= mpath; + /* if range is not invalid, and/or length is set ok, just return */ + if ((mpath->start_frame != mpath->end_frame) && (mpath->length > 0)) + return mpath; + } + else { + /* create a new motionpath, and assign it */ + mpath= MEM_callocN(sizeof(bMotionPath), "bMotionPath"); + *dst= mpath; + } /* set settings from the viz settings */ mpath->start_frame= avs->path_sf; @@ -203,15 +212,157 @@ bMotionPath *animviz_verify_motionpaths(Scene *scene, Object *ob, bPoseChannel * return mpath; } +/* ------------------- */ + +/* Motion path needing to be baked (mpt) */ +typedef struct MPathTarget { + struct MPathTarget *next, *prev; + + bMotionPath *mpath; /* motion path in question */ + + Object *ob; /* source object */ + bPoseChannel *pchan; /* source posechannel (if applicable) */ +} MPathTarget; + +/* ........ */ + +/* get list of motion paths to be baked for the given object + * - assumes the given list is ready to be used + */ +void animviz_get_object_motionpaths(Object *ob, ListBase *targets) +{ + MPathTarget *mpt; + + /* object itself first */ + if ((ob->avs.recalc & ANIMVIZ_RECALC_PATHS) && (ob->mpath)) { + /* new target for object */ + mpt= MEM_callocN(sizeof(MPathTarget), "MPathTarget Ob"); + BLI_addtail(targets, mpt); + + mpt->mpath= ob->mpath; + mpt->ob= ob; + } + + /* bones */ + if ((ob->pose) && (ob->pose->avs.recalc & ANIMVIZ_RECALC_PATHS)) { + bArmature *arm= ob->data; + bPoseChannel *pchan; + + for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { + if ((pchan->bone) && (arm->layer & pchan->bone->layer) && (pchan->mpath)) { + /* new target for bone */ + mpt= MEM_callocN(sizeof(MPathTarget), "MPathTarget PoseBone"); + BLI_addtail(targets, mpt); + + mpt->mpath= pchan->mpath; + mpt->ob= ob; + mpt->pchan= pchan; + } + } + } +} + +/* ........ */ + +/* perform baking for the targets on the current frame */ +static void motionpaths_calc_bake_targets(Scene *scene, ListBase *targets) +{ + MPathTarget *mpt; + + /* for each target, check if it can be baked on the current frame */ + for (mpt= targets->first; mpt; mpt= mpt->next) { + bMotionPath *mpath= mpt->mpath; + bMotionPathVert *mpv; + + /* current frame must be within the range the cache works for + * - is inclusive of the first frame, but not the last otherwise we get buffer overruns + */ + if ((CFRA < mpath->start_frame) || (CFRA >= mpath->end_frame)) + continue; + + /* get the relevant cache vert to write to */ + mpv= mpath->points + (CFRA - mpath->start_frame); + + /* pose-channel or object path baking? */ + if (mpt->pchan) { + /* heads or tails */ + if (mpath->flag & MOTIONPATH_FLAG_BHEAD) { + VECCOPY(mpv->co, mpt->pchan->pose_head); + } + else { + VECCOPY(mpv->co, mpt->pchan->pose_tail); + } + + /* result must be in worldspace */ + mul_m4_v3(mpt->ob->obmat, mpv->co); + } + else { + /* worldspace object location */ + VECCOPY(mpv->co, mpt->ob->obmat[3]); + } + } +} /* Perform baking of the given object's and/or its bones' transforms to motion paths * - scene: current scene * - ob: object whose flagged motionpaths should get calculated * - recalc: whether we need to */ -void animviz_calc_motionpaths(Scene *scene, Object *ob) +// TODO: include reports pointer? +void animviz_calc_motionpaths(Scene *scene, ListBase *targets) { - + MPathTarget *mpt; + int sfra, efra; + int cfra; + + /* sanity check */ + if (ELEM(NULL, targets, targets->first)) + return; + + /* set frame values */ + cfra = CFRA; + sfra = efra = cfra; + + // TODO: this method could be improved... + // 1) max range for standard baking + // 2) minimum range for recalc baking (i.e. between keyfames, but how?) + for (mpt= targets->first; mpt; mpt= mpt->next) { + /* try to increase area to do (only as much as needed) */ + sfra= MIN2(sfra, mpt->mpath->start_frame); + efra= MAX2(efra, mpt->mpath->end_frame); + } + if (efra <= sfra) return; + + /* calculate path over requested range */ + for (CFRA=sfra; CFRA<=efra; CFRA++) { + /* do all updates + * - if this is too slow, resort to using a more efficient way + * that doesn't force complete update, but for now, this is the + * most accurate way! + */ + scene_update_for_newframe(scene, scene->lay); // XXX this is the best way we can get anything moving + + /* perform baking for targets */ + motionpaths_calc_bake_targets(scene, targets); + } + + /* reset original environment */ + CFRA= cfra; + scene_update_for_newframe(scene, scene->lay); // XXX this is the best way we can get anything moving + + /* clear recalc flags from targets */ + for (mpt= targets->first; mpt; mpt= mpt->next) { + bAnimVizSettings *avs; + + /* get pointer to animviz settings for each target */ + if (mpt->pchan) + avs= &mpt->ob->pose->avs; + else + avs= &mpt->ob->avs; + + /* clear the flag requesting recalculation of targets */ + avs->recalc &= ~ANIMVIZ_RECALC_PATHS; + } } /* ******************************************************************** */ diff --git a/source/blender/blenkernel/intern/anim_sys.c b/source/blender/blenkernel/intern/anim_sys.c index 8b86f6a5d1f..bcc25b6a60f 100644 --- a/source/blender/blenkernel/intern/anim_sys.c +++ b/source/blender/blenkernel/intern/anim_sys.c @@ -60,8 +60,8 @@ /* Getter/Setter -------------------------------------------- */ -/* Internal utility to check if ID can have AnimData */ -static short id_has_animdata (ID *id) +/* Check if ID can have AnimData */ +short id_type_can_have_animdata (ID *id) { /* sanity check */ if (id == NULL) @@ -99,7 +99,7 @@ AnimData *BKE_animdata_from_id (ID *id) * types that do to be of type IdAdtTemplate, and extract the * AnimData that way */ - if (id_has_animdata(id)) { + if (id_type_can_have_animdata(id)) { IdAdtTemplate *iat= (IdAdtTemplate *)id; return iat->adt; } @@ -117,7 +117,7 @@ AnimData *BKE_id_add_animdata (ID *id) * types that do to be of type IdAdtTemplate, and add the AnimData * to it using the template */ - if (id_has_animdata(id)) { + if (id_type_can_have_animdata(id)) { IdAdtTemplate *iat= (IdAdtTemplate *)id; /* check if there's already AnimData, in which case, don't add */ @@ -145,7 +145,7 @@ void BKE_free_animdata (ID *id) /* Only some ID-blocks have this info for now, so we cast the * types that do to be of type IdAdtTemplate */ - if (id_has_animdata(id)) { + if (id_type_can_have_animdata(id)) { IdAdtTemplate *iat= (IdAdtTemplate *)id; AnimData *adt= iat->adt; @@ -203,6 +203,26 @@ AnimData *BKE_copy_animdata (AnimData *adt) return dadt; } +int BKE_copy_animdata_id(struct ID *id_to, struct ID *id_from) +{ + AnimData *adt; + + if((id_to && id_from) && (GS(id_to->name) != GS(id_from->name))) + return 0; + + BKE_free_animdata(id_to); + + adt = BKE_animdata_from_id(id_from); + if (adt) { + IdAdtTemplate *iat = (IdAdtTemplate *)id_to; + iat->adt= BKE_copy_animdata(adt); + } + + return 1; +} + + + /* Make Local -------------------------------------------- */ static void make_local_strips(ListBase *strips) @@ -402,10 +422,54 @@ void BKE_animdata_fix_paths_rename (ID *owner_id, AnimData *adt, char *prefix, c MEM_freeN(newN); } +/* Whole Database Ops -------------------------------------------- */ + +/* apply the given callback function on all data in main database */ +void BKE_animdata_main_cb (Main *main, ID_AnimData_Edit_Callback func, void *user_data) +{ + ID *id; + +#define ANIMDATA_IDS_CB(first) \ + for (id= first; id; id= id->next) { \ + AnimData *adt= BKE_animdata_from_id(id); \ + if (adt) func(id, adt, user_data); \ + } + + ANIMDATA_IDS_CB(main->nodetree.first); /* nodes */ + ANIMDATA_IDS_CB(main->tex.first); /* textures */ + ANIMDATA_IDS_CB(main->lamp.first); /* lamps */ + ANIMDATA_IDS_CB(main->mat.first); /* materials */ + ANIMDATA_IDS_CB(main->camera.first); /* cameras */ + ANIMDATA_IDS_CB(main->key.first); /* shapekeys */ + ANIMDATA_IDS_CB(main->mball.first); /* metaballs */ + ANIMDATA_IDS_CB(main->curve.first); /* curves */ + ANIMDATA_IDS_CB(main->armature.first); /* armatures */ + ANIMDATA_IDS_CB(main->mesh.first); /* meshes */ + ANIMDATA_IDS_CB(main->particle.first); /* particles */ + ANIMDATA_IDS_CB(main->object.first); /* objects */ + ANIMDATA_IDS_CB(main->world.first); /* worlds */ + + /* scenes */ + for (id= main->scene.first; id; id= id->next) { + AnimData *adt= BKE_animdata_from_id(id); + Scene *scene= (Scene *)id; + + /* do compositing nodes first (since these aren't included in main tree) */ + if (scene->nodetree) { + AnimData *adt2= BKE_animdata_from_id((ID *)scene->nodetree); + if (adt2) func(id, adt2, user_data); + } + + /* now fix scene animation data as per normal */ + if (adt) func((ID *)id, adt, user_data); + } +} + /* Fix all RNA-Paths throughout the database (directly access the Global.main version) * NOTE: it is assumed that the structure we're replacing is <prefix><["><name><"]> * i.e. pose.bones["Bone"] */ +/* TODO: use BKE_animdata_main_cb for looping over all data */ void BKE_all_animdata_fix_paths_rename (char *prefix, char *oldName, char *newName) { Main *mainptr= G.main; @@ -713,26 +777,20 @@ 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)) { - if (RNA_property_editable_index(&new_ptr, prop, array_index)) - RNA_property_boolean_set_index(&new_ptr, prop, array_index, (int)value); - } + if (RNA_property_array_length(&new_ptr, prop)) + 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)){ - if (RNA_property_editable_index(&new_ptr, prop, array_index)) - RNA_property_int_set_index(&new_ptr, prop, array_index, (int)value); - } + if (RNA_property_array_length(&new_ptr, prop)) + 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)) { - if (RNA_property_editable_index(&new_ptr, prop, array_index)) - RNA_property_float_set_index(&new_ptr, prop, array_index, value); - } + if (RNA_property_array_length(&new_ptr, prop)) + RNA_property_float_set_index(&new_ptr, prop, array_index, value); else RNA_property_float_set(&new_ptr, prop, value); break; @@ -1456,26 +1514,20 @@ void nladata_flush_channels (ListBase *channels) switch (RNA_property_type(prop)) { case PROP_BOOLEAN: - 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); - } + if (RNA_property_array_length(ptr, prop)) + 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)) { - if (RNA_property_editable_index(ptr, prop, array_index)) - RNA_property_int_set_index(ptr, prop, array_index, (int)value); - } + if (RNA_property_array_length(ptr, prop)) + 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)) { - if (RNA_property_editable_index(ptr, prop, array_index)) - RNA_property_float_set_index(ptr, prop, array_index, value); - } + if (RNA_property_array_length(ptr, prop)) + 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 e53e4a1155b..c963bf761ea 100644 --- a/source/blender/blenkernel/intern/armature.c +++ b/source/blender/blenkernel/intern/armature.c @@ -274,7 +274,7 @@ void bone_flip_name (char *name, int strip_number) /* We first check the case with a .### extension, let's find the last period */ if(isdigit(name[len-1])) { - index= strrchr(name, '.'); // last occurrance + index= strrchr(name, '.'); // last occurrence if (index && isdigit(index[1]) ) { // doesnt handle case bone.1abc2 correct..., whatever! if(strip_number==0) strcpy(number, index); @@ -1480,8 +1480,23 @@ static void pose_proxy_synchronize(Object *ob, Object *from, int layer_protected bPose *pose= ob->pose, *frompose= from->pose; bPoseChannel *pchan, *pchanp, pchanw; bConstraint *con; + int error = 0; if (frompose==NULL) return; + + /* in some cases when rigs change, we cant synchronize + * to avoid crashing check for possible errors here */ + for (pchan= pose->chanbase.first; pchan; pchan= pchan->next) { + if (pchan->bone->layer & layer_protected) { + if(get_pose_channel(frompose, pchan->name) == NULL) { + printf("failed to sync proxy armature because '%s' is missing pose channel '%s'\n", from->id.name, pchan->name); + error = 1; + } + } + } + + if(error) + return; /* exception, armature local layer should be proxied too */ if (pose->proxy_layer) @@ -1500,9 +1515,10 @@ static void pose_proxy_synchronize(Object *ob, Object *from, int layer_protected pose->active_group= frompose->active_group; for (pchan= pose->chanbase.first; pchan; pchan= pchan->next) { + pchanp= get_pose_channel(frompose, pchan->name); + if (pchan->bone->layer & layer_protected) { ListBase proxylocal_constraints = {NULL, NULL}; - pchanp= get_pose_channel(frompose, pchan->name); /* copy posechannel to temp, but restore important pointers */ pchanw= *pchanp; @@ -1550,6 +1566,10 @@ static void pose_proxy_synchronize(Object *ob, Object *from, int layer_protected /* the final copy */ *pchan= pchanw; } + else { + /* always copy custom shape */ + pchan->custom= pchanp->custom; + } } } @@ -1582,7 +1602,13 @@ void armature_rebuild_pose(Object *ob, bArmature *arm) int counter=0; /* only done here */ - if(ob->pose==NULL) ob->pose= MEM_callocN(sizeof(bPose), "new pose"); + if(ob->pose==NULL) { + /* create new pose */ + ob->pose= MEM_callocN(sizeof(bPose), "new pose"); + + /* set default settings for animviz */ + animviz_settings_init(&ob->pose->avs); + } pose= ob->pose; /* clear */ @@ -1607,8 +1633,10 @@ void armature_rebuild_pose(Object *ob, bArmature *arm) // printf("rebuild pose %s, %d bones\n", ob->id.name, counter); /* synchronize protected layers with proxy */ - if(ob->proxy) + if(ob->proxy) { + object_copy_proxy_drivers(ob, ob->proxy); pose_proxy_synchronize(ob, ob->proxy, arm->layer_protected); + } update_pose_constraint_flags(ob->pose); // for IK detection for example diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c index 6181712f1be..226aa82a36a 100644 --- a/source/blender/blenkernel/intern/blender.c +++ b/source/blender/blenkernel/intern/blender.c @@ -103,76 +103,6 @@ short ENDIAN_ORDER; char versionstr[48]= ""; -/* ************************************************ */ -/* pushpop facility: to store data temporally, FIFO! */ - -ListBase ppmain={0, 0}; - -typedef struct PushPop { - struct PushPop *next, *prev; - void *data; - int len; -} PushPop; - -void pushdata(void *data, int len) -{ - PushPop *pp; - - pp= MEM_mallocN(sizeof(PushPop), "pushpop"); - BLI_addtail(&ppmain, pp); - pp->data= MEM_mallocN(len, "pushpop"); - pp->len= len; - memcpy(pp->data, data, len); -} - -void popfirst(void *data) -{ - PushPop *pp; - - pp= ppmain.first; - if(pp) { - memcpy(data, pp->data, pp->len); - BLI_remlink(&ppmain, pp); - MEM_freeN(pp->data); - MEM_freeN(pp); - } - else printf("error in popfirst\n"); -} - -void poplast(void *data) -{ - PushPop *pp; - - pp= ppmain.last; - if(pp) { - memcpy(data, pp->data, pp->len); - BLI_remlink(&ppmain, pp); - MEM_freeN(pp->data); - MEM_freeN(pp); - } - else printf("error in poplast\n"); -} - -void free_pushpop() -{ - PushPop *pp; - - pp= ppmain.first; - while(pp) { - BLI_remlink(&ppmain, pp); - MEM_freeN(pp->data); - MEM_freeN(pp); - } -} - -void pushpop_test() -{ - if(ppmain.first) printf("pushpop not empty\n"); - free_pushpop(); -} - - - /* ********** free ********** */ /* only to be called on exit blender */ diff --git a/source/blender/blenkernel/intern/boids.c b/source/blender/blenkernel/intern/boids.c index 838e595d83f..777c653beca 100644 --- a/source/blender/blenkernel/intern/boids.c +++ b/source/blender/blenkernel/intern/boids.c @@ -77,6 +77,7 @@ static int rule_goal_avoid(BoidRule *rule, BoidBrainData *bbd, BoidValues *val, EffectedPoint epoint; ListBase *effectors = bbd->sim->psys->effectors; EffectorCache *cur, *eff = NULL; + EffectorCache temp_eff; EffectorData efd, cur_efd; float mul = (rule->type == eBoidRuleType_Avoid ? 1.0 : -1.0); float priority = 0.0f, len = 0.0f; @@ -91,7 +92,7 @@ static int rule_goal_avoid(BoidRule *rule, BoidBrainData *bbd, BoidValues *val, if(gabr->ob && (rule->type != eBoidRuleType_Goal || gabr->ob != bpa->ground)) { if(gabr->ob == eob) { - /* TODO: objects without any effector and effectors with multiple points */ + /* TODO: effectors with multiple points */ if(get_effector_data(cur, &efd, &epoint, 0)) { if(cur->pd && cur->pd->forcefield == PFIELD_BOID) priority = mul * pd->f_strength * effector_falloff(cur, &efd, &epoint, bbd->part->effector_weights); @@ -105,7 +106,7 @@ static int rule_goal_avoid(BoidRule *rule, BoidBrainData *bbd, BoidValues *val, } else if(rule->type == eBoidRuleType_Goal && eob == bpa->ground) ; /* skip current object */ - else if(pd->forcefield == PFIELD_BOID && mul * pd->f_strength > 0.0f && get_effector_data(eff, &efd, &epoint, 0)) { + else if(pd->forcefield == PFIELD_BOID && mul * pd->f_strength > 0.0f && get_effector_data(cur, &cur_efd, &epoint, 0)) { float temp = mul * pd->f_strength * effector_falloff(cur, &cur_efd, &epoint, bbd->part->effector_weights); if(temp == 0.0f) @@ -125,11 +126,21 @@ static int rule_goal_avoid(BoidRule *rule, BoidBrainData *bbd, BoidValues *val, } } + /* if the object doesn't have effector data we have to fake it */ + if(eff == NULL && gabr->ob) { + memset(&temp_eff, 0, sizeof(EffectorCache)); + temp_eff.ob = gabr->ob; + temp_eff.scene = bbd->sim->scene; + eff = &temp_eff; + get_effector_data(eff, &efd, &epoint, 0); + priority = 1.0f; + } + /* then use that effector */ if(priority > (rule->type==eBoidRuleType_Avoid ? gabr->fear_factor : 0.0f)) { /* with avoid, factor is "fear factor" */ Object *eob = eff->ob; - PartDeflect *pd = eob->pd; - float surface = pd->shape == PFIELD_SHAPE_SURFACE ? 1.0f : 0.0f; + PartDeflect *pd = eff->pd; + float surface = (pd && pd->shape == PFIELD_SHAPE_SURFACE) ? 1.0f : 0.0f; if(gabr->options & BRULE_GOAL_AVOID_PREDICT) { /* estimate future location of target */ @@ -219,10 +230,19 @@ static int rule_avoid_collision(BoidRule *rule, BoidBrainData *bbd, BoidValues * } /* then avoid that object */ if(hit.index>=0) { - /* TODO: not totally happy with this part */ t = hit.dist/col.ray_len; - VECCOPY(bbd->wanted_co, col.nor); + /* avoid head-on collision */ + if(dot_v3v3(col.nor, pa->prev_state.ave) < -0.99) { + /* don't know why, but uneven range [0.0,1.0] */ + /* works much better than even [-1.0,1.0] */ + bbd->wanted_co[0] = BLI_frand(); + bbd->wanted_co[1] = BLI_frand(); + bbd->wanted_co[2] = BLI_frand(); + } + else { + VECCOPY(bbd->wanted_co, col.nor); + } mul_v3_fl(bbd->wanted_co, (1.0f - t) * val->personal_space * pa->size); diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index ec761c27c64..e915784e741 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -89,6 +89,8 @@ Brush *add_brush(const char *name) brush->flag |= BRUSH_SPACE; brush_curve_preset(brush, CURVE_PRESET_SMOOTH); + + default_mtex(&brush->mtex); /* enable fake user by default */ brush->id.flag |= LIB_FAKEUSER; @@ -225,7 +227,7 @@ void brush_toggled_fake_user(Brush *brush) } } -void brush_curve_preset(Brush *b, CurveMappingPreset preset) +void brush_curve_preset(Brush *b, /*CurveMappingPreset*/int preset) { CurveMap *cm = NULL; diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 32cde20eb6b..e9a1021a203 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -1406,7 +1406,7 @@ DerivedMesh *CDDM_new(int numVerts, int numEdges, int numFaces) CDDerivedMesh *cddm = cdDM_create("CDDM_new dm"); DerivedMesh *dm = &cddm->dm; - DM_init(dm, numVerts, numEdges, numFaces); + DM_init(dm, DM_TYPE_CDDM, numVerts, numEdges, numFaces); CustomData_add_layer(&dm->vertData, CD_ORIGINDEX, CD_CALLOC, NULL, numVerts); CustomData_add_layer(&dm->edgeData, CD_ORIGINDEX, CD_CALLOC, NULL, numEdges); @@ -1432,7 +1432,7 @@ DerivedMesh *CDDM_from_mesh(Mesh *mesh, Object *ob) /* this does a referenced copy, with an exception for fluidsim */ - DM_init(dm, mesh->totvert, mesh->totedge, mesh->totface); + DM_init(dm, DM_TYPE_CDDM, mesh->totvert, mesh->totedge, mesh->totface); dm->deformedOnly = 1; @@ -1565,7 +1565,7 @@ DerivedMesh *CDDM_copy(DerivedMesh *source) source->getFaceDataArray(source, CD_ORIGINDEX); /* this initializes dm, and copies all non mvert/medge/mface layers */ - DM_from_template(dm, source, numVerts, numEdges, numFaces); + DM_from_template(dm, source, DM_TYPE_CDDM, numVerts, numEdges, numFaces); dm->deformedOnly = source->deformedOnly; CustomData_copy_data(&source->vertData, &dm->vertData, 0, 0, numVerts); @@ -1591,7 +1591,7 @@ DerivedMesh *CDDM_from_template(DerivedMesh *source, DerivedMesh *dm = &cddm->dm; /* this does a copy of all non mvert/medge/mface layers */ - DM_from_template(dm, source, numVerts, numEdges, numFaces); + DM_from_template(dm, source, DM_TYPE_CDDM, numVerts, numEdges, numFaces); /* now add mvert/medge/mface layers */ CustomData_add_layer(&dm->vertData, CD_MVERT, CD_CALLOC, NULL, numVerts); diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c index dc9a70f2767..de1c2ef8ddc 100644 --- a/source/blender/blenkernel/intern/cloth.c +++ b/source/blender/blenkernel/intern/cloth.c @@ -478,7 +478,7 @@ DerivedMesh *clothModifier_do(ClothModifierData *clmd, Scene *scene, Object *ob, } } - // unused in the moment, calculated seperately in implicit.c + // unused in the moment, calculated separately in implicit.c clmd->sim_parms->dt = clmd->sim_parms->timescale / clmd->sim_parms->stepsPerFrame; /* handle continuous simulation with the play button */ diff --git a/source/blender/blenkernel/intern/colortools.c b/source/blender/blenkernel/intern/colortools.c index cd8c0c24087..02cfae2bba3 100644 --- a/source/blender/blenkernel/intern/colortools.c +++ b/source/blender/blenkernel/intern/colortools.c @@ -763,10 +763,15 @@ void colorcorrection_do_ibuf(ImBuf *ibuf, const char *profile) } } - +/* only used for image editor curves */ void curvemapping_do_ibuf(CurveMapping *cumap, ImBuf *ibuf) { + ImBuf *tmpbuf; int pixel; + float *pix_in; + float col[3]; + int stride= 4; + float *pix_out; if(ibuf==NULL) return; @@ -775,35 +780,43 @@ void curvemapping_do_ibuf(CurveMapping *cumap, ImBuf *ibuf) else if(ibuf->rect==NULL) imb_addrectImBuf(ibuf); + if (!ibuf->rect || !ibuf->rect_float) + return; + + /* work on a temp buffer, so can color manage afterwards. + * No worse off memory wise than comp nodes */ + tmpbuf = IMB_dupImBuf(ibuf); + curvemapping_premultiply(cumap, 0); - if(ibuf->rect_float && ibuf->rect) { - float *pixf= ibuf->rect_float; - float col[3]; - int stride= 4; - char *pixc= (char *)ibuf->rect; - - if(ibuf->channels) - stride= ibuf->channels; - - for(pixel= ibuf->x*ibuf->y; pixel>0; pixel--, pixf+=stride, pixc+=4) { - if(stride<3) { - col[0]= curvemap_evaluateF(cumap->cm, *pixf); - pixc[1]= pixc[2]= pixc[3]= pixc[0]= FTOCHAR(col[0]); - } - else { - curvemapping_evaluate_premulRGBF(cumap, col, pixf); - pixc[0]= FTOCHAR(col[0]); - pixc[1]= FTOCHAR(col[1]); - pixc[2]= FTOCHAR(col[2]); - if(stride>3) - pixc[3]= FTOCHAR(pixf[3]); - else - pixc[3]= 255; - } + pix_in= ibuf->rect_float; + pix_out= tmpbuf->rect_float; + + if(ibuf->channels) + stride= ibuf->channels; + + for(pixel= ibuf->x*ibuf->y; pixel>0; pixel--, pix_in+=stride, pix_out+=4) { + if(stride<3) { + col[0]= curvemap_evaluateF(cumap->cm, *pix_in); + + pix_out[1]= pix_out[2]= pix_out[3]= pix_out[0]= col[0]; + } + else { + curvemapping_evaluate_premulRGBF(cumap, col, pix_in); + pix_out[0]= col[0]; + pix_out[1]= col[1]; + pix_out[2]= col[2]; + if(stride>3) + pix_out[3]= pix_in[3]; + else + pix_out[3]= 1.f; } } + IMB_rect_from_float(tmpbuf); + SWAP(unsigned int *, tmpbuf->rect, ibuf->rect); + IMB_freeImBuf(tmpbuf); + curvemapping_premultiply(cumap, 1); } @@ -863,3 +876,91 @@ void curvemapping_table_RGBA(CurveMapping *cumap, float **array, int *size) } } +/* ***************** Histogram **************** */ + +DO_INLINE int get_bin_float(float f) +{ + int bin= (int)(f*255); + + /* note: clamp integer instead of float to avoid problems with NaN */ + CLAMP(bin, 0, 255); + + //return (int) (((f + 0.25) / 1.5) * 255); + + return bin; +} + + +void histogram_update(Histogram *hist, ImBuf *ibuf) +{ + int x, y, n; + double div; + float *rf; + unsigned char *rc; + unsigned int *bin_r, *bin_g, *bin_b; + + if (hist->ok == 1 ) return; + + if (hist->xmax == 0.f) hist->xmax = 1.f; + if (hist->ymax == 0.f) hist->ymax = 1.f; + + /* hmmmm */ + if (!(ELEM(ibuf->channels, 3, 4))) return; + + hist->channels = 3; + + bin_r = MEM_callocN(256 * sizeof(unsigned int), "temp historgram bins"); + bin_g = MEM_callocN(256 * sizeof(unsigned int), "temp historgram bins"); + bin_b = MEM_callocN(256 * sizeof(unsigned int), "temp historgram bins"); + + if (ibuf->rect_float) { + hist->x_resolution = 256; + + /* divide into bins */ + rf = ibuf->rect_float; + for (y = 0; y < ibuf->y; y++) { + for (x = 0; x < ibuf->x; x++) { + bin_r[ get_bin_float(rf[0]) ] += 1; + bin_g[ get_bin_float(rf[1]) ] += 1; + bin_b[ get_bin_float(rf[2]) ] += 1; + rf+= ibuf->channels; + } + } + } + else if (ibuf->rect) { + hist->x_resolution = 256; + + rc = (unsigned char *)ibuf->rect; + for (y = 0; y < ibuf->y; y++) { + for (x = 0; x < ibuf->x; x++) { + bin_r[ rc[0] ] += 1; + bin_g[ rc[1] ] += 1; + bin_b[ rc[2] ] += 1; + rc += ibuf->channels; + } + } + } + + /* convert to float */ + n=0; + for (x=0; x<256; x++) { + if (bin_r[x] > n) + n = bin_r[x]; + if (bin_g[x] > n) + n = bin_g[x]; + if (bin_b[x] > n) + n = bin_b[x]; + } + div = 1.f/(double)n; + for (x=0; x<256; x++) { + hist->data_r[x] = bin_r[x] * div; + hist->data_g[x] = bin_g[x] * div; + hist->data_b[x] = bin_b[x] * div; + } + + MEM_freeN(bin_r); + MEM_freeN(bin_g); + MEM_freeN(bin_b); + + hist->ok=1; +} diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c index 4de148803f8..026cc899aad 100644 --- a/source/blender/blenkernel/intern/constraint.c +++ b/source/blender/blenkernel/intern/constraint.c @@ -415,7 +415,7 @@ static void contarget_get_mesh_mat (Scene *scene, Object *ob, char *substring, f copy_m4_m4(mat, ob->obmat); /* get index of vertex group */ - dgroup = get_named_vertexgroup_num(ob, substring); + dgroup = defgroup_name_index(ob, substring); if (dgroup < 0) return; /* get DerivedMesh */ @@ -524,7 +524,7 @@ static void contarget_get_lattice_mat (Object *ob, char *substring, float mat[][ copy_m4_m4(mat, ob->obmat); /* get index of vertex group */ - dgroup = get_named_vertexgroup_num(ob, substring); + dgroup = defgroup_name_index(ob, substring); if (dgroup < 0) return; if (dvert == NULL) return; @@ -1353,10 +1353,7 @@ static void rotlimit_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *t mat4_to_eulO( eul, cob->rotOrder,cob->matrix); - /* eulers: radians to degrees! */ - eul[0] = (float)(eul[0] / M_PI * 180); - eul[1] = (float)(eul[1] / M_PI * 180); - eul[2] = (float)(eul[2] / M_PI * 180); + /* constraint data uses radians internally */ /* limiting of euler values... */ if (data->flag & LIMIT_XROT) { @@ -1381,11 +1378,6 @@ static void rotlimit_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *t eul[2] = data->zmax; } - /* eulers: degrees to radians ! */ - eul[0] = (float)(eul[0] / 180 * M_PI); - eul[1] = (float)(eul[1] / 180 * M_PI); - eul[2] = (float)(eul[2] / 180 * M_PI); - loc_eulO_size_to_mat4(cob->matrix, loc, eul, size, cob->rotOrder); } diff --git a/source/blender/blenkernel/intern/context.c b/source/blender/blenkernel/intern/context.c index fc1ef4aede9..de13ca94d1a 100644 --- a/source/blender/blenkernel/intern/context.c +++ b/source/blender/blenkernel/intern/context.c @@ -46,7 +46,9 @@ #include "BKE_screen.h" #include "BKE_global.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" +#endif #include <string.h> @@ -413,13 +415,13 @@ static int ctx_data_get(bContext *C, const char *member, bContextDataResult *res int ret= 0; memset(result, 0, sizeof(bContextDataResult)); - +#ifndef DISABLE_PYTHON if(CTX_py_dict_get(C)) { return BPY_context_get(C, member, result); // if (BPY_context_get(C, member, result)) // return 1; } - +#endif /* we check recursion to ensure that we do not get infinite * loops requesting data from ourselfs in a context callback */ @@ -484,7 +486,12 @@ static int ctx_data_pointer_verify(const bContext *C, const char *member, void * { bContextDataResult result; - if(ctx_data_get((bContext*)C, member, &result)==1) { + /* if context is NULL, pointer must be NULL too and that is a valid return */ + if (C == NULL) { + *pointer= NULL; + return 1; + } + else if(ctx_data_get((bContext*)C, member, &result)==1) { *pointer= result.ptr.data; return 1; } diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index 75759733cad..2c5f1af7677 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -2325,7 +2325,7 @@ void makeBevelList(Object *ob) /* * handlecodes: - * 1: nothing, 1:auto, 2:vector, 3:aligned + * 0: nothing, 1:auto, 2:vector, 3:aligned */ /* mode: is not zero when FCurve, is 2 when forced horizontal for autohandles */ diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/intern/customdata.c index 78e673b9e79..3a8068ead56 100644 --- a/source/blender/blenkernel/intern/customdata.c +++ b/source/blender/blenkernel/intern/customdata.c @@ -1922,7 +1922,7 @@ void CustomData_from_bmeshpoly(CustomData *fdata, CustomData *pdata, CustomData void CustomData_bmesh_init_pool(CustomData *data, int allocsize){ - if(data->totlayer)data->pool = BLI_mempool_create(data->totsize, allocsize, allocsize); + if(data->totlayer)data->pool = BLI_mempool_create(data->totsize, allocsize, allocsize, 0); } void CustomData_bmesh_free_block(CustomData *data, void **block) @@ -2347,8 +2347,10 @@ void CustomData_external_read(CustomData *data, ID *id, CustomDataMask mask, int customdata_external_filename(filename, id, external); cdf= cdf_create(CDF_TYPE_MESH); - if(!cdf_read_open(cdf, filename)) + if(!cdf_read_open(cdf, filename)) { + fprintf(stderr, "Failed to read %s layer from %s.\n", layerType_getName(layer->type), filename); return; + } for(i=0; i<data->totlayer; i++) { layer = &data->layers[i]; @@ -2388,6 +2390,7 @@ void CustomData_external_write(CustomData *data, ID *id, CustomDataMask mask, in if(!external) return; + /* test if there is anything to write */ for(i=0; i<data->totlayer; i++) { layer = &data->layers[i]; typeInfo = layerType_getInfo(layer->type); @@ -2400,7 +2403,9 @@ void CustomData_external_write(CustomData *data, ID *id, CustomDataMask mask, in if(!update) return; + /* make sure data is read before we try to write */ CustomData_external_read(data, id, mask, totelem); + customdata_external_filename(filename, id, external); cdf= cdf_create(CDF_TYPE_MESH); @@ -2408,14 +2413,22 @@ void CustomData_external_write(CustomData *data, ID *id, CustomDataMask mask, in 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)); + if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->filesize) { + if(layer->flag & CD_FLAG_IN_MEMORY) { + cdf_layer_add(cdf, layer->type, layer->name, + typeInfo->filesize(cdf, layer->data, totelem)); + } + else { + cdf_free(cdf); + return; /* read failed for a layer! */ + } + } } - customdata_external_filename(filename, id, external); - if(!cdf_write_open(cdf, filename)) + if(!cdf_write_open(cdf, filename)) { + fprintf(stderr, "Failed to open %s for writing.\n", filename); return; + } for(i=0; i<data->totlayer; i++) { layer = &data->layers[i]; @@ -2434,6 +2447,7 @@ void CustomData_external_write(CustomData *data, ID *id, CustomDataMask mask, in } if(i != data->totlayer) { + fprintf(stderr, "Failed to write data to %s.\n", filename); cdf_free(cdf); return; } diff --git a/source/blender/blenkernel/intern/deform.c b/source/blender/blenkernel/intern/deform.c index c1e45243bb5..6c873bc262e 100644 --- a/source/blender/blenkernel/intern/deform.c +++ b/source/blender/blenkernel/intern/deform.c @@ -34,6 +34,7 @@ #include <string.h> #include <math.h> +#include "ctype.h" #include "MEM_guardedalloc.h" @@ -66,19 +67,19 @@ #endif -void copy_defgroups (ListBase *outbase, ListBase *inbase) +void defgroup_copy_list (ListBase *outbase, ListBase *inbase) { bDeformGroup *defgroup, *defgroupn; outbase->first= outbase->last= 0; for (defgroup = inbase->first; defgroup; defgroup=defgroup->next){ - defgroupn= copy_defgroup(defgroup); + defgroupn= defgroup_duplicate(defgroup); BLI_addtail(outbase, defgroupn); } } -bDeformGroup *copy_defgroup (bDeformGroup *ingroup) +bDeformGroup *defgroup_duplicate (bDeformGroup *ingroup) { bDeformGroup *outgroup; @@ -95,7 +96,98 @@ bDeformGroup *copy_defgroup (bDeformGroup *ingroup) return outgroup; } -bDeformGroup *get_named_vertexgroup (Object *ob, char *name) +/* copy & overwrite weights */ +void defvert_copy (MDeformVert *dvert_r, const MDeformVert *dvert) +{ + if(dvert_r->totweight == dvert->totweight) { + if(dvert->totweight) + memcpy(dvert_r->dw, dvert->dw, dvert->totweight * sizeof(MDeformWeight)); + } + else { + if(dvert_r->dw) + MEM_freeN(dvert_r->dw); + + if(dvert->totweight) + dvert_r->dw= MEM_dupallocN(dvert->dw); + else + dvert_r->dw= NULL; + + dvert_r->totweight = dvert->totweight; + } +} + +/* only sync over matching weights, don't add or remove groups + * warning, loop within loop. + */ +void defvert_sync (MDeformVert *dvert_r, const MDeformVert *dvert, int use_verify) +{ + if(dvert->totweight && dvert_r->totweight) { + int i; + MDeformWeight *dw; + for(i=0, dw=dvert->dw; i < dvert->totweight; i++, dw++) { + MDeformWeight *dw_r; + if(use_verify) dw_r= defvert_find_index(dvert_r, dw->def_nr); + else dw_r= defvert_verify_index(dvert_r, dw->def_nr); + + if(dw_r) { + dw_r->weight= dw->weight; + } + } + } +} + +/* be sure all flip_map values are valid */ +void defvert_sync_mapped (MDeformVert *dvert_r, const MDeformVert *dvert, int *flip_map, int use_verify) +{ + if(dvert->totweight && dvert_r->totweight) { + int i; + MDeformWeight *dw; + for(i=0, dw=dvert->dw; i < dvert->totweight; i++, dw++) { + MDeformWeight *dw_r; + if(use_verify) dw_r= defvert_find_index(dvert_r, flip_map[dw->def_nr]); + else dw_r= defvert_verify_index(dvert_r, flip_map[dw->def_nr]); + + if(dw_r) { + dw_r->weight= dw->weight; + } + } + } +} + +void defvert_normalize (MDeformVert *dvert) +{ + if(dvert->totweight<=0) { + /* nothing */ + } + else if (dvert->totweight==1) { + dvert->dw[0].weight= 1.0f; + } + else { + int i; + float tot= 0.0f; + MDeformWeight *dw; + for(i=0, dw=dvert->dw; i < dvert->totweight; i++, dw++) + tot += dw->weight; + + if(tot > 0.0f) { + for(i=0, dw=dvert->dw; i < dvert->totweight; i++, dw++) + dw->weight /= tot; + } + } +} + +void defvert_flip (MDeformVert *dvert, int *flip_map) +{ + MDeformWeight *dw; + int i; + + for(dw= dvert->dw, i=0; i<dvert->totweight; dw++, i++) + if(flip_map[dw->def_nr] >= 0) + dw->def_nr= flip_map[dw->def_nr]; +} + + +bDeformGroup *defgroup_find_name (Object *ob, char *name) { /* return a pointer to the deform group with this name * or return NULL otherwise. @@ -110,31 +202,35 @@ bDeformGroup *get_named_vertexgroup (Object *ob, char *name) return NULL; } -int get_named_vertexgroup_num (Object *ob, const char *name) +int defgroup_name_index (Object *ob, const char *name) { /* Return the location of the named deform group within the list of - * deform groups. This function is a combination of get_defgroup_num and - * get_named_vertexgroup. The other two could be called instead, but that + * deform groups. This function is a combination of defgroup_find_index and + * defgroup_find_name. The other two could be called instead, but that * require looping over the vertexgroups twice. */ bDeformGroup *curdef; int def_nr; - for (curdef=ob->defbase.first, def_nr=0; curdef; curdef=curdef->next, def_nr++) { - if (!strcmp(curdef->name, name)) - return def_nr; + if(name[0] != '\0') { + for (curdef=ob->defbase.first, def_nr=0; curdef; curdef=curdef->next, def_nr++) { + if (!strcmp(curdef->name, name)) + return def_nr; + } } - + return -1; } -int get_defgroup_num (Object *ob, bDeformGroup *dg) +int defgroup_find_index (Object *ob, bDeformGroup *dg) { /* Fetch the location of this deform group * within the linked list of deform groups. * (this number is stored in the deform * weights of the deform verts to link them * to this deform group). + * + * note: this is zero based, ob->actdef starts at 1. */ bDeformGroup *eg; @@ -167,7 +263,59 @@ int get_defgroup_num (Object *ob, bDeformGroup *dg) } -void unique_vertexgroup_name (bDeformGroup *dg, Object *ob) +/* note, must be freed */ +int *defgroup_flip_map(Object *ob, int use_default) +{ + bDeformGroup *dg; + int totdg= BLI_countlist(&ob->defbase); + + if(totdg==0) { + return NULL; + } + else { + char name[sizeof(dg->name)]; + int i, flip_num, *map= MEM_mallocN(totdg * sizeof(int), "get_defgroup_flip_map"); + + memset(map, -1, totdg * sizeof(int)); + + for (dg=ob->defbase.first, i=0; dg; dg=dg->next, i++) { + if(map[i] == -1) { /* may be calculated previously */ + + /* incase no valid value is found, use this */ + if(use_default) + map[i]= i; + + flip_side_name(name, dg->name, 0); + if(strcmp(name, dg->name)) { + flip_num= defgroup_name_index(ob, name); + if(flip_num >= 0) { + map[i]= flip_num; + map[flip_num]= i; /* save an extra lookup */ + } + } + } + } + return map; + } +} + +int defgroup_flip_index(Object *ob, int index, int use_default) +{ + bDeformGroup *dg= BLI_findlink(&ob->defbase, index); + int flip_index = -1; + + if(dg) { + char name[sizeof(dg->name)]; + flip_side_name(name, dg->name, 0); + + if(strcmp(name, dg->name)) + flip_index= defgroup_name_index(ob, name); + } + + return (flip_index==-1 && use_default) ? index : flip_index; +} + +void defgroup_unique_name (bDeformGroup *dg, Object *ob) { bDeformGroup *curdef; int number; @@ -221,27 +369,176 @@ void unique_vertexgroup_name (bDeformGroup *dg, Object *ob) } } -float deformvert_get_weight(const struct MDeformVert *dvert, int group_num) + +/* finds the best possible flipped name. For renaming; check for unique names afterwards */ +/* if strip_number: removes number extensions */ +void flip_side_name (char *name, const char *from_name, int strip_number) { - if(dvert) - { - const MDeformWeight *dw = dvert->dw; - int i; + int len; + char prefix[sizeof((bDeformGroup *)NULL)->name]={""}; /* The part before the facing */ + char suffix[sizeof((bDeformGroup *)NULL)->name]={""}; /* The part after the facing */ + char replace[sizeof((bDeformGroup *)NULL)->name]={""}; /* The replacement string */ + char number[sizeof((bDeformGroup *)NULL)->name]={""}; /* The number extension string */ + char *index=NULL; + + len= strlen(from_name); + if(len<3) return; // we don't do names like .R or .L + + strcpy(name, from_name); + + /* We first check the case with a .### extension, let's find the last period */ + if(isdigit(name[len-1])) { + index= strrchr(name, '.'); // last occurrence + if (index && isdigit(index[1]) ) { // doesnt handle case bone.1abc2 correct..., whatever! + if(strip_number==0) + strcpy(number, index); + *index= 0; + len= strlen(name); + } + } - for(i=dvert->totweight; i>0; i--, dw++) - if(dw->def_nr == group_num) - return dw->weight; + strcpy (prefix, name); + +#define IS_SEPARATOR(a) ((a)=='.' || (a)==' ' || (a)=='-' || (a)=='_') + + /* first case; separator . - _ with extensions r R l L */ + if( IS_SEPARATOR(name[len-2]) ) { + switch(name[len-1]) { + case 'l': + prefix[len-1]= 0; + strcpy(replace, "r"); + break; + case 'r': + prefix[len-1]= 0; + strcpy(replace, "l"); + break; + case 'L': + prefix[len-1]= 0; + strcpy(replace, "R"); + break; + case 'R': + prefix[len-1]= 0; + strcpy(replace, "L"); + break; + } } + /* case; beginning with r R l L , with separator after it */ + else if( IS_SEPARATOR(name[1]) ) { + switch(name[0]) { + case 'l': + strcpy(replace, "r"); + strcpy(suffix, name+1); + prefix[0]= 0; + break; + case 'r': + strcpy(replace, "l"); + strcpy(suffix, name+1); + prefix[0]= 0; + break; + case 'L': + strcpy(replace, "R"); + strcpy(suffix, name+1); + prefix[0]= 0; + break; + case 'R': + strcpy(replace, "L"); + strcpy(suffix, name+1); + prefix[0]= 0; + break; + } + } + else if(len > 5) { + /* hrms, why test for a separator? lets do the rule 'ultimate left or right' */ + index = BLI_strcasestr(prefix, "right"); + if (index==prefix || index==prefix+len-5) { + if(index[0]=='r') + strcpy (replace, "left"); + else { + if(index[1]=='I') + strcpy (replace, "LEFT"); + else + strcpy (replace, "Left"); + } + *index= 0; + strcpy (suffix, index+5); + } + else { + index = BLI_strcasestr(prefix, "left"); + if (index==prefix || index==prefix+len-4) { + if(index[0]=='l') + strcpy (replace, "right"); + else { + if(index[1]=='E') + strcpy (replace, "RIGHT"); + else + strcpy (replace, "Right"); + } + *index= 0; + strcpy (suffix, index+4); + } + } + } + +#undef IS_SEPARATOR - /* Not found */ - return 0.0; + sprintf (name, "%s%s%s%s", prefix, replace, suffix, number); } -float vertexgroup_get_vertex_weight(const struct MDeformVert *dvert, int index, int group_num) +float defvert_find_weight(const struct MDeformVert *dvert, int group_num) +{ + MDeformWeight *dw= defvert_find_index(dvert, group_num); + return dw ? dw->weight : 0.0f; +} + +float defvert_array_find_weight_safe(const struct MDeformVert *dvert, int index, int group_num) { if(group_num == -1 || dvert == NULL) - return 1.0; + return 1.0f; - return deformvert_get_weight(dvert+index, group_num); + return defvert_find_weight(dvert+index, group_num); } + +MDeformWeight *defvert_find_index(const MDeformVert *dvert, int defgroup) +{ + if(dvert && defgroup >= 0) { + MDeformWeight *dw = dvert->dw; + int i; + + for(i=dvert->totweight; i>0; i--, dw++) + if(dw->def_nr == defgroup) + return dw; + } + + return NULL; +} + +/* Ensures that mv has a deform weight entry for the specified defweight group */ +/* Note this function is mirrored in editmesh_tools.c, for use for editvertices */ +MDeformWeight *defvert_verify_index(MDeformVert *dv, int defgroup) +{ + MDeformWeight *newdw; + + /* do this check always, this function is used to check for it */ + if(!dv || defgroup<0) + return NULL; + + newdw = defvert_find_index(dv, defgroup); + if(newdw) + return newdw; + + newdw = MEM_callocN(sizeof(MDeformWeight)*(dv->totweight+1), "deformWeight"); + if(dv->dw) { + memcpy(newdw, dv->dw, sizeof(MDeformWeight)*dv->totweight); + MEM_freeN(dv->dw); + } + dv->dw=newdw; + + dv->dw[dv->totweight].weight=0.0f; + dv->dw[dv->totweight].def_nr=defgroup; + /* Group index */ + + dv->totweight++; + + return dv->dw+(dv->totweight-1); +} diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index e664dd01f4d..b6ba07ada4a 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -29,12 +29,9 @@ #include <string.h> #include <math.h> -#ifdef _WIN32 -#include "BLI_winstuff.h" -#endif - #include "BLI_blenlib.h" #include "BLI_math.h" +#include "BLI_winstuff.h" #include "DNA_anim_types.h" #include "DNA_action_types.h" @@ -809,7 +806,7 @@ DagNode * dag_find_node (DagForest *forest,void * fob) static int ugly_hack_sorry= 1; // prevent type check -/* no checking of existance, use dag_find_node first or dag_get_node */ +/* no checking of existence, use dag_find_node first or dag_get_node */ DagNode * dag_add_node (DagForest *forest, void * fob) { DagNode *node; diff --git a/source/blender/blenkernel/intern/effect.c b/source/blender/blenkernel/intern/effect.c index 83f63c9ffb2..f4fea899005 100644 --- a/source/blender/blenkernel/intern/effect.c +++ b/source/blender/blenkernel/intern/effect.c @@ -593,7 +593,7 @@ int get_effector_data(EffectorCache *eff, EffectorData *efd, EffectedPoint *poin float cfra = eff->scene->r.cfra; int ret = 0; - if(eff->pd->shape==PFIELD_SHAPE_SURFACE && eff->surmd) { + if(eff->pd && eff->pd->shape==PFIELD_SHAPE_SURFACE && eff->surmd) { /* closest point in the object surface is an effector */ float vec[3]; @@ -606,7 +606,7 @@ int get_effector_data(EffectorCache *eff, EffectorData *efd, EffectedPoint *poin efd->size = 0.0f; } - else if(eff->pd->shape==PFIELD_SHAPE_POINTS) { + else if(eff->pd && eff->pd->shape==PFIELD_SHAPE_POINTS) { if(eff->ob->derivedFinal) { DerivedMesh *dm = eff->ob->derivedFinal; @@ -658,6 +658,8 @@ int get_effector_data(EffectorCache *eff, EffectorData *efd, EffectedPoint *poin Object *ob = eff->ob; Object obcopy = *ob; + /* XXX this is not thread-safe, but used from multiple threads by + particle system */ where_is_object_time(eff->scene, ob, cfra); /* use z-axis as normal*/ @@ -665,7 +667,7 @@ int get_effector_data(EffectorCache *eff, EffectorData *efd, EffectedPoint *poin normalize_v3(efd->nor); /* for vortex the shape chooses between old / new force */ - if(eff->pd->shape == PFIELD_SHAPE_PLANE) { + if(eff->pd && eff->pd->shape == PFIELD_SHAPE_PLANE) { /* efd->loc is closes point on effector xy-plane */ float temp[3]; sub_v3_v3v3(temp, point->loc, ob->obmat[3]); @@ -696,7 +698,7 @@ int get_effector_data(EffectorCache *eff, EffectorData *efd, EffectedPoint *poin 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) + if(eff->pd && 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) { diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c index 67bee90e91c..2084dc7ede7 100644 --- a/source/blender/blenkernel/intern/fcurve.c +++ b/source/blender/blenkernel/intern/fcurve.c @@ -284,6 +284,46 @@ int list_find_data_fcurves (ListBase *dst, ListBase *src, const char *dataPrefix return matches; } +FCurve *rna_get_fcurve(PointerRNA *ptr, PropertyRNA *prop, int rnaindex, bAction **action, int *driven) +{ + FCurve *fcu= NULL; + + *driven= 0; + + /* there must be some RNA-pointer + property combon */ + if(prop && ptr->id.data && RNA_property_animateable(ptr, prop)) { + AnimData *adt= BKE_animdata_from_id(ptr->id.data); + char *path; + + if(adt) { + if((adt->action && adt->action->curves.first) || (adt->drivers.first)) { + /* XXX this function call can become a performance bottleneck */ + path= RNA_path_from_ID_to_property(ptr, prop); + + if(path) { + /* animation takes priority over drivers */ + if(adt->action && adt->action->curves.first) + fcu= list_find_fcurve(&adt->action->curves, path, rnaindex); + + /* if not animated, check if driven */ + if(!fcu && (adt->drivers.first)) { + fcu= list_find_fcurve(&adt->drivers, path, rnaindex); + + if(fcu) + *driven= 1; + } + + if(fcu && action) + *action= adt->action; + + MEM_freeN(path); + } + } + } + } + + return fcu; +} /* threshold for binary-searching keyframes - threshold here should be good enough for now, but should become userpref */ #define BEZT_BINARYSEARCH_THRESH 0.00001f @@ -1097,6 +1137,12 @@ void driver_free_variable (ChannelDriver *driver, DriverVar *dvar) BLI_freelinkN(&driver->variables, dvar); else MEM_freeN(dvar); + +#ifndef DISABLE_PYTHON + /* since driver variables are cached, the expression needs re-compiling too */ + if(driver->type==DRIVER_TYPE_PYTHON) + driver->flag |= DRIVER_FLAG_RENAMEVAR; +#endif } /* Change the type of driver variable */ @@ -1149,6 +1195,12 @@ DriverVar *driver_add_new_variable (ChannelDriver *driver) /* set the default type to 'single prop' */ driver_change_variable_type(dvar, DVAR_TYPE_SINGLE_PROP); +#ifndef DISABLE_PYTHON + /* since driver variables are cached, the expression needs re-compiling too */ + if(driver->type==DRIVER_TYPE_PYTHON) + driver->flag |= DRIVER_FLAG_RENAMEVAR; +#endif + /* return the target */ return dvar; } @@ -1193,6 +1245,7 @@ ChannelDriver *fcurve_copy_driver (ChannelDriver *driver) /* copy all data */ ndriver= MEM_dupallocN(driver); + ndriver->expr_comp= NULL; /* copy variables */ ndriver->variables.first= ndriver->variables.last= NULL; @@ -1225,14 +1278,17 @@ float driver_get_variable_value (ChannelDriver *driver, DriverVar *dvar) return 0.0f; /* call the relevant callbacks to get the variable value - * using the variable type info + * using the variable type info, storing the obtained value + * in dvar->curval so that drivers can be debugged */ dvti= get_dvar_typeinfo(dvar->type); if (dvti && dvti->get_value) - return dvti->get_value(driver, dvar); + dvar->curval= dvti->get_value(driver, dvar); else - return 0.0f; + dvar->curval= 0.0f; + + return dvar->curval; } /* Evaluate an Channel-Driver to get a 'time' value to use instead of "evaltime" @@ -1255,12 +1311,12 @@ static float evaluate_driver (ChannelDriver *driver, float evaltime) if (driver->variables.first == driver->variables.last) { /* just one target, so just use that */ dvar= driver->variables.first; - return driver_get_variable_value(driver, dvar); + driver->curval= driver_get_variable_value(driver, dvar); } else { /* more than one target, so average the values of the targets */ - int tot = 0; float value = 0.0f; + int tot = 0; /* loop through targets, adding (hopefully we don't get any overflow!) */ for (dvar= driver->variables.first; dvar; dvar=dvar->next) { @@ -1270,10 +1326,9 @@ static float evaluate_driver (ChannelDriver *driver, float evaltime) /* perform operations on the total if appropriate */ if (driver->type == DRIVER_TYPE_AVERAGE) - return (value / (float)tot); + driver->curval= (value / (float)tot); else - return value; - + driver->curval= value; } } break; @@ -1307,6 +1362,9 @@ static float evaluate_driver (ChannelDriver *driver, float evaltime) value= tmp_val; } } + + /* store value in driver */ + driver->curval= value; } break; @@ -1317,13 +1375,15 @@ static float evaluate_driver (ChannelDriver *driver, float evaltime) if ( (driver->expression[0] == '\0') || (driver->flag & DRIVER_FLAG_INVALID) ) { - return 0.0f; + driver->curval= 0.0f; + } + else + { + /* this evaluates the expression using Python,and returns its result: + * - on errors it reports, then returns 0.0f + */ + driver->curval= BPY_pydriver_eval(driver); } - - /* this evaluates the expression using Python,and returns its result: - * - on errors it reports, then returns 0.0f - */ - return BPY_pydriver_eval(driver); #endif /* DISABLE_PYTHON*/ } break; @@ -1334,12 +1394,11 @@ static float evaluate_driver (ChannelDriver *driver, float evaltime) * This is currently used as the mechanism which allows animated settings to be able * to be changed via the UI. */ - return driver->curval; } } - /* return 0.0f, as couldn't find relevant data to use */ - return 0.0f; + /* return value for driver */ + return driver->curval; } /* ***************************** Curve Calculations ********************************* */ @@ -1722,9 +1781,16 @@ static float fcurve_eval_samples (FCurve *fcu, FPoint *fpts, float evaltime) cvalue= lastfpt->vec[1]; } else { + float t= (float)abs(evaltime - (int)evaltime); + /* find the one on the right frame (assume that these are spaced on 1-frame intervals) */ fpt= prevfpt + (int)(evaltime - prevfpt->vec[0]); - cvalue= fpt->vec[1]; + + /* if not exactly on the frame, perform linear interpolation with the next one */ + if (t != 0.0f) + cvalue= interpf(fpt->vec[1], (fpt+1)->vec[1], t); + else + cvalue= fpt->vec[1]; } /* return value */ diff --git a/source/blender/blenkernel/intern/fluidsim.c b/source/blender/blenkernel/intern/fluidsim.c index 9453c2a0ad1..ac4d0fe730a 100644 --- a/source/blender/blenkernel/intern/fluidsim.c +++ b/source/blender/blenkernel/intern/fluidsim.c @@ -562,6 +562,12 @@ void fluid_get_bb(MVert *mvert, int totvert, float obmat[][4], int i; float vec[3]; + if(totvert == 0) { + zero_v3(start); + zero_v3(size); + return; + } + VECCOPY(vec, mvert[0].co); mul_m4_v3(obmat, vec); bbsx = vec[0]; bbsy = vec[1]; bbsz = vec[2]; diff --git a/source/blender/blenkernel/intern/font.c b/source/blender/blenkernel/intern/font.c index 1a63f97e310..41e5178d6cb 100644 --- a/source/blender/blenkernel/intern/font.c +++ b/source/blender/blenkernel/intern/font.c @@ -398,7 +398,11 @@ VFont *load_vfont(char *name) if (vfd) { vfont = alloc_libblock(&G.main->vfont, ID_VF, filename); vfont->data = vfd; - + + /* if there's a font name, use it for the ID name */ + if (strcmp(vfd->name, "")!=0) { + BLI_strncpy(vfont->id.name+2, vfd->name, 21); + } BLI_strncpy(vfont->name, name, sizeof(vfont->name)); // if autopack is on store the packedfile in de font structure diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c index 5023d87cef8..8a933ba5289 100644 --- a/source/blender/blenkernel/intern/gpencil.c +++ b/source/blender/blenkernel/intern/gpencil.c @@ -349,8 +349,10 @@ bGPDframe *gpencil_layer_getframe (bGPDlayer *gpl, int cframe, short addnew) if (gpl->actframe) { gpf= gpl->actframe; - /* do not allow any changes to layer's active frame if layer is locked */ - if (gpl->flag & GP_LAYER_LOCKED) + /* do not allow any changes to layer's active frame if layer is locked from changes + * or if the layer has been set to stay on the current frame + */ + if (gpl->flag & (GP_LAYER_LOCKED|GP_LAYER_FRAMELOCK)) return gpf; /* do not allow any changes to actframe if frame has painting tag attached to it */ if (gpf->flag & GP_FRAME_PAINT) diff --git a/source/blender/blenkernel/intern/group.c b/source/blender/blenkernel/intern/group.c index f35a0a96bb4..9a690729d3e 100644 --- a/source/blender/blenkernel/intern/group.c +++ b/source/blender/blenkernel/intern/group.c @@ -57,13 +57,13 @@ #include <config.h> #endif -void free_group_object(GroupObject *go) +static void free_group_object(GroupObject *go) { MEM_freeN(go); } -void free_group(Group *group) +void free_group_objects(Group *group) { /* don't free group itself */ GroupObject *go; @@ -130,7 +130,7 @@ void unlink_group(Group *group) } /* group stays in library, but no members */ - free_group(group); + free_group_objects(group); group->id.us= 0; } diff --git a/source/blender/blenkernel/intern/idprop.c b/source/blender/blenkernel/intern/idprop.c index ddfb28437a9..c2e4dbb6c09 100644 --- a/source/blender/blenkernel/intern/idprop.c +++ b/source/blender/blenkernel/intern/idprop.c @@ -392,12 +392,11 @@ void IDP_ReplaceGroupInGroup(IDProperty *dest, IDProperty *src) { IDProperty *loop, *prop; for (prop=src->data.group.first; prop; prop=prop->next) { - IDProperty *copy = IDP_CopyProperty(prop); - for (loop=dest->data.group.first; loop; loop=loop->next) { if (BSTR_EQ(loop->name, prop->name)) { - if (loop->next) BLI_insertlinkbefore(&dest->data.group, loop->next, copy); - else BLI_addtail(&dest->data.group, copy); + IDProperty *copy = IDP_CopyProperty(prop); + + BLI_insertlink(&dest->data.group, loop, copy); BLI_remlink(&dest->data.group, loop); IDP_FreeProperty(loop); @@ -406,8 +405,12 @@ void IDP_ReplaceGroupInGroup(IDProperty *dest, IDProperty *src) } } - dest->len++; - BLI_addtail(&dest->data.group, copy); + /* only add at end if not added yet */ + if (loop == NULL) { + IDProperty *copy = IDP_CopyProperty(prop); + dest->len++; + BLI_addtail(&dest->data.group, copy); + } } } /* @@ -419,8 +422,7 @@ void IDP_ReplaceInGroup(IDProperty *group, IDProperty *prop) IDProperty *loop; for (loop=group->data.group.first; loop; loop=loop->next) { if (BSTR_EQ(loop->name, prop->name)) { - if (loop->next) BLI_insertlinkbefore(&group->data.group, loop->next, prop); - else BLI_addtail(&group->data.group, prop); + BLI_insertlink(&group->data.group, loop, prop); BLI_remlink(&group->data.group, loop); IDP_FreeProperty(loop); @@ -513,14 +515,12 @@ void IDP_FreeIterBeforeEnd(void *vself) direct data.*/ static void IDP_FreeGroup(IDProperty *prop) { - IDProperty *loop, *next; - for (loop=prop->data.group.first; loop; loop=next) + IDProperty *loop; + for (loop=prop->data.group.first; loop; loop=loop->next) { - next = loop->next; - BLI_remlink(&prop->data.group, loop); IDP_FreeProperty(loop); - MEM_freeN(loop); } + BLI_freelistN(&prop->data.group); } diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index 0c6eaffbed2..4710d015755 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -883,7 +883,7 @@ int BKE_imtype_is_movie(int imtype) return 0; } -void BKE_add_image_extension(Scene *scene, char *string, int imtype) +void BKE_add_image_extension(char *string, int imtype) { char *extension=""; @@ -1397,7 +1397,7 @@ int BKE_write_ibuf(Scene *scene, ImBuf *ibuf, char *name, int imtype, int subimt BLI_make_existing_file(name); - if(scene->r.stamp & R_STAMP_ALL) + if(scene && scene->r.stamp & R_STAMP_ALL) BKE_stamp_info(scene, ibuf); ok = IMB_saveiff(ibuf, name, IB_rect | IB_zbuf | IB_zbuffloat); @@ -1409,7 +1409,7 @@ int BKE_write_ibuf(Scene *scene, ImBuf *ibuf, char *name, int imtype, int subimt } -void BKE_makepicstring(struct Scene *scene, char *string, char *base, int frame, int imtype) +void BKE_makepicstring(char *string, char *base, int frame, int imtype, int use_ext) { if (string==NULL) return; @@ -1422,8 +1422,8 @@ void BKE_makepicstring(struct Scene *scene, char *string, char *base, int frame, BLI_convertstringcode(string, G.sce); BLI_convertstringframe(string, frame); - if(scene->r.scemode & R_EXTENSION) - BKE_add_image_extension(scene, string, imtype); + if(use_ext) + BKE_add_image_extension(string, imtype); } @@ -1438,7 +1438,10 @@ struct anim *openanim(char *name, int flags) ibuf = IMB_anim_absolute(anim, 0); if (ibuf == NULL) { - printf("not an anim; %s\n", name); + if(BLI_exists(name)) + printf("not an anim: %s\n", name); + else + printf("anim file doesn't exist: %s\n", name); IMB_free_anim(anim); return(0); } @@ -1469,7 +1472,7 @@ struct anim *openanim(char *name, int flags) */ -/* forces existance of 1 Image for renderout or nodes, returns Image */ +/* forces existence of 1 Image for renderout or nodes, returns Image */ /* name is only for default, when making new one */ Image *BKE_image_verify_viewer(int type, const char *name) { @@ -1898,6 +1901,7 @@ static ImBuf *image_get_ibuf_multilayer(Image *ima, ImageUser *iuser) ibuf->rect_float= rpass->rect; ibuf->flags |= IB_rectfloat; ibuf->channels= rpass->channels; + ibuf->profile = IB_PROFILE_LINEAR_RGB; image_assign_ibuf(ima, ibuf, iuser?iuser->multi_index:IMA_NO_INDEX, 0); } @@ -2199,7 +2203,7 @@ ImBuf *BKE_image_get_ibuf(Image *ima, ImageUser *iuser) return BKE_image_acquire_ibuf(ima, iuser, NULL); } -void BKE_image_user_calc_imanr(ImageUser *iuser, int cfra, int fieldnr) +void BKE_image_user_calc_frame(ImageUser *iuser, int cfra, int fieldnr) { int imanr, len; diff --git a/source/blender/blenkernel/intern/ipo.c b/source/blender/blenkernel/intern/ipo.c index feb7fc3e382..c43b1791035 100644 --- a/source/blender/blenkernel/intern/ipo.c +++ b/source/blender/blenkernel/intern/ipo.c @@ -1275,8 +1275,10 @@ static void icu_to_fcurves (ListBase *groups, ListBase *list, IpoCurve *icu, cha /* 'hide' flag is now used for keytype - only 'keyframes' existed before */ dst->hide= BEZT_KEYTYPE_KEYFRAME; - /* correct values for euler rotation curves - they were degrees/10 */ - // XXX for now, just make them into radians as RNA sets/reads directly in that form + /* correct values for euler rotation curves + * - they were degrees/10 + * - we need radians for RNA to do the right thing + */ if ( ((icu->blocktype == ID_OB) && ELEM3(icu->adrcode, OB_ROT_X, OB_ROT_Y, OB_ROT_Z)) || ((icu->blocktype == ID_PO) && ELEM3(icu->adrcode, AC_EUL_X, AC_EUL_Y, AC_EUL_Z)) ) { diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index c38cfe4ee27..55021ac5e97 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -117,6 +117,7 @@ #include "BKE_idprop.h" #include "BKE_particle.h" #include "BKE_gpencil.h" +#include "BKE_fcurve.h" #define MAX_IDPUP 60 /* was 24 */ @@ -698,6 +699,30 @@ void set_free_windowmanager_cb(void (*func)(bContext *C, wmWindowManager *) ) free_windowmanager_cb= func; } +void animdata_dtar_clear_cb(ID *id, AnimData *adt, void *userdata) +{ + ChannelDriver *driver; + FCurve *fcu; + + /* find the driver this belongs to and update it */ + for (fcu=adt->drivers.first; fcu; fcu=fcu->next) { + driver= fcu->driver; + + if (driver) { + DriverVar *dvar; + for (dvar= driver->variables.first; dvar; dvar= dvar->next) { + DRIVER_TARGETS_USED_LOOPER(dvar) + { + if (dtar->id == userdata) + dtar->id= NULL; + } + DRIVER_TARGETS_LOOPER_END + } + } + } +} + + /* used in headerbuttons.c image.c mesh.c screen.c sound.c and library.c */ void free_libblock(ListBase *lb, void *idv) { @@ -768,7 +793,7 @@ void free_libblock(ListBase *lb, void *idv) sound_free((bSound*)id); break; case ID_GR: - free_group((Group *)id); + free_group_objects((Group *)id); break; case ID_AR: free_armature((bArmature *)id); @@ -798,9 +823,13 @@ void free_libblock(ListBase *lb, void *idv) IDP_FreeProperty(id->properties); MEM_freeN(id->properties); } + BLI_remlink(lb, id); - MEM_freeN(id); + /* this ID may be a driver target! */ + BKE_animdata_main_cb(G.main, animdata_dtar_clear_cb, (void *)id); + + MEM_freeN(id); } void free_libblock_us(ListBase *lb, void *idv) /* test users */ @@ -1274,13 +1303,13 @@ void all_local(Library *lib, int untagged_only) id->newid= NULL; idn= id->next; /* id is possibly being inserted again */ - /* The check on the second line (LIB_APPEND_TAG) is done so its + /* The check on the second line (LIB_PRE_EXISTING) is done so its * possible to tag data you dont want to be made local, used for * appending data, so any libdata alredy linked wont become local * (very nasty to discover all your links are lost after appending) * */ if(id->flag & (LIB_EXTERN|LIB_INDIRECT|LIB_NEW) && - (untagged_only==0 || !(id->flag & LIB_APPEND_TAG))) + (untagged_only==0 || !(id->flag & LIB_PRE_EXISTING))) { if(lib==NULL || id->lib==lib) { id->flag &= ~(LIB_EXTERN|LIB_INDIRECT|LIB_NEW); diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c index 3567c061f04..038ce6c5d25 100644 --- a/source/blender/blenkernel/intern/material.c +++ b/source/blender/blenkernel/intern/material.c @@ -112,7 +112,7 @@ void init_material(Material *ma) ma->specr= ma->specg= ma->specb= 1.0; ma->mirr= ma->mirg= ma->mirb= 1.0; ma->spectra= 1.0; - ma->amb= 0.5; + ma->amb= 1.0; ma->alpha= 1.0; ma->spec= ma->hasize= 0.5; ma->har= 50; @@ -1240,4 +1240,110 @@ void ramp_blend(int type, float *r, float *g, float *b, float fac, float *col) } } +/* copy/paste buffer, if we had a propper py api that would be better */ +Material matcopybuf; +// MTex mtexcopybuf; +static short matcopied=0; +void clear_matcopybuf(void) +{ + memset(&matcopybuf, 0, sizeof(Material)); +} + +void free_matcopybuf(void) +{ +// extern MTex mtexcopybuf; /* buttons.c */ + int a; + + for(a=0; a<MAX_MTEX; a++) { + if(matcopybuf.mtex[a]) { + MEM_freeN(matcopybuf.mtex[a]); + matcopybuf.mtex[a]= NULL; + } + } + + if(matcopybuf.ramp_col) MEM_freeN(matcopybuf.ramp_col); + if(matcopybuf.ramp_spec) MEM_freeN(matcopybuf.ramp_spec); + + matcopybuf.ramp_col= NULL; + matcopybuf.ramp_spec= NULL; + + if(matcopybuf.nodetree) { + ntreeFreeTree(matcopybuf.nodetree); + MEM_freeN(matcopybuf.nodetree); + matcopybuf.nodetree= NULL; + } +// default_mtex(&mtexcopybuf); +} + +void copy_matcopybuf(Material *ma) +{ + int a; + MTex *mtex; + + if(matcopied) + free_matcopybuf(); + + memcpy(&matcopybuf, ma, sizeof(Material)); + if(matcopybuf.ramp_col) matcopybuf.ramp_col= MEM_dupallocN(matcopybuf.ramp_col); + if(matcopybuf.ramp_spec) matcopybuf.ramp_spec= MEM_dupallocN(matcopybuf.ramp_spec); + + for(a=0; a<MAX_MTEX; a++) { + mtex= matcopybuf.mtex[a]; + if(mtex) { + matcopybuf.mtex[a]= MEM_dupallocN(mtex); + } + } + matcopybuf.nodetree= ntreeCopyTree(ma->nodetree, 0); + matcopybuf.preview= NULL; + matcopybuf.gpumaterial.first= matcopybuf.gpumaterial.last= NULL; + matcopied= 1; +} + +void paste_matcopybuf(Material *ma) +{ + int a; + MTex *mtex; + ID id; + + if(matcopied==0) + return; + /* free current mat */ + if(ma->ramp_col) MEM_freeN(ma->ramp_col); + if(ma->ramp_spec) MEM_freeN(ma->ramp_spec); + for(a=0; a<MAX_MTEX; a++) { + mtex= ma->mtex[a]; + if(mtex && mtex->tex) mtex->tex->id.us--; + if(mtex) MEM_freeN(mtex); + } + + if(ma->nodetree) { + ntreeFreeTree(ma->nodetree); + MEM_freeN(ma->nodetree); + } + + GPU_materials_free(ma); + + id= (ma->id); + memcpy(ma, &matcopybuf, sizeof(Material)); + (ma->id)= id; + + if(matcopybuf.ramp_col) ma->ramp_col= MEM_dupallocN(matcopybuf.ramp_col); + if(matcopybuf.ramp_spec) ma->ramp_spec= MEM_dupallocN(matcopybuf.ramp_spec); + + for(a=0; a<MAX_MTEX; a++) { + mtex= ma->mtex[a]; + if(mtex) { + ma->mtex[a]= MEM_dupallocN(mtex); + if(mtex->tex) id_us_plus((ID *)mtex->tex); + } + } + + ma->nodetree= ntreeCopyTree(matcopybuf.nodetree, 0); + + /* + BIF_preview_changed(ID_MA); + BIF_undo_push("Paste material settings"); + scrarea_queue_winredraw(curarea); + */ +} diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index 36e00cc8f3c..50fbdffd23c 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -39,7 +39,6 @@ #include "stdarg.h" #include "math.h" #include "float.h" -#include "ctype.h" #include "BLI_math.h" #include "BLI_blenlib.h" @@ -102,6 +101,7 @@ #include "BKE_object.h" #include "BKE_particle.h" #include "BKE_pointcache.h" +#include "BKE_scene.h" #include "BKE_smoke.h" #include "BKE_softbody.h" #include "BKE_subsurf.h" @@ -144,12 +144,15 @@ static int is_last_displist(Object *ob) return 0; } -static DerivedMesh *get_original_dm(Scene *scene, Object *ob, float (*vertexCos)[3], int orco) +/* returns a derived mesh if dm == NULL, for deforming modifiers that need it */ +static DerivedMesh *get_dm(Scene *scene, Object *ob, EditMesh *em, DerivedMesh *dm, float (*vertexCos)[3], int orco) { - DerivedMesh *dm= NULL; + if(dm) + return dm; if(ob->type==OB_MESH) { - dm = CDDM_from_mesh((Mesh*)(ob->data), ob); + if(em) dm= CDDM_from_editmesh(em, ob->data); + else dm = CDDM_from_mesh((Mesh*)(ob->data), ob); if(vertexCos) { CDDM_apply_vert_coords(dm, vertexCos); @@ -185,6 +188,26 @@ static DerivedMesh *get_original_dm(Scene *scene, Object *ob, float (*vertexCos) return dm; } +/* returns a cdderivedmesh if dm == NULL or is another type of derivedmesh */ +static DerivedMesh *get_cddm(Scene *scene, Object *ob, EditMesh *em, DerivedMesh *dm, float (*vertexCos)[3]) +{ + if(dm && dm->type == DM_TYPE_CDDM) + return dm; + + if(!dm) { + dm= get_dm(scene, ob, em, dm, vertexCos, 0); + } + else { + dm= CDDM_copy(dm); + CDDM_apply_vert_coords(dm, vertexCos); + } + + if(dm) + CDDM_calc_normals(dm); + + return dm; +} + /***/ static int noneModifier_isDisabled(ModifierData *md, int userRenderParams) @@ -405,8 +428,9 @@ static void subsurfModifier_freeData(ModifierData *md) static int subsurfModifier_isDisabled(ModifierData *md, int useRenderParams) { SubsurfModifierData *smd = (SubsurfModifierData*) md; + int levels= (useRenderParams)? smd->renderLevels: smd->levels; - return (useRenderParams)? (smd->renderLevels == 0): (smd->levels == 0); + return get_render_subsurf_level(&md->scene->r, levels) == 0; } static DerivedMesh *subsurfModifier_applyModifier( @@ -843,23 +867,7 @@ static DerivedMesh *maskModifier_applyModifier(ModifierData *md, Object *ob, } else /* --- Using Nominated VertexGroup only --- */ { - int defgrp_index = -1; - - /* get index of vertex group */ - if (mmd->vgroup[0]) - { - bDeformGroup *def; - - /* find index by comparing names - SLOW... */ - for (i = 0, def = ob->defbase.first; def; def = def->next, i++) - { - if (!strcmp(def->name, mmd->vgroup)) - { - defgrp_index = i; - break; - } - } - } + int defgrp_index = defgroup_name_index(ob, mmd->vgroup); /* get dverts */ if (defgrp_index >= 0) @@ -1778,118 +1786,6 @@ static void mirrorModifier_updateDepgraph(ModifierData *md, DagForest *forest, S } } -/* finds the best possible flipped name. For renaming; check for unique names afterwards */ -/* if strip_number: removes number extensions */ -static void vertgroup_flip_name (char *name, int strip_number) -{ - int len; - char prefix[128]={""}; /* The part before the facing */ - char suffix[128]={""}; /* The part after the facing */ - char replace[128]={""}; /* The replacement string */ - char number[128]={""}; /* The number extension string */ - char *index=NULL; - - len= strlen(name); - if(len<3) return; // we don't do names like .R or .L - - /* We first check the case with a .### extension, let's find the last period */ - if(isdigit(name[len-1])) { - index= strrchr(name, '.'); // last occurrance - if (index && isdigit(index[1]) ) { // doesnt handle case bone.1abc2 correct..., whatever! - if(strip_number==0) - strcpy(number, index); - *index= 0; - len= strlen(name); - } - } - - strcpy (prefix, name); - -#define IS_SEPARATOR(a) ((a)=='.' || (a)==' ' || (a)=='-' || (a)=='_') - - /* first case; separator . - _ with extensions r R l L */ - if( IS_SEPARATOR(name[len-2]) ) { - switch(name[len-1]) { - case 'l': - prefix[len-1]= 0; - strcpy(replace, "r"); - break; - case 'r': - prefix[len-1]= 0; - strcpy(replace, "l"); - break; - case 'L': - prefix[len-1]= 0; - strcpy(replace, "R"); - break; - case 'R': - prefix[len-1]= 0; - strcpy(replace, "L"); - break; - } - } - /* case; beginning with r R l L , with separator after it */ - else if( IS_SEPARATOR(name[1]) ) { - switch(name[0]) { - case 'l': - strcpy(replace, "r"); - strcpy(suffix, name+1); - prefix[0]= 0; - break; - case 'r': - strcpy(replace, "l"); - strcpy(suffix, name+1); - prefix[0]= 0; - break; - case 'L': - strcpy(replace, "R"); - strcpy(suffix, name+1); - prefix[0]= 0; - break; - case 'R': - strcpy(replace, "L"); - strcpy(suffix, name+1); - prefix[0]= 0; - break; - } - } - else if(len > 5) { - /* hrms, why test for a separator? lets do the rule 'ultimate left or right' */ - index = BLI_strcasestr(prefix, "right"); - if (index==prefix || index==prefix+len-5) { - if(index[0]=='r') - strcpy (replace, "left"); - else { - if(index[1]=='I') - strcpy (replace, "LEFT"); - else - strcpy (replace, "Left"); - } - *index= 0; - strcpy (suffix, index+5); - } - else { - index = BLI_strcasestr(prefix, "left"); - if (index==prefix || index==prefix+len-4) { - if(index[0]=='l') - strcpy (replace, "right"); - else { - if(index[1]=='E') - strcpy (replace, "RIGHT"); - else - strcpy (replace, "Right"); - } - *index= 0; - strcpy (suffix, index+4); - } - } - } - -#undef IS_SEPARATOR - - sprintf (name, "%s%s%s%s", prefix, replace, suffix, number); -} - static DerivedMesh *doMirrorOnAxis(MirrorModifierData *mmd, Object *ob, DerivedMesh *dm, @@ -1903,9 +1799,8 @@ static DerivedMesh *doMirrorOnAxis(MirrorModifierData *mmd, int maxVerts = dm->getNumVerts(dm); int maxEdges = dm->getNumEdges(dm); int maxFaces = dm->getNumFaces(dm); - int vector_size=0, j, a, b; - bDeformGroup *def, *defb; - bDeformGroup **vector_def = NULL; + int *flip_map= NULL; + int do_vgroup_mirr= (mmd->flag & MOD_MIR_VGROUP); int (*indexMap)[2]; float mtx[4][4], imtx[4][4]; @@ -1916,18 +1811,10 @@ static DerivedMesh *doMirrorOnAxis(MirrorModifierData *mmd, result = CDDM_from_template(dm, maxVerts * 2, maxEdges * 2, maxFaces * 2); - if (mmd->flag & MOD_MIR_VGROUP) { - /* calculate the number of deformedGroups */ - for(vector_size = 0, def = ob->defbase.first; def; - def = def->next, vector_size++); - - /* load the deformedGroups for fast access */ - vector_def = - (bDeformGroup **)MEM_mallocN(sizeof(bDeformGroup*) * vector_size, - "group_index"); - for(a = 0, def = ob->defbase.first; def; def = def->next, a++) { - vector_def[a] = def; - } + if (do_vgroup_mirr) { + flip_map= defgroup_flip_map(ob, 0); + if(flip_map == NULL) + do_vgroup_mirr= 0; } if (mmd->mirror_ob) { @@ -1974,7 +1861,6 @@ static DerivedMesh *doMirrorOnAxis(MirrorModifierData *mmd, mv->flag |= ME_VERT_MERGED; } else { MVert *mv2 = CDDM_get_vert(result, numVerts); - MDeformVert *dvert = NULL; DM_copy_vert_data(dm, result, i, numVerts, 1); *mv2 = *mv; @@ -1985,36 +1871,13 @@ static DerivedMesh *doMirrorOnAxis(MirrorModifierData *mmd, } copy_v3_v3(mv2->co, co); - if (mmd->flag & MOD_MIR_VGROUP){ - dvert = DM_get_vert_data(result, numVerts, CD_MDEFORMVERT); - - if (dvert) - { - for(j = 0; j < dvert[0].totweight; ++j) - { - char tmpname[32]; - - if(dvert->dw[j].def_nr < 0 || - dvert->dw[j].def_nr >= vector_size) - continue; - - def = vector_def[dvert->dw[j].def_nr]; - strcpy(tmpname, def->name); - vertgroup_flip_name(tmpname,0); - - for(b = 0, defb = ob->defbase.first; defb; - defb = defb->next, b++) - { - if(!strcmp(defb->name, tmpname)) - { - dvert->dw[j].def_nr = b; - break; - } - } - } + if (do_vgroup_mirr) { + MDeformVert *dvert= DM_get_vert_data(result, numVerts, CD_MDEFORMVERT); + if(dvert) { + defvert_flip(dvert, flip_map); } } - + numVerts++; } } @@ -2099,7 +1962,7 @@ static DerivedMesh *doMirrorOnAxis(MirrorModifierData *mmd, } } - if (vector_def) MEM_freeN(vector_def); + if (flip_map) MEM_freeN(flip_map); MEM_freeN(indexMap); @@ -3434,17 +3297,12 @@ static DerivedMesh *bevelModifier_applyModifier( options = bmd->flags|bmd->val_flags|bmd->lim_flags|bmd->e_flags; - //~ if ((options & BME_BEVEL_VWEIGHT) && bmd->defgrp_name[0]) { - //~ for (i = 0, def = ob->defbase.first; def; def = def->next, i++) { - //~ if (!strcmp(def->name, bmd->defgrp_name)) { - //~ defgrp_index = i; - //~ break; - //~ } - //~ } - //~ if (defgrp_index < 0) { - //~ options &= ~BME_BEVEL_VWEIGHT; - //~ } - //~ } + /*if ((options & BME_BEVEL_VWEIGHT) && bmd->defgrp_name[0]) { + defgrp_index = defgroup_name_index(ob, bmd->defgrp_name); + if (defgrp_index < 0) { + options &= ~BME_BEVEL_VWEIGHT; + } + }*/ bm = BME_derivedmesh_to_bmesh(derivedData); BME_bevel(bm,bmd->value,bmd->res,options,defgrp_index,bmd->bevel_angle,NULL); @@ -3594,7 +3452,7 @@ static void get_texture_coords(DisplaceModifierData *dmd, Object *ob, /* UVs need special handling, since they come from faces */ if(texmapping == MOD_DISP_MAP_UV) { - if(dm->getFaceDataArray(dm, CD_MTFACE)) { + if(CustomData_has_layer(&dm->faceData, CD_MTFACE)) { MFace *mface = dm->getFaceArray(dm); MFace *mf; char *done = MEM_callocN(sizeof(*done) * numVerts, @@ -3676,8 +3534,8 @@ static void get_texture_value(Tex *texture, float *tex_co, TexResult *texres) * if the texture didn't give an RGB value, copy the intensity across */ if(result_type & TEX_RGB) - texres->tin = (0.35 * texres->tr + 0.45 * texres->tg - + 0.2 * texres->tb); + texres->tin = (0.35f * texres->tr + 0.45f * texres->tg + + 0.2f * texres->tb); else texres->tr = texres->tg = texres->tb = texres->tin; } @@ -3695,17 +3553,7 @@ static void displaceModifier_do( if(!dmd->texture) return; - defgrp_index = -1; - - if(dmd->defgrp_name[0]) { - bDeformGroup *def; - for(i = 0, def = ob->defbase.first; def; def = def->next, i++) { - if(!strcmp(def->name, dmd->defgrp_name)) { - defgrp_index = i; - break; - } - } - } + defgrp_index = defgroup_name_index(ob, dmd->defgrp_name); mvert = CDDM_get_verts(dm); if(defgrp_index >= 0) @@ -3770,37 +3618,26 @@ static void displaceModifier_deformVerts( ModifierData *md, Object *ob, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc) { - DerivedMesh *dm; - - if(derivedData) dm = CDDM_copy(derivedData); - else if(ob->type==OB_MESH) dm = CDDM_from_mesh(ob->data, ob); - else return; - - CDDM_apply_vert_coords(dm, vertexCos); - CDDM_calc_normals(dm); + DerivedMesh *dm= get_cddm(md->scene, ob, NULL, derivedData, vertexCos); displaceModifier_do((DisplaceModifierData *)md, ob, dm, vertexCos, numVerts); - dm->release(dm); + if(dm != derivedData) + dm->release(dm); } static void displaceModifier_deformVertsEM( ModifierData *md, Object *ob, EditMesh *editData, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts) { - DerivedMesh *dm; - - if(derivedData) dm = CDDM_copy(derivedData); - else dm = CDDM_from_editmesh(editData, ob->data); - - CDDM_apply_vert_coords(dm, vertexCos); - CDDM_calc_normals(dm); + DerivedMesh *dm= get_cddm(md->scene, ob, editData, derivedData, vertexCos); displaceModifier_do((DisplaceModifierData *)md, ob, dm, vertexCos, numVerts); - dm->release(dm); + if(dm != derivedData) + dm->release(dm); } /* UVProject */ @@ -3912,7 +3749,8 @@ static DerivedMesh *uvprojectModifier_do(UVProjectModifierData *umd, if(num_projectors == 0) return dm; /* make sure there are UV layers available */ - if(!dm->getFaceDataArray(dm, CD_MTFACE)) return dm; + + if(!CustomData_has_layer(&dm->faceData, CD_MTFACE)) return dm; /* make sure we're using an existing layer */ validate_layer_name(&dm->faceData, CD_MTFACE, umd->uvlayer_name, uvname); @@ -4328,21 +4166,10 @@ static void smoothModifier_do( fac = smd->fac; facm = 1 - fac; - medges = CDDM_get_edges(dm); + medges = dm->getEdgeArray(dm); numDMEdges = dm->getNumEdges(dm); - defgrp_index = -1; - - if (smd->defgrp_name[0]) { - bDeformGroup *def; - - for (i = 0, def = ob->defbase.first; def; def = def->next, i++) { - if (!strcmp(def->name, smd->defgrp_name)) { - defgrp_index = i; - break; - } - } - } + defgrp_index = defgroup_name_index(ob, smd->defgrp_name); if (defgrp_index >= 0) dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT); @@ -4447,36 +4274,26 @@ static void smoothModifier_deformVerts( ModifierData *md, Object *ob, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc) { - DerivedMesh *dm; - - if(derivedData) dm = CDDM_copy(derivedData); - else dm = CDDM_from_mesh(ob->data, ob); - - CDDM_apply_vert_coords(dm, vertexCos); - CDDM_calc_normals(dm); + DerivedMesh *dm= get_dm(md->scene, ob, NULL, derivedData, NULL, 0); smoothModifier_do((SmoothModifierData *)md, ob, dm, vertexCos, numVerts); - dm->release(dm); + if(dm != derivedData) + dm->release(dm); } static void smoothModifier_deformVertsEM( ModifierData *md, Object *ob, EditMesh *editData, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts) { - DerivedMesh *dm; - - if(derivedData) dm = CDDM_copy(derivedData); - else dm = CDDM_from_editmesh(editData, ob->data); - - CDDM_apply_vert_coords(dm, vertexCos); - CDDM_calc_normals(dm); + DerivedMesh *dm= get_dm(md->scene, ob, editData, derivedData, NULL, 0); smoothModifier_do((SmoothModifierData *)md, ob, dm, vertexCos, numVerts); - dm->release(dm); + if(dm != derivedData) + dm->release(dm); } /* Cast */ @@ -4565,7 +4382,7 @@ static void castModifier_sphere_do( Object *ctrl_ob = NULL; - int i, defgrp_index = -1; + int i, defgrp_index; int has_radius = 0; short flag, type; float fac, facm, len = 0.0f; @@ -4607,16 +4424,7 @@ static void castModifier_sphere_do( /* 3) if we were given a vertex group name, * only those vertices should be affected */ - if (cmd->defgrp_name[0]) { - bDeformGroup *def; - - for (i = 0, def = ob->defbase.first; def; def = def->next, i++) { - if (!strcmp(def->name, cmd->defgrp_name)) { - defgrp_index = i; - break; - } - } - } + defgrp_index = defgroup_name_index(ob, cmd->defgrp_name); if ((ob->type == OB_MESH) && dm && defgrp_index >= 0) dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT); @@ -4750,7 +4558,7 @@ static void castModifier_cuboid_do( MDeformVert *dvert = NULL; Object *ctrl_ob = NULL; - int i, defgrp_index = -1; + int i, defgrp_index; int has_radius = 0; short flag; float fac, facm; @@ -4774,16 +4582,7 @@ static void castModifier_cuboid_do( /* 3) if we were given a vertex group name, * only those vertices should be affected */ - if (cmd->defgrp_name[0]) { - bDeformGroup *def; - - for (i = 0, def = ob->defbase.first; def; def = def->next, i++) { - if (!strcmp(def->name, cmd->defgrp_name)) { - defgrp_index = i; - break; - } - } - } + defgrp_index = defgroup_name_index(ob, cmd->defgrp_name); if ((ob->type == OB_MESH) && dm && defgrp_index >= 0) dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT); @@ -5027,38 +4826,34 @@ static void castModifier_deformVerts( ModifierData *md, Object *ob, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc) { - DerivedMesh *dm = derivedData; + DerivedMesh *dm = get_dm(md->scene, ob, NULL, derivedData, NULL, 0); CastModifierData *cmd = (CastModifierData *)md; - if (!dm && ob->type == OB_MESH) - dm = CDDM_from_mesh(ob->data, ob); - if (cmd->type == MOD_CAST_TYPE_CUBOID) { castModifier_cuboid_do(cmd, ob, dm, vertexCos, numVerts); } else { /* MOD_CAST_TYPE_SPHERE or MOD_CAST_TYPE_CYLINDER */ castModifier_sphere_do(cmd, ob, dm, vertexCos, numVerts); } - if (!derivedData && dm) dm->release(dm); + if(dm != derivedData) + dm->release(dm); } static void castModifier_deformVertsEM( ModifierData *md, Object *ob, EditMesh *editData, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts) { - DerivedMesh *dm = derivedData; + DerivedMesh *dm = get_dm(md->scene, ob, editData, derivedData, NULL, 0); CastModifierData *cmd = (CastModifierData *)md; - if (!dm && ob->type == OB_MESH) - dm = CDDM_from_editmesh(editData, ob->data); - if (cmd->type == MOD_CAST_TYPE_CUBOID) { castModifier_cuboid_do(cmd, ob, dm, vertexCos, numVerts); } else { /* MOD_CAST_TYPE_SPHERE or MOD_CAST_TYPE_CYLINDER */ castModifier_sphere_do(cmd, ob, dm, vertexCos, numVerts); } - if (!derivedData && dm) dm->release(dm); + if(dm != derivedData) + dm->release(dm); } /* Wave */ @@ -5187,7 +4982,7 @@ static void wavemod_get_texture_coords(WaveModifierData *wmd, Object *ob, /* UVs need special handling, since they come from faces */ if(texmapping == MOD_WAV_MAP_UV) { - if(dm->getFaceDataArray(dm, CD_MTFACE)) { + if(CustomData_has_layer(&dm->faceData, CD_MTFACE)) { MFace *mface = dm->getFaceArray(dm); MFace *mf; char *done = MEM_callocN(sizeof(*done) * numVerts, @@ -5285,18 +5080,7 @@ static void waveModifier_do(WaveModifierData *md, } /* get the index of the deform group */ - defgrp_index = -1; - - if(wmd->defgrp_name[0]) { - int i; - bDeformGroup *def; - for(i = 0, def = ob->defbase.first; def; def = def->next, i++) { - if(!strcmp(def->name, wmd->defgrp_name)) { - defgrp_index = i; - break; - } - } - } + defgrp_index = defgroup_name_index(ob, wmd->defgrp_name); if(defgrp_index >= 0){ dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT); @@ -5429,45 +5213,36 @@ static void waveModifier_deformVerts( ModifierData *md, Object *ob, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc) { - DerivedMesh *dm; + DerivedMesh *dm= derivedData; WaveModifierData *wmd = (WaveModifierData *)md; - if(!wmd->texture && !wmd->defgrp_name[0] && !(wmd->flag & MOD_WAVE_NORM)) - dm = derivedData; - else if(derivedData) dm = derivedData; - else if(ob->type == OB_MESH) dm = CDDM_from_mesh(ob->data, ob); - else return; - - if(wmd->flag & MOD_WAVE_NORM) { - CDDM_apply_vert_coords(dm, vertexCos); - CDDM_calc_normals(dm); - } + if(wmd->flag & MOD_WAVE_NORM) + dm= get_cddm(md->scene, ob, NULL, dm, vertexCos); + else if(wmd->texture || wmd->defgrp_name[0]) + dm= get_dm(md->scene, ob, NULL, dm, NULL, 0); waveModifier_do(wmd, md->scene, ob, dm, vertexCos, numVerts); - if(dm != derivedData) dm->release(dm); + if(dm != derivedData) + dm->release(dm); } static void waveModifier_deformVertsEM( ModifierData *md, Object *ob, EditMesh *editData, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts) { - DerivedMesh *dm; + DerivedMesh *dm= derivedData; WaveModifierData *wmd = (WaveModifierData *)md; - if(!wmd->texture && !wmd->defgrp_name[0] && !(wmd->flag & MOD_WAVE_NORM)) - dm = derivedData; - else if(derivedData) dm = CDDM_copy(derivedData); - else dm = CDDM_from_editmesh(editData, ob->data); - - if(wmd->flag & MOD_WAVE_NORM) { - CDDM_apply_vert_coords(dm, vertexCos); - CDDM_calc_normals(dm); - } + if(wmd->flag & MOD_WAVE_NORM) + dm= get_cddm(md->scene, ob, editData, dm, vertexCos); + else if(wmd->texture || wmd->defgrp_name[0]) + dm= get_dm(md->scene, ob, editData, dm, NULL, 0); waveModifier_do(wmd, md->scene, ob, dm, vertexCos, numVerts); - if(dm != derivedData) dm->release(dm); + if(dm != derivedData) + dm->release(dm); } /* Armature */ @@ -5733,50 +5508,46 @@ static void hookModifier_deformVerts( } } else if(hmd->name[0]) { /* vertex group hook */ - bDeformGroup *curdef; Mesh *me = ob->data; - int index = 0; - int use_dverts; + int use_dverts = 0; int maxVerts = 0; - - /* find the group (weak loop-in-loop) */ - for(curdef = ob->defbase.first; curdef; curdef = curdef->next, index++) - if(!strcmp(curdef->name, hmd->name)) break; + int defgrp_index = defgroup_name_index(ob, hmd->name); - if(dm) + if(dm) { if(dm->getVertData(dm, 0, CD_MDEFORMVERT)) { - use_dverts = 1; - maxVerts = dm->getNumVerts(dm); - } else use_dverts = 0; - else if(me->dvert) { + maxVerts = dm->getNumVerts(dm); use_dverts = 1; - maxVerts = me->totvert; - } else use_dverts = 0; - - if(curdef && use_dverts) { - MDeformVert *dvert = me->dvert; - int i, j; - - for(i = 0; i < maxVerts; i++, dvert++) { - if(dm) dvert = dm->getVertData(dm, i, CD_MDEFORMVERT); - for(j = 0; j < dvert->totweight; j++) { - if(dvert->dw[j].def_nr == index) { - float fac = hmd->force*dvert->dw[j].weight; - float *co = vertexCos[i]; - - if(hmd->falloff != 0.0) { - float len = len_v3v3(co, hmd->cent); - if(len > hmd->falloff) fac = 0.0; - else if(len > 0.0) - fac *= sqrt(1.0 - len / hmd->falloff); - } - - mul_v3_m4v3(vec, mat, co); - interp_v3_v3v3(co, co, vec, fac); + } + } + else if(me->dvert) { + maxVerts = me->totvert; + use_dverts = 1; + } + + if(defgrp_index >= 0 && use_dverts) { + MDeformVert *dvert = me->dvert; + int i, j; + + for(i = 0; i < maxVerts; i++, dvert++) { + if(dm) dvert = dm->getVertData(dm, i, CD_MDEFORMVERT); + for(j = 0; j < dvert->totweight; j++) { + if(dvert->dw[j].def_nr == defgrp_index) { + float fac = hmd->force*dvert->dw[j].weight; + float *co = vertexCos[i]; + + if(hmd->falloff != 0.0) { + float len = len_v3v3(co, hmd->cent); + if(len > hmd->falloff) fac = 0.0; + else if(len > 0.0) + fac *= sqrt(1.0 - len / hmd->falloff); } + + mul_v3_m4v3(vec, mat, co); + interp_v3_v3v3(co, co, vec, fac); } } } + } } } @@ -5928,7 +5699,7 @@ 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; + smd->flag = MOD_SOLIDIFY_RIM; } static void solidifyModifier_copyData(ModifierData *md, ModifierData *target) @@ -5939,7 +5710,7 @@ static void solidifyModifier_copyData(ModifierData *md, ModifierData *target) tsmd->crease_inner = smd->crease_inner; tsmd->crease_outer = smd->crease_outer; tsmd->crease_rim = smd->crease_rim; - strcpy(tsmd->vgroup, smd->vgroup); + strcpy(tsmd->defgrp_name, smd->defgrp_name); } static DerivedMesh *solidifyModifier_applyModifier(ModifierData *md, @@ -6289,18 +6060,12 @@ static void smokeModifier_deformVerts( float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc) { SmokeModifierData *smd = (SmokeModifierData*) md; - DerivedMesh *dm = NULL; - - if(derivedData) dm = derivedData; - else if(ob->type == OB_MESH) dm = CDDM_from_mesh(ob->data, ob); - else return; - - CDDM_apply_vert_coords(dm, vertexCos); - CDDM_calc_normals(dm); + DerivedMesh *dm = dm= get_cddm(md->scene, ob, NULL, derivedData, vertexCos); smokeModifier_do(smd, md->scene, ob, dm, useRenderParams, isFinalCalc); - if(dm != derivedData) dm->release(dm); + if(dm != derivedData) + dm->release(dm); } static int smokeModifier_dependsOnTime(ModifierData *md) @@ -6701,7 +6466,7 @@ static void surfaceModifier_deformVerts( /* if possible use/create DerivedMesh */ if(derivedData) surmd->dm = CDDM_copy(derivedData); - else surmd->dm = get_original_dm(md->scene, ob, NULL, 0); + else surmd->dm = get_dm(md->scene, ob, NULL, NULL, NULL, 0); if(!ob->pd) { @@ -6812,7 +6577,6 @@ static DerivedMesh *booleanModifier_applyModifier( ModifierData *md, Object *ob, DerivedMesh *derivedData, int useRenderParams, int isFinalCalc) { - // XXX doesn't handle derived data BooleanModifierData *bmd = (BooleanModifierData*) md; DerivedMesh *dm = bmd->object->derivedFinal; @@ -6822,20 +6586,14 @@ static DerivedMesh *booleanModifier_applyModifier( DerivedMesh *result = NewBooleanDerivedMesh(dm, bmd->object, derivedData, ob, 1 + bmd->operation); - if(dm) - dm->release(dm); - /* if new mesh returned, return it; otherwise there was * an error, so delete the modifier object */ if(result) return result; else - bmd->object = NULL; + modifier_setError(md, "Can't execute boolean operation."); } - if(dm) - dm->release(dm); - return derivedData; } @@ -6944,7 +6702,7 @@ static void particleSystemModifier_deformVerts( return; if(dm==0) { - dm= get_original_dm(md->scene, ob, vertexCos, 1); + dm= get_dm(md->scene, ob, NULL, NULL, vertexCos, 1); if(!dm) return; @@ -7358,7 +7116,7 @@ static void explodeModifier_createFacepa(ExplodeModifierData *emd, for(i=0; i<totvert; i++){ val = BLI_frand(); val = (1.0f-emd->protect)*val + emd->protect*0.5f; - if(val < deformvert_get_weight(dvert+i,emd->vgroup-1)) + if(val < defvert_find_weight(dvert+i,emd->vgroup-1)) vertpa[i] = -1; } } @@ -7886,7 +7644,7 @@ static DerivedMesh * explodeModifier_explodeMesh(ExplodeModifierData *emd, DerivedMesh *to_explode) { DerivedMesh *explode, *dm=to_explode; - MFace *mf=0; + MFace *mf=0, *mface; ParticleSettings *part=psmd->psys->part; ParticleSimulationData sim = {scene, ob, psmd->psys, psmd}; ParticleData *pa=NULL, *pars=psmd->psys->particles; @@ -7902,6 +7660,7 @@ static DerivedMesh * explodeModifier_explodeMesh(ExplodeModifierData *emd, totface= dm->getNumFaces(dm); totvert= dm->getNumVerts(dm); + mface= dm->getFaceArray(dm); totpart= psmd->psys->totpart; timestep= psys_get_timestep(&sim); @@ -7922,7 +7681,7 @@ static DerivedMesh * explodeModifier_explodeMesh(ExplodeModifierData *emd, else mindex = totvert+facepa[i]; - mf=CDDM_get_face(dm,i); + mf= &mface[i]; /* set face vertices to exist in particle group */ BLI_edgehash_insert(vertpahash, mf->v1, mindex, NULL); @@ -8030,8 +7789,6 @@ static DerivedMesh * explodeModifier_explodeMesh(ExplodeModifierData *emd, test_index_face(mf, &explode->faceData, i, (orig_v4 ? 4 : 3)); } - MEM_printmemlist_stats(); - /* cleanup */ BLI_edgehash_free(vertpahash, NULL); @@ -8345,7 +8102,7 @@ static void meshdeformModifier_do( /* if we don't have one computed, use derivedmesh from data * without any modifiers */ if(!cagedm) { - cagedm= get_original_dm(md->scene, mmd->object, NULL, 0); + cagedm= get_dm(md->scene, mmd->object, NULL, NULL, NULL, 0); if(cagedm) cagedm->needsFree= 1; } @@ -8400,21 +8157,10 @@ static void meshdeformModifier_do( VECCOPY(dco[a], co) } - defgrp_index = -1; - - if(mmd->defgrp_name[0]) { - bDeformGroup *def; - - for(a=0, def=ob->defbase.first; def; def=def->next, a++) { - if(!strcmp(def->name, mmd->defgrp_name)) { - defgrp_index= a; - break; - } - } + defgrp_index = defgroup_name_index(ob, mmd->defgrp_name); - if (defgrp_index >= 0) - dvert= dm->getVertDataArray(dm, CD_MDEFORMVERT); - } + if (defgrp_index >= 0) + dvert= dm->getVertDataArray(dm, CD_MDEFORMVERT); /* do deformation */ fac= 1.0f; @@ -8481,14 +8227,10 @@ static void meshdeformModifier_deformVerts( ModifierData *md, Object *ob, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc) { - DerivedMesh *dm; - - if (!derivedData) { - dm= get_original_dm(md->scene, ob, NULL, 0); - if (dm == NULL) return; - } - else dm= derivedData; + DerivedMesh *dm= get_dm(md->scene, ob, NULL, derivedData, NULL, 0);; + if(!dm) + return; modifier_vgroup_cache(md, vertexCos); /* if next modifier needs original vertices */ @@ -8625,52 +8367,31 @@ static void shrinkwrapModifier_foreachObjectLink(ModifierData *md, Object *ob, O static void shrinkwrapModifier_deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc) { - DerivedMesh *dm = NULL; + DerivedMesh *dm = derivedData; CustomDataMask dataMask = shrinkwrapModifier_requiredDataMask(ob, md); - /* We implement requiredDataMask but thats not really usefull since mesh_calc_modifiers pass a NULL derivedData or without the modified vertexs applied */ + /* ensure we get a CDDM with applied vertex coords */ if(dataMask) - { - if(derivedData) dm = CDDM_copy(derivedData); - else if(ob->type==OB_MESH) dm = CDDM_from_mesh(ob->data, ob); - else if(ob->type==OB_LATTICE) dm = NULL; - else return; - - if(dm != NULL && (dataMask & (1<<CD_MVERT))) - { - CDDM_apply_vert_coords(dm, vertexCos); - CDDM_calc_normals(dm); - } - } + dm= get_cddm(md->scene, ob, NULL, dm, vertexCos); shrinkwrapModifier_deform((ShrinkwrapModifierData*)md, md->scene, ob, dm, vertexCos, numVerts); - if(dm) + if(dm != derivedData) dm->release(dm); } static void shrinkwrapModifier_deformVertsEM(ModifierData *md, Object *ob, EditMesh *editData, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts) { - DerivedMesh *dm = NULL; + DerivedMesh *dm = derivedData; CustomDataMask dataMask = shrinkwrapModifier_requiredDataMask(ob, md); + /* ensure we get a CDDM with applied vertex coords */ if(dataMask) - { - if(derivedData) dm = CDDM_copy(derivedData); - else if(ob->type==OB_MESH) dm = CDDM_from_editmesh(editData, ob->data); - else if(ob->type==OB_LATTICE) dm = NULL; - else return; - - if(dm != NULL && (dataMask & (1<<CD_MVERT))) - { - CDDM_apply_vert_coords(dm, vertexCos); - CDDM_calc_normals(dm); - } - } + dm= get_cddm(md->scene, ob, editData, dm, vertexCos); shrinkwrapModifier_deform((ShrinkwrapModifierData*)md, md->scene, ob, dm, vertexCos, numVerts); - if(dm) + if(dm != derivedData) dm->release(dm); } @@ -8739,54 +8460,33 @@ static void simpledeformModifier_updateDepgraph(ModifierData *md, DagForest *for static void simpledeformModifier_deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc) { - DerivedMesh *dm = NULL; + DerivedMesh *dm = derivedData; CustomDataMask dataMask = simpledeformModifier_requiredDataMask(ob, md); - /* We implement requiredDataMask but thats not really usefull since mesh_calc_modifiers pass a NULL derivedData or without the modified vertexs applied */ + /* we implement requiredDataMask but thats not really usefull since + mesh_calc_modifiers pass a NULL derivedData */ if(dataMask) - { - if(derivedData) dm = CDDM_copy(derivedData); - else if(ob->type==OB_MESH) dm = CDDM_from_mesh(ob->data, ob); - else if(ob->type==OB_LATTICE) dm = NULL; - else return; - - if(dm != NULL && (dataMask & CD_MVERT)) - { - CDDM_apply_vert_coords(dm, vertexCos); - CDDM_calc_normals(dm); - } - } + dm= get_dm(md->scene, ob, NULL, dm, NULL, 0); SimpleDeformModifier_do((SimpleDeformModifierData*)md, ob, dm, vertexCos, numVerts); - if(dm) + if(dm != derivedData) dm->release(dm); - } static void simpledeformModifier_deformVertsEM(ModifierData *md, Object *ob, EditMesh *editData, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts) { - DerivedMesh *dm = NULL; + DerivedMesh *dm = derivedData; CustomDataMask dataMask = simpledeformModifier_requiredDataMask(ob, md); - /* We implement requiredDataMask but thats not really usefull since mesh_calc_modifiers pass a NULL derivedData or without the modified vertexs applied */ + /* we implement requiredDataMask but thats not really usefull since + mesh_calc_modifiers pass a NULL derivedData */ if(dataMask) - { - if(derivedData) dm = CDDM_copy(derivedData); - else if(ob->type==OB_MESH) dm = CDDM_from_editmesh(editData, ob->data); - else if(ob->type==OB_LATTICE) dm = NULL; - else return; - - if(dm != NULL && (dataMask & CD_MVERT)) - { - CDDM_apply_vert_coords(dm, vertexCos); - CDDM_calc_normals(dm); - } - } + dm= get_dm(md->scene, ob, editData, dm, NULL, 0); SimpleDeformModifier_do((SimpleDeformModifierData*)md, ob, dm, vertexCos, numVerts); - if(dm) + if(dm != derivedData) dm->release(dm); } @@ -9390,10 +9090,12 @@ void modifier_copyData(ModifierData *md, ModifierData *target) mti->copyData(md, target); } -int modifier_couldBeCage(ModifierData *md) +int modifier_couldBeCage(Scene *scene, ModifierData *md) { ModifierTypeInfo *mti = modifierType_getInfo(md->type); + md->scene= scene; + return ( (md->mode & eModifierMode_Realtime) && (md->mode & eModifierMode_Editmode) && (!mti->isDisabled || !mti->isDisabled(md, 0)) && @@ -9428,7 +9130,7 @@ void modifier_setError(ModifierData *md, char *format, ...) * also used in transform_conversion.c, to detect CrazySpace [tm] (2nd arg * then is NULL) */ -int modifiers_getCageIndex(Object *ob, int *lastPossibleCageIndex_r, int virtual_) +int modifiers_getCageIndex(Scene *scene, Object *ob, int *lastPossibleCageIndex_r, int virtual_) { ModifierData *md = (virtual_)? modifiers_getVirtualModifierList(ob): ob->modifiers.first; int i, cageIndex = -1; @@ -9437,6 +9139,8 @@ int modifiers_getCageIndex(Object *ob, int *lastPossibleCageIndex_r, int virtual for (i=0; md; i++,md=md->next) { ModifierTypeInfo *mti = modifierType_getInfo(md->type); + md->scene= scene; + if (!(md->mode & eModifierMode_Realtime)) continue; if (!(md->mode & eModifierMode_Editmode)) continue; if (mti->isDisabled && mti->isDisabled(md, 0)) continue; @@ -9476,10 +9180,12 @@ int modifiers_isParticleEnabled(Object *ob) return (md && md->mode & (eModifierMode_Realtime | eModifierMode_Render)); } -int modifier_isEnabled(ModifierData *md, int required_mode) +int modifier_isEnabled(Scene *scene, ModifierData *md, int required_mode) { ModifierTypeInfo *mti = modifierType_getInfo(md->type); + md->scene= scene; + if((md->mode & required_mode) != required_mode) return 0; if(mti->isDisabled && mti->isDisabled(md, required_mode == eModifierMode_Render)) return 0; if(md->mode & eModifierMode_DisableTemporary) return 0; @@ -9489,7 +9195,7 @@ int modifier_isEnabled(ModifierData *md, int required_mode) return 1; } -LinkNode *modifiers_calcDataMasks(Object *ob, ModifierData *md, CustomDataMask dataMask, int required_mode) +LinkNode *modifiers_calcDataMasks(Scene *scene, Object *ob, ModifierData *md, CustomDataMask dataMask, int required_mode) { LinkNode *dataMasks = NULL; LinkNode *curr, *prev; @@ -9499,7 +9205,7 @@ LinkNode *modifiers_calcDataMasks(Object *ob, ModifierData *md, CustomDataMask d ModifierTypeInfo *mti = modifierType_getInfo(md->type); CustomDataMask mask = 0; - if(modifier_isEnabled(md, required_mode)) + if(modifier_isEnabled(scene, md, required_mode)) if(mti->requiredDataMask) mask = mti->requiredDataMask(ob, md); diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index f5414567da8..6ed4f7a7703 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -50,6 +50,7 @@ #include "BKE_modifier.h" #include "BKE_multires.h" #include "BKE_object.h" +#include "BKE_scene.h" #include "BKE_subsurf.h" #include "BKE_utildefines.h" @@ -84,11 +85,11 @@ MultiresModifierData *find_multires_modifier(Object *ob) static int multires_get_level(Object *ob, MultiresModifierData *mmd, int render) { if(render) - return mmd->renderlvl; + return (mmd->modifier.scene)? get_render_subsurf_level(&mmd->modifier.scene->r, mmd->renderlvl): mmd->renderlvl; else if(ob->mode == OB_MODE_SCULPT) return mmd->sculptlvl; else - return mmd->lvl; + return (mmd->modifier.scene)? get_render_subsurf_level(&mmd->modifier.scene->r, mmd->lvl): mmd->lvl; } static void multires_set_tot_level(Object *ob, MultiresModifierData *mmd, int lvl) diff --git a/source/blender/blenkernel/intern/nla.c b/source/blender/blenkernel/intern/nla.c index 3979586fb19..2af9159f70f 100644 --- a/source/blender/blenkernel/intern/nla.c +++ b/source/blender/blenkernel/intern/nla.c @@ -369,14 +369,7 @@ static float nlastrip_get_frame_actionclip (NlaStrip *strip, float cframe, short return strip->end - scale*(cframe - strip->actstart); } else if (mode == NLATIME_CONVERT_UNMAP) { - int repeatsNum = (int)((cframe - strip->start) / (actlength * scale)); - - /* this method doesn't clip the values to lie within the action range only - * - the '(repeatsNum * actlength * scale)' compensates for the fmod(...) - * - the fmod(...) works in the same way as for eval - */ - return strip->actend - (repeatsNum * actlength * scale) - - (fmod(cframe - strip->start, actlength*scale) / scale); + return strip->actend - (strip->end - cframe) / scale; } else /* if (mode == NLATIME_CONVERT_EVAL) */{ if (IS_EQ(cframe, strip->end) && IS_EQ(strip->repeat, ((int)strip->repeat))) { @@ -399,14 +392,7 @@ static float nlastrip_get_frame_actionclip (NlaStrip *strip, float cframe, short return strip->start + scale*(cframe - strip->actstart); } else if (mode == NLATIME_CONVERT_UNMAP) { - int repeatsNum = (int)((cframe - strip->start) / (actlength * scale)); - - /* this method doesn't clip the values to lie within the action range only - * - the '(repeatsNum * actlength * scale)' compensates for the fmod(...) - * - the fmod(...) works in the same way as for eval - */ - return strip->actstart + (repeatsNum * actlength * scale) - + (fmod(cframe - strip->start, actlength*scale) / scale); + return strip->actstart + (cframe - strip->start) / scale; } else /* if (mode == NLATIME_CONVERT_EVAL) */{ if (IS_EQ(cframe, strip->end) && IS_EQ(strip->repeat, ((int)strip->repeat))) { @@ -1049,6 +1035,31 @@ short BKE_nlastrip_within_bounds (NlaStrip *strip, float min, float max) return 1; } +/* Recalculate the start and end frames for the current strip, after changing + * the extents of the action or the mapping (repeats or scale factor) info + */ +void BKE_nlastrip_recalculate_bounds (NlaStrip *strip) +{ + float actlen, mapping; + + /* sanity checks + * - must have a strip + * - can only be done for action clips + */ + if ((strip == NULL) || (strip->type != NLASTRIP_TYPE_CLIP)) + return; + + /* calculate new length factors */ + actlen= strip->actend - strip->actstart; + if (IS_EQ(actlen, 0.0f)) actlen= 1.0f; + + mapping= strip->scale * strip->repeat; + + /* adjust endpoint of strip in response to this */ + if (IS_EQ(mapping, 0.0f) == 0) + strip->end = (actlen * mapping) + strip->start; +} + /* Is the given NLA-strip the first one to occur for the given AnimData block */ // TODO: make this an api method if necesary, but need to add prefix first static short nlastrip_is_first (AnimData *adt, NlaStrip *strip) diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index b02225bd429..ec3cf453c4b 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -35,6 +35,7 @@ #include <stddef.h> #include <string.h> +#include "DNA_anim_types.h" #include "DNA_ID.h" #include "DNA_image_types.h" #include "DNA_node_types.h" @@ -43,8 +44,11 @@ #include "DNA_text_types.h" #include "DNA_scene_types.h" +#include "RNA_access.h" + #include "BKE_blender.h" #include "BKE_colortools.h" +#include "BKE_fcurve.h" #include "BKE_global.h" #include "BKE_image.h" #include "BKE_library.h" @@ -531,20 +535,6 @@ bNode *nodeMakeGroupFromSelected(bNodeTree *ntree) node->locx-= 0.5f*(min[0]+max[0]); node->locy-= 0.5f*(min[1]+max[1]); - /* set selin and selout of the nodetree */ - for(sock= node->inputs.first; sock; sock= sock->next) { - if(sock->flag & SOCK_SEL) { - ngroup->selin= sock; - break; - } - } - for(sock= node->outputs.first; sock; sock= sock->next) { - if(sock->flag & SOCK_SEL) { - ngroup->selout= sock; - break; - } - } - /* set socket own_index to zero since it can still have a value * from being in a group before, otherwise it doesn't get a unique * index in group_verify_own_indices */ @@ -1134,28 +1124,6 @@ bNodeTree *ntreeCopyTree(bNodeTree *ntree, int internal_select) node->flag &= ~(NODE_SELECT|NODE_ACTIVE); nnode->flag |= NODE_SELECT; } - - /* deselect original sockets */ - for(sock= node->inputs.first; sock; sock= sock->next) { - if(sock->flag & SOCK_SEL) sock->flag&= ~SOCK_SEL; - } - for(sock= node->outputs.first; sock; sock= sock->next) { - if(sock->flag & SOCK_SEL) sock->flag&= ~SOCK_SEL; - } - - /* set tree selin and selout to new sockets */ - for(sock= nnode->inputs.first; sock; sock= sock->next) { - if(sock->flag & SOCK_SEL) { - ntree->selin= sock; - break; - } - } - for(sock= nnode->outputs.first; sock; sock= sock->next) { - if(sock->flag & SOCK_SEL) { - ntree->selout= sock; - break; - } - } } if(node==last) break; } @@ -1983,7 +1951,7 @@ static void composit_begin_exec(bNodeTree *ntree, int is_group) } } /* cannot initialize them while using in threads */ - if(ELEM3(node->type, CMP_NODE_TIME, CMP_NODE_CURVE_VEC, CMP_NODE_CURVE_RGB)) { + if(ELEM4(node->type, CMP_NODE_TIME, CMP_NODE_CURVE_VEC, CMP_NODE_CURVE_RGB, CMP_NODE_HUECORRECT)) { curvemapping_initialize(node->storage); if(node->type==CMP_NODE_CURVE_RGB) curvemapping_premultiply(node->storage, 0); @@ -2901,6 +2869,54 @@ void ntreeCompositTagRender(Scene *curscene) } } +static int node_animation_properties(bNodeTree *ntree, bNode *node) +{ + bNodeSocket *sock; + ListBase *lb; + Link *link; + PointerRNA ptr; + PropertyRNA *prop; + + /* check to see if any of the node's properties have fcurves */ + RNA_pointer_create((ID *)ntree, &RNA_Node, node, &ptr); + lb = RNA_struct_defined_properties(ptr.type); + + for (link=lb->first; link; link=link->next) { + int driven, len=1, index; + prop = (PropertyRNA *)link; + + if (RNA_property_array_check(&ptr, prop)) + len = RNA_property_array_length(&ptr, prop); + + for (index=0; index<len; index++) { + if (rna_get_fcurve(&ptr, prop, index, NULL, &driven)) { + NodeTagChanged(ntree, node); + return 1; + } + } + } + + /* now check node sockets */ + for (sock = node->inputs.first; sock; sock=sock->next) { + int driven, len=1, index; + + RNA_pointer_create((ID *)ntree, &RNA_NodeSocket, sock, &ptr); + prop = RNA_struct_find_property(&ptr, "default_value"); + + if (RNA_property_array_check(&ptr, prop)) + len = RNA_property_array_length(&ptr, prop); + + for (index=0; index<len; index++) { + if (rna_get_fcurve(&ptr, prop, index, NULL, &driven)) { + NodeTagChanged(ntree, node); + return 1; + } + } + } + + return 0; +} + /* tags nodes that have animation capabilities */ int ntreeCompositTagAnimated(bNodeTree *ntree) { @@ -2910,6 +2926,10 @@ int ntreeCompositTagAnimated(bNodeTree *ntree) if(ntree==NULL) return 0; for(node= ntree->nodes.first; node; node= node->next) { + + tagged = node_animation_properties(ntree, node); + + /* otherwise always tag these node types */ if(node->type==CMP_NODE_IMAGE) { Image *ima= (Image *)node->id; if(ima && ELEM(ima->source, IMA_SRC_MOVIE, IMA_SRC_SEQUENCE)) { @@ -3019,6 +3039,8 @@ static void registerCompositNodes(ListBase *ntypelist) nodeRegisterType(ntypelist, &cmp_node_invert); nodeRegisterType(ntypelist, &cmp_node_alphaover); nodeRegisterType(ntypelist, &cmp_node_zcombine); + nodeRegisterType(ntypelist, &cmp_node_colorbalance); + nodeRegisterType(ntypelist, &cmp_node_huecorrect); nodeRegisterType(ntypelist, &cmp_node_normal); nodeRegisterType(ntypelist, &cmp_node_curve_vec); diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 762ad2432b0..0ea2925705e 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -1286,7 +1286,7 @@ Object *copy_object(Object *ob) if(ob->type==OB_ARMATURE) armature_rebuild_pose(obn, obn->data); } - copy_defgroups(&obn->defbase, &ob->defbase); + defgroup_copy_list(&obn->defbase, &ob->defbase); copy_constraints(&obn->constraints, &ob->constraints); obn->mode = 0; @@ -1453,6 +1453,38 @@ static void armature_set_id_extern(Object *ob) } +void object_copy_proxy_drivers(Object *ob, Object *target) +{ + if ((target->adt) && (target->adt->drivers.first)) { + FCurve *fcu; + + /* add new animdata block */ + if(!ob->adt) + ob->adt= BKE_id_add_animdata(&ob->id); + + /* make a copy of all the drivers (for now), then correct any links that need fixing */ + free_fcurves(&ob->adt->drivers); + copy_fcurves(&ob->adt->drivers, &target->adt->drivers); + + for (fcu= ob->adt->drivers.first; fcu; fcu= fcu->next) { + ChannelDriver *driver= fcu->driver; + DriverVar *dvar; + + for (dvar= driver->variables.first; dvar; dvar= dvar->next) { + /* all drivers */ + DRIVER_TARGETS_LOOPER(dvar) + { + if ((Object *)dtar->id == target) + dtar->id= (ID *)ob; + else + id_lib_extern((ID *)dtar->id); + } + DRIVER_TARGETS_LOOPER_END + } + } + } +} + /* proxy rule: lib_object->proxy_from == the one we borrow from, set temporally while object_update */ /* local_object->proxy == pointer to library object, saved in files and read */ /* local_object->proxy_group == pointer to group dupli-object, saved in files and read */ @@ -1489,33 +1521,8 @@ void object_make_proxy(Object *ob, Object *target, Object *gob) copy_m4_m4(ob->parentinv, target->parentinv); /* copy animdata stuff - drivers only for now... */ - if ((target->adt) && (target->adt->drivers.first)) { - FCurve *fcu; - - /* add new animdata block */ - ob->adt= BKE_id_add_animdata(&ob->id); - - /* make a copy of all the drivers (for now), then correct any links that need fixing */ - copy_fcurves(&ob->adt->drivers, &target->adt->drivers); - - for (fcu= ob->adt->drivers.first; fcu; fcu= fcu->next) { - ChannelDriver *driver= fcu->driver; - DriverVar *dvar; - - for (dvar= driver->variables.first; dvar; dvar= dvar->next) { - /* all drivers */ - DRIVER_TARGETS_LOOPER(dvar) - { - if ((Object *)dtar->id == target) - dtar->id= (ID *)ob; - else - id_lib_extern((ID *)dtar->id); - } - DRIVER_TARGETS_LOOPER_END - } - } - } - + object_copy_proxy_drivers(ob, target); + /* skip constraints? */ // FIXME: this is considered by many as a bug @@ -1839,17 +1846,16 @@ static void give_parvert(Object *par, int nr, float *vec) DerivedMesh *dm = par->derivedFinal; if(dm) { - int i, count = 0, vindex, numVerts = dm->getNumVerts(dm); + MVert *mvert= dm->getVertArray(dm); int *index = (int *)dm->getVertDataArray(dm, CD_ORIGINDEX); - float co[3]; + int i, count = 0, vindex, numVerts = dm->getNumVerts(dm); /* get the average of all verts with (original index == nr) */ - for(i = 0; i < numVerts; ++i) { - vindex= (index)? *index: i; + for(i = 0; i < numVerts; i++) { + vindex= (index)? index[i]: i; if(vindex == nr) { - dm->getVertCo(dm, i, co); - add_v3_v3v3(vec, vec, co); + add_v3_v3v3(vec, vec, mvert[i].co); count++; } } @@ -1976,7 +1982,6 @@ void where_is_object_time(Scene *scene, Object *ob, float ctime) float *fp1, *fp2, slowmat[4][4] = MAT4_UNITY; float stime=ctime, fac1, fac2, vec[3]; int a; - int pop; /* new version: correct parent+vertexparent and track+parent */ /* this one only calculates direct attached parent and track */ @@ -1995,21 +2000,19 @@ void where_is_object_time(Scene *scene, Object *ob, float ctime) /* hurms, code below conflicts with depgraph... (ton) */ /* and even worse, it gives bad effects for NLA stride too (try ctime != par->ctime, with MBlur) */ - pop= 0; if(no_parent_ipo==0 && stime != par->ctime) { // only for ipo systems? - pushdata(par, sizeof(Object)); - pop= 1; + Object tmp= *par; if(par->proxy_from); // was a copied matrix, no where_is! bad... else where_is_object_time(scene, par, ctime); + + solve_parenting(scene, ob, par, ob->obmat, slowmat, 0); + + *par= tmp; } - - solve_parenting(scene, ob, par, ob->obmat, slowmat, 0); - - if(pop) { - poplast(par); - } + else + solve_parenting(scene, ob, par, ob->obmat, slowmat, 0); if(ob->partype & PARSLOW) { // include framerate @@ -2035,7 +2038,7 @@ void where_is_object_time(Scene *scene, Object *ob, float ctime) } /* solve constraints */ - if (ob->constraints.first) { + if (ob->constraints.first && !(ob->flag & OB_NO_CONSTRAINTS)) { bConstraintOb *cob; cob= constraints_make_evalob(scene, ob, NULL, CONSTRAINT_OBTYPE_OBJECT); diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index 41ca5e1804a..006e05370b1 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -1000,12 +1000,7 @@ static float interpolate_particle_value(float v1, float v2, float v3, float v4, return value; } -static void weighted_particle_vector(float *v1, float *v2, float *v3, float *v4, float *weights, float *vec) -{ - vec[0]= weights[0]*v1[0] + weights[1]*v2[0] + weights[2]*v3[0] + weights[3]*v4[0]; - vec[1]= weights[0]*v1[1] + weights[1]*v2[1] + weights[2]*v3[1] + weights[3]*v4[1]; - vec[2]= weights[0]*v1[2] + weights[1]*v2[2] + weights[2]*v3[2] + weights[3]*v4[2]; -} + void psys_interpolate_particle(short type, ParticleKey keys[4], float dt, ParticleKey *result, int velocity) { float t[4]; @@ -1016,19 +1011,19 @@ void psys_interpolate_particle(short type, ParticleKey keys[4], float dt, Partic else { key_curve_position_weights(dt, t, type); - weighted_particle_vector(keys[0].co, keys[1].co, keys[2].co, keys[3].co, t, result->co); + interp_v3_v3v3v3v3(result->co, keys[0].co, keys[1].co, keys[2].co, keys[3].co, t); if(velocity){ float temp[3]; if(dt>0.999f){ key_curve_position_weights(dt-0.001f, t, type); - weighted_particle_vector(keys[0].co, keys[1].co, keys[2].co, keys[3].co, t, temp); + interp_v3_v3v3v3v3(temp, keys[0].co, keys[1].co, keys[2].co, keys[3].co, t); VECSUB(result->vel, result->co, temp); } else{ key_curve_position_weights(dt+0.001f, t, type); - weighted_particle_vector(keys[0].co, keys[1].co, keys[2].co, keys[3].co, t, temp); + interp_v3_v3v3v3v3(temp, keys[0].co, keys[1].co, keys[2].co, keys[3].co, t); VECSUB(result->vel, temp, result->co); } } @@ -1310,46 +1305,33 @@ void psys_interpolate_face(MVert *mvert, MFace *mface, MTFace *tface, float (*or float tuv[4][2]; float *o1, *o2, *o3, *o4; - v1= (mvert+mface->v1)->co; - v2= (mvert+mface->v2)->co; - v3= (mvert+mface->v3)->co; - VECCOPY(n1,(mvert+mface->v1)->no); - VECCOPY(n2,(mvert+mface->v2)->no); - VECCOPY(n3,(mvert+mface->v3)->no); - normalize_v3(n1); - normalize_v3(n2); - normalize_v3(n3); + v1= mvert[mface->v1].co; + v2= mvert[mface->v2].co; + v3= mvert[mface->v3].co; + + normal_short_to_float_v3(n1, mvert[mface->v1].no); + normal_short_to_float_v3(n2, mvert[mface->v2].no); + normal_short_to_float_v3(n3, mvert[mface->v3].no); if(mface->v4) { - v4= (mvert+mface->v4)->co; - VECCOPY(n4,(mvert+mface->v4)->no); - normalize_v3(n4); + v4= mvert[mface->v4].co; + normal_short_to_float_v3(n4, mvert[mface->v4].no); - vec[0]= w[0]*v1[0] + w[1]*v2[0] + w[2]*v3[0] + w[3]*v4[0]; - vec[1]= w[0]*v1[1] + w[1]*v2[1] + w[2]*v3[1] + w[3]*v4[1]; - vec[2]= w[0]*v1[2] + w[1]*v2[2] + w[2]*v3[2] + w[3]*v4[2]; + interp_v3_v3v3v3v3(vec, v1, v2, v3, v4, w); if(nor){ - if(mface->flag & ME_SMOOTH){ - nor[0]= w[0]*n1[0] + w[1]*n2[0] + w[2]*n3[0] + w[3]*n4[0]; - nor[1]= w[0]*n1[1] + w[1]*n2[1] + w[2]*n3[1] + w[3]*n4[1]; - nor[2]= w[0]*n1[2] + w[1]*n2[2] + w[2]*n3[2] + w[3]*n4[2]; - } + if(mface->flag & ME_SMOOTH) + interp_v3_v3v3v3v3(nor, n1, n2, n3, n4, w); else normal_quad_v3(nor,v1,v2,v3,v4); } } else { - vec[0]= w[0]*v1[0] + w[1]*v2[0] + w[2]*v3[0]; - vec[1]= w[0]*v1[1] + w[1]*v2[1] + w[2]*v3[1]; - vec[2]= w[0]*v1[2] + w[1]*v2[2] + w[2]*v3[2]; - + interp_v3_v3v3v3(vec, v1, v2, v3, w); + if(nor){ - if(mface->flag & ME_SMOOTH){ - nor[0]= w[0]*n1[0] + w[1]*n2[0] + w[2]*n3[0]; - nor[1]= w[0]*n1[1] + w[1]*n2[1] + w[2]*n3[1]; - nor[2]= w[0]*n1[2] + w[1]*n2[2] + w[2]*n3[2]; - } + if(mface->flag & ME_SMOOTH) + interp_v3_v3v3v3(nor, n1, n2, n3, w); else normal_tri_v3(nor,v1,v2,v3); } @@ -1410,17 +1392,14 @@ void psys_interpolate_face(MVert *mvert, MFace *mface, MTFace *tface, float (*or if(mface->v4) { o4= orcodata[mface->v4]; - orco[0]= w[0]*o1[0] + w[1]*o2[0] + w[2]*o3[0] + w[3]*o4[0]; - orco[1]= w[0]*o1[1] + w[1]*o2[1] + w[2]*o3[1] + w[3]*o4[1]; - orco[2]= w[0]*o1[2] + w[1]*o2[2] + w[2]*o3[2] + w[3]*o4[2]; + + interp_v3_v3v3v3v3(orco, o1, o2, o3, o4, w); if(ornor) normal_quad_v3( ornor,o1, o2, o3, o4); } else { - orco[0]= w[0]*o1[0] + w[1]*o2[0] + w[2]*o3[0]; - orco[1]= w[0]*o1[1] + w[1]*o2[1] + w[2]*o3[1]; - orco[2]= w[0]*o1[2] + w[1]*o2[2] + w[2]*o3[2]; + interp_v3_v3v3v3(orco, o1, o2, o3, w); if(ornor) normal_tri_v3( ornor,o1, o2, o3); @@ -2847,7 +2826,7 @@ void psys_cache_paths(ParticleSimulationData *sim, float cfra) do_particle_interpolation(psys, p, pa, t, frs_sec, &pind, &result); /* dynamic hair is in object space */ - /* keyed and baked are allready in global space */ + /* keyed and baked are already in global space */ if(hair_dm) mul_m4_v3(sim->ob->obmat, result.co); else if(!keyed && !baked && !(psys->flag & PSYS_GLOBAL_HAIR)) @@ -2988,12 +2967,21 @@ void psys_cache_edit_paths(Scene *scene, Object *ob, PTCacheEdit *edit, float cf frs_sec = (psys || edit->pid.flag & PTCACHE_VEL_PER_SEC) ? 25.0f : 1.0f; - sel_col[0] = (float)edit->sel_col[0] / 255.0f; - sel_col[1] = (float)edit->sel_col[1] / 255.0f; - sel_col[2] = (float)edit->sel_col[2] / 255.0f; - nosel_col[0] = (float)edit->nosel_col[0] / 255.0f; - nosel_col[1] = (float)edit->nosel_col[1] / 255.0f; - nosel_col[2] = (float)edit->nosel_col[2] / 255.0f; + if(pset->brushtype == PE_BRUSH_WEIGHT){ + /* use weight painting colors now... */ +#if 0 + sel_col[0] = sel_col[1] = sel_col[2] = 1.0f; + nosel_col[0] = nosel_col[1] = nosel_col[2] = 0.0f; +#endif + } + else{ + sel_col[0] = (float)edit->sel_col[0] / 255.0f; + sel_col[1] = (float)edit->sel_col[1] / 255.0f; + sel_col[2] = (float)edit->sel_col[2] / 255.0f; + nosel_col[0] = (float)edit->nosel_col[0] / 255.0f; + nosel_col[1] = (float)edit->nosel_col[1] / 255.0f; + nosel_col[2] = (float)edit->nosel_col[2] / 255.0f; + } /*---first main loop: create all actual particles' paths---*/ for(i=0; i<totpart; i++, pa+=pa?1:0, point++){ @@ -3008,6 +2996,14 @@ void psys_cache_edit_paths(Scene *scene, Object *ob, PTCacheEdit *edit, float cf pind.bspline = psys ? (psys->part->flag & PART_HAIR_BSPLINE) : 0; pind.dm = NULL; + + /* should init_particle_interpolation set this ? */ + if(pset->brushtype==PE_BRUSH_WEIGHT){ + pind.hkey[0] = NULL; + pind.hkey[1] = pa->hair; + } + + memset(cache[i], 0, sizeof(*cache[i])*(steps+1)); cache[i]->steps = steps; @@ -3040,7 +3036,7 @@ void psys_cache_edit_paths(Scene *scene, Object *ob, PTCacheEdit *edit, float cf do_particle_interpolation(psys, i, pa, t, frs_sec, &pind, &result); - /* non-hair points are allready in global space */ + /* non-hair points are already in global space */ if(psys && !(psys->flag & PSYS_GLOBAL_HAIR)) { mul_m4_v3(hairmat, result.co); @@ -3096,22 +3092,37 @@ void psys_cache_edit_paths(Scene *scene, Object *ob, PTCacheEdit *edit, float cf ca->vel[1] = 1.0f; /* selection coloring in edit mode */ - if((ekey + (pind.ekey[0] - point->keys))->flag & PEK_SELECT){ - if((ekey + (pind.ekey[1] - point->keys))->flag & PEK_SELECT){ - VECCOPY(ca->col, sel_col); - } - else{ - keytime = (t - (*pind.ekey[0]->time))/((*pind.ekey[1]->time) - (*pind.ekey[0]->time)); - interp_v3_v3v3(ca->col, sel_col, nosel_col, keytime); - } + if(pset->brushtype==PE_BRUSH_WEIGHT){ + if(k==0) + weight_to_rgb(pind.hkey[1]->weight, ca->col, ca->col+1, ca->col+2); + else if(k >= steps - 1) + weight_to_rgb(pind.hkey[0]->weight, ca->col, ca->col+1, ca->col+2); + else + weight_to_rgb((1.0f - keytime) * pind.hkey[0]->weight + keytime * pind.hkey[1]->weight, ca->col, ca->col+1, ca->col+2); + + /* at the moment this is only used for weight painting. + * will need to move out of this check if its used elsewhere. */ + pind.hkey[0] = pind.hkey[1]; + pind.hkey[1]++; } - else{ - if((ekey + (pind.ekey[1] - point->keys))->flag & PEK_SELECT){ - keytime = (t - (*pind.ekey[0]->time))/((*pind.ekey[1]->time) - (*pind.ekey[0]->time)); - interp_v3_v3v3(ca->col, nosel_col, sel_col, keytime); + else { + if((ekey + (pind.ekey[0] - point->keys))->flag & PEK_SELECT){ + if((ekey + (pind.ekey[1] - point->keys))->flag & PEK_SELECT){ + VECCOPY(ca->col, sel_col); + } + else{ + keytime = (t - (*pind.ekey[0]->time))/((*pind.ekey[1]->time) - (*pind.ekey[0]->time)); + interp_v3_v3v3(ca->col, sel_col, nosel_col, keytime); + } } else{ - VECCOPY(ca->col, nosel_col); + if((ekey + (pind.ekey[1] - point->keys))->flag & PEK_SELECT){ + keytime = (t - (*pind.ekey[0]->time))/((*pind.ekey[1]->time) - (*pind.ekey[0]->time)); + interp_v3_v3v3(ca->col, nosel_col, sel_col, keytime); + } + else{ + VECCOPY(ca->col, nosel_col); + } } } @@ -3856,7 +3867,9 @@ void psys_get_particle_on_path(ParticleSimulationData *sim, int p, ParticleKey * pind.cache = cached ? psys->pointcache : NULL; pind.epoint = NULL; pind.bspline = (psys->part->flag & PART_HAIR_BSPLINE); - pind.dm = psys->hair_out_dm; + /* pind.dm disabled in editmode means we dont get effectors taken into + * account when subdividing for instance */ + pind.dm = psys_in_edit_mode(sim->scene, psys) ? NULL : psys->hair_out_dm; init_particle_interpolation(sim->ob, psys, pa, &pind); do_particle_interpolation(psys, p, pa, t, frs_sec, &pind, state); diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index 27e0c632a81..6dba1a2e9ba 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -247,12 +247,12 @@ static int get_psys_child_number(struct Scene *scene, ParticleSystem *psys) if(!psys->part->childtype) return 0; - if(psys->renderdata) { + if(psys->renderdata) nbr= psys->part->ren_child_nbr; - return get_render_child_particle_number(&scene->r, nbr); - } else - return psys->part->child_nbr; + nbr= psys->part->child_nbr; + + return get_render_child_particle_number(&scene->r, nbr); } static int get_psys_tot_child(struct Scene *scene, ParticleSystem *psys) @@ -263,6 +263,12 @@ static int get_psys_tot_child(struct Scene *scene, ParticleSystem *psys) static void alloc_child_particles(ParticleSystem *psys, int tot) { if(psys->child){ + /* only re-allocate if we have to */ + if(psys->part->childtype && psys->totchild == tot) { + memset(psys->child, 0, tot*sizeof(ChildParticle)); + return; + } + MEM_freeN(psys->child); psys->child=0; psys->totchild=0; @@ -3071,10 +3077,8 @@ static void do_hair_dynamics(ParticleSimulationData *sim) dvert->dw = MEM_callocN (sizeof(MDeformWeight), "deformWeight"); dvert->totweight = 1; } - - /* no special reason for the 0.5 */ - /* just seems like a nice value from experiments */ - dvert->dw->weight = k ? 0.5f : 1.0f; + /* roots should be 1.0, the rest can be anything from 0.0 to 1.0 */ + dvert->dw->weight = key->weight; dvert++; } } diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c index 7b2cf72e311..9bdc700c313 100644 --- a/source/blender/blenkernel/intern/pointcache.c +++ b/source/blender/blenkernel/intern/pointcache.c @@ -710,7 +710,9 @@ static int ptcache_write_smoke(PTCacheFile *pf, void *smoke_v) unsigned char *obstacles; unsigned int in_len = sizeof(float)*(unsigned int)res; unsigned char *out = (unsigned char *)MEM_callocN(LZO_OUT_LEN(in_len)*4, "pointcache_lzo_buffer"); - int mode = res >= 1000000 ? 2 : 1; + //int mode = res >= 1000000 ? 2 : 1; + int mode=1; // light + if (sds->cache_comp == SM_CACHE_HEAVY) mode=2; // heavy smoke_export(sds->fluid, &dt, &dx, &dens, &densold, &heat, &heatold, &vx, &vy, &vz, &vxold, &vyold, &vzold, &obstacles); @@ -753,7 +755,10 @@ static int ptcache_write_smoke_turbulence(PTCacheFile *pf, void *smoke_v) smoke_turbulence_get_res(sds->wt, res_big_array); res_big = res_big_array[0]*res_big_array[1]*res_big_array[2]; - mode = res_big >= 1000000 ? 2 : 1; + //mode = res_big >= 1000000 ? 2 : 1; + mode = 1; // light + if (sds->cache_high_comp == SM_CACHE_HEAVY) mode=2; // heavy + in_len_big = sizeof(float) * (unsigned int)res_big; smoke_turbulence_export(sds->wt, &dens, &densold, &tcu, &tcv, &tcw); @@ -1447,7 +1452,7 @@ int BKE_ptcache_read_cache(PTCacheID *pid, float cfra, float frs_sec) } } - /* don't read old cache if allready simulated past cached frame */ + /* don't read old cache if already simulated past cached frame */ if(!pm && !pf && cfra1 && cfra1 <= pid->cache->simframe) error = 1; if(cfra1 && cfra1==cfra2) diff --git a/source/blender/blenkernel/intern/sca.c b/source/blender/blenkernel/intern/sca.c index 5cd554725ff..1bef60f984c 100644 --- a/source/blender/blenkernel/intern/sca.c +++ b/source/blender/blenkernel/intern/sca.c @@ -139,7 +139,7 @@ void init_sensor(bSensor *sens) break; case SENS_MOUSE: ms=sens->data= MEM_callocN(sizeof(bMouseSensor), "mousesens"); - //XXX ms->type= LEFTMOUSE; + ms->type= 1; // LEFTMOUSE workaround because Mouse Sensor types enum starts in 1 break; case SENS_COLLISION: sens->data= MEM_callocN(sizeof(bCollisionSensor), "colsens"); diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index f17d11c40ce..a12fa36b519 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -925,7 +925,7 @@ void scene_add_render_layer(Scene *sce) int get_render_subsurf_level(RenderData *r, int lvl) { - if(G.rt == 1 && (r->mode & R_SIMPLIFY)) + if(r->mode & R_SIMPLIFY) return MIN2(r->simplify_subsurf, lvl); else return lvl; @@ -933,7 +933,7 @@ int get_render_subsurf_level(RenderData *r, int lvl) int get_render_child_particle_number(RenderData *r, int num) { - if(G.rt == 1 && (r->mode & R_SIMPLIFY)) + if(r->mode & R_SIMPLIFY) return (int)(r->simplify_particles*num); else return num; @@ -941,7 +941,7 @@ int get_render_child_particle_number(RenderData *r, int num) int get_render_shadow_samples(RenderData *r, int samples) { - if(G.rt == 1 && (r->mode & R_SIMPLIFY) && samples > 0) + if((r->mode & R_SIMPLIFY) && samples > 0) return MIN2(r->simplify_shadowsamples, samples); else return samples; @@ -949,7 +949,7 @@ int get_render_shadow_samples(RenderData *r, int samples) float get_render_aosss_error(RenderData *r, float error) { - if(G.rt == 1 && (r->mode & R_SIMPLIFY)) + if(r->mode & R_SIMPLIFY) return ((1.0f-r->simplify_aosss)*10.0f + 1.0f)*error; else return error; diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 767834159b2..ad32f578a10 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -1066,17 +1066,19 @@ static TStripElem *give_tstripelem(Sequence *seq, int cfra) StripElem *give_stripelem(Sequence *seq, int cfra) { - StripElem *se; - int nr; - - se = seq->strip->stripdata; - nr = give_stripelem_index(seq, cfra); + StripElem *se= seq->strip->stripdata; - if (nr == -1) return 0; - if (se == 0) return 0; + if(seq->type == SEQ_MOVIE) { + /* use the first */ + } + else { + int nr = give_stripelem_index(seq, cfra); - se += nr + seq->anim_startofs; + if (nr == -1) return 0; + if (se == 0) return 0; + se += nr + seq->anim_startofs; + } return se; } @@ -1694,7 +1696,19 @@ static void input_preprocess(Scene *scene, Sequence *seq, TStripElem *se, int cf if(seq->flag & SEQ_MAKE_FLOAT) { if (!se->ibuf->rect_float) { - IMB_float_from_rect(se->ibuf); + if (scene->r.color_mgt_flag & R_COLOR_MANAGEMENT) { + IMB_float_from_rect(se->ibuf); + } else { + int profile = IB_PROFILE_NONE; + + /* no color management: + * don't disturb the existing profiles */ + SWAP(int, se->ibuf->profile, profile); + + IMB_float_from_rect(se->ibuf); + + SWAP(int, se->ibuf->profile, profile); + } } if (se->ibuf->rect) { imb_freerectImBuf(se->ibuf); @@ -2094,7 +2108,7 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int doseq= scene->r.scemode & R_DOSEQ; scene->r.scemode &= ~R_DOSEQ; - RE_BlenderFrame(re, sce, + RE_BlenderFrame(re, sce, NULL, seq->sfra+se->nr+seq->anim_startofs); if(rendering) @@ -3640,7 +3654,7 @@ void seq_offset_animdata(Scene *scene, Sequence *seq, int ofs) char str[32]; FCurve *fcu; - if(scene->adt==NULL || ofs==0) + if(scene->adt==NULL || ofs==0 || scene->adt->action==NULL) return; sprintf(str, "[\"%s\"]", seq->name+2); @@ -3744,7 +3758,7 @@ void seqUniqueName(ListBase *seqbasep, Sequence *seq) BLI_uniquename(seqbasep, seq, "Sequence", '.', offsetof(Sequence, name), SEQ_NAME_MAXSTR); } -/* NOTE: this function doesn't fill in iamge names */ +/* NOTE: this function doesn't fill in image names */ Sequence *sequencer_add_image_strip(bContext *C, ListBase *seqbasep, SeqLoadInfo *seq_load) { Scene *scene= CTX_data_scene(C); /* only for active seq */ diff --git a/source/blender/blenkernel/intern/shrinkwrap.c b/source/blender/blenkernel/intern/shrinkwrap.c index c9bf29ed29c..2afaed795eb 100644 --- a/source/blender/blenkernel/intern/shrinkwrap.c +++ b/source/blender/blenkernel/intern/shrinkwrap.c @@ -184,7 +184,7 @@ static void shrinkwrap_calc_nearest_vertex(ShrinkwrapCalcData *calc) { float *co = calc->vertexCos[i]; float tmp_co[3]; - float weight = vertexgroup_get_vertex_weight(calc->dvert, i, calc->vgroup); + float weight = defvert_array_find_weight_safe(calc->dvert, i, calc->vgroup); if(weight == 0.0f) continue; @@ -356,7 +356,7 @@ static void shrinkwrap_calc_normal_projection(ShrinkwrapCalcData *calc, struct S { float *co = calc->vertexCos[i]; float tmp_co[3], tmp_no[3]; - float weight = vertexgroup_get_vertex_weight(calc->dvert, i, calc->vgroup); + float weight = defvert_array_find_weight_safe(calc->dvert, i, calc->vgroup); if(weight == 0.0f) continue; @@ -447,7 +447,7 @@ static void shrinkwrap_calc_nearest_surface_point(ShrinkwrapCalcData *calc) { float *co = calc->vertexCos[i]; float tmp_co[3]; - float weight = vertexgroup_get_vertex_weight(calc->dvert, i, calc->vgroup); + float weight = defvert_array_find_weight_safe(calc->dvert, i, calc->vgroup); if(weight == 0.0f) continue; //Convert the vertex to tree coordinates @@ -519,7 +519,7 @@ void shrinkwrapModifier_deform(ShrinkwrapModifierData *smd, Scene *scene, Object calc.vertexCos = vertexCos; //DeformVertex - calc.vgroup = get_named_vertexgroup_num(calc.ob, calc.smd->vgroup_name); + calc.vgroup = defgroup_name_index(calc.ob, calc.smd->vgroup_name); if(dm) { calc.dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT); @@ -545,7 +545,7 @@ void shrinkwrapModifier_deform(ShrinkwrapModifierData *smd, Scene *scene, Object - calc.vgroup = get_named_vertexgroup_num(calc.ob, smd->vgroup_name); + calc.vgroup = defgroup_name_index(calc.ob, smd->vgroup_name); if(dm != NULL && smd->shrinkType == MOD_SHRINKWRAP_PROJECT) { diff --git a/source/blender/blenkernel/intern/simple_deform.c b/source/blender/blenkernel/intern/simple_deform.c index b2920615f5a..9fadb1f137e 100644 --- a/source/blender/blenkernel/intern/simple_deform.c +++ b/source/blender/blenkernel/intern/simple_deform.c @@ -149,7 +149,7 @@ void SimpleDeformModifier_do(SimpleDeformModifierData *smd, struct Object *ob, s float smd_limit[2], smd_factor; SpaceTransform *transf = NULL, tmp_transf; void (*simpleDeform_callback)(const float factor, const float dcut[3], float *co) = NULL; //Mode callback - int vgroup = get_named_vertexgroup_num(ob, smd->vgroup_name); + int vgroup = defgroup_name_index(ob, smd->vgroup_name); MDeformVert *dvert = NULL; //Safe-check @@ -227,7 +227,7 @@ void SimpleDeformModifier_do(SimpleDeformModifierData *smd, struct Object *ob, s for(i=0; i<numVerts; i++) { - float weight = vertexgroup_get_vertex_weight(dvert, i, vgroup); + float weight = defvert_array_find_weight_safe(dvert, i, vgroup); if(weight != 0.0f) { diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c index 0a106b1920d..e921dadb9ba 100644 --- a/source/blender/blenkernel/intern/smoke.c +++ b/source/blender/blenkernel/intern/smoke.c @@ -872,11 +872,13 @@ static void smoke_calc_domain(Scene *scene, Object *ob, SmokeModifierData *smd) heat[index] = sfs->temp; density[index] = sfs->density; - /* + + // Uses particle velocity as initial velocity for smoke + if(smd->domain->flags & MOD_SMOKE_INITVELOCITY) { velocity_x[index] = pa->state.vel[0]; velocity_y[index] = pa->state.vel[1]; velocity_z[index] = pa->state.vel[2]; - */ + } // obstacle[index] |= 2; // we need different handling for the high-res feature @@ -1396,8 +1398,9 @@ static void get_cell(float *p0, int res[3], float dx, float *pos, int *cell, int static void smoke_calc_transparency(float *result, float *input, float *p0, float *p1, int res[3], float dx, float *light, bresenham_callback cb, float correct) { - int x, y, z; + int z; float bv[6]; + int slabsize=res[0]*res[1]; memset(result, -1, sizeof(float)*res[0]*res[1]*res[2]); // x bv[0] = p0[0]; @@ -1409,19 +1412,20 @@ static void smoke_calc_transparency(float *result, float *input, float *p0, floa bv[4] = p0[2]; bv[5] = p1[2]; -#pragma omp parallel for schedule(static) private(y, z) - for(x = 0; x < res[0]; x++) +#pragma omp parallel for schedule(static,1) + for(z = 0; z < res[2]; z++) + { + size_t index = z*slabsize; + int x,y; + for(y = 0; y < res[1]; y++) - for(z = 0; z < res[2]; z++) + for(x = 0; x < res[0]; x++, index++) { float voxelCenter[3]; - size_t index; float pos[3]; int cell[3]; float tRay = 1.0; - index = smoke_get_index(x, res[0], y, res[1], z); - if(result[index] >= 0.0f) continue; voxelCenter[0] = p0[0] + dx * x + dx * 0.5; @@ -1446,5 +1450,6 @@ static void smoke_calc_transparency(float *result, float *input, float *p0, floa // #pragma omp critical result[index] = tRay; } + } } diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c index 735c57ea0ce..a1e3dd6f963 100644 --- a/source/blender/blenkernel/intern/softbody.c +++ b/source/blender/blenkernel/intern/softbody.c @@ -1269,7 +1269,7 @@ static int sb_detect_face_collisionCached(float face_v1[3],float face_v2[3],floa normalize_v3(d_nvect); if ( /* isect_line_tri_v3(nv1, nv3, face_v1, face_v2, face_v3, &t, NULL) || - we did that edge allready */ + we did that edge already */ isect_line_tri_v3(nv3, nv4, face_v1, face_v2, face_v3, &t, NULL) || isect_line_tri_v3(nv4, nv1, face_v1, face_v2, face_v3, &t, NULL) ){ Vec3PlusStVec(force,-0.5f,d_nvect); @@ -3267,7 +3267,7 @@ static void mesh_to_softbody(Scene *scene, Object *ob) if (sb->namedVG_Mass[0]) { - int grp= get_named_vertexgroup_num (ob,sb->namedVG_Mass); + int grp= defgroup_name_index (ob,sb->namedVG_Mass); /* printf("VGN %s %d \n",sb->namedVG_Mass,grp); */ if(grp > -1){ get_scalar_from_vertexgroup(ob, a,(short) (grp), &bp->mass); @@ -3281,7 +3281,7 @@ static void mesh_to_softbody(Scene *scene, Object *ob) if (sb->namedVG_Spring_K[0]) { - int grp= get_named_vertexgroup_num (ob,sb->namedVG_Spring_K); + int grp= defgroup_name_index (ob,sb->namedVG_Spring_K); //printf("VGN %s %d \n",sb->namedVG_Spring_K,grp); if(grp > -1){ get_scalar_from_vertexgroup(ob, a,(short) (grp), &bp->springweight); diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index 072a665e0e9..445fc23b069 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -819,7 +819,6 @@ static void ccgDM_copyFinalVertArray(DerivedMesh *dm, MVert *mvert) 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); } } @@ -2227,7 +2226,8 @@ static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss, MFace *mface = NULL; FaceVertWeight *qweight, *tweight; - DM_from_template(&ccgdm->dm, dm, ccgSubSurf_getNumFinalVerts(ss), + DM_from_template(&ccgdm->dm, dm, DM_TYPE_CCGDM, + ccgSubSurf_getNumFinalVerts(ss), ccgSubSurf_getNumFinalEdges(ss), ccgSubSurf_getNumFinalFaces(ss)); @@ -2505,7 +2505,9 @@ struct DerivedMesh *subsurf_make_derived_from_derived( CCGDerivedMesh *result; if(editMode) { - smd->emCache = _getSubSurf(smd->emCache, smd->levels, useAging, 0, + int levels= (smd->modifier.scene)? get_render_subsurf_level(&smd->modifier.scene->r, smd->levels): smd->levels; + + smd->emCache = _getSubSurf(smd->emCache, levels, useAging, 0, useSimple); ss_sync_from_derivedmesh(smd->emCache, dm, vertCos, useSimple); @@ -2515,9 +2517,8 @@ struct DerivedMesh *subsurf_make_derived_from_derived( } else if(useRenderParams) { /* Do not use cache in render mode. */ CCGSubSurf *ss; - int levels; - - levels= smd->renderLevels; // XXX get_render_subsurf_level(&scene->r, smd->renderLevels); + int levels= (smd->modifier.scene)? get_render_subsurf_level(&smd->modifier.scene->r, smd->renderLevels): smd->renderLevels; + if(levels == 0) return dm; @@ -2532,6 +2533,7 @@ struct DerivedMesh *subsurf_make_derived_from_derived( } else { int useIncremental = (smd->flags & eSubsurfModifierFlag_Incremental); int useAging = smd->flags & eSubsurfModifierFlag_DebugIncr; + int levels= (smd->modifier.scene)? get_render_subsurf_level(&smd->modifier.scene->r, smd->levels): smd->levels; CCGSubSurf *ss; /* It is quite possible there is a much better place to do this. It @@ -2548,7 +2550,7 @@ struct DerivedMesh *subsurf_make_derived_from_derived( } if(useIncremental && isFinalCalc) { - smd->mCache = ss = _getSubSurf(smd->mCache, smd->levels, + smd->mCache = ss = _getSubSurf(smd->mCache, levels, useAging, 0, useSimple); ss_sync_from_derivedmesh(ss, dm, vertCos, useSimple); @@ -2562,7 +2564,7 @@ struct DerivedMesh *subsurf_make_derived_from_derived( smd->mCache = NULL; } - ss = _getSubSurf(NULL, smd->levels, 0, 1, useSimple); + ss = _getSubSurf(NULL, levels, 0, 1, useSimple); ss_sync_from_derivedmesh(ss, dm, vertCos, useSimple); result = getCCGDerivedMesh(ss, drawInteriorEdges, useSubsurfUv, dm); diff --git a/source/blender/blenkernel/intern/text.c b/source/blender/blenkernel/intern/text.c index c5c23c8b6c7..1eea035ec2c 100644 --- a/source/blender/blenkernel/intern/text.c +++ b/source/blender/blenkernel/intern/text.c @@ -150,6 +150,13 @@ int txt_get_undostate(void) return undoing; } +static void init_undo_text(Text *text) +{ + text->undo_pos= -1; + text->undo_len= TXT_INIT_UNDO; + text->undo_buf= MEM_mallocN(text->undo_len, "undo buf"); +} + void free_text(Text *text) { TextLine *tmp; @@ -180,12 +187,10 @@ Text *add_empty_text(char *name) ta->name= NULL; - ta->undo_pos= -1; - ta->undo_len= TXT_INIT_UNDO; - ta->undo_buf= MEM_mallocN(ta->undo_len, "undo buf"); - + init_undo_text(ta); + ta->nlines=1; - ta->flags= TXT_ISDIRTY | TXT_ISMEM; + ta->flags= TXT_ISDIRTY | TXT_ISMEM | TXT_TABSTOSPACES; ta->lines.first= ta->lines.last= NULL; ta->markers.first= ta->markers.last= NULL; @@ -259,9 +264,7 @@ int reopen_text(Text *text) /* clear undo buffer */ MEM_freeN(text->undo_buf); - text->undo_pos= -1; - text->undo_len= TXT_INIT_UNDO; - text->undo_buf= MEM_mallocN(text->undo_len, "undo buf"); + init_undo_text(text); fseek(fp, 0L, SEEK_END); len= ftell(fp); @@ -352,6 +355,8 @@ Text *add_text(char *file, const char *relpath) ta->markers.first= ta->markers.last= NULL; ta->curl= ta->sell= NULL; + ta->flags= TXT_TABSTOSPACES; + fseek(fp, 0L, SEEK_END); len= ftell(fp); fseek(fp, 0L, SEEK_SET); @@ -359,9 +364,7 @@ Text *add_text(char *file, const char *relpath) ta->name= MEM_mallocN(strlen(file)+1, "text_name"); strcpy(ta->name, file); - ta->undo_pos= -1; - ta->undo_len= TXT_INIT_UNDO; - ta->undo_buf= MEM_mallocN(ta->undo_len, "undo buf"); + init_undo_text(ta); buffer= MEM_mallocN(len, "text_buffer"); // under windows fread can return less then len bytes because @@ -428,9 +431,15 @@ Text *copy_text(Text *ta) tan= copy_libblock(ta); - tan->name= MEM_mallocN(strlen(ta->name)+1, "text_name"); - strcpy(tan->name, ta->name); - + /* file name can be NULL */ + if(ta->name) { + tan->name= MEM_mallocN(strlen(ta->name)+1, "text_name"); + strcpy(tan->name, ta->name); + } + else { + tan->name= NULL; + } + tan->flags = ta->flags | TXT_ISDIRTY; tan->lines.first= tan->lines.last= NULL; @@ -458,6 +467,8 @@ Text *copy_text(Text *ta) tan->curl= tan->sell= tan->lines.first; tan->curc= tan->selc= 0; + init_undo_text(tan); + return tan; } @@ -1399,9 +1410,7 @@ static int max_undo_test(Text *text, int x) if(text->undo_len*2 > TXT_MAX_UNDO) { /* XXX error("Undo limit reached, buffer cleared\n"); */ MEM_freeN(text->undo_buf); - text->undo_len= TXT_INIT_UNDO; - text->undo_buf= MEM_mallocN(text->undo_len, "undo buf"); - text->undo_pos=-1; + init_undo_text(text); return 0; } else { void *tmp= text->undo_buf; @@ -2380,7 +2389,7 @@ int txt_add_char (Text *text, char add) } /* insert spaces rather then tabs */ - if (add == '\t') { + if (add == '\t' && text->flags & TXT_TABSTOSPACES) { txt_convert_tab_to_spaces(text); return 1; } @@ -2460,13 +2469,18 @@ void indent(Text *text) { int len, num; char *tmp; - /* char *addtab = "\t"; - int tablen = 1; */ + + char *add = "\t"; + int indentlen = 1; + /* hardcoded: TXT_TABSIZE = 4 spaces: */ int spaceslen = TXT_TABSIZE; - /* hardcoded: use spaces: */ - char *add = tab_to_spaces; - int indentlen = spaceslen; + + /* insert spaces rather then tabs */ + if (text->flags & TXT_TABSTOSPACES){ + add = tab_to_spaces; + indentlen = spaceslen; + } if (!text) return; if (!text->curl) return; @@ -2517,11 +2531,17 @@ void indent(Text *text) void unindent(Text *text) { int num = 0; - /* char *rmtab = "\t"; */ - char *remove = tab_to_spaces; - /* int indenttab = 1; */ - int indentspaces = TXT_TABSIZE; - int indent = indentspaces; + char *remove = "\t"; + int indent = 1; + + /* hardcoded: TXT_TABSIZE = 4 spaces: */ + int spaceslen = TXT_TABSIZE; + + /* insert spaces rather then tabs */ + if (text->flags & TXT_TABSTOSPACES){ + remove = tab_to_spaces; + indent = spaceslen; + } if (!text) return; if (!text->curl) return; diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c index c60001db314..634d9e6ce0d 100644 --- a/source/blender/blenkernel/intern/texture.c +++ b/source/blender/blenkernel/intern/texture.c @@ -858,6 +858,16 @@ void set_current_lamp_texture(Lamp *la, Tex *newtex) } } +bNode *give_current_material_texture_node(Material *ma) +{ + bNode *node; + + if(ma && ma->use_nodes && ma->nodetree) + return nodeGetActiveID(ma->nodetree, ID_TE); + + return NULL; +} + Tex *give_current_material_texture(Material *ma) { MTex *mtex= NULL; @@ -865,6 +875,9 @@ Tex *give_current_material_texture(Material *ma) bNode *node; if(ma && ma->use_nodes && ma->nodetree) { + /* first check texture, then material, this works together + with a hack that clears the active ID flag for textures on + making a material node active */ node= nodeGetActiveID(ma->nodetree, ID_TE); if(node) { @@ -877,6 +890,7 @@ Tex *give_current_material_texture(Material *ma) ma= (Material*)node->id; } } + if(ma) { mtex= ma->mtex[(int)(ma->texact)]; if(mtex) tex= mtex->tex; diff --git a/source/blender/blenkernel/intern/unit.c b/source/blender/blenkernel/intern/unit.c index 1f72c894cc8..1e8896042d6 100644 --- a/source/blender/blenkernel/intern/unit.c +++ b/source/blender/blenkernel/intern/unit.c @@ -20,16 +20,13 @@ * * ***** END GPL LICENSE BLOCK ***** */ - #include <stdlib.h> #include <stdio.h> #include <ctype.h> #include <string.h> -#include <math.h> -#if defined(WIN32) && (!(defined snprintf)) -#define snprintf _snprintf -#endif +#include "BLI_math.h" +#include "BLI_winstuff.h" #define TEMP_STR_SIZE 256 @@ -119,11 +116,18 @@ static struct bUnitDef buNaturalTimeDef[] = { }; static struct bUnitCollection buNaturalTimeCollecton = {buNaturalTimeDef, 3, 0, sizeof(buNaturalTimeDef)/sizeof(bUnitDef)}; + +static struct bUnitDef buNaturalRotDef[] = { + {"degree", "degrees", "°", NULL, "Degrees", M_PI/180.f, 0.0, B_UNIT_DEF_NONE}, + {NULL, NULL, NULL, NULL, NULL, 0.0, 0.0} +}; +static struct bUnitCollection buNaturalRotCollection = {buNaturalRotDef, 0, 0, sizeof(buNaturalRotDef)/sizeof(bUnitDef)}; + #define UNIT_SYSTEM_MAX 3 static struct bUnitCollection *bUnitSystems[][8] = { - {0,0,0,0,0,0,0,0}, - {0,&buMetricLenCollecton, 0,0,0,0, &buNaturalTimeCollecton,0}, /* metric */ - {0,&buImperialLenCollecton, 0,0,0,0, &buNaturalTimeCollecton,0}, /* imperial */ + {0,0,0,0,0,&buNaturalRotCollection,&buNaturalTimeCollecton,0}, + {0,&buMetricLenCollecton, 0,0,0, &buNaturalRotCollection, &buNaturalTimeCollecton,0}, /* metric */ + {0,&buImperialLenCollecton, 0,0,0,&buNaturalRotCollection, &buNaturalTimeCollecton,0}, /* imperial */ {0,0,0,0,0,0,0,0} }; @@ -451,23 +455,25 @@ int bUnit_ReplaceString(char *str, int len_max, char *str_prev, double scale_pre bUnitCollection *usys_iter; int system_iter; - for(system_iter= 1; system_iter<UNIT_SYSTEM_MAX; system_iter++) { + for(system_iter= 0; system_iter<UNIT_SYSTEM_MAX; system_iter++) { if (system_iter != system) { usys_iter= unit_get_system(system_iter, type); - for(unit= usys_iter->units; unit->name; unit++) { - - if((unit->flag & B_UNIT_DEF_SUPPRESS) == 0) { - int ofs = 0; - /* incase there are multiple instances */ - while((ofs=unit_replace(str+ofs, len_max-ofs, str_tmp, scale_pref, unit))) - change= 1; + if (usys_iter) { + for(unit= usys_iter->units; unit->name; unit++) { + + if((unit->flag & B_UNIT_DEF_SUPPRESS) == 0) { + int ofs = 0; + /* incase there are multiple instances */ + while((ofs=unit_replace(str+ofs, len_max-ofs, str_tmp, scale_pref, unit))) + change= 1; + } } } } } } unit= NULL; - + if(change==0) { /* no units given so infer a unit from the previous string or default */ if(str_prev) { @@ -482,9 +488,10 @@ int bUnit_ReplaceString(char *str, int len_max, char *str_prev, double scale_pre } } - if(unit==NULL) + if(unit==NULL || unit->name == NULL) unit= unit_default(usys); + /* add the unit prefix and re-run, use brackets incase there was an expression given */ if(snprintf(str_tmp, sizeof(str_tmp), "(%s)%s", str, unit->name) < sizeof(str_tmp)) { strncpy(str, str_tmp, len_max); @@ -530,7 +537,6 @@ int bUnit_ReplaceString(char *str, int len_max, char *str_prev, double scale_pre } } - // printf("replace %s\n", str); return change; } diff --git a/source/blender/blenkernel/intern/world.c b/source/blender/blenkernel/intern/world.c index b5f8bc81b81..0b49808bf15 100644 --- a/source/blender/blenkernel/intern/world.c +++ b/source/blender/blenkernel/intern/world.c @@ -102,6 +102,9 @@ World *add_world(char *name) wrld->aodist= 10.0f; wrld->aosamp= 5; wrld->aoenergy= 1.0f; + wrld->ao_env_energy= 1.0f; + wrld->ao_indirect_energy= 1.0f; + wrld->ao_indirect_bounces= 1; wrld->aobias= 0.05f; wrld->ao_samp_method = WO_AOSAMP_HAMMERSLEY; wrld->ao_approx_error= 0.25f; diff --git a/source/blender/blenkernel/intern/writeavi.c b/source/blender/blenkernel/intern/writeavi.c index ec3d1185179..0d057525f38 100644 --- a/source/blender/blenkernel/intern/writeavi.c +++ b/source/blender/blenkernel/intern/writeavi.c @@ -45,6 +45,11 @@ #include "BKE_writeavi.h" #include "AVI_avi.h" +/* callbacks */ +static int start_avi(Scene *scene, RenderData *rd, int rectx, int recty, ReportList *reports); +static void end_avi(void); +static int append_avi(RenderData *rd, int frame, int *pixels, int rectx, int recty, ReportList *reports); +static void filepath_avi(char *string, RenderData *rd); /* ********************** general blender movie support ***************************** */ @@ -67,6 +72,7 @@ bMovieHandle *BKE_get_movie_handle(int imtype) mh.append_movie= append_avi; mh.end_movie= end_avi; mh.get_next_frame = NULL; + mh.get_movie_path = filepath_avi; /* do the platform specific handles */ #ifdef __sgi @@ -86,6 +92,7 @@ bMovieHandle *BKE_get_movie_handle(int imtype) mh.start_movie= start_qt; mh.append_movie= append_qt; mh.end_movie= end_qt; + mh.get_movie_path = filepath_qt; } #endif #ifdef WITH_FFMPEG @@ -93,6 +100,7 @@ bMovieHandle *BKE_get_movie_handle(int imtype) mh.start_movie = start_ffmpeg; mh.append_movie = append_ffmpeg; mh.end_movie = end_ffmpeg; + mh.get_movie_path = filepath_ffmpeg; } #endif if (imtype == R_FRAMESERVER) { @@ -111,24 +119,26 @@ bMovieHandle *BKE_get_movie_handle(int imtype) static AviMovie *avi=NULL; static int sframe; -void makeavistring (RenderData *rd, char *string) +static void filepath_avi (char *string, RenderData *rd) { - char txt[64]; - - if (string==0) return; + if (string==NULL) return; strcpy(string, rd->pic); BLI_convertstringcode(string, G.sce); BLI_make_existing_file(string); - if (BLI_strcasecmp(string + strlen(string) - 4, ".avi")) { - sprintf(txt, "%04d_%04d.avi", (rd->sfra) , (rd->efra) ); - strcat(string, txt); + if (!BLI_testextensie(string, ".avi")) { + /* if we dont have any #'s to insert numbers into, use 4 numbers by default */ + if (strchr(string, '#')==NULL) + strcat(string, "####"); /* 4 numbers */ + + BLI_convertstringframe_range(string, rd->sfra, rd->efra); + strcat(string, ".avi"); } } -int start_avi(Scene *scene, RenderData *rd, int rectx, int recty, ReportList *reports) +static int start_avi(Scene *scene, RenderData *rd, int rectx, int recty, ReportList *reports) { int x, y; char name[256]; @@ -136,7 +146,7 @@ int start_avi(Scene *scene, RenderData *rd, int rectx, int recty, ReportList *re int quality; double framerate; - makeavistring(rd, name); + filepath_avi(name, rd); sframe = (rd->sfra); x = rectx; @@ -174,7 +184,7 @@ int start_avi(Scene *scene, RenderData *rd, int rectx, int recty, ReportList *re return 1; } -int append_avi(RenderData *rd, int frame, int *pixels, int rectx, int recty, ReportList *reports) +static int append_avi(RenderData *rd, int frame, int *pixels, int rectx, int recty, ReportList *reports) { unsigned int *rt1, *rt2, *rectot; int x, y; @@ -218,3 +228,12 @@ void end_avi(void) avi= NULL; } +/* similar to BKE_makepicstring() */ +void BKE_makeanimstring(char *string, RenderData *rd) +{ + bMovieHandle *mh= BKE_get_movie_handle(rd->imtype); + if(mh->get_movie_path) + mh->get_movie_path(string, rd); + else + string[0]= '\0'; +} diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c index 5b58f0bfedc..56924cb0dfa 100644 --- a/source/blender/blenkernel/intern/writeffmpeg.c +++ b/source/blender/blenkernel/intern/writeffmpeg.c @@ -75,7 +75,6 @@ #endif extern void do_init_ffmpeg(); -static void makeffmpegstring(RenderData* rd, char* string); static int ffmpeg_type = 0; static int ffmpeg_codec = CODEC_ID_MPEG4; @@ -638,7 +637,7 @@ static int start_ffmpeg_impl(struct RenderData *rd, int rectx, int recty, Report do_init_ffmpeg(); /* Determine the correct filename */ - makeffmpegstring(rd, name); + filepath_ffmpeg(name, rd); fprintf(stderr, "Starting output to %s(ffmpeg)...\n" " Using type=%d, codec=%d, audio_codec=%d,\n" " video_bitrate=%d, audio_bitrate=%d,\n" @@ -772,16 +771,7 @@ static int start_ffmpeg_impl(struct RenderData *rd, int rectx, int recty, Report ********************************************************************** */ /* Get the output filename-- similar to the other output formats */ -static void makeffmpegstring(RenderData* rd, char* string) { - - // XXX quick define, solve! -#define FILE_MAXDIR 256 -#define FILE_MAXFILE 126 - - char txt[FILE_MAXDIR+FILE_MAXFILE]; - // XXX -#undef FILE_MAXDIR -#undef FILE_MAXFILE +void filepath_ffmpeg(char* string, RenderData* rd) { char autosplit[20]; const char ** exts = get_file_extensions(rd->ffcodecdata.type); @@ -811,9 +801,13 @@ static void makeffmpegstring(RenderData* rd, char* string) { if (!*fe) { strcat(string, autosplit); - sprintf(txt, "%04d_%04d%s", (rd->sfra), - (rd->efra), *exts); - strcat(string, txt); + + /* if we dont have any #'s to insert numbers into, use 4 numbers by default */ + if (strchr(string, '#')==NULL) + strcat(string, "####"); /* 4 numbers */ + + BLI_convertstringframe_range(string, rd->sfra, rd->efra); + strcat(string, *exts); } else { *(string + strlen(string) - strlen(*fe)) = 0; strcat(string, autosplit); diff --git a/source/blender/blenlib/BLI_bpath.h b/source/blender/blenlib/BLI_bpath.h index 874c8c7828c..730e3eda283 100644 --- a/source/blender/blenlib/BLI_bpath.h +++ b/source/blender/blenlib/BLI_bpath.h @@ -47,11 +47,13 @@ struct BPathIterator { void (*setpath_callback)(struct BPathIterator *, char *); void (*getpath_callback)(struct BPathIterator *, char *); + char* base_path; /* base path, the directry the blend file is in - normally G.sce */ + /* only for seq data */ struct BPathIteratorSeqData seqdata; }; -void BLI_bpathIterator_init (struct BPathIterator *bpi); +void BLI_bpathIterator_init (struct BPathIterator *bpi, char *base_path); void BLI_bpathIterator_free (struct BPathIterator *bpi); char* BLI_bpathIterator_getLib (struct BPathIterator *bpi); char* BLI_bpathIterator_getName (struct BPathIterator *bpi); @@ -66,7 +68,7 @@ void BLI_bpathIterator_setPath (struct BPathIterator *bpi, char *path); /* high level funcs */ /* creates a text file with missing files if there are any */ -void checkMissingFiles(char *txtname ); -void makeFilesRelative(char *txtname, int *tot, int *changed, int *failed, int *linked); -void makeFilesAbsolute(char *txtname, int *tot, int *changed, int *failed, int *linked); -void findMissingFiles(char *str); +void checkMissingFiles(char *basepath, ReportList *reports); +void makeFilesRelative(char *basepath, ReportList *reports); +void makeFilesAbsolute(char *basepath, ReportList *reports); +void findMissingFiles(char *basepath, char *str); diff --git a/source/blender/blenlib/BLI_ghash.h b/source/blender/blenlib/BLI_ghash.h index c9a8b1b841f..0e467b02110 100644 --- a/source/blender/blenlib/BLI_ghash.h +++ b/source/blender/blenlib/BLI_ghash.h @@ -36,27 +36,49 @@ extern "C" { #endif -struct GHash; -typedef struct GHash GHash; +#include "stdio.h" +#include "stdlib.h" +#include "string.h" -typedef struct GHashIterator { - GHash *gh; - int curBucket; - struct Entry *curEntry; -} GHashIterator; +#include "BKE_utildefines.h" +#include "MEM_guardedalloc.h" + +#include "BLI_mempool.h" +#include "BLI_blenlib.h" typedef unsigned int (*GHashHashFP) (void *key); typedef int (*GHashCmpFP) (void *a, void *b); typedef void (*GHashKeyFreeFP) (void *key); typedef void (*GHashValFreeFP) (void *val); +typedef struct Entry { + struct Entry *next; + + void *key, *val; +} Entry; + +typedef struct GHash { + GHashHashFP hashfp; + GHashCmpFP cmpfp; + + Entry **buckets; + struct BLI_mempool *entrypool; + int nbuckets, nentries, cursize; +} GHash; + +typedef struct GHashIterator { + GHash *gh; + int curBucket; + struct Entry *curEntry; +} GHashIterator; + GHash* BLI_ghash_new (GHashHashFP hashfp, GHashCmpFP cmpfp); void BLI_ghash_free (GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp); -void BLI_ghash_insert (GHash *gh, void *key, void *val); -int BLI_ghash_remove (GHash *gh, void *key, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp); -void* BLI_ghash_lookup (GHash *gh, void *key); -int BLI_ghash_haskey (GHash *gh, void *key); +//BM_INLINE void BLI_ghash_insert (GHash *gh, void *key, void *val); +//BM_INLINE int BLI_ghash_remove (GHash *gh, void *key, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp); +//BM_INLINE void* BLI_ghash_lookup (GHash *gh, void *key); +//BM_INLINE int BLI_ghash_haskey (GHash *gh, void *key); int BLI_ghash_size (GHash *gh); @@ -129,9 +151,125 @@ int BLI_ghashutil_strcmp (void *a, void *b); unsigned int BLI_ghashutil_inthash (void *ptr); int BLI_ghashutil_intcmp(void *a, void *b); +/*begin of macro-inlined functions*/ +extern unsigned int hashsizes[]; + +#if 0 +#define BLI_ghash_insert(gh, _k, _v){\ + unsigned int _hash= (gh)->hashfp(_k)%gh->nbuckets;\ + Entry *_e= BLI_mempool_alloc((gh)->entrypool);\ + _e->key= _k;\ + _e->val= _v;\ + _e->next= (gh)->buckets[_hash];\ + (gh)->buckets[_hash]= _e;\ + if (++(gh)->nentries>(gh)->nbuckets*3) {\ + Entry *_e, **_old= (gh)->buckets;\ + int _i, _nold= (gh)->nbuckets;\ + (gh)->nbuckets= hashsizes[++(gh)->cursize];\ + (gh)->buckets= malloc((gh)->nbuckets*sizeof(*(gh)->buckets));\ + memset((gh)->buckets, 0, (gh)->nbuckets*sizeof(*(gh)->buckets));\ + for (_i=0; _i<_nold; _i++) {\ + for (_e= _old[_i]; _e;) {\ + Entry *_n= _e->next;\ + _hash= (gh)->hashfp(_e->key)%(gh)->nbuckets;\ + _e->next= (gh)->buckets[_hash];\ + (gh)->buckets[_hash]= _e;\ + _e= _n;\ + }\ + }\ + free(_old); } } +#endif + +/*---------inlined functions---------*/ +BM_INLINE void BLI_ghash_insert(GHash *gh, void *key, void *val) { + unsigned int hash= gh->hashfp(key)%gh->nbuckets; + Entry *e= (Entry*) BLI_mempool_alloc(gh->entrypool); + + e->key= key; + e->val= val; + e->next= gh->buckets[hash]; + gh->buckets[hash]= e; + + if (++gh->nentries>(float)gh->nbuckets/2) { + Entry *e, **old= gh->buckets; + int i, nold= gh->nbuckets; + + gh->nbuckets= hashsizes[++gh->cursize]; + gh->buckets= (Entry**)MEM_mallocN(gh->nbuckets*sizeof(*gh->buckets), "buckets"); + memset(gh->buckets, 0, gh->nbuckets*sizeof(*gh->buckets)); + + for (i=0; i<nold; i++) { + for (e= old[i]; e;) { + Entry *n= e->next; + + hash= gh->hashfp(e->key)%gh->nbuckets; + e->next= gh->buckets[hash]; + gh->buckets[hash]= e; + + e= n; + } + } + + MEM_freeN(old); + } +} + +BM_INLINE void* BLI_ghash_lookup(GHash *gh, void *key) +{ + if(gh) { + unsigned int hash= gh->hashfp(key)%gh->nbuckets; + Entry *e; + + for (e= gh->buckets[hash]; e; e= e->next) + if (gh->cmpfp(key, e->key)==0) + return e->val; + } + return NULL; +} + +BM_INLINE int BLI_ghash_remove (GHash *gh, void *key, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp) +{ + unsigned int hash= gh->hashfp(key)%gh->nbuckets; + Entry *e; + Entry *p = 0; + + for (e= gh->buckets[hash]; e; e= e->next) { + if (gh->cmpfp(key, e->key)==0) { + Entry *n= e->next; + + if (keyfreefp) keyfreefp(e->key); + if (valfreefp) valfreefp(e->val); + BLI_mempool_free(gh->entrypool, e); + + + e= n; + if (p) + p->next = n; + else + gh->buckets[hash] = n; + + --gh->nentries; + return 1; + } + p = e; + } + + return 0; +} + +BM_INLINE int BLI_ghash_haskey(GHash *gh, void *key) { + unsigned int hash= gh->hashfp(key)%gh->nbuckets; + Entry *e; + + for (e= gh->buckets[hash]; e; e= e->next) + if (gh->cmpfp(key, e->key)==0) + return 1; + + return 0; +} + #ifdef __cplusplus } #endif #endif - diff --git a/source/blender/blenlib/BLI_gsqueue.h b/source/blender/blenlib/BLI_gsqueue.h index 16157ebe0a8..29b15bcf55a 100644 --- a/source/blender/blenlib/BLI_gsqueue.h +++ b/source/blender/blenlib/BLI_gsqueue.h @@ -49,6 +49,11 @@ GSQueue* BLI_gsqueue_new (int elem_size); int BLI_gsqueue_is_empty(GSQueue *gq); /** + * Query number elements in the queue + */ +int BLI_gsqueue_size(GSQueue *gq); + + /** * Access the item at the head of the queue * without removing it. * diff --git a/source/blender/blenlib/BLI_math_base.h b/source/blender/blenlib/BLI_math_base.h index af301386920..d9161aa2024 100644 --- a/source/blender/blenlib/BLI_math_base.h +++ b/source/blender/blenlib/BLI_math_base.h @@ -37,6 +37,7 @@ extern "C" { #endif #include <math.h> +#include "BLI_math_inline.h" #ifndef M_PI #define M_PI 3.14159265358979323846 @@ -130,23 +131,30 @@ extern "C" { #define CLAMP(a, b, c) if((a)<(b)) (a)=(b); else if((a)>(c)) (a)=(c) #endif +#ifdef BLI_MATH_INLINE +#include "intern/math_base_inline.c" +#endif + /******************************* Float ******************************/ -float sqrt3f(float f); -double sqrt3d(double d); +MINLINE float sqrt3f(float f); +MINLINE double sqrt3d(double d); + +MINLINE float saacosf(float f); +MINLINE float saasinf(float f); +MINLINE float sasqrtf(float f); +MINLINE float saacos(float fac); +MINLINE float saasin(float fac); +MINLINE float sasqrt(float fac); -float saacosf(float f); -float saasinf(float f); -float sasqrtf(float f); -float saacos(float fac); -float saasin(float fac); -float sasqrt(float fac); +MINLINE float interpf(float a, float b, float t); -float interpf(float a, float b, float t); +MINLINE float minf(float a, float b); +MINLINE float maxf(float a, float b); -float power_of_2(float f); +MINLINE float power_of_2(float f); -float shell_angle_to_dist(float angle); +MINLINE float shell_angle_to_dist(float angle); double double_round(double x, int ndigits); diff --git a/source/blender/blenlib/BLI_math_color.h b/source/blender/blenlib/BLI_math_color.h index 7444e01c3a6..1911220bf05 100644 --- a/source/blender/blenlib/BLI_math_color.h +++ b/source/blender/blenlib/BLI_math_color.h @@ -59,6 +59,8 @@ 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); +float rgb_to_grayscale(float rgb[3]); + /***************** Profile Transformations ********************/ void gamma_correct(float *c, float gamma); @@ -73,6 +75,13 @@ void linearrgb_to_srgb_v3_v3(float *col_to, float *col_from); int constrain_rgb(float *r, float *g, float *b); void minmax_rgb(short c[3]); + +/***************** lift/gamma/gain / ASC-CDL conversion *****************/ + +void lift_gamma_gain_to_asc_cdl(float *lift, float *gamma, float *gain, float *offset, float *slope, float *power); + +void rgb_byte_to_float(char *in, float *out); +void rgb_float_to_byte(float *in, char *out); #ifdef __cplusplus } diff --git a/source/blender/blenlib/BLI_math_geom.h b/source/blender/blenlib/BLI_math_geom.h index f650a55d8ad..33d5c887b54 100644 --- a/source/blender/blenlib/BLI_math_geom.h +++ b/source/blender/blenlib/BLI_math_geom.h @@ -144,6 +144,9 @@ void perspective_m4(float mat[4][4], float left, float right, void orthographic_m4(float mat[4][4], float left, float right, float bottom, float top, float nearClip, float farClip); +int box_clip_bounds_m4(float boundbox[2][3], + float bounds[4], float winmat[4][4]); + /********************************** Mapping **********************************/ void map_to_tube(float *u, float *v, float x, float y, float z); diff --git a/source/blender/blenlib/BLI_math_inline.h b/source/blender/blenlib/BLI_math_inline.h new file mode 100644 index 00000000000..f8220681bb7 --- /dev/null +++ b/source/blender/blenlib/BLI_math_inline.h @@ -0,0 +1,53 @@ +/** + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: some of this file. + * + * ***** END GPL LICENSE BLOCK ***** + * */ + +#ifndef BLI_MATH_INLINE_H +#define BLI_MATH_INLINE_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* add platform/compiler checks here if it is not supported */ +#define BLI_MATH_INLINE + +#ifdef BLI_MATH_INLINE +#ifdef _MSC_VER +#define MINLINE static __forceinline +#else +#define MINLINE static inline +#endif +#else +#define MINLINE +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* BLI_MATH_INLINE_H */ + diff --git a/source/blender/blenlib/BLI_math_vector.h b/source/blender/blenlib/BLI_math_vector.h index 4dbef4ef07c..125e02bb481 100644 --- a/source/blender/blenlib/BLI_math_vector.h +++ b/source/blender/blenlib/BLI_math_vector.h @@ -32,30 +32,23 @@ extern "C" { #endif -/* add platform/compiler checks here if it is not supported */ -#define BLI_MATH_INLINE - #ifdef BLI_MATH_INLINE -#ifdef _MSC_VER -#define MINLINE static __inline -#else -#define MINLINE static inline -#endif #include "intern/math_vector_inline.c" -#else -#define MINLINE #endif /************************************* Init ***********************************/ MINLINE void zero_v2(float r[2]); MINLINE void zero_v3(float r[3]); +MINLINE void zero_v4(float r[4]); MINLINE void copy_v2_v2(float r[2], const float a[2]); MINLINE void copy_v3_v3(float r[3], const float a[3]); +MINLINE void copy_v4_v4(float r[4], float a[4]); MINLINE void swap_v2_v2(float a[2], float b[2]); MINLINE void swap_v3_v3(float a[3], float b[3]); +MINLINE void swap_v4_v4(float a[4], float b[4]); /********************************* Arithmetic ********************************/ @@ -70,13 +63,16 @@ MINLINE void sub_v3_v3(float r[3], float a[3]); MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3]); MINLINE void mul_v2_fl(float r[2], float f); +MINLINE void mul_v2_v2fl(float r[2], const float a[2], float f); MINLINE void mul_v3_fl(float r[3], float f); -MINLINE void mul_v3_v3fl(float r[3], float a[3], float f); +MINLINE void mul_v3_v3fl(float r[3], const float a[3], float f); +MINLINE void mul_v2_v2(float r[2], const float a[2]); 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_v2_v2v2fl(float r[2], const float a[2], const float b[2], const float f); 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]); @@ -99,7 +95,9 @@ MINLINE float len_v3(const float a[3]); MINLINE float len_v3v3(const float a[3], const float b[3]); MINLINE float normalize_v2(float r[2]); +MINLINE float normalize_v2_v2(float r[2], const float a[2]); MINLINE float normalize_v3(float r[3]); +MINLINE float normalize_v3_v3(float r[3], const float a[3]); /******************************* Interpolation *******************************/ @@ -113,12 +111,14 @@ void mid_v3_v3v3(float r[3], float a[3], float b[3]); /********************************* Comparison ********************************/ -int is_zero_v3(float a[3]); -int equals_v3v3(float a[3], float b[3]); -int compare_v3v3(float a[3], float b[3], float limit); -int compare_len_v3v3(float a[3], float b[3], float limit); +MINLINE int is_zero_v3(float a[3]); +MINLINE int is_one_v3(float a[3]); + +MINLINE int equals_v3v3(float a[3], float b[3]); +MINLINE int compare_v3v3(float a[3], float b[3], float limit); +MINLINE int compare_len_v3v3(float a[3], float b[3], float limit); -int compare_v4v4(float a[4], float b[4], float limit); +MINLINE int compare_v4v4(float a[4], float b[4], float limit); /********************************** Angles ***********************************/ /* - angle with 2 arguments is angle between vector */ diff --git a/source/blender/blenlib/BLI_mempool.h b/source/blender/blenlib/BLI_mempool.h index 8b31459dd38..a2fd80de417 100644 --- a/source/blender/blenlib/BLI_mempool.h +++ b/source/blender/blenlib/BLI_mempool.h @@ -34,7 +34,7 @@ struct BLI_mempool; typedef struct BLI_mempool BLI_mempool; -BLI_mempool *BLI_mempool_create(int esize, int tote, int pchunk); +BLI_mempool *BLI_mempool_create(int esize, int tote, int pchunk, int use_sysmalloc); void *BLI_mempool_alloc(BLI_mempool *pool); void *BLI_mempool_calloc(BLI_mempool *pool); void BLI_mempool_free(BLI_mempool *pool, void *addr); diff --git a/source/blender/blenlib/BLI_path_util.h b/source/blender/blenlib/BLI_path_util.h index ca483903d46..f9ef3d8c828 100644 --- a/source/blender/blenlib/BLI_path_util.h +++ b/source/blender/blenlib/BLI_path_util.h @@ -98,6 +98,7 @@ int BLI_has_parent(char *path); */ int BLI_convertstringcode(char *path, const char *basepath); int BLI_convertstringframe(char *path, int frame); +int BLI_convertstringframe_range(char *path, int sta, int end); int BLI_convertstringcwd(char *path); void BLI_makestringcode(const char *relfile, char *file); diff --git a/source/blender/blenlib/BLI_storage_types.h b/source/blender/blenlib/BLI_storage_types.h index 36d96f6075c..9ae7527253e 100644 --- a/source/blender/blenlib/BLI_storage_types.h +++ b/source/blender/blenlib/BLI_storage_types.h @@ -55,6 +55,7 @@ struct direntry{ char *string; mode_t type; char *relname; + char *path; #if (defined(WIN32) || defined(WIN64)) && (_MSC_VER>=1500) struct _stat64 s; #else diff --git a/source/blender/blenlib/BLI_string.h b/source/blender/blenlib/BLI_string.h index fb345de72e9..5ee97ff516b 100644 --- a/source/blender/blenlib/BLI_string.h +++ b/source/blender/blenlib/BLI_string.h @@ -66,6 +66,14 @@ char *BLI_strdupn(const char *str, int len); * the size of dst) * @retval Returns dst */ +char *BLI_strdupcat(const char *str1, const char *str2); + + /** + * Appends the two strings, and returns new mallocN'ed string + * @param str1 first string for copy + * @param str2 second string for append + * @retval Returns dst + */ char *BLI_strncpy(char *dst, const char *src, int maxncpy); /* Makes a copy of the text within the "" that appear after some text 'blahblah' diff --git a/source/blender/blenlib/BLI_threads.h b/source/blender/blenlib/BLI_threads.h index ace9ddd729f..113229863d8 100644 --- a/source/blender/blenlib/BLI_threads.h +++ b/source/blender/blenlib/BLI_threads.h @@ -34,7 +34,7 @@ #include <pthread.h> /* for tables, button in UI, etc */ -#define BLENDER_MAX_THREADS 8 +#define BLENDER_MAX_THREADS 64 struct ListBase; @@ -107,6 +107,21 @@ void BLI_destroy_worker(struct ThreadedWorker *worker); * NOTE: inserting work is NOT thread safe, so make sure it is only done from one thread */ void BLI_insert_work(struct ThreadedWorker *worker, void *param); +/* ThreadWorkQueue + * + * Thread-safe work queue to push work/pointers between threads. */ + +typedef struct ThreadQueue ThreadQueue; + +ThreadQueue *BLI_thread_queue_init(); +void BLI_thread_queue_free(ThreadQueue *queue); + +void BLI_thread_queue_push(ThreadQueue *queue, void *work); +void *BLI_thread_queue_pop(ThreadQueue *queue); +void *BLI_thread_queue_pop_timeout(ThreadQueue *queue, int ms); +int BLI_thread_queue_size(ThreadQueue *queue); + +void BLI_thread_queue_nowait(ThreadQueue *queue); #endif diff --git a/source/blender/blenlib/BLI_winstuff.h b/source/blender/blenlib/BLI_winstuff.h index 77d41e2b96a..677974928a4 100644 --- a/source/blender/blenlib/BLI_winstuff.h +++ b/source/blender/blenlib/BLI_winstuff.h @@ -32,6 +32,8 @@ #ifndef __WINSTUFF_H__ #define __WINSTUFF_H__ +#ifdef _WIN32 + #ifndef FREE_WINDOWS #pragma warning(once: 4761 4305 4244 4018) #endif @@ -139,5 +141,7 @@ int BLI_getInstallationDir(char *str); } #endif +#endif + #endif /* __WINSTUFF_H__ */ diff --git a/source/blender/blenlib/intern/BLI_ghash.c b/source/blender/blenlib/intern/BLI_ghash.c index 80cd507520c..214975ab4ef 100644 --- a/source/blender/blenlib/intern/BLI_ghash.c +++ b/source/blender/blenlib/intern/BLI_ghash.c @@ -33,17 +33,20 @@ #include "MEM_guardedalloc.h" #include "BLI_ghash.h" +#include "BLI_mempool.h" #include "BLO_sys_types.h" // for intptr_t support +#include "BKE_utildefines.h" + #ifdef HAVE_CONFIG_H #include <config.h> #endif /***/ -static unsigned int hashsizes[]= { - 1, 3, 5, 11, 17, 37, 67, 131, 257, 521, 1031, 2053, 4099, 8209, +unsigned int hashsizes[]= { + 5, 11, 17, 37, 67, 131, 257, 521, 1031, 2053, 4099, 8209, 16411, 32771, 65537, 131101, 262147, 524309, 1048583, 2097169, 4194319, 8388617, 16777259, 33554467, 67108879, 134217757, 268435459 @@ -51,124 +54,27 @@ static unsigned int hashsizes[]= { /***/ -typedef struct Entry Entry; -struct Entry { - Entry *next; - - void *key, *val; -}; - -struct GHash { - GHashHashFP hashfp; - GHashCmpFP cmpfp; - - Entry **buckets; - int nbuckets, nentries, cursize; -}; - /***/ GHash *BLI_ghash_new(GHashHashFP hashfp, GHashCmpFP cmpfp) { GHash *gh= MEM_mallocN(sizeof(*gh), "GHash"); gh->hashfp= hashfp; gh->cmpfp= cmpfp; - + gh->entrypool = BLI_mempool_create(sizeof(Entry), 1024, 1024, 0); + gh->cursize= 0; gh->nentries= 0; gh->nbuckets= hashsizes[gh->cursize]; - gh->buckets= malloc(gh->nbuckets*sizeof(*gh->buckets)); + gh->buckets= MEM_mallocN(gh->nbuckets*sizeof(*gh->buckets), "buckets"); memset(gh->buckets, 0, gh->nbuckets*sizeof(*gh->buckets)); return gh; } -void BLI_ghash_insert(GHash *gh, void *key, void *val) { - unsigned int hash= gh->hashfp(key)%gh->nbuckets; - Entry *e= malloc(sizeof(*e)); - - e->key= key; - e->val= val; - e->next= gh->buckets[hash]; - gh->buckets[hash]= e; - - if (++gh->nentries>gh->nbuckets*3) { - Entry *e, **old= gh->buckets; - int i, nold= gh->nbuckets; - - gh->nbuckets= hashsizes[++gh->cursize]; - gh->buckets= malloc(gh->nbuckets*sizeof(*gh->buckets)); - memset(gh->buckets, 0, gh->nbuckets*sizeof(*gh->buckets)); - - for (i=0; i<nold; i++) { - for (e= old[i]; e;) { - Entry *n= e->next; - - hash= gh->hashfp(e->key)%gh->nbuckets; - e->next= gh->buckets[hash]; - gh->buckets[hash]= e; - - e= n; - } - } - - free(old); - } -} - -void* BLI_ghash_lookup(GHash *gh, void *key) -{ - if(gh) { - unsigned int hash= gh->hashfp(key)%gh->nbuckets; - Entry *e; - - for (e= gh->buckets[hash]; e; e= e->next) - if (gh->cmpfp(key, e->key)==0) - return e->val; - } - return NULL; -} - -int BLI_ghash_remove (GHash *gh, void *key, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp) -{ - unsigned int hash= gh->hashfp(key)%gh->nbuckets; - Entry *e; - Entry *p = 0; - - for (e= gh->buckets[hash]; e; e= e->next) { - if (gh->cmpfp(key, e->key)==0) { - Entry *n= e->next; - - if (keyfreefp) keyfreefp(e->key); - if (valfreefp) valfreefp(e->val); - free(e); - - - e= n; - if (p) - p->next = n; - else - gh->buckets[hash] = n; - - --gh->nentries; - return 1; - } - p = e; - } - - return 0; -} - -int BLI_ghash_haskey(GHash *gh, void *key) { - unsigned int hash= gh->hashfp(key)%gh->nbuckets; - Entry *e; - - for (e= gh->buckets[hash]; e; e= e->next) - if (gh->cmpfp(key, e->key)==0) - return 1; - - return 0; -} +#ifdef BLI_ghash_insert +#undef BLI_ghash_insert +#endif int BLI_ghash_size(GHash *gh) { return gh->nentries; @@ -177,21 +83,23 @@ int BLI_ghash_size(GHash *gh) { void BLI_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp) { int i; - for (i=0; i<gh->nbuckets; i++) { - Entry *e; - - for (e= gh->buckets[i]; e; ) { - Entry *n= e->next; - - if (keyfreefp) keyfreefp(e->key); - if (valfreefp) valfreefp(e->val); - free(e); + if (keyfreefp || valfreefp) { + for (i=0; i<gh->nbuckets; i++) { + Entry *e; - e= n; + for (e= gh->buckets[i]; e; ) { + Entry *n= e->next; + + if (keyfreefp) keyfreefp(e->key); + if (valfreefp) valfreefp(e->val); + + e= n; + } } } - free(gh->buckets); + MEM_freeN(gh->buckets); + BLI_mempool_destroy(gh->entrypool); gh->buckets = 0; gh->nentries = 0; gh->nbuckets = 0; @@ -201,7 +109,7 @@ void BLI_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreef /***/ GHashIterator *BLI_ghashIterator_new(GHash *gh) { - GHashIterator *ghi= malloc(sizeof(*ghi)); + GHashIterator *ghi= MEM_mallocN(sizeof(*ghi), "ghash iterator"); ghi->gh= gh; ghi->curEntry= NULL; ghi->curBucket= -1; @@ -225,7 +133,7 @@ void BLI_ghashIterator_init(GHashIterator *ghi, GHash *gh) { } } void BLI_ghashIterator_free(GHashIterator *ghi) { - free(ghi); + MEM_freeN(ghi); } void *BLI_ghashIterator_getKey(GHashIterator *ghi) { diff --git a/source/blender/blenlib/intern/BLI_kdopbvh.c b/source/blender/blenlib/intern/BLI_kdopbvh.c index eebff8dfaef..a91c24471bb 100644 --- a/source/blender/blenlib/intern/BLI_kdopbvh.c +++ b/source/blender/blenlib/intern/BLI_kdopbvh.c @@ -1502,7 +1502,8 @@ static void dfs_raycast(BVHRayCastData *data, BVHNode *node) //ray-bv is really fast.. and simple tests revealed its worth to test it //before calling the ray-primitive functions - float dist = fast_ray_nearest_hit(data, node); + /* XXX: temporary solution for particles untill fast_ray_nearest_hit supports ray.radius */ + float dist = (data->ray.radius > 0.0f) ? ray_nearest_hit(data, node->bv) : fast_ray_nearest_hit(data, node); if(dist >= data->hit.dist) return; if(node->totnode == 0) diff --git a/source/blender/blenlib/intern/BLI_mempool.c b/source/blender/blenlib/intern/BLI_mempool.c index 485ba7cbd08..373b4d5add9 100644 --- a/source/blender/blenlib/intern/BLI_mempool.c +++ b/source/blender/blenlib/intern/BLI_mempool.c @@ -49,9 +49,11 @@ typedef struct BLI_mempool{ struct ListBase chunks; int esize, csize, pchunk; /*size of elements and chunks in bytes and number of elements per chunk*/ struct BLI_freenode *free; /*free element list. Interleaved into chunk datas.*/ + int totalloc, totused; /*total number of elements allocated in total, and currently in use*/ + int use_sysmalloc; }BLI_mempool; -BLI_mempool *BLI_mempool_create(int esize, int tote, int pchunk) +BLI_mempool *BLI_mempool_create(int esize, int tote, int pchunk, int use_sysmalloc) { BLI_mempool *pool = NULL; BLI_freenode *lasttail = NULL, *curnode = NULL; int i,j, maxchunks; @@ -61,19 +63,20 @@ BLI_mempool *BLI_mempool_create(int esize, int tote, int pchunk) esize = sizeof(void*); /*allocate the pool structure*/ - pool = MEM_mallocN(sizeof(BLI_mempool),"memory pool"); + pool = use_sysmalloc ? malloc(sizeof(BLI_mempool)) : MEM_mallocN(sizeof(BLI_mempool), "memory pool"); pool->esize = esize; + pool->use_sysmalloc = use_sysmalloc; pool->pchunk = pchunk; pool->csize = esize * pchunk; pool->chunks.first = pool->chunks.last = NULL; - maxchunks = tote / pchunk; + maxchunks = tote / pchunk + 1; /*allocate the actual chunks*/ for(i=0; i < maxchunks; i++){ - BLI_mempool_chunk *mpchunk = MEM_mallocN(sizeof(BLI_mempool_chunk), "BLI_Mempool Chunk"); + BLI_mempool_chunk *mpchunk = use_sysmalloc ? malloc(sizeof(BLI_mempool_chunk)) : MEM_mallocN(sizeof(BLI_mempool_chunk), "BLI_Mempool Chunk"); mpchunk->next = mpchunk->prev = NULL; - mpchunk->data = MEM_mallocN(pool->csize, "BLI Mempool Chunk Data"); + mpchunk->data = use_sysmalloc ? malloc(pool->csize) : MEM_mallocN(pool->csize, "BLI Mempool Chunk Data"); BLI_addtail(&(pool->chunks), mpchunk); if(i==0) pool->free = mpchunk->data; /*start of the list*/ @@ -87,6 +90,8 @@ BLI_mempool *BLI_mempool_create(int esize, int tote, int pchunk) if(lasttail) lasttail->next = mpchunk->data; /*set the end of this chunks memoryy to the new tail for next iteration*/ lasttail = curnode; + + pool->totalloc += pool->pchunk; } /*terminate the list*/ curnode->next = NULL; @@ -98,11 +103,13 @@ void *BLI_mempool_alloc(BLI_mempool *pool){ char *addr=NULL; int j; + pool->totused++; + if(!(pool->free)){ /*need to allocate a new chunk*/ - BLI_mempool_chunk *mpchunk = MEM_mallocN(sizeof(BLI_mempool_chunk), "BLI_Mempool Chunk"); + BLI_mempool_chunk *mpchunk = pool->use_sysmalloc ? malloc(sizeof(BLI_mempool_chunk)) : MEM_mallocN(sizeof(BLI_mempool_chunk), "BLI_Mempool Chunk"); mpchunk->next = mpchunk->prev = NULL; - mpchunk->data = MEM_mallocN(pool->csize, "BLI_Mempool Chunk Data"); + mpchunk->data = pool->use_sysmalloc ? malloc(pool->csize) : MEM_mallocN(pool->csize, "BLI_Mempool Chunk Data"); BLI_addtail(&(pool->chunks), mpchunk); pool->free = mpchunk->data; /*start of the list*/ @@ -112,6 +119,8 @@ void *BLI_mempool_alloc(BLI_mempool *pool){ curnode->next = (BLI_freenode*)addr; } curnode->next = NULL; /*terminate the list*/ + + pool->totalloc += pool->pchunk; } retval = pool->free; @@ -128,16 +137,48 @@ void *BLI_mempool_calloc(BLI_mempool *pool){ } - void BLI_mempool_free(BLI_mempool *pool, void *addr){ //doesnt protect against double frees, dont be stupid! BLI_freenode *newhead = addr; + BLI_freenode *curnode=NULL; + char *tmpaddr=NULL; + int i; + newhead->next = pool->free; pool->free = newhead; + + pool->totused--; + + /*nothing is in use; free all the chunks except the first*/ + if (pool->totused == 0) { + BLI_mempool_chunk *mpchunk=NULL, *first; + + first = pool->chunks.first; + BLI_remlink(&pool->chunks, first); + + for(mpchunk = pool->chunks.first; mpchunk; mpchunk = mpchunk->next) + pool->use_sysmalloc ? free(mpchunk->data) : MEM_freeN(mpchunk->data); + + pool->use_sysmalloc ? BLI_freelist(&(pool->chunks)) : BLI_freelistN(&(pool->chunks)); + + BLI_addtail(&pool->chunks, first); + pool->totalloc = pool->pchunk; + + pool->free = first->data; /*start of the list*/ + for(tmpaddr = first->data, i=0; i < pool->pchunk; i++){ + curnode = ((BLI_freenode*)tmpaddr); + tmpaddr += pool->esize; + curnode->next = (BLI_freenode*)tmpaddr; + } + curnode->next = NULL; /*terminate the list*/ + } } + void BLI_mempool_destroy(BLI_mempool *pool) { BLI_mempool_chunk *mpchunk=NULL; - for(mpchunk = pool->chunks.first; mpchunk; mpchunk = mpchunk->next) MEM_freeN(mpchunk->data); - BLI_freelistN(&(pool->chunks)); - MEM_freeN(pool); + for(mpchunk = pool->chunks.first; mpchunk; mpchunk = mpchunk->next) + pool->use_sysmalloc ? free(mpchunk->data) : MEM_freeN(mpchunk->data); + + pool->use_sysmalloc ? BLI_freelist(&(pool->chunks)) : BLI_freelistN(&(pool->chunks)); + pool->use_sysmalloc ? free(pool) : MEM_freeN(pool); } diff --git a/source/blender/blenlib/intern/bpath.c b/source/blender/blenlib/intern/bpath.c index 0df9d9b8db3..c3e7d1713db 100644 --- a/source/blender/blenlib/intern/bpath.c +++ b/source/blender/blenlib/intern/bpath.c @@ -47,12 +47,14 @@ #include "MEM_guardedalloc.h" #include "DNA_ID.h" /* Library */ -#include "DNA_vfont_types.h" +#include "DNA_customdata_types.h" #include "DNA_image_types.h" -#include "DNA_sound_types.h" +#include "DNA_mesh_types.h" #include "DNA_scene_types.h" /* to get the current frame */ #include "DNA_sequence_types.h" -#include "DNA_text_types.h" +#include "DNA_sound_types.h" +#include "DNA_vfont_types.h" +#include "DNA_windowmanager_types.h" #include "BLI_blenlib.h" #include "BLI_bpath.h" @@ -61,8 +63,8 @@ #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_sequencer.h" -#include "BKE_text.h" /* for writing to a textblock */ #include "BKE_utildefines.h" +#include "BKE_report.h" //XXX #include "BIF_screen.h" /* only for wait cursor */ // @@ -82,23 +84,26 @@ enum BPathTypes { BPATH_FONT, BPATH_LIB, BPATH_SEQ, + BPATH_CDATA, BPATH_DONE }; -void BLI_bpathIterator_init( struct BPathIterator *bpi ) { +void BLI_bpathIterator_init( struct BPathIterator *bpi, char *base_path ) { bpi->type = BPATH_IMAGE; bpi->data = NULL; bpi->getpath_callback = NULL; bpi->setpath_callback = NULL; - /* Sequencer spesific */ + /* Sequencer specific */ bpi->seqdata.totseq = 0; bpi->seqdata.seq = 0; bpi->seqdata.seqar = NULL; bpi->seqdata.scene = NULL; + bpi->base_path= base_path ? base_path : G.sce; + BLI_bpathIterator_step(bpi); } @@ -134,7 +139,7 @@ void BLI_bpathIterator_getPathExpanded( struct BPathIterator *bpi, char *path_ex if (libpath) { /* check the files location relative to its library path */ BLI_convertstringcode(path_expanded, libpath); } else { /* local data, use the blend files path */ - BLI_convertstringcode(path_expanded, G.sce); + BLI_convertstringcode(path_expanded, bpi->base_path); } } char* BLI_bpathIterator_getLib( struct BPathIterator *bpi) { @@ -293,6 +298,23 @@ static void seq_setpath(struct BPathIterator *bpi, char *path) { } } +static struct Mesh *cdata_stepdata__internal(struct Mesh *me, int step_next) { + if (me==NULL) + return NULL; + + if (step_next) + me = me->id.next; + + while (me) { + if (me->fdata.external) { + break; + } + + me = me->id.next; + } + return me; +} + static void bpi_type_step__internal( struct BPathIterator *bpi) { bpi->type++; /* advance to the next type */ bpi->data = NULL; @@ -404,6 +426,20 @@ void BLI_bpathIterator_step( struct BPathIterator *bpi) { } else { bpi_type_step__internal(bpi); } + } else if ((bpi->type) == BPATH_CDATA) { + if (bpi->data) bpi->data = cdata_stepdata__internal( bpi->data, 1 ); + else bpi->data = cdata_stepdata__internal( G.main->mesh.first, 0 ); + + if (bpi->data) { + Mesh *me = (Mesh *)bpi->data; + bpi->lib = me->id.lib ? me->id.lib->filename : NULL; + bpi->path = me->fdata.external->filename; + bpi->name = me->id.name+2; + bpi->len = sizeof(me->fdata.external->filename); + break; + } else { + bpi_type_step__internal(bpi); + } } } } @@ -413,186 +449,160 @@ int BLI_bpathIterator_isDone( struct BPathIterator *bpi) { } /* include the path argument */ -static void bpathToText(Text *btxt, struct BPathIterator *bpi) +static void bpath_as_report(struct BPathIterator *bpi, const char *message, ReportList *reports) { + char *prefix; char *name; char path_expanded[FILE_MAXDIR*2]; + if(reports==NULL) + return; + switch(BLI_bpathIterator_getType(bpi)) { case BPATH_IMAGE: - txt_insert_buf( btxt, "Image \"" ); + prefix= "Image"; break; case BPATH_SOUND: - txt_insert_buf( btxt, "Sound \"" ); + prefix= "Sound"; break; case BPATH_FONT: - txt_insert_buf( btxt, "Font \"" ); + prefix= "Font"; break; case BPATH_LIB: - txt_insert_buf( btxt, "Library \"" ); + prefix= "Library"; break; case BPATH_SEQ: - txt_insert_buf( btxt, "Sequence \"" ); + prefix= "Sequence"; + break; + case BPATH_CDATA: + prefix= "Mesh Data"; break; default: - txt_insert_buf( btxt, "Unknown \"" ); + prefix= "Unknown"; break; } name = BLI_bpathIterator_getName(bpi); - - if (name) { - txt_insert_buf( btxt, name ); - } - txt_insert_buf( btxt, "\" " ); - BLI_bpathIterator_getPathExpanded(bpi, path_expanded); - - txt_insert_buf( btxt, path_expanded ); - txt_insert_buf( btxt, "\n" ); - txt_move_eof( btxt, 0 ); + + if(reports) { + if (name) BKE_reportf(reports, RPT_INFO, "%s \"%s\", \"%s\": %s", prefix, name, path_expanded, message); + else BKE_reportf(reports, RPT_INFO, "%s \"%s\": %s", prefix, path_expanded, message); + } + } /* high level function */ -void checkMissingFiles( char *txtname ) { - Text *btxt = NULL; +void checkMissingFiles(char *basepath, ReportList *reports) { struct BPathIterator bpi; /* be sure there is low chance of the path being too short */ char filepath_expanded[FILE_MAXDIR*2]; - BLI_bpathIterator_init(&bpi); + BLI_bpathIterator_init(&bpi, basepath); while (!BLI_bpathIterator_isDone(&bpi)) { BLI_bpathIterator_getPathExpanded( &bpi, filepath_expanded ); - if (!BLI_exists(filepath_expanded)) { - if (!btxt) { - btxt = add_empty_text( "missing_files.log" ); - if (txtname) { - BLI_strncpy(txtname, btxt->id.name+2, 24); - } - } - bpathToText(btxt, &bpi); - } + if (!BLI_exists(filepath_expanded)) + bpath_as_report(&bpi, "file not found", reports); + BLI_bpathIterator_step(&bpi); } BLI_bpathIterator_free(&bpi); } /* dont log any errors at the moment, should probably do this */ -void makeFilesRelative(char *txtname, int *tot, int *changed, int *failed, int *linked) { +void makeFilesRelative(char *basepath, ReportList *reports) { + int tot= 0, changed= 0, failed= 0, linked= 0; struct BPathIterator bpi; char filepath[FILE_MAX], *libpath; /* be sure there is low chance of the path being too short */ char filepath_relative[(FILE_MAXDIR * 2) + FILE_MAXFILE]; - Text *btxt = NULL; - - *tot = *changed = *failed = *linked = 0; - - BLI_bpathIterator_init(&bpi); + BLI_bpathIterator_init(&bpi, basepath); while (!BLI_bpathIterator_isDone(&bpi)) { BLI_bpathIterator_getPath(&bpi, filepath); libpath = BLI_bpathIterator_getLib(&bpi); if(strncmp(filepath, "//", 2)) { if (libpath) { /* cant make relative if we are library - TODO, LOG THIS */ - (*linked)++; + linked++; } else { /* local data, use the blend files path */ BLI_strncpy(filepath_relative, filepath, sizeof(filepath_relative)); /* Important BLI_cleanup_dir runs before the path is made relative * because it wont work for paths that start with "//../" */ - BLI_cleanup_file(G.sce, filepath_relative); /* fix any /foo/../foo/ */ - BLI_makestringcode(G.sce, filepath_relative); + BLI_cleanup_file(bpi.base_path, filepath_relative); /* fix any /foo/../foo/ */ + BLI_makestringcode(bpi.base_path, filepath_relative); /* be safe and check the length */ if (BLI_bpathIterator_getPathMaxLen(&bpi) <= strlen(filepath_relative)) { - if (!btxt) { - btxt = add_empty_text( "missing_no_rel.log" ); - if (txtname) { - BLI_strncpy(txtname, btxt->id.name+2, 24); - } - } - bpathToText(btxt, &bpi); - (*failed)++; + bpath_as_report(&bpi, "couldn't make path relative (too long)", reports); + failed++; } else { if(strncmp(filepath_relative, "//", 2)==0) { BLI_bpathIterator_setPath(&bpi, filepath_relative); - (*changed)++; + changed++; } else { - if (!btxt) { - btxt = add_empty_text( "missing_no_rel.log" ); - if (txtname) { - BLI_strncpy(txtname, btxt->id.name+2, 24); - } - } - bpathToText(btxt, &bpi); - (*failed)++; + bpath_as_report(&bpi, "couldn't make path relative", reports); + failed++; } } } } BLI_bpathIterator_step(&bpi); - (*tot)++; + tot++; } BLI_bpathIterator_free(&bpi); + + if(reports) + BKE_reportf(reports, failed ? RPT_ERROR : RPT_INFO, "Total files %i|Changed %i|Failed %i|Linked %i", tot, changed, failed, linked); } /* dont log any errors at the moment, should probably do this - * Verry similar to makeFilesRelative - keep in sync! */ -void makeFilesAbsolute(char *txtname, int *tot, int *changed, int *failed, int *linked) { +void makeFilesAbsolute(char *basepath, ReportList *reports) +{ + int tot= 0, changed= 0, failed= 0, linked= 0; + struct BPathIterator bpi; char filepath[FILE_MAX], *libpath; /* be sure there is low chance of the path being too short */ char filepath_absolute[(FILE_MAXDIR * 2) + FILE_MAXFILE]; - Text *btxt = NULL; - - *tot = *changed = *failed = *linked = 0; - - BLI_bpathIterator_init(&bpi); + BLI_bpathIterator_init(&bpi, basepath); while (!BLI_bpathIterator_isDone(&bpi)) { BLI_bpathIterator_getPath(&bpi, filepath); libpath = BLI_bpathIterator_getLib(&bpi); if(strncmp(filepath, "//", 2)==0) { if (libpath) { /* cant make absolute if we are library - TODO, LOG THIS */ - (*linked)++; + linked++; } else { /* get the expanded path and check it is relative or too long */ BLI_bpathIterator_getPathExpanded( &bpi, filepath_absolute ); - BLI_cleanup_file(G.sce, filepath_absolute); /* fix any /foo/../foo/ */ + BLI_cleanup_file(bpi.base_path, filepath_absolute); /* fix any /foo/../foo/ */ /* to be safe, check the length */ if (BLI_bpathIterator_getPathMaxLen(&bpi) <= strlen(filepath_absolute)) { - if (!btxt) { - btxt = add_empty_text( "missing_no_abs.log" ); - if (txtname) { - BLI_strncpy(txtname, btxt->id.name+2, 24); - } - } - bpathToText(btxt, &bpi); - (*failed)++; + bpath_as_report(&bpi, "couldn't make absolute (too long)", reports); + failed++; } else { if(strncmp(filepath_absolute, "//", 2)) { BLI_bpathIterator_setPath(&bpi, filepath_absolute); - (*changed)++; + changed++; } else { - if (!btxt) { - btxt = add_empty_text( "missing_no_abs.log" ); - if (txtname) { - BLI_strncpy(txtname, btxt->id.name+2, 24); - } - } - bpathToText(btxt, &bpi); - (*failed)++; + bpath_as_report(&bpi, "couldn't make absolute", reports); + failed++; } } } } BLI_bpathIterator_step(&bpi); - (*tot)++; + tot++; } BLI_bpathIterator_free(&bpi); + + if(reports) + BKE_reportf(reports, failed ? RPT_ERROR : RPT_INFO, "Total files %i|Changed %i|Failed %i|Linked %i", tot, changed, failed, linked); } @@ -651,7 +661,7 @@ static int findFileRecursive(char *filename_new, const char *dirname, const char } /* high level function - call from fileselector */ -void findMissingFiles(char *str) { +void findMissingFiles(char *basepath, char *str) { struct BPathIterator bpi; /* be sure there is low chance of the path being too short */ @@ -665,7 +675,7 @@ void findMissingFiles(char *str) { BLI_split_dirfile_basic(str, dirname, NULL); - BLI_bpathIterator_init(&bpi); + BLI_bpathIterator_init(&bpi, basepath); while (!BLI_bpathIterator_isDone(&bpi)) { BLI_bpathIterator_getPath(&bpi, filepath); @@ -699,7 +709,7 @@ void findMissingFiles(char *str) { } else { /* copy the found path into the old one */ if (G.relbase_valid) - BLI_makestringcode(G.sce, filename_new); + BLI_makestringcode(bpi.base_path, filename_new); BLI_bpathIterator_setPath( &bpi, filename_new ); } diff --git a/source/blender/blenlib/intern/fileops.c b/source/blender/blenlib/intern/fileops.c index ae20eda5a59..52ebab9b1ff 100644 --- a/source/blender/blenlib/intern/fileops.c +++ b/source/blender/blenlib/intern/fileops.c @@ -153,29 +153,39 @@ int BLI_gzip(char *from, char *to) { char buffer[10240]; int file; int readsize = 0; + int rval= 0, err; + gzFile gzfile; - gzFile gzfile = gzopen(to,"wb"); - if (NULL == gzfile) return -1; + gzfile = gzopen(to, "wb"); + if(gzfile == NULL) + return -1; - file = open(from,O_BINARY|O_RDONLY); - - if (file < 0) return -2; + file = open(from, O_BINARY|O_RDONLY); + if(file < 0) + return -2; - while ( 1 ) - { + while(1) { readsize = read(file, buffer, 10240); + + if(readsize < 0) { + rval= -2; /* error happened in reading */ + fprintf(stderr, "Error reading file %s: %s.\n", from, strerror(errno)); + break; + } + else if(readsize == 0) + break; /* done reading */ - if (readsize <= 0) break; - - gzwrite(gzfile,buffer,readsize); + if(gzwrite(gzfile, buffer, readsize) <= 0) { + rval= -1; /* error happened in writing */ + fprintf(stderr, "Error writing gz file %s: %s.\n", to, gzerror(gzfile, &err)); + break; + } } gzclose(gzfile); close(file); - - remove(from); - return 0; + return rval; } /* return 1 when file can be written */ diff --git a/source/blender/blenlib/intern/freetypefont.c b/source/blender/blenlib/intern/freetypefont.c index f2727f6f259..35b9c86892a 100644 --- a/source/blender/blenlib/intern/freetypefont.c +++ b/source/blender/blenlib/intern/freetypefont.c @@ -359,7 +359,7 @@ static VFontData *objfnt_to_ftvfontdata(PackedFile * pf) // get the name fontname = FT_Get_Postscript_Name(face); - strcpy(vfd->name, (fontname == NULL) ? "Fontname not available" : fontname); + strcpy(vfd->name, (fontname == NULL) ? "" : fontname); // Extract the first 256 character from TTF lcode= charcode= FT_Get_First_Char(face, &glyph_index); diff --git a/source/blender/blenlib/intern/gsqueue.c b/source/blender/blenlib/intern/gsqueue.c index fe89786b40d..973898016a4 100644 --- a/source/blender/blenlib/intern/gsqueue.c +++ b/source/blender/blenlib/intern/gsqueue.c @@ -60,6 +60,17 @@ int BLI_gsqueue_is_empty(GSQueue *gq) return (gq->head==NULL); } +int BLI_gsqueue_size(GSQueue *gq) +{ + GSQueueElem *elem; + int size= 0; + + for(elem=gq->head; elem; elem=elem->next) + size++; + + return size; +} + void BLI_gsqueue_peek(GSQueue *gq, void *item_r) { memcpy(item_r, &gq->head[1], gq->elem_size); diff --git a/source/blender/blenlib/intern/math_base.c b/source/blender/blenlib/intern/math_base.c index 3b63b033342..06a339aee8c 100644 --- a/source/blender/blenlib/intern/math_base.c +++ b/source/blender/blenlib/intern/math_base.c @@ -32,84 +32,6 @@ #include "BLI_math.h" -/* A few small defines. Keep'em local! */ -#define SMALL_NUMBER 1.e-8 - -float sqrt3f(float f) -{ - if(f==0.0) return 0; - if(f<0) return (float)(-exp(log(-f)/3)); - else return (float)(exp(log(f)/3)); -} - -double sqrt3d(double d) -{ - if(d==0.0) return 0; - if(d<0) return -exp(log(-d)/3); - else return exp(log(d)/3); -} - -float saacos(float fac) -{ - if(fac<= -1.0f) return (float)M_PI; - else if(fac>=1.0f) return 0.0; - else return (float)acos(fac); -} - -float saasin(float fac) -{ - if(fac<= -1.0f) return (float)-M_PI/2.0f; - else if(fac>=1.0f) return (float)M_PI/2.0f; - else return (float)asin(fac); -} - -float sasqrt(float fac) -{ - if(fac<=0.0) return 0.0; - return (float)sqrt(fac); -} - -float saacosf(float fac) -{ - if(fac<= -1.0f) return (float)M_PI; - else if(fac>=1.0f) return 0.0f; - else return (float)acosf(fac); -} - -float saasinf(float fac) -{ - if(fac<= -1.0f) return (float)-M_PI/2.0f; - else if(fac>=1.0f) return (float)M_PI/2.0f; - else return (float)asinf(fac); -} - -float sasqrtf(float fac) -{ - if(fac<=0.0) return 0.0; - return (float)sqrtf(fac); -} - -float interpf(float target, float origin, float fac) -{ - return (fac*target) + (1.0f-fac)*origin; -} - -/* useful to calculate an even width shell, by taking the angle between 2 planes. - * The return value is a scale on the offset. - * no angle between planes is 1.0, as the angle between the 2 planes approches 180d - * 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)); -} - -/* used for zoom values*/ -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) @@ -169,3 +91,4 @@ double double_round(double x, int ndigits) { /* if computation resulted in overflow, raise OverflowError */ return z; } + diff --git a/source/blender/blenlib/intern/math_base_inline.c b/source/blender/blenlib/intern/math_base_inline.c new file mode 100644 index 00000000000..e228e25c4d6 --- /dev/null +++ b/source/blender/blenlib/intern/math_base_inline.c @@ -0,0 +1,127 @@ +/** + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: some of this file. + * + * ***** END GPL LICENSE BLOCK ***** + * */ + +#include <float.h> +#include <math.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "BLI_math.h" + +#ifndef BLI_MATH_BASE_INLINE +#define BLI_MATH_BASE_INLINE + +/* A few small defines. Keep'em local! */ +#define SMALL_NUMBER 1.e-8 + +MINLINE float sqrt3f(float f) +{ + if(f==0.0) return 0; + if(f<0) return (float)(-exp(log(-f)/3)); + else return (float)(exp(log(f)/3)); +} + +MINLINE double sqrt3d(double d) +{ + if(d==0.0) return 0; + if(d<0) return -exp(log(-d)/3); + else return exp(log(d)/3); +} + +MINLINE float saacos(float fac) +{ + if(fac<= -1.0f) return (float)M_PI; + else if(fac>=1.0f) return 0.0; + else return (float)acos(fac); +} + +MINLINE float saasin(float fac) +{ + if(fac<= -1.0f) return (float)-M_PI/2.0f; + else if(fac>=1.0f) return (float)M_PI/2.0f; + else return (float)asin(fac); +} + +MINLINE float sasqrt(float fac) +{ + if(fac<=0.0) return 0.0; + return (float)sqrt(fac); +} + +MINLINE float saacosf(float fac) +{ + if(fac<= -1.0f) return (float)M_PI; + else if(fac>=1.0f) return 0.0f; + else return (float)acosf(fac); +} + +MINLINE float saasinf(float fac) +{ + if(fac<= -1.0f) return (float)-M_PI/2.0f; + else if(fac>=1.0f) return (float)M_PI/2.0f; + else return (float)asinf(fac); +} + +MINLINE float sasqrtf(float fac) +{ + if(fac<=0.0) return 0.0; + return (float)sqrtf(fac); +} + +MINLINE float interpf(float target, float origin, float fac) +{ + return (fac*target) + (1.0f-fac)*origin; +} + +/* useful to calculate an even width shell, by taking the angle between 2 planes. + * The return value is a scale on the offset. + * no angle between planes is 1.0, as the angle between the 2 planes approches 180d + * the distance gets very high, 180d would be inf, but this case isn't valid */ +MINLINE float shell_angle_to_dist(const float angle) +{ + return (angle < SMALL_NUMBER) ? 1.0f : fabsf(1.0f / cosf(angle * (M_PI/180.0f))); +} + +/* used for zoom values*/ +MINLINE float power_of_2(float val) +{ + return (float)pow(2.0, ceil(log((double)val) / log(2.0))); +} + +MINLINE float minf(float a, float b) +{ + return (a < b)? a: b; +} + +MINLINE float maxf(float a, float b) +{ + return (a > b)? a: b; +} + +#endif /* BLI_MATH_BASE_INLINE */ + diff --git a/source/blender/blenlib/intern/math_color.c b/source/blender/blenlib/intern/math_color.c index 6dbd9c1381f..fcc421e1289 100644 --- a/source/blender/blenlib/intern/math_color.c +++ b/source/blender/blenlib/intern/math_color.c @@ -274,6 +274,26 @@ void cpack_to_rgb(unsigned int col, float *r, float *g, float *b) *b /= 255.0f; } +void rgb_byte_to_float(char *in, float *out) +{ + out[0]= ((float)in[0]) / 255.0f; + out[1]= ((float)in[1]) / 255.0f; + out[2]= ((float)in[2]) / 255.0f; +} + +void rgb_float_to_byte(float *in, char *out) +{ + int r, g, b; + + r= (int)(in[0] * 255.0); + g= (int)(in[1] * 255.0); + b= (int)(in[2] * 255.0); + + out[0]= (char)((r <= 0)? 0 : (r >= 255)? 255 : r); + out[1]= (char)((g <= 0)? 0 : (g >= 255)? 255 : g); + out[2]= (char)((b <= 0)? 0 : (b >= 255)? 255 : b); +} + /* ********************************* color transforms ********************************* */ @@ -366,3 +386,23 @@ int constrain_rgb(float *r, float *g, float *b) return 0; /* Color within RGB gamut */ } +float rgb_to_grayscale(float rgb[3]) +{ + return 0.3f*rgb[0] + 0.58f*rgb[1] + 0.12f*rgb[2]; +} + +/* ********************************* lift/gamma/gain / ASC-CDL conversion ********************************* */ + +void lift_gamma_gain_to_asc_cdl(float *lift, float *gamma, float *gain, float *offset, float *slope, float *power) +{ + int c; + for(c=0; c<3; c++) { + offset[c]= lift[c]*gain[c]; + slope[c]= gain[c]*(1.0f-lift[c]); + if(gamma[c] == 0) + power[c]= FLT_MAX; + else + power[c]= 1.0f/gamma[c]; + } +} + diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c index a80f999cdbb..8fb7a0e1a55 100644 --- a/source/blender/blenlib/intern/math_geom.c +++ b/source/blender/blenlib/intern/math_geom.c @@ -1730,6 +1730,43 @@ void lookat_m4(float mat[][4],float vx, float vy, float vz, float px, float py, translate_m4(mat,-vx,-vy,-vz); /* translate viewpoint to origin */ } +int box_clip_bounds_m4(float boundbox[2][3], float bounds[4], float winmat[4][4]) +{ + float mat[4][4], vec[4]; + int a, fl, flag= -1; + + copy_m4_m4(mat, winmat); + + for(a=0; a<8; a++) { + vec[0]= (a & 1)? boundbox[0][0]: boundbox[1][0]; + vec[1]= (a & 2)? boundbox[0][1]: boundbox[1][1]; + vec[2]= (a & 4)? boundbox[0][2]: boundbox[1][2]; + vec[3]= 1.0; + mul_m4_v4(mat, vec); + + fl= 0; + if(bounds) { + if(vec[0] > bounds[1]*vec[3]) fl |= 1; + if(vec[0]< bounds[0]*vec[3]) fl |= 2; + if(vec[1] > bounds[3]*vec[3]) fl |= 4; + if(vec[1]< bounds[2]*vec[3]) fl |= 8; + } + else { + if(vec[0] < -vec[3]) fl |= 1; + if(vec[0] > vec[3]) fl |= 2; + if(vec[1] < -vec[3]) fl |= 4; + if(vec[1] > vec[3]) fl |= 8; + } + if(vec[2] < -vec[3]) fl |= 16; + if(vec[2] > vec[3]) fl |= 32; + + flag &= fl; + if(flag==0) return 0; + } + + return flag; +} + /********************************** Mapping **********************************/ void map_to_tube(float *u, float *v,float x, float y, float z) diff --git a/source/blender/blenlib/intern/math_rotation.c b/source/blender/blenlib/intern/math_rotation.c index 61d5eeaaa2c..ef48b29ae21 100644 --- a/source/blender/blenlib/intern/math_rotation.c +++ b/source/blender/blenlib/intern/math_rotation.c @@ -327,6 +327,7 @@ void normalize_qt(float *q) } } +/* note: expects vectors to be normalized */ void rotation_between_vecs_to_quat(float *q, const float v1[3], const float v2[3]) { float axis[3]; diff --git a/source/blender/blenlib/intern/math_vector.c b/source/blender/blenlib/intern/math_vector.c index d99d96d28ff..950d0bb21a5 100644 --- a/source/blender/blenlib/intern/math_vector.c +++ b/source/blender/blenlib/intern/math_vector.c @@ -69,7 +69,7 @@ void interp_v3_v3v3v3(float p[3], const float v1[3], const float v2[3], const fl } /* weight 3 vectors, - * 'w' must be unit length but is not a vector, just 3 weights */ + * 'w' must be unit length but is not a vector, just 4 weights */ void interp_v3_v3v3v3v3(float p[3], const float v1[3], const float v2[3], const float v3[3], const float v4[3], const float w[4]) { p[0] = v1[0]*w[0] + v2[0]*w[1] + v3[0]*w[2] + v4[0]*w[3]; @@ -84,50 +84,6 @@ void mid_v3_v3v3(float *v, float *v1, float *v2) v[2]= 0.5f*(v1[2] + v2[2]); } -/********************************* Comparison ********************************/ - -int is_zero_v3(float *v) -{ - return (v[0] == 0 && v[1] == 0 && v[2] == 0); -} - -int equals_v3v3(float *v1, float *v2) -{ - return ((v1[0]==v2[0]) && (v1[1]==v2[1]) && (v1[2]==v2[2])); -} - -int compare_v3v3(float *v1, float *v2, float limit) -{ - if(fabs(v1[0]-v2[0])<limit) - if(fabs(v1[1]-v2[1])<limit) - if(fabs(v1[2]-v2[2])<limit) - return 1; - - return 0; -} - -int compare_len_v3v3(float *v1, float *v2, float limit) -{ - float x,y,z; - - x=v1[0]-v2[0]; - y=v1[1]-v2[1]; - z=v1[2]-v2[2]; - - return ((x*x + y*y + z*z) < (limit*limit)); -} - -int compare_v4v4(float *v1, float *v2, float limit) -{ - if(fabs(v1[0]-v2[0])<limit) - if(fabs(v1[1]-v2[1])<limit) - if(fabs(v1[2]-v2[2])<limit) - if(fabs(v1[3]-v2[3])<limit) - return 1; - - return 0; -} - /********************************** Angles ***********************************/ /* Return the angle in radians between vecs 1-2 and 2-3 in radians @@ -297,8 +253,6 @@ void reflect_v3_v3v3(float *out, float *v1, float *v2) copy_v3_v3(vec, v1); copy_v3_v3(normal, v2); - normalize_v3(normal); - dot2 = 2 * dot_v3v3(vec, normal); reflect[0] = vec[0] - (dot2 * normal[0]); diff --git a/source/blender/blenlib/intern/math_vector_inline.c b/source/blender/blenlib/intern/math_vector_inline.c index 8b09cb86d3a..2181150f640 100644 --- a/source/blender/blenlib/intern/math_vector_inline.c +++ b/source/blender/blenlib/intern/math_vector_inline.c @@ -45,6 +45,14 @@ MINLINE void zero_v3(float r[3]) r[2]= 0.0f; } +MINLINE void zero_v4(float r[4]) +{ + r[0]= 0.0f; + r[1]= 0.0f; + r[2]= 0.0f; + r[3]= 0.0f; +} + MINLINE void copy_v2_v2(float r[2], const float a[2]) { r[0]= a[0]; @@ -58,6 +66,14 @@ MINLINE void copy_v3_v3(float r[3], const float a[3]) r[2]= a[2]; } +MINLINE void copy_v4_v4(float r[4], float a[4]) +{ + r[0]= a[0]; + r[1]= a[1]; + r[2]= a[2]; + r[3]= a[3]; +} + MINLINE void swap_v2_v2(float a[2], float b[2]) { SWAP(float, a[0], b[0]); @@ -71,6 +87,14 @@ MINLINE void swap_v3_v3(float a[3], float b[3]) SWAP(float, a[2], b[2]); } +MINLINE void swap_v4_v4(float a[4], float b[4]) +{ + SWAP(float, a[0], b[0]); + SWAP(float, a[1], b[1]); + SWAP(float, a[2], b[2]); + SWAP(float, a[3], b[3]); +} + /********************************* Arithmetic ********************************/ MINLINE void add_v2_v2(float *r, float *a) @@ -131,6 +155,12 @@ MINLINE void mul_v2_fl(float *v1, float f) v1[1]*= f; } +MINLINE void mul_v2_v2fl(float r[2], const float a[2], float f) +{ + r[0]= a[0]*f; + r[1]= a[1]*f; +} + MINLINE void mul_v3_fl(float r[3], float f) { r[0] *= f; @@ -138,13 +168,19 @@ MINLINE void mul_v3_fl(float r[3], float f) r[2] *= f; } -MINLINE void mul_v3_v3fl(float r[3], float a[3], float f) +MINLINE void mul_v3_v3fl(float r[3], const float a[3], float f) { r[0]= a[0]*f; r[1]= a[1]*f; r[2]= a[2]*f; } +MINLINE void mul_v2_v2(float r[2], const float a[2]) +{ + r[0] *= a[0]; + r[1] *= a[1]; +} + MINLINE void mul_v3_v3(float r[3], float a[3]) { r[0] *= a[0]; @@ -166,6 +202,12 @@ MINLINE void madd_v3_v3v3(float r[3], float a[3], float b[3]) r[2] += a[2]*b[2]; } +MINLINE void madd_v2_v2v2fl(float r[2], const float a[2], const float b[2], const float f) +{ + r[0] = a[0] + b[0]*f; + r[1] = a[1] + b[1]*f; +} + MINLINE void madd_v3_v3v3fl(float r[3], float a[3], float b[3], float f) { r[0] = a[0] + b[0]*f; @@ -263,38 +305,49 @@ MINLINE float len_v3v3(const float a[3], const float b[3]) return len_v3(d); } -MINLINE float normalize_v2(float n[2]) +MINLINE float normalize_v2_v2(float r[2], const float a[2]) { - float d= dot_v2v2(n, n); + float d= dot_v2v2(a, a); if(d > 1.0e-35f) { d= sqrtf(d); - mul_v2_fl(n, 1.0f/d); + mul_v2_v2fl(r, a, 1.0f/d); } else { - zero_v2(n); + zero_v2(r); d= 0.0f; } + return d; } -MINLINE float normalize_v3(float n[3]) +MINLINE float normalize_v2(float n[2]) { - float d= dot_v3v3(n, n); + return normalize_v2_v2(n, n); +} + +MINLINE float normalize_v3_v3(float r[3], const float a[3]) +{ + float d= dot_v3v3(a, a); /* a larger value causes normalize errors in a scaled down models with camera xtreme close */ if(d > 1.0e-35f) { d= sqrtf(d); - mul_v3_fl(n, 1.0f/d); + mul_v3_v3fl(r, a, 1.0f/d); } else { - zero_v3(n); + zero_v3(r); d= 0.0f; } return d; } +MINLINE float normalize_v3(float n[3]) +{ + return normalize_v3_v3(n, n); +} + MINLINE void normal_short_to_float_v3(float *out, short *in) { out[0] = in[0]*(1.0f/32767.0f); @@ -309,5 +362,54 @@ MINLINE void normal_float_to_short_v3(short *out, float *in) out[2] = (short)(in[2]*32767.0f); } +/********************************* Comparison ********************************/ + +MINLINE int is_zero_v3(float *v) +{ + return (v[0] == 0 && v[1] == 0 && v[2] == 0); +} + +MINLINE int is_one_v3(float *v) +{ + return (v[0] == 1 && v[1] == 1 && v[2] == 1); +} + +MINLINE int equals_v3v3(float *v1, float *v2) +{ + return ((v1[0]==v2[0]) && (v1[1]==v2[1]) && (v1[2]==v2[2])); +} + +MINLINE int compare_v3v3(float *v1, float *v2, float limit) +{ + if(fabs(v1[0]-v2[0])<limit) + if(fabs(v1[1]-v2[1])<limit) + if(fabs(v1[2]-v2[2])<limit) + return 1; + + return 0; +} + +MINLINE int compare_len_v3v3(float *v1, float *v2, float limit) +{ + float x,y,z; + + x=v1[0]-v2[0]; + y=v1[1]-v2[1]; + z=v1[2]-v2[2]; + + return ((x*x + y*y + z*z) < (limit*limit)); +} + +MINLINE int compare_v4v4(float *v1, float *v2, float limit) +{ + if(fabs(v1[0]-v2[0])<limit) + if(fabs(v1[1]-v2[1])<limit) + if(fabs(v1[2]-v2[2])<limit) + if(fabs(v1[3]-v2[3])<limit) + return 1; + + return 0; +} + #endif /* BLI_MATH_VECTOR_INLINE */ diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index 4f987fcd31e..895f2d1ee56 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -525,7 +525,7 @@ int BLI_parent_dir(char *path) } } -int BLI_convertstringframe(char *path, int frame) +static int stringframe_chars(char *path, int *char_start, int *char_end) { int ch_sta, ch_end, i; /* Insert current frame: file### -> file001 */ @@ -544,54 +544,44 @@ int BLI_convertstringframe(char *path, int frame) /* dont break, there may be a slash after this that invalidates the previous #'s */ } } - if (ch_end) { /* warning, ch_end is the last # +1 */ - /* Add the frame number? */ - short numlen, hashlen; - char tmp[FILE_MAX]; - - char format[16]; /* 6 is realistically the maxframe (300000), so 8 should be enough, but 16 to be safe. */ - if (((ch_end-1)-ch_sta) >= 16) { - ch_end = ch_sta+15; /* disallow values longer then 'format' can hold */ - } - - strcpy(tmp, path); - - numlen = 1 + (int)log10((double)frame); /* this is the number of chars in the number */ - hashlen = ch_end - ch_sta; - - sprintf(format, "%d", frame); - - if (numlen==hashlen) { /* simple case */ - memcpy(tmp+ch_sta, format, numlen); - } else if (numlen < hashlen) { - memcpy(tmp+ch_sta + (hashlen-numlen), format, numlen); /*dont copy the string terminator */ - memset(tmp+ch_sta, '0', hashlen-numlen); - } else { - /* number is longer then number of #'s */ - if (tmp[ch_end] == '\0') { /* hashes are last, no need to move any string*/ - /* bad juju - not testing string length here :/ */ - memcpy(tmp+ch_sta, format, numlen+1); /* add 1 to get the string terminator \0 */ - } else { - /* we need to move the end characters, reuse i */ - int j; - - i = strlen(tmp); /* +1 to copy the string terminator */ - j = i + (numlen-hashlen); /* from/to */ - - while (i >= ch_end) { - tmp[j] = tmp[i]; - i--; - j--; - } - memcpy(tmp + ch_sta, format, numlen); - } - } + + if(ch_end) { + *char_start= ch_sta; + *char_end= ch_end; + return 1; + } + else { + *char_start= -1; + *char_end= -1; + return 0; + } +} + +int BLI_convertstringframe(char *path, int frame) +{ + int ch_sta, ch_end; + if (stringframe_chars(path, &ch_sta, &ch_end)) { /* warning, ch_end is the last # +1 */ + char tmp[FILE_MAX], format[64]; + sprintf(format, "%%.%ds%%.%dd%%s", ch_sta, ch_end-ch_sta); /* example result: "%.12s%.5d%s" */ + sprintf(tmp, format, path, frame, path+ch_end); strcpy(path, tmp); return 1; } return 0; } +int BLI_convertstringframe_range(char *path, int sta, int end) +{ + int ch_sta, ch_end; + if (stringframe_chars(path, &ch_sta, &ch_end)) { /* warning, ch_end is the last # +1 */ + char tmp[FILE_MAX], format[64]; + sprintf(format, "%%.%ds%%.%dd_%%.%dd%%s", ch_sta, ch_end-ch_sta, ch_end-ch_sta); /* example result: "%.12s%.5d-%.5d%s" */ + sprintf(tmp, format, path, sta, end, path+ch_end); + strcpy(path, tmp); + return 1; + } + return 0; +} int BLI_convertstringcode(char *path, const char *basepath) { diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c index c1bdbf32fac..0133017eb4d 100644 --- a/source/blender/blenlib/intern/pbvh.c +++ b/source/blender/blenlib/intern/pbvh.c @@ -633,6 +633,12 @@ static PBVHNode *pbvh_iter_next(PBVHIter *iter) /* pop node */ iter->stacksize--; node= iter->stack[iter->stacksize].node; + + /* on a mesh with no faces this can happen + * can remove this check if we know meshes have at least 1 face */ + if(node==NULL) + return NULL; + revisiting= iter->stack[iter->stacksize].revisiting; /* revisiting node already checked */ diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c index 09bca168e64..ee7734fb14b 100644 --- a/source/blender/blenlib/intern/storage.c +++ b/source/blender/blenlib/intern/storage.c @@ -261,6 +261,7 @@ void BLI_builddir(char *dirname, char *relname) while(dlink){ memset(&files[actnum], 0 , sizeof(struct direntry)); files[actnum].relname = dlink->name; + files[actnum].path = BLI_strdupcat(dirname, dlink->name); // use 64 bit file size, only needed for WIN32 and WIN64. // Excluding other than current MSVC compiler until able to test. #if (defined(WIN32) || defined(WIN64)) && (_MSC_VER>=1500) diff --git a/source/blender/blenlib/intern/string.c b/source/blender/blenlib/intern/string.c index 405f8c6db97..e60209281a7 100644 --- a/source/blender/blenlib/intern/string.c +++ b/source/blender/blenlib/intern/string.c @@ -54,6 +54,19 @@ char *BLI_strdup(const char *str) { return BLI_strdupn(str, strlen(str)); } +char *BLI_strdupcat(const char *str1, const char *str2) +{ + int len; + char *n; + + len= strlen(str1)+strlen(str2); + n= MEM_mallocN(len+1, "strdupcat"); + strcpy(n, str1); + strcat(n, str2); + + return n; +} + char *BLI_strncpy(char *dst, const char *src, int maxncpy) { int srclen= strlen(src); int cpylen= (srclen>(maxncpy-1))?(maxncpy-1):srclen; diff --git a/source/blender/blenlib/intern/threads.c b/source/blender/blenlib/intern/threads.c index b5c6a5a3b4e..a751e849f82 100644 --- a/source/blender/blenlib/intern/threads.c +++ b/source/blender/blenlib/intern/threads.c @@ -32,12 +32,14 @@ #include <stdlib.h> #include <string.h> #include <pthread.h> +#include <errno.h> #include "MEM_guardedalloc.h" #include "DNA_listBase.h" #include "BLI_blenlib.h" +#include "BLI_gsqueue.h" #include "BLI_threads.h" #include "PIL_time.h" @@ -45,11 +47,13 @@ /* for checking system threads - BLI_system_thread_count */ #ifdef WIN32 #include "windows.h" +#include <sys/timeb.h> #elif defined(__APPLE__) #include <sys/types.h> #include <sys/sysctl.h> #else #include <unistd.h> +#include <sys/time.h> #endif /* ********** basic thread control API ************ @@ -103,7 +107,7 @@ static pthread_mutex_t _custom1_lock = PTHREAD_MUTEX_INITIALIZER; static int thread_levels= 0; /* threads can be invoked inside threads */ /* just a max for security reasons */ -#define RE_MAX_THREAD 8 +#define RE_MAX_THREAD BLENDER_MAX_THREADS typedef struct ThreadSlot { struct ThreadSlot *next, *prev; @@ -458,4 +462,148 @@ void BLI_insert_work(ThreadedWorker *worker, void *param) BLI_insert_thread(&worker->threadbase, p); } -/* eof */ +/* ************************************************ */ + +struct ThreadQueue { + GSQueue *queue; + pthread_mutex_t mutex; + pthread_cond_t cond; + int nowait; +}; + +ThreadQueue *BLI_thread_queue_init() +{ + ThreadQueue *queue; + + queue= MEM_callocN(sizeof(ThreadQueue), "ThreadQueue"); + queue->queue= BLI_gsqueue_new(sizeof(void*)); + + pthread_mutex_init(&queue->mutex, NULL); + pthread_cond_init(&queue->cond, NULL); + + return queue; +} + +void BLI_thread_queue_free(ThreadQueue *queue) +{ + pthread_cond_destroy(&queue->cond); + pthread_mutex_destroy(&queue->mutex); + + BLI_gsqueue_free(queue->queue); + + MEM_freeN(queue); +} + +void BLI_thread_queue_push(ThreadQueue *queue, void *work) +{ + pthread_mutex_lock(&queue->mutex); + + BLI_gsqueue_push(queue->queue, &work); + + /* signal threads waiting to pop */ + pthread_cond_signal(&queue->cond); + pthread_mutex_unlock(&queue->mutex); +} + +void *BLI_thread_queue_pop(ThreadQueue *queue) +{ + void *work= NULL; + + /* wait until there is work */ + pthread_mutex_lock(&queue->mutex); + while(BLI_gsqueue_is_empty(queue->queue) && !queue->nowait) + pthread_cond_wait(&queue->cond, &queue->mutex); + + /* if we have something, pop it */ + if(!BLI_gsqueue_is_empty(queue->queue)) + BLI_gsqueue_pop(queue->queue, &work); + + pthread_mutex_unlock(&queue->mutex); + + return work; +} + +static void wait_timeout(struct timespec *timeout, int ms) +{ + ldiv_t div_result; + long sec, usec, x; + +#ifdef WIN32 + { + struct _timeb now; + _ftime(&now); + sec = now.time; + usec = now.millitm*1000; /* microsecond precision would be better */ + } +#else + { + struct timeval now; + gettimeofday(&now, NULL); + sec = now.tv_sec; + usec = now.tv_usec; + } +#endif + + /* add current time + millisecond offset */ + div_result = ldiv(ms, 1000); + timeout->tv_sec = sec + div_result.quot; + + x = usec + (div_result.rem*1000); + + if (x >= 1000000) { + timeout->tv_sec++; + x -= 1000000; + } + + timeout->tv_nsec = x*1000; +} + +void *BLI_thread_queue_pop_timeout(ThreadQueue *queue, int ms) +{ + double t; + void *work= NULL; + struct timespec timeout; + + t= PIL_check_seconds_timer(); + wait_timeout(&timeout, ms); + + /* wait until there is work */ + pthread_mutex_lock(&queue->mutex); + while(BLI_gsqueue_is_empty(queue->queue) && !queue->nowait) { + if(pthread_cond_timedwait(&queue->cond, &queue->mutex, &timeout) == ETIMEDOUT) + break; + else if(PIL_check_seconds_timer() - t >= ms*0.001) + break; + } + + /* if we have something, pop it */ + if(!BLI_gsqueue_is_empty(queue->queue)) + BLI_gsqueue_pop(queue->queue, &work); + + pthread_mutex_unlock(&queue->mutex); + + return work; +} + +int BLI_thread_queue_size(ThreadQueue *queue) +{ + int size; + + pthread_mutex_lock(&queue->mutex); + size= BLI_gsqueue_size(queue->queue); + pthread_mutex_unlock(&queue->mutex); + + return size; +} + +void BLI_thread_queue_nowait(ThreadQueue *queue) +{ + pthread_mutex_lock(&queue->mutex); + + queue->nowait= 1; + + /* signal threads waiting to pop */ + pthread_cond_signal(&queue->cond); + pthread_mutex_unlock(&queue->mutex); +} + diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 8a38e575cfa..26492ed490c 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -1780,6 +1780,8 @@ static void direct_link_fcurves(FileData *fd, ListBase *list) if (fcu->driver) { ChannelDriver *driver= fcu->driver; DriverVar *dvar; + + driver->expr_comp= NULL; /* relink variables, targets and their paths */ link_list(fd, &driver->variables); @@ -2100,7 +2102,7 @@ static void direct_link_nodetree(FileData *fd, bNodeTree *ntree) if(ntree->type==NTREE_SHADER && (node->type==SH_NODE_CURVE_VEC || node->type==SH_NODE_CURVE_RGB)) direct_link_curvemapping(fd, node->storage); else if(ntree->type==NTREE_COMPOSIT) { - if( ELEM3(node->type, CMP_NODE_TIME, CMP_NODE_CURVE_VEC, CMP_NODE_CURVE_RGB)) + if( ELEM4(node->type, CMP_NODE_TIME, CMP_NODE_CURVE_VEC, CMP_NODE_CURVE_RGB, CMP_NODE_HUECORRECT)) direct_link_curvemapping(fd, node->storage); else if(ELEM3(node->type, CMP_NODE_IMAGE, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) ((ImageUser *)node->storage)->ok= 1; @@ -2129,23 +2131,7 @@ static void direct_link_nodetree(FileData *fd, bNodeTree *ntree) link->fromsock= newdataadr(fd, link->fromsock); link->tosock= newdataadr(fd, link->tosock); } - - /* set selin and selout */ - for(node= ntree->nodes.first; node; node= node->next) { - for(sock= node->inputs.first; sock; sock= sock->next) { - if(sock->flag & SOCK_SEL) { - ntree->selin= sock; - break; - } - } - for(sock= node->outputs.first; sock; sock= sock->next) { - if(sock->flag & SOCK_SEL) { - ntree->selout= sock; - break; - } - } - } - + /* type verification is in lib-link */ } @@ -4252,6 +4238,7 @@ static void lib_link_scene(FileData *fd, Main *main) if(base->object==NULL) { printf("LIB ERROR: base removed\n"); + BKE_reportf(fd->reports, RPT_ERROR, "LIB ERROR: Object lost from scene:'%s\'\n", sce->id.name+2); BLI_remlink(&sce->base, base); if(base==sce->basact) sce->basact= 0; MEM_freeN(base); @@ -4549,9 +4536,11 @@ static void direct_link_windowmanager(FileData *fd, wmWindowManager *wm) wm->defaultconf= NULL; wm->jobs.first= wm->jobs.last= NULL; + wm->drags.first= wm->drags.last= NULL; wm->windrawable= NULL; wm->initialized= 0; + wm->op_undo_depth= 0; } static void lib_link_windowmanager(FileData *fd, Main *main) @@ -4645,12 +4634,20 @@ static void lib_link_screen(FileData *fd, Main *main) for (sl= sa->spacedata.first; sl; sl= sl->next) { if(sl->spacetype==SPACE_VIEW3D) { View3D *v3d= (View3D*) sl; + BGpic *bgpic = NULL; v3d->camera= newlibadr(fd, sc->id.lib, v3d->camera); v3d->ob_centre= newlibadr(fd, sc->id.lib, v3d->ob_centre); + /* should be do_versions but not easy adding into the listbase */ if(v3d->bgpic) { - v3d->bgpic->ima= newlibadr_us(fd, sc->id.lib, v3d->bgpic->ima); + v3d->bgpic= newlibadr(fd, sc->id.lib, v3d->bgpic); + BLI_addtail(&v3d->bgpicbase, bgpic); + v3d->bgpic= NULL; + } + + for(bgpic= v3d->bgpicbase.first; bgpic; bgpic= bgpic->next) { + bgpic->ima= newlibadr_us(fd, sc->id.lib, bgpic->ima); } if(v3d->localvd) { v3d->localvd->camera= newlibadr(fd, sc->id.lib, v3d->localvd->camera); @@ -4658,9 +4655,12 @@ static void lib_link_screen(FileData *fd, Main *main) } else if(sl->spacetype==SPACE_IPO) { SpaceIpo *sipo= (SpaceIpo *)sl; + bDopeSheet *ads= sipo->ads; - if(sipo->ads) - sipo->ads->source= newlibadr(fd, sc->id.lib, sipo->ads->source); + if (ads) { + ads->source= newlibadr(fd, sc->id.lib, ads->source); + ads->filter_grp= newlibadr(fd, sc->id.lib, ads->filter_grp); + } } else if(sl->spacetype==SPACE_BUTS) { SpaceButs *sbuts= (SpaceButs *)sl; @@ -4691,8 +4691,14 @@ static void lib_link_screen(FileData *fd, Main *main) } else if(sl->spacetype==SPACE_ACTION) { SpaceAction *saction= (SpaceAction *)sl; + bDopeSheet *ads= &saction->ads; + + if (ads) { + ads->source= newlibadr(fd, sc->id.lib, ads->source); + ads->filter_grp= newlibadr(fd, sc->id.lib, ads->filter_grp); + } + saction->action = newlibadr(fd, sc->id.lib, saction->action); - saction->ads.source= newlibadr(fd, sc->id.lib, saction->ads.source); } else if(sl->spacetype==SPACE_IMAGE) { SpaceImage *sima= (SpaceImage *)sl; @@ -4700,7 +4706,13 @@ static void lib_link_screen(FileData *fd, Main *main) sima->image= newlibadr_us(fd, sc->id.lib, sima->image); } else if(sl->spacetype==SPACE_NLA){ - /* SpaceNla *snla= (SpaceNla *)sl; */ + SpaceNla *snla= (SpaceNla *)sl; + bDopeSheet *ads= snla->ads; + + if (ads) { + ads->source= newlibadr(fd, sc->id.lib, ads->source); + ads->filter_grp= newlibadr(fd, sc->id.lib, ads->filter_grp); + } } else if(sl->spacetype==SPACE_TEXT) { SpaceText *st= (SpaceText *)sl; @@ -4812,11 +4824,15 @@ void lib_link_screen_restore(Main *newmain, bScreen *curscreen, Scene *curscene) for(sc= newmain->screen.first; sc; sc= sc->id.next) { - + Scene *oldscene= sc->scene; + sc->scene= restore_pointer_by_name(newmain, (ID *)sc->scene, 1); if(sc->scene==NULL) sc->scene= curscene; + /* keep cursor location through undo */ + copy_v3_v3(sc->scene->cursor, oldscene->cursor); + sa= sc->areabase.first; while(sa) { SpaceLink *sl; @@ -4824,14 +4840,15 @@ void lib_link_screen_restore(Main *newmain, bScreen *curscreen, Scene *curscene) for (sl= sa->spacedata.first; sl; sl= sl->next) { if(sl->spacetype==SPACE_VIEW3D) { View3D *v3d= (View3D*) sl; + BGpic *bgpic; v3d->camera= restore_pointer_by_name(newmain, (ID *)v3d->camera, 1); if(v3d->camera==NULL) v3d->camera= sc->scene->camera; v3d->ob_centre= restore_pointer_by_name(newmain, (ID *)v3d->ob_centre, 1); - if(v3d->bgpic) { - v3d->bgpic->ima= restore_pointer_by_name(newmain, (ID *)v3d->bgpic->ima, 1); + for(bgpic= v3d->bgpicbase.first; bgpic; bgpic= bgpic->next) { + bgpic->ima= restore_pointer_by_name(newmain, (ID *)bgpic->ima, 1); } if(v3d->localvd) { /*Base *base;*/ @@ -4858,20 +4875,15 @@ void lib_link_screen_restore(Main *newmain, bScreen *curscreen, Scene *curscene) } else if(sl->spacetype==SPACE_IPO) { - /* XXX animato */ -#if 0 SpaceIpo *sipo= (SpaceIpo *)sl; - - sipo->ipo= restore_pointer_by_name(newmain, (ID *)sipo->ipo, 0); - if(sipo->blocktype==ID_SEQ) - sipo->from= (ID *)find_sequence_from_ipo_helper(newmain, sipo->ipo); - else - sipo->from= restore_pointer_by_name(newmain, (ID *)sipo->from, 0); + bDopeSheet *ads= sipo->ads; - // not free sipo->ipokey, creates dependency with src/ - if(sipo->editipo) MEM_freeN(sipo->editipo); - sipo->editipo= NULL; -#endif + if (ads) { + ads->source= restore_pointer_by_name(newmain, (ID *)ads->source, 1); + + if (ads->filter_grp) + ads->filter_grp= restore_pointer_by_name(newmain, (ID *)ads->filter_grp, 0); + } } else if(sl->spacetype==SPACE_BUTS) { SpaceButs *sbuts= (SpaceButs *)sl; @@ -4895,8 +4907,12 @@ void lib_link_screen_restore(Main *newmain, bScreen *curscreen, Scene *curscene) } else if(sl->spacetype==SPACE_ACTION) { SpaceAction *saction= (SpaceAction *)sl; + saction->action = restore_pointer_by_name(newmain, (ID *)saction->action, 1); saction->ads.source= restore_pointer_by_name(newmain, (ID *)saction->ads.source, 1); + + if (saction->ads.filter_grp) + saction->ads.filter_grp= restore_pointer_by_name(newmain, (ID *)saction->ads.filter_grp, 0); } else if(sl->spacetype==SPACE_IMAGE) { SpaceImage *sima= (SpaceImage *)sl; @@ -4904,7 +4920,15 @@ void lib_link_screen_restore(Main *newmain, bScreen *curscreen, Scene *curscene) sima->image= restore_pointer_by_name(newmain, (ID *)sima->image, 1); } else if(sl->spacetype==SPACE_NLA){ - /* SpaceNla *snla= (SpaceNla *)sl; */ + SpaceNla *snla= (SpaceNla *)sl; + bDopeSheet *ads= snla->ads; + + if (ads) { + ads->source= restore_pointer_by_name(newmain, (ID *)ads->source, 1); + + if (ads->filter_grp) + ads->filter_grp= restore_pointer_by_name(newmain, (ID *)ads->filter_grp, 0); + } } else if(sl->spacetype==SPACE_TEXT) { SpaceText *st= (SpaceText *)sl; @@ -5104,10 +5128,22 @@ static void direct_link_screen(FileData *fd, bScreen *sc) if (sl->spacetype==SPACE_VIEW3D) { View3D *v3d= (View3D*) sl; - v3d->bgpic= newdataadr(fd, v3d->bgpic); + BGpic *bgpic; + v3d->flag |= V3D_INVALID_BACKBUF; - if(v3d->bgpic) - v3d->bgpic->iuser.ok= 1; + + link_list(fd, &(v3d->bgpicbase)); + + /* should be do_versions except this doesnt fit well there */ + if(v3d->bgpic) { + bgpic= newdataadr(fd, v3d->bgpic); + BLI_addtail(&v3d->bgpicbase, bgpic); + v3d->bgpic= NULL; + } + + for(bgpic= v3d->bgpicbase.first; bgpic; bgpic= bgpic->next) + bgpic->iuser.ok= 1; + if(v3d->gpd) { v3d->gpd= newdataadr(fd, v3d->gpd); direct_link_gpencil(fd, v3d->gpd); @@ -6161,7 +6197,13 @@ static void area_add_window_regions(ScrArea *sa, SpaceLink *sl, ListBase *lb) /* init mainarea view2d */ ar->v2d.scroll |= (V2D_SCROLL_BOTTOM|V2D_SCROLL_SCALE_HORIZONTAL); ar->v2d.scroll |= (V2D_SCROLL_LEFT|V2D_SCROLL_SCALE_VERTICAL); - + + ar->v2d.min[0]= FLT_MIN; + ar->v2d.min[1]= FLT_MIN; + + ar->v2d.max[0]= MAXFRAMEF; + ar->v2d.max[1]= FLT_MAX; + //ar->v2d.flag |= V2D_IS_INITIALISED; break; } @@ -6180,6 +6222,9 @@ static void area_add_window_regions(ScrArea *sa, SpaceLink *sl, ListBase *lb) SpaceNla *snla= (SpaceNla *)sl; memcpy(&ar->v2d, &snla->v2d, sizeof(View2D)); + ar->v2d.tot.ymin= (float)(-sa->winy)/3.0f; + ar->v2d.tot.ymax= 0.0f; + ar->v2d.scroll |= (V2D_SCROLL_BOTTOM|V2D_SCROLL_SCALE_HORIZONTAL); ar->v2d.scroll |= (V2D_SCROLL_RIGHT); ar->v2d.align = V2D_ALIGN_NO_POS_Y; @@ -6190,7 +6235,7 @@ static void area_add_window_regions(ScrArea *sa, SpaceLink *sl, ListBase *lb) { /* we totally reinit the view for the Action Editor, as some old instances had some weird cruft set */ ar->v2d.tot.xmin= -20.0f; - ar->v2d.tot.ymin= (float)(-sa->winy); + ar->v2d.tot.ymin= (float)(-sa->winy)/3.0f; ar->v2d.tot.xmax= (float)((sa->winx > 120)? (sa->winx) : 120); ar->v2d.tot.ymax= 0.0f; @@ -6200,7 +6245,7 @@ static void area_add_window_regions(ScrArea *sa, SpaceLink *sl, ListBase *lb) ar->v2d.min[1]= 0.0f; ar->v2d.max[0]= MAXFRAMEF; - ar->v2d.max[1]= 10000.0f; + ar->v2d.max[1]= FLT_MAX; ar->v2d.minzoom= 0.01f; ar->v2d.maxzoom= 50; @@ -6416,6 +6461,34 @@ static void do_version_mtex_factor_2_50(MTex **mtex_array, short idtype) } } +static void do_version_constraints_radians_degrees_250(ListBase *lb) +{ + bConstraint *con; + + for (con=lb->first; con; con=con->next) { + if(con->type==CONSTRAINT_TYPE_RIGIDBODYJOINT) { + bRigidBodyJointConstraint *data = con->data; + data->axX *= M_PI/180.0; + data->axY *= M_PI/180.0; + data->axZ *= M_PI/180.0; + } + else if(con->type==CONSTRAINT_TYPE_KINEMATIC) { + bKinematicConstraint *data = con->data; + data->poleangle *= M_PI/180.0; + } + else if(con->type==CONSTRAINT_TYPE_ROTLIMIT) { + bRotLimitConstraint *data = con->data; + + data->xmin *= M_PI/180.0; + data->xmax *= M_PI/180.0; + data->ymin *= M_PI/180.0; + data->ymax *= M_PI/180.0; + data->zmin *= M_PI/180.0; + data->zmax *= M_PI/180.0; + } + } +} + static void do_versions(FileData *fd, Library *lib, Main *main) { /* WATCH IT!!!: pointers from libdata have not been converted */ @@ -7742,10 +7815,10 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } if(ob->soft && ob->soft->vertgroup==0) { - bDeformGroup *locGroup = get_named_vertexgroup(ob, "SOFTGOAL"); + bDeformGroup *locGroup = defgroup_find_name(ob, "SOFTGOAL"); if(locGroup){ /* retrieve index for that group */ - ob->soft->vertgroup = 1 + get_defgroup_num(ob, locGroup); + ob->soft->vertgroup = 1 + defgroup_find_index(ob, locGroup); } } } @@ -8365,8 +8438,9 @@ static void do_versions(FileData *fd, Library *lib, Main *main) ((SpaceImage *)sl)->iuser.fie_ima= 2; else if(sl->spacetype==SPACE_VIEW3D) { View3D *v3d= (View3D *)sl; - if(v3d->bgpic) - v3d->bgpic->iuser.fie_ima= 2; + BGpic *bgpic; + for(bgpic= v3d->bgpicbase.first; bgpic; bgpic= bgpic->next) + bgpic->iuser.fie_ima= 2; } } } @@ -8430,7 +8504,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) for(curdef= ob->defbase.first; curdef; curdef=curdef->next) { /* replace an empty-string name with unique name */ if (curdef->name[0] == '\0') { - unique_vertexgroup_name(curdef, ob); + defgroup_unique_name(curdef, ob); } } @@ -10151,7 +10225,8 @@ static void do_versions(FileData *fd, Library *lib, Main *main) Scene *sce=main->scene.first; Material *ma=main->mat.first; World *wo=main->world.first; - int convert=0; + Tex *tex=main->tex.first; + int i, convert=0; /* convert to new color management system: while previously colors were stored as srgb, @@ -10167,6 +10242,21 @@ static void do_versions(FileData *fd, Library *lib, Main *main) if (convert) { while(ma) { + if (ma->ramp_col) { + ColorBand *band = (ColorBand *)ma->ramp_col; + for (i=0; i<band->tot; i++) { + CBData *data = band->data + i; + srgb_to_linearrgb_v3_v3(&data->r, &data->r); + } + } + if (ma->ramp_spec) { + ColorBand *band = (ColorBand *)ma->ramp_spec; + for (i=0; i<band->tot; i++) { + CBData *data = band->data + i; + srgb_to_linearrgb_v3_v3(&data->r, &data->r); + } + } + 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); @@ -10174,6 +10264,17 @@ static void do_versions(FileData *fd, Library *lib, Main *main) ma=ma->id.next; } + while(tex) { + if (tex->coba) { + ColorBand *band = (ColorBand *)tex->coba; + for (i=0; i<band->tot; i++) { + CBData *data = band->data + i; + srgb_to_linearrgb_v3_v3(&data->r, &data->r); + } + } + tex=tex->id.next; + } + while(wo) { srgb_to_linearrgb_v3_v3(&wo->ambr, &wo->ambr); srgb_to_linearrgb_v3_v3(&wo->horr, &wo->horr); @@ -10337,9 +10438,8 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } - /* put 2.50 compatibility code here until next subversion bump */ - - if (1) { + if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 12)) + { Scene *sce; Object *ob; Brush *brush; @@ -10355,33 +10455,50 @@ static void do_versions(FileData *fd, Library *lib, Main *main) /* initialise object defaults */ animviz_settings_init(&ob->avs); - /* if armature, copy settings for pose from armature data */ + /* if armature, copy settings for pose from armature data + * performing initialisation where appropriate + */ if (ob->pose && ob->data) { bArmature *arm= newlibadr(fd, lib, ob->data); if(arm) { /* XXX - why does this fail in some cases? */ bAnimVizSettings *avs= &ob->pose->avs; - + /* ghosting settings ---------------- */ /* ranges */ avs->ghost_bc= avs->ghost_ac= arm->ghostep; - + avs->ghost_sf= arm->ghostsf; avs->ghost_ef= arm->ghostef; - + if ((avs->ghost_sf == avs->ghost_ef) && (avs->ghost_sf == 0)) { + avs->ghost_sf= 1; + avs->ghost_ef= 100; + } + /* type */ - avs->ghost_type= arm->ghosttype; - + if (arm->ghostep == 0) + avs->ghost_type= GHOST_TYPE_NONE; + else + avs->ghost_type= arm->ghosttype + 1; + /* stepsize */ avs->ghost_step= arm->ghostsize; - + if (avs->ghost_step == 0) + avs->ghost_step= 1; + /* path settings --------------------- */ /* ranges */ avs->path_bc= arm->pathbc; avs->path_ac= arm->pathac; - + if ((avs->path_bc == avs->path_ac) && (avs->path_bc == 0)) + avs->path_bc= avs->path_ac= 10; + avs->path_sf= arm->pathsf; avs->path_ef= arm->pathef; - + if ((avs->path_sf == avs->path_ef) && (avs->path_sf == 0)) { + avs->path_sf= 1; + avs->path_ef= 250; + } + /* flags */ if (arm->pathflag & ARM_PATH_FNUMS) avs->path_viewflag |= MOTIONPATH_VIEW_FNUMS; @@ -10389,18 +10506,22 @@ static void do_versions(FileData *fd, Library *lib, Main *main) avs->path_viewflag |= MOTIONPATH_VIEW_KFRAS; if (arm->pathflag & ARM_PATH_KFNOS) avs->path_viewflag |= MOTIONPATH_VIEW_KFNOS; - + /* bake flags */ if (arm->pathflag & ARM_PATH_HEADS) avs->path_bakeflag |= MOTIONPATH_BAKE_HEADS; - + /* type */ if (arm->pathflag & ARM_PATH_ACFRA) avs->path_type = MOTIONPATH_TYPE_ACFRA; - + /* stepsize */ avs->path_step= arm->pathsize; + if (avs->path_step == 0) + avs->path_step= 1; } + else + animviz_settings_init(&ob->pose->avs); } } @@ -10418,9 +10539,101 @@ static void do_versions(FileData *fd, Library *lib, Main *main) } } + + if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 13)) { + /* NOTE: if you do more conversion, be sure to do it outside of this and + increase subversion again, otherwise it will not be correct */ + Object *ob; + + /* convert degrees to radians for internal use */ + for (ob=main->object.first; ob; ob=ob->id.next) { + bPoseChannel *pchan; + + do_version_constraints_radians_degrees_250(&ob->constraints); + + if (ob->pose) { + for (pchan=ob->pose->chanbase.first; pchan; pchan=pchan->next) { + pchan->limitmin[0] *= M_PI/180.0; + pchan->limitmin[1] *= M_PI/180.0; + pchan->limitmin[2] *= M_PI/180.0; + pchan->limitmax[0] *= M_PI/180.0; + pchan->limitmax[1] *= M_PI/180.0; + pchan->limitmax[2] *= M_PI/180.0; + + do_version_constraints_radians_degrees_250(&pchan->constraints); + } + } + } + } + + if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 14)) { + /* fix for bad View2D extents for Animation Editors */ + 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) { + ListBase *regionbase; + ARegion *ar; + + if (sl == sa->spacedata.first) + regionbase = &sa->regionbase; + else + regionbase = &sl->regionbase; + + if (ELEM(sl->spacetype, SPACE_ACTION, SPACE_NLA)) { + for (ar = (ARegion*)regionbase->first; ar; ar = ar->next) { + if (ar->regiontype == RGN_TYPE_WINDOW) { + ar->v2d.cur.ymax= ar->v2d.tot.ymax= 0.0f; + ar->v2d.cur.ymin= ar->v2d.tot.ymin= (float)(-sa->winy) / 3.0f; + } + } + } + } + } + } + } + + if (main->versionfile < 250 || (main->versionfile == 250 && main->subversionfile < 15)) { + World *wo; + Material *ma; + + /* ambient default from 0.5f to 1.0f */ + for(ma= main->mat.first; ma; ma=ma->id.next) + ma->amb *= 2.0f; + + for(wo= main->world.first; wo; wo=wo->id.next) { + /* ao splitting into ao/env/indirect */ + wo->ao_env_energy= wo->aoenergy; + wo->aoenergy= 1.0f; + + if(wo->ao_indirect_bounces == 0) + wo->ao_indirect_bounces= 1; + else + wo->mode |= WO_INDIRECT_LIGHT; + + if(wo->aomix == WO_AOSUB) + wo->ao_env_energy= -wo->ao_env_energy; + else if(wo->aomix == WO_AOADDSUB) + wo->mode |= WO_AMB_OCC; + + wo->aomix= WO_AOMUL; + + /* ambient default from 0.5f to 1.0f */ + mul_v3_fl(&wo->ambr, 0.5f); + wo->ao_env_energy *= 0.5f; + } + } + + /* 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! */ + /* WATCH IT 2!: Userdef struct init has to be in editors/interface/resources.c! */ /* don't forget to set version number in blender.c! */ } @@ -10700,7 +10913,8 @@ static void expand_doit(FileData *fd, Main *mainvar, void *old) if(id==NULL) { read_libblock(fd, ptr, bhead, LIB_READ+LIB_INDIRECT, NULL); - if(G.f & G_DEBUG) printf("expand_doit: other lib %s\n", lib->name); + // commented because this can print way too much + // if(G.f & G_DEBUG) printf("expand_doit: other lib %s\n", lib->name); /* for outliner dependency only */ ptr->curlib->parent= mainvar->curlib; @@ -10715,7 +10929,8 @@ static void expand_doit(FileData *fd, Main *mainvar, void *old) /*oldnewmap_insert(fd->libmap, bhead->old, id, 1);*/ change_idid_adr_fd(fd, bhead->old, id); - if(G.f & G_DEBUG) printf("expand_doit: already linked: %s lib: %s\n", id->name, lib->name); + // commented because this can print way too much + // if(G.f & G_DEBUG) printf("expand_doit: already linked: %s lib: %s\n", id->name, lib->name); } MEM_freeN(lib); @@ -11607,8 +11822,8 @@ static void give_base_to_objects(Main *mainvar, Scene *sce, Library *lib, int is if we are appending, but this object wasnt just added allong with a group, then this is alredy used indirectly in the scene somewhere else and we didnt just append it. - (ob->id.flag & LIB_APPEND_TAG)==0 means that this is a newly appended object - Campbell */ - if (is_group_append==0 || (ob->id.flag & LIB_APPEND_TAG)==0) { + (ob->id.flag & LIB_PRE_EXISTING)==0 means that this is a newly appended object - Campbell */ + if (is_group_append==0 || (ob->id.flag & LIB_PRE_EXISTING)==0) { int do_it= 0; @@ -11634,6 +11849,36 @@ static void give_base_to_objects(Main *mainvar, Scene *sce, Library *lib, int is } } +/* when *lib set, it also does objects that were in the appended group */ +static void give_base_to_groups(Main *mainvar, Scene *scene) +{ + Group *group; + + /* give all objects which are LIB_INDIRECT a base, or for a group when *lib has been set */ + for(group= mainvar->group.first; group; group= group->id.next) { + if(((group->id.flag & LIB_INDIRECT)==0 && (group->id.flag & LIB_PRE_EXISTING)==0)) { + Base *base; + + /* add_object(...) messes with the selection */ + Object *ob= add_only_object(OB_EMPTY, group->id.name+2); + ob->type= OB_EMPTY; + ob->lay= scene->lay; + + /* assign the base */ + base= scene_add_base(scene, ob); + base->flag |= SELECT; + base->object->flag= base->flag; + ob->recalc |= OB_RECALC; + scene->basact= base; + + /* assign the group */ + ob->dup_group= group; + ob->transflag |= OB_DUPLIGROUP; + rename_id(&ob->id, group->id.name+2); + VECCOPY(ob->loc, scene->cursor); + } + } +} static void append_named_part(const bContext *C, Main *mainl, FileData *fd, char *name, int idcode, short flag) { @@ -11805,7 +12050,7 @@ static void library_append_end(const bContext *C, Main *mainl, FileData **fd, in Main *mainvar= CTX_data_main(C); Scene *scene= CTX_data_scene(C); - /* make main consistant */ + /* make main consistent */ expand_main(*fd, mainl); /* do this when expand found other libs */ @@ -11835,7 +12080,11 @@ static void library_append_end(const bContext *C, Main *mainl, FileData **fd, in give_base_to_objects(mainvar, scene, NULL, 0); } else { give_base_to_objects(mainvar, scene, mainl->curlib, 1); - } + } + + if (flag & FILE_GROUP_INSTANCE) { + give_base_to_groups(mainvar, scene); + } } else { give_base_to_objects(mainvar, scene, NULL, 0); } @@ -11923,10 +12172,12 @@ static void read_libraries(FileData *basefd, ListBase *mainlist) FileData *fd= mainptr->curlib->filedata; if(fd==NULL) { - ReportList reports; - printf("read library: lib %s\n", mainptr->curlib->name); - fd= blo_openblenderfile(mainptr->curlib->filename, &reports); + /* printf and reports for now... its important users know this */ + printf("read library: %s\n", mainptr->curlib->name); + BKE_reportf(basefd->reports, RPT_INFO, "read library: '%s'\n", mainptr->curlib->name); + + fd= blo_openblenderfile(mainptr->curlib->filename, basefd->reports); if (fd) { fd->reports= basefd->reports; @@ -11944,8 +12195,10 @@ static void read_libraries(FileData *basefd, ListBase *mainlist) } else mainptr->curlib->filedata= NULL; - if (fd==NULL) + if (fd==NULL) { printf("ERROR: can't find lib %s \n", mainptr->curlib->filename); + BKE_reportf(basefd->reports, RPT_ERROR, "Can't find lib '%s'\n", mainptr->curlib->filename); + } } if(fd) { doit= 1; @@ -11960,8 +12213,10 @@ static void read_libraries(FileData *basefd, ListBase *mainlist) BLI_remlink(lbarray[a], id); append_id_part(fd, mainptr, id, &realid); - if (!realid) + if (!realid) { printf("LIB ERROR: can't find %s\n", id->name); + BKE_reportf(fd->reports, RPT_ERROR, "LIB ERROR: %s:'%s' missing from '%s'\n", BLO_idcode_to_name(GS(id->name)), id->name+2, mainptr->curlib->filename); + } change_idid_adr(mainlist, basefd, id, realid); @@ -11997,6 +12252,7 @@ static void read_libraries(FileData *basefd, ListBase *mainlist) BLI_remlink(lbarray[a], id); printf("LIB ERROR: can't find %s\n", id->name); + BKE_reportf(basefd->reports, RPT_ERROR, "LIB ERROR: %s:'%s' missing from '%s'\n", BLO_idcode_to_name(GS(id->name)), id->name+2, mainptr->curlib->filename); change_idid_adr(mainlist, basefd, id, NULL); MEM_freeN(id); diff --git a/source/blender/blenloader/intern/undofile.c b/source/blender/blenloader/intern/undofile.c index f6fabbdad21..b11099c45f5 100644 --- a/source/blender/blenloader/intern/undofile.c +++ b/source/blender/blenloader/intern/undofile.c @@ -67,7 +67,7 @@ void BLO_free_memfile(MemFile *memfile) memfile->size= 0; } -/* to keep list of memfiles consistant, 'first' is always first in list */ +/* to keep list of memfiles consistent, 'first' is always first in list */ /* result is that 'first' is being freed */ void BLO_merge_memfile(MemFile *first, MemFile *second) { diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 061ed71d77e..06af7cb20d3 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -145,6 +145,7 @@ Any case: direct data is ALWAYS after the lib block #include "MEM_guardedalloc.h" // MEM_freeN #include "BLI_blenlib.h" #include "BLI_linklist.h" +#include "BLI_bpath.h" #include "BKE_action.h" #include "BKE_blender.h" @@ -485,7 +486,7 @@ static void write_nodetree(WriteData *wd, bNodeTree *ntree) /* could be handlerized at some point, now only 1 exception still */ if(ntree->type==NTREE_SHADER && (node->type==SH_NODE_CURVE_VEC || node->type==SH_NODE_CURVE_RGB)) write_curvemapping(wd, node->storage); - else if(ntree->type==NTREE_COMPOSIT && (node->type==CMP_NODE_TIME || node->type==CMP_NODE_CURVE_VEC || node->type==CMP_NODE_CURVE_RGB)) + else if(ntree->type==NTREE_COMPOSIT && ELEM4(node->type, CMP_NODE_TIME, CMP_NODE_CURVE_VEC, CMP_NODE_CURVE_RGB, CMP_NODE_HUECORRECT)) write_curvemapping(wd, node->storage); else if(ntree->type==NTREE_TEXTURE && (node->type==TEX_NODE_CURVE_RGB || node->type==TEX_NODE_CURVE_TIME) ) write_curvemapping(wd, node->storage); @@ -934,15 +935,8 @@ static void write_fcurves(WriteData *wd, ListBase *fcurves) ChannelDriver *driver= fcu->driver; DriverVar *dvar; - /* 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 */ - - /* variables */ for (dvar= driver->variables.first; dvar; dvar= dvar->next) { writestruct(wd, DATA, "DriverVar", 1, dvar); @@ -2034,8 +2028,10 @@ static void write_screens(WriteData *wd, ListBase *scrbase) if(sl->spacetype==SPACE_VIEW3D) { View3D *v3d= (View3D *) sl; + BGpic *bgpic; writestruct(wd, DATA, "View3D", 1, v3d); - if(v3d->bgpic) writestruct(wd, DATA, "BGpic", 1, v3d->bgpic); + for (bgpic= v3d->bgpicbase.first; bgpic; bgpic= bgpic->next) + writestruct(wd, DATA, "BGpic", 1, bgpic); if(v3d->localvd) writestruct(wd, DATA, "View3D", 1, v3d->localvd); } else if(sl->spacetype==SPACE_IPO) { @@ -2328,6 +2324,8 @@ static void write_brushes(WriteData *wd, ListBase *idbase) writestruct(wd, ID_BR, "Brush", 1, brush); if (brush->id.properties) IDP_WriteProperty(brush->id.properties, wd); + writestruct(wd, DATA, "MTex", 1, &brush->mtex); + if(brush->curve) write_curvemapping(wd, brush->curve); } @@ -2447,10 +2445,11 @@ static int write_file_handle(Main *mainvar, int handle, MemFile *compare, MemFil int BLO_write_file(Main *mainvar, char *dir, int write_flags, ReportList *reports) { char userfilename[FILE_MAXDIR+FILE_MAXFILE]; - char tempname[FILE_MAXDIR+FILE_MAXFILE]; + char tempname[FILE_MAXDIR+FILE_MAXFILE+1]; int file, err, write_user_block; - sprintf(tempname, "%s@", dir); + /* open temporary file, so we preserve the original in case we crash */ + BLI_snprintf(tempname, sizeof(tempname), "%s@", dir); file = open(tempname,O_BINARY+O_WRONLY+O_CREAT+O_TRUNC, 0666); if(file == -1) { @@ -2458,36 +2457,69 @@ int BLO_write_file(Main *mainvar, char *dir, int write_flags, ReportList *report return 0; } + /* remapping of relative paths to new file location */ + if(write_flags & G_FILE_RELATIVE_REMAP) { + char dir1[FILE_MAXDIR+FILE_MAXFILE]; + char dir2[FILE_MAXDIR+FILE_MAXFILE]; + BLI_split_dirfile_basic(dir, dir1, NULL); + BLI_split_dirfile_basic(mainvar->name, dir2, NULL); + + /* just incase there is some subtle difference */ + BLI_cleanup_dir(mainvar->name, dir1); + BLI_cleanup_dir(mainvar->name, dir2); + + if(strcmp(dir1, dir2)==0) + write_flags &= ~G_FILE_RELATIVE_REMAP; + else + makeFilesAbsolute(G.sce, NULL); + } + BLI_make_file_string(G.sce, userfilename, BLI_gethome(), ".B25.blend"); write_user_block= BLI_streq(dir, userfilename); + if(write_flags & G_FILE_RELATIVE_REMAP) + makeFilesRelative(dir, NULL); /* note, making relative to something OTHER then G.sce */ + + /* actual file writing */ err= write_file_handle(mainvar, file, NULL,NULL, write_user_block, write_flags); close(file); + /* rename/compress */ if(!err) { - if(write_flags & G_FILE_COMPRESS) - { - // compressed files have the same ending as regular files... only from 2.4!!! + if(write_flags & G_FILE_COMPRESS) { + /* compressed files have the same ending as regular files... only from 2.4!!! */ + char gzname[FILE_MAXDIR+FILE_MAXFILE+4]; + int ret; + + /* first write compressed to separate @.gz */ + BLI_snprintf(gzname, sizeof(gzname), "%s@.gz", dir); + ret = BLI_gzip(tempname, gzname); - int ret = BLI_gzip(tempname, dir); - - if(-1==ret) { + if(0==ret) { + /* now rename to real file name, and delete temp @ file too */ + if(BLI_rename(gzname, dir) != 0) { + BKE_report(reports, RPT_ERROR, "Can't change old file. File saved with @."); + return 0; + } + + BLI_delete(tempname, 0, 0); + } + else if(-1==ret) { BKE_report(reports, RPT_ERROR, "Failed opening .gz file."); return 0; } - if(-2==ret) { + else if(-2==ret) { BKE_report(reports, RPT_ERROR, "Failed opening .blend file for compression."); return 0; } } - else - if(BLI_rename(tempname, dir) != 0) { + else if(BLI_rename(tempname, dir) != 0) { BKE_report(reports, RPT_ERROR, "Can't change old file. File saved with @"); return 0; } - - } else { + } + else { BKE_report(reports, RPT_ERROR, strerror(errno)); remove(tempname); diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp index ad8edccbf89..8078ee2e6e0 100644 --- a/source/blender/collada/DocumentImporter.cpp +++ b/source/blender/collada/DocumentImporter.cpp @@ -942,7 +942,7 @@ public: // at this stage we get vertex influence info that should go into me->verts and ob->defbase // there's no info to which object this should be long so we associate it with skin controller data UID - // don't forget to call unique_vertexgroup_name before we copy + // don't forget to call defgroup_unique_name before we copy // controller data uid -> [armature] -> joint data, // [mesh object] diff --git a/source/blender/collada/Makefile b/source/blender/collada/Makefile new file mode 100644 index 00000000000..f2fed004a25 --- /dev/null +++ b/source/blender/collada/Makefile @@ -0,0 +1,42 @@ +# +# $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): none yet. +# +# ***** END GPL LICENSE BLOCK ***** +# +# + +LIBNAME = bf_collada +DIR = $(OCGDIR)/blender/bf_collada + +include nan_compile.mk + +CCFLAGS += $(LEVEL_1_C_WARNINGS) + +CPPFLAGS += -I../makesdna -I../blenlib -I../blenkernel -I../editors/include +CPPFLAGS += -I../windowmanager -I../makesrna +CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include +CPPFLAGS += -I$(BF_OPENCOLLADA)/include/COLLADABaseUtils +CPPFLAGS += -I$(BF_OPENCOLLADA)/include/COLLADAFrameWork +CPPFLAGS += -I$(BF_OPENCOLLADA)/include/COLLADAStreamWriter +CPPFLAGS += -I$(BF_OPENCOLLADA)/include/COLLADASaxFrameworkLoader diff --git a/source/blender/editors/CMakeLists.txt b/source/blender/editors/CMakeLists.txt index c695ea02508..0fbc70d522b 100644 --- a/source/blender/editors/CMakeLists.txt +++ b/source/blender/editors/CMakeLists.txt @@ -27,7 +27,7 @@ FILE(GLOB SRC */*.c) SET(INC ../windowmanager - ../editors/include + ../editors/include ../editors/interface ../../../intern/guardedalloc ../../../intern/memutil ../blenlib ../makesdna ../makesrna ../blenkernel ../include ../imbuf ../render/extern/include @@ -89,10 +89,9 @@ IF(WIN32) SET(INC ${INC} ${PTHREADS_INC}) ENDIF(WIN32) -# TODO buildinfo -IF(BF_BUILDINFO) +IF(WITH_BUILDINFO) ADD_DEFINITIONS(-DNAN_BUILDINFO) -ENDIF(BF_BUILDINFO) +ENDIF(WITH_BUILDINFO) BLENDERLIB_NOLIST(bf_editors "${SRC}" "${INC}") diff --git a/source/blender/editors/animation/anim_channels_defines.c b/source/blender/editors/animation/anim_channels_defines.c index aa0fcab3e36..8463fe5840e 100644 --- a/source/blender/editors/animation/anim_channels_defines.c +++ b/source/blender/editors/animation/anim_channels_defines.c @@ -120,6 +120,13 @@ extern void gl_round_box_shade(int mode, float minx, float miny, float maxx, flo /* Draw Backdrop ---------------------------------- */ +/* get backdrop color for top-level widgets (Scene and Object only) */ +static void acf_generic_root_color(bAnimContext *ac, bAnimListElem *ale, float *color) +{ + /* darker blue for top-level widgets */ + UI_GetThemeColor3fv(TH_DOPESHEET_CHANNELOB, color); +} + /* backdrop for top-level widgets (Scene and Object only) */ static void acf_generic_root_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc) { @@ -127,38 +134,48 @@ static void acf_generic_root_backdrop(bAnimContext *ac, bAnimListElem *ale, floa View2D *v2d= &ac->ar->v2d; short expanded= ANIM_channel_setting_get(ac, ale, ACHANNEL_SETTING_EXPAND) != 0; short offset= (acf->get_offset) ? acf->get_offset(ac, ale) : 0; + float color[3]; - /* darker blue for top-level widgets */ - UI_ThemeColor(TH_DOPESHEET_CHANNELOB); + /* set backdrop drawing color */ + acf->get_backdrop_color(ac, ale, color); + glColor3fv(color); /* rounded corners on LHS only - top only when expanded, but bottom too when collapsed */ uiSetRoundBox((expanded)? (1):(1|8)); gl_round_box(GL_POLYGON, offset, yminc, v2d->cur.xmax+EXTRA_SCROLL_PAD, ymaxc, 8); } + +/* get backdrop color for data expanders under top-level Scene/Object */ +static void acf_generic_dataexpand_color(bAnimContext *ac, bAnimListElem *ale, float *color) +{ + /* lighter color than top-level widget */ + UI_GetThemeColor3fv(TH_DOPESHEET_CHANNELSUBOB, color); +} + /* backdrop for data expanders under top-level Scene/Object */ static void acf_generic_dataexpand_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc) { bAnimChannelType *acf= ANIM_channel_get_typeinfo(ale); View2D *v2d= &ac->ar->v2d; short offset= (acf->get_offset) ? acf->get_offset(ac, ale) : 0; + float color[3]; - /* lighter color than top-level widget */ - UI_ThemeColor(TH_DOPESHEET_CHANNELSUBOB); + /* set backdrop drawing color */ + acf->get_backdrop_color(ac, ale, color); + glColor3fv(color); /* no rounded corner - just rectangular box */ glRectf(offset, yminc, v2d->cur.xmax+EXTRA_SCROLL_PAD, ymaxc); } -/* backdrop for generic channels */ -static void acf_generic_channel_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc) +/* get backdrop color for generic channels */ +static void acf_generic_channel_color(bAnimContext *ac, bAnimListElem *ale, float *color) { bAnimChannelType *acf= ANIM_channel_get_typeinfo(ale); - View2D *v2d= &ac->ar->v2d; SpaceAction *saction = NULL; bActionGroup *grp = NULL; short indent= (acf->get_indent_level) ? acf->get_indent_level(ac, ale) : 0; - short offset= (acf->get_offset) ? acf->get_offset(ac, ale) : 0; /* get context info needed... */ if ((ac->sa) && (ac->sa->spacetype == SPACE_ACTION)) @@ -188,10 +205,27 @@ static void acf_generic_channel_backdrop(bAnimContext *ac, bAnimListElem *ale, f VECCOPY(cp, grp->cs.active); } - glColor3ub(cp[0], cp[1], cp[2]); + /* copy the colors over, transforming from bytes to floats */ + rgb_byte_to_float(cp, color); + } + else { + // FIXME: what happens when the indention is 1 greater than what it should be (due to grouping)? + int colOfs= 20 - 20*indent; + UI_GetThemeColorShade3fv(TH_HEADER, colOfs, color); } - else // FIXME: what happens when the indention is 1 greater than what it should be (due to grouping)? - UI_ThemeColorShade(TH_HEADER, ((indent==0)?20: (indent==1)?-20: -40)); +} + +/* backdrop for generic channels */ +static void acf_generic_channel_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc) +{ + bAnimChannelType *acf= ANIM_channel_get_typeinfo(ale); + View2D *v2d= &ac->ar->v2d; + short offset= (acf->get_offset) ? acf->get_offset(ac, ale) : 0; + float color[3]; + + /* set backdrop drawing color */ + acf->get_backdrop_color(ac, ale, color); + glColor3fv(color); /* no rounded corners - just rectangular box */ glRectf(offset, yminc, v2d->cur.xmax+EXTRA_SCROLL_PAD, ymaxc); @@ -348,13 +382,23 @@ static short acf_generic_dataexpand_setting_valid(bAnimContext *ac, bAnimListEle /* Animation Summary ----------------------------------- */ +/* get backdrop color for summary widget */ +static void acf_summary_color(bAnimContext *ac, bAnimListElem *ale, float *color) +{ + // FIXME: hardcoded color - same as the 'action' line in NLA + glColor3f(0.8f, 0.2f, 0.0f); // reddish color +} + /* backdrop for summary widget */ static void acf_summary_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc) { + bAnimChannelType *acf= ANIM_channel_get_typeinfo(ale); View2D *v2d= &ac->ar->v2d; + float color[3]; - // FIXME: hardcoded color - same as the 'action' line in NLA - glColor3f(0.8f, 0.2f, 0.0f); // reddish color + /* set backdrop drawing color */ + acf->get_backdrop_color(ac, ale, color); + glColor3fv(color); /* rounded corners on LHS only * - top and bottom @@ -385,7 +429,7 @@ static short acf_summary_setting_valid(bAnimContext *ac, bAnimListElem *ale, int } /* get the appropriate flag(s) for the setting when it is valid */ -static int acf_summary_setting_flag(int setting, short *neg) +static int acf_summary_setting_flag(bAnimContext *ac, int setting, short *neg) { if (setting == ACHANNEL_SETTING_EXPAND) { /* expanded */ @@ -424,6 +468,7 @@ static void *acf_summary_setting_ptr(bAnimListElem *ale, int setting, short *typ /* all animation summary (DopeSheet only) type define */ static bAnimChannelType ACF_SUMMARY = { + acf_summary_color, /* backdrop color */ acf_summary_backdrop, /* backdrop */ acf_generic_indention_0, /* indent level */ NULL, /* offset */ @@ -467,7 +512,7 @@ static short acf_scene_setting_valid(bAnimContext *ac, bAnimListElem *ale, int s } /* get the appropriate flag(s) for the setting when it is valid */ -static int acf_scene_setting_flag(int setting, short *neg) +static int acf_scene_setting_flag(bAnimContext *ac, int setting, short *neg) { /* clear extra return data first */ *neg= 0; @@ -522,6 +567,7 @@ static void *acf_scene_setting_ptr(bAnimListElem *ale, int setting, short *type) /* scene type define */ static bAnimChannelType ACF_SCENE = { + acf_generic_root_color, /* backdrop color */ acf_generic_root_backdrop, /* backdrop */ acf_generic_indention_0, /* indent level */ NULL, /* offset */ @@ -585,7 +631,7 @@ static short acf_object_setting_valid(bAnimContext *ac, bAnimListElem *ale, int } /* get the appropriate flag(s) for the setting when it is valid */ -static int acf_object_setting_flag(int setting, short *neg) +static int acf_object_setting_flag(bAnimContext *ac, int setting, short *neg) { /* clear extra return data first */ *neg= 0; @@ -641,6 +687,7 @@ static void *acf_object_setting_ptr(bAnimListElem *ale, int setting, short *type /* object type define */ static bAnimChannelType ACF_OBJECT = { + acf_generic_root_color, /* backdrop color */ acf_generic_root_backdrop, /* backdrop */ acf_generic_indention_0, /* indent level */ NULL, /* offset */ @@ -655,6 +702,16 @@ static bAnimChannelType ACF_OBJECT = /* Group ------------------------------------------- */ +/* get backdrop color for group widget */ +static void acf_group_color(bAnimContext *ac, bAnimListElem *ale, float *color) +{ + /* highlight only for action group channels */ + if (ale->flag & AGRP_ACTIVE) + UI_GetThemeColorShade3fv(TH_GROUP_ACTIVE, 10, color); + else + UI_GetThemeColorShade3fv(TH_GROUP, 20, color); +} + /* backdrop for group widget */ static void acf_group_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc) { @@ -662,12 +719,11 @@ static void acf_group_backdrop(bAnimContext *ac, bAnimListElem *ale, float yminc View2D *v2d= &ac->ar->v2d; short expanded= ANIM_channel_setting_get(ac, ale, ACHANNEL_SETTING_EXPAND) != 0; short offset= (acf->get_offset) ? acf->get_offset(ac, ale) : 0; + float color[3]; - /* only for action group channels */ - if (ale->flag & AGRP_ACTIVE) - UI_ThemeColorShade(TH_GROUP_ACTIVE, 10); - else - UI_ThemeColorShade(TH_GROUP, 20); + /* set backdrop drawing color */ + acf->get_backdrop_color(ac, ale, color); + glColor3fv(color); /* rounded corners on LHS only - top only when expanded, but bottom too when collapsed */ uiSetRoundBox((expanded)? (1):(1|8)); @@ -698,7 +754,7 @@ static short acf_group_setting_valid(bAnimContext *ac, bAnimListElem *ale, int s } /* get the appropriate flag(s) for the setting when it is valid */ -static int acf_group_setting_flag(int setting, short *neg) +static int acf_group_setting_flag(bAnimContext *ac, int setting, short *neg) { /* clear extra return data first */ *neg= 0; @@ -708,7 +764,15 @@ static int acf_group_setting_flag(int setting, short *neg) return AGRP_SELECTED; case ACHANNEL_SETTING_EXPAND: /* expanded */ - return AGRP_EXPANDED; + { + /* NOTE: Graph Editor uses a different flag to everywhere else for this, + * allowing different collapsing of groups there, since sharing the flag + * proved to be a hazard for workflows... + */ + return (ac->spacetype == SPACE_IPO) ? + AGRP_EXPANDED_G : /* Graph Editor case */ + AGRP_EXPANDED; /* DopeSheet and elsewhere */ + } case ACHANNEL_SETTING_MUTE: /* muted */ return AGRP_MUTED; @@ -738,6 +802,7 @@ static void *acf_group_setting_ptr(bAnimListElem *ale, int setting, short *type) /* group type define */ static bAnimChannelType ACF_GROUP = { + acf_group_color, /* backdrop color */ acf_group_backdrop, /* backdrop */ acf_generic_indention_0, /* indent level */ acf_generic_group_offset, /* offset */ @@ -785,7 +850,7 @@ static short acf_fcurve_setting_valid(bAnimContext *ac, bAnimListElem *ale, int } /* get the appropriate flag(s) for the setting when it is valid */ -static int acf_fcurve_setting_flag(int setting, short *neg) +static int acf_fcurve_setting_flag(bAnimContext *ac, int setting, short *neg) { /* clear extra return data first */ *neg= 0; @@ -821,6 +886,7 @@ static void *acf_fcurve_setting_ptr(bAnimListElem *ale, int setting, short *type /* fcurve type define */ static bAnimChannelType ACF_FCURVE = { + acf_generic_channel_color, /* backdrop color */ acf_generic_channel_backdrop, /* backdrop */ acf_generic_indention_flexible, /* indent level */ // xxx rename this to f-curves only? acf_generic_group_offset, /* offset */ @@ -856,7 +922,7 @@ static short acf_fillactd_setting_valid(bAnimContext *ac, bAnimListElem *ale, in } /* get the appropriate flag(s) for the setting when it is valid */ -static int acf_fillactd_setting_flag(int setting, short *neg) +static int acf_fillactd_setting_flag(bAnimContext *ac, int setting, short *neg) { /* clear extra return data first */ *neg= 0; @@ -902,6 +968,7 @@ static void *acf_fillactd_setting_ptr(bAnimListElem *ale, int setting, short *ty /* object action expander type define */ static bAnimChannelType ACF_FILLACTD = { + acf_generic_dataexpand_color, /* backdrop color */ acf_generic_dataexpand_backdrop,/* backdrop */ acf_generic_indention_1, /* indent level */ acf_generic_basic_offset, /* offset */ @@ -942,7 +1009,7 @@ static short acf_filldrivers_setting_valid(bAnimContext *ac, bAnimListElem *ale, } /* get the appropriate flag(s) for the setting when it is valid */ -static int acf_filldrivers_setting_flag(int setting, short *neg) +static int acf_filldrivers_setting_flag(bAnimContext *ac, int setting, short *neg) { /* clear extra return data first */ *neg= 0; @@ -977,6 +1044,7 @@ static void *acf_filldrivers_setting_ptr(bAnimListElem *ale, int setting, short /* drivers expander type define */ static bAnimChannelType ACF_FILLDRIVERS = { + acf_generic_dataexpand_color, /* backdrop color */ acf_generic_dataexpand_backdrop,/* backdrop */ acf_generic_indention_1, /* indent level */ acf_generic_basic_offset, /* offset */ @@ -1003,7 +1071,7 @@ static void acf_fillmatd_name(bAnimListElem *ale, char *name) } /* get the appropriate flag(s) for the setting when it is valid */ -static int acf_fillmatd_setting_flag(int setting, short *neg) +static int acf_fillmatd_setting_flag(bAnimContext *ac, int setting, short *neg) { /* clear extra return data first */ *neg= 0; @@ -1020,6 +1088,7 @@ static int acf_fillmatd_setting_flag(int setting, short *neg) /* materials expander type define */ static bAnimChannelType ACF_FILLMATD= { + acf_generic_dataexpand_color, /* backdrop color */ acf_generic_dataexpand_backdrop,/* backdrop */ acf_generic_indention_1, /* indent level */ acf_generic_basic_offset, /* offset */ @@ -1046,7 +1115,7 @@ static void acf_fillpartd_name(bAnimListElem *ale, char *name) } /* get the appropriate flag(s) for the setting when it is valid */ -static int acf_fillpartd_setting_flag(int setting, short *neg) +static int acf_fillpartd_setting_flag(bAnimContext *ac, int setting, short *neg) { /* clear extra return data first */ *neg= 0; @@ -1063,6 +1132,7 @@ static int acf_fillpartd_setting_flag(int setting, short *neg) /* particles expander type define */ static bAnimChannelType ACF_FILLPARTD= { + acf_generic_dataexpand_color, /* backdrop color */ acf_generic_dataexpand_backdrop,/* backdrop */ acf_generic_indention_1, /* indent level */ acf_generic_basic_offset, /* offset */ @@ -1090,7 +1160,7 @@ static short acf_dsmat_offset(bAnimContext *ac, bAnimListElem *ale) } /* get the appropriate flag(s) for the setting when it is valid */ -static int acf_dsmat_setting_flag(int setting, short *neg) +static int acf_dsmat_setting_flag(bAnimContext *ac, int setting, short *neg) { /* clear extra return data first */ *neg= 0; @@ -1142,6 +1212,7 @@ static void *acf_dsmat_setting_ptr(bAnimListElem *ale, int setting, short *type) /* material expander type define */ static bAnimChannelType ACF_DSMAT= { + acf_generic_channel_color, /* backdrop color */ acf_generic_channel_backdrop, /* backdrop */ acf_generic_indention_0, /* indent level */ acf_dsmat_offset, /* offset */ @@ -1163,7 +1234,7 @@ static int acf_dslam_icon(bAnimListElem *ale) } /* get the appropriate flag(s) for the setting when it is valid */ -static int acf_dslam_setting_flag(int setting, short *neg) +static int acf_dslam_setting_flag(bAnimContext *ac, int setting, short *neg) { /* clear extra return data first */ *neg= 0; @@ -1215,6 +1286,7 @@ static void *acf_dslam_setting_ptr(bAnimListElem *ale, int setting, short *type) /* lamp expander type define */ static bAnimChannelType ACF_DSLAM= { + acf_generic_dataexpand_color, /* backdrop color */ acf_generic_dataexpand_backdrop,/* backdrop */ acf_generic_indention_1, /* indent level */ acf_generic_basic_offset, /* offset */ @@ -1236,7 +1308,7 @@ static int acf_dscam_icon(bAnimListElem *ale) } /* get the appropriate flag(s) for the setting when it is valid */ -static int acf_dscam_setting_flag(int setting, short *neg) +static int acf_dscam_setting_flag(bAnimContext *ac, int setting, short *neg) { /* clear extra return data first */ *neg= 0; @@ -1288,6 +1360,7 @@ static void *acf_dscam_setting_ptr(bAnimListElem *ale, int setting, short *type) /* camera expander type define */ static bAnimChannelType ACF_DSCAM= { + acf_generic_dataexpand_color, /* backdrop color */ acf_generic_dataexpand_backdrop,/* backdrop */ acf_generic_indention_1, /* indent level */ acf_generic_basic_offset, /* offset */ @@ -1319,7 +1392,7 @@ static int acf_dscur_icon(bAnimListElem *ale) } /* get the appropriate flag(s) for the setting when it is valid */ -static int acf_dscur_setting_flag(int setting, short *neg) +static int acf_dscur_setting_flag(bAnimContext *ac, int setting, short *neg) { /* clear extra return data first */ *neg= 0; @@ -1371,6 +1444,7 @@ static void *acf_dscur_setting_ptr(bAnimListElem *ale, int setting, short *type) /* curve expander type define */ static bAnimChannelType ACF_DSCUR= { + acf_generic_dataexpand_color, /* backdrop color */ acf_generic_dataexpand_backdrop,/* backdrop */ acf_generic_indention_1, /* indent level */ acf_generic_basic_offset, /* offset */ @@ -1392,7 +1466,7 @@ static int acf_dsskey_icon(bAnimListElem *ale) } /* get the appropriate flag(s) for the setting when it is valid */ -static int acf_dsskey_setting_flag(int setting, short *neg) +static int acf_dsskey_setting_flag(bAnimContext *ac, int setting, short *neg) { /* clear extra return data first */ *neg= 0; @@ -1444,6 +1518,7 @@ static void *acf_dsskey_setting_ptr(bAnimListElem *ale, int setting, short *type /* shapekey expander type define */ static bAnimChannelType ACF_DSSKEY= { + acf_generic_dataexpand_color, /* backdrop color */ acf_generic_dataexpand_backdrop,/* backdrop */ acf_generic_indention_1, /* indent level */ acf_generic_basic_offset, /* offset */ @@ -1465,7 +1540,7 @@ static int acf_dswor_icon(bAnimListElem *ale) } /* get the appropriate flag(s) for the setting when it is valid */ -static int acf_dswor_setting_flag(int setting, short *neg) +static int acf_dswor_setting_flag(bAnimContext *ac, int setting, short *neg) { /* clear extra return data first */ *neg= 0; @@ -1517,6 +1592,7 @@ static void *acf_dswor_setting_ptr(bAnimListElem *ale, int setting, short *type) /* world expander type define */ static bAnimChannelType ACF_DSWOR= { + acf_generic_dataexpand_color, /* backdrop color */ acf_generic_dataexpand_backdrop,/* backdrop */ acf_generic_indention_1, /* indent level */ acf_generic_basic_offset, /* offset */ @@ -1538,7 +1614,7 @@ static int acf_dspart_icon(bAnimListElem *ale) } /* get the appropriate flag(s) for the setting when it is valid */ -static int acf_dspart_setting_flag(int setting, short *neg) +static int acf_dspart_setting_flag(bAnimContext *ac, int setting, short *neg) { /* clear extra return data first */ *neg= 0; @@ -1590,6 +1666,7 @@ static void *acf_dspart_setting_ptr(bAnimListElem *ale, int setting, short *type /* particle expander type define */ static bAnimChannelType ACF_DSPART= { + acf_generic_dataexpand_color, /* backdrop color */ acf_generic_dataexpand_backdrop,/* backdrop */ acf_generic_indention_1, /* indent level */ acf_generic_basic_offset, /* offset */ @@ -1611,7 +1688,7 @@ static int acf_dsmball_icon(bAnimListElem *ale) } /* get the appropriate flag(s) for the setting when it is valid */ -static int acf_dsmball_setting_flag(int setting, short *neg) +static int acf_dsmball_setting_flag(bAnimContext *ac, int setting, short *neg) { /* clear extra return data first */ *neg= 0; @@ -1663,6 +1740,7 @@ static void *acf_dsmball_setting_ptr(bAnimListElem *ale, int setting, short *typ /* metaball expander type define */ static bAnimChannelType ACF_DSMBALL= { + acf_generic_dataexpand_color, /* backdrop color */ acf_generic_dataexpand_backdrop,/* backdrop */ acf_generic_indention_1, /* indent level */ acf_generic_basic_offset, /* offset */ @@ -1684,7 +1762,7 @@ static int acf_dsarm_icon(bAnimListElem *ale) } /* get the appropriate flag(s) for the setting when it is valid */ -static int acf_dsarm_setting_flag(int setting, short *neg) +static int acf_dsarm_setting_flag(bAnimContext *ac, int setting, short *neg) { /* clear extra return data first */ *neg= 0; @@ -1736,6 +1814,7 @@ static void *acf_dsarm_setting_ptr(bAnimListElem *ale, int setting, short *type) /* metaball expander type define */ static bAnimChannelType ACF_DSARM= { + acf_generic_dataexpand_color, /* backdrop color */ acf_generic_dataexpand_backdrop,/* backdrop */ acf_generic_indention_1, /* indent level */ acf_generic_basic_offset, /* offset */ @@ -1757,7 +1836,7 @@ static int acf_dsntree_icon(bAnimListElem *ale) } /* get the appropriate flag(s) for the setting when it is valid */ -static int acf_dsntree_setting_flag(int setting, short *neg) +static int acf_dsntree_setting_flag(bAnimContext *ac, int setting, short *neg) { /* clear extra return data first */ *neg= 0; @@ -1809,6 +1888,7 @@ static void *acf_dsntree_setting_ptr(bAnimListElem *ale, int setting, short *typ /* node tree expander type define */ static bAnimChannelType ACF_DSNTREE= { + acf_generic_dataexpand_color, /* backdrop color */ acf_generic_dataexpand_backdrop,/* backdrop */ acf_generic_indention_1, /* indent level */ // XXX this only works for compositing acf_generic_basic_offset, /* offset */ @@ -1830,7 +1910,7 @@ static int acf_dsmesh_icon(bAnimListElem *ale) } /* get the appropriate flag(s) for the setting when it is valid */ -static int acf_dsmesh_setting_flag(int setting, short *neg) +static int acf_dsmesh_setting_flag(bAnimContext *ac, int setting, short *neg) { /* clear extra return data first */ *neg= 0; @@ -1882,6 +1962,7 @@ static void *acf_dsmesh_setting_ptr(bAnimListElem *ale, int setting, short *type /* node tree expander type define */ static bAnimChannelType ACF_DSMESH= { + acf_generic_dataexpand_color, /* backdrop color */ acf_generic_dataexpand_backdrop,/* backdrop */ acf_generic_indention_1, /* indent level */ // XXX this only works for compositing acf_generic_basic_offset, /* offset */ @@ -1927,7 +2008,7 @@ static short acf_shapekey_setting_valid(bAnimContext *ac, bAnimListElem *ale, in } /* get the appropriate flag(s) for the setting when it is valid */ -static int acf_shapekey_setting_flag(int setting, short *neg) +static int acf_shapekey_setting_flag(bAnimContext *ac, int setting, short *neg) { /* clear extra return data first */ *neg= 0; @@ -1969,6 +2050,7 @@ static void *acf_shapekey_setting_ptr(bAnimListElem *ale, int setting, short *ty /* shapekey expander type define */ static bAnimChannelType ACF_SHAPEKEY= { + acf_generic_channel_color, /* backdrop color */ acf_generic_channel_backdrop, /* backdrop */ acf_generic_indention_0, /* indent level */ acf_generic_basic_offset, /* offset */ @@ -2193,7 +2275,7 @@ short ANIM_channel_setting_get (bAnimContext *ac, bAnimListElem *ale, int settin int flag; void *ptr; - flag= acf->setting_flag(setting, &negflag); + flag= acf->setting_flag(ac, setting, &negflag); ptr= acf->setting_ptr(ale, setting, &ptrsize); /* check if flag is enabled */ @@ -2271,7 +2353,7 @@ void ANIM_channel_setting_set (bAnimContext *ac, bAnimListElem *ale, int setting int flag; void *ptr; - flag= acf->setting_flag(setting, &negflag); + flag= acf->setting_flag(ac, setting, &negflag); ptr= acf->setting_ptr(ale, setting, &ptrsize); /* check if flag is enabled */ @@ -2314,6 +2396,7 @@ void ANIM_channel_setting_set (bAnimContext *ac, bAnimListElem *ale, int setting void ANIM_channel_draw (bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc) { bAnimChannelType *acf= ANIM_channel_get_typeinfo(ale); + View2D *v2d= &ac->ar->v2d; short selected, offset; float y, ymid, ytext; @@ -2411,6 +2494,66 @@ void ANIM_channel_draw (bAnimContext *ac, bAnimListElem *ale, float yminc, float offset += 3; UI_DrawString(offset, ytext, name); } + + /* step 6) draw backdrops behidn mute+protection toggles + (sliders) ....................... */ + /* reset offset - now goes from RHS of panel */ + offset = 0; + + // TODO: when drawing sliders, make those draw instead of these toggles if not enough space + + if (v2d) { + short draw_sliders = 0; + float color[3]; + + /* get and set backdrop color */ + acf->get_backdrop_color(ac, ale, color); + glColor3fv(color); + + /* check if we need to show the sliders */ + if ((ac->sa) && ELEM(ac->spacetype, SPACE_ACTION, SPACE_IPO)) { + switch (ac->spacetype) { + case SPACE_ACTION: + { + SpaceAction *saction= (SpaceAction *)ac->sa->spacedata.first; + draw_sliders= (saction->flag & SACTION_SLIDERS); + } + break; + case SPACE_IPO: + { + SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first; + draw_sliders= (sipo->flag & SIPO_SLIDERS); + } + break; + } + } + + /* check if there's enough space for the toggles if the sliders are drawn too */ + if ( !(draw_sliders) || ((v2d->mask.xmax-v2d->mask.xmin) > ACHANNEL_BUTTON_WIDTH/2) ) { + /* protect... */ + if (acf->has_setting(ac, ale, ACHANNEL_SETTING_PROTECT)) + offset += ICON_WIDTH; + /* mute... */ + if (acf->has_setting(ac, ale, ACHANNEL_SETTING_MUTE)) + offset += ICON_WIDTH; + } + + /* draw slider + * - even if we can draw sliders for this view, we must also check that the channel-type supports them + * (only only F-Curves really can support them for now) + * - slider should start before the toggles (if they're visible) to keep a clean line down the side + */ + if ((draw_sliders) && ELEM(ale->type, ANIMTYPE_FCURVE, ANIMTYPE_SHAPEKEY)) { + /* adjust offset */ + offset += SLIDER_WIDTH; + } + + + /* finally draw a backdrop rect behind these + * - starts from the point where the first toggle/slider starts, + * - ends past the space that might be reserved for a scroller + */ + glRectf(v2d->cur.xmax-(float)offset, yminc, v2d->cur.xmax+EXTRA_SCROLL_PAD, ymaxc); + } } /* ------------------ */ @@ -2421,14 +2564,15 @@ static void achannel_setting_widget_cb(bContext *C, void *poin, void *poin2) WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); } -/* callback for visiblility-toggle widget settings - perform value flushing (Graph Editor only) */ -static void achannel_setting_visible_widget_cb(bContext *C, void *ale_npoin, void *dummy_poin) +/* callback for widget settings that need flushing */ +static void achannel_setting_flush_widget_cb(bContext *C, void *ale_npoin, void *setting_wrap) { bAnimListElem *ale_setting= (bAnimListElem *)ale_npoin; bAnimContext ac; ListBase anim_data = {NULL, NULL}; int filter; - short vizOn = 0; + int setting = GET_INT_FROM_POINTER(setting_wrap); + short on = 0; /* send notifiers before doing anything else... */ WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); @@ -2440,10 +2584,10 @@ static void achannel_setting_visible_widget_cb(bContext *C, void *ale_npoin, voi /* verify that we have a channel to operate on, and that it has all we need */ if (ale_setting) { /* check if the setting is on... */ - vizOn= ANIM_channel_setting_get(&ac, ale_setting, ACHANNEL_SETTING_VISIBLE); + on= ANIM_channel_setting_get(&ac, ale_setting, setting); - /* vizOn == -1 means setting not found... */ - if (vizOn == -1) + /* on == -1 means setting not found... */ + if (on == -1) return; } else @@ -2457,7 +2601,7 @@ static void achannel_setting_visible_widget_cb(bContext *C, void *ale_npoin, voi ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); /* call API method to flush the setting */ - ANIM_visibility_flush_anim_channels(&ac, &anim_data, ale_setting, vizOn); + ANIM_flush_setting_anim_channels(&ac, &anim_data, ale_setting, setting, on); /* free temp data */ BLI_freelistN(&anim_data); @@ -2555,7 +2699,7 @@ static void draw_setting_widget (bAnimContext *ac, bAnimListElem *ale, bAnimChan uiBut *but = NULL; /* get the flag and the pointer to that flag */ - flag= acf->setting_flag(setting, &negflag); + flag= acf->setting_flag(ac, setting, &negflag); ptr= acf->setting_ptr(ale, setting, &ptrsize); enabled= ANIM_channel_setting_get(ac, ale, setting); @@ -2635,11 +2779,19 @@ static void draw_setting_widget (bAnimContext *ac, bAnimListElem *ale, bAnimChan /* set call to send relevant notifiers and/or perform type-specific updates */ if (but) { - /* 'visibility' toggles for Graph Editor need special flushing */ - if (setting == ACHANNEL_SETTING_VISIBLE) - uiButSetNFunc(but, achannel_setting_visible_widget_cb, MEM_dupallocN(ale), 0); - else - uiButSetFunc(but, achannel_setting_widget_cb, NULL, NULL); + switch (setting) { + /* settings needing flushing up/down hierarchy */ + case ACHANNEL_SETTING_VISIBLE: /* Graph Editor - 'visibility' toggles */ + case ACHANNEL_SETTING_PROTECT: /* General - protection flags */ + case ACHANNEL_SETTING_MUTE: /* General - muting flags */ + uiButSetNFunc(but, achannel_setting_flush_widget_cb, MEM_dupallocN(ale), SET_INT_IN_POINTER(setting)); + break; + + /* no flushing */ + case ACHANNEL_SETTING_EXPAND: /* expanding - cannot flush, otherwise all would open/close at once */ + default: + uiButSetFunc(but, achannel_setting_widget_cb, NULL, NULL); + } } } } diff --git a/source/blender/editors/animation/anim_channels_edit.c b/source/blender/editors/animation/anim_channels_edit.c index ebb3136d530..f756c5b3158 100644 --- a/source/blender/editors/animation/anim_channels_edit.c +++ b/source/blender/editors/animation/anim_channels_edit.c @@ -205,7 +205,7 @@ void ANIM_set_active_channel (bAnimContext *ac, void *data, short datatype, int * - test: check if deselecting instead of selecting * - sel: eAnimChannels_SetFlag; */ -void ANIM_deselect_anim_channels (void *data, short datatype, short test, short sel) +void ANIM_deselect_anim_channels (bAnimContext *ac, void *data, short datatype, short test, short sel) { ListBase anim_data = {NULL, NULL}; bAnimListElem *ale; @@ -213,7 +213,7 @@ void ANIM_deselect_anim_channels (void *data, short datatype, short test, short /* filter data */ filter= ANIMFILTER_VISIBLE|ANIMFILTER_CHANNELS; - ANIM_animdata_filter(NULL, &anim_data, filter, data, datatype); + ANIM_animdata_filter(ac, &anim_data, filter, data, datatype); /* See if we should be selecting or deselecting */ if (test) { @@ -364,13 +364,18 @@ void ANIM_deselect_anim_channels (void *data, short datatype, short test, short * 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 + * - setting: type of setting to set + * - on: 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) +void ANIM_flush_setting_anim_channels (bAnimContext *ac, ListBase *anim_data, bAnimListElem *ale_setting, int setting, short on) { bAnimListElem *ale, *match=NULL; int prevLevel=0, matchLevel=0; + /* sanity check */ + if (ELEM(NULL, anim_data, anim_data->first)) + return; + /* 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 */ @@ -390,22 +395,40 @@ void ANIM_visibility_flush_anim_channels (bAnimContext *ac, ListBase *anim_data, else { bAnimChannelType *acf= ANIM_channel_get_typeinfo(ale_setting); + if (acf == NULL) { + printf("ERROR: no channel info for the changed channel \n"); + return; + } + /* 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; + prevLevel= matchLevel; } /* flush up? - * - only flush up if the current state is now enabled + * + * For Visibility: + * - only flush up if the current state is now enabled (positive 'on' state is default) * (otherwise, it's too much work to force the parents to be inactive too) + * + * For everything else: + * - only flush up if the current state is now disabled (negative 'off' state is default) + * (otherwise, it's too much work to force the parents to be active too) */ - if (vizOn) { + if ( ((setting == ACHANNEL_SETTING_VISIBLE) && on) || + ((setting != ACHANNEL_SETTING_VISIBLE) && on==0) ) + { /* 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; + /* if no channel info was found, skip, since this type might not have any useful info */ + if (acf == NULL) + continue; + /* get the level of the current channel traversed * - we define the level as simply being the offset for the start of the channel */ @@ -416,7 +439,7 @@ void ANIM_visibility_flush_anim_channels (bAnimContext *ac, ListBase *anim_data, * 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); + ANIM_channel_setting_set(ac, ale, setting, on); /* 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 */ @@ -435,6 +458,10 @@ void ANIM_visibility_flush_anim_channels (bAnimContext *ac, ListBase *anim_data, bAnimChannelType *acf= ANIM_channel_get_typeinfo(ale); int level; + /* if no channel info was found, skip, since this type might not have any useful info */ + if (acf == NULL) + continue; + /* get the level of the current channel traversed * - we define the level as simply being the offset for the start of the channel */ @@ -444,7 +471,7 @@ void ANIM_visibility_flush_anim_channels (bAnimContext *ac, ListBase *anim_data, * flush the new status... */ if (level > matchLevel) - ANIM_channel_setting_set(ac, ale, ACHANNEL_SETTING_VISIBLE, vizOn); + ANIM_channel_setting_set(ac, ale, setting, on); /* 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 @@ -1054,7 +1081,7 @@ static int animchannels_visibility_set_exec(bContext *C, wmOperator *op) 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); + ANIM_flush_setting_anim_channels(&ac, &all_data, ale, ACHANNEL_SETTING_VISIBLE, 1); } BLI_freelistN(&anim_data); @@ -1128,7 +1155,7 @@ static int animchannels_visibility_toggle_exec(bContext *C, wmOperator *op) 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)); + ANIM_flush_setting_anim_channels(&ac, &all_data, ale, ACHANNEL_SETTING_VISIBLE, (vis == ACHANNEL_SETFLAG_ADD)); } /* cleanup */ @@ -1250,7 +1277,7 @@ void ANIM_OT_channels_setting_enable (wmOperatorType *ot) /* flag-setting mode */ RNA_def_enum(ot->srna, "mode", prop_animchannel_setflag_types, ACHANNEL_SETFLAG_ADD, "Mode", ""); /* setting to set */ - RNA_def_enum(ot->srna, "type", prop_animchannel_settings_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_animchannel_settings_types, 0, "Type", ""); } void ANIM_OT_channels_setting_disable (wmOperatorType *ot) @@ -1272,7 +1299,7 @@ void ANIM_OT_channels_setting_disable (wmOperatorType *ot) /* flag-setting mode */ RNA_def_enum(ot->srna, "mode", prop_animchannel_setflag_types, ACHANNEL_SETFLAG_CLEAR, "Mode", ""); /* setting to set */ - RNA_def_enum(ot->srna, "type", prop_animchannel_settings_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_animchannel_settings_types, 0, "Type", ""); } void ANIM_OT_channels_setting_toggle (wmOperatorType *ot) @@ -1294,7 +1321,7 @@ void ANIM_OT_channels_setting_toggle (wmOperatorType *ot) /* flag-setting mode */ RNA_def_enum(ot->srna, "mode", prop_animchannel_setflag_types, ACHANNEL_SETFLAG_TOGGLE, "Mode", ""); /* setting to set */ - RNA_def_enum(ot->srna, "type", prop_animchannel_settings_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_animchannel_settings_types, 0, "Type", ""); } // XXX currently, this is a separate operator, but perhaps we could in future specify in keymaps whether to call invoke or exec? @@ -1358,7 +1385,7 @@ void ANIM_OT_channels_expand (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* props */ - RNA_def_boolean(ot->srna, "all", 0, "All", "Expand all channels (not just selected ones)"); + RNA_def_boolean(ot->srna, "all", 1, "All", "Expand all channels (not just selected ones)"); } /* ********************** Collapse Channels Operator *********************** */ @@ -1400,7 +1427,7 @@ void ANIM_OT_channels_collapse (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* props */ - RNA_def_boolean(ot->srna, "all", 0, "All", "Collapse all channels (not just selected ones)"); + RNA_def_boolean(ot->srna, "all", 1, "All", "Collapse all channels (not just selected ones)"); } /* ********************** Select All Operator *********************** */ @@ -1415,9 +1442,9 @@ static int animchannels_deselectall_exec(bContext *C, wmOperator *op) /* 'standard' behaviour - check if selected, then apply relevant selection */ if (RNA_boolean_get(op->ptr, "invert")) - ANIM_deselect_anim_channels(ac.data, ac.datatype, 0, ACHANNEL_SETFLAG_TOGGLE); + ANIM_deselect_anim_channels(&ac, ac.data, ac.datatype, 0, ACHANNEL_SETFLAG_TOGGLE); else - ANIM_deselect_anim_channels(ac.data, ac.datatype, 1, ACHANNEL_SETFLAG_ADD); + ANIM_deselect_anim_channels(&ac, ac.data, ac.datatype, 1, ACHANNEL_SETFLAG_ADD); /* send notifier that things have changed */ WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_SELECT, NULL); @@ -1666,7 +1693,7 @@ static int mouse_anim_channels (bAnimContext *ac, float x, int channel_index, sh } else { /* select AnimData block by itself */ - ANIM_deselect_anim_channels(ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); + ANIM_deselect_anim_channels(ac, ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); ale->adt->flag |= ADT_UI_SELECTED; } @@ -1693,7 +1720,7 @@ static int mouse_anim_channels (bAnimContext *ac, float x, int channel_index, sh FCurve *fcu; /* deselect all other channels */ - ANIM_deselect_anim_channels(ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); + ANIM_deselect_anim_channels(ac, ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); /* only select channels in group and group itself */ for (fcu= agrp->channels.first; fcu && fcu->grp==agrp; fcu= fcu->next) @@ -1702,7 +1729,7 @@ static int mouse_anim_channels (bAnimContext *ac, float x, int channel_index, sh } else { /* select group by itself */ - ANIM_deselect_anim_channels(ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); + ANIM_deselect_anim_channels(ac, ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); agrp->flag |= AGRP_SELECTED; } @@ -1724,7 +1751,7 @@ static int mouse_anim_channels (bAnimContext *ac, float x, int channel_index, sh } else { /* select F-Curve by itself */ - ANIM_deselect_anim_channels(ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); + ANIM_deselect_anim_channels(ac, ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); fcu->flag |= FCURVE_SELECTED; } @@ -1746,7 +1773,7 @@ static int mouse_anim_channels (bAnimContext *ac, float x, int channel_index, sh } else { /* select ShapeKey by itself */ - ANIM_deselect_anim_channels(ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); + ANIM_deselect_anim_channels(ac, ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); kb->flag |= KEYBLOCK_SEL; } @@ -1904,6 +1931,7 @@ void ED_operatortypes_animchannels(void) WM_operatortype_append(ANIM_OT_channels_visibility_set); } +// TODO: check on a poll callback for this, to get hotkeys into menus void ED_keymap_animchannels(wmKeyConfig *keyconf) { wmKeyMap *keymap = WM_keymap_find(keyconf, "Animation Channels", 0, 0); @@ -1939,8 +1967,8 @@ void ED_keymap_animchannels(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "ANIM_OT_channels_expand", PADPLUSKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "ANIM_OT_channels_collapse", PADMINUS, KM_PRESS, 0, 0); - RNA_boolean_set(WM_keymap_add_item(keymap, "ANIM_OT_channels_expand", PADPLUSKEY, KM_PRESS, KM_CTRL, 0)->ptr, "all", 1); - RNA_boolean_set(WM_keymap_add_item(keymap, "ANIM_OT_channels_collapse", PADMINUS, KM_PRESS, KM_CTRL, 0)->ptr, "all", 1); + RNA_boolean_set(WM_keymap_add_item(keymap, "ANIM_OT_channels_expand", PADPLUSKEY, KM_PRESS, KM_CTRL, 0)->ptr, "all", 0); + RNA_boolean_set(WM_keymap_add_item(keymap, "ANIM_OT_channels_collapse", PADMINUS, KM_PRESS, KM_CTRL, 0)->ptr, "all", 0); /* rearranging - actions only */ //WM_keymap_add_item(keymap, "ANIM_OT_channels_move_up", PAGEUPKEY, KM_PRESS, KM_SHIFT, 0); diff --git a/source/blender/editors/animation/anim_draw.c b/source/blender/editors/animation/anim_draw.c index 60242d3e837..2b7bccd6059 100644 --- a/source/blender/editors/animation/anim_draw.c +++ b/source/blender/editors/animation/anim_draw.c @@ -28,7 +28,6 @@ #include <string.h> #include <stdio.h> -#include <math.h> #include "DNA_anim_types.h" #include "DNA_action_types.h" @@ -42,6 +41,7 @@ #include "MEM_guardedalloc.h" #include "BLI_blenlib.h" +#include "BLI_math.h" #include "BKE_animsys.h" #include "BKE_action.h" @@ -62,6 +62,8 @@ #include "WM_api.h" #include "WM_types.h" +#include "RNA_access.h" + #include "BIF_gl.h" #include "BIF_glutil.h" @@ -73,71 +75,147 @@ extern void ui_rasterpos_safe(float x, float y, float aspect); /* *************************************************** */ -/* CURRENT FRAME DRAWING */ +/* TIME CODE FORMATTING */ -/* Draw current frame number in a little green box beside the current frame indicator */ -static void draw_cfra_number (Scene *scene, View2D *v2d, float cfra, short time) +/* Generate timecode/frame number string and store in the supplied string + * - buffer: must be at least 13 chars long + * - power: special setting for View2D grid drawing, + * used to specify how detailed we need to be + * - timecodes: boolean specifying whether timecodes or + * frame numbers get drawn + * - cfra: time in frames or seconds, consistent with the values shown by timecodes + */ +// TODO: have this in kernel instead under scene? +void ANIM_timecode_string_from_frame (char *str, Scene *scene, int power, short timecodes, float cfra) { - float xscale, yscale, x, y; - char str[32]; - short slen; - - /* because the frame number text is subject to the same scaling as the contents of the view */ - UI_view2d_getscale(v2d, &xscale, &yscale); - glScalef(1.0f/xscale, 1.0f, 1.0f); - - if (time) { - /* Timecode: - * - In general, minutes and seconds should be shown, as most clips will be - * within this length. Hours will only be included if relevant. - * - Only show frames when zoomed in enough for them to be relevant - * (using separator of '!' for frames). - * When showing frames, use slightly different display to avoid confusion with mm:ss format - * TODO: factor into reusable function. - * Meanwhile keep in sync: - * source/blender/editors/animation/anim_draw.c - * source/blender/editors/interface/view2d.c - */ - float val= FRA2TIME(CFRA); + if (timecodes) { int hours=0, minutes=0, seconds=0, frames=0; + float raw_seconds= cfra; char neg[2]= ""; - /* get values */ - if (val < 0) { - /* correction for negative values */ + /* get cframes */ + if (cfra < 0) { + /* correction for negative cfraues */ sprintf(neg, "-"); - val = -val; + cfra = -cfra; } - if (val >= 3600) { + if (cfra >= 3600) { /* hours */ /* XXX should we only display a single digit for hours since clips are * VERY UNLIKELY to be more than 1-2 hours max? However, that would * go against conventions... */ - hours= (int)val / 3600; - val= (float)fmod(val, 3600); + hours= (int)cfra / 3600; + cfra= (float)fmod(cfra, 3600); } - if (val >= 60) { + if (cfra >= 60) { /* minutes */ - minutes= (int)val / 60; - val= (float)fmod(val, 60); + minutes= (int)cfra / 60; + cfra= (float)fmod(cfra, 60); } - { + if (power <= 0) { /* seconds + frames * Frames are derived from 'fraction' of second. We need to perform some additional rounding * to cope with 'half' frames, etc., which should be fine in most cases */ - seconds= (int)val; - frames= (int)floor( ((val - seconds) * FPS) + 0.5f ); + seconds= (int)cfra; + frames= (int)floor( ((cfra - seconds) * FPS) + 0.5f ); + } + else { + /* seconds (with pixel offset rounding) */ + seconds= (int)floor(cfra + 0.375f); } - /* print timecode to temp string buffer */ - if (hours) sprintf(str, " %s%02d:%02d:%02d!%02d", neg, hours, minutes, seconds, frames); - else if (minutes) sprintf(str, " %s%02d:%02d!%02d", neg, minutes, seconds, frames); - else sprintf(str, " %s%d!%02d", neg, seconds, frames); + switch (U.timecode_style) { + case USER_TIMECODE_MINIMAL: + { + /* - In general, minutes and seconds should be shown, as most clips will be + * within this length. Hours will only be included if relevant. + * - Only show frames when zoomed in enough for them to be relevant + * (using separator of '+' for frames). + * When showing frames, use slightly different display to avoid confusion with mm:ss format + */ + if (power <= 0) { + /* include "frames" in display */ + if (hours) sprintf(str, "%s%02d:%02d:%02d+%02d", neg, hours, minutes, seconds, frames); + else if (minutes) sprintf(str, "%s%02d:%02d+%02d", neg, minutes, seconds, frames); + else sprintf(str, "%s%d+%02d", neg, seconds, frames); + } + else { + /* don't include 'frames' in display */ + if (hours) sprintf(str, "%s%02d:%02d:%02d", neg, hours, minutes, seconds); + else sprintf(str, "%s%02d:%02d", neg, minutes, seconds); + } + } + break; + + case USER_TIMECODE_SMPTE_MSF: + { + /* reduced SMPTE format that always shows minutes, seconds, frames. Hours only shown as needed. */ + if (hours) sprintf(str, "%s%02d:%02d:%02d:%02d", neg, hours, minutes, seconds, frames); + else sprintf(str, "%s%02d:%02d:%02d", neg, minutes, seconds, frames); + } + break; + + case USER_TIMECODE_MILLISECONDS: + { + /* reduced SMPTE. Instead of frames, milliseconds are shown */ + int ms_dp= (power <= 0) ? (1 - power) : 1; /* precision of decimal part */ + int s_pad= ms_dp+3; /* to get 2 digit whole-number part for seconds display (i.e. 3 is for 2 digits + radix, on top of full length) */ + + if (hours) sprintf(str, "%s%02d:%02d:%0*.*f", neg, hours, minutes, s_pad, ms_dp, cfra); + else sprintf(str, "%s%02d:%0*.*f", neg, minutes, s_pad, ms_dp, cfra); + } + break; + + case USER_TIMECODE_SECONDS_ONLY: + { + /* only show the original seconds display */ + /* round to whole numbers if power is >= 1 (i.e. scale is coarse) */ + if (power <= 0) sprintf(str, "%.*f", 1-power, raw_seconds); + else sprintf(str, "%d", (int)floor(raw_seconds + 0.375f)); + } + break; + + case USER_TIMECODE_SMPTE_FULL: + default: + { + /* full SMPTE format */ + sprintf(str, "%s%02d:%02d:%02d:%02d", neg, hours, minutes, seconds, frames); + } + break; + } + } + else { + /* round to whole numbers if power is >= 1 (i.e. scale is coarse) */ + if (power <= 0) sprintf(str, "%.*f", 1-power, cfra); + else sprintf(str, "%d", (int)floor(cfra + 0.375f)); } - else - sprintf(str, " %d", CFRA); +} + +/* *************************************************** */ +/* CURRENT FRAME DRAWING */ + +/* Draw current frame number in a little green box beside the current frame indicator */ +static void draw_cfra_number (Scene *scene, View2D *v2d, float cfra, short time) +{ + float xscale, yscale, x, y; + char str[32] = " t"; /* t is the character to start replacing from */ + short slen; + + /* because the frame number text is subject to the same scaling as the contents of the view */ + UI_view2d_getscale(v2d, &xscale, &yscale); + glScalef(1.0f/xscale, 1.0f, 1.0f); + + /* get timecode string + * - padding on str-buf passed so that it doesn't sit on the frame indicator + * - power = 0, gives 'standard' behaviour for time + * but power = 1 is required for frames (to get integer frames) + */ + if (time) + ANIM_timecode_string_from_frame(&str[4], scene, 0, time, FRA2TIME(cfra)); + else + ANIM_timecode_string_from_frame(&str[4], scene, 1, time, cfra); slen= (short)UI_GetStringWidth(str) - 1; /* get starting coordinates for drawing */ @@ -215,7 +293,7 @@ void ANIM_draw_previewrange (const bContext *C, View2D *v2d) Scene *scene= CTX_data_scene(C); /* only draw this if preview range is set */ - if (scene->r.psfra) { + if (PRVRANGEON) { glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_BLEND); glColor4f(0.0f, 0.0f, 0.0f, 0.4f); @@ -237,6 +315,7 @@ void ANIM_draw_previewrange (const bContext *C, View2D *v2d) /* NLA-MAPPING UTILITIES (required for drawing and also editing keyframes) */ /* Obtain the AnimData block providing NLA-mapping for the given channel (if applicable) */ +// TODO: do not supply return this if the animdata tells us that there is no mapping to perform AnimData *ANIM_nla_mapping_get(bAnimContext *ac, bAnimListElem *ale) { /* sanity checks */ @@ -274,7 +353,7 @@ static short bezt_nlamapping_restore(BeztEditData *bed, BezTriple *bezt) static short bezt_nlamapping_apply(BeztEditData *bed, BezTriple *bezt) { /* AnimData block providing scaling is stored in 'data', only_keys option is stored in i1 */ - AnimData *adt= (AnimData *)bed->data; + AnimData *adt= (AnimData*)bed->data; short only_keys= (short)bed->i1; /* adjust BezTriple handles only if allowed to */ @@ -289,7 +368,6 @@ static short bezt_nlamapping_apply(BeztEditData *bed, BezTriple *bezt) } - /* Apply/Unapply NLA mapping to all keyframes in the nominated F-Curve * - restore = whether to map points back to non-mapped time * - only_keys = whether to only adjust the location of the center point of beztriples @@ -318,3 +396,105 @@ void ANIM_nla_mapping_apply_fcurve (AnimData *adt, FCurve *fcu, short restore, s } /* *************************************************** */ +/* UNITS CONVERSION MAPPING (required for drawing and editing keyframes) */ + +/* Get unit conversion factor for given ID + F-Curve */ +float ANIM_unit_mapping_get_factor (Scene *scene, ID *id, FCurve *fcu, short restore) +{ + /* sanity checks */ + if (id && fcu && fcu->rna_path) + { + PointerRNA ptr, id_ptr; + PropertyRNA *prop; + + /* get RNA property that F-Curve affects */ + RNA_id_pointer_create(id, &id_ptr); + if (RNA_path_resolve(&id_ptr, fcu->rna_path, &ptr, &prop)) + { + /* rotations: radians <-> degrees? */ + if (RNA_SUBTYPE_UNIT(RNA_property_subtype(prop)) == PROP_UNIT_ROTATION) + { + /* if the radians flag is not set, default to using degrees which need conversions */ + if ((scene) && (scene->unit.flag & USER_UNIT_ROT_RADIANS) == 0) { + if (restore) + return M_PI / 180.0f; /* degrees to radians */ + else + return 180.0f / M_PI; /* radians to degrees */ + } + } + + // TODO: other rotation types here as necessary + } + } + + /* no mapping needs to occur... */ + return 1.0f; +} + +/* ----------------------- */ + +/* helper function for ANIM_unit_mapping_apply_fcurve -> mapping callback for unit mapping */ +static short bezt_unit_mapping_apply (BeztEditData *bed, BezTriple *bezt) +{ + /* mapping factor is stored in f1, flags are stored in i1 */ + short only_keys= (bed->i1 & ANIM_UNITCONV_ONLYKEYS); + short sel_vs= (bed->i1 & ANIM_UNITCONV_SELVERTS); + float fac= bed->f1; + + /* adjust BezTriple handles only if allowed to */ + if (only_keys == 0) { + if ((sel_vs==0) || (bezt->f1 & SELECT)) + bezt->vec[0][1] *= fac; + if ((sel_vs==0) || (bezt->f3 & SELECT)) + bezt->vec[2][1] *= fac; + } + + if ((sel_vs == 0) || (bezt->f2 & SELECT)) + bezt->vec[1][1] *= fac; + + return 0; +} + +/* Apply/Unapply units conversions to keyframes */ +void ANIM_unit_mapping_apply_fcurve (Scene *scene, ID *id, FCurve *fcu, short flag) +{ + BeztEditData bed; + BeztEditFunc sel_cb; + float fac; + + /* calculate mapping factor, and abort if nothing to change */ + fac= ANIM_unit_mapping_get_factor(scene, id, fcu, (flag & ANIM_UNITCONV_RESTORE)); + if (fac == 1.0f) + return; + + /* init edit data + * - mapping factor is stored in f1 + * - flags are stored in 'i1' + */ + memset(&bed, 0, sizeof(BeztEditData)); + bed.f1= (float)fac; + bed.i1= (int)flag; + + /* only selected? */ + if (flag & ANIM_UNITCONV_ONLYSEL) + sel_cb= ANIM_editkeyframes_ok(BEZT_OK_SELECTED); + else + sel_cb= NULL; + + /* apply to F-Curve */ + ANIM_fcurve_keys_bezier_loop(&bed, fcu, sel_cb, bezt_unit_mapping_apply, NULL); + + // FIXME: loop here for samples should be generalised + // TODO: only sel? + if (fcu->fpt) { + FPoint *fpt; + int i; + + for (i=0, fpt=fcu->fpt; i < fcu->totvert; i++, fpt++) { + /* apply unit mapping */ + fpt->vec[1] *= fac; + } + } +} + +/* *************************************************** */ diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c index 0b63dd73cda..b07a54869ac 100644 --- a/source/blender/editors/animation/anim_filter.c +++ b/source/blender/editors/animation/anim_filter.c @@ -57,7 +57,7 @@ #include "DNA_camera_types.h" #include "DNA_curve_types.h" #include "DNA_gpencil_types.h" -#include "DNA_ipo_types.h" +#include "DNA_group_types.h" #include "DNA_lamp_types.h" #include "DNA_lattice_types.h" #include "DNA_key_types.h" @@ -83,6 +83,7 @@ #include "BKE_fcurve.h" #include "BKE_context.h" #include "BKE_global.h" +#include "BKE_group.h" #include "BKE_key.h" #include "BKE_object.h" #include "BKE_material.h" @@ -159,7 +160,7 @@ static short actedit_get_context (bAnimContext *ac, SpaceAction *saction) switch (saction->mode) { case SACTCONT_ACTION: /* 'Action Editor' */ /* if not pinned, sync with active object */ - if (saction->pin == 0) { + if (/*saction->pin == 0*/1) { if (ac->obact && ac->obact->adt) saction->action = ac->obact->adt->action; else @@ -442,11 +443,15 @@ short ANIM_animdata_get_context (const bContext *C, bAnimContext *ac) /* quick macro to test if an anim-channel (F-Curve) is selected ok for editing purposes * - _SELEDIT means that only selected curves will have visible+editable keyframes + * + * checks here work as follows: + * 1) seledit off - don't need to consider the implications of this option + * 2) foredit off - we're not considering editing, so channel is ok still + * 3) test_func (i.e. selection test) - only if selected, this test will pass */ -// FIXME: this doesn't work cleanly yet... #define ANIMCHANNEL_SELEDITOK(test_func) \ ( !(filter_mode & ANIMFILTER_SELEDIT) || \ - (filter_mode & ANIMFILTER_CHANNELS) || \ + !(filter_mode & ANIMFILTER_FOREDIT) || \ (test_func) ) /* ----------- 'Private' Stuff --------------- */ @@ -900,7 +905,7 @@ static int animdata_filter_fcurves (ListBase *anim_data, bDopeSheet *ads, FCurve return items; } -static int animdata_filter_action (ListBase *anim_data, bDopeSheet *ads, bAction *act, int filter_mode, void *owner, short ownertype, ID *owner_id) +static int animdata_filter_action (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, bAction *act, int filter_mode, void *owner, short ownertype, ID *owner_id) { bAnimListElem *ale=NULL; bActionGroup *agrp; @@ -952,6 +957,7 @@ static int animdata_filter_action (ListBase *anim_data, bDopeSheet *ads, bAction * - group is expanded * - we just need the F-Curves present */ + // FIXME: checking if groups are expanded is only valid if in one or other modes 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, @@ -987,7 +993,7 @@ static int animdata_filter_action (ListBase *anim_data, bDopeSheet *ads, bAction * - for normal filtering (i.e. for editing), we only need the NLA-tracks but they can be in 'normal' evaluation * order, i.e. first to last. Otherwise, some tools may get screwed up. */ -static int animdata_filter_nla (ListBase *anim_data, bDopeSheet *ads, AnimData *adt, int filter_mode, void *owner, short ownertype, ID *owner_id) +static int animdata_filter_nla (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, AnimData *adt, int filter_mode, void *owner, short ownertype, ID *owner_id) { bAnimListElem *ale; NlaTrack *nlt; @@ -1057,7 +1063,7 @@ static int animdata_filter_nla (ListBase *anim_data, bDopeSheet *ads, AnimData * } /* Include ShapeKey Data for ShapeKey Editor */ -static int animdata_filter_shapekey (ListBase *anim_data, Key *key, int filter_mode) +static int animdata_filter_shapekey (bAnimContext *ac, ListBase *anim_data, Key *key, int filter_mode) { bAnimListElem *ale; int items = 0; @@ -1096,7 +1102,7 @@ static int animdata_filter_shapekey (ListBase *anim_data, Key *key, int filter_m if (filter_mode & ANIMFILTER_ANIMDATA) ANIMDATA_ADD_ANIMDATA(key) else if (key->adt->action) - items= animdata_filter_action(anim_data, NULL, key->adt->action, filter_mode, NULL, ANIMTYPE_NONE, (ID *)key); + items= animdata_filter_action(ac, anim_data, NULL, key->adt->action, filter_mode, NULL, ANIMTYPE_NONE, (ID *)key); } } @@ -1169,7 +1175,7 @@ static int animdata_filter_gpencil (ListBase *anim_data, bScreen *sc, int filter #endif -static int animdata_filter_dopesheet_mats (ListBase *anim_data, bDopeSheet *ads, Base *base, int filter_mode) +static int animdata_filter_dopesheet_mats (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Base *base, int filter_mode) { ListBase mats = {NULL, NULL}; LinkData *ld; @@ -1179,7 +1185,7 @@ static int animdata_filter_dopesheet_mats (ListBase *anim_data, bDopeSheet *ads, int items=0, a=0; /* firstly check that we actuallly have some materials, by gathering all materials in a temp list */ - for (a=0; a < ob->totcol; a++) { + for (a=1; a <= ob->totcol; a++) { Material *ma= give_current_material(ob, a); short ok = 0; @@ -1237,9 +1243,9 @@ static int animdata_filter_dopesheet_mats (ListBase *anim_data, bDopeSheet *ads, if (!(filter_mode & ANIMFILTER_VISIBLE) || FILTER_MAT_OBJD(ma) || (filter_mode & ANIMFILTER_CURVESONLY)) { ANIMDATA_FILTER_CASES(ma, { /* AnimData blocks - do nothing... */ }, - items += animdata_filter_nla(anim_data, ads, ma->adt, filter_mode, ma, ANIMTYPE_DSMAT, (ID *)ma);, + items += animdata_filter_nla(ac, anim_data, ads, ma->adt, filter_mode, ma, ANIMTYPE_DSMAT, (ID *)ma);, items += animdata_filter_fcurves(anim_data, ads, ma->adt->drivers.first, NULL, ma, ANIMTYPE_DSMAT, filter_mode, (ID *)ma);, - items += animdata_filter_action(anim_data, ads, ma->adt->action, filter_mode, ma, ANIMTYPE_DSMAT, (ID *)ma);) + items += animdata_filter_action(ac, anim_data, ads, ma->adt->action, filter_mode, ma, ANIMTYPE_DSMAT, (ID *)ma);) } } } @@ -1251,7 +1257,7 @@ static int animdata_filter_dopesheet_mats (ListBase *anim_data, bDopeSheet *ads, return items; } -static int animdata_filter_dopesheet_particles (ListBase *anim_data, bDopeSheet *ads, Base *base, int filter_mode) +static int animdata_filter_dopesheet_particles (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Base *base, int filter_mode) { bAnimListElem *ale=NULL; Object *ob= base->object; @@ -1297,9 +1303,9 @@ static int animdata_filter_dopesheet_particles (ListBase *anim_data, bDopeSheet if (!(filter_mode & ANIMFILTER_VISIBLE) || FILTER_PART_OBJD(psys->part) || (filter_mode & ANIMFILTER_CURVESONLY)) { ANIMDATA_FILTER_CASES(psys->part, { /* AnimData blocks - do nothing... */ }, - items += animdata_filter_nla(anim_data, ads, psys->part->adt, filter_mode, psys->part, ANIMTYPE_DSPART, (ID *)psys->part);, + items += animdata_filter_nla(ac, anim_data, ads, psys->part->adt, filter_mode, psys->part, ANIMTYPE_DSPART, (ID *)psys->part);, items += animdata_filter_fcurves(anim_data, ads, psys->part->adt->drivers.first, NULL, psys->part, ANIMTYPE_DSPART, filter_mode, (ID *)psys->part);, - items += animdata_filter_action(anim_data, ads, psys->part->adt->action, filter_mode, psys->part, ANIMTYPE_DSPART, (ID *)psys->part);) + items += animdata_filter_action(ac, anim_data, ads, psys->part->adt->action, filter_mode, psys->part, ANIMTYPE_DSPART, (ID *)psys->part);) } } } @@ -1308,7 +1314,7 @@ static int animdata_filter_dopesheet_particles (ListBase *anim_data, bDopeSheet return items; } -static int animdata_filter_dopesheet_obdata (ListBase *anim_data, bDopeSheet *ads, Base *base, int filter_mode) +static int animdata_filter_dopesheet_obdata (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Base *base, int filter_mode) { bAnimListElem *ale=NULL; Object *ob= base->object; @@ -1389,16 +1395,16 @@ static int animdata_filter_dopesheet_obdata (ListBase *anim_data, bDopeSheet *ad /* filtering for channels - nla, drivers, keyframes */ ANIMDATA_FILTER_CASES(iat, { /* AnimData blocks - do nothing... */ }, - items+= animdata_filter_nla(anim_data, ads, iat->adt, filter_mode, iat, type, (ID *)iat);, + items+= animdata_filter_nla(ac, anim_data, ads, iat->adt, filter_mode, iat, type, (ID *)iat);, items+= animdata_filter_fcurves(anim_data, ads, adt->drivers.first, NULL, iat, type, filter_mode, (ID *)iat);, - items += animdata_filter_action(anim_data, ads, iat->adt->action, filter_mode, iat, type, (ID *)iat);) + items += animdata_filter_action(ac, anim_data, ads, iat->adt->action, filter_mode, iat, type, (ID *)iat);) } /* return the number of items added to the list */ return items; } -static int animdata_filter_dopesheet_ob (ListBase *anim_data, bDopeSheet *ads, Base *base, int filter_mode) +static int animdata_filter_dopesheet_ob (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Base *base, int filter_mode) { bAnimListElem *ale=NULL; AnimData *adt = NULL; @@ -1434,7 +1440,7 @@ static int animdata_filter_dopesheet_ob (ListBase *anim_data, bDopeSheet *ads, B { /* AnimData blocks - do nothing... */ }, { /* nla */ /* add NLA tracks */ - items += animdata_filter_nla(anim_data, ads, adt, filter_mode, ob, ANIMTYPE_OBJECT, (ID *)ob); + items += animdata_filter_nla(ac, anim_data, ads, adt, filter_mode, ob, ANIMTYPE_OBJECT, (ID *)ob); }, { /* drivers */ /* include drivers-expand widget? */ @@ -1465,7 +1471,7 @@ static int animdata_filter_dopesheet_ob (ListBase *anim_data, bDopeSheet *ads, B /* add F-Curve channels? */ if (!(filter_mode & ANIMFILTER_VISIBLE) || EXPANDED_ACTC(adt->action) || !(filter_mode & ANIMFILTER_CHANNELS)) { // need to make the ownertype normal object here... (maybe type should be a separate one for clarity?) - items += animdata_filter_action(anim_data, ads, adt->action, filter_mode, ob, ANIMTYPE_OBJECT, (ID *)ob); + items += animdata_filter_action(ac, anim_data, ads, adt->action, filter_mode, ob, ANIMTYPE_OBJECT, (ID *)ob); } } ); @@ -1492,7 +1498,7 @@ static int animdata_filter_dopesheet_ob (ListBase *anim_data, bDopeSheet *ads, B /* add NLA tracks - only if expanded or so */ if (!(filter_mode & ANIMFILTER_VISIBLE) || FILTER_SKE_OBJD(key) || (filter_mode & ANIMFILTER_CURVESONLY)) - items += animdata_filter_nla(anim_data, ads, adt, filter_mode, ob, ANIMTYPE_OBJECT, (ID *)ob); + items += animdata_filter_nla(ac, anim_data, ads, adt, filter_mode, ob, ANIMTYPE_OBJECT, (ID *)ob); }, { /* drivers */ /* include shapekey-expand widget? */ @@ -1524,7 +1530,7 @@ static int animdata_filter_dopesheet_ob (ListBase *anim_data, bDopeSheet *ads, B /* add channels */ if (!(filter_mode & ANIMFILTER_VISIBLE) || FILTER_SKE_OBJD(key) || (filter_mode & ANIMFILTER_CURVESONLY)) { - items += animdata_filter_action(anim_data, ads, adt->action, filter_mode, key, ANIMTYPE_DSSKEY, (ID *)key); + items += animdata_filter_action(ac, anim_data, ads, adt->action, filter_mode, key, ANIMTYPE_DSSKEY, (ID *)key); } } ); @@ -1532,7 +1538,7 @@ static int animdata_filter_dopesheet_ob (ListBase *anim_data, bDopeSheet *ads, B /* Materials? */ if ((ob->totcol) && !(ads->filterflag & ADS_FILTER_NOMAT)) - items += animdata_filter_dopesheet_mats(anim_data, ads, base, filter_mode); + items += animdata_filter_dopesheet_mats(ac, anim_data, ads, base, filter_mode); /* Object Data */ switch (ob->type) { @@ -1618,17 +1624,17 @@ static int animdata_filter_dopesheet_ob (ListBase *anim_data, bDopeSheet *ads, B break; } if (obdata_ok) - items += animdata_filter_dopesheet_obdata(anim_data, ads, base, filter_mode); + items += animdata_filter_dopesheet_obdata(ac, anim_data, ads, base, filter_mode); /* particles */ if (ob->particlesystem.first && !(ads->filterflag & ADS_FILTER_NOPART)) - items += animdata_filter_dopesheet_particles(anim_data, ads, base, filter_mode); + items += animdata_filter_dopesheet_particles(ac, anim_data, ads, base, filter_mode); /* return the number of items added to the list */ return items; } -static int animdata_filter_dopesheet_scene (ListBase *anim_data, bDopeSheet *ads, Scene *sce, int filter_mode) +static int animdata_filter_dopesheet_scene (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Scene *sce, int filter_mode) { World *wo= sce->world; bNodeTree *ntree= sce->nodetree; @@ -1659,7 +1665,7 @@ static int animdata_filter_dopesheet_scene (ListBase *anim_data, bDopeSheet *ads { /* AnimData blocks - do nothing... */ }, { /* nla */ /* add NLA tracks */ - items += animdata_filter_nla(anim_data, ads, adt, filter_mode, sce, ANIMTYPE_SCENE, (ID *)sce); + items += animdata_filter_nla(ac, anim_data, ads, adt, filter_mode, sce, ANIMTYPE_SCENE, (ID *)sce); }, { /* drivers */ /* include drivers-expand widget? */ @@ -1688,7 +1694,7 @@ static int animdata_filter_dopesheet_scene (ListBase *anim_data, bDopeSheet *ads /* add F-Curve channels? */ if (EXPANDED_ACTC(adt->action) || !(filter_mode & ANIMFILTER_CHANNELS)) { - items += animdata_filter_action(anim_data, ads, adt->action, filter_mode, sce, ANIMTYPE_SCENE, (ID *)sce); + items += animdata_filter_action(ac, anim_data, ads, adt->action, filter_mode, sce, ANIMTYPE_SCENE, (ID *)sce); } } ) @@ -1702,7 +1708,7 @@ static int animdata_filter_dopesheet_scene (ListBase *anim_data, bDopeSheet *ads { /* AnimData blocks - do nothing... */ }, { /* nla */ /* add NLA tracks */ - items += animdata_filter_nla(anim_data, ads, adt, filter_mode, wo, ANIMTYPE_DSWOR, (ID *)wo); + items += animdata_filter_nla(ac, anim_data, ads, adt, filter_mode, wo, ANIMTYPE_DSWOR, (ID *)wo); }, { /* drivers */ /* include world-expand widget? */ @@ -1732,7 +1738,7 @@ static int animdata_filter_dopesheet_scene (ListBase *anim_data, bDopeSheet *ads /* add channels */ if (FILTER_WOR_SCED(wo) || (filter_mode & ANIMFILTER_CURVESONLY)) { - items += animdata_filter_action(anim_data, ads, adt->action, filter_mode, wo, ANIMTYPE_DSWOR, (ID *)wo); + items += animdata_filter_action(ac, anim_data, ads, adt->action, filter_mode, wo, ANIMTYPE_DSWOR, (ID *)wo); } } ) @@ -1745,7 +1751,7 @@ static int animdata_filter_dopesheet_scene (ListBase *anim_data, bDopeSheet *ads { /* AnimData blocks - do nothing... */ }, { /* nla */ /* add NLA tracks */ - items += animdata_filter_nla(anim_data, ads, adt, filter_mode, ntree, ANIMTYPE_DSNTREE, (ID *)ntree); + items += animdata_filter_nla(ac, anim_data, ads, adt, filter_mode, ntree, ANIMTYPE_DSNTREE, (ID *)ntree); }, { /* drivers */ /* include nodetree-expand widget? */ @@ -1775,7 +1781,7 @@ static int animdata_filter_dopesheet_scene (ListBase *anim_data, bDopeSheet *ads /* add channels */ if (FILTER_NTREE_SCED(ntree) || (filter_mode & ANIMFILTER_CURVESONLY)) { - items += animdata_filter_action(anim_data, ads, adt->action, filter_mode, ntree, ANIMTYPE_DSNTREE, (ID *)ntree); + items += animdata_filter_action(ac, anim_data, ads, adt->action, filter_mode, ntree, ANIMTYPE_DSNTREE, (ID *)ntree); } } ) @@ -1789,7 +1795,7 @@ static int animdata_filter_dopesheet_scene (ListBase *anim_data, bDopeSheet *ads } // TODO: implement pinning... (if and when pinning is done, what we need to do is to provide freeing mechanisms - to protect against data that was deleted) -static int animdata_filter_dopesheet (ListBase *anim_data, bAnimContext *ac, bDopeSheet *ads, int filter_mode) +static int animdata_filter_dopesheet (bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, int filter_mode) { Scene *sce= (Scene *)ads->source; Base *base; @@ -1804,6 +1810,14 @@ static int animdata_filter_dopesheet (ListBase *anim_data, bAnimContext *ac, bDo return 0; } + /* augment the filter-flags with settings based on the dopesheet filterflags + * so that some temp settings can get added automagically... + */ + if (ads->filterflag & ADS_FILTER_SELEDIT) { + /* only selected F-Curves should get their keyframes considered for editability */ + filter_mode |= ANIMFILTER_SELEDIT; + } + /* scene-linked animation */ // TODO: sequencer, composite nodes - are we to include those here too? { @@ -1859,7 +1873,7 @@ static int animdata_filter_dopesheet (ListBase *anim_data, bAnimContext *ac, bDo /* check if not all bad (i.e. so there is something to show) */ if ( !(!sceOk && !worOk && !nodeOk) ) { /* add scene data to the list of filtered channels */ - items += animdata_filter_dopesheet_scene(anim_data, ads, sce, filter_mode); + items += animdata_filter_dopesheet_scene(ac, anim_data, ads, sce, filter_mode); } } @@ -1902,6 +1916,15 @@ static int animdata_filter_dopesheet (ListBase *anim_data, bAnimContext *ac, bDo continue; } + /* check if object belongs to the filtering group if option to filter + * objects by the grouped status is on + * - used to ease the process of doing multiple-character choreographies + */ + if (ads->filterflag & ADS_FILTER_ONLYOBGROUP) { + if (object_in_group(ob, ads->filter_grp) == 0) + continue; + } + /* check filters for datatypes */ /* object */ actOk= 0; @@ -2188,7 +2211,7 @@ static int animdata_filter_dopesheet (ListBase *anim_data, bAnimContext *ac, bDo } /* since we're still here, this object should be usable */ - items += animdata_filter_dopesheet_ob(anim_data, ads, base, filter_mode); + items += animdata_filter_dopesheet_ob(ac, anim_data, ads, base, filter_mode); } } @@ -2264,7 +2287,7 @@ int ANIM_animdata_filter (bAnimContext *ac, ListBase *anim_data, int filter_mode { /* the check for the DopeSheet summary is included here since the summary works here too */ if (animdata_filter_dopesheet_summary(ac, anim_data, filter_mode, &items)) - items += animdata_filter_action(anim_data, NULL, data, filter_mode, NULL, ANIMTYPE_NONE, (ID *)obact); + items += animdata_filter_action(ac, anim_data, NULL, data, filter_mode, NULL, ANIMTYPE_NONE, (ID *)obact); } break; @@ -2272,7 +2295,7 @@ int ANIM_animdata_filter (bAnimContext *ac, ListBase *anim_data, int filter_mode { /* the check for the DopeSheet summary is included here since the summary works here too */ if (animdata_filter_dopesheet_summary(ac, anim_data, filter_mode, &items)) - items= animdata_filter_shapekey(anim_data, data, filter_mode); + items= animdata_filter_shapekey(ac, anim_data, data, filter_mode); } break; @@ -2286,7 +2309,7 @@ int ANIM_animdata_filter (bAnimContext *ac, ListBase *anim_data, int filter_mode { /* the DopeSheet editor is the primary place where the DopeSheet summaries are useful */ if (animdata_filter_dopesheet_summary(ac, anim_data, filter_mode, &items)) - items += animdata_filter_dopesheet(anim_data, ac, data, filter_mode); + items += animdata_filter_dopesheet(ac, anim_data, data, filter_mode); } break; @@ -2295,7 +2318,7 @@ int ANIM_animdata_filter (bAnimContext *ac, ListBase *anim_data, int filter_mode case ANIMCONT_NLA: /* NLA Editor */ { /* all of these editors use the basic DopeSheet data for filtering options, but don't have all the same features */ - items = animdata_filter_dopesheet(anim_data, ac, data, filter_mode); + items = animdata_filter_dopesheet(ac, anim_data, data, filter_mode); } break; } diff --git a/source/blender/editors/animation/anim_markers.c b/source/blender/editors/animation/anim_markers.c index 7d1ddda1c6d..d64787ba35b 100644 --- a/source/blender/editors/animation/anim_markers.c +++ b/source/blender/editors/animation/anim_markers.c @@ -41,6 +41,7 @@ #include "RNA_access.h" #include "RNA_define.h" +#include "RNA_enum_types.h" #include "BLI_blenlib.h" @@ -48,6 +49,8 @@ #include "BKE_global.h" #include "BKE_fcurve.h" #include "BKE_utildefines.h" +#include "BKE_main.h" +#include "BKE_report.h" #include "WM_api.h" #include "WM_types.h" @@ -985,6 +988,55 @@ static void MARKER_OT_delete(wmOperatorType *ot) } +static int ed_marker_make_links_scene_exec(bContext *C, wmOperator *op) +{ + ListBase *markers= context_get_markers(C); + Scene *scene_to= BLI_findlink(&CTX_data_main(C)->scene, RNA_enum_get(op->ptr, "type")); + TimeMarker *marker, *marker_new; + + if(scene_to==NULL) { + BKE_report(op->reports, RPT_ERROR, "Scene not found"); + return OPERATOR_CANCELLED; + } + + if(scene_to == CTX_data_scene(C)) { + BKE_report(op->reports, RPT_ERROR, "Can't link objects into the same scene"); + return OPERATOR_CANCELLED; + } + + /* copy markers */ + for (marker= markers->first; marker; marker= marker->next) { + if(marker->flag & SELECT) { + marker_new= MEM_dupallocN(marker); + BLI_addtail(&scene_to->markers, marker_new); + } + } + + return OPERATOR_FINISHED; +} + +static void MARKER_OT_make_links_scene(wmOperatorType *ot) +{ + PropertyRNA *prop; + + /* identifiers */ + ot->name= "Make Links to Scene"; + ot->description= "Link markers to another scene."; + ot->idname= "MARKER_OT_make_links_scene"; + + /* api callbacks */ + ot->exec= ed_marker_make_links_scene_exec; + ot->poll= ED_operator_areaactive; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, 0, "Type", ""); + RNA_def_enum_funcs(prop, RNA_scene_itemf); + +} + #ifdef DURIAN_CAMERA_SWITCH /* ******************************* camera bind marker ***************** */ @@ -1039,6 +1091,7 @@ void ED_operatortypes_marker(void) WM_operatortype_append(MARKER_OT_select_border); WM_operatortype_append(MARKER_OT_select_all); WM_operatortype_append(MARKER_OT_delete); + WM_operatortype_append(MARKER_OT_make_links_scene); #ifdef DURIAN_CAMERA_SWITCH WM_operatortype_append(MARKER_OT_camera_bind); #endif diff --git a/source/blender/editors/animation/anim_ops.c b/source/blender/editors/animation/anim_ops.c index 9544bb70855..82a2b615681 100644 --- a/source/blender/editors/animation/anim_ops.c +++ b/source/blender/editors/animation/anim_ops.c @@ -205,6 +205,7 @@ static int previewrange_define_exec(bContext *C, wmOperator *op) if (efra < 1) efra = 1.0f; if (efra < sfra) efra= sfra; + scene->r.flag |= SCER_PRV_RANGE; scene->r.psfra= (int)floor(sfra + 0.5f); scene->r.pefra= (int)floor(efra + 0.5f); @@ -251,6 +252,7 @@ static int previewrange_clear_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; /* simply clear values */ + scene->r.flag &= ~SCER_PRV_RANGE; scene->r.psfra= 0; scene->r.pefra= 0; diff --git a/source/blender/editors/animation/drivers.c b/source/blender/editors/animation/drivers.c index b816ffbe905..a993c4e238b 100644 --- a/source/blender/editors/animation/drivers.c +++ b/source/blender/editors/animation/drivers.c @@ -390,7 +390,7 @@ static int add_driver_button_exec (bContext *C, wmOperator *op) if (all) index= -1; - if (ptr.data && prop && RNA_property_animateable(ptr.data, prop)) { + if (ptr.data && prop && RNA_property_animateable(&ptr, prop)) { path= RNA_path_from_ID_to_property(&ptr, prop); if (path) { @@ -505,7 +505,7 @@ static int copy_driver_button_exec (bContext *C, wmOperator *op) memset(&ptr, 0, sizeof(PointerRNA)); uiAnimContextProperty(C, &ptr, &prop, &index); - if (ptr.data && prop && RNA_property_animateable(ptr.data, prop)) { + if (ptr.data && prop && RNA_property_animateable(&ptr, prop)) { path= RNA_path_from_ID_to_property(&ptr, prop); if (path) { @@ -549,7 +549,7 @@ static int paste_driver_button_exec (bContext *C, wmOperator *op) memset(&ptr, 0, sizeof(PointerRNA)); uiAnimContextProperty(C, &ptr, &prop, &index); - if (ptr.data && prop && RNA_property_animateable(ptr.data, prop)) { + if (ptr.data && prop && RNA_property_animateable(&ptr, prop)) { path= RNA_path_from_ID_to_property(&ptr, prop); if (path) { diff --git a/source/blender/editors/animation/keyframes_draw.c b/source/blender/editors/animation/keyframes_draw.c index 42fe9160946..3b91e9153de 100644 --- a/source/blender/editors/animation/keyframes_draw.c +++ b/source/blender/editors/animation/keyframes_draw.c @@ -767,7 +767,7 @@ void ob_to_keylist(bDopeSheet *ads, Object *ob, DLRBT_Tree *keys, DLRBT_Tree *bl if ((ob->totcol) && !(filterflag & ADS_FILTER_NOMAT)) { int a; - for (a=0; a < ob->totcol; a++) { + for (a=1; a <= ob->totcol; a++) { Material *ma= give_current_material(ob, a); /* there might not be a material */ @@ -855,7 +855,7 @@ void fcurve_to_keylist(AnimData *adt, FCurve *fcu, DLRBT_Tree *keys, DLRBT_Tree if (fcu && fcu->totvert && fcu->bezt) { /* apply NLA-mapping (if applicable) */ if (adt) - ANIM_nla_mapping_apply_fcurve(adt, fcu, 0, 1); + ANIM_nla_mapping_apply_fcurve(adt, fcu, 0, 0); /* if getting long keyframes too, grab the BezTriples in a BST for * accelerated searching... @@ -891,7 +891,8 @@ void fcurve_to_keylist(AnimData *adt, FCurve *fcu, DLRBT_Tree *keys, DLRBT_Tree } /* unapply NLA-mapping if applicable */ - ANIM_nla_mapping_apply_fcurve(adt, fcu, 1, 1); + if (adt) + ANIM_nla_mapping_apply_fcurve(adt, fcu, 1, 0); } } diff --git a/source/blender/editors/animation/keyframes_edit.c b/source/blender/editors/animation/keyframes_edit.c index 828ff9792be..fe78a058d24 100644 --- a/source/blender/editors/animation/keyframes_edit.c +++ b/source/blender/editors/animation/keyframes_edit.c @@ -219,7 +219,7 @@ static short ob_keys_bezier_loop(BeztEditData *bed, Object *ob, BeztEditFunc bez if ((ob->totcol) && !(filterflag & ADS_FILTER_NOMAT)) { int a; - for (a=0; a < ob->totcol; a++) { + for (a=1; a <= ob->totcol; a++) { Material *ma= give_current_material(ob, a); /* there might not be a material */ diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index 6d8938d9545..7a3e6dc5814 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -855,7 +855,7 @@ short insert_keyframe (ID *id, bAction *act, const char group[], const char rna_ 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); } @@ -878,6 +878,13 @@ short insert_keyframe (ID *id, bAction *act, const char group[], const char rna_ if (array_index == -1) { array_index= 0; array_index_max= RNA_property_array_length(&ptr, prop); + + /* for single properties, increase max_index so that the property itself gets included, + * but don't do this for standard arrays since that can cause corruption issues + * (extra unused curves) + */ + if (array_index_max == array_index) + array_index_max++; } /* will only loop once unless the array index was -1 */ @@ -917,6 +924,12 @@ short delete_keyframe (ID *id, bAction *act, const char group[], const char rna_ AnimData *adt= BKE_animdata_from_id(id); FCurve *fcu = NULL; + /* sanity checks */ + if ELEM(NULL, id, adt) { + printf("ERROR: no ID-block and/or AnimData to delete keyframe from \n"); + return 0; + } + /* get F-Curve * Note: here is one of the places where we don't want new Action + F-Curve added! * so 'add' var must be 0 @@ -1051,7 +1064,7 @@ static int insert_key_exec (bContext *C, wmOperator *op) /* try to insert keyframes for the channels specified by KeyingSet */ success= modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); if (G.f & G_DEBUG) - printf("KeyingSet '%s' - Successfully added %d Keyframes \n", ks->name, success); + BKE_reportf(op->reports, RPT_INFO, "KeyingSet '%s' - Successfully added %d Keyframes \n", ks->name, success); /* report failure or do updates? */ if (success) { @@ -1320,7 +1333,7 @@ static int delete_key_v3d_exec (bContext *C, wmOperator *op) } } - printf("Ob '%s' - Successfully removed %d keyframes \n", id->name+2, success); + BKE_reportf(op->reports, RPT_INFO, "Ob '%s' - Successfully removed %d keyframes \n", id->name+2, success); ob->recalc |= OB_RECALC_OB; } diff --git a/source/blender/editors/animation/keyingsets.c b/source/blender/editors/animation/keyingsets.c index d5624b8bc5b..07a072d533d 100644 --- a/source/blender/editors/animation/keyingsets.c +++ b/source/blender/editors/animation/keyingsets.c @@ -227,6 +227,7 @@ static int add_empty_ks_path_exec (bContext *C, wmOperator *op) ks->active_path= BLI_countlist(&ks->paths); ksp->groupmode= KSP_GROUP_KSNAME; // XXX? + ksp->idtype= ID_OB; return OPERATOR_FINISHED; } @@ -320,10 +321,8 @@ static int add_keyingset_button_exec (bContext *C, wmOperator *op) */ flag |= KEYINGSET_ABSOLUTE; - if (IS_AUTOKEY_FLAG(AUTOMATKEY)) - keyingflag |= INSERTKEY_MATRIX; - if (IS_AUTOKEY_FLAG(INSERTNEEDED)) - keyingflag |= INSERTKEY_NEEDED; + keyingflag |= ANIM_get_keyframing_flags(scene, 0); + if (IS_AUTOKEY_FLAG(XYZ2RGB)) keyingflag |= INSERTKEY_XYZ2RGB; @@ -340,7 +339,7 @@ static int add_keyingset_button_exec (bContext *C, wmOperator *op) uiAnimContextProperty(C, &ptr, &prop, &index); /* check if property is able to be added */ - if (ptr.data && prop && RNA_property_animateable(ptr.data, prop)) { + if (ptr.data && prop && RNA_property_animateable(&ptr, prop)) { path= RNA_path_from_ID_to_property(&ptr, prop); if (path) { diff --git a/source/blender/editors/armature/armature_intern.h b/source/blender/editors/armature/armature_intern.h index c65d4637dcf..5a1f8f35d62 100644 --- a/source/blender/editors/armature/armature_intern.h +++ b/source/blender/editors/armature/armature_intern.h @@ -86,6 +86,7 @@ void POSE_OT_select_parent(struct wmOperatorType *ot); void POSE_OT_select_hierarchy(struct wmOperatorType *ot); void POSE_OT_select_linked(struct wmOperatorType *ot); void POSE_OT_select_constraint_target(struct wmOperatorType *ot); +void POSE_OT_select_grouped(struct wmOperatorType *ot); void POSE_OT_group_add(struct wmOperatorType *ot); void POSE_OT_group_remove(struct wmOperatorType *ot); @@ -99,6 +100,8 @@ void POSE_OT_paths_clear(struct wmOperatorType *ot); void POSE_OT_autoside_names(struct wmOperatorType *ot); void POSE_OT_flip_names(struct wmOperatorType *ot); +void POSE_OT_quaternions_flip(struct wmOperatorType *ot); + void POSE_OT_flags_set(struct wmOperatorType *ot); void POSE_OT_armature_layers(struct wmOperatorType *ot); diff --git a/source/blender/editors/armature/armature_ops.c b/source/blender/editors/armature/armature_ops.c index a3c35413680..5f90f6eb745 100644 --- a/source/blender/editors/armature/armature_ops.c +++ b/source/blender/editors/armature/armature_ops.c @@ -127,6 +127,7 @@ void ED_operatortypes_armature(void) WM_operatortype_append(POSE_OT_select_hierarchy); WM_operatortype_append(POSE_OT_select_linked); WM_operatortype_append(POSE_OT_select_constraint_target); + WM_operatortype_append(POSE_OT_select_grouped); WM_operatortype_append(POSE_OT_group_add); WM_operatortype_append(POSE_OT_group_remove); @@ -139,6 +140,8 @@ void ED_operatortypes_armature(void) WM_operatortype_append(POSE_OT_autoside_names); WM_operatortype_append(POSE_OT_flip_names); + WM_operatortype_append(POSE_OT_quaternions_flip); + WM_operatortype_append(POSE_OT_flags_set); WM_operatortype_append(POSE_OT_armature_layers); @@ -290,6 +293,8 @@ void ED_keymap_armature(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "POSE_OT_loc_clear", GKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "POSE_OT_scale_clear", SKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_add_item(keymap, "POSE_OT_quaternions_flip", FKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_add_item(keymap, "POSE_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "POSE_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0); kmi= WM_keymap_add_item(keymap, "POSE_OT_paste", VKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); @@ -313,6 +318,7 @@ void ED_keymap_armature(wmKeyConfig *keyconf) RNA_boolean_set(kmi->ptr, "extend", 1); WM_keymap_add_item(keymap, "POSE_OT_select_linked", LKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "POSE_OT_select_grouped", GKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "POSE_OT_constraint_add_with_targets", CKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); WM_keymap_add_item(keymap, "POSE_OT_constraints_clear", CKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index f382896c868..496e9a0d4d7 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -320,7 +320,8 @@ void ED_armature_from_edit(Object *obedit) if (fBone->parent==eBone) fBone->parent= eBone->parent; } - printf("Warning: removed zero sized bone: %s\n", eBone->name); + if (G.f & G_DEBUG) + printf("Warning: removed zero sized bone: %s\n", eBone->name); bone_free(arm, eBone); } } @@ -517,7 +518,7 @@ void unique_editbone_name (ListBase *edbo, char *name, EditBone *bone) /* Strip off the suffix, if it's a number */ number= strlen(name); if (number && isdigit(name[number-1])) { - dot= strrchr(name, '.'); // last occurrance + dot= strrchr(name, '.'); // last occurrence if (dot) *dot=0; } @@ -631,7 +632,7 @@ static int apply_armature_pose2bones_exec (bContext *C, wmOperator *op) applyarmature_fix_boneparents(scene, ob); /* note, notifier might evolve */ - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); return OPERATOR_FINISHED; } @@ -1128,7 +1129,7 @@ static int separate_armature_exec (bContext *C, wmOperator *op) ED_armature_to_edit(obedit); /* note, notifier might evolve */ - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, obedit); + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, obedit); /* recalc/redraw + cleanup */ WM_cursor_wait(0); @@ -1384,7 +1385,7 @@ void ARMATURE_OT_flags_set (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "type", prop_bone_setting_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_bone_setting_types, 0, "Type", ""); RNA_def_enum(ot->srna, "mode", prop_bone_setting_modes, 0, "Mode", ""); } @@ -1404,7 +1405,7 @@ void POSE_OT_flags_set (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "type", prop_bone_setting_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_bone_setting_types, 0, "Type", ""); RNA_def_enum(ot->srna, "mode", prop_bone_setting_modes, 0, "Mode", ""); } @@ -1486,6 +1487,11 @@ static int pose_select_connected_invoke(bContext *C, wmOperator *op, wmEvent *ev return OPERATOR_FINISHED; } +static int pose_select_linked_poll(bContext *C) +{ + return ( ED_operator_view3d_active(C) && ED_operator_posemode(C) ); +} + void POSE_OT_select_linked(wmOperatorType *ot) { /* identifiers */ @@ -1495,7 +1501,7 @@ void POSE_OT_select_linked(wmOperatorType *ot) /* api callbacks */ ot->exec= NULL; ot->invoke= pose_select_connected_invoke; - ot->poll= ED_operator_posemode; + ot->poll= pose_select_linked_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1580,6 +1586,11 @@ static int armature_select_linked_invoke(bContext *C, wmOperator *op, wmEvent *e return OPERATOR_FINISHED; } +static int armature_select_linked_poll(bContext *C) +{ + return ( ED_operator_view3d_active(C) && ED_operator_editarmature(C) ); +} + void ARMATURE_OT_select_linked(wmOperatorType *ot) { /* identifiers */ @@ -1589,7 +1600,7 @@ void ARMATURE_OT_select_linked(wmOperatorType *ot) /* api callbacks */ ot->exec= NULL; ot->invoke= armature_select_linked_invoke; - ot->poll= ED_operator_editarmature; + ot->poll= armature_select_linked_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1792,7 +1803,7 @@ static int armature_delete_selected_exec(bContext *C, wmOperator *op) ED_armature_sync_selection(arm->edbo); - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, obedit); + WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, obedit); return OPERATOR_FINISHED; } @@ -2134,7 +2145,7 @@ static int armature_calc_roll_exec(bContext *C, wmOperator *op) /* note, notifier might evolve */ - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); return OPERATOR_FINISHED; } @@ -2154,7 +2165,7 @@ void ARMATURE_OT_calculate_roll(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "type", prop_calc_roll_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_calc_roll_types, 0, "Type", ""); } /* **************** undo for armatures ************** */ @@ -2996,8 +3007,7 @@ static int armature_fill_bones_exec (bContext *C, wmOperator *op) } else { // FIXME.. figure out a method for multiple bones - BKE_report(op->reports, RPT_ERROR, "Too many points selected"); - printf("Points selected: %d \n", count); + BKE_reportf(op->reports, RPT_ERROR, "Too many points selected: %d \n", count); BLI_freelistN(&points); return OPERATOR_CANCELLED; } @@ -3037,8 +3047,10 @@ static void bones_merge(Object *obedit, EditBone *start, EditBone *end, EditBone /* check if same bone */ if (start == end) { - printf("Error: same bone! \n"); - printf("\tstart = %s, end = %s \n", start->name, end->name); + if (G.f & G_DEBUG) { + printf("Error: same bone! \n"); + printf("\tstart = %s, end = %s \n", start->name, end->name); + } } /* step 1: add a new bone @@ -3164,7 +3176,7 @@ static int armature_merge_exec (bContext *C, wmOperator *op) /* updates */ ED_armature_sync_selection(arm->edbo); - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, obedit); + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, obedit); return OPERATOR_FINISHED; } @@ -3190,7 +3202,7 @@ void ARMATURE_OT_merge (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "type", merge_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", merge_types, 0, "Type", ""); } /* ************** END Add/Remove stuff in editmode ************ */ @@ -3455,7 +3467,7 @@ static int armature_bone_primitive_add_exec(bContext *C, wmOperator *op) add_v3_v3v3(bone->tail, bone->head, imat[2]); // bone with unit length 1, pointing up Z /* note, notifier might evolve */ - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, obedit); + WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, obedit); return OPERATOR_FINISHED; } @@ -3547,7 +3559,7 @@ static int armature_subdivide_exec(bContext *C, wmOperator *op) CTX_DATA_END; /* note, notifier might evolve */ - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, obedit); + WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, obedit); return OPERATOR_FINISHED; } @@ -3717,7 +3729,7 @@ static int armature_switch_direction_exec(bContext *C, wmOperator *op) BLI_freelistN(&chains); /* note, notifier might evolve */ - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); return OPERATOR_FINISHED; } @@ -3866,7 +3878,7 @@ static int armature_parent_set_exec(bContext *C, wmOperator *op) /* note, notifier might evolve */ - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); return OPERATOR_FINISHED; } @@ -3944,7 +3956,7 @@ static int armature_parent_clear_exec(bContext *C, wmOperator *op) ED_armature_sync_selection(arm->edbo); /* note, notifier might evolve */ - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); return OPERATOR_FINISHED; } @@ -3963,7 +3975,7 @@ void ARMATURE_OT_parent_clear(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - RNA_def_enum(ot->srna, "type", prop_editarm_clear_parent_types, 0, "ClearType", "What way to clear parenting"); + ot->prop= RNA_def_enum(ot->srna, "type", prop_editarm_clear_parent_types, 0, "ClearType", "What way to clear parenting"); } /* **************** Selections ******************/ @@ -4477,7 +4489,7 @@ static int ED_vgroup_add_unique_bone(Object *ob, Bone *bone, void *data) * If such a vertex group aleady exist the routine exits. */ if (!(bone->flag & BONE_NO_DEFORM)) { - if (!get_named_vertexgroup(ob,bone->name)) { + if (!defgroup_find_name(ob,bone->name)) { ED_vgroup_add_name(ob, bone->name); return 1; } @@ -4521,7 +4533,7 @@ static int dgroup_skinnable(Object *ob, Bone *bone, void *datap) else segments = 1; - if (!(defgroup = get_named_vertexgroup(ob, bone->name))) + if (!(defgroup = defgroup_find_name(ob, bone->name))) defgroup = ED_vgroup_add_name(ob, bone->name); if (data->list != NULL) { @@ -4762,7 +4774,7 @@ void add_verts_to_dgroups(Scene *scene, Object *ob, Object *par, int heat, int m MEM_freeN(verts); } -void create_vgroups_from_armature(Scene *scene, Object *ob, Object *par, int mode) +void create_vgroups_from_armature(Scene *scene, Object *ob, Object *par, int mode, int mirror) { /* Lets try to create some vertex groups * based on the bones of the parent armature. @@ -4783,7 +4795,7 @@ void create_vgroups_from_armature(Scene *scene, Object *ob, Object *par, int mod * that are populated with the vertices for which the * bone is closest. */ - add_verts_to_dgroups(scene, ob, par, (mode == ARM_GROUPS_AUTO), 0); + add_verts_to_dgroups(scene, ob, par, (mode == ARM_GROUPS_AUTO), mirror); } } /* ************* Clear Pose *****************************/ @@ -5318,7 +5330,7 @@ void unique_bone_name (bArmature *arm, char *name) /* Strip off the suffix, if it's a number */ number= strlen(name); if(number && isdigit(name[number-1])) { - dot= strrchr(name, '.'); // last occurrance + dot= strrchr(name, '.'); // last occurrence if (dot) *dot=0; } @@ -5549,7 +5561,7 @@ void ARMATURE_OT_autoside_names (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* settings */ - RNA_def_enum(ot->srna, "type", axis_items, 0, "Axis", "Axis tag names with."); + ot->prop= RNA_def_enum(ot->srna, "type", axis_items, 0, "Axis", "Axis tag names with."); } diff --git a/source/blender/editors/armature/meshlaplacian.c b/source/blender/editors/armature/meshlaplacian.c index 2ad71881f47..c8bdae53a11 100644 --- a/source/blender/editors/armature/meshlaplacian.c +++ b/source/blender/editors/armature/meshlaplacian.c @@ -1166,7 +1166,7 @@ static int meshdeform_intersect(MeshDeformBind *mdb, Isect *isec) mface= mdb->cagedm->getFaceArray(mdb->cagedm); totface= mdb->cagedm->getNumFaces(mdb->cagedm); - VECADDFAC( end, isec->start, isec->vec, isec->labda ); + add_v3_v3v3(end, isec->start, isec->vec); for(f=0; f<totface; f++, mface++) { copy_v3_v3(face[0], mdb->cagecos[mface->v1]); @@ -1670,7 +1670,6 @@ static void meshdeform_matrix_solve(MeshDeformBind *mdb) for(b=0; b<mdb->totvert; b++) { if(mdb->inside[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]; gridvec[2]= (vec[2] - mdb->min[2] - mdb->halfwidth[2])/mdb->width[2]; @@ -1781,7 +1780,6 @@ static void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, totinside= 0; 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++; diff --git a/source/blender/editors/armature/poseSlide.c b/source/blender/editors/armature/poseSlide.c index 0e066b112b0..3c6073a1cf8 100644 --- a/source/blender/editors/armature/poseSlide.c +++ b/source/blender/editors/armature/poseSlide.c @@ -287,7 +287,6 @@ static void pose_slide_refresh (bContext *C, tPoseSlideOp *pso) /* note, notifier might evolve */ WM_event_add_notifier(C, NC_OBJECT|ND_POSE, pso->ob); - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); } /* helper for apply() callabcks - find the next F-Curve with matching path... */ diff --git a/source/blender/editors/armature/poselib.c b/source/blender/editors/armature/poselib.c index 0837e9cb48a..240e7f72654 100644 --- a/source/blender/editors/armature/poselib.c +++ b/source/blender/editors/armature/poselib.c @@ -64,6 +64,7 @@ #include "RNA_access.h" #include "RNA_define.h" #include "RNA_types.h" +#include "RNA_enum_types.h" #include "WM_api.h" #include "WM_types.h" @@ -432,6 +433,10 @@ static EnumPropertyItem *poselib_stored_pose_itemf(bContext *C, PointerRNA *ptr, int totitem= 0; int i= 0; + if (C==NULL) { + return DummyRNA_DEFAULT_items; + } + memset(&item_tmp, 0, sizeof(item_tmp)); /* check that the action exists */ @@ -500,9 +505,6 @@ static int poselib_remove_exec (bContext *C, wmOperator *op) void POSELIB_OT_pose_remove (wmOperatorType *ot) { PropertyRNA *prop; - static EnumPropertyItem prop_poses_dummy_types[] = { - {0, NULL, 0, NULL, NULL} - }; /* identifiers */ ot->name= "PoseLib Remove Pose"; @@ -518,8 +520,9 @@ void POSELIB_OT_pose_remove (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "pose", prop_poses_dummy_types, 0, "Pose", "The pose to remove"); - RNA_def_enum_funcs(prop, poselib_stored_pose_itemf); + prop= RNA_def_enum(ot->srna, "pose", DummyRNA_DEFAULT_items, 0, "Pose", "The pose to remove"); + RNA_def_enum_funcs(prop, poselib_stored_pose_itemf); + ot->prop= prop; } static int poselib_rename_invoke (bContext *C, wmOperator *op, wmEvent *evt) @@ -900,7 +903,7 @@ static void poselib_preview_apply (bContext *C, wmOperator *op) } /* request drawing of view + clear redraw flag */ - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM|ND_POSE, pld->ob); + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, pld->ob); pld->redraw= PL_PREVIEW_NOREDRAW; } @@ -1302,7 +1305,8 @@ static void poselib_preview_init_data (bContext *C, wmOperator *op) if (pld->act->markers.first) { /* just use first one then... */ pld->marker= pld->act->markers.first; - if (pose_index > -2) printf("PoseLib had no active pose\n"); + if (pose_index > -2) + BKE_report(op->reports, RPT_WARNING, "PoseLib had no active pose"); } else { BKE_report(op->reports, RPT_ERROR, "PoseLib has no poses to preview/apply"); diff --git a/source/blender/editors/armature/poseobject.c b/source/blender/editors/armature/poseobject.c index df5f551fb0c..e4fb378aff2 100644 --- a/source/blender/editors/armature/poseobject.c +++ b/source/blender/editors/armature/poseobject.c @@ -51,6 +51,7 @@ #include "DNA_view3d_types.h" #include "DNA_userdef_types.h" +#include "BKE_anim.h" #include "BKE_animsys.h" #include "BKE_action.h" #include "BKE_armature.h" @@ -92,8 +93,6 @@ static int pupmenu() {return 0;} static void error() {}; static void BIF_undo_push() {} -static void countall() {} -static void autokeyframe_pose_cb_func() {} /* ************* XXX *************** */ /* This function is used to indicate that a bone is selected and needs keyframes inserted */ @@ -200,6 +199,7 @@ int ED_pose_channel_in_IK_chain(Object *ob, bPoseChannel *pchan) } /* ********************************************** */ +/* Motion Paths */ /* For the object with pose/action: update paths for those that have got them * This should selectively update paths that exist... @@ -208,120 +208,25 @@ int ED_pose_channel_in_IK_chain(Object *ob, bPoseChannel *pchan) */ void ED_pose_recalculate_paths(bContext *C, Scene *scene, Object *ob) { - bArmature *arm; - bPoseChannel *pchan; - Base *base; - float *fp; - int cfra; - int sfra, efra; - - /* sanity checks */ - if ELEM(NULL, ob, ob->pose) - return; - arm= ob->data; - - /* set frame values */ - cfra = CFRA; - sfra = efra = cfra; - for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { - if ((pchan->bone) && (arm->layer & pchan->bone->layer)) { - if (pchan->path) { - /* if the pathsf and pathef aren't initialised, abort! */ - // XXX can now have negative frames, so this check needs improvement - if (ELEM(0, pchan->pathsf, pchan->pathef)) - return; - - /* try to increase area to do (only as much as needed) */ - sfra= MIN2(sfra, pchan->pathsf); - efra= MAX2(efra, pchan->pathef); - } - } - } - if (efra <= sfra) return; - - /* hack: for unsaved files, set OB_RECALC so that paths can get calculated */ - if ((ob->recalc & OB_RECALC)==0) { - ob->recalc |= OB_RECALC; - DAG_id_update_flags(&ob->id); - } - else - DAG_id_update_flags(&ob->id); - - /* calculate path over requested range */ - for (CFRA=sfra; CFRA<=efra; CFRA++) { - /* do all updates */ - for (base= FIRSTBASE; base; base= base->next) { - if (base->object->recalc) { - int temp= base->object->recalc; - - if (base->object->adt) - BKE_animsys_evaluate_animdata(&base->object->id, base->object->adt, (float)CFRA, ADT_RECALC_ALL); - - /* update object */ - object_handle_update(scene, base->object); - base->object->recalc= temp; - } - } - - for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { - if ((pchan->bone) && (arm->layer & pchan->bone->layer)) { - if (pchan->path) { - /* only update if: - * - in range of this pchan's existing path - * - ... insert evil filtering/optimising conditions here... - */ - if (IN_RANGE(CFRA, pchan->pathsf, pchan->pathef)) { - fp= pchan->path+3*(CFRA-sfra); - - if (arm->pathflag & ARM_PATH_HEADS) { - VECCOPY(fp, pchan->pose_head); - } - else { - VECCOPY(fp, pchan->pose_tail); - } - - mul_m4_v3(ob->obmat, fp); - } - } - } - } - } + ListBase targets = {NULL, NULL}; - /* reset flags */ - CFRA= cfra; - ob->pose->flag &= ~POSE_RECALCPATHS; + /* set flag to force recalc, then grab the relevant bones to target */ + ob->pose->avs.recalc |= ANIMVIZ_RECALC_PATHS; + animviz_get_object_motionpaths(ob, &targets); - /* flush one final time - to restore to the original state */ - for (base= FIRSTBASE; base; base= base->next) { - if (base->object->recalc) { - int temp= base->object->recalc; - - if (base->object->adt) - BKE_animsys_evaluate_animdata(&base->object->id, base->object->adt, (float)CFRA, ADT_RECALC_ALL); - - object_handle_update(scene, base->object); - base->object->recalc= temp; - } - } + /* recalculate paths, then free */ + animviz_calc_motionpaths(scene, &targets); + BLI_freelistN(&targets); } -/* --------- */ - /* For the object with pose/action: create path curves for selected bones * This recalculates the WHOLE path within the pchan->pathsf and pchan->pathef range */ static int pose_calculate_paths_exec (bContext *C, wmOperator *op) { - wmWindow *win= CTX_wm_window(C); ScrArea *sa= CTX_wm_area(C); Scene *scene= CTX_data_scene(C); Object *ob; - bArmature *arm; - bPoseChannel *pchan; - Base *base; - float *fp; - int cfra; - int sfra, efra; /* since this call may also be used from the buttons window, we need to check for where to get the object */ if (sa->spacetype == SPACE_BUTS) @@ -329,109 +234,20 @@ static int pose_calculate_paths_exec (bContext *C, wmOperator *op) else ob= CTX_data_active_object(C); - /* only continue if there's an object */ - if ELEM(NULL, ob, ob->pose) - return OPERATOR_CANCELLED; - arm= ob->data; - - /* version patch for older files here (do_versions patch too complicated) */ - if ((arm->pathsf == 0) || (arm->pathef == 0)) { - arm->pathsf = SFRA; - arm->pathef = EFRA; - } - if (arm->pathsize == 0) { - arm->pathsize = 1; - } - - /* get frame values to use */ - cfra= CFRA; - sfra = arm->pathsf; - efra = arm->pathef; - - if (efra <= sfra) { - BKE_report(op->reports, RPT_ERROR, "Can't calculate paths when pathlen <= 0"); + if (ELEM(NULL, ob, ob->pose)) return OPERATOR_CANCELLED; - } - - /* hack: for unsaved files, set OB_RECALC so that paths can get calculated */ - if ((ob->recalc & OB_RECALC)==0) { - ob->recalc |= OB_RECALC; - DAG_id_update_flags(&ob->id); - } - else - DAG_id_update_flags(&ob->id); - - /* alloc the path cache arrays */ - for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { - if ((pchan->bone) && (pchan->bone->flag & BONE_SELECTED)) { - if (arm->layer & pchan->bone->layer) { - pchan->pathlen= efra-sfra+1; - pchan->pathsf= sfra; - pchan->pathef= efra+1; - if (pchan->path) - MEM_freeN(pchan->path); - pchan->path= MEM_callocN(3*pchan->pathlen*sizeof(float), "pchan path"); - } - } - } - /* step through frame range sampling the values */ - for (CFRA=sfra; CFRA<=efra; CFRA++) { - /* for each frame we calculate, update time-cursor... (may be too slow) */ - WM_timecursor(win, CFRA); - - /* do all updates */ - for (base= FIRSTBASE; base; base= base->next) { - if (base->object->recalc) { - int temp= base->object->recalc; - - if (base->object->adt) - BKE_animsys_evaluate_animdata(&base->object->id, base->object->adt, (float)CFRA, ADT_RECALC_ALL); - - object_handle_update(scene, base->object); - base->object->recalc= temp; - } - } - - for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { - if ((pchan->bone) && (pchan->bone->flag & BONE_SELECTED)) { - if (arm->layer & pchan->bone->layer) { - if (pchan->path) { - fp= pchan->path+3*(CFRA-sfra); - - if (arm->pathflag & ARM_PATH_HEADS) { - VECCOPY(fp, pchan->pose_head); - } - else { - VECCOPY(fp, pchan->pose_tail); - } - - mul_m4_v3(ob->obmat, fp); - } - } - } - } + /* set up path data for bones being calculated */ + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) + { + /* verify makes sure that the selected bone has a bone with the appropriate settings */ + animviz_verify_motionpaths(scene, ob, pchan); } + CTX_DATA_END; - /* restore original cursor */ - WM_cursor_restore(win); - - /* reset current frame, and clear flags */ - CFRA= cfra; - ob->pose->flag &= ~POSE_RECALCPATHS; - - /* flush one final time - to restore to the original state */ - for (base= FIRSTBASE; base; base= base->next) { - if (base->object->recalc) { - int temp= base->object->recalc; - - if (base->object->adt) - BKE_animsys_evaluate_animdata(&base->object->id, base->object->adt, (float)CFRA, ADT_RECALC_ALL); - - object_handle_update(scene, base->object); - base->object->recalc= temp; - } - } + /* calculate the bones that now have motionpaths... */ + // TODO: only make for the selected bones? + ED_pose_recalculate_paths(C, scene, ob); /* notifiers for updates */ WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); @@ -464,12 +280,12 @@ void ED_pose_clear_paths(Object *ob) if ELEM(NULL, ob, ob->pose) return; - /* free the path blocks */ + /* free the motionpath blocks */ for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { if ((pchan->bone) && (pchan->bone->flag & BONE_SELECTED)) { - if (pchan->path) { - MEM_freeN(pchan->path); - pchan->path= NULL; + if (pchan->mpath) { + animviz_free_motionpath(pchan->mpath); + pchan->mpath= NULL; } } } @@ -491,7 +307,7 @@ static int pose_clear_paths_exec (bContext *C, wmOperator *op) if ELEM(NULL, ob, ob->pose) return OPERATOR_CANCELLED; - /* for now, just call the API function for this (which is shared with backend functions) */ + /* use the backend function for this */ ED_pose_clear_paths(ob); /* notifiers for updates */ @@ -670,7 +486,7 @@ static int pose_select_hierarchy_exec(bContext *C, wmOperator *op) } } - if(!found) + if (found == 0) return OPERATOR_CANCELLED; WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, ob); @@ -698,12 +514,171 @@ void POSE_OT_select_hierarchy(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* props */ - RNA_def_enum(ot->srna, "direction", direction_items, - BONE_SELECT_PARENT, "Direction", ""); + ot->prop= RNA_def_enum(ot->srna, "direction", direction_items, BONE_SELECT_PARENT, "Direction", ""); RNA_def_boolean(ot->srna, "extend", 0, "Add to Selection", ""); } +/* ******************* select grouped operator ************* */ + +static short pose_select_same_group (Object *ob, short extend) +{ + bPose *pose= (ob)? ob->pose : NULL; + bArmature *arm= (ob)? ob->data : NULL; + bPoseChannel *pchan; + char *group_flags; + int numGroups = 0; + short changed=0, tagged=0; + + /* sanity checks */ + if (ELEM3(NULL, ob, pose, arm)) + return 0; + + /* count the number of groups */ + numGroups= BLI_countlist(&pose->agroups); + if (numGroups == 0) + return 0; + + /* alloc a small array to keep track of the groups to use + * - each cell stores on/off state for whether group should be used + * - size is numGroups + 1, since index=0 is used for no-group + */ + group_flags= MEM_callocN(numGroups+1, "pose_select_same_group"); + + for (pchan= pose->chanbase.first; pchan; pchan= pchan->next) { + if (arm->layer & pchan->bone->layer) { + /* keep track of group as group to use later? */ + if ((pchan->bone->flag & BONE_SELECTED) || (pchan->bone == arm->act_bone)) { + group_flags[pchan->agrp_index] = 1; + tagged= 1; + } + + /* deselect all bones before selecting new ones? */ + if ((extend == 0) && (pchan->bone->flag & BONE_UNSELECTABLE)==0) + pchan->bone->flag &= ~BONE_SELECTED; + } + } + + /* small optimisation: only loop through bones a second time if there are any groups tagged */ + if (tagged) { + /* only if group matches (and is not selected or current bone) */ + for (pchan= pose->chanbase.first; pchan; pchan= pchan->next) { + if ((arm->layer & pchan->bone->layer) && (pchan->bone->flag & BONE_UNSELECTABLE)==0) { + /* check if the group used by this bone is counted */ + if (group_flags[pchan->agrp_index]) { + pchan->bone->flag |= BONE_SELECTED; + changed= 1; + } + } + } + } + + /* free temp info */ + MEM_freeN(group_flags); + + return changed; +} + +static short pose_select_same_layer (Object *ob, short extend) +{ + bPose *pose= (ob)? ob->pose : NULL; + bArmature *arm= (ob)? ob->data : NULL; + bPoseChannel *pchan; + short changed= 0; + int layers= 0; + + if (ELEM3(NULL, ob, pose, arm)) + return 0; + + /* figure out what bones are selected */ + for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { + if (arm->layer & pchan->bone->layer) { + /* keep track of layers to use later? */ + if ((pchan->bone->flag & BONE_SELECTED) || (pchan->bone == arm->act_bone)) + layers |= pchan->bone->layer; + + /* deselect all bones before selecting new ones? */ + if ((extend == 0) && (pchan->bone->flag & BONE_UNSELECTABLE)==0) + pchan->bone->flag &= ~BONE_SELECTED; + } + } + if (layers == 0) + return 0; + + /* select bones that are on same layers as layers flag */ + for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { + if (arm->layer & pchan->bone->layer) { + /* if bone is on a suitable layer, and the bone can have its selection changed, select it */ + if ((layers & pchan->bone->layer) && (pchan->bone->flag & BONE_UNSELECTABLE)==0) { + pchan->bone->flag |= BONE_SELECTED; + changed= 1; + } + } + } + + return changed; +} + + +static int pose_select_grouped_exec (bContext *C, wmOperator *op) +{ + Object *ob= CTX_data_active_object(C); + short extend= RNA_boolean_get(op->ptr, "extend"); + short changed = 0; + + /* sanity check */ + if (ELEM(NULL, ob, ob->pose)) + return OPERATOR_CANCELLED; + + /* selection types + * NOTE: for the order of these, see the enum in POSE_OT_select_grouped() + */ + switch (RNA_enum_get(op->ptr, "type")) { + case 1: /* group */ + changed= pose_select_same_group(ob, extend); + break; + default: /* layer */ + changed= pose_select_same_layer(ob, extend); + break; + } + + /* notifiers for updates */ + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); + + /* report done status */ + if (changed) + return OPERATOR_FINISHED; + else + return OPERATOR_CANCELLED; +} + +void POSE_OT_select_grouped (wmOperatorType *ot) +{ + static EnumPropertyItem prop_select_grouped_types[] = { + {0, "LAYER", 0, "Layer", "Shared layers"}, + {1, "GROUP", 0, "Group", "Shared group"}, + {0, NULL, 0, NULL, NULL} + }; + + /* identifiers */ + ot->name= "Select Grouped"; + ot->description = "Select all visible bones grouped by various properties."; + ot->idname= "POSE_OT_select_grouped"; + + /* api callbacks */ + ot->invoke= WM_menu_invoke; + ot->exec= pose_select_grouped_exec; + ot->poll= ED_operator_posemode; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first."); + ot->prop= RNA_def_enum(ot->srna, "type", prop_select_grouped_types, 0, "Type", ""); +} + +/* ********************************************** */ void pose_copy_menu(Scene *scene) { @@ -1114,7 +1089,7 @@ static int pose_paste_exec (bContext *C, wmOperator *op) } /* notifiers for updates */ - WM_event_add_notifier(C, NC_OBJECT|ND_POSE|ND_TRANSFORM, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); // XXX not really needed, but here for completeness... return OPERATOR_FINISHED; @@ -1140,31 +1115,6 @@ void POSE_OT_paste (wmOperatorType *ot) /* ********************************************** */ -/* context weightpaint and deformer in posemode */ -void pose_adds_vgroups(Scene *scene, Object *meshobj, int heatweights) -{ -// XXX extern VPaint Gwp; /* from vpaint */ - Object *poseobj= modifiers_isDeformedByArmature(meshobj); - - if(poseobj==NULL || (poseobj->mode & OB_MODE_POSE)==0) { - error("The active object must have a deforming armature in pose mode"); - return; - } - -// XXX add_verts_to_dgroups(meshobj, poseobj, heatweights, ((Mesh *)(meshobj->data))->editflag & ME_EDIT_MIRROR_X); - - if(heatweights) - BIF_undo_push("Apply Bone Heat Weights to Vertex Groups"); - else - BIF_undo_push("Apply Bone Envelopes to Vertex Groups"); - - - // and all its relations - DAG_id_flush_update(&meshobj->id, OB_RECALC_DATA); -} - -/* ********************************************** */ - static int pose_group_add_exec (bContext *C, wmOperator *op) { @@ -1387,14 +1337,14 @@ static int pose_group_unassign_exec (bContext *C, wmOperator *op) pose= ob->pose; arm= ob->data; - /* add selected bones to ungroup then */ + /* find selected bones to remove from all bone groups */ // NOTE: unfortunately, we cannot use the context-iterators here, since they might not be defined... // 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 if ((pchan->bone) && (arm->layer & pchan->bone->layer) && !(pchan->bone->flag & BONE_HIDDEN_P)) { - if (pchan->bone->flag & BONE_SELECTED || pchan->bone == arm->act_bone) { + if ((pchan->bone->flag & BONE_SELECTED) || (pchan->bone == arm->act_bone)) { if (pchan->agrp_index) { pchan->agrp_index= 0; done= 1; @@ -1418,7 +1368,7 @@ void POSE_OT_group_unassign (wmOperatorType *ot) /* identifiers */ ot->name= "Remove Selected from Bone Groups"; ot->idname= "POSE_OT_group_unassign"; - ot->description= "Add selected bones from all bone groups"; + ot->description= "Remove selected bones from all bone groups"; /* api callbacks */ ot->exec= pose_group_unassign_exec; @@ -1428,95 +1378,6 @@ void POSE_OT_group_unassign (wmOperatorType *ot) ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; } -static short pose_select_same_group (Object *ob) -{ - bPose *pose= (ob)? ob->pose : NULL; - bArmature *arm= (ob)? ob->data : NULL; - bPoseChannel *pchan, *chan; - short changed= 0; - - if (ELEM3(NULL, ob, pose, arm)) - return 0; - - /* loop in loop... bad and slow! */ - for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { - if (arm->layer & pchan->bone->layer) { - if (pchan->bone->flag & BONE_SELECTED || pchan->bone == arm->act_bone) { - - /* only if group matches (and is not selected or current bone) */ - for (chan= ob->pose->chanbase.first; chan; chan= chan->next) { - if (arm->layer & chan->bone->layer) { - if (pchan->agrp_index == chan->agrp_index) { - chan->bone->flag |= BONE_SELECTED; - changed= 1; - } - } - } - - } - } - } - - return changed; -} - -static short pose_select_same_layer (Object *ob) -{ - bPose *pose= (ob)? ob->pose : NULL; - bArmature *arm= (ob)? ob->data : NULL; - bPoseChannel *pchan; - int layers= 0, changed= 0; - - if (ELEM3(NULL, ob, pose, arm)) - return 0; - - /* figure out what bones are selected */ - for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { - if (arm->layer & pchan->bone->layer) { - if (pchan->bone->flag & BONE_SELECTED || pchan->bone == arm->act_bone) { - layers |= pchan->bone->layer; - } - } - } - if (layers == 0) - return 0; - - /* select bones that are on same layers as layers flag */ - for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { - if (arm->layer & pchan->bone->layer) { - if (layers & pchan->bone->layer) { - pchan->bone->flag |= BONE_SELECTED; - changed= 1; - } - } - } - - return changed; -} - -void pose_select_grouped (Scene *scene, short nr) -{ - short changed = 0; - - if (nr == 1) changed= pose_select_same_group(OBACT); - else if (nr == 2) changed= pose_select_same_layer(OBACT); - - if (changed) { - countall(); - BIF_undo_push("Select Grouped"); - } -} - -/* Shift-G in 3D-View while in PoseMode */ -void pose_select_grouped_menu (Scene *scene) -{ - short nr; - - /* here we go */ - nr= pupmenu("Select Grouped%t|In Same Group%x1|In Same Layer%x2"); - pose_select_grouped(scene, nr); -} - /* ********************************************** */ static int pose_flip_names_exec (bContext *C, wmOperator *op) @@ -1617,7 +1478,7 @@ void POSE_OT_autoside_names (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* settings */ - RNA_def_enum(ot->srna, "axis", axis_items, 0, "Axis", "Axis tag names with."); + ot->prop= RNA_def_enum(ot->srna, "axis", axis_items, 0, "Axis", "Axis tag names with."); } /* ********************************************** */ @@ -1896,31 +1757,81 @@ void ARMATURE_OT_bone_layers (wmOperatorType *ot) /* ********************************************** */ -/* for use in insertkey, ensure rotation goes other way around */ -void pose_flipquats(Scene *scene) +static int pose_flip_quats_exec (bContext *C, wmOperator *op) { - Object *ob = OBACT; - bArmature *arm= ob->data; - bPoseChannel *pchan; + Scene *scene= CTX_data_scene(C); + Object *ob= CTX_data_active_object(C); - if(ob->pose==NULL) - return; + bCommonKeySrc cks; + ListBase dsources = {&cks, &cks}; - /* find sel bones */ - for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { - if(pchan->bone && (pchan->bone->flag & BONE_SELECTED) && (pchan->bone->layer & arm->layer)) { + /* init common-key-source for use by KeyingSets */ + memset(&cks, 0, sizeof(bCommonKeySrc)); + cks.id= &ob->id; + + /* loop through all selected pchans, flipping and keying (as needed) */ + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) + { + /* only if bone is using quaternion rotation */ + if (pchan->rotmode == ROT_MODE_QUAT) { /* quaternions have 720 degree range */ pchan->quat[0]= -pchan->quat[0]; pchan->quat[1]= -pchan->quat[1]; pchan->quat[2]= -pchan->quat[2]; pchan->quat[3]= -pchan->quat[3]; + + /* perform auto-keying + * NOTE: paths don't need recalculation here, since the orientations shouldn't have changed + */ + if (autokeyframe_cfra_can_key(scene, &ob->id)) { + /* Set keys on pose + * - KeyingSet to use depends on rotation mode + * (but that's handled by the templates code) + */ + KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Rotation"); + + /* init cks for this PoseChannel, then use the relative KeyingSets to keyframe it */ + cks.pchan= pchan; + + modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); + + /* clear any unkeyed tags */ + if (pchan->bone) + pchan->bone->flag &= ~BONE_UNKEYED; + } + else { + /* add unkeyed tags */ + if (pchan->bone) + pchan->bone->flag |= BONE_UNKEYED; + } } } + CTX_DATA_END; + + /* notifiers and updates */ + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); + WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, ob); + + return OPERATOR_FINISHED; +} + +void POSE_OT_quaternions_flip (wmOperatorType *ot) +{ + /* identifiers */ + ot->name = "Flip Quats"; + ot->idname= "POSE_OT_quaternions_flip"; + ot->description= "Flip quaternion values to achieve desired rotations, while maintaining the same orientations."; + + /* callbacks */ + ot->exec= pose_flip_quats_exec; + ot->poll= ED_operator_posemode; - /* do autokey */ - autokeyframe_pose_cb_func(ob, TFM_ROTATION, 0); + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } +/* ********************************************** */ + /* context: active channel */ void pose_special_editmenu(Scene *scene) { diff --git a/source/blender/editors/curve/curve_intern.h b/source/blender/editors/curve/curve_intern.h index 6c477bd011a..ca5aa213d36 100644 --- a/source/blender/editors/curve/curve_intern.h +++ b/source/blender/editors/curve/curve_intern.h @@ -63,6 +63,9 @@ void FONT_OT_delete(struct wmOperatorType *ot); void FONT_OT_change_character(struct wmOperatorType *ot); void FONT_OT_change_spacing(struct wmOperatorType *ot); +void FONT_OT_open(struct wmOperatorType *ot); +void FONT_OT_unlink(struct wmOperatorType *ot); + /* editcurve.c */ void CURVE_OT_hide(struct wmOperatorType *ot); void CURVE_OT_reveal(struct wmOperatorType *ot); diff --git a/source/blender/editors/curve/curve_ops.c b/source/blender/editors/curve/curve_ops.c index 660db2f0951..76f08bb3a9b 100644 --- a/source/blender/editors/curve/curve_ops.c +++ b/source/blender/editors/curve/curve_ops.c @@ -87,6 +87,9 @@ void ED_operatortypes_curve(void) WM_operatortype_append(FONT_OT_change_character); WM_operatortype_append(FONT_OT_change_spacing); + + WM_operatortype_append(FONT_OT_open); + WM_operatortype_append(FONT_OT_unlink); WM_operatortype_append(CURVE_OT_hide); WM_operatortype_append(CURVE_OT_reveal); @@ -215,6 +218,8 @@ 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, "OBJECT_OT_vertex_parent_set", PKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_curve_specials", WKEY, KM_PRESS, 0, 0); /* menus */ diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index a109e9149cf..0c9c78382b0 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -1004,7 +1004,8 @@ static void adduplicateflagNurb(Object *obedit, short flag) } } if(newu==0 || newv==0) { - printf("Can't duplicate Nurb\n"); + if (G.f & G_DEBUG) + printf("Can't duplicate Nurb\n"); } else { @@ -2581,7 +2582,7 @@ void CURVE_OT_spline_type_set(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "type", type_items, CU_POLY, "Type", "Spline type"); + ot->prop= RNA_def_enum(ot->srna, "type", type_items, CU_POLY, "Type", "Spline type"); } /***************** set handle type operator *******************/ @@ -3141,6 +3142,7 @@ int mouse_nurb(bContext *C, short mval[2], int extend) int location[2]; short hand; + view3d_operator_needs_opengl(C); view3d_set_viewcontext(C, &vc); location[0]= mval[0]; @@ -3202,45 +3204,25 @@ int mouse_nurb(bContext *C, short mval[2], int extend) * orientation of the global 3d view (yuck yuck!) mode==1 does the same, but doesn't bridge up * up the new geometry, mode==2 now does the same as 0, but aligned to world axes, not the view. */ -static int spin_nurb(bContext *C, Scene *scene, Object *obedit, float *dvec, short mode) +static int spin_nurb(bContext *C, Scene *scene, Object *obedit, float *dvec, float *cent, short mode) { ListBase *editnurb= curve_get_editcurve(obedit); - View3D *v3d= CTX_wm_view3d(C); - RegionView3D *rv3d= CTX_wm_region_view3d(C); Nurb *nu; - float *curs, si,phi,n[3],q[4],cmat[3][3],tmat[3][3],imat[3][3]; - float cent[3],bmat[3][3], rotmat[3][3], scalemat1[3][3], scalemat2[3][3]; + float si,phi,n[3],q[4],cmat[3][3],tmat[3][3],imat[3][3]; + float bmat[3][3], rotmat[3][3], scalemat1[3][3], scalemat2[3][3]; float persmat[3][3], persinv[3][3]; short a,ok, changed= 0; - if(mode != 2 && rv3d) copy_m3_m4(persmat, rv3d->viewmat); - else unit_m3(persmat); + unit_m3(persmat); invert_m3_m3(persinv, persmat); /* imat and center and size */ copy_m3_m4(bmat, obedit->obmat); invert_m3_m3(imat, bmat); - if(v3d) { - curs= give_cursor(scene, v3d); - VECCOPY(cent, curs); - } - else - cent[0]= cent[1]= cent[2]= 0.0f; - - sub_v3_v3v3(cent, cent, obedit->obmat[3]); - mul_m3_v3(imat,cent); - - if(dvec || mode==2 || !rv3d) { - n[0]=n[1]= 0.0; - n[2]= 1.0; - } else { - n[0]= rv3d->viewinv[2][0]; - n[1]= rv3d->viewinv[2][1]; - n[2]= rv3d->viewinv[2][2]; - normalize_v3(n); - } - + n[0]=n[1]= 0.0; + n[2]= 1.0; + phi= M_PI/8.0; q[0]= cos(phi); si= sin(phi); @@ -3315,8 +3297,12 @@ static int spin_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); - - if(!spin_nurb(C, scene, obedit, 0, 0)) { + float cent[3], axis[3]; + + RNA_float_get_array(op->ptr, "center", cent); + RNA_float_get_array(op->ptr, "axis", axis); + + if(!spin_nurb(C, scene, obedit, axis, cent, 0)) { BKE_report(op->reports, RPT_ERROR, "Can't spin"); return OPERATOR_CANCELLED; } @@ -3327,6 +3313,18 @@ static int spin_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } +static int spin_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + Scene *scene = CTX_data_scene(C); + View3D *v3d = CTX_wm_view3d(C); + RegionView3D *rv3d= ED_view3d_context_rv3d(C); + + RNA_float_set_array(op->ptr, "center", give_cursor(scene, v3d)); + RNA_float_set_array(op->ptr, "axis", rv3d->viewinv[2]); + + return spin_exec(C, op); +} + void CURVE_OT_spin(wmOperatorType *ot) { /* identifiers */ @@ -3335,10 +3333,14 @@ void CURVE_OT_spin(wmOperatorType *ot) /* api callbacks */ ot->exec= spin_exec; + ot->invoke = spin_invoke; ot->poll= ED_operator_editsurf; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + RNA_def_float_vector(ot->srna, "center", 3, NULL, -FLT_MAX, FLT_MAX, "Center", "Center in global view space", -FLT_MAX, FLT_MAX); + RNA_def_float_vector(ot->srna, "axis", 3, NULL, -1.0f, 1.0f, "Axis", "Axis in global view space", -FLT_MAX, FLT_MAX); } /***************** add vertex operator **********************/ @@ -3355,6 +3357,7 @@ static int addvert_Nurb(bContext *C, short mode, float location[3]) copy_m3_m4(mat, obedit->obmat); invert_m3_m3(imat,mat); + view3d_operator_needs_opengl(C); findselectedNurbvert(editnurb, &nu, &bezt, &bp); if(bezt==0 && bp==0) return OPERATOR_CANCELLED; @@ -3709,6 +3712,7 @@ static int select_linked_exec(bContext *C, wmOperator *op) deselect= RNA_boolean_get(op->ptr, "deselect"); RNA_int_get_array(op->ptr, "location", location); + view3d_operator_needs_opengl(C); view3d_set_viewcontext(C, &vc); findnearestNurbvert(&vc, 1, location, &nu, &bezt, &bp); @@ -4146,83 +4150,50 @@ void CURVE_OT_select_less(wmOperatorType *ot) /********************** select random *********************/ -/* this function could be moved elsewhere as it can be reused in other parts of the source needing randomized list */ -/* returns list containing -1 in indices that have been left out of the list. otherwise index contains reference */ -/* to next index. basically *list contains a linked list */ -static void generate_pickable_list(int *list, int size, int pickamount) +static void selectrandom_curve(ListBase *editnurb, float randfac) { - int i, j, removable; - - BLI_srand( BLI_rand() ); /* random seed */ - - /* generate list in form 0->1, 1->2, 2->3, ... i-2->i-1, i->0 */ - for(i=0; i<size; i++) { - if(i == size-1) list[i]= 0; - else list[i]= i+1; - } - - for(i=0; i<size-pickamount; i++) { - removable= floor(BLI_frand()*(size-1)+0.5); /* with rounding. frand returns [0,1] */ - - /* seek proper item as the one randomly selected might not be appropriate */ - for(j=0; j<size; j++, removable++) { - if(list[removable] != -1) break; - if(removable == size-1) removable= -1; - } - - /* pick unwanted item out of the list */ - list[list[removable]]= -1; /* mark former last as invalid */ - - if(list[removable] == size-1) list[removable]= 0; - else list[removable]= list[removable]+1; - } -} - -static int select_random_exec(bContext *C, wmOperator *op) -{ - Object *obedit= CTX_data_edit_object(C); - ListBase *editnurb= curve_get_editcurve(obedit); Nurb *nu; BezTriple *bezt; BPoint *bp; - float percent= RNA_float_get(op->ptr, "percent"); - int amounttoselect, amountofcps, a, i, k= 0; - int *itemstobeselected; - - if(percent == 0.0f) - return OPERATOR_CANCELLED; + int a; - amountofcps= count_curveverts_without_handles(editnurb); - itemstobeselected= MEM_callocN(sizeof(int) * amountofcps, "selectitems"); - amounttoselect= floor(percent * amountofcps + 0.5); - generate_pickable_list(itemstobeselected, amountofcps, amounttoselect); + BLI_srand( BLI_rand() ); /* random seed */ - /* select elements */ - for(i=1, nu= editnurb->first; nu; nu= nu->next) { + for(nu= editnurb->first; nu; nu= nu->next) { if(nu->type == CU_BEZIER) { bezt= nu->bezt; a= nu->pntsu; while(a--) { - if(itemstobeselected[k] != -1) select_beztriple(bezt, SELECT, 1, VISIBLE); - k++; + if (BLI_frand() < randfac) + select_beztriple(bezt, SELECT, 1, VISIBLE); bezt++; } } else { bp= nu->bp; a= nu->pntsu*nu->pntsv; + while(a--) { - if(itemstobeselected[k] != -1) select_bpoint(bp, SELECT, 1, VISIBLE); - k++; + if (BLI_frand() < randfac) + select_bpoint(bp, SELECT, 1, VISIBLE); bp++; } } } - - MEM_freeN(itemstobeselected); +} - WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data); +static int select_random_exec(bContext *C, wmOperator *op) +{ + Object *obedit= CTX_data_edit_object(C); + ListBase *editnurb= curve_get_editcurve(obedit); + if(!RNA_boolean_get(op->ptr, "extend")) + CU_deselect_all(obedit); + + selectrandom_curve(editnurb, RNA_float_get(op->ptr, "percent")/100.0f); + + WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data); + return OPERATOR_FINISHED; } @@ -4234,14 +4205,14 @@ void CURVE_OT_select_random(wmOperatorType *ot) /* api callbacks */ ot->exec= select_random_exec; - ot->invoke= WM_operator_props_popup; ot->poll= ED_operator_editsurfcurve; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_float_percentage(ot->srna, "percent", 0.5f, 0.0f, 1.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."); } /********************** select every nth *********************/ @@ -4268,7 +4239,6 @@ void CURVE_OT_select_every_nth(wmOperatorType *ot) /* api callbacks */ ot->exec= select_every_nth_exec; - ot->invoke= WM_operator_props_popup; ot->poll= ED_operator_editsurfcurve; /* flags */ @@ -4768,19 +4738,18 @@ int join_curve_exec(bContext *C, wmOperator *op) /************ add primitive, used by object/ module ****************/ -Nurb *add_nurbs_primitive(bContext *C, int type, int newname) +Nurb *add_nurbs_primitive(bContext *C, float mat[4][4], int type, int newname) { static int xzproj= 0; /* this function calls itself... */ Scene *scene= CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); ListBase *editnurb= curve_get_editcurve(obedit); View3D *v3d= CTX_wm_view3d(C); - RegionView3D *rv3d= CTX_wm_region_view3d(C); Nurb *nu = NULL; BezTriple *bezt; BPoint *bp; - float *curs, cent[3],vec[3],imat[3][3],mat[3][3]; - float fac,cmat[3][3], grid; + float vec[3]; + float fac, grid; int a, b, cutype, stype; int force_3d = ((Curve *)obedit->data)->flag & CU_3D; /* could be adding to an existing 3D curve */ @@ -4790,38 +4759,8 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname) if (v3d) grid = v3d->grid; else grid = 1.0; - /* imat and center and size */ - if(obedit) { - - copy_m3_m4(mat, obedit->obmat); - if(v3d) { - curs= give_cursor(scene, v3d); - VECCOPY(cent, curs); - } - else - cent[0]= cent[1]= cent[2]= 0.0f; - - cent[0]-= obedit->obmat[3][0]; - cent[1]-= obedit->obmat[3][1]; - cent[2]-= obedit->obmat[3][2]; - - if(rv3d) { - if (!newname && (U.flag & USER_ADD_VIEWALIGNED)) - copy_m3_m4(imat, rv3d->viewmat); - else - unit_m3(imat); - mul_m3_v3(imat, cent); - mul_m3_m3m3(cmat, imat, mat); - invert_m3_m3(imat, cmat); - } - else - unit_m3(imat); - - setflagsNurb(editnurb, 0); - } - else - return NULL; + setflagsNurb(editnurb, 0); /* these types call this function to return a Nurb */ if (stype!=CU_PRIM_TUBE && stype!=CU_PRIM_DONUT) { @@ -4848,26 +4787,25 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname) bezt->f1= bezt->f2= bezt->f3= SELECT; bezt->radius = 1.0; - for(a=0;a<3;a++) { - VECCOPY(bezt->vec[a], cent); - } bezt->vec[1][0]+= -grid; bezt->vec[0][0]+= -1.5*grid; bezt->vec[0][1]+= -0.5*grid; bezt->vec[2][0]+= -0.5*grid; bezt->vec[2][1]+= 0.5*grid; - for(a=0;a<3;a++) mul_m3_v3(imat, bezt->vec[a]); + for(a=0;a<3;a++) mul_m4_v3(mat, bezt->vec[a]); bezt++; bezt->h1= bezt->h2= HD_ALIGN; bezt->f1= bezt->f2= bezt->f3= SELECT; bezt->radius = bezt->weight = 1.0; - for(a=0;a<3;a++) { - VECCOPY(bezt->vec[a], cent); - } - bezt->vec[1][0]+= grid; - for(a=0;a<3;a++) mul_m3_v3(imat, bezt->vec[a]); + bezt->vec[0][0] = 0; + bezt->vec[0][1] = 0; + bezt->vec[1][0] = grid; + bezt->vec[1][1] = 0; + bezt->vec[2][0] = grid*2; + bezt->vec[2][1] = 0; + for(a=0;a<3;a++) mul_m4_v3(mat, bezt->vec[a]); calchandlesNurb(nu); } @@ -4880,7 +4818,6 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname) bp= nu->bp; for(a=0;a<4;a++, bp++) { - VECCOPY(bp->vec, cent); bp->vec[3]= 1.0; bp->f1= SELECT; bp->radius = bp->weight = 1.0; @@ -4898,7 +4835,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname) bp->vec[0]+= 1.5*grid; bp= nu->bp; - for(a=0;a<4;a++, bp++) mul_m3_v3(imat,bp->vec); + for(a=0;a<4;a++, bp++) mul_m4_v3(mat,bp->vec); if(cutype==CU_NURBS) { nu->knotsu= 0; /* makeknots allocates */ @@ -4917,7 +4854,6 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname) bp= nu->bp; for(a=0;a<5;a++, bp++) { - VECCOPY(bp->vec, cent); bp->vec[3]= 1.0; bp->f1= SELECT; bp->radius = bp->weight = 1.0; @@ -4933,7 +4869,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname) bp->vec[0]+= 2.0*grid; bp= nu->bp; - for(a=0;a<5;a++, bp++) mul_m3_v3(imat,bp->vec); + for(a=0;a<5;a++, bp++) mul_m4_v3(mat,bp->vec); if(cutype==CU_NURBS) { nu->knotsu= 0; /* makeknots allocates */ @@ -4954,43 +4890,31 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname) nu->flagu= CU_CYCLIC; bezt= nu->bezt; - for(a=0;a<3;a++) { - VECCOPY(bezt->vec[a], cent); - } bezt->h1= bezt->h2= HD_AUTO; bezt->f1= bezt->f2= bezt->f3= SELECT; bezt->vec[1][0]+= -grid; - for(a=0;a<3;a++) mul_m3_v3(imat,bezt->vec[a]); + for(a=0;a<3;a++) mul_m4_v3(mat,bezt->vec[a]); bezt->radius = bezt->weight = 1.0; bezt++; - for(a=0;a<3;a++) { - VECCOPY(bezt->vec[a], cent); - } bezt->h1= bezt->h2= HD_AUTO; bezt->f1= bezt->f2= bezt->f3= SELECT; bezt->vec[1][1]+= grid; - for(a=0;a<3;a++) mul_m3_v3(imat,bezt->vec[a]); + for(a=0;a<3;a++) mul_m4_v3(mat,bezt->vec[a]); bezt->radius = bezt->weight = 1.0; bezt++; - for(a=0;a<3;a++) { - VECCOPY(bezt->vec[a], cent); - } bezt->h1= bezt->h2= HD_AUTO; bezt->f1= bezt->f2= bezt->f3= SELECT; bezt->vec[1][0]+= grid; - for(a=0;a<3;a++) mul_m3_v3(imat,bezt->vec[a]); + for(a=0;a<3;a++) mul_m4_v3(mat,bezt->vec[a]); bezt->radius = bezt->weight = 1.0; bezt++; - for(a=0;a<3;a++) { - VECCOPY(bezt->vec[a], cent); - } bezt->h1= bezt->h2= HD_AUTO; bezt->f1= bezt->f2= bezt->f3= SELECT; bezt->vec[1][1]+= -grid; - for(a=0;a<3;a++) mul_m3_v3(imat,bezt->vec[a]); + for(a=0;a<3;a++) mul_m4_v3(mat,bezt->vec[a]); bezt->radius = bezt->weight = 1.0; calchandlesNurb(nu); @@ -5005,8 +4929,6 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname) for(a=0; a<8; a++) { bp->f1= SELECT; - VECCOPY(bp->vec, cent); - if(xzproj==0) { bp->vec[0]+= nurbcircle[a][0]*grid; bp->vec[1]+= nurbcircle[a][1]*grid; @@ -5017,7 +4939,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname) } if(a & 1) bp->vec[3]= 0.25*sqrt(2.0); else bp->vec[3]= 1.0; - mul_m3_v3(imat,bp->vec); + mul_m4_v3(mat,bp->vec); bp->radius = bp->weight = 1.0; bp++; @@ -5045,7 +4967,6 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname) for(a=0; a<4; a++) { for(b=0; b<4; b++) { - VECCOPY(bp->vec, cent); bp->f1= SELECT; fac= (float)a -1.5; bp->vec[0]+= fac*grid; @@ -5054,7 +4975,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname) if(a==1 || a==2) if(b==1 || b==2) { bp->vec[2]+= grid; } - mul_m3_v3(imat,bp->vec); + mul_m4_v3(mat,bp->vec); bp->vec[3]= 1.0; bp++; } @@ -5066,18 +4987,19 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname) break; case CU_PRIM_TUBE: /* tube */ if( cutype==CU_NURBS ) { + if(newname) { rename_id((ID *)obedit, "SurfTube"); rename_id((ID *)obedit->data, "SurfTube"); } - - nu= add_nurbs_primitive(C, CU_NURBS|CU_PRIM_CIRCLE, 0); /* circle */ + + nu= add_nurbs_primitive(C, mat, CU_NURBS|CU_PRIM_CIRCLE, 0); /* circle */ nu->resolu= 4; nu->flag= CU_SMOOTH; BLI_addtail(editnurb, nu); /* temporal for extrude and translate */ vec[0]=vec[1]= 0.0; vec[2]= -grid; - mul_m3_v3(imat, vec); + translateflagNurb(editnurb, 1, vec); extrudeflagNurb(editnurb, 1); vec[0]= -2*vec[0]; @@ -5097,6 +5019,9 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname) break; case CU_PRIM_SPHERE: /* sphere */ if( cutype==CU_NURBS ) { + float tmp_cent[3] = {0.f, 0.f, 0.f}; + float tmp_vec[3] = {0.f, 0.f, 0.f}; + if(newname) { rename_id((ID *)obedit, "SurfSphere"); rename_id((ID *)obedit->data, "SurfSphere"); @@ -5114,12 +5039,11 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname) for(a=0; a<5; a++) { bp->f1= SELECT; - VECCOPY(bp->vec, cent); bp->vec[0]+= nurbcircle[a][0]*grid; bp->vec[2]+= nurbcircle[a][1]*grid; if(a & 1) bp->vec[3]= 0.5*sqrt(2.0); else bp->vec[3]= 1.0; - mul_m3_v3(imat,bp->vec); + mul_m4_v3(mat,bp->vec); bp++; } nu->flagu= 4; @@ -5127,9 +5051,9 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname) BLI_addtail(editnurb, nu); /* temporal for spin */ if(newname && (U.flag & USER_ADD_VIEWALIGNED) == 0) - spin_nurb(C, scene, obedit, 0, 2); + spin_nurb(C, scene, obedit, tmp_vec, tmp_cent, 2); else - spin_nurb(C, scene, obedit, 0, 0); + spin_nurb(C, scene, obedit, tmp_vec, mat[3], 2); makeknots(nu, 2); @@ -5144,22 +5068,25 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname) break; case CU_PRIM_DONUT: /* donut */ if( cutype==CU_NURBS ) { + float tmp_cent[3] = {0.f, 0.f, 0.f}; + float tmp_vec[3] = {0.f, 0.f, 0.f}; + if(newname) { rename_id((ID *)obedit, "SurfDonut"); rename_id((ID *)obedit->data, "SurfDonut"); } xzproj= 1; - nu= add_nurbs_primitive(C, CU_NURBS|CU_PRIM_CIRCLE, 0); /* circle */ + nu= add_nurbs_primitive(C, mat, CU_NURBS|CU_PRIM_CIRCLE, 0); /* circle */ xzproj= 0; nu->resolu= 4; nu->resolv= 4; nu->flag= CU_SMOOTH; BLI_addtail(editnurb, nu); /* temporal for extrude and translate */ if(newname && (U.flag & USER_ADD_VIEWALIGNED) == 0) - spin_nurb(C, scene, obedit, 0, 2); + spin_nurb(C, scene, obedit, tmp_vec, tmp_cent, 2); else - spin_nurb(C, scene, obedit, 0, 0); + spin_nurb(C, scene, obedit, tmp_vec, mat[3], 2); BLI_remlink(editnurb, nu); diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c index da794eb1c25..2ebee2ad274 100644 --- a/source/blender/editors/curve/editfont.c +++ b/source/blender/editors/curve/editfont.c @@ -54,6 +54,7 @@ #include "BKE_depsgraph.h" #include "BKE_font.h" #include "BKE_global.h" +#include "BKE_library.h" #include "BKE_main.h" #include "BKE_object.h" #include "BKE_report.h" @@ -70,6 +71,8 @@ #include "ED_screen.h" #include "ED_util.h" +#include "UI_interface.h" + #include "curve_intern.h" #define MAXTEXT 32766 @@ -417,7 +420,7 @@ void FONT_OT_file_paste(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE, FILE_SPECIAL); + WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE, FILE_SPECIAL, FILE_OPEN); } /******************* paste buffer operator ********************/ @@ -1538,6 +1541,169 @@ void FONT_OT_case_toggle(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } +/* **************** Open Font ************** */ + +static void open_init(bContext *C, wmOperator *op) +{ + PropertyPointerRNA *pprop; + + op->customdata= pprop= MEM_callocN(sizeof(PropertyPointerRNA), "OpenPropertyPointerRNA"); + uiIDContextProperty(C, &pprop->ptr, &pprop->prop); +} + +static int open_cancel(bContext *C, wmOperator *op) +{ + MEM_freeN(op->customdata); + op->customdata= NULL; + return OPERATOR_CANCELLED; +} + +static int open_exec(bContext *C, wmOperator *op) +{ + Object *ob = CTX_data_active_object(C); + Curve *cu; + VFont *font; + PropertyPointerRNA *pprop; + PointerRNA idptr; + char str[FILE_MAX]; + + RNA_string_get(op->ptr, "path", str); + + font = load_vfont(str); + + if(!font) { + if(op->customdata) MEM_freeN(op->customdata); + return OPERATOR_CANCELLED; + } + + if(!op->customdata) + open_init(C, op); + + /* hook into UI */ + pprop= op->customdata; + + if(pprop->prop) { + /* when creating new ID blocks, use is already 1, but RNA + * pointer se also increases user, so this compensates it */ + font->id.us--; + + RNA_id_pointer_create(&font->id, &idptr); + RNA_property_pointer_set(&pprop->ptr, pprop->prop, idptr); + RNA_property_update(C, &pprop->ptr, pprop->prop); + } else if(ob && ob->type == OB_FONT) { + cu = ob->data; + id_us_min(&cu->vfont->id); + cu->vfont = font; + } + + DAG_id_flush_update(ob->data, OB_RECALC_DATA); + WM_event_add_notifier(C, NC_GEOM|ND_DATA|NA_EDITED, ob->data); + + MEM_freeN(op->customdata); + + return OPERATOR_FINISHED; +} + +static int open_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + Object *ob = CTX_data_active_object(C); + Curve *cu; + VFont *font=NULL; + char *path; + if (ob && ob->type == OB_FONT) { + cu = ob->data; + font = cu->vfont; + } + path = (font && font->name)? font->name: U.fontdir; + + if(RNA_property_is_set(op->ptr, "path")) + return open_exec(C, op); + + open_init(C, op); + + RNA_string_set(op->ptr, "path", path); + WM_event_add_fileselect(C, op); + + return OPERATOR_RUNNING_MODAL; +} + +void FONT_OT_open(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Open"; + ot->idname= "FONT_OT_open"; + + /* api callbacks */ + ot->exec= open_exec; + ot->invoke= open_invoke; + ot->cancel= open_cancel; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + WM_operator_properties_filesel(ot, FOLDERFILE|FTFONTFILE, FILE_SPECIAL, FILE_OPEN); +} + +/******************* delete operator *********************/ +static int font_unlink_poll(bContext *C) +{ + Object *ob = CTX_data_active_object(C); + Curve *cu; + + if (!ED_operator_object_active_editable(C) ) return 0; + if (ob->type != OB_FONT) return 0; + + cu = ob->data; + if (cu && strcmp(cu->vfont->name, "<builtin>")==0) return 0; + return 1; +} + +static int font_unlink_exec(bContext *C, wmOperator *op) +{ + Object *ob = CTX_data_active_object(C); + Curve *cu; + VFont *font, *builtin_font; + + cu = ob->data; + font = cu->vfont; + + if (!font) { + BKE_report(op->reports, RPT_ERROR, "No font datablock available to unlink."); + return OPERATOR_CANCELLED; + } + + if (strcmp(font->name, "<builtin>")==0) { + BKE_report(op->reports, RPT_WARNING, "Can't unlink the default builtin font."); + return OPERATOR_FINISHED; + } + + /* revert back to builtin font */ + builtin_font = get_builtin_font(); + + cu->vfont = builtin_font; + id_us_plus(&cu->vfont->id); + id_us_min(&font->id); + + DAG_id_flush_update(ob->data, OB_RECALC_DATA); + WM_event_add_notifier(C, NC_GEOM|ND_DATA|NA_EDITED, ob->data); + + return OPERATOR_FINISHED; +} + +void FONT_OT_unlink(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Unlink"; + ot->idname= "FONT_OT_unlink"; + ot->description= "Unlink active font data block."; + + /* api callbacks */ + ot->exec= font_unlink_exec; + ot->poll= font_unlink_poll; +} + + /* **************** undo for font object ************** */ static void undoFont_to_editFont(void *strv, void *ecu) @@ -1595,4 +1761,3 @@ void undo_push_font(bContext *C, char *name) { undo_editmode_push(C, name, get_undoFont, free_undoFont, undoFont_to_editFont, editFont_to_undoFont, NULL); } - diff --git a/source/blender/editors/datafiles/B.blend.c b/source/blender/editors/datafiles/B.blend.c index 6d77b3dd0e9..b31d52210f7 100644 --- a/source/blender/editors/datafiles/B.blend.c +++ b/source/blender/editors/datafiles/B.blend.c @@ -1,613 +1,616 @@ /* DataToC output of file <B_blend> */ -int datatoc_B_blend_size= 337300; +int datatoc_B_blend_size= 386864; char datatoc_B_blend[]= { - 66, 76, 69, 78, 68, 69, 82, 45,118, 50, 53, 48, 82, 69, 78, 68, 32, 0, 0, 0, -176,231,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,192,230,191, 95,255,127, 0, 0, -198, 0, 0, 0, 1, 0, 0, 0, 32, 32, 49, 49, 11, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1,192,100,232, 19, 1, 0, 0, 0, - 48,154, 5, 3, 1, 0, 0, 0, 0, 16, 0, 0,128, 32, 4, 0, 47, 85,115,101,114,115, 47,109, 97,116,116, 47, 46, 66, 50, 53, - 46, 98,108,101,110,100, 0, 0, 40, 0, 0, 0, 48, 0, 0, 0,240,231,191, 95,255,127, 0, 0, 32,231,191, 95,255,127, 0, 0, -208,150,170, 28, 32, 0, 0, 0,176,231,191, 95,255,127, 0, 0, 16,119,230, 2, 1, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, -118, 0, 0, 0, 0, 0, 0, 0,144,231,191, 95,255,127, 0, 0,209,227, 94, 0, 1, 0, 0, 0,112,231,191, 95,255,127, 0, 0, -176,231,191, 95,255,127, 0, 0, 32, 0, 0, 0, 82, 69, 78, 68, 16,119,230, 2, 1, 0, 0, 0, 82, 69, 78, 68, 32, 0, 0, 0, -176,231,191, 95,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,224,231,191, 95,255,127, 0, 0,224,231,191, 95,255,127, 0, 0, -151,234, 94, 0, 1, 0, 0, 0, 48, 6, 5, 3, 1, 0, 0, 0, 16,119,230, 2, 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,192,100,232, 19, 1, 0, 0, 0, - 87, 77, 0, 0, 0, 1, 0, 0, 16, 38,231, 19, 1, 0, 0, 0,100, 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, - 96, 39,231, 19, 1, 0, 0, 0, 96, 39,231, 19, 1, 0, 0, 0, 96, 39,231, 19, 1, 0, 0, 0, 96, 39,231, 19, 1, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0,176,202,212, 27, 1, 0, 0, 0,240, 51,212, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160,210,211, 27, 1, 0, 0, 0,160, 32,213, 27, 1, 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,144, 89,209, 27, 1, 0, 0, 0, -144, 89,209, 27, 1, 0, 0, 0,160,187,226, 19, 1, 0, 0, 0,160,187,226, 19, 1, 0, 0, 0,160,187,226, 19, 1, 0, 0, 0, -192,188,226, 19, 1, 0, 0, 0,192,188,226, 19, 1, 0, 0, 0,192,188,226, 19, 1, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0, - 96, 39,231, 19, 1, 0, 0, 0,101, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160,202,226, 19, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192,100,232, 19, 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, 0, 0, 0, 0, 64,179,230, 2, 1, 0, 0, 0, -128,109,239, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,109, 47, 27, 1, 0, 0, 0, - 64,161,212, 27, 1, 0, 0, 0, 64,161,212, 27, 1, 0, 0, 0, 64,100,227, 19, 1, 0, 0, 0,112,101,239, 19, 1, 0, 0, 0, - 80,248,192, 24, 1, 0, 0, 0, 80,248,192, 24, 1, 0, 0, 0,128,109,239, 19, 1, 0, 0, 0,176, 91,194, 24, 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,128, 40,231, 19, 1, 0, 0, 0, -192, 0, 0, 0, 1, 0, 0, 0, 0,211,231, 19, 1, 0, 0, 0, 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,144, 41,231, 19, 1, 0, 0, 0,240, 47,231, 19, 1, 0, 0, 0, - 80, 48,231, 19, 1, 0, 0, 0,208, 58,231, 19, 1, 0, 0, 0, 48, 59,231, 19, 1, 0, 0, 0, 0,196,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,154, 5, 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, 32, 0, 0, 0, -144, 41,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240, 41,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 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,240, 41,231, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0, 80, 42,231, 19, 1, 0, 0, 0,144, 41,231, 19, 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, 42,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, -176, 42,231, 19, 1, 0, 0, 0,240, 41,231, 19, 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, 42,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 43,231, 19, 1, 0, 0, 0, - 80, 42,231, 19, 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, - 16, 43,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 43,231, 19, 1, 0, 0, 0,176, 42,231, 19, 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,112, 43,231, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,208, 43,231, 19, 1, 0, 0, 0, 16, 43,231, 19, 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,208, 43,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, - 48, 44,231, 19, 1, 0, 0, 0,112, 43,231, 19, 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, 48, 44,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 44,231, 19, 1, 0, 0, 0, -208, 43,231, 19, 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, -144, 44,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240, 44,231, 19, 1, 0, 0, 0, 48, 44,231, 19, 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,240, 44,231, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0, 80, 45,231, 19, 1, 0, 0, 0,144, 44,231, 19, 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, 80, 45,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, -176, 45,231, 19, 1, 0, 0, 0,240, 44,231, 19, 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,176, 45,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 46,231, 19, 1, 0, 0, 0, - 80, 45,231, 19, 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, - 16, 46,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 46,231, 19, 1, 0, 0, 0,176, 45,231, 19, 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,112, 46,231, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,208, 46,231, 19, 1, 0, 0, 0, 16, 46,231, 19, 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,208, 46,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, - 48, 47,231, 19, 1, 0, 0, 0,112, 46,231, 19, 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, 48, 47,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 47,231, 19, 1, 0, 0, 0, -208, 46,231, 19, 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, -144, 47,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240, 47,231, 19, 1, 0, 0, 0, 48, 47,231, 19, 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,240, 47,231, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 47,231, 19, 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, 80, 48,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -176, 48,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 41,231, 19, 1, 0, 0, 0, 80, 42,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176, 48,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, - 16, 49,231, 19, 1, 0, 0, 0, 80, 48,231, 19, 1, 0, 0, 0,240, 41,231, 19, 1, 0, 0, 0, 16, 43,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16, 49,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -112, 49,231, 19, 1, 0, 0, 0,176, 48,231, 19, 1, 0, 0, 0, 80, 42,231, 19, 1, 0, 0, 0,112, 43,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112, 49,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -208, 49,231, 19, 1, 0, 0, 0, 16, 49,231, 19, 1, 0, 0, 0, 16, 43,231, 19, 1, 0, 0, 0,112, 43,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208, 49,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, - 48, 50,231, 19, 1, 0, 0, 0,112, 49,231, 19, 1, 0, 0, 0,144, 41,231, 19, 1, 0, 0, 0,208, 43,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48, 50,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -144, 50,231, 19, 1, 0, 0, 0,208, 49,231, 19, 1, 0, 0, 0,176, 42,231, 19, 1, 0, 0, 0,208, 43,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144, 50,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -240, 50,231, 19, 1, 0, 0, 0, 48, 50,231, 19, 1, 0, 0, 0,112, 43,231, 19, 1, 0, 0, 0, 48, 44,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 50,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, - 80, 51,231, 19, 1, 0, 0, 0,144, 50,231, 19, 1, 0, 0, 0,208, 43,231, 19, 1, 0, 0, 0,144, 44,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 51,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -176, 51,231, 19, 1, 0, 0, 0,240, 50,231, 19, 1, 0, 0, 0,176, 42,231, 19, 1, 0, 0, 0,240, 44,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176, 51,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, - 16, 52,231, 19, 1, 0, 0, 0, 80, 51,231, 19, 1, 0, 0, 0,144, 44,231, 19, 1, 0, 0, 0,240, 44,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16, 52,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -112, 52,231, 19, 1, 0, 0, 0,176, 51,231, 19, 1, 0, 0, 0,144, 41,231, 19, 1, 0, 0, 0, 80, 45,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112, 52,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -208, 52,231, 19, 1, 0, 0, 0, 16, 52,231, 19, 1, 0, 0, 0, 48, 44,231, 19, 1, 0, 0, 0,176, 45,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208, 52,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, - 48, 53,231, 19, 1, 0, 0, 0,112, 52,231, 19, 1, 0, 0, 0,208, 43,231, 19, 1, 0, 0, 0,176, 45,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48, 53,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -144, 53,231, 19, 1, 0, 0, 0,208, 52,231, 19, 1, 0, 0, 0, 80, 45,231, 19, 1, 0, 0, 0,176, 45,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144, 53,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -240, 53,231, 19, 1, 0, 0, 0, 48, 53,231, 19, 1, 0, 0, 0, 80, 45,231, 19, 1, 0, 0, 0, 16, 46,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 53,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, - 80, 54,231, 19, 1, 0, 0, 0,144, 53,231, 19, 1, 0, 0, 0,176, 45,231, 19, 1, 0, 0, 0, 16, 46,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 54,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -176, 54,231, 19, 1, 0, 0, 0,240, 53,231, 19, 1, 0, 0, 0, 16, 43,231, 19, 1, 0, 0, 0,112, 46,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176, 54,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, - 16, 55,231, 19, 1, 0, 0, 0, 80, 54,231, 19, 1, 0, 0, 0, 48, 44,231, 19, 1, 0, 0, 0,112, 46,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16, 55,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -112, 55,231, 19, 1, 0, 0, 0,176, 54,231, 19, 1, 0, 0, 0, 16, 46,231, 19, 1, 0, 0, 0,112, 46,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112, 55,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -208, 55,231, 19, 1, 0, 0, 0, 16, 55,231, 19, 1, 0, 0, 0, 80, 45,231, 19, 1, 0, 0, 0,208, 46,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208, 55,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, - 48, 56,231, 19, 1, 0, 0, 0,112, 55,231, 19, 1, 0, 0, 0, 16, 46,231, 19, 1, 0, 0, 0, 48, 47,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48, 56,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -144, 56,231, 19, 1, 0, 0, 0,208, 55,231, 19, 1, 0, 0, 0,208, 46,231, 19, 1, 0, 0, 0, 48, 47,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144, 56,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -240, 56,231, 19, 1, 0, 0, 0, 48, 56,231, 19, 1, 0, 0, 0,144, 44,231, 19, 1, 0, 0, 0,144, 47,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 56,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, - 80, 57,231, 19, 1, 0, 0, 0,144, 56,231, 19, 1, 0, 0, 0, 48, 44,231, 19, 1, 0, 0, 0,144, 47,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 57,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -176, 57,231, 19, 1, 0, 0, 0,240, 56,231, 19, 1, 0, 0, 0,112, 43,231, 19, 1, 0, 0, 0,240, 47,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176, 57,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, - 16, 58,231, 19, 1, 0, 0, 0, 80, 57,231, 19, 1, 0, 0, 0,240, 44,231, 19, 1, 0, 0, 0,240, 47,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16, 58,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -112, 58,231, 19, 1, 0, 0, 0,176, 57,231, 19, 1, 0, 0, 0,144, 47,231, 19, 1, 0, 0, 0,240, 47,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112, 58,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, -208, 58,231, 19, 1, 0, 0, 0, 16, 58,231, 19, 1, 0, 0, 0, 16, 43,231, 19, 1, 0, 0, 0,208, 46,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208, 58,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,112, 58,231, 19, 1, 0, 0, 0,112, 46,231, 19, 1, 0, 0, 0, 48, 47,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 48, 59,231, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -208, 62,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 43,231, 19, 1, 0, 0, 0,240, 41,231, 19, 1, 0, 0, 0, - 80, 42,231, 19, 1, 0, 0, 0,112, 43,231, 19, 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,210,231, 19, 1, 0, 0, 0,128,210,231, 19, 1, 0, 0, 0, 16, 60,231, 19, 1, 0, 0, 0,112, 61,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 60,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,112, 61,231, 19, 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,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,112, 61,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 60,231, 19, 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,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,208, 62,231, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 93,231, 19, 1, 0, 0, 0, - 48, 59,231, 19, 1, 0, 0, 0,208, 43,231, 19, 1, 0, 0, 0,144, 44,231, 19, 1, 0, 0, 0,240, 44,231, 19, 1, 0, 0, 0, -176, 42,231, 19, 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, 80, 88,231, 19, 1, 0, 0, 0, - 80, 92,231, 19, 1, 0, 0, 0,176, 63,231, 19, 1, 0, 0, 0, 16, 65,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 16, 65,231, 19, 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, -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, + 66, 76, 69, 78, 68, 69, 82, 45,118, 50, 53, 48, 82, 69, 78, 68, + 32, 0, 0, 0,208,229,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,224,228,191, 95, +255,127, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 32, 32, 49, 49, 11, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1,176, 8,233, 19, + 1, 0, 0, 0, 48, 0, 6, 3, 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,186,140, 35, 1, 1, 0, 0, 0, 40, 0, 0, 0, 48, 0, 0, 0, 16,230,191, 95,255,127, 0, 0, 64,229,191, 95, +255,127, 0, 0,208, 54,182, 28, 32, 0, 0, 0,208,229,191, 95,255,127, 0, 0,112, 55,135, 28, 1, 0, 0, 0, 45, 0, 0, 0, + 0, 0, 0, 0,118, 0, 0, 0, 0, 0, 0, 0,176,229,191, 95,255,127, 0, 0,221,138, 95, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,208,229,191, 95,255,127, 0, 0, 32, 0, 0, 0, 82, 69, 78, 68,112, 55,135, 28, 1, 0, 0, 0, 82, 69, 78, 68, + 32, 0, 0, 0,208,229,191, 95,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,230,191, 95,255,127, 0, 0, 0,230,191, 95, +255,127, 0, 0,163,145, 95, 0, 1, 0, 0, 0, 48, 78, 4, 3, 1, 0, 0, 0,112, 55,135, 28, 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,176, 8,233, 19, + 1, 0, 0, 0, 87, 77, 0, 0, 0, 1, 0, 0,224,203,231, 19, 1, 0, 0, 0,103, 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, 48,205,231, 19, 1, 0, 0, 0, 48,205,231, 19, 1, 0, 0, 0, 48,205,231, 19, 1, 0, 0, 0, 48,205,231, 19, + 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,208,241,129, 28, 1, 0, 0, 0,160, 65,135, 28, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,239,129, 28, 1, 0, 0, 0,192,165,131, 28, 1, 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, 80,139, 28, + 1, 0, 0, 0, 80, 53,135, 28, 1, 0, 0, 0,192, 97,227, 19, 1, 0, 0, 0,192, 97,227, 19, 1, 0, 0, 0,192, 97,227, 19, + 1, 0, 0, 0,224, 98,227, 19, 1, 0, 0, 0,224, 98,227, 19, 1, 0, 0, 0,224, 98,227, 19, 1, 0, 0, 0, 68, 65, 84, 65, +224, 0, 0, 0, 48,205,231, 19, 1, 0, 0, 0,104, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16,114,227, 19, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176, 8,233, 19, 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, 0, 0, 0, 0, 16,210,230, 2, + 1, 0, 0, 0,112, 87,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 43, 27, + 1, 0, 0, 0,208,189,134, 28, 1, 0, 0, 0,208,189,134, 28, 1, 0, 0, 0,192, 11,228, 19, 1, 0, 0, 0, 96, 79,144, 22, + 1, 0, 0, 0,224,162,145, 22, 1, 0, 0, 0,224,162,145, 22, 1, 0, 0, 0,112, 87,144, 22, 1, 0, 0, 0, 64, 6,147, 22, + 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, 80,206,231, 19, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,119,232, 19, 1, 0, 0, 0, 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, 96,207,231, 19, 1, 0, 0, 0,192,213,231, 19, + 1, 0, 0, 0, 32,214,231, 19, 1, 0, 0, 0,160,224,231, 19, 1, 0, 0, 0, 0,225,231, 19, 1, 0, 0, 0,112,104,232, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 6, 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, + 32, 0, 0, 0, 96,207,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,207,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 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,207,231, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,208,231, 19, 1, 0, 0, 0, 96,207,231, 19, 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, 32,208,231, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,128,208,231, 19, 1, 0, 0, 0,192,207,231, 19, 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,128,208,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,208,231, 19, + 1, 0, 0, 0, 32,208,231, 19, 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,208,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,209,231, 19, 1, 0, 0, 0,128,208,231, 19, + 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, 64,209,231, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,209,231, 19, 1, 0, 0, 0,224,208,231, 19, 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,160,209,231, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 0,210,231, 19, 1, 0, 0, 0, 64,209,231, 19, 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, 0,210,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,210,231, 19, + 1, 0, 0, 0,160,209,231, 19, 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, 96,210,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,210,231, 19, 1, 0, 0, 0, 0,210,231, 19, + 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,192,210,231, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,211,231, 19, 1, 0, 0, 0, 96,210,231, 19, 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, 32,211,231, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,128,211,231, 19, 1, 0, 0, 0,192,210,231, 19, 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,128,211,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,211,231, 19, + 1, 0, 0, 0, 32,211,231, 19, 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,224,211,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,212,231, 19, 1, 0, 0, 0,128,211,231, 19, + 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, 64,212,231, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,212,231, 19, 1, 0, 0, 0,224,211,231, 19, 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,160,212,231, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 0,213,231, 19, 1, 0, 0, 0, 64,212,231, 19, 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, 0,213,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,213,231, 19, + 1, 0, 0, 0,160,212,231, 19, 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, 96,213,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,213,231, 19, 1, 0, 0, 0, 0,213,231, 19, + 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,192,213,231, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,213,231, 19, 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, 32,214,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,128,214,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,207,231, 19, 1, 0, 0, 0, 32,208,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,214,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,224,214,231, 19, 1, 0, 0, 0, 32,214,231, 19, 1, 0, 0, 0,192,207,231, 19, 1, 0, 0, 0,224,208,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224,214,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 64,215,231, 19, 1, 0, 0, 0,128,214,231, 19, 1, 0, 0, 0, 32,208,231, 19, 1, 0, 0, 0, 64,209,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64,215,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,160,215,231, 19, 1, 0, 0, 0,224,214,231, 19, 1, 0, 0, 0,224,208,231, 19, 1, 0, 0, 0, 64,209,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,215,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 0,216,231, 19, 1, 0, 0, 0, 64,215,231, 19, 1, 0, 0, 0, 96,207,231, 19, 1, 0, 0, 0,160,209,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0,216,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 96,216,231, 19, 1, 0, 0, 0,160,215,231, 19, 1, 0, 0, 0,128,208,231, 19, 1, 0, 0, 0,160,209,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,216,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,192,216,231, 19, 1, 0, 0, 0, 0,216,231, 19, 1, 0, 0, 0, 64,209,231, 19, 1, 0, 0, 0, 0,210,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,216,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 32,217,231, 19, 1, 0, 0, 0, 96,216,231, 19, 1, 0, 0, 0,160,209,231, 19, 1, 0, 0, 0, 96,210,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32,217,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,128,217,231, 19, 1, 0, 0, 0,192,216,231, 19, 1, 0, 0, 0,128,208,231, 19, 1, 0, 0, 0,192,210,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,217,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,224,217,231, 19, 1, 0, 0, 0, 32,217,231, 19, 1, 0, 0, 0, 96,210,231, 19, 1, 0, 0, 0,192,210,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224,217,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 64,218,231, 19, 1, 0, 0, 0,128,217,231, 19, 1, 0, 0, 0, 96,207,231, 19, 1, 0, 0, 0, 32,211,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64,218,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,160,218,231, 19, 1, 0, 0, 0,224,217,231, 19, 1, 0, 0, 0, 0,210,231, 19, 1, 0, 0, 0,128,211,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,218,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 0,219,231, 19, 1, 0, 0, 0, 64,218,231, 19, 1, 0, 0, 0,160,209,231, 19, 1, 0, 0, 0,128,211,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0,219,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 96,219,231, 19, 1, 0, 0, 0,160,218,231, 19, 1, 0, 0, 0, 32,211,231, 19, 1, 0, 0, 0,128,211,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,219,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,192,219,231, 19, 1, 0, 0, 0, 0,219,231, 19, 1, 0, 0, 0, 32,211,231, 19, 1, 0, 0, 0,224,211,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,219,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 32,220,231, 19, 1, 0, 0, 0, 96,219,231, 19, 1, 0, 0, 0,128,211,231, 19, 1, 0, 0, 0,224,211,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32,220,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,128,220,231, 19, 1, 0, 0, 0,192,219,231, 19, 1, 0, 0, 0,224,208,231, 19, 1, 0, 0, 0, 64,212,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,220,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,224,220,231, 19, 1, 0, 0, 0, 32,220,231, 19, 1, 0, 0, 0, 0,210,231, 19, 1, 0, 0, 0, 64,212,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224,220,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 64,221,231, 19, 1, 0, 0, 0,128,220,231, 19, 1, 0, 0, 0,224,211,231, 19, 1, 0, 0, 0, 64,212,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64,221,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,160,221,231, 19, 1, 0, 0, 0,224,220,231, 19, 1, 0, 0, 0, 32,211,231, 19, 1, 0, 0, 0,160,212,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,221,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 0,222,231, 19, 1, 0, 0, 0, 64,221,231, 19, 1, 0, 0, 0,224,211,231, 19, 1, 0, 0, 0, 0,213,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0,222,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 96,222,231, 19, 1, 0, 0, 0,160,221,231, 19, 1, 0, 0, 0,160,212,231, 19, 1, 0, 0, 0, 0,213,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,222,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,192,222,231, 19, 1, 0, 0, 0, 0,222,231, 19, 1, 0, 0, 0, 96,210,231, 19, 1, 0, 0, 0, 96,213,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,222,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 32,223,231, 19, 1, 0, 0, 0, 96,222,231, 19, 1, 0, 0, 0, 0,210,231, 19, 1, 0, 0, 0, 96,213,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32,223,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,128,223,231, 19, 1, 0, 0, 0,192,222,231, 19, 1, 0, 0, 0, 64,209,231, 19, 1, 0, 0, 0,192,213,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,223,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,224,223,231, 19, 1, 0, 0, 0, 32,223,231, 19, 1, 0, 0, 0,192,210,231, 19, 1, 0, 0, 0,192,213,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224,223,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 64,224,231, 19, 1, 0, 0, 0,128,223,231, 19, 1, 0, 0, 0, 96,213,231, 19, 1, 0, 0, 0,192,213,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64,224,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,160,224,231, 19, 1, 0, 0, 0,224,223,231, 19, 1, 0, 0, 0,224,208,231, 19, 1, 0, 0, 0,160,212,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,224,231, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,224,231, 19, 1, 0, 0, 0, 64,212,231, 19, 1, 0, 0, 0, 0,213,231, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 0,225,231, 19, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,160,228,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,208,231, 19, 1, 0, 0, 0,192,207,231, 19, + 1, 0, 0, 0, 32,208,231, 19, 1, 0, 0, 0, 64,209,231, 19, 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,119,232, 19, 1, 0, 0, 0, 0,119,232, 19, 1, 0, 0, 0,224,225,231, 19, 1, 0, 0, 0, 64,227,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,225,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 64,227,231, 19, + 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,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, 68, 65, 84, 65, 40, 1, 0, 0, - 16, 65,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 63,231, 19, 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,112, 66,231, 19, 1, 0, 0, 0,192, 86,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 66,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 68,231, 19, 1, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64,227,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,224,225,231, 19, 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,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,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, 68, 65, 84, 65,160, 0, 0, 0,160,228,231, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144, 3,232, 19, + 1, 0, 0, 0, 0,225,231, 19, 1, 0, 0, 0,160,209,231, 19, 1, 0, 0, 0, 96,210,231, 19, 1, 0, 0, 0,192,210,231, 19, + 1, 0, 0, 0,128,208,231, 19, 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, 32,254,231, 19, + 1, 0, 0, 0, 32, 2,232, 19, 1, 0, 0, 0,128,229,231, 19, 1, 0, 0, 0,224,230,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,229,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224,230,231, 19, 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,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,224,230,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,229,231, 19, + 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, 68, 65, 84, 65, 88, 1, 0, 0, 0, 68,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -144, 69,231, 19, 1, 0, 0, 0,112, 66,231, 19, 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, 64,232,231, 19, 1, 0, 0, 0,144,252,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,232,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,233,231, 19, 1, 0, 0, 0, 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, - 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,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, - 83, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,135,255, 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, 68, 65, 84, 65, 88, 1, 0, 0,208,233,231, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0, 96,235,231, 19, 1, 0, 0, 0, 64,232,231, 19, 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, 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, 69,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32, 71,231, 19, 1, 0, 0, 0, 0, 68,231, 19, 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, 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, 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, 83, 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, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85,110,105,116,115, 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, 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, 50,255, 63, 1, 61, 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, 68, 65, 84, 65, + 88, 1, 0, 0, 96,235,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,236,231, 19, 1, 0, 0, 0,208,233,231, 19, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85,110,105,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 32, 71,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -176, 72,231, 19, 1, 0, 0, 0,144, 69,231, 19, 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, 50,255, 63, 1, 61, 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, - 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, - 75,101,121,105,110,103, 32, 83,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, 68, 65, 84, 65, 88, 1, 0, 0,240,236,231, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,128,238,231, 19, 1, 0, 0, 0, 96,235,231, 19, 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,213,254, 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, 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, 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, 72,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 74,231, 19, 1, 0, 0, 0, 32, 71,231, 19, 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, 75,101,121,105,110,103, 32, 83,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, 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, 0, 0,213,254, 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, 71,114, 97,118,105,116,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, 68, 65, 84, 65, + 88, 1, 0, 0,128,238,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,240,231, 19, 1, 0, 0, 0,240,236,231, 19, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 97,118,105,116,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,153,254, 63, 1, 36, 0, 20, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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,153,254, 63, 1, 36, 0, 20, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 64, 74,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -208, 75,231, 19, 1, 0, 0, 0,176, 72,231, 19, 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, 68, 65, 84, 65, 88, 1, 0, 0, 16,240,231, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,160,241,231, 19, 1, 0, 0, 0,128,238,231, 19, 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, - 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, 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, - 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, 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,135,255, 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,135,255, 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, 68, 65, 84, 65, 88, 1, 0, 0, -208, 75,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96, 77,231, 19, 1, 0, 0, 0, 64, 74,231, 19, 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, 68, 65, 84, 65, + 88, 1, 0, 0,160,241,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,243,231, 19, 1, 0, 0, 0, 16,240,231, 19, + 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, 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,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, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0, 48,243,231, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,192,244,231, 19, 1, 0, 0, 0,160,241,231, 19, 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, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 96, 77,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -240, 78,231, 19, 1, 0, 0, 0,208, 75,231, 19, 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, 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, - 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,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, - 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,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, 68, 65, 84, 65, + 88, 1, 0, 0,192,244,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80,246,231, 19, 1, 0, 0, 0, 48,243,231, 19, + 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -240, 78,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 80,231, 19, 1, 0, 0, 0, 96, 77,231, 19, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80,246,231, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,224,247,231, 19, 1, 0, 0, 0,192,244,231, 19, 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, 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, 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, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,128, 80,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, - 16, 82,231, 19, 1, 0, 0, 0,240, 78,231, 19, 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,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, - 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, 68, 65, 84, 65, + 88, 1, 0, 0,224,247,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,249,231, 19, 1, 0, 0, 0, 80,246,231, 19, + 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,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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, - 16, 82,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160, 83,231, 19, 1, 0, 0, 0,128, 80,231, 19, 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, 68, 65, 84, 65, 88, 1, 0, 0,112,249,231, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0, 0,251,231, 19, 1, 0, 0, 0,224,247,231, 19, 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, 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, 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, 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, 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, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0,160, 83,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, - 48, 85,231, 19, 1, 0, 0, 0, 16, 82,231, 19, 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, 68, 65, 84, 65, + 88, 1, 0, 0, 0,251,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,252,231, 19, 1, 0, 0, 0,112,249,231, 19, + 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, 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, - 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, 68, 65, 84, 65, 88, 1, 0, 0,144,252,231, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251,231, 19, 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, 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, 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, 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, 85,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192, 86,231, 19, 1, 0, 0, 0,160, 83,231, 19, 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,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, 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, 68, 65, 84, 65, + 0, 1, 0, 0, 32,254,231, 19, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 32, 2,232, 19, 1, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,192, 86,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48, 85,231, 19, 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,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, 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,255,231, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,192, 0,232, 19, 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, - 0, 0, 0, 0, 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, - 80, 88,231, 19, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 80, 92,231, 19, 1, 0, 0, 0, 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, + 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 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, 89, 6, 0, 0,108, 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, 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,192, 0,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,255,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144, 89,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,240, 90,231, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 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, 89, 6, 0, 0,108, 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, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,240, 90,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 89,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,212, 4, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48,212, 4, 3, + 1, 0, 0, 0,158, 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, + 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,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, 0, + 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, + 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,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, 0, + 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 10, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 10, 5, 3, 1, 0, 0, 0, -158, 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, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0,128, 63,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, 0, 0, 0, 0, 0, -184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, - 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,128, 63,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, 0, 0, 0, 0, 0, -184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, 32, 2,232, 19, + 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,254,231, 19, 1, 0, 0, 0, 96,255,231, 19, + 1, 0, 0, 0,192, 0,232, 19, 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, 22, 6, 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, 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,144, 3,232, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 96, 12,232, 19, 1, 0, 0, 0,160,228,231, 19, + 1, 0, 0, 0, 96,207,231, 19, 1, 0, 0, 0, 32,211,231, 19, 1, 0, 0, 0,128,211,231, 19, 1, 0, 0, 0,160,209,231, 19, + 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, 48, 7,232, 19, 1, 0, 0, 0,240, 10,232, 19, + 1, 0, 0, 0,112, 4,232, 19, 1, 0, 0, 0,208, 5,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,208, 5,232, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 4,232, 19, 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,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, - 68, 65, 84, 65, 32, 1, 0, 0, 80, 92,231, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 88,231, 19, 1, 0, 0, 0,144, 89,231, 19, 1, 0, 0, 0,240, 90,231, 19, 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,176, 5, 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, 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, 93,231, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112,102,231, 19, 1, 0, 0, 0,208, 62,231, 19, 1, 0, 0, 0, -144, 41,231, 19, 1, 0, 0, 0, 80, 45,231, 19, 1, 0, 0, 0,176, 45,231, 19, 1, 0, 0, 0,208, 43,231, 19, 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, 80, 97,231, 19, 1, 0, 0, 0, 16,101,231, 19, 1, 0, 0, 0, -144, 94,231, 19, 1, 0, 0, 0,240, 95,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 94,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,240, 95,231, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, 48, 7,232, 19, + 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0,240, 10,232, 19, 1, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,240, 95,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 94,231, 19, 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,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, 80, 97,231, 19, 1, 0, 0, 0, -174, 0, 0, 0, 1, 0, 0, 0, 16,101,231, 19, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 8,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,144, 9,232, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 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, 87, 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, 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,144, 9,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 8,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 98,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,176, 99,231, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 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, 87, 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, 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,176, 99,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 98,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 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, 48,216, 4, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48,216, 4, 3, + 1, 0, 0, 0,158, 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, + 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, + 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +224, 91,138, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, + 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,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, 0, + 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48, 14, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 14, 5, 3, 1, 0, 0, 0, -158, 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, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, -184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, - 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,128, 63, 0, 0,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, 0, 0, 0, 0, 0, -184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,240, 10,232, 19, + 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 7,232, 19, 1, 0, 0, 0, 48, 8,232, 19, + 1, 0, 0, 0,144, 9,232, 19, 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, 22, 6, 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, 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, 96, 12,232, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240, 26,232, 19, 1, 0, 0, 0,144, 3,232, 19, + 1, 0, 0, 0, 96,210,231, 19, 1, 0, 0, 0, 96,213,231, 19, 1, 0, 0, 0,192,213,231, 19, 1, 0, 0, 0,192,210,231, 19, + 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, 16,232, 19, 1, 0, 0, 0,128, 25,232, 19, + 1, 0, 0, 0, 64, 13,232, 19, 1, 0, 0, 0,160, 14,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 13,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,160, 14,232, 19, 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, 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, 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,231, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 97,231, 19, 1, 0, 0, 0, 80, 98,231, 19, 1, 0, 0, 0,176, 99,231, 19, 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,176, 5, 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, 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,102,231, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240,116,231, 19, 1, 0, 0, 0,176, 93,231, 19, 1, 0, 0, 0, -144, 44,231, 19, 1, 0, 0, 0,144, 47,231, 19, 1, 0, 0, 0,240, 47,231, 19, 1, 0, 0, 0,240, 44,231, 19, 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, 16,106,231, 19, 1, 0, 0, 0,144,115,231, 19, 1, 0, 0, 0, - 80,103,231, 19, 1, 0, 0, 0,176,104,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,176,104,231, 19, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,103,231, 19, 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, 16,106,231, 19, 1, 0, 0, 0, -168, 0, 0, 0, 1, 0, 0, 0,144,111,231, 19, 1, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,160, 14,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 13,232, 19, 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, 16,232, 19, + 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0,128, 21,232, 19, 1, 0, 0, 0, 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,112,107,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,107,231, 19, 1, 0, 0, 0, -220, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,192,107,231, 19, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, -192,107,231, 19, 1, 0, 0, 0,219, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,154, 5, 3, 1, 0, 0, 0, - 19, 0, 0, 0, 1, 0, 1, 0, 48,154, 5, 3, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48,154, 5, 3, 1, 0, 0, 0, - 21, 0, 1, 0, 1, 0, 1, 0, 48,154, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,166, 5, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 48,182, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,193,234, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 48,194, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,191,234, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 48,188, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,162, 5, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 48,176, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,128,185,234, 19, 1, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,208,108,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 48,110,231, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,195, 0, - 26, 0,195, 0, 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, - 53, 4, 0, 0,247, 4, 0, 0, 69, 2, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,110,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208,108,231, 19, 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, 6, 0,195, 0, -156, 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, - 53, 4, 0, 0,247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 17,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96, 17,232, 19, + 1, 0, 0, 0,220, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,176, 17,232, 19, 1, 0, 0, 0, 68, 65, 84, 65, +208, 0, 0, 0,176, 17,232, 19, 1, 0, 0, 0,219, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 0, 6, 3, + 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 0, 6, 3, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 0, 6, 3, + 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 0, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 12, 6, 3, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 28, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,100,235, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 40, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64, 98,235, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 34, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 8, 6, 3, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 22, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 80, 92,235, 19, + 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 18,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32, 20,232, 19, + 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, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,195, 0, 26, 0,195, 0, 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, 53, 4, 0, 0,247, 4, 0, 0, 69, 2, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,195, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 0, 1, 0, 0,144,111,231, 19, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,144,115,231, 19, 1, 0, 0, 0, - 16,106,231, 19, 1, 0, 0, 0,208,108,231, 19, 1, 0, 0, 0, 48,110,231, 19, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32, 20,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,192, 18,232, 19, 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, + 6, 0,195, 0,156, 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, 53, 4, 0, 0,247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 21,232, 19, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,128, 25,232, 19, + 1, 0, 0, 0, 0, 16,232, 19, 1, 0, 0, 0,192, 18,232, 19, 1, 0, 0, 0, 32, 20,232, 19, 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, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,112,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 48,114,231, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 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, 89, 6, 0, 0,108, 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, 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,114,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,112,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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,192, 22,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32, 24,232, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 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, 89, 6, 0, 0, +108, 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, 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, 32, 24,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 22,232, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 48, 18, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, - 48, 18, 5, 3, 1, 0, 0, 0,158, 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, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, - 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,220, 4, 3, 1, 0, 0, 0, 68, 65, 84, 65, +104, 3, 0, 0, 48,220, 4, 3, 1, 0, 0, 0,158, 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, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195, +115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -615,172 +618,322 @@ 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, 68, 65, 84, 65, + 48, 1, 0, 0,128, 25,232, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 21,232, 19, + 1, 0, 0, 0,192, 22,232, 19, 1, 0, 0, 0, 32, 24,232, 19, 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, 22, 6, 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, 68, 65, 84, 65, 32, 1, 0, 0,144,115,231, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144,111,231, 19, 1, 0, 0, 0,208,112,231, 19, 1, 0, 0, 0, 48,114,231, 19, 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,176, 5, 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, 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,240, 26,232, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208, 50,232, 19, + 1, 0, 0, 0, 96, 12,232, 19, 1, 0, 0, 0,224,211,231, 19, 1, 0, 0, 0, 64,212,231, 19, 1, 0, 0, 0, 0,210,231, 19, + 1, 0, 0, 0,128,211,231, 19, 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,160, 45,232, 19, + 1, 0, 0, 0,208, 49,232, 19, 1, 0, 0, 0,208, 27,232, 19, 1, 0, 0, 0, 64, 44,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 27,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 48, 29,232, 19, 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,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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 29,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,144, 30,232, 19, 1, 0, 0, 0,208, 27,232, 19, + 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,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,144, 30,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,240, 31,232, 19, 1, 0, 0, 0, 48, 29,232, 19, + 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,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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 31,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 64, 44,232, 19, 1, 0, 0, 0,144, 30,232, 19, + 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,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, 80, 33,232, 19, 1, 0, 0, 0,176, 42,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224, 34,232, 19, 1, 0, 0, 0, 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, 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, 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,240,116,231, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,140,231, 19, 1, 0, 0, 0, -112,102,231, 19, 1, 0, 0, 0, 16, 46,231, 19, 1, 0, 0, 0,112, 46,231, 19, 1, 0, 0, 0, 48, 44,231, 19, 1, 0, 0, 0, -176, 45,231, 19, 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,160,135,231, 19, 1, 0, 0, 0, -192,139,231, 19, 1, 0, 0, 0,208,117,231, 19, 1, 0, 0, 0, 64,134,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,117,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 48,119,231, 19, 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, 68, 65, 84, 65, 88, 1, 0, 0,224, 34,232, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,112, 36,232, 19, 1, 0, 0, 0, 80, 33,232, 19, 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,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, -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, 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, 0, 0, 0, 0, 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,119,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,144,120,231, 19, 1, 0, 0, 0,208,117,231, 19, 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, -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, -144,120,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,240,121,231, 19, 1, 0, 0, 0, 48,119,231, 19, 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, -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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,121,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 64,134,231, 19, 1, 0, 0, 0,144,120,231, 19, 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, -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, 80,123,231, 19, 1, 0, 0, 0,176,132,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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,123,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,124,231, 19, 1, 0, 0, 0, 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, 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, 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, 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, 36,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 38,232, 19, 1, 0, 0, 0,224, 34,232, 19, + 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, 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, 38,232, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,144, 39,232, 19, 1, 0, 0, 0,112, 36,232, 19, 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, 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, 39,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32, 41,232, 19, 1, 0, 0, 0, 0, 38,232, 19, + 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, 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, 41,232, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,176, 42,232, 19, 1, 0, 0, 0,144, 39,232, 19, 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, 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, 42,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 41,232, 19, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,124,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -112,126,231, 19, 1, 0, 0, 0, 80,123,231, 19, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64, 44,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 31,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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,126,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,128,231, 19, 1, 0, 0, 0,224,124,231, 19, 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, 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, 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,224, 4, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48,224, 4, 3, 1, 0, 0, 0,158, 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,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,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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,160, 45,232, 19, 1, 0, 0, 0,159, 0, 0, 0, + 1, 0, 0, 0,208, 49,232, 19, 1, 0, 0, 0, 0, 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, 22, 6, 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, 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, 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, 47,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,112, 48,232, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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, 48,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 47,232, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0, +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, 49,232, 19, + 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 45,232, 19, 1, 0, 0, 0, 16, 47,232, 19, + 1, 0, 0, 0,112, 48,232, 19, 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, 50,232, 19, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240, 74,232, 19, 1, 0, 0, 0,240, 26,232, 19, 1, 0, 0, 0, 32,211,231, 19, + 1, 0, 0, 0,160,212,231, 19, 1, 0, 0, 0, 0,213,231, 19, 1, 0, 0, 0,224,211,231, 19, 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, 48, 57,232, 19, 1, 0, 0, 0,240, 73,232, 19, 1, 0, 0, 0,176, 51,232, 19, + 1, 0, 0, 0,208, 55,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 51,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 16, 53,232, 19, 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,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, 16, 53,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,112, 54,232, 19, 1, 0, 0, 0,176, 51,232, 19, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 54,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,208, 55,232, 19, 1, 0, 0, 0, 16, 53,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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,208, 55,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 54,232, 19, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 57,232, 19, 1, 0, 0, 0,163, 0, 0, 0, + 1, 0, 0, 0, 48,228, 4, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -144,129,231, 19, 1, 0, 0, 0,112,126,231, 19, 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, 96, 58,232, 19, 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, 96, 58,232, 19, 1, 0, 0, 0, 22, 1, 0, 0, 1, 0, 0, 0, 48, 0, 6, 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, 40, 1, 0, 0,192, 58,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32, 60,232, 19, 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, - 0, 0,211,252,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, +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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 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,159, 3, 0, 0, 85, 0, 0, 0, +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, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, -144,129,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,131,231, 19, 1, 0, 0, 0, 0,128,231, 19, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32, 60,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128, 61,232, 19, 1, 0, 0, 0,192, 58,232, 19, 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, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,189, 0,164, 3,172, 0,146, 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,111, 0, 0, 0, + 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,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, 68, 65, 84, 65, 40, 1, 0, 0,128, 61,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 60,232, 19, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 32,131,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -176,132,231, 19, 1, 0, 0, 0,144,129,231, 19, 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, +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, 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,159, 3, 0, 0,111, 0, 0, 0, + 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, - 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, 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, 68, 65, 84, 65,192, 24, 0, 0, 48,228, 4, 3, + 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0,192, 69,232, 19, 1, 0, 0, 0, 48, 57,232, 19, 1, 0, 0, 0,192, 58,232, 19, + 1, 0, 0, 0,128, 61,232, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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,132,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,131,231, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,134,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240,121,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 22, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 22, 5, 3, 1, 0, 0, 0,158, 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, -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, -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, @@ -789,205 +942,39 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0, -160,135,231, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,192,139,231, 19, 1, 0, 0, 0, 0, 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,176, 5, 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, 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, - 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,137,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 96,138,231, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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, 96,138,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,137,231, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0,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,192,139,231, 19, 1, 0, 0, 0, -174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,135,231, 19, 1, 0, 0, 0, 0,137,231, 19, 1, 0, 0, 0, - 96,138,231, 19, 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,192,140,231, 19, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,176,165,231, 19, 1, 0, 0, 0,240,116,231, 19, 1, 0, 0, 0, 80, 45,231, 19, 1, 0, 0, 0, -208, 46,231, 19, 1, 0, 0, 0, 48, 47,231, 19, 1, 0, 0, 0, 16, 46,231, 19, 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, 32,147,231, 19, 1, 0, 0, 0,176,164,231, 19, 1, 0, 0, 0,160,141,231, 19, 1, 0, 0, 0, -192,145,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,141,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0,143,231, 19, 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,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, 0,143,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 96,144,231, 19, 1, 0, 0, 0,160,141,231, 19, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -192,145,231, 19, 1, 0, 0, 0, 0,143,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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,192,145,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 96,144,231, 19, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,147,231, 19, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, -208,152,231, 19, 1, 0, 0, 0, 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, 80,148,231, 19, 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,148,231, 19, 1, 0, 0, 0, 22, 1, 0, 0, 1, 0, 0, 0, 48,154, 5, 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, 40, 1, 0, 0,176,148,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 16,150,231, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 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,159, 3, 0, 0, 85, 0, 0, 0,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,150,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,112,151,231, 19, 1, 0, 0, 0,176,148,231, 19, 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, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,189, 0,164, 3,172, 0,146, 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,111, 0, 0, 0, 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,151,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,150,231, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,111, 0, 0, 0, 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,152,231, 19, 1, 0, 0, 0, -169, 0, 0, 0, 1, 0, 0, 0,144,160,231, 19, 1, 0, 0, 0, 32,147,231, 19, 1, 0, 0, 0,176,148,231, 19, 1, 0, 0, 0, -112,151,231, 19, 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,153,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 16,155,231, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 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,167, 2, 0, 0, 85, 0, 0, 0,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,155,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,112,156,231, 19, 1, 0, 0, 0,176,153,231, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 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,156,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,208,157,231, 19, 1, 0, 0, 0, 16,155,231, 19, 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,167, 2, 0, 0,111, 0, 0, 0,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,157,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 48,159,231, 19, 1, 0, 0, 0,112,156,231, 19, 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, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 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,167, 2, 0, 0,111, 0, 0, 0, 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,159,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,157,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,111, 0, 0, 0, 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, 48, 26, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 26, 5, 3, 1, 0, 0, 0, -158, 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, 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,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, - 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, - 96,132,111, 65,214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181,195, 13,188,190,191, 73, 53, 62, - 99,126, 81, 63, 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,159, 87,135,195, -205,209,166, 67,151,254, 71, 66, 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,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, - 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, - 96,132,111, 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, 0, 0,172,148, 0, 59, 0, 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, @@ -996,243 +983,51 @@ 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, - 68, 65, 84, 65, 32, 1, 0, 0,144,160,231, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,176,164,231, 19, 1, 0, 0, 0, -208,152,231, 19, 1, 0, 0, 0,176,153,231, 19, 1, 0, 0, 0, 48,159,231, 19, 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,176, 5, 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, 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,161,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 80,163,231, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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,163,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,161,231, 19, 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, 8, 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,151, 4, 0, 0, -127, 0, 0, 0,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, -176,164,231, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,160,231, 19, 1, 0, 0, 0, -240,161,231, 19, 1, 0, 0, 0, 80,163,231, 19, 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,165,231, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0,196,231, 19, 1, 0, 0, 0,192,140,231, 19, 1, 0, 0, 0, -208, 46,231, 19, 1, 0, 0, 0, 16, 43,231, 19, 1, 0, 0, 0,112, 46,231, 19, 1, 0, 0, 0, 48, 47,231, 19, 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,176,170,231, 19, 1, 0, 0, 0, 0,195,231, 19, 1, 0, 0, 0, -144,166,231, 19, 1, 0, 0, 0, 80,169,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,166,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,240,167,231, 19, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,167,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 80,169,231, 19, 1, 0, 0, 0,144,166,231, 19, 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,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, 80,169,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,167,231, 19, 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,176,170,231, 19, 1, 0, 0, 0, - 23, 1, 0, 0, 1, 0, 0, 0,112,177,231, 19, 1, 0, 0, 0, 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,154, 5, 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, - 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,171,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 80,173,231, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 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,159, 3, 0, 0, 49, 2, 0, 0, 74, 2, 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, 80,173,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,176,174,231, 19, 1, 0, 0, 0,240,171,231, 19, 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, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0,200, 1,200, 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,216, 0, 0, 0, 75, 2, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 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,176,174,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 16,176,231, 19, 1, 0, 0, 0, 80,173,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,159, 3, 0, 0, 75, 2, 0, 0, 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, 16,176,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,174,231, 19, 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, 0, 0, 0, 0, 0, 0, 0, 4, 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,217, 0, 0, 0,159, 3, 0, 0, 75, 2, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 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,112,177,231, 19, 1, 0, 0, 0, -163, 0, 0, 0, 1, 0, 0, 0, 32,183,231, 19, 1, 0, 0, 0,176,170,231, 19, 1, 0, 0, 0,240,171,231, 19, 1, 0, 0, 0, - 16,176,231, 19, 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,160,178,231, 19, 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,160,178,231, 19, 1, 0, 0, 0, 22, 1, 0, 0, 1, 0, 0, 0, 48,154, 5, 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, 40, 1, 0, 0, - 0,179,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 96,180,231, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 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,159, 3, 0, 0, - 85, 0, 0, 0,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, - 96,180,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,192,181,231, 19, 1, 0, 0, 0, 0,179,231, 19, 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, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,189, 0,164, 3,172, 0,146, 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, -111, 0, 0, 0, 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, -192,181,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,180,231, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -111, 0, 0, 0, 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, - 32,183,231, 19, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0,224,190,231, 19, 1, 0, 0, 0,112,177,231, 19, 1, 0, 0, 0, - 0,179,231, 19, 1, 0, 0, 0,192,181,231, 19, 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,184,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 96,185,231, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 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,167, 2, 0, 0, - 85, 0, 0, 0,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, - 96,185,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,192,186,231, 19, 1, 0, 0, 0, 0,184,231, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, 0, 0, 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, -192,186,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32,188,231, 19, 1, 0, 0, 0, 96,185,231, 19, 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,167, 2, 0, 0, -111, 0, 0, 0,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, - 32,188,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128,189,231, 19, 1, 0, 0, 0,192,186,231, 19, 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, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, - 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,167, 2, 0, 0, -111, 0, 0, 0, 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, -128,189,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,188,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -111, 0, 0, 0, 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, 48, 30, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, - 48, 30, 5, 3, 1, 0, 0, 0,158, 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, 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,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191, -253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181, -195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63, 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, - 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,151,254, 71, 66, 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,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191, -253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 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, 0, 0,172,148, 0, 59, 0, 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, @@ -1241,88 +1036,25 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0,224,190,231, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, - 0,195,231, 19, 1, 0, 0, 0, 32,183,231, 19, 1, 0, 0, 0, 0,184,231, 19, 1, 0, 0, 0,128,189,231, 19, 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,176, 5, 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, 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, 64,192,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,160,193,231, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, - 26, 0,152, 4, 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,151, 4, 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, -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,160,193,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64,192,231, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0,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, 0,195,231, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -224,190,231, 19, 1, 0, 0, 0, 64,192,231, 19, 1, 0, 0, 0,160,193,231, 19, 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, 0,196,231, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -176,165,231, 19, 1, 0, 0, 0,144, 47,231, 19, 1, 0, 0, 0, 48, 44,231, 19, 1, 0, 0, 0,112, 43,231, 19, 1, 0, 0, 0, -240, 47,231, 19, 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,160,199,231, 19, 1, 0, 0, 0, - 64,209,231, 19, 1, 0, 0, 0,224,196,231, 19, 1, 0, 0, 0, 64,198,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,196,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 64,198,231, 19, 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, -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, - 64,198,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,196,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 34, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, - 48, 34, 5, 3, 1, 0, 0, 0,158, 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, 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, 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, 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, @@ -1330,258 +1062,919 @@ 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,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,160,199,231, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, -192,203,231, 19, 1, 0, 0, 0, 0, 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,176, 5, 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, 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, 0,201,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 96,202,231, 19, 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, 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,132, 1, - 26, 0,132, 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, -253, 5, 0, 0,128, 7, 0, 0,249, 3, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -132, 1, 26, 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,202,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,201,231, 19, 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, 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,132, 1, -208, 0,115, 1,190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -253, 5, 0, 0,128, 7, 0, 0, 41, 3, 0, 0,248, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -132, 1,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,192,203,231, 19, 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 64,209,231, 19, 1, 0, 0, 0, -160,199,231, 19, 1, 0, 0, 0, 0,201,231, 19, 1, 0, 0, 0, 96,202,231, 19, 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, 32,205,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 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, 32,205,231, 19, 1, 0, 0, 0,220, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, -112,205,231, 19, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,112,205,231, 19, 1, 0, 0, 0,219, 0, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 48,154, 5, 3, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48,154, 5, 3, 1, 0, 0, 0, - 20, 0, 0, 0, 1, 0, 1, 0, 48,154, 5, 3, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48,154, 5, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 48,166, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,182, 5, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,112,193,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,194, 5, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,112,191,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,188, 5, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 48,162, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,176, 5, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0,128,185,234, 19, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,206,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,224,207,231, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,195, 0, 26, 0,195, 0, 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, 53, 4, 0, 0,247, 4, 0, 0, 69, 2, 0, 0, 94, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,207,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,206,231, 19, 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, 6, 0,195, 0,156, 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, 53, 4, 0, 0,247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,209,231, 19, 1, 0, 0, 0, -164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,203,231, 19, 1, 0, 0, 0,128,206,231, 19, 1, 0, 0, 0, -224,207,231, 19, 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, 83, 78, 0, 0,208, 0, 0, 0, 0,211,231, 19, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, -192,100,232, 19, 1, 0, 0, 0,128, 40,231, 19, 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, 16,212,231, 19, 1, 0, 0, 0,240,216,231, 19, 1, 0, 0, 0, 80,217,231, 19, 1, 0, 0, 0, - 48,225,231, 19, 1, 0, 0, 0,144,225,231, 19, 1, 0, 0, 0,144, 71,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48,154, 5, 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, 32, 0, 0, 0, 16,212,231, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,112,212,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 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,212,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, -208,212,231, 19, 1, 0, 0, 0, 16,212,231, 19, 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,208,212,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,213,231, 19, 1, 0, 0, 0, -112,212,231, 19, 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, - 48,213,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,213,231, 19, 1, 0, 0, 0,208,212,231, 19, 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,144,213,231, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,240,213,231, 19, 1, 0, 0, 0, 48,213,231, 19, 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,240,213,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, - 80,214,231, 19, 1, 0, 0, 0,144,213,231, 19, 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, 80,214,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,214,231, 19, 1, 0, 0, 0, -240,213,231, 19, 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, -176,214,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16,215,231, 19, 1, 0, 0, 0, 80,214,231, 19, 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, 16,215,231, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,112,215,231, 19, 1, 0, 0, 0,176,214,231, 19, 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,112,215,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, -208,215,231, 19, 1, 0, 0, 0, 16,215,231, 19, 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,208,215,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,216,231, 19, 1, 0, 0, 0, -112,215,231, 19, 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, - 48,216,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,216,231, 19, 1, 0, 0, 0,208,215,231, 19, 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,144,216,231, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,240,216,231, 19, 1, 0, 0, 0, 48,216,231, 19, 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,240,216,231, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144,216,231, 19, 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, 80,217,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,217,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,112,212,231, 19, 1, 0, 0, 0,208,212,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,176,217,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16,218,231, 19, 1, 0, 0, 0, - 80,217,231, 19, 1, 0, 0, 0,112,212,231, 19, 1, 0, 0, 0,144,213,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 16,218,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112,218,231, 19, 1, 0, 0, 0, -176,217,231, 19, 1, 0, 0, 0,208,212,231, 19, 1, 0, 0, 0,240,213,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,112,218,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208,218,231, 19, 1, 0, 0, 0, - 16,218,231, 19, 1, 0, 0, 0,144,213,231, 19, 1, 0, 0, 0,240,213,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,208,218,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,219,231, 19, 1, 0, 0, 0, -112,218,231, 19, 1, 0, 0, 0, 48,213,231, 19, 1, 0, 0, 0,176,214,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 48,219,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144,219,231, 19, 1, 0, 0, 0, -208,218,231, 19, 1, 0, 0, 0, 80,214,231, 19, 1, 0, 0, 0,176,214,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,144,219,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240,219,231, 19, 1, 0, 0, 0, - 48,219,231, 19, 1, 0, 0, 0,240,213,231, 19, 1, 0, 0, 0, 16,215,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,240,219,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80,220,231, 19, 1, 0, 0, 0, -144,219,231, 19, 1, 0, 0, 0,144,213,231, 19, 1, 0, 0, 0, 16,215,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 80,220,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,220,231, 19, 1, 0, 0, 0, -240,219,231, 19, 1, 0, 0, 0, 80,214,231, 19, 1, 0, 0, 0, 16,215,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,176,220,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16,221,231, 19, 1, 0, 0, 0, - 80,220,231, 19, 1, 0, 0, 0,240,213,231, 19, 1, 0, 0, 0,176,214,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 16,221,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112,221,231, 19, 1, 0, 0, 0, -176,220,231, 19, 1, 0, 0, 0,144,213,231, 19, 1, 0, 0, 0,112,215,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,112,221,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208,221,231, 19, 1, 0, 0, 0, - 16,221,231, 19, 1, 0, 0, 0, 16,215,231, 19, 1, 0, 0, 0,208,215,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,208,221,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,222,231, 19, 1, 0, 0, 0, -112,221,231, 19, 1, 0, 0, 0,112,215,231, 19, 1, 0, 0, 0,208,215,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 48,222,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144,222,231, 19, 1, 0, 0, 0, -208,221,231, 19, 1, 0, 0, 0,112,215,231, 19, 1, 0, 0, 0, 48,216,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,144,222,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240,222,231, 19, 1, 0, 0, 0, - 48,222,231, 19, 1, 0, 0, 0,208,215,231, 19, 1, 0, 0, 0, 48,216,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,240,222,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80,223,231, 19, 1, 0, 0, 0, -144,222,231, 19, 1, 0, 0, 0, 16,212,231, 19, 1, 0, 0, 0,144,216,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 80,223,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,223,231, 19, 1, 0, 0, 0, -240,222,231, 19, 1, 0, 0, 0,144,216,231, 19, 1, 0, 0, 0,240,216,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,176,223,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16,224,231, 19, 1, 0, 0, 0, - 80,223,231, 19, 1, 0, 0, 0, 48,213,231, 19, 1, 0, 0, 0,240,216,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 16,224,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112,224,231, 19, 1, 0, 0, 0, -176,223,231, 19, 1, 0, 0, 0, 80,214,231, 19, 1, 0, 0, 0,240,216,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,112,224,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208,224,231, 19, 1, 0, 0, 0, - 16,224,231, 19, 1, 0, 0, 0, 48,216,231, 19, 1, 0, 0, 0,144,216,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0,208,224,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,225,231, 19, 1, 0, 0, 0, -112,224,231, 19, 1, 0, 0, 0,208,215,231, 19, 1, 0, 0, 0,240,216,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 0, 0, 0, 48,225,231, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208,224,231, 19, 1, 0, 0, 0, 16,212,231, 19, 1, 0, 0, 0,112,215,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,144,225,231, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 48,229,231, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144,213,231, 19, 1, 0, 0, 0,112,212,231, 19, 1, 0, 0, 0,208,212,231, 19, 1, 0, 0, 0, -240,213,231, 19, 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, 64,100,232, 19, 1, 0, 0, 0, - 64,100,232, 19, 1, 0, 0, 0,112,226,231, 19, 1, 0, 0, 0,208,227,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,226,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,208,227,231, 19, 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, -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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 62,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 64, 64,232, 19, 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, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 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,167, 2, 0, 0, 85, 0, 0, 0,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, 64, 64,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,160, 65,232, 19, 1, 0, 0, 0,224, 62,232, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 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,160, 65,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 67,232, 19, 1, 0, 0, 0, 64, 64,232, 19, 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,167, 2, 0, 0,111, 0, 0, 0,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, 0, 67,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 96, 68,232, 19, 1, 0, 0, 0,160, 65,232, 19, 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, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 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,167, 2, 0, 0,111, 0, 0, 0, 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, 96, 68,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,111, 0, 0, 0, 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, 48,254, 4, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48,254, 4, 3, 1, 0, 0, 0,158, 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, 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,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, + 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65, +214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181,195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63, + 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,159, 87,135,195,205,209,166, 67, +151,254, 71, 66, 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,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, + 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 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, 0, 0,172,148, 0, 59, 0, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,192, 69,232, 19, 1, 0, 0, 0,159, 0, 0, 0, + 1, 0, 0, 0,240, 73,232, 19, 1, 0, 0, 0, 48,228, 4, 3, 1, 0, 0, 0,224, 62,232, 19, 1, 0, 0, 0, 96, 68,232, 19, + 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, 22, 6, 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, 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, 48, 71,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,144, 72,232, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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, 72,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 71,232, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0, +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,240, 73,232, 19, + 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 69,232, 19, 1, 0, 0, 0, 48, 71,232, 19, + 1, 0, 0, 0,144, 72,232, 19, 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,240, 74,232, 19, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,112,104,232, 19, 1, 0, 0, 0,208, 50,232, 19, 1, 0, 0, 0,160,212,231, 19, + 1, 0, 0, 0,224,208,231, 19, 1, 0, 0, 0, 64,212,231, 19, 1, 0, 0, 0, 0,213,231, 19, 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,240, 79,232, 19, 1, 0, 0, 0,112,103,232, 19, 1, 0, 0, 0,208, 75,232, 19, + 1, 0, 0, 0,144, 78,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 75,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 48, 77,232, 19, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 77,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,144, 78,232, 19, 1, 0, 0, 0,208, 75,232, 19, 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, +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,144, 78,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 77,232, 19, 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,240, 79,232, 19, 1, 0, 0, 0, 23, 1, 0, 0, + 1, 0, 0, 0,176, 86,232, 19, 1, 0, 0, 0, 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, 0, 6, 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, 3, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 81,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,144, 82,232, 19, 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, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 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,159, 3, 0, 0, 49, 2, 0, 0, 74, 2, 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,144, 82,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,240, 83,232, 19, 1, 0, 0, 0, 48, 81,232, 19, 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, + 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0,200, 1,200, 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,216, 0, 0, 0, 75, 2, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, + 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,240, 83,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 80, 85,232, 19, 1, 0, 0, 0,144, 82,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,159, 3, 0, 0, 75, 2, 0, 0, 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, 80, 85,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 83,232, 19, 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, + 0, 0, 0, 0, 0, 0, 0, 4, 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,217, 0, 0, 0,159, 3, 0, 0, 75, 2, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, + 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,176, 86,232, 19, 1, 0, 0, 0,163, 0, 0, 0, + 1, 0, 0, 0, 48, 2, 5, 3, 1, 0, 0, 0,240, 79,232, 19, 1, 0, 0, 0, 48, 81,232, 19, 1, 0, 0, 0, 80, 85,232, 19, + 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,224, 87,232, 19, 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,224, 87,232, 19, 1, 0, 0, 0, 22, 1, 0, 0, 1, 0, 0, 0, 48, 0, 6, 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, 40, 1, 0, 0, 64, 88,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,160, 89,232, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 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,159, 3, 0, 0, 85, 0, 0, 0, +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,160, 89,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 91,232, 19, 1, 0, 0, 0, 64, 88,232, 19, 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, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,189, 0,164, 3,172, 0,146, 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,111, 0, 0, 0, + 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, 0, 91,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 89,232, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,111, 0, 0, 0, + 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,192, 24, 0, 0, 48, 2, 5, 3, + 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 64, 99,232, 19, 1, 0, 0, 0,176, 86,232, 19, 1, 0, 0, 0, 64, 88,232, 19, + 1, 0, 0, 0, 0, 91,232, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 92,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,192, 93,232, 19, 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, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 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,167, 2, 0, 0, 85, 0, 0, 0,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,192, 93,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 32, 95,232, 19, 1, 0, 0, 0, 96, 92,232, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 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, 32, 95,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,128, 96,232, 19, 1, 0, 0, 0,192, 93,232, 19, 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,167, 2, 0, 0,111, 0, 0, 0,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,128, 96,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,224, 97,232, 19, 1, 0, 0, 0, 32, 95,232, 19, 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, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 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,167, 2, 0, 0,111, 0, 0, 0, 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, 97,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 96,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,111, 0, 0, 0, 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, 48, 28, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48, 28, 5, 3, 1, 0, 0, 0,158, 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, 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,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, + 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65, +214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181,195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63, + 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,159, 87,135,195,205,209,166, 67, +151,254, 71, 66, 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,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, + 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 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, 0, 0,172,148, 0, 59, 0, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, 64, 99,232, 19, 1, 0, 0, 0,159, 0, 0, 0, + 1, 0, 0, 0,112,103,232, 19, 1, 0, 0, 0, 48, 2, 5, 3, 1, 0, 0, 0, 96, 92,232, 19, 1, 0, 0, 0,224, 97,232, 19, + 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, 22, 6, 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, 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,176,100,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 16,102,232, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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, 16,102,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,100,232, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0, +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,112,103,232, 19, + 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 99,232, 19, 1, 0, 0, 0,176,100,232, 19, + 1, 0, 0, 0, 16,102,232, 19, 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,112,104,232, 19, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 74,232, 19, 1, 0, 0, 0, 96,213,231, 19, + 1, 0, 0, 0, 0,210,231, 19, 1, 0, 0, 0, 64,209,231, 19, 1, 0, 0, 0,192,213,231, 19, 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, 16,108,232, 19, 1, 0, 0, 0,192,117,232, 19, 1, 0, 0, 0, 80,105,232, 19, + 1, 0, 0, 0,176,106,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,105,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,176,106,232, 19, 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,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,176,106,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,105,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48, 32, 5, 3, 1, 0, 0, 0,158, 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, 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, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, -208,227,231, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,226,231, 19, 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,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,229,231, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,240,237,231, 19, 1, 0, 0, 0,144,225,231, 19, 1, 0, 0, 0, -240,216,231, 19, 1, 0, 0, 0, 80,214,231, 19, 1, 0, 0, 0,176,214,231, 19, 1, 0, 0, 0, 48,213,231, 19, 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,208,232,231, 19, 1, 0, 0, 0,144,236,231, 19, 1, 0, 0, 0, - 16,230,231, 19, 1, 0, 0, 0,112,231,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,230,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,112,231,231, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,231,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,230,231, 19, 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, 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,208,232,231, 19, 1, 0, 0, 0, -174, 0, 0, 0, 1, 0, 0, 0,144,236,231, 19, 1, 0, 0, 0, 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,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, 16,108,232, 19, 1, 0, 0, 0,159, 0, 0, 0, + 1, 0, 0, 0, 64,112,232, 19, 1, 0, 0, 0, 0, 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, 22, 6, 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, 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,128,109,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224,110,232, 19, 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, 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,132, 1, 26, 0,132, 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,253, 5, 0, 0,128, 7, 0, 0,249, 3, 0, 0, + 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 1, 26, 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,224,110,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,109,232, 19, 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, 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,132, 1,208, 0,115, 1,190, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 5, 0, 0,128, 7, 0, 0, 41, 3, 0, 0, +248, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 1,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,233,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 48,235,231, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 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, 87, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64,112,232, 19, + 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0,192,117,232, 19, 1, 0, 0, 0, 16,108,232, 19, 1, 0, 0, 0,128,109,232, 19, + 1, 0, 0, 0,224,110,232, 19, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48,235,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,233,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,113,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,160,113,232, 19, + 1, 0, 0, 0,220, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,240,113,232, 19, 1, 0, 0, 0, 68, 65, 84, 65, +208, 0, 0, 0,240,113,232, 19, 1, 0, 0, 0,219, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 0, 6, 3, + 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 0, 6, 3, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 0, 6, 3, + 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 0, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 12, 6, 3, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 28, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,100,235, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 40, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64, 98,235, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 34, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 8, 6, 3, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 22, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 80, 92,235, 19, + 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,115,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 96,116,232, 19, + 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, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,195, 0, 26, 0,195, 0, 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, 53, 4, 0, 0,247, 4, 0, 0, 69, 2, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,195, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 38, 5, 3, 1, 0, 0, 0, -158, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,116,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,115,232, 19, 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, + 6, 0,195, 0,156, 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, 53, 4, 0, 0,247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,117,232, 19, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64,112,232, 19, 1, 0, 0, 0, 0,115,232, 19, 1, 0, 0, 0, 96,116,232, 19, 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, 83, 78, 0, 0, +208, 0, 0, 0,128,119,232, 19, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176, 8,233, 19, 1, 0, 0, 0, 80,206,231, 19, + 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,144,120,232, 19, + 1, 0, 0, 0,112,125,232, 19, 1, 0, 0, 0,208,125,232, 19, 1, 0, 0, 0,176,133,232, 19, 1, 0, 0, 0, 16,134,232, 19, + 1, 0, 0, 0, 80,236,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 6, 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, 32, 0, 0, 0,144,120,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,120,232, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 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,240,120,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,121,232, 19, 1, 0, 0, 0,144,120,232, 19, + 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,121,232, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,121,232, 19, 1, 0, 0, 0,240,120,232, 19, 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,121,232, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 16,122,232, 19, 1, 0, 0, 0, 80,121,232, 19, 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, 16,122,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112,122,232, 19, + 1, 0, 0, 0,176,121,232, 19, 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,112,122,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,122,232, 19, 1, 0, 0, 0, 16,122,232, 19, + 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,208,122,232, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,123,232, 19, 1, 0, 0, 0,112,122,232, 19, 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, 48,123,232, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,144,123,232, 19, 1, 0, 0, 0,208,122,232, 19, 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,144,123,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,123,232, 19, + 1, 0, 0, 0, 48,123,232, 19, 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,240,123,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,124,232, 19, 1, 0, 0, 0,144,123,232, 19, + 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, 80,124,232, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,124,232, 19, 1, 0, 0, 0,240,123,232, 19, 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,176,124,232, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 16,125,232, 19, 1, 0, 0, 0, 80,124,232, 19, 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, 16,125,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112,125,232, 19, + 1, 0, 0, 0,176,124,232, 19, 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,112,125,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,125,232, 19, + 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,208,125,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,126,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,120,232, 19, + 1, 0, 0, 0, 80,121,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,126,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144,126,232, 19, 1, 0, 0, 0,208,125,232, 19, 1, 0, 0, 0,240,120,232, 19, + 1, 0, 0, 0, 16,122,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,126,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240,126,232, 19, 1, 0, 0, 0, 48,126,232, 19, 1, 0, 0, 0, 80,121,232, 19, + 1, 0, 0, 0,112,122,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,126,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80,127,232, 19, 1, 0, 0, 0,144,126,232, 19, 1, 0, 0, 0, 16,122,232, 19, + 1, 0, 0, 0,112,122,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,127,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,127,232, 19, 1, 0, 0, 0,240,126,232, 19, 1, 0, 0, 0,176,121,232, 19, + 1, 0, 0, 0, 48,123,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,127,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16,128,232, 19, 1, 0, 0, 0, 80,127,232, 19, 1, 0, 0, 0,208,122,232, 19, + 1, 0, 0, 0, 48,123,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,128,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112,128,232, 19, 1, 0, 0, 0,176,127,232, 19, 1, 0, 0, 0,112,122,232, 19, + 1, 0, 0, 0,144,123,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,128,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208,128,232, 19, 1, 0, 0, 0, 16,128,232, 19, 1, 0, 0, 0, 16,122,232, 19, + 1, 0, 0, 0,144,123,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,128,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,129,232, 19, 1, 0, 0, 0,112,128,232, 19, 1, 0, 0, 0,208,122,232, 19, + 1, 0, 0, 0,144,123,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,129,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144,129,232, 19, 1, 0, 0, 0,208,128,232, 19, 1, 0, 0, 0,112,122,232, 19, + 1, 0, 0, 0, 48,123,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,129,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240,129,232, 19, 1, 0, 0, 0, 48,129,232, 19, 1, 0, 0, 0, 16,122,232, 19, + 1, 0, 0, 0,240,123,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,129,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80,130,232, 19, 1, 0, 0, 0,144,129,232, 19, 1, 0, 0, 0,144,123,232, 19, + 1, 0, 0, 0, 80,124,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,130,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,130,232, 19, 1, 0, 0, 0,240,129,232, 19, 1, 0, 0, 0,240,123,232, 19, + 1, 0, 0, 0, 80,124,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,130,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16,131,232, 19, 1, 0, 0, 0, 80,130,232, 19, 1, 0, 0, 0,240,123,232, 19, + 1, 0, 0, 0,176,124,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,131,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112,131,232, 19, 1, 0, 0, 0,176,130,232, 19, 1, 0, 0, 0, 80,124,232, 19, + 1, 0, 0, 0,176,124,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,131,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208,131,232, 19, 1, 0, 0, 0, 16,131,232, 19, 1, 0, 0, 0,144,120,232, 19, + 1, 0, 0, 0, 16,125,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,131,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,132,232, 19, 1, 0, 0, 0,112,131,232, 19, 1, 0, 0, 0, 16,125,232, 19, + 1, 0, 0, 0,112,125,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,132,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144,132,232, 19, 1, 0, 0, 0,208,131,232, 19, 1, 0, 0, 0,176,121,232, 19, + 1, 0, 0, 0,112,125,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,132,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240,132,232, 19, 1, 0, 0, 0, 48,132,232, 19, 1, 0, 0, 0,208,122,232, 19, + 1, 0, 0, 0,112,125,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,132,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80,133,232, 19, 1, 0, 0, 0,144,132,232, 19, 1, 0, 0, 0,176,124,232, 19, + 1, 0, 0, 0, 16,125,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,133,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,133,232, 19, 1, 0, 0, 0,240,132,232, 19, 1, 0, 0, 0, 80,124,232, 19, + 1, 0, 0, 0,112,125,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,133,232, 19, + 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,133,232, 19, 1, 0, 0, 0,144,120,232, 19, + 1, 0, 0, 0,240,123,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 16,134,232, 19, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176,137,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,122,232, 19, + 1, 0, 0, 0,240,120,232, 19, 1, 0, 0, 0, 80,121,232, 19, 1, 0, 0, 0,112,122,232, 19, 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, 48, 8,233, 19, 1, 0, 0, 0, 48, 8,233, 19, 1, 0, 0, 0,240,134,232, 19, + 1, 0, 0, 0, 80,136,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,134,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 80,136,232, 19, 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,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, 80,136,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,134,232, 19, 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,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,176,137,232, 19, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,128,146,232, 19, 1, 0, 0, 0, 16,134,232, 19, 1, 0, 0, 0,112,125,232, 19, 1, 0, 0, 0,208,122,232, 19, + 1, 0, 0, 0, 48,123,232, 19, 1, 0, 0, 0,176,121,232, 19, 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, 80,141,232, 19, 1, 0, 0, 0, 16,145,232, 19, 1, 0, 0, 0,144,138,232, 19, 1, 0, 0, 0,240,139,232, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,138,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,240,139,232, 19, + 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,139,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,144,138,232, 19, 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, 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, 80,141,232, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 16,145,232, 19, + 1, 0, 0, 0, 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, 80,142,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,176,143,232, 19, + 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, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0, 88, 6, 26, 0, 88, 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, 87, 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, 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,176,143,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80,142,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 48, 36, 5, 3, + 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48, 36, 5, 3, 1, 0, 0, 0,158, 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, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, -184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, - 98,127,249, 67,129,255, 71, 66, 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,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,128, 63, 0, 0,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, 0, 0, 0, 0, 0, -184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1590,253 +1983,255 @@ 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, - 68, 65, 84, 65, 32, 1, 0, 0,144,236,231, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208,232,231, 19, 1, 0, 0, 0,208,233,231, 19, 1, 0, 0, 0, 48,235,231, 19, 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,176, 5, 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, 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, -240,237,231, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64, 13,232, 19, 1, 0, 0, 0, 48,229,231, 19, 1, 0, 0, 0, - 80,214,231, 19, 1, 0, 0, 0, 16,215,231, 19, 1, 0, 0, 0,240,213,231, 19, 1, 0, 0, 0,176,214,231, 19, 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, 48, 1,232, 19, 1, 0, 0, 0,224, 11,232, 19, 1, 0, 0, 0, -208,238,231, 19, 1, 0, 0, 0, 48,240,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,238,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 48,240,231, 19, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,240,231, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,238,231, 19, 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, -144,241,231, 19, 1, 0, 0, 0,160,255,231, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,241,231, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 32,243,231, 19, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,243,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,244,231, 19, 1, 0, 0, 0, -144,241,231, 19, 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, 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, 68, 65, 84, 65, 48, 1, 0, 0, 16,145,232, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80,141,232, 19, 1, 0, 0, 0, 80,142,232, 19, 1, 0, 0, 0,176,143,232, 19, 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, 22, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,176,244,231, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 64,246,231, 19, 1, 0, 0, 0, 32,243,231, 19, 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, 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,146,232, 19, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,224,177,232, 19, 1, 0, 0, 0,176,137,232, 19, 1, 0, 0, 0,208,122,232, 19, 1, 0, 0, 0,144,123,232, 19, + 1, 0, 0, 0,112,122,232, 19, 1, 0, 0, 0, 48,123,232, 19, 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,192,165,232, 19, 1, 0, 0, 0,112,176,232, 19, 1, 0, 0, 0, 96,147,232, 19, 1, 0, 0, 0,192,148,232, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,147,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,192,148,232, 19, + 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, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,148,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 96,147,232, 19, 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, 32,150,232, 19, 1, 0, 0, 0, 48,164,232, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,150,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,151,232, 19, + 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,176,151,232, 19, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,153,232, 19, 1, 0, 0, 0, 32,150,232, 19, 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,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, 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, 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, - 68, 65, 84, 65, 88, 1, 0, 0, 64,246,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,247,231, 19, 1, 0, 0, 0, -176,244,231, 19, 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,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, 68, 65, 84, 65, 88, 1, 0, 0, 64,153,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,154,232, 19, + 1, 0, 0, 0,176,151,232, 19, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0,208,247,231, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 96,249,231, 19, 1, 0, 0, 0, 64,246,231, 19, 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, 68, 65, 84, 65, 88, 1, 0, 0,208,154,232, 19, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,156,232, 19, 1, 0, 0, 0, 64,153,232, 19, 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, 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, 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, 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, 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,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, - 68, 65, 84, 65, 88, 1, 0, 0, 96,249,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,250,231, 19, 1, 0, 0, 0, -208,247,231, 19, 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, 68, 65, 84, 65, 88, 1, 0, 0, 96,156,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,157,232, 19, + 1, 0, 0, 0,208,154,232, 19, 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, 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,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, 68, 65, 84, 65, 88, 1, 0, 0,240,157,232, 19, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,159,232, 19, 1, 0, 0, 0, 96,156,232, 19, 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, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240,250,231, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,128,252,231, 19, 1, 0, 0, 0, 96,249,231, 19, 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, 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, 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, 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, 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,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, 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, 68, 65, 84, 65, 88, 1, 0, 0,128,159,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,161,232, 19, + 1, 0, 0, 0,240,157,232, 19, 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, 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, - 68, 65, 84, 65, 88, 1, 0, 0,128,252,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,254,231, 19, 1, 0, 0, 0, -240,250,231, 19, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0, 16,161,232, 19, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,162,232, 19, 1, 0, 0, 0,128,159,232, 19, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0, 16,254,231, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,160,255,231, 19, 1, 0, 0, 0,128,252,231, 19, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0,160,162,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,164,232, 19, + 1, 0, 0, 0, 16,161,232, 19, 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, 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, 48,164,232, 19, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,162,232, 19, 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, - 68, 65, 84, 65, 88, 1, 0, 0,160,255,231, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16,254,231, 19, 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, 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, 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, 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,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, 68, 65, 84, 65, 0, 1, 0, 0, 48, 1,232, 19, 1, 0, 0, 0, -164, 0, 0, 0, 1, 0, 0, 0,240, 7,232, 19, 1, 0, 0, 0, 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, 68, 65, 84, 65, 0, 1, 0, 0,192,165,232, 19, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,128,172,232, 19, + 1, 0, 0, 0, 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, 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,112, 2,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -208, 3,232, 19, 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, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,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, 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,167,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 96,168,232, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, + 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0, +128, 7, 0, 0, 85, 0, 0, 0,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, 68, 65, 84, 65, 40, 1, 0, 0,208, 3,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 48, 5,232, 19, 1, 0, 0, 0,112, 2,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,168,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,192,169,232, 19, 1, 0, 0, 0, 0,167,232, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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,112, 0, 0, 0,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,128, 7, 0, 0,128, 7, 0, 0,112, 0, 0, 0,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, 68, 65, 84, 65, + 40, 1, 0, 0,192,169,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32,171,232, 19, 1, 0, 0, 0, 96,168,232, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 5,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -144, 6,232, 19, 1, 0, 0, 0,208, 3,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, + 40, 1, 0, 0, 32,171,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,169,232, 19, + 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, 8, 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,157, 5, 0, 0, +128, 7, 0, 0,112, 0, 0, 0,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, 7, 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, 68, 65, 84, 65, +248, 0, 0, 0,128,172,232, 19, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0,112,176,232, 19, 1, 0, 0, 0,192,165,232, 19, + 1, 0, 0, 0, 0,167,232, 19, 1, 0, 0, 0, 32,171,232, 19, 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, 68, 65, 84, 65, 40, 1, 0, 0,144, 6,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48, 5,232, 19, 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, 8, 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,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,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,248, 0, 0, 0,240, 7,232, 19, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, -224, 11,232, 19, 1, 0, 0, 0, 48, 1,232, 19, 1, 0, 0, 0,112, 2,232, 19, 1, 0, 0, 0,144, 6,232, 19, 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, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 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,173,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 16,175,232, 19, 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, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 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, 89, 6, 0, 0,108, 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, 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, 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, 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, 9,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128, 10,232, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 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, 89, 6, 0, 0,108, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16,175,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,173,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 10,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 9,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 48, 40, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48, 40, 5, 3, 1, 0, 0, 0,158, 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, 0, 0, 0, 0, 0, 0, 32,193, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, + 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, + 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67, +129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, + 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, + 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 42, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, - 48, 42, 5, 3, 1, 0, 0, 0,158, 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, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, - 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1844,683 +2239,581 @@ 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, 48, 1, 0, 0,112,176,232, 19, 1, 0, 0, 0,159, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,172,232, 19, 1, 0, 0, 0,176,173,232, 19, 1, 0, 0, 0, 16,175,232, 19, + 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, 22, 6, 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, 68, 65, 84, 65, 32, 1, 0, 0,224, 11,232, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 7,232, 19, 1, 0, 0, 0, 32, 9,232, 19, 1, 0, 0, 0,128, 10,232, 19, 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,176, 5, 3, 1, 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,177,232, 19, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144,212,232, 19, 1, 0, 0, 0,128,146,232, 19, 1, 0, 0, 0, 16,125,232, 19, + 1, 0, 0, 0,176,124,232, 19, 1, 0, 0, 0, 80,124,232, 19, 1, 0, 0, 0,112,125,232, 19, 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,144,196,232, 19, 1, 0, 0, 0,144,211,232, 19, 1, 0, 0, 0,192,178,232, 19, + 1, 0, 0, 0, 48,195,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,178,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 32,180,232, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,180,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,128,181,232, 19, 1, 0, 0, 0,192,178,232, 19, 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,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,128,181,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,224,182,232, 19, 1, 0, 0, 0, 32,180,232, 19, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,182,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 48,195,232, 19, 1, 0, 0, 0,128,181,232, 19, 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,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, 64,184,232, 19, + 1, 0, 0, 0,160,193,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,184,232, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,208,185,232, 19, 1, 0, 0, 0, 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, 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,208,185,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,187,232, 19, 1, 0, 0, 0, 64,184,232, 19, + 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, 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, 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, 64, 13,232, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224, 47,232, 19, 1, 0, 0, 0, -240,237,231, 19, 1, 0, 0, 0,144,216,231, 19, 1, 0, 0, 0, 48,216,231, 19, 1, 0, 0, 0,208,215,231, 19, 1, 0, 0, 0, -240,216,231, 19, 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,240, 31,232, 19, 1, 0, 0, 0, -224, 46,232, 19, 1, 0, 0, 0, 32, 14,232, 19, 1, 0, 0, 0,144, 30,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 14,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128, 15,232, 19, 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, 68, 65, 84, 65, 88, 1, 0, 0, 96,187,232, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,240,188,232, 19, 1, 0, 0, 0,208,185,232, 19, 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, 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, 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, 0, 0, 0, 0, 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, 15,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224, 16,232, 19, 1, 0, 0, 0, 32, 14,232, 19, 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,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, -224, 16,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 64, 18,232, 19, 1, 0, 0, 0,128, 15,232, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 18,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,144, 30,232, 19, 1, 0, 0, 0,224, 16,232, 19, 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,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,160, 19,232, 19, 1, 0, 0, 0, 0, 29,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 19,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 21,232, 19, 1, 0, 0, 0, 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, 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, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0, 48, 21,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -192, 22,232, 19, 1, 0, 0, 0,160, 19,232, 19, 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, 68, 65, 84, 65, + 88, 1, 0, 0,240,188,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,190,232, 19, 1, 0, 0, 0, 96,187,232, 19, + 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, - 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,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,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, 68, 65, 84, 65, 88, 1, 0, 0,128,190,232, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0, 16,192,232, 19, 1, 0, 0, 0,240,188,232, 19, 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, 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, 22,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80, 24,232, 19, 1, 0, 0, 0, 48, 21,232, 19, 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, 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, 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, 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, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80, 24,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, -224, 25,232, 19, 1, 0, 0, 0,192, 22,232, 19, 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, 68, 65, 84, 65, + 88, 1, 0, 0, 16,192,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,193,232, 19, 1, 0, 0, 0,128,190,232, 19, + 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, 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, - 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, 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, 68, 65, 84, 65, 88, 1, 0, 0,160,193,232, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,192,232, 19, 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, 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, 25,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112, 27,232, 19, 1, 0, 0, 0, 80, 24,232, 19, 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, 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, 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,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, 68, 65, 84, 65, 88, 1, 0, 0,112, 27,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, - 0, 29,232, 19, 1, 0, 0, 0,224, 25,232, 19, 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, 68, 65, 84, 65, + 40, 1, 0, 0, 48,195,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,182,232, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 1, 3, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 29,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 27,232, 19, 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, 48, 44, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, +104, 3, 0, 0, 48, 44, 5, 3, 1, 0, 0, 0,158, 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, 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, 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,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,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, + 0, 0, 0, 0, 20, 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, 68, 65, 84, 65, 40, 1, 0, 0,144, 30,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 64, 18,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, + 3,236,234,190, 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, + 48, 1, 0, 0,144,196,232, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,192,200,232, 19, 1, 0, 0, 0, 0, 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, 22, 6, 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, 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, - 48, 46, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 46, 5, 3, 1, 0, 0, 0,158, 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, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0,198,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 96,199,232, 19, + 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, + 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,239, 2, 26, 0,239, 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, 1, 3, 0, 0,239, 5, 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,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, -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, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,199,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,198,232, 19, 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, + 0, 0,239, 2,122, 1,222, 2,104, 1, 0, 0, 0, 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,239, 5, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,192,200,232, 19, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0,160,207,232, 19, + 1, 0, 0, 0,144,196,232, 19, 1, 0, 0, 0, 0,198,232, 19, 1, 0, 0, 0, 96,199,232, 19, 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, 0, 6, 3, 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, 32,202,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128,203,232, 19, 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, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, + 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +239, 5, 0, 0, 85, 0, 0, 0,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, - 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, 31,232, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 16, 36,232, 19, 1, 0, 0, 0, 0, 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,176, 5, 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, 68, 65, 84, 65, + 40, 1, 0, 0,128,203,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224,204,232, 19, 1, 0, 0, 0, 32,202,232, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 33,232, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,176, 34,232, 19, 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, 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,239, 2, 26, 0,239, 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, 1, 3, 0, 0,239, 5, 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,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,176, 34,232, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 33,232, 19, 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, 0, 0,239, 2,122, 1,222, 2,104, 1, 0, 0, 0, 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,239, 5, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,239, 5, 0, 0, +239, 5, 0, 0,112, 0, 0, 0, 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,204,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 64,206,232, 19, 1, 0, 0, 0,128,203,232, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 36,232, 19, 1, 0, 0, 0, -175, 0, 0, 0, 1, 0, 0, 0,240, 42,232, 19, 1, 0, 0, 0,240, 31,232, 19, 1, 0, 0, 0, 80, 33,232, 19, 1, 0, 0, 0, -176, 34,232, 19, 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,154, 5, 3, 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,112, 37,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -208, 38,232, 19, 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, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,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, 7, 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, 68, 65, 84, 65, + 40, 1, 0, 0, 64,206,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,204,232, 19, + 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, 8, 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, 68, 65, 84, 65, 40, 1, 0, 0,208, 38,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 48, 40,232, 19, 1, 0, 0, 0,112, 37,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +239, 5, 0, 0,112, 0, 0, 0, 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, +248, 0, 0, 0,160,207,232, 19, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0,144,211,232, 19, 1, 0, 0, 0,192,200,232, 19, + 1, 0, 0, 0, 32,202,232, 19, 1, 0, 0, 0, 64,206,232, 19, 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,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 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, 40,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -144, 41,232, 19, 1, 0, 0, 0,208, 38,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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,208,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 48,210,232, 19, 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, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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,210,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,208,232, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0,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, 0, 0, 7, 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, 68, 65, 84, 65,200, 0, 0, 0,144,211,232, 19, 1, 0, 0, 0,174, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,207,232, 19, 1, 0, 0, 0,208,208,232, 19, 1, 0, 0, 0, 48,210,232, 19, + 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, 68, 65, 84, 65, 40, 1, 0, 0,144, 41,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48, 40,232, 19, 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, 8, 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,239, 5, 0, 0,112, 0, 0, 0, 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,248, 0, 0, 0,240, 42,232, 19, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, -224, 46,232, 19, 1, 0, 0, 0, 16, 36,232, 19, 1, 0, 0, 0,112, 37,232, 19, 1, 0, 0, 0,144, 41,232, 19, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,144,212,232, 19, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 80,236,232, 19, 1, 0, 0, 0,224,177,232, 19, 1, 0, 0, 0,240,123,232, 19, 1, 0, 0, 0, 16,122,232, 19, + 1, 0, 0, 0,144,123,232, 19, 1, 0, 0, 0, 80,124,232, 19, 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, 48,216,232, 19, 1, 0, 0, 0, 80,235,232, 19, 1, 0, 0, 0,112,213,232, 19, 1, 0, 0, 0,208,214,232, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,213,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,208,214,232, 19, + 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,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,208,214,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,112,213,232, 19, 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, 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, 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, 44,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128, 45,232, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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, 68, 65, 84, 65, 32, 1, 0, 0, 48,216,232, 19, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, 16,223,232, 19, + 1, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, -128, 45,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 44,232, 19, 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, 8, 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,151, 4, 0, 0, -127, 0, 0, 0,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, -224, 46,232, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 42,232, 19, 1, 0, 0, 0, - 32, 44,232, 19, 1, 0, 0, 0,128, 45,232, 19, 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, 48, 0, 6, 3, 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,144,217,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,240,218,232, 19, 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, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, + 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +239, 5, 0, 0, 85, 0, 0, 0,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,240,218,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 80,220,232, 19, 1, 0, 0, 0,144,217,232, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 47,232, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144, 71,232, 19, 1, 0, 0, 0, 64, 13,232, 19, 1, 0, 0, 0, -112,215,231, 19, 1, 0, 0, 0,144,213,231, 19, 1, 0, 0, 0, 16,215,231, 19, 1, 0, 0, 0,208,215,231, 19, 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,128, 51,232, 19, 1, 0, 0, 0,144, 70,232, 19, 1, 0, 0, 0, -192, 48,232, 19, 1, 0, 0, 0, 32, 50,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 48,232, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 32, 50,232, 19, 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,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, 50,232, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 48,232, 19, 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,239, 5, 0, 0, +239, 5, 0, 0,112, 0, 0, 0, 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, 80,220,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,176,221,232, 19, 1, 0, 0, 0,240,218,232, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 51,232, 19, 1, 0, 0, 0, -175, 0, 0, 0, 1, 0, 0, 0, 96, 58,232, 19, 1, 0, 0, 0, 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,154, 5, 3, 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, 52,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 64, 54,232, 19, 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, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,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, 7, 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, 68, 65, 84, 65, + 40, 1, 0, 0,176,221,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,220,232, 19, + 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, 8, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64, 54,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -160, 55,232, 19, 1, 0, 0, 0,224, 52,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +239, 5, 0, 0,112, 0, 0, 0, 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, +248, 0, 0, 0, 16,223,232, 19, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, 32,231,232, 19, 1, 0, 0, 0, 48,216,232, 19, + 1, 0, 0, 0,144,217,232, 19, 1, 0, 0, 0,176,221,232, 19, 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,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 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, 55,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 57,232, 19, 1, 0, 0, 0, 64, 54,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,224,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,160,225,232, 19, 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, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 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,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,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,160,225,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0,227,232, 19, 1, 0, 0, 0, 64,224,232, 19, 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,153, 2, 0, 0,153, 2, 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, 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, 0, 0, 7, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0,227,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 96,228,232, 19, 1, 0, 0, 0,160,225,232, 19, 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,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,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, 68, 65, 84, 65, 40, 1, 0, 0, 0, 57,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160, 55,232, 19, 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, 8, 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,239, 5, 0, 0,112, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,228,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,192,229,232, 19, 1, 0, 0, 0, 0,227,232, 19, 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, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 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,251, 1, 0, 0, 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, 68, 65, 84, 65,248, 0, 0, 0, 96, 58,232, 19, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, -112, 66,232, 19, 1, 0, 0, 0,128, 51,232, 19, 1, 0, 0, 0,224, 52,232, 19, 1, 0, 0, 0, 0, 57,232, 19, 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, 68, 65, 84, 65, 40, 1, 0, 0,192,229,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,228,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -144, 59,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,240, 60,232, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 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,153, 2, 0, 0,128, 7, 0, 0, -225, 1, 0, 0,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,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, 68, 65, 84, 65, 40, 1, 0, 0, -240, 60,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 80, 62,232, 19, 1, 0, 0, 0,144, 59,232, 19, 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,153, 2, 0, 0,153, 2, 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, 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, - 80, 62,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,176, 63,232, 19, 1, 0, 0, 0,240, 60,232, 19, 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,153, 2, 0, 0,128, 7, 0, 0, -251, 1, 0, 0,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, -176, 63,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 16, 65,232, 19, 1, 0, 0, 0, 80, 62,232, 19, 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, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, - 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, -251, 1, 0, 0, 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, - 16, 65,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 63,232, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 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, 48, 50, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, - 48, 50, 5, 3, 1, 0, 0, 0,158, 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, 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,169,203,131,191,222,160, 81,191,184,158, 81,191, -118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, - 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, - 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 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,169,203,131,191,222,160, 81,191,184,158, 81,191, -118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 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, 0, 0,218,210,190, 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, 48, 48, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48, 48, 5, 3, 1, 0, 0, 0,158, 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, 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,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, + 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65, +214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, + 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67, +151,254, 71, 66, 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,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, + 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 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, 0, 0,218,210,190, 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, 68, 65, 84, 65, 32, 1, 0, 0,112, 66,232, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, -144, 70,232, 19, 1, 0, 0, 0, 96, 58,232, 19, 1, 0, 0, 0,144, 59,232, 19, 1, 0, 0, 0, 16, 65,232, 19, 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,176, 5, 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, 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, 67,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 48, 69,232, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, - 26, 0,152, 4, 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,151, 4, 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, -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, 68, 65, 84, 65, 48, 1, 0, 0, 32,231,232, 19, 1, 0, 0, 0,159, 0, 0, 0, + 1, 0, 0, 0, 80,235,232, 19, 1, 0, 0, 0, 16,223,232, 19, 1, 0, 0, 0, 64,224,232, 19, 1, 0, 0, 0,192,229,232, 19, + 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, 22, 6, 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, 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,144,232,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,240,233,232, 19, 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, - 68, 65, 84, 65, 40, 1, 0, 0, 48, 69,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 67,232, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0,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, +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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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, - 68, 65, 84, 65,200, 0, 0, 0,144, 70,232, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, 66,232, 19, 1, 0, 0, 0,208, 67,232, 19, 1, 0, 0, 0, 48, 69,232, 19, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,233,232, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,232,232, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0, +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, 80,235,232, 19, + 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,231,232, 19, 1, 0, 0, 0,144,232,232, 19, + 1, 0, 0, 0,240,233,232, 19, 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, 1, 0, 0, 0, 6, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,144, 71,232, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -224, 47,232, 19, 1, 0, 0, 0, 16,212,231, 19, 1, 0, 0, 0,112,215,231, 19, 1, 0, 0, 0, 48,216,231, 19, 1, 0, 0, 0, -144,216,231, 19, 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,144, 76,232, 19, 1, 0, 0, 0, - 64, 99,232, 19, 1, 0, 0, 0,112, 72,232, 19, 1, 0, 0, 0, 48, 75,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 72,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,208, 73,232, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 73,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 48, 75,232, 19, 1, 0, 0, 0,112, 72,232, 19, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 80,236,232, 19, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,212,232, 19, 1, 0, 0, 0,144,120,232, 19, + 1, 0, 0, 0,240,123,232, 19, 1, 0, 0, 0,176,124,232, 19, 1, 0, 0, 0, 16,125,232, 19, 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, 48, 52, 5, 3, 1, 0, 0, 0, 48, 7,233, 19, 1, 0, 0, 0, 48,237,232, 19, + 1, 0, 0, 0,240,239,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,237,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,144,238,232, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,238,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,240,239,232, 19, 1, 0, 0, 0, 48,237,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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, - 48, 75,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 73,232, 19, 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, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,239,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,238,232, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -144, 76,232, 19, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 48, 80,232, 19, 1, 0, 0, 0, 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, 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, -112, 77,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,208, 78,232, 19, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 24, 0, 0, 48, 52, 5, 3, 1, 0, 0, 0,169, 0, 0, 0, + 1, 0, 0, 0, 16,244,232, 19, 1, 0, 0, 0, 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, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -208, 78,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 77,232, 19, 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, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 0, 3,122, 1,239, 2,104, 1, 0, 0, - 0, 0, 0, 0, 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,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,122, 1, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,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, 68, 65, 84, 65, 32, 1, 0, 0, - 48, 80,232, 19, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, 16, 87,232, 19, 1, 0, 0, 0,144, 76,232, 19, 1, 0, 0, 0, -112, 77,232, 19, 1, 0, 0, 0,208, 78,232, 19, 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,154, 5, 3, 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,144, 81,232, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,240, 82,232, 19, 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, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,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,240, 82,232, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 80, 84,232, 19, 1, 0, 0, 0,144, 81,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,239, 5, 0, 0,112, 0, 0, 0, 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, 80, 84,232, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,176, 85,232, 19, 1, 0, 0, 0,240, 82,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,176, 85,232, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 84,232, 19, 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, 8, 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,239, 5, 0, 0,112, 0, 0, 0, 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,248, 0, 0, 0, 16, 87,232, 19, 1, 0, 0, 0, -165, 0, 0, 0, 1, 0, 0, 0, 32, 95,232, 19, 1, 0, 0, 0, 48, 80,232, 19, 1, 0, 0, 0,144, 81,232, 19, 1, 0, 0, 0, -176, 85,232, 19, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 64, 88,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,160, 89,232, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, - 26, 0,232, 4, 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, -153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,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,160, 89,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 91,232, 19, 1, 0, 0, 0, - 64, 88,232, 19, 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, -153, 2, 0, 0,153, 2, 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, - 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, 0, 91,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 96, 92,232, 19, 1, 0, 0, 0, -160, 89,232, 19, 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, -153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,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, 96, 92,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,192, 93,232, 19, 1, 0, 0, 0, - 0, 91,232, 19, 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, 6, 0,180, 0, -122, 2,163, 0,104, 2, 0, 0, 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,251, 1, 0, 0, 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,192, 93,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96, 92,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 48, 54, 5, 3, 1, 0, 0, 0, - 68, 65, 84, 65, 88, 3, 0, 0, 48, 54, 5, 3, 1, 0, 0, 0,158, 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, 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,169,203,131,191, -222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63, -224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, - 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 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,169,203,131,191, -222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 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, 0, 0,218,210,190, 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, @@ -2529,322 +2822,49 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0, 32, 95,232, 19, 1, 0, 0, 0, -159, 0, 0, 0, 1, 0, 0, 0, 64, 99,232, 19, 1, 0, 0, 0, 16, 87,232, 19, 1, 0, 0, 0, 64, 88,232, 19, 1, 0, 0, 0, -192, 93,232, 19, 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,176, 5, 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, - 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,128, 96,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -224, 97,232, 19, 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, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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, 97,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 96,232, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0,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, 99,232, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32, 95,232, 19, 1, 0, 0, 0,128, 96,232, 19, 1, 0, 0, 0,224, 97,232, 19, 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,100,232, 19, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, -160,207,232, 19, 1, 0, 0, 0, 0,211,231, 19, 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,208,101,232, 19, 1, 0, 0, 0,240,105,232, 19, 1, 0, 0, 0, 80,106,232, 19, 1, 0, 0, 0, -176,112,232, 19, 1, 0, 0, 0, 16,113,232, 19, 1, 0, 0, 0,144,164,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48,154, 5, 3, 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,124,110, 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,101,232, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0, 48,102,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 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,102,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, -144,102,232, 19, 1, 0, 0, 0,208,101,232, 19, 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,102,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,102,232, 19, 1, 0, 0, 0, - 48,102,232, 19, 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,102,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,103,232, 19, 1, 0, 0, 0,144,102,232, 19, 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,103,232, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,176,103,232, 19, 1, 0, 0, 0,240,102,232, 19, 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,103,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, - 16,104,232, 19, 1, 0, 0, 0, 80,103,232, 19, 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,104,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112,104,232, 19, 1, 0, 0, 0, -176,103,232, 19, 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,104,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,104,232, 19, 1, 0, 0, 0, 16,104,232, 19, 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,104,232, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0, 48,105,232, 19, 1, 0, 0, 0,112,104,232, 19, 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,105,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, -144,105,232, 19, 1, 0, 0, 0,208,104,232, 19, 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,105,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,105,232, 19, 1, 0, 0, 0, - 48,105,232, 19, 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,105,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,105,232, 19, 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,106,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,176,106,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,102,232, 19, 1, 0, 0, 0, -144,102,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,106,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 16,107,232, 19, 1, 0, 0, 0, 80,106,232, 19, 1, 0, 0, 0, 48,102,232, 19, 1, 0, 0, 0, - 80,103,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,107,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,112,107,232, 19, 1, 0, 0, 0,176,106,232, 19, 1, 0, 0, 0,144,102,232, 19, 1, 0, 0, 0, -176,103,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,107,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,208,107,232, 19, 1, 0, 0, 0, 16,107,232, 19, 1, 0, 0, 0, 80,103,232, 19, 1, 0, 0, 0, -176,103,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,107,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 48,108,232, 19, 1, 0, 0, 0,112,107,232, 19, 1, 0, 0, 0,208,101,232, 19, 1, 0, 0, 0, - 16,104,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,108,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,144,108,232, 19, 1, 0, 0, 0,208,107,232, 19, 1, 0, 0, 0,240,102,232, 19, 1, 0, 0, 0, - 16,104,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,108,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,240,108,232, 19, 1, 0, 0, 0, 48,108,232, 19, 1, 0, 0, 0, 80,103,232, 19, 1, 0, 0, 0, -112,104,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,108,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 80,109,232, 19, 1, 0, 0, 0,144,108,232, 19, 1, 0, 0, 0,176,103,232, 19, 1, 0, 0, 0, -112,104,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,109,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,176,109,232, 19, 1, 0, 0, 0,240,108,232, 19, 1, 0, 0, 0, 16,104,232, 19, 1, 0, 0, 0, -208,104,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,109,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 16,110,232, 19, 1, 0, 0, 0, 80,109,232, 19, 1, 0, 0, 0,112,104,232, 19, 1, 0, 0, 0, -208,104,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,110,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,112,110,232, 19, 1, 0, 0, 0,176,109,232, 19, 1, 0, 0, 0,176,103,232, 19, 1, 0, 0, 0, - 48,105,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,110,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,208,110,232, 19, 1, 0, 0, 0, 16,110,232, 19, 1, 0, 0, 0,240,102,232, 19, 1, 0, 0, 0, - 48,105,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,110,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 48,111,232, 19, 1, 0, 0, 0,112,110,232, 19, 1, 0, 0, 0,208,104,232, 19, 1, 0, 0, 0, - 48,105,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,111,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,144,111,232, 19, 1, 0, 0, 0,208,110,232, 19, 1, 0, 0, 0,208,101,232, 19, 1, 0, 0, 0, -144,105,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,111,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,240,111,232, 19, 1, 0, 0, 0, 48,111,232, 19, 1, 0, 0, 0, 80,103,232, 19, 1, 0, 0, 0, -144,105,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,111,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 80,112,232, 19, 1, 0, 0, 0,144,111,232, 19, 1, 0, 0, 0,112,104,232, 19, 1, 0, 0, 0, -240,105,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,112,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,176,112,232, 19, 1, 0, 0, 0,240,111,232, 19, 1, 0, 0, 0, 16,104,232, 19, 1, 0, 0, 0, -240,105,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,112,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,112,232, 19, 1, 0, 0, 0,144,105,232, 19, 1, 0, 0, 0, -240,105,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 16,113,232, 19, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,176,116,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,103,232, 19, 1, 0, 0, 0, - 48,102,232, 19, 1, 0, 0, 0,144,102,232, 19, 1, 0, 0, 0,176,103,232, 19, 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, -112,148,231, 2, 1, 0, 0, 0, 32,207,232, 19, 1, 0, 0, 0, 32,207,232, 19, 1, 0, 0, 0,240,113,232, 19, 1, 0, 0, 0, - 80,115,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 75,239, 19, 1, 0, 0, 0, - 48, 86,193, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,113,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 80,115,232, 19, 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,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, - 80,150,231, 2, 1, 0, 0, 0, 48, 76, 6, 28, 1, 0, 0, 0, 48, 76, 6, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16,113,239, 19, 1, 0, 0, 0, 96,117,239, 19, 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,115,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240,113,232, 19, 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,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, -112,149,231, 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,176,116,232, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 80,141,232, 19, 1, 0, 0, 0, 16,113,232, 19, 1, 0, 0, 0, 16,104,232, 19, 1, 0, 0, 0,208,104,232, 19, 1, 0, 0, 0, - 48,105,232, 19, 1, 0, 0, 0,240,102,232, 19, 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, 96,144,231, 2, 1, 0, 0, 0, -240,135,232, 19, 1, 0, 0, 0,240,139,232, 19, 1, 0, 0, 0,144,117,232, 19, 1, 0, 0, 0,240,118,232, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,120,239, 19, 1, 0, 0, 0, 32,118,239, 19, 1, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,144,117,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,240,118,232, 19, 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, 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,144,147,231, 2, 1, 0, 0, 0, - 48, 24, 7, 28, 1, 0, 0, 0, 48, 24, 7, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96,122,239, 19, 1, 0, 0, 0,160,124,239, 19, 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,118,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144,117,232, 19, 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,176,218,206, 24, 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,145,231, 2, 1, 0, 0, 0, - 48,168, 6, 28, 1, 0, 0, 0, 48,246, 11, 28, 1, 0, 0, 0, 80,120,232, 19, 1, 0, 0, 0, 96,134,232, 19, 1, 0, 0, 0, -192,126,239, 19, 1, 0, 0, 0, 96,130,239, 19, 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,120,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,121,232, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 64,146,231, 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, 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, 74, 1, 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, 88, 1, 0, 0,224,121,232, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,112,123,232, 19, 1, 0, 0, 0, 80,120,232, 19, 1, 0, 0, 0, 0, 40, 34, 27, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 74, 1, 61, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,125,232, 19, 1, 0, 0, 0, -224,121,232, 19, 1, 0, 0, 0, 64, 42, 34, 27, 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,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, 68, 65, 84, 65, 88, 1, 0, 0, 0,125,232, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,144,126,232, 19, 1, 0, 0, 0,112,123,232, 19, 1, 0, 0, 0,128, 44, 34, 27, 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,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,144,126,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,128,232, 19, 1, 0, 0, 0, - 0,125,232, 19, 1, 0, 0, 0, 64, 47, 34, 27, 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, 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, 32,128,232, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,176,129,232, 19, 1, 0, 0, 0,144,126,232, 19, 1, 0, 0, 0, 0, 50, 34, 27, 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,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,176,129,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,131,232, 19, 1, 0, 0, 0, - 32,128,232, 19, 1, 0, 0, 0,192, 52, 34, 27, 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, 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, 64,131,232, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,208,132,232, 19, 1, 0, 0, 0,176,129,232, 19, 1, 0, 0, 0,160, 26, 34, 27, 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,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,208,132,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,134,232, 19, 1, 0, 0, 0, - 64,131,232, 19, 1, 0, 0, 0,176, 59, 34, 27, 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, 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, 96,134,232, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,132,232, 19, 1, 0, 0, 0,112, 62, 34, 27, 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,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,240,135,232, 19, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,240,139,232, 19, 1, 0, 0, 0, - 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, - 32, 9,209, 27, 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,137,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,144,138,232, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 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, 89, 6, 0, 0,108, 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, 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,138,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,137,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 58, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, - 48, 58, 5, 3, 1, 0, 0, 0,158, 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, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, - 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2853,88 +2873,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, 68, 65, 84, 65, 32, 1, 0, 0,240,139,232, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240,135,232, 19, 1, 0, 0, 0, 48,137,232, 19, 1, 0, 0, 0,144,138,232, 19, 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,176, 5, 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, 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,141,232, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16,150,232, 19, 1, 0, 0, 0, -176,116,232, 19, 1, 0, 0, 0,208,101,232, 19, 1, 0, 0, 0,144,105,232, 19, 1, 0, 0, 0,240,105,232, 19, 1, 0, 0, 0, - 16,104,232, 19, 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,112,106,231, 2, 1, 0, 0, 0,240,144,232, 19, 1, 0, 0, 0, -176,148,232, 19, 1, 0, 0, 0, 48,142,232, 19, 1, 0, 0, 0,144,143,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,132,239, 19, 1, 0, 0, 0,144,163,208, 27, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 48,142,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,144,143,232, 19, 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, 80,108,231, 2, 1, 0, 0, 0, 48,106, 7, 28, 1, 0, 0, 0, - 48,106, 7, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,138,239, 19, 1, 0, 0, 0, - 0,141,239, 19, 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,143,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,142,232, 19, 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, 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, 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,112,107,231, 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, 32,143,239, 19, 1, 0, 0, 0, - 48,148,239, 19, 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,144,232, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0,176,148,232, 19, 1, 0, 0, 0, 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, -240,145,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 80,147,232, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 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, 87, 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, 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, - 80,147,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,145,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 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, 48, 62, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, - 48, 62, 5, 3, 1, 0, 0, 0,158, 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, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,224, 91,138, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, - 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2943,821 +2897,557 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0,176,148,232, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240,144,232, 19, 1, 0, 0, 0,240,145,232, 19, 1, 0, 0, 0, 80,147,232, 19, 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,176, 5, 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, 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,150,232, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,144,164,232, 19, 1, 0, 0, 0, - 80,141,232, 19, 1, 0, 0, 0,208,104,232, 19, 1, 0, 0, 0,112,104,232, 19, 1, 0, 0, 0,176,103,232, 19, 1, 0, 0, 0, - 48,105,232, 19, 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,144,104,231, 2, 1, 0, 0, 0,176,153,232, 19, 1, 0, 0, 0, - 48,163,232, 19, 1, 0, 0, 0,240,150,232, 19, 1, 0, 0, 0, 80,152,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,208,149,239, 19, 1, 0, 0, 0,208, 20,128, 27, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -240,150,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 80,152,232, 19, 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, - 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,144,105,231, 2, 1, 0, 0, 0, 48, 20, 8, 28, 1, 0, 0, 0, - 48, 20, 8, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,151,239, 19, 1, 0, 0, 0, - 16,154,239, 19, 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,152,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,150,232, 19, 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,119,230, 2, 1, 0, 0, 0, 48, 48, 5, 28, 1, 0, 0, 0, - 48, 48, 5, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,156,239, 19, 1, 0, 0, 0, - 96,158,239, 19, 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,153,232, 19, 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 48,159,232, 19, 1, 0, 0, 0, 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, -144, 86,209, 27, 1, 0, 0, 0,144, 86,209, 27, 1, 0, 0, 0, 16,155,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, - 16,155,232, 19, 1, 0, 0, 0,220, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 96,155,232, 19, 1, 0, 0, 0, - 68, 65, 84, 65,208, 0, 0, 0, 96,155,232, 19, 1, 0, 0, 0,219, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 48,154, 5, 3, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48,154, 5, 3, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, - 48,154, 5, 3, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48,154, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,166, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,182, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -112,193,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,194, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -112,191,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,188, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,162, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,176, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -128,185,234, 19, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,156,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -208,157,232, 19, 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, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,195, 0, 26, 0,195, 0, 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, 53, 4, 0, 0,247, 4, 0, 0, 69, 2, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,195, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,157,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,112,156,232, 19, 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, 6, 0,195, 0,156, 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, 53, 4, 0, 0,247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,159,232, 19, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, - 48,163,232, 19, 1, 0, 0, 0,176,153,232, 19, 1, 0, 0, 0,112,156,232, 19, 1, 0, 0, 0,208,157,232, 19, 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,112,160,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,208,161,232, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, - 26, 0, 20, 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, - 89, 6, 0, 0,108, 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, - 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,208,161,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112,160,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 66, 5, 3, 1, 0, 0, 0, - 68, 65, 84, 65, 88, 3, 0, 0, 48, 66, 5, 3, 1, 0, 0, 0,158, 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, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,163,232, 19, 1, 0, 0, 0, -159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,159,232, 19, 1, 0, 0, 0,112,160,232, 19, 1, 0, 0, 0, -208,161,232, 19, 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,176, 5, 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, - 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,144,164,232, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16,150,232, 19, 1, 0, 0, 0,144,105,232, 19, 1, 0, 0, 0, 80,103,232, 19, 1, 0, 0, 0, -112,104,232, 19, 1, 0, 0, 0,240,105,232, 19, 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, 48,109,231, 2, 1, 0, 0, 0, - 0,202,232, 19, 1, 0, 0, 0, 32,206,232, 19, 1, 0, 0, 0,112,165,232, 19, 1, 0, 0, 0,160,200,232, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,162,239, 19, 1, 0, 0, 0,112,137, 47, 27, 1, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,112,165,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,208,166,232, 19, 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,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,240,118,231, 2, 1, 0, 0, 0, - 48,230, 4, 28, 1, 0, 0, 0, 48,230, 4, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240,163,239, 19, 1, 0, 0, 0, 48, 82,194, 24, 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,208,166,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,208,183,232, 19, 1, 0, 0, 0, -112,165,232, 19, 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,144,114,231, 2, 1, 0, 0, 0, - 48,232, 6, 28, 1, 0, 0, 0, 48, 30, 12, 28, 1, 0, 0, 0, 48,168,232, 19, 1, 0, 0, 0, 64,182,232, 19, 1, 0, 0, 0, - 80, 84,194, 24, 1, 0, 0, 0,144, 86,194, 24, 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,168,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,169,232, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,112,115,231, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 32, 83,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,143, 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, 88, 1, 0, 0,192,169,232, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 80,171,232, 19, 1, 0, 0, 0, 48,168,232, 19, 1, 0, 0, 0, 80,239, 36, 27, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,254,143, 0,165, 1, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,171,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,172,232, 19, 1, 0, 0, 0, -192,169,232, 19, 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,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, 77,101,115,104, 32, 84,111,111, -108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,252,143, 0,244, 2, - 0, 0, 0, 0, 0, 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,224,172,232, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,112,174,232, 19, 1, 0, 0, 0, 80,171,232, 19, 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,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, 77,101,115,104, 32, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,252,143, 0, 36, 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, - 68, 65, 84, 65, 88, 1, 0, 0,112,174,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,176,232, 19, 1, 0, 0, 0, -224,172,232, 19, 1, 0, 0, 0, 48,159, 38, 27, 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, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,114,117,115,104, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,254,143, 0, 57, 1, - 0, 0, 0, 0, 0, 0, 4, 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, 8, 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, 68, 65, 84, 65, 88, 1, 0, 0, 0,176,232, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,144,177,232, 19, 1, 0, 0, 0,112,174,232, 19, 1, 0, 0, 0,112,161, 38, 27, 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, 98,114,117,115,104, 95,116,111, -111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 98,114,117,115,104, 95,116,111, -111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,171,253,143, 0,176, 0, 0, 0, 0, 0, 4, 0, 4, 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,177,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,179,232, 19, 1, 0, 0, 0, - 0,176,232, 19, 1, 0, 0, 0,176,163, 38, 27, 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, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,114,111,107,101, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90,253,143, 0,233, 0, - 0, 0, 0, 0, 4, 0, 4, 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, 32,179,232, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,176,180,232, 19, 1, 0, 0, 0,144,177,232, 19, 1, 0, 0, 0,240,165, 38, 27, 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, 98,114,117,115,104, 95, 99,117, -114,118,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 99,117, -114,118,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, 67,117,114,118,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, 43,254,143, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 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,180,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,182,232, 19, 1, 0, 0, 0, - 32,179,232, 19, 1, 0, 0, 0,240,174, 38, 27, 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,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,111,106,101, 99,116, 32, - 80, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,189,253,143, 0,155, 0, - 20, 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,182,232, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,180,232, 19, 1, 0, 0, 0, 48,168, 38, 27, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,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, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126,253,143, 0,149, 0, 0, 0, 0, 0, 0, 0, 4, 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, 40, 1, 0, 0,208,183,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,192,186,232, 19, 1, 0, 0, 0, -208,166,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0, 1,195, 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,192,116,231, 2, 1, 0, 0, 0, - 48,102, 9, 28, 1, 0, 0, 0, 48,102, 9, 28, 1, 0, 0, 0, 48,185,232, 19, 1, 0, 0, 0, 48,185,232, 19, 1, 0, 0, 0, -176, 88,194, 24, 1, 0, 0, 0,240, 90,194, 24, 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,185,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160,117,231, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 32, 79, 98,106,101, - 99,116, 32, 77,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131,255,144, 0,101, 0, - 0, 0, 0, 0, 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,192,186,232, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,160,200,232, 19, 1, 0, 0, 0,208,183,232, 19, 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,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, 16,111,231, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32,188,232, 19, 1, 0, 0, 0, 16,199,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,188,232, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,176,189,232, 19, 1, 0, 0, 0, 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, 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,176,189,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,191,232, 19, 1, 0, 0, 0, - 32,188,232, 19, 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, 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,191,232, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,208,192,232, 19, 1, 0, 0, 0,176,189,232, 19, 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, 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,208,192,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,194,232, 19, 1, 0, 0, 0, - 64,191,232, 19, 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, 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, 96,194,232, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,240,195,232, 19, 1, 0, 0, 0,208,192,232, 19, 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, 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,240,195,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,197,232, 19, 1, 0, 0, 0, - 96,194,232, 19, 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, 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,128,197,232, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 16,199,232, 19, 1, 0, 0, 0,240,195,232, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,101,115,104, 32, 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, 23,252,163, 0,104, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,241,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,176,242,232, 19, + 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,199,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128,197,232, 19, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,242,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80,241,232, 19, 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, 0, 0, 3, 0, 0, 0, 0, 4, + 0, 0, 0, 3,122, 1,239, 2,104, 1, 0, 0, 0, 0, 0, 0, 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,147, 1, 0, 0, 0, 0, 0, 0, 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,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, 68, 65, 84, 65, 32, 1, 0, 0, 16,244,232, 19, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0,240,250,232, 19, + 1, 0, 0, 0, 48, 52, 5, 3, 1, 0, 0, 0, 80,241,232, 19, 1, 0, 0, 0,176,242,232, 19, 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, 68, 65, 84, 65, 40, 1, 0, 0,160,200,232, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,186,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 6, 3, 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,112,245,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,208,246,232, 19, 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, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, + 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +239, 5, 0, 0, 85, 0, 0, 0,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,160, 0, 0, 0, 35, 6, 0, 0,127, 0, 0, 0,100, 4, 0, 0, -160, 0, 0, 0, 35, 6, 0, 0,127, 0, 0, 0,100, 4, 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, 48,110,231, 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,192, 93,194, 24, 1, 0, 0, 0,176,119,194, 24, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48, 70, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 70, 5, 3, 1, 0, 0, 0, -158, 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,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,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, 68, 65, 84, 65, + 40, 1, 0, 0,208,246,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 48,248,232, 19, 1, 0, 0, 0,112,245,232, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, +239, 5, 0, 0,112, 0, 0, 0, 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,248,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,144,249,232, 19, 1, 0, 0, 0,208,246,232, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 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, - 68, 65, 84, 65, 32, 1, 0, 0, 0,202,232, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 32,206,232, 19, 1, 0, 0, 0, - 0, 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,176, 5, 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, 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, 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,203,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,192,204,232, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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, -192,204,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,203,232, 19, 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, 8, 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,151, 4, 0, 0, -127, 0, 0, 0,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, - 32,206,232, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202,232, 19, 1, 0, 0, 0, - 96,203,232, 19, 1, 0, 0, 0,192,204,232, 19, 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, -160,207,232, 19, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,123,233, 19, 1, 0, 0, 0,192,100,232, 19, 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,176,208,232, 19, 1, 0, 0, 0, -144,213,232, 19, 1, 0, 0, 0,240,213,232, 19, 1, 0, 0, 0,112,221,232, 19, 1, 0, 0, 0,208,221,232, 19, 1, 0, 0, 0, - 48, 94,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,154, 5, 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, 32, 0, 0, 0,176,208,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16,209,232, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 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,209,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112,209,232, 19, 1, 0, 0, 0,176,208,232, 19, 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,209,232, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,208,209,232, 19, 1, 0, 0, 0, 16,209,232, 19, 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,208,209,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, - 48,210,232, 19, 1, 0, 0, 0,112,209,232, 19, 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, 48,210,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,210,232, 19, 1, 0, 0, 0, -208,209,232, 19, 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, -144,210,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,210,232, 19, 1, 0, 0, 0, 48,210,232, 19, 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,240,210,232, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0, 80,211,232, 19, 1, 0, 0, 0,144,210,232, 19, 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, 80,211,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, -176,211,232, 19, 1, 0, 0, 0,240,210,232, 19, 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,176,211,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16,212,232, 19, 1, 0, 0, 0, - 80,211,232, 19, 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, - 16,212,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112,212,232, 19, 1, 0, 0, 0,176,211,232, 19, 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,112,212,232, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,208,212,232, 19, 1, 0, 0, 0, 16,212,232, 19, 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,208,212,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, - 48,213,232, 19, 1, 0, 0, 0,112,212,232, 19, 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, 48,213,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,213,232, 19, 1, 0, 0, 0, -208,212,232, 19, 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, -144,213,232, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,213,232, 19, 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,240,213,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 80,214,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,209,232, 19, 1, 0, 0, 0, -112,209,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,214,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,176,214,232, 19, 1, 0, 0, 0,240,213,232, 19, 1, 0, 0, 0, 16,209,232, 19, 1, 0, 0, 0, - 48,210,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,214,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 16,215,232, 19, 1, 0, 0, 0, 80,214,232, 19, 1, 0, 0, 0,112,209,232, 19, 1, 0, 0, 0, -144,210,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,215,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,112,215,232, 19, 1, 0, 0, 0,176,214,232, 19, 1, 0, 0, 0, 48,210,232, 19, 1, 0, 0, 0, -144,210,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,215,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,208,215,232, 19, 1, 0, 0, 0, 16,215,232, 19, 1, 0, 0, 0, 48,210,232, 19, 1, 0, 0, 0, -240,210,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,215,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 48,216,232, 19, 1, 0, 0, 0,112,215,232, 19, 1, 0, 0, 0,240,210,232, 19, 1, 0, 0, 0, - 80,211,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,216,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,144,216,232, 19, 1, 0, 0, 0,208,215,232, 19, 1, 0, 0, 0,208,209,232, 19, 1, 0, 0, 0, -176,211,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,216,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,240,216,232, 19, 1, 0, 0, 0, 48,216,232, 19, 1, 0, 0, 0, 80,211,232, 19, 1, 0, 0, 0, -176,211,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,216,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 80,217,232, 19, 1, 0, 0, 0,144,216,232, 19, 1, 0, 0, 0,176,208,232, 19, 1, 0, 0, 0, -240,210,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,217,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,176,217,232, 19, 1, 0, 0, 0,240,216,232, 19, 1, 0, 0, 0,176,208,232, 19, 1, 0, 0, 0, -176,211,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,217,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 16,218,232, 19, 1, 0, 0, 0, 80,217,232, 19, 1, 0, 0, 0,144,210,232, 19, 1, 0, 0, 0, - 16,212,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,218,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,112,218,232, 19, 1, 0, 0, 0,176,217,232, 19, 1, 0, 0, 0,208,209,232, 19, 1, 0, 0, 0, - 16,212,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,218,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,208,218,232, 19, 1, 0, 0, 0, 16,218,232, 19, 1, 0, 0, 0, 80,211,232, 19, 1, 0, 0, 0, - 16,212,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,218,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 48,219,232, 19, 1, 0, 0, 0,112,218,232, 19, 1, 0, 0, 0,112,212,232, 19, 1, 0, 0, 0, -208,212,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,219,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,144,219,232, 19, 1, 0, 0, 0,208,218,232, 19, 1, 0, 0, 0,144,210,232, 19, 1, 0, 0, 0, -208,212,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,219,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,240,219,232, 19, 1, 0, 0, 0, 48,219,232, 19, 1, 0, 0, 0, 16,212,232, 19, 1, 0, 0, 0, -112,212,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,219,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 80,220,232, 19, 1, 0, 0, 0,144,219,232, 19, 1, 0, 0, 0,240,210,232, 19, 1, 0, 0, 0, - 48,213,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,220,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,176,220,232, 19, 1, 0, 0, 0,240,219,232, 19, 1, 0, 0, 0,112,212,232, 19, 1, 0, 0, 0, - 48,213,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,220,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 16,221,232, 19, 1, 0, 0, 0, 80,220,232, 19, 1, 0, 0, 0, 48,210,232, 19, 1, 0, 0, 0, -144,213,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,221,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,112,221,232, 19, 1, 0, 0, 0,176,220,232, 19, 1, 0, 0, 0,208,212,232, 19, 1, 0, 0, 0, -144,213,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,221,232, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,221,232, 19, 1, 0, 0, 0, 48,213,232, 19, 1, 0, 0, 0, -144,213,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,208,221,232, 19, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,112,225,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,210,232, 19, 1, 0, 0, 0, - 16,209,232, 19, 1, 0, 0, 0,112,209,232, 19, 1, 0, 0, 0,144,210,232, 19, 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,123,233, 19, 1, 0, 0, 0, 96,123,233, 19, 1, 0, 0, 0,176,222,232, 19, 1, 0, 0, 0, - 16,224,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 16,224,232, 19, 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,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,224,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,176,222,232, 19, 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,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,225,232, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -192, 0,233, 19, 1, 0, 0, 0,208,221,232, 19, 1, 0, 0, 0,176,211,232, 19, 1, 0, 0, 0, 80,211,232, 19, 1, 0, 0, 0, - 16,212,232, 19, 1, 0, 0, 0,208,209,232, 19, 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, -176,244,232, 19, 1, 0, 0, 0, 96,255,232, 19, 1, 0, 0, 0, 80,226,232, 19, 1, 0, 0, 0,176,227,232, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,226,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,176,227,232, 19, 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,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,176,227,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,226,232, 19, 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, 16,229,232, 19, 1, 0, 0, 0, 32,243,232, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,229,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,230,232, 19, 1, 0, 0, 0, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,230,232, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 48,232,232, 19, 1, 0, 0, 0, 16,229,232, 19, 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, 7, 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, 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, 68, 65, 84, 65, + 40, 1, 0, 0,144,249,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,248,232, 19, + 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, 8, 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,135,255, 78, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +239, 5, 0, 0,112, 0, 0, 0, 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, +248, 0, 0, 0,240,250,232, 19, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, 0, 3,233, 19, 1, 0, 0, 0, 16,244,232, 19, + 1, 0, 0, 0,112,245,232, 19, 1, 0, 0, 0,144,249,232, 19, 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, - 68, 65, 84, 65, 88, 1, 0, 0, 48,232,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,233,232, 19, 1, 0, 0, 0, -160,230,232, 19, 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, 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,192,233,232, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 80,235,232, 19, 1, 0, 0, 0, 48,232,232, 19, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 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,252,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,128,253,232, 19, 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, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 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,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,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, 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,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, 68, 65, 84, 65, 40, 1, 0, 0,128,253,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,224,254,232, 19, 1, 0, 0, 0, 32,252,232, 19, 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,153, 2, 0, 0,153, 2, 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, 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,224,254,232, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 64, 0,233, 19, 1, 0, 0, 0,128,253,232, 19, 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,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,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, - 68, 65, 84, 65, 88, 1, 0, 0, 80,235,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,236,232, 19, 1, 0, 0, 0, -192,233,232, 19, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64, 0,233, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,160, 1,233, 19, 1, 0, 0, 0,224,254,232, 19, 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, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 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,251, 1, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,224,236,232, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,112,238,232, 19, 1, 0, 0, 0, 80,235,232, 19, 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, 68, 65, 84, 65, 40, 1, 0, 0,160, 1,233, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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,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, - 68, 65, 84, 65, 88, 1, 0, 0,112,238,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,240,232, 19, 1, 0, 0, 0, -224,236,232, 19, 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, 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, 48, 78, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48, 78, 5, 3, 1, 0, 0, 0,158, 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, 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,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, + 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65, +214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, + 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67, +151,254, 71, 66, 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,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, + 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 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, 0, 0,218,210,190, 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, 68, 65, 84, 65, 88, 1, 0, 0, 0,240,232, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,144,241,232, 19, 1, 0, 0, 0,112,238,232, 19, 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, 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,144,241,232, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,243,232, 19, 1, 0, 0, 0, - 0,240,232, 19, 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, 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, 68, 65, 84, 65, 48, 1, 0, 0, 0, 3,233, 19, 1, 0, 0, 0,159, 0, 0, 0, + 1, 0, 0, 0, 48, 7,233, 19, 1, 0, 0, 0,240,250,232, 19, 1, 0, 0, 0, 32,252,232, 19, 1, 0, 0, 0,160, 1,233, 19, + 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, 22, 6, 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, 68, 65, 84, 65, 88, 1, 0, 0, 32,243,232, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,241,232, 19, 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, 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, 4,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,208, 5,233, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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, 5,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 4,233, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0, +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, 7,233, 19, + 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,233, 19, 1, 0, 0, 0,112, 4,233, 19, + 1, 0, 0, 0,208, 5,233, 19, 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, 8,233, 19, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,115,233, 19, 1, 0, 0, 0,128,119,232, 19, 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,192, 9,233, 19, 1, 0, 0, 0,224, 13,233, 19, + 1, 0, 0, 0, 64, 14,233, 19, 1, 0, 0, 0,160, 20,233, 19, 1, 0, 0, 0, 0, 21,233, 19, 1, 0, 0, 0,176, 72,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 6, 3, 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,209,171, 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,192, 9,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32, 10,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 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, 10,233, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128, 10,233, 19, 1, 0, 0, 0,192, 9,233, 19, 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,128, 10,233, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,224, 10,233, 19, 1, 0, 0, 0, 32, 10,233, 19, 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,224, 10,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 11,233, 19, + 1, 0, 0, 0,128, 10,233, 19, 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, 11,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 11,233, 19, 1, 0, 0, 0,224, 10,233, 19, + 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,160, 11,233, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 12,233, 19, 1, 0, 0, 0, 64, 11,233, 19, 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, 0, 12,233, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 96, 12,233, 19, 1, 0, 0, 0,160, 11,233, 19, 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, 96, 12,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 12,233, 19, + 1, 0, 0, 0, 0, 12,233, 19, 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,192, 12,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32, 13,233, 19, 1, 0, 0, 0, 96, 12,233, 19, + 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, 32, 13,233, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128, 13,233, 19, 1, 0, 0, 0,192, 12,233, 19, 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,128, 13,233, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,224, 13,233, 19, 1, 0, 0, 0, 32, 13,233, 19, 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, 13,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 13,233, 19, 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, 64, 14,233, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,160, 14,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32, 10,233, 19, 1, 0, 0, 0,128, 10,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,160, 14,233, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 15,233, 19, 1, 0, 0, 0, 64, 14,233, 19, + 1, 0, 0, 0, 32, 10,233, 19, 1, 0, 0, 0, 64, 11,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 0, 15,233, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 96, 15,233, 19, 1, 0, 0, 0,160, 14,233, 19, + 1, 0, 0, 0,128, 10,233, 19, 1, 0, 0, 0,160, 11,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 96, 15,233, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,192, 15,233, 19, 1, 0, 0, 0, 0, 15,233, 19, + 1, 0, 0, 0, 64, 11,233, 19, 1, 0, 0, 0,160, 11,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,192, 15,233, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 32, 16,233, 19, 1, 0, 0, 0, 96, 15,233, 19, + 1, 0, 0, 0,192, 9,233, 19, 1, 0, 0, 0, 0, 12,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 32, 16,233, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,128, 16,233, 19, 1, 0, 0, 0,192, 15,233, 19, + 1, 0, 0, 0,224, 10,233, 19, 1, 0, 0, 0, 0, 12,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,128, 16,233, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224, 16,233, 19, 1, 0, 0, 0, 32, 16,233, 19, + 1, 0, 0, 0, 64, 11,233, 19, 1, 0, 0, 0, 96, 12,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,224, 16,233, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 64, 17,233, 19, 1, 0, 0, 0,128, 16,233, 19, + 1, 0, 0, 0,160, 11,233, 19, 1, 0, 0, 0, 96, 12,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 64, 17,233, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,160, 17,233, 19, 1, 0, 0, 0,224, 16,233, 19, + 1, 0, 0, 0, 0, 12,233, 19, 1, 0, 0, 0,192, 12,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,160, 17,233, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 18,233, 19, 1, 0, 0, 0, 64, 17,233, 19, + 1, 0, 0, 0, 96, 12,233, 19, 1, 0, 0, 0,192, 12,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 0, 18,233, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 96, 18,233, 19, 1, 0, 0, 0,160, 17,233, 19, + 1, 0, 0, 0,160, 11,233, 19, 1, 0, 0, 0, 32, 13,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 96, 18,233, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,192, 18,233, 19, 1, 0, 0, 0, 0, 18,233, 19, + 1, 0, 0, 0,224, 10,233, 19, 1, 0, 0, 0, 32, 13,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,192, 18,233, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 32, 19,233, 19, 1, 0, 0, 0, 96, 18,233, 19, + 1, 0, 0, 0,192, 12,233, 19, 1, 0, 0, 0, 32, 13,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 32, 19,233, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,128, 19,233, 19, 1, 0, 0, 0,192, 18,233, 19, + 1, 0, 0, 0,192, 9,233, 19, 1, 0, 0, 0,128, 13,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,128, 19,233, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224, 19,233, 19, 1, 0, 0, 0, 32, 19,233, 19, + 1, 0, 0, 0, 64, 11,233, 19, 1, 0, 0, 0,128, 13,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,224, 19,233, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 64, 20,233, 19, 1, 0, 0, 0,128, 19,233, 19, + 1, 0, 0, 0, 96, 12,233, 19, 1, 0, 0, 0,224, 13,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 64, 20,233, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,160, 20,233, 19, 1, 0, 0, 0,224, 19,233, 19, + 1, 0, 0, 0, 0, 12,233, 19, 1, 0, 0, 0,224, 13,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,160, 20,233, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 20,233, 19, + 1, 0, 0, 0,128, 13,233, 19, 1, 0, 0, 0,224, 13,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +160, 0, 0, 0, 0, 21,233, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160, 24,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 11,233, 19, 1, 0, 0, 0, 32, 10,233, 19, 1, 0, 0, 0,128, 10,233, 19, 1, 0, 0, 0,160, 11,233, 19, + 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, 32,177,231, 2, 1, 0, 0, 0, 80,115,233, 19, 1, 0, 0, 0, 80,115,233, 19, + 1, 0, 0, 0,224, 21,233, 19, 1, 0, 0, 0, 64, 23,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 53,144, 22, 1, 0, 0, 0,192, 0,146, 22, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 21,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 64, 23,233, 19, 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,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, 0,179,231, 2, 1, 0, 0, 0, 48, 44, 17, 28, 1, 0, 0, 0, 48, 44, 17, 28, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91,144, 22, 1, 0, 0, 0, 80, 95,144, 22, + 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, 64, 23,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 21,233, 19, 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,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, 32,178,231, 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,160, 24,233, 19, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80, 49,233, 19, 1, 0, 0, 0, 0, 21,233, 19, 1, 0, 0, 0, 0, 12,233, 19, + 1, 0, 0, 0,192, 12,233, 19, 1, 0, 0, 0, 32, 13,233, 19, 1, 0, 0, 0,224, 10,233, 19, 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, 16,173,231, 2, 1, 0, 0, 0,224, 43,233, 19, 1, 0, 0, 0,224, 47,233, 19, 1, 0, 0, 0,128, 25,233, 19, + 1, 0, 0, 0,224, 26,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 98,144, 22, + 1, 0, 0, 0, 16, 96,144, 22, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 25,233, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,224, 26,233, 19, 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, 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, 64,176,231, 2, 1, 0, 0, 0, 48,186, 5, 28, 1, 0, 0, 0, 48,186, 5, 28, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,100,144, 22, 1, 0, 0, 0,144,102,144, 22, 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,224, 26,233, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 25,233, 19, 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,192, 96,153, 22, + 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, 16,174,231, 2, 1, 0, 0, 0, 48,248, 10, 28, 1, 0, 0, 0, 48,126, 16, 28, 1, 0, 0, 0, 64, 28,233, 19, + 1, 0, 0, 0, 96,135,131, 28, 1, 0, 0, 0,176,104,144, 22, 1, 0, 0, 0, 80,108,144, 22, 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, 28,233, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,208, 29,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,174,231, 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, 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, 74, 1, 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, + 88, 1, 0, 0,208, 29,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96, 31,233, 19, 1, 0, 0, 0, 64, 28,233, 19, + 1, 0, 0, 0, 64, 57,157, 22, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 74, 1, 61, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 31,233, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,240, 32,233, 19, 1, 0, 0, 0,208, 29,233, 19, 1, 0, 0, 0,128, 59,157, 22, 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,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, 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, 68, 65, 84, 65, + 88, 1, 0, 0,240, 32,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 34,233, 19, 1, 0, 0, 0, 96, 31,233, 19, + 1, 0, 0, 0,192, 61,157, 22, 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, 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,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,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, 68, 65, 84, 65, 88, 1, 0, 0,128, 34,233, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0, 16, 36,233, 19, 1, 0, 0, 0,240, 32,233, 19, 1, 0, 0, 0,128, 64,157, 22, 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, - 68, 65, 84, 65, 0, 1, 0, 0,176,244,232, 19, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,112,251,232, 19, 1, 0, 0, 0, - 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, 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, 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, 16, 36,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160, 37,233, 19, 1, 0, 0, 0,128, 34,233, 19, + 1, 0, 0, 0, 64, 67,157, 22, 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,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, 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, -240,245,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 80,247,232, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, - 85, 0, 0, 0,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, 68, 65, 84, 65, 88, 1, 0, 0,160, 37,233, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0, 48, 39,233, 19, 1, 0, 0, 0, 16, 36,233, 19, 1, 0, 0, 0, 0, 70,157, 22, 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, 0, 0, 0, 0, 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,247,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,176,248,232, 19, 1, 0, 0, 0,240,245,232, 19, 1, 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, 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,128, 7, 0, 0,128, 7, 0, 0, -112, 0, 0, 0,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, 68, 65, 84, 65, + 88, 1, 0, 0, 48, 39,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192, 40,233, 19, 1, 0, 0, 0,160, 37,233, 19, + 1, 0, 0, 0, 16, 41,157, 22, 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, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -176,248,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 16,250,232, 19, 1, 0, 0, 0, 80,247,232, 19, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123,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,192, 40,233, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0, 80, 42,233, 19, 1, 0, 0, 0, 48, 39,233, 19, 1, 0, 0, 0,240, 76,157, 22, 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, 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, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, - 16,250,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,248,232, 19, 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, 8, 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,157, 5, 0, 0,128, 7, 0, 0, -112, 0, 0, 0,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, 68, 65, 84, 65, + 88, 1, 0, 0, 80, 42,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,135,131, 28, 1, 0, 0, 0,192, 40,233, 19, + 1, 0, 0, 0,176, 79,157, 22, 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, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -112,251,232, 19, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, 96,255,232, 19, 1, 0, 0, 0,176,244,232, 19, 1, 0, 0, 0, -240,245,232, 19, 1, 0, 0, 0, 16,250,232, 19, 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,243,252, 74, 1, 0, 0, 20, 0, 0, 0, + 4, 0, 6, 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, 88, 1, 0, 0, 96,135,131, 28, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 42,233, 19, 1, 0, 0, 0, 0, 51,157, 22, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,252,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0,254,232, 19, 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, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 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, 89, 6, 0, 0,108, 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, 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,219,252, 74, 1, 0, 0, 0, 0, 0, 0, 4, 0, 7, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0,254,232, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160,252,232, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 43,233, 19, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,224, 47,233, 19, 1, 0, 0, 0, 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, 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, 2, 0, 1, 0, 0, 0, 0, 0,112, 87,131, 28, + 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, 32, 45,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128, 46,233, 19, 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, - 48, 74, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 74, 5, 3, 1, 0, 0, 0,158, 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, + 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 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, 89, 6, 0, 0,108, 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, 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,128, 46,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 45,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 82, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48, 82, 5, 3, + 1, 0, 0, 0,158, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, -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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, -237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,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, 0, + 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, + 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, -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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, + 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,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, 0, + 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3765,908 +3455,2531 @@ 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, 48, 1, 0, 0,224, 47,233, 19, + 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 43,233, 19, 1, 0, 0, 0, 32, 45,233, 19, + 1, 0, 0, 0,128, 46,233, 19, 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, 22, 6, 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, 68, 65, 84, 65, 32, 1, 0, 0, - 96,255,232, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,251,232, 19, 1, 0, 0, 0, -160,252,232, 19, 1, 0, 0, 0, 0,254,232, 19, 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,176, 5, 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, 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, 49,233, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32, 58,233, 19, 1, 0, 0, 0,160, 24,233, 19, + 1, 0, 0, 0,192, 9,233, 19, 1, 0, 0, 0,128, 13,233, 19, 1, 0, 0, 0,224, 13,233, 19, 1, 0, 0, 0, 0, 12,233, 19, + 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, 64,134,231, 2, 1, 0, 0, 0,240, 52,233, 19, 1, 0, 0, 0,176, 56,233, 19, + 1, 0, 0, 0, 48, 50,233, 19, 1, 0, 0, 0,144, 51,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,109,144, 22, 1, 0, 0, 0,224,190,130, 28, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 50,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,144, 51,233, 19, 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, - 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,192, 0,233, 19, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0,160, 35,233, 19, 1, 0, 0, 0,112,225,232, 19, 1, 0, 0, 0,176,208,232, 19, 1, 0, 0, 0, -240,210,232, 19, 1, 0, 0, 0, 80,211,232, 19, 1, 0, 0, 0,176,211,232, 19, 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, 80, 7,233, 19, 1, 0, 0, 0,160, 34,233, 19, 1, 0, 0, 0,160, 1,233, 19, 1, 0, 0, 0, -240, 5,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 3,233, 19, 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, + 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, 32,136,231, 2, 1, 0, 0, 0, 48,116, 2, 28, 1, 0, 0, 0, 48,116, 2, 28, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,116,144, 22, 1, 0, 0, 0,240,118,144, 22, + 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, 51,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 50,233, 19, 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, 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, + 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, 64,135,231, 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, 16,121,144, 22, 1, 0, 0, 0, 32,126,144, 22, + 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, 52,233, 19, + 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0,176, 56,233, 19, 1, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0, 3,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -240, 5,233, 19, 1, 0, 0, 0,160, 1,233, 19, 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, 96, 4,233, 19, 1, 0, 0, 0, - 96, 4,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 4,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 53,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 80, 55,233, 19, 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, - 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, + 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 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, 87, 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, 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,196,255,203, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80, 55,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 53,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 5,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,233, 19, 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, - 80, 7,233, 19, 1, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0,240, 11,233, 19, 1, 0, 0, 0, 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, -208, 7,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 48, 9,233, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, - 48, 9,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,144, 10,233, 19, 1, 0, 0, 0,208, 7,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 86, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48, 86, 5, 3, + 1, 0, 0, 0,158, 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, + 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, + 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +224, 91,138, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, + 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,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, 0, + 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,176, 56,233, 19, + 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 52,233, 19, 1, 0, 0, 0,240, 53,233, 19, + 1, 0, 0, 0, 80, 55,233, 19, 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, 22, 6, 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, 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, 58,233, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 72,233, 19, 1, 0, 0, 0, 80, 49,233, 19, + 1, 0, 0, 0,192, 12,233, 19, 1, 0, 0, 0, 96, 12,233, 19, 1, 0, 0, 0,160, 11,233, 19, 1, 0, 0, 0, 32, 13,233, 19, + 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, 96,132,231, 2, 1, 0, 0, 0,192, 61,233, 19, 1, 0, 0, 0, 64, 71,233, 19, + 1, 0, 0, 0, 0, 59,233, 19, 1, 0, 0, 0, 96, 60,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,192,127,144, 22, 1, 0, 0, 0, 96, 55, 44, 27, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 59,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 96, 60,233, 19, 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, 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, 96,133,231, 2, 1, 0, 0, 0, 48,102, 10, 28, 1, 0, 0, 0, 48,102, 10, 28, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,129,144, 22, 1, 0, 0, 0, 0,132,144, 22, + 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, 60,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59,233, 19, 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, 16,150,230, 2, 1, 0, 0, 0, 48, 76, 18, 28, 1, 0, 0, 0, 48, 76, 18, 28, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,134,144, 22, 1, 0, 0, 0, 80,136,144, 22, + 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,192, 61,233, 19, + 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, 64, 67,233, 19, 1, 0, 0, 0, 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, - 26, 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, - 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, 16,126,131, 28, + 1, 0, 0, 0, 16,126,131, 28, 1, 0, 0, 0, 32, 63,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 10,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 9,233, 19, 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, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, 32, 63,233, 19, + 1, 0, 0, 0,220, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,112, 63,233, 19, 1, 0, 0, 0, 68, 65, 84, 65, +208, 0, 0, 0,112, 63,233, 19, 1, 0, 0, 0,219, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 0, 6, 3, + 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 0, 6, 3, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 0, 6, 3, + 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 0, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 12, 6, 3, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 28, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,100,235, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 40, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64, 98,235, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 34, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 8, 6, 3, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 22, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 80, 92,235, 19, + 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 64,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224, 65,233, 19, + 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, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,195, 0, 26, 0,195, 0, 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, 53, 4, 0, 0,247, 4, 0, 0, 69, 2, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,195, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,122, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 65,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 64,233, 19, 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, + 6, 0,195, 0,156, 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, 53, 4, 0, 0,247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 11,233, 19, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0,144, 15,233, 19, 1, 0, 0, 0, 80, 7,233, 19, 1, 0, 0, 0, -208, 7,233, 19, 1, 0, 0, 0,144, 10,233, 19, 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, 68, 65, 84, 65, 0, 1, 0, 0, 64, 67,233, 19, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 64, 71,233, 19, + 1, 0, 0, 0,192, 61,233, 19, 1, 0, 0, 0,128, 64,233, 19, 1, 0, 0, 0,224, 65,233, 19, 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,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, -208, 12,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 48, 14,233, 19, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 14,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 12,233, 19, 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, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 0, 3,122, 1,239, 2,104, 1, 0, 0, - 0, 0, 0, 0, 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,147, 1, 0, 0, 0, 0, 0, 0, 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, -144, 15,233, 19, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0,112, 22,233, 19, 1, 0, 0, 0,240, 11,233, 19, 1, 0, 0, 0, -208, 12,233, 19, 1, 0, 0, 0, 48, 14,233, 19, 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, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224, 69,233, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 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, 89, 6, 0, 0, +108, 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, 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, 69,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 68,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, - 48,154, 5, 3, 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, 48, 90, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, +104, 3, 0, 0, 48, 90, 5, 3, 1, 0, 0, 0,158, 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, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195, +115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 16,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 80, 18,233, 19, 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, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,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, 80, 18,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,176, 19,233, 19, 1, 0, 0, 0,240, 16,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,239, 5, 0, 0,112, 0, 0, 0, 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, 68, 65, 84, 65, + 48, 1, 0, 0, 64, 71,233, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 67,233, 19, + 1, 0, 0, 0,128, 68,233, 19, 1, 0, 0, 0,224, 69,233, 19, 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, 22, 6, 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, 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, 72,233, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32, 58,233, 19, 1, 0, 0, 0,128, 13,233, 19, 1, 0, 0, 0, 64, 11,233, 19, 1, 0, 0, 0, 96, 12,233, 19, + 1, 0, 0, 0,224, 13,233, 19, 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, 0,137,231, 2, 1, 0, 0, 0, 32,110,233, 19, + 1, 0, 0, 0, 80,114,233, 19, 1, 0, 0, 0,144, 73,233, 19, 1, 0, 0, 0,192,108,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,140,144, 22, 1, 0, 0, 0, 48, 19, 44, 27, 1, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0,144, 73,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,240, 74,233, 19, 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,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,192,146,231, 2, 1, 0, 0, 0, 48,124, 18, 28, + 1, 0, 0, 0, 48,124, 18, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,141,144, 22, + 1, 0, 0, 0,192,252,146, 22, 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, 74,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,240, 91,233, 19, 1, 0, 0, 0,144, 73,233, 19, + 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, 96,142,231, 2, 1, 0, 0, 0, 48,238, 16, 28, + 1, 0, 0, 0, 48, 68, 11, 28, 1, 0, 0, 0, 80, 76,233, 19, 1, 0, 0, 0, 80,205,133, 28, 1, 0, 0, 0,224,254,146, 22, + 1, 0, 0, 0, 32, 1,147, 22, 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, 76,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224, 77,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64,143,231, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 32, 83,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,143, 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, 68, 65, 84, 65, 40, 1, 0, 0,176, 19,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 16, 21,233, 19, 1, 0, 0, 0, 80, 18,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 77,233, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,112, 79,233, 19, 1, 0, 0, 0, 80, 76,233, 19, 1, 0, 0, 0,224, 51, 34, 27, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 7,254,143, 0,165, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 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, 7, 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, 68, 65, 84, 65, + 88, 1, 0, 0,112, 79,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 81,233, 19, 1, 0, 0, 0,224, 77,233, 19, + 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, +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, 77,101,115,104, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 21,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 19,233, 19, 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, 8, 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,239, 5, 0, 0,112, 0, 0, 0, 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,184,252,143, 0,244, 2, 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, 68, 65, 84, 65,248, 0, 0, 0,112, 22,233, 19, 1, 0, 0, 0, -165, 0, 0, 0, 1, 0, 0, 0,128, 30,233, 19, 1, 0, 0, 0,144, 15,233, 19, 1, 0, 0, 0,240, 16,233, 19, 1, 0, 0, 0, - 16, 21,233, 19, 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, 68, 65, 84, 65, 88, 1, 0, 0, 0, 81,233, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,144, 82,233, 19, 1, 0, 0, 0,112, 79,233, 19, 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, +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, 77,101,115,104, 32, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,124,252,143, 0, 36, 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, 68, 65, 84, 65, + 88, 1, 0, 0,144, 82,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32, 84,233, 19, 1, 0, 0, 0, 0, 81,233, 19, + 1, 0, 0, 0,224, 78, 34, 27, 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, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,226,253,143, 0, 54, 1, 0, 0, 0, 0, + 0, 0, 4, 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, + 7, 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, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0,160, 23,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 25,233, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, - 26, 0,232, 4, 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, -153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,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, 68, 65, 84, 65, 88, 1, 0, 0, 32, 84,233, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,176, 85,233, 19, 1, 0, 0, 0,144, 82,233, 19, 1, 0, 0, 0, 96, 83, 34, 27, 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, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 98,114,117,115,104, 95,116,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 40, 1, 0, 0, 0, 25,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 96, 26,233, 19, 1, 0, 0, 0, -160, 23,233, 19, 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, -153, 2, 0, 0,153, 2, 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, - 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, 84,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,253,143, 0,156, 0, 0, 0, 0, 0, 0, 0, 4, 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, - 68, 65, 84, 65, 40, 1, 0, 0, 96, 26,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,192, 27,233, 19, 1, 0, 0, 0, - 0, 25,233, 19, 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, -153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,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, 68, 65, 84, 65, + 88, 1, 0, 0,176, 85,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 87,233, 19, 1, 0, 0, 0, 32, 84,233, 19, + 1, 0, 0, 0,160, 85, 34, 27, 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, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,114,111,107,101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45,252,143, 0,233, 0, 0, 0, 0, 0, + 4, 0, 4, 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, 64, 87,233, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,208, 88,233, 19, 1, 0, 0, 0,176, 85,233, 19, 1, 0, 0, 0,224, 87, 34, 27, 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, 98,114,117,115,104, 95, 99,117,114,118,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, - 68, 65, 84, 65, 40, 1, 0, 0,192, 27,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32, 29,233, 19, 1, 0, 0, 0, - 96, 26,233, 19, 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, 6, 0,180, 0, -122, 2,163, 0,104, 2, 0, 0, 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,251, 1, 0, 0, 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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95, 99,117,114,118,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, 67,117,114,118,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, - 68, 65, 84, 65, 40, 1, 0, 0, 32, 29,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 27,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,252,143, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 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,208, 88,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96, 90,233, 19, 1, 0, 0, 0, 64, 87,233, 19, + 1, 0, 0, 0,224, 96, 34, 27, 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,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,111,106,101, 99,116, 32, 80, 97,105,110, +116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,223,252,143, 0,155, 0, 20, 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, -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, 68, 65, 84, 65, 88, 1, 0, 0, 96, 90,233, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0, 0,107,139, 28, 1, 0, 0, 0,208, 88,233, 19, 1, 0, 0, 0, 32, 90, 34, 27, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 78, 5, 3, 1, 0, 0, 0, - 68, 65, 84, 65, 88, 3, 0, 0, 48, 78, 5, 3, 1, 0, 0, 0,158, 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, 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,169,203,131,191, -222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63, -224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, - 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 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,169,203,131,191, -222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,218,210,190, 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, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,182,252,143, 0,149, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,107,139, 28, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,148,134, 28, 1, 0, 0, 0, 96, 90,233, 19, + 1, 0, 0, 0, 96, 92, 34, 27, 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,118,101,114,116,101,120,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95,118,101,114,116,101,120,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,246,252,143, 0, 80, 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, 68, 65, 84, 65, 88, 1, 0, 0,208,148,134, 28, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,176, 81,135, 28, 1, 0, 0, 0, 0,107,139, 28, 1, 0, 0, 0, 32, 81, 34, 27, 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, 98,114,117,115,104, 95,116,101,120,116,117,114, +101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101,120,116,117,114, +101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 91,254,143, 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, 68, 65, 84, 65, 32, 1, 0, 0,128, 30,233, 19, 1, 0, 0, 0, -159, 0, 0, 0, 1, 0, 0, 0,160, 34,233, 19, 1, 0, 0, 0,112, 22,233, 19, 1, 0, 0, 0,160, 23,233, 19, 1, 0, 0, 0, - 32, 29,233, 19, 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,176, 5, 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, - 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, 68, 65, 84, 65, + 88, 1, 0, 0,176, 81,135, 28, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80,205,133, 28, 1, 0, 0, 0,208,148,134, 28, + 1, 0, 0, 0,160, 49, 34, 27, 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,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, +111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,101,105,103,104,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 31,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 64, 33,233, 19, 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, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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, 48,255,143, 0,124, 0, 0, 0, 0, 0, + 0, 0, 4, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64, 33,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,224, 31,233, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0,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, 68, 65, 84, 65, 88, 1, 0, 0, 80,205,133, 28, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 81,135, 28, 1, 0, 0, 0,160, 94, 34, 27, 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,119,101,105,103,104,116,112, 97,105,110,116, 95, +111,112,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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 95, +111,112,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, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128,252,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 4, 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, 68, 65, 84, 65,200, 0, 0, 0,160, 34,233, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 30,233, 19, 1, 0, 0, 0,224, 31,233, 19, 1, 0, 0, 0, 64, 33,233, 19, 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, 68, 65, 84, 65, + 40, 1, 0, 0,240, 91,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224, 94,233, 19, 1, 0, 0, 0,240, 74,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0, 1,195, 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,144,144,231, 2, 1, 0, 0, 0, 48,234, 16, 28, + 1, 0, 0, 0, 48,234, 16, 28, 1, 0, 0, 0, 80, 93,233, 19, 1, 0, 0, 0, 80, 93,233, 19, 1, 0, 0, 0, 64, 3,147, 22, + 1, 0, 0, 0,128, 5,147, 22, 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, 93,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,112,145,231, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,101,116, 32, 79, 98,106,101, 99,116, 32, 77, +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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131,255,144, 0,101, 0, 0, 0, 0, 0, + 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,224, 94,233, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,192,108,233, 19, 1, 0, 0, 0,240, 91,233, 19, 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,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,224,138,231, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 96,233, 19, + 1, 0, 0, 0, 48,107,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96,233, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,208, 97,233, 19, 1, 0, 0, 0, 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, - 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,160, 35,233, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -144, 59,233, 19, 1, 0, 0, 0,192, 0,233, 19, 1, 0, 0, 0,112,212,232, 19, 1, 0, 0, 0,208,212,232, 19, 1, 0, 0, 0, -144,210,232, 19, 1, 0, 0, 0, 16,212,232, 19, 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, 82, 5, 3, 1, 0, 0, 0, 48, 58,233, 19, 1, 0, 0, 0,128, 36,233, 19, 1, 0, 0, 0,224, 37,233, 19, 1, 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, - 68, 65, 84, 65, 40, 1, 0, 0,128, 36,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224, 37,233, 19, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 97,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96, 99,233, 19, 1, 0, 0, 0, 64, 96,233, 19, + 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, 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, - 68, 65, 84, 65, 40, 1, 0, 0,224, 37,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, 36,233, 19, 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,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, 68, 65, 84, 65, 88, 1, 0, 0, 96, 99,233, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,240,100,233, 19, 1, 0, 0, 0,208, 97,233, 19, 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, - 68, 65, 84, 65,144, 2, 0, 0, 48, 82, 5, 3, 1, 0, 0, 0,171, 0, 0, 0, 1, 0, 0, 0, 0, 42,233, 19, 1, 0, 0, 0, - 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, 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, 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,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,240,100,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,102,233, 19, 1, 0, 0, 0, 96, 99,233, 19, + 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, 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,128,102,233, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0, 16,104,233, 19, 1, 0, 0, 0,240,100,233, 19, 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, 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, 16,104,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,105,233, 19, 1, 0, 0, 0,128,102,233, 19, + 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, 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,160,105,233, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0, 48,107,233, 19, 1, 0, 0, 0, 16,104,233, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,101,115,104, 32, 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, 23,252,163, 0,104, 1, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64, 39,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -160, 40,233, 19, 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, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,108, 1, 26, 0,108, 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, 53, 4, 0, 0,160, 5, 0, 0, 41, 1, 0, 0, 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, 68, 65, 84, 65, + 88, 1, 0, 0, 48,107,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,105,233, 19, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 64, 39,233, 19, 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, 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3, - 0, 0, 0, 4, 6, 0,108, 1,182, 1, 91, 1,164, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,160, 5, 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,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, 0, 42,233, 19, 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, -128, 47,233, 19, 1, 0, 0, 0, 48, 82, 5, 3, 1, 0, 0, 0, 64, 39,233, 19, 1, 0, 0, 0,160, 40,233, 19, 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, 68, 65, 84, 65, 40, 1, 0, 0,192,108,233, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 94,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,160, 0, 0, 0, + 35, 6, 0, 0,127, 0, 0, 0,100, 4, 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, 0,138,231, 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, 8,147, 22, 1, 0, 0, 0, 64, 34,147, 22, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 94, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48, 94, 5, 3, 1, 0, 0, 0,158, 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,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,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,255,255, 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, - 96, 43,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 96, 43,233, 19, 1, 0, 0, 0,220, 0, 0, 0, 1, 0, 0, 0, - 13, 0, 0, 0, 13, 0, 0, 0,176, 43,233, 19, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,176, 43,233, 19, 1, 0, 0, 0, -219, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,154, 5, 3, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, - 48,154, 5, 3, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48,154, 5, 3, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, - 48,154, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,166, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,182, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,193,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,194, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,191,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,188, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,162, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,176, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,128,185,234, 19, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -192, 44,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32, 46,233, 19, 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, 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, 68, 1, 30, 0, 68, 1, 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, 61, 6, 0, 0,128, 7, 0, 0, -252, 3, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 1, 30, 0, 0, 0, 1, 0, + 0, 0, 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, 30, 33, 12, 66, + 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, 32,110,233, 19, 1, 0, 0, 0,159, 0, 0, 0, + 1, 0, 0, 0, 80,114,233, 19, 1, 0, 0, 0, 0, 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, 22, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 32, 46,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 44,233, 19, 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, 6, 0, 68, 1,159, 1, 51, 1,141, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 6, 0, 0,128, 7, 0, 0, - 93, 2, 0, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 1,159, 1, 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, 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,111,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,240,112,233, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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,240,112,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,111,233, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0, +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, 80,114,233, 19, + 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,110,233, 19, 1, 0, 0, 0,144,111,233, 19, + 1, 0, 0, 0,240,112,233, 19, 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,208,115,233, 19, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 31,234, 19, 1, 0, 0, 0,176, 8,233, 19, 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,224,116,233, 19, 1, 0, 0, 0,192,121,233, 19, + 1, 0, 0, 0, 32,122,233, 19, 1, 0, 0, 0,160,129,233, 19, 1, 0, 0, 0, 0,130,233, 19, 1, 0, 0, 0,192, 1,234, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 6, 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, + 32, 0, 0, 0,224,116,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,117,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 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,117,233, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,117,233, 19, 1, 0, 0, 0,224,116,233, 19, 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,117,233, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 0,118,233, 19, 1, 0, 0, 0, 64,117,233, 19, 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, 0,118,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,118,233, 19, + 1, 0, 0, 0,160,117,233, 19, 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, 96,118,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,118,233, 19, 1, 0, 0, 0, 0,118,233, 19, + 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,192,118,233, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,119,233, 19, 1, 0, 0, 0, 96,118,233, 19, 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,119,233, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,128,119,233, 19, 1, 0, 0, 0,192,118,233, 19, 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,128,119,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,119,233, 19, + 1, 0, 0, 0, 32,119,233, 19, 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,224,119,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,120,233, 19, 1, 0, 0, 0,128,119,233, 19, + 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, 64,120,233, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,120,233, 19, 1, 0, 0, 0,224,119,233, 19, 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,160,120,233, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 0,121,233, 19, 1, 0, 0, 0, 64,120,233, 19, 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, 0,121,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,121,233, 19, + 1, 0, 0, 0,160,120,233, 19, 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, 96,121,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,121,233, 19, 1, 0, 0, 0, 0,121,233, 19, + 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,192,121,233, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,121,233, 19, 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, 32,122,233, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,128,122,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,117,233, 19, 1, 0, 0, 0,160,117,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,122,233, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,224,122,233, 19, 1, 0, 0, 0, 32,122,233, 19, 1, 0, 0, 0, 64,117,233, 19, 1, 0, 0, 0, 96,118,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224,122,233, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 64,123,233, 19, 1, 0, 0, 0,128,122,233, 19, 1, 0, 0, 0,160,117,233, 19, 1, 0, 0, 0,192,118,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64,123,233, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,160,123,233, 19, 1, 0, 0, 0,224,122,233, 19, 1, 0, 0, 0, 96,118,233, 19, 1, 0, 0, 0,192,118,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,123,233, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 0,124,233, 19, 1, 0, 0, 0, 64,123,233, 19, 1, 0, 0, 0, 96,118,233, 19, 1, 0, 0, 0, 32,119,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0,124,233, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 96,124,233, 19, 1, 0, 0, 0,160,123,233, 19, 1, 0, 0, 0, 32,119,233, 19, 1, 0, 0, 0,128,119,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,124,233, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,192,124,233, 19, 1, 0, 0, 0, 0,124,233, 19, 1, 0, 0, 0, 0,118,233, 19, 1, 0, 0, 0,224,119,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,124,233, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 32,125,233, 19, 1, 0, 0, 0, 96,124,233, 19, 1, 0, 0, 0,128,119,233, 19, 1, 0, 0, 0,224,119,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32,125,233, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,128,125,233, 19, 1, 0, 0, 0,192,124,233, 19, 1, 0, 0, 0,224,116,233, 19, 1, 0, 0, 0, 32,119,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,125,233, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,224,125,233, 19, 1, 0, 0, 0, 32,125,233, 19, 1, 0, 0, 0,224,116,233, 19, 1, 0, 0, 0,224,119,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224,125,233, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 64,126,233, 19, 1, 0, 0, 0,128,125,233, 19, 1, 0, 0, 0,192,118,233, 19, 1, 0, 0, 0, 64,120,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64,126,233, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,160,126,233, 19, 1, 0, 0, 0,224,125,233, 19, 1, 0, 0, 0, 0,118,233, 19, 1, 0, 0, 0, 64,120,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,126,233, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 0,127,233, 19, 1, 0, 0, 0, 64,126,233, 19, 1, 0, 0, 0,128,119,233, 19, 1, 0, 0, 0, 64,120,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0,127,233, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 96,127,233, 19, 1, 0, 0, 0,160,126,233, 19, 1, 0, 0, 0,160,120,233, 19, 1, 0, 0, 0, 0,121,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,127,233, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,192,127,233, 19, 1, 0, 0, 0, 0,127,233, 19, 1, 0, 0, 0,192,118,233, 19, 1, 0, 0, 0, 0,121,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,127,233, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 32,128,233, 19, 1, 0, 0, 0, 96,127,233, 19, 1, 0, 0, 0, 64,120,233, 19, 1, 0, 0, 0,160,120,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32,128,233, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,128,128,233, 19, 1, 0, 0, 0,192,127,233, 19, 1, 0, 0, 0, 32,119,233, 19, 1, 0, 0, 0, 96,121,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,128,233, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,224,128,233, 19, 1, 0, 0, 0, 32,128,233, 19, 1, 0, 0, 0,160,120,233, 19, 1, 0, 0, 0, 96,121,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224,128,233, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 64,129,233, 19, 1, 0, 0, 0,128,128,233, 19, 1, 0, 0, 0, 96,118,233, 19, 1, 0, 0, 0,192,121,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64,129,233, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0,160,129,233, 19, 1, 0, 0, 0,224,128,233, 19, 1, 0, 0, 0, 0,121,233, 19, 1, 0, 0, 0,192,121,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,129,233, 19, 1, 0, 0, 0,194, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129,233, 19, 1, 0, 0, 0, 96,121,233, 19, 1, 0, 0, 0,192,121,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 0,130,233, 19, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,160,133,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,118,233, 19, 1, 0, 0, 0, 64,117,233, 19, + 1, 0, 0, 0,160,117,233, 19, 1, 0, 0, 0,192,118,233, 19, 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, 31,234, 19, 1, 0, 0, 0, 0, 31,234, 19, 1, 0, 0, 0,224,130,233, 19, 1, 0, 0, 0, 64,132,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,130,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 64,132,233, 19, + 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,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, 64,132,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,224,130,233, 19, 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,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,160,133,233, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0,165,233, 19, + 1, 0, 0, 0, 0,130,233, 19, 1, 0, 0, 0,224,119,233, 19, 1, 0, 0, 0,128,119,233, 19, 1, 0, 0, 0, 64,120,233, 19, + 1, 0, 0, 0, 0,118,233, 19, 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,224,152,233, 19, + 1, 0, 0, 0,144,163,233, 19, 1, 0, 0, 0,128,134,233, 19, 1, 0, 0, 0,224,135,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,134,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224,135,233, 19, 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,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,224,135,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,134,233, 19, + 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, 64,137,233, 19, 1, 0, 0, 0, 80,151,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,137,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,138,233, 19, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,138,233, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0, 96,140,233, 19, 1, 0, 0, 0, 64,137,233, 19, 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, 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, 96,140,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,141,233, 19, 1, 0, 0, 0,208,138,233, 19, + 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, 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,240,141,233, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,128,143,233, 19, 1, 0, 0, 0, 96,140,233, 19, 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,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,128,143,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,145,233, 19, 1, 0, 0, 0,240,141,233, 19, + 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, 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, 16,145,233, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,160,146,233, 19, 1, 0, 0, 0,128,143,233, 19, 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, 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, -128, 47,233, 19, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 64, 54,233, 19, 1, 0, 0, 0, 0, 42,233, 19, 1, 0, 0, 0, -192, 44,233, 19, 1, 0, 0, 0, 32, 46,233, 19, 1, 0, 0, 0, 4, 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,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,160,146,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,148,233, 19, 1, 0, 0, 0, 16,145,233, 19, + 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, 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,192, 48,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 32, 50,233, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,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, 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, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 50,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,128, 51,233, 19, 1, 0, 0, 0,192, 48,233, 19, 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, 88, 1, 0, 0, 48,148,233, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,192,149,233, 19, 1, 0, 0, 0,160,146,233, 19, 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, 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,128, 7, 0, 0,128, 7, 0, 0,112, 0, 0, 0,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, 68, 65, 84, 65, + 88, 1, 0, 0,192,149,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80,151,233, 19, 1, 0, 0, 0, 48,148,233, 19, + 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,128, 51,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,224, 52,233, 19, 1, 0, 0, 0, 32, 50,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,151,233, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,149,233, 19, 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,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, 7, 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, 68, 65, 84, 65, + 0, 1, 0, 0,224,152,233, 19, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,160,159,233, 19, 1, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,224, 52,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 51,233, 19, 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, 8, 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,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,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,248, 0, 0, 0, 64, 54,233, 19, 1, 0, 0, 0, -165, 0, 0, 0, 1, 0, 0, 0, 48, 58,233, 19, 1, 0, 0, 0,128, 47,233, 19, 1, 0, 0, 0,192, 48,233, 19, 1, 0, 0, 0, -224, 52,233, 19, 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, 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, 32,154,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128,155,233, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0, +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, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 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, 55,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,208, 56,233, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, - 26, 0, 20, 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, - 89, 6, 0, 0,108, 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, - 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, 68, 65, 84, 65, 40, 1, 0, 0,128,155,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224,156,233, 19, 1, 0, 0, 0, 32,154,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 56,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, 55,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112, 0, 0, 0, +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, - 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, 68, 65, 84, 65, 40, 1, 0, 0,224,156,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 64,158,233, 19, 1, 0, 0, 0,128,155,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 86, 5, 3, 1, 0, 0, 0, - 68, 65, 84, 65, 88, 3, 0, 0, 48, 86, 5, 3, 1, 0, 0, 0,158, 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, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64,158,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,156,233, 19, 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, 8, 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,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0, +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,248, 0, 0, 0,160,159,233, 19, + 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0,144,163,233, 19, 1, 0, 0, 0,224,152,233, 19, 1, 0, 0, 0, 32,154,233, 19, + 1, 0, 0, 0, 64,158,233, 19, 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, 68, 65, 84, 65, 32, 1, 0, 0, 48, 58,233, 19, 1, 0, 0, 0, -159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 54,233, 19, 1, 0, 0, 0,112, 55,233, 19, 1, 0, 0, 0, -208, 56,233, 19, 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,176, 5, 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, - 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,144, 59,233, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 48, 94,233, 19, 1, 0, 0, 0,160, 35,233, 19, 1, 0, 0, 0, 48,213,232, 19, 1, 0, 0, 0,144,213,232, 19, 1, 0, 0, 0, -208,212,232, 19, 1, 0, 0, 0,112,212,232, 19, 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, - 64, 78,233, 19, 1, 0, 0, 0, 48, 93,233, 19, 1, 0, 0, 0,112, 60,233, 19, 1, 0, 0, 0,224, 76,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 60,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,208, 61,233, 19, 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,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, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 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,160,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 48,162,233, 19, + 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, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0, 20, 1, 26, 0, 20, 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, 89, 6, 0, 0,108, 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, 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,162,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,208,160,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 48, 98, 5, 3, + 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48, 98, 5, 3, 1, 0, 0, 0,158, 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, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,144,163,233, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,160,159,233, 19, 1, 0, 0, 0,208,160,233, 19, 1, 0, 0, 0, 48,162,233, 19, 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, 22, 6, 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, 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,165,233, 19, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0, 16,199,233, 19, 1, 0, 0, 0,160,133,233, 19, 1, 0, 0, 0,224,116,233, 19, 1, 0, 0, 0, 32,119,233, 19, + 1, 0, 0, 0,128,119,233, 19, 1, 0, 0, 0,224,119,233, 19, 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,144,171,233, 19, 1, 0, 0, 0, 16,198,233, 19, 1, 0, 0, 0,224,165,233, 19, 1, 0, 0, 0, 48,170,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,165,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 64,167,233, 19, + 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,167,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 48,170,233, 19, + 1, 0, 0, 0,224,165,233, 19, 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,160,168,233, 19, 1, 0, 0, 0,160,168,233, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,168,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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,170,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,167,233, 19, 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,144,171,233, 19, + 1, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 48,102, 5, 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, 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, 16,172,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,112,173,233, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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,173,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,208,174,233, 19, 1, 0, 0, 0, 16,172,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, +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, 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,208,174,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,173,233, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, +147, 1, 0, 0, 0, 0, 0, 0, 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,192, 24, 0, 0, 48,102, 5, 3, + 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0,240,178,233, 19, 1, 0, 0, 0,144,171,233, 19, 1, 0, 0, 0, 16,172,233, 19, + 1, 0, 0, 0,208,174,233, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176,233, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,144,177,233, 19, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,177,233, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,176,233, 19, 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, + 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 0, 3,122, 1,239, 2,104, 1, 0, 0, 0, 0, 0, 0, 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,147, 1, 0, 0, 0, 0, 0, 0, + 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,240,178,233, 19, 1, 0, 0, 0,175, 0, 0, 0, + 1, 0, 0, 0,208,185,233, 19, 1, 0, 0, 0, 48,102, 5, 3, 1, 0, 0, 0, 48,176,233, 19, 1, 0, 0, 0,144,177,233, 19, + 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, 0, 6, 3, 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, 80,180,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,176,181,233, 19, + 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, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,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,176,181,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 16,183,233, 19, + 1, 0, 0, 0, 80,180,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,239, 5, 0, 0,112, 0, 0, 0, 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, 16,183,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,112,184,233, 19, + 1, 0, 0, 0,176,181,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,112,184,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16,183,233, 19, 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, + 8, 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,239, 5, 0, 0,112, 0, 0, 0, 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,248, 0, 0, 0,208,185,233, 19, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0,224,193,233, 19, + 1, 0, 0, 0,240,178,233, 19, 1, 0, 0, 0, 80,180,233, 19, 1, 0, 0, 0,112,184,233, 19, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,187,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 96,188,233, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 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,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0, +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, 96,188,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,192,189,233, 19, 1, 0, 0, 0, 0,187,233, 19, 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,153, 2, 0, 0,153, 2, 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, 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,189,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32,191,233, 19, 1, 0, 0, 0, 96,188,233, 19, 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,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, +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, 32,191,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128,192,233, 19, 1, 0, 0, 0,192,189,233, 19, 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, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 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,251, 1, 0, 0, + 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,128,192,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,191,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 48,128, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48,128, 5, 3, + 1, 0, 0, 0,158, 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, + 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,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, + 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, + 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190, +250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68, +160, 87,135,195,205,209,166, 67,151,254, 71, 66, 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,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, + 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, + 0, 0, 0, 0, 96,132,111, 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, 0, 0,218,210,190, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,224,193,233, 19, + 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 16,198,233, 19, 1, 0, 0, 0,208,185,233, 19, 1, 0, 0, 0, 0,187,233, 19, + 1, 0, 0, 0,128,192,233, 19, 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, 22, 6, 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, 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, 80,195,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,176,196,233, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, + 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, +151, 4, 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,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,176,196,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,195,233, 19, + 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, 8, 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, +151, 4, 0, 0,127, 0, 0, 0,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, 16,198,233, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,193,233, 19, + 1, 0, 0, 0, 80,195,233, 19, 1, 0, 0, 0,176,196,233, 19, 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, 16,199,233, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16,223,233, 19, 1, 0, 0, 0, 0,165,233, 19, + 1, 0, 0, 0,160,120,233, 19, 1, 0, 0, 0, 0,121,233, 19, 1, 0, 0, 0,192,118,233, 19, 1, 0, 0, 0, 64,120,233, 19, + 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,132, 5, 3, 1, 0, 0, 0,160,221,233, 19, + 1, 0, 0, 0,240,199,233, 19, 1, 0, 0, 0, 80,201,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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,199,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 80,201,233, 19, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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,201,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,199,233, 19, 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,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,132, 5, 3, + 1, 0, 0, 0,171, 0, 0, 0, 1, 0, 0, 0,112,205,233, 19, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 61,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 48, 63,233, 19, 1, 0, 0, 0, -112, 60,233, 19, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 63,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,144, 64,233, 19, 1, 0, 0, 0, -208, 61,233, 19, 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,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,144, 64,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224, 76,233, 19, 1, 0, 0, 0, - 48, 63,233, 19, 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,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,240, 65,233, 19, 1, 0, 0, 0, 80, 75,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 65,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 67,233, 19, 1, 0, 0, 0, - 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, 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,128, 67,233, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 16, 69,233, 19, 1, 0, 0, 0,240, 65,233, 19, 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, 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, 16, 69,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160, 70,233, 19, 1, 0, 0, 0, -128, 67,233, 19, 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, 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, 68, 65, 84, 65, + 40, 1, 0, 0,176,202,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 16,204,233, 19, 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, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,108, 1, 26, 0,108, 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, 53, 4, 0, 0, +160, 5, 0, 0, 41, 1, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,160, 70,233, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 48, 72,233, 19, 1, 0, 0, 0, 16, 69,233, 19, 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, 68, 65, 84, 65, + 40, 1, 0, 0, 16,204,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,202,233, 19, + 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, 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,108, 1,182, 1, 91, 1, +164, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0, +160, 5, 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,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, 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, 68, 65, 84, 65, + 40, 1, 0, 0,112,205,233, 19, 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0,240,210,233, 19, 1, 0, 0, 0, 48,132, 5, 3, + 1, 0, 0, 0,176,202,233, 19, 1, 0, 0, 0, 16,204,233, 19, 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,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, 48, 72,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192, 73,233, 19, 1, 0, 0, 0, -160, 70,233, 19, 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, 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,208,206,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 73,233, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 80, 75,233, 19, 1, 0, 0, 0, 48, 72,233, 19, 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, 1, 0, 0, 0, 68, 65, 84, 65, + 16, 0, 0, 0,208,206,233, 19, 1, 0, 0, 0,220, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 32,207,233, 19, + 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 32,207,233, 19, 1, 0, 0, 0,219, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 48, 0, 6, 3, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 0, 6, 3, 1, 0, 0, 0, 20, 0, 0, 0, + 1, 0, 1, 0, 48, 0, 6, 3, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 0, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 48, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 28, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 64,100,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 40, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 64, 98,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 34, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 48, 8, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 22, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 80, 92,235, 19, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,208,233, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,144,209,233, 19, 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, 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, 68, 1, 30, 0, 68, 1, 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, 61, 6, 0, 0,128, 7, 0, 0,252, 3, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,144,209,233, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,208,233, 19, 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, 6, 0, 68, 1,159, 1, 51, 1,141, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 6, 0, 0,128, 7, 0, 0, 93, 2, 0, 0,251, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, - 68, 65, 84, 65, 88, 1, 0, 0, 80, 75,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, 73,233, 19, 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, 68, 65, 84, 65, 0, 1, 0, 0,240,210,233, 19, 1, 0, 0, 0,164, 0, 0, 0, + 1, 0, 0, 0,176,217,233, 19, 1, 0, 0, 0,112,205,233, 19, 1, 0, 0, 0, 48,208,233, 19, 1, 0, 0, 0,144,209,233, 19, + 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,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,224, 76,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 64,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,212,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,144,213,233, 19, + 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, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,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,144,213,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,240,214,233, 19, + 1, 0, 0, 0, 48,212,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 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, 90, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 90, 5, 3, 1, 0, 0, 0, -158, 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, 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,112, 0, 0, 0,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,240,214,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 80,216,233, 19, + 1, 0, 0, 0,144,213,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,216,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,214,233, 19, 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, + 8, 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,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,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,248, 0, 0, 0,176,217,233, 19, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0,160,221,233, 19, + 1, 0, 0, 0,240,210,233, 19, 1, 0, 0, 0, 48,212,233, 19, 1, 0, 0, 0, 80,216,233, 19, 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, 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,218,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 64,220,233, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 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, 89, 6, 0, 0,108, 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, 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, 64,220,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,218,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,136, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48,136, 5, 3, + 1, 0, 0, 0,158, 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, + 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,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, 0, + 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, + 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,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, 0, + 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,160,221,233, 19, + 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,217,233, 19, 1, 0, 0, 0,224,218,233, 19, + 1, 0, 0, 0, 64,220,233, 19, 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, 22, 6, 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, 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,223,233, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192, 1,234, 19, 1, 0, 0, 0, 16,199,233, 19, + 1, 0, 0, 0, 96,121,233, 19, 1, 0, 0, 0,192,121,233, 19, 1, 0, 0, 0, 0,121,233, 19, 1, 0, 0, 0,160,120,233, 19, + 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,192,241,233, 19, 1, 0, 0, 0,192, 0,234, 19, + 1, 0, 0, 0,240,223,233, 19, 1, 0, 0, 0, 96,240,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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,223,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 80,225,233, 19, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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,225,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,176,226,233, 19, 1, 0, 0, 0,240,223,233, 19, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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,226,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 16,228,233, 19, 1, 0, 0, 0, 80,225,233, 19, 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,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, 16,228,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 96,240,233, 19, 1, 0, 0, 0,176,226,233, 19, 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,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,112,229,233, 19, 1, 0, 0, 0,208,238,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,229,233, 19, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,231,233, 19, 1, 0, 0, 0, 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, 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, 0,231,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,232,233, 19, + 1, 0, 0, 0,112,229,233, 19, 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, 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,232,233, 19, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,234,233, 19, 1, 0, 0, 0, 0,231,233, 19, 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, 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, 32,234,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,235,233, 19, + 1, 0, 0, 0,144,232,233, 19, 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, 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,235,233, 19, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,237,233, 19, 1, 0, 0, 0, 32,234,233, 19, 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, 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, 64,237,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,238,233, 19, + 1, 0, 0, 0,176,235,233, 19, 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, 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,208,238,233, 19, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,237,233, 19, 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, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16,228,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 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,140, 5, 3, + 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48,140, 5, 3, 1, 0, 0, 0,158, 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,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,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,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, 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, 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,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,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, 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,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, 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,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,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,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,221, 57, 80, 61, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,192,241,233, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,240,245,233, 19, + 1, 0, 0, 0, 0, 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, 22, 6, 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,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 65,214,211,111, 65, - 0, 0, 0, 0, 0, 0, 0, 0,221, 57, 80, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 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, 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,243,233, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,144,244,233, 19, 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, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6, 26, 0, 24, 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, 23, 6, 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, 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,144,244,233, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,243,233, 19, 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, + 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 24, 6,107, 2, 7, 6, 89, 2, 0, 0, 0, 0, 0, 0, 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,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, + 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,240,245,233, 19, 1, 0, 0, 0,175, 0, 0, 0, + 1, 0, 0, 0,208,252,233, 19, 1, 0, 0, 0,192,241,233, 19, 1, 0, 0, 0, 48,243,233, 19, 1, 0, 0, 0,144,244,233, 19, + 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, 0, 6, 3, 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, 80,247,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,176,248,233, 19, + 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, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,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,176,248,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 16,250,233, 19, + 1, 0, 0, 0, 80,247,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,239, 5, 0, 0,112, 0, 0, 0, 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, 16,250,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,112,251,233, 19, + 1, 0, 0, 0,176,248,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,112,251,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16,250,233, 19, 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, + 8, 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,239, 5, 0, 0,112, 0, 0, 0, 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,248, 0, 0, 0,208,252,233, 19, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0,192, 0,234, 19, + 1, 0, 0, 0,240,245,233, 19, 1, 0, 0, 0, 80,247,233, 19, 1, 0, 0, 0,112,251,233, 19, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,254,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 96,255,233, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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, 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, 64, 78,233, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 96, 82,233, 19, 1, 0, 0, 0, - 0, 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, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,255,233, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,233, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0, +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,192, 0,234, 19, + 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,252,233, 19, 1, 0, 0, 0, 0,254,233, 19, + 1, 0, 0, 0, 96,255,233, 19, 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,192, 1,234, 19, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,223,233, 19, 1, 0, 0, 0, 32,119,233, 19, + 1, 0, 0, 0, 96,118,233, 19, 1, 0, 0, 0,192,121,233, 19, 1, 0, 0, 0, 96,121,233, 19, 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, 5,234, 19, 1, 0, 0, 0, 0, 30,234, 19, 1, 0, 0, 0,160, 2,234, 19, + 1, 0, 0, 0, 0, 4,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 4,234, 19, 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,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, 4,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 2,234, 19, 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, 5,234, 19, 1, 0, 0, 0,168, 0, 0, 0, + 1, 0, 0, 0, 0, 15,234, 19, 1, 0, 0, 0, 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,192, 6,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,234, 19, 1, 0, 0, 0,220, 0, 0, 0, + 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 16, 7,234, 19, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 16, 7,234, 19, + 1, 0, 0, 0,219, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48, 0, 6, 3, 1, 0, 0, 0, 19, 0, 0, 0, + 1, 0, 1, 0, 48, 0, 6, 3, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48, 0, 6, 3, 1, 0, 0, 0, 21, 0, 1, 0, + 1, 0, 1, 0, 48, 0, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 48, 28, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64,100,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 48, 40, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 64, 98,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 48, 34, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 8, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 48, 22, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 80, 92,235, 19, 1, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0, 32, 8,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128, 9,234, 19, 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, 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,212, 0, 26, 0,212, 0, + 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, +211, 0, 0, 0, 41, 1, 0, 0, 66, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 9,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224, 10,234, 19, 1, 0, 0, 0, 32, 8,234, 19, + 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, 0, 0, 0, 0, + 0, 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, 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,224, 10,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 64, 12,234, 19, 1, 0, 0, 0,128, 9,234, 19, + 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, +211, 0, 0, 0, 67, 1, 0, 0, 67, 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, 64, 12,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,160, 13,234, 19, 1, 0, 0, 0,224, 10,234, 19, + 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, 6, 0,180, 0,122, 2,163, 0, +104, 2, 0, 0, 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, +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, 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, 13,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 12,234, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 48,144, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, +104, 3, 0, 0, 48,144, 5, 3, 1, 0, 0, 0,158, 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, 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,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, 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, 15,150, 72, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 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,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, 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, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,176, 5, 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, 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, -160, 79,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 81,233, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6, 26, 0, 24, 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, 23, 6, 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, 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, - 0, 81,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 79,233, 19, 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, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 24, 6,107, 2, 7, 6, 89, 2, 0, 0, - 0, 0, 0, 0, 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, -175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 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,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,149, 53,207, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,159, 55,242, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 96, 82,233, 19, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, 64, 89,233, 19, 1, 0, 0, 0, 64, 78,233, 19, 1, 0, 0, 0, -160, 79,233, 19, 1, 0, 0, 0, 0, 81,233, 19, 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,154, 5, 3, 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, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, + 3,236,234,190, 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, + 48, 1, 0, 0, 0, 15,234, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 48, 19,234, 19, 1, 0, 0, 0, 96, 5,234, 19, + 1, 0, 0, 0, 32, 8,234, 19, 1, 0, 0, 0,160, 13,234, 19, 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, 22, 6, 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, 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, 16,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,208, 17,234, 19, + 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, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0, 24, 6, 26, 0, 24, 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, 23, 6, 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, 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,208, 17,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,112, 16,234, 19, 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, 0, 0, 3, 0, 0, 0, 0, 4, + 0, 0, 24, 6,107, 2, 7, 6, 89, 2, 0, 0, 0, 0, 0, 0, 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,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 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, 48, 19,234, 19, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, 16, 26,234, 19, + 1, 0, 0, 0, 0, 15,234, 19, 1, 0, 0, 0,112, 16,234, 19, 1, 0, 0, 0,208, 17,234, 19, 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, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 83,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 32, 85,233, 19, 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, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,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, 32, 85,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,128, 86,233, 19, 1, 0, 0, 0,192, 83,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 6, 3, 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,144, 20,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,240, 21,234, 19, 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, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, + 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +239, 5, 0, 0, 85, 0, 0, 0,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,240, 21,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 80, 23,234, 19, 1, 0, 0, 0,144, 20,234, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,239, 5, 0, 0,112, 0, 0, 0, 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,128, 86,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,224, 87,233, 19, 1, 0, 0, 0, 32, 85,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, +239, 5, 0, 0,112, 0, 0, 0, 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, 80, 23,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,176, 24,234, 19, 1, 0, 0, 0,240, 21,234, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 7, 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, 68, 65, 84, 65, + 40, 1, 0, 0,176, 24,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 23,234, 19, + 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, 8, 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, +239, 5, 0, 0,112, 0, 0, 0, 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, +248, 0, 0, 0, 16, 26,234, 19, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, 0, 30,234, 19, 1, 0, 0, 0, 48, 19,234, 19, + 1, 0, 0, 0,144, 20,234, 19, 1, 0, 0, 0,176, 24,234, 19, 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, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 27,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,160, 28,234, 19, 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, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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,160, 28,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 27,234, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0,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, 0, 30,234, 19, 1, 0, 0, 0,174, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 26,234, 19, 1, 0, 0, 0, 64, 27,234, 19, 1, 0, 0, 0,160, 28,234, 19, + 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,128, 31,234, 19, 1, 0, 0, 0,192, 0, 0, 0, + 1, 0, 0, 0,112,191,234, 19, 1, 0, 0, 0,208,115,233, 19, 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,144, 32,234, 19, 1, 0, 0, 0,112, 37,234, 19, 1, 0, 0, 0,208, 37,234, 19, + 1, 0, 0, 0,176, 45,234, 19, 1, 0, 0, 0, 16, 46,234, 19, 1, 0, 0, 0,176,169,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 6, 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, 32, 0, 0, 0,144, 32,234, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240, 32,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 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,240, 32,234, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 80, 33,234, 19, 1, 0, 0, 0,144, 32,234, 19, 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, 33,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176, 33,234, 19, + 1, 0, 0, 0,240, 32,234, 19, 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, 33,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 34,234, 19, 1, 0, 0, 0, 80, 33,234, 19, + 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, 16, 34,234, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 34,234, 19, 1, 0, 0, 0,176, 33,234, 19, 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,112, 34,234, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,208, 34,234, 19, 1, 0, 0, 0, 16, 34,234, 19, 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,208, 34,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48, 35,234, 19, + 1, 0, 0, 0,112, 34,234, 19, 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, 48, 35,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 35,234, 19, 1, 0, 0, 0,208, 34,234, 19, + 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,144, 35,234, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240, 35,234, 19, 1, 0, 0, 0, 48, 35,234, 19, 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,240, 35,234, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 80, 36,234, 19, 1, 0, 0, 0,144, 35,234, 19, 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, 80, 36,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176, 36,234, 19, + 1, 0, 0, 0,240, 35,234, 19, 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,176, 36,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 37,234, 19, 1, 0, 0, 0, 80, 36,234, 19, + 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, 16, 37,234, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 37,234, 19, 1, 0, 0, 0,176, 36,234, 19, 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,112, 37,234, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 37,234, 19, 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,208, 37,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48, 38,234, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 32,234, 19, 1, 0, 0, 0, 80, 33,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48, 38,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144, 38,234, 19, + 1, 0, 0, 0,208, 37,234, 19, 1, 0, 0, 0,240, 32,234, 19, 1, 0, 0, 0, 16, 34,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144, 38,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240, 38,234, 19, + 1, 0, 0, 0, 48, 38,234, 19, 1, 0, 0, 0, 80, 33,234, 19, 1, 0, 0, 0,112, 34,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 38,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80, 39,234, 19, + 1, 0, 0, 0,144, 38,234, 19, 1, 0, 0, 0, 16, 34,234, 19, 1, 0, 0, 0,112, 34,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 39,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176, 39,234, 19, + 1, 0, 0, 0,240, 38,234, 19, 1, 0, 0, 0,112, 34,234, 19, 1, 0, 0, 0,208, 34,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176, 39,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16, 40,234, 19, + 1, 0, 0, 0, 80, 39,234, 19, 1, 0, 0, 0, 16, 34,234, 19, 1, 0, 0, 0,208, 34,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16, 40,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112, 40,234, 19, + 1, 0, 0, 0,176, 39,234, 19, 1, 0, 0, 0,176, 33,234, 19, 1, 0, 0, 0, 48, 35,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112, 40,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208, 40,234, 19, + 1, 0, 0, 0, 16, 40,234, 19, 1, 0, 0, 0,144, 32,234, 19, 1, 0, 0, 0,144, 35,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208, 40,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48, 41,234, 19, + 1, 0, 0, 0,112, 40,234, 19, 1, 0, 0, 0, 16, 34,234, 19, 1, 0, 0, 0,144, 35,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48, 41,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144, 41,234, 19, + 1, 0, 0, 0,208, 40,234, 19, 1, 0, 0, 0,208, 34,234, 19, 1, 0, 0, 0,240, 35,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144, 41,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240, 41,234, 19, + 1, 0, 0, 0, 48, 41,234, 19, 1, 0, 0, 0, 48, 35,234, 19, 1, 0, 0, 0,240, 35,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 41,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80, 42,234, 19, + 1, 0, 0, 0,144, 41,234, 19, 1, 0, 0, 0,144, 35,234, 19, 1, 0, 0, 0,240, 35,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 42,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176, 42,234, 19, + 1, 0, 0, 0,240, 41,234, 19, 1, 0, 0, 0,144, 32,234, 19, 1, 0, 0, 0, 80, 36,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176, 42,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16, 43,234, 19, + 1, 0, 0, 0, 80, 42,234, 19, 1, 0, 0, 0, 48, 35,234, 19, 1, 0, 0, 0, 80, 36,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16, 43,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112, 43,234, 19, + 1, 0, 0, 0,176, 42,234, 19, 1, 0, 0, 0,144, 35,234, 19, 1, 0, 0, 0,176, 36,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112, 43,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208, 43,234, 19, + 1, 0, 0, 0, 16, 43,234, 19, 1, 0, 0, 0,240, 35,234, 19, 1, 0, 0, 0,176, 36,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208, 43,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48, 44,234, 19, + 1, 0, 0, 0,112, 43,234, 19, 1, 0, 0, 0, 80, 36,234, 19, 1, 0, 0, 0,176, 36,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48, 44,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144, 44,234, 19, + 1, 0, 0, 0,208, 43,234, 19, 1, 0, 0, 0, 48, 35,234, 19, 1, 0, 0, 0, 16, 37,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144, 44,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240, 44,234, 19, + 1, 0, 0, 0, 48, 44,234, 19, 1, 0, 0, 0,208, 34,234, 19, 1, 0, 0, 0, 16, 37,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 44,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80, 45,234, 19, + 1, 0, 0, 0,144, 44,234, 19, 1, 0, 0, 0,112, 34,234, 19, 1, 0, 0, 0,112, 37,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 45,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176, 45,234, 19, + 1, 0, 0, 0,240, 44,234, 19, 1, 0, 0, 0,176, 33,234, 19, 1, 0, 0, 0,112, 37,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176, 45,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80, 45,234, 19, 1, 0, 0, 0, 16, 37,234, 19, 1, 0, 0, 0,112, 37,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 16, 46,234, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,176, 49,234, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 34,234, 19, 1, 0, 0, 0,240, 32,234, 19, 1, 0, 0, 0, 80, 33,234, 19, + 1, 0, 0, 0,112, 34,234, 19, 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,240,190,234, 19, + 1, 0, 0, 0,240,190,234, 19, 1, 0, 0, 0,240, 46,234, 19, 1, 0, 0, 0, 80, 48,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 46,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 80, 48,234, 19, 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,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, 80, 48,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 46,234, 19, + 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, +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, 68, 65, 84, 65, 40, 1, 0, 0,224, 87,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 86,233, 19, 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, 8, 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,239, 5, 0, 0,112, 0, 0, 0, 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, 68, 65, 84, 65, +160, 0, 0, 0,176, 49,234, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 16, 81,234, 19, 1, 0, 0, 0, 16, 46,234, 19, + 1, 0, 0, 0, 48, 35,234, 19, 1, 0, 0, 0, 16, 37,234, 19, 1, 0, 0, 0,112, 37,234, 19, 1, 0, 0, 0,176, 33,234, 19, + 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,240, 68,234, 19, 1, 0, 0, 0,160, 79,234, 19, + 1, 0, 0, 0,144, 50,234, 19, 1, 0, 0, 0,240, 51,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 50,234, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,240, 51,234, 19, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64, 89,233, 19, 1, 0, 0, 0, -165, 0, 0, 0, 1, 0, 0, 0, 48, 93,233, 19, 1, 0, 0, 0, 96, 82,233, 19, 1, 0, 0, 0,192, 83,233, 19, 1, 0, 0, 0, -224, 87,233, 19, 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, +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, 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,240, 51,234, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 50,234, 19, 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, + 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, 80, 53,234, 19, 1, 0, 0, 0, 96, 67,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 53,234, 19, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224, 54,234, 19, 1, 0, 0, 0, 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, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 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, 90,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,208, 91,233, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, - 26, 0,152, 4, 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,151, 4, 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, -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, 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,126, 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, - 68, 65, 84, 65, 40, 1, 0, 0,208, 91,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, 90,233, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0,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, 93,233, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64, 89,233, 19, 1, 0, 0, 0,112, 90,233, 19, 1, 0, 0, 0,208, 91,233, 19, 1, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224, 54,234, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112, 56,234, 19, + 1, 0, 0, 0, 80, 53,234, 19, 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, +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,112, 56,234, 19, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 58,234, 19, 1, 0, 0, 0,224, 54,234, 19, 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, 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, 94,233, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, 59,233, 19, 1, 0, 0, 0,240,210,232, 19, 1, 0, 0, 0, 48,210,232, 19, 1, 0, 0, 0,144,213,232, 19, 1, 0, 0, 0, - 48,213,232, 19, 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,208, 97,233, 19, 1, 0, 0, 0, - 96,122,233, 19, 1, 0, 0, 0, 16, 95,233, 19, 1, 0, 0, 0,112, 96,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 95,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,112, 96,233, 19, 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, 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, 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, -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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255,126, 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, 68, 65, 84, 65, 40, 1, 0, 0, -112, 96,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 95,233, 19, 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, 68, 65, 84, 65, 88, 1, 0, 0, 0, 58,234, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 59,234, 19, + 1, 0, 0, 0,112, 56,234, 19, 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,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, 68, 65, 84, 65, 40, 1, 0, 0, -208, 97,233, 19, 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0,112,107,233, 19, 1, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,144, 59,234, 19, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32, 61,234, 19, 1, 0, 0, 0, 0, 58,234, 19, 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, 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, 32, 61,234, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176, 62,234, 19, + 1, 0, 0, 0,144, 59,234, 19, 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,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, 48, 99,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, - 48, 99,233, 19, 1, 0, 0, 0,220, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,128, 99,233, 19, 1, 0, 0, 0, - 68, 65, 84, 65,208, 0, 0, 0,128, 99,233, 19, 1, 0, 0, 0,219, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 48,154, 5, 3, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48,154, 5, 3, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, - 48,154, 5, 3, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48,154, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,166, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,182, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -112,193,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,194, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -112,191,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,188, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,162, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,176, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -128,185,234, 19, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,100,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -240,101,233, 19, 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, 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,212, 0, 26, 0,212, 0, 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,211, 0, 0, 0, 41, 1, 0, 0, 66, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,176, 62,234, 19, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 64,234, 19, 1, 0, 0, 0, 32, 61,234, 19, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,101,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 80,103,233, 19, 1, 0, 0, 0,144,100,233, 19, 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, 0, 0, 0, 0, 0, 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, 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, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,103,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -176,104,233, 19, 1, 0, 0, 0,240,101,233, 19, 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,211, 0, 0, 0, 67, 1, 0, 0, 67, 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, 68, 65, 84, 65, 88, 1, 0, 0, 64, 64,234, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208, 65,234, 19, + 1, 0, 0, 0,176, 62,234, 19, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,104,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 16,106,233, 19, 1, 0, 0, 0, 80,103,233, 19, 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, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 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,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, 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, 68, 65, 84, 65, 88, 1, 0, 0,208, 65,234, 19, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96, 67,234, 19, 1, 0, 0, 0, 64, 64,234, 19, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16,106,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,176,104,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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, 96, 67,234, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,208, 65,234, 19, 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,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,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, 68, 65, 84, 65, 0, 1, 0, 0,240, 68,234, 19, + 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,176, 75,234, 19, 1, 0, 0, 0, 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, - 48, 94, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 94, 5, 3, 1, 0, 0, 0,158, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 70,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,144, 71,234, 19, 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, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,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,144, 71,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,240, 72,234, 19, 1, 0, 0, 0, 48, 70,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112, 0, 0, 0,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,240, 72,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 80, 74,234, 19, 1, 0, 0, 0,144, 71,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80, 74,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 72,234, 19, 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, 8, 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,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,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,248, 0, 0, 0,176, 75,234, 19, 1, 0, 0, 0,165, 0, 0, 0, + 1, 0, 0, 0,160, 79,234, 19, 1, 0, 0, 0,240, 68,234, 19, 1, 0, 0, 0, 48, 70,234, 19, 1, 0, 0, 0, 80, 74,234, 19, + 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, 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, 76,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 64, 78,234, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 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, 89, 6, 0, 0, +108, 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, 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, 64, 78,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 76,234, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,148, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, +104, 3, 0, 0, 48,148, 5, 3, 1, 0, 0, 0,158, 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,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, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, -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, 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, - 15,150, 72, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 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, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195, +115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 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, -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, 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, 32,193, 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, -159, 55,242, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, @@ -4674,461 +5987,967 @@ 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, 68, 65, 84, 65, + 48, 1, 0, 0,160, 79,234, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 75,234, 19, + 1, 0, 0, 0,224, 76,234, 19, 1, 0, 0, 0, 64, 78,234, 19, 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, 22, 6, 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, - 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, -112,107,233, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,144,111,233, 19, 1, 0, 0, 0,208, 97,233, 19, 1, 0, 0, 0, -144,100,233, 19, 1, 0, 0, 0, 16,106,233, 19, 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,176, 5, 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, 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, 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,108,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 48,110,233, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6, 26, 0, 24, 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, 23, 6, 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, 24, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 16, 81,234, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32,112,234, 19, + 1, 0, 0, 0,176, 49,234, 19, 1, 0, 0, 0, 80, 36,234, 19, 1, 0, 0, 0,176, 36,234, 19, 1, 0, 0, 0,240, 35,234, 19, + 1, 0, 0, 0, 48, 35,234, 19, 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,176, 84,234, 19, + 1, 0, 0, 0, 32,111,234, 19, 1, 0, 0, 0,240, 81,234, 19, 1, 0, 0, 0, 80, 83,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 81,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 80, 83,234, 19, 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, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 2, 26, 0,255, 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,241, 2, 0, 0, +239, 5, 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,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, 80, 83,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 81,234, 19, + 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,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, 68, 65, 84, 65, 40, 1, 0, 0, 48,110,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,108,233, 19, 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, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 24, 6,107, 2, 7, 6, 89, 2, 0, 0, 0, 0, 0, 0, 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,175, 1, 0, 0, 25, 4, 0, 0, - 0, 0, 0, 0, 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, 68, 65, 84, 65, +144, 1, 0, 0,176, 84,234, 19, 1, 0, 0, 0,179, 0, 0, 0, 1, 0, 0, 0, 48,152, 5, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,111,233, 19, 1, 0, 0, 0, -175, 0, 0, 0, 1, 0, 0, 0,112,118,233, 19, 1, 0, 0, 0,112,107,233, 19, 1, 0, 0, 0,208,108,233, 19, 1, 0, 0, 0, - 48,110,233, 19, 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,154, 5, 3, 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,240,112,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 80,114,233, 19, 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, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,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, 80,114,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -176,115,233, 19, 1, 0, 0, 0,240,112,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 86,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224, 87,234, 19, + 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, 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, 0, 0, 0, 0, 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, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,224, 87,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 86,234, 19, 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, + 10, 0,240, 5,130, 1,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,239, 5, 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,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, 48,152, 5, 3, 1, 0, 0, 0,171, 0, 0, 0, 1, 0, 0, 0, 0, 92,234, 19, + 1, 0, 0, 0,176, 84,234, 19, 1, 0, 0, 0,128, 86,234, 19, 1, 0, 0, 0,224, 87,234, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,115,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 16,117,233, 19, 1, 0, 0, 0, 80,114,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16,117,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,176,115,233, 19, 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, 8, 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,239, 5, 0, 0,112, 0, 0, 0, 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,248, 0, 0, 0,112,118,233, 19, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, - 96,122,233, 19, 1, 0, 0, 0,144,111,233, 19, 1, 0, 0, 0,240,112,233, 19, 1, 0, 0, 0, 16,117,233, 19, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -160,119,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0,121,233, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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,121,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,119,233, 19, 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, 8, 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,151, 4, 0, 0, -127, 0, 0, 0,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,122,233, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,118,233, 19, 1, 0, 0, 0, -160,119,233, 19, 1, 0, 0, 0, 0,121,233, 19, 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, -224,123,233, 19, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 27,234, 19, 1, 0, 0, 0,160,207,232, 19, 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,240,124,233, 19, 1, 0, 0, 0, -208,129,233, 19, 1, 0, 0, 0, 48,130,233, 19, 1, 0, 0, 0, 16,138,233, 19, 1, 0, 0, 0,112,138,233, 19, 1, 0, 0, 0, -208, 5,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,154, 5, 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, 32, 0, 0, 0,240,124,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,125,233, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 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,125,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,125,233, 19, 1, 0, 0, 0,240,124,233, 19, 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,176,125,233, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0, 16,126,233, 19, 1, 0, 0, 0, 80,125,233, 19, 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,126,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, -112,126,233, 19, 1, 0, 0, 0,176,125,233, 19, 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,126,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,126,233, 19, 1, 0, 0, 0, - 16,126,233, 19, 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, -208,126,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,127,233, 19, 1, 0, 0, 0,112,126,233, 19, 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, 48,127,233, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,144,127,233, 19, 1, 0, 0, 0,208,126,233, 19, 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,144,127,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, -240,127,233, 19, 1, 0, 0, 0, 48,127,233, 19, 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,240,127,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,128,233, 19, 1, 0, 0, 0, -144,127,233, 19, 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, - 80,128,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,128,233, 19, 1, 0, 0, 0,240,127,233, 19, 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,176,128,233, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0, 16,129,233, 19, 1, 0, 0, 0, 80,128,233, 19, 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, 16,129,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, -112,129,233, 19, 1, 0, 0, 0,176,128,233, 19, 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,112,129,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,129,233, 19, 1, 0, 0, 0, - 16,129,233, 19, 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, -208,129,233, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,129,233, 19, 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, 48,130,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,144,130,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,125,233, 19, 1, 0, 0, 0, -176,125,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,130,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,240,130,233, 19, 1, 0, 0, 0, 48,130,233, 19, 1, 0, 0, 0, 80,125,233, 19, 1, 0, 0, 0, -112,126,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,130,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 80,131,233, 19, 1, 0, 0, 0,144,130,233, 19, 1, 0, 0, 0,176,125,233, 19, 1, 0, 0, 0, -208,126,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,131,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,176,131,233, 19, 1, 0, 0, 0,240,130,233, 19, 1, 0, 0, 0,112,126,233, 19, 1, 0, 0, 0, -208,126,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,131,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 16,132,233, 19, 1, 0, 0, 0, 80,131,233, 19, 1, 0, 0, 0,208,126,233, 19, 1, 0, 0, 0, - 48,127,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,132,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,112,132,233, 19, 1, 0, 0, 0,176,131,233, 19, 1, 0, 0, 0,112,126,233, 19, 1, 0, 0, 0, - 48,127,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,132,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,208,132,233, 19, 1, 0, 0, 0, 16,132,233, 19, 1, 0, 0, 0, 16,126,233, 19, 1, 0, 0, 0, -144,127,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,132,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 48,133,233, 19, 1, 0, 0, 0,112,132,233, 19, 1, 0, 0, 0,240,124,233, 19, 1, 0, 0, 0, -240,127,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,133,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,144,133,233, 19, 1, 0, 0, 0,208,132,233, 19, 1, 0, 0, 0,112,126,233, 19, 1, 0, 0, 0, -240,127,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,133,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,240,133,233, 19, 1, 0, 0, 0, 48,133,233, 19, 1, 0, 0, 0, 48,127,233, 19, 1, 0, 0, 0, - 80,128,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,133,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 80,134,233, 19, 1, 0, 0, 0,144,133,233, 19, 1, 0, 0, 0,144,127,233, 19, 1, 0, 0, 0, - 80,128,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,134,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,176,134,233, 19, 1, 0, 0, 0,240,133,233, 19, 1, 0, 0, 0,240,127,233, 19, 1, 0, 0, 0, - 80,128,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,134,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 16,135,233, 19, 1, 0, 0, 0, 80,134,233, 19, 1, 0, 0, 0,240,124,233, 19, 1, 0, 0, 0, -176,128,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,135,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,112,135,233, 19, 1, 0, 0, 0,176,134,233, 19, 1, 0, 0, 0,144,127,233, 19, 1, 0, 0, 0, -176,128,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,135,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,208,135,233, 19, 1, 0, 0, 0, 16,135,233, 19, 1, 0, 0, 0,240,127,233, 19, 1, 0, 0, 0, - 16,129,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,135,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 48,136,233, 19, 1, 0, 0, 0,112,135,233, 19, 1, 0, 0, 0, 80,128,233, 19, 1, 0, 0, 0, - 16,129,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,136,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,144,136,233, 19, 1, 0, 0, 0,208,135,233, 19, 1, 0, 0, 0,176,128,233, 19, 1, 0, 0, 0, - 16,129,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,136,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,240,136,233, 19, 1, 0, 0, 0, 48,136,233, 19, 1, 0, 0, 0,144,127,233, 19, 1, 0, 0, 0, -112,129,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,136,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 80,137,233, 19, 1, 0, 0, 0,144,136,233, 19, 1, 0, 0, 0, 48,127,233, 19, 1, 0, 0, 0, -112,129,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,137,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,176,137,233, 19, 1, 0, 0, 0,240,136,233, 19, 1, 0, 0, 0,208,126,233, 19, 1, 0, 0, 0, -208,129,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,137,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 16,138,233, 19, 1, 0, 0, 0, 80,137,233, 19, 1, 0, 0, 0, 16,126,233, 19, 1, 0, 0, 0, -208,129,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,138,233, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,137,233, 19, 1, 0, 0, 0,112,129,233, 19, 1, 0, 0, 0, -208,129,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,112,138,233, 19, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 16,142,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,126,233, 19, 1, 0, 0, 0, - 80,125,233, 19, 1, 0, 0, 0,176,125,233, 19, 1, 0, 0, 0,208,126,233, 19, 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, 27,234, 19, 1, 0, 0, 0, 0, 27,234, 19, 1, 0, 0, 0, 80,139,233, 19, 1, 0, 0, 0, -176,140,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,139,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -176,140,233, 19, 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,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,176,140,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80,139,233, 19, 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,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, 16,142,233, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, - 96,173,233, 19, 1, 0, 0, 0,112,138,233, 19, 1, 0, 0, 0,144,127,233, 19, 1, 0, 0, 0,112,129,233, 19, 1, 0, 0, 0, -208,129,233, 19, 1, 0, 0, 0, 16,126,233, 19, 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, - 80,161,233, 19, 1, 0, 0, 0, 0,172,233, 19, 1, 0, 0, 0,240,142,233, 19, 1, 0, 0, 0, 80,144,233, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,142,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 80,144,233, 19, 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, 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, 80,144,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240,142,233, 19, 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, 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,176,145,233, 19, 1, 0, 0, 0,192,159,233, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,145,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,147,233, 19, 1, 0, 0, 0, - 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,126, 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, 64,147,233, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,208,148,233, 19, 1, 0, 0, 0,176,145,233, 19, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64, 89,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,160, 90,234, 19, 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, + 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, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,160, 90,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 89,234, 19, 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, + 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,240, 5,130, 1,223, 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, 0, 0, 0, 0,239, 5, 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,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,135,255,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, 68, 65, 84, 65, 32, 1, 0, 0, 0, 92,234, 19, 1, 0, 0, 0,175, 0, 0, 0, + 1, 0, 0, 0,224, 98,234, 19, 1, 0, 0, 0, 48,152, 5, 3, 1, 0, 0, 0, 64, 89,234, 19, 1, 0, 0, 0,160, 90,234, 19, + 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, - 68, 65, 84, 65, 88, 1, 0, 0,208,148,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,150,233, 19, 1, 0, 0, 0, - 64,147,233, 19, 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,126, 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, 48, 0, 6, 3, 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, 96, 93,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,192, 94,234, 19, + 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, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,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, 94,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32, 96,234, 19, + 1, 0, 0, 0, 96, 93,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,239, 5, 0, 0,112, 0, 0, 0, 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, 96,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128, 97,234, 19, + 1, 0, 0, 0,192, 94,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0, 96,150,233, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,240,151,233, 19, 1, 0, 0, 0,208,148,233, 19, 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, 68, 65, 84, 65, 40, 1, 0, 0,128, 97,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32, 96,234, 19, 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, + 8, 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,239, 5, 0, 0,112, 0, 0, 0, 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, 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,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, 68, 65, 84, 65,248, 0, 0, 0,224, 98,234, 19, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0,240,106,234, 19, + 1, 0, 0, 0, 0, 92,234, 19, 1, 0, 0, 0, 96, 93,234, 19, 1, 0, 0, 0,128, 97,234, 19, 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, 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,100,234, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,112,101,234, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 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,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0, +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,112,101,234, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,208,102,234, 19, 1, 0, 0, 0, 16,100,234, 19, 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,153, 2, 0, 0,153, 2, 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, 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,208,102,234, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 48,104,234, 19, 1, 0, 0, 0,112,101,234, 19, 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,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, +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, 48,104,234, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,144,105,234, 19, 1, 0, 0, 0,208,102,234, 19, 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, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 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,251, 1, 0, 0, + 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,144,105,234, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,104,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 48,156, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48,156, 5, 3, + 1, 0, 0, 0,158, 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, + 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,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, + 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, + 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190, +250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68, +160, 87,135,195,205,209,166, 67,151,254, 71, 66, 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,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, + 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, + 0, 0, 0, 0, 96,132,111, 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, 0, 0,218,210,190, 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, - 68, 65, 84, 65, 88, 1, 0, 0,240,151,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,153,233, 19, 1, 0, 0, 0, - 96,150,233, 19, 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, 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,128,153,233, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 16,155,233, 19, 1, 0, 0, 0,240,151,233, 19, 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,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, 68, 65, 84, 65, 48, 1, 0, 0,240,106,234, 19, + 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 32,111,234, 19, 1, 0, 0, 0,224, 98,234, 19, 1, 0, 0, 0, 16,100,234, 19, + 1, 0, 0, 0,144,105,234, 19, 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, 22, 6, 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, 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, 96,108,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,192,109,234, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, + 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, +151, 4, 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,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,192,109,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,108,234, 19, + 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, 8, 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, - 68, 65, 84, 65, 88, 1, 0, 0, 16,155,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,156,233, 19, 1, 0, 0, 0, -128,153,233, 19, 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, +151, 4, 0, 0,127, 0, 0, 0,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, 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, 68, 65, 84, 65, +200, 0, 0, 0, 32,111,234, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,106,234, 19, + 1, 0, 0, 0, 96,108,234, 19, 1, 0, 0, 0,192,109,234, 19, 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, 68, 65, 84, 65, 88, 1, 0, 0,160,156,233, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 48,158,233, 19, 1, 0, 0, 0, 16,155,233, 19, 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, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, +160, 0, 0, 0, 32,112,234, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,160,138,234, 19, 1, 0, 0, 0, 16, 81,234, 19, + 1, 0, 0, 0,144, 35,234, 19, 1, 0, 0, 0, 16, 34,234, 19, 1, 0, 0, 0,208, 34,234, 19, 1, 0, 0, 0,240, 35,234, 19, + 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,160, 5, 3, 1, 0, 0, 0,160,137,234, 19, + 1, 0, 0, 0, 0,113,234, 19, 1, 0, 0, 0, 96,114,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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,113,234, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 96,114,234, 19, 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,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, 96,114,234, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,113,234, 19, 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,160, 5, 3, + 1, 0, 0, 0,171, 0, 0, 0, 1, 0, 0, 0,128,118,234, 19, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,158,233, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,159,233, 19, 1, 0, 0, 0, -160,156,233, 19, 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, 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,192,159,233, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,158,233, 19, 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,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, 80,161,233, 19, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 16,168,233, 19, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,115,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32,117,234, 19, 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, 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,157, 1, 0, 0,182, 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, 32,117,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,115,234, 19, + 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, 0, 0,240, 5, 92, 2,223, 5, + 74, 2, 0, 0, 0, 0, 0, 0, 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,183, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,118,234, 19, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, 96,125,234, 19, 1, 0, 0, 0, 48,160, 5, 3, + 1, 0, 0, 0,192,115,234, 19, 1, 0, 0, 0, 32,117,234, 19, 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, 0, 6, 3, 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,224,119,234, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 64,121,234, 19, 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, + 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0, +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,121,234, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,160,122,234, 19, 1, 0, 0, 0,224,119,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,239, 5, 0, 0,112, 0, 0, 0, + 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,122,234, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0,124,234, 19, 1, 0, 0, 0, 64,121,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0,124,234, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,122,234, 19, 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, 8, 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,239, 5, 0, 0,112, 0, 0, 0, + 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,248, 0, 0, 0, 96,125,234, 19, + 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0,112,133,234, 19, 1, 0, 0, 0,128,118,234, 19, 1, 0, 0, 0,224,119,234, 19, + 1, 0, 0, 0, 0,124,234, 19, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,126,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,240,127,234, 19, + 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, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,232, 4, 26, 0,232, 4, 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,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,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,240,127,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 80,129,234, 19, + 1, 0, 0, 0,144,126,234, 19, 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,153, 2, 0, 0,153, 2, 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, 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, 80,129,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,176,130,234, 19, + 1, 0, 0, 0,240,127,234, 19, 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,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,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,176,130,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 16,132,234, 19, + 1, 0, 0, 0, 80,129,234, 19, 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, + 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 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,251, 1, 0, 0, 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, 16,132,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,176,130,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 48,164, 5, 3, + 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48,164, 5, 3, 1, 0, 0, 0,158, 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, 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, +169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188, +102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, + 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196, +135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 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, +169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188, +102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 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, 0, 0,218,210,190, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,112,133,234, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,160,137,234, 19, + 1, 0, 0, 0, 96,125,234, 19, 1, 0, 0, 0,144,126,234, 19, 1, 0, 0, 0, 16,132,234, 19, 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, 22, 6, 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, 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,134,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 64,136,234, 19, 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, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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,136,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,134,234, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0,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,160,137,234, 19, 1, 0, 0, 0,174, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,133,234, 19, 1, 0, 0, 0,224,134,234, 19, 1, 0, 0, 0, 64,136,234, 19, + 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,138,234, 19, 1, 0, 0, 0,196, 0, 0, 0, + 1, 0, 0, 0,176,169,234, 19, 1, 0, 0, 0, 32,112,234, 19, 1, 0, 0, 0,144, 32,234, 19, 1, 0, 0, 0,144, 35,234, 19, + 1, 0, 0, 0,176, 36,234, 19, 1, 0, 0, 0, 80, 36,234, 19, 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, 64,142,234, 19, 1, 0, 0, 0,176,168,234, 19, 1, 0, 0, 0,128,139,234, 19, 1, 0, 0, 0,224,140,234, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,139,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224,140,234, 19, + 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, + 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, 2, 26, 0,240, 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,239, 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,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,140,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128,139,234, 19, 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,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,144, 1, 0, 0, 64,142,234, 19, 1, 0, 0, 0,179, 0, 0, 0, 1, 0, 0, 0, 48,168, 5, 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, 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, + 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -144,162,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,240,163,233, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, - 85, 0, 0, 0,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, -240,163,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 80,165,233, 19, 1, 0, 0, 0,144,162,233, 19, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,144,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,112,145,234, 19, 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, 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, 0, 0, 0, 0, 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,112,145,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,144,234, 19, 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, 10, 0,240, 5,130, 1,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,239, 5, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0, -112, 0, 0, 0,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, 68, 65, 84, 65,144, 2, 0, 0, 48,168, 5, 3, 1, 0, 0, 0,171, 0, 0, 0, + 1, 0, 0, 0,144,149,234, 19, 1, 0, 0, 0, 64,142,234, 19, 1, 0, 0, 0, 16,144,234, 19, 1, 0, 0, 0,112,145,234, 19, + 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, 68, 65, 84, 65, 40, 1, 0, 0, - 80,165,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,176,166,233, 19, 1, 0, 0, 0,240,163,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, -176,166,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,165,233, 19, 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, 8, 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,157, 5, 0, 0,128, 7, 0, 0, -112, 0, 0, 0,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,248, 0, 0, 0, - 16,168,233, 19, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, 0,172,233, 19, 1, 0, 0, 0, 80,161,233, 19, 1, 0, 0, 0, -144,162,233, 19, 1, 0, 0, 0,176,166,233, 19, 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, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,169,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -160,170,233, 19, 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, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 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, 89, 6, 0, 0,108, 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, 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,160,170,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 64,169,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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,146,234, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 48,148,234, 19, 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, 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, 0, 0, 0, 0, + 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, 48,148,234, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,146,234, 19, 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, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,240, 5,130, 1,223, 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, 0, 0, 0, 0,239, 5, 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,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,144,149,234, 19, + 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0,112,156,234, 19, 1, 0, 0, 0, 48,168, 5, 3, 1, 0, 0, 0,208,146,234, 19, + 1, 0, 0, 0, 48,148,234, 19, 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, 0, 6, 3, + 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,240,150,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 80,152,234, 19, 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, 0, 0,128, 63, 0, 0, 0, 0, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,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, 80,152,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,176,153,234, 19, 1, 0, 0, 0,240,150,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,239, 5, 0, 0,112, 0, 0, 0, 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,176,153,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 16,155,234, 19, 1, 0, 0, 0, 80,152,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16,155,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,153,234, 19, 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, 8, 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,239, 5, 0, 0,112, 0, 0, 0, 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,248, 0, 0, 0,112,156,234, 19, 1, 0, 0, 0,165, 0, 0, 0, + 1, 0, 0, 0,128,164,234, 19, 1, 0, 0, 0,144,149,234, 19, 1, 0, 0, 0,240,150,234, 19, 1, 0, 0, 0, 16,155,234, 19, + 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 1, 0, 0,160,157,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0,159,234, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, + 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,153, 2, 0, 0, +128, 7, 0, 0,225, 1, 0, 0,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, 0,159,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 96,160,234, 19, 1, 0, 0, 0,160,157,234, 19, + 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,153, 2, 0, 0, +153, 2, 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, 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, 96,160,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,192,161,234, 19, 1, 0, 0, 0, 0,159,234, 19, + 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,153, 2, 0, 0, +128, 7, 0, 0,251, 1, 0, 0,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,192,161,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32,163,234, 19, 1, 0, 0, 0, 96,160,234, 19, + 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, 6, 0,180, 0,122, 2,163, 0, +104, 2, 0, 0, 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,251, 1, 0, 0, 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,163,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,161,234, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 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, 48,172, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, +104, 3, 0, 0, 48,172, 5, 3, 1, 0, 0, 0,158, 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, 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,169,203,131,191,222,160, 81,191, +184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, + 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, + 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195, +136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 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,169,203,131,191,222,160, 81,191, +184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, + 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 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, 0, 0,218,210,190, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 48, 1, 0, 0,128,164,234, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,176,168,234, 19, 1, 0, 0, 0,112,156,234, 19, + 1, 0, 0, 0,160,157,234, 19, 1, 0, 0, 0, 32,163,234, 19, 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, 22, 6, 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, 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,165,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 80,167,234, 19, + 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, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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,167,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,165,234, 19, 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, + 8, 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,151, 4, 0, 0,127, 0, 0, 0,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,176,168,234, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128,164,234, 19, 1, 0, 0, 0,240,165,234, 19, 1, 0, 0, 0, 80,167,234, 19, 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,169,234, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,160,138,234, 19, 1, 0, 0, 0, 16, 37,234, 19, 1, 0, 0, 0,208, 34,234, 19, 1, 0, 0, 0,112, 34,234, 19, + 1, 0, 0, 0,112, 37,234, 19, 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, 80,173,234, 19, + 1, 0, 0, 0,128,189,234, 19, 1, 0, 0, 0,144,170,234, 19, 1, 0, 0, 0,240,171,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,170,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,240,171,234, 19, 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, 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,240,171,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,170,234, 19, + 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, 80,173,234, 19, 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0,208,178,234, 19, 1, 0, 0, 0, 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,176,174,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 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,174,234, 19, 1, 0, 0, 0,220, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 0,175,234, 19, + 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 0,175,234, 19, 1, 0, 0, 0,219, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 48, 0, 6, 3, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48, 0, 6, 3, 1, 0, 0, 0, 20, 0, 0, 0, + 1, 0, 1, 0, 48, 0, 6, 3, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48, 0, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 48, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 28, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 64,100,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 40, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 64, 98,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 34, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 48, 8, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48, 22, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 80, 92,235, 19, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,176,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,112,177,234, 19, 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, 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, 44, 1, 31, 0, 44, 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,117, 4, 0, 0,160, 5, 0, 0,218, 2, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 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,112,177,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,176,234, 19, 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, 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, 44, 1,141, 0, 27, 1,123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 4, 0, 0,160, 5, 0, 0, 77, 2, 0, 0,217, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 1,141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,178,234, 19, 1, 0, 0, 0,164, 0, 0, 0, + 1, 0, 0, 0,144,185,234, 19, 1, 0, 0, 0, 80,173,234, 19, 1, 0, 0, 0, 16,176,234, 19, 1, 0, 0, 0,112,177,234, 19, + 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, 16,180,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,112,181,234, 19, + 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, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,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,181,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,208,182,234, 19, + 1, 0, 0, 0, 16,180,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112, 0, 0, 0,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,182,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 48,184,234, 19, + 1, 0, 0, 0,112,181,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48,184,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,208,182,234, 19, 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, + 8, 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,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,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,248, 0, 0, 0,144,185,234, 19, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0,128,189,234, 19, + 1, 0, 0, 0,208,178,234, 19, 1, 0, 0, 0, 16,180,234, 19, 1, 0, 0, 0, 48,184,234, 19, 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, 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, - 48, 98, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48, 98, 5, 3, 1, 0, 0, 0,158, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,186,234, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32,188,234, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 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, 89, 6, 0, 0,108, 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, 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, 32,188,234, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,186,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48,176, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48,176, 5, 3, + 1, 0, 0, 0,158, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, -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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, -237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, + 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,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, 0, + 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, + 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, -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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, + 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,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, 0, + 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5136,82 +6955,139 @@ 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, 48, 1, 0, 0,128,189,234, 19, + 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,185,234, 19, 1, 0, 0, 0,192,186,234, 19, + 1, 0, 0, 0, 32,188,234, 19, 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, 22, 6, 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, 68, 65, 84, 65, 32, 1, 0, 0, - 0,172,233, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,168,233, 19, 1, 0, 0, 0, - 64,169,233, 19, 1, 0, 0, 0,160,170,233, 19, 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,176, 5, 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, 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,112,191,234, 19, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96,249,234, 19, 1, 0, 0, 0,128, 31,234, 19, + 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,128,192,234, 19, + 1, 0, 0, 0, 32,195,234, 19, 1, 0, 0, 0,128,195,234, 19, 1, 0, 0, 0, 64,199,234, 19, 1, 0, 0, 0,160,199,234, 19, + 1, 0, 0, 0,224,221,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 6, 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, 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, 96,173,233, 19, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 96,204,233, 19, 1, 0, 0, 0, 16,142,233, 19, 1, 0, 0, 0,176,128,233, 19, 1, 0, 0, 0, - 16,129,233, 19, 1, 0, 0, 0, 80,128,233, 19, 1, 0, 0, 0,144,127,233, 19, 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, 0,177,233, 19, 1, 0, 0, 0, 96,203,233, 19, 1, 0, 0, 0, 64,174,233, 19, 1, 0, 0, 0, -160,175,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,174,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -160,175,233, 19, 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, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,255, 2, 26, 0,255, 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,241, 2, 0, 0,239, 5, 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,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, 68, 65, 84, 65, 32, 0, 0, 0,128,192,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,192,234, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 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,192,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,193,234, 19, 1, 0, 0, 0,128,192,234, 19, + 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, 64,193,234, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,193,234, 19, 1, 0, 0, 0,224,192,234, 19, 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,160,193,234, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 0,194,234, 19, 1, 0, 0, 0, 64,193,234, 19, 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,194,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,194,234, 19, + 1, 0, 0, 0,160,193,234, 19, 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, 96,194,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,194,234, 19, 1, 0, 0, 0, 0,194,234, 19, + 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,192,194,234, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,195,234, 19, 1, 0, 0, 0, 96,194,234, 19, 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, 32,195,234, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,194,234, 19, 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,128,195,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224,195,234, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,192,234, 19, 1, 0, 0, 0, 64,193,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224,195,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 64,196,234, 19, + 1, 0, 0, 0,128,195,234, 19, 1, 0, 0, 0,224,192,234, 19, 1, 0, 0, 0, 0,194,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64,196,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,160,196,234, 19, + 1, 0, 0, 0,224,195,234, 19, 1, 0, 0, 0, 64,193,234, 19, 1, 0, 0, 0, 96,194,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160,196,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0,197,234, 19, + 1, 0, 0, 0, 64,196,234, 19, 1, 0, 0, 0, 0,194,234, 19, 1, 0, 0, 0, 96,194,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0,197,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 96,197,234, 19, + 1, 0, 0, 0,160,196,234, 19, 1, 0, 0, 0, 0,194,234, 19, 1, 0, 0, 0,192,194,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96,197,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,192,197,234, 19, + 1, 0, 0, 0, 0,197,234, 19, 1, 0, 0, 0,128,192,234, 19, 1, 0, 0, 0, 32,195,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192,197,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 32,198,234, 19, + 1, 0, 0, 0, 96,197,234, 19, 1, 0, 0, 0,128,192,234, 19, 1, 0, 0, 0, 0,194,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32,198,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,128,198,234, 19, + 1, 0, 0, 0,192,197,234, 19, 1, 0, 0, 0,192,194,234, 19, 1, 0, 0, 0, 32,195,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,198,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224,198,234, 19, + 1, 0, 0, 0, 32,198,234, 19, 1, 0, 0, 0, 96,194,234, 19, 1, 0, 0, 0,192,194,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224,198,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 64,199,234, 19, + 1, 0, 0, 0,128,198,234, 19, 1, 0, 0, 0,160,193,234, 19, 1, 0, 0, 0, 32,195,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64,199,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,224,198,234, 19, 1, 0, 0, 0,160,193,234, 19, 1, 0, 0, 0, 96,194,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,160,199,234, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64,203,234, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194,234, 19, 1, 0, 0, 0,224,192,234, 19, 1, 0, 0, 0, 64,193,234, 19, + 1, 0, 0, 0, 96,194,234, 19, 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,224,248,234, 19, + 1, 0, 0, 0,224,248,234, 19, 1, 0, 0, 0,128,200,234, 19, 1, 0, 0, 0,224,201,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,200,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224,201,234, 19, 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,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,224,201,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,200,234, 19, + 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, +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, 68, 65, 84, 65, 40, 1, 0, 0,160,175,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 64,174,233, 19, 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,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, 68, 65, 84, 65, +160, 0, 0, 0, 64,203,234, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,224,221,234, 19, 1, 0, 0, 0,160,199,234, 19, + 1, 0, 0, 0,128,192,234, 19, 1, 0, 0, 0, 0,194,234, 19, 1, 0, 0, 0,192,194,234, 19, 1, 0, 0, 0, 32,195,234, 19, + 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, 48,180, 5, 3, 1, 0, 0, 0,224,220,234, 19, + 1, 0, 0, 0, 32,204,234, 19, 1, 0, 0, 0,112,208,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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,204,234, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128,205,234, 19, 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, 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,196, 3, 26, 0,196, 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,195, 3, 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,196, 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, 68, 65, 84, 65,144, 1, 0, 0, 0,177,233, 19, 1, 0, 0, 0,179, 0, 0, 0, 1, 0, 0, 0, - 48,102, 5, 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, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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,205,234, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,112,208,234, 19, 1, 0, 0, 0, 32,204,234, 19, 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,224,206,234, 19, 1, 0, 0, 0,224,206,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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,206,234, 19, + 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,178,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 48,180,233, 19, 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, 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, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,112,208,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128,205,234, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,180,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,178,233, 19, 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, 10, 0,240, 5,130, 1,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,239, 5, 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,240, 5,130, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0, 48,102, 5, 3, 1, 0, 0, 0, -171, 0, 0, 0, 1, 0, 0, 0, 80,184,233, 19, 1, 0, 0, 0, 0,177,233, 19, 1, 0, 0, 0,208,178,233, 19, 1, 0, 0, 0, - 48,180,233, 19, 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, 68, 65, 84, 65,192, 24, 0, 0, 48,180, 5, 3, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0,176,216,234, 19, + 1, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5227,154 +7103,52 @@ 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, 68, 65, 84, 65, 40, 1, 0, 0, -144,181,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,240,182,233, 19, 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, 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, - 0, 0, 0, 0, 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, -240,182,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,181,233, 19, 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, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,240, 5,130, 1,223, 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, 0, 0, 0, 0,239, 5, 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,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,184,233, 19, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, 48,191,233, 19, 1, 0, 0, 0, 48,102, 5, 3, 1, 0, 0, 0, -144,181,233, 19, 1, 0, 0, 0,240,182,233, 19, 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,154, 5, 3, 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,185,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 16,187,233, 19, 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, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,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, 16,187,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,112,188,233, 19, 1, 0, 0, 0,176,185,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,239, 5, 0, 0,112, 0, 0, 0, 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,112,188,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,208,189,233, 19, 1, 0, 0, 0, 16,187,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0,208,189,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,188,233, 19, 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, 8, 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,239, 5, 0, 0,112, 0, 0, 0, 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,248, 0, 0, 0, 48,191,233, 19, 1, 0, 0, 0, -165, 0, 0, 0, 1, 0, 0, 0, 64,199,233, 19, 1, 0, 0, 0, 80,184,233, 19, 1, 0, 0, 0,176,185,233, 19, 1, 0, 0, 0, -208,189,233, 19, 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, 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,192,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,192,193,233, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, - 26, 0,232, 4, 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, -153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,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,193,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32,195,233, 19, 1, 0, 0, 0, - 96,192,233, 19, 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, -153, 2, 0, 0,153, 2, 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, - 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,195,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128,196,233, 19, 1, 0, 0, 0, -192,193,233, 19, 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, -153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,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,196,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224,197,233, 19, 1, 0, 0, 0, - 32,195,233, 19, 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, 6, 0,180, 0, -122, 2,163, 0,104, 2, 0, 0, 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,251, 1, 0, 0, 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,197,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128,196,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 48,106, 5, 3, 1, 0, 0, 0, - 68, 65, 84, 65, 88, 3, 0, 0, 48,106, 5, 3, 1, 0, 0, 0,158, 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, 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,169,203,131,191, -222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63, -224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, - 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 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,169,203,131,191, -222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 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, 0, 0,218,210,190, 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, @@ -5383,73 +7157,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, 68, 65, 84, 65, 32, 1, 0, 0, 64,199,233, 19, 1, 0, 0, 0, -159, 0, 0, 0, 1, 0, 0, 0, 96,203,233, 19, 1, 0, 0, 0, 48,191,233, 19, 1, 0, 0, 0, 96,192,233, 19, 1, 0, 0, 0, -224,197,233, 19, 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,176, 5, 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, - 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,200,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0,202,233, 19, 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, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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,202,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160,200,233, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0,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,203,233, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 64,199,233, 19, 1, 0, 0, 0,160,200,233, 19, 1, 0, 0, 0, 0,202,233, 19, 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,204,233, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -208,230,233, 19, 1, 0, 0, 0, 96,173,233, 19, 1, 0, 0, 0,240,127,233, 19, 1, 0, 0, 0,112,126,233, 19, 1, 0, 0, 0, - 48,127,233, 19, 1, 0, 0, 0, 80,128,233, 19, 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,110, 5, 3, 1, 0, 0, 0,208,229,233, 19, 1, 0, 0, 0, 64,205,233, 19, 1, 0, 0, 0,160,206,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,205,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,160,206,233, 19, 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,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,160,206,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64,205,233, 19, 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,110, 5, 3, 1, 0, 0, 0,171, 0, 0, 0, 1, 0, 0, 0,192,210,233, 19, 1, 0, 0, 0, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5467,154 +7190,51 @@ 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, 68, 65, 84, 65, 40, 1, 0, 0, 0,208,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 96,209,233, 19, 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, 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,157, 1, 0, 0,182, 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, 96,209,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,208,233, 19, 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, 0, 0,240, 5, 92, 2,223, 5, 74, 2, 0, 0, 0, 0, 0, 0, 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,183, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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,210,233, 19, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0, -160,217,233, 19, 1, 0, 0, 0, 48,110, 5, 3, 1, 0, 0, 0, 0,208,233, 19, 1, 0, 0, 0, 96,209,233, 19, 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,154, 5, 3, 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,212,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128,213,233, 19, 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, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, - 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,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,128,213,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224,214,233, 19, 1, 0, 0, 0, - 32,212,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,239, 5, 0, 0,112, 0, 0, 0, 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,214,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 64,216,233, 19, 1, 0, 0, 0, -128,213,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, - 68, 65, 84, 65, 40, 1, 0, 0, 64,216,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -224,214,233, 19, 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, 8, 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,239, 5, 0, 0,112, 0, 0, 0, 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,248, 0, 0, 0,160,217,233, 19, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0,176,225,233, 19, 1, 0, 0, 0, -192,210,233, 19, 1, 0, 0, 0, 32,212,233, 19, 1, 0, 0, 0, 64,216,233, 19, 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, - 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,218,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 48,220,233, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 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,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,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, 48,220,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,144,221,233, 19, 1, 0, 0, 0,208,218,233, 19, 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,153, 2, 0, 0,153, 2, 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, 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,144,221,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,240,222,233, 19, 1, 0, 0, 0, 48,220,233, 19, 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,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,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,240,222,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 80,224,233, 19, 1, 0, 0, 0,144,221,233, 19, 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, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 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,251, 1, 0, 0, 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, 80,224,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,222,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 48,114, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,114, 5, 3, 1, 0, 0, 0, -158, 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, 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,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, - 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, - 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61, -170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195, -205,209,166, 67,151,254, 71, 66, 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,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, - 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, - 96,132,111, 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, 0, 0,218,210,190, 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, @@ -5623,73 +7243,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, - 68, 65, 84, 65, 32, 1, 0, 0,176,225,233, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,208,229,233, 19, 1, 0, 0, 0, -160,217,233, 19, 1, 0, 0, 0,208,218,233, 19, 1, 0, 0, 0, 80,224,233, 19, 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,176, 5, 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, 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,227,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,112,228,233, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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,228,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,227,233, 19, 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, 8, 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,151, 4, 0, 0, -127, 0, 0, 0,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,229,233, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,225,233, 19, 1, 0, 0, 0, - 16,227,233, 19, 1, 0, 0, 0,112,228,233, 19, 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,230,233, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,208, 5,234, 19, 1, 0, 0, 0, 96,204,233, 19, 1, 0, 0, 0, -240,124,233, 19, 1, 0, 0, 0,240,127,233, 19, 1, 0, 0, 0, 16,129,233, 19, 1, 0, 0, 0,176,128,233, 19, 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,112,234,233, 19, 1, 0, 0, 0,208, 4,234, 19, 1, 0, 0, 0, -176,231,233, 19, 1, 0, 0, 0, 16,233,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,231,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 16,233,233, 19, 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, 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, 2, 26, 0,240, 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,239, 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,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, 16,233,233, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,231,233, 19, 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,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,144, 1, 0, 0,112,234,233, 19, 1, 0, 0, 0, -179, 0, 0, 0, 1, 0, 0, 0, 48,118, 5, 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, 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, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5697,32 +7261,11 @@ 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 64,236,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,160,237,233, 19, 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, 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, - 0, 0, 0, 0, 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, -160,237,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,236,233, 19, 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, 10, 0,240, 5,130, 1,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,239, 5, 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,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, - 48,118, 5, 3, 1, 0, 0, 0,171, 0, 0, 0, 1, 0, 0, 0,192,241,233, 19, 1, 0, 0, 0,112,234,233, 19, 1, 0, 0, 0, - 64,236,233, 19, 1, 0, 0, 0,160,237,233, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5737,572 +7280,835 @@ 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, 68, 65, 84, 65, + 40, 1, 0, 0,208,209,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 48,211,234, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 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, +167, 2, 0, 0, 85, 0, 0, 0,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, 48,211,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,144,212,234, 19, 1, 0, 0, 0,208,209,234, 19, + 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, 0, 0, 0, 0, + 0, 0, 0, 0,111, 0, 0, 0, 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,144,212,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,240,213,234, 19, 1, 0, 0, 0, 48,211,234, 19, + 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, +167, 2, 0, 0,111, 0, 0, 0,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, - 68, 65, 84, 65, 40, 1, 0, 0, 0,239,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 96,240,233, 19, 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, 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, 0, 0, 0, 0, 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, 68, 65, 84, 65, + 40, 1, 0, 0,240,213,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 80,215,234, 19, 1, 0, 0, 0,144,212,234, 19, + 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, 6, 0,180, 0,122, 2,163, 0, +104, 2, 0, 0, 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, +167, 2, 0, 0,111, 0, 0, 0, 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, 80,215,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,213,234, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,239,233, 19, 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, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,240, 5, -130, 1,223, 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, - 0, 0, 0, 0,239, 5, 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, -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,192,241,233, 19, 1, 0, 0, 0,175, 0, 0, 0, 1, 0, 0, 0,160,248,233, 19, 1, 0, 0, 0, - 48,118, 5, 3, 1, 0, 0, 0, 0,239,233, 19, 1, 0, 0, 0, 96,240,233, 19, 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, +167, 2, 0, 0,111, 0, 0, 0, 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, 48,206, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, +104, 3, 0, 0, 48,206, 5, 3, 1, 0, 0, 0,158, 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, 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,192, 90, 29, 63,208,249,224,190,222,160, 81,191, +184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, + 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, + 0, 64,153,181,195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63, 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195, +136,252, 71,194, 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,151,254, 71, 66, 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,192, 90, 29, 63,208,249,224,190,222,160, 81,191, +184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, + 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 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, 0, 0,172,148, 0, 59, 0, 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, 48,154, 5, 3, 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, - 32,243,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128,244,233, 19, 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, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, - 85, 0, 0, 0,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, -128,244,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224,245,233, 19, 1, 0, 0, 0, 32,243,233, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,239, 5, 0, 0, -112, 0, 0, 0, 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, 68, 65, 84, 65, + 48, 1, 0, 0,176,216,234, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,224,220,234, 19, 1, 0, 0, 0, 48,180, 5, 3, + 1, 0, 0, 0,208,209,234, 19, 1, 0, 0, 0, 80,215,234, 19, 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, 22, 6, 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, 68, 65, 84, 65, 40, 1, 0, 0, -224,245,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 64,247,233, 19, 1, 0, 0, 0,128,244,233, 19, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 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,218,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128,219,234, 19, + 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, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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,219,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32,218,234, 19, 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, + 8, 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,151, 4, 0, 0,127, 0, 0, 0,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, 0, 0, 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, 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, 68, 65, 84, 65,200, 0, 0, 0,224,220,234, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,176,216,234, 19, 1, 0, 0, 0, 32,218,234, 19, 1, 0, 0, 0,128,219,234, 19, 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, 68, 65, 84, 65, 40, 1, 0, 0, - 64,247,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,245,233, 19, 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, 8, 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,239, 5, 0, 0, -112, 0, 0, 0, 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,248, 0, 0, 0, -160,248,233, 19, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0,176, 0,234, 19, 1, 0, 0, 0,192,241,233, 19, 1, 0, 0, 0, - 32,243,233, 19, 1, 0, 0, 0, 64,247,233, 19, 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, 1, 0, 0, 0, + 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,224,221,234, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64,203,234, 19, 1, 0, 0, 0, 32,195,234, 19, 1, 0, 0, 0,192,194,234, 19, 1, 0, 0, 0, 96,194,234, 19, + 1, 0, 0, 0,160,193,234, 19, 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,176,243,234, 19, + 1, 0, 0, 0,224,247,234, 19, 1, 0, 0, 0,192,222,234, 19, 1, 0, 0, 0, 80,242,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,222,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32,224,234, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,188, 3, 26, 0,188, 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,197, 3, 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,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, 32,224,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,160,228,234, 19, 1, 0, 0, 0,192,222,234, 19, + 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,225,234, 19, 1, 0, 0, 0, 16,227,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,225,234, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,227,234, 19, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,111,111,108, 32, 83,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,143, 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, 88, 1, 0, 0, 16,227,234, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,225,234, 19, 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,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, 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 7,254,143, 0,165, 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, + 40, 1, 0, 0,160,228,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,144,231,234, 19, 1, 0, 0, 0, 32,224,234, 19, + 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, 0,230,234, 19, 1, 0, 0, 0, 0,230,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,230,234, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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,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,144,231,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 80,242,234, 19, 1, 0, 0, 0,160,228,234, 19, 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, 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,232,234, 19, + 1, 0, 0, 0,192,240,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,232,234, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,128,234,234, 19, 1, 0, 0, 0, 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,122,254,163, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,234,234, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,236,234, 19, 1, 0, 0, 0,240,232,234, 19, + 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, 40,254,163, 0, 58, 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, 16,236,234, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,160,237,234, 19, 1, 0, 0, 0,128,234,234, 19, 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, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 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,249,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 48,251,233, 19, 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, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 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,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,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, 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,213,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, 68, 65, 84, 65, 40, 1, 0, 0, 48,251,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -144,252,233, 19, 1, 0, 0, 0,208,249,233, 19, 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,153, 2, 0, 0,153, 2, 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, 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, 68, 65, 84, 65, + 88, 1, 0, 0,160,237,234, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,239,234, 19, 1, 0, 0, 0, 16,236,234, 19, + 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, 68, 65, 84, 65, 40, 1, 0, 0,144,252,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -240,253,233, 19, 1, 0, 0, 0, 48,251,233, 19, 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,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,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,189,252,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, 68, 65, 84, 65, 40, 1, 0, 0,240,253,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 80,255,233, 19, 1, 0, 0, 0,144,252,233, 19, 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, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 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,251, 1, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 48,239,234, 19, 1, 0, 0, 0,195, 0, 0, 0, + 1, 0, 0, 0,192,240,234, 19, 1, 0, 0, 0,160,237,234, 19, 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, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,255,233, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240,253,233, 19, 1, 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,165,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,192,240,234, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,239,234, 19, + 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,141,252,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,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, 68, 65, 84, 65, 40, 1, 0, 0, 80,242,234, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,231,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,122, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,122, 5, 3, 1, 0, 0, 0,158, 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, 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,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62, -147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, -217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53, -215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, - 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,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62, -147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 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, 0, 0, -218,210,190, 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,101, 4, 0, 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, 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, 48,210, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48,210, 5, 3, 1, 0, 0, 0,158, 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,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,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,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, 68, 65, 84, 65, 32, 1, 0, 0, -176, 0,234, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,208, 4,234, 19, 1, 0, 0, 0,160,248,233, 19, 1, 0, 0, 0, -208,249,233, 19, 1, 0, 0, 0, 80,255,233, 19, 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,176, 5, 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, 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, 2,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,112, 3,234, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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, 3,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 2,234, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0,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, 68, 65, 84, 65, 48, 1, 0, 0,176,243,234, 19, 1, 0, 0, 0,159, 0, 0, 0, + 1, 0, 0, 0,224,247,234, 19, 1, 0, 0, 0, 0, 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, 22, 6, 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, 68, 65, 84, 65,200, 0, 0, 0,208, 4,234, 19, 1, 0, 0, 0, -174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 0,234, 19, 1, 0, 0, 0, 16, 2,234, 19, 1, 0, 0, 0, -112, 3,234, 19, 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, 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, 32,245,234, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128,246,234, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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,246,234, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,245,234, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0, +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,224,247,234, 19, + 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,243,234, 19, 1, 0, 0, 0, 32,245,234, 19, + 1, 0, 0, 0,128,246,234, 19, 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,249,234, 19, + 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,191,234, 19, 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,112,250,234, 19, 1, 0, 0, 0,144,254,234, 19, + 1, 0, 0, 0,240,254,234, 19, 1, 0, 0, 0, 80, 5,235, 19, 1, 0, 0, 0,176, 5,235, 19, 1, 0, 0, 0, 64, 67,235, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 6, 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, + 32, 0, 0, 0,112,250,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,250,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 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,250,234, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,251,234, 19, 1, 0, 0, 0,112,250,234, 19, 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, 48,251,234, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,144,251,234, 19, 1, 0, 0, 0,208,250,234, 19, 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,251,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,251,234, 19, + 1, 0, 0, 0, 48,251,234, 19, 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,251,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,252,234, 19, 1, 0, 0, 0,144,251,234, 19, + 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, 80,252,234, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,252,234, 19, 1, 0, 0, 0,240,251,234, 19, 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,176,252,234, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0, 16,253,234, 19, 1, 0, 0, 0, 80,252,234, 19, 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, 16,253,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112,253,234, 19, + 1, 0, 0, 0,176,252,234, 19, 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,112,253,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,253,234, 19, 1, 0, 0, 0, 16,253,234, 19, + 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,208,253,234, 19, + 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,254,234, 19, 1, 0, 0, 0,112,253,234, 19, 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, 48,254,234, 19, 1, 0, 0, 0,193, 0, 0, 0, + 1, 0, 0, 0,144,254,234, 19, 1, 0, 0, 0,208,253,234, 19, 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,144,254,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48,254,234, 19, 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,240,254,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80,255,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,208,250,234, 19, 1, 0, 0, 0, 48,251,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 80,255,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,255,234, 19, 1, 0, 0, 0,240,254,234, 19, + 1, 0, 0, 0,208,250,234, 19, 1, 0, 0, 0,240,251,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,176,255,234, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16, 0,235, 19, 1, 0, 0, 0, 80,255,234, 19, + 1, 0, 0, 0, 48,251,234, 19, 1, 0, 0, 0, 80,252,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 16, 0,235, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112, 0,235, 19, 1, 0, 0, 0,176,255,234, 19, + 1, 0, 0, 0,240,251,234, 19, 1, 0, 0, 0, 80,252,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,112, 0,235, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208, 0,235, 19, 1, 0, 0, 0, 16, 0,235, 19, + 1, 0, 0, 0, 80,252,234, 19, 1, 0, 0, 0,176,252,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,208, 0,235, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48, 1,235, 19, 1, 0, 0, 0,112, 0,235, 19, + 1, 0, 0, 0,112,250,234, 19, 1, 0, 0, 0, 16,253,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 48, 1,235, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144, 1,235, 19, 1, 0, 0, 0,208, 0,235, 19, + 1, 0, 0, 0,240,251,234, 19, 1, 0, 0, 0,112,253,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,144, 1,235, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240, 1,235, 19, 1, 0, 0, 0, 48, 1,235, 19, + 1, 0, 0, 0, 16,253,234, 19, 1, 0, 0, 0,208,253,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,240, 1,235, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80, 2,235, 19, 1, 0, 0, 0,144, 1,235, 19, + 1, 0, 0, 0,208,253,234, 19, 1, 0, 0, 0, 48,254,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 80, 2,235, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176, 2,235, 19, 1, 0, 0, 0,240, 1,235, 19, + 1, 0, 0, 0,112,253,234, 19, 1, 0, 0, 0, 48,254,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,176, 2,235, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16, 3,235, 19, 1, 0, 0, 0, 80, 2,235, 19, + 1, 0, 0, 0,176,252,234, 19, 1, 0, 0, 0,144,254,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 16, 3,235, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112, 3,235, 19, 1, 0, 0, 0,176, 2,235, 19, + 1, 0, 0, 0,144,251,234, 19, 1, 0, 0, 0,144,254,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,112, 3,235, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,208, 3,235, 19, 1, 0, 0, 0, 16, 3,235, 19, + 1, 0, 0, 0, 16,253,234, 19, 1, 0, 0, 0,144,254,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,208, 3,235, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48, 4,235, 19, 1, 0, 0, 0,112, 3,235, 19, + 1, 0, 0, 0,112,250,234, 19, 1, 0, 0, 0,144,251,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 48, 4,235, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144, 4,235, 19, 1, 0, 0, 0,208, 3,235, 19, + 1, 0, 0, 0, 80,252,234, 19, 1, 0, 0, 0,112,253,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,144, 4,235, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240, 4,235, 19, 1, 0, 0, 0, 48, 4,235, 19, + 1, 0, 0, 0,176,252,234, 19, 1, 0, 0, 0, 48,254,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0,240, 4,235, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80, 5,235, 19, 1, 0, 0, 0,144, 4,235, 19, + 1, 0, 0, 0,240,251,234, 19, 1, 0, 0, 0,208,253,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 40, 0, 0, 0, 80, 5,235, 19, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 4,235, 19, + 1, 0, 0, 0,176,252,234, 19, 1, 0, 0, 0,208,253,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, +160, 0, 0, 0,176, 5,235, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 80, 9,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,240,251,234, 19, 1, 0, 0, 0,208,250,234, 19, 1, 0, 0, 0, 48,251,234, 19, 1, 0, 0, 0, 80,252,234, 19, + 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,224, 86,235, 19, 1, 0, 0, 0,224, 86,235, 19, + 1, 0, 0, 0,144, 6,235, 19, 1, 0, 0, 0,240, 7,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 6,235, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,240, 7,235, 19, 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,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,240, 7,235, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 6,235, 19, 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,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, 80, 9,235, 19, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32, 18,235, 19, 1, 0, 0, 0,176, 5,235, 19, 1, 0, 0, 0,112,250,234, 19, + 1, 0, 0, 0, 16,253,234, 19, 1, 0, 0, 0,144,254,234, 19, 1, 0, 0, 0,144,251,234, 19, 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,240, 12,235, 19, 1, 0, 0, 0,176, 16,235, 19, 1, 0, 0, 0, 48, 10,235, 19, + 1, 0, 0, 0,144, 11,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 10,235, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,144, 11,235, 19, 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, 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, 0, 0, 0, 0, 25, 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, 11,235, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 10,235, 19, 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, + 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, 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,240, 12,235, 19, 1, 0, 0, 0,174, 0, 0, 0, + 1, 0, 0, 0,176, 16,235, 19, 1, 0, 0, 0, 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,240, 13,235, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 80, 15,235, 19, 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, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 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, 87, 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, 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, 80, 15,235, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 13,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 48,214, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48,214, 5, 3, 1, 0, 0, 0,158, 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, 0, 0, 0, 0, 0, 0, 32,193, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, + 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0,184,175, 31, 65, + 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67, +129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, + 0, 0,128, 63, 0, 0,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, 0, 0, 0, 0, 0,184,175, 31, 65, + 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,208, 5,234, 19, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,230,233, 19, 1, 0, 0, 0,112,129,233, 19, 1, 0, 0, 0, - 48,127,233, 19, 1, 0, 0, 0,208,126,233, 19, 1, 0, 0, 0,208,129,233, 19, 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,112, 9,234, 19, 1, 0, 0, 0,160, 25,234, 19, 1, 0, 0, 0,176, 6,234, 19, 1, 0, 0, 0, - 16, 8,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 6,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 16, 8,234, 19, 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, 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, 16, 8,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,176, 6,234, 19, 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,112, 9,234, 19, 1, 0, 0, 0,168, 0, 0, 0, 1, 0, 0, 0, -240, 14,234, 19, 1, 0, 0, 0, 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, 68, 65, 84, 65, 48, 1, 0, 0,176, 16,235, 19, 1, 0, 0, 0,159, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 12,235, 19, 1, 0, 0, 0,240, 13,235, 19, 1, 0, 0, 0, 80, 15,235, 19, + 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, 22, 6, 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, 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, 18,235, 19, + 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192, 37,235, 19, 1, 0, 0, 0, 80, 9,235, 19, 1, 0, 0, 0, 16,253,234, 19, + 1, 0, 0, 0,208,253,234, 19, 1, 0, 0, 0,176,252,234, 19, 1, 0, 0, 0,144,254,234, 19, 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,128, 24,235, 19, 1, 0, 0, 0,192, 36,235, 19, 1, 0, 0, 0, 0, 19,235, 19, + 1, 0, 0, 0, 32, 23,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,235, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 96, 20,235, 19, 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,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, 96, 20,235, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,192, 21,235, 19, 1, 0, 0, 0, 0, 19,235, 19, 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,192, 21,235, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 32, 23,235, 19, 1, 0, 0, 0, 96, 20,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 10,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32, 23,235, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 21,235, 19, 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, +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,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,248, 0, 0, 0,128, 24,235, 19, 1, 0, 0, 0,165, 0, 0, 0, + 1, 0, 0, 0,144, 32,235, 19, 1, 0, 0, 0, 0, 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, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,208, 10,234, 19, 1, 0, 0, 0,220, 0, 0, 0, 1, 0, 0, 0, - 13, 0, 0, 0, 13, 0, 0, 0, 32, 11,234, 19, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 32, 11,234, 19, 1, 0, 0, 0, -219, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,154, 5, 3, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, - 48,154, 5, 3, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48,154, 5, 3, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, - 48,154, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,166, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,182, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,193,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,194, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,191,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,188, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,162, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 48,176, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,128,185,234, 19, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, - 48, 12,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,144, 13,234, 19, 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, 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, 44, 1, 31, 0, 44, 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,117, 4, 0, 0,160, 5, 0, 0, -218, 2, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 1, 31, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 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, 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, 25,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 16, 27,235, 19, 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, 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,252, 5, 26, 0,252, 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, +251, 5, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16, 27,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,112, 28,235, 19, 1, 0, 0, 0,176, 25,235, 19, + 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, 0, 0, 0, 0, + 0, 0, 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, 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,112, 28,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,208, 29,235, 19, 1, 0, 0, 0, 16, 27,235, 19, + 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, +251, 5, 0, 0,111, 0, 0, 0,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, 29,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 48, 31,235, 19, 1, 0, 0, 0,112, 28,235, 19, + 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, 6, 0,180, 0,122, 2,163, 0, +104, 2, 0, 0, 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, +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, 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, 31,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 29,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 13,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 12,234, 19, 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, 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, 44, 1,141, 0, 27, 1,123, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 4, 0, 0,160, 5, 0, 0, - 77, 2, 0, 0,217, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 1,141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, 14,234, 19, 1, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0,176, 21,234, 19, 1, 0, 0, 0,112, 9,234, 19, 1, 0, 0, 0, - 48, 12,234, 19, 1, 0, 0, 0,144, 13,234, 19, 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, +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, 48,218, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, +104, 3, 0, 0, 48,218, 5, 3, 1, 0, 0, 0,158, 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,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,178,157,229, 62,241,130,233,191,222,160, 81,191, +184,158, 81,191,117, 90,127, 63, 14, 28, 97, 63, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,119, 15,130, 64,129, 63,228,190, + 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,112,240,191, 62,108,116, 85, 63, 80,184, 70,188, + 0, 0, 46,180,159, 49,181,189,125,172, 46, 61, 7,213, 73, 62, 0, 64,143,180,182,107, 25,196, 13,135,135, 67, 70, 12,167,195, + 71, 0, 72,194,225, 56, 25, 68, 38, 90,135,195,237,212,166, 67, 84, 2, 72, 66, 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,178,157,229, 62,241,130,233,191,222,160, 81,191, +184,158, 81,191,117, 90,127, 63, 14, 28, 97, 63, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,119, 15,130, 64,129, 63,228,190, + 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 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, 0, 0, 13,114,156, 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, 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, 48, 16,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,144, 17,234, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,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,144, 17,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,240, 18,234, 19, 1, 0, 0, 0, 48, 16,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112, 0, 0, 0,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, 68, 65, 84, 65, + 48, 1, 0, 0,144, 32,235, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,192, 36,235, 19, 1, 0, 0, 0,128, 24,235, 19, + 1, 0, 0, 0,176, 25,235, 19, 1, 0, 0, 0, 48, 31,235, 19, 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, 22, 6, 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, 68, 65, 84, 65, 40, 1, 0, 0,240, 18,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 80, 20,234, 19, 1, 0, 0, 0,144, 17,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 34,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 96, 35,235, 19, + 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, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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, 96, 35,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 34,235, 19, 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, + 8, 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,151, 4, 0, 0,127, 0, 0, 0,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,192, 36,235, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,144, 32,235, 19, 1, 0, 0, 0, 0, 34,235, 19, 1, 0, 0, 0, 96, 35,235, 19, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80, 20,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 18,234, 19, 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, 8, 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,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,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,248, 0, 0, 0,176, 21,234, 19, 1, 0, 0, 0, -165, 0, 0, 0, 1, 0, 0, 0,160, 25,234, 19, 1, 0, 0, 0,240, 14,234, 19, 1, 0, 0, 0, 48, 16,234, 19, 1, 0, 0, 0, - 80, 20,234, 19, 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, 1, 0, 0, 0, + 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,192, 37,235, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 64, 67,235, 19, + 1, 0, 0, 0, 32, 18,235, 19, 1, 0, 0, 0,208,253,234, 19, 1, 0, 0, 0,240,251,234, 19, 1, 0, 0, 0,112,253,234, 19, + 1, 0, 0, 0, 48,254,234, 19, 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, 32, 44,235, 19, + 1, 0, 0, 0, 64, 66,235, 19, 1, 0, 0, 0,160, 38,235, 19, 1, 0, 0, 0,192, 42,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 40,235, 19, 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, 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, 0, 40,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 96, 41,235, 19, 1, 0, 0, 0,160, 38,235, 19, + 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, 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, 96, 41,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,192, 42,235, 19, 1, 0, 0, 0, 0, 40,235, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 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,192, 42,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 41,235, 19, + 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, 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, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 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, 22,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 64, 24,234, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, - 26, 0, 20, 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, - 89, 6, 0, 0,108, 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, - 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, 68, 65, 84, 65, +248, 0, 0, 0, 32, 44,235, 19, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,208, 49,235, 19, 1, 0, 0, 0, 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, - 68, 65, 84, 65, 40, 1, 0, 0, 64, 24,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -224, 22,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 80, 45,235, 19, 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, 45,235, 19, 1, 0, 0, 0, 22, 1, 0, 0, + 1, 0, 0, 0, 48, 0, 6, 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, 40, 1, 0, 0,176, 45,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 16, 47,235, 19, + 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, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,152, 2, 26, 0,152, 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,151, 2, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 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, 16, 47,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,112, 48,235, 19, + 1, 0, 0, 0,176, 45,235, 19, 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, 2, 0, 3, 3, 0, 0, 2, 4, + 6, 0,181, 0, 24, 2,181, 0, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,180, 0, 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,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,112, 48,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 47,235, 19, 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, 0, 0, 0, 2, 0, 0, 2, 4, + 4, 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,181, 0, 0, 0,151, 2, 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,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,208, 49,235, 19, 1, 0, 0, 0, 23, 1, 0, 0, 1, 0, 0, 0, 48,222, 5, 3, + 1, 0, 0, 0, 32, 44,235, 19, 1, 0, 0, 0,176, 45,235, 19, 1, 0, 0, 0,112, 48,235, 19, 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, 0, 6, 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, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 51,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,112, 52,235, 19, + 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, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,160, 3, 26, 0,160, 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,159, 3, 0, 0, 85, 0, 0, 0,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,112, 52,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,208, 53,235, 19, + 1, 0, 0, 0, 16, 51,235, 19, 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, 1, 0, 7, 0, 18, 0, 0, 0, + 6, 0,189, 0,164, 3,172, 0,146, 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,111, 0, 0, 0, 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,208, 53,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,112, 52,235, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,111, 0, 0, 0, 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,192, 24, 0, 0, 48,222, 5, 3, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 16, 62,235, 19, + 1, 0, 0, 0,208, 49,235, 19, 1, 0, 0, 0, 16, 51,235, 19, 1, 0, 0, 0,208, 53,235, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,126, 5, 3, 1, 0, 0, 0, - 68, 65, 84, 65, 88, 3, 0, 0, 48,126, 5, 3, 1, 0, 0, 0,158, 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, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 25,234, 19, 1, 0, 0, 0, -159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 21,234, 19, 1, 0, 0, 0,224, 22,234, 19, 1, 0, 0, 0, - 64, 24,234, 19, 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,176, 5, 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, - 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,128, 27,234, 19, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, - 48, 86,234, 19, 1, 0, 0, 0,224,123,233, 19, 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,144, 28,234, 19, 1, 0, 0, 0, 48, 31,234, 19, 1, 0, 0, 0,144, 31,234, 19, 1, 0, 0, 0, - 80, 35,234, 19, 1, 0, 0, 0,176, 35,234, 19, 1, 0, 0, 0,192, 58,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48,154, 5, 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, 32, 0, 0, 0,144, 28,234, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,240, 28,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 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,240, 28,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, - 80, 29,234, 19, 1, 0, 0, 0,144, 28,234, 19, 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, 29,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176, 29,234, 19, 1, 0, 0, 0, -240, 28,234, 19, 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, 29,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 30,234, 19, 1, 0, 0, 0, 80, 29,234, 19, 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, 16, 30,234, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,112, 30,234, 19, 1, 0, 0, 0,176, 29,234, 19, 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,112, 30,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, -208, 30,234, 19, 1, 0, 0, 0, 16, 30,234, 19, 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,208, 30,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48, 31,234, 19, 1, 0, 0, 0, -112, 30,234, 19, 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, - 48, 31,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 30,234, 19, 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,144, 31,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,240, 31,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 28,234, 19, 1, 0, 0, 0, - 80, 29,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 31,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 80, 32,234, 19, 1, 0, 0, 0,144, 31,234, 19, 1, 0, 0, 0,240, 28,234, 19, 1, 0, 0, 0, - 16, 30,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 32,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,176, 32,234, 19, 1, 0, 0, 0,240, 31,234, 19, 1, 0, 0, 0, 80, 29,234, 19, 1, 0, 0, 0, -112, 30,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176, 32,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 16, 33,234, 19, 1, 0, 0, 0, 80, 32,234, 19, 1, 0, 0, 0, 16, 30,234, 19, 1, 0, 0, 0, -112, 30,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16, 33,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,112, 33,234, 19, 1, 0, 0, 0,176, 32,234, 19, 1, 0, 0, 0, 16, 30,234, 19, 1, 0, 0, 0, -208, 30,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112, 33,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,208, 33,234, 19, 1, 0, 0, 0, 16, 33,234, 19, 1, 0, 0, 0,144, 28,234, 19, 1, 0, 0, 0, - 48, 31,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208, 33,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 48, 34,234, 19, 1, 0, 0, 0,112, 33,234, 19, 1, 0, 0, 0,144, 28,234, 19, 1, 0, 0, 0, - 16, 30,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48, 34,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,144, 34,234, 19, 1, 0, 0, 0,208, 33,234, 19, 1, 0, 0, 0,208, 30,234, 19, 1, 0, 0, 0, - 48, 31,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144, 34,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,240, 34,234, 19, 1, 0, 0, 0, 48, 34,234, 19, 1, 0, 0, 0,112, 30,234, 19, 1, 0, 0, 0, -208, 30,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240, 34,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 80, 35,234, 19, 1, 0, 0, 0,144, 34,234, 19, 1, 0, 0, 0,176, 29,234, 19, 1, 0, 0, 0, - 48, 31,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80, 35,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 34,234, 19, 1, 0, 0, 0,176, 29,234, 19, 1, 0, 0, 0, -112, 30,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,176, 35,234, 19, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 80, 39,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 30,234, 19, 1, 0, 0, 0, -240, 28,234, 19, 1, 0, 0, 0, 80, 29,234, 19, 1, 0, 0, 0,112, 30,234, 19, 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,176, 85,234, 19, 1, 0, 0, 0,176, 85,234, 19, 1, 0, 0, 0,144, 36,234, 19, 1, 0, 0, 0, -240, 37,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -240, 37,234, 19, 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,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,240, 37,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144, 36,234, 19, 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,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, 80, 39,234, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -192, 58,234, 19, 1, 0, 0, 0,176, 35,234, 19, 1, 0, 0, 0,144, 28,234, 19, 1, 0, 0, 0, 16, 30,234, 19, 1, 0, 0, 0, -208, 30,234, 19, 1, 0, 0, 0, 48, 31,234, 19, 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, -224, 45,234, 19, 1, 0, 0, 0,192, 57,234, 19, 1, 0, 0, 0, 48, 40,234, 19, 1, 0, 0, 0,128, 44,234, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,144, 41,234, 19, 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, 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,196, 3, - 26, 0,196, 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,195, 3, 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, -196, 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, 41,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128, 44,234, 19, 1, 0, 0, 0, - 48, 40,234, 19, 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,240, 42,234, 19, 1, 0, 0, 0,240, 42,234, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 42,234, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,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,128, 44,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 41,234, 19, 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,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,224, 45,234, 19, 1, 0, 0, 0, -169, 0, 0, 0, 1, 0, 0, 0,160, 53,234, 19, 1, 0, 0, 0, 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, 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,192, 46,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 32, 48,234, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 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,167, 2, 0, 0, 85, 0, 0, 0,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, 32, 48,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,128, 49,234, 19, 1, 0, 0, 0,192, 46,234, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 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,128, 49,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,224, 50,234, 19, 1, 0, 0, 0, 32, 48,234, 19, 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,167, 2, 0, 0,111, 0, 0, 0,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,224, 50,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 64, 52,234, 19, 1, 0, 0, 0,128, 49,234, 19, 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, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 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,167, 2, 0, 0,111, 0, 0, 0, 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, 64, 52,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 50,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,111, 0, 0, 0, 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, 48,130, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,130, 5, 3, 1, 0, 0, 0, -158, 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, 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,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, - 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, - 96,132,111, 65,214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181,195, 13,188,190,191, 73, 53, 62, - 99,126, 81, 63, 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,159, 87,135,195, -205,209,166, 67,151,254, 71, 66, 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,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, - 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, - 96,132,111, 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, 0, 0,172,148, 0, 59, 0, 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, @@ -6311,221 +8117,62 @@ 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, - 68, 65, 84, 65, 32, 1, 0, 0,160, 53,234, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,192, 57,234, 19, 1, 0, 0, 0, -224, 45,234, 19, 1, 0, 0, 0,192, 46,234, 19, 1, 0, 0, 0, 64, 52,234, 19, 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,176, 5, 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, 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, 55,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 96, 56,234, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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, - 96, 56,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55,234, 19, 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, 8, 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,151, 4, 0, 0, -127, 0, 0, 0,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, -192, 57,234, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 53,234, 19, 1, 0, 0, 0, - 0, 55,234, 19, 1, 0, 0, 0, 96, 56,234, 19, 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, -192, 58,234, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 39,234, 19, 1, 0, 0, 0, - 48, 31,234, 19, 1, 0, 0, 0,208, 30,234, 19, 1, 0, 0, 0,112, 30,234, 19, 1, 0, 0, 0,176, 29,234, 19, 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,144, 80,234, 19, 1, 0, 0, 0,176, 84,234, 19, 1, 0, 0, 0, -160, 59,234, 19, 1, 0, 0, 0, 48, 79,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 59,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 61,234, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,188, 3, 26, 0,188, 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,197, 3, 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,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, 0, 61,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,128, 65,234, 19, 1, 0, 0, 0,160, 59,234, 19, 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, - 96, 62,234, 19, 1, 0, 0, 0,240, 63,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 62,234, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,240, 63,234, 19, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,111,111,108, 32, 83,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, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,143, 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, 88, 1, 0, 0,240, 63,234, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96, 62,234, 19, 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,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, 79, 98,106,101, 99,116, 32, 84, -111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,254,143, 0,165, 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, 40, 1, 0, 0,128, 65,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,112, 68,234, 19, 1, 0, 0, 0, 0, 61,234, 19, 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, -224, 66,234, 19, 1, 0, 0, 0,224, 66,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 66,234, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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,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,112, 68,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 48, 79,234, 19, 1, 0, 0, 0, -128, 65,234, 19, 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, 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, 69,234, 19, 1, 0, 0, 0,160, 77,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 69,234, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96, 71,234, 19, 1, 0, 0, 0, - 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,122,254,163, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 71,234, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0,240, 72,234, 19, 1, 0, 0, 0,208, 69,234, 19, 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, 40,254,163, 0, 58, 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,240, 72,234, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 74,234, 19, 1, 0, 0, 0, - 96, 71,234, 19, 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,213,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,128, 74,234, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 16, 76,234, 19, 1, 0, 0, 0,240, 72,234, 19, 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,189,252,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, 16, 76,234, 19, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160, 77,234, 19, 1, 0, 0, 0, -128, 74,234, 19, 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,165,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,160, 77,234, 19, 1, 0, 0, 0, -195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 76,234, 19, 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,141,252,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, 40, 1, 0, 0, 48, 79,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, 68,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 48,134, 5, 3, 1, 0, 0, 0, - 68, 65, 84, 65, 88, 3, 0, 0, 48,134, 5, 3, 1, 0, 0, 0,158, 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,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,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,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, @@ -6534,205 +8181,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,144, 80,234, 19, 1, 0, 0, 0, -159, 0, 0, 0, 1, 0, 0, 0,176, 84,234, 19, 1, 0, 0, 0, 0, 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,176, 5, 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, - 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,240, 81,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 80, 83,234, 19, 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, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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, 83,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 81,234, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0,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,176, 84,234, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144, 80,234, 19, 1, 0, 0, 0,240, 81,234, 19, 1, 0, 0, 0, 80, 83,234, 19, 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, 48, 86,234, 19, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 27,234, 19, 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, 64, 87,234, 19, 1, 0, 0, 0, 96, 91,234, 19, 1, 0, 0, 0,192, 91,234, 19, 1, 0, 0, 0, - 32, 98,234, 19, 1, 0, 0, 0,128, 98,234, 19, 1, 0, 0, 0,192,160,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48,154, 5, 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, 32, 0, 0, 0, 64, 87,234, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,160, 87,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 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,160, 87,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, - 0, 88,234, 19, 1, 0, 0, 0, 64, 87,234, 19, 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, 0, 88,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96, 88,234, 19, 1, 0, 0, 0, -160, 87,234, 19, 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, - 96, 88,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 88,234, 19, 1, 0, 0, 0, 0, 88,234, 19, 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,192, 88,234, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0, 32, 89,234, 19, 1, 0, 0, 0, 96, 88,234, 19, 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, 32, 89,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, -128, 89,234, 19, 1, 0, 0, 0,192, 88,234, 19, 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,128, 89,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 89,234, 19, 1, 0, 0, 0, - 32, 89,234, 19, 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, -224, 89,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 90,234, 19, 1, 0, 0, 0,128, 89,234, 19, 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, 64, 90,234, 19, 1, 0, 0, 0, -193, 0, 0, 0, 1, 0, 0, 0,160, 90,234, 19, 1, 0, 0, 0,224, 89,234, 19, 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,160, 90,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, - 0, 91,234, 19, 1, 0, 0, 0, 64, 90,234, 19, 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, 0, 91,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96, 91,234, 19, 1, 0, 0, 0, -160, 90,234, 19, 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, - 96, 91,234, 19, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91,234, 19, 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,192, 91,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 32, 92,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 87,234, 19, 1, 0, 0, 0, - 0, 88,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 92,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,128, 92,234, 19, 1, 0, 0, 0,192, 91,234, 19, 1, 0, 0, 0,160, 87,234, 19, 1, 0, 0, 0, -192, 88,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 92,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,224, 92,234, 19, 1, 0, 0, 0, 32, 92,234, 19, 1, 0, 0, 0, 0, 88,234, 19, 1, 0, 0, 0, - 32, 89,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 92,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 64, 93,234, 19, 1, 0, 0, 0,128, 92,234, 19, 1, 0, 0, 0,192, 88,234, 19, 1, 0, 0, 0, - 32, 89,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 93,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,160, 93,234, 19, 1, 0, 0, 0,224, 92,234, 19, 1, 0, 0, 0, 32, 89,234, 19, 1, 0, 0, 0, -128, 89,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 93,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 0, 94,234, 19, 1, 0, 0, 0, 64, 93,234, 19, 1, 0, 0, 0, 64, 87,234, 19, 1, 0, 0, 0, -224, 89,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 94,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 96, 94,234, 19, 1, 0, 0, 0,160, 93,234, 19, 1, 0, 0, 0,192, 88,234, 19, 1, 0, 0, 0, - 64, 90,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 94,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,192, 94,234, 19, 1, 0, 0, 0, 0, 94,234, 19, 1, 0, 0, 0,224, 89,234, 19, 1, 0, 0, 0, -160, 90,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 94,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 32, 95,234, 19, 1, 0, 0, 0, 96, 94,234, 19, 1, 0, 0, 0,160, 90,234, 19, 1, 0, 0, 0, - 0, 91,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 95,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,128, 95,234, 19, 1, 0, 0, 0,192, 94,234, 19, 1, 0, 0, 0, 64, 90,234, 19, 1, 0, 0, 0, - 0, 91,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 95,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,224, 95,234, 19, 1, 0, 0, 0, 32, 95,234, 19, 1, 0, 0, 0,128, 89,234, 19, 1, 0, 0, 0, - 96, 91,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 95,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 64, 96,234, 19, 1, 0, 0, 0,128, 95,234, 19, 1, 0, 0, 0, 96, 88,234, 19, 1, 0, 0, 0, - 96, 91,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 96,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,160, 96,234, 19, 1, 0, 0, 0,224, 95,234, 19, 1, 0, 0, 0,224, 89,234, 19, 1, 0, 0, 0, - 96, 91,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 96,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 0, 97,234, 19, 1, 0, 0, 0, 64, 96,234, 19, 1, 0, 0, 0, 64, 87,234, 19, 1, 0, 0, 0, - 96, 88,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 97,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 96, 97,234, 19, 1, 0, 0, 0,160, 96,234, 19, 1, 0, 0, 0, 32, 89,234, 19, 1, 0, 0, 0, - 64, 90,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 97,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0,192, 97,234, 19, 1, 0, 0, 0, 0, 97,234, 19, 1, 0, 0, 0,128, 89,234, 19, 1, 0, 0, 0, - 0, 91,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 97,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 32, 98,234, 19, 1, 0, 0, 0, 96, 97,234, 19, 1, 0, 0, 0,192, 88,234, 19, 1, 0, 0, 0, -160, 90,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 98,234, 19, 1, 0, 0, 0, -194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 97,234, 19, 1, 0, 0, 0,128, 89,234, 19, 1, 0, 0, 0, -160, 90,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,128, 98,234, 19, 1, 0, 0, 0, -196, 0, 0, 0, 1, 0, 0, 0, 32,102,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 88,234, 19, 1, 0, 0, 0, -160, 87,234, 19, 1, 0, 0, 0, 0, 88,234, 19, 1, 0, 0, 0, 32, 89,234, 19, 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,180,234, 19, 1, 0, 0, 0, 80,180,234, 19, 1, 0, 0, 0, 96, 99,234, 19, 1, 0, 0, 0, -192,100,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 99,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -192,100,234, 19, 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,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,192,100,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 96, 99,234, 19, 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,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,102,234, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -224,110,234, 19, 1, 0, 0, 0,128, 98,234, 19, 1, 0, 0, 0, 64, 87,234, 19, 1, 0, 0, 0,224, 89,234, 19, 1, 0, 0, 0, - 96, 91,234, 19, 1, 0, 0, 0, 96, 88,234, 19, 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,105,234, 19, 1, 0, 0, 0,128,109,234, 19, 1, 0, 0, 0, 0,103,234, 19, 1, 0, 0, 0, 96,104,234, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,103,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 96,104,234, 19, 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, 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, 0, 0, 0, 0, 25, 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, 96,104,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,103,234, 19, 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, 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, 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,192,105,234, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0,128,109,234, 19, 1, 0, 0, 0, - 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,106,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32,108,234, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, - 26, 0, 88, 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, 87, 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, - 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,108,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192,106,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 48,138, 5, 3, 1, 0, 0, 0, - 68, 65, 84, 65, 88, 3, 0, 0, 48,138, 5, 3, 1, 0, 0, 0,158, 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, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,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, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6741,140 +8190,42 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0,128,109,234, 19, 1, 0, 0, 0, -159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,105,234, 19, 1, 0, 0, 0,192,106,234, 19, 1, 0, 0, 0, - 32,108,234, 19, 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,176, 5, 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, - 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,110,234, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, -112,130,234, 19, 1, 0, 0, 0, 32,102,234, 19, 1, 0, 0, 0,224, 89,234, 19, 1, 0, 0, 0,160, 90,234, 19, 1, 0, 0, 0, -128, 89,234, 19, 1, 0, 0, 0, 96, 91,234, 19, 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, - 64,117,234, 19, 1, 0, 0, 0,112,129,234, 19, 1, 0, 0, 0,192,111,234, 19, 1, 0, 0, 0,224,115,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32,113,234, 19, 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,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, 32,113,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128,114,234, 19, 1, 0, 0, 0, -192,111,234, 19, 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,128,114,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224,115,234, 19, 1, 0, 0, 0, - 32,113,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, - 68, 65, 84, 65, 40, 1, 0, 0,224,115,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128,114,234, 19, 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,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,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,248, 0, 0, 0, 64,117,234, 19, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, 80,125,234, 19, 1, 0, 0, 0, - 0, 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, - 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,118,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,208,119,234, 19, 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, 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,252, 5, 26, 0,252, 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,251, 5, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,208,119,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 48,121,234, 19, 1, 0, 0, 0,112,118,234, 19, 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, 0, 0, 0, 0, 0, 0, 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, 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, 48,121,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,144,122,234, 19, 1, 0, 0, 0,208,119,234, 19, 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,251, 5, 0, 0,111, 0, 0, 0,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,144,122,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,240,123,234, 19, 1, 0, 0, 0, 48,121,234, 19, 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, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 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,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, 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,123,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,122,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,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, 48,142, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,142, 5, 3, 1, 0, 0, 0, -158, 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,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,178,157,229, 62,241,130,233,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 14, 28, 97, 63, - 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,119, 15,130, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, - 96,132,111, 65,214,211,111, 65,112,240,191, 62,108,116, 85, 63, 80,184, 70,188, 0, 0, 46,180,159, 49,181,189,125,172, 46, 61, - 7,213, 73, 62, 0, 64,143,180,182,107, 25,196, 13,135,135, 67, 70, 12,167,195, 71, 0, 72,194,225, 56, 25, 68, 38, 90,135,195, -237,212,166, 67, 84, 2, 72, 66, 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,178,157,229, 62,241,130,233,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 14, 28, 97, 63, - 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,119, 15,130, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, - 96,132,111, 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, 0, 0, 13,114,156, 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, @@ -6883,243 +8234,50 @@ 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, - 68, 65, 84, 65, 32, 1, 0, 0, 80,125,234, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,112,129,234, 19, 1, 0, 0, 0, - 64,117,234, 19, 1, 0, 0, 0,112,118,234, 19, 1, 0, 0, 0,240,123,234, 19, 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,176, 5, 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, 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, -176,126,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 16,128,234, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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, - 16,128,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,126,234, 19, 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, 8, 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,151, 4, 0, 0, -127, 0, 0, 0,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, -112,129,234, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,125,234, 19, 1, 0, 0, 0, -176,126,234, 19, 1, 0, 0, 0, 16,128,234, 19, 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, -112,130,234, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,192,160,234, 19, 1, 0, 0, 0,224,110,234, 19, 1, 0, 0, 0, -160, 90,234, 19, 1, 0, 0, 0,192, 88,234, 19, 1, 0, 0, 0, 64, 90,234, 19, 1, 0, 0, 0, 0, 91,234, 19, 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,208,136,234, 19, 1, 0, 0, 0,192,159,234, 19, 1, 0, 0, 0, - 80,131,234, 19, 1, 0, 0, 0,112,135,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,131,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,176,132,234, 19, 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, 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,176,132,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 16,134,234, 19, 1, 0, 0, 0, 80,131,234, 19, 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, 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, 16,134,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,112,135,234, 19, 1, 0, 0, 0,176,132,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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,112,135,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,134,234, 19, 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, 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,208,136,234, 19, 1, 0, 0, 0, -163, 0, 0, 0, 1, 0, 0, 0,128,142,234, 19, 1, 0, 0, 0, 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, 0,138,234, 19, 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, 0,138,234, 19, 1, 0, 0, 0, 22, 1, 0, 0, 1, 0, 0, 0, 48,154, 5, 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, 40, 1, 0, 0, - 96,138,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,192,139,234, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 2, 26, 0,152, 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,151, 2, 0, 0, -225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 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, -192,139,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32,141,234, 19, 1, 0, 0, 0, 96,138,234, 19, 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, 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,181, 0, 24, 2,181, 0, 6, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180, 0, 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,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, - 32,141,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,139,234, 19, 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, 0, 0, 0, 2, 0, 0, 2, 4, 4, 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,181, 0, 0, 0,151, 2, 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,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, -128,142,234, 19, 1, 0, 0, 0, 23, 1, 0, 0, 1, 0, 0, 0,224,147,234, 19, 1, 0, 0, 0,208,136,234, 19, 1, 0, 0, 0, - 96,138,234, 19, 1, 0, 0, 0, 32,141,234, 19, 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,154, 5, 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, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, -192,143,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32,145,234, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 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,159, 3, 0, 0, - 85, 0, 0, 0,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, - 32,145,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128,146,234, 19, 1, 0, 0, 0,192,143,234, 19, 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, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,189, 0,164, 3,172, 0,146, 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, -111, 0, 0, 0, 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, -128,146,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,145,234, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -111, 0, 0, 0, 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, -224,147,234, 19, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0,160,155,234, 19, 1, 0, 0, 0,128,142,234, 19, 1, 0, 0, 0, -192,143,234, 19, 1, 0, 0, 0,128,146,234, 19, 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,148,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 32,150,234, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 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,167, 2, 0, 0, - 85, 0, 0, 0,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, - 32,150,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128,151,234, 19, 1, 0, 0, 0,192,148,234, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, 0, 0, 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, -128,151,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224,152,234, 19, 1, 0, 0, 0, 32,150,234, 19, 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,167, 2, 0, 0, -111, 0, 0, 0,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, -224,152,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 64,154,234, 19, 1, 0, 0, 0,128,151,234, 19, 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, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, - 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,167, 2, 0, 0, -111, 0, 0, 0, 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, - 64,154,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,152,234, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, -111, 0, 0, 0, 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, 48,146, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, - 48,146, 5, 3, 1, 0, 0, 0,158, 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, 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,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191, -253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181, -195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63, 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, - 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,151,254, 71, 66, 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,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191, -253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 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, 0, 0,172,148, 0, 59, 0, 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, @@ -7128,302 +8286,415 @@ 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, 68, 65, 84, 65, 32, 1, 0, 0,160,155,234, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, -192,159,234, 19, 1, 0, 0, 0,224,147,234, 19, 1, 0, 0, 0,192,148,234, 19, 1, 0, 0, 0, 64,154,234, 19, 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,176, 5, 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, 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,157,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 96,158,234, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, - 26, 0,152, 4, 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,151, 4, 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, -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, 96,158,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,157,234, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0,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,192,159,234, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160,155,234, 19, 1, 0, 0, 0, 0,157,234, 19, 1, 0, 0, 0, 96,158,234, 19, 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, 68, 65, 84, 65, + 40, 1, 0, 0, 48, 55,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,144, 56,235, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 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, +167, 2, 0, 0, 85, 0, 0, 0,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,144, 56,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,240, 57,235, 19, 1, 0, 0, 0, 48, 55,235, 19, + 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, 0, 0, 0, 0, + 0, 0, 0, 0,111, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, - 68, 65, 84, 65,160, 0, 0, 0,192,160,234, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112,130,234, 19, 1, 0, 0, 0, 0, 91,234, 19, 1, 0, 0, 0, 64, 90,234, 19, 1, 0, 0, 0, 32, 89,234, 19, 1, 0, 0, 0, -128, 89,234, 19, 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, 32,167,234, 19, 1, 0, 0, 0, - 80,179,234, 19, 1, 0, 0, 0,160,161,234, 19, 1, 0, 0, 0,192,165,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,161,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0,163,234, 19, 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, 68, 65, 84, 65, + 40, 1, 0, 0,240, 57,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 80, 59,235, 19, 1, 0, 0, 0,144, 56,235, 19, + 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, +167, 2, 0, 0,111, 0, 0, 0,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, 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, - 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, 68, 65, 84, 65, + 40, 1, 0, 0, 80, 59,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,176, 60,235, 19, 1, 0, 0, 0,240, 57,235, 19, + 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, 6, 0,180, 0,122, 2,163, 0, +104, 2, 0, 0, 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, +167, 2, 0, 0,111, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, - 0,163,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 96,164,234, 19, 1, 0, 0, 0,160,161,234, 19, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 60,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 59,235, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, - 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, +167, 2, 0, 0,111, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, - 96,164,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,192,165,234, 19, 1, 0, 0, 0, 0,163,234, 19, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,248, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, +104, 3, 0, 0, 48,248, 5, 3, 1, 0, 0, 0,158, 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, 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,192, 90, 29, 63,208,249,224,190,222,160, 81,191, +184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, + 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, + 0, 64,153,181,195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63, 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195, +136,252, 71,194, 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,151,254, 71, 66, 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,192, 90, 29, 63,208,249,224,190,222,160, 81,191, +184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, + 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 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, 0, 0,172,148, 0, 59, 0, 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, 7, 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, 68, 65, 84, 65, 40, 1, 0, 0, -192,165,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,164,234, 19, 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, 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,248, 0, 0, 0, - 32,167,234, 19, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, 48,175,234, 19, 1, 0, 0, 0, 0, 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, 68, 65, 84, 65, + 48, 1, 0, 0, 16, 62,235, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 64, 66,235, 19, 1, 0, 0, 0, 48,222, 5, 3, + 1, 0, 0, 0, 48, 55,235, 19, 1, 0, 0, 0,176, 60,235, 19, 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, 22, 6, 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, 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,128, 63,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224, 64,235, 19, + 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, 2, 0, 3, 3, 4, 0, 12, 4, + 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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, 64,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 63,235, 19, 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, + 8, 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,151, 4, 0, 0,127, 0, 0, 0,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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,168,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -176,169,234, 19, 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, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 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,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,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, 68, 65, 84, 65,200, 0, 0, 0, 64, 66,235, 19, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 62,235, 19, 1, 0, 0, 0,128, 63,235, 19, 1, 0, 0, 0,224, 64,235, 19, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,169,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 16,171,234, 19, 1, 0, 0, 0, 80,168,234, 19, 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,153, 2, 0, 0,153, 2, 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, 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, 16,171,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -112,172,234, 19, 1, 0, 0, 0,176,169,234, 19, 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,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,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, 1, 0, 0, 0, + 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 64, 67,235, 19, 1, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,192, 37,235, 19, 1, 0, 0, 0, 48,254,234, 19, 1, 0, 0, 0,112,253,234, 19, 1, 0, 0, 0, 80,252,234, 19, + 1, 0, 0, 0,176,252,234, 19, 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,160, 73,235, 19, + 1, 0, 0, 0,224, 85,235, 19, 1, 0, 0, 0, 32, 68,235, 19, 1, 0, 0, 0, 64, 72,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128, 69,235, 19, 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, 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,128, 69,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,224, 70,235, 19, 1, 0, 0, 0, 32, 68,235, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,172,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, -208,173,234, 19, 1, 0, 0, 0, 16,171,234, 19, 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, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 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,251, 1, 0, 0, 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,173,234, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,112,172,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 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,224, 70,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 64, 72,235, 19, 1, 0, 0, 0,128, 69,235, 19, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, - 48,150, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 88, 3, 0, 0, 48,150, 5, 3, 1, 0, 0, 0,158, 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, 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,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62, -147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, -217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53, -215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, - 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,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62, -147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, + 0, 0, 7, 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, 68, 65, 84, 65, + 40, 1, 0, 0, 64, 72,235, 19, 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 70,235, 19, + 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, 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, - 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, -218,210,190, 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, 68, 65, 84, 65, +248, 0, 0, 0,160, 73,235, 19, 1, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0,176, 81,235, 19, 1, 0, 0, 0, 0, 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, 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, 74,235, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 48, 76,235, 19, 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, + 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 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,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, - 48,175,234, 19, 1, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 80,179,234, 19, 1, 0, 0, 0, 32,167,234, 19, 1, 0, 0, 0, - 80,168,234, 19, 1, 0, 0, 0,208,173,234, 19, 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,176, 5, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48, 76,235, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,144, 77,235, 19, 1, 0, 0, 0,208, 74,235, 19, 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,153, 2, 0, 0,153, 2, 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, 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, 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,144,176,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0,240,177,234, 19, 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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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, 68, 65, 84, 65, 40, 1, 0, 0,144, 77,235, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0,240, 78,235, 19, 1, 0, 0, 0, 48, 76,235, 19, 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,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,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, 68, 65, 84, 65, 40, 1, 0, 0,240,177,234, 19, 1, 0, 0, 0, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,176,234, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0,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, 68, 65, 84, 65, 40, 1, 0, 0,240, 78,235, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 80, 80,235, 19, 1, 0, 0, 0,144, 77,235, 19, 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, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 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,251, 1, 0, 0, 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, 68, 65, 84, 65,200, 0, 0, 0, 80,179,234, 19, 1, 0, 0, 0, -174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,175,234, 19, 1, 0, 0, 0,144,176,234, 19, 1, 0, 0, 0, -240,177,234, 19, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80, 80,235, 19, 1, 0, 0, 0,197, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 78,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 6, 0, 0, 48,154, 5, 3, 1, 0, 0, 0, -156, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,176, 5, 3, 1, 0, 0, 0, - 48,166, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,180,234, 19, 1, 0, 0, 0, -144,181,234, 19, 1, 0, 0, 0,208,180,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156,190,120,191,169, 18, 75,193, -102, 50, 8,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, 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, -240,181,234, 19, 1, 0, 0, 0, 48,138, 9, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 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,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, -240,184,234, 19, 1, 0, 0, 0,240,184,234, 19, 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, 48,252, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 48,252, 5, 3, 1, 0, 0, 0,158, 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, 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,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, + 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65, +214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, + 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67, +151,254, 71, 66, 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,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, + 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 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, 0, 0,218,210,190, 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, 47, 47, 98, 97, 99,107, 98,117,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,176, 81,235, 19, 1, 0, 0, 0,159, 0, 0, 0, + 1, 0, 0, 0,224, 85,235, 19, 1, 0, 0, 0,160, 73,235, 19, 1, 0, 0, 0,208, 74,235, 19, 1, 0, 0, 0, 80, 80,235, 19, + 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, 22, 6, 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, 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, 83,235, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,128, 84,235, 19, 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, - 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, +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, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 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,151, 4, 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,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, 84,235, 19, + 1, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 83,235, 19, 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, 8, 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,151, 4, 0, 0,127, 0, 0, 0, +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, 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, 96,131,226, 19, 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,208,180,234, 19, 1, 0, 0, 0, -132, 0, 0, 0, 1, 0, 0, 0, 48,181,234, 19, 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,182, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,181,234, 19, 1, 0, 0, 0, -132, 0, 0, 0, 1, 0, 0, 0,144,181,234, 19, 1, 0, 0, 0,208,180,234, 19, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, - 0, 4, 0, 0,144, 3, 47, 3, 48,188, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,181,234, 19, 1, 0, 0, 0, -132, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,181,234, 19, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, - 0, 4, 0, 0,156, 0, 83, 2, 48,176, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65,120, 1, 0, 0,240,181,234, 19, 1, 0, 0, 0, -152, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,183,234, 19, 1, 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,144,184,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 1, 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, 56, 0, 0, 0,160,183,234, 19, 1, 0, 0, 0,150, 0, 0, 0, 1, 0, 0, 0, 16,184,234, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 8, 0, 0, 0,144, 89,209, 27, 1, 0, 0, 0,255,100,100,128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 0, 0, 0, 16,184,234, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0,208,213,234, 19, 1, 0, 0, 0,144,236,234, 19, 1, 0, 0, 0, 16,230,234, 19, 1, 0, 0, 0, -144,223,234, 19, 1, 0, 0, 0, 80,220,234, 19, 1, 0, 0, 0,208,226,234, 19, 1, 0, 0, 0, 16,217,234, 19, 1, 0, 0, 0, - 80,207,234, 19, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144,184,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -208,213,234, 19, 1, 0, 0, 0,208,239,234, 19, 1, 0, 0, 0,144,210,234, 19, 1, 0, 0, 0, 80,233,234, 19, 1, 0, 0, 0, - 68, 65, 84, 65, 88, 0, 0, 0,240,184,234, 19, 1, 0, 0, 0,138, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 85,235, 19, + 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 81,235, 19, 1, 0, 0, 0, 32, 83,235, 19, + 1, 0, 0, 0,128, 84,235, 19, 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, 48, 6, 0, 0, 48, 0, 6, 3, + 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144,131,131, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 22, 6, 3, + 1, 0, 0, 0, 48, 12, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 87,235, 19, + 1, 0, 0, 0, 32, 88,235, 19, 1, 0, 0, 0, 96, 87,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 88,235, 19, 1, 0, 0, 0, 48,148, 15, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,192, 91,235, 19, 1, 0, 0, 0,192, 91,235, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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,155,235, 19, + 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,205,204,204, 61, 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,195,245, 28,193, 1, 0, 0, 0, 68, 65, 84, 65, + 96, 0, 0, 0,144,131,131, 28, 1, 0, 0, 0, 16, 0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 89,131, 28, 1, 0, 0, 0,208, 89,131, 28, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,208, 89,131, 28, + 1, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, +110,101,116,119,111,114,107, 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,208, 45,131, 28, 1, 0, 0, 0,208, 45,131, 28, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,208, 45,131, 28, 1, 0, 0, 0, 16, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,101,114,118,101,114, 95, 97, +100,100,114,101,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 70,159, 22, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 10, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,144, 70,159, 22, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 91,100,101,102, + 97,117,108,116, 93, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 87,235, 19, 1, 0, 0, 0,132, 0, 0, 0, 1, 0, 0, 0, +192, 87,235, 19, 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, 28, 6, 3, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 87,235, 19, 1, 0, 0, 0,132, 0, 0, 0, 1, 0, 0, 0, + 32, 88,235, 19, 1, 0, 0, 0, 96, 87,235, 19, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0,144, 3, 47, 3, + 48, 34, 6, 3, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 88,235, 19, 1, 0, 0, 0,132, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192, 87,235, 19, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,156, 0, 83, 2, + 48, 22, 6, 3, 1, 0, 0, 0, 68, 65, 84, 65,176, 1, 0, 0,128, 88,235, 19, 1, 0, 0, 0,152, 0, 0, 0, 1, 0, 0, 0, +176, 93,139, 28, 1, 0, 0, 0, 96, 20,134, 28, 1, 0, 0, 0,112, 90,235, 19, 1, 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, + 96, 91,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 50, 0,100, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 50, 0, 10, 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, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, 64, 0, 0, 0,176, 93,139, 28, 1, 0, 0, 0, +151, 0, 0, 0, 1, 0, 0, 0, 64,123,139, 28, 1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 80,139, 28, 1, 0, 0, 0, +255,255,255,128, 1, 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, 0, 0, 0, 0, 68, 65, 84, 65, 56, 0, 0, 0, 64,123,139, 28, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +240,110,235, 19, 1, 0, 0, 0,112,144,139, 28, 1, 0, 0, 0, 64,103,139, 28, 1, 0, 0, 0,160,159,139, 28, 1, 0, 0, 0, + 96,121,139, 28, 1, 0, 0, 0, 64,152,139, 28, 1, 0, 0, 0, 80,150,139, 28, 1, 0, 0, 0, 68, 65, 84, 65, 64, 0, 0, 0, + 96, 20,134, 28, 1, 0, 0, 0,151, 0, 0, 0, 1, 0, 0, 0, 64,183,134, 28, 1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 80,216,133, 28, 1, 0, 0, 0,200,200,255,128, 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, 68, 65, 84, 65, 56, 0, 0, 0, 64,183,134, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0,240,110,235, 19, 1, 0, 0, 0,112,144,139, 28, 1, 0, 0, 0, 64,103,139, 28, 1, 0, 0, 0, +160,159,139, 28, 1, 0, 0, 0, 96,121,139, 28, 1, 0, 0, 0, 64,152,139, 28, 1, 0, 0, 0, 80,150,139, 28, 1, 0, 0, 0, + 68, 65, 84, 65, 56, 0, 0, 0,112, 90,235, 19, 1, 0, 0, 0,150, 0, 0, 0, 1, 0, 0, 0,224, 90,235, 19, 1, 0, 0, 0, + 0, 0, 0, 0, 8, 0, 0, 0, 80, 53,135, 28, 1, 0, 0, 0,255,100,100,128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 0, 0, 0,224, 90,235, 19, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 48,122,235, 19, 1, 0, 0, 0,112,148,235, 19, 1, 0, 0, 0,240,140,235, 19, 1, 0, 0, 0, +112,133,235, 19, 1, 0, 0, 0,176,129,235, 19, 1, 0, 0, 0, 48,137,235, 19, 1, 0, 0, 0,240,125,235, 19, 1, 0, 0, 0, +176,114,235, 19, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96, 91,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 48,122,235, 19, 1, 0, 0, 0, 48,152,235, 19, 1, 0, 0, 0,112,118,235, 19, 1, 0, 0, 0,176,144,235, 19, 1, 0, 0, 0, + 68, 65, 84, 65, 88, 0, 0, 0,192, 91,235, 19, 1, 0, 0, 0,138, 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,128,185,234, 19, 1, 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, 80, 92,235, 19, 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,162, 5, 3, 1, 0, 0, 0, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 76, 65, 0, 0,248, 1, 0, 0, 48, 8, 6, 3, 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, 80,186,234, 19, 1, 0, 0, 0, 2, 0, 0, 0, 46, 26,128, 63, +154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 32, 93,235, 19, 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, @@ -7434,10 +8705,10 @@ 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, 16,188,234, 19, 1, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0, 80,186,234, 19, 1, 0, 0, 0, - 76, 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, 0, 0,224, 94,235, 19, 1, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0, 32, 93,235, 19, 1, 0, 0, 0, + 78, 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,192,187,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +243, 4, 53,191,242, 4, 53, 63,242, 4, 53,191,243, 4, 53, 63,144, 94,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7445,10 +8716,10 @@ 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,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,192,187,234, 19, 1, 0, 0, 0, 74, 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, 16,188,234, 19, 1, 0, 0, 0, + 68, 65, 84, 65, 24, 0, 0, 0,144, 94,235, 19, 1, 0, 0, 0, 76, 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,224, 94,235, 19, 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,166, 5, 3, 1, 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, 12, 6, 3, 1, 0, 0, 0, 131, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, @@ -7464,311 +8735,316 @@ 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, 84, 88, 0, 0,176, 0, 0, 0,112,188,234, 19, 1, 0, 0, 0, 27, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 88, 0, 0,176, 0, 0, 0, 64, 95,235, 19, 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, 96,189,234, 19, 1, 0, 0, 0, - 96,189,234, 19, 1, 0, 0, 0, 96,189,234, 19, 1, 0, 0, 0, 96,189,234, 19, 1, 0, 0, 0, 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,170, 5, 3, 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, 96,189,234, 19, 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, 96,200,230, 2, 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, 96,200,230, 2, 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,176, 5, 3, 1, 0, 0, 0,120, 0, 0, 0, - 1, 0, 0, 0, 48,182, 5, 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, 7, 0, 0, 0, 1, 0, 0, 0, 48, 96,235, 19, 1, 0, 0, 0, + 48, 96,235, 19, 1, 0, 0, 0, 48, 96,235, 19, 1, 0, 0, 0, 48, 96,235, 19, 1, 0, 0, 0, 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, 16, 6, 3, 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, 48, 96,235, 19, 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,224, 84,227, 19, 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,224, 84,227, 19, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 79, 66, 0, 0,208, 4, 0, 0, 48, 22, 6, 3, 1, 0, 0, 0,120, 0, 0, 0, + 1, 0, 0, 0, 48, 28, 6, 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, 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,128,185,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 92,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 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, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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,182, 5, 3, 1, 0, 0, 0,120, 0, 0, 0, 1, 0, 0, 0, 48,188, 5, 3, 1, 0, 0, 0, 48,176, 5, 3, - 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, 0, 0, 0, 0, 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,216,212, 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,112,193,234, 19, 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, 79, 66, 0, 0,208, 4, 0, 0, 48, 28, 6, 3, + 1, 0, 0, 0,120, 0, 0, 0, 1, 0, 0, 0, 48, 34, 6, 3, 1, 0, 0, 0, 48, 22, 6, 3, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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,133,226, 19, - 1, 0, 0, 0, 16,154,226, 19, 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, 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,112, 58,135, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,100,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0, +250, 0, 0, 0, 10, 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, 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, 0, 0, 16, 41,227, 19, 1, 0, 0, 0,112, 26,227, 19, 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, 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, 0, 0, 0, 0, 0, 0, 0, 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,162, 9, 28, 1, 0, 0, 0, 48,166, 9, 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, 0, 0, 0, 0, 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,128,133,226, 19, 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, 16,154,226, 19, 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,188, 5, 3, 1, 0, 0, 0,120, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48,182, 5, 3, 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,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,244, 11, 28, 1, 0, 0, 0, 48,248, 11, 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, 0, 0, 0, 0, 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, 16, 41,227, 19, 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,112, 26,227, 19, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,208, 4, 0, 0, + 48, 34, 6, 3, 1, 0, 0, 0,120, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 28, 6, 3, 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, - 48,162, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 8, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, + 1, 0, 0, 0,250, 0, 0, 0, 10, 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, -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,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, 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,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, 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,194, 5, 3, 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,192,189,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 40, 6, 3, 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,128, 63, 0, 0,128, 63,205,204, 76, 62, + 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, +144, 96,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,191,234, 19, 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,192,189,234, 19, 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,112,191,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0,224, 97,235, 19, 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, +144, 96,235, 19, 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, 98,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 40, 0, 0, 0, - 16,191,234, 19, 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,198, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, - 48,198, 5, 3, 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, 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,112,191,234, 19, 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, 16,193,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 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, 16,193,234, 19, 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,216, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, 48,216, 5, 3, 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, + 68, 65, 84, 65, 40, 0, 0, 0,224, 97,235, 19, 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, 44, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 0, 16, 0, 0, 48, 44, 6, 3, 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, 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, + 64, 98,235, 19, 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, 99,235, 19, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 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, 99,235, 19, 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, 62, 6, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, + 48, 62, 6, 3, 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, 0, 0, 0,255, @@ -7896,76 +9172,75 @@ 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, 0, 0, 0,255, 77, 69, 0, 0,168, 1, 0, 0,112,193,234, 19, 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, 32,175,226, 19, 1, 0, 0, 0, 0,202,234, 19, 1, 0, 0, 0, -176,202,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,196,234, 19, 1, 0, 0, 0,144,199,234, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,195,234, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0,240,197,234, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 96,200,234, 19, 1, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 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, 32,175,226, 19, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 48,194, 5, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0, 80,195,234, 19, 1, 0, 0, 0, 79, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240,196,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 77, 69, 0, 0,176, 1, 0, 0, 64,100,235, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, +144, 85,227, 19, 1, 0, 0, 0,224,108,235, 19, 1, 0, 0, 0,144,109,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208,103,235, 19, 1, 0, 0, 0,112,106,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 89,131, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,102,235, 19, 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, + 0, 0, 0, 0, 0, 0, 0, 0,208,104,235, 19, 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, 0, 0, 0, 0, 0, 0, 0, 0, 64,107,235, 19, 1, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, + 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, + 6, 0, 0, 0, 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, +144, 85,227, 19, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 48, 40, 6, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0, + 48,102,235, 19, 1, 0, 0, 0, 82, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,103,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,240,196,234, 19, 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,240,197,234, 19, 1, 0, 0, 0, 79, 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,144,199,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, +208,103,235, 19, 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,208,104,235, 19, 1, 0, 0, 0, + 82, 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,112,106,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,144,199,234, 19, 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, 96,200,234, 19, 1, 0, 0, 0, 79, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,202,234, 19, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,176,202,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,112,106,235, 19, 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, + 64,107,235, 19, 1, 0, 0, 0, 82, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,108,235, 19, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,109,235, 19, 1, 0, 0, 0, + 6, 0, 0, 0, 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, + 67,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 89,131, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,202,234, 19, 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, 68, 65, 84, 65, 32, 1, 0, 0, -176,202,234, 19, 1, 0, 0, 0, 67, 0, 0, 0, 6, 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, 0, 0, 0, 0,128, 63, 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, 68, 65, 84, 65,120, 0, 0, 0, +224,108,235, 19, 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, 68, 65, 84, 65, 32, 1, 0, 0,144,109,235, 19, 1, 0, 0, 0, 67, 0, 0, 0, 6, 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, 0, 0, 0, 0,128, 63, 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, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, @@ -7973,20 +9248,56 @@ char datatoc_B_blend[]= { 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, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 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, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 66, 82, 0, 0, 40, 1, 0, 0, 16,204,234, 19, 1, 0, 0, 0, - 78, 1, 0, 0, 1, 0, 0, 0, 80,207,234, 19, 1, 0, 0, 0, 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, 82, 66,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 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, 63, 0, 0, 0, 0,112,205,234, 19, 1, 0, 0, 0, 0, 0, 0, 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,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 96, 0, 0, 0, 16, 89,131, 28, 1, 0, 0, 0, 61, 0, 0, 0, 24, 0, 0, 0,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 66, 82, 0, 0,168, 1, 0, 0, +112,144,139, 28, 1, 0, 0, 0, 81, 1, 0, 0, 1, 0, 0, 0, 96,121,139, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 65,100,100, 0,104, 46, 48, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 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, 63, 0, 0, 0, 0, 80,146,139, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 1, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0, + 80,146,139, 28, 1, 0, 0, 0, 78, 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, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,176,134,131, 28, 1, 0, 0, 0, + 48, 26, 14, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 0, 0, 0,176,134,131, 28, 1, 0, 0, 0, 76, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, 96,121,139, 28, 1, 0, 0, 0, + 81, 1, 0, 0, 1, 0, 0, 0,176,114,235, 19, 1, 0, 0, 0,112,144,139, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,117,114, 0, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 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, 63, 0, 0, 0, 0, 48,119,139, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 1, 0, 68, 65, 84, 65, 56, 1, 0, 0,112,205,234, 19, 1, 0, 0, 0, - 76, 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,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 4, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0, 48,119,139, 28, 1, 0, 0, 0, + 78, 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, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,224,206,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,192,216,129, 28, 1, 0, 0, 0, 48, 62, 16, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7994,22 +9305,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,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, 48, 0, 0, 0,224,206,234, 19, 1, 0, 0, 0, 74, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 68, 65, 84, 65, 48, 0, 0, 0,192,216,129, 28, 1, 0, 0, 0, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 40, 1, 0, 0, 80,207,234, 19, 1, 0, 0, 0, 78, 1, 0, 0, 1, 0, 0, 0, -144,210,234, 19, 1, 0, 0, 0, 16,204,234, 19, 1, 0, 0, 0, 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, 82, 0, 0,168, 1, 0, 0,176,114,235, 19, 1, 0, 0, 0, 81, 1, 0, 0, 1, 0, 0, 0, +112,118,235, 19, 1, 0, 0, 0, 96,121,139, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108, 97,121, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 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, 63, 0, 0, 0, 0, -176,208,234, 19, 1, 0, 0, 0, 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,116,235, 19, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 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, 25, 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, +128, 0, 0, 0, 0, 0, 0, 0, 3, 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,128, 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, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 8, 0, 68, 65, 84, 65, 56, 1, 0, 0,176,208,234, 19, 1, 0, 0, 0, 76, 1, 0, 0, 1, 0, 0, 0, +205,204, 76, 62, 8, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0,144,116,235, 19, 1, 0, 0, 0, 78, 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, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, - 14,215,126,191, 46,189,194, 61, 32,210,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14,215,126,191, 46,189,194, 61, 0,118,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8017,67 +9332,186 @@ 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,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, 48, 0, 0, 0, - 32,210,234, 19, 1, 0, 0, 0, 74, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, + 0,118,235, 19, 1, 0, 0, 0, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 0, 0, 40, 1, 0, 0,144,210,234, 19, 1, 0, 0, 0, 78, 1, 0, 0, 1, 0, 0, 0,208,213,234, 19, 1, 0, 0, 0, - 80,207,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108,111,110,101, 0, + 66, 82, 0, 0,168, 1, 0, 0,112,118,235, 19, 1, 0, 0, 0, 81, 1, 0, 0, 1, 0, 0, 0, 80,150,139, 28, 1, 0, 0, 0, +176,114,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108,111,110,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 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, 63, 0, 0, 0, 0,240,211,234, 19, 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, 0, 80,120,235, 19, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 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,128, 0, 0, 0, 0, 0, 0, 0, + 3, 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,128, 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, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 3, 0, + 68, 65, 84, 65, 56, 1, 0, 0, 80,120,235, 19, 1, 0, 0, 0, 78, 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, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, +192,121,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 1, 0, - 68, 65, 84, 65, 56, 1, 0, 0,240,211,234, 19, 1, 0, 0, 0, 76, 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, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, - 96,213,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 0, 0, 0,192,121,235, 19, 1, 0, 0, 0, + 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, + 80,150,139, 28, 1, 0, 0, 0, 81, 1, 0, 0, 1, 0, 0, 0, 48,122,235, 19, 1, 0, 0, 0,112,118,235, 19, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, 0, 48, 54, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 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, 63, 0, 0, 0, 0,112,119,134, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 0, 0, 0, 96,213,234, 19, 1, 0, 0, 0, - 74, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 40, 1, 0, 0, -208,213,234, 19, 1, 0, 0, 0, 78, 1, 0, 0, 1, 0, 0, 0, 16,217,234, 19, 1, 0, 0, 0,144,210,234, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68,114, 97,119, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 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, 63, 0, 0, 0, 0, 48,215,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 1, 0, 68, 65, 84, 65, 56, 1, 0, 0, - 48,215,234, 19, 1, 0, 0, 0, 76, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 6, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0, +112,119,134, 28, 1, 0, 0, 0, 78, 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, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,160,216,234, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 48,159,139, 28, 1, 0, 0, 0, + 48, 66, 15, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 0, 0, 0,160,216,234, 19, 1, 0, 0, 0, 74, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 48,159,139, 28, 1, 0, 0, 0, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 40, 1, 0, 0, 16,217,234, 19, 1, 0, 0, 0, - 78, 1, 0, 0, 1, 0, 0, 0, 80,220,234, 19, 1, 0, 0, 0,208,213,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,108, 97,116,116,101,110, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 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, 63, 0, 0, 0, 0,112,218,234, 19, 1, 0, 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, 66, 82, 0, 0,168, 1, 0, 0, 48,122,235, 19, 1, 0, 0, 0, + 81, 1, 0, 0, 1, 0, 0, 0,240,125,235, 19, 1, 0, 0, 0, 80,150,139, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68,114, 97,119, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 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, 63, 0, 0, 0, 0, 16,124,235, 19, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 0, 0, 0, 0, 0, 0, 0, 3, 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,128, 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, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0, 16,124,235, 19, 1, 0, 0, 0, + 78, 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, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,128,125,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 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, 48, 0, 0, 0,128,125,235, 19, 1, 0, 0, 0, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,240,125,235, 19, 1, 0, 0, 0, 81, 1, 0, 0, 1, 0, 0, 0, +176,129,235, 19, 1, 0, 0, 0, 48,122,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 70,108, 97,116,116,101,110, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 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, 63, 0, 0, 0, 0, +208,127,235, 19, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, +128, 0, 0, 0, 0, 0, 0, 0, 3, 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,128, 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, 4, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 7, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0,208,127,235, 19, 1, 0, 0, 0, 78, 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, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, + 14,215,126,191, 46,189,194, 61, 64,129,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 0, 0, 0, + 64,129,235, 19, 1, 0, 0, 0, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, + 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 0, 0,168, 1, 0, 0,176,129,235, 19, 1, 0, 0, 0, 81, 1, 0, 0, 1, 0, 0, 0,112,133,235, 19, 1, 0, 0, 0, +240,125,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 71,114, 97, 98, 0, 46, + 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 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, 63, 0, 0, 0, 0,144,131,235, 19, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 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,128, 0, 0, 0, 0, 0, 0, 0, + 3, 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,128, 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, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 5, 0, 0, 0, + 68, 65, 84, 65, 56, 1, 0, 0,144,131,235, 19, 1, 0, 0, 0, 78, 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, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, + 0,133,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 0, 0, 0, 0,133,235, 19, 1, 0, 0, 0, + 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, +112,133,235, 19, 1, 0, 0, 0, 81, 1, 0, 0, 1, 0, 0, 0, 48,137,235, 19, 1, 0, 0, 0,176,129,235, 19, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 73,110,102,108, 97,116,101, 0, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 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, 63, 0, 0, 0, 0, 80,135,235, 19, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 0, 0, 0, 0, 0, 0, 0, 3, 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,128, 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, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 4, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0, + 80,135,235, 19, 1, 0, 0, 0, 78, 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, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,192,136,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 0, 0, 0,192,136,235, 19, 1, 0, 0, 0, 76, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, 48,137,235, 19, 1, 0, 0, 0, + 81, 1, 0, 0, 1, 0, 0, 0, 64,152,139, 28, 1, 0, 0, 0,112,133,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76, 97,121,101,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 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, 63, 0, 0, 0, 0, 16,139,235, 19, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 0, 0, 0, 0, 0, 0, 0, 3, 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,128, 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, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 7, 0, 68, 65, 84, 65, 56, 1, 0, 0,112,218,234, 19, 1, 0, 0, 0, - 76, 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,128, 63, 0, 0,128, 63,205,204, 76, 62, 6, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0, 16,139,235, 19, 1, 0, 0, 0, + 78, 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, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,224,219,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,128,140,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8085,22 +9519,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,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, 48, 0, 0, 0,224,219,234, 19, 1, 0, 0, 0, 74, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 68, 65, 84, 65, 48, 0, 0, 0,128,140,235, 19, 1, 0, 0, 0, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 40, 1, 0, 0, 80,220,234, 19, 1, 0, 0, 0, 78, 1, 0, 0, 1, 0, 0, 0, -144,223,234, 19, 1, 0, 0, 0, 16,217,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 71,114, 97, 98, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, 64,152,139, 28, 1, 0, 0, 0, 81, 1, 0, 0, 1, 0, 0, 0, +240,110,235, 19, 1, 0, 0, 0, 48,137,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 76,105,103,104,116,101,110, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 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, 63, 0, 0, 0, 0, -176,221,234, 19, 1, 0, 0, 0, 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, 49,139, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 5, 0, 68, 65, 84, 65, 56, 1, 0, 0,176,221,234, 19, 1, 0, 0, 0, 76, 1, 0, 0, 1, 0, 0, 0, +205,204, 76, 62, 1, 5, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0,208, 49,139, 28, 1, 0, 0, 0, 78, 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, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, - 14,215,126,191, 46,189,194, 61, 32,223,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14,215,126,191, 46,189,194, 61, 0, 41,139, 28, 1, 0, 0, 0, 48, 84, 16, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8108,67 +9546,79 @@ 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,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, 48, 0, 0, 0, - 32,223,234, 19, 1, 0, 0, 0, 74, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, + 0, 41,139, 28, 1, 0, 0, 0, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 0, 0, 40, 1, 0, 0,144,223,234, 19, 1, 0, 0, 0, 78, 1, 0, 0, 1, 0, 0, 0,208,226,234, 19, 1, 0, 0, 0, - 80,220,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 73,110,102,108, 97,116, -101, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 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, 63, 0, 0, 0, 0,240,224,234, 19, 1, 0, 0, 0, + 66, 82, 0, 0,168, 1, 0, 0,240,110,235, 19, 1, 0, 0, 0, 81, 1, 0, 0, 1, 0, 0, 0,160,159,139, 28, 1, 0, 0, 0, + 64,152,139, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,105,120, 0,104, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 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, 63, 0, 0, 0, 0,208,112,235, 19, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 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,128, 0, 0, 0, 0, 0, 0, 0, + 3, 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,128, 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, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 0, 0, + 68, 65, 84, 65, 56, 1, 0, 0,208,112,235, 19, 1, 0, 0, 0, 78, 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, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, + 64,114,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 4, 0, - 68, 65, 84, 65, 56, 1, 0, 0,240,224,234, 19, 1, 0, 0, 0, 76, 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, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, - 96,226,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 0, 0, 0, 64,114,235, 19, 1, 0, 0, 0, + 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, +160,159,139, 28, 1, 0, 0, 0, 81, 1, 0, 0, 1, 0, 0, 0,240,140,235, 19, 1, 0, 0, 0,240,110,235, 19, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,117,108,116,105,112,108,121, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 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, 63, 0, 0, 0, 0, 32,155,139, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 0, 0, 0, 96,226,234, 19, 1, 0, 0, 0, - 74, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 40, 1, 0, 0, -208,226,234, 19, 1, 0, 0, 0, 78, 1, 0, 0, 1, 0, 0, 0, 16,230,234, 19, 1, 0, 0, 0,144,223,234, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76, 97,121,101,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 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, 63, 0, 0, 0, 0, 48,228,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 6, 0, 68, 65, 84, 65, 56, 1, 0, 0, - 48,228,234, 19, 1, 0, 0, 0, 76, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 3, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0, + 32,155,139, 28, 1, 0, 0, 0, 78, 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, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,160,229,234, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,128, 67,139, 28, 1, 0, 0, 0, + 48,198, 11, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 0, 0, 0,160,229,234, 19, 1, 0, 0, 0, 74, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,128, 67,139, 28, 1, 0, 0, 0, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 40, 1, 0, 0, 16,230,234, 19, 1, 0, 0, 0, - 78, 1, 0, 0, 1, 0, 0, 0, 80,233,234, 19, 1, 0, 0, 0,208,226,234, 19, 1, 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, 66, 82, 0, 0,168, 1, 0, 0,240,140,235, 19, 1, 0, 0, 0, + 81, 1, 0, 0, 1, 0, 0, 0,176,144,235, 19, 1, 0, 0, 0,160,159,139, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 80,105,110, 99,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 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, 63, 0, 0, 0, 0,112,231,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0,208,142,235, 19, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 0, 0, 0, 0, 0, 0, 0, 3, 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,128, 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, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 3, 0, 68, 65, 84, 65, 56, 1, 0, 0,112,231,234, 19, 1, 0, 0, 0, - 76, 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,128, 63, 0, 0,128, 63,205,204, 76, 62, 3, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0,208,142,235, 19, 1, 0, 0, 0, + 78, 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, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,224,232,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 64,144,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8176,22 +9626,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,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, 48, 0, 0, 0,224,232,234, 19, 1, 0, 0, 0, 74, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 68, 65, 84, 65, 48, 0, 0, 0, 64,144,235, 19, 1, 0, 0, 0, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 40, 1, 0, 0, 80,233,234, 19, 1, 0, 0, 0, 78, 1, 0, 0, 1, 0, 0, 0, -144,236,234, 19, 1, 0, 0, 0, 16,230,234, 19, 1, 0, 0, 0, 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, 82, 0, 0,168, 1, 0, 0,176,144,235, 19, 1, 0, 0, 0, 81, 1, 0, 0, 1, 0, 0, 0, +112,148,235, 19, 1, 0, 0, 0,240,140,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,101, 97,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 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, 63, 0, 0, 0, 0, -176,234,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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,146,235, 19, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 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, 25, 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, +128, 0, 0, 0, 0, 0, 0, 0, 3, 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,128, 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, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 1, 0, 68, 65, 84, 65, 56, 1, 0, 0,176,234,234, 19, 1, 0, 0, 0, 76, 1, 0, 0, 1, 0, 0, 0, +205,204, 76, 62, 1, 0, 2, 0, 68, 65, 84, 65, 56, 1, 0, 0,144,146,235, 19, 1, 0, 0, 0, 78, 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, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, - 14,215,126,191, 46,189,194, 61, 32,236,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14,215,126,191, 46,189,194, 61, 0,148,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8199,44 +9653,52 @@ 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,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, 48, 0, 0, 0, - 32,236,234, 19, 1, 0, 0, 0, 74, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, + 0,148,235, 19, 1, 0, 0, 0, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 0, 0, 40, 1, 0, 0,144,236,234, 19, 1, 0, 0, 0, 78, 1, 0, 0, 1, 0, 0, 0,208,239,234, 19, 1, 0, 0, 0, - 80,233,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, + 66, 82, 0, 0,168, 1, 0, 0,112,148,235, 19, 1, 0, 0, 0, 81, 1, 0, 0, 1, 0, 0, 0, 48,152,235, 19, 1, 0, 0, 0, +176,144,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 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, 63, 0, 0, 0, 0,240,237,234, 19, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 2, 0, - 68, 65, 84, 65, 56, 1, 0, 0,240,237,234, 19, 1, 0, 0, 0, 76, 1, 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, 63, 0, 0, 0, 0, 80,150,235, 19, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 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,128, 0, 0, 0, 0, 0, 0, 0, + 3, 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,128, 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, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 2, 0, 0, 0, + 68, 65, 84, 65, 56, 1, 0, 0, 80,150,235, 19, 1, 0, 0, 0, 78, 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, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, - 96,239,234, 19, 1, 0, 0, 0, 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,151,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 48, 0, 0, 0, 96,239,234, 19, 1, 0, 0, 0, - 74, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, 40, 1, 0, 0, -208,239,234, 19, 1, 0, 0, 0, 78, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,236,234, 19, 1, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,192,151,235, 19, 1, 0, 0, 0, + 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, + 48,152,235, 19, 1, 0, 0, 0, 81, 1, 0, 0, 1, 0, 0, 0, 64,103,139, 28, 1, 0, 0, 0,112,148,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 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, 63, 0, 0, 0, 0, 48,241,234, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16,154,235, 19, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 1, 0, 68, 65, 84, 65, 56, 1, 0, 0, - 48,241,234, 19, 1, 0, 0, 0, 76, 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, 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,128, 0, 0, 0, 0, 0, 0, 0, 3, 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,128, 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, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 1, 0, 68, 65, 84, 65, 56, 1, 0, 0, + 16,154,235, 19, 1, 0, 0, 0, 78, 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, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,160,242,234, 19, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,128,155,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8244,26 +9706,52 @@ 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,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, 48, 0, 0, 0,160,242,234, 19, 1, 0, 0, 0, 74, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,128,155,235, 19, 1, 0, 0, 0, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 85, 83, 69, 82,248, 11, 0, 0,192,190, 4, 2, 1, 0, 0, 0, -191, 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,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, 64,103,139, 28, 1, 0, 0, 0, + 81, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,152,235, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,117, 98,116,114, 97, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 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, 63, 0, 0, 0, 0, 0, 48,139, 28, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 2, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0, 0, 48,139, 28, 1, 0, 0, 0, + 78, 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, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 32,109,139, 28, 1, 0, 0, 0, 48,242, 4, 28, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 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, 48, 0, 0, 0, 32,109,139, 28, 1, 0, 0, 0, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 85, 83, 69, 82, 0, 12, 0, 0,128, 23, 5, 2, 1, 0, 0, 0,191, 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, 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, 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, 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, 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, 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, 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, @@ -8282,8 +9770,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, 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, 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, @@ -8295,20 +9783,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, 1, 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,248, 5, 3, 1, 0, 0, 0, 48, 16, 6, 3, 1, 0, 0, 0,112,120,194, 24, 1, 0, 0, 0, -112,120,194, 24, 1, 0, 0, 0, 32,126,194, 24, 1, 0, 0, 0, 32,126,194, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 94, 6, 3, 1, 0, 0, 0, 48,120, 6, 3, 1, 0, 0, 0, 0, 35,147, 22, 1, 0, 0, 0, 0, 35,147, 22, 1, 0, 0, 0, +176, 40,147, 22, 1, 0, 0, 0,176, 40,147, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8343,7 +9832,7 @@ char datatoc_B_blend[]= { 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,216, 21, 0, 0, 48,248, 5, 3, 1, 0, 0, 0,189, 0, 0, 0, 1, 0, 0, 0, 48, 16, 6, 3, 1, 0, 0, 0, + 68, 65, 84, 65, 8, 24, 0, 0, 48, 94, 6, 3, 1, 0, 0, 0,189, 0, 0, 0, 1, 0, 0, 0, 48,120, 6, 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, @@ -8369,16 +9858,17 @@ char datatoc_B_blend[]= { 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, +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, 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, 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,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,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,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, 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, 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, @@ -8386,16 +9876,17 @@ char datatoc_B_blend[]= { 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, +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, 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,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, 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,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, @@ -8403,16 +9894,17 @@ char datatoc_B_blend[]= { 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, +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, 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, 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,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, 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,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, @@ -8420,16 +9912,17 @@ char datatoc_B_blend[]= { 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, 255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, -200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 3, 4, 0, 0, +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, 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, 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,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, 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,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,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, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 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,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, @@ -8437,33 +9930,35 @@ char datatoc_B_blend[]= { 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, 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, 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, +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, 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, 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,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, 0, 0, 0, 0, + 0, 0, 0, 0, 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,114,114,114,255,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,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, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,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,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, +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, 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,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,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, 0, 0, 0, 0, + 0, 0, 0, 0, 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, @@ -8471,16 +9966,17 @@ char datatoc_B_blend[]= { 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, +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, 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, 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,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, 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, 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, @@ -8488,16 +9984,17 @@ char datatoc_B_blend[]= { 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, 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, 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, +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, 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,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,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, 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,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, @@ -8505,46 +10002,56 @@ char datatoc_B_blend[]= { 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,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, 68, 65, 84, 65,216, 21, 0, 0, 48, 16, 6, 3, 1, 0, 0, 0, -189, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,248, 5, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, +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, 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, 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,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, 96,128,255,255, +255,255,255,255, 0,170, 0,255,220, 96, 96,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, 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, + 68, 65, 84, 65, 8, 24, 0, 0, 48,120, 6, 3, 1, 0, 0, 0,189, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 94, 6, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 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, @@ -8553,15 +10060,16 @@ char datatoc_B_blend[]= { 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0,143,143,143,255, 0, 0, 0,255,217,217,217,255, 0, 0, 0, 40,255,255,255,255, 16, 64, 16,255,102,255,102,255,255,130, 0,255, 0, 0, 0,255,255,130, 0,255, 0, 0, 0,255, 255,255,255,255,230,150, 50,255,255, 32, 32,255, 0, 0, 0, 0,255,255,255, 10,255,130, 0, 60,255,138, 48,255, 34,221,221,255, -200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, -255,130, 0,255, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +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, 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,107,107,107,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100,255,130, 0,255, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, + 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255, +144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, @@ -8570,15 +10078,16 @@ char datatoc_B_blend[]= { 0, 0, 0,255,255,255,255,255,107,107,107,100,143,143,143,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 79,101, 73,255,135,177,125,255,255,255,255,255,255,255,255,255,255,130, 0,255, 0, 0, 0,255, 144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,130, 0,255, - 2, 0, 0, 0, 0, 0, 0, 0,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,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, 0, 0, 0, 0, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 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,255, + 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, + 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255, +144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, @@ -8587,16 +10096,17 @@ char datatoc_B_blend[]= { 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, 96,192, 64,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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,107,107,107,255,178,178,178,100, -255,130, 0,100, 94, 94, 94,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 79,101, 73,255,135,177,125,255, -255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143,143,143,255,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228,156,198,204,255,255,170,204, - 96,192, 64,255, 82, 96,110,255,124,137,150,255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,107,107,107,255,178,178,178,100,255,130, 0,100, 94, 94, 94,255, 0, 0, 0,255,255,136,255,255, + 0, 0, 0, 0,255,187,255,255, 79,101, 73,255,135,177,125,255,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255, +144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143,143,143,255,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,228,156,198,204,255,255,170,204, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 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,143,143,143,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, @@ -8604,16 +10114,17 @@ char datatoc_B_blend[]= { 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,228,156,198,255,255,255,170,255, 96,192, 64,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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, - 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,255,255,112,255,255,255,130, 0,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,200,255,255, 0, 0, 0, 0, 0, 0, 0, 0, - 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, + 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,130, 0,255, 0, 0, 0,255, +144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80,200,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, @@ -8621,15 +10132,16 @@ char datatoc_B_blend[]= { 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255, 144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60,255,133, 0,255, 0, 0, 0, 0, - 0, 0, 0, 0, 80,200,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,195,195,195,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,127,112,112,100, - 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80,200,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, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,195,195,195,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,143,143,143,255,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, + 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255, +144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,153,153,255, 0, 0, 0, 0, @@ -8638,15 +10150,16 @@ char datatoc_B_blend[]= { 0, 0, 0,255,255,255,255,255,143,143,143,255,198,119,119,255,255, 0, 0,255, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255, 144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, -100, 0, 0,255, 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, - 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,255,255,112,255,255,255,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, + 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,255, + 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, + 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255, +144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, @@ -8655,15 +10168,16 @@ char datatoc_B_blend[]= { 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, 96,192, 64,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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255, 0, 0, 0, 51, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, - 0, 0, 0, 0,143,143,143,255, 0, 0, 0,255,217,217,217,255, 0, 0, 0, 40,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, -255,130, 0,255, 0, 0, 0,255,255,130, 0,255, 0, 0, 0,255,255,255,255,255,230,150, 50,255, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255, 10,255,130, 0, 60,255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 51, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0,143,143,143,255, 0, 0, 0,255,217,217,217,255, + 0, 0, 0, 40,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,130, 0,255, 0, 0, 0,255,255,130, 0,255, 0, 0, 0,255, +255,255,255,255,230,150, 50,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 10,255,130, 0, 60,255,138, 48,255, 34,221,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, @@ -8672,12 +10186,22 @@ char datatoc_B_blend[]= { 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, +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, 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,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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -8694,8 +10218,8 @@ char datatoc_B_blend[]= { 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, - 68, 78, 65, 49,240,230, 0, 0, 48, 80,245, 19, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69, - 63, 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, + 68, 78, 65, 49, 16,234, 0, 0, 48, 80,245, 19, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69, +105, 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, @@ -8805,1743 +10329,1768 @@ char datatoc_B_blend[]= { 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,108,118,108, 0,115, 99,117,108, -112,116,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, 99,114,101, 97,115,101, 95,105,110,110,101, -114, 0, 99,114,101, 97,115,101, 95,111,117,116,101,114, 0, 99,114,101, 97,115,101, 95,114,105,109, 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, 99, 97,109,101,114, 97, 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,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,103,114,105,100,118,105,101,119, 0,114,101,103,105,111,110, 98, - 97,115,101, 0,115,112, 97, 99,101,116,121,112,101, 0, 98,108,111, 99,107,115, 99, 97,108,101, 0, 98,108,111, 99,107,104, 97, -110,100,108,101,114, 91, 56, 93, 0,108, 97,121, 95,117,115,101,100, 0, 42,111, 98, 95, 99,101,110,116,114,101, 0, 42, 98,103, -112,105, 99, 0,111, 98, 95, 99,101,110,116,114,101, 95, 98,111,110,101, 91, 51, 50, 93, 0,108, 97,121, 97, 99,116, 0,100,114, - 97,119,116,121,112,101, 0,115, 99,101,110,101,108,111, 99,107, 0, 97,114,111,117,110,100, 0,112,105,118,111,116, 95,108, 97, -115,116, 0,103,114,105,100, 0,112, 97,100,102, 0,110,101, 97,114, 0,102, 97,114, 0,103,114,105,100,108,105,110,101,115, 0, -103,114,105,100,102,108, 97,103, 0,103,114,105,100,115,117, 98,100,105,118, 0,109,111,100,101,115,101,108,101, 99,116, 0,107, -101,121,102,108, 97,103,115, 0,116,119,116,121,112,101, 0,116,119,109,111,100,101, 0,116,119,102,108, 97,103, 0,116,119,100, -114, 97,119,102,108, 97,103, 0, 99,117,115,116,111,109,100, 97,116, 97, 95,109, 97,115,107, 0, 97,102,116,101,114,100,114, 97, -119, 0,122, 98,117,102, 0,120,114, 97,121, 0,110,100,111,102,109,111,100,101, 0,110,100,111,102,102,105,108,116,101,114, 0, - 42,112,114,111,112,101,114,116,105,101,115, 95,115,116,111,114, 97,103,101, 0,118,101,114,116, 0,104,111,114, 0,109, 97,115, -107, 0,109,105,110, 91, 50, 93, 0,109, 97,120, 91, 50, 93, 0,109,105,110,122,111,111,109, 0,109, 97,120,122,111,111,109, 0, -115, 99,114,111,108,108, 0,115, 99,114,111,108,108, 95,117,105, 0,107,101,101,112,116,111,116, 0,107,101,101,112,122,111,111, -109, 0,107,101,101,112,111,102,115, 0, 97,108,105,103,110, 0,119,105,110,120, 0,119,105,110,121, 0,111,108,100,119,105,110, -120, 0,111,108,100,119,105,110,121, 0, 99,117,114,115,111,114, 91, 50, 93, 0, 42,116, 97, 98, 95,111,102,102,115,101,116, 0, -116, 97, 98, 95,110,117,109, 0,116, 97, 98, 95, 99,117,114, 0, 42,115, 99,114,101,101,110, 0,118, 50,100, 0, 42, 97,100,115, - 0,103,104,111,115,116, 67,117,114,118,101,115, 0, 97,117,116,111,115,110, 97,112, 0, 99,117,114,115,111,114, 86, 97,108, 0, -109, 97,105,110, 98, 0,109, 97,105,110, 98,111, 0,109, 97,105,110, 98,117,115,101,114, 0,114,101, 95, 97,108,105,103,110, 0, -112,114,101,118,105,101,119, 0,112, 97,116,104,102,108, 97,103, 0,100, 97,116, 97,105, 99,111,110, 0, 42,112,105,110,105,100, - 0,114,101,110,100,101,114, 95,115,105,122,101, 0, 99,104, 97,110,115,104,111,119,110, 0,122,101, 98,114, 97, 0,122,111,111, -109, 0,116,105,116,108,101, 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, 93, 0,102,105,108,101, 91, 56, 48, 93, 0,114,101, -110, 97,109,101,102,105,108,101, 91, 56, 48, 93, 0,115,111,114,116, 0,100,105,115,112,108, 97,121, 0, 97, 99,116,105,118,101, - 95, 98,111,111,107,109, 97,114,107, 0, 97, 99,116,105,118,101, 95,102,105,108,101, 0,115,101,108,115,116, 97,116,101, 0,102, - 95,102,112, 0,109,101,110,117, 0,102,112, 95,115,116,114, 91, 56, 93, 0, 42,112,117,112,109,101,110,117, 0, 42,112, 97,114, - 97,109,115, 0, 42,102,105,108,101,115, 0, 42,102,111,108,100,101,114,115, 95,112,114,101,118, 0, 42,102,111,108,100,101,114, -115, 95,110,101,120,116, 0, 42,111,112, 0, 42,108,111, 97,100,105,109, 97,103,101, 95,116,105,109,101,114, 0, 42,108, 97,121, -111,117,116, 0,114,101, 99,101,110,116,110,114, 0, 98,111,111,107,109, 97,114,107,110,114, 0,115,121,115,116,101,109,110,114, - 0,116,114,101,101, 0, 42,116,114,101,101,115,116,111,114,101, 0,115,101, 97,114, 99,104, 95,115,116,114,105,110,103, 91, 51, - 50, 93, 0,115,101, 97,114, 99,104, 95,116,115,101, 0,115,101, 97,114, 99,104, 95,102,108, 97,103,115, 0,100,111, 95, 0,111, -117,116,108,105,110,101,118,105,115, 0,115,116,111,114,101,102,108, 97,103, 0, 42, 99,117,109, 97,112, 0,105,109, 97,110,114, - 0, 99,117,114,116,105,108,101, 0,105,109,116,121,112,101,110,114, 0,108,111, 99,107, 0,112,105,110, 0,100,116, 95,117,118, - 0,115,116,105, 99,107,121, 0,100,116, 95,117,118,115,116,114,101,116, 99,104, 0, 99,101,110,116,120, 0, 99,101,110,116,121, - 0, 42,116,101,120,116, 0,116,111,112, 0,118,105,101,119,108,105,110,101,115, 0,108,104,101,105,103,104,116, 0, 99,119,105, -100,116,104, 0,108,105,110,101,110,114,115, 95,116,111,116, 0,108,101,102,116, 0,115,104,111,119,108,105,110,101,110,114,115, - 0,116, 97, 98,110,117,109, 98,101,114, 0,115,104,111,119,115,121,110,116, 97,120, 0,111,118,101,114,119,114,105,116,101, 0, -108,105,118,101, 95,101,100,105,116, 0,112,105,120, 95,112,101,114, 95,108,105,110,101, 0,116,120,116,115, 99,114,111,108,108, - 0,116,120,116, 98, 97,114, 0,119,111,114,100,119,114, 97,112, 0,100,111,112,108,117,103,105,110,115, 0,102,105,110,100,115, -116,114, 91, 50, 53, 54, 93, 0,114,101,112,108, 97, 99,101,115,116,114, 91, 50, 53, 54, 93, 0, 42,112,121, 95,100,114, 97,119, - 0, 42,112,121, 95,101,118,101,110,116, 0, 42,112,121, 95, 98,117,116,116,111,110, 0, 42,112,121, 95, 98,114,111,119,115,101, -114, 99, 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95,103,108,111, 98, 97,108,100,105, 99,116, 0,108, 97,115,116,115,112, 97, - 99,101, 0,115, 99,114,105,112,116,110, 97,109,101, 91, 50, 53, 54, 93, 0,115, 99,114,105,112,116, 97,114,103, 91, 50, 53, 54, - 93, 0, 42,115, 99,114,105,112,116, 0, 42, 98,117,116, 95,114,101,102,115, 0,114,101,100,114, 97,119,115, 0, 42,105,100, 0, - 97,115,112,101, 99,116, 0, 42, 99,117,114,102,111,110,116, 0,109,120, 0,109,121, 0, 42,101,100,105,116,116,114,101,101, 0, -116,114,101,101,116,121,112,101, 0,116,101,120,102,114,111,109, 0,110,117,109,116,105,108,101,115,120, 0,110,117,109,116,105, -108,101,115,121, 0,118,105,101,119,114,101, 99,116, 0, 98,111,111,107,109, 97,114,107,114,101, 99,116, 0,115, 99,114,111,108, -108,112,111,115, 0,115, 99,114,111,108,108,104,101,105,103,104,116, 0,115, 99,114,111,108,108, 97,114,101, 97, 0,114,101,116, -118, 97,108, 0,112,114,118, 95,119, 0,112,114,118, 95,104, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 41, 40, 41, 0, - 40, 42,114,101,116,117,114,110,102,117,110, 99, 95,101,118,101,110,116, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117, -110, 99, 95, 97,114,103,115, 41, 40, 41, 0, 42, 97,114,103, 49, 0, 42, 97,114,103, 50, 0, 42,109,101,110,117,112, 0, 42,105, -109,103, 0,108,101,110, 95, 97,108,108,111, 99, 0, 99,117,114,115,111,114, 0,114,112,116, 95,109, 97,115,107, 0,115, 99,114, -111,108,108, 98, 97, 99,107, 0,104,105,115,116,111,114,121, 0,112,114,111,109,112,116, 91, 50, 53, 54, 93, 0,108, 97,110,103, -117, 97,103,101, 91, 51, 50, 93, 0,115,101,108, 95,115,116, 97,114,116, 0,115,101,108, 95,101,110,100, 0,102,105,108,101,110, - 97,109,101, 91, 50, 53, 54, 93, 0, 98,108,102, 95,105,100, 0,117,105,102,111,110,116, 95,105,100, 0,114, 95,116,111, 95,108, - 0,112,111,105,110,116,115, 0,107,101,114,110,105,110,103, 0,105,116, 97,108,105, 99, 0, 98,111,108,100, 0,115,104, 97,100, -111,119, 0,115,104, 97,100,120, 0,115,104, 97,100,121, 0,115,104, 97,100,111,119, 97,108,112,104, 97, 0,115,104, 97,100,111, -119, 99,111,108,111,114, 0,112, 97,110,101,108,116,105,116,108,101, 0,103,114,111,117,112,108, 97, 98,101,108, 0,119,105,100, -103,101,116,108, 97, 98,101,108, 0,119,105,100,103,101,116, 0,112, 97,110,101,108,122,111,111,109, 0,109,105,110,108, 97, 98, -101,108, 99,104, 97,114,115, 0,109,105,110,119,105,100,103,101,116, 99,104, 97,114,115, 0, 99,111,108,117,109,110,115,112, 97, - 99,101, 0,116,101,109,112,108, 97,116,101,115,112, 97, 99,101, 0, 98,111,120,115,112, 97, 99,101, 0, 98,117,116,116,111,110, -115,112, 97, 99,101,120, 0, 98,117,116,116,111,110,115,112, 97, 99,101,121, 0,112, 97,110,101,108,115,112, 97, 99,101, 0,112, - 97,110,101,108,111,117,116,101,114, 0,112, 97,100, 91, 49, 93, 0,111,117,116,108,105,110,101, 91, 52, 93, 0,105,110,110,101, -114, 91, 52, 93, 0,105,110,110,101,114, 95,115,101,108, 91, 52, 93, 0,105,116,101,109, 91, 52, 93, 0,116,101,120,116, 91, 52, - 93, 0,116,101,120,116, 95,115,101,108, 91, 52, 93, 0,115,104, 97,100,101,100, 0,115,104, 97,100,101,116,111,112, 0,115,104, - 97,100,101,100,111,119,110, 0,105,110,110,101,114, 95, 97,110,105,109, 91, 52, 93, 0,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,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, 97,110,105,109, 95,112,108, 97,121,101,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, 97,121,101,114, 95, -112,114,101,115,101,116, 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, 42,101,120,116,101,114,110, 97,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,104, 97,105,114, 95,105,110,100,101,120, 0, 97,108,105,118,101, 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,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,112, 97,100, 50, 91, 50, 93, 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,107,109,105, 95,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,102,105,108,116,101,114, 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, 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, 0,103,114,111,117,112, 91, 54, 52, 93, 0,116,101,109,112,108, - 97,116,101,115, 0,103,114,111,117,112,109,111,100,101, 0,112, 97,116,104,115, 0,107,101,121,105,110,103,102,108, 97,103, 0, - 97, 99,116,105,118,101, 95,112, 97,116,104, 0, 42,116,109,112, 97, 99,116, 0,110,108, 97, 95,116,114, 97, 99,107,115, 0, 42, - 97, 99,116,115,116,114,105,112, 0,100,114,105,118,101,114,115, 0,111,118,101,114,114,105,100,101,115, 0, 97, 99,116, 95, 98, -108,101,110,100,109,111,100,101, 0, 97, 99,116, 95,101,120,116,101,110,100,109,111,100,101, 0, 97, 99,116, 95,105,110,102,108, -117,101,110, 99,101, 0,114,117,108,101, 0,111,112,116,105,111,110,115, 0,102,101, 97,114, 95,102, 97, 99,116,111,114, 0,115, -105,103,110, 97,108, 95,105,100, 0,108,111,111,107, 95, 97,104,101, 97,100, 0,111,108,111, 99, 91, 51, 93, 0,113,117,101,117, -101, 95,115,105,122,101, 0,119, 97,110,100,101,114, 0,102,108,101,101, 95,100,105,115,116, 97,110, 99,101, 0,104,101, 97,108, -116,104, 0,115,116, 97,116,101, 95,105,100, 0,114,117,108,101,115, 0, 99,111,110,100,105,116,105,111,110,115, 0, 97, 99,116, -105,111,110,115, 0,114,117,108,101,115,101,116, 95,116,121,112,101, 0,114,117,108,101, 95,102,117,122,122,105,110,101,115,115, - 0,108, 97,115,116, 95,115,116, 97,116,101, 95,105,100, 0,108, 97,110,100,105,110,103, 95,115,109,111,111,116,104,110,101,115, -115, 0, 98, 97,110,107,105,110,103, 0, 97,103,103,114,101,115,115,105,111,110, 0, 97, 99, 99,117,114, 97, 99,121, 0, 97,105, -114, 95,109,105,110, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97, -120, 95, 97, 99, 99, 0, 97,105,114, 95,109, 97,120, 95, 97,118,101, 0, 97,105,114, 95,112,101,114,115,111,110, 97,108, 95,115, -112, 97, 99,101, 0,108, 97,110,100, 95,106,117,109,112, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95,115,112, -101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95, 97, 99, 99, 0,108, 97,110,100, 95,109, 97,120, 95, 97,118,101, 0,108, 97, -110,100, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,115,116,105, 99,107, 95,102,111,114, - 99,101, 0,115,116, 97,116,101,115, 0, 42,115,109,100, 0, 42,102,108,117,105,100, 0, 42,102,108,117,105,100, 95,103,114,111, -117,112, 0, 42, 99,111,108,108, 95,103,114,111,117,112, 0, 42,119,116, 0, 42,116,101,120, 95,119,116, 0, 42,116,101,120, 95, -115,104, 97,100,111,119, 0, 42,115,104, 97,100,111,119, 0,112, 48, 91, 51, 93, 0,112, 49, 91, 51, 93, 0,100,120, 0,111,109, -101,103, 97, 0,116,101,109,112, 65,109, 98, 0, 98,101,116, 97, 0,114,101,115, 91, 51, 93, 0, 97,109,112,108,105,102,121, 0, -109, 97,120,114,101,115, 0,118,105,101,119,115,101,116,116,105,110,103,115, 0,110,111,105,115,101, 0,100,105,115,115, 95,112, -101,114, 99,101,110,116, 0,100,105,115,115, 95,115,112,101,101,100, 0,114,101,115, 95,119,116, 91, 51, 93, 0,100,120, 95,119, -116, 0,118, 51,100,110,117,109, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 91, 50, 93, 0,112,116, 99, 97, 99,104,101, -115, 91, 50, 93, 0,118,101,108,111, 99,105,116,121, 91, 51, 93, 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,199, 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, 99, 52,105, 0,118,101, 99, 52,102, 0,118,101, 99, 52,100, 0, -114, 99,116,105, 0,114, 99,116,102, 0, 73, 68, 80,114,111,112,101,114,116,121, 68, 97,116, 97, 0, 73, 68, 80,114,111,112,101, -114,116,121, 0, 73, 68, 0, 76,105, 98,114, 97,114,121, 0, 70,105,108,101, 68, 97,116, 97, 0, 80,114,101,118,105,101,119, 73, -109, 97,103,101, 0, 73,112,111, 68,114,105,118,101,114, 0, 79, 98,106,101, 99,116, 0, 73,112,111, 67,117,114,118,101, 0, 66, - 80,111,105,110,116, 0, 66,101,122, 84,114,105,112,108,101, 0, 73,112,111, 0, 75,101,121, 66,108,111, 99,107, 0, 75,101,121, - 0, 65,110,105,109, 68, 97,116, 97, 0, 84,101,120,116, 76,105,110,101, 0, 84,101,120,116, 77, 97,114,107,101,114, 0, 84,101, -120,116, 0, 80, 97, 99,107,101,100, 70,105,108,101, 0, 67, 97,109,101,114, 97, 0, 73,109, 97,103,101, 85,115,101,114, 0, 83, - 99,101,110,101, 0, 73,109, 97,103,101, 0, 71, 80, 85, 84,101,120,116,117,114,101, 0, 97,110,105,109, 0, 82,101,110,100,101, -114, 82,101,115,117,108,116, 0, 77, 84,101,120, 0, 84,101,120, 0, 80,108,117,103,105,110, 84,101,120, 0, 67, 66, 68, 97,116, - 97, 0, 67,111,108,111,114, 66, 97,110,100, 0, 69,110,118, 77, 97,112, 0, 73,109, 66,117,102, 0, 80,111,105,110,116, 68,101, -110,115,105,116,121, 0, 86,111,120,101,108, 68, 97,116, 97, 0, 98, 78,111,100,101, 84,114,101,101, 0, 84,101,120, 77, 97,112, -112,105,110,103, 0, 76, 97,109,112, 0, 67,117,114,118,101, 77, 97,112,112,105,110,103, 0, 87, 97,118,101, 0, 86,111,108,117, -109,101, 83,101,116,116,105,110,103,115, 0, 77, 97,116,101,114,105, 97,108, 0, 71,114,111,117,112, 0, 86, 70,111,110,116, 0, - 86, 70,111,110,116, 68, 97,116, 97, 0, 77,101,116, 97, 69,108,101,109, 0, 66,111,117,110,100, 66,111,120, 0, 77,101,116, 97, - 66, 97,108,108, 0, 78,117,114, 98, 0, 67,104, 97,114, 73,110,102,111, 0, 84,101,120,116, 66,111,120, 0, 67,117,114,118,101, - 0, 80, 97,116,104, 0, 83,101,108, 66,111,120, 0, 69,100,105,116, 70,111,110,116, 0, 77,101,115,104, 0, 77, 70, 97, 99,101, - 0, 77, 84, 70, 97, 99,101, 0, 84, 70, 97, 99,101, 0, 77, 86,101,114,116, 0, 77, 69,100,103,101, 0, 77, 68,101,102,111,114, -109, 86,101,114,116, 0, 77, 67,111,108, 0, 77, 83,116,105, 99,107,121, 0, 77, 83,101,108,101, 99,116, 0, 69,100,105,116, 77, -101,115,104, 0, 67,117,115,116,111,109, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 0, 80, 97,114,116,105, 97,108, 86, -105,115,105, 98,105,108,105,116,121, 0, 77, 68,101,102,111,114,109, 87,101,105,103,104,116, 0, 77, 84,101,120, 80,111,108,121, - 0, 77, 76,111,111,112, 85, 86, 0, 77, 76,111,111,112, 67,111,108, 0, 77, 70,108,111, 97,116, 80,114,111,112,101,114,116,121, - 0, 77, 73,110,116, 80,114,111,112,101,114,116,121, 0, 77, 83,116,114,105,110,103, 80,114,111,112,101,114,116,121, 0, 79,114, -105,103, 83,112, 97, 99,101, 70, 97, 99,101, 0, 77, 68,105,115,112,115, 0, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 69, - 82, 84, 95, 80, 66, 86, 72, 95, 85, 80, 68, 65, 84, 69, 32, 40, 49, 60, 60, 55, 41, 32, 32, 35,100,101,102,105,110,101, 32, 77, - 69, 95, 69, 68, 71, 69, 68, 82, 65, 87, 32, 40, 49, 60, 60, 49, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, - 77, 32, 40, 49, 60, 60, 50, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 71, 79, 78, 32, 40, 49, 60, 60, 51, 41, 32, - 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 82, 69, 78, 68, 69, 82, 32, 40, 49, 60, 60, 53, 41, 32, 35,100, -101,102,105,110,101, 32, 77, 69, 95, 76, 79, 79, 83, 69, 69, 68, 71, 69, 32, 40, 49, 60, 60, 55, 41, 32, 35,100,101,102,105,110, -101, 32, 77, 69, 95, 83, 69, 65, 77, 95, 76, 65, 83, 84, 32, 40, 49, 60, 60, 56, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, - 95, 83, 72, 65, 82, 80, 32, 40, 49, 60, 60, 57, 41, 32, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, - 49, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 50, 32, 50, 32, 35,100,101,102,105,110,101, 32, - 77, 69, 95, 70, 76, 73, 80, 86, 51, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 52, 32, 56, 32, - 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 89, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, - 80, 82, 79, 74, 88, 90, 32, 51, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 89, 90, 32, 54, 52, 32, 32, - 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 49, 86, 50, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 50, 86, - 51, 32, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 49, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, - 95, 86, 51, 86, 52, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 52, 86, 49, 32, 56, 32, 32, 35,100,101,102,105, -110,101, 32, 77, 69, 95, 83, 77, 79, 79, 84, 72, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 65, 67, 69, 95, 83, - 69, 76, 32, 50, 32, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 83, 69,108, 32, 48, 32, 35,100,101,102,105,110,101, - 32, 77, 69, 95, 69, 83, 69,108, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 83, 69, 76, 32, 50, 32, 32, 35,100, -101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 32, 49, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 67, - 84, 73, 86, 69, 32, 50, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 49, 32, 52, 32, 35,100,101,102,105,110, -101, 32, 84, 70, 95, 83, 69, 76, 50, 32, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 51, 32, 49, 54, 32, 35, -100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 52, 32, 51, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 72, 73, 68, - 69, 32, 54, 52, 32, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 89, 78, 65, 77, 73, 67, 32, 49, 32, 35,100,101,102, -105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 83, 79, 82, 84, 32, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 69, - 88, 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 86, 69, 82, 84, 32, 56, 32, 35,100,101,102, -105,110,101, 32, 84, 70, 95, 76, 73, 71, 72, 84, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, - 68, 67, 79, 76, 32, 54, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 73, 76, 69, 83, 32, 49, 50, 56, 32, 32, 35,100, -101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 32, 50, 53, 54, 32, 35,100,101,102,105,110,101, 32, 84, - 70, 95, 84, 87, 79, 83, 73, 68, 69, 32, 53, 49, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 73, 78, 86, 73, 83, 73, 66, - 76, 69, 32, 49, 48, 50, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 79, 66, 67, 79, 76, 32, 50, 48, 52, 56, 32, 35,100, -101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 50, 32, 52, 48, 57, 54, 32, 32, 35,100,101,102,105,110, -101, 32, 84, 70, 95, 83, 72, 65, 68, 79, 87, 32, 56, 49, 57, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 77, 70, 79, - 78, 84, 32, 49, 54, 51, 56, 52, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 79, 76, 73, 68, 32, 48, 32, 35,100,101, -102,105,110,101, 32, 84, 70, 95, 65, 68, 68, 32, 49, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 32, 50, - 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 67, 76, 73, 80, 32, 52, 32, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, - 83, 85, 66, 32, 51, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 49, 32, 49, 32, - 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 50, 32, 50, 32, 35,100,101,102,105,110,101, - 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 51, 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, - 82, 69, 67, 65, 84, 69, 68, 52, 32, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 49, 32, 49, 54, 32, 35,100, -101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 50, 32, 51, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 51, - 32, 54, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 52, 32, 49, 50, 56, 32, 35,101,110,100,105,102, 32,105, - 97,108, 32,108,101,118,101,108, 32, 49, 32,100, 97,116, 97, 32,116,104, 97,116, 32, 99, 97,110,110,111,116, 32, 98,101, 32,109, -111,100,105,102,105,101,100, 32,102,114,111,109, 32,111,116,104,101,114, 32,108,101,118,101,108,115, 32, 42, 47, 10, 9, 67,117, -115,116,111,109, 68, 97,116, 97, 32,118,100, 97,116, 97, 59, 10, 9, 67,117,115,116,111,109, 68, 97,116, 97, 32,102,100, 97,116, - 97, 59, 10, 9,115,104,111,114,116, 32, 42,101,100,103,101, 95,102,108, 97,103,115, 59, 10, 9, 99,104, 97,114, 32, 42,101,100, -103,101, 95, 99,114,101, 97,115,101,115, 59, 10,125, 32, 77,117,108,116,105,114,101,115, 59, 10, 10, 47, 42, 42, 32, 69,110,100, - 32, 77,117,108,116,105,114,101,115, 32, 42, 42, 47, 10, 10,116,121,112,101,100,101,102, 32,115,116,114,117, 99,116, 32, 80, 97, -114,116,105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 32,123, 10, 9,117,110,115,105,103,110,101,100, 32,105,110,116, 32, - 42,118,101,114,116, 95,109, 97,112, 59, 32, 47, 42, 32,118,101,114,116, 95,109, 97,112, 91, 79,108,100, 32, 73,110,100,101,120, - 93, 61, 32, 78,101,119, 32, 73,110,100,101,120, 32, 42, 47, 10, 9,105,110,116, 32, 42,101,100,103,101, 95,109, 97,112, 59, 32, - 47, 42, 32,101,100,103,101, 95,109, 97,112, 91, 79,108,100, 32, 73,110,100,101,120, 93, 61, 32, 78,101,119, 32, 73,110,100,101, -120, 44, 32, 45, 49, 61, 32,104,105,100,100,101,110, 32, 42, 47, 10, 9, 77, 70, 97, 99,101, 32, 42,111,108,100, 95,102, 97, 99, -101,115, 59, 10, 9, 77, 69,100,103,101, 32, 42,111,108,100, 95,101,100,103,101,115, 59, 10, 9,117,110,115,105,103,110,101,100, - 32,105,110,116, 32,116,111,116,102, 97, 99,101, 44, 32,116,111,116,101,100,103,101, 44, 32,116,111,116,118,101,114,116, 44, 32, -112, 97,100, 59, 10,125, 32, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 59, 10, 10, 47, 42, 32,109,118, -101,114,116, 45, 62,102,108, 97,103, 32, 40, 49, 61, 83, 69, 76, 69, 67, 84, 41, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, - 77, 69, 95, 83, 80, 72, 69, 82, 69, 84, 69, 83, 84, 9, 9, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 69, 82, 84, - 95, 84, 77, 80, 95, 84, 65, 71, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 72, 73, 68, 69, 9, 9, 9, 9, 49, - 54, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 69, 82, 84, 95, 77, 69, 82, 71, 69, 68, 9, 9, 40, 49, 60, 60, 54, 41, - 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 69, 82, 84, 95, 80, 66, 86, 72, 95, 85, 80, 68, 65, 84, 69, 9, 40, 49, 60, - 60, 55, 41, 10, 10, 47, 42, 32,109,101,100,103,101, 45, 62,102,108, 97,103, 32, 40, 49, 61, 83, 69, 76, 69, 67, 84, 41, 42, 47, - 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 68, 82, 65, 87, 9, 9, 9, 40, 49, 60, 60, 49, 41, 10, 35,100, -101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 9, 9, 9, 9, 40, 49, 60, 60, 50, 41, 10, 35,100,101,102,105,110,101, 32, - 77, 69, 95, 70, 71, 79, 78, 9, 9, 9, 9, 40, 49, 60, 60, 51, 41, 10, 9, 9, 9, 9, 9, 9, 47, 42, 32,114,101,115,101,114, -118,101, 32, 49, 54, 32,102,111,114, 32, 77, 69, 95, 72, 73, 68, 69, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, - 69, 68, 71, 69, 82, 69, 78, 68, 69, 82, 9, 9, 40, 49, 60, 60, 53, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 76, 79, - 79, 83, 69, 69, 68, 71, 69, 9, 9, 40, 49, 60, 60, 55, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 95, - 76, 65, 83, 84, 9, 9, 40, 49, 60, 60, 56, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 72, 65, 82, 80, 9, 9, 9, - 40, 49, 60, 60, 57, 41, 10, 10, 47, 42, 32,112,117,110,111, 32, 61, 32,118,101,114,116,101,120,110,111,114,109, 97,108, 32, 40, -109,102, 97, 99,101, 41, 32, 42, 47, 10, 47, 42, 32,114,101,110,100,101,114, 32, 97,115,115,117,109,101,115, 32,102,108,105,112, -115, 32,116,111, 32, 98,101, 32,111,114,100,101,114,101,100, 32,108,105,107,101, 32,116,104,105,115, 32, 42, 47, 10, 35,100,101, -102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 49, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, - 80, 86, 50, 9, 9, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 51, 9, 9, 52, 10, 35,100,101,102, -105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 52, 9, 9, 56, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, - 88, 89, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 90, 9, 9, 51, 50, 10, 35,100,101, -102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 89, 90, 9, 9, 54, 52, 10, 10, 47, 42, 32,101,100, 99,111,100,101, 32, 40,109, -102, 97, 99,101, 41, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 49, 86, 50, 9, 9, 9, 49, 10, 35,100,101, -102,105,110,101, 32, 77, 69, 95, 86, 50, 86, 51, 9, 9, 9, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 49, - 9, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 52, 9, 9, 9, 52, 10, 35,100,101,102,105,110,101, - 32, 77, 69, 95, 86, 52, 86, 49, 9, 9, 9, 56, 10, 10, 47, 42, 32,102,108, 97,103, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, - 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 77, 79, 79, 84, 72, 9, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 77, - 69, 95, 70, 65, 67, 69, 95, 83, 69, 76, 9, 9, 9, 50, 10, 9, 9, 9, 9, 9, 9, 47, 42, 32,102,108, 97,103, 32, 77, 69, 95, - 72, 73, 68, 69, 61, 61, 49, 54, 32,105,115, 32,117,115,101,100, 32,104,101,114,101, 32,116,111,111, 32, 42, 47, 32, 10, 47, 42, - 32,109,115,101,108,101, 99,116, 45, 62,116,121,112,101, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 83, 69, -108, 9, 48, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 83, 69,108, 32, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, - 95, 70, 83, 69, 76, 32, 50, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,102,108, 97,103, 32, 42, 47, 10, 35,100,101,102, -105,110,101, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 9, 49, 32, 47, 42, 32,117,115,101, 32, 77, 70, 97, 99,101, 32,104,105,100, -101, 32,102,108, 97,103, 32, 40, 97,102,116,101,114, 32, 50, 46, 52, 51, 41, 44, 32,115,104,111,117,108,100, 32, 98,101, 32, 97, - 98,108,101, 32,116,111, 32,114,101,117,115,101, 32, 97,102,116,101,114, 32, 50, 46, 52, 52, 32, 42, 47, 10, 35,100,101,102,105, -110,101, 32, 84, 70, 95, 65, 67, 84, 73, 86, 69, 9, 50, 32, 47, 42, 32,100,101,112,114,101, 99, 97,116,101,100, 33, 32, 42, 47, - 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 49, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, - 69, 76, 50, 9, 9, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 51, 9, 9, 49, 54, 10, 35,100,101,102,105, -110,101, 32, 84, 70, 95, 83, 69, 76, 52, 9, 9, 51, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 72, 73, 68, 69, 9, 9, - 54, 52, 32, 47, 42, 32,117,110,117,115,101,100, 44, 32,115, 97,109,101, 32, 97,115, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 32, - 42, 47, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,109,111,100,101, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, - 70, 95, 68, 89, 78, 65, 77, 73, 67, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 83, 79, 82, - 84, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 69, 88, 9, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 84, - 70, 95, 83, 72, 65, 82, 69, 68, 86, 69, 82, 84, 9, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 76, 73, 71, 72, 84, 9, - 9, 49, 54, 10, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 67, 79, 76, 9, 54, 52, 10, 35,100,101, -102,105,110,101, 32, 84, 70, 95, 84, 73, 76, 69, 83, 9, 9, 49, 50, 56, 9, 9, 47, 42, 32,100,101,112,114,101, 99, 97,116,101, -100, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 9, 50, 53, 54, 10, 35,100, -101,102,105,110,101, 32, 84, 70, 95, 84, 87, 79, 83, 73, 68, 69, 9, 9, 53, 49, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, - 95, 73, 78, 86, 73, 83, 73, 66, 76, 69, 9, 49, 48, 50, 52, 10, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 79, 66, 67, 79, - 76, 9, 9, 50, 48, 52, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 50, 9, 52, 48, - 57, 54, 9, 47, 42, 32,119,105,116,104, 32, 90, 32, 97,120,105,115, 32, 99,111,110,115,116,114, 97,105,110,116, 32, 42, 47, 10, - 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 68, 79, 87, 9, 9, 56, 49, 57, 50, 10, 35,100,101,102,105,110,101, 32, - 84, 70, 95, 66, 77, 70, 79, 78, 84, 9, 9, 49, 54, 51, 56, 52, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,116,114, 97, -110,115,112, 44, 32,118, 97,108,117,101,115, 32, 49, 45, 52, 32, 97,114,101, 32,117,115,101,100, 32, 97,115, 32,102,108, 97,103, -115, 32,105,110, 32,116,104,101, 32, 71, 76, 44, 32, 87, 65, 82, 78, 73, 78, 71, 44, 32, 84, 70, 95, 83, 85, 66, 32, 99, 97,110, -116, 32,119,111,114,107, 32,119,105,116,104, 32,116,104,105,115, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, - 79, 76, 73, 68, 9, 48, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 68, 68, 9, 9, 49, 10, 35,100,101,102,105,110,101, - 32, 84, 70, 95, 65, 76, 80, 72, 65, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 67, 76, 73, 80, 9, 9, 52, 32, 47, - 42, 32, 99,108,105,112,109, 97,112, 32, 97,108,112,104, 97, 47, 98,105,110, 97,114,121, 32, 97,108,112,104, 97, 32, 97,108,108, - 32,111,114, 32,110,111,116,104,105,110,103, 33, 32, 42, 47, 10, 10, 47, 42, 32,115,117, 98, 32,105,115, 32,110,111,116, 32, 97, -118, 97,105,108, 97, 98,108,101, 32,105,110, 32,116,104,101, 32,117,115,101,114, 32,105,110,116,101,114,102, 97, 99,101, 32, 97, -110,121,109,111,114,101, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 85, 66, 9, 9, 51, 10, 10, 10, 47, 42, - 32,109,116,102, 97, 99,101, 45, 62,117,110,119,114, 97,112, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, - 80, 82, 69, 67, 65, 84, 69, 68, 49, 9, 49, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, - 68, 50, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 51, 9, 52, 10, 35,100, -101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 52, 9, 56, 10, 35,100,101,102,105,110,101, 32, 84, - 70, 95, 80, 73, 78, 49, 9, 9, 32, 32, 32, 32, 49, 54, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 50, 9, 9, - 32, 32, 32, 32, 51, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 51, 9, 32, 32, 32, 9, 9, 54, 52, 10, 35, -100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 52, 9, 32, 32, 32, 32, 9, 49, 50, 56, 10, 10, 35,101,110,100,105,102, 10, - 44, 32,108, 79, 67, 75, 33,115,101,108,101, 99,116,101,100, 32, 98,112,111,105,110,116, 32, 42, 47, 10, 9, 66, 80,111,105,110, -116, 32, 42,108, 97,115,116,115,101,108, 98,112, 59, 10, 9, 10, 9, 47, 42, 32,102,111,110,116, 32,112, 97,114,116, 32, 42, 47, - 10, 9,115,104,111,114,116, 32,108,101,110, 44, 32,108,105,110,101,115, 44, 32,112,111,115, 44, 32,115,112, 97, 99,101,109,111, -100,101, 59, 10, 9,102,108,111, 97,116, 32,115,112, 97, 99,105,110,103, 44, 32,108,105,110,101,100,105,115,116, 44, 32,115,104, -101, 97,114, 44, 32,102,115,105,122,101, 44, 32,119,111,114,100,115,112, 97, 99,101, 44, 32,117,108,112,111,115, 44, 32,117,108, -104,101,105,103,104,116, 59, 10, 9,102,108,111, 97,116, 32,120,111,102, 44, 32,121,111,102, 59, 10, 9,102,108,111, 97,116, 32, -108,105,110,101,119,105,100,116,104, 59, 10, 70, 82, 69, 69, 8, 25, 0, 77,117,108,116,105,114,101,115, 67,111,108, 0, 77,117, -108,116,105,114,101,115, 67,111,108, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 70, 97, 99,101, 0, 77,117,108,116,105, -114,101,115, 69,100,103,101, 0, 77,117,108,116,105,114,101,115, 76,101,118,101,108, 0, 77,111,100,105,102,105,101,114, 68, 97, -116, 97, 0, 83,117, 98,115,117,114,102, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 77,111, -100,105,102,105,101,114, 68, 97,116, 97, 0, 67,117,114,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,117,105, -108,100, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 97,115,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, - 65,114,114, 97,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,105,114,114,111,114, 77,111,100,105,102,105,101,114, - 68, 97,116, 97, 0, 69,100,103,101, 83,112,108,105,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,101,118,101,108, - 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 77,101,115,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83, -109,111,107,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107,101, 68,111,109, 97,105,110, 83,101,116,116, -105,110,103,115, 0, 83,109,111,107,101, 70,108,111,119, 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 67,111,108,108, - 83,101,116,116,105,110,103,115, 0, 68,105,115,112,108, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 85, 86, - 80,114,111,106,101, 99,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101, 99,105,109, 97,116,101, 77,111,100,105, -102,105,101,114, 68, 97,116, 97, 0, 83,109,111,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67, 97,115,116, - 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87, 97,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65,114, -109, 97,116,117,114,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 72,111,111,107, 77,111,100,105,102,105,101,114, 68, - 97,116, 97, 0, 83,111,102,116, 98,111,100,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 77,111, -100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 0, 67,108,111,116,104, 83,105,109, 83,101,116,116,105,110,103, -115, 0, 67,108,111,116,104, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 80,111,105,110,116, 67, 97, 99,104,101, 0, 67, -111,108,108,105,115,105,111,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 86, 72, 84,114,101,101, 0, 83,117,114, -102, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101,114,105,118,101,100, 77,101,115,104, 0, 66, 86, 72, - 84,114,101,101, 70,114,111,109, 77,101,115,104, 0, 66,111,111,108,101, 97,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, - 0, 77, 68,101,102, 73,110,102,108,117,101,110, 99,101, 0, 77, 68,101,102, 67,101,108,108, 0, 77,101,115,104, 68,101,102,111, -114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 77,111,100, -105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 0, 80, 97,114,116,105, 99,108, -101, 73,110,115,116, 97,110, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,120,112,108,111,100,101, 77,111,100, -105,102,105,101,114, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70, -108,117,105,100,115,105,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 83,101,116,116, -105,110,103,115, 0, 83,104,114,105,110,107,119,114, 97,112, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,105,109,112, -108,101, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,104, 97,112,101, 75,101,121, 77,111,100, -105,102,105,101,114, 68, 97,116, 97, 0, 83,111,108,105,100,105,102,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, - 97,116,116,105, 99,101, 0, 98, 68,101,102,111,114,109, 71,114,111,117,112, 0, 83, 99,117,108,112,116, 83,101,115,115,105,111, -110, 0, 98, 65, 99,116,105,111,110, 0, 98, 80,111,115,101, 0, 98, 71, 80,100, 97,116, 97, 0, 66,117,108,108,101,116, 83,111, -102,116, 66,111,100,121, 0, 80, 97,114,116, 68,101,102,108,101, 99,116, 0, 83,111,102,116, 66,111,100,121, 0, 79, 98, 72,111, -111,107, 0, 68,117,112,108,105, 79, 98,106,101, 99,116, 0, 82, 78, 71, 0, 69,102,102,101, 99,116,111,114, 87,101,105,103,104, -116,115, 0, 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, 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, 67,117,115,116,111,109, 68, 97,116, 97, 69,120,116,101,114,110, 97,108, 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, 84, 76, 69, 78, 1, 0, 1, 0, 2, 0, 2, 0, 4, 0, 4, 0, 4, 0, 4, 0, +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,112,114,101, 97, +100, 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,108,118,108, 0,115, 99,117, +108,112,116,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, 99,114,101, 97,115,101, 95,105,110,110, +101,114, 0, 99,114,101, 97,115,101, 95,111,117,116,101,114, 0, 99,114,101, 97,115,101, 95,114,105,109, 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, 97,118,115, + 0, 42,109,112, 97,116,104, 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,112,100,101,102, 95,115,116,105, 99,107,110,101,115,115, 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,101,121,101,115,101, +112, 97,114, 97,116,105,111,110, 0, 42, 99, 97,109,101,114, 97, 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,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,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,118,105,101,119, + 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,116,119,100,114, 97,119,102,108, 97,103, 0,114,102,108, 97,103, 0,118,105,101,119,108,111, 99,107, + 0,112,101,114,115,112, 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,103, +114,105,100,118,105,101,119, 0,116,119, 97,110,103,108,101, 91, 51, 93, 0,112, 97,100,102, 0,114,101,103,105,111,110, 98, 97, +115,101, 0,115,112, 97, 99,101,116,121,112,101, 0, 98,108,111, 99,107,115, 99, 97,108,101, 0, 98,108,111, 99,107,104, 97,110, +100,108,101,114, 91, 56, 93, 0,108, 97,121, 95,117,115,101,100, 0, 42,111, 98, 95, 99,101,110,116,114,101, 0, 98,103,112,105, + 99, 98, 97,115,101, 0, 42, 98,103,112,105, 99, 0,111, 98, 95, 99,101,110,116,114,101, 95, 98,111,110,101, 91, 51, 50, 93, 0, +108, 97,121, 97, 99,116, 0,100,114, 97,119,116,121,112,101, 0,115, 99,101,110,101,108,111, 99,107, 0, 97,114,111,117,110,100, + 0,112,105,118,111,116, 95,108, 97,115,116, 0,103,114,105,100, 0,110,101, 97,114, 0,102, 97,114, 0,103,114,105,100,108,105, +110,101,115, 0,103,114,105,100,102,108, 97,103, 0,103,114,105,100,115,117, 98,100,105,118, 0,109,111,100,101,115,101,108,101, + 99,116, 0,107,101,121,102,108, 97,103,115, 0,116,119,116,121,112,101, 0,116,119,109,111,100,101, 0,116,119,102,108, 97,103, + 0, 99,117,115,116,111,109,100, 97,116, 97, 95,109, 97,115,107, 0, 97,102,116,101,114,100,114, 97,119, 0,122, 98,117,102, 0, +120,114, 97,121, 0,110,100,111,102,109,111,100,101, 0,110,100,111,102,102,105,108,116,101,114, 0, 42,112,114,111,112,101,114, +116,105,101,115, 95,115,116,111,114, 97,103,101, 0,118,101,114,116, 0,104,111,114, 0,109, 97,115,107, 0,109,105,110, 91, 50, + 93, 0,109, 97,120, 91, 50, 93, 0,109,105,110,122,111,111,109, 0,109, 97,120,122,111,111,109, 0,115, 99,114,111,108,108, 0, +115, 99,114,111,108,108, 95,117,105, 0,107,101,101,112,116,111,116, 0,107,101,101,112,122,111,111,109, 0,107,101,101,112,111, +102,115, 0, 97,108,105,103,110, 0,119,105,110,120, 0,119,105,110,121, 0,111,108,100,119,105,110,120, 0,111,108,100,119,105, +110,121, 0, 99,117,114,115,111,114, 91, 50, 93, 0, 42,116, 97, 98, 95,111,102,102,115,101,116, 0,116, 97, 98, 95,110,117,109, + 0,116, 97, 98, 95, 99,117,114, 0, 42,115, 99,114,101,101,110, 0,118, 50,100, 0, 42, 97,100,115, 0,103,104,111,115,116, 67, +117,114,118,101,115, 0, 97,117,116,111,115,110, 97,112, 0, 99,117,114,115,111,114, 86, 97,108, 0,109, 97,105,110, 98, 0,109, + 97,105,110, 98,111, 0,109, 97,105,110, 98,117,115,101,114, 0,114,101, 95, 97,108,105,103,110, 0,112,114,101,118,105,101,119, + 0,112, 97,116,104,102,108, 97,103, 0,100, 97,116, 97,105, 99,111,110, 0, 42,112,105,110,105,100, 0,114,101,110,100,101,114, + 95,115,105,122,101, 0, 99,104, 97,110,115,104,111,119,110, 0,122,101, 98,114, 97, 0,122,111,111,109, 0,116,105,116,108,101, + 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, 93, 0,102,105,108,101, 91, 56, 48, 93, 0,114,101,110, 97,109,101,102,105,108, +101, 91, 56, 48, 93, 0,115,111,114,116, 0,100,105,115,112,108, 97,121, 0, 97, 99,116,105,118,101, 95, 98,111,111,107,109, 97, +114,107, 0, 97, 99,116,105,118,101, 95,102,105,108,101, 0,115,101,108,115,116, 97,116,101, 0,102, 95,102,112, 0,109,101,110, +117, 0,102,112, 95,115,116,114, 91, 56, 93, 0, 42,112,117,112,109,101,110,117, 0, 42,112, 97,114, 97,109,115, 0, 42,102,105, +108,101,115, 0, 42,102,111,108,100,101,114,115, 95,112,114,101,118, 0, 42,102,111,108,100,101,114,115, 95,110,101,120,116, 0, + 42,111,112, 0, 42,108,111, 97,100,105,109, 97,103,101, 95,116,105,109,101,114, 0, 42,108, 97,121,111,117,116, 0,114,101, 99, +101,110,116,110,114, 0, 98,111,111,107,109, 97,114,107,110,114, 0,115,121,115,116,101,109,110,114, 0,116,114,101,101, 0, 42, +116,114,101,101,115,116,111,114,101, 0,115,101, 97,114, 99,104, 95,115,116,114,105,110,103, 91, 51, 50, 93, 0,115,101, 97,114, + 99,104, 95,116,115,101, 0,115,101, 97,114, 99,104, 95,102,108, 97,103,115, 0,100,111, 95, 0,111,117,116,108,105,110,101,118, +105,115, 0,115,116,111,114,101,102,108, 97,103, 0, 42, 99,117,109, 97,112, 0,105,109, 97,110,114, 0, 99,117,114,116,105,108, +101, 0,105,109,116,121,112,101,110,114, 0,108,111, 99,107, 0,112,105,110, 0,100,116, 95,117,118, 0,115,116,105, 99,107,121, + 0,100,116, 95,117,118,115,116,114,101,116, 99,104, 0, 99,101,110,116,120, 0, 99,101,110,116,121, 0,104,105,115,116, 0, 42, +116,101,120,116, 0,116,111,112, 0,118,105,101,119,108,105,110,101,115, 0,108,104,101,105,103,104,116, 0, 99,119,105,100,116, +104, 0,108,105,110,101,110,114,115, 95,116,111,116, 0,108,101,102,116, 0,115,104,111,119,108,105,110,101,110,114,115, 0,116, + 97, 98,110,117,109, 98,101,114, 0,115,104,111,119,115,121,110,116, 97,120, 0,111,118,101,114,119,114,105,116,101, 0,108,105, +118,101, 95,101,100,105,116, 0,112,105,120, 95,112,101,114, 95,108,105,110,101, 0,116,120,116,115, 99,114,111,108,108, 0,116, +120,116, 98, 97,114, 0,119,111,114,100,119,114, 97,112, 0,100,111,112,108,117,103,105,110,115, 0,102,105,110,100,115,116,114, + 91, 50, 53, 54, 93, 0,114,101,112,108, 97, 99,101,115,116,114, 91, 50, 53, 54, 93, 0, 42,112,121, 95,100,114, 97,119, 0, 42, +112,121, 95,101,118,101,110,116, 0, 42,112,121, 95, 98,117,116,116,111,110, 0, 42,112,121, 95, 98,114,111,119,115,101,114, 99, + 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95,103,108,111, 98, 97,108,100,105, 99,116, 0,108, 97,115,116,115,112, 97, 99,101, + 0,115, 99,114,105,112,116,110, 97,109,101, 91, 50, 53, 54, 93, 0,115, 99,114,105,112,116, 97,114,103, 91, 50, 53, 54, 93, 0, + 42,115, 99,114,105,112,116, 0, 42, 98,117,116, 95,114,101,102,115, 0,114,101,100,114, 97,119,115, 0, 42,105,100, 0, 97,115, +112,101, 99,116, 0, 42, 99,117,114,102,111,110,116, 0,109,120, 0,109,121, 0, 42,101,100,105,116,116,114,101,101, 0,116,114, +101,101,116,121,112,101, 0,116,101,120,102,114,111,109, 0,110,117,109,116,105,108,101,115,120, 0,110,117,109,116,105,108,101, +115,121, 0,118,105,101,119,114,101, 99,116, 0, 98,111,111,107,109, 97,114,107,114,101, 99,116, 0,115, 99,114,111,108,108,112, +111,115, 0,115, 99,114,111,108,108,104,101,105,103,104,116, 0,115, 99,114,111,108,108, 97,114,101, 97, 0,114,101,116,118, 97, +108, 0,112,114,118, 95,119, 0,112,114,118, 95,104, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 41, 40, 41, 0, 40, 42, +114,101,116,117,114,110,102,117,110, 99, 95,101,118,101,110,116, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, + 95, 97,114,103,115, 41, 40, 41, 0, 42, 97,114,103, 49, 0, 42, 97,114,103, 50, 0, 42,109,101,110,117,112, 0, 42,105,109,103, + 0,108,101,110, 95, 97,108,108,111, 99, 0, 99,117,114,115,111,114, 0,114,112,116, 95,109, 97,115,107, 0,115, 99,114,111,108, +108, 98, 97, 99,107, 0,104,105,115,116,111,114,121, 0,112,114,111,109,112,116, 91, 50, 53, 54, 93, 0,108, 97,110,103,117, 97, +103,101, 91, 51, 50, 93, 0,115,101,108, 95,115,116, 97,114,116, 0,115,101,108, 95,101,110,100, 0,102,105,108,101,110, 97,109, +101, 91, 50, 53, 54, 93, 0, 98,108,102, 95,105,100, 0,117,105,102,111,110,116, 95,105,100, 0,114, 95,116,111, 95,108, 0,112, +111,105,110,116,115, 0,107,101,114,110,105,110,103, 0,105,116, 97,108,105, 99, 0, 98,111,108,100, 0,115,104, 97,100,111,119, + 0,115,104, 97,100,120, 0,115,104, 97,100,121, 0,115,104, 97,100,111,119, 97,108,112,104, 97, 0,115,104, 97,100,111,119, 99, +111,108,111,114, 0,112, 97,110,101,108,116,105,116,108,101, 0,103,114,111,117,112,108, 97, 98,101,108, 0,119,105,100,103,101, +116,108, 97, 98,101,108, 0,119,105,100,103,101,116, 0,112, 97,110,101,108,122,111,111,109, 0,109,105,110,108, 97, 98,101,108, + 99,104, 97,114,115, 0,109,105,110,119,105,100,103,101,116, 99,104, 97,114,115, 0, 99,111,108,117,109,110,115,112, 97, 99,101, + 0,116,101,109,112,108, 97,116,101,115,112, 97, 99,101, 0, 98,111,120,115,112, 97, 99,101, 0, 98,117,116,116,111,110,115,112, + 97, 99,101,120, 0, 98,117,116,116,111,110,115,112, 97, 99,101,121, 0,112, 97,110,101,108,115,112, 97, 99,101, 0,112, 97,110, +101,108,111,117,116,101,114, 0,112, 97,100, 91, 49, 93, 0,111,117,116,108,105,110,101, 91, 52, 93, 0,105,110,110,101,114, 91, + 52, 93, 0,105,110,110,101,114, 95,115,101,108, 91, 52, 93, 0,105,116,101,109, 91, 52, 93, 0,116,101,120,116, 91, 52, 93, 0, +116,101,120,116, 95,115,101,108, 91, 52, 93, 0,115,104, 97,100,101,100, 0,115,104, 97,100,101,116,111,112, 0,115,104, 97,100, +101,100,111,119,110, 0,105,110,110,101,114, 95, 97,110,105,109, 91, 52, 93, 0,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,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, 99,111,110,115,111,108,101, 95,111,117,116,112,117,116, 91, 52, 93, 0, 99,111,110,115,111, +108,101, 95,105,110,112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,105,110,102,111, 91, 52, 93, 0, 99,111,110,115, +111,108,101, 95,101,114,114,111,114, 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,112,114,101,118,105,101,119, 95, 98, 97, 99,107, 91, 52, 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, 99,111,110,115,111,108,101, 0,116, 97,114,109, 91, 50, 48, 93, 0, 97, 99, +116,105,118,101, 95,116,104,101,109,101, 95, 97,114,101, 97, 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, 97,110,105, +109, 95,112,108, 97,121,101,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, 97,121,101,114, 95,112,114,101,115,101,116, + 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, 99,111,108,111,114, 95,112,105, 99,107,101,114, 95,116,121,112,101, 0,112, 97,100, 50, 91, 51, 93, 0,118,101,114, +115,101,109, 97,115,116,101,114, 91, 49, 54, 48, 93, 0,118,101,114,115,101,117,115,101,114, 91, 49, 54, 48, 93, 0,103,108, 97, +108,112,104, 97, 99,108,105,112, 0, 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,103,104,111,115,116, 95,115, +102, 0,103,104,111,115,116, 95,101,102, 0,103,104,111,115,116, 95, 98, 99, 0,103,104,111,115,116, 95, 97, 99, 0,103,104,111, +115,116, 95,116,121,112,101, 0,103,104,111,115,116, 95,115,116,101,112, 0,103,104,111,115,116, 95,102,108, 97,103, 0,112, 97, +116,104, 95,116,121,112,101, 0,112, 97,116,104, 95,115,116,101,112, 0,112, 97,116,104, 95,118,105,101,119,102,108, 97,103, 0, +112, 97,116,104, 95, 98, 97,107,101,102,108, 97,103, 0,112, 97,116,104, 95,115,102, 0,112, 97,116,104, 95,101,102, 0,112, 97, +116,104, 95, 98, 99, 0,112, 97,116,104, 95, 97, 99, 0, 99,111,110,115,116,102,108, 97,103, 0,105,107,102,108, 97,103, 0,115, +101,108,101, 99,116,102,108, 97,103, 0, 97,103,114,112, 95,105,110,100,101,120, 0, 42, 98,111,110,101, 0, 42, 99,104,105,108, +100, 0,105,107,116,114,101,101, 0, 42, 98, 95, 98,111,110,101, 95,109, 97,116,115, 0, 42,100,117, 97,108, 95,113,117, 97,116, + 0, 42, 98, 95, 98,111,110,101, 95,100,117, 97,108, 95,113,117, 97,116,115, 0,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, 42, 99,117,115,116,111,109, 95,116,120, 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,112, 97,100, 50, 91, 50, 93, 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,108,111,112,101, 91, 51, 93, 0,112,111,119,101,114, 91, 51, + 93, 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,120, 95,114,101,115,111,108,117,116,105,111,110, 0,100, 97,116, 97, 95,114, 91, 53, 49, 50, 93, 0,100, 97,116, 97, 95,103, + 91, 53, 49, 50, 93, 0,100, 97,116, 97, 95, 98, 91, 53, 49, 50, 93, 0,111,102,102,115,101,116, 91, 50, 93, 0, 99,108,111,110, +101, 0,109,116,101,120, 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,118,101,114,116,101,120,112, 97,105,110,116, 95,116,111,111,108, + 0,105,109, 97,103,101,112, 97,105,110,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, 42,101,120, +116,101,114,110, 97,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,104, 97,105,114, 95,105,110,100,101,120, 0, 97,108,105,118,101, 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,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, 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,107,109,105, 95, +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,102,105,108,116,101,114, 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, 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, +112, 99,104, 97,110, 95,110, 97,109,101, 91, 51, 50, 93, 0,116,114, 97,110,115, 67,104, 97,110, 0,105,100,116,121,112,101, 0, +116, 97,114,103,101,116,115, 91, 56, 93, 0,110,117,109, 95,116, 97,114,103,101,116,115, 0,118, 97,114,105, 97, 98,108,101,115, + 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, 97,114,114, 97,121, 95,105,110,100,101,120, 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, 0,103,114,111,117,112, 91, 54, + 52, 93, 0,116,101,109,112,108, 97,116,101,115, 0,103,114,111,117,112,109,111,100,101, 0,112, 97,116,104,115, 0,107,101,121, +105,110,103,102,108, 97,103, 0, 97, 99,116,105,118,101, 95,112, 97,116,104, 0, 42,116,109,112, 97, 99,116, 0,110,108, 97, 95, +116,114, 97, 99,107,115, 0, 42, 97, 99,116,115,116,114,105,112, 0,100,114,105,118,101,114,115, 0,111,118,101,114,114,105,100, +101,115, 0, 97, 99,116, 95, 98,108,101,110,100,109,111,100,101, 0, 97, 99,116, 95,101,120,116,101,110,100,109,111,100,101, 0, + 97, 99,116, 95,105,110,102,108,117,101,110, 99,101, 0,114,117,108,101, 0,111,112,116,105,111,110,115, 0,102,101, 97,114, 95, +102, 97, 99,116,111,114, 0,115,105,103,110, 97,108, 95,105,100, 0,108,111,111,107, 95, 97,104,101, 97,100, 0,111,108,111, 99, + 91, 51, 93, 0,113,117,101,117,101, 95,115,105,122,101, 0,119, 97,110,100,101,114, 0,102,108,101,101, 95,100,105,115,116, 97, +110, 99,101, 0,104,101, 97,108,116,104, 0,115,116, 97,116,101, 95,105,100, 0,114,117,108,101,115, 0, 99,111,110,100,105,116, +105,111,110,115, 0, 97, 99,116,105,111,110,115, 0,114,117,108,101,115,101,116, 95,116,121,112,101, 0,114,117,108,101, 95,102, +117,122,122,105,110,101,115,115, 0,108, 97,115,116, 95,115,116, 97,116,101, 95,105,100, 0,108, 97,110,100,105,110,103, 95,115, +109,111,111,116,104,110,101,115,115, 0, 98, 97,110,107,105,110,103, 0, 97,103,103,114,101,115,115,105,111,110, 0, 97, 99, 99, +117,114, 97, 99,121, 0, 97,105,114, 95,109,105,110, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95,115,112,101,101, +100, 0, 97,105,114, 95,109, 97,120, 95, 97, 99, 99, 0, 97,105,114, 95,109, 97,120, 95, 97,118,101, 0, 97,105,114, 95,112,101, +114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,106,117,109,112, 95,115,112,101,101,100, 0,108, 97,110, +100, 95,109, 97,120, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95, 97, 99, 99, 0,108, 97,110,100, 95,109, 97, +120, 95, 97,118,101, 0,108, 97,110,100, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,115, +116,105, 99,107, 95,102,111,114, 99,101, 0,115,116, 97,116,101,115, 0, 42,115,109,100, 0, 42,102,108,117,105,100, 0, 42,102, +108,117,105,100, 95,103,114,111,117,112, 0, 42, 99,111,108,108, 95,103,114,111,117,112, 0, 42,119,116, 0, 42,116,101,120, 95, +119,116, 0, 42,116,101,120, 95,115,104, 97,100,111,119, 0, 42,115,104, 97,100,111,119, 0,112, 48, 91, 51, 93, 0,112, 49, 91, + 51, 93, 0,100,120, 0,111,109,101,103, 97, 0,116,101,109,112, 65,109, 98, 0, 98,101,116, 97, 0,114,101,115, 91, 51, 93, 0, + 97,109,112,108,105,102,121, 0,109, 97,120,114,101,115, 0,118,105,101,119,115,101,116,116,105,110,103,115, 0,110,111,105,115, +101, 0,100,105,115,115, 95,112,101,114, 99,101,110,116, 0,100,105,115,115, 95,115,112,101,101,100, 0,114,101,115, 95,119,116, + 91, 51, 93, 0,100,120, 95,119,116, 0,118, 51,100,110,117,109, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 91, 50, 93, + 0,112,116, 99, 97, 99,104,101,115, 91, 50, 93, 0,118,101,108,111, 99,105,116,121, 91, 51, 93, 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,203, 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, 99, 52,105, 0,118,101, 99, 52, +102, 0,118,101, 99, 52,100, 0,114, 99,116,105, 0,114, 99,116,102, 0, 73, 68, 80,114,111,112,101,114,116,121, 68, 97,116, 97, + 0, 73, 68, 80,114,111,112,101,114,116,121, 0, 73, 68, 0, 76,105, 98,114, 97,114,121, 0, 70,105,108,101, 68, 97,116, 97, 0, + 80,114,101,118,105,101,119, 73,109, 97,103,101, 0, 73,112,111, 68,114,105,118,101,114, 0, 79, 98,106,101, 99,116, 0, 73,112, +111, 67,117,114,118,101, 0, 66, 80,111,105,110,116, 0, 66,101,122, 84,114,105,112,108,101, 0, 73,112,111, 0, 75,101,121, 66, +108,111, 99,107, 0, 75,101,121, 0, 65,110,105,109, 68, 97,116, 97, 0, 84,101,120,116, 76,105,110,101, 0, 84,101,120,116, 77, + 97,114,107,101,114, 0, 84,101,120,116, 0, 80, 97, 99,107,101,100, 70,105,108,101, 0, 67, 97,109,101,114, 97, 0, 73,109, 97, +103,101, 85,115,101,114, 0, 83, 99,101,110,101, 0, 73,109, 97,103,101, 0, 71, 80, 85, 84,101,120,116,117,114,101, 0, 97,110, +105,109, 0, 82,101,110,100,101,114, 82,101,115,117,108,116, 0, 77, 84,101,120, 0, 84,101,120, 0, 80,108,117,103,105,110, 84, +101,120, 0, 67, 66, 68, 97,116, 97, 0, 67,111,108,111,114, 66, 97,110,100, 0, 69,110,118, 77, 97,112, 0, 73,109, 66,117,102, + 0, 80,111,105,110,116, 68,101,110,115,105,116,121, 0, 86,111,120,101,108, 68, 97,116, 97, 0, 98, 78,111,100,101, 84,114,101, +101, 0, 84,101,120, 77, 97,112,112,105,110,103, 0, 76, 97,109,112, 0, 67,117,114,118,101, 77, 97,112,112,105,110,103, 0, 87, + 97,118,101, 0, 86,111,108,117,109,101, 83,101,116,116,105,110,103,115, 0, 77, 97,116,101,114,105, 97,108, 0, 71,114,111,117, +112, 0, 86, 70,111,110,116, 0, 86, 70,111,110,116, 68, 97,116, 97, 0, 77,101,116, 97, 69,108,101,109, 0, 66,111,117,110,100, + 66,111,120, 0, 77,101,116, 97, 66, 97,108,108, 0, 78,117,114, 98, 0, 67,104, 97,114, 73,110,102,111, 0, 84,101,120,116, 66, +111,120, 0, 67,117,114,118,101, 0, 80, 97,116,104, 0, 83,101,108, 66,111,120, 0, 69,100,105,116, 70,111,110,116, 0, 77,101, +115,104, 0, 77, 70, 97, 99,101, 0, 77, 84, 70, 97, 99,101, 0, 84, 70, 97, 99,101, 0, 77, 86,101,114,116, 0, 77, 69,100,103, +101, 0, 77, 68,101,102,111,114,109, 86,101,114,116, 0, 77, 67,111,108, 0, 77, 83,116,105, 99,107,121, 0, 77, 83,101,108,101, + 99,116, 0, 69,100,105,116, 77,101,115,104, 0, 67,117,115,116,111,109, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 0, + 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 0, 77, 68,101,102,111,114,109, 87,101,105,103,104,116, 0, + 77, 84,101,120, 80,111,108,121, 0, 77, 76,111,111,112, 85, 86, 0, 77, 76,111,111,112, 67,111,108, 0, 77, 70,108,111, 97,116, + 80,114,111,112,101,114,116,121, 0, 77, 73,110,116, 80,114,111,112,101,114,116,121, 0, 77, 83,116,114,105,110,103, 80,114,111, +112,101,114,116,121, 0, 79,114,105,103, 83,112, 97, 99,101, 70, 97, 99,101, 0, 77, 68,105,115,112,115, 0, 35,100,101,102,105, +110,101, 32, 77, 69, 95, 86, 69, 82, 84, 95, 80, 66, 86, 72, 95, 85, 80, 68, 65, 84, 69, 32, 40, 49, 60, 60, 55, 41, 32, 32, 35, +100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 68, 82, 65, 87, 32, 40, 49, 60, 60, 49, 41, 32, 35,100,101,102,105,110, +101, 32, 77, 69, 95, 83, 69, 65, 77, 32, 40, 49, 60, 60, 50, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 71, 79, 78, + 32, 40, 49, 60, 60, 51, 41, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 82, 69, 78, 68, 69, 82, 32, 40, + 49, 60, 60, 53, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 76, 79, 79, 83, 69, 69, 68, 71, 69, 32, 40, 49, 60, 60, 55, + 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 95, 76, 65, 83, 84, 32, 40, 49, 60, 60, 56, 41, 32, 35,100, +101,102,105,110,101, 32, 77, 69, 95, 83, 72, 65, 82, 80, 32, 40, 49, 60, 60, 57, 41, 32, 32, 32, 35,100,101,102,105,110,101, 32, + 77, 69, 95, 70, 76, 73, 80, 86, 49, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 50, 32, 50, 32, + 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 51, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, + 76, 73, 80, 86, 52, 32, 56, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 89, 32, 49, 54, 32, 35,100,101, +102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 90, 32, 51, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, + 74, 89, 90, 32, 54, 52, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 49, 86, 50, 32, 49, 32, 35,100,101,102,105,110, +101, 32, 77, 69, 95, 86, 50, 86, 51, 32, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 49, 32, 52, 32, 35,100, +101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 52, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 52, 86, 49, 32, + 56, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 77, 79, 79, 84, 72, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, + 69, 95, 70, 65, 67, 69, 95, 83, 69, 76, 32, 50, 32, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 83, 69,108, 32, 48, + 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 83, 69,108, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 83, + 69, 76, 32, 50, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 32, 49, 32, 32, 35,100,101,102,105, +110,101, 32, 84, 70, 95, 65, 67, 84, 73, 86, 69, 32, 50, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 49, 32, + 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 50, 32, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, + 69, 76, 51, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 52, 32, 51, 50, 32, 35,100,101,102,105,110, +101, 32, 84, 70, 95, 72, 73, 68, 69, 32, 54, 52, 32, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 89, 78, 65, 77, 73, + 67, 32, 49, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 83, 79, 82, 84, 32, 50, 32, 35,100,101,102,105, +110,101, 32, 84, 70, 95, 84, 69, 88, 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 86, 69, 82, + 84, 32, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 76, 73, 71, 72, 84, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, + 84, 70, 95, 83, 72, 65, 82, 69, 68, 67, 79, 76, 32, 54, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 73, 76, 69, 83, + 32, 49, 50, 56, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 32, 50, 53, 54, 32, 35, +100,101,102,105,110,101, 32, 84, 70, 95, 84, 87, 79, 83, 73, 68, 69, 32, 53, 49, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, + 95, 73, 78, 86, 73, 83, 73, 66, 76, 69, 32, 49, 48, 50, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 79, 66, 67, 79, 76, + 32, 50, 48, 52, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 50, 32, 52, 48, 57, 54, + 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 68, 79, 87, 32, 56, 49, 57, 50, 32, 35,100,101,102,105,110,101, + 32, 84, 70, 95, 66, 77, 70, 79, 78, 84, 32, 49, 54, 51, 56, 52, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 79, 76, + 73, 68, 32, 48, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 68, 68, 32, 49, 32, 35,100,101,102,105,110,101, 32, 84, 70, + 95, 65, 76, 80, 72, 65, 32, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 67, 76, 73, 80, 32, 52, 32, 32, 32, 35,100,101, +102,105,110,101, 32, 84, 70, 95, 83, 85, 66, 32, 51, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, + 65, 84, 69, 68, 49, 32, 49, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 50, 32, 50, + 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 51, 32, 52, 32, 35,100,101,102,105,110, +101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 52, 32, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, + 78, 49, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 50, 32, 51, 50, 32, 35,100,101,102,105,110,101, + 32, 84, 70, 95, 80, 73, 78, 51, 32, 54, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 52, 32, 49, 50, 56, 32, + 35,101,110,100,105,102, 32,105, 97,108, 32,108,101,118,101,108, 32, 49, 32,100, 97,116, 97, 32,116,104, 97,116, 32, 99, 97,110, +110,111,116, 32, 98,101, 32,109,111,100,105,102,105,101,100, 32,102,114,111,109, 32,111,116,104,101,114, 32,108,101,118,101,108, +115, 32, 42, 47, 10, 9, 67,117,115,116,111,109, 68, 97,116, 97, 32,118,100, 97,116, 97, 59, 10, 9, 67,117,115,116,111,109, 68, + 97,116, 97, 32,102,100, 97,116, 97, 59, 10, 9,115,104,111,114,116, 32, 42,101,100,103,101, 95,102,108, 97,103,115, 59, 10, 9, + 99,104, 97,114, 32, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 59, 10,125, 32, 77,117,108,116,105,114,101,115, 59, 10, + 10, 47, 42, 42, 32, 69,110,100, 32, 77,117,108,116,105,114,101,115, 32, 42, 42, 47, 10, 10,116,121,112,101,100,101,102, 32,115, +116,114,117, 99,116, 32, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 32,123, 10, 9,117,110,115,105,103, +110,101,100, 32,105,110,116, 32, 42,118,101,114,116, 95,109, 97,112, 59, 32, 47, 42, 32,118,101,114,116, 95,109, 97,112, 91, 79, +108,100, 32, 73,110,100,101,120, 93, 61, 32, 78,101,119, 32, 73,110,100,101,120, 32, 42, 47, 10, 9,105,110,116, 32, 42,101,100, +103,101, 95,109, 97,112, 59, 32, 47, 42, 32,101,100,103,101, 95,109, 97,112, 91, 79,108,100, 32, 73,110,100,101,120, 93, 61, 32, + 78,101,119, 32, 73,110,100,101,120, 44, 32, 45, 49, 61, 32,104,105,100,100,101,110, 32, 42, 47, 10, 9, 77, 70, 97, 99,101, 32, + 42,111,108,100, 95,102, 97, 99,101,115, 59, 10, 9, 77, 69,100,103,101, 32, 42,111,108,100, 95,101,100,103,101,115, 59, 10, 9, +117,110,115,105,103,110,101,100, 32,105,110,116, 32,116,111,116,102, 97, 99,101, 44, 32,116,111,116,101,100,103,101, 44, 32,116, +111,116,118,101,114,116, 44, 32,112, 97,100, 59, 10,125, 32, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108,105,116,121, + 59, 10, 10, 47, 42, 32,109,118,101,114,116, 45, 62,102,108, 97,103, 32, 40, 49, 61, 83, 69, 76, 69, 67, 84, 41, 32, 42, 47, 10, + 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 80, 72, 69, 82, 69, 84, 69, 83, 84, 9, 9, 50, 10, 35,100,101,102,105,110,101, + 32, 77, 69, 95, 86, 69, 82, 84, 95, 84, 77, 80, 95, 84, 65, 71, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 72, + 73, 68, 69, 9, 9, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 69, 82, 84, 95, 77, 69, 82, 71, 69, 68, + 9, 9, 40, 49, 60, 60, 54, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 69, 82, 84, 95, 80, 66, 86, 72, 95, 85, 80, + 68, 65, 84, 69, 9, 40, 49, 60, 60, 55, 41, 10, 10, 47, 42, 32,109,101,100,103,101, 45, 62,102,108, 97,103, 32, 40, 49, 61, 83, + 69, 76, 69, 67, 84, 41, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 68, 82, 65, 87, 9, 9, 9, 40, + 49, 60, 60, 49, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 9, 9, 9, 9, 40, 49, 60, 60, 50, 41, 10, + 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 71, 79, 78, 9, 9, 9, 9, 40, 49, 60, 60, 51, 41, 10, 9, 9, 9, 9, 9, 9, + 47, 42, 32,114,101,115,101,114,118,101, 32, 49, 54, 32,102,111,114, 32, 77, 69, 95, 72, 73, 68, 69, 32, 42, 47, 10, 35,100,101, +102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 82, 69, 78, 68, 69, 82, 9, 9, 40, 49, 60, 60, 53, 41, 10, 35,100,101,102,105, +110,101, 32, 77, 69, 95, 76, 79, 79, 83, 69, 69, 68, 71, 69, 9, 9, 40, 49, 60, 60, 55, 41, 10, 35,100,101,102,105,110,101, 32, + 77, 69, 95, 83, 69, 65, 77, 95, 76, 65, 83, 84, 9, 9, 40, 49, 60, 60, 56, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, + 83, 72, 65, 82, 80, 9, 9, 9, 40, 49, 60, 60, 57, 41, 10, 10, 47, 42, 32,112,117,110,111, 32, 61, 32,118,101,114,116,101,120, +110,111,114,109, 97,108, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 47, 42, 32,114,101,110,100,101,114, 32, 97,115,115,117, +109,101,115, 32,102,108,105,112,115, 32,116,111, 32, 98,101, 32,111,114,100,101,114,101,100, 32,108,105,107,101, 32,116,104,105, +115, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 49, 9, 9, 49, 10, 35,100,101,102,105,110, +101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 50, 9, 9, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 51, + 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 52, 9, 9, 56, 10, 35,100,101,102,105,110,101, + 32, 77, 69, 95, 80, 82, 79, 74, 88, 89, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 90, + 9, 9, 51, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 89, 90, 9, 9, 54, 52, 10, 10, 47, 42, 32,101, +100, 99,111,100,101, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 49, 86, 50, + 9, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 50, 86, 51, 9, 9, 9, 50, 10, 35,100,101,102,105,110,101, + 32, 77, 69, 95, 86, 51, 86, 49, 9, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 52, 9, 9, 9, 52, + 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 52, 86, 49, 9, 9, 9, 56, 10, 10, 47, 42, 32,102,108, 97,103, 32, 40,109, +102, 97, 99,101, 41, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 77, 79, 79, 84, 72, 9, 9, 9, 49, 10, 35, +100,101,102,105,110,101, 32, 77, 69, 95, 70, 65, 67, 69, 95, 83, 69, 76, 9, 9, 9, 50, 10, 9, 9, 9, 9, 9, 9, 47, 42, 32, +102,108, 97,103, 32, 77, 69, 95, 72, 73, 68, 69, 61, 61, 49, 54, 32,105,115, 32,117,115,101,100, 32,104,101,114,101, 32,116,111, +111, 32, 42, 47, 32, 10, 47, 42, 32,109,115,101,108,101, 99,116, 45, 62,116,121,112,101, 32, 42, 47, 10, 35,100,101,102,105,110, +101, 32, 77, 69, 95, 86, 83, 69,108, 9, 48, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 83, 69,108, 32, 49, 10, 35,100, +101,102,105,110,101, 32, 77, 69, 95, 70, 83, 69, 76, 32, 50, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,102,108, 97,103, + 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 9, 49, 32, 47, 42, 32,117,115,101, 32, 77, + 70, 97, 99,101, 32,104,105,100,101, 32,102,108, 97,103, 32, 40, 97,102,116,101,114, 32, 50, 46, 52, 51, 41, 44, 32,115,104,111, +117,108,100, 32, 98,101, 32, 97, 98,108,101, 32,116,111, 32,114,101,117,115,101, 32, 97,102,116,101,114, 32, 50, 46, 52, 52, 32, + 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 67, 84, 73, 86, 69, 9, 50, 32, 47, 42, 32,100,101,112,114,101, 99, + 97,116,101,100, 33, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 49, 9, 9, 52, 10, 35,100,101,102, +105,110,101, 32, 84, 70, 95, 83, 69, 76, 50, 9, 9, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 51, 9, 9, + 49, 54, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 52, 9, 9, 51, 50, 10, 35,100,101,102,105,110,101, 32, 84, + 70, 95, 72, 73, 68, 69, 9, 9, 54, 52, 32, 47, 42, 32,117,110,117,115,101,100, 44, 32,115, 97,109,101, 32, 97,115, 32, 84, 70, + 95, 83, 69, 76, 69, 67, 84, 32, 42, 47, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,109,111,100,101, 32, 42, 47, 10, 35, +100,101,102,105,110,101, 32, 84, 70, 95, 68, 89, 78, 65, 77, 73, 67, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, + 65, 76, 80, 72, 65, 83, 79, 82, 84, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 69, 88, 9, 9, 9, 52, 10, 35, +100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 86, 69, 82, 84, 9, 56, 10, 35,100,101,102,105,110,101, 32, 84, + 70, 95, 76, 73, 71, 72, 84, 9, 9, 49, 54, 10, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 67, 79, + 76, 9, 54, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 73, 76, 69, 83, 9, 9, 49, 50, 56, 9, 9, 47, 42, 32,100, +101,112,114,101, 99, 97,116,101,100, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, + 68, 9, 50, 53, 54, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 87, 79, 83, 73, 68, 69, 9, 9, 53, 49, 50, 10, 35,100, +101,102,105,110,101, 32, 84, 70, 95, 73, 78, 86, 73, 83, 73, 66, 76, 69, 9, 49, 48, 50, 52, 10, 10, 35,100,101,102,105,110,101, + 32, 84, 70, 95, 79, 66, 67, 79, 76, 9, 9, 50, 48, 52, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, + 79, 65, 82, 68, 50, 9, 52, 48, 57, 54, 9, 47, 42, 32,119,105,116,104, 32, 90, 32, 97,120,105,115, 32, 99,111,110,115,116,114, + 97,105,110,116, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 68, 79, 87, 9, 9, 56, 49, 57, 50, 10, + 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 77, 70, 79, 78, 84, 9, 9, 49, 54, 51, 56, 52, 10, 10, 47, 42, 32,109,116,102, + 97, 99,101, 45, 62,116,114, 97,110,115,112, 44, 32,118, 97,108,117,101,115, 32, 49, 45, 52, 32, 97,114,101, 32,117,115,101,100, + 32, 97,115, 32,102,108, 97,103,115, 32,105,110, 32,116,104,101, 32, 71, 76, 44, 32, 87, 65, 82, 78, 73, 78, 71, 44, 32, 84, 70, + 95, 83, 85, 66, 32, 99, 97,110,116, 32,119,111,114,107, 32,119,105,116,104, 32,116,104,105,115, 32, 42, 47, 10, 35,100,101,102, +105,110,101, 32, 84, 70, 95, 83, 79, 76, 73, 68, 9, 48, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 68, 68, 9, 9, 49, + 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 67, + 76, 73, 80, 9, 9, 52, 32, 47, 42, 32, 99,108,105,112,109, 97,112, 32, 97,108,112,104, 97, 47, 98,105,110, 97,114,121, 32, 97, +108,112,104, 97, 32, 97,108,108, 32,111,114, 32,110,111,116,104,105,110,103, 33, 32, 42, 47, 10, 10, 47, 42, 32,115,117, 98, 32, +105,115, 32,110,111,116, 32, 97,118, 97,105,108, 97, 98,108,101, 32,105,110, 32,116,104,101, 32,117,115,101,114, 32,105,110,116, +101,114,102, 97, 99,101, 32, 97,110,121,109,111,114,101, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 85, 66, + 9, 9, 51, 10, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,117,110,119,114, 97,112, 32, 42, 47, 10, 35,100,101,102,105, +110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 49, 9, 49, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, + 69, 80, 82, 69, 67, 65, 84, 69, 68, 50, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, + 69, 68, 51, 9, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 52, 9, 56, 10, 35, +100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 49, 9, 9, 32, 32, 32, 32, 49, 54, 10, 35,100,101,102,105,110,101, 32, 84, + 70, 95, 80, 73, 78, 50, 9, 9, 32, 32, 32, 32, 51, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 51, 9, 32, + 32, 32, 9, 9, 54, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 52, 9, 32, 32, 32, 32, 9, 49, 50, 56, 10, + 10, 35,101,110,100,105,102, 10, 44, 32,108, 79, 67, 75, 33,115,101,108,101, 99,116,101,100, 32, 98,112,111,105,110,116, 32, 42, + 47, 10, 9, 66, 80,111,105,110,116, 32, 42,108, 97,115,116,115,101,108, 98,112, 59, 10, 9, 10, 9, 47, 42, 32,102,111,110,116, + 32,112, 97,114,116, 32, 42, 47, 10, 9,115,104,111,114,116, 32,108,101,110, 44, 32,108,105,110,101,115, 44, 32,112,111,115, 44, + 32,115,112, 97, 99,101,109,111,100,101, 59, 10, 9,102,108,111, 97,116, 32,115,112, 97, 99,105,110,103, 44, 32,108,105,110,101, +100,105,115,116, 44, 32,115,104,101, 97,114, 44, 32,102,115,105,122,101, 44, 32,119,111,114,100,115,112, 97, 99,101, 44, 32,117, +108,112,111,115, 44, 32,117,108,104,101,105,103,104,116, 59, 10, 9,102,108,111, 97,116, 32,120,111,102, 44, 32,121,111,102, 59, + 10, 9,102,108,111, 97,116, 32,108,105,110,101,119,105,100,116,104, 59, 10, 70, 82, 69, 69, 8, 25, 0, 77,117,108,116,105,114, +101,115, 67,111,108, 0, 77,117,108,116,105,114,101,115, 67,111,108, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 70, 97, + 99,101, 0, 77,117,108,116,105,114,101,115, 69,100,103,101, 0, 77,117,108,116,105,114,101,115, 76,101,118,101,108, 0, 77,111, +100,105,102,105,101,114, 68, 97,116, 97, 0, 83,117, 98,115,117,114,102, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, + 97,116,116,105, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,117,114,118,101, 77,111,100,105,102,105,101,114, + 68, 97,116, 97, 0, 66,117,105,108,100, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 97,115,107, 77,111,100,105,102, +105,101,114, 68, 97,116, 97, 0, 65,114,114, 97,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,105,114,114,111,114, + 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,100,103,101, 83,112,108,105,116, 77,111,100,105,102,105,101,114, 68, 97, +116, 97, 0, 66,101,118,101,108, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 77,101,115,104, 77,111,100,105,102,105, +101,114, 68, 97,116, 97, 0, 83,109,111,107,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107,101, 68,111, +109, 97,105,110, 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 70,108,111,119, 83,101,116,116,105,110,103,115, 0, 83, +109,111,107,101, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 68,105,115,112,108, 97, 99,101, 77,111,100,105,102,105,101, +114, 68, 97,116, 97, 0, 85, 86, 80,114,111,106,101, 99,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101, 99,105, +109, 97,116,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,111,116,104, 77,111,100,105,102,105,101,114, 68, + 97,116, 97, 0, 67, 97,115,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87, 97,118,101, 77,111,100,105,102,105,101, +114, 68, 97,116, 97, 0, 65,114,109, 97,116,117,114,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 72,111,111,107, 77, +111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,102,116, 98,111,100,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, + 0, 67,108,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 0, 67,108,111,116,104, 83,105, +109, 83,101,116,116,105,110,103,115, 0, 67,108,111,116,104, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 80,111,105,110, +116, 67, 97, 99,104,101, 0, 67,111,108,108,105,115,105,111,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 86, 72, + 84,114,101,101, 0, 83,117,114,102, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101,114,105,118,101,100, + 77,101,115,104, 0, 66, 86, 72, 84,114,101,101, 70,114,111,109, 77,101,115,104, 0, 66,111,111,108,101, 97,110, 77,111,100,105, +102,105,101,114, 68, 97,116, 97, 0, 77, 68,101,102, 73,110,102,108,117,101,110, 99,101, 0, 77, 68,101,102, 67,101,108,108, 0, + 77,101,115,104, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83, +121,115,116,101,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, + 0, 80, 97,114,116,105, 99,108,101, 73,110,115,116, 97,110, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,120, +112,108,111,100,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 77,111,100,105,102,105, +101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105, +100,115,105,109, 83,101,116,116,105,110,103,115, 0, 83,104,114,105,110,107,119,114, 97,112, 77,111,100,105,102,105,101,114, 68, + 97,116, 97, 0, 83,105,109,112,108,101, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,104, 97, +112,101, 75,101,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,108,105,100,105,102,121, 77,111,100,105,102,105, +101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 0, 98, 68,101,102,111,114,109, 71,114,111,117,112, 0, 83, 99,117,108, +112,116, 83,101,115,115,105,111,110, 0, 98, 65, 99,116,105,111,110, 0, 98, 80,111,115,101, 0, 98, 71, 80,100, 97,116, 97, 0, + 98, 65,110,105,109, 86,105,122, 83,101,116,116,105,110,103,115, 0, 98, 77,111,116,105,111,110, 80, 97,116,104, 0, 66,117,108, +108,101,116, 83,111,102,116, 66,111,100,121, 0, 80, 97,114,116, 68,101,102,108,101, 99,116, 0, 83,111,102,116, 66,111,100,121, + 0, 79, 98, 72,111,111,107, 0, 68,117,112,108,105, 79, 98,106,101, 99,116, 0, 82, 78, 71, 0, 69,102,102,101, 99,116,111,114, + 87,101,105,103,104,116,115, 0, 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, 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, 72,105,115,116,111,103,114, 97,109, 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, 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, 83,105,122,101, 76, +105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115, 76,105,107,101, 67,111,110,115,116,114, 97,105, +110,116, 0, 98, 77,105,110, 77, 97,120, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 67,111,110,115, +116,114, 97,105,110,116, 0, 98, 76,111, 99,107, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 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, 78,111,100,101, 67,111,108,111,114, 66, 97,108, 97,110, 99, +101, 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, 67,117,115,116,111,109, 68, 97,116, 97, 69,120,116,101,114,110, 97,108, 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, 68,114,105,118,101,114, 86, 97,114, 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, 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, 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,168, 1, 20, 0, 48, 0, 64, 0, 24, 0, 12, 0, 16, 0, 4, 0, + 16, 0, 32, 0, 96, 0, 72, 0, 72, 2, 0, 0, 40, 0,144, 0,208, 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, 48, 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,240, 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,176, 1, 20, 0, 48, 0, 64, 0, 24, 0, 12, 0, 16, 0, 4, 0, 8, 0, 8, 0, 0, 0, 40, 0,128, 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, 80, 0, - 88, 0,192, 1,136, 0,128, 0, 72, 0,128, 0,232, 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, 96, 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,248, 0,208, 1,104, 0, 0, 0,160, 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,144, 1, 40, 0, 24, 1, 32, 0,232, 0, 32, 0, 32, 0, 80, 2, - 16, 1, 16, 0,216, 21, 56, 0,248, 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,240, 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, 0, 1,224, 0,232, 0, 0, 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, 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, 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, 8, 0,109, 0,184, 2, 0, 0, 43, 3, 0, 0, 44, 3, 0, 0,175, 2, - 0, 0, 45, 3, 0, 0, 46, 3, 0, 0, 90, 0, 0, 0, 70, 2,152, 0, 3, 0,109, 0,184, 2,153, 0, 47, 3,137, 0, 3, 3, -154, 0, 10, 0,109, 0,184, 2, 32, 0, 48, 3, 32, 0, 49, 3, 0, 0, 50, 3, 7, 0, 51, 3, 2, 0, 52, 3, 2, 0, 53, 3, - 0, 0, 54, 3, 0, 0, 55, 3, 0, 0,190, 2,155, 0, 9, 0,109, 0,184, 2, 32, 0, 56, 3, 0, 0, 50, 3, 7, 0, 57, 3, - 7, 0, 58, 3, 0, 0, 69, 1, 0, 0,205, 2, 0, 0, 59, 3, 0, 0, 37, 0,156, 0, 1, 0,109, 0,184, 2,157, 0, 8, 0, -109, 0,184, 2, 0, 0, 72, 0, 7, 0,125, 0, 7, 0, 60, 3, 7, 0, 61, 3, 7, 0, 62, 3, 4, 0, 19, 0, 0, 0, 92, 0, -158, 0, 27, 0, 27, 0, 31, 0, 2, 0, 45, 2, 2, 0, 46, 2, 2, 0, 63, 3, 2, 0, 19, 0, 2, 0, 64, 3, 2, 0, 65, 3, - 2, 0, 66, 3, 2, 0, 70, 0, 0, 0, 67, 3, 0, 0, 68, 3, 0, 0, 69, 3, 0, 0, 17, 0, 4, 0, 37, 0, 7, 0, 70, 3, - 7, 0, 71, 3, 7, 0, 72, 3, 7, 0, 73, 3, 7, 0, 74, 3, 7, 0, 75, 3, 34, 0, 76, 3, 36, 0, 80, 0, 38, 0, 66, 2, - 86, 0,115, 2, 7, 0, 77, 3, 7, 0, 78, 3,158, 0, 79, 3,159, 0, 3, 0,159, 0, 0, 0,159, 0, 1, 0, 0, 0, 20, 0, - 71, 0, 3, 0, 7, 0, 80, 3, 4, 0, 19, 0, 4, 0, 37, 0, 32, 0,124, 0, 27, 0, 31, 0, 39, 0, 75, 0,160, 0, 81, 3, - 2, 0, 17, 0, 2, 0, 82, 3, 4, 0, 83, 3, 4, 0, 84, 3, 4, 0, 85, 3, 0, 0, 86, 3, 32, 0, 38, 0, 32, 0, 87, 3, - 32, 0, 88, 3, 32, 0, 89, 3, 32, 0, 90, 3, 36, 0, 80, 0, 77, 0, 65, 2, 71, 0, 6, 2,161, 0, 91, 3,161, 0, 92, 3, -162, 0, 93, 3, 9, 0, 2, 0,163, 0, 94, 3, 12, 0, 95, 3, 12, 0,109, 2, 12, 0, 25, 2, 12, 0, 96, 3, 12, 0, 97, 3, - 4, 0, 69, 1, 4, 0, 98, 3, 66, 0, 27, 2, 0, 0, 99, 3, 4, 0, 29, 2, 4, 0,100, 3, 7, 0, 64, 1, 7, 0,101, 3, - 7, 0,102, 3, 7, 0,172, 0, 7, 0,103, 3, 7, 0, 65, 1, 7, 0,104, 3, 7, 0, 15, 2, 7, 0,105, 3, 7, 0,106, 3, - 7, 0,107, 3, 7, 0,108, 3, 7, 0,109, 3, 7, 0,110, 3, 7, 0,251, 2, 7, 0,111, 3, 7, 0,240, 0, 4, 0,112, 3, - 2, 0, 19, 0, 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, 2, 0,123, 3, 4, 0,124, 3, 4, 0,125, 3, 4, 0,126, 3, 4, 0,127, 3, - 7, 0,128, 3, 7, 0,101, 2, 7, 0,129, 3, 7, 0,130, 3, 7, 0,131, 3, 7, 0,132, 3, 7, 0,133, 3, 7, 0,215, 0, - 7, 0,134, 3, 7, 0,135, 3, 7, 0,136, 3, 7, 0,137, 3, 2, 0,138, 3, 0, 0,139, 3, 0, 0,140, 3, 0, 0,141, 3, - 0, 0,142, 3, 7, 0,143, 3, 7, 0,144, 3, 12, 0,145, 3, 12, 0,146, 3, 12, 0,147, 3, 12, 0,148, 3, 7, 0,149, 3, - 2, 0,156, 2, 2, 0,150, 3, 7, 0,138, 2, 4, 0,151, 3, 4, 0,152, 3,164, 0,153, 3, 2, 0,154, 3, 2, 0,247, 0, - 7, 0,155, 3, 12, 0,156, 3, 12, 0,157, 3, 12, 0,158, 3, 12, 0,159, 3,165, 0, 61, 1,166, 0,160, 3, 67, 0,161, 3, - 2, 0,162, 3, 2, 0,163, 3, 2, 0,164, 3, 2, 0,165, 3, 7, 0,130, 2, 2, 0,166, 3, 2, 0,167, 3,153, 0,168, 3, -141, 0,169, 3,141, 0,170, 3, 4, 0,171, 3, 4, 0,172, 3, 4, 0,173, 3, 4, 0, 70, 0, 12, 0,174, 3, 12, 0,175, 3, - 12, 0,176, 3,167, 0, 14, 0,167, 0, 0, 0,167, 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,177, 3, 2, 0, 17, 0, 2, 0,178, 3, 7, 0,255, 2, -168, 0, 12, 0,168, 0, 0, 0,168, 0, 1, 0, 32, 0, 45, 0, 4, 0,179, 3, 4, 0,156, 2, 4, 0,180, 3, 4, 0, 17, 0, - 4, 0,181, 3, 7, 0, 66, 1, 7, 0,182, 3, 7, 0,183, 3, 7, 0,154, 2,165, 0, 40, 0, 4, 0, 19, 0, 2, 0,184, 3, - 2, 0,185, 3, 2, 0,244, 2, 2, 0,186, 3, 2, 0,187, 3, 2, 0,188, 3, 2, 0,189, 3, 2, 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,206, 3, 7, 0, 37, 0, - 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, 7, 0,216, 3, 52, 0,165, 0,169, 0,217, 3, 7, 0,218, 3, 4, 0,193, 2,170, 0, 5, 0, 67, 0,241, 1, - 7, 0,219, 3, 7, 0,220, 3, 2, 0, 19, 0, 2, 0,221, 3,171, 0, 9, 0,171, 0, 0, 0,171, 0, 1, 0, 4, 0,222, 3, - 4, 0,223, 3, 4, 0,224, 3, 4, 0, 19, 0, 4, 0,225, 3, 9, 0,226, 3, 9, 0,227, 3,137, 0, 19, 0,137, 0, 0, 0, -137, 0, 1, 0, 4, 0, 19, 0, 4, 0,228, 3, 4, 0,229, 3, 4, 0,230, 3, 4, 0,231, 3, 4, 0,232, 3, 4, 0,233, 3, - 4, 0,223, 3, 4, 0,156, 2, 4, 0, 57, 0, 0, 0,234, 3, 0, 0,235, 3, 0, 0,236, 3, 0, 0,237, 3, 12, 0,238, 3, -172, 0,239, 3, 9, 0,240, 3,173, 0, 1, 0, 7, 0, 43, 2,164, 0, 30, 0, 4, 0, 19, 0, 7, 0,241, 3, 7, 0,242, 3, - 7, 0,243, 3, 4, 0,244, 3, 4, 0,245, 3, 4, 0,246, 3, 4, 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, 7, 0, 9, 4, 4, 0, 10, 4, - 4, 0, 11, 4, 7, 0, 12, 4, 7, 0,134, 3,166, 0, 54, 0, 4, 0,223, 3, 4, 0, 13, 4,174, 0, 14, 4,175, 0, 15, 4, - 0, 0, 37, 0, 0, 0, 16, 4, 2, 0, 17, 4, 7, 0, 18, 4, 0, 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, 7, 0, 28, 4, 2, 0, 29, 4, 0, 0, 30, 4, - 2, 0, 31, 4, 7, 0, 32, 4, 7, 0, 33, 4, 0, 0, 34, 4, 4, 0,126, 0, 4, 0, 35, 4, 4, 0, 36, 4, 2, 0, 37, 4, - 2, 0, 38, 4,173, 0, 39, 4, 4, 0, 40, 4, 4, 0, 82, 0, 7, 0, 41, 4, 7, 0, 42, 4, 7, 0, 43, 4, 7, 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, 2, 0, 52, 4, -176, 0, 53, 4, 7, 0, 54, 4, 7, 0, 55, 4,137, 0, 56, 4, 12, 0, 4, 3,170, 0, 57, 4, 7, 0, 58, 4, 7, 0, 59, 4, - 7, 0, 60, 4, 0, 0, 61, 4,153, 0, 49, 0,152, 0, 62, 4, 2, 0, 17, 0, 2, 0, 63, 4, 2, 0, 64, 4, 2, 0, 65, 4, - 7, 0, 66, 4, 2, 0, 67, 4, 2, 0, 68, 4, 7, 0, 69, 4, 2, 0, 70, 4, 2, 0, 71, 4, 7, 0, 72, 4, 7, 0, 73, 4, - 7, 0, 74, 4, 7, 0, 75, 4, 7, 0, 76, 4, 7, 0, 77, 4, 4, 0, 78, 4, 7, 0, 79, 4, 7, 0, 80, 4, 7, 0, 81, 4, - 80, 0, 82, 4, 80, 0, 83, 4, 80, 0, 84, 4, 0, 0, 85, 4, 7, 0, 86, 4, 7, 0, 87, 4, 36, 0, 80, 0, 2, 0, 88, 4, - 0, 0, 89, 4, 0, 0, 90, 4, 7, 0, 91, 4, 4, 0, 92, 4, 7, 0, 93, 4, 7, 0, 94, 4, 4, 0, 95, 4, 4, 0, 19, 0, - 7, 0, 96, 4, 7, 0, 97, 4, 7, 0, 98, 4, 84, 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, 7, 0,106, 4, 4, 0,107, 4,177, 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,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,116, 4, 7, 0,162, 1, 7, 0,164, 1, 7, 0,163, 1, 7, 0,117, 4, 4, 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, 7, 0,125, 4, 2, 0,126, 4, - 2, 0, 69, 1, 2, 0,127, 4, 2, 0,128, 4, 2, 0,129, 4, 2, 0,130, 4, 2, 0,131, 4, 2, 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, 7, 0,144, 4, 2, 0,145, 4, 2, 0,146, 4, 2, 0,147, 4, 2, 0,148, 4, 7, 0,149, 4, - 7, 0,150, 4, 7, 0,151, 4, 7, 0,152, 4, 2, 0,153, 4, 2, 0,154, 4, 2, 0,155, 4, 2, 0,156, 4, 7, 0,157, 4, - 7, 0,158, 4, 7, 0,159, 4, 7, 0,160, 4, 7, 0,161, 4, 2, 0,162, 4, 2, 0,163, 4, 2, 0,164, 4, 2, 0,165, 4, - 2, 0,166, 4, 2, 0, 19, 0, 7, 0,167, 4, 7, 0,168, 4, 36, 0, 80, 0, 51, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, - 30, 0,150, 0,178, 0, 8, 0,178, 0, 0, 0,178, 0, 1, 0, 4, 0,112, 3, 4, 0,169, 4, 4, 0, 19, 0, 2, 0,170, 4, - 2, 0,171, 4, 32, 0,164, 0,179, 0, 13, 0, 9, 0,172, 4, 9, 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,182, 4, 4, 0, 37, 0, 0, 0,183, 4, -180, 0, 5, 0, 9, 0,184, 4, 9, 0,185, 4, 4, 0,186, 4, 4, 0, 70, 0, 0, 0,187, 4,181, 0, 10, 0, 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, - 4, 0,197, 4,182, 0, 15, 0, 4, 0, 17, 0, 4, 0,190, 4, 4, 0,198, 4, 4, 0,199, 4, 4, 0,200, 4, 4, 0,201, 4, - 7, 0,202, 4, 4, 0,203, 4, 4, 0, 90, 0, 4, 0,204, 4, 4, 0,205, 4, 4, 0,206, 4, 4, 0,207, 4, 4, 0,208, 4, - 26, 0, 30, 0,183, 0, 7, 0, 4, 0,209, 4, 7, 0,210, 4, 7, 0,211, 4, 7, 0,212, 4, 4, 0,213, 4, 2, 0, 19, 0, - 2, 0, 37, 0,184, 0, 11, 0,184, 0, 0, 0,184, 0, 1, 0, 0, 0, 20, 0, 66, 0,214, 4, 67, 0,215, 4, 4, 0,112, 3, - 4, 0,216, 4, 4, 0,217, 4, 4, 0, 37, 0, 4, 0,218, 4, 4, 0,219, 4,185, 0,135, 0,179, 0,220, 4,180, 0,221, 4, -181, 0,222, 4,182, 0,223, 4, 4, 0, 17, 3, 4, 0,126, 0, 4, 0, 35, 4, 4, 0,224, 4, 4, 0,225, 4, 4, 0,226, 4, - 4, 0,227, 4, 2, 0, 19, 0, 2, 0,228, 4, 7, 0,101, 2, 7, 0,229, 4, 7, 0,230, 4, 7, 0,231, 4, 7, 0,232, 4, - 7, 0,233, 4, 2, 0,234, 4, 2, 0,235, 4, 2, 0,236, 4, 2, 0,237, 4, 2, 0,246, 0, 2, 0,238, 4, 2, 0,239, 4, - 2, 0,240, 4, 2, 0,241, 4, 2, 0,242, 4, 2, 0, 91, 1, 2, 0,106, 0, 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,251, 4, 2, 0, 92, 1, 2, 0,252, 4, - 2, 0,253, 4, 2, 0,254, 4, 2, 0,255, 4, 4, 0, 0, 5, 4, 0, 69, 1, 4, 0, 1, 5, 2, 0, 2, 5, 2, 0, 3, 5, - 2, 0, 4, 5, 2, 0,121, 1, 2, 0, 5, 5, 2, 0, 6, 5, 2, 0, 7, 5, 2, 0, 8, 5, 24, 0, 9, 5, 24, 0, 10, 5, - 23, 0, 11, 5, 12, 0, 12, 5, 2, 0, 13, 5, 2, 0, 37, 0, 7, 0, 14, 5, 7, 0, 15, 5, 7, 0, 16, 5, 7, 0, 17, 5, - 4, 0, 18, 5, 7, 0, 19, 5, 7, 0, 20, 5, 7, 0, 21, 5, 7, 0, 22, 5, 2, 0, 23, 5, 2, 0, 24, 5, 2, 0, 25, 5, - 2, 0, 26, 5, 2, 0, 27, 5, 2, 0, 28, 5, 7, 0, 29, 5, 7, 0, 30, 5, 7, 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, 2, 0, 41, 5, - 4, 0, 42, 5, 4, 0, 43, 5, 4, 0, 44, 5, 4, 0, 45, 5, 4, 0, 46, 5, 7, 0, 47, 5, 4, 0, 48, 5, 4, 0, 49, 5, - 4, 0, 50, 5, 4, 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, 7, 0, 60, 5, 0, 0, 61, 5, 0, 0, 62, 5, 4, 0, 63, 5, 2, 0, 64, 5, 2, 0,238, 1, - 0, 0, 65, 5, 7, 0, 66, 5, 7, 0, 67, 5, 4, 0, 68, 5, 4, 0, 69, 5, 7, 0, 70, 5, 7, 0, 71, 5, 2, 0, 72, 5, - 2, 0, 73, 5, 7, 0, 74, 5, 2, 0, 75, 5, 2, 0, 76, 5, 4, 0, 77, 5, 2, 0, 78, 5, 2, 0, 79, 5, 2, 0, 80, 5, - 2, 0, 81, 5, 7, 0, 82, 5, 7, 0, 70, 0, 42, 0, 83, 5, 0, 0, 84, 5,186, 0, 9, 0,186, 0, 0, 0,186, 0, 1, 0, - 0, 0, 20, 0, 2, 0, 85, 5, 2, 0, 86, 5, 2, 0, 87, 5, 2, 0, 43, 0, 7, 0, 88, 5, 7, 0, 70, 0,187, 0, 7, 0, - 2, 0,210, 2, 2, 0, 69, 1, 2, 0,109, 0, 2, 0, 89, 5, 7, 0, 90, 5, 7, 0, 70, 0, 42, 0, 91, 5,188, 0, 5, 0, - 7, 0, 92, 5, 0, 0, 17, 0, 0, 0, 43, 0, 0, 0, 70, 0, 0, 0,238, 1,189, 0, 26, 0, 7, 0,124, 4, 7, 0,125, 4, - 2, 0, 69, 1, 2, 0, 19, 0, 2, 0, 93, 5, 2, 0,136, 1, 2, 0,127, 4, 2, 0,128, 4, 2, 0,129, 4, 2, 0,130, 4, - 2, 0,131, 4, 2, 0,132, 4,188, 0, 94, 5, 2, 0,234, 4, 2, 0,235, 4, 2, 0,236, 4, 2, 0,237, 4, 2, 0,246, 0, - 2, 0,238, 4, 2, 0, 95, 5, 2, 0,239, 4,187, 0, 96, 5, 2, 0, 97, 5, 2, 0,241, 4, 2, 0,244, 4, 2, 0,245, 4, -190, 0, 6, 0,190, 0, 0, 0,190, 0, 1, 0, 4, 0,222, 3, 0, 0,234, 3, 4, 0, 19, 0, 32, 0, 98, 5,191, 0, 6, 0, -192, 0, 99, 5, 4, 0,100, 5, 4, 0,101, 5, 9, 0,102, 5, 0, 0,103, 5, 4, 0, 90, 0,193, 0, 6, 0,191, 0,104, 5, - 2, 0, 19, 0, 2, 0,105, 5, 2, 0,106, 5, 2, 0,107, 5, 9, 0,108, 5,194, 0, 4, 0, 2, 0,106, 0, 2, 0,221, 2, - 2, 0,228, 3, 2, 0,109, 5,195, 0, 14, 0, 2, 0, 19, 0, 2, 0,110, 5, 2, 0,111, 5, 2, 0,112, 5,194, 0,113, 5, - 9, 0,108, 5, 7, 0,114, 5, 7, 0, 57, 0, 4, 0,115, 5, 4, 0,116, 5, 4, 0,117, 5, 4, 0,118, 5, 46, 0,134, 0, - 32, 0,164, 0,196, 0, 4, 0,196, 0, 0, 0,196, 0, 1, 0, 0, 0,119, 5, 7, 0,120, 5,197, 0, 6, 0,191, 0,104, 5, - 7, 0,121, 5, 4, 0, 90, 0, 0, 0,122, 5, 0, 0,123, 5, 0, 0,190, 2,198, 0, 7, 0,191, 0,104, 5, 2, 0, 69, 1, - 2, 0, 19, 0, 4, 0, 36, 0, 4, 0,124, 5, 86, 0,125, 5, 9, 0,108, 5,199, 0, 74, 0,198, 0,126, 5,198, 0,127, 5, -197, 0, 81, 3, 7, 0,128, 5, 2, 0,129, 5, 2, 0,130, 5, 7, 0,131, 5, 7, 0,132, 5, 2, 0,228, 3, 2, 0,133, 5, - 7, 0,134, 5, 7, 0,135, 5, 7, 0,136, 5, 2, 0,137, 5, 2, 0,115, 5, 2, 0,138, 5, 2, 0,139, 5, 2, 0,140, 5, - 2, 0,141, 5, 7, 0,142, 5, 7, 0,143, 5, 7, 0,144, 5, 2, 0,145, 5, 2, 0,146, 5, 2, 0,147, 5, 2, 0,148, 5, - 2, 0,149, 5, 2, 0,150, 5, 2, 0,151, 5,193, 0,152, 5,195, 0,153, 5, 7, 0,154, 5, 7, 0,155, 5, 7, 0,156, 5, - 2, 0,157, 5, 2, 0,158, 5, 0, 0,159, 5, 0, 0,160, 5, 0, 0,161, 5, 0, 0,162, 5, 0, 0,163, 5, 0, 0,164, 5, - 2, 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, 7, 0,174, 5, 7, 0,175, 5, 2, 0,176, 5, 0, 0,177, 5, 0, 0,178, 5, 0, 0,179, 5, 0, 0,180, 5, - 32, 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, 0, 0,188, 5, - 0, 0,189, 5, 2, 0,190, 5, 2, 0,191, 5, 2, 0,192, 5, 2, 0,193, 5, 2, 0,194, 5, 4, 0,195, 5, 4, 0,196, 5, -200, 0, 8, 0, 4, 0,197, 5, 4, 0,198, 5, 4, 0,199, 5, 4, 0,200, 5, 4, 0,201, 5, 4, 0,202, 5, 4, 0, 54, 0, - 4, 0,125, 2,201, 0, 3, 0, 7, 0,203, 5, 2, 0,204, 5, 2, 0, 19, 0,202, 0, 2, 0, 7, 0,205, 5, 4, 0, 19, 0, - 46, 0, 38, 0, 27, 0, 31, 0, 39, 0, 75, 0, 32, 0, 98, 5,177, 0,206, 5, 46, 0,207, 5, 47, 0,238, 0, 12, 0,208, 5, -178, 0,209, 5, 32, 0,210, 5, 7, 0,211, 5, 7, 0,212, 5, 7, 0,213, 5, 7, 0,214, 5, 4, 0,112, 3, 2, 0, 19, 0, - 2, 0, 63, 1, 60, 0, 58, 1,203, 0,215, 5,199, 0,216, 5,204, 0,217, 5,185, 0,182, 0,183, 0,218, 5, 12, 0,100, 0, - 12, 0,219, 5, 12, 0,220, 5,205, 0,221, 5, 2, 0,222, 5, 2, 0,223, 5, 2, 0,247, 0, 2, 0,224, 5, 4, 0,225, 5, - 4, 0,226, 5, 12, 0,227, 5,188, 0, 94, 5,189, 0,228, 5,201, 0,229, 5,163, 0, 94, 3,202, 0,230, 5,206, 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,231, 5,207, 0, 36, 0, 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,240, 5, - 7, 0, 76, 1, 7, 0,241, 5, 7, 0,242, 5, 7, 0,243, 5, 7, 0,244, 5, 7, 0,171, 0, 2, 0,245, 5, 2, 0,246, 5, - 2, 0, 70, 2, 2, 0,247, 5, 2, 0,248, 5, 2, 0,249, 5, 2, 0,250, 5, 7, 0,251, 5, 7, 0,252, 5, 71, 0,253, 5, -163, 0, 94, 3,207, 0,254, 5,208, 0,255, 5,209, 0, 0, 6,210, 0, 1, 6,211, 0, 2, 6,212, 0, 3, 6, 7, 0, 4, 6, - 2, 0, 5, 6, 2, 0, 6, 6, 7, 0, 7, 6,213, 0, 54, 0,214, 0, 0, 0,214, 0, 1, 0, 12, 0, 8, 6, 4, 0, 9, 6, - 7, 0, 10, 6, 2, 0, 11, 6, 7, 0,240, 5, 7, 0, 76, 1, 7, 0, 43, 0, 4, 0, 12, 6, 2, 0,249, 5, 2, 0,250, 5, - 32, 0, 98, 5, 32, 0, 13, 6,206, 0, 14, 6,213, 0,254, 5, 0, 0, 15, 6, 4, 0,112, 3, 4, 0, 16, 6, 2, 0, 17, 6, - 2, 0, 70, 0, 2, 0, 18, 6, 2, 0, 19, 6, 2, 0,238, 1, 2, 0, 19, 0, 2, 0, 28, 2, 2, 0, 20, 6, 7, 0,112, 0, - 7, 0, 21, 6, 7, 0, 7, 6, 7, 0, 22, 6, 7, 0, 23, 6, 7, 0, 24, 6, 7, 0,171, 0, 7, 0,211, 5, 2, 0, 25, 6, - 2, 0,121, 1, 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, - 2, 0, 33, 6, 4, 0, 34, 6, 12, 0, 35, 6, 2, 0, 36, 6, 2, 0,139, 2, 2, 0, 37, 6, 0, 0, 38, 6, 0, 0, 39, 6, - 9, 0, 40, 6,163, 0, 94, 3,215, 0, 25, 0, 24, 0, 36, 0, 24, 0, 64, 0, 23, 0, 41, 6, 23, 0, 42, 6, 23, 0, 43, 6, - 7, 0, 44, 6, 7, 0, 45, 6, 7, 0, 46, 6, 7, 0, 47, 6, 2, 0, 48, 6, 2, 0, 49, 6, 2, 0, 50, 6, 2, 0, 51, 6, - 2, 0, 52, 6, 2, 0, 19, 0, 2, 0, 53, 6, 2, 0, 54, 6, 2, 0, 55, 6, 2, 0, 56, 6, 2, 0, 57, 6, 2, 0, 19, 6, - 7, 0, 58, 6, 7, 0, 59, 6, 4, 0, 60, 6, 4, 0, 61, 6,214, 0, 6, 0,214, 0, 0, 0,214, 0, 1, 0, 12, 0, 8, 6, - 4, 0, 9, 6, 7, 0, 10, 6, 2, 0, 11, 6,216, 0, 8, 0,214, 0, 0, 0,214, 0, 1, 0, 12, 0, 8, 6, 4, 0, 9, 6, - 7, 0, 10, 6, 2, 0, 11, 6,217, 0, 62, 6, 46, 0,134, 0,218, 0, 14, 0,214, 0, 0, 0,214, 0, 1, 0, 12, 0, 8, 6, - 4, 0, 9, 6, 7, 0, 10, 6, 2, 0, 11, 6,215, 0, 63, 6,219, 0, 64, 6, 12, 0, 65, 6, 2, 0, 69, 1, 2, 0, 66, 6, - 4, 0, 19, 0, 7, 0, 67, 6, 4, 0, 19, 6,220, 0, 20, 0,214, 0, 0, 0,214, 0, 1, 0, 12, 0, 8, 6, 4, 0, 9, 6, - 7, 0, 10, 6, 2, 0, 11, 6,208, 0,255, 5,215, 0, 63, 6, 2, 0, 68, 6, 2, 0, 69, 6, 2, 0, 70, 6, 2, 0, 71, 6, - 2, 0, 53, 6, 2, 0, 72, 6, 0, 0, 19, 0, 0, 0,136, 1, 9, 0, 65, 2, 4, 0, 73, 6, 4, 0, 74, 6, 27, 0, 75, 6, -221, 0, 18, 0,214, 0, 0, 0,214, 0, 1, 0, 12, 0, 8, 6, 4, 0, 9, 6, 7, 0, 10, 6, 2, 0, 11, 6,215, 0, 63, 6, - 7, 0, 89, 2, 7, 0, 90, 2, 2, 0, 68, 6, 2, 0, 76, 6, 2, 0, 77, 6, 2, 0, 78, 6, 4, 0, 19, 0, 7, 0, 79, 6, - 4, 0,250, 5, 4, 0, 37, 0,163, 0, 94, 3,222, 0, 16, 0, 0, 0, 80, 6, 0, 0, 81, 6, 0, 0, 82, 6, 0, 0, 83, 6, - 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 84, 6, 2, 0, 85, 6, 2, 0,181, 1, 2, 0, 86, 6, 4, 0, 87, 6, 4, 0, 88, 6, - 2, 0, 89, 6, 2, 0, 90, 6, 0, 0, 91, 6, 0, 0, 92, 6,223, 0, 16, 0,214, 0, 0, 0,214, 0, 1, 0, 12, 0, 8, 6, - 4, 0, 9, 6, 4, 0, 37, 0,222, 0, 93, 6,224, 0, 94, 6, 12, 0, 95, 6, 12, 0, 96, 6,225, 0, 97, 6,212, 0, 98, 6, -226, 0, 99, 6, 2, 0,100, 6, 2, 0,101, 6, 2, 0,102, 6, 2, 0, 70, 0,227, 0, 17, 0,214, 0, 0, 0,214, 0, 1, 0, - 12, 0, 8, 6, 4, 0, 9, 6, 7, 0, 10, 6, 2, 0, 11, 6,215, 0, 63, 6, 12, 0,103, 6,228, 0,104, 6, 0, 0,105, 6, -229, 0,106, 6, 4, 0,107, 6, 4, 0,108, 6, 2, 0, 19, 0, 2, 0,109, 6, 2, 0,110, 6, 2, 0, 37, 0,230, 0, 29, 0, -214, 0, 0, 0,214, 0, 1, 0, 12, 0, 8, 6, 4, 0, 9, 6, 7, 0, 10, 6, 2, 0, 11, 6, 47, 0,229, 2, 45, 0, 57, 1, - 63, 0,111, 6, 2, 0,133, 0, 2, 0,112, 6, 2, 0, 70, 0, 2, 0,113, 6, 4, 0, 19, 0, 2, 0,114, 6, 2, 0,115, 6, - 2, 0,116, 6, 2, 0,238, 1, 0, 0,117, 6, 0, 0,118, 6, 0, 0,119, 6, 0, 0, 19, 6, 7, 0, 89, 2, 7, 0, 90, 2, - 7, 0, 79, 6, 7, 0,121, 1, 7, 0,120, 6, 7, 0,121, 6,163, 0, 94, 3,231, 0, 11, 0,214, 0, 0, 0,214, 0, 1, 0, - 12, 0, 8, 6, 4, 0, 9, 6, 7, 0, 10, 6, 2, 0, 11, 6, 2, 0, 66, 6, 2, 0, 19, 0, 4, 0, 37, 0,219, 0, 64, 6, -215, 0, 63, 6,232, 0, 27, 0,214, 0, 0, 0,214, 0, 1, 0, 12, 0, 8, 6, 4, 0, 9, 6, 7, 0, 10, 6, 2, 0, 11, 6, - 42, 0,122, 6, 4, 0,123, 6, 4, 0,124, 6, 2, 0, 90, 0, 2, 0,133, 0, 2, 0,125, 6, 0, 0,126, 6, 0, 0,127, 6, - 4, 0,128, 6, 4, 0,129, 6, 4, 0,130, 6, 4, 0,131, 6, 2, 0,132, 6, 2, 0,133, 6, 7, 0,134, 6, 23, 0,135, 6, - 23, 0,136, 6, 4, 0,137, 6, 4, 0,138, 6, 0, 0,139, 6, 0, 0,140, 6,233, 0, 10, 0, 27, 0, 31, 0, 9, 0,141, 6, - 9, 0,142, 6, 9, 0,143, 6, 9, 0,144, 6, 9, 0,145, 6, 4, 0, 90, 0, 4, 0,146, 6, 0, 0,147, 6, 0, 0,148, 6, -234, 0, 10, 0,214, 0, 0, 0,214, 0, 1, 0, 12, 0, 8, 6, 4, 0, 9, 6, 7, 0, 10, 6,233, 0,149, 6, 2, 0, 90, 0, - 2, 0,133, 0, 4, 0, 43, 0, 9, 0,150, 6,235, 0, 8, 0,214, 0, 0, 0,214, 0, 1, 0, 12, 0, 8, 6, 4, 0, 9, 6, - 7, 0, 10, 6,215, 0, 63, 6, 4, 0, 19, 0, 4, 0,151, 6,236, 0, 23, 0,214, 0, 0, 0,214, 0, 1, 0, 12, 0, 8, 6, - 4, 0, 9, 6, 7, 0, 10, 6, 2, 0, 11, 6,215, 0, 63, 6, 27, 0,152, 6, 27, 0, 81, 0, 2, 0, 19, 0, 2, 0,133, 0, - 7, 0,153, 6, 9, 0,154, 6, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0,155, 6, 7, 0,156, 6, 60, 0, 58, 1, 60, 0,157, 6, - 4, 0,158, 6, 2, 0,159, 6, 2, 0, 37, 0,163, 0, 94, 3,237, 0, 10, 0,214, 0, 0, 0,214, 0, 1, 0, 12, 0, 8, 6, - 4, 0, 9, 6, 7, 0, 10, 6, 2, 0, 11, 6, 2, 0, 19, 0, 2, 0,121, 3, 4, 0, 37, 0,163, 0, 94, 3,238, 0, 42, 0, -214, 0, 0, 0,214, 0, 1, 0, 12, 0, 8, 6, 4, 0, 9, 6, 7, 0, 10, 6, 2, 0, 11, 6,215, 0, 63, 6,224, 0, 94, 6, - 0, 0, 80, 6, 0, 0, 81, 6, 0, 0, 82, 6, 2, 0, 17, 0, 2, 0, 90, 6, 2, 0, 19, 0, 2, 0, 84, 6, 9, 0,154, 6, - 4, 0, 87, 6, 4, 0,160, 6, 4, 0,161, 6, 4, 0, 88, 6, 23, 0,162, 6, 23, 0,163, 6, 7, 0,164, 6, 7, 0,165, 6, - 7, 0,166, 6, 7, 0,153, 6, 2, 0,167, 6, 2, 0,237, 0, 2, 0,181, 1, 2, 0, 86, 6, 2, 0, 37, 0, 2, 0, 43, 0, - 2, 0,168, 6, 2, 0,169, 6, 9, 0,170, 6, 9, 0,171, 6, 9, 0,172, 6, 9, 0,173, 6, 9, 0,174, 6, 2, 0,175, 6, - 0, 0, 92, 6, 57, 0,176, 6,239, 0, 7, 0,239, 0, 0, 0,239, 0, 1, 0, 4, 0,177, 6, 4, 0, 23, 0, 0, 0, 84, 0, - 4, 0,178, 6, 4, 0, 17, 0,240, 0, 16, 0,214, 0, 0, 0,214, 0, 1, 0, 12, 0, 8, 6, 4, 0, 9, 6, 7, 0, 10, 6, - 2, 0, 11, 6, 4, 0, 17, 0, 4, 0,179, 6, 4, 0, 19, 0, 4, 0,125, 6, 12, 0,180, 6, 12, 0,181, 6, 0, 0,182, 6, - 0, 0,183, 6, 4, 0,184, 6, 4, 0,185, 6,241, 0, 5, 0,214, 0, 0, 0,214, 0, 1, 0, 12, 0, 8, 6, 4, 0, 9, 6, - 4, 0, 37, 0,242, 0, 7, 0,242, 0, 0, 0,242, 0, 1, 0, 0, 0,186, 6, 2, 0,187, 6, 2, 0,188, 6, 2, 0,189, 6, - 2, 0, 37, 0,243, 0, 12, 0, 2, 0,188, 6, 2, 0,190, 6, 2, 0,191, 6, 0, 0,190, 2, 2, 0,192, 6, 2, 0,193, 6, - 2, 0,194, 6, 2, 0,195, 6, 2, 0,196, 6, 2, 0, 53, 6, 7, 0,197, 6, 7, 0,198, 6,244, 0, 18, 0,244, 0, 0, 0, -244, 0, 1, 0, 0, 0,234, 3,243, 0,199, 6,243, 0,200, 6,243, 0,201, 6,243, 0,202, 6, 7, 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, 2, 0,211, 6, 2, 0,212, 6, - 2, 0,213, 6,245, 0, 10, 0, 0, 0,214, 6, 0, 0,215, 6, 0, 0,216, 6, 0, 0,217, 6, 0, 0,218, 6, 0, 0,219, 6, - 2, 0,220, 6, 2, 0,221, 6, 2, 0,222, 6, 2, 0, 37, 0,246, 0, 8, 0, 0, 0,223, 6, 0, 0,224, 6, 0, 0,225, 6, - 0, 0,226, 6, 0, 0,227, 6, 0, 0,228, 6, 7, 0,231, 5, 7, 0, 37, 0,247, 0, 17, 0,245, 0,229, 6,245, 0,230, 6, -245, 0,231, 6,245, 0,232, 6,245, 0,233, 6,245, 0,234, 6,245, 0,235, 6,245, 0,236, 6,245, 0,237, 6,245, 0,238, 6, -245, 0,239, 6,245, 0,240, 6,245, 0,241, 6,245, 0,242, 6,245, 0,243, 6,246, 0,244, 6, 0, 0,245, 6,248, 0, 71, 0, - 0, 0,246, 6, 0, 0,247, 6, 0, 0,218, 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, 56, 7, 0, 0, 57, 7, 0, 0, 58, 7, 0, 0, 92, 0,249, 0, 5, 0, - 0, 0, 59, 7, 0, 0, 14, 7, 0, 0, 16, 7, 2, 0, 19, 0, 2, 0, 37, 0,250, 0, 24, 0,250, 0, 0, 0,250, 0, 1, 0, - 0, 0, 20, 0,247, 0, 60, 7,248, 0, 61, 7,248, 0, 62, 7,248, 0, 63, 7,248, 0, 64, 7,248, 0, 65, 7,248, 0, 66, 7, -248, 0, 67, 7,248, 0, 68, 7,248, 0, 69, 7,248, 0, 70, 7,248, 0, 71, 7,248, 0, 72, 7,248, 0, 73, 7,248, 0, 74, 7, -248, 0, 75, 7,248, 0, 76, 7,248, 0, 77, 7,249, 0, 78, 7, 4, 0, 79, 7, 4, 0, 37, 0,251, 0, 5, 0, 4, 0, 19, 0, - 4, 0, 37, 0, 7, 0,138, 2, 7, 0, 80, 7, 7, 0, 43, 2,252, 0, 75, 0, 4, 0, 19, 0, 4, 0, 81, 7, 4, 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, 0, 0, 89, 7, 0, 0, 90, 7, - 0, 0, 91, 7, 4, 0, 92, 7, 4, 0, 37, 0, 2, 0, 93, 7, 2, 0, 94, 7, 4, 0, 95, 7, 4, 0, 96, 7, 4, 0, 97, 7, - 4, 0, 98, 7, 2, 0, 99, 7, 2, 0,100, 7, 4, 0,101, 7, 4, 0,102, 7, 4, 0,103, 7, 4, 0,104, 7, 4, 0,105, 7, - 4, 0,180, 6, 4, 0,106, 7, 2, 0,107, 7, 2, 0,108, 7, 2, 0,109, 7, 2, 0,110, 7, 12, 0,111, 7, 12, 0,112, 7, - 12, 0,113, 7, 12, 0,114, 7, 0, 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,251, 0,124, 7, 2, 0,125, 7, 2, 0,126, 7, 2, 0,127, 7, 2, 0,128, 7, - 2, 0,129, 7, 2, 0,130, 7, 2, 0,131, 7, 2, 0,132, 7, 4, 0,133, 7, 4, 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, 2, 0,143, 7, 2, 0,144, 7, - 2, 0,145, 7, 2, 0,146, 7, 0, 0,147, 7, 0, 0,148, 7, 7, 0,149, 7, 2, 0,157, 5, 2, 0,158, 5, 55, 0,150, 7, -217, 0, 21, 0, 27, 0, 31, 0, 12, 0,151, 7, 12, 0,152, 7, 12, 0,153, 7, 12, 0, 8, 6, 46, 0,134, 0, 46, 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,160, 7, 2, 0,161, 7, 2, 0, 37, 0, - 2, 0,162, 7, 2, 0,163, 7, 4, 0, 70, 0,212, 0,164, 7, 9, 0,165, 7, 2, 0,166, 7,253, 0, 5, 0,253, 0, 0, 0, -253, 0, 1, 0,253, 0,167, 7, 13, 0,168, 7, 4, 0, 19, 0,254, 0, 7, 0,254, 0, 0, 0,254, 0, 1, 0,253, 0,169, 7, -253, 0,170, 7, 2, 0, 10, 5, 2, 0, 19, 0, 4, 0, 37, 0,255, 0, 25, 0,255, 0, 0, 0,255, 0, 1, 0, 0, 1,171, 7, - 1, 1, 99, 6, 0, 0,172, 7, 0, 0,173, 7, 0, 0,174, 7, 2, 0,175, 7, 2, 0,176, 7, 2, 0,177, 7, 2, 0,178, 7, - 2, 0,179, 7, 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,180, 7, 2, 0,181, 7, 2, 0,182, 7, 4, 0,183, 7,255, 0,184, 7, - 9, 0,185, 7, 4, 0,186, 7, 4, 0,187, 7, 4, 0,188, 7, 4, 0,189, 7, 0, 0,190, 7, 2, 1, 22, 0, 2, 1, 0, 0, - 2, 1, 1, 0,253, 0,169, 7,253, 0,170, 7,253, 0,191, 7,253, 0,192, 7,217, 0,193, 7, 23, 0, 52, 0, 0, 0, 9, 6, - 0, 0,194, 7, 2, 0, 54, 6, 2, 0, 55, 6, 2, 0,195, 7, 2, 0, 37, 0, 2, 0,158, 7, 2, 0,178, 6, 2, 0, 19, 0, - 3, 1,171, 7, 12, 0,196, 7, 12, 0, 8, 6, 12, 0,197, 7, 12, 0,198, 7, 4, 1, 21, 0, 4, 1, 0, 0, 4, 1, 1, 0, -215, 0, 63, 6, 23, 0,199, 7, 23, 0,200, 7, 2, 0, 54, 6, 2, 0, 55, 6, 2, 0,201, 7, 2, 0,202, 7, 2, 0,203, 7, - 2, 0, 19, 0, 7, 0, 85, 2, 2, 0,157, 7, 2, 0,161, 7, 4, 0, 43, 0, 5, 1,171, 7, 12, 0,204, 7, 12, 0,205, 7, - 12, 0,197, 7, 0, 0,206, 7, 9, 0,207, 7, 6, 1, 12, 0, 0, 0,208, 7, 2, 0,209, 7, 2, 0,210, 7, 2, 0,211, 7, - 2, 0,212, 7, 2, 0,253, 4, 2, 0,248, 4,217, 0,213, 7, 46, 0,214, 7, 4, 0,215, 7, 4, 0,216, 7, 0, 0, 35, 0, - 7, 1, 1, 0, 0, 0,217, 7, 8, 1, 8, 0, 57, 0,218, 7, 57, 0,219, 7, 8, 1,220, 7, 8, 1,221, 7, 8, 1,222, 7, - 2, 0,129, 0, 2, 0, 19, 0, 4, 0,223, 7, 9, 1, 4, 0, 4, 0,123, 6, 4, 0,224, 7, 4, 0,128, 6, 4, 0,225, 7, - 10, 1, 2, 0, 4, 0,226, 7, 4, 0,227, 7, 11, 1, 7, 0, 7, 0,228, 7, 7, 0,229, 7, 7, 0,230, 7, 4, 0, 19, 0, - 4, 0, 37, 0, 7, 0,119, 4, 7, 0,231, 7, 12, 1, 6, 0, 0, 0,232, 7, 0, 0, 82, 6, 49, 0,137, 0, 2, 0,106, 0, - 2, 0,252, 4, 4, 0, 37, 0, 13, 1, 21, 0, 13, 1, 0, 0, 13, 1, 1, 0, 4, 0, 57, 0, 4, 0, 23, 0, 4, 0, 28, 0, - 4, 0,233, 7, 4, 0,234, 7, 4, 0,235, 7, 7, 1,236, 7, 0, 0,232, 7, 4, 0,237, 7, 4, 0,238, 7, 12, 1, 88, 3, - 9, 1,239, 7, 10, 1,240, 7, 11, 1,241, 7, 8, 1,242, 7, 8, 1,243, 7, 8, 1,244, 7, 57, 0,245, 7, 57, 0,246, 7, - 14, 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,247, 7, 9, 0,248, 7, 9, 0,232, 0, 9, 0,234, 0, 15, 1, 43, 0, 15, 1, 0, 0, 15, 1, 1, 0, - 9, 0,249, 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,250, 7, - 4, 0,251, 7, 4, 0,234, 7, 4, 0,235, 7, 4, 0,252, 7, 4, 0,246, 0, 4, 0,253, 7, 4, 0,254, 7, 7, 0,255, 7, - 7, 0, 0, 8, 4, 0,126, 0, 4, 0, 1, 8, 13, 1, 2, 8, 36, 0, 80, 0, 46, 0,134, 0, 49, 0,137, 0, 7, 0, 3, 8, - 7, 0, 4, 8, 14, 1, 59, 1, 15, 1, 5, 8, 15, 1, 6, 8, 15, 1, 7, 8, 12, 0, 8, 8, 16, 1, 9, 8, 17, 1, 10, 8, - 7, 0, 11, 8, 7, 0, 12, 8, 4, 0, 13, 8, 7, 0, 14, 8, 9, 0, 15, 8, 4, 0, 16, 8, 4, 0, 17, 8, 4, 0, 18, 8, - 7, 0, 19, 8, 18, 1, 4, 0, 18, 1, 0, 0, 18, 1, 1, 0, 12, 0, 20, 8, 15, 1, 21, 8,203, 0, 6, 0, 12, 0, 22, 8, - 12, 0, 8, 8, 12, 0, 23, 8, 15, 1, 24, 8, 0, 0, 25, 8, 0, 0, 26, 8, 19, 1, 4, 0, 7, 0, 27, 8, 7, 0,109, 0, - 2, 0, 28, 8, 2, 0, 29, 8, 20, 1, 6, 0, 7, 0, 30, 8, 7, 0, 31, 8, 7, 0, 32, 8, 7, 0, 33, 8, 4, 0, 34, 8, - 4, 0, 35, 8, 21, 1, 13, 0, 7, 0, 36, 8, 7, 0, 37, 8, 7, 0, 38, 8, 7, 0, 39, 8, 7, 0, 40, 8, 7, 0, 41, 8, - 7, 0, 42, 8, 7, 0, 43, 8, 7, 0, 44, 8, 7, 0, 45, 8, 4, 0,233, 2, 4, 0, 46, 8, 4, 0, 47, 8, 22, 1, 2, 0, - 7, 0, 92, 5, 7, 0, 37, 0, 23, 1, 5, 0, 7, 0, 48, 8, 7, 0, 49, 8, 4, 0, 90, 0, 4, 0,191, 2, 4, 0, 50, 8, - 24, 1, 6, 0, 24, 1, 0, 0, 24, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 51, 8, 2, 0, 57, 0, 25, 1, 8, 0, - 25, 1, 0, 0, 25, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 51, 8, 2, 0, 57, 0, 7, 0, 23, 0, 7, 0,126, 0, - 26, 1, 45, 0, 26, 1, 0, 0, 26, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 51, 8, 2, 0,242, 0, 2, 0, 29, 4, - 2, 0, 52, 8, 7, 0, 53, 8, 7, 0, 89, 0, 7, 0,246, 2, 4, 0, 54, 8, 4, 0, 82, 0, 4, 0,193, 2, 7, 0, 55, 8, - 7, 0, 56, 8, 7, 0, 57, 8, 7, 0, 58, 8, 7, 0, 59, 8, 7, 0, 60, 8, 7, 0,243, 2, 7, 0, 56, 1, 7, 0, 61, 8, - 7, 0, 62, 8, 7, 0, 37, 0, 7, 0, 63, 8, 7, 0, 64, 8, 7, 0, 65, 8, 2, 0, 66, 8, 2, 0, 67, 8, 2, 0, 68, 8, - 2, 0, 69, 8, 2, 0, 70, 8, 2, 0, 71, 8, 2, 0, 72, 8, 2, 0, 73, 8, 2, 0, 28, 2, 2, 0, 74, 8, 2, 0, 25, 2, - 2, 0, 75, 8, 0, 0, 76, 8, 0, 0, 77, 8, 7, 0,240, 0, 27, 1, 78, 8, 67, 0,241, 1, 28, 1, 16, 0, 28, 1, 0, 0, - 28, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 51, 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, 79, 8, 7, 0,243, 2, 7, 0,245, 2, 7, 0,246, 2,229, 0, 5, 0, - 2, 0, 17, 0, 2, 0,223, 7, 2, 0, 19, 0, 2, 0, 80, 8, 27, 0,152, 6,228, 0, 3, 0, 4, 0, 69, 0, 4, 0, 81, 8, -229, 0, 2, 0, 29, 1, 7, 0, 29, 1, 0, 0, 29, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 22, 0, - 9, 0, 82, 8, 30, 1, 5, 0, 0, 0, 20, 0, 7, 0, 76, 1, 7, 0, 83, 8, 4, 0, 84, 8, 4, 0, 37, 0, 31, 1, 4, 0, - 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 43, 0, 2, 0, 70, 0, 32, 1, 4, 0, 0, 0, 20, 0, 66, 0, 85, 8, 7, 0, 76, 1, - 7, 0, 37, 0, 33, 1, 6, 0, 2, 0, 86, 8, 2, 0, 87, 8, 2, 0, 17, 0, 2, 0, 88, 8, 0, 0, 89, 8, 0, 0, 90, 8, - 34, 1, 5, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0, 91, 8, 0, 0, 92, 8, 35, 1, 3, 0, 4, 0, 17, 0, - 4, 0, 37, 0, 0, 0, 20, 0, 36, 1, 4, 0, 2, 0, 93, 8, 2, 0, 94, 8, 2, 0, 19, 0, 2, 0, 37, 0, 37, 1, 6, 0, - 0, 0, 20, 0, 0, 0, 95, 8, 2, 0, 96, 8, 2, 0,243, 2, 2, 0, 69, 1, 2, 0, 70, 0, 38, 1, 5, 0, 0, 0, 20, 0, - 7, 0,109, 0, 7, 0,121, 4, 2, 0, 19, 0, 2, 0,205, 2, 39, 1, 3, 0, 0, 0, 20, 0, 4, 0,193, 2, 4, 0, 93, 8, - 40, 1, 7, 0, 0, 0, 20, 0, 7, 0,121, 4, 0, 0, 97, 8, 0, 0, 98, 8, 2, 0, 69, 1, 2, 0, 43, 0, 4, 0, 99, 8, - 41, 1, 4, 0, 0, 0,100, 8, 0, 0,101, 8, 4, 0, 17, 0, 7, 0,209, 2, 42, 1, 3, 0, 32, 0,102, 8, 0, 0,103, 8, - 0, 0,104, 8, 43, 1, 18, 0, 43, 1, 0, 0, 43, 1, 1, 0, 2, 0, 17, 0, 2, 0,105, 8, 2, 0, 19, 0, 2, 0,106, 8, - 2, 0,107, 8, 2, 0,108, 8, 2, 0, 43, 0, 2, 0, 70, 0, 0, 0, 20, 0, 9, 0, 2, 0, 44, 1,109, 8, 32, 0, 45, 0, - 2, 0,109, 5, 2, 0, 11, 8, 2, 0,110, 8, 2, 0, 37, 0, 45, 1, 11, 0, 0, 0, 20, 0, 0, 0, 17, 0, 0, 0,111, 8, - 2, 0, 19, 0, 2, 0,205, 2, 2, 0,112, 8, 4, 0,113, 8, 4, 0,114, 8, 4, 0,115, 8, 4, 0,116, 8, 4, 0,117, 8, - 46, 1, 1, 0, 0, 0,118, 8, 47, 1, 4, 0, 42, 0,122, 6, 0, 0,119, 8, 4, 0, 69, 1, 4, 0, 19, 0, 44, 1, 18, 0, - 44, 1, 0, 0, 44, 1, 1, 0, 44, 1,120, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,121, 8, 2, 0,108, 8, 2, 0,105, 8, - 2, 0,122, 8, 2, 0, 70, 0, 2, 0,238, 1, 0, 0, 20, 0, 9, 0, 2, 0, 48, 1,109, 8, 43, 1,123, 8, 2, 0, 15, 0, - 2, 0,124, 8, 4, 0,125, 8, 49, 1, 3, 0, 4, 0,219, 2, 4, 0, 37, 0, 32, 0, 45, 0, 50, 1, 12, 0,161, 0,126, 8, - 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 53, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,127, 8, 2, 0,128, 8, 2, 0,129, 8, - 2, 0,130, 8, 2, 0,131, 8, 7, 0,132, 8, 51, 1, 13, 0, 2, 0, 19, 0, 2, 0,133, 8, 4, 0, 53, 8, 4, 0, 89, 0, - 2, 0,134, 8, 7, 0,243, 3, 7, 0,135, 8, 16, 1, 9, 8, 52, 1,136, 8, 2, 0, 17, 0, 2, 0,137, 8, 2, 0,138, 8, - 2, 0,139, 8, 53, 1, 11, 0, 4, 0,219, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 45, 0, 80, 0,140, 8, 0, 0, 20, 0, - 7, 0,141, 8, 7, 0,142, 8, 7, 0,129, 3, 2, 0,143, 8, 2, 0,144, 8, 54, 1, 5, 0, 2, 0, 17, 0, 2, 0, 19, 0, - 4, 0, 37, 0, 46, 0,134, 0, 32, 0, 98, 5, 55, 1, 5, 0, 4, 0, 19, 0, 4, 0, 17, 0, 0, 0, 20, 0, 0, 0, 91, 8, - 32, 0, 45, 0, 56, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,105, 8, 2, 0,130, 3, 7, 0,145, 8, 7, 0,146, 8, - 7, 0, 64, 1, 7, 0, 65, 1, 7, 0,101, 3, 7, 0,104, 3, 7, 0,147, 8, 7, 0,148, 8, 32, 0,149, 8, 57, 1, 10, 0, - 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 53, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,127, 8, 2, 0, 43, 0, 2, 0, 64, 0, - 2, 0,150, 8, 2, 0,151, 8, 58, 1, 8, 0, 32, 0, 45, 0, 7, 0,240, 2, 7, 0,152, 8, 7, 0,153, 8, 7, 0,235, 2, - 2, 0, 19, 0, 2, 0,205, 2, 7, 0,154, 8, 59, 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,155, 8, 4, 0, 37, 0, 7, 0,156, 8, 7, 0,157, 8, 7, 0,158, 8, 7, 0,159, 8, 0, 0,160, 8, - 60, 1, 9, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 53, 8, 4, 0, 89, 0, 0, 0, 20, 0, 2, 0,136, 1, 2, 0, 64, 0, - 2, 0,150, 8, 2, 0,151, 8, 61, 1, 7, 0, 4, 0,193, 2, 4, 0,161, 8, 4, 0,162, 8, 4, 0,163, 8, 7, 0,164, 8, - 7, 0,165, 8, 0, 0, 97, 8, 62, 1, 7, 0, 0, 0,166, 8, 32, 0,167, 8, 0, 0,103, 8, 2, 0,168, 8, 2, 0, 43, 0, - 4, 0, 70, 0, 0, 0,104, 8, 63, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 53, 8, 4, 0, 89, 0, 0, 0,169, 8, - 0, 0,170, 8, 64, 1, 1, 0, 4, 0, 19, 0, 65, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,171, 8, - 7, 0,172, 8, 42, 0,122, 6, 66, 1, 4, 0, 0, 0, 70, 2, 2, 0, 19, 0, 4, 0, 17, 0, 32, 0, 45, 0, 67, 1, 2, 0, - 4, 0, 17, 0, 4, 0, 43, 6, 68, 1, 6, 0, 0, 0,100, 8, 0, 0,101, 8, 4, 0, 17, 0, 7, 0, 36, 2, 32, 0, 48, 3, - 32, 0,173, 8, 48, 1, 10, 0, 48, 1, 0, 0, 48, 1, 1, 0, 48, 1,120, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,105, 8, - 2, 0,174, 8, 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 45, 0, 69, 1, 10, 0, 7, 0,129, 3, 7, 0,175, 8, 7, 0,176, 8, - 7, 0,177, 8, 7, 0,178, 8, 4, 0, 19, 0, 7, 0,155, 8, 7, 0,179, 8, 7, 0,180, 8, 7, 0, 37, 0, 17, 1, 12, 0, - 17, 1, 0, 0, 17, 1, 1, 0, 16, 1,181, 8, 9, 0,223, 0, 4, 0,172, 3, 4, 0,230, 3, 4, 0,231, 3, 4, 0,182, 8, - 4, 0,183, 8, 4, 0,184, 8, 7, 0,243, 3, 7, 0, 37, 0, 52, 1, 8, 0, 7, 0,185, 8, 7, 0,186, 8, 7, 0,187, 8, - 7, 0,188, 8, 7, 0,189, 8, 7, 0,190, 8, 7, 0,191, 8, 7, 0,192, 8, 16, 1, 15, 0, 27, 0, 31, 0, 0, 0,222, 0, - 43, 0,149, 0, 9, 0,223, 0, 43, 0,193, 8, 36, 0, 80, 0, 7, 0,243, 3, 7, 0,194, 8, 7, 0,135, 8, 7, 0,185, 8, - 7, 0,186, 8, 7, 0,195, 8, 4, 0, 90, 0, 4, 0,184, 8, 9, 0,196, 8, 70, 1, 15, 0,214, 0, 0, 0,214, 0, 1, 0, - 12, 0, 8, 6, 4, 0, 9, 6, 7, 0, 10, 6, 2, 1,197, 8,215, 0, 63, 6, 16, 1, 9, 8, 2, 0, 69, 1, 2, 0,133, 8, - 2, 0, 89, 2, 2, 0, 90, 2, 2, 0, 19, 0, 2, 0,115, 6, 4, 0, 70, 0, 71, 1, 6, 0, 71, 1, 0, 0, 71, 1, 1, 0, - 32, 0, 45, 0, 9, 0,198, 8, 4, 0,247, 0, 4, 0, 37, 0, 67, 0, 4, 0, 27, 0, 31, 0, 12, 0,199, 8, 4, 0,131, 0, - 7, 0,200, 8, 72, 1, 27, 0, 72, 1, 0, 0, 72, 1, 1, 0, 26, 0,201, 8, 72, 1, 38, 0, 12, 0,202, 8, 0, 0, 20, 0, - 7, 0,203, 8, 7, 0,204, 8, 7, 0,205, 8, 7, 0,206, 8, 4, 0, 19, 0, 7, 0,207, 8, 7, 0,208, 8, 7, 0,209, 8, - 7, 0, 76, 1, 7, 0, 36, 2, 7, 0,210, 8, 7, 0,191, 2, 7, 0,211, 8, 7, 0,212, 8, 7, 0,213, 8, 7, 0,214, 8, - 7, 0,215, 8, 7, 0,172, 0, 4, 0,131, 0, 2, 0,138, 5, 2, 0,136, 1, 73, 1, 25, 0, 27, 0, 31, 0, 39, 0, 75, 0, - 12, 0,216, 8, 12, 0,217, 8, 12, 0,218, 8, 72, 1,219, 8, 9, 0,220, 8, 9, 0,221, 8, 4, 0, 19, 0, 4, 0, 17, 6, - 2, 0,247, 2, 2, 0, 73, 6, 4, 0, 37, 0, 4, 0,131, 0, 4, 0,222, 8, 2, 0,223, 8, 2, 0,224, 8, 2, 0,225, 8, - 2, 0,226, 8, 4, 0,227, 8, 4, 0,228, 8, 4, 0,229, 8, 4, 0,230, 8, 4, 0,231, 8, 4, 0,232, 8, 74, 1, 2, 0, - 7, 0,152, 2, 4, 0, 19, 0, 75, 1, 5, 0, 74, 1,233, 8, 4, 0,191, 2, 4, 0,234, 8, 4, 0,235, 8, 4, 0, 19, 0, - 76, 1, 6, 0, 4, 0, 37, 0, 4, 0, 73, 6, 4, 0,229, 8, 4, 0,230, 8, 4, 0,231, 8, 4, 0,232, 8, 77, 1, 42, 0, - 77, 1, 0, 0, 77, 1, 1, 0, 26, 0,201, 8, 12, 0,156, 3, 0, 0, 20, 0, 2, 0, 19, 0, 2, 0,236, 8, 2, 0,237, 8, - 2, 0,238, 8, 2, 0,115, 3, 2, 0,239, 8, 4, 0, 72, 2, 4, 0,229, 8, 4, 0,230, 8, 72, 1,240, 8, 77, 1, 38, 0, - 77, 1,241, 8, 12, 0,242, 8, 9, 0,243, 8, 9, 0,244, 8, 9, 0,245, 8, 7, 0, 64, 1, 7, 0,172, 0, 7, 0,246, 8, - 7, 0, 15, 2, 7, 0,106, 3, 7, 0,108, 3, 2, 0,138, 3, 2, 0, 37, 0, 7, 0,247, 8, 7, 0,248, 8, 7, 0,111, 3, - 7, 0,249, 8, 7, 0,250, 8, 7, 0,251, 8, 7, 0,252, 8, 7, 0,253, 8, 7, 0,254, 8, 7, 0,255, 8, 7, 0, 0, 9, - 7, 0, 65, 2, 32, 0, 1, 9,162, 0, 11, 0, 12, 0, 2, 9, 2, 0, 19, 0, 2, 0, 3, 9, 7, 0,101, 2, 7, 0, 4, 9, - 7, 0, 5, 9, 12, 0, 6, 9, 4, 0, 7, 9, 4, 0, 8, 9, 9, 0, 9, 9, 9, 0, 10, 9, 78, 1, 1, 0, 4, 0, 8, 9, - 79, 1, 12, 0, 4, 0, 8, 9, 7, 0,117, 8, 2, 0, 11, 9, 2, 0, 12, 9, 7, 0, 13, 9, 7, 0, 14, 9, 2, 0, 15, 9, - 2, 0, 19, 0, 7, 0, 16, 9, 7, 0, 17, 9, 7, 0, 18, 9, 7, 0, 19, 9, 80, 1, 7, 0, 80, 1, 0, 0, 80, 1, 1, 0, - 12, 0, 20, 9, 4, 0, 19, 0, 4, 0, 21, 9, 0, 0,234, 3,249, 0, 22, 9,161, 0, 7, 0, 27, 0, 31, 0, 12, 0, 23, 9, - 12, 0, 2, 9, 12, 0, 24, 9, 12, 0,100, 0, 4, 0, 19, 0, 4, 0, 25, 9,219, 0, 4, 0, 27, 0,181, 8, 12, 0, 2, 9, - 4, 0, 26, 9, 4, 0, 19, 0, 81, 1, 17, 0,214, 0, 0, 0,214, 0, 1, 0, 12, 0, 8, 6, 4, 0, 9, 6, 7, 0, 10, 6, - 2, 0, 11, 6,215, 0, 63, 6,161, 0, 91, 3,219, 0, 27, 9, 0, 0, 69, 1, 0, 0, 66, 6, 2, 0, 19, 0, 2, 0, 28, 9, - 2, 0,116, 6, 2, 0,115, 6, 2, 0, 29, 9, 7, 0, 30, 9, 82, 1, 8, 0, 82, 1, 0, 0, 82, 1, 1, 0, 80, 1, 31, 9, - 36, 0, 80, 0, 12, 0, 95, 3, 4, 0, 19, 0, 0, 0, 20, 0, 4, 0, 32, 9, 83, 1, 5, 0, 83, 1, 0, 0, 83, 1, 1, 0, - 36, 0, 80, 0, 2, 0, 19, 0, 0, 0, 33, 9, 84, 1, 14, 0, 84, 1, 0, 0, 84, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 0, 0, 34, 9, 0, 0, 35, 9, 0, 0, 33, 9, 7, 0, 36, 9, 7, 0, 37, 9, 4, 0, 37, 0, 36, 0, 80, 0, - 7, 0, 38, 9, 7, 0, 39, 9, 85, 1, 9, 0, 85, 1, 0, 0, 85, 1, 1, 0, 32, 0, 40, 9, 0, 0,250, 2, 7, 0, 41, 9, - 2, 0, 42, 9, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0, 43, 9, 86, 1, 7, 0, 42, 0,122, 6, 26, 0,201, 8, 4, 0, 19, 0, - 4, 0, 44, 9, 12, 0, 45, 9, 32, 0, 40, 9, 0, 0,250, 2, 87, 1, 15, 0, 32, 0, 40, 9, 2, 0, 46, 9, 2, 0, 19, 0, - 2, 0, 47, 9, 2, 0, 48, 9, 0, 0,250, 2, 32, 0, 49, 9, 0, 0, 50, 9, 7, 0, 51, 9, 7, 0, 36, 2, 7, 0, 52, 9, - 7, 0, 53, 9, 2, 0, 17, 0, 2, 0, 69, 1, 7, 0, 76, 1, 88, 1, 6, 0, 32, 0, 40, 9, 7, 0,233, 8, 2, 0, 54, 9, - 2, 0, 55, 9, 2, 0, 19, 0, 2, 0, 56, 9, 89, 1, 6, 0, 32, 0, 40, 9, 4, 0, 57, 9, 4, 0, 58, 9, 4, 0, 90, 0, - 4, 0, 37, 0, 0, 0,250, 2, 90, 1, 4, 0, 32, 0, 40, 9, 4, 0, 19, 0, 4, 0, 57, 9, 0, 0,250, 2, 91, 1, 4, 0, - 32, 0, 40, 9, 4, 0, 19, 0, 4, 0, 57, 9, 0, 0,250, 2, 92, 1, 10, 0, 32, 0, 40, 9, 4, 0, 59, 9, 7, 0,125, 0, - 4, 0, 19, 0, 2, 0,118, 6, 2, 0, 60, 9, 2, 0, 43, 0, 2, 0, 70, 0, 7, 0, 61, 9, 0, 0,250, 2, 93, 1, 4, 0, - 32, 0, 40, 9, 4, 0, 19, 0, 4, 0, 57, 9, 0, 0,250, 2, 94, 1, 10, 0, 32, 0, 40, 9, 2, 0, 17, 0, 2, 0, 37, 4, - 4, 0, 88, 0, 4, 0, 89, 0, 7, 0,152, 8, 7, 0,153, 8, 4, 0, 37, 0,161, 0,126, 8, 0, 0,250, 2, 95, 1, 4, 0, - 32, 0, 40, 9, 4, 0,116, 3, 4, 0, 62, 9, 0, 0,250, 2, 96, 1, 4, 0, 32, 0, 40, 9, 4, 0,116, 3, 4, 0, 37, 0, - 0, 0,250, 2, 97, 1, 5, 0, 32, 0, 40, 9, 7, 0,125, 0, 4, 0, 63, 9, 4, 0,116, 3, 4, 0,117, 3, 98, 1, 6, 0, - 32, 0, 40, 9, 4, 0, 64, 9, 4, 0, 65, 9, 7, 0, 66, 9, 7, 0, 67, 9, 0, 0,250, 2, 99, 1, 16, 0, 32, 0, 40, 9, - 32, 0,241, 8, 4, 0, 17, 0, 7, 0, 68, 9, 7, 0, 69, 9, 7, 0, 70, 9, 7, 0, 71, 9, 7, 0, 72, 9, 7, 0, 73, 9, - 7, 0, 74, 9, 7, 0, 75, 9, 7, 0, 76, 9, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0, 70, 0,100, 1, 3, 0, - 32, 0, 40, 9, 4, 0, 19, 0, 4, 0, 28, 2,101, 1, 5, 0, 32, 0, 40, 9, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0, 77, 9, - 0, 0,250, 2,102, 1, 10, 0, 32, 0, 40, 9, 0, 0,250, 2, 2, 0, 78, 9, 2, 0, 79, 9, 0, 0, 80, 9, 0, 0, 81, 9, - 7, 0, 82, 9, 7, 0, 83, 9, 7, 0, 84, 9, 7, 0, 85, 9,103, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, - 7, 0, 12, 0, 7, 0, 86, 9, 7, 0, 87, 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, 86, 9, 7, 0, 87, 9, 2, 0, 19, 0, 2, 0, 28, 2,105, 1, 8, 0, 7, 0, 9, 0, - 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0, 86, 9, 7, 0, 87, 9, 2, 0, 19, 0, 2, 0, 28, 2,106, 1, 7, 0, - 32, 0, 40, 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,107, 1, 5, 0, - 32, 0, 48, 3, 7, 0, 76, 1, 2, 0, 52, 3, 0, 0, 54, 3, 0, 0, 88, 9,108, 1, 10, 0,108, 1, 0, 0,108, 1, 1, 0, - 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 89, 9, 7, 0, 20, 1, 7, 0, 21, 1, 2, 0, 20, 9, 2, 0, 90, 9, 32, 0, 45, 0, -109, 1, 22, 0,109, 1, 0, 0,109, 1, 1, 0, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0, 91, 9, 2, 0, 92, 9, 36, 0, 80, 0, -161, 0,126, 8, 32, 0,164, 0, 7, 0, 88, 0, 7, 0, 89, 0, 7, 0, 93, 9, 7, 0, 94, 9, 7, 0, 95, 9, 7, 0, 96, 9, - 7, 0,236, 2, 7, 0, 97, 9, 7, 0,128, 8, 7, 0, 98, 9, 0, 0, 99, 9, 0, 0,100, 9, 12, 0, 97, 3,110, 1, 8, 0, - 7, 0, 43, 2, 7, 0,152, 8, 7, 0,153, 8, 9, 0, 2, 0, 2, 0,101, 9, 2, 0,102, 9, 2, 0,103, 9, 2, 0,104, 9, -111, 1, 18, 0,111, 1, 0, 0,111, 1, 1, 0,111, 1,105, 9, 0, 0, 20, 0,110, 1,106, 9, 2, 0, 17, 0, 2, 0, 19, 0, - 2, 0,107, 9, 2, 0,108, 9, 2, 0,109, 9, 2, 0,110, 9, 4, 0, 43, 0, 7, 0,111, 9, 7, 0,112, 9, 4, 0,113, 9, - 4, 0,114, 9,111, 1,115, 9,112, 1,116, 9,113, 1, 33, 0,113, 1, 0, 0,113, 1, 1, 0,113, 1,117, 9, 0, 0, 20, 0, - 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,233, 7, 2, 0, 11, 8, 2, 0,118, 9, 2, 0,133, 0, 2, 0,108, 9, 2, 0,223, 7, - 12, 0,121, 8, 12, 0,119, 9, 27, 0,152, 6, 9, 0,120, 9, 7, 0,111, 9, 7, 0,112, 9, 7, 0, 74, 2, 7, 0,121, 9, - 2, 0,122, 9, 2, 0,123, 9, 7, 0,124, 9, 7, 0,125, 9, 2, 0,126, 9, 2, 0,127, 9, 9, 0,128, 9, 24, 0,129, 9, - 24, 0,130, 9, 24, 0,131, 9,114, 1,150, 0,115, 1,132, 9,116, 1,133, 9,112, 1, 8, 0,112, 1, 0, 0,112, 1, 1, 0, -113, 1,134, 9,113, 1,135, 9,111, 1,136, 9,111, 1,115, 9, 4, 0, 19, 0, 4, 0, 37, 0, 60, 0, 23, 0, 27, 0, 31, 0, - 39, 0, 75, 0,163, 0, 94, 3, 12, 0,137, 9, 12, 0,138, 9,110, 1,139, 9, 12, 0,140, 9, 4, 0, 17, 0, 4, 0,141, 9, - 4, 0,142, 9, 4, 0,143, 9, 4, 0, 19, 0, 4, 0, 37, 0, 12, 0,144, 9,116, 1,145, 9,111, 1,146, 9,111, 1,147, 9, - 9, 0,148, 9, 9, 0,149, 9, 4, 0,150, 9, 9, 0,151, 9, 9, 0,152, 9, 9, 0,153, 9,117, 1, 6, 0, 4, 0,124, 0, - 4, 0,126, 0, 4, 0,223, 7, 0, 0,154, 9, 0, 0,155, 9, 2, 0, 37, 0,118, 1, 16, 0, 2, 0,177, 7, 2, 0,178, 7, - 2, 0,156, 9, 2, 0,176, 8, 2, 0,157, 9, 2, 0, 68, 0, 7, 0,235, 2, 7, 0,158, 9, 7, 0,159, 9, 2, 0, 91, 1, - 0, 0,160, 9, 0, 0,161, 9, 2, 0,162, 9, 2, 0, 37, 0, 4, 0,163, 9, 4, 0,164, 9,119, 1, 9, 0, 7, 0,165, 9, - 7, 0,166, 9, 7, 0,195, 8, 7, 0,109, 0, 7, 0,167, 9, 7, 0, 79, 6, 2, 0,168, 9, 0, 0,169, 9, 0, 0, 37, 0, -120, 1, 4, 0, 7, 0,170, 9, 7, 0,171, 9, 2, 0,168, 9, 2, 0, 37, 0,121, 1, 3, 0, 7, 0,172, 9, 7, 0,173, 9, - 7, 0, 15, 0,122, 1, 7, 0, 0, 0, 5, 2, 2, 0,250, 4, 2, 0,251, 4, 2, 0,252, 4, 2, 0,190, 4, 4, 0,126, 0, - 4, 0, 35, 4,123, 1, 7, 0, 7, 0,174, 9, 7, 0,175, 9, 7, 0,176, 9, 7, 0, 85, 2, 7, 0,177, 9, 7, 0,178, 9, - 7, 0,179, 9,124, 1, 4, 0, 2, 0,180, 9, 2, 0,181, 9, 2, 0,182, 9, 2, 0,183, 9,125, 1, 2, 0, 7, 0, 5, 0, - 7, 0, 6, 0,126, 1, 2, 0, 0, 0,166, 0, 0, 0,184, 9,127, 1, 1, 0, 0, 0, 20, 0,128, 1, 10, 0, 0, 0,185, 9, - 0, 0,186, 9, 0, 0, 72, 6, 0, 0,187, 9, 2, 0,156, 9, 2, 0,188, 9, 7, 0,189, 9, 7, 0,190, 9, 7, 0,191, 9, - 7, 0, 97, 9,129, 1, 2, 0, 9, 0,192, 9, 9, 0,193, 9,130, 1, 11, 0, 0, 0,252, 4, 0, 0, 17, 0, 0, 0,168, 9, - 0, 0,109, 0, 0, 0,194, 9, 0, 0,106, 0, 0, 0, 70, 2, 7, 0,195, 9, 7, 0,196, 9, 7, 0,197, 9, 7, 0,198, 9, -131, 1, 8, 0, 7, 0, 86, 8, 7, 0,125, 0, 7, 0,161, 9, 7, 0,157, 2, 7, 0,199, 9, 7, 0,236, 0, 7, 0,200, 9, - 4, 0, 17, 0,132, 1, 4, 0, 2, 0,201, 9, 2, 0,202, 9, 2, 0,203, 9, 2, 0, 37, 0,133, 1, 1, 0, 0, 0, 20, 0, -134, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 2, 0, 19, 0, 2, 0,204, 9,135, 1, 10, 0, 2, 0,223, 3, 2, 0, 19, 0, - 7, 0,121, 4, 7, 0,205, 9, 7, 0,206, 9, 7, 0,207, 9, 7, 0,208, 9,134, 1,209, 9,134, 1,210, 9,134, 1,211, 9, - 63, 0, 9, 0, 4, 0, 19, 0, 4, 0, 64, 0, 24, 0,212, 9, 24, 0,213, 9,135, 1,214, 9, 7, 0,215, 9, 7, 0,216, 9, - 7, 0,217, 9, 7, 0,218, 9,136, 1, 4, 0, 47, 0,229, 2, 7, 0,219, 9, 7, 0,170, 1, 7, 0, 37, 0,192, 0, 17, 0, - 27, 0, 31, 0,136, 1,220, 9, 63, 0,209, 9, 51, 0,134, 1, 2, 0, 19, 0, 2, 0,231, 5, 4, 0,106, 0, 7, 0,221, 9, - 7, 0, 82, 2, 4, 0,222, 9, 7, 0,223, 9, 7, 0,224, 9, 7, 0,225, 9, 7, 0,170, 1, 2, 0,104, 1, 0, 0,226, 9, - 0, 0,213, 6,137, 1, 10, 0, 4, 0, 17, 0, 4, 0,125, 0, 4, 0, 19, 0, 4, 0,178, 3, 4, 0,227, 9, 4, 0,228, 9, - 4, 0,229, 9, 0, 0, 92, 0, 0, 0, 20, 0, 9, 0, 2, 0,138, 1, 1, 0, 0, 0, 35, 0, 91, 0, 7, 0,137, 1,230, 9, - 4, 0,231, 9, 4, 0,232, 9, 4, 0,233, 9, 4, 0, 37, 0, 9, 0,234, 9,138, 1,235, 9,139, 1, 5, 0, 7, 0,152, 2, - 7, 0,219, 2, 7, 0, 36, 2, 2, 0,128, 2, 2, 0, 37, 0,140, 1, 5, 0, 7, 0,152, 2, 7, 0,236, 9, 7, 0,237, 9, - 7, 0,238, 9, 7, 0,219, 2,141, 1, 5, 0, 32, 0,239, 9,142, 1, 22, 0, 7, 0,205, 5, 7, 0,240, 9, 7, 0, 57, 0, -143, 1, 7, 0, 4, 0,241, 9, 4, 0,242, 9, 4, 0,243, 9, 7, 0,244, 9, 7, 0,245, 9, 7, 0,246, 9, 7, 0, 57, 0, -144, 1, 8, 0,144, 1, 0, 0,144, 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, 94, 8,145, 1, 6, 0,145, 1, 0, 0,145, 1, 1, 0, 32, 0, 45, 0, 2, 0,204, 2, 2, 0, 19, 0, 2, 0,247, 9, -146, 1, 17, 0,140, 1,172, 3,140, 1,248, 9,139, 1,249, 9,140, 1, 78, 8,141, 1,250, 9, 4, 0, 82, 0, 7, 0,219, 2, - 7, 0,246, 2, 7, 0,251, 9, 4, 0,241, 9, 4, 0,252, 9, 7, 0,245, 9, 7, 0,246, 9, 7, 0,106, 0, 4, 0,253, 9, - 2, 0, 19, 0, 2, 0,254, 9,147, 1,110, 0, 27, 0, 31, 0, 39, 0, 75, 0,148, 1,255, 9,170, 0, 57, 4, 4, 0, 19, 0, - 2, 0, 17, 0, 2, 0, 78, 9, 2, 0, 0, 10, 2, 0, 1, 10, 2, 0,138, 3, 2, 0, 2, 10, 2, 0, 3, 10, 2, 0, 4, 10, - 2, 0, 5, 10, 2, 0, 6, 10, 2, 0, 7, 10, 2, 0, 8, 10, 2, 0,239, 4, 2, 0,117, 5, 2, 0, 9, 10, 2, 0, 10, 10, - 2, 0, 11, 10, 2, 0, 12, 10, 2, 0, 13, 10, 2, 0, 25, 2, 2, 0, 71, 8, 2, 0, 46, 8, 2, 0, 14, 10, 2, 0, 15, 10, - 2, 0,188, 3, 2, 0,189, 3, 2, 0, 16, 10, 2, 0, 17, 10, 2, 0, 18, 10, 2, 0, 19, 10, 7, 0, 20, 10, 7, 0, 21, 10, - 7, 0, 22, 10, 2, 0, 23, 10, 2, 0, 24, 10, 7, 0, 25, 10, 7, 0, 26, 10, 7, 0, 27, 10, 7, 0, 53, 8, 7, 0, 89, 0, - 7, 0,246, 2, 7, 0, 59, 8, 7, 0, 28, 10, 7, 0, 29, 10, 7, 0, 30, 10, 4, 0, 54, 8, 4, 0, 52, 8, 4, 0, 31, 10, - 7, 0, 55, 8, 7, 0, 56, 8, 7, 0, 57, 8, 7, 0, 32, 10, 7, 0, 33, 10, 7, 0, 34, 10, 7, 0, 35, 10, 7, 0, 36, 10, - 7, 0, 57, 0, 7, 0, 37, 10, 7, 0, 38, 10, 7, 0, 39, 10, 7, 0, 40, 10, 7, 0,129, 3, 7, 0,106, 0, 7, 0, 41, 10, - 7, 0, 42, 10, 7, 0, 43, 10, 7, 0, 44, 10, 7, 0, 45, 10, 7, 0, 46, 10, 7, 0, 47, 10, 4, 0, 48, 10, 4, 0, 49, 10, - 7, 0, 50, 10, 7, 0, 51, 10, 7, 0, 52, 10, 7, 0, 53, 10, 7, 0, 54, 10, 7, 0,210, 0, 7, 0, 55, 10, 7, 0,214, 3, - 7, 0,212, 3, 7, 0,213, 3, 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, 7, 0, 65, 10, 7, 0, 66, 10, 7, 0, 67, 10, 7, 0, 68, 10, 4, 0, 69, 10, - 4, 0, 70, 10, 67, 0,161, 3, 12, 0, 71, 10, 67, 0, 72, 10, 32, 0, 73, 10, 32, 0, 74, 10, 36, 0, 80, 0,165, 0, 61, 1, -165, 0, 75, 10,148, 0, 44, 0,148, 0, 0, 0,148, 0, 1, 0,147, 1, 76, 10,146, 1, 77, 10,143, 1,241, 8,172, 0,239, 3, - 9, 0,240, 3,149, 1, 78, 10,149, 1, 79, 10, 12, 0, 80, 10, 12, 0, 81, 10,133, 0, 82, 10,141, 0, 83, 10,141, 0, 84, 10, - 32, 0, 85, 10, 32, 0, 86, 10, 32, 0, 38, 0, 12, 0, 45, 9, 0, 0, 20, 0, 7, 0,240, 0, 7, 0, 17, 3, 7, 0, 87, 10, - 4, 0,193, 2, 4, 0, 57, 0, 4, 0, 19, 0, 4, 0, 54, 8, 4, 0, 88, 10, 4, 0, 89, 10, 4, 0, 90, 10, 2, 0,247, 0, - 2, 0, 91, 10, 2, 0, 92, 10, 2, 0, 93, 10, 0, 0, 94, 10, 2, 0, 95, 10, 2, 0, 96, 10, 2, 0, 97, 10, 9, 0, 98, 10, -137, 0, 56, 4, 12, 0, 4, 3, 12, 0, 99, 10,150, 1,100, 10,151, 1,101, 10, 7, 0,102, 10,135, 0, 35, 0,152, 1,196, 8, - 7, 0, 26, 4, 7, 0,103, 10, 7, 0,104, 10, 7, 0,124, 4, 7, 0,105, 10, 7, 0,139, 3, 7, 0,129, 3, 7, 0,106, 10, - 7, 0, 84, 2, 7, 0,107, 10, 7, 0,108, 10, 7, 0,109, 10, 7, 0,110, 10, 7, 0,111, 10, 7, 0,112, 10, 7, 0, 27, 4, - 7, 0,113, 10, 7, 0,114, 10, 7, 0,115, 10, 7, 0, 28, 4, 7, 0, 24, 4, 7, 0, 25, 4, 7, 0,116, 10, 4, 0,117, 10, - 4, 0, 90, 0, 4, 0,118, 10, 4, 0,119, 10, 2, 0,120, 10, 2, 0,121, 10, 2, 0,122, 10, 2, 0,123, 10, 2, 0,124, 10, - 2, 0,125, 10,170, 0, 57, 4,136, 0, 8, 0,152, 1,126, 10, 7, 0,127, 10, 7, 0,128, 10, 7, 0,242, 1, 7, 0,129, 10, - 4, 0, 90, 0, 2, 0,130, 10, 2, 0,131, 10,153, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0,132, 10, -154, 1, 6, 0,154, 1, 0, 0,154, 1, 1, 0,153, 1,233, 8, 4, 0,253, 0, 2, 0,133, 10, 2, 0, 19, 0,155, 1, 5, 0, -155, 1, 0, 0,155, 1, 1, 0, 12, 0,134, 10, 4, 0,135, 10, 4, 0, 19, 0,156, 1, 9, 0,156, 1, 0, 0,156, 1, 1, 0, - 12, 0,124, 0,155, 1,136, 10, 4, 0, 19, 0, 2, 0,133, 10, 2, 0,137, 10, 7, 0, 91, 0, 0, 0,138, 10,163, 0, 6, 0, - 27, 0, 31, 0, 12, 0, 12, 5, 4, 0, 19, 0, 2, 0,139, 10, 2, 0,140, 10, 9, 0,141, 10,157, 1, 7, 0,157, 1, 0, 0, -157, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, 0, 0,142, 10, 0, 0,143, 10,158, 1, 5, 0, 12, 0,144, 10, - 4, 0,145, 10, 4, 0,146, 10, 4, 0, 19, 0, 4, 0, 37, 0,159, 1, 16, 0, 27, 0, 31, 0,160, 1,147, 10,160, 1,148, 10, - 12, 0,149, 10, 4, 0,150, 10, 2, 0,151, 10, 2, 0, 37, 0, 12, 0,152, 10, 12, 0,153, 10,158, 1,154, 10, 12, 0,155, 10, - 12, 0,156, 10, 12, 0,157, 10,161, 1,158, 10, 12, 0,159, 10,212, 0,160, 10,160, 1, 31, 0,160, 1, 0, 0,160, 1, 1, 0, - 9, 0,161, 10, 4, 0,156, 7, 2, 0,162, 10, 2, 0, 37, 0,217, 0, 62, 6,217, 0,163, 10, 0, 0,164, 10, 2, 0,165, 10, - 2, 0,166, 10, 2, 0,177, 7, 2, 0,178, 7, 2, 0,167, 10, 2, 0,168, 10, 2, 0,178, 3, 2, 0,178, 6, 2, 0,169, 10, - 2, 0,170, 10, 2, 0,171, 10,162, 1,172, 10,163, 1,173, 10,164, 1,174, 10, 4, 0,175, 10, 4, 0,176, 10, 9, 0,177, 10, - 12, 0,153, 10, 12, 0,197, 7, 12, 0,178, 10, 12, 0,179, 10, 12, 0,180, 10,165, 1, 17, 0,165, 1, 0, 0,165, 1, 1, 0, - 0, 0,181, 10, 26, 0, 30, 0, 2, 0,182, 10, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0,183, 10, 2, 0,184, 10, 2, 0,185, 10, - 2, 0,186, 10, 2, 0,187, 10, 2, 0, 19, 0, 2, 0,188, 10, 2, 0, 31, 0, 2, 0, 37, 0,166, 1,189, 10,167, 1, 10, 0, -167, 1, 0, 0,167, 1, 1, 0, 12, 0,190, 10, 0, 0,181, 10, 2, 0,191, 10, 2, 0,192, 10, 2, 0, 19, 0, 2, 0,193, 10, - 4, 0,194, 10, 9, 0,195, 10,161, 1, 8, 0,161, 1, 0, 0,161, 1, 1, 0, 0, 0,181, 10, 0, 0,196, 10, 0, 0,197, 10, - 12, 0,114, 7, 4, 0,198, 10, 4, 0, 19, 0,225, 0, 13, 0,225, 0, 0, 0,225, 0, 1, 0, 0, 0,181, 10, 26, 0, 30, 0, -168, 1,171, 7, 9, 0,199, 10,166, 1,189, 10,158, 1,200, 10, 12, 0,201, 10,225, 0,202, 10, 1, 1, 99, 6, 2, 0, 19, 0, - 2, 0,136, 1,169, 1, 8, 0,169, 1, 0, 0,169, 1, 1, 0, 9, 0, 2, 0, 9, 0,203, 10, 0, 0,234, 3, 2, 0, 17, 0, - 2, 0, 19, 0, 7, 0,204, 10,170, 1, 5, 0, 7, 0,205, 10, 4, 0,206, 10, 4, 0,207, 10, 4, 0, 69, 1, 4, 0, 19, 0, -171, 1, 6, 0, 7, 0,208, 10, 7, 0,209, 10, 7, 0,210, 10, 7, 0,211, 10, 4, 0, 17, 0, 4, 0, 19, 0,172, 1, 5, 0, - 7, 0,152, 8, 7, 0,153, 8, 7, 0,219, 2, 2, 0, 39, 2, 2, 0, 40, 2,173, 1, 5, 0,172, 1, 2, 0, 4, 0, 54, 0, - 7, 0,212, 10, 7, 0,152, 8, 7, 0,153, 8,174, 1, 4, 0, 2, 0,213, 10, 2, 0,214, 10, 2, 0,215, 10, 2, 0,216, 10, -175, 1, 2, 0, 42, 0,149, 6, 26, 0,201, 8,176, 1, 3, 0, 24, 0,217, 10, 4, 0, 19, 0, 4, 0, 37, 0,177, 1, 6, 0, - 7, 0,106, 0, 7, 0,221, 2, 7, 0,218, 10, 7, 0, 37, 0, 2, 0,246, 0, 2, 0,219, 10,178, 1, 9, 0,178, 1, 0, 0, -178, 1, 1, 0, 27, 0,152, 6, 0, 0,220, 10, 4, 0,221, 10, 4, 0,222, 10, 4, 0, 90, 0, 4, 0, 37, 0, 0, 0,234, 3, -179, 1, 7, 0, 12, 0, 45, 9, 0, 0,223, 10, 9, 0,224, 10, 7, 0, 61, 0, 7, 0,204, 10, 4, 0, 17, 0, 4, 0, 19, 0, -180, 1, 3, 0, 7, 0,225, 10, 4, 0, 19, 0, 4, 0, 37, 0,181, 1, 15, 0,181, 1, 0, 0,181, 1, 1, 0, 80, 1, 31, 9, -179, 1, 62, 0, 12, 0, 97, 3, 35, 0, 50, 0,180, 1,226, 10, 4, 0, 54, 0, 7, 0, 61, 0, 2, 0, 19, 0, 2, 0, 15, 1, - 4, 0,221, 10, 0, 0,220, 10, 4, 0,227, 10, 7, 0,228, 10,182, 1, 2, 0, 0, 0,229, 10, 0, 0,230, 10,183, 1, 4, 0, -183, 1, 0, 0,183, 1, 1, 0,161, 0, 48, 3, 12, 0,231, 10,184, 1, 24, 0,184, 1, 0, 0,184, 1, 1, 0, 12, 0,232, 10, -161, 0,126, 8,183, 1,233, 10, 12, 0,234, 10, 12, 0, 97, 3, 0, 0,234, 3, 7, 0,204, 10, 7, 0,235, 10, 7, 0, 88, 0, - 7, 0, 89, 0, 7, 0, 93, 9, 7, 0, 94, 9, 7, 0,236, 2, 7, 0, 97, 9, 7, 0,128, 8, 7, 0, 98, 9, 2, 0,236, 10, - 2, 0,237, 10, 2, 0, 43, 0, 2, 0, 17, 0, 4, 0, 19, 0, 4, 0, 70, 0,185, 1, 6, 0,185, 1, 0, 0,185, 1, 1, 0, - 12, 0,232, 10, 4, 0, 19, 0, 4, 0,156, 2, 0, 0,234, 3,186, 1, 10, 0,186, 1, 0, 0,186, 1, 1, 0, 27, 0,152, 6, - 0, 0,238, 10, 4, 0,222, 10, 4, 0,239, 10, 0, 0,220, 10, 4, 0,221, 10, 2, 0, 19, 0, 2, 0,240, 10,187, 1, 7, 0, -187, 1, 0, 0,187, 1, 1, 0, 12, 0,241, 10, 0, 0,234, 3, 2, 0, 19, 0, 2, 0,242, 10, 4, 0,243, 10,188, 1, 5, 0, -188, 1, 0, 0,188, 1, 1, 0, 0, 0,220, 10, 4, 0,221, 10, 7, 0,209, 2, 39, 0, 12, 0,161, 0, 91, 3,161, 0,244, 10, -183, 1,233, 10, 12, 0,245, 10,184, 1,246, 10, 12, 0,247, 10, 12, 0,248, 10, 4, 0, 19, 0, 4, 0,247, 0, 2, 0,249, 10, - 2, 0,250, 10, 7, 0,251, 10,189, 1, 2, 0, 27, 0, 31, 0, 39, 0, 75, 0,190, 1, 5, 0,190, 1, 0, 0,190, 1, 1, 0, - 4, 0, 17, 0, 4, 0, 19, 0, 0, 0, 20, 0,191, 1, 6, 0,190, 1,252, 10, 32, 0, 45, 0, 4, 0,253, 10, 7, 0,254, 10, - 4, 0,255, 10, 4, 0, 20, 9,192, 1, 3, 0,190, 1,252, 10, 4, 0,253, 10, 7, 0, 0, 11,193, 1, 8, 0,190, 1,252, 10, - 32, 0, 45, 0, 7, 0, 64, 1, 7, 0, 1, 11, 7, 0, 17, 3, 7, 0,195, 8, 4, 0,253, 10, 4, 0, 2, 11,194, 1, 5, 0, -190, 1,252, 10, 7, 0, 3, 11, 7, 0, 11, 8, 7, 0,242, 2, 7, 0, 57, 0,195, 1, 3, 0,190, 1,252, 10, 7, 0,195, 8, - 7, 0, 4, 11,142, 1, 4, 0, 7, 0, 5, 11, 7, 0, 43, 10, 2, 0, 6, 11, 2, 0, 69, 1,196, 1, 14, 0,196, 1, 0, 0, -196, 1, 1, 0, 12, 0, 7, 11, 12, 0, 8, 11, 12, 0, 9, 11, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0, 10, 11, - 7, 0, 11, 11, 4, 0,255, 10, 4, 0, 20, 9, 7, 0,243, 3, 7, 0,244, 2,148, 1, 23, 0, 4, 0,253, 10, 4, 0, 12, 11, - 7, 0, 13, 11, 7, 0, 57, 0, 7, 0, 14, 11, 7, 0,240, 2, 7, 0, 5, 11, 7, 0, 15, 11, 7, 0,221, 2, 7, 0, 16, 11, - 7, 0,121, 4, 7, 0, 17, 11, 7, 0, 18, 11, 7, 0, 19, 11, 7, 0, 20, 11, 7, 0, 21, 11, 7, 0, 22, 11, 7, 0, 23, 11, - 7, 0, 24, 11, 7, 0, 25, 11, 7, 0, 26, 11, 7, 0, 27, 11, 12, 0, 28, 11,121, 0, 34, 0,120, 0, 29, 11,197, 1, 30, 11, - 67, 0, 31, 11, 67, 0, 72, 10, 67, 0, 32, 11,198, 1, 33, 11, 48, 0,165, 0, 48, 0, 34, 11, 48, 0, 35, 11, 7, 0, 36, 11, - 7, 0, 37, 11, 7, 0, 38, 11, 7, 0, 39, 11, 7, 0, 40, 11, 7, 0, 32, 9, 7, 0, 41, 11, 7, 0,170, 1, 7, 0, 42, 11, - 4, 0, 43, 11, 4, 0, 44, 11, 4, 0, 45, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0, 46, 11, 2, 0, 47, 11, 2, 0, 48, 11, - 4, 0, 49, 11, 7, 0,221, 2, 4, 0, 50, 11, 7, 0, 51, 11, 4, 0, 52, 11,137, 0, 53, 11, 12, 0, 54, 11,170, 0, 57, 4, -122, 0, 11, 0,120, 0, 29, 11,148, 0, 34, 3, 7, 0,137, 1, 7, 0, 32, 9, 7, 0, 55, 11, 7, 0, 56, 11, 2, 0, 57, 11, - 2, 0, 58, 11, 2, 0, 59, 11, 2, 0, 17, 0, 4, 0, 37, 0,123, 0, 13, 0,120, 0, 29, 11,139, 0, 14, 3,141, 0, 16, 3, - 7, 0,233, 8, 7, 0, 60, 11, 7, 0, 61, 11, 7, 0, 66, 1, 7, 0, 62, 11, 4, 0, 54, 9, 4, 0, 12, 3, 2, 0, 17, 0, + 88, 0,192, 1,136, 0,128, 0, 72, 0,128, 0,232, 0, 48, 0, 0, 0,144, 0,136, 0,104, 0, 48, 0, 24, 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,104, 0, 96, 0, 32, 0,168, 1, 48, 0, 16, 0,168, 0, 88, 0, 56, 0, + 64, 0,176, 1, 32, 0, 8, 0, 16, 0, 48, 2, 0, 0, 0, 0, 88, 0,104, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 1, + 56, 0,152, 0, 72, 0,208, 0,248, 0, 32, 0, 0, 1,248, 0,208, 1,104, 0, 0, 0,160, 0, 0, 0, 40, 1, 16, 0, 16, 0, +192, 24, 24, 24,224, 0,144, 2,120, 2, 64, 0,200, 0, 32, 1, 72, 0,208, 2, 40, 0,144, 1, 40, 0, 24, 1, 32, 0,232, 0, + 32, 0, 32, 0, 80, 2, 32, 1, 16, 0, 8, 24, 56, 0, 0, 12, 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, 16, 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, 48, 0, 40, 0, 72, 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, 72, 0, + 32, 0, 12, 0, 56, 0, 24, 0, 72, 0,240, 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, 0, 1,224, 0,232, 0, 0, 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, 56, 0, 24, 2, 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, 0, 0, 83, 84, 82, 67,144, 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, 7, 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, 41, 0, + 27, 0, 31, 0, 39, 0, 75, 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, 8, 0,109, 0,184, 2, + 0, 0, 43, 3, 0, 0, 44, 3, 0, 0,175, 2, 0, 0, 45, 3, 0, 0, 46, 3, 0, 0, 90, 0, 0, 0, 70, 2,152, 0, 3, 0, +109, 0,184, 2,153, 0, 47, 3,137, 0, 3, 3,154, 0, 10, 0,109, 0,184, 2, 32, 0, 48, 3, 32, 0, 49, 3, 0, 0, 50, 3, + 7, 0, 51, 3, 2, 0, 52, 3, 2, 0, 53, 3, 0, 0, 54, 3, 0, 0, 55, 3, 0, 0,190, 2,155, 0, 9, 0,109, 0,184, 2, + 32, 0, 56, 3, 0, 0, 50, 3, 7, 0, 57, 3, 7, 0, 58, 3, 0, 0, 69, 1, 0, 0,205, 2, 0, 0, 59, 3, 0, 0, 37, 0, +156, 0, 1, 0,109, 0,184, 2,157, 0, 8, 0,109, 0,184, 2, 0, 0, 72, 0, 7, 0,125, 0, 7, 0, 60, 3, 7, 0, 61, 3, + 7, 0, 62, 3, 4, 0, 19, 0, 0, 0, 92, 0,158, 0, 27, 0, 27, 0, 31, 0, 2, 0, 45, 2, 2, 0, 46, 2, 2, 0, 63, 3, + 2, 0, 19, 0, 2, 0, 64, 3, 2, 0, 65, 3, 2, 0, 66, 3, 2, 0, 70, 0, 0, 0, 67, 3, 0, 0, 68, 3, 0, 0, 69, 3, + 0, 0, 17, 0, 4, 0, 37, 0, 7, 0, 70, 3, 7, 0, 71, 3, 7, 0, 72, 3, 7, 0, 73, 3, 7, 0, 74, 3, 7, 0, 75, 3, + 34, 0, 76, 3, 36, 0, 80, 0, 38, 0, 66, 2, 86, 0,115, 2, 7, 0, 77, 3, 7, 0, 78, 3,158, 0, 79, 3,159, 0, 3, 0, +159, 0, 0, 0,159, 0, 1, 0, 0, 0, 20, 0, 71, 0, 3, 0, 7, 0, 80, 3, 4, 0, 19, 0, 4, 0, 37, 0, 32, 0,126, 0, + 27, 0, 31, 0, 39, 0, 75, 0,160, 0, 81, 3, 2, 0, 17, 0, 2, 0, 82, 3, 4, 0, 83, 3, 4, 0, 84, 3, 4, 0, 85, 3, + 0, 0, 86, 3, 32, 0, 38, 0, 32, 0, 87, 3, 32, 0, 88, 3, 32, 0, 89, 3, 32, 0, 90, 3, 36, 0, 80, 0, 77, 0, 65, 2, + 71, 0, 6, 2,161, 0, 91, 3,161, 0, 92, 3,162, 0, 93, 3, 9, 0, 2, 0,163, 0, 94, 3,164, 0, 95, 3,165, 0, 96, 3, + 12, 0, 97, 3, 12, 0,109, 2, 12, 0, 25, 2, 12, 0, 98, 3, 12, 0, 99, 3, 4, 0, 69, 1, 4, 0,100, 3, 66, 0, 27, 2, + 0, 0,101, 3, 4, 0, 29, 2, 4, 0,102, 3, 7, 0, 64, 1, 7, 0,103, 3, 7, 0,104, 3, 7, 0,172, 0, 7, 0,105, 3, + 7, 0, 65, 1, 7, 0,106, 3, 7, 0, 15, 2, 7, 0,107, 3, 7, 0,108, 3, 7, 0,109, 3, 7, 0,110, 3, 7, 0,111, 3, + 7, 0,112, 3, 7, 0,251, 2, 7, 0,113, 3, 7, 0,240, 0, 4, 0,114, 3, 2, 0, 19, 0, 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, 2, 0,123, 3, 2, 0,124, 3, + 2, 0,125, 3, 4, 0,126, 3, 4, 0,127, 3, 4, 0,128, 3, 4, 0,129, 3, 7, 0,130, 3, 7, 0,101, 2, 7, 0,131, 3, + 7, 0,132, 3, 7, 0,133, 3, 7, 0,134, 3, 7, 0,135, 3, 7, 0,215, 0, 7, 0,136, 3, 7, 0,137, 3, 7, 0,138, 3, + 7, 0,139, 3, 2, 0,140, 3, 0, 0,141, 3, 0, 0,142, 3, 0, 0,143, 3, 0, 0,144, 3, 7, 0,145, 3, 7, 0,146, 3, + 12, 0,147, 3, 12, 0,148, 3, 12, 0,149, 3, 12, 0,150, 3, 7, 0,151, 3, 2, 0,156, 2, 2, 0,152, 3, 7, 0,138, 2, + 4, 0,153, 3, 4, 0,154, 3,166, 0,155, 3, 2, 0,156, 3, 2, 0,247, 0, 7, 0,157, 3, 12, 0,158, 3, 12, 0,159, 3, + 12, 0,160, 3, 12, 0,161, 3,167, 0, 61, 1,168, 0,162, 3, 67, 0,163, 3, 2, 0,164, 3, 2, 0,165, 3, 2, 0,166, 3, + 2, 0,167, 3, 7, 0,130, 2, 2, 0,168, 3, 2, 0,169, 3,153, 0,170, 3,141, 0,171, 3,141, 0,172, 3, 4, 0,173, 3, + 4, 0,174, 3, 4, 0,175, 3, 4, 0, 70, 0, 12, 0,176, 3, 12, 0,177, 3, 12, 0,178, 3,169, 0, 14, 0,169, 0, 0, 0, +169, 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,179, 3, 2, 0, 17, 0, 2, 0,180, 3, 7, 0,255, 2,170, 0, 12, 0,170, 0, 0, 0,170, 0, 1, 0, + 32, 0, 45, 0, 4, 0,181, 3, 4, 0,156, 2, 4, 0,182, 3, 4, 0, 17, 0, 4, 0,183, 3, 7, 0, 66, 1, 7, 0,184, 3, + 7, 0,185, 3, 7, 0,154, 2,167, 0, 40, 0, 4, 0, 19, 0, 2, 0,186, 3, 2, 0,187, 3, 2, 0,244, 2, 2, 0,188, 3, + 2, 0,189, 3, 2, 0,190, 3, 2, 0,191, 3, 2, 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,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, 7, 0,216, 3, 7, 0,217, 3, 7, 0,218, 3, 7, 0,219, 3, 52, 0,165, 0, +171, 0,220, 3, 7, 0,221, 3, 4, 0,193, 2,172, 0, 5, 0, 67, 0,241, 1, 7, 0,222, 3, 7, 0,223, 3, 2, 0, 19, 0, + 2, 0,224, 3,173, 0, 9, 0,173, 0, 0, 0,173, 0, 1, 0, 4, 0,225, 3, 4, 0,226, 3, 4, 0,227, 3, 4, 0, 19, 0, + 4, 0,228, 3, 9, 0,229, 3, 9, 0,230, 3,137, 0, 19, 0,137, 0, 0, 0,137, 0, 1, 0, 4, 0, 19, 0, 4, 0,231, 3, + 4, 0,232, 3, 4, 0,233, 3, 4, 0,234, 3, 4, 0,235, 3, 4, 0,236, 3, 4, 0,226, 3, 4, 0,156, 2, 4, 0, 57, 0, + 0, 0,237, 3, 0, 0,238, 3, 0, 0,239, 3, 0, 0,240, 3, 12, 0,241, 3,174, 0,242, 3, 9, 0,243, 3,175, 0, 1, 0, + 7, 0, 43, 2,166, 0, 30, 0, 4, 0, 19, 0, 7, 0,244, 3, 7, 0,245, 3, 7, 0,246, 3, 4, 0,247, 3, 4, 0,248, 3, + 4, 0,249, 3, 4, 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, + 7, 0, 9, 4, 7, 0, 10, 4, 7, 0, 11, 4, 7, 0, 12, 4, 4, 0, 13, 4, 4, 0, 14, 4, 7, 0, 15, 4, 7, 0,136, 3, +168, 0, 54, 0, 4, 0,226, 3, 4, 0, 16, 4,176, 0, 17, 4,177, 0, 18, 4, 0, 0, 37, 0, 0, 0, 19, 4, 2, 0, 20, 4, + 7, 0, 21, 4, 0, 0, 22, 4, 7, 0, 23, 4, 7, 0, 24, 4, 7, 0, 25, 4, 7, 0, 26, 4, 7, 0, 27, 4, 7, 0, 28, 4, + 7, 0, 29, 4, 7, 0, 30, 4, 7, 0, 31, 4, 2, 0, 32, 4, 0, 0, 33, 4, 2, 0, 34, 4, 7, 0, 35, 4, 7, 0, 36, 4, + 0, 0, 37, 4, 4, 0,126, 0, 4, 0, 38, 4, 4, 0, 39, 4, 2, 0, 40, 4, 2, 0, 41, 4,175, 0, 42, 4, 4, 0, 43, 4, + 4, 0, 82, 0, 7, 0, 44, 4, 7, 0, 45, 4, 7, 0, 46, 4, 7, 0, 47, 4, 2, 0, 48, 4, 2, 0, 49, 4, 2, 0, 50, 4, + 2, 0, 51, 4, 2, 0, 52, 4, 2, 0, 53, 4, 2, 0, 54, 4, 2, 0, 55, 4,178, 0, 56, 4, 7, 0, 57, 4, 7, 0, 58, 4, +137, 0, 59, 4, 12, 0, 4, 3,172, 0, 60, 4, 7, 0, 61, 4, 7, 0, 62, 4, 7, 0, 63, 4, 0, 0, 64, 4,153, 0, 49, 0, +152, 0, 65, 4, 2, 0, 17, 0, 2, 0, 66, 4, 2, 0, 67, 4, 2, 0, 68, 4, 7, 0, 69, 4, 2, 0, 70, 4, 2, 0, 71, 4, + 7, 0, 72, 4, 2, 0, 73, 4, 2, 0, 74, 4, 7, 0, 75, 4, 7, 0, 76, 4, 7, 0, 77, 4, 7, 0, 78, 4, 7, 0, 79, 4, + 7, 0, 80, 4, 4, 0, 81, 4, 7, 0, 82, 4, 7, 0, 83, 4, 7, 0, 84, 4, 80, 0, 85, 4, 80, 0, 86, 4, 80, 0, 87, 4, + 0, 0, 88, 4, 7, 0, 89, 4, 7, 0, 90, 4, 36, 0, 80, 0, 2, 0, 91, 4, 0, 0, 92, 4, 0, 0, 93, 4, 7, 0, 94, 4, + 4, 0, 95, 4, 7, 0, 96, 4, 7, 0, 97, 4, 4, 0, 98, 4, 4, 0, 19, 0, 7, 0, 99, 4, 7, 0,100, 4, 7, 0,101, 4, + 84, 0,102, 4, 7, 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, + 4, 0,110, 4,179, 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,111, 4, + 7, 0,112, 4, 7, 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,162, 1, 7, 0,164, 1, 7, 0,163, 1, 7, 0,120, 4, 4, 0,121, 4, 7, 0,122, 4, 7, 0,123, 4, 7, 0,124, 4, + 7, 0,125, 4, 7, 0,126, 4, 7, 0,127, 4, 7, 0,128, 4, 2, 0,129, 4, 2, 0, 69, 1, 2, 0,130, 4, 2, 0,131, 4, + 2, 0,132, 4, 2, 0,133, 4, 2, 0,134, 4, 2, 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, 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,159, 4, 7, 0,160, 4, 7, 0,161, 4, 7, 0,162, 4, 7, 0,163, 4, + 7, 0,164, 4, 2, 0,165, 4, 2, 0,166, 4, 2, 0,167, 4, 2, 0,168, 4, 2, 0,169, 4, 2, 0, 19, 0, 7, 0,170, 4, + 7, 0,171, 4, 36, 0, 80, 0, 51, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, 30, 0,150, 0,180, 0, 8, 0,180, 0, 0, 0, +180, 0, 1, 0, 4, 0,114, 3, 4, 0,172, 4, 4, 0, 19, 0, 2, 0,173, 4, 2, 0,174, 4, 32, 0,164, 0,181, 0, 13, 0, + 9, 0,175, 4, 9, 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,182, 4, + 4, 0,183, 4, 4, 0,184, 4, 4, 0,185, 4, 4, 0, 37, 0, 0, 0,186, 4,182, 0, 5, 0, 9, 0,187, 4, 9, 0,188, 4, + 4, 0,189, 4, 4, 0, 70, 0, 0, 0,190, 4,183, 0, 10, 0, 4, 0,191, 4, 4, 0,192, 4, 4, 0,193, 4, 4, 0,194, 4, + 4, 0,195, 4, 4, 0,196, 4, 4, 0,197, 4, 4, 0,198, 4, 4, 0,199, 4, 4, 0,200, 4,184, 0, 15, 0, 4, 0, 17, 0, + 4, 0,193, 4, 4, 0,201, 4, 4, 0,202, 4, 4, 0,203, 4, 4, 0,204, 4, 7, 0,205, 4, 4, 0,206, 4, 4, 0, 90, 0, + 4, 0,207, 4, 4, 0,208, 4, 4, 0,209, 4, 4, 0,210, 4, 4, 0,211, 4, 26, 0, 30, 0,185, 0, 7, 0, 4, 0,212, 4, + 7, 0,213, 4, 7, 0,214, 4, 7, 0,215, 4, 4, 0,216, 4, 2, 0, 19, 0, 2, 0, 37, 0,186, 0, 11, 0,186, 0, 0, 0, +186, 0, 1, 0, 0, 0, 20, 0, 66, 0,217, 4, 67, 0,218, 4, 4, 0,114, 3, 4, 0,219, 4, 4, 0,220, 4, 4, 0, 37, 0, + 4, 0,221, 4, 4, 0,222, 4,187, 0,135, 0,181, 0,223, 4,182, 0,224, 4,183, 0,225, 4,184, 0,226, 4, 4, 0, 17, 3, + 4, 0,126, 0, 4, 0, 38, 4, 4, 0,227, 4, 4, 0,228, 4, 4, 0,229, 4, 4, 0,230, 4, 2, 0, 19, 0, 2, 0,231, 4, + 7, 0,101, 2, 7, 0,232, 4, 7, 0,233, 4, 7, 0,234, 4, 7, 0,235, 4, 7, 0,236, 4, 2, 0,237, 4, 2, 0,238, 4, + 2, 0,239, 4, 2, 0,240, 4, 2, 0,246, 0, 2, 0,241, 4, 2, 0,242, 4, 2, 0,243, 4, 2, 0,244, 4, 2, 0,245, 4, + 2, 0, 91, 1, 2, 0,106, 0, 2, 0,246, 4, 2, 0,247, 4, 2, 0,248, 4, 2, 0,249, 4, 2, 0,250, 4, 2, 0,251, 4, + 2, 0,252, 4, 2, 0,253, 4, 2, 0,254, 4, 2, 0, 92, 1, 2, 0,255, 4, 2, 0, 0, 5, 2, 0, 1, 5, 2, 0, 2, 5, + 4, 0, 3, 5, 4, 0, 69, 1, 4, 0, 4, 5, 2, 0, 5, 5, 2, 0, 6, 5, 2, 0, 7, 5, 2, 0,121, 1, 2, 0, 8, 5, + 2, 0, 9, 5, 2, 0, 10, 5, 2, 0, 11, 5, 24, 0, 12, 5, 24, 0, 13, 5, 23, 0, 14, 5, 12, 0, 15, 5, 2, 0, 16, 5, + 2, 0, 37, 0, 7, 0, 17, 5, 7, 0, 18, 5, 7, 0, 19, 5, 7, 0, 20, 5, 4, 0, 21, 5, 7, 0, 22, 5, 7, 0, 23, 5, + 7, 0, 24, 5, 7, 0, 25, 5, 2, 0, 26, 5, 2, 0, 27, 5, 2, 0, 28, 5, 2, 0, 29, 5, 2, 0, 30, 5, 2, 0, 31, 5, + 7, 0, 32, 5, 7, 0, 33, 5, 7, 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, 2, 0, 41, 5, 2, 0, 42, 5, 2, 0, 43, 5, 2, 0, 44, 5, 4, 0, 45, 5, 4, 0, 46, 5, 4, 0, 47, 5, + 4, 0, 48, 5, 4, 0, 49, 5, 7, 0, 50, 5, 4, 0, 51, 5, 4, 0, 52, 5, 4, 0, 53, 5, 4, 0, 54, 5, 7, 0, 55, 5, + 7, 0, 56, 5, 7, 0, 57, 5, 7, 0, 58, 5, 7, 0, 59, 5, 7, 0, 60, 5, 7, 0, 61, 5, 7, 0, 62, 5, 7, 0, 63, 5, + 0, 0, 64, 5, 0, 0, 65, 5, 4, 0, 66, 5, 2, 0, 67, 5, 2, 0,238, 1, 0, 0, 68, 5, 7, 0, 69, 5, 7, 0, 70, 5, + 4, 0, 71, 5, 4, 0, 72, 5, 7, 0, 73, 5, 7, 0, 74, 5, 2, 0, 75, 5, 2, 0, 76, 5, 7, 0, 77, 5, 2, 0, 78, 5, + 2, 0, 79, 5, 4, 0, 80, 5, 2, 0, 81, 5, 2, 0, 82, 5, 2, 0, 83, 5, 2, 0, 84, 5, 7, 0, 85, 5, 7, 0, 70, 0, + 42, 0, 86, 5, 0, 0, 87, 5,188, 0, 9, 0,188, 0, 0, 0,188, 0, 1, 0, 0, 0, 20, 0, 2, 0, 88, 5, 2, 0, 89, 5, + 2, 0, 90, 5, 2, 0, 43, 0, 7, 0, 91, 5, 7, 0, 70, 0,189, 0, 7, 0, 2, 0,210, 2, 2, 0, 69, 1, 2, 0,109, 0, + 2, 0, 92, 5, 7, 0, 93, 5, 7, 0, 70, 0, 42, 0, 94, 5,190, 0, 5, 0, 7, 0, 95, 5, 0, 0, 17, 0, 0, 0, 43, 0, + 0, 0, 70, 0, 0, 0,238, 1,191, 0, 28, 0, 7, 0,127, 4, 7, 0,128, 4, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0, 96, 5, + 2, 0,136, 1, 2, 0,130, 4, 2, 0,131, 4, 2, 0,132, 4, 2, 0,133, 4, 2, 0,134, 4, 2, 0,135, 4,190, 0, 97, 5, + 2, 0,237, 4, 2, 0,238, 4, 2, 0,239, 4, 2, 0,240, 4, 2, 0,246, 0, 2, 0,241, 4, 2, 0, 98, 5, 2, 0,242, 4, +189, 0, 99, 5, 2, 0,100, 5, 2, 0,244, 4, 2, 0,247, 4, 2, 0,248, 4, 7, 0,101, 5, 7, 0, 43, 0,192, 0, 6, 0, +192, 0, 0, 0,192, 0, 1, 0, 4, 0,225, 3, 0, 0,237, 3, 4, 0, 19, 0, 32, 0,102, 5,193, 0, 6, 0,194, 0,103, 5, + 4, 0,104, 5, 4, 0,105, 5, 9, 0,106, 5, 0, 0,107, 5, 4, 0, 90, 0,195, 0, 6, 0,193, 0,108, 5, 2, 0, 19, 0, + 2, 0, 37, 0, 2, 0,109, 5, 2, 0,110, 5, 9, 0,111, 5,196, 0, 6, 0, 2, 0,106, 0, 2, 0,221, 2, 2, 0,231, 3, + 2, 0,112, 5, 4, 0, 19, 0, 4, 0, 37, 0,197, 0, 14, 0, 2, 0, 19, 0, 2, 0,113, 5, 2, 0,114, 5, 2, 0,115, 5, +196, 0,116, 5, 9, 0,111, 5, 7, 0,117, 5, 7, 0, 57, 0, 4, 0,118, 5, 4, 0,119, 5, 4, 0,120, 5, 4, 0,121, 5, + 46, 0,134, 0, 32, 0,164, 0,198, 0, 4, 0,198, 0, 0, 0,198, 0, 1, 0, 0, 0,122, 5, 7, 0,123, 5,199, 0, 6, 0, +193, 0,108, 5, 7, 0,124, 5, 4, 0, 90, 0, 0, 0,125, 5, 0, 0,126, 5, 0, 0,190, 2,200, 0, 7, 0,193, 0,108, 5, + 2, 0, 19, 0, 2, 0, 37, 0, 4, 0, 36, 0, 4, 0,127, 5, 86, 0,128, 5, 9, 0,111, 5,201, 0, 74, 0,200, 0,129, 5, +200, 0,130, 5,199, 0, 81, 3, 7, 0,131, 5, 2, 0,132, 5, 2, 0,133, 5, 7, 0,134, 5, 7, 0,135, 5, 2, 0,231, 3, + 2, 0,136, 5, 7, 0,137, 5, 7, 0,138, 5, 7, 0,139, 5, 2, 0,140, 5, 2, 0,118, 5, 2, 0,141, 5, 2, 0,142, 5, + 2, 0,143, 5, 2, 0,144, 5, 7, 0,145, 5, 7, 0,146, 5, 7, 0,147, 5, 2, 0,148, 5, 2, 0,149, 5, 2, 0,150, 5, + 2, 0,151, 5, 2, 0,152, 5, 2, 0,153, 5, 2, 0,154, 5,195, 0,155, 5,197, 0,156, 5, 7, 0,157, 5, 7, 0,158, 5, + 7, 0,159, 5, 2, 0,160, 5, 2, 0,161, 5, 0, 0,162, 5, 0, 0,163, 5, 0, 0,164, 5, 0, 0,165, 5, 0, 0,166, 5, + 0, 0,167, 5, 2, 0,168, 5, 7, 0,169, 5, 7, 0,170, 5, 7, 0,171, 5, 7, 0,172, 5, 7, 0,173, 5, 7, 0,174, 5, + 7, 0,175, 5, 7, 0,176, 5, 7, 0,177, 5, 7, 0,178, 5, 2, 0,179, 5, 0, 0,180, 5, 0, 0,181, 5, 0, 0,182, 5, + 0, 0,183, 5, 32, 0,184, 5, 0, 0,185, 5, 0, 0,186, 5, 0, 0,187, 5, 0, 0,188, 5, 0, 0,189, 5, 0, 0,190, 5, + 0, 0,191, 5, 0, 0,192, 5, 2, 0,193, 5, 2, 0,194, 5, 2, 0,195, 5, 2, 0,196, 5, 2, 0,197, 5, 4, 0,198, 5, + 4, 0,199, 5,202, 0, 8, 0, 4, 0,200, 5, 4, 0,201, 5, 4, 0,202, 5, 4, 0,203, 5, 4, 0,204, 5, 4, 0,205, 5, + 4, 0, 54, 0, 4, 0,125, 2,203, 0, 3, 0, 7, 0,206, 5, 2, 0,207, 5, 2, 0, 19, 0,204, 0, 2, 0, 7, 0,208, 5, + 4, 0, 19, 0, 46, 0, 38, 0, 27, 0, 31, 0, 39, 0, 75, 0, 32, 0,102, 5,179, 0,209, 5, 46, 0,210, 5, 47, 0,238, 0, + 12, 0,211, 5,180, 0,212, 5, 32, 0,213, 5, 7, 0,214, 5, 7, 0,215, 5, 7, 0,216, 5, 7, 0,217, 5, 4, 0,114, 3, + 2, 0, 19, 0, 2, 0, 63, 1, 60, 0, 58, 1,205, 0,218, 5,201, 0,219, 5,206, 0,220, 5,187, 0,182, 0,185, 0,221, 5, + 12, 0,100, 0, 12, 0,222, 5, 12, 0,223, 5,207, 0,224, 5, 2, 0,225, 5, 2, 0,226, 5, 2, 0,247, 0, 2, 0,227, 5, + 4, 0,228, 5, 4, 0,229, 5, 12, 0,230, 5,190, 0, 97, 5,191, 0,231, 5,203, 0,232, 5,163, 0, 94, 3,204, 0,233, 5, +208, 0, 11, 0,208, 0, 0, 0,208, 0, 1, 0, 47, 0,238, 0, 45, 0, 57, 1, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0,106, 0, + 7, 0,234, 5, 2, 0,235, 5, 2, 0, 19, 0, 7, 0, 70, 0,209, 0, 39, 0, 7, 0,236, 5, 7, 0,237, 5, 7, 0,238, 5, + 7, 0,239, 5, 7, 0,240, 5, 7, 0,241, 5, 7, 0,242, 5, 7, 0,243, 5, 7, 0,244, 5, 7, 0, 76, 1, 7, 0,245, 5, + 7, 0,246, 5, 7, 0,247, 5, 7, 0,248, 5, 7, 0,171, 0, 2, 0,249, 5, 2, 0,250, 5, 2, 0,251, 5, 2, 0, 37, 0, + 2, 0,252, 5, 2, 0,253, 5, 2, 0,254, 5, 2, 0,235, 5, 7, 0,255, 5, 7, 0, 0, 6, 71, 0, 1, 6,163, 0, 94, 3, +209, 0, 2, 6,210, 0, 3, 6,211, 0, 4, 6,212, 0, 5, 6,213, 0, 6, 6,214, 0, 7, 6, 7, 0, 8, 6, 2, 0, 9, 6, + 2, 0, 10, 6, 7, 0, 11, 6, 7, 0, 12, 6, 7, 0, 13, 6,215, 0, 55, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 14, 6, + 4, 0, 15, 6, 7, 0, 16, 6, 2, 0, 17, 6, 7, 0,244, 5, 7, 0, 76, 1, 7, 0, 43, 0, 4, 0, 18, 6, 2, 0,254, 5, + 2, 0,235, 5, 32, 0,102, 5, 32, 0, 19, 6, 12, 0, 20, 6,208, 0, 21, 6,215, 0, 2, 6, 0, 0, 22, 6, 4, 0,114, 3, + 4, 0, 23, 6, 2, 0, 24, 6, 2, 0, 70, 0, 2, 0, 25, 6, 2, 0, 26, 6, 2, 0,238, 1, 2, 0, 19, 0, 2, 0, 28, 2, + 2, 0, 27, 6, 7, 0,112, 0, 7, 0, 28, 6, 7, 0, 11, 6, 7, 0, 13, 6, 7, 0, 29, 6, 7, 0, 30, 6, 7, 0,171, 0, + 7, 0,214, 5, 2, 0, 31, 6, 2, 0,121, 1, 2, 0, 32, 6, 2, 0, 33, 6, 2, 0, 34, 6, 2, 0, 35, 6, 2, 0, 36, 6, + 2, 0, 37, 6, 2, 0, 38, 6, 2, 0,251, 5, 4, 0, 39, 6, 12, 0, 40, 6, 2, 0, 41, 6, 2, 0,139, 2, 2, 0, 42, 6, + 0, 0, 43, 6, 0, 0, 44, 6, 9, 0, 45, 6,163, 0, 94, 3,217, 0, 25, 0, 24, 0, 36, 0, 24, 0, 64, 0, 23, 0, 46, 6, + 23, 0, 47, 6, 23, 0, 48, 6, 7, 0, 49, 6, 7, 0, 50, 6, 7, 0, 51, 6, 7, 0, 52, 6, 2, 0, 53, 6, 2, 0, 54, 6, + 2, 0, 55, 6, 2, 0, 56, 6, 2, 0, 57, 6, 2, 0, 19, 0, 2, 0, 58, 6, 2, 0, 59, 6, 2, 0, 60, 6, 2, 0, 61, 6, + 2, 0, 62, 6, 2, 0, 26, 6, 7, 0, 63, 6, 7, 0, 64, 6, 4, 0, 65, 6, 4, 0, 66, 6,216, 0, 6, 0,216, 0, 0, 0, +216, 0, 1, 0, 12, 0, 14, 6, 4, 0, 15, 6, 7, 0, 16, 6, 2, 0, 17, 6,218, 0, 8, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 14, 6, 4, 0, 15, 6, 7, 0, 16, 6, 2, 0, 17, 6,219, 0, 67, 6, 46, 0,134, 0,220, 0, 14, 0,216, 0, 0, 0, +216, 0, 1, 0, 12, 0, 14, 6, 4, 0, 15, 6, 7, 0, 16, 6, 2, 0, 17, 6,217, 0, 68, 6,221, 0, 69, 6, 12, 0, 70, 6, + 2, 0, 69, 1, 2, 0, 71, 6, 4, 0, 19, 0, 7, 0, 72, 6, 4, 0, 26, 6,222, 0, 20, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 14, 6, 4, 0, 15, 6, 7, 0, 16, 6, 2, 0, 17, 6,210, 0, 3, 6,217, 0, 68, 6, 2, 0, 73, 6, 2, 0, 74, 6, + 2, 0, 75, 6, 2, 0, 76, 6, 2, 0, 58, 6, 2, 0, 77, 6, 0, 0, 19, 0, 0, 0,136, 1, 9, 0, 65, 2, 4, 0, 78, 6, + 4, 0, 79, 6, 27, 0, 80, 6,223, 0, 18, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 14, 6, 4, 0, 15, 6, 7, 0, 16, 6, + 2, 0, 17, 6,217, 0, 68, 6, 7, 0, 89, 2, 7, 0, 90, 2, 2, 0, 73, 6, 2, 0, 81, 6, 2, 0, 82, 6, 2, 0, 83, 6, + 4, 0, 19, 0, 7, 0, 84, 6, 4, 0,235, 5, 4, 0, 37, 0,163, 0, 94, 3,224, 0, 16, 0, 0, 0, 85, 6, 0, 0, 86, 6, + 0, 0, 87, 6, 0, 0, 88, 6, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 89, 6, 2, 0, 90, 6, 2, 0,181, 1, 2, 0, 91, 6, + 4, 0, 92, 6, 4, 0, 93, 6, 2, 0, 94, 6, 2, 0, 95, 6, 0, 0, 96, 6, 0, 0, 97, 6,225, 0, 16, 0,216, 0, 0, 0, +216, 0, 1, 0, 12, 0, 14, 6, 4, 0, 15, 6, 4, 0, 37, 0,224, 0, 98, 6,226, 0, 99, 6, 12, 0,100, 6, 12, 0,101, 6, +227, 0,102, 6,214, 0,103, 6,228, 0,104, 6, 2, 0,105, 6, 2, 0,106, 6, 2, 0,107, 6, 2, 0, 70, 0,229, 0, 17, 0, +216, 0, 0, 0,216, 0, 1, 0, 12, 0, 14, 6, 4, 0, 15, 6, 7, 0, 16, 6, 2, 0, 17, 6,217, 0, 68, 6, 12, 0,108, 6, +230, 0,109, 6, 0, 0,110, 6,231, 0,111, 6, 4, 0,112, 6, 4, 0,113, 6, 2, 0, 19, 0, 2, 0,114, 6, 2, 0,115, 6, + 2, 0, 37, 0,232, 0, 30, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 14, 6, 4, 0, 15, 6, 7, 0, 16, 6, 2, 0, 17, 6, + 47, 0,229, 2, 45, 0, 57, 1, 63, 0,116, 6, 2, 0,133, 0, 2, 0,117, 6, 2, 0, 70, 0, 2, 0,118, 6, 4, 0, 19, 0, + 2, 0,119, 6, 2, 0,120, 6, 2, 0,121, 6, 2, 0,238, 1, 0, 0,122, 6, 0, 0,123, 6, 0, 0,124, 6, 0, 0, 26, 6, + 7, 0, 89, 2, 7, 0, 90, 2, 7, 0, 84, 6, 7, 0,121, 1, 7, 0,125, 6, 7, 0,126, 6,163, 0, 94, 3,233, 0,127, 6, +234, 0, 11, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 14, 6, 4, 0, 15, 6, 7, 0, 16, 6, 2, 0, 17, 6, 2, 0, 71, 6, + 2, 0, 19, 0, 4, 0, 37, 0,221, 0, 69, 6,217, 0, 68, 6,235, 0, 27, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 14, 6, + 4, 0, 15, 6, 7, 0, 16, 6, 2, 0, 17, 6, 42, 0,128, 6, 4, 0,129, 6, 4, 0,130, 6, 2, 0, 90, 0, 2, 0,133, 0, + 2, 0,131, 6, 0, 0,132, 6, 0, 0,133, 6, 4, 0,134, 6, 4, 0,135, 6, 4, 0,136, 6, 4, 0,137, 6, 2, 0,138, 6, + 2, 0,139, 6, 7, 0,140, 6, 23, 0,141, 6, 23, 0,142, 6, 4, 0,143, 6, 4, 0,144, 6, 0, 0,145, 6, 0, 0,146, 6, +236, 0, 10, 0, 27, 0, 31, 0, 9, 0,147, 6, 9, 0,148, 6, 9, 0,149, 6, 9, 0,150, 6, 9, 0,151, 6, 4, 0, 90, 0, + 4, 0,152, 6, 0, 0,153, 6, 0, 0,154, 6,237, 0, 10, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 14, 6, 4, 0, 15, 6, + 7, 0, 16, 6,236, 0,155, 6, 2, 0, 90, 0, 2, 0,133, 0, 4, 0, 43, 0, 9, 0,156, 6,238, 0, 8, 0,216, 0, 0, 0, +216, 0, 1, 0, 12, 0, 14, 6, 4, 0, 15, 6, 7, 0, 16, 6,217, 0, 68, 6, 4, 0, 19, 0, 4, 0,157, 6,239, 0, 23, 0, +216, 0, 0, 0,216, 0, 1, 0, 12, 0, 14, 6, 4, 0, 15, 6, 7, 0, 16, 6, 2, 0, 17, 6,217, 0, 68, 6, 27, 0,158, 6, + 27, 0, 81, 0, 2, 0, 19, 0, 2, 0,133, 0, 7, 0,159, 6, 9, 0,160, 6, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0,161, 6, + 7, 0,162, 6, 60, 0, 58, 1, 60, 0,163, 6, 4, 0,164, 6, 2, 0,165, 6, 2, 0, 37, 0,163, 0, 94, 3,240, 0, 10, 0, +216, 0, 0, 0,216, 0, 1, 0, 12, 0, 14, 6, 4, 0, 15, 6, 7, 0, 16, 6, 2, 0, 17, 6, 2, 0, 19, 0, 2, 0,123, 3, + 4, 0, 37, 0,163, 0, 94, 3,241, 0, 42, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 14, 6, 4, 0, 15, 6, 7, 0, 16, 6, + 2, 0, 17, 6,217, 0, 68, 6,226, 0, 99, 6, 0, 0, 85, 6, 0, 0, 86, 6, 0, 0, 87, 6, 2, 0, 17, 0, 2, 0, 95, 6, + 2, 0, 19, 0, 2, 0, 89, 6, 9, 0,160, 6, 4, 0, 92, 6, 4, 0,166, 6, 4, 0,167, 6, 4, 0, 93, 6, 23, 0,168, 6, + 23, 0,169, 6, 7, 0,170, 6, 7, 0,171, 6, 7, 0,172, 6, 7, 0,159, 6, 2, 0,173, 6, 2, 0,237, 0, 2, 0,181, 1, + 2, 0, 91, 6, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0,174, 6, 2, 0,175, 6, 9, 0,176, 6, 9, 0,177, 6, 9, 0,178, 6, + 9, 0,179, 6, 9, 0,180, 6, 2, 0,181, 6, 0, 0, 97, 6, 57, 0,182, 6,242, 0, 7, 0,242, 0, 0, 0,242, 0, 1, 0, + 4, 0,183, 6, 4, 0, 23, 0, 0, 0, 84, 0, 4, 0,184, 6, 4, 0, 17, 0,243, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 14, 6, 4, 0, 15, 6, 7, 0, 16, 6, 2, 0, 17, 6, 4, 0, 17, 0, 4, 0,185, 6, 4, 0, 19, 0, 4, 0,131, 6, + 12, 0,186, 6, 12, 0,187, 6, 0, 0,188, 6, 0, 0,189, 6, 4, 0,190, 6, 4, 0,191, 6,244, 0, 5, 0,216, 0, 0, 0, +216, 0, 1, 0, 12, 0, 14, 6, 4, 0, 15, 6, 4, 0, 37, 0,245, 0, 7, 0,245, 0, 0, 0,245, 0, 1, 0, 0, 0,192, 6, + 2, 0,193, 6, 2, 0,194, 6, 2, 0,195, 6, 2, 0, 37, 0,246, 0, 12, 0, 2, 0,194, 6, 2, 0,196, 6, 2, 0,197, 6, + 0, 0,190, 2, 2, 0,198, 6, 2, 0,199, 6, 2, 0,200, 6, 2, 0,201, 6, 2, 0,202, 6, 2, 0, 58, 6, 7, 0,203, 6, + 7, 0,204, 6,247, 0, 18, 0,247, 0, 0, 0,247, 0, 1, 0, 0, 0,237, 3,246, 0,205, 6,246, 0,206, 6,246, 0,207, 6, +246, 0,208, 6, 7, 0,209, 6, 2, 0,210, 6, 2, 0,211, 6, 2, 0,212, 6, 2, 0,213, 6, 2, 0,214, 6, 2, 0,215, 6, + 2, 0,216, 6, 2, 0,217, 6, 2, 0,218, 6, 2, 0,219, 6,248, 0, 10, 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, 2, 0,226, 6, 2, 0,227, 6, 2, 0,228, 6, 2, 0, 37, 0,249, 0, 8, 0, + 0, 0,229, 6, 0, 0,230, 6, 0, 0,231, 6, 0, 0,232, 6, 0, 0,233, 6, 0, 0,234, 6, 7, 0,234, 5, 7, 0, 37, 0, +250, 0, 17, 0,248, 0,235, 6,248, 0,236, 6,248, 0,237, 6,248, 0,238, 6,248, 0,239, 6,248, 0,240, 6,248, 0,241, 6, +248, 0,242, 6,248, 0,243, 6,248, 0,244, 6,248, 0,245, 6,248, 0,246, 6,248, 0,247, 6,248, 0,248, 6,248, 0,249, 6, +249, 0,250, 6, 0, 0,251, 6,251, 0, 75, 0, 0, 0,252, 6, 0, 0,253, 6, 0, 0,224, 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, 56, 7, 0, 0, 57, 7, 0, 0, 58, 7, 0, 0, 59, 7, 0, 0, 60, 7, 0, 0, 61, 7, 0, 0, 62, 7, 0, 0, 63, 7, + 0, 0, 64, 7, 0, 0, 65, 7, 0, 0, 66, 7, 0, 0, 67, 7, 0, 0, 68, 7, 0, 0, 69, 7,252, 0, 5, 0, 0, 0, 70, 7, + 0, 0, 20, 7, 0, 0, 22, 7, 2, 0, 19, 0, 2, 0, 37, 0,253, 0, 25, 0,253, 0, 0, 0,253, 0, 1, 0, 0, 0, 20, 0, +250, 0, 71, 7,251, 0, 72, 7,251, 0, 73, 7,251, 0, 74, 7,251, 0, 75, 7,251, 0, 76, 7,251, 0, 77, 7,251, 0, 78, 7, +251, 0, 79, 7,251, 0, 80, 7,251, 0, 81, 7,251, 0, 82, 7,251, 0, 83, 7,251, 0, 84, 7,251, 0, 85, 7,251, 0, 86, 7, +251, 0, 87, 7,251, 0, 88, 7,251, 0, 89, 7,252, 0, 90, 7, 4, 0, 91, 7, 4, 0, 37, 0,254, 0, 5, 0, 4, 0, 19, 0, + 4, 0, 37, 0, 7, 0,138, 2, 7, 0, 92, 7, 7, 0, 43, 2,255, 0, 77, 0, 4, 0, 19, 0, 4, 0, 93, 7, 4, 0, 94, 7, + 0, 0, 95, 7, 0, 0, 96, 7, 0, 0, 97, 7, 0, 0, 98, 7, 0, 0, 99, 7, 0, 0,100, 7, 0, 0,101, 7, 0, 0,102, 7, + 0, 0,103, 7, 4, 0,104, 7, 4, 0, 37, 0, 2, 0,105, 7, 2, 0,106, 7, 4, 0,107, 7, 4, 0,108, 7, 4, 0,109, 7, + 4, 0,110, 7, 2, 0,111, 7, 2, 0,112, 7, 4, 0,113, 7, 4, 0,114, 7, 4, 0,115, 7, 4, 0,116, 7, 4, 0,117, 7, + 4, 0,186, 6, 4, 0,118, 7, 2, 0,119, 7, 2, 0,120, 7, 2, 0,121, 7, 2, 0,122, 7, 12, 0,123, 7, 12, 0,124, 7, + 12, 0,125, 7, 12, 0,126, 7, 0, 0,127, 7, 2, 0,128, 7, 2, 0,129, 7, 2, 0,130, 7, 2, 0,131, 7, 2, 0,132, 7, + 2, 0,133, 7, 2, 0,134, 7, 2, 0,135, 7,254, 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, 2, 0,143, 7, 2, 0,144, 7, 4, 0,145, 7, 4, 0,146, 7, 2, 0,147, 7, 2, 0,148, 7, + 2, 0,149, 7, 2, 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,158, 7, 2, 0,159, 7, 2, 0,160, 7, 0, 0,161, 7, 0, 0,162, 7, 7, 0,163, 7, 2, 0,160, 5, + 2, 0,161, 5, 55, 0,164, 7,219, 0, 21, 0, 27, 0, 31, 0, 12, 0,165, 7, 12, 0,166, 7, 12, 0,167, 7, 12, 0, 14, 6, + 46, 0,134, 0, 46, 0,168, 7, 2, 0,169, 7, 2, 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,176, 7, 2, 0,177, 7, 4, 0, 70, 0,214, 0,178, 7, 9, 0,179, 7, 2, 0,180, 7, + 0, 1, 5, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1,181, 7, 13, 0,182, 7, 4, 0, 19, 0, 1, 1, 7, 0, 1, 1, 0, 0, + 1, 1, 1, 0, 0, 1,183, 7, 0, 1,184, 7, 2, 0, 13, 5, 2, 0, 19, 0, 4, 0, 37, 0, 2, 1, 25, 0, 2, 1, 0, 0, + 2, 1, 1, 0, 3, 1,185, 7, 4, 1,104, 6, 0, 0,186, 7, 0, 0,187, 7, 0, 0,188, 7, 2, 0,189, 7, 2, 0,190, 7, + 2, 0,191, 7, 2, 0,192, 7, 2, 0,193, 7, 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,194, 7, 2, 0,195, 7, 2, 0,196, 7, + 4, 0,197, 7, 2, 1,198, 7, 9, 0,199, 7, 4, 0,200, 7, 4, 0,201, 7, 4, 0,202, 7, 4, 0,203, 7, 0, 0,204, 7, + 5, 1, 22, 0, 5, 1, 0, 0, 5, 1, 1, 0, 0, 1,183, 7, 0, 1,184, 7, 0, 1,205, 7, 0, 1,206, 7,219, 0,207, 7, + 23, 0, 52, 0, 0, 0, 15, 6, 0, 0,208, 7, 2, 0, 59, 6, 2, 0, 60, 6, 2, 0,209, 7, 2, 0, 37, 0, 2, 0,172, 7, + 2, 0,184, 6, 2, 0, 19, 0, 6, 1,185, 7, 12, 0,210, 7, 12, 0, 14, 6, 12, 0,211, 7, 12, 0,212, 7, 7, 1, 21, 0, + 7, 1, 0, 0, 7, 1, 1, 0,217, 0, 68, 6, 23, 0,213, 7, 23, 0,214, 7, 2, 0, 59, 6, 2, 0, 60, 6, 2, 0,215, 7, + 2, 0,216, 7, 2, 0,217, 7, 2, 0, 19, 0, 7, 0, 85, 2, 2, 0,171, 7, 2, 0,175, 7, 4, 0, 43, 0, 8, 1,185, 7, + 12, 0,218, 7, 12, 0,219, 7, 12, 0,211, 7, 0, 0,220, 7, 9, 0,221, 7, 9, 1, 12, 0, 0, 0,222, 7, 2, 0,223, 7, + 2, 0,224, 7, 2, 0,225, 7, 2, 0,226, 7, 2, 0, 0, 5, 2, 0,251, 4,219, 0,227, 7, 46, 0,228, 7, 4, 0,229, 7, + 4, 0,230, 7, 0, 0, 35, 0, 10, 1, 1, 0, 0, 0,231, 7, 11, 1, 8, 0, 57, 0,232, 7, 57, 0,233, 7, 11, 1,234, 7, + 11, 1,235, 7, 11, 1,236, 7, 2, 0,129, 0, 2, 0, 19, 0, 4, 0,237, 7, 12, 1, 4, 0, 4, 0,129, 6, 4, 0,238, 7, + 4, 0,134, 6, 4, 0,239, 7, 13, 1, 2, 0, 4, 0,240, 7, 4, 0,241, 7, 14, 1, 7, 0, 7, 0,242, 7, 7, 0,243, 7, + 7, 0,244, 7, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,122, 4, 7, 0,245, 7, 15, 1, 6, 0, 0, 0,246, 7, 0, 0, 87, 6, + 49, 0,137, 0, 2, 0,106, 0, 2, 0,255, 4, 4, 0, 37, 0, 16, 1, 21, 0, 16, 1, 0, 0, 16, 1, 1, 0, 4, 0, 57, 0, + 4, 0, 23, 0, 4, 0, 28, 0, 4, 0,247, 7, 4, 0,248, 7, 4, 0,249, 7, 10, 1,250, 7, 0, 0,246, 7, 4, 0,251, 7, + 4, 0,252, 7, 15, 1, 88, 3, 12, 1,253, 7, 13, 1,254, 7, 14, 1,255, 7, 11, 1, 0, 8, 11, 1, 1, 8, 11, 1, 2, 8, + 57, 0, 3, 8, 57, 0, 4, 8, 17, 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, 5, 8, 9, 0, 6, 8, 9, 0,232, 0, 9, 0,234, 0, 18, 1, 43, 0, + 18, 1, 0, 0, 18, 1, 1, 0, 9, 0, 7, 8, 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, 8, 8, 4, 0, 9, 8, 4, 0,248, 7, 4, 0,249, 7, 4, 0, 10, 8, 4, 0,246, 0, 4, 0, 11, 8, + 4, 0, 12, 8, 7, 0, 13, 8, 7, 0, 14, 8, 4, 0,126, 0, 4, 0, 15, 8, 16, 1, 16, 8, 36, 0, 80, 0, 46, 0,134, 0, + 49, 0,137, 0, 7, 0, 17, 8, 7, 0, 18, 8, 17, 1, 59, 1, 18, 1, 19, 8, 18, 1, 20, 8, 18, 1, 21, 8, 12, 0, 22, 8, + 19, 1, 23, 8, 20, 1, 24, 8, 7, 0, 25, 8, 7, 0, 26, 8, 4, 0, 27, 8, 7, 0, 28, 8, 9, 0, 29, 8, 4, 0, 30, 8, + 4, 0, 31, 8, 4, 0, 32, 8, 7, 0, 33, 8, 21, 1, 4, 0, 21, 1, 0, 0, 21, 1, 1, 0, 12, 0, 34, 8, 18, 1, 35, 8, +205, 0, 6, 0, 12, 0, 36, 8, 12, 0, 22, 8, 12, 0, 37, 8, 18, 1, 38, 8, 0, 0, 39, 8, 0, 0, 40, 8, 22, 1, 4, 0, + 7, 0, 41, 8, 7, 0,109, 0, 2, 0, 42, 8, 2, 0, 43, 8, 23, 1, 6, 0, 7, 0, 44, 8, 7, 0, 45, 8, 7, 0, 46, 8, + 7, 0, 47, 8, 4, 0, 48, 8, 4, 0, 49, 8, 24, 1, 13, 0, 7, 0, 50, 8, 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, 57, 8, 7, 0, 58, 8, 7, 0, 59, 8, 4, 0,233, 2, 4, 0, 60, 8, + 4, 0, 61, 8, 25, 1, 2, 0, 7, 0, 95, 5, 7, 0, 37, 0, 26, 1, 5, 0, 7, 0, 62, 8, 7, 0, 63, 8, 4, 0, 90, 0, + 4, 0,191, 2, 4, 0, 64, 8, 27, 1, 6, 0, 27, 1, 0, 0, 27, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 65, 8, + 2, 0, 57, 0, 28, 1, 8, 0, 28, 1, 0, 0, 28, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 65, 8, 2, 0, 57, 0, + 7, 0, 23, 0, 7, 0,126, 0, 29, 1, 45, 0, 29, 1, 0, 0, 29, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 65, 8, + 2, 0,242, 0, 2, 0, 32, 4, 2, 0, 66, 8, 7, 0, 67, 8, 7, 0, 89, 0, 7, 0,246, 2, 4, 0, 68, 8, 4, 0, 82, 0, + 4, 0,193, 2, 7, 0, 69, 8, 7, 0, 70, 8, 7, 0, 71, 8, 7, 0, 72, 8, 7, 0, 73, 8, 7, 0, 74, 8, 7, 0,243, 2, + 7, 0, 56, 1, 7, 0, 75, 8, 7, 0, 76, 8, 7, 0, 37, 0, 7, 0, 77, 8, 7, 0, 78, 8, 7, 0, 79, 8, 2, 0, 80, 8, + 2, 0, 81, 8, 2, 0, 82, 8, 2, 0, 83, 8, 2, 0, 84, 8, 2, 0, 85, 8, 2, 0, 86, 8, 2, 0, 87, 8, 2, 0, 28, 2, + 2, 0, 88, 8, 2, 0, 25, 2, 2, 0, 89, 8, 0, 0, 90, 8, 0, 0, 91, 8, 7, 0,240, 0, 30, 1, 92, 8, 67, 0,241, 1, + 31, 1, 16, 0, 31, 1, 0, 0, 31, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 65, 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, 93, 8, 7, 0,243, 2, 7, 0,245, 2, + 7, 0,246, 2,231, 0, 5, 0, 2, 0, 17, 0, 2, 0,237, 7, 2, 0, 19, 0, 2, 0, 94, 8, 27, 0,158, 6,230, 0, 3, 0, + 4, 0, 69, 0, 4, 0, 95, 8,231, 0, 2, 0, 32, 1, 7, 0, 32, 1, 0, 0, 32, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, + 2, 0, 19, 0, 4, 0, 22, 0, 9, 0, 96, 8, 33, 1, 5, 0, 0, 0, 20, 0, 7, 0, 76, 1, 7, 0, 97, 8, 4, 0, 98, 8, + 4, 0, 37, 0, 34, 1, 4, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 43, 0, 2, 0, 70, 0, 35, 1, 4, 0, 0, 0, 20, 0, + 66, 0, 99, 8, 7, 0, 76, 1, 7, 0, 37, 0, 36, 1, 6, 0, 2, 0,100, 8, 2, 0,101, 8, 2, 0, 17, 0, 2, 0,102, 8, + 0, 0,103, 8, 0, 0,104, 8, 37, 1, 5, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0,105, 8, 0, 0,106, 8, + 38, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 39, 1, 4, 0, 2, 0,107, 8, 2, 0,108, 8, 2, 0, 19, 0, + 2, 0, 37, 0, 40, 1, 6, 0, 0, 0, 20, 0, 0, 0,109, 8, 2, 0,110, 8, 2, 0,243, 2, 2, 0, 69, 1, 2, 0, 70, 0, + 41, 1, 5, 0, 0, 0, 20, 0, 7, 0,109, 0, 7, 0,124, 4, 2, 0, 19, 0, 2, 0,205, 2, 42, 1, 3, 0, 0, 0, 20, 0, + 4, 0,193, 2, 4, 0,107, 8, 43, 1, 7, 0, 0, 0, 20, 0, 7, 0,124, 4, 0, 0,111, 8, 0, 0,112, 8, 2, 0, 69, 1, + 2, 0, 43, 0, 4, 0,113, 8, 44, 1, 4, 0, 0, 0,114, 8, 0, 0,115, 8, 4, 0, 17, 0, 7, 0,209, 2, 45, 1, 3, 0, + 32, 0,116, 8, 0, 0,117, 8, 0, 0,118, 8, 46, 1, 18, 0, 46, 1, 0, 0, 46, 1, 1, 0, 2, 0, 17, 0, 2, 0,119, 8, + 2, 0, 19, 0, 2, 0,120, 8, 2, 0,121, 8, 2, 0,122, 8, 2, 0, 43, 0, 2, 0, 70, 0, 0, 0, 20, 0, 9, 0, 2, 0, + 47, 1,123, 8, 32, 0, 45, 0, 2, 0,112, 5, 2, 0, 25, 8, 2, 0,124, 8, 2, 0, 37, 0, 48, 1, 11, 0, 0, 0, 20, 0, + 0, 0, 17, 0, 0, 0,125, 8, 2, 0, 19, 0, 2, 0,205, 2, 2, 0,126, 8, 4, 0,127, 8, 4, 0,128, 8, 4, 0,129, 8, + 4, 0,130, 8, 4, 0,131, 8, 49, 1, 1, 0, 0, 0,132, 8, 50, 1, 4, 0, 42, 0,128, 6, 0, 0,133, 8, 4, 0, 69, 1, + 4, 0, 19, 0, 47, 1, 18, 0, 47, 1, 0, 0, 47, 1, 1, 0, 47, 1,134, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,135, 8, + 2, 0,122, 8, 2, 0,119, 8, 2, 0,136, 8, 2, 0, 70, 0, 2, 0,238, 1, 0, 0, 20, 0, 9, 0, 2, 0, 51, 1,123, 8, + 46, 1,137, 8, 2, 0, 15, 0, 2, 0,138, 8, 4, 0,139, 8, 52, 1, 3, 0, 4, 0,219, 2, 4, 0, 37, 0, 32, 0, 45, 0, + 53, 1, 12, 0,161, 0,140, 8, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 67, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,141, 8, + 2, 0,142, 8, 2, 0,143, 8, 2, 0,144, 8, 2, 0,145, 8, 7, 0,146, 8, 54, 1, 13, 0, 2, 0, 19, 0, 2, 0,147, 8, + 4, 0, 67, 8, 4, 0, 89, 0, 2, 0,148, 8, 7, 0,246, 3, 7, 0,149, 8, 19, 1, 23, 8, 55, 1,150, 8, 2, 0, 17, 0, + 2, 0,151, 8, 2, 0,152, 8, 2, 0,153, 8, 56, 1, 11, 0, 4, 0,219, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 45, 0, + 80, 0,154, 8, 0, 0, 20, 0, 7, 0,155, 8, 7, 0,156, 8, 7, 0,131, 3, 2, 0,157, 8, 2, 0,158, 8, 57, 1, 5, 0, + 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 37, 0, 46, 0,134, 0, 32, 0,102, 5, 58, 1, 5, 0, 4, 0, 19, 0, 4, 0, 17, 0, + 0, 0, 20, 0, 0, 0,105, 8, 32, 0, 45, 0, 59, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,119, 8, 2, 0,132, 3, + 7, 0,159, 8, 7, 0,160, 8, 7, 0, 64, 1, 7, 0, 65, 1, 7, 0,103, 3, 7, 0,106, 3, 7, 0,161, 8, 7, 0,162, 8, + 32, 0,163, 8, 60, 1, 10, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 67, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,141, 8, + 2, 0, 43, 0, 2, 0, 64, 0, 2, 0,164, 8, 2, 0,165, 8, 61, 1, 8, 0, 32, 0, 45, 0, 7, 0,240, 2, 7, 0,166, 8, + 7, 0,167, 8, 7, 0,235, 2, 2, 0, 19, 0, 2, 0,205, 2, 7, 0,168, 8, 62, 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,169, 8, 4, 0, 37, 0, 7, 0,170, 8, 7, 0,171, 8, 7, 0,172, 8, + 7, 0,173, 8, 0, 0,174, 8, 63, 1, 9, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 67, 8, 4, 0, 89, 0, 0, 0, 20, 0, + 2, 0,136, 1, 2, 0, 64, 0, 2, 0,164, 8, 2, 0,165, 8, 64, 1, 7, 0, 4, 0,193, 2, 4, 0,175, 8, 4, 0,176, 8, + 4, 0,177, 8, 7, 0,178, 8, 7, 0,179, 8, 0, 0,111, 8, 65, 1, 7, 0, 0, 0,180, 8, 32, 0,181, 8, 0, 0,117, 8, + 2, 0,182, 8, 2, 0, 43, 0, 4, 0, 70, 0, 0, 0,118, 8, 66, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 67, 8, + 4, 0, 89, 0, 0, 0,183, 8, 0, 0,184, 8, 67, 1, 1, 0, 4, 0, 19, 0, 68, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, + 2, 0, 19, 0, 4, 0,185, 8, 7, 0,186, 8, 42, 0,128, 6, 69, 1, 4, 0, 0, 0, 70, 2, 2, 0, 19, 0, 4, 0, 17, 0, + 32, 0, 45, 0, 70, 1, 2, 0, 4, 0, 17, 0, 4, 0, 48, 6, 71, 1, 6, 0, 0, 0,114, 8, 0, 0,115, 8, 4, 0, 17, 0, + 7, 0, 36, 2, 32, 0, 48, 3, 32, 0,187, 8, 51, 1, 10, 0, 51, 1, 0, 0, 51, 1, 1, 0, 51, 1,134, 8, 2, 0, 17, 0, + 2, 0, 19, 0, 2, 0,119, 8, 2, 0,188, 8, 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 45, 0, 72, 1, 10, 0, 7, 0,131, 3, + 7, 0,189, 8, 7, 0,190, 8, 7, 0,191, 8, 7, 0,192, 8, 4, 0, 19, 0, 7, 0,169, 8, 7, 0,193, 8, 7, 0,194, 8, + 7, 0, 37, 0, 20, 1, 12, 0, 20, 1, 0, 0, 20, 1, 1, 0, 19, 1,195, 8, 9, 0,223, 0, 4, 0,174, 3, 4, 0,233, 3, + 4, 0,234, 3, 4, 0,196, 8, 4, 0,197, 8, 4, 0,198, 8, 7, 0,246, 3, 7, 0, 37, 0, 55, 1, 8, 0, 7, 0,199, 8, + 7, 0,200, 8, 7, 0,201, 8, 7, 0,202, 8, 7, 0,203, 8, 7, 0,204, 8, 7, 0,205, 8, 7, 0,206, 8, 19, 1, 15, 0, + 27, 0, 31, 0, 0, 0,222, 0, 43, 0,149, 0, 9, 0,223, 0, 43, 0,207, 8, 36, 0, 80, 0, 7, 0,246, 3, 7, 0,208, 8, + 7, 0,149, 8, 7, 0,199, 8, 7, 0,200, 8, 7, 0,209, 8, 4, 0, 90, 0, 4, 0,198, 8, 9, 0,210, 8, 73, 1, 15, 0, +216, 0, 0, 0,216, 0, 1, 0, 12, 0, 14, 6, 4, 0, 15, 6, 7, 0, 16, 6, 5, 1,211, 8,217, 0, 68, 6, 19, 1, 23, 8, + 2, 0, 69, 1, 2, 0,147, 8, 2, 0, 89, 2, 2, 0, 90, 2, 2, 0, 19, 0, 2, 0,120, 6, 4, 0, 70, 0, 74, 1, 6, 0, + 74, 1, 0, 0, 74, 1, 1, 0, 32, 0, 45, 0, 9, 0,212, 8, 4, 0,247, 0, 4, 0, 37, 0, 67, 0, 4, 0, 27, 0, 31, 0, + 12, 0,213, 8, 4, 0,131, 0, 7, 0,214, 8, 75, 1, 27, 0, 75, 1, 0, 0, 75, 1, 1, 0, 26, 0,215, 8, 75, 1, 38, 0, + 12, 0,216, 8, 0, 0, 20, 0, 7, 0,217, 8, 7, 0,218, 8, 7, 0,219, 8, 7, 0,220, 8, 4, 0, 19, 0, 7, 0,221, 8, + 7, 0,222, 8, 7, 0,223, 8, 7, 0, 76, 1, 7, 0, 36, 2, 7, 0,224, 8, 7, 0,191, 2, 7, 0,225, 8, 7, 0,226, 8, + 7, 0,227, 8, 7, 0,228, 8, 7, 0,229, 8, 7, 0,172, 0, 4, 0,131, 0, 2, 0,141, 5, 2, 0,136, 1, 76, 1, 25, 0, + 27, 0, 31, 0, 39, 0, 75, 0, 12, 0,230, 8, 12, 0,231, 8, 12, 0,232, 8, 75, 1,233, 8, 9, 0,234, 8, 9, 0,235, 8, + 4, 0, 19, 0, 4, 0, 24, 6, 2, 0,247, 2, 2, 0, 78, 6, 4, 0, 37, 0, 4, 0,131, 0, 4, 0,236, 8, 2, 0,237, 8, + 2, 0,238, 8, 2, 0,239, 8, 2, 0,240, 8, 4, 0,241, 8, 4, 0,242, 8, 4, 0,243, 8, 4, 0,244, 8, 4, 0,245, 8, + 4, 0,246, 8, 77, 1, 2, 0, 7, 0,152, 2, 4, 0, 19, 0,165, 0, 5, 0, 77, 1,247, 8, 4, 0,191, 2, 4, 0,248, 8, + 4, 0,249, 8, 4, 0, 19, 0,164, 0, 16, 0, 4, 0,250, 8, 4, 0,251, 8, 4, 0,252, 8, 4, 0,253, 8, 2, 0,254, 8, + 2, 0,255, 8, 2, 0, 0, 9, 2, 0,247, 0, 2, 0, 1, 9, 2, 0, 2, 9, 2, 0, 3, 9, 2, 0, 4, 9, 4, 0, 5, 9, + 4, 0, 6, 9, 4, 0, 7, 9, 4, 0, 8, 9, 78, 1, 44, 0, 78, 1, 0, 0, 78, 1, 1, 0, 26, 0,215, 8, 12, 0,158, 3, + 0, 0, 20, 0, 2, 0, 19, 0, 2, 0, 9, 9, 2, 0, 10, 9, 2, 0, 11, 9, 2, 0,117, 3, 2, 0, 12, 9, 4, 0, 72, 2, + 4, 0,243, 8, 4, 0,244, 8, 75, 1, 13, 9, 78, 1, 38, 0, 78, 1, 14, 9, 12, 0, 15, 9, 9, 0, 16, 9, 9, 0, 17, 9, + 9, 0, 18, 9, 7, 0, 64, 1, 7, 0,172, 0, 7, 0, 19, 9, 7, 0, 15, 2, 7, 0,108, 3, 7, 0,110, 3, 2, 0,140, 3, + 2, 0, 37, 0, 7, 0, 20, 9, 7, 0, 21, 9, 7, 0,113, 3, 7, 0, 22, 9, 7, 0, 23, 9, 7, 0, 24, 9, 7, 0, 25, 9, + 7, 0, 26, 9, 7, 0, 27, 9, 7, 0, 28, 9, 7, 0, 29, 9, 7, 0, 65, 2,165, 0, 96, 3, 32, 0, 30, 9, 78, 1, 31, 9, +162, 0, 12, 0, 12, 0, 32, 9, 2, 0, 19, 0, 2, 0, 33, 9, 7, 0,101, 2, 7, 0, 34, 9, 7, 0, 35, 9, 12, 0, 36, 9, + 4, 0, 37, 9, 4, 0, 38, 9, 9, 0, 39, 9, 9, 0, 40, 9,164, 0, 95, 3, 79, 1, 1, 0, 4, 0, 38, 9, 80, 1, 12, 0, + 4, 0, 38, 9, 7, 0,131, 8, 2, 0, 41, 9, 2, 0, 42, 9, 7, 0, 43, 9, 7, 0, 44, 9, 2, 0, 45, 9, 2, 0, 19, 0, + 7, 0, 46, 9, 7, 0, 47, 9, 7, 0, 48, 9, 7, 0, 49, 9, 81, 1, 7, 0, 81, 1, 0, 0, 81, 1, 1, 0, 12, 0, 50, 9, + 4, 0, 19, 0, 4, 0, 51, 9, 0, 0,237, 3,252, 0, 52, 9,161, 0, 7, 0, 27, 0, 31, 0, 12, 0, 53, 9, 12, 0, 32, 9, + 12, 0, 54, 9, 12, 0,100, 0, 4, 0, 19, 0, 4, 0, 55, 9,221, 0, 4, 0, 27, 0,195, 8, 12, 0, 32, 9, 4, 0, 56, 9, + 4, 0, 19, 0, 82, 1, 17, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 14, 6, 4, 0, 15, 6, 7, 0, 16, 6, 2, 0, 17, 6, +217, 0, 68, 6,161, 0, 91, 3,221, 0, 57, 9, 0, 0, 69, 1, 0, 0, 71, 6, 2, 0, 19, 0, 2, 0, 58, 9, 2, 0,121, 6, + 2, 0,120, 6, 2, 0, 59, 9, 7, 0, 60, 9, 83, 1, 8, 0, 83, 1, 0, 0, 83, 1, 1, 0, 81, 1, 61, 9, 36, 0, 80, 0, + 12, 0, 97, 3, 4, 0, 19, 0, 0, 0, 20, 0, 4, 0, 62, 9, 84, 1, 5, 0, 84, 1, 0, 0, 84, 1, 1, 0, 36, 0, 80, 0, + 2, 0, 19, 0, 0, 0, 63, 9, 85, 1, 14, 0, 85, 1, 0, 0, 85, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, + 0, 0, 64, 9, 0, 0, 65, 9, 0, 0, 63, 9, 7, 0, 66, 9, 7, 0, 67, 9, 4, 0, 37, 0, 36, 0, 80, 0, 7, 0, 68, 9, + 7, 0, 69, 9, 86, 1, 9, 0, 86, 1, 0, 0, 86, 1, 1, 0, 32, 0, 70, 9, 0, 0,250, 2, 7, 0, 71, 9, 2, 0, 72, 9, + 2, 0, 19, 0, 2, 0, 17, 0, 2, 0, 73, 9, 87, 1, 7, 0, 42, 0,128, 6, 26, 0,215, 8, 4, 0, 19, 0, 4, 0, 74, 9, + 12, 0, 75, 9, 32, 0, 70, 9, 0, 0,250, 2, 88, 1, 15, 0, 32, 0, 70, 9, 2, 0, 76, 9, 2, 0, 19, 0, 2, 0, 77, 9, + 2, 0, 78, 9, 0, 0,250, 2, 32, 0, 79, 9, 0, 0, 80, 9, 7, 0, 81, 9, 7, 0, 36, 2, 7, 0, 82, 9, 7, 0, 83, 9, + 2, 0, 17, 0, 2, 0, 69, 1, 7, 0, 76, 1, 89, 1, 6, 0, 32, 0, 70, 9, 7, 0,247, 8, 2, 0, 84, 9, 2, 0, 85, 9, + 2, 0, 19, 0, 2, 0, 86, 9, 90, 1, 6, 0, 32, 0, 70, 9, 4, 0, 87, 9, 4, 0, 88, 9, 4, 0, 90, 0, 4, 0, 37, 0, + 0, 0,250, 2, 91, 1, 4, 0, 32, 0, 70, 9, 4, 0, 19, 0, 4, 0, 87, 9, 0, 0,250, 2, 92, 1, 4, 0, 32, 0, 70, 9, + 4, 0, 19, 0, 4, 0, 87, 9, 0, 0,250, 2, 93, 1, 4, 0, 32, 0, 70, 9, 4, 0, 19, 0, 4, 0, 87, 9, 0, 0,250, 2, + 94, 1, 2, 0, 32, 0, 70, 9, 0, 0,250, 2, 95, 1, 10, 0, 32, 0, 70, 9, 4, 0, 89, 9, 7, 0,125, 0, 4, 0, 19, 0, + 2, 0,123, 6, 2, 0, 90, 9, 2, 0, 43, 0, 2, 0, 70, 0, 7, 0, 91, 9, 0, 0,250, 2, 96, 1, 10, 0, 32, 0, 70, 9, + 2, 0, 17, 0, 2, 0, 40, 4, 4, 0, 88, 0, 4, 0, 89, 0, 7, 0,166, 8, 7, 0,167, 8, 4, 0, 37, 0,161, 0,140, 8, + 0, 0,250, 2, 97, 1, 4, 0, 32, 0, 70, 9, 4, 0,118, 3, 4, 0, 92, 9, 0, 0,250, 2, 98, 1, 4, 0, 32, 0, 70, 9, + 4, 0,118, 3, 4, 0, 37, 0, 0, 0,250, 2, 99, 1, 5, 0, 32, 0, 70, 9, 7, 0,125, 0, 4, 0, 93, 9, 4, 0,118, 3, + 4, 0,119, 3,100, 1, 6, 0, 32, 0, 70, 9, 4, 0, 94, 9, 4, 0, 95, 9, 7, 0, 96, 9, 7, 0, 97, 9, 0, 0,250, 2, +101, 1, 16, 0, 32, 0, 70, 9, 32, 0, 14, 9, 4, 0, 17, 0, 7, 0, 98, 9, 7, 0, 99, 9, 7, 0,100, 9, 7, 0,101, 9, + 7, 0,102, 9, 7, 0,103, 9, 7, 0,104, 9, 7, 0,105, 9, 7, 0,106, 9, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 43, 0, + 2, 0, 70, 0,102, 1, 3, 0, 32, 0, 70, 9, 4, 0, 19, 0, 4, 0, 28, 2,103, 1, 5, 0, 32, 0, 70, 9, 4, 0, 19, 0, + 4, 0, 37, 0, 7, 0,107, 9, 0, 0,250, 2,104, 1, 10, 0, 32, 0, 70, 9, 0, 0,250, 2, 2, 0,108, 9, 2, 0,109, 9, + 0, 0,110, 9, 0, 0,111, 9, 7, 0,112, 9, 7, 0,113, 9, 7, 0,114, 9, 7, 0,115, 9,105, 1, 8, 0, 7, 0, 9, 0, + 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,116, 9, 7, 0,117, 9, 2, 0, 19, 0, 2, 0, 28, 2,106, 1, 8, 0, + 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,116, 9, 7, 0,117, 9, 2, 0, 19, 0, 2, 0, 28, 2, +107, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,116, 9, 7, 0,117, 9, 2, 0, 19, 0, + 2, 0, 28, 2,108, 1, 7, 0, 32, 0, 70, 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,109, 1, 5, 0, 32, 0, 48, 3, 7, 0, 76, 1, 2, 0, 52, 3, 0, 0, 54, 3, 0, 0,118, 9,110, 1, 10, 0, +110, 1, 0, 0,110, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0,119, 9, 7, 0, 20, 1, 7, 0, 21, 1, 2, 0, 50, 9, + 2, 0,120, 9, 32, 0, 45, 0,111, 1, 22, 0,111, 1, 0, 0,111, 1, 1, 0, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0,121, 9, + 2, 0,122, 9, 36, 0, 80, 0,161, 0,140, 8, 32, 0,164, 0, 7, 0, 88, 0, 7, 0, 89, 0, 7, 0,123, 9, 7, 0,124, 9, + 7, 0,125, 9, 7, 0,126, 9, 7, 0,236, 2, 7, 0,127, 9, 7, 0,142, 8, 7, 0,128, 9, 0, 0,129, 9, 0, 0,130, 9, + 12, 0, 99, 3,112, 1, 8, 0, 7, 0, 43, 2, 7, 0,166, 8, 7, 0,167, 8, 9, 0, 2, 0, 2, 0,131, 9, 2, 0,132, 9, + 2, 0,133, 9, 2, 0,134, 9,113, 1, 18, 0,113, 1, 0, 0,113, 1, 1, 0,113, 1,135, 9, 0, 0, 20, 0,112, 1,136, 9, + 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,137, 9, 2, 0,138, 9, 2, 0,139, 9, 2, 0,140, 9, 4, 0, 43, 0, 7, 0,141, 9, + 7, 0,142, 9, 4, 0,143, 9, 4, 0,144, 9,113, 1,145, 9,114, 1,146, 9,115, 1, 33, 0,115, 1, 0, 0,115, 1, 1, 0, +115, 1,147, 9, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,247, 7, 2, 0, 25, 8, 2, 0,148, 9, 2, 0,133, 0, + 2, 0,138, 9, 2, 0,237, 7, 12, 0,135, 8, 12, 0,149, 9, 27, 0,158, 6, 9, 0,150, 9, 7, 0,141, 9, 7, 0,142, 9, + 7, 0, 74, 2, 7, 0,151, 9, 2, 0,152, 9, 2, 0,153, 9, 7, 0,154, 9, 7, 0,155, 9, 2, 0,156, 9, 2, 0,157, 9, + 9, 0,158, 9, 24, 0,159, 9, 24, 0,160, 9, 24, 0,161, 9,116, 1,150, 0,117, 1,162, 9,118, 1,163, 9,114, 1, 8, 0, +114, 1, 0, 0,114, 1, 1, 0,115, 1,164, 9,115, 1,165, 9,113, 1,166, 9,113, 1,145, 9, 4, 0, 19, 0, 4, 0, 37, 0, + 60, 0, 22, 0, 27, 0, 31, 0, 39, 0, 75, 0,163, 0, 94, 3, 12, 0,167, 9, 12, 0,168, 9,112, 1,169, 9, 12, 0,170, 9, + 4, 0, 17, 0, 4, 0,171, 9, 4, 0,172, 9, 4, 0,173, 9, 4, 0, 19, 0, 4, 0, 37, 0, 12, 0,174, 9,118, 1,175, 9, + 4, 0,176, 9, 9, 0,177, 9, 9, 0,178, 9, 4, 0,179, 9, 9, 0,180, 9, 9, 0,181, 9, 9, 0,182, 9,119, 1, 6, 0, + 4, 0,124, 0, 4, 0,126, 0, 4, 0,237, 7, 0, 0,183, 9, 0, 0,184, 9, 2, 0, 37, 0,120, 1, 16, 0, 2, 0,191, 7, + 2, 0,192, 7, 2, 0,185, 9, 2, 0,190, 8, 2, 0,186, 9, 2, 0, 68, 0, 7, 0,235, 2, 7, 0,187, 9, 7, 0,188, 9, + 2, 0, 91, 1, 0, 0,189, 9, 0, 0,190, 9, 2, 0,191, 9, 2, 0, 37, 0, 4, 0,192, 9, 4, 0,193, 9,121, 1, 9, 0, + 7, 0,194, 9, 7, 0,195, 9, 7, 0,209, 8, 7, 0,109, 0, 7, 0,196, 9, 7, 0, 84, 6, 2, 0,197, 9, 0, 0,198, 9, + 0, 0, 37, 0,122, 1, 4, 0, 7, 0,199, 9, 7, 0,200, 9, 2, 0,197, 9, 2, 0, 37, 0,123, 1, 3, 0, 7, 0,201, 9, + 7, 0,202, 9, 7, 0, 15, 0,124, 1, 7, 0, 0, 0, 5, 2, 2, 0,253, 4, 2, 0,254, 4, 2, 0,255, 4, 2, 0,193, 4, + 4, 0,126, 0, 4, 0, 38, 4,125, 1, 7, 0, 7, 0,203, 9, 7, 0,204, 9, 7, 0,205, 9, 7, 0, 85, 2, 7, 0,206, 9, + 7, 0,207, 9, 7, 0,208, 9,126, 1, 4, 0, 2, 0,209, 9, 2, 0,210, 9, 2, 0,211, 9, 2, 0,212, 9,127, 1, 2, 0, + 7, 0, 5, 0, 7, 0, 6, 0,128, 1, 2, 0, 0, 0,166, 0, 0, 0,213, 9,129, 1, 1, 0, 0, 0, 20, 0,130, 1, 10, 0, + 0, 0,214, 9, 0, 0,215, 9, 0, 0, 77, 6, 0, 0,216, 9, 2, 0,185, 9, 2, 0,217, 9, 7, 0,218, 9, 7, 0,219, 9, + 7, 0,220, 9, 7, 0,127, 9,131, 1, 2, 0, 9, 0,221, 9, 9, 0,222, 9,132, 1, 11, 0, 0, 0,255, 4, 0, 0, 17, 0, + 0, 0,197, 9, 0, 0,109, 0, 0, 0,223, 9, 0, 0,106, 0, 0, 0, 70, 2, 7, 0,224, 9, 7, 0,225, 9, 7, 0,226, 9, + 7, 0,227, 9,133, 1, 8, 0, 7, 0,100, 8, 7, 0,125, 0, 7, 0,190, 9, 7, 0,157, 2, 7, 0,228, 9, 7, 0,236, 0, + 7, 0,229, 9, 4, 0, 17, 0,134, 1, 4, 0, 2, 0,230, 9, 2, 0,231, 9, 2, 0,232, 9, 2, 0, 37, 0,135, 1, 6, 0, + 7, 0,233, 9, 7, 0,199, 2, 7, 0,234, 9, 7, 0,242, 7, 7, 0,243, 7, 7, 0,244, 7,136, 1, 1, 0, 0, 0, 20, 0, +137, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 2, 0, 19, 0, 2, 0,235, 9,138, 1, 10, 0, 2, 0,226, 3, 2, 0, 19, 0, + 7, 0,124, 4, 7, 0,236, 9, 7, 0,237, 9, 7, 0,238, 9, 7, 0,239, 9,137, 1,240, 9,137, 1,241, 9,137, 1,242, 9, + 63, 0, 9, 0, 4, 0, 19, 0, 4, 0, 64, 0, 24, 0,243, 9, 24, 0,244, 9,138, 1,245, 9, 7, 0,246, 9, 7, 0,247, 9, + 7, 0,248, 9, 7, 0,249, 9,233, 0, 9, 0, 4, 0, 50, 9, 4, 0,250, 9, 7, 0,251, 9, 7, 0,252, 9, 7, 0,253, 9, + 7, 0,166, 8, 7, 0,167, 8, 4, 0,129, 0, 4, 0, 37, 0,139, 1, 4, 0, 47, 0,229, 2, 7, 0,254, 9, 7, 0,170, 1, + 7, 0, 37, 0,194, 0, 18, 0, 27, 0, 31, 0,139, 1,255, 9, 63, 0,240, 9, 51, 0, 0, 10, 2, 0, 19, 0, 2, 0,234, 5, + 4, 0,106, 0, 7, 0, 1, 10, 7, 0, 82, 2, 4, 0, 2, 10, 7, 0, 3, 10, 7, 0, 4, 10, 7, 0, 5, 10, 7, 0,170, 1, + 0, 0, 6, 10, 0, 0, 7, 10, 0, 0, 8, 10, 0, 0, 70, 0,140, 1, 10, 0, 4, 0, 17, 0, 4, 0,125, 0, 4, 0, 19, 0, + 4, 0,180, 3, 4, 0, 9, 10, 4, 0, 10, 10, 4, 0, 11, 10, 0, 0, 92, 0, 0, 0, 20, 0, 9, 0, 2, 0,141, 1, 1, 0, + 0, 0, 35, 0, 91, 0, 7, 0,140, 1, 12, 10, 4, 0, 13, 10, 4, 0, 14, 10, 4, 0, 15, 10, 4, 0, 37, 0, 9, 0, 16, 10, +141, 1, 17, 10,142, 1, 5, 0, 7, 0,152, 2, 7, 0,219, 2, 7, 0, 36, 2, 2, 0,128, 2, 2, 0, 37, 0,143, 1, 5, 0, + 7, 0,152, 2, 7, 0, 18, 10, 7, 0, 19, 10, 7, 0, 20, 10, 7, 0,219, 2,144, 1, 5, 0, 32, 0, 21, 10,145, 1, 22, 0, + 7, 0,208, 5, 7, 0, 22, 10, 7, 0, 57, 0,146, 1, 7, 0, 4, 0, 23, 10, 4, 0, 24, 10, 4, 0, 25, 10, 7, 0, 26, 10, + 7, 0, 27, 10, 7, 0, 28, 10, 7, 0, 57, 0,147, 1, 8, 0,147, 1, 0, 0,147, 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,108, 8,148, 1, 6, 0,148, 1, 0, 0,148, 1, 1, 0, 32, 0, 45, 0, + 2, 0,204, 2, 2, 0, 19, 0, 2, 0, 29, 10,149, 1, 17, 0,143, 1,174, 3,143, 1, 30, 10,142, 1, 31, 10,143, 1, 92, 8, +144, 1, 32, 10, 4, 0, 82, 0, 7, 0,219, 2, 7, 0,246, 2, 7, 0, 33, 10, 4, 0, 23, 10, 4, 0, 34, 10, 7, 0, 27, 10, + 7, 0, 28, 10, 7, 0,106, 0, 4, 0, 35, 10, 2, 0, 19, 0, 2, 0, 36, 10,150, 1,110, 0, 27, 0, 31, 0, 39, 0, 75, 0, +151, 1, 37, 10,172, 0, 60, 4, 4, 0, 19, 0, 2, 0, 17, 0, 2, 0,108, 9, 2, 0, 38, 10, 2, 0, 39, 10, 2, 0,140, 3, + 2, 0, 40, 10, 2, 0, 41, 10, 2, 0, 42, 10, 2, 0, 43, 10, 2, 0, 44, 10, 2, 0, 45, 10, 2, 0, 46, 10, 2, 0,242, 4, + 2, 0,120, 5, 2, 0, 47, 10, 2, 0, 48, 10, 2, 0, 49, 10, 2, 0, 50, 10, 2, 0, 51, 10, 2, 0, 25, 2, 2, 0, 85, 8, + 2, 0, 60, 8, 2, 0, 52, 10, 2, 0, 53, 10, 2, 0,190, 3, 2, 0,191, 3, 2, 0, 54, 10, 2, 0, 55, 10, 2, 0, 56, 10, + 2, 0, 57, 10, 7, 0, 58, 10, 7, 0, 59, 10, 7, 0, 60, 10, 2, 0, 61, 10, 2, 0, 62, 10, 7, 0, 63, 10, 7, 0, 64, 10, + 7, 0, 65, 10, 7, 0, 67, 8, 7, 0, 89, 0, 7, 0,246, 2, 7, 0, 73, 8, 7, 0, 66, 10, 7, 0, 67, 10, 7, 0, 68, 10, + 4, 0, 68, 8, 4, 0, 66, 8, 4, 0, 69, 10, 7, 0, 69, 8, 7, 0, 70, 8, 7, 0, 71, 8, 7, 0, 70, 10, 7, 0, 71, 10, + 7, 0, 72, 10, 7, 0, 73, 10, 7, 0, 74, 10, 7, 0, 57, 0, 7, 0, 75, 10, 7, 0, 76, 10, 7, 0, 77, 10, 7, 0, 78, 10, + 7, 0,131, 3, 7, 0,106, 0, 7, 0, 79, 10, 7, 0, 80, 10, 7, 0, 81, 10, 7, 0, 82, 10, 7, 0, 83, 10, 7, 0, 84, 10, + 7, 0, 85, 10, 4, 0, 86, 10, 4, 0, 87, 10, 7, 0, 88, 10, 7, 0, 89, 10, 7, 0, 90, 10, 7, 0, 91, 10, 7, 0, 92, 10, + 7, 0,210, 0, 7, 0, 93, 10, 7, 0,217, 3, 7, 0,215, 3, 7, 0,216, 3, 7, 0, 94, 10, 7, 0, 95, 10, 7, 0, 96, 10, + 7, 0, 97, 10, 7, 0, 98, 10, 7, 0, 99, 10, 7, 0,100, 10, 7, 0,101, 10, 7, 0,102, 10, 7, 0,103, 10, 7, 0,104, 10, + 7, 0,105, 10, 7, 0,106, 10, 4, 0,107, 10, 4, 0,108, 10, 67, 0,163, 3, 12, 0,109, 10, 67, 0,110, 10, 32, 0,111, 10, + 32, 0,112, 10, 36, 0, 80, 0,167, 0, 61, 1,167, 0,113, 10,148, 0, 44, 0,148, 0, 0, 0,148, 0, 1, 0,150, 1,114, 10, +149, 1,115, 10,146, 1, 14, 9,174, 0,242, 3, 9, 0,243, 3,152, 1,116, 10,152, 1,117, 10, 12, 0,118, 10, 12, 0,119, 10, +133, 0,120, 10,141, 0,121, 10,141, 0,122, 10, 32, 0,123, 10, 32, 0,124, 10, 32, 0, 38, 0, 12, 0, 75, 9, 0, 0, 20, 0, + 7, 0,240, 0, 7, 0, 17, 3, 7, 0,125, 10, 4, 0,193, 2, 4, 0, 57, 0, 4, 0, 19, 0, 4, 0, 68, 8, 4, 0,126, 10, + 4, 0,127, 10, 4, 0,128, 10, 2, 0,247, 0, 2, 0,129, 10, 2, 0,130, 10, 2, 0,131, 10, 0, 0,132, 10, 2, 0,133, 10, + 2, 0,134, 10, 2, 0,135, 10, 9, 0,136, 10,137, 0, 59, 4, 12, 0, 4, 3, 12, 0,137, 10,153, 1,138, 10,154, 1,139, 10, + 7, 0,140, 10,135, 0, 35, 0,155, 1,210, 8, 7, 0, 29, 4, 7, 0,141, 10, 7, 0,142, 10, 7, 0,127, 4, 7, 0,143, 10, + 7, 0,141, 3, 7, 0,131, 3, 7, 0,144, 10, 7, 0, 84, 2, 7, 0,145, 10, 7, 0,146, 10, 7, 0,147, 10, 7, 0,148, 10, + 7, 0,149, 10, 7, 0,150, 10, 7, 0, 30, 4, 7, 0,151, 10, 7, 0,152, 10, 7, 0,153, 10, 7, 0, 31, 4, 7, 0, 27, 4, + 7, 0, 28, 4, 7, 0,154, 10, 4, 0,155, 10, 4, 0, 90, 0, 4, 0,156, 10, 4, 0,157, 10, 2, 0,158, 10, 2, 0,159, 10, + 2, 0,160, 10, 2, 0,161, 10, 2, 0,162, 10, 2, 0,163, 10,172, 0, 60, 4,136, 0, 8, 0,155, 1,164, 10, 7, 0,165, 10, + 7, 0,166, 10, 7, 0,242, 1, 7, 0,167, 10, 4, 0, 90, 0, 2, 0,168, 10, 2, 0,169, 10,156, 1, 4, 0, 7, 0, 5, 0, + 7, 0, 6, 0, 7, 0, 7, 0, 7, 0,170, 10,157, 1, 6, 0,157, 1, 0, 0,157, 1, 1, 0,156, 1,247, 8, 4, 0,253, 0, + 2, 0,171, 10, 2, 0, 19, 0,158, 1, 5, 0,158, 1, 0, 0,158, 1, 1, 0, 12, 0,172, 10, 4, 0,173, 10, 4, 0, 19, 0, +159, 1, 9, 0,159, 1, 0, 0,159, 1, 1, 0, 12, 0,124, 0,158, 1,174, 10, 4, 0, 19, 0, 2, 0,171, 10, 2, 0,175, 10, + 7, 0, 91, 0, 0, 0,176, 10,163, 0, 6, 0, 27, 0, 31, 0, 12, 0, 15, 5, 4, 0, 19, 0, 2, 0,177, 10, 2, 0,178, 10, + 9, 0,179, 10,160, 1, 7, 0,160, 1, 0, 0,160, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, 0, 0,180, 10, + 0, 0,181, 10,161, 1, 5, 0, 12, 0,182, 10, 4, 0,183, 10, 4, 0,184, 10, 4, 0, 19, 0, 4, 0, 37, 0,162, 1, 16, 0, + 27, 0, 31, 0,163, 1,185, 10,163, 1,186, 10, 12, 0,187, 10, 4, 0,188, 10, 2, 0,189, 10, 2, 0, 37, 0, 12, 0,190, 10, + 12, 0,191, 10,161, 1,192, 10, 12, 0,193, 10, 12, 0,194, 10, 12, 0,195, 10,164, 1,196, 10, 12, 0,197, 10,214, 0,198, 10, +163, 1, 31, 0,163, 1, 0, 0,163, 1, 1, 0, 9, 0,199, 10, 4, 0,170, 7, 2, 0,200, 10, 2, 0, 37, 0,219, 0, 67, 6, +219, 0,201, 10, 0, 0,202, 10, 2, 0,203, 10, 2, 0,204, 10, 2, 0,191, 7, 2, 0,192, 7, 2, 0,205, 10, 2, 0,206, 10, + 2, 0,180, 3, 2, 0,184, 6, 2, 0,207, 10, 2, 0,208, 10, 2, 0,176, 9,165, 1,209, 10,166, 1,210, 10,167, 1,211, 10, + 4, 0,212, 10, 4, 0,213, 10, 9, 0,214, 10, 12, 0,191, 10, 12, 0,211, 7, 12, 0,215, 10, 12, 0,216, 10, 12, 0,217, 10, +168, 1, 17, 0,168, 1, 0, 0,168, 1, 1, 0, 0, 0,218, 10, 26, 0, 30, 0, 2, 0,219, 10, 2, 0, 17, 0, 2, 0, 15, 0, + 2, 0,220, 10, 2, 0,221, 10, 2, 0,222, 10, 2, 0,223, 10, 2, 0,224, 10, 2, 0, 19, 0, 2, 0,225, 10, 2, 0, 31, 0, + 2, 0, 37, 0,169, 1,226, 10,170, 1, 10, 0,170, 1, 0, 0,170, 1, 1, 0, 12, 0,227, 10, 0, 0,218, 10, 2, 0,228, 10, + 2, 0,229, 10, 2, 0, 19, 0, 2, 0,230, 10, 4, 0,231, 10, 9, 0,232, 10,164, 1, 8, 0,164, 1, 0, 0,164, 1, 1, 0, + 0, 0,218, 10, 0, 0,233, 10, 0, 0,234, 10, 12, 0,126, 7, 4, 0,235, 10, 4, 0, 19, 0,227, 0, 13, 0,227, 0, 0, 0, +227, 0, 1, 0, 0, 0,218, 10, 26, 0, 30, 0,171, 1,185, 7, 9, 0,236, 10,169, 1,226, 10,161, 1,237, 10, 12, 0,238, 10, +227, 0,239, 10, 4, 1,104, 6, 2, 0, 19, 0, 2, 0,136, 1,172, 1, 8, 0,172, 1, 0, 0,172, 1, 1, 0, 9, 0, 2, 0, + 9, 0,240, 10, 0, 0,237, 3, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,241, 10,173, 1, 5, 0, 7, 0,242, 10, 4, 0,243, 10, + 4, 0,244, 10, 4, 0, 69, 1, 4, 0, 19, 0,174, 1, 6, 0, 7, 0,245, 10, 7, 0,246, 10, 7, 0,247, 10, 7, 0,248, 10, + 4, 0, 17, 0, 4, 0, 19, 0,175, 1, 5, 0, 7, 0,166, 8, 7, 0,167, 8, 7, 0,219, 2, 2, 0, 39, 2, 2, 0, 40, 2, +176, 1, 5, 0,175, 1, 2, 0, 4, 0, 54, 0, 7, 0,249, 10, 7, 0,166, 8, 7, 0,167, 8,177, 1, 4, 0, 2, 0,250, 10, + 2, 0,251, 10, 2, 0,252, 10, 2, 0,253, 10,178, 1, 2, 0, 42, 0,155, 6, 26, 0,215, 8,179, 1, 3, 0, 24, 0,254, 10, + 4, 0, 19, 0, 4, 0, 37, 0,180, 1, 6, 0, 7, 0,106, 0, 7, 0,221, 2, 7, 0,255, 10, 7, 0, 37, 0, 2, 0,246, 0, + 2, 0, 0, 11,181, 1, 6, 0, 27, 0,158, 6, 0, 0, 1, 11, 0, 0, 2, 11, 2, 0, 3, 11, 2, 0, 19, 0, 4, 0, 4, 11, +182, 1, 7, 0,182, 1, 0, 0,182, 1, 1, 0, 0, 0,237, 3,181, 1, 5, 11, 2, 0, 6, 11, 2, 0, 17, 0, 7, 0, 61, 0, +183, 1, 7, 0, 12, 0, 7, 11, 0, 0, 8, 11, 9, 0, 9, 11, 7, 0, 61, 0, 7, 0,241, 10, 4, 0, 17, 0, 4, 0, 19, 0, +184, 1, 3, 0, 7, 0, 10, 11, 4, 0, 19, 0, 4, 0, 37, 0,185, 1, 15, 0,185, 1, 0, 0,185, 1, 1, 0, 81, 1, 61, 9, +183, 1, 62, 0, 12, 0, 99, 3, 35, 0, 50, 0,184, 1, 11, 11, 4, 0, 54, 0, 7, 0, 61, 0, 2, 0, 19, 0, 2, 0, 15, 1, + 4, 0, 12, 11, 0, 0, 1, 11, 4, 0, 13, 11, 7, 0, 14, 11,186, 1, 2, 0, 0, 0, 15, 11, 0, 0, 16, 11,187, 1, 4, 0, +187, 1, 0, 0,187, 1, 1, 0,161, 0, 48, 3, 12, 0, 17, 11,188, 1, 24, 0,188, 1, 0, 0,188, 1, 1, 0, 12, 0, 18, 11, +161, 0,140, 8,187, 1, 19, 11, 12, 0, 20, 11, 12, 0, 99, 3, 0, 0,237, 3, 7, 0,241, 10, 7, 0, 21, 11, 7, 0, 88, 0, + 7, 0, 89, 0, 7, 0,123, 9, 7, 0,124, 9, 7, 0,236, 2, 7, 0,127, 9, 7, 0,142, 8, 7, 0,128, 9, 2, 0, 22, 11, + 2, 0, 23, 11, 2, 0, 43, 0, 2, 0, 17, 0, 4, 0, 19, 0, 4, 0, 70, 0,189, 1, 6, 0,189, 1, 0, 0,189, 1, 1, 0, + 12, 0, 18, 11, 4, 0, 19, 0, 4, 0,156, 2, 0, 0,237, 3,190, 1, 10, 0,190, 1, 0, 0,190, 1, 1, 0, 27, 0,158, 6, + 0, 0, 24, 11, 4, 0, 4, 11, 4, 0, 25, 11, 0, 0, 1, 11, 4, 0, 12, 11, 2, 0, 19, 0, 2, 0, 26, 11,191, 1, 7, 0, +191, 1, 0, 0,191, 1, 1, 0, 12, 0, 27, 11, 0, 0,237, 3, 2, 0, 19, 0, 2, 0, 28, 11, 4, 0, 29, 11,192, 1, 5, 0, +192, 1, 0, 0,192, 1, 1, 0, 0, 0, 1, 11, 4, 0, 12, 11, 7, 0,209, 2, 39, 0, 12, 0,161, 0, 91, 3,161, 0, 30, 11, +187, 1, 19, 11, 12, 0, 31, 11,188, 1, 32, 11, 12, 0, 33, 11, 12, 0, 34, 11, 4, 0, 19, 0, 4, 0,247, 0, 2, 0, 35, 11, + 2, 0, 36, 11, 7, 0, 37, 11,193, 1, 2, 0, 27, 0, 31, 0, 39, 0, 75, 0,194, 1, 5, 0,194, 1, 0, 0,194, 1, 1, 0, + 4, 0, 17, 0, 4, 0, 19, 0, 0, 0, 20, 0,195, 1, 6, 0,194, 1, 38, 11, 32, 0, 45, 0, 4, 0, 39, 11, 7, 0, 40, 11, + 4, 0, 41, 11, 4, 0, 50, 9,196, 1, 3, 0,194, 1, 38, 11, 4, 0, 39, 11, 7, 0, 42, 11,197, 1, 8, 0,194, 1, 38, 11, + 32, 0, 45, 0, 7, 0, 64, 1, 7, 0, 43, 11, 7, 0, 17, 3, 7, 0,209, 8, 4, 0, 39, 11, 4, 0, 44, 11,198, 1, 5, 0, +194, 1, 38, 11, 7, 0, 45, 11, 7, 0, 25, 8, 7, 0,242, 2, 7, 0, 57, 0,199, 1, 3, 0,194, 1, 38, 11, 7, 0,209, 8, + 7, 0, 46, 11,145, 1, 4, 0, 7, 0, 47, 11, 7, 0, 81, 10, 2, 0, 48, 11, 2, 0, 69, 1,200, 1, 14, 0,200, 1, 0, 0, +200, 1, 1, 0, 12, 0, 49, 11, 12, 0, 50, 11, 12, 0, 51, 11, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0, 52, 11, + 7, 0, 53, 11, 4, 0, 41, 11, 4, 0, 50, 9, 7, 0,246, 3, 7, 0,244, 2,151, 1, 23, 0, 4, 0, 39, 11, 4, 0, 54, 11, + 7, 0, 55, 11, 7, 0, 57, 0, 7, 0, 56, 11, 7, 0,240, 2, 7, 0, 47, 11, 7, 0, 57, 11, 7, 0,221, 2, 7, 0, 58, 11, + 7, 0,124, 4, 7, 0, 59, 11, 7, 0, 60, 11, 7, 0, 61, 11, 7, 0, 62, 11, 7, 0, 63, 11, 7, 0, 64, 11, 7, 0, 65, 11, + 7, 0, 66, 11, 7, 0, 67, 11, 7, 0, 68, 11, 7, 0, 69, 11, 12, 0, 70, 11,121, 0, 34, 0,120, 0, 71, 11,201, 1, 72, 11, + 67, 0, 73, 11, 67, 0,110, 10, 67, 0, 74, 11,202, 1, 75, 11, 48, 0,165, 0, 48, 0, 76, 11, 48, 0, 77, 11, 7, 0, 78, 11, + 7, 0, 79, 11, 7, 0, 80, 11, 7, 0, 81, 11, 7, 0, 82, 11, 7, 0, 62, 9, 7, 0, 83, 11, 7, 0,170, 1, 7, 0, 84, 11, + 4, 0, 85, 11, 4, 0, 86, 11, 4, 0, 87, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0, 88, 11, 2, 0, 89, 11, 2, 0, 90, 11, + 4, 0, 91, 11, 7, 0,221, 2, 4, 0, 92, 11, 7, 0, 93, 11, 4, 0, 94, 11,137, 0, 95, 11, 12, 0, 96, 11,172, 0, 60, 4, +122, 0, 11, 0,120, 0, 71, 11,148, 0, 34, 3, 7, 0,137, 1, 7, 0, 62, 9, 7, 0, 97, 11, 7, 0, 98, 11, 2, 0, 99, 11, + 2, 0,100, 11, 2, 0,101, 11, 2, 0, 17, 0, 4, 0, 37, 0,123, 0, 13, 0,120, 0, 71, 11,139, 0, 14, 3,141, 0, 16, 3, + 7, 0,247, 8, 7, 0,102, 11, 7, 0,103, 11, 7, 0, 66, 1, 7, 0,104, 11, 4, 0, 84, 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 b1b7bbbd2ec..64d2659dcb2 100644 --- a/source/blender/editors/datafiles/blenderbuttons.c +++ b/source/blender/editors/datafiles/blenderbuttons.c @@ -1,6549 +1,6570 @@ /* DataToC output of file <blenderbuttons> */ -int datatoc_blenderbuttons_size= 209368; +int datatoc_blenderbuttons_size= 210034; char datatoc_blenderbuttons[]= { -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, +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, 41,157, 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, 48,161,197,192,192,192,192,192,192,192,240, + 96,192,149,246,134,205,155, 55,251,172,204, 8, 33, 29,125,229,180,111,109, 30,117,206, 7, 24,119, 90,134,156,109,236,156, 31, +252, 75,194,217,230, 81,229, 20,227,235, 43,111,105, 56,125, 77, 83,165, 12, 39, 45,235,112, 62, 40,206,178,202, 71,110,194, 73, + 31,192,119,255,224, 95, 18,206, 54,143, 26,167,107,250,241,133,183,180,156,190,164,169,123, 8, 39, 45,235,112, 62, 40,206,251, +205, 71, 37,132,147,222,111, 90,242,240,237, 63,192,127, 8,252,131, 18, 89,165, 65,183,110,221,136, 19, 63,121, 84, 57,157,223, +131,200, 95,150, 97, 45, 67,236, 44,107, 78,151,247, 89, 86,248,160, 91,183,110,100,243,230,205,187, 0,180, 41,203,184,151,197, +119,119,137,107,153,240,150, 86,100,149,150,179,172,210,253,131,230, 44,171,188,228,202, 89, 22,233,222,221,119,127,128,223,168, +172,194, 89, 38,121,233, 65,164,121, 55,233,231,190,121, 93, 57,203, 34, 47,185,114,150, 69,186,127, 24,156,101,145,151,220,113, +150, 69,186,247,244,237,153, 69,235,225, 10, 2,215, 12,222,246, 81, 22, 68, 15, 74,108,250,106,129,121, 20, 56,203,248, 27,125, + 96,231, 44,203,214, 77,219,178,250, 70, 15, 34,189, 59,115,150, 21,191, 43, 79, 89,124, 39,119,156,247, 27, 94, 15,225, 44,243, +184,223,111,186,127, 88,156,101,252,141,202, 36, 47,185,112,182, 45,227,198, 64, 91,167,253, 15,202,146,179,172,242,146,155,112, +222,247,119,114,199,121,191,225,245, 16,206, 50,143,123, 89,212, 33, 15,138,247,177,181,104, 61, 72,145,245,160, 42,181,178,228, +126, 16, 86,157, 7,101,121, 43, 43,171,142, 27,222, 93,101, 72,183,179,172,195,105, 15, 31,121, 80,214,215, 71, 29, 44, 47,177, +188,244,168,229, 37,119,233,166, 91,183,110, 31,108,222,188,249,253, 71,173, 17,237,204, 89, 86,130,200, 77,220,239, 43, 47,185, +222, 91, 22,121,201, 11, 39,121, 16,241, 47,235,252,196,132, 86, 41, 44, 69,101,220, 50, 65, 25, 91, 96, 30, 88,188,203, 56,156, +109, 31,132,133,240, 1,160,204,195,105,111, 41,191,255, 0,226,254,111,121,167, 44, 47,177,188,244,200,229, 37,151, 52,217,182, + 12, 45, 69,101,106,121,118,229, 44,139,103, 56,115,148, 85, 26,125,208,113, 47,203,188,244, 32,190,253,191, 14,148,210, 7,182, + 1,232,200, 56, 25, 39,227,100,156,140,147,113, 50, 78,198,249, 95,221, 56, 48, 48, 48, 48, 48, 48, 48, 48, 48, 60, 16,176,121, +180, 24, 24, 24, 24, 24, 24, 24, 24, 30,182,208,138,141,141,221,164, 86,171, 43,121,186, 81,171,213,222, 73, 73, 73,105,199, 94, + 33, 3, 3,131,215,130,134, 16, 14,127,143,114, 22, 0, 80,202, 90,121, 12, 12, 12,255, 1,120,116,134, 87, 40, 20,137, 23, 46, + 92,168, 34, 8, 2,108, 54, 27,172, 86,171,227,215,100, 50,161,117,235,214,165,118,164,143,138,138,218, 45,145, 72, 42,148,230, + 30,155,205,118, 43, 53, 53,181,101, 9, 5,248,126, 0,137,132, 16,231, 99, 37,254, 2, 72, 49,155,205, 13, 74,226, 36,132, 36, +186,242,121,224, 18,255,151,200, 25, 20, 20,116,148,231,249, 56,119, 92,158,254, 11,130,112, 45, 61, 61,189, 57, 75,166, 15, 7, + 81, 81, 81,187,121,158, 47,117,250,188,115,231,142,199,244, 25, 19, 19,115,130,227,184,152, 82, 80, 74, 4, 65,184,116,231,206, +157,150,158,132,136,152,230,189, 8,155, 98,255, 9, 33, 73, 86,171,181,145,183,124, 84, 18,151,155, 52, 90, 34,167,179,200,226, +121,126, 86, 68, 68,196, 40,157, 78,103, 0, 64, 37, 18, 9, 13, 13, 13, 21,195, 6, 0,176, 90,173, 25, 57, 57, 57,181, 89, 74, +100, 96, 96,248, 79, 8, 45, 65, 16, 56,163,209,136,203,151, 47,195, 67,121,111,187,135,231, 85, 57,246,199,182, 8,255,136, 72, + 88,205,102,104,194,194, 29,220,105,231,207,194,106, 49,195,106, 50,161,124,227,166, 98, 37,134,154, 53,107, 74,188,112,198,205, +158, 61, 59,194,223,223, 31, 6,131, 1, 6,131, 1, 70,163, 17, 6,131, 1, 38,147, 9, 38,147, 9,102,179, 25,102,179, 25, 86, +171, 21, 70,163, 17,219,183,111,247, 22,246,184, 15, 63,252, 48, 34, 32, 32,192,193, 39,110, 34,167,200,107,177, 88, 96, 48, 24, +240,231,159,127,150,200,201,243,124, 92, 74, 74, 74,132, 76, 38, 3,165, 20,130, 32,184,115, 46, 44,134,138, 21, 43,154, 89, 18, +125,168,168,242,225,202,205, 17,129, 42, 5,172,130,128,238,117, 43, 58, 78, 92,251,106, 13,168,213, 6,193,106, 69,229,177, 67, +129, 34,147, 12,106,212,168, 81, 98,250,164,148,198,127,184,114,115,144,175,156,153,153,153,250,234,213,171,167,160,104,232,179, + 39,139, 79,156, 94,175,143, 16,195,224, 42,136, 56,142, 43,182,109,217,178, 5,221,187,119,247, 22,247,184,215, 94,123, 45,194, + 98,177,192,100, 50,193,104, 52,194, 98,177,192,106,181, 58, 54,155,205,230,216, 76, 38, 19, 14, 29, 58,228,171, 37,107,118,167, + 78,157, 70,108,222,188, 89,243,243,207, 63,107, 42, 84,168, 0,153, 76, 6,137, 68, 2,137, 68, 2,142,227,192,243, 60,158,120, +226, 9,194,146, 32, 3, 3,195,127, 70,104, 25,141,198,235,245,235,215,167,246,255,177, 10,133, 66,230, 82,128,198, 84,169, 82, +229,146,235,125,222,186, 20,253, 35, 34, 49,169, 92, 8, 0, 96,242,205, 44, 71, 5,241, 81,243,122,142,107,166, 38,231, 1, 0, + 84, 42, 21,136,115, 51,218, 3, 52, 26, 13, 58,117,234, 4,185, 92,142, 70,141, 26, 65, 42,149,186,221,100, 50, 25,164, 82,169, + 47,149, 3,252,252,252, 48,101,202, 20, 81, 36, 65,163, 84,224,229,230,141,160, 4,197, 23,103,175,192, 36, 80,240, 60,239,216, +124,225,148,201,100, 56,115,230, 12,120,158,135, 68, 34,113,252,138,255, 55,110,220,136,126,253,250,129,231,121,168, 84, 42,224, + 63, 52,207,200,163,130, 64,149, 2,195,150,252, 4, 0,184, 61,111,172,227,219, 29, 26, 61,217,113, 77,252, 11, 3, 64, 8,129, + 84, 42, 5,199,113,101,198,153,157,157,173, 31, 52,104,208, 94,127,127,255, 45,249,249,249,240, 34,224,112,251,246,109,240, 60, +239, 49,189,115, 28,135,185,115,231,226,234,213,171, 62,197,221, 96, 48,224,203, 47,191,132,205,102, 43,198, 43,254,119, 61,230, +163,200,154,222,185,115,231,161,155, 55,111, 14, 38,132,224,211, 79, 63,133, 76, 38, 67,215,174, 93, 17, 26, 26,138,173, 91,183, + 66, 38,147, 97,194,132, 9, 44,241, 49, 48, 48,148, 4, 41,128,122, 0,194,237,134,158, 2, 0, 65, 78,231, 51,236,191,225, 78, +251, 71,220,240, 52,182, 95, 35,158, 23,247, 77, 0,228,110,142,103, 1, 80,217, 55, 35,128,253, 0,106, 57, 61, 71,188, 15,158, +158,203, 3, 69,235, 15, 1,216, 9,160,173, 56,137,222,157, 59,119,158,114,178,172, 92,184,116,233, 82, 53, 81,243,216,187, 16, +101, 86,171,181,138,216,157, 40, 90,139, 58,118,236, 88, 98, 11,223,106, 54,223, 37, 64,220,105, 41,119,221, 21,158, 4,140,217, +108,198,128, 1, 3,138,190,132,135, 74,199,121,243, 65,187,193,100, 50,129,231,121, 84, 45, 23,142,247,186,212, 71, 19,106,129, +182,144,192,154,167, 69, 47, 63, 11, 46,212,104,128,165,183, 50,112, 51,191, 16, 60,207,251,196, 41, 8,130, 71,145, 37,145, 72, +176,100,201, 18, 12, 26, 52, 8, 18,137,196, 39, 62,134,178,135, 85, 16,220,166, 67, 79,105,214,151,239,228, 11,103,118,118,182, +190,123,247,238, 7, 21, 10,197,178,200,200,200,148,164,164, 36,175, 66,203, 85,252,184, 54, 42, 62,249,228, 19, 44, 92,184, 16, +237,218,181,243, 41,156, 70,163, 17,132, 16, 44, 93,186,244,174,115,211,166, 77,187,235,121, 37,113,218, 27, 72, 92, 76, 76,204, +232,223,127,255, 61, 64,188, 54, 44, 44, 12, 82,169, 20,181,107,215,134,191,191, 63,246,238,221, 11,155,205,230,115,190,100, 96, + 96,120,124,225, 78,139, 56,161,245,164, 73,147, 26,205,154, 53,107, 70,179,102,205,126,220,191,127,255, 74, 66,200, 38,167, 50, +177,187,189,236,217,228,180,223,216, 69,244, 72, 1,132, 19, 66, 54,137,215, 59,239, 59, 29,239, 8, 64, 46,238, 79,154, 52,169, +214,172, 89,179,102, 76,156, 56,241,237,153, 51,103,202, 38, 77,154, 84,103,214,172, 89, 51,196,231,184, 11,135, 59,139, 86,137, +179, 10,139,221,136, 23, 47, 94,132, 55,255, 85, 74,105,137,165,165, 38, 44,220, 97,201,154, 26, 31,234, 56, 62, 37, 41,215, 81, +129, 45,106, 88, 9, 26,141, 6, 93,166,126,236,147,165,200,100, 50, 33, 61, 61,221, 97,101,240,182,249,202,169, 86, 41,177,253, +181,218,184,157, 37,199, 7, 7,178,177,249,228, 85, 72,165, 82, 60, 89,163, 54,158,146,249,227,221,120, 57, 94,187,114, 3, 22, + 31,125,122, 41,165,110, 5,150,248, 95,236, 66, 97, 66,235,159, 67,247,186, 21, 29, 86,167, 67,254, 29, 28,199,251,105,207, 56, +190,201, 27, 75, 62, 2, 0,180,107,240, 4,124,241,231,246,198,153,149,149,165,111,217,161,237, 46,155,222,244,221,208,161, 67, +175,239,216,177, 67,229, 83,243,206,141,208, 18,173,182,162,200,226,121, 30, 38,147,201,167,184,155, 76, 38,143,249, 67, 38,147, +149,218,162, 5, 0, 90,173,214,180, 97,195, 6, 44, 90,180, 8,161,161,161,232,220,185, 51,162,163,163,177,102,205, 26, 80, 74, + 49,118,236, 88,168, 84, 42,209,122,205, 18, 32, 3,195,127, 27, 37,105, 17,197,172, 89,179,102,184, 10, 25,231,125,103, 1,229, + 34,166,156,197, 90, 45, 47,245,255, 38, 87,241, 36, 62,151, 16,178,105,230,204,153,221,189,132, 35,195,147,208, 42,113,250,126, +163,209,120,189,110,221,186, 62,169, 9,157, 78,151,234, 77,108,184,107,213, 59, 91, 9,252,252,252,160, 9,240, 3,231, 99,185, +107,177, 88, 28, 66,101,219,182,109, 80,169, 84,232,218,181,235,125, 89,180,204,102, 51,228, 50, 41,184,176, 72, 12,155,183, 3, + 89, 5,122, 71, 5,179,243,218,117, 28, 79, 75,199,107,205, 58, 64,163, 74, 71,161,201,228,147,229, 77, 16,132,187, 68, 22,207, +243, 24, 48, 96,128,195,154,224,236,183, 2,214,117,248,143,193, 93,250,116, 61, 46,184, 88,170,238,133, 51, 43, 43, 75,223,189, +123,247,131, 54,189,233,187,228,228,228,131, 0,148, 77,154, 52, 41,181,208, 18, 5,150, 84, 42,197,220,185,115,177,112,225, 66, +199,121, 95,133,150,213,106, 45, 38,160,174, 92,185, 82,236, 89,174,194,174,164,110, 83, 74, 41, 37,132, 8, 0,132,196,196, 68, +199, 61, 81, 81, 81, 8, 10, 10,130, 32, 8, 16, 4, 1, 74,165, 18, 42,149, 10, 50,153,140, 37, 58, 6, 6,134,146,180,136,126, +226,196,137,111, 19, 66, 54,217, 45, 75,103, 75, 16, 84,238,208,216, 69,172,101,120, 40,187,186,187, 19, 91,206,255, 69, 76,154, + 52,169,150,155,112, 28,241, 40,180, 92,166,221, 47, 6,231,110,196,178,170,196, 74,170,200,252,130, 2,160,210,104, 32,145,112, + 32,132, 80,111, 92,102,179,217, 81,240,143, 26, 53,170, 68,191, 21, 95,253,169,204,102, 51, 56, 94,130, 59, 81, 9,176,113,123, + 28,247,138, 27,199, 75,113, 51,170, 26, 36, 23, 79, 64,234, 99,133,235,106,209, 26, 59,118, 44,190,252,242, 75,112, 28,231,120, + 39, 60,207,163,114,229,202,184,126,253, 58,203,113,143,136,200,242,116,220,102, 19,124,182,194,184,187, 46, 43, 43, 75,223,191, +127,255, 93,121,121,121,223,213,172, 89,243, 10,138,166, 63,224,124,229,227,121,190,152,192, 18, 69,214,130, 5, 11,138,137, 34, +139,197,226, 83, 67,192, 98,177,220, 37,120,230,204,153, 83,236, 23, 0,154, 55,111,238,147,101, 24, 0,229, 56,142,202,100, 50, +116,234,212, 9,117,234,212,193,207, 63,255, 12, 65, 16, 48,102,204, 24,168, 84, 42,204,159, 63, 31, 86,171, 21,179,103,207,102, + 22, 45, 6, 6,134,146,180,136,113,230,204,153,103,103,206,156,233,176, 44,185, 90,180, 60, 81,218, 69, 85,184, 40,210, 80,228, +107,117,164,132,186,186,187, 39, 1,230,124,108,214,172, 89, 51,220,132,195,181,187,242,225,175,117,152,122,238, 12, 62,110, 81, + 31, 64,241,238,194, 37, 79, 84,131,198, 79, 3,141,191, 31,250,111,220, 3, 0,246, 66,127,162, 79, 22, 45, 81,104,101,101,101, +149, 40,178, 74, 99,209,226,228, 60,214,198,229,128,202,165,224, 77,150, 98, 66, 75,194, 75,113, 59, 52, 1,156, 84, 6,222,102, +245,137,147, 82,122, 87, 87,225,240,225,195, 65, 8,113,140, 16,171, 91,183,174, 51, 23,171,121, 30,118,250, 60,250, 21, 46,172, + 27, 13, 0,104,169,213, 58,190,197,135,117,255, 30,223, 49,239,204, 46,135,245,113, 42,222,188, 39,206,172,172, 44,125,147,234, +181, 14,202, 66, 2,191,187,117,235,214, 65, 0,220,192,129, 3,131,234,214,173,235, 83,158, 20, 7, 87,184,138, 44,103, 75,150, +248,107,177, 88,124,138,187,232, 43,229, 13, 98, 55,162,183, 52, 79, 41,165, 33, 33, 33,224, 56, 14, 1, 1, 1,240,243,243,115, +140,184, 85, 42,149, 80,171,213, 14,255, 78, 31,133, 27, 3, 3,195,127, 23,193,162,208,177,139,165, 98,150, 38, 74,105,119,103, + 49,228,169, 11,209,110,129,218,237,205,176,102, 23,104,110, 33, 90,214, 92,202,228, 77,158, 68, 26, 47, 42, 72,231,223,232,232, +232,223,252,252,252, 18,124,141,125,105, 38, 47,181, 89,204,119, 89,182, 8, 33,240,243,247,131,202, 79, 3,149,191,159, 71,171, + 87, 73, 66, 75,180, 20,137,149,206,178,101,203,224,231,231,135,103,159,125,182,212, 62, 90, 14,161, 37,227,176, 85,241, 39, 36, +114,190,152,200,226,121, 30, 18,169, 20,169,126,209,224,164, 82,240, 86,223,172,100,121,121,121,224,121, 30,239,189,247,158,163, + 5,239, 44,178, 74, 19,103,134, 7, 3,106,179,220,101,133,242,100,125,189, 87, 78,209,146, 37, 11, 9,252,174, 90,181,106, 14, + 75,150, 90,173, 22, 71,155,122, 5,199,113,110, 69,150,235, 8, 65,158,231,139,210,178,151,209,145,206, 22,173,153, 51,103, 58, +120,157, 45, 89, 34, 74,147,143,196,176,238,218,181, 11,199,143, 31,199,168, 81,163,160, 82,169,176,112,225, 66, 88,173, 86, 76, +155, 54, 13, 42,149, 10,114,185,156, 37, 62, 6, 6,102,205, 42,166, 69, 92,144,225,226, 7, 69, 92, 68, 77,134, 59,129,229,220, + 77,232,244,223,226,134,215,228,210,165,232,122, 92,252,205,154, 57,115,230, 14,209,146,229,116,188, 88, 56,188, 90,180, 20, 10, + 69,194,229,203,151, 29,147,149,150,244,107, 50,153,208,174, 93, 59,159, 45, 99,226,168, 67,158,151, 20, 19, 22,106,127, 63,168, + 3,252,161,242,243,115, 21, 28,196, 91, 33, 46,182,136,157,133,214,251,239,191, 15,158,231,241,229,151, 95, 2, 0,222,124,243, + 77,159,125,180, 68, 78,216, 8,146,232, 95,168, 63,175, 31, 76,223, 91,144,182,239, 20,120,158, 71, 68,211,167, 32, 52,233, 7, +157,202, 15,188,205,234,243,168,195,236,236,108, 92,191,126, 29, 18,137, 4,175,191,254,122,177,185,142, 92, 71,178,109,219,182, +141, 89,180,254, 9,161, 37, 88,125, 18, 85,165,177, 58, 58,115,138, 62, 89,121,121,121,223,221,186,117,235, 16, 0,110,232,208, +161, 65,106,181, 26, 95,127,253,181, 14,128,124,205,154, 53, 42,111,162, 72, 76, 55,222, 68,150, 84, 42, 45, 74,203,190,196,157, + 22,159,178,196,155, 99,188, 47,105, 94, 12, 43, 33, 4, 54,155, 13, 42,149,170,152, 37, 75,169, 84, 66,161, 80,176,132,199,192, +192,224, 13, 71, 74,113,109, 99, 39,209,116,228, 30,121,143,148, 85,192,121, 79, 66,195,104, 52,226,252,249,243,190,242,248, 60, +121,105,185, 70, 79, 96,106,114, 30, 8, 33,248,162,121, 77,104, 2,252,160,214,104,208,247,231, 93,142,130,251,204,140, 55,161, +208,248, 33,166, 85,103,159, 10,114,177,235,208, 89,104,229,230,230, 66, 42,149, 98,250,244,233,224, 56, 14,179,103,207, 70,108, +108, 44,238,220,185,131, 53,107,214,248,100,209,146,216, 36,136,126,166, 58,212,195, 3, 17,240, 76,107, 4,119,122, 31,201, 38, + 30,251, 13,106,180, 54,156,131,124,235, 2,152, 4,155,207, 35,176,172, 86, 43,118,237,218,229,234,240, 14, 74,169, 99,214,125, +139,197, 2,179,217,140,217,179,103,131,173, 80,242,240, 17,221,116, 44,194, 27,189, 4, 0,216, 56,243, 57,199,241,247,206,252, +157, 62,231,126, 95,180, 0, 64,181, 10,157, 75,197,153,149,149,165,127,178, 93,243,221, 6, 65,250,109,237,218,181,139, 89,178, +148, 74, 37,177,239,251, 36,174, 57,142,131, 68, 34,185,171,187,208,147,216,242,197, 71,203,106,181, 58, 38, 18, 45,201,159,241, + 94, 44, 90,207, 61,247, 28,162,163,163, 29,150,172,169, 83,167, 66,165, 82, 97,210,164, 73,176, 88, 44, 88,176, 96, 1, 75,124, + 12, 12, 12,255,132, 40,123,224,112, 91,146, 26, 12,134, 27,117,234,212,129,135,115,177, 74,165, 82,234, 82, 72,199, 84,169, 82, +229,146,107, 23, 34, 33,164, 35,165,116,187,187, 66,157, 16, 2,255, 0,127, 40,253, 52, 80,187, 88,177,148,254, 1, 80,248,249, +129,147, 73,221, 85, 8,119,113,138,190, 37,206, 66, 75,220,242,242,242, 32,149, 74,177,104,209, 34, 4, 4, 4,192,104, 52,122, +229, 20, 43, 29,137, 68, 2,221,237, 2, 92,152,177, 29,114,229,126, 84,234, 60, 8,209, 82, 21,100,123,215, 67,111,179,148, 56, + 97,169, 59,206, 42, 85,170, 96,242,228,201,119, 77,235,224, 9,177,177,177, 94,227,126,191, 96,156,238, 57, 75, 26, 21, 43, 66, +160, 54,119,215,185,229, 20, 45, 89, 6, 65,250,237,245,235,215, 69, 75, 86,160, 90,173,198,231,159,127,174, 3,192, 77,155, 54, + 77, 29, 31, 31, 47,241, 37, 45, 73, 36, 18,204,155, 55,207,173, 79,150, 59,209, 85,154,124,228,124,111,155, 54,109,220, 78, 88, +234, 78,188,185,227, 20,195, 26, 26, 26,234,176,100,217,108, 54,199,104, 67,113,246,121, 79,141, 10,150, 62, 25, 39,227,252,239, +112, 62,174,112, 91,203,167,164,164, 60,233,233,134, 74,149, 42, 93,190,124,249,114,101,113, 41, 14,123,193, 41, 51, 24, 12, 85, +154, 55,111,238,213,180, 35, 8, 2, 20, 10, 5, 40,165,104, 63,121, 22, 8, 7,112, 40, 94,137, 69,180,232, 0,137,132,135, 80, +180,212,135,215, 81,135,122,189,190, 88,229,224,110, 43, 44, 44,132,209,104,244,121, 54,111,131,193, 80,108, 10, 6, 66, 5,220, +252, 99,245, 93,163, 15,197,205, 87,191, 29,165, 82, 89,172,235,167, 36,120,155,147,140,161,236, 33, 14, 88, 0,128,170,205,187, + 66, 16,108,160, 54, 91,177,101,146,170, 39, 60, 9,129,218, 96,182,232, 96, 52, 26,189,153, 29, 73,102,102,166,190,127,255,254, +187, 0,124,211,171, 87,175, 75, 40, 26,241, 66,253,252,252, 20, 82,169, 84, 0,144, 13,128,230,228,228, 4, 38, 39, 39, 11, 6, +131,161,188,183,112,110,222,188, 25,231,207,159, 71,171, 86,173,138, 45, 7, 37, 90, 69,157,103,119,247, 37,125,138,221,229,238, +102,132,247, 36,228,124,133, 68, 34, 65, 96, 96, 32,100, 50, 25,166, 79,159, 14,153, 76, 6,181, 90, 13, 0, 88,176, 96,129, 99, +242, 85, 6, 6, 6,134,255,140,208,242, 86,110,150,208,173, 88, 98, 23,162,213,106, 77,138,143,143, 47,213,195,108, 54, 91,154, + 23,225,150,180,102,205, 26,153,179, 21,194,219, 47,165, 52,205, 75,101,155,180,113,227, 70,153, 59,235,134,167, 5,166,189,113, +218,108,182,164, 10, 21, 42,120,180,152,184,131,197, 98, 73,102, 73,244,225,193,102,179,149,144, 62,223,185,215,244,121,165,106, +213,170,201, 65, 65, 65,191, 70, 70, 70,102,237,219,183, 47,180,113,227,198,161,206,215, 52,110,220, 56,218,229, 54, 19, 60,175, +115, 8, 66, 72, 82,175, 94,189,220,166,121, 81, 52,185, 73,159, 73,222,210,252,225,195,135,101,206,247,123,226,119,202, 71, 73, + 62, 8,215,155,245,235,215,231,156,121, 60,165,125,139,197,146,193, 82, 33, 3, 3,195,127, 94,104,233,245,250,219,117,234,212, +177,122, 56,119,171,164,123, 51, 51, 51, 27,149,117, 4,204,102,115,243,127, 3,103, 70, 70, 70, 35,150,220, 30,109, 60,136,111, +148,150,150,214,164,172, 57,173, 86,107,153,167, 79,139,197,210,252, 65,188,211,172,172,172,102, 44,101, 49, 48, 48, 48,161, 85, + 10,248, 58,141, 3, 3, 3, 3, 3, 3, 3, 3,195,127, 29, 28,123, 5, 12, 12, 12, 12, 12, 12, 12, 12, 15, 6, 4, 69,171, 84, +223,133,210,140, 38, 32,132,116, 44,237,131,189,241, 51, 78,198,201, 56, 25, 39,227,100,156,140,243,241,227,244,198,253,216,141, +102, 20, 71, 83, 61,136, 13, 64, 71,198,201, 56, 25, 39,227,100,156,140,147,113, 50,206,255,234,198,186, 14, 25, 24, 24, 24, 24, + 24, 24, 24, 30, 16,120,246, 10,254, 25, 16, 66, 36,148, 82, 91, 25, 82, 6, 3,240,180, 96,156, 9, 64,206,189, 4, 19,128,204, +190,137, 19, 29, 89, 0,152,237,155, 15, 83,215, 79,225, 82, 82,130,107, 81,155,180, 49, 37, 68, 42, 8, 56, 89,190,124,185, 19, +192,147, 38, 0,240,139,170, 81,195, 79,163,234,104, 52,155, 18, 20, 82,249,249, 92,109,225, 54, 67,218,165, 27, 44,133, 48, 48, +252, 35,229, 82, 15, 0, 83,236,121,127, 38,165,116, 53,123, 43, 12, 12, 15, 72,104,249,251,251, 31,229, 56, 46,206,219,252, 60, + 78, 25, 20, 54,155, 45, 41, 59, 59,187,145,143, 25,154, 7,208,223,207,207,175,157, 84, 42,109, 1, 0, 22,139,101, 95, 97, 97, +225, 14, 0,107, 40,165,214,123, 44, 40, 2, 0, 12, 0, 48,196,126,232, 7, 0,171, 41,165,249,247,200, 87, 39, 48, 48,112,157, + 84, 42,165,153,153,153, 77, 1, 32, 52, 52,244,160,197, 98, 33,249,249,249,125, 41,165,167, 75,201,199, 73,165,210,185,173, 90, +181,106, 77, 8,249,134, 82,186,168,140,190,165,130,227, 56,183, 2, 69, 16,132, 10,247,192, 39, 3, 16,184,104,209,162,208, 21, + 43, 86,212, 79, 74, 74,170, 13, 0,113,113,113,103,134, 14, 29,122,226,229,151, 95,206, 2,144,103, 23, 92, 30,145,146, 18, 92, + 43, 61,245,218,168,180,244,243, 3, 0, 32, 42,186,246,106,137,132,147,197,198, 30, 63,160, 14, 27, 18, 86,181, 90,197,151,126, +252,122,145,172, 66, 66, 57,252,185,255,120,189,151, 95,121,187,150, 50,178,234, 39, 76,108, 61, 60, 4, 4, 4, 28,229, 56, 46, +174,164, 60,238, 46,207,219,108,182,164,172,172,172, 70,158, 56,121,158,143, 43,169,188,112,119, 76, 16,132,107, 25, 25, 25,110, +167,154, 8, 12, 12, 60,192,243,124,130,175, 92,226,175,213,106, 77,242, 52,181, 76, 96, 96,224, 81,137, 68, 18, 87, 82, 60,221, +157, 19, 4,225, 90,122,122,186,167,112,222, 21,247,178, 8,231,189,112,150, 20, 78,177, 60, 2,176, 32, 52, 52,244,137,172,172, +172,255, 1,120, 59, 63, 63,191,174, 68, 34, 65, 72, 72,200,219,132,144,171,129,129,129, 95,229,229,229,237, 7,240, 10,165, 84, + 96, 57,134,129,161,140,132, 22,199,113,113,201,201,201, 17, 26,141, 6,192,223,235,241,137,139, 73, 11,130, 0, 74,169,227,215, +106,181,162,122,245,234,190,138,141,218, 1, 1, 1,107, 39, 77,154, 84,190,127,255,254,114,113,169,153,148,148,148, 42,235,214, +173,251,223,244,233,211,223, 39,132,244,163,148,158,241, 85,188, 0,232, 0, 96,120,253,250,245,159,158, 58,117,170,172,125,251, +246,176,217,108,248,245,215, 95, 91, 77,155, 54,109, 17, 33,100, 61,128,239, 0,252,225,107, 97, 65, 8,105, 25, 21, 21,181,114, +239,222,189,209,215,175, 95,183,245,239,223,127, 21, 0, 28, 61,122, 52,209,102,179,145,166, 77,155,110, 38,132, 12,166,148,238, + 45,197, 59,127,122,220,184,113, 3,199,142, 29, 27,241,236,179,207,142, 0,176,200,254, 44, 98,127,207,165, 93,224,208, 97,201, +162,148,202, 74,184, 46,170, 20,150, 45,205,245,235,215,131,155, 55,111, 62, 58, 61, 61,253, 53,103,222,180,180, 52, 28, 59,118, +204, 60, 99,198,140,121,251,247,239, 95,156,144,144,144, 3, 64,235,137,136,218,164,141,211,210,207, 15,104,221,108, 81, 32, 0, +172,217, 56,122,208,225, 19, 25,254,155,126, 95,250, 63,185, 82,102, 92,241,197, 60, 89,229, 74, 21,176,243,232, 21, 28, 58,159, + 77,106,183,236,206,231,109, 90,222, 9,192, 82,150, 61, 31, 14, 36, 18, 73,108, 82, 82, 82,132, 90,173,118,187,112,188,139, 95, +134, 56, 1, 42,170, 84,169,226,185, 96,225,249,184,228,228,228, 8,165, 82,233, 40, 59, 92,203, 12,177, 92,113,164, 21, 74, 81, +181,106, 85,115, 9,101, 82,252,173, 91,183, 34,212,106,181,131,199, 93,248, 92, 5, 71,213,170, 85, 75,138,123,177,112,250,194, + 73, 41, 69,229,202,149,109,222,226, 46,174,128,225, 45,222, 34,103, 66, 66, 2, 45, 13,167, 47,225,172, 88,177,162,217,203,231, + 95,112,233,210,165,177,229,202,149, 67,229,202,149,247, 63,241,196, 19, 1, 26,141, 6,191,255,254, 59,106,212,168, 81, 43, 32, + 32,224,208,154, 53,107,164, 19, 38, 76,168,247,237,183,223, 2,192,203, 44,199, 48, 48,148,145,208, 34,132, 64,163,209, 96,213, +170, 85, 30,151,227,112,254, 95,190,124,121,159, 30, 72, 8,105,148,144,144,176,107,239,222,189,170,232,232,191, 39,196, 54,153, + 76, 8, 14, 14,198,152, 49, 99,228, 61,122,244,168,220,185,115,231,131,132,144, 54,148,210,163, 94,248,158, 14, 15, 15,255,244, +189,247,222,139, 28, 56,112, 32, 66, 67,139, 77,186,141,254,253,251,163,111,223,190,178, 75,151, 46, 13, 90,182,108,217,160, 37, + 75,150,164, 18, 66, 94,166,148,174, 47,137, 87,173, 86,247,170, 84,169,210,231,123,247,238,141,136,136,136, 64, 98, 98, 34, 55, + 97,194,132,202, 85,170, 84, 81,197,197,197,113,119,238,220,193,207, 63,255, 28, 59,120,240,224,181,114,185,252, 37,147,201,180, +193,135,184,203, 67, 67, 67,223,126,233,165,151,194,242,243,243,173,199,142, 29,187, 44, 30,151,203,229,211,154, 53,107,214,152, + 16,242, 61,165,244,171,123,177,100,217,173,118,174,107,153, 88,196,243, 62, 90,182,228, 39, 79,158, 12,105,214,172,217,122,163, +209,216, 96,212,168, 81,183,102,204,152,161, 10, 8, 8, 8, 0, 64,242,243,243,115,166, 76,153, 98,154, 63,127,254, 91, 53,106, +212,232,112,224,192,129,167,235,213,171,103,177,139,184,187,133, 22, 33,142,240,220, 78,206,192,174,253,130,124,242,164, 55,227, + 62,250, 48,225,230,145,115,183, 5, 94, 21,128, 95,118,159, 69, 90, 86, 33,126, 59,112, 14, 81,161,254, 68,166,144,214, 10,138, +171,213, 38, 47,249,220,110,202, 86,214,126,224, 32,132, 64,173, 86,227,151, 95,126,185,107,233, 42,119,203, 90,241, 60,143,160, +160, 32,175,171, 27, 40,149, 74,108,219,182,205,237,218,139,238,150,244, 9, 12, 12, 4, 74, 88, 84,155, 16, 2,165, 82,137,125, +251,246,129,227, 56,183, 75, 3,185, 30,211,104, 52,224, 74, 88,235, 74,228,220,189,123,183, 87, 46,241,215,207,207, 15, 0, 36, + 37,102, 74,133, 2,123,247,238,245, 24,103,215,255,126,246,245, 94,189,113,238,219,183,175,216,210, 95,174, 75,130, 57,239,107, + 52, 26, 71, 3,206, 99, 43, 45, 56,184,105, 92, 92, 28, 14, 31, 62,140, 53,107,214,132,212,170, 85, 11, 87,174, 92, 1, 33, 4, + 51,102,204, 32, 53,107,214,148,166,166,166,162, 85,171, 86,248,233,167,159,154,179,220,194,240, 15, 66, 10,160, 30,128,112, 20, +173, 66, 83, 0, 32,200, 94,247,200, 1,100, 1, 80,217, 55, 35,128, 66, 0, 97,246,123, 51,237,101,139,179, 64,200, 64,241,197, +167, 27,219,185,197, 21, 42,194,157,206,137,207,112,221,119,253,117,203,205, 3,192,230,205,155,197,202,172,109,183,110,221,118, + 21,139,153, 15, 34, 75, 92,167,204, 53, 79,187, 89, 96, 86,161,209,104,214, 29, 60,120, 80, 21, 30,254,119, 28,140, 70, 35, 10, + 10, 10, 80, 88, 88,136,130,130, 2,248,251,251, 99,205,154, 53,170, 14, 29, 58,172, 35,132, 84,161,148, 26, 61,113, 2,152,119, +231,206,157, 72,171,213, 10,185, 92,238,169, 37,140,234,213,171,227,237,183,223, 70,151, 46, 93,162,218,181,107, 55, 15,192,250, + 18, 56,161, 86,171, 63, 63,118,236, 88,132, 90,173,198,229,203,151,145,148,148,132, 55,222,120,163,156, 32, 8,184,125,251, 54, +174, 92,185,130,228,228,100, 44, 91,182, 44,162,119,239,222,159, 3,216, 80, 82,220,237, 24,245,218,107,175, 85, 11, 14, 14,230, + 62,254,248,227, 92,173, 86,251,153,253,248,228,133, 11, 23, 62,211,186,117,235,136,145, 35, 71, 82, 66,200, 10, 74,233, 93,194, +197,133,211,157, 37,203, 6,224,130,203,109,213, 93, 44, 93, 81,246, 68,152,235,134,147, 0, 8,236,220,185,243,235, 70,163,177, +193,222,189,123,175,182,104,209, 34, 30,192, 29, 49,241, 5, 6, 6,106,230,205,155, 23,217,189,123,247, 75,237,219,183,111,208, +185,115,231,215, 51, 50, 50,102,216,207, 83, 87, 78, 65,192,201,168,232,218,171,119, 31,120,121,192,206,125, 38,217,155,175,188, +127,171,124,185, 10,121, 39, 47,103,219,206, 93,203, 64,129,222,138, 62,237,139, 22, 48,111, 90,187, 60, 62, 93,181, 23, 99, 94, +125, 71,186,126,245,242,190, 87, 41, 52, 0, 54,151,240, 62,239, 11,140,243,111,177, 33, 8, 2,164, 82, 41,158,122,234, 41, 16, + 66,238, 90,203, 83, 42,149,226,192,129, 3,104,223,190, 61,164, 82, 41,158,123,238, 57,159, 56,121,158, 71,231,206,157, 29,235, + 40, 58,243,185,138, 6,119,154,192, 53,238,148, 82,240, 60, 15,142,227, 60, 46,164,237,202,233,173, 92, 18,195, 89, 18,151,243, + 57,111,225, 20,173, 73,190,138, 44, 95, 57,197,112,242, 60,143,230,205,155,227,196,137, 19, 37,138, 46,119,250,210, 53,238, 57, + 57, 57,195,170, 84,169,178,123,209,162, 69, 33, 0,144,149,149,229, 88,240, 94, 34,145,224,226,197,139, 48,153, 76,248,224,131, + 15,204,249,249,249, 35, 89, 62, 98,156, 15,146,179, 36, 45, 2,160,245,164, 73,147, 26,205,154, 53,107, 70,179,102,205,126,220, +191,127,255, 74, 66,200, 38, 74,105,119,241,119,210,164, 73,181,102,205,154, 53, 99,226,196,137,111,207,156, 57,243, 44, 33,100, + 19, 0,184,238,219,195,223,221, 69,196,133,139, 60,246, 60, 87,236, 90,119,251,174,191, 30,184,255,182,104,117,235,214,141,216, + 35, 73,156, 11, 53, 95,133,150, 47,107,247,241, 60, 63,118,198,140, 25,145, 37,137,172,194,194, 66,164,164,164, 32, 62, 62, 30, +207, 61,247, 92,228,162, 69,139,198, 2,152, 83, 2,173, 76, 34,145,224,240,225,195, 72, 79, 79, 71,157, 58,117,144,144,144, 80, +236,130,191,254,250, 11,191,254,250, 43,114,115,115,209,176, 97, 67,160,200,255,200, 45,234,213,171,247, 65,245,234,213, 59,119, +238,220,217,170, 82,169,112,242,228, 73, 52,104,208, 0,171, 86,173, 66,249,242,229,161, 86,171,113,233,210, 37,212,169, 83, 7, +187,118,237, 66,120,120, 56,234,215,175,111,109,216,176,225,158,236,236,236, 29, 55,110,220,248,192, 67,203, 89, 22, 27, 27,251, +254,139, 47,190, 40, 79, 73, 73, 17,190,251,238,187,189,148,210,189,132,144,177,239,188,243,206,136, 46, 93,186, 68, 28, 63,126, + 60,239,200,145, 35,135,220,137, 44, 31, 45, 89, 86,215, 74,201,102,179, 25,245,122,189,201,104, 52, 90, 56,142,187, 65, 8, 49, +217,108, 54, 79,125, 62,202,225,195,135, 87,204,204,204, 28,243,234,171,175, 94,183,139,172,139, 40,114,128, 7, 0, 88,173, 86, + 99, 97, 97, 97,126,179,102,205,226, 7, 15, 30,124,117,229,202,149, 99,134, 15, 31,190,230,187,239,190, 43, 4,160,119, 37, 44, + 95,190,220, 9,137,132,147,105, 11, 66,174,173, 93,243,213,107,191,110, 28, 91,238,246,237,228,202,161, 97,225, 90,153, 95,120, +202,154, 31,190, 61, 10,192,148,146,145,143,211,127,165, 66, 42,149,224,252,237, 60,180,126,178,191,244,234,229, 15, 91,138, 66, +139,225,129,130,138,139, 80,239,220,185,179, 68,139,214,129, 3, 7, 32,149, 74,161, 82,169, 48,127,254,252, 18, 73, 69, 97, 32, + 90,139,188,137, 25,142,227, 74, 44, 71, 68,177, 33, 46,244,238,186,125,246,217,103,120,245,213, 87,139, 61,195, 46, 54,136, 55, + 78, 79,225,139,175, 80, 1,233,105,105,197,142,249,178, 40,189,205,102,131, 84, 42,197,151, 95,126,137,238,221,187, 99,211,166, + 77, 37,254, 62,245,212, 83,224, 56,142,250,242, 62,155, 55,111, 14,179,217,236, 8,243,197,139, 23,221,242, 46, 89,178,196,155, + 37,179, 7,128, 41, 13, 26, 52, 8,104,215,174, 29,118,239,222,141,190,125,251, 26,205,102,243,101,123,157, 80,117,209,162, 69, +242, 99,199,142, 33, 52, 52, 84,122,235,214,173,111, 8, 33,204, 65,158,225,129,194,157, 22, 17,235,188, 89,179,102,205,112, 21, + 49,206, 16,207, 19, 66, 54,205,156, 57,179,187,179, 40,114,222,119,178, 58, 57,139,184, 90,206, 22, 41,103, 17,229, 73, 64,185, +212,183,206,215,103,184, 21, 90,246,136,181,117,182, 2,137,133,175, 55,145,229,169,229,232,138,192,192,192,174,125,250,244,113, +136, 28,131,193,224, 16, 88,162,200, 18,247, 47, 93,186,132, 70,141, 26,201, 2, 3, 3,187,122, 17, 90,162,136, 67, 76, 76, 12, + 50, 51, 51,113,230,204, 25,196,199,199,195, 98,177, 96,203,150, 45,200,203,203,131, 84, 42,133, 76, 38,131,217, 92,178,203, 66, +245,234,213,159, 90,177, 98, 69,163,229,203,151,231,136, 45,186, 31,126,248, 1,148, 82,132,135,135, 67,167,211, 33, 45, 45, 13, + 59,118,236,128,213,106,133,159,159, 31, 18, 19, 19,229,189,122,245,106, 57,101,202, 20, 41,128, 15, 60, 80, 55,239,219,183,111, + 96, 64, 64, 0, 94,121,229, 21,106, 54,155,103, 18, 66,154,247,237,219,247,253,151, 95,126, 57,244,198,141, 27,166,231,159,127, +254,176,217,108,254,216, 94, 8, 74, 41,165, 22, 47, 45, 10,143,150, 44,139,197, 34,190,211,235,133,133,133, 8, 11, 11,139,247, +226,195, 5, 0,178,125,251,246, 53, 7, 32,153, 54,109,154, 18, 64,154,179,200, 50,153, 76, 40, 44, 44,132, 86,171,181,228,229, +229,165,143, 31, 63,222,186,114,229, 74,137,253,158,243,238,132, 22,240,164,169,102, 77,141,156, 82,201, 59, 75,151, 46,245,235, +210,165, 11,231,231,231,135,130,130,130,128,223,126,255,221,175, 67,187,150,137, 51,102,125,180, 53, 32,174, 78,218,190,147,215, +144,156,154, 7,147,197,130,196,232,192, 34,123, 24,195, 3,135,125, 32,139,195,162,229, 44, 42,118,239,222,141, 39,159,124,210, +145,215,101, 50, 89, 49,203,151, 55, 78,158,231,241,228,147, 79,222,101,225,217,185,115,167, 91,235,147, 55, 56,139, 34, 87,113, +228, 78,128,113, 28, 7,111,189,207,162, 53,207,157,216,114,182,234,187,136, 55,111,173,125,240, 60,143,151, 95,126, 25, 82,169, + 20, 19, 38, 76, 0,207,243,168, 95,191, 62,120,158, 71,179,102,205, 32,149, 74,209,190,125,251, 82,199,253,224,193,131,104,208, +160,129, 35, 76,245,235,215, 71,227,198,141,193,243, 60, 90,181,106, 5,169, 84,138,206,157, 59,251,194,249,118, 65, 65, 65, 93, + 63, 63, 63, 92,186,116, 9, 18,137, 4,132,144, 43,148,210,186, 0,240,226,139, 47, 94,213,233,116, 21, 13, 6, 3, 94,124,241, + 69, 98, 50,153,234, 76,152, 48,225, 29, 0, 76,104, 49, 60, 48,184,106, 17, 39,232, 39, 78,156,248, 54, 33,100,147,104,161,114, +181, 60,185,219,119, 83, 54,137, 98, 72,236,218,107,236, 34,226,196,110,191,110, 37,220,107,114, 17, 86,174, 93,135, 71,124,182, +104,137,133,175,175, 66,203, 27, 12, 6, 67,189,136,136, 8,143, 34,203,249,215,100, 50, 33, 33, 33, 1, 6,131,161, 94,105, 43, +141,232,232,104,152,205,102,124,245,213, 87,144,201,100,144,201,254,214, 23, 38, 83,201,198,162,115,231,206, 93, 63,120,240, 96, +131,134, 13, 27, 6,255,244,211, 79, 25,109,218,180, 9,239,210,165, 11, 84, 42, 21,244,122, 61, 44, 22, 11,154, 54,109,138,234, +213,171, 35, 41, 41, 9,191,253,246, 91,102,149, 42, 85,194, 14, 29, 58, 36,164,166,166,222, 44,129,186, 83,135, 14, 29, 64, 8, +193,239,191,255,158, 73, 41, 61,162, 84, 42,127,253,240,195, 15,131, 77, 38,147, 48,116,232,208, 91,217,217,217,175, 2, 48, 43, + 20,138,133,157, 59,119,110, 38,145, 72,190,183,217,108,243, 75,155, 80, 93,223,173, 86,171,133, 82,169,244,101, 42, 9,105,118, +118,118,109, 0,208,104, 52, 33, 0,174, 58, 82,184, 94, 95, 76, 12,155, 76, 38, 67, 72, 72,136, 6, 0,236,247, 72, 61,124,143, +112,181, 90,189,246,230,205,107,254,206,254,115, 65, 65, 65, 24, 50,120, 48,215,162,121,115,121,221,122,245, 58,191,251,201,242, + 85, 49,161, 1,166,196,152, 80, 88,108, 22,108,223,186, 69,160,130,101, 43, 43,118, 30,142,208, 18,197,134,171, 69, 75, 42,149, + 98,215,174, 93,119, 29,147,201,100,248,226,139, 47,124, 18, 6,162,168,242,212,117,230,210,213, 69,188, 9, 24,169, 84, 10,137, + 68,130, 47,191,252, 18,130, 32,224,181,215, 94, 43,214,157,232,204,239, 99, 23,136,227,158,234,239, 11, 0, 76, 72,154,171,112, +220,239, 26, 94,251, 61, 62, 89,201, 22, 45, 90,228,147, 69,171, 91,183,110, 94,133,171,115, 15,131,115,184, 78,156, 56,225,150, +119,233,210,165, 94,223,167,205,102,195,230,205,155, 29, 34, 85,196,123,239,189,247, 98, 92, 92, 92,228,158, 61,123,144,154,154, + 10,173, 86,139,194,194, 66, 52,109,218, 52,177, 99,199,142, 39, 83, 83, 83,111,156, 59,119,174, 15,203, 61, 12, 15,209,162,101, +156, 57,115,230,217,153, 51,103,186,181, 88,185, 90,150, 74,178, 60, 57, 9,172, 35,176,119, 25, 78,156, 56,241,109, 20,185,213, + 28,241,225, 94,185,107,215, 97,137,134, 32, 23, 21, 57,197, 93,225,235, 75,247,161,143,230,116,158, 16, 2,131,193,224, 86, 96, + 57,139, 3,179,217,140,236,236,108,216,108,182,123,158,235,203, 93, 75,214,155,208, 58,115,230,204,179, 35, 70,140, 72, 9, 12, + 12,172,155,145,145,145, 46, 8, 66,251, 3, 7, 14,132,243, 60,143,128,128, 0, 4, 4, 4,224,215, 95,127,133, 90,173,198,203, + 47,191,156,110,179,217,118,251,251,251,135,234,245,250, 83,169,169,169,239,122, 84, 48, 82,105,231, 86,173, 90,225,216,177, 99, +200,201,201,217, 70, 8,169, 63,114,228,200, 39,203,149, 43, 71, 62,252,240, 67,195, 95,127,253, 53, 31, 64,186, 70,163, 89,177, + 98,197,138,118, 13, 27, 54,244, 31, 58,116, 40, 8, 33, 75, 41,165, 6, 95,227,172,213,106,139, 9,172,252,252,124, 20, 20, 20, + 64,163,209, 88,125,124,103, 82, 20,249, 90,137,254, 86,142,111, 99,183,102,137,223,135,242, 60, 79,139, 46,161, 82, 79,124, 26, +141,102,218,242,229,203, 85,174,131, 20,108, 54, 27,210,210,210, 16, 16, 16,128,247,222,125, 87, 54,245,141,145, 13, 36,126,145, + 7, 56,142,192,100,166,185, 84, 48,109,209,166, 13,220,195,138,157,135, 3, 81, 24,244,236,217,243,174,238, 66,153, 76,134,109, +219,182,161,119,239,222,142,134, 75,195,134, 13,189, 54,174, 68, 97,208,163, 71, 15,135,101,104,203,150, 45,110,187,253, 68,139, +148, 47,130, 80,188,118,220,184,113,224,121, 30,159,126,250, 41, 94,127,253,117,112, 28,135,185,115,231,130,227, 56, 76,158, 60, +217,103,145,233, 44, 96,110,124, 84,244, 27,247,122, 62,178,150, 68, 2, 0,252, 3, 2,196, 8,149,170,236,225,121,222, 97,201, +170, 87,175, 30,164, 82, 41,154, 53,107, 6,158,231, 29,150,172,174, 93,187, 58,191, 71,234, 11, 39,207,243,184,124,249,178, 35, +204,205,154, 53, 43,102,201,226,121, 30,221,186,117,243, 37,152, 51,130,130,130,166, 84,175, 94,189,198,188,121,243,164, 18,137, + 4, 29, 58,116,168,250,252,243,207,223, 12, 13, 13, 13,157, 54,109,154,218,205, 61, 42, 0,117,107,212,168,161, 97,185,134,225, + 1, 90,180,166,184, 57, 21,236,236,115, 85,138,134,228, 38,231,235, 69, 14, 87,113,100,183,144,237,246,198,229,238, 94,111,224, + 69, 5, 89,146, 73,221, 23,161,101, 55, 59,151,248, 48,181, 90,125, 58, 61, 61,189,153, 74,165, 42, 38,178,220, 9, 46,137, 68, +130,212,212, 84,168,213,234,211,101,249, 17,189,117, 29,218, 69,205, 27, 78, 47,182, 99,215,174, 93,191,219,182,109, 91,244,246, +237,219,113,232,208, 33,132,135,135, 99,209,162, 69,119,210,210,210,158,165,148,110,243,229,185, 21, 43, 86,172,237,231,231,135, +125,251,246, 1,192, 46, 0, 35,199,140, 25, 67, 44, 22, 11,150, 44, 89,162, 5,240,123, 80, 80,208,230, 53,107,214, 52,168, 91, +183,174,124,251,246,237,249,135, 14, 29,250,195, 71,145,101, 19, 4,225, 46,129,229,252, 78,253,253,253,125,177,104, 89, 2, 3, + 3,207,228,231,231,247,215,235,245,249, 10,133,194, 63, 63, 63,223,232, 44,176, 68,126,158,231,165,151, 47, 95, 78, 1,144, 24, + 24, 24,120, 6, 78, 93,140,197, 18, 24,207,119,232,208,161, 3,239,250, 13,210,210,210,144,154,154, 10,179,217,140,134, 13, 27, + 18, 9,177, 72,178,111,157,122,145, 21, 51,255,136, 69,139,138,121, 93, 28, 37,232,110,164,225,150, 45, 91, 28,251, 28,199,193, + 62,220,223,171, 40,218,182,109, 91,137, 14,235, 46, 93,135, 94, 77,227,226,245,139, 23, 47, 46, 90,222,194,110,201,226, 56, 14, + 19, 39, 78,132, 66,161,192,135, 31,126,136,137, 19, 39,130,231,121,175, 93,135,206, 2,166,194, 4,157,115,227,168, 40, 83,216, +253,161, 8, 33,206, 98,139,248, 42,222, 74,178,230,249,210, 19,224,204, 41,222,167, 84, 42, 61, 58,194,187,112,146, 18,226,253, + 11, 33,228, 90,116,116,244,190,102,205,154, 5, 30, 61,122, 20,115,231,206,149, 25,141,198,242,219,183,111,119, 60,215,221,251, +210,106,181, 42,150,115, 24, 30,132, 53,171,132,211, 25, 46,254, 85,196,185, 27,175,132, 95,215,235,225,116,204,153, 55,195,165, + 30,115, 62,238, 42,174, 92,159,225,124, 77,134, 71,139,150,183,194,194,155,224,242,197,162,165,211,233,254,248,253,247,223, 27, + 15, 30, 60,152, 47,169,219, 80,171,213, 34, 50, 50, 18,103,207,158,181,234,116,186, 63,124,176,148,149,153,208,114, 83,168,108, +143,138,138,146, 88, 44, 22, 84,174, 92, 25,177,177,177, 48, 24, 12,200,205,205,149,248, 42,178, 8, 33,178, 70,141, 26, 73, 0, + 32, 55, 55, 23, 40, 26,106, 90,181, 74,149, 42, 56,118,236, 24,178,179,179,215, 3,232, 50,101,202,148,134, 77,155, 54,149,173, + 90,181, 74, 55,106,212,168,245, 22,139,229, 3, 31,173, 17, 38,171,213,154,192,113,156, 57, 55, 55, 55,217,249,125, 70, 70, 70, +134,104, 52, 26,146,150,150,102,241, 69,104,213,173, 91,247,240,173, 91,183, 48,109,218,180,140, 25, 51,102, 84, 41, 40, 40,200, +201,203,203,179, 58,139, 45,131,193,192,133,133,133, 41,150, 44, 89,162, 2,128,186,117,235, 30,246, 36,180,180, 90,109, 57,181, +250,239,134,177,209,104, 68,106,106, 42, 82, 83, 83,145,150,150,134,130,130, 2, 36, 38, 38, 66,167,211,197,179, 98,230, 31, 19, + 90,197,186,207,156,243,183,115, 69, 94,154,188,238, 44, 96,122,246,236,233,240,237, 18, 45,100,226,182,118,237, 90, 87, 7,115, +159,132,214,226,197,139, 49,110,220, 56, 40,149, 74,204,155, 55,175, 88,215,161,171, 56, 16, 4,129,248, 18,247,132,183,244, 72, + 93, 24, 2,169, 84,138,208, 81,105,197,186,232,220, 8, 14,159,194, 57, 99,198,140, 50,233, 58,116,230,140,143, 47,202, 42, 95, +126,249, 37,250,247,239,143, 61,123,246,220,115,215, 97,173, 90,181,126,216,180,105, 83,224,185,115,231,144,159,159,143,140,140, + 12, 24,141, 70, 36, 37, 37,121,236, 21,176,151,229, 74,150,115, 24, 30, 50,142, 60,100,222, 50,123, 30,239,165, 2,247, 89,104, +249, 98,209, 50, 26,141,243, 94,121,229,149, 49, 29, 59,118, 12,241,247,247, 71, 74, 74,202, 93, 34,171,176,176, 16,126,126,126, +208,235,245,216,184,113, 99,190,209,104,156,231, 77, 28, 88, 44, 22, 68, 68, 68, 32, 51, 51, 19,130, 7,255,105,142,227,160, 82, +169, 80, 88, 88, 8, 79,162,160,164, 10,195,108, 54,195, 98,177,192, 98,177,192,108, 54,163,148,211, 59,169,197,137, 95,181, 90, + 45, 0,104, 99, 98, 98, 42, 43,149, 74, 92,191,126, 29, 40, 26,217,215,241,201, 39,159,148,102,101,101,209,231,159,127,126, 47, +165,244, 69, 47,179,227,155,118,239,222,157, 0, 0, 42,149,234, 18, 0, 36, 37, 37, 89,114,115,115,139, 89, 10,213,106, 53,237, +221,187,119, 52,165, 20,187,119,239, 78,144,201,100, 20, 30,230,188, 2, 96,216,176, 97,195,185,192,192,192,149,179,102,205, 26, +220,189,123,247,179,181,107,215, 78,208,106,181,233,122,189, 94,111, 48, 24,168, 68, 34,145, 5, 7, 7, 43,183,110,221,122,245, +192,129, 3, 29, 3, 2, 2, 86,110,216,176,225, 28, 0,183,150, 55,141, 70,147,164,211,233, 42,136,223,212, 89,100,165,166,166, +130, 82,138,107,215,174, 65,173, 86,223, 98,229,200, 63, 7,177, 81,229,106,121,113, 61,230,171,200,114, 22, 6, 91,183,110, 45, +113, 14, 45, 95, 57,157, 69,209,235,175,191,142,133, 11, 23,222,101,209,250,240,195, 15, 1, 0,239,190,251,174,207, 62, 90,162, +245, 42,117, 97, 8,162,198,101, 23, 11, 59, 0, 16, 49,124,165,156,210,141,231,121, 76,155, 54,237, 46, 39,117,231,174, 61, 31, +187,248,138,133, 51, 61, 61, 29, 60,207, 35, 36, 36, 4, 67,134, 12, 65,231,206,157, 29, 93,144,165,229,189,112,225,194,190,183, +222,122,171, 78,173, 90,181, 48,125,250,244,236,160,160, 32,255, 23, 94,120,129,207,205,205, 37, 37, 89,180,152,208, 98, 96, 40, + 3,161, 37,102, 48, 95, 71, 29,186, 43, 44, 9, 33, 29,157,231,218,160,148,230, 17, 66,134,116,234,212,233,167,213,171, 87,171, + 42, 86,172,136, 11, 23, 46, 32, 59, 59, 27, 38,147, 9, 50,153, 12,209,209,209,200,205,205,197,183,223,126,171,215,233,116, 67, + 40,165,121, 37,113, 2,120,167, 81,163, 70,159,207,153, 51, 71, 89,191,126,125,100,103,103,163,176,176,176,216, 44,214, 1, 1, + 1, 80,169, 84, 56,124,248, 48,182,108,217,162, 7,240,142, 23, 78,119,106, 14,102,179,217, 33,184,188, 9, 45, 23, 78,141,104, +213,209,233,116, 0, 96, 41, 87,174, 92, 20, 0, 92,187,118, 13, 0,110, 36, 38, 38, 78,169, 88,177, 34, 89,177, 98, 5,165,148, +110,113, 39,178, 92, 56,179, 91,181,106,149, 3, 32,202,100, 50,201, 0, 32, 47, 47,207, 28, 22, 22, 22,161, 80, 40, 4,149, 74, + 37, 40,149, 74, 33, 37, 37,197,106,181, 90,101, 0,208,170, 85, 43, 19,128, 84, 56,249,130,184,112, 10, 0,242,151, 46, 93, 58, +101,232,208,161,205,154, 55,111, 94,107,244,232,209,103,158,127,254,121, 46, 54, 54, 54,184,160,160,192,112,229,202,149,156, 79, + 62,249,164,224,224,193,131, 29,165, 82,233,205,165, 75,151, 78, 1,144,111,191,247, 46, 78,171,213,250,199,246,237,219,159,237, +222,189, 59,159,156,156,140,180,180, 52,135,200, 74, 75, 75, 67,245,234,213,113,224,192, 1,155,217,108,222, 94,138,247, 89, 86, +150, 28,198, 89,212, 8,161, 98, 94,247, 36,176,196,198,148,175,156,206,162,168,127,255,254,197,172, 88, 50,153, 12,235,214,173, +115, 91,110,184,153,225,188,163,235,124, 82, 98,152,222,122,235,173, 98,162,237,189,247,222,243, 24, 52,111,239, 83,228,201,251, + 50,182,248,168, 67, 15,249,188,164,112,138,101,167, 84, 42,197,123,239,189,231,179, 69, 11, 46, 62, 90,238, 56,197,184,183,105, +211, 6, 58,157,206, 33,100, 61, 89,180,188,189, 79,155,205, 54,110,225,194,133, 52, 32, 32,224,137,252,252,252,255,221,186,117, +107,153, 78,167,107,146,151,151, 87,162, 69,203,104, 52, 42, 88, 62, 98,156, 15, 98, 46,173,255,148,208,178, 87,146, 40, 87,174, + 92,177,181,179, 56,142, 43,182,149,198,207,192,158,113,183, 18, 66,158,110,209,162,197,247,227,198,141,243,175, 95,191,190,180, + 66,133, 10,208,106,181,184,126,253, 58,206,158, 61,107,221,176, 97, 67,190, 78,167,251, 31,165,116,171, 15,124,203, 9, 33, 91, +186,116,233, 50,185,105,211,166, 47,189,255,254,251,146,170, 85,171, 34, 47, 47, 15,193,193,193,136,136,136,192,197,139, 23,177, +113,227, 70, 91,102,102,230,231, 0,166, 82, 74, 51, 74,219,224, 55,155,205, 24, 52,104, 16, 4, 65,192,252,249,243, 65, 8, 41, + 77,243,214,108, 54,155, 41, 0,146,153,153, 9, 0, 58,251,236,210,184,114,229, 10, 0,220, 76, 72, 72,240, 7,128,237,219,183, + 19, 0,190, 46,233, 67,157, 45, 91,213,171, 87,191,238, 90, 56,138,150, 44,209, 10, 6,239, 11, 65, 27, 6, 12, 24,144,174,211, +233,186,188,254,250,235,147, 23, 47, 94, 60,120,241,226,197,119, 93, 20, 16, 16,176,114,238,220,185, 83, 7, 12, 24,144,238,201, +154,101,183,224,189, 59,108,216,176, 1,167, 79,159,246, 87, 42,149,208,106,181,200,202,202,130,217,108, 70, 98, 98, 34,210,211, +211,177,124,249,242, 2,189, 94,255, 1,203,142,255, 12,156,133,129, 39,171,150, 55,145, 85,146, 85,231,151, 95,126,113, 59, 71, + 85,105, 57, 93,197,134,175,115, 91,149,212, 40, 18,167,165,113, 55,101, 68,105,202, 53,119,188, 60,207,227,227,143, 63,118, 76, +218,234,206,146, 85, 26,139,150,200, 25, 18, 18, 82,100, 38,183, 47,153,212,173, 91,183,123,230,181, 47, 71,246,178,211, 51,102, +140, 31, 63,126, 74,245,234,213,171, 2, 80, 56,191, 3,182, 72, 3, 3, 67, 25, 11, 45,155,205,150, 84,173, 90,181, 98, 5,156, +183,197, 76, 45, 22, 75,146,143,153,123, 11, 33, 36,113,238,220,185,175,104, 52,154,142, 58,157,174,142,189,224, 56,173,213,106, +183, 27,141,198, 5,165, 89, 4,218, 46,156,198, 18, 66,230,119,233,210,229,195,246,237,219,247,123,227,141, 55, 8,165, 20, 75, +150, 44,161,127,253,245,215, 90, 0,239, 80, 74,255,186,151,151, 20, 18, 18,114,238,219,111,191,141,252,233,167,159, 96,177, 88, +176, 96,193, 2,248,251,251,159, 43, 69,248,210,121,158,255,174,121,243,230,207, 28, 56,112, 96, 57,165,244,148, 92, 46, 95,214, +178,101,203, 97, 7, 14, 28,248,129, 82,122,150,231,249,101, 77,155, 54, 29,118,228,200,145, 53,148,210, 19,165, 8,158,195,178, +101,181,186,239,105,116,103,201,242,130,252, 17, 35, 70,152, 71,140, 24,241,198,128, 1, 3,190, 58,114,228, 72,147,220,220,220, + 58, 0, 16, 20, 20,116,186,113,227,198,135, 87,175, 94,125,209,110,201, 50,120,251, 54,132,144,222,117,234,212, 89, 63,125,250, +116, 77,173, 90,181,248,202,149, 43,227,198,141, 27, 56,115,230,140,245,155,111,190, 41,212,235,245, 61, 41,165, 57, 44, 59,254, +115, 66,139, 82,138,160,160,160, 98,141, 40,113,200,127,105,187, 11,157, 43,102,113,169, 30, 87, 94, 79,156, 37, 77,155, 32,194, +207,207,207, 49,185,169, 47, 46, 11,130, 80,242,124,108,148, 82, 7,167,184,249, 32,178,188,142, 16,180, 47,129,227, 51,167, 47, +211, 59,104, 52, 26, 88, 44, 22, 7,175, 15, 35, 63, 73, 41,191,217, 47, 0,126,169, 92,185,242, 21, 0,149,152,184, 98, 96,120, +128, 66, 43, 59, 59,187,209,131,124,176, 93, 72, 77,181,111,101,197,249, 23,128, 1,132,144, 57,127,254,249,167,216,143, 48,205, +219,122,137,222,112,225,194,133,238, 82,169,244,139,149, 43, 87, 54,165,148, 34, 48, 48,240,224,141, 27, 55, 94, 40, 13,135,213, +106, 29, 65, 8, 25, 35,142, 34, 52,153, 76, 35, 8, 33,175, 80, 74, 11,157,206, 59,246, 75, 27,117, 0, 70, 74,105,140,135,243, +198, 82,136, 44,135,101, 11,128,105,245,234,213,133, 0, 78,226,239,121,178, 44,246,205, 0,167,238, 66, 47,223,101, 7, 33,164, +242,123,239,189, 55, 67, 34,145,116,208,106,181,177, 26,141,230,182,213,106,253, 67,167,211,189, 67, 41,205, 98, 89,241,159,131, +201,100, 74,174, 86,173, 26,239,174, 1, 85, 82, 69, 94, 82,195,202,102,179, 37, 85,169, 82,197,107,227,204, 13,103,114, 9,233, +232,102, 98, 98, 34,231, 43,151, 8,179,217,156, 94, 82, 56, 19, 19, 19, 81, 90, 78,111,113, 79, 72, 72,112, 27,119, 47,130, 48, +185,132,242,227,158, 56, 75,122,159, 37, 65,175,215,231,132,135,135, 23, 26, 12, 6,169,209,104,148, 90,173,214, 98,230, 71,149, + 74,149,193,114, 14, 3,195,125, 10,173,127, 51,236,194,170, 71, 25,242, 25, 1, 60, 83, 6, 60, 6,151,253,194,146,246, 75,137, + 7, 97, 17, 18, 0,232,202,232, 29,102, 2,120,158,101,185, 71, 15,153,153,153, 79,148, 53,103, 86, 86, 86,153, 55,212, 50, 50, + 50,154, 61,128,184, 55,250,175,114,150,132,228,228,228, 39, 88,206, 96, 96, 40, 27,112,236, 21, 48, 48, 48, 48, 48, 48, 48, 48, + 60, 24, 16, 0, 29,221,157, 40,205,104, 2, 66, 72,199,210, 62,216, 27, 63,227,100,156,140,147,113, 50, 78,198,201, 56, 31, 63, + 78,111,220,143,221,104, 70, 74,233, 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,254,141, 32,132, 84, 45, 95, +190,252,249,106,213,170, 37, 19, 66,134, 63,224,103, 13,105,214,172, 89,150, 82,169,220, 74, 8,169,202,222, 62, 3, 3, 3, 19, + 90, 12, 12, 12,143,181,200,170, 83,167,206,222, 11, 23, 46, 84,223,190,125,123, 76,108,108,236, 71, 15,242,121,141, 26, 53,154, +189,103,207,158,144,223,127,255,189, 83, 84, 84,212,238,123, 17, 91,132,144,170,241,241,241,231,171, 85,171,150, 68, 8, 25, 82, +198,239, 99,120,243,230,205,179, 21, 10,197, 22, 38, 4, 25,254, 3,249,191, 54, 33,164, 14, 19, 90, 12, 12, 12, 12, 15, 80,100, +237,223,191, 63,212, 96, 48,224,194,133, 11,200,200,200, 56,241, 32,159,121,233,210,165,156,253,251,247, 35, 46, 46, 14, 63,252, +240, 67,120, 66, 66,194,158,210, 8, 26, 49,204,231,207,159,175,190,125,251,246,216,136,136,136, 79,202, 50,124, 77,154, 52,249, +112,207,158, 61,193, 91,183,110,237, 28, 30, 30,190,155,137, 45,134,199, 48,223, 43, 8, 33,207,112, 28,119,184,118,237,218,167, +107,213,170,117,138,227,184, 3,132,144,254,132, 16,254, 63,249, 78,196, 37, 22, 54,111,222,188, 11, 0,186,117,235,214,134, 37, + 21, 6, 6,134,251, 44,108,107,213,170, 85,235,224,193,131, 7,213,122,189, 30,107,214,172,193,251,239,191,111,201,206,206,222, + 3, 64,235,230,150, 35, 0, 62,243,101,233, 45, 66, 72, 0,128, 49, 0, 26,187, 57,173, 9, 9, 9,105, 53,101,202, 20,233,147, + 79, 62, 9,131,193,128,190,125,251, 26, 46, 93,186, 84,159, 82,122,201, 87, 97,168,215,235,113,244,232, 81,244,236,217,115,171, +197, 98,233, 82, 86,239, 37, 48, 48,240,236, 47,191,252, 82, 51, 38, 38, 6,215,174, 93,195,176, 97,195, 50,210,210,210, 90,123, + 11, 27, 3,195,191, 32,207, 87, 0,240,146,159,159,223,200,182,109,219, 6,247,236,217, 19,161,161,161,176, 90,173,184,125,251, + 54, 54,109,218,132,253,251,247,167,152, 76,166,133, 0,190,164,148,230,186,227,121, 28,181, 8,161,148, 98,243,230,205, 20, 64, + 91,123,228,118,177, 36,195,192,192,112,159,133,238,126,157, 78,215, 76,167,211,161,160,160, 0,229,202,149,131, 84, 42,117,123, +109,122,122, 58,246,237,219,135,151, 95,126,249, 92,106,106,106,235,146,214,189, 36,132, 4, 55,104,208, 96,255,142, 29, 59,170, +250,251,251, 59,142, 11,130, 0,179,217, 12,139,197, 2,179,217, 12,163,209, 8,163,209, 8,185, 92, 14,149, 74,133,144,144,144, + 51,148,210, 58,190,138,172,227,199,143, 99,232,208,161, 25, 89, 89, 89,101, 42,130, 8, 33, 85, 35, 34, 34,118, 47, 95,190, 60, + 60, 49, 49, 17,183,110,221,194,115,207, 61,151,121,243,230,205, 86, 76,108, 49,252,139,243,251,196,167,159,126,250,195,200,200, + 72,174,118,237,218,136,142,142,134,209,104,132, 94,175, 7,165, 20, 60,207,131, 82,138,188,188, 60,236,222,189, 27, 59,118,236, + 48,230,228,228,124, 11, 96, 1,165,244,178,147,200,122, 44,181,136, 67,104,117,235,214,141,176,228,194,192,192, 80, 70, 5,239, +233,188,188,188,218, 70,163, 17, 90,173,214,167,123,174, 93,187,134,225,195,135,159, 75, 77, 77,109,225,206,178, 69, 8, 9,104, +208,160,193,161,221,187,119, 87, 53, 24, 12,200,207,247,190,238,188, 92, 46,135, 82,169, 68,104,104,232, 1, 74,105,115, 79, 45, +241,218,181,107, 31, 61,112,224, 64,136, 94,175,199,137, 19, 39, 48,100,200, 16,115,118,118,246, 94,184,183,190, 1, 64, 54,138, +214, 81,189,233,134, 47, 30,192, 43, 0, 42,120,184, 87, 19, 30, 30,222,114,197,138, 21,178,138, 21, 43, 66,167,211,161,127,255, +254,217,151, 46, 93,106, 76, 41,189,206, 82, 15,195,191, 48,191, 95,186,112,225, 66, 21,155,205,134,204,204, 76, 24,141, 70,232, +116, 58,135,208,146, 72, 36,160,148,194,106,181, 58, 26, 70,199,142, 29,195,246,237,219,233,181,107,215,222,167,148, 78, 19,133, +214,227,168, 69,120,150, 68, 24, 24, 24, 30, 0, 6, 52,105,210,228,196,111,191,253,166,148,203,229,216,184,113,163,199,174,195, +200,200,200, 90,203,150, 45, 75, 72, 76, 76,196,162, 69,139,106,246,237,219,119, 12,128, 25,110, 56,199,236,216,177,163,170,193, + 96,192,137, 19, 39, 48,108,216,176,235,105,105,105,103, 93, 69, 76, 66, 66, 66,171, 79, 62,249, 68,218,176, 97, 67,228,231,231, +163, 83,167, 78, 58, 0, 47,149, 16,214,177, 59,119,238, 12,209,235,245, 40, 40, 40, 64,219,182,109,145,149,149, 37, 3,208,222, +211, 13,122,189, 30, 21, 42, 84,168, 10,224, 46,241, 22, 26, 26,250,245,173, 91,183,218,169, 84,170, 18, 95,144,217,108, 70, 82, + 82, 18,130,130,130,176,105,211,166,144, 74,149, 42,189, 11, 96, 4, 75, 58, 12,255, 70,152, 76, 38,252,248,227,143,104,208,160, + 1,106,212,168,129,194,194, 66,135,232, 50,153, 76, 14,145, 5, 0, 28,199,161,113,227,198,168, 82,165, 10,121,237,181,215,134, + 0,152,246, 56,191, 27, 81,104, 77, 97, 62, 90, 12, 12, 12,101, 5, 74,233, 37, 66, 72,253,142, 29, 59,238, 89,187,118,109, 88, +215,174, 93, 81,169, 82, 37,105,159, 62,125,194,181, 90,109, 7,151,214,112,240,176, 97,195,142,222,190,125, 59,193,126,168,177, + 7,218,198,254,254,254,162,111,211,245,180,180,180, 70,174,221,140, 10,133, 98,203,201,147, 39,165,114,185, 28, 71,142, 28,193, +240,225,195, 51,175, 95,191,238,173, 91, 46,200,100, 50, 65, 34,145, 0, 0,146,146,146,188,198,239,214,173, 91, 16, 4,193,232, +238, 28,199,113,138, 99,199,142, 33, 38, 38,166, 68, 14,142,227, 32,147,201,156, 15,229,178,148,195,240, 47,133,197,100, 50,161, + 81,163, 70,184,126,253, 58,142, 29, 59,230, 16, 92,153,153,153, 72, 73, 73, 41,118,241,225,195,135,113,252,248,113,180,110,221, +218,149,231,177,212, 34,188, 61, 66, 31,108,222,188,153, 9, 44, 6, 6,134,178, 22, 91,173,122,244,232,177,123,249,242,229,225, +229,202,149,131,191,191,127,128,155,235,114, 8, 33,103,165, 82,105,130,175,220,105,105,105,103,221,249,114, 69, 69, 69,213, 55, +153, 76, 56,126,252, 56,134, 12, 25,146, 97,247,249,242,230,251, 52,189, 67,135, 14, 61,182,110,221, 26,162, 84, 42,113,246,236, + 89, 95,186, 14,111, 0, 88,224,238, 68, 70, 70,198,144,214,173, 91,191, 7, 32,196,195,189,154, 42, 85,170,180, 60,122,244,168, +140, 16,130, 27, 55,110,160,127,255,254,217, 0, 62,101,169,134,225, 95,138,201, 79, 63,253,244, 55, 99,198,140, 9,108,218,180, + 41,146,146,146, 28,130,171,126,253,250,168, 91,183, 46,254,250,235, 47,108,217,178, 5,199,143, 31,135, 66,161, 64,165, 74,149, + 80, 56,231, 19,224, 19, 88, 68,146,199, 85,139, 56, 70, 29, 50, 48, 48, 48, 60,144, 66,134,144,170, 50,153,108,126,120,120,120, +189,228,228,228,215, 41,165, 63,184,156, 15,238,215,175,223,217, 85,171, 86, 69,223,184,113, 3, 21, 43, 86,220, 72, 41,237,229, +134,103, 3,165,180,231,181,107,215,208,162, 69, 11,183, 22, 45, 66,200,240,168,168,168,169, 5, 5, 5,121, 58,157,174,191,175, + 14,230,132,144,170,149, 43, 87,222,179,113,227,198, 48,181, 90,141,243,231,207, 63, 48,103,248,106,213,170,237, 61,124,248,112, +168, 84, 42,197,145, 35, 71, 48,108,216, 48,230, 12,207,240, 56,228,115,127, 0,227, 19, 19, 19,223, 28, 53,106,148,162,102,205, +154, 72, 74, 74, 66, 70, 70, 6,114,114,114,112,240,224, 65, 0, 64,108,108, 44, 98, 99, 99,113,241,226, 69,236,219,183, 47,191, +176,176,112, 4,165,244,167,199,250,221, 48,161,197,192,192,240,144, 11,228,120, 56, 57,139,247,235,215,175,209,138, 21, 43,162, +179,178,178,112,232,208, 33,244,237,219,247, 29, 74,233, 12, 55,247,189,157,154,154,250, 33, 0,156, 57,115,198,213, 71,203,163, +115,122,105, 68, 80,133, 10, 21,246,172, 89,179, 38, 44, 52, 52, 20, 23, 46, 92, 64,255,254,253,207,106,181,218,218,101, 21,119, +181, 90,189, 53, 53, 53,181,147, 76, 38,195,129, 3, 7, 48,100,200, 16, 54,189, 3,195,227,150,191, 35, 0,188, 91,179,102,205, +151, 70,142, 28,201,199,199,199, 35, 57, 57, 25,127,254,249, 39, 42, 85,170,132,219,183,111, 99,199,142, 29,166,140,140,140,249, + 0,102, 81, 74,243, 30,251,151,242, 32, 87,172, 6, 91,217,156,113, 50, 78,198,121,247,117, 91,206,157, 59, 71, 69,216,108, 54, +154,156,156, 76,183,110,221, 74,163,162,162,206, 2, 8,112,199, 9, 32,160, 70,141, 26, 23, 46, 94,188, 72,111,221,186, 69,205, +102,179,131,227,194,133, 11, 20,192,174,251, 13, 39,128,170,177,177,177,233, 59,119,238,164, 23, 47, 94,164, 81, 81, 81,183,203, + 50,238, 21, 42, 84, 72,207,200,200,160,127,254,249, 39, 13, 15, 15, 79, 7, 80,149,165, 37,198,249, 56,114,218, 27, 82, 43, 26, + 54,108,104, 91,184,112, 33,125,233,165,151,104,124,124,188, 13,192,215, 0, 98, 31,164,246,120,212, 54, 54,234,144,129,129,225, + 97, 67,113,240,224, 65, 40, 20, 10,199,129, 83,167, 78, 57,207,163,149,239,161, 81,152, 79, 8,105,209,181,107,215, 61, 11, 23, + 46,172, 97,177, 56, 92, 59,176,115,231, 78, 0, 48,150, 65,195,243, 18, 33,164,117,151, 46, 93, 22,132,134,134,214, 75, 77, 77, +157, 92,150, 17,191,113,227,198,235,117,234,212,153, 81, 80, 80,144, 95,154,174, 77, 6,134,127,161, 17,231, 6,128,161,132,144, +143,142, 29, 59,246, 14, 0, 10, 96, 58,165,244,252,127,237, 93, 48,161,197,192,192,240,176, 49,252,249,231,159,119,117, 22,247, +105,102,120,187,227,124,243,110,221,186,185,206, 12,239,209, 57,253, 94,196, 22,128,206, 15,168,242,249, 1,192, 15, 44, 9, 48, +252,135, 4,215, 89, 0, 3,255,203,239,128, 9, 45, 6, 6,134,135, 93,240,222, 4,240,220,125,220,159, 15,247,243,108, 49, 48, + 48, 48, 60,114, 96,139, 74, 51, 48, 48, 48, 48, 48, 48, 48, 48,161,197,192,192,192,192,192,192,192,240,239, 2, 1,208,209,221, + 9, 74,233,118,159, 73, 8,233, 88,218, 7,123,227,103,156,140,147,113, 50, 78,198,201, 56, 25,231,227,199,233,141,187, 52,250, +227, 95, 1, 31,135,113, 18, 54,244,149,113, 50, 78,198,201, 56, 25,167, 47,156,246, 70, 60, 65, 81,175, 9, 39,238, 63,226,211, + 17,144, 71, 53,238,255, 21,206,255,228,244, 14,132, 16,199,203, 34,132, 8, 0, 4, 90, 6, 51,156, 18, 66,196, 15, 81, 38,124, + 12, 15,192,212, 89,244,141,200,223,122,156,125, 39, 6, 6,134, 82,149, 29, 18,167,202,214, 6,192, 70, 8,193,163, 86,150,148, +101, 61,247, 32,226,254, 95,230,124, 92,192,151,244,194, 36, 18,201,214,176,176,176,118,153,153,153,130,253, 56,228,114, 57, 56, +142,131, 84, 42,213, 23, 20, 20, 4,220,195,199,248, 58, 50, 50,114,120, 86, 86,150,192,113, 28,148, 74, 37, 8, 33, 14,206,220, +220,220,128,127,250,165, 84,168, 80, 33, 71,175,215,251,185, 30, 87, 42,149,134,155, 55,111,250,255, 23, 10, 74,153, 76,246,116, + 72, 72, 72, 80, 70, 70, 6, 21, 23,191,149, 72, 36,226, 66,184,214,220,220,220,239,124,229, 11, 9, 9, 57, 28, 18, 18, 18, 36, +222, 79, 8, 65, 86, 86, 86,110, 90, 90, 90, 19, 0, 80,169, 84,251, 52, 26, 77, 40,207,243,144, 72, 36,144, 72, 36,208,233,116, + 89,153,153,153, 45, 88,181,245,239,196,218,181,107, 37, 93, 98,159,171,196, 83,125, 93,142,163,129,130, 64,242,172, 68,117,106, + 75,242,215, 87,125,185,191, 95,191,126, 54,246, 22, 31, 30, 20, 10,197,252,200,200,200,145,133,133,133, 58, 66, 8, 37,132,160, +168, 26,192, 93,191, 54,155, 45, 41, 51, 51,179,145,151,202, 86, 42,151,203,231, 70, 69, 69, 13,211,233,116, 58, 59, 31, 37,132, + 32, 58, 58,186, 24, 31, 0, 88, 44,150,164,140,140,140, 70,190,132, 53, 34, 34, 98,169, 74,165,250,159, 78,167,211,218,133,145, +115, 15,141,115,101,254, 87, 70, 70, 70, 43,111,194, 64, 46,151, 47,136,140,140,124,214, 30,119, 16, 66,104,120,120,248,125,199, + 61, 50, 50,114,152, 86,171, 45, 22,247,136,136, 8,183,156,158,226,238,142,211, 57,156,132, 16,132,135,135,223,119, 56, 31, 69, +206,199, 94,104, 1,224, 8, 33, 27, 90,180,104,209,118,215,174, 93,220,133, 11, 23,184,234,213,171,195,102,179, 65, 16,138,210, +117, 92, 92,156,250, 30, 42,240,101,173, 90,181, 26,180,123,247,110,110,195,134, 13, 92,227,198,141, 65, 8,129,205,102,131,205, +102, 67,237,218,181, 85,247, 41, 16,252,120,158,127, 77, 46,151,183,177, 90,173, 53, 0, 64, 42,149,158, 55, 26,141,187,172, 86, +235, 60, 74,105,161, 47, 60,102,179, 89,157,158,158,126,215,187, 73, 76, 76,148,223,107,216, 2, 2, 2,246,115, 28,151,232,120, +193,118,193,225, 46, 51,139,191,148,210,107, 25, 25, 25,205, 61,113, 6, 7, 7, 59, 56, 61,113,184, 30, 19, 4,225, 90,122,122, +122,115, 47, 34,171,111,171, 86,173, 2,183,111,223, 78,110,223,190, 77, 84, 42, 21, 4, 65,128,205,102,131,197, 98, 65,205,154, + 53, 75, 53, 45, 72, 80, 80, 80,192,196,137, 19, 43, 61,245,212, 83, 88,183,110, 29,158,121,230, 25,180,108,217,242,178,120, 94, +163,209,132,158, 59,119,174, 74, 72, 72, 8,116, 58, 29,242,242,242,208,169, 83,167,127,125,230,106,218,160,220,116,194, 17,199, + 92, 81,212,106,203, 62,120, 50,249,221,251,229, 13, 10, 10, 58, 46,151,203, 35,197,239,202,113,156,219,111,237,124,204, 96, 48, +164,101,102,102, 54,240,146,127, 42, 0,232, 33,145, 72, 42,243, 60, 95, 13, 64, 5,171,213, 26, 9, 0, 50,153, 44, 77, 34,145, +220,176, 88, 44, 23, 77, 38,211, 21, 0,191,216, 39, 36,116,139, 46,177,207, 85, 34, 86, 93,191, 2,163,208, 85, 93,113, 86, 85, +221, 95, 19, 47,169, 21,186, 95,187,196, 62,183,214, 87,177,245, 15, 54, 52,170, 2, 88,141,162, 5,165, 95,178,207, 3,116, 63, +124,177, 0,122, 2,168, 42,147,201, 18,204,102,115, 38,128, 99, 0,182, 83, 74, 47, 19, 66,226,195,195,195,127, 16, 4,193,152, +149,149,245,156,187,101,132,154, 53, 42,127,148,227,184, 56,216,101,132, 64,109, 73, 7,142,222, 46,147, 10, 74, 34,145, 44,232, +211,167,207,179,107,215,174, 85, 31, 59,118, 76, 93,163, 70, 13, 71,249, 36, 8, 2, 92, 13, 17, 9, 9, 37,174,253, 77, 0,240, + 28,199,205,239,215,175,223,224, 21, 43, 86,168,111,222,188,169,142,137,137,113,112, 58,139, 56, 17, 49, 49, 49, 62,133, 53, 52, + 52,244,235,167,158,122,106,232,242,229,203,165, 27, 55,110, 84,133,133,133, 33, 52, 52, 20, 50,153,236,174,107, 91,180,104, 33, +120,161,227, 56,142, 91,208,171, 87,175,161,171, 86,173, 82, 31, 58,116, 72, 93,187,118,109, 72, 36,146,251,142,123,239,222,189, + 7,255,248,227,143,234,211,167, 79,171, 43, 87,174, 12,142,227,192,113,220, 93,124, 28,199,161, 92,185,114, 62,113,246,236,217, +115,240,234,213,171,213,199,143, 31, 87, 87,171, 86,205,241, 62,157,186,237, 74, 29,206, 71,156,243,241, 21, 90,118, 51,234,138, + 22, 45, 90,116,217,181,107,151, 4, 0,142, 31, 63,142,236,236,108,196,198,198,194,207,207, 15, 10,133, 2, 6,131,129,150,178, +176,249,218, 46,178,164, 0,176,254,127,189,113, 77, 10,188,156,110,130, 76, 38,195, 95,127,253, 5,137, 68, 66,239,163, 48,107, + 29, 16, 16,176,252,167,159,126, 10,110,208,160, 1,151,153,153,137,132,132, 4,100,103,103, 55,217,189,123,119,195,231,158,123, +238, 57, 66,200, 51,148,210,221,190,114,254,250,235,175,208,104, 52, 80,171,213,208,104, 52, 48,153, 76,228,158, 95, 52,207,199, +221,184,113, 35,194,207,207, 15,130, 32, 56, 54,151,254,109, 7, 4, 65, 64,149, 42, 85,204, 94, 10,200,184,155, 55,111, 70,168, + 84, 42, 80, 74,139,241,217,108, 54, 40, 20, 10,231,150, 3,108, 54, 27, 18, 19, 19,205,222, 44, 89,162,200, 2,128,149, 43, 87, + 34, 42, 42, 10, 17, 17, 17,208,104, 52, 80,169, 84,197, 42,118, 31, 11,114,116,233,210, 5, 31,124,240, 1,102,205,154,133,241, +227,199, 23, 43,104,165, 82, 41, 66, 66, 66,240,251,239,191, 35, 32, 32, 0,241,241,241,144, 74,165,255,126,203, 32, 71, 66, 14, + 28,189,229,176,208, 62,217,190, 58,223,180, 97,252, 98,251, 23, 6,199, 1,130, 80, 84,117, 18, 2,106,181, 8, 57, 71, 78, 37, + 79,246,225,125,198,220,188,121, 51,194,121,102,245,146, 96,179,217, 16, 27, 27, 43,241,146,127,186,214,170, 85,107,253,232,209, +163,101,149, 43, 87, 38, 50,153, 12, 60,207,131,231,121, 49, 61,198, 83, 74,227, 5, 65,104,155,150,150, 70, 23, 45, 90,244, 17, + 33,164, 15,165,244, 87,183,233,157,234,235, 22, 24,133,174,123, 78,160, 73,191,142,111,225,247, 53, 19,155,180,170, 47,192, 95, +173,191, 10,224,145, 21, 90,132,144,170,181,106,213, 58,113,232,208, 33,165,217,108, 70,211,166, 77, 15, 18, 66, 26,222,203, 12, +238,132,144, 96, 0,159, 76,154, 52,105,232,232,209,163, 37, 65, 65, 65,144,203,229, 40, 40, 40,192,213,171, 87,135,125,247,221, +119,148, 16,242, 25, 0,255, 27, 55,110, 52, 59,124,248, 48,218,181,107,247, 10,128,215,238, 86, 4,146,184,125,135,175, 71,136, +251, 61,187,212,145, 53,111, 28,159, 86,212, 32,115,189,154, 66,176, 9, 73,135, 78, 36, 53,242, 33,140, 31, 61,253,244,211, 67, +214,174, 93,235, 7, 0, 75,150, 44,193,211, 79, 63,141,144,144, 16,168,213,106,200,100, 50, 72,165,210, 98,191, 94, 44, 68, 18, + 0, 31, 13, 28, 56,176,223,138, 21, 43,252, 1, 96,197,138, 21,232,221,187, 55, 66, 67, 67,225,239,239, 15,185, 92, 14,137, 68, + 82,234,111, 19, 26, 26,250,117,203, 38, 77, 70, 44, 95,190, 28, 0,240,206,171,175,226,169, 39,158,128,159, 90, 5,181, 74, 14, +241, 93,200, 37, 82, 60,249,242, 56,111,241,230, 0,204,121,250,233,167, 7,172, 90,181,202, 31, 0,142, 29, 59,134,244,244,116, + 68, 70, 70, 66,165, 82, 65, 46,151, 59,226, 76, 8,129, 74,165,242, 41,238, 79, 63,253,116,191, 31,127,252,209, 31, 0,150, 45, + 91,134, 46, 93,186, 56,226,174, 80, 40, 32,147,201,138,109,174,162,211, 29,103,159, 62,125,250,173, 94,189,218, 31, 0,190,251, +238, 59,116,236,216, 17,193,193,193,142,247, 41,114,149,230, 27, 61,202,156,143,181,208, 18,125,167, 34, 35, 35, 7,236,217,179, +135,115, 18, 9, 80, 40, 20, 80, 40, 20,144,203,229,142,238,195, 82, 20, 56, 36, 50, 50,114,248,238,221,187, 29, 55,153,232, 93, +166,235, 82, 87,224, 78,252, 29,219,181,107,247,227,166, 77,155,148, 50,153, 12,122,189, 30,103,207,158, 69, 96, 96, 32,228,114, + 57,122,245,234, 37,105,209,162, 69,104,219,182,109,215, 17, 66, 6,251, 50,162,129, 82, 10, 63, 63,191, 98, 66,235,126,187,152, + 85, 42, 21, 54,110,220, 8,137, 68,226,182, 0,115,254, 31, 17, 17,225, 75,188,161, 80, 40,176,127,255,126, 72, 36, 18, 72,165, + 82,240, 60, 15,169, 84,138,205,155, 55,227,141, 55,222, 64,102,102, 38, 8, 33,144, 74,165,240,247,247,218,235, 73, 66, 66, 66, +130, 68,145, 37,138, 32,149, 74, 5,169, 84, 74,120,158, 39, 98,215, 30, 33,132,248,218,231,206,113, 28,190,255,254,123,204,158, + 61, 27, 19, 38, 76,192,210,165, 75, 81,183,110, 93,103, 17,138,252,252,124, 4, 7, 7, 35, 56, 56, 24, 74,165,242,158,211,194, +163, 4,215,183, 51,119,222, 66, 53, 4,138, 34, 39, 16, 1, 16, 0, 10, 10,129, 10, 72, 75,190,138,247, 63,248,216,231,218, 71, +161, 80, 96,223,190,125, 14, 49,196,243, 60, 8, 33,112, 22, 72,226, 22, 21, 21,229,149, 79, 38,147, 77,249,249,231,159,229,223, +127,255, 61, 86,173, 90,229, 72, 91, 26,141, 6, 65, 65, 65, 8, 13, 13,117,108,113,113,113,228,155,111,190,145,213,173, 91,119, + 10,128, 95,221,127,115, 26,168,174, 56,171,106,191,142,111, 1, 0,250,189, 69,145,115,249,195,122, 92,238,228,192, 71, 89,100, +213,169, 83,103,239,254,253,251,149, 58,157, 14,130, 32,224,215, 95,127, 85,119,236,216,113, 15, 33,164, 85,105,197, 86,133, 10, + 21, 54,238,223,191,191, 69,120,120, 56,242,242,242,144,159,159, 15,139,197, 2,137, 68,130,248,248,120,124,244,209, 71,164, 87, +175, 94, 99,135, 13, 27,102, 80,169, 84,162,101,163,130,167,242,200, 25,139, 62, 93, 28, 68,105, 81,250,161, 2, 45,246,155,157, +126, 3,175,190,254,190, 79, 97, 44, 87,174,220, 75,235,214,173,243,115,182, 44, 57,139, 0,231, 50, 74,220, 60, 9, 3,187, 85, +131, 43, 95,190,252,136, 31,126,248,193,193, 25, 22, 22,230, 40,151,120,158, 7,199,113,216,179,103, 15,102, 78,153,132,224,240, + 24, 44,252,116,137,215,112, 70, 68, 68, 44,237,218,181,235,255,150, 45, 91,230, 56, 86,167, 98, 69,116,107,241, 4, 34,194, 2, + 16, 22, 92, 84,182, 81,129,224,212,197,235, 94,235, 35, 0, 92,185,114,229,158, 91,179,102,141,159,115,131, 80,140, 43, 0,232, +116, 58,135, 21,223,100, 50,161, 81,163, 70, 62,197,221,153, 83,180,182,137,162,205,181,172, 23, 27, 50, 37,113,150, 43, 87,110, +132, 40,132, 1, 32, 36, 36,164, 24,135, 84, 42,197,154,223,151,223, 85, 55,220, 47,103,105,191,187, 43,231,141, 27, 55, 48, 99, +198, 12, 71,153, 36, 90,245, 8, 33,136,141,141,197,194,133, 11, 75,226,116,135,198, 0,194,157,246, 77, 0,228, 78,191, 25, 40, + 90, 97,194,245, 58,241,184, 20, 64, 61,251, 57, 27,128, 2, 0, 65,110,248, 60,241,100,162,104, 25,161,112,151,235, 93,159,227, + 94,104,109,222,188,153, 2,192,198,141, 27,219,245,236,217,115, 95,102,102,166,112,225,194, 5,238,216,177, 99,144, 74,165,136, +136,136, 64,227,198,141,197,110, 53, 72,165, 82,104, 52, 26, 18, 20, 20,148, 38, 86,188,226, 75,116,238,107,119, 18, 52, 92,118, +118,182,176,109,219, 54,110, 69,159,206, 48, 81,160,254,123, 51,209,165,123,119,108,137,149, 67, 2,160,201,133, 76,168,213,106, + 94, 42,149, 90,196,143, 33,114, 58,251,110,185,138, 36, 66,136,191, 70,163,249,230,151, 95,126, 81,114, 28,135,130,130, 2, 8, +130,128, 22, 45, 90,128,227, 56,156, 57,115, 6,239,188,243, 14,214,175, 95,143,159,127,254, 89,213,160, 65,131,111, 8, 33, 53, + 40,165, 5, 78,133,216,118,119,137,212,223,223, 31,106,181,218, 33,180,196, 56, 59,155,192,197,235, 41,165,201,153,153,153, 13, + 75,226,180,217,108,232,221,187, 55, 8, 33,144, 72, 36,197, 10, 31,231, 95,153, 76,134, 51,103,206,220,149, 8,221, 9, 68, 65, + 16,208,178,101, 75, 0,128, 90,173,134,159,159,159,184,238, 27, 0,160,126,253,250, 48,153, 76, 8, 11, 11,195,249,243,231,221, + 21,224,197, 56, 51, 50, 50,104, 74, 74, 10, 89,177, 98, 5,164, 82, 41, 66, 67, 67,161, 86,171,201,242,229,203, 39,201,100,178, + 56,131,193, 32,152, 76, 38,200,229,242,133,162,117,139,231,121,109, 94, 94, 94,168, 39, 78,137, 68,130,209,163, 71,227,205, 55, +223,196,210,165, 75,241,226,139, 47,222,101,241, 50, 24, 12, 8, 11, 11,115,136, 45, 95,226,126,255, 66,232, 1,115, 10, 20,103, +143,111,193,185,211,219, 33,216, 4,216, 4, 10, 74,109, 16,172,192,177,109, 7,171,220,185,150, 18, 75, 65, 1,123, 7,135, 34, +175,208,218, 54, 76, 81, 13,192,134,157,153,198,249,222,210, 39,207,243,176, 88, 44,248,229,151, 95,112,245,234, 85,108,221,186, + 21,122,189,222,241, 30,155, 53,107,134, 17, 35, 70,184, 21, 90,174,156,148,210,101,183,111,223,174,223,178,101, 75,146,155,155, +139,220,220, 92,232,245,122,216,108, 54, 88,173, 86,240, 60, 15,165, 82, 9,149, 74,133,200,200, 72, 24, 12, 6,106, 52, 26,151, +121,226, 20, 4,146,167,251,107,226,165,223,215, 76,108,210,239, 45,138,181,179, 9, 42,149, 87,232,254, 56,234, 63, 98,195,222, +241,157, 0, 80,193,174, 29, 56,128, 90,108, 66,230,155,147, 62, 25,251,208,191,209,221, 34, 43, 84,175,215,163,160,160,168,120, +144,203,229, 88,187,118,109, 88,143, 30, 61,118, 19, 66, 90,123, 18, 91,238, 56,253,253,253,227, 37, 18, 9,206,156, 57,131,207, + 63,255, 28,127,252,241, 7,210,210,210,114, 98, 98, 98, 2,219,182,109,203,189,250,234,171,168, 95,191, 62,190,253,246, 91,165, + 55, 78, 74, 41,110, 92,222,131, 27, 87,246, 66, 16,168,147, 85,220,253,127,234, 99,220,181, 90,173,225,196,137, 19,126, 95,125, +245, 21, 34, 34, 34,144,144,144, 0,181, 90, 13,165, 82, 89,172,146,117,174,120,189,229, 77,189, 94,111,184,113,227,134,223,143, + 63,254,136,208,208, 80, 84,168, 80, 1,106,181, 26,114,185,220,209, 32, 88,177, 98, 5, 86,126, 48, 4, 55, 46,158, 70,239,110, +157,188,134, 83,173, 86,255,111,217,178,101,197, 76, 32,145,193,193,224,165, 28, 36, 82,130,224, 14,125, 0, 0, 57,127,254,228, +113,118, 72, 23, 78, 82, 80, 80, 96, 56,116,232,144,223,209,163, 71, 33, 8, 2, 42, 84,168, 0,157, 78,135,128,128, 0, 71,252, +183,109,219,134, 94,189,122,225,251,239,191, 71,179,102,205,188,198,189,176,176,208,112,250,244,105,191, 31,126,248, 1, 33, 33, + 33, 40, 87,174,156, 35,238,226, 38,149, 74, 33,145, 72,144,152,152,136,188,188, 60,248,249,249,121,253, 70,199,142, 29,243,251, +225,135, 31, 16, 28, 28,140,184,184, 56,135,197, 77, 20, 71,179, 23,127, 80,140, 67, 73,162,239,155,179,180,223,221,149,179,119, +239,222,168, 84,169, 18, 2, 2, 2,160,209,104, 28,220, 37,113,138, 90, 4, 64,219,110,221,186,237,114,249,132,225,132,144, 77, + 78,207,239, 78, 8,217,228,252,235,233, 58,251,223,214,147, 38, 77,106, 52,107,214,172, 25,205,154, 53,251,113,255,254,253, 43, + 61,241,121,226,153, 52,105, 82,173, 89,179,102,205,112,190,222,205,115, 60, 91,180,186,117,235, 70,236,145,228, 1,160,122,245, +234,200,206,206,134, 66,161, 64,227,198,141,145,153,153, 9, 63, 63, 63,200,100, 50, 80, 74, 49,118,236, 88,201,248,241,227, 35, + 56,142,131,213,106,117, 20,252, 30,250,218, 5,142,227,208,188,121,115,156,181,247, 8,117,233,222, 29,113,113,113, 16,157, 60, +148, 74, 37,198,142, 29, 75,222,120,227, 13, 94,180,102, 80, 74,161,215,235, 17, 29, 29,173, 42,161, 75,238,213,117,235,214, 5, +138, 38,121,177,235, 76, 34,145,224,194,133, 11,152, 51,103, 14,134, 13, 27,134, 91,183,110, 33, 38, 38, 6,111,190,249,166,223, +172, 89,179, 94, 5, 48,213, 91,129,236,231,231,231, 16, 89,106,181, 26,175,190,250, 42,223,162, 69,139, 8, 63, 63, 63,248,251, +251, 67,236, 6,180,217,108,168, 88,177,162, 87,105, 46, 8, 2,182,108,217, 2,158,231,189, 90,180,236, 9,208, 39,206, 67,135, + 14, 57, 68,154,115, 43,137, 16,130,179,103,207, 58, 68,157, 15,156,148,227, 56,104, 52, 26, 68, 69, 69, 65,165, 82, 65,173, 86, +147, 31,127,252,241,221,132,132,132,232, 55,222,120,131,203,207,207,231,154, 55,111,142,167,159,126,154, 23, 4, 1,102,179, 25, +181,106,213,242,106,121,219,181,107, 23, 62,255,252,115,188,248,226,139,110, 45, 90,162,179,100, 64,192, 63, 62, 22,162,204, 32, + 0, 48, 91, 45,208, 21,234, 29, 93,187, 54,155, 13,167,119,158,172,114,237,228,229, 90,155,126,252, 94, 10, 0,134,157, 63, 57, +223, 22,253,244,226,213, 85,219,134,200, 14,237,204, 54, 31,242,102, 41, 28, 55,110, 28, 38, 79,158,140,129, 3, 7, 98,219,182, +109,120,231,157,119,240,220,115,207, 21,179,104,249, 2,139,197,242,197, 51,207, 60,243,226,218,181,107,171,189,245,214, 91,156, +104,209, 82,171,213,162,143, 23,140, 70, 35,244,122, 61, 46, 94,188, 40, 60,255,252,243,151, 76, 38,211, 23,158,248,172, 68,117, + 74,173,208,253, 90, 49,142,171,164,189,254,177,127,203, 39, 42,232,137,170, 97, 94,159,170, 29,105,215,225, 21,130, 65, 41,168, + 0, 8, 20, 48, 26,181, 24, 59,246, 21,201, 63,245,157,156, 69,150,193, 96,192,137, 19, 39,208,174, 93, 59,220,190,125, 27,231, +207,159, 71,149, 42, 85,176,124,249,242,240,193,131, 7,151, 40,182, 92,113,250,244,233, 73,245,234,213, 91, 80, 88, 88,152, 93, + 88, 88,184, 0,192, 74, 74,105, 46, 33,164,198,213,171, 87, 23,109,217,178,165,213,251,239,191, 47,113,241,209,145,120, 50,143, + 90, 44, 86,232,245,198, 18, 5,150,184, 79,169,224,107,220,105,181,106,213,208,163, 71, 15, 72,165, 82, 71, 99,205,185,219,204, + 85,112,149, 84,126, 0, 16, 8, 33,136,137,137, 65,215,174, 93, 33,147,201,138,113,138, 21,107,215,174, 93, 49,110,234,123,248, + 98, 92,123,124,254, 76, 21,116,156,158, 86, 98, 56,117, 58, 93,225,142, 29, 59, 84,111,190,248, 34,234, 85,174,140,176,128, 0, +148,143, 12,135, 74, 33,135,204, 57, 76,196,187,145,157, 82, 74, 9, 33,130, 68, 34, 65,237,218,181,145,150,150,134,235,215,175, +227,250,245,235,224, 56, 14, 45, 91,182,116, 88, 97,174, 92,185,130,169, 83,167,194,104, 52,250, 28,247,202,149, 43,163,125,251, +246,144,203,229, 80,171,213,197,186, 12,197,119, 90, 80, 80,128, 74,149, 42, 97,195,134, 13,168, 90,181,170, 87,206,234,213,171, +163, 77,155, 54,197,222,167, 74,165,114,212, 27, 0,112,251, 80,161,227, 25,177,177,177,165,226,220,122,248, 22,190,218,182, 3, + 70,147,128,124,157,165,216, 13,209, 97, 1,216,251,195, 91, 62,197, 93,228,252,242,203, 47,145,155,155,235, 40,131, 68,163,137, +104,164, 40, 87,174, 28,150, 44,113,111,201,116,210, 34,196,195,247,235,238, 99,131, 74,188, 78, 76, 92,138, 89,179,102,205,112, +189,223, 27,159,243,121,151,251, 77, 46,226, 44,205,167,174, 67,177,126, 16, 51, 67,108,108, 44, 68, 63, 16, 49,163, 56, 10, 82, +171, 21,235,215,175, 71, 68, 68,132, 99, 11, 12, 12,244,152,176, 69, 63,162,113, 25, 69, 46, 66,191,199,200,112, 3, 64,183, 12, +234,240, 35,177,217,108, 88,183,110, 29,156,133,140,191,191,127,137,221, 72,114,185,188,109,227,198,141, 57,163,209,120,151,200, +154, 53,107, 22, 6, 15, 30,140,170, 85,171, 66, 16, 4, 20, 22, 22,162, 93,187,118,210,133, 11, 23,182, 45,141,208, 82,171,139, +252,254, 77, 38, 19,118,238,220,137,224,224, 96,132,134,134, 34, 36, 36, 4,254,254,254,226,200, 73,234, 77,108, 80, 74,209,187, +119,111, 71,226,115,182, 98,185,138,174,253,251,247,251,212, 37, 71, 41,197, 19, 79, 60, 1,141, 70, 3, 63, 63, 63,248,249,249, + 97,203,150, 45,142,107,154, 52,105, 2, 65, 16, 16, 17, 17,129, 3, 7, 14,148,216,253, 73, 41,165, 50,153,204,113,189, 84, 42, + 37,203,151, 47,159,148,152,152, 24,253,250,235,175,115, 18,137, 4,199,143, 31,199,185,115,231, 80,161, 66, 5,159,125,182,114, +115,115,239, 76,154, 52,201, 54,105,210, 36, 0, 64,173, 90,181,144,155,155,155, 46,158,207,207,207,207,234,220,185,115, 49,191, +141,204,204,204,172,127,189,208, 18, 4, 88,205, 86,232, 12, 6, 20, 22,232, 28,214,161,244,148,180,160,183,222,120, 77, 58,103, +236,179, 0,128, 55,230,127,138,130,165,127, 23,100, 63,189, 49, 40,162,207, 39,171, 38, 2,232,229,165,242,129,209,104, 68,124, +124, 60, 14, 31, 62,140,130,130, 2,116,236,216,177,152,197, 84,124,167,222, 76,244,148, 82, 19, 33,164, 69,247,238,221,143,204, +155, 55,175, 98,141, 26, 53,136, 86,171,133, 78,167,131,243,239,233,211,167,233,202,149, 43,175,233,116,186,230,148, 82,147, 39, +190, 45,201, 95, 95,237, 18,251,220,218, 63,142, 75,186, 71, 84,186, 20,144,156, 83,209,154,149,172,208,230,235, 47, 26,108,244, + 28,168, 13,176, 65, 0,181, 10,176,217,187,189,254, 41,168, 84,170, 69,123,247,238, 13, 53, 24, 12, 56,118,236, 24,134, 14, 29, +106,202,204,204,148, 3,192,255,254,247, 63,211,138, 21, 43,228,149, 42, 85,194,242,229,203,195,159,126,250,233, 53, 0,106,251, + 88,208,127, 15,224,123,215,227,161,161,161, 11,111,221,186,213,214,217,231, 71,108,172, 2,112,219,168,164, 2, 96,177, 88,160, +215, 27,145,151, 87, 0,147,217, 98, 47, 51, 5,216,108, 86,251,175, 0,171,189, 28,149,203,120,255,134,117,162, 11, 41,165,224, + 8,201, 61,122,250, 78, 57, 79,229,146,167, 46, 46, 95,172, 89,110, 96, 19, 71,153,133,134,134, 66, 42,149,226,251,239,191,199, +169,125, 91, 32,151, 80,216,172, 22, 88, 45,102,216, 44, 38, 72, 37, 18,252,113,252, 58, 58, 85,247, 62,144,155, 16, 66,195,194, +194,208,173, 89, 51,116,111,214,172,104,120, 27,207,195, 79,161,128, 90,166, 44,178,100, 1,160, 54, 14,240, 45, 41, 9, 98, 56, + 35, 35, 35,113,244,232, 81,140, 27, 55, 14,179,103,207,134, 74,165,114,140,126,190,112,225, 2, 86,175, 94,141, 78,157, 58,149, + 58,238,162, 5,111,226,196,137, 72, 73, 73,193,252,249,243,209,176, 97, 67, 72,165, 82,228,230,230,162,121,243,230, 72, 75, 75, +243,137,211,185,123, 79, 46,151, 23,179, 62,137, 2,176,180,223,200,153,243,217,222,209,216,184,111, 37, 8, 8, 14,254,240, 90, +177,186,104,201,170, 61,165,230,156, 60,121,114,177,112,250, 98,205, 42, 69,195,104,147, 47, 98,203,233,186, 99,162,177,117,226, +196,137,111, 19, 66, 54, 77,156, 56,241,237,153, 51,103,158,245,133,207,195,249,205,162, 46,116, 58,118,204,103,161, 69, 41,165, +114,185, 28,130, 32, 20, 19, 87,174,142,183,162, 41,208,217,212,232, 77, 20, 8,130,224, 72, 20,174,205, 54,137, 68,130, 3, 7, + 14,224,192,129, 3,197,142,127,245,213, 87, 37, 86,228, 86,171,181,134,191,191,127, 49,107,150, 76, 38,195,196,137, 19, 49,116, +232, 80,135,200,146,201,100,248,238,187,239,208,168, 81, 35,152, 76,166, 26, 94,252, 85,116, 81, 81, 81,156, 88, 16,105, 52, 26, + 50,110,220, 56,137,213,106,117,188, 19,113, 19,125,215,188, 37, 26,113, 20,203,214,173, 91,125,178,104,249,234,163, 68, 41,197, +201,147, 39,139,137, 55,113,212, 12, 0,156, 60,121,210,225,191,229, 11,167, 68, 34,129,205,102,131, 74,165, 34, 50,153,140,200, +100,178, 56, 81,100, 73, 36, 18,199,247,118,246,217,243, 22,247,228,228,228,118, 37,157, 79, 79, 79,127,108,167,113, 48, 91, 44, +208,235, 76, 40, 40,212, 99,202,204,111,139, 14, 78,193, 33, 0,135, 90,188, 52, 14,163,187,116,106,239,226, 7,224, 75, 65,227, +168, 28,215,173, 91, 7,169, 84,138, 13, 27, 54, 32, 32, 32, 0, 61,123,246, 68, 64, 64, 0,222,122,235, 45, 12, 28, 56,208,103, +139,150, 61, 45,229, 17, 66, 90,188,250,234,171, 71, 62,254,248,227,242,229,202,149,131,201,100,130,217,108,134,201,100,194,213, +171, 87,177,114,229,202,219, 58,157,174, 5,165, 52,207, 27,223,150,228,175,175,174,223,253, 70, 74,199,129, 79,235, 47,164,253, +142,212,212, 44, 88,173,201, 16,108, 86,152,173, 69, 35,152,109, 86, 43,172, 86, 27,100, 50, 73,192,199, 31,190,182, 77, 0, 5, +199, 17, 83,191,126,253,158,122, 88,223, 40, 40, 40,168, 86, 70, 70, 6, 46, 95,190,140, 97,195,134,165,102,101,101,157, 7,208, + 1, 0,178,178,178,246, 14, 29, 58,180,198,178,101,203,162, 18, 18, 18,224,231,231, 23,224,195,247,241, 3, 48, 26, 64,103,187, + 31,136,136,108, 0,211,194,195,195, 21,199,142, 29,187,203,250,191,123,247,110, 0, 56,228,222,100, 96,183,104, 25, 12,200,200, +202,193,200,151,222,117,152, 18, 0, 90, 76, 92, 80, 80,140,122, 25, 74, 0,200, 76,187,138,103, 71,142, 83,120,107, 16,184,171, + 8, 75,225,163,227,108, 41,114,164, 81, 63, 63,191,162,238,183, 13, 43,177,249,147,151, 0,155, 25,212,162, 7,204, 58,192, 92, + 8,193,164, 3,145,169, 0,139,222, 39,161,229,231,231, 7, 63,149, 10, 17, 65, 65, 69,147, 64, 74, 36,144, 74,121, 8, 22,128, +216,136, 67,144, 10, 54,159,210, 58, 13, 11, 11,131, 32, 8, 80,169, 84,184,113,227, 6, 70,143, 30, 13,179,217,140,222,189,123, +195,100, 50,193, 96, 48, 64,175,215, 35, 49, 49, 17, 58,157,206,167,184,139,229,188,216,251,243,218,107,175,161, 81,163, 70,152, + 58,117, 42, 38, 76,152,128,196,196, 68,140, 26, 53, 10, 43, 87,174, 68,173, 90,181, 74,228,117,126,159, 34,167,248, 93, 92,187, +248, 0,148,250, 27,185,114, 22,141, 15,192, 93,223,253,149,103, 58,148,154,115,214,172, 89,200,200,200,184,203,146, 37,254,143, +141,141,197,226,197,139,239,181,235, 95,180, 30, 69,186, 51,136,185,177, 68, 53, 70,145,239,148,113,230,204,153,103,103,206,156, +217,157, 16,178,105,230,204,153,221, 75,176,104,117,243, 98,241,234,134, 34,159, 44,159,192,187,244,141,182,117,182,148,136, 21, +169, 88,161, 59, 23,242,106,181, 26,235,215,175,135, 56, 2,196,249,154,146,132,214,175,225,118,211,177,221,146,229,188,223,163, + 71, 15, 36, 36, 36, 20,179,102,169, 84,170, 18, 19,143, 32, 8,184,121,243, 38,206,158, 61,139,166, 77,155, 34, 47, 47, 15, 82, +142,195, 27,167, 79,163,230, 51,207,192,100,183,208,200,229,114,188,248,226,139, 62, 57,180, 95,191,126, 61,216,121, 63, 44, 44, + 44,169, 85,171, 86,177,135, 15, 31,118, 56,200,219,187,213, 28,130,195, 23, 17, 67, 41, 69,223,190,125,139, 89,177,156, 69,150, +243,246,251,239,191,251,212,117, 72, 41, 69,171, 86,173, 28,214, 44,127,127,127,252,252,243,207,142,111,213,186,117,235, 34,127, +134,200, 72,159, 56,197,120,216, 29,224, 97, 48, 24,132,130,130, 2,238,216,177, 99,144,203,229, 14, 11,158, 74,165,130, 82,169, +132, 66,161,184,167, 17, 68,255, 5, 80, 42,192,100,177, 64,175,215,163,176,176,104,102,145,171,103,214, 21, 23, 98,198,252,123, +230, 23,173, 86, 5, 5, 5,248,227,143, 63,240,211, 79, 63,161, 97,195,134,119, 57,195,251, 98,209,114, 74, 79, 25,132,144,150, +227,199,143, 63, 56,125,250,244,152,144,144, 16,152,205,102,220,186,117, 11,223,124,243, 77,138, 78,167,107, 73, 41,205,240,253, + 37, 0, 22,139, 21, 6,157, 17,121,249, 5,248,224,195,239, 60, 38, 61, 0,200, 78,191,136, 30, 61,251,203, 31,230,119, 74, 73, + 73,121,189,101,203,150, 31, 22, 20, 20,228,234,116,186,254, 0,230, 56, 27, 14,179,178,178, 90,245,236,217,115, 94, 72, 72, 72, +195,244,244,244,183,125,160,156,120,227,198,141,183,227,227,227,139, 29,180, 91, 31,171,166,167,167, 15,105,221,186,245,123, 0, + 66,156, 78,251, 3,216, 10, 96,177,167,180, 36,118, 29, 22, 22,234, 17, 16, 20,141,228,235,187,188, 6, 68, 38, 49,128, 10,130, +215, 6,160, 59, 43,150,115,249, 84,138,244, 67, 69,159, 64,177,194,126,170,239, 51,120,106,244, 44,168,165,192,140,103, 91, 32, + 49, 8,128, 42, 4,178,214,111,129, 4,217,223,209,232, 95,124,226,159,240,249,231, 56,126,185,104,102,152,184,240,112,140, 31, + 56, 16,212, 2,236, 63,119, 14,171,118,236,192,192,118,237,160, 86, 42,125,110,176,136,141,240,171, 87,175, 98,255,254,253,168, + 94,189, 58,174, 92,185, 82,108, 26, 10, 74,169, 79,241,167,148, 82,113, 16,147, 66,161,128, 84, 42, 69,106,106, 42,186,119,239, +238,104,232,239,218,181, 11,227,199,143,199,136, 17, 35,208,182,109, 91,183,126,179,174,156,225,225,225, 14, 3,130,235, 64, 5, +231,238,220,210,124, 35,119,156, 34,238,245,187, 59,115, 78,159, 62,221,237,128, 10, 95, 56,157,181, 72, 9, 56,230, 98, 77,130, +232, 47, 37, 10, 35,215,125, 0,193,226,177,137, 19, 39,190,237,235,125,206,251,162, 69,172, 52, 93,152, 14,161,213,173, 91, 55, +226,174,178, 21,205,200,238,160,209,104, 48,102,204, 24, 76,158, 60, 25, 97, 97, 97, 94,125,107, 68, 37, 91, 18,126,249,229,238, +204,182, 97,195, 6,111, 93,135, 23, 2, 3, 3, 27,181,107,215, 14,121,121,121,184,125,251, 54, 52, 26, 13,106,126,242, 9, 78, +143, 30,141,122,159,127, 14,174,125,123,199,100,171,167, 79,159,134, 74,165,186, 80, 90, 11,130,191,191, 63,130,131,131, 29,125, +238,162,224,114,178,104, 81, 31, 18, 35,126,253,245, 87,183,173,198,123,241,209, 18, 11,129,131, 7, 15, 22,243,207,114, 22, 62, + 7, 15, 30,116, 88,180,196,219,124,233,242, 82,169, 84, 84,228, 83,171,213, 8, 9, 9,129, 66,161,128, 74,165, 42, 38,178,124, +177,230,121,155,144, 84,165, 82, 29,214,104, 52, 65,226,121,169, 84,138,130,130,130,220,172,172,172, 38,255,234,174, 67, 80, 88, +205, 86,232,245, 6, 20, 22,232,203,156, 95, 28,152,178,126,253,122, 60,241,196, 19,119,137, 44,241, 93,223, 67,139, 49,137, 16, +210,118,193,130, 5,135,230,206,157, 27, 92, 88, 88,136,111,191,253, 54,175,176,176,176, 45,165, 52,169, 84, 92, 2,133,197,108, +134,206, 96,132,182,176,232, 29,252,117,118,221, 35, 38,136,233, 74, 0, 43, 93, 45,134, 78,231,255, 2,208,189, 20,148, 79,196, +199,199, 35, 53, 53,181,216,193,155, 55,111,194,102,179, 25,237,243,100, 61,231,244, 60, 9,165,212,230,173,236, 48,219,187, 14, + 11, 11,139,172, 32, 6,109,102,217,164, 83,187,216,240,228,147,117, 47, 93, 60,226, 72,103,137, 68,130,177, 99,199,226,244,169, + 83,232, 16,147,143,196, 40,127,208,252,100,200,218,191,143,147, 25, 42,204,153,247,107,169,185, 87, 59, 13,246,153,179,122,181, +219,115,127,245,234, 85,170,184, 95,186,116, 9, 42,149, 10, 54,155,237,174,250,166,180,241,119, 22, 48,243,230,205,195,248,241, +227,241,221,119,223,225,244,233,211,168, 87,175, 30, 58,118,236,136,244,244,116,156, 58,117, 10, 70,163,209,231,112, 58,251,205, + 93,186,118, 14,219,247,255,134,155, 73,215,145,146,122,251,158,191,187, 51,167,171,208, 90,191,253, 4,250,118,106,112, 79,156, + 31,124,240, 1,210,211,211,139, 89,178,156, 7,144,121,178,104,185,106, 17, 23,100,186,248, 66,137,251, 38, 23,209,227,186,239, +122, 61, 0,164, 3,144,120,185,207,117, 63,115,230,204,153, 59, 69, 75,152,157, 87,226,205, 63,203,109,215,161, 40,138,196,140, +226,106,169, 18,255,107, 52, 26,248,251,251,195,223,223, 31, 1, 1, 1, 94, 45, 69,162,208,106,117,173,160,152,175,151,104,217, + 2,128, 17, 35, 70,220,101,209,114,158,216,211, 29,140, 70,227,174, 93,187,118,213,239,209,163,135,228,194,133, 11,144, 72, 36, + 16, 4, 1,166,102,205, 80,239,243,207,113,230,181,215,208,230,198, 13, 24,204,102, 40,149, 74,108,217,178,197,172,211,233,118, +149,182,220,112, 22, 90, 26,141, 6,129,129,129, 14,161,225,139, 74, 23, 51,111, 73,254, 15,226,230, 60, 24,192,151, 76, 45, 86, +168,206,126, 57,132, 16,232,245,122,135, 83,167, 47, 86, 71,231,174, 67,231, 12,200,113, 28,130,130,130, 28,133,135,104,209,242, +213,154,231,109, 66, 82,181, 90, 29,112,241,226,197, 74,226,244, 19,153,153,153,104,223,190,253,229,127,189, 73, 75, 0,204, 86, + 27, 10,245, 6, 20,234,117,101, 70, 43,166,181,239,191,255, 30, 87,175, 94,133,217,108,198,204,153, 51,239, 18, 88,165,113,134, +119,147,174,174, 54,104,208, 64,120,242,201, 39,113,240,224, 65, 40, 20, 10, 11,165,180,212,243, 95, 9, 84,128,217,106,133, 65, +175, 71,161, 86,251, 95, 49,102, 58, 84,245,249,243,231, 97, 50,153, 48,117,234, 84,219,145, 35, 71,118, 2,120,201,254, 13, 57, + 0, 67,218,180,105, 51,173, 91,183,110, 65,132,144, 87, 40,165,223,149,148,207, 45, 86,187,104, 47,195,247, 40,166, 37, 79,101, +210,189, 76,179,226, 92,177, 10,130,128, 23,158,127, 30, 29, 99,242,209,167, 97, 56,180,119, 46, 67, 29, 24, 14, 18, 84, 1,115, +230,253,138,179,215,124,118,197,164, 0,240,100,155, 94,168, 91,253,238,233,193, 90,118, 40,106,147,237,253,227, 48,210, 50, 83, + 74, 29,119,173, 86,235,209,114,229,171, 69, 75,228, 20,167, 89,145, 74,165,168, 95,191, 62,170, 84,169,130,157, 59,119,162, 65, +131, 6,184,114,229, 10,174, 92,185,130, 27, 55,110,224,244,233,211,200,201,201, 41,245, 55,250,121,235, 42,228, 20,100, 67, 46, +147, 35, 59, 55, 19, 55,147,175, 35, 50, 52,234,190,191,187,136,106,221, 62, 0, 0,196,132, 7,150, 74,104, 57,115,126,244,209, + 71,119,137,247, 50,152,178,231,176,151,253,210,222,255,208,192,123,176, 18,233, 67, 66, 66, 84,206,253,171, 28,199, 33, 48, 48, +144,204,158, 61, 91,194,113, 28,252,253,253, 17, 24, 24, 8,209, 92,232, 13,114,185, 92, 95,161, 66, 5,149,152, 16,197,140, 24, + 16, 16, 32,153, 61,123, 54,249,234,171,175, 60, 90,185,188,248,104,205, 29, 58,116,232,115, 73, 73, 73,193, 17, 17, 17,184,115, +231, 14,228,114,121, 81,230,104,215, 14,173,174, 93,131,185,200,231, 8,151, 46, 93,194, 23, 95,124,161, 53, 26,141,115, 75,251, +162,252,252,252, 16, 26, 26,234,232, 50, 20, 45, 58, 78,162,209, 39, 23,204,146, 76,244, 98, 11,240, 94,186,144, 92,197,214, 75, + 47,189, 84, 76,116,249, 10,153, 76,102, 21,103,126,231, 56, 14,102,179, 25, 13, 26, 52, 64,122,122,186, 35,211, 56, 91,242,124, + 17, 90,222, 38, 36,229,121, 30, 38,147, 9,173, 91,183, 6, 33, 4,159,126,250,233,227,209, 29, 41, 8,196,207, 47, 20, 49, 49, + 85, 17, 30, 97,128, 32,148,221,170, 50, 86,171, 21,163, 70,141, 42,102,193, 18, 71, 54,138, 93,255,148, 82, 88, 44,150,123,158, +252, 85,204,215,247, 51,127, 28, 5, 28, 93, 94, 90,173,225, 95,247, 9, 35, 34, 34,154, 18, 66, 54,184, 28,206, 6, 48,205,221, + 12,238,118, 56, 62,244,237,219,183,209,165, 75, 23,252,246,219,111,146,159,126,250,169,195,198,141, 27,207, 85,170, 84,233,246, +128, 1, 3,202,189,248,226,139,138,214,173, 91, 35, 51, 51, 19, 13, 27, 54,156, 2,160, 4,161,101,127,143, 6, 35,180,218,178, +183,142,150,212,224,187, 31, 1, 55,121,242,123,232, 24,157,139,222,245, 2,177,108,211, 62, 12,169,175, 2, 76,138, 82,243,137, + 97, 9,137, 73, 64,133, 90, 77,239, 58,175, 8, 40,234,178,171, 80,171, 41,184,219, 87, 74, 29,119,231, 48,187,150,151,247, 98, +209,115,126,159, 35, 71,142,196, 91,111,189,133,206,157, 59,227,202,149, 43,216,189,123, 55,174, 92,185,130,113,227,198,161, 86, +173, 90,168, 87,175, 94,169, 56, 55,110, 95,139,252,194, 60,112,132, 67,118, 94, 22, 12, 70, 61, 38,140,154,124,223,223, 93,196, +245,237, 51, 1, 0,235,182, 29,191,103,206,119,222,121, 7,169,169,169,197, 44, 89,247,227,151,245,111,135, 91,161,149,149,149, +229,182, 31, 48, 60, 60, 60,173, 83,167, 78, 17,119,238,220,129,159,159,159, 87,145, 69, 8,233, 40,206,181,145,154,154,234,150, +211,223,223,223,220,169, 83, 39,105,116,116,116,177,209,134, 26,141,230,174, 76,230,202,105,175, 4, 10, 8, 33, 47,180,104,209, + 98,217,239,191,255,174,174, 82,165, 10,242,243,243, 65, 41,197,119,223,125,135,177, 99,199, 66,169, 84,226,210,165, 75,232,217, +179,167, 78,167,211,189,224, 60,135,150, 59, 78, 79, 45, 52,113, 86,124, 55, 34,171,196,184, 59,103,214, 5, 11, 22, 96,198,140, + 25,120,251,237,146, 93, 61,150, 46, 93, 10,184,116,243,185,227,164,148, 98,206,156, 57,101,198,153,149,149,245,157,139, 53,234, +211, 62,125,250,240,183,111,223, 46, 38,174,156, 55, 55, 5, 83, 49, 78,111, 19,146, 74, 36, 18, 68, 70, 70, 98,250,244,233, 8, + 13, 13, 69, 84, 84,212, 93,150, 24,111,223,232, 30, 43,131, 7,202,105,163,194,177,143,103,189,215,242,219, 21, 27,165, 10, 57, +112, 96,247, 58,228,231, 20,239, 78, 50,154,255, 30, 74, 45,111,208, 1,166,227,127,248, 20, 78,163,209,136,143, 62,250, 8, 31, +124,240, 1, 62,248,224, 3, 95,190,251,125,197,221, 23,177,229,150, 83,160, 68,173, 9,134, 82, 19,131,154,181,130, 33, 80,235, + 35,245,141, 60,224,200,225,195,135,123,134,134,134, 34, 41, 41, 41, 92, 42,149,246, 44,102,174,210,235, 81,161, 66,133,170, 0, +154,123,227, 28, 55,110,156,241,221,119,223, 85, 12, 26, 52, 8,125,250,244,193,160, 65,131, 20, 50,153,172, 50,165, 20,102,179, + 25, 73, 73, 73,248,227,143, 63,144,145,145,113,161,164,112, 10,148, 18,149, 58, 8, 74, 77, 52,106,214, 14,130, 32, 88,203, 36, +238, 98, 37,232,106,205, 42,229,132,212,110,203, 58, 0, 56,242,199, 6, 76,126,173, 54,190,219,124, 8, 11, 15, 3,117,131,210, + 81, 51, 60, 3, 66,198, 5,188, 57,164, 17,230,252,112, 20, 0,176,123,151,215,111, 84,226,252,200, 6,189,249,190,226,238,108, +185,114,126,142, 55, 31, 45,119,156, 98, 35,177,160,160, 0,185,185,185, 88,182,108, 25,158,125,246, 89,164,167,167,227,198,141, + 27,184,124,249, 50,126,252,241, 71,199,104,246,210,126,163, 55,158,127, 7,239,206,121, 29, 20, 20,213, 42,213,196,196,209, 31, +160,113,221,102,247,253,221, 93,225,205,154, 85, 18,231,252,249,243,239, 41, 45,253,167,132, 86, 73,173, 10,142,227, 16, 22, 22, +230, 72, 36,206, 9,240, 94, 90,190, 18,137, 4, 86,171,213,225,251, 35,110, 0,208,163, 71, 15,252,242,203, 47,190,140,164,248, +157, 16,242,191, 26, 53,106,124, 51,101,202, 20,191, 54,109,218,240, 49, 49, 49,104,220,184, 49, 46, 93,186,132,205,155, 55, 91, + 22, 47, 94,172,213,233,116, 35, 40,165,219,238,165,124, 18,151,180,113,222, 74,211,234, 49,155,205,183,175, 92,185, 18, 61,103, +206, 28, 9,199,113,152, 63,127,190, 35, 83,138, 19,190, 58, 99,247,238,221, 86, 65, 16, 74,236,170,177, 88, 44,183,175, 92,185, + 18,253,201, 39,159, 72, 8, 33, 14, 78,142,227,224,188,128,115,105, 56,221,137, 76,113, 96,132,187,205, 93,216,221,125,227,146, + 38, 36,229,121, 30,151, 46, 93,194,228,201,147, 65, 8,193,186,117,235, 30,139,204,117,250, 66,230, 87,245,106, 70, 4,247,120, +170,101, 29, 16, 2,179,233,238,217, 16,252,114, 10, 29, 34,171,207, 39,171,240,211, 27, 3,125, 17, 61, 87,247,238,221, 27,242, +209, 71, 31,241, 18,137, 4,243,230,205, 43, 54,105,176,235,119,223,179,103,143,245, 94,186,253,196,252,108, 54,155,161,215,223, +155, 21,133, 82,186,127,230,135,239,118, 90,254,253,175, 82, 66, 76, 56,176,107, 29,242,114,221,187, 51,200,165, 60,190, 90,182, +222, 42,147, 74,110,255,195,159,238,179,222,189,123, 15, 90,180,104, 81, 77,119, 39,111,223,190, 13, 65, 16, 74,114,174,185, 97, + 48, 24,144,156,156, 12,157, 78,183,118,210,164, 73,230, 95,127,253,245,185,167,159,126, 26,245,234,213, 67,116,116, 52,238,220, +185,131,171, 87,175, 98,217,178,101,116,223,190,125,107, 1,140,241,242, 30, 55,204,250,240,221, 97,203,126,248, 85,206, 17, 51, + 14,236, 94,135, 60, 23,209,126,183,117, 90,138,175,191, 91,111,150,201,164, 23,189,149,235,206,214,172,178,172, 24,123, 14, 29, +141, 62, 11, 22,162, 98,227, 46,152, 53,187, 35,190,254,176, 63,230, 62, 41,131,121,205, 16,212,237,183, 28, 43,167,118, 5, 0, +196,124,237,163,181,132,151,225,150, 27,139, 85,110,158,210, 46,110, 74,103, 53, 21,227, 94, 82, 25, 94, 90,139, 22,199,113, 72, + 72, 72, 64,197,138, 21,209,162, 69, 11, 52,104,208, 0,237,218,181,195,169, 83,167,112,234,212, 41,140, 27, 55,206,163,200,242, +229, 27,181,109,222, 9,135, 90, 93,188,239,111,227,250,221,203, 2,190,164,165,209,163, 71, 3,192,127,202,186,197,223,203, 75, + 20, 19,230,253, 46, 73, 35,114,154, 76, 38, 71,151,156,243,188, 76,162,115,188,143, 35,250,182, 17, 66,106,189,247,222,123,175, + 41,149,202,118, 58,157,174,170,221, 34,115,201,104, 52,238,208,235,245,243, 40,165,185,247, 19, 86,231,233, 28,220, 5,161,164, +123,115,114,114,186,116,233,210,101, 27,207,243, 9,174, 11,254,186,203,200,130, 32,220, 72, 75, 75, 43,113,136,123, 86, 86, 86, +151,206,157, 59,187,229,116, 87, 64,248,194,233,238,251, 8,130,224, 81,100,249, 82, 16,121,155,144,148,231,121,104, 52, 26,252, +252,243,207, 8, 11, 11,123,172, 50,216,201,115,233, 31,149,116,190,109,152, 98, 23,128,240, 62,159,172,186,181, 51,211, 20,223, + 54, 76,126,243,167, 55, 6,150, 47,233,158,204,204,204,206,207, 62,251,236,111, 60,207, 39,184,190,127,119,223,194,106,181, 94, + 79, 77, 77, 45,245,116, 9,148, 82, 92,188,120, 81, 24, 57,114,100,102, 70, 70, 70,255,123,137,255,196,201, 11,231,206,152, 50, + 54,244,201, 78, 77, 27,131, 3, 76,158,157,127, 41, 1, 40, 47,149,220, 30,255,246,252,231,255,201,111, 70, 41,205, 39,132,180, +232,219,183,239, 24, 20, 13, 13,191, 75, 72, 1, 88, 80, 2,197,130,114,229,202,213,150, 72, 36, 10, 0,147, 41,165, 55, 9, 33, +159,237,219,183,175, 51,128, 39, 36, 18, 73,180,205,102, 75, 70,209,154,143,171, 40,165, 39,189,167,163,180, 23,235,213, 8,143, +123,178,227, 19, 93, 64, 8, 53,153,140, 94, 26, 72,160,160,148,202,100,210,139,135, 79,166,212,245,102,173,183,175,192, 81,230, + 93,246, 99,198,140,193,152, 49, 99, 28,233,233,211, 79, 91, 97,237,153,189,232, 87, 55, 9,198, 47, 90,130, 4,148,247,185,193, + 7, 0,239,188, 55,178, 44, 45,155,197, 6,105,149,149,143,150, 68, 34, 65,102,102, 38, 46, 93,186,132,180,180, 52,232,116, 58, +156, 63,127, 30,102,179, 25, 57, 57, 57,168, 93,187,246, 61,135,179,172,190,209, 63,201,249, 95,236, 62, 44,149,208,178, 90,173, + 73,222, 86, 89,183, 88, 44,165, 26,149, 36,149, 74, 13, 85,170, 84, 33,238, 70, 39,136,255, 53, 26,141,222,199, 2, 50, 23,192, +100, 0,147,237,235, 89, 33, 59, 59,251,190,213,160,205,102, 75,137,143,143,151,120, 18, 48,246,119,147,230, 37,108, 90, 0,205, +202,184, 66, 40,115, 78, 55,223, 71, 91,189,122,117,135,175,151,235,156, 40,246,197, 86, 75,244,206,245, 54, 33,169, 86,171,189, +211,165, 75, 23,155,243,121,231, 9, 77, 31,107, 16,122,179,235,160,231,226,119,102,154,226, 1, 64, 20, 91,240,236,255, 3, 74, +169, 30, 64,155, 7, 29,180,107,215,174,153,158,120,226,137,239, 11, 10, 10, 70, 83, 74,239,217,155,255,237,247, 63,125,251,223, +246, 89, 40,165,249, 0,102,220,227,189, 55, 1,180,119, 57,118, 18,192,201,251, 9,211,201,243, 25,101, 62,183,152,213,106, 77, +170, 88,177, 98,169, 44, 55,222,202,120,139,197, 82, 98, 61,113, 22,129,120,251, 32, 80,180, 76, 92,150, 79,156, 6,131, 33,187, + 89,179,102,210, 82,198, 45,221,215,184, 71, 71, 71, 35, 38, 38,198,241, 43,194,245,184,183,112, 90,173,214,164,184,184, 56,132, +133,133,121,156,241,221,213, 39,203, 23,206,178,254, 70, 37,113,198,196, 44, 47,115,206,178,210, 11,255, 9,161, 37,174, 97, 88, +150, 72, 75, 75,123, 32,107,174,208,178, 48,183,253,109, 57,106,140,255, 40,178,178,178, 66,239,151,195,219,132,164,105,105,105, +237,254,171,239,119,103,134,105,248, 93,199,236,162,235,159,134, 86,171, 45,239,109,218, 1, 79,232,215,175,159, 13, 12,143, 60, + 50, 51, 51,203,188, 76,127, 16,245, 68,118,118,118,157,255,106,220, 31, 68, 56,255, 45,156,143, 11,152,151, 26, 3, 3,131,167, +198, 10, 19, 75, 12, 12, 12, 12,247, 9, 2,160,163,135, 66,214,231,145, 62,132,144,142,247, 80,136,111,103,156,140,147,113, 50, + 78,198,201, 56, 25,231,127,139,211, 27,119, 89,143, 52,126, 20, 90,173, 15,108, 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, 38,180, 24, 24, 24, 24, 24, 24, 24, 24,152,208, 98, + 96, 96, 96, 96, 96, 96, 96, 96, 66,139,129,129,129,129,129,129,129,129,129, 9, 45, 6, 6, 6, 6, 6, 6, 6,134, 7, 7, 82, +134,243,122, 50, 48, 48, 48, 48, 48, 48, 48, 48,184, 10,173,205,155, 55, 59,212, 86,183,110,221, 8,123, 45, 12, 12, 12, 12, 12, + 12, 12, 15, 19,143,171, 22,225,153,192, 98, 96, 96, 96, 96, 96, 96,120, 20,240, 56,106, 17,206,157,146,100, 96, 96, 96, 96, 96, + 96, 96,120,216,120, 28,181, 8,247, 56,171, 72, 6, 6, 6, 6, 6, 6,134,127, 15, 30, 71, 45,194,124,180, 24, 24, 24, 24, 24, + 24, 24,254,113,252,155,181, 8, 33,132, 2, 0,165,148,136,251,142,255,108,212, 33, 3, 3, 3, 3, 3, 3, 3,195,189, 9, 44, + 74, 41,241,244,203,132, 22, 3, 3, 3, 3, 3, 3, 3, 67, 25, 9, 46,241, 63,240,183,117,139,123,192, 15,238,200, 56, 25, 39, +227,100,156,140,147,113, 50, 78,198,249, 56, 67, 20, 85,226,127,231,125,158,189, 30, 6, 6, 6, 6, 6, 6, 6,134,251, 22,159, +212,157,240, 98, 66,139,129,129,129,129,129,129,129,225, 62, 69,150,179,184,114,222,103,107, 29, 50, 48, 48, 48, 48, 48, 48, 48, + 60, 32, 48,139, 22, 3, 3, 3, 3, 3, 3, 3,195,125, 64, 28,105,232,188,207,132, 22, 3, 3, 3, 3, 3, 3, 3, 67, 25,138, + 45,119,199, 9,128,142, 30,110,216,238, 43,249,189,140, 62,240,198,207, 56, 25, 39,227,100,156,140,147,113, 50,206,199,143,211, + 27,119,105,244,199,163, 2, 66, 72, 27, 0, 59, 1,180,181,255,254, 45,188, 40,165, 15,108, 3,208,145,113, 50, 78,198,201, 56, + 25, 39,227,100,156,140,243,113,222,138,228,212,223,191,206, 27,115,134,103,240,166,210,121, 66, 8,127,175,231, 31, 22, 39, 3, + 3, 3, 3, 3,195, 63, 92, 95, 82,241,215,217, 95,139,247,112,113,101, 0,111, 3, 8,116, 58,124,152, 82, 58,211,229,186, 31, + 0,168,157, 14,105, 1, 76,165,148, 94,241, 33, 76, 50, 59,191,194,190, 9, 0, 12, 0,140, 0, 10, 0, 88,216,103,251,199, 19, + 77, 51, 0,221,237,255, 55, 81, 74, 15,148,230,252,195,226,124, 88,136,137,137, 81, 5, 7, 7,119, 62,126,252,184,252,252,249, +243,216,179,103, 15,253,234,171,175,204, 57, 57, 57, 91, 83, 82, 82,244, 44,197, 60, 22,105,190, 11,128,137,246,221, 89,148,210, + 45,247,201, 71,212,106,245, 56,141, 70,211, 85,161, 80,196, 88,173, 86,162,211,233, 82,180, 90,237, 54,171,213,250, 9,165, 84, +184, 7,206, 94, 33, 33, 33,207, 85,171, 86,173,242,141, 27, 55,146, 83, 82, 82,126, 0,176, 6, 64,255,152,152,152, 33, 21, 42, + 84,136,189,120,241,226,149,236,236,236,175, 41,165, 27,254,169,112, 50, 48,252,151,224,201, 63,203,163,208, 2, 48,153, 82, 58, +196, 37, 35,222,117, 81,251,246,237,123,110,221,186, 85, 45, 8, 2,196, 77,165, 82, 89, 1, 12,247, 18,166,208,253,251,247,199, +143, 30, 61,186, 79, 74, 74, 74,163,130,130,130, 38, 0,160, 86,171, 15, 69, 68, 68, 28, 89,176, 96,193,143,157, 59,119, 78,178, + 11,174, 82, 89, 74,164, 82,233,179,193,193,193, 93,173, 86,107, 3, 74, 41,164, 82,233,241,156,156,156, 45, 22,139,229,107, 74, +105,169,197, 27, 33, 68,206,243,252, 24,133, 66,209,197,106,181,214, 1, 0,158,231, 79, 27,141,198, 45, 86,171,245, 51, 74,169, +233, 30, 56,149,114,185,124, 76, 64, 64, 64, 39,147,201, 84, 7, 0,228,114,249,233,252,252,252,109, 38,147,233, 51, 74,169,225, + 17,168,112,120, 0,221, 41,165, 82, 0,144, 72, 36,189,154, 53,107, 22, 79, 8, 17,196,249, 65, 56,142,171,111,179,217, 56,251, +245,221, 9, 33, 71, 40,165,214,210,112, 62,241,196, 19,229,120,158,167,246,153,116, 57,142,227,234,150,134,179,172, 16, 30, 30, + 62, 67, 16,132,152,146,174, 9, 12, 12,108,116,252,248,241,106,171, 87,175,182,125,241,197, 23,185, 35, 70,140,240, 27, 61,122, + 52,255,233,167,159,126, 6,224, 21,215,235,195,194,194,230,114, 28, 23,230,203,243, 5, 65,200,204,204,204,124,157, 21, 87,255, + 56, 38, 46,222, 94,208,154, 82, 96, 76, 39,127, 14,192,125, 9,173,216,216,216,101,195,134, 13, 27, 84,167, 78, 29,158, 82, 10, +139,197, 2,163,209, 88,237,192,129, 3,109,215,173, 91,215, 8, 64,255, 82,230,203,231,223,122,235,173,233,211,166, 77, 11,147, + 74,165,196, 98,177, 84, 90,189,122,117,131, 23, 95,124,241,213,165, 75,151,150, 27, 48, 96,128,191,120,124,242,228,201,141, 9, + 33,137,148,210, 79, 30,118, 56, 25, 24,254,131,141,180, 54, 40,238,163, 53,133, 82,250, 65, 73, 66, 75, 99,191, 49, 13,192, 97, +209,162,229,122,209,159,127,254,185,145,231,121,209,162,213, 68,171,213, 70,186, 88,193,220,161,194,208,161, 67,155,173, 93,187, +118,198,128, 1, 3, 82,213,106,117,149,167,159,126,186,128, 16, 34, 89,189,122,117,253,138, 21, 43,170,122,244,232, 49,180,125, +251,246,111,252,246,219,111,123, 0,100,248, 24,201,154, 33, 33, 33,235, 63,250,232,163,248, 46, 93,186,200,194,194,194, 64, 41, + 69, 74, 74, 74,236,230,205,155,159,156, 50,101,202, 27,132,144,222,148,210,115,165,120,113,141, 85, 42,213,218, 41, 83,166, 68, + 63,249,228,147,124, 84, 84, 20, 12, 6, 3,206,159, 63,223,113,203,150, 45,173,151, 46, 93,250, 10, 33,164, 31,165,244, 72, 41, + 56,155, 4, 6, 6,174,251,246,173,183, 34,155, 62,251, 44, 31, 18, 18, 2, 74, 41, 50, 50, 50, 58,238, 93,190,188,237,168,143, + 62,122,133, 16,210,151, 82,122,248, 81, 74, 68,114,185,156, 91,177, 98, 69, 61,185, 92, 14, 0, 48,153, 76,168, 85,171,214,125, +173,174, 46,149, 74,185, 79, 62,249,164, 1,207,243, 48,155,205, 66, 65, 65, 1,125,250,233,167,185,127, 40,147,196,165,164,164, + 4,202,100, 50,183,231,109, 54, 27, 90,183,110,157, 32,147,201,240,201, 39,159, 88, 50, 51, 51,235, 47, 90,180,232,248,202,149, + 43,195, 62,251,236,179,126,238,132, 22,199,113, 97, 73, 73, 73,110, 57,109, 54, 27,204,102, 51,172, 86, 43, 76, 38, 19,106,212, +168,193, 74,170, 71, 3,241, 0,240,235, 41, 3, 0,132,220, 47,153, 70,163,169, 62,120,240, 96, 62, 35, 35, 3, 82,169, 20,102, +179, 25,169,169,169,168, 85,171,150,228,251,239,191,175, 90, 90,190, 74,149, 42,141,152, 53,107, 86,248,175,191,254,106, 94,177, + 98,133,169, 83,167, 78,210, 17, 35, 70, 4,180,110,221,186, 70, 92, 92, 28,247,205, 55,223, 24,183,109,219,102, 25, 58,116,168, +124,230,204,153,225,155, 55,111,238, 1,224,147,135, 29, 78, 6,134,255, 32,118,186, 46, 42, 13,160, 68,161, 37,226, 48,165,180, + 23, 0,200,100,178,250,229,202,149, 91,102,181, 90,163,236, 86,157, 84,169, 84,250,137,217,108, 62, 97,175,168, 54, 8,130,208, +211,155, 37,107,232,208,161,205,126,251,237,183, 57, 7, 14, 28,200,203,202,202,138,218,184,113,163,225,141, 55,222,184, 1, 0, +215,174, 93, 75,236,209,163, 71,236,216,177, 99,147, 58,119,238,188,160, 93,187,118, 47,239,216,177, 99, 27,138,186, 36, 75, 20, + 89,181,106,213,218,191,123,247,110,255,160,160,160,226,170,174, 66, 5,188,252,242,203,178,158, 61,123, 86,236,208,161,195, 62, + 66, 72, 43, 74,233, 25, 95, 4, 81,229,202,149,183,255,249,231,159,126,193,193,193,200,205,205, 69,106,106, 42,116, 58, 29, 2, + 2, 2, 48, 96,192, 0, 89,155,150, 45,202,141, 29,247,202,118, 66, 72, 71, 95,196, 22, 33,164, 73,139,154, 53,183,175,156, 57, +211,207,114,235, 22, 84, 42, 21, 10, 11, 11, 1, 0,254,254,254,104,148,144,192, 31, 93,190, 60,118,200,132, 9, 34,231, 67, 23, + 91,132, 16,133,221, 12,106, 36,132,108,146, 72, 36,189,228,114, 57,215,171, 87, 47,108,223,190,157, 24, 12, 6, 30, 0,148, 74, +165,181, 87,175, 94, 80,169, 84, 48,153, 76, 2,128, 77,158, 44, 79,238, 56,165, 82, 41,215,174, 93, 59,221,225,195,135,179, 69, + 78,181, 90,109,105,215,174, 93,168, 92, 46, 87, 89,173, 86, 90, 18,231, 3, 18,147,184,122,245,106,177, 99, 5, 5, 5,200,200, +200, 64, 86, 86, 22,140, 70, 35,114,115,115, 33, 8, 2, 81,169, 84, 25,130, 32,128,227,138,140,111,158, 56,101, 50, 25, 46, 93, +186, 84,236,152,213,106,133, 86,171,133,209,104,132,217,108, 70, 65, 65,129,202,223,223,191,114,205,154, 53,147, 0,108,200,206, +206,254, 36, 53, 53,245, 38, 43,183,254, 17,220,218,116,194, 80, 30,128, 9,192,245, 50,224, 19, 0, 96,207,158, 61, 72, 75, 75, + 67,102,102, 38, 50, 50, 50, 16, 23, 23,135,123,233,142,187,122,245,234,226,218,181,107,147,179,103,207,110, 1,240,233,234,213, +171,135,103,103,103, 79, 28, 63,126,124,200,199, 31,127,156, 61, 97,194,132, 89, 0,190, 91,189,122,245, 75,213,171, 87,239,122, +225,194,133,165,255, 68, 56, 25, 24, 30, 0, 26, 3, 8,183,255,207,180,151,187,161, 78,251,167,236,249, 86,188,206, 4, 64,238, +230, 87,132,184,159, 1,224,136,211,125,226,254,189,212,159,212,249,215,209,232, 6,128,205,155, 55, 83,113,115,119,115,100,100, +228,184,246,237,219,207, 57,118,236, 88,141, 59,119,238, 4,223,185,115, 39,248,216,177, 99, 53,218,183,111, 63, 39, 50, 50,114, +156,120,157,221,227, 30, 78,251,206, 67, 52,101,251,247,239,143, 95,191,126,253,172,237,219,183,231,213,175, 95,223,244,231,159, +127, 90, 59,119,238,156, 14,192, 10,192,218,185,115,231,244, 29, 59,118,216,154, 54,109,170,250,237,183,223,110,239,219,183,111, +238,218,181,107, 35, 1, 72, 60,112,130, 16, 34, 13, 10, 10,250,121,215,174, 93,119,137, 44,103,148, 43, 87, 14,155, 54,109, 10, + 8, 10, 10,218, 64, 8,145,149, 16, 78, 16, 66,148, 74,165,114,221,142, 29, 59,252,252,253,253,145,158,158, 14,169, 84,138,136, +136, 8,228,229,229, 33,245,206, 29,220,188,124, 25,156,201,132,121, 31, 78,243, 87,169, 84,107, 9, 33,114,111,156,129,129,129, +235, 86,206,152,225,151,181,125, 59, 78, 78,159, 14,179,217,236,232,114, 53,155,205,216, 55,122, 52, 50,254,248, 3,223, 76,158, +236, 23, 24, 24,184,142, 16,162, 44,137,179, 44,224,204, 73, 8, 25, 13, 32, 27, 64, 54, 33,100, 52,165,244, 64,173, 90,181,142, +157, 63,127, 30,173, 90,181,194,154, 53,107,234,142, 31, 63,126,244,248,241,227, 71,175, 89,179,166,110,171, 86,173,112,254,252, +121,212,170, 85,235,152,179, 47,149, 47,156,187,118,237, 66,251,246,237,115,214,172, 89,147, 56,121,242,228, 25,147, 39, 79,158, +177,106,213,170,138,237,219,183,207,153, 63,127,190,177, 36,206, 7, 17,119,103, 75,147,243, 38, 8,127,215, 49, 49, 49, 49,233, +235,215,175,199,128, 1, 3, 56,185, 92,126,103,224,192,129,138,189,123,247, 82, 0,155, 74, 19, 78,131,193, 0,189, 94, 15,173, + 86,139,107,215,174,169, 62,250,232,163,150, 31,124,240, 65,165,237,219,183,199,190,253,246,219,163,194,195,195,143, 71, 69, 69, +197, 63,236,184, 51, 78, 0, 64, 42, 0,179,189,113,119,243,126, 56, 59,116,232, 80,187, 82,165, 74,145,171,207, 6, 35, 71, 86, + 13,130, 44, 8,130, 44, 8,182,208,198,184, 42,127, 10,229,203,151,143,244,247,247,111, 86, 26, 78, 74,233,138, 51,103,206, 60, + 65, 41,253,128, 82,154, 69, 41,157, 51, 97,194,132, 41,132,144, 61, 19, 38, 76,152, 70, 41,157, 99, 63, 62,253,252,249,243, 77, + 41,165, 43,255,137,112,178,180,196, 56,239, 5, 94,180, 72, 56, 33,100, 19, 33,100,211,164, 73,147,218, 1, 8,117,217,111,238, +124, 29, 0,185,187, 95,113,115, 58, 30, 14,160,155,211,125,225,247,248, 62,136,235, 86, 76,104, 1, 64,183,110,221, 72,183,110, +221,196, 19,135, 9, 33, 27, 1, 28,150,201,100,245,235,213,171,215,235,247,223,127,247, 15, 15,255,251,249,225,225,225, 88,187, +118,173,127,205,154, 53,123,201,100,178,250, 0, 14, 7, 4, 4,108,132,155, 46, 70, 59,130, 70,143, 30,221,231,153,103,158,201, +175, 95,191, 62, 0,228,158, 59,119, 78,221,180,105, 83,173,213,106, 37, 86,171,149, 52,109,218, 84,123,238,220, 57,181,197, 98, + 41,104,220,184,177,166, 67,135, 14, 55, 94,127,253,245,161, 0,148, 37,196,111,240,236,217,179,227,130,131,131, 75,122, 1, 40, + 40, 40, 64,100,100, 36, 70,143, 30, 29, 37,149, 74,159, 43,233,133,241, 60, 63,102,246,236,217, 17, 65, 65, 65,200,201,201, 65, + 92, 92, 28, 76, 38, 19, 46, 93,186, 4,131,182, 16,150,130,124, 88,242,115,145,241,215, 21, 4, 73,121, 12,237,217, 61,146,231, +249, 49, 94,172, 37, 99,190,158, 48, 33,210,116,227, 6,174,173, 89, 3,155,245,110, 67,141,213,108,198,233, 47,191,132, 33, 41, + 9,179, 70,142,140,148,203,229, 99, 30,178, 37,235, 99, 74,169,138, 82,170, 34,132, 44,104,222,188,249,247, 42,149,106,244,204, +153, 51,187,108,221,186,245,201,221,187,119,183,181, 90,173, 82,171,213, 42,221,179,103, 79, 43,131,193,192, 43, 20, 10,240, 60, + 79,125,229,108,214,172,217, 50,149, 74, 53,106,201,146, 37, 93,118,236,216, 49,244,232,209,163, 99,108, 54,155,220,102,179,201, +143, 30, 61,250,162, 94,175,151, 82, 74,109,158, 56, 31, 54,164, 82, 41,100, 50, 25, 84, 42, 21, 90,182,108,249,215, 87, 95,125, +101,137,139,139,147,174, 91,183, 46, 56, 38, 38, 70,243,233,167,159,230, 22, 20, 20,204,246,149,207,108, 54,195,104, 52, 66,175, +215,195, 96, 48,224,207, 63,255, 76, 24, 59,118, 44,111, 48, 24,108, 61,122,244,200,182, 88, 44,198, 9, 19, 38, 4,132,132,132, +188,193, 26,176,255, 8,172, 0, 10,237, 66,203,232,156,150, 9, 33,117, 68,235,172, 47,200,205,205, 93,250,245,215, 95,199,113, +138, 32,236, 53,117,197,143,194, 20,108, 13,252, 20,233,241,111, 34, 34,174, 18, 6, 13, 26, 20, 65, 41,253,180, 12, 42,188, 69, +148,210,214,148,210, 5,247,114,255,131, 14, 39, 33, 36,222,207,207,111, 77, 64, 64,192, 94, 63, 63,191, 53,132,144,248,251,141, +115,231,202,164, 99,175, 26,146,164,206,149, 8,237, 85, 67,146,212,185,114,233,231,122, 98,120, 52,225,162, 69,156,145, 65, 41, +237, 78, 41,237, 62,107,214,172, 25, 78,233, 95,220, 87,249,152, 95,186, 83, 74,187,187,164,209, 77,101, 80,135, 82,215,205,161, + 41,156,149,164, 24, 57,231,209,133,229,202,149, 91,182,108,217, 50,127, 87,210, 59,119,238, 32, 63, 63, 31,239,190,251,174,255, + 51,207, 60,243,202,237,219,183,135,121, 9,135, 60, 53, 53,181,193,144, 33, 67,148,102,179, 57, 71, 16, 4, 46, 63, 63,159, 15, + 12, 12,180,137, 23, 4, 6, 6,218,242,242,242,164, 90,173, 86, 98,179,217,140,207, 60,243,140,124,228,200,145,141,156, 45, 90, +119, 73,220,240,240, 78, 93,187,118,149,123, 58,111,177, 88,160,213,106,161,213,106, 97, 54,155,209,178,101, 75,197, 87, 95,125, +213, 25,192, 18, 79,247, 40, 20,138, 78,157, 58,117,146,102,103,103, 35, 48, 48, 16, 55,111,222,196,245,235,215, 97, 44, 44,132, +185, 48, 31,230,194, 2, 88, 11,242, 65,243,243,144,117,229, 34,154, 86,175, 38,251, 65,161,232, 2, 96,174, 39,206,128,128,128, + 78, 77,135, 15,231, 53, 26, 13,218, 14, 41, 26,103,240, 91,245,234,160, 54, 27, 4,155, 13, 54,171, 21, 93, 46, 93,130,197, 98, + 1,199,113,104,156,157,205, 7, 44, 95,222, 9,192,156,127, 34,177, 43, 20, 10,126,197,138, 21,131,229,114, 57, 40,165,196,100, + 50, 97,235,214,173,247,205,185,124,249,242,161, 34,167,217,108,166,181,107,215,190, 43, 67, 25,141, 70,250,168,100,122,185, 92, + 14,165, 82, 9,179,217,140, 10, 21, 42,232,135, 12, 25,178,255,195, 15, 63, 44,207,113,156, 70, 38,147,253,158,149,149, 53, 35, + 37, 37,229,154,175,124, 22,139, 5, 38,147, 9, 38,147, 9,122,189, 30,127,253,245, 87, 84, 66, 66, 2, 25, 61,122,180, 77,167, +211, 37, 46, 92,184,240,234,214,173, 91,213,179,103,207,126, 26,192,203,172,216,125,120,176, 91,165, 3,203,135,242, 90,169, 4, +133, 0,252,237,162,224,105, 66, 72,211, 26, 53,106, 4,159, 63,127, 62,135, 16,114, 16,192,143,148,210, 59, 37,241, 9,130, 64, + 4, 65,192,139, 77,114, 49,186,153, 4, 22, 75, 30,242,242,242,112,243,230, 77,156, 59,119, 14,135, 14,157,187,167,112, 42,149, +202,231,252,252,252, 58, 43,149,202, 10, 86,171,149, 43, 44, 44,188,169,211,233,182, 11,130,176,148,186,118, 43,248,128, 7, 21, + 78, 17, 26,141,230,163,183,223,126,187, 69, 96, 96, 32, 78,156, 56,145,184,106,213,170,143,112,159,206,245, 74, 41,247,205,220, +249,159,198,198, 70, 4,225,212,238, 95, 98,103,124,190,250, 27, 0,113, 44, 21,255,251,225,172, 69, 92,112, 4, 64, 55,251,104, +244,238,247,145,207,239,235,254,146, 44, 90,174, 11, 75,223, 37,180, 60, 68, 12, 86,171, 53,202,217,146, 69, 41,197,157, 59,119, +144,156,156,140,140,140, 12, 4, 7, 7,195,108, 54, 71,249, 82,207, 22, 20, 20, 52, 9, 13, 13,213, 73,165, 82,163, 94,175,135, + 90,173, 22,164, 82, 41,181, 63,135,216, 71, 45,218,140, 70, 35,225,121,222,226,239,239,239,103, 52, 26,171,161, 4, 95, 50, 74, +105,147,208,208, 80,183,231,140, 70, 35, 10, 11, 11,161,213,106, 81, 88, 88, 8,163,209,136,200,200, 72, 88,173,214, 6, 37, 54, +105,173,214, 58,225,225,225, 72, 73, 73,129, 74,165, 66, 82, 82, 18, 76,133, 5, 48, 23, 20,192,170,205,135, 45, 47, 15, 66,126, + 62, 4,109, 62, 44, 38, 29, 98,171, 84,135, 56, 34,209, 19, 76, 38, 83,157,208,208, 80,104,181,127,187,155, 81,187,192,178, 90, +173,176,218,157,163,197,238,196,176,176, 48,136, 35, 18, 31, 6,236,254, 83,227, 57,142, 91,160, 80, 40,248, 81,163, 70,225,206, +157, 59,197,210,196,168, 81,163, 28, 62, 89,173, 91,183,222,163, 84, 42,173, 25, 25, 25, 48, 26,141, 82, 95, 56, 43, 84,168,112, +243,221,119,223, 61,108, 50,153,226, 98, 98, 98,130,140, 70,163,190,106,213,170, 49, 42,149, 42,210,100, 50,217, 26, 53,106,180, + 84,165, 82, 89, 10, 11, 11,169,213,106, 37,143, 66,166, 39,132,128, 16, 82,244,141,172, 86,132,133,133,105, 51, 51, 51, 15,229, +228,228, 12,190, 23, 62,139,197, 34,142,232,130, 94,175, 7,165, 20, 39, 78,156,128, 82,169,148,218,108,182,179, 86,171, 85, 45, +149, 74,193,217,157,191, 24, 30,218,119,110, 91, 45, 72, 62,119,102,211,136,160,122, 61, 52, 90,181, 92,162, 21,110,214,171,240, +237,199,231, 86, 61, 51,244, 57,255,169, 83,167,198,135,133,133, 41,175, 94,189,106,152, 54,109, 90,194,138, 21, 43,136,183, 70, +208,173, 91,183,126,122,251,237,183, 67,186,118,237,154,168, 80, 40, 72, 94, 94, 30, 50, 50, 50,144,150,150,134,235,215,175,211, + 83,167, 78,253,101, 52, 26,215,148, 38,156, 49, 49, 49, 95,141, 29, 59,246,153,134, 13, 27, 74, 69, 11,169, 86,171,173,191,107, +215,174,158,191,253,246, 91, 43, 0,165, 78,151,183,111,223, 94,243,206, 59,239,104,158,122,234,169,106, 10,133,130, 43,139,112, + 58,131,227,184, 72, 63, 63, 63,108,223,190, 29, 65, 65, 65,224, 56, 46,242,126,191,151,193, 44,196,198, 68,133,194,176,111, 46, +170,133,199,195, 96, 22, 98, 89, 42,126,124, 44, 90, 30, 78, 53, 22, 45, 82, 94,196,146,126,226,196,137,111, 19, 66, 54, 77,156, + 56,241,109,119, 22, 45,251, 95,155,243,117, 78,215, 27,203, 90,108,149,106, 82, 72, 65, 16,144,156,156,140,148,148, 20, 36, 39, + 39, 35, 43, 43, 11, 28,199,149, 56,127,132,115, 24, 8, 33,194,182,109,219,130,247,239,223,175,109,220,184,113,174,232,255, 98, +181, 90,137,197, 98, 33,118,191, 24,114,243,230, 77,217,222,189,123,131, 46, 92,184, 16,137, 34,135, 53,193, 75,228,238, 58, 38, + 10, 44,231,205, 96, 48, 64,169, 84,250, 20, 87,177, 34, 60,113,236, 88,145,200, 42, 44,176,119, 25,230,193,150,159, 7,170, 45, +128,220,102,129, 28, 20,196,160,243,249,253, 57, 67, 20, 89,102,187,208, 50,153, 76,176, 88, 44, 16, 4, 1, 86,171,245,161, 39, +112, 74,233,226,250,245,235, 55,248,233,167,159, 70, 36, 39, 39,223,117,190,119,239,222,120,249,229,151, 49,118,236,216, 11,221, +186,117, 59,245,203, 47,191, 96,204,152, 49, 16, 4,161, 30, 33, 36,143, 82,250, 91, 73,156, 19, 39, 78, 60,122,251,246,237,157, +151, 47, 95, 30, 21, 17, 17,161,168, 83,167,206,149, 58,117,234, 72,126,250,233,167,200,231,159,127,254,216,147, 79, 62,121,227, +143, 63,254, 8,217,190,125,187, 82, 16,132,134,132,144,228,127,122, 30, 45,163,209,232,176, 64, 25, 12, 6,152,205,102,160, 4, +231,119,111,105, 83,252,182, 86,171, 85,228, 38, 63,253,180, 30,123,246,236,225,206,157, 59, 27, 55,106,212,104,209,225,158,149, +184, 15, 71, 96, 61, 37,231,200, 23,227,235,133, 42,223,168, 27,170,149,243,164,240,210, 23,111, 23, 94, 47, 31,160,141, 44,167, + 54,197, 37, 4,197,204,152,241, 97,244,133, 11, 23,141,239,190,251,238,249,129, 3, 7, 70,188,241,198, 27, 53,214,173, 91,215, +138, 16,242, 53,165, 52,215, 3,175,114,248,240,225, 7, 35, 34, 34, 18, 62,255,252,243,244,219,183,111, 7, 91, 44, 22,141,217, +108, 22,180, 90,237,117,189, 94,191,221,108, 54,111,167,148, 30, 43, 77,120,253,253,253,235, 14, 31, 62, 92,154,155,155, 11,251, +104, 93,164,167,167,163, 69,139, 22,146,141, 27, 55,214,188,151,119,144,157,157, 61,151, 16,178,115,229,202,149,157, 3, 2, 2, + 26, 42, 20,138, 40, 0,182,130,130,130, 52,173, 86,123,242, 94,194, 89,172,156,179,217,210,142, 29, 59, 86, 49, 32, 32, 0,183, +110,221,130,205,102, 75,187,223,239,166,148,113,183, 79,239,222, 88,174,122, 88, 2,246,238, 63, 8,165,140,187,205, 82,243, 99, + 15,209,135, 10,206, 2,202,141, 64,218, 63,115,230, 76,213,172, 89,179, 48,115,230,204,179,238, 44, 90,162,224,154, 57,115,230, + 89,241, 58,167,235,119,223, 71,121,226,217,162, 85,130,130, 4,207,243,169, 25, 25, 25,193, 65, 65, 65, 14,129,149,146,146,130, +148,148, 20,200,229,114,220,188,121, 19,114,185,252,142, 47,141, 16,149, 74,117,180,126,253,250, 85,175, 93,187, 38,155, 54,109, + 90,185, 99,199,142, 5,180,104,209,162,182, 74,165,178, 81, 74, 97, 48, 24,184,243,231,207,251,205,153, 51, 39,182, 73,147, 38, +166, 38, 77,154, 28, 95,189,122,181, 30, 37, 76, 94, 74, 8, 57,124,231,206,157,196, 10, 21, 42,136,162,173,152,184,114, 22, 92, + 64, 81,151, 39,207,243,199, 75, 10, 40,207,243,167, 47, 93,186,212, 81,173, 84,192, 84,144, 15,115, 97, 62,172, 5, 5,176, 21, +228,193,150,151, 7,104,243, 33,183, 90, 33,181, 89,160, 82, 42,145,156,148, 4,158,231, 79,151,196, 41,151,203, 79,167,165,165, +117, 12, 10, 10,114, 84,162, 22,171,181,104,179,217, 96,178, 90, 29, 22, 45,169, 84,138,219,183,111, 67, 46,151,159,126,216, 41, +153,227, 56,155, 56,133,131,135,120, 32, 50, 50, 82,104,218,180, 41,198,140, 25, 3,155,205,102,255, 12,164, 45, 33,100, 47,165, +180,208, 19,167, 32, 8,220,249,243,231,251, 92,189,122, 85, 34,149, 74,185, 39,158,120,162, 86,203,150, 45, 77,114,185, 28, 50, +153,140, 47, 44, 44,244,223,190,125,187,210, 98,177, 16, 59,231, 67,155, 71, 75, 76, 59,119, 53,141,236, 78,235,122,189, 30,133, +133,133,200,201,201,225, 85, 42, 85,213,218,181,107, 31, 52,153, 76,107,172, 86,235, 55,215,174, 93,203,247,196,105, 23,102, 14, +209, 37, 8, 2, 40,165,176,217,108,176, 88, 44,144,201,100,194,174, 93,187, 49,103,222, 71, 88,246,205, 10,218,179,103, 79,178, +113,227, 70, 8,130,144,196,202,213,135,130, 79,114,127,252, 80, 9,171, 77,107,220,181,178,240,251,203,249,218,169,223,207, 63, +106,146, 75,242, 27,181,137,172,147,152, 80, 85, 18, 20, 20,204, 45, 89,186, 32,235,135, 21,107,175,222,186,117, 43,255,179,207, + 62,107, 86,181,106,213,192,147, 39, 79,198, 2,112, 43,180,212,106,117,229,231,158,123,110,120, 78, 78,142,108,217,178,101,171, +239,220,185,115, 20,192, 57, 74,169,214,169,236,234, 70, 8,249, 14, 69, 35,159, 34,237,229,220, 94, 74,233,180,146,218,107,132, + 16,236,216,177,227,174,209,129,194,253,169,243,160, 74,149, 42, 13,184,118,237,218,158,212,212,212,190,110,242,253,212, 42, 85, +170,116, 57,123,246,236, 20, 74,233,175,165, 33,214,233,116, 19,214,174, 93,251,177, 68, 34,137,177,217,108, 41,122,189,126,194, +125, 91,180, 44,194,200,153, 75, 86,125,169, 55,217,202,171,228,146, 91, 6,139,240, 60, 75,202,143,181, 53, 11,176,251,104,137, +255, 1, 16,151,253,147,246,255, 38,167,107, 51,156,172, 88, 38, 23, 43,152,187,115, 25,184,199,201,210,221,141, 56, 20, 69,151, +167,153,225, 39, 1,104, 2,224,176, 84, 42, 93,240,204, 51,207,204,249,225,135, 31,252,243,243,243,145,150,150,134,244,244,116, +240, 60,143,128,128, 0, 44, 94,188, 88,159,150,150,182,192,249, 30,215, 25,228,197,188, 17, 22, 22,118,116,197,138, 21, 81, 95, +124,241, 5, 63,108,216,176,155,221,186,117,171,182,120,241,226,107, 50,153,140,218,108, 54, 98, 52, 26,201,139, 47,190, 88,113, +222,188,121, 55, 36, 18,137,122,192,128, 1, 68,163,209, 28, 70,145,131,170,251, 55,159,145,177,237,231,159,127,238,243,250,235, +175, 43, 76, 38,147, 91, 75,150,120, 44, 40, 40, 8,251,246,237, 51,229,228,228,108,245, 98,197,216,246,251,175,155, 91,255,111, +224, 64,153,165, 32, 31,150,130,124, 88,243,243, 97, 43,200, 5, 41,204,135,212,102,133, 74, 38, 32, 42, 78, 9,171,222, 15,155, +143,156,180, 24,141,198, 18, 39, 54,204,207,207,223,182,119,217,178,182, 77,226,227,249,125,227,198,193,108,177,224,169, 75,151, + 28,226,202,108, 54, 99, 67,157, 58,176, 17,130,122, 47,188,128, 43, 86,171, 53, 63, 63,127,219,163,152, 25, 78,157, 58,149, 62, +100,200,144, 99,130, 32, 52, 40,141,117, 71,132,159,159, 95, 65, 97, 97, 33, 50, 51, 51,109, 89, 89, 89, 6, 0, 72, 79, 79,207, +217,184,113,227,121, 65, 16,154,220, 11,103, 89,192, 98,177,220,101,141,178,217,108, 69, 86,199, 34,203,129,124,243,230,205,173, +207,159, 63, 47, 59,115,230, 12,246,236,217, 83,239,135, 31,126,152, 20, 31, 31, 95,231,230,205,155,169,222,196,155,187, 73,127, + 97,247, 63, 92,189,114, 13, 94,122,233, 37,146,154,154,138, 31,127,252, 17,222, 38, 79,101, 40, 51,104, 97,181,169, 76,187, 86, + 22,118,251,245, 86,193,129, 59,250,105, 0,182, 80,189,149,150, 43, 87,238, 84,195,134,193, 97, 0, 96, 52,216,162, 42, 87,174, +220,134,231,121,185, 61, 13, 55, 12, 13, 13, 93, 12,160,165,155,242, 83, 50,112,224,192,166, 17, 17, 17,245,127,251,237,183,147, +119,238,220, 57, 75, 41, 61,228,122, 93,197,138, 21,223,189,112,225, 66, 99,169, 84, 74,188,164, 17, 0, 64,219,182,109,171,198, +199,199,135,254,122, 57, 16,249,178, 74,160,146, 60,128, 87,194, 22, 84, 23, 55,101, 53, 16, 23,119, 48, 52, 40, 40,168, 94,110, +110,238,201, 82, 86, 16,237,250,244,233,243,205,178,101,203,226,218,180,105, 67, 9, 33,156,235,148, 14, 21, 43, 86,236,124,224, +192,129, 6,207, 63,255,252,231,246,209,195, 62, 59, 15, 83, 74,111, 2,232, 87,150, 31,109,235, 21,186, 29,246, 57,207, 24,254, + 51, 56,242,128,174, 45, 19,220,203,204,240, 77, 4, 65,232,201,113, 28,204,102,243,204,200,200,200, 13, 3, 6, 12,232, 61,105, +210, 36,191,208,208, 80,135, 37,107,241,226,197,250,235,215,175,175, 51,155,205, 39, 8, 33,147, 83, 82, 82,122,198,196,120,172, + 31, 10, 22, 46, 92,184,170, 71,143, 30,195, 94,120,225, 5,125,157, 58,117, 2,170, 85,171,166,219,191,127,191, 95,167, 78,157, +242, 37, 18, 9,221,183,111,159,127,197,138, 21, 13,132, 16,197, 31,127,252,145,117,240,224,193,138, 51,103,206,252, 26, 69,195, +173, 61, 97,229,244,233,211,223,237,217,179,103,197,208,208, 80,228,231,231, 23, 19, 91,226,127,165, 82,137,212,212, 84,172, 95, +191,254,142,197, 98,249,218,139,101,227,179, 79, 23, 47,121,165, 93,211, 39, 98, 3,212, 42,164, 38,221,132, 45, 47, 7,208, 22, + 66,110,181, 64, 37,167,136,173,164, 6, 47,209,224,106,106, 33,150,237, 63,146,106,181, 90, 63, 43,137,211,100, 50,125,246,242, +188,121,175, 28, 88,178, 36, 54,190,127,127,156, 91,190,220,209, 85, 40, 10, 45, 27, 33, 40,223,161, 3,184,192, 64,204,248,252, +243, 52,147,201,244,217,195, 78, 44,130, 32, 72, 76, 38, 83, 73,241,128, 32, 8, 73,231,206,157, 91, 69, 8, 41, 32,132,180,181, +159,218,233,206,154,229,204,201,113,156, 80,163, 70,141,159, 34, 35, 35,251, 0,208,214,168, 81,227, 39,133, 66,209,222,100, 50, + 61, 33, 8, 66,210,137, 19, 39,214, 19, 66, 82, 9, 33, 98,171,227,161,206,163,101,177, 88, 48,121,242,100,204,154, 53, 11, 19, + 39, 78,116,196, 87,236, 62,204,205,205, 77,216,187,119,175,108,215,174, 93,244,243,207, 63,207, 26, 54,108, 88,208, 11, 47,188, + 16,244,197, 23, 95,188, 6, 96,130, 39,206, 9, 19, 38,224,243,207, 63,199, 75, 47,189,116,183,202,146, 72,132,164,164,219, 48, + 24, 12,116,225,194,133, 41, 82,169, 52,248,235,175,191, 86, 61,255,252,243,132,149,171, 15, 5,239,168,134,188,247,170,189,140, + 89, 64, 41,221, 41,158, 8, 8, 8, 80,253,244,211,207, 60, 0,172, 91,187, 94, 74, 41, 13, 20, 39,152,253,254,251,239,149, 45, + 90,180,136,240, 80,224,218,148, 74,165,113,246,236,217,161, 35, 71,142,124,242,207, 63,255, 12, 38,132, 52, 5,112, 20, 64,154, + 93, 92, 71, 0, 56, 23, 22, 22, 22,176,122,245,234,216,206,157, 59,107,188, 5,180,160,160,224,235, 85,171, 86, 85,152,183, 55, + 16,191,106,251,224,182,208, 31, 52,136, 34, 36,162, 0, 53,252,110, 97,240,224,193, 49, 11, 22, 44,248, 18, 64,195, 82,136,172, +193,189,123,247,158,181,108,217,178,152,145, 35, 71,166, 30, 63,126, 60, 13,192, 50, 55,130, 47,243,153,103,158,185,179,124,249, +242,104, 74,233, 18, 66,136,156, 82,186,142, 37, 31, 6, 6, 71, 94,106,131,162, 25,225,239, 18, 95,196,157,127, 19, 33,100,131, +213,106,237,201,243,252, 70,231, 9, 75, 35, 35, 35, 95, 49,153, 76,209,132, 16, 42,147,201, 82,211,210,210, 22, 56, 79, 88,154, +148,148,212, 51, 46, 46,206,113,143,125,210, 77,231,185, 54, 2,158,122,234,169,142, 7, 14, 28, 88,180,105,211,166,244,130,130, + 2,191,181,107,215,170,102,205,154,117, 83, 16, 4,250,214, 91,111,197,119,233,210, 69,103,179,217,238,188,240,194, 11, 21, 19, + 18, 18, 94,184,112,225,194,118,103,161,229,134, 19,132,144,154,149, 42, 85,218,183,110,221,186,128,160,160, 32,164,167,167, 35, + 59, 59, 27, 90,173, 22, 54,155, 13, 82,169, 20, 25, 25, 25,152, 54,109, 90,126, 74, 74,202, 93, 19,150,122,224,108, 82, 33, 54, +118,219,130, 41,147,253,131,120, 14, 89, 23,207,195,154,147, 5,169,213,130,114, 53, 3, 33,147,171,112,229, 82, 1, 94, 91,185, +190,224, 86,118,238, 93, 19,150,122,226,108, 84,185,242,246,207,199,143,247, 51,220,190,141,232,103,159,133, 78,167,131,217,108, + 6,199,113,248,107,193, 2,200,194,195,241,238,234,213,218,179,183,110,117,112,157,176,212, 29,103, 25, 36, 14, 7, 39, 33,100, + 52, 33,196,225, 12,223,187,119,239, 98,215,254,252,243,207, 88,178,100, 9,140, 70,163,149, 82,250, 10,165,116, 49, 33,196,207, +158,160, 10,189,113, 86,168, 80,225, 86,173, 90,181,142,216,108, 54,222, 46, 50,232,185,115,231, 26, 94,191,126,189,156, 11, 39, +111,231,180, 62,172,184,135,134,134, 46,248,237,183,223, 42, 68, 68, 68, 16,231, 25,219,237, 66, 17, 0, 48,102,204,152, 14, 7, + 15, 30, 84,212,175, 95,223,152,153,153,217, 56, 60, 60,252,207, 21, 43, 86,132, 13, 24, 48, 32,229,236,217,179,177,174,156, 97, + 97, 97,115,214,173, 91, 87,169, 82,165, 74,156,104, 21,115,237,158, 28, 49, 98, 68,199, 21, 43, 86,200,251,244,233, 99,212,106, +181,145,254,254,254, 87,215,173, 91, 23,214,171, 87,175,212,179,103,207, 70, 63,140,184, 51, 78,247,168, 85,171,214,149,179,103, +207, 86, 18,247,245,122, 61, 50, 50, 50,144,153,153,137,160,160, 32,116,234,212,233,175,235,215,175, 87,114,199, 73, 8,169,223, +175, 95,191, 41, 95,126,249,101, 71,141, 70, 35,219,189,123,183,118,251,246,237,134,155, 55,111, 90, 45, 22, 11,141,142,142,230, + 91,182,108,169,236,218,181,171, 70,161, 80,112,239,189,247, 94,230,135, 31,126, 24, 70, 8, 89, 41, 46,127,230,202,217,160, 65, +131, 67,191,255,254,123, 19, 66, 8, 36, 18, 9, 76, 38, 51,114,115,115,145,156,156,132,115,231,206,225,192,129, 3,216,186,117, +235,201,194,194,194,250, 62,230,247, 80, 0,187,141, 70, 99, 53,185, 92,238,179,176,183,217,108,224,121,254, 34,128,206,148,210, + 36,150,150, 24, 39,195,223,254, 89,165,114,134,183, 11,176, 38,132,144, 13,246, 67,135, 93,167,112, 32,132, 76, 34,132, 76,118, +178,130,121, 11, 75,254,111,191,253,182,167, 99,199,142, 99, 58,116,232, 48,175,115,231,206,119,238,220,185,147, 56,119,238,220, + 56,171,213,106, 62,119,238, 28,119,245,234,213,155, 71,143, 30,173, 84,165, 74,149, 23, 46, 92,184,176,203,139, 53, 75, 12,235, + 57, 66, 72,139,118,237,218,173,127,225,133, 23,202, 55,109,218, 84, 30, 20, 20, 4,158,231,113,237,218, 53,156, 60,121,210,180, +122,245,234,164,220,220, 92,159,151,224,161,148, 30, 38,132,116, 26, 48,246,149,117, 47,244,238, 17,246, 68,181,170,242,232,232, +104, 64,175,199,197, 91,169, 56,120,241,164,249,171, 61, 7, 51,140, 70, 99, 95, 95,151,224,177,115,118,108, 63,126,252,186,169, +255,251, 95, 36,238,220,225,163,163,163, 33,151,203,113,253,250,117, 92, 21, 4,235,236,165, 75,211,242,243,243, 31,250, 18, 60, +226,156, 87,130, 32,240, 0,160, 82,169,240,242,203, 47,195,121,201,157, 37, 75,150, 64,175,215, 3, 0, 79, 8,249,152, 16,242, +141, 39, 43,150, 7,206,242,191,254,250,107,121,103,206,234,213,171,187,227, 52, 62,236, 76,146,157,157,253,238, 83, 79, 61, 53, +147,231,121,143,179,222, 6, 7, 7,163,160,160, 0, 86,171,213,150,156,156,124, 49, 56, 56, 24, 82,169, 20,148, 82,183,249, 40, + 43, 43,235,221,190,125,251, 78,231, 56, 46,194, 19,103, 64, 64,192,205, 63,255,252,179,242,243,207, 63,207,125,251,237,183,215, + 70,142, 28,169,248,243,207, 63,109,148,210,245,172,232,122,180,224,220, 40,181, 55,226,104, 9,215,158, 32,132,204, 59,122,244, +104,248,152, 49, 99, 18,255,247,191,255, 5,180,107,215,206,207,249, 26,189, 94, 47,252,242,203, 47,218, 37, 75,150,228,237,217, +179,231,198,136, 17, 35,154,162,200,191,196, 45,110,221,186,181,121,198,140, 25,129, 93,187,118,173, 2,192,225,159,149,145,145, +129,155, 55,111,226,204,153, 51, 55,205,102,243,198, 82,196, 39,139, 16, 50,117,208,160, 65, 31, 47, 95,190, 60,102,228,200,145, +169,171, 87,175, 62,131,162, 9,134, 93, 17,212,187,119,239, 58,203,151, 47,143, 30, 57,114,100, 42,128,105,148, 82,230, 71,200, +192,240, 55,218,186,250,105,149,232,163, 5, 32, 79, 16, 4, 24, 12,134, 72, 65, 16,122, 10,130, 0, 63, 63, 63,119,215, 53, 73, + 73, 73,233,233,188,168, 52,188, 44,151, 3, 32, 99,251,246,237,219, 86,174, 92,217,225,173,183,222,250, 95,110,110,110,147, 83, +167, 78, 53, 5, 0,169, 84,122, 64,163,209, 28,154, 57,115,230,179, 19, 38, 76,200,240, 69,100,185,136,173, 26,115,230,204, 41, +179, 69,165,237,194,168,242,103,107,214,143,249, 90,161,232,228,178,168,244, 54,251,162,210,134,123,225, 28,255,229,151, 99, 2, +214,172,121,100, 23,149, 54, 26,141,214, 62,125,250,124,205,113,156, 96,111,197,242, 70,163,241, 89,148,114,164,170, 43,103,239, +222,189,191,149, 72, 36, 86,187,165,136, 51, 26,141,207,221, 15,103, 25, 86,162,133, 0,198,150,116, 77,237,218,181, 87,108,220, +184,113, 72,207,158, 61,109,102,179, 57,189, 71,143, 30,252,161, 67,135, 40,199,113,219, 61,112, 26, 1,188, 89, 18,103, 84, 84, + 84,252,167,159,126,122,124,220,184,113, 1, 43, 87,174, 12,217,187,119,175,109,225,194,133,249,217,217,217,159,176,114,235,209, +130, 84, 42,133, 90,173,134,201,100, 66, 70, 70, 6,188, 77, 89, 69, 41,221, 65, 8,233, 58,126,252,248,167,199,143, 31,223, 53, + 42, 42,170, 98,133, 10, 21,212, 28,199, 33, 57, 57,217,154,146,146,146,110,177, 88,182, 1, 88, 15, 0, 21, 43, 86,124, 6,192, + 87,158,248,178,178,178,166, 19, 66,118, 44, 95,190,188,155, 70,163,169,161, 84, 42, 67, 44, 22, 11, 87, 80, 80,144,173,215,235, +207, 27, 12,134, 77,148,210,253,165, 76,247,171, 9, 33,153,195,134, 13,251,102,217,178,101,113,215,174, 93, 43, 56,122,244,232, + 83,174,215,213,168, 81, 99,239,242,229,203,163,159,127,254,249, 59,171, 87,175, 46,149,143, 22, 3,195,127,164, 33,182, 11, 30, +252,139, 61, 85,112, 51,228,114, 57, 15,251,226,210,162, 69,203,205,117,135, 93,124,178,242, 0,204,240, 33, 76,218,193,131, 7, + 95, 31, 60,120,240,199,246, 48, 72, 80, 52,133,131, 21, 69, 30,255,102,120,153,210,193, 67, 68,173, 0,190,180,111,101,245,242, + 12, 40,154, 47,103,206,163,204, 89, 6, 97, 50, 18, 66,198, 19, 66, 62,182, 31, 26,127,226,196,137,197, 46, 22,170, 83,206,231, +189, 89,158,220,113,158, 60,121,210,149,243, 76,105, 56,255, 73,228,230,230,190,242,233,167,159, 30,158, 56,113,162, 98,248,240, +225, 56,115,230, 12,102,205,154,101,204,205,205, 93,121,175,156,169,169,169, 55,163,162,162, 26,204,159, 63,255,141,121,243,230, +245, 34,132,176,181, 14, 31, 17,232,245,250,191,234,214,173, 11, 82,228,176, 68,173, 86,171, 99,180,168,125,134,255,191,124,177, + 26, 1, 88,106,223, 64, 8, 9, 65,209, 40,195, 44, 74,169,107, 67,114,188, 15,124, 7, 0, 28, 40,227,188,191,131, 16,242,236, +213,171, 87,103,252,245,215, 95,110,133,218,149, 43, 87,118,182,108,217,210,255,212,169, 83,239, 80, 74, 55,179,212,193,192,224, + 59,120, 15, 25,239, 10,128,255,249,144, 65,103,222,199,179,109, 62, 88,191, 24, 30,174,216, 90, 76, 8,249,198,201, 26, 83,170, +243, 15,139,243,159, 66, 82, 82, 82, 14, 0,199, 82, 36,137,137,137,119,249,177,221,171,216, 66,209, 44,240,108, 38,248, 71, 8, +215,174, 93,123,234, 1,228,177,236, 71, 52,239,239, 4,208,212,211,121,139,197, 50, 25,192,100,150, 42, 24, 24, 74, 15, 54,251, + 52,131,107,129,107, 44, 73,240,120, 59,255,176, 56, 25, 24, 24, 24, 24, 24, 30, 21,184, 89,235,176,141,227, 28,128,142, 30, 42, +191,237,165,120, 64,169, 23,244,244,198,207, 56, 25, 39,227,100,156,140,147,113, 50,206,199,143,211,137,123,158,135, 83, 23, 93, +248,190,248, 55, 10, 47,199,232, 67, 74,233, 3,219, 0,116,100,156,140,147,113, 50, 78,198,201, 56, 25, 39,227,188,199,231,188, +240, 48,158, 83,198, 97,166, 0,218,136,251, 60, 24, 24, 24, 24, 24, 24, 24, 24, 24,202, 4, 62,205,163,181,118,237, 90,137,248, +127,208,160, 65, 35,108, 54,155, 99,216,187, 68, 34,249,244,199, 31,127,252,166,164,135,244,235,215,207, 86, 18,167, 59,120,123, +142, 59,206, 90, 85, 3, 71,133, 6,170, 95,201,205,211,205,191,150, 98,219, 99, 48, 24,106,136,231,148, 74,229,249,111,190,249, +230,114, 89,135,115,196,136, 17, 85, 92,159, 83, 33, 78,218, 54,196, 95,249,114,118,110,225,220, 51,151, 11,190, 96,201,236,193, +162,127,255,254,165,186,254,250,245, 32, 28, 71, 52, 2, 52, 50, 20,106, 45,176, 29,123, 60,124,122,163,163,163,171, 5, 4, 4, + 12, 5, 80, 83,167,211, 69,168,213,234,116, 0,231,242,243,243, 87,220,185,115,231,162,175, 60,109, 19,200, 77, 0,229,237,187, +183,118, 94,167,241,190,156,243,134, 46,149,136,129, 2, 10, 66, 96,222,114,133, 58, 22,208,124,178, 50, 49, 8,244,238,227, 93, + 42, 19, 19,165,144, 17,192,184,229, 42, 85, 62, 46,233,149, 16, 18, 0,160, 19,128, 90, 0, 78, 1,216, 74, 41,213,177,156,204, +192,240,248,192,117,162, 82,231,125,222,131,152,104, 45,227,201, 34, 10, 26, 4,208, 80,163,209, 40,149,203,229, 48,153, 76, 80, +171, 85,159,189, 56,114,196, 20,112,200,181, 88,241,242, 55,223,124,115,207, 43, 93,151,230, 57,253,250,245,219,225,122,127,112, +128,106,250,206, 95,222, 10,110,221,109,246, 44,211,245,204, 9, 5, 5, 5,156, 66,161,128,209,104, 68, 96, 96, 96,139, 81, 47, +188,208,144,147, 82,147, 76,166,217, 63,111,222,188,212,123, 13,231,107,175,189, 22,101, 54, 27,154, 11,130, 32, 55,153, 76, 10, +215,231, 4,170, 53,179,119,254,242,150,186, 77,247, 89, 83, 0, 48,161,245, 8,161, 72,100, 69,225,213,193, 79,224,163,113, 29, + 17,212,118,246,227,144,161, 37,137,137,137, 99,226,227,227, 7, 46, 93,186, 84,150,152,152, 8,165, 82, 9,189, 94, 31,253,215, + 95,127, 69,143, 26, 53,170, 77,197,138, 21, 87, 93,187,118,237, 51, 74,169,205, 7,202,242, 59,191,123, 15, 0,208, 98,232,180, +242,132,144, 55, 1,232, 0,160, 77,133,191,207,181, 29, 62,173, 60, 33,100, 60,138,143, 22,190, 67, 41,117, 59, 73, 38, 5,228, +155,150,207, 65,207,103,222,228, 9, 33,163,196,227, 93,171, 0,191,127,191, 0, 79, 14,122,165,216,241, 46, 21,193,255,178,124, + 14,186, 63,243,166,199, 85,205,159,172,194, 89, 4,129,122,180,196,115, 28,177,110,185, 66,221, 45, 48,156, 70, 41,221,226,230, + 93,118, 65,209,130,206,110,175,239, 94,157, 79, 51, 91,108,110, 39,156,149, 73, 37,233,155, 46, 88,239,186,119,120, 3, 98,177, +216,138,202, 86, 25, 15, 91, 96, 96,224,206,119,222,121,135,239,222,189, 59,190,250,234,171,150, 95,124,241,197, 11,132,144, 63, + 0,108,164,148, 94,101,185,148,129,225,241, 21, 92, 30,133, 22, 47,193,231, 27,215,125, 83, 41, 45, 61, 19,195,158,127, 3, 43, + 87,174, 68, 78, 78, 14,130,131,131, 33,151,201,164,243, 63,126, 47, 42, 32, 64, 19, 53,236,133, 9,159, 3,168,118,175, 1, 42, +229,115, 42,223, 21, 33,251,132,166,188,132,147,202,229,114,110,213,170, 85,200,205,205, 69, 80, 80, 16,228,114, 41, 55,111,214, + 36, 85, 64,128,159,234,185,209, 19, 91, 2, 88,115,175,225, 52,153, 10, 91,254,180,242,155,128,140,140, 12, 12,127,105, 2, 92, +159, 35,147,201,108, 98,197,194,146,217, 63,135,204,204, 76, 0, 64, 88, 88,152,139,200,106,138,121,175,119,198,107,115,183, 66, +103, 48,253,235,227,153,152,152, 56,166,127,255,254, 3,167, 79,159, 46,227,184,162,129,195, 90,173, 22,122,189, 30,177,177,177, +216,185,115,167,236,221,119,223, 29,248,243,207, 63, 3,192,194,210,242,159, 61,123,182, 66,249,242,229, 13, 0,208,163,142,191, +235,185,120,241, 28, 0,248,251,251,123,229, 11, 13,210, 24,207,158, 61, 88, 83,188,111, 76,135, 88,155,135,227, 6, 0,234,146, +184, 4,129,242, 91, 23,141,242,120,254,249,233, 63, 88, 79,173,217, 83, 45, 49, 49, 81,239,124,220,195,132,203, 0, 16, 89, 88, + 88, 88,222,245,160,120,189,217, 98,139,240,244,188,206, 47, 47,113, 43,192, 44, 54,240, 63,252,240, 3, 0,224,147, 55,135, 72, +190, 60,148,201,243,124, 81, 81,251,241,199, 31, 99,234,212,169,242, 45, 91,182,116, 93,190,124,121, 87, 66,200,124, 79, 66,149, +129,129,225,223, 39,178,156,127, 75, 20, 90, 28, 33,254, 1,254,126,232, 55,248, 69,252,246,219,239,104,221,186,181,227, 92, 66, + 66, 2,250,247,237,133, 31,191,155, 7, 0,254,247, 19,168,251,125, 78, 78,158,246,253, 39, 7, 46,154,118, 43,181,240,192,166, + 77,155,208,170, 85,171, 98,247, 15, 30,208, 15,223,127,253, 49, 40,165,178,251,122,121,148,147,249, 7,104, 48,104,216, 75,112, +247,156, 23,134,247,222,212,165,255,130,142,105, 89,218,121, 44,169, 61, 92, 92,184,112, 1, 70,163, 17, 1, 1, 1,144, 74,165, + 80, 4,149, 71, 10,223, 4, 25, 36, 17,233, 17, 58,188,222, 49, 18,159,188,218, 14,175,205,221,138,249, 43, 15,162, 1, 82,255, +213,241,141,142,142,174, 22, 31, 31, 95, 76,100, 21, 20, 20,160,176,176, 16,249,249,249, 40, 40, 40, 0,199,113,152, 48, 97,130, +108,215,174, 93, 3,163,163,163,183,251,208,141,120,171,197,208,105, 69, 98, 67, 34, 45,156, 60,121,178, 49, 34, 34,194,168, 86, +171, 41, 47, 83, 20,180, 29, 62,205, 31, 0, 56, 94, 86, 48,127,254,124, 83,108,108,172,129,231,121,249, 43,175,188,226,211,244, + 48, 70,163,145, 58,115,154, 76, 70,199,241,217,179,103,155, 34, 35, 35,141,106,181,154,154,205,190,139,224,211,215,179,161,144, + 73,160,144, 73,160,148, 75,225, 95,161, 49, 20, 57,103, 96,181, 90,241,209, 71, 31,153,163,162,162, 76,106,181,154,202,229,114, +217,184,113,227,188,134,115,196,136, 17, 52, 40, 40,200,172, 86,171,101, 83,167, 78,189,107,118,231, 63, 79, 37, 67, 37,151, 66, +173,224, 81, 57, 33, 14, 10,170,247, 57,172, 18, 73,113,111, 4,133, 66,129,150, 45, 91,162,102,205,154,216,176, 97, 67, 91, 0, + 76,104, 49, 48,252,203,225,106,197,186, 75,104,109,222,188,185, 13,236,171, 78,119,235,214,173,104,181,105, 80,140, 31,211, 23, +207, 13, 31, 4,155, 77,112, 44, 55, 65, 56,130,209,207,118,133, 32,216,124,121,176,215, 33,158,165,125,142, 51, 39, 37,156, 4, + 0, 42,197, 71,211, 23,158,251, 31,108,130, 80, 52, 13, 42, 0, 72,128, 23,135, 63, 89,116,172, 12,194, 41,129, 13,111,140,122, + 26,238,158, 83,173, 82, 12,103, 53, 27, 64,156, 22,123,124, 16,139,109, 50,206,226,216,191,127, 63,212,106, 53,134, 12, 25,130, +113,227,198,193,198, 7, 97,237,129, 44,188,181,248, 0,116, 70, 51, 6,183,171,128,215,255, 87, 7,175,207,255,211, 33,178, 18, + 18,114,255,213,113, 15, 8, 8, 24,186,116,233,210,187, 68, 86, 90, 90, 26, 87, 88, 88, 8,179,217, 44, 20, 20, 20,192,102,179, + 97,226,196,137,210,119,223,125,119, 40, 33,100,170,157,199,232,142,115,231,117, 26, 79, 8, 25,127,246,236,217,248,119,222,121, +199,220,190,125,251, 91, 9, 9, 9, 90,137, 68,130,232,232,232, 5,157, 58,117, 10,153, 62,125,186,185,107,215,174, 55, 36, 18, + 9, 42, 87,174,172, 61,115,230, 76, 60, 0,149,175,113,119,230,252,230,207, 79,197, 86, 31, 58,117,234,116,179,114,229,202, 90, +137, 68,130,203,191,204,166,190,190, 79, 41,207,161, 74,108,160,216,140, 4, 84,126, 64, 78,209,110,167, 78,157,146,170, 85,171, + 86,200,113, 28, 78,159, 62, 29, 7, 64,233,141, 83,165, 82, 89, 6, 15, 30,124,235,226,197,139,119, 93, 15, 0,188,132, 67,211, +106,118, 3, 86,108, 3, 32,105,175,199,112, 74, 37,176,190, 59,102, 8, 31,164, 4, 20,254, 97,198,252,252,124, 4, 4, 4, 20, + 89,200,204,102,156, 56,113, 2,205,154, 53,107,179,102,205,154, 93, 44,191, 51, 78,198,249, 55,220,105,145,127,155, 53, 75, 20, + 92,238,124,180,118,186, 70,202,102,179, 34,161,124, 36,102,191, 55, 2, 54,155, 0,155,205, 6,171,253,215,102,179,193, 98, 54, +151, 73,224,238,231, 57,193, 1,170,233,191,175,122, 57,184,125,239,143, 59,204,124,103,248, 54,155, 13, 16, 4, 11, 44, 22,192, + 38, 88, 32,216,108,176, 88,202,166,171,200, 34, 8,136,143,139,194,204,119,134,195,245, 57, 43,126, 92,211,227,207,141, 19,212, +173,187,207,122, 3,192, 71, 76,219, 63, 28, 75,150, 90,173,198,138, 21, 43,208,184,113, 99, 0,192,158, 75, 86,188,181,248, 0, +182,204,108,129, 22, 53, 67,145,158,107,196, 43,159,157,196,111, 7,210,239, 18, 89,255, 98,212, 76, 76, 76, 44, 38,178,230,204, +153, 19,182,120,241,226, 88, 0,232,219,183,111,114,135, 14, 29, 50, 47, 93,186,132,232,232,104,146,153,153,217, 13,192, 43,246, +140, 63,158, 82,186,216, 3,175,182,124,249,242,134,240,240,112,163, 40,136, 56,142, 3,207,243, 40, 95,190,188, 33, 34, 34,194, + 88,185,114,101,173, 76, 38, 3,199,113, 16,133,158,143, 5, 16, 36, 18, 9, 68, 78, 87,107,143,200, 89, 26, 72,121,167,235,233, +221, 22, 36,142,227,220, 62,207, 19,148, 74, 37, 5,224,241,122, 9,231, 84, 60,242, 37,123, 8,124,119,156, 74, 9, 33, 59, 41, +165, 56,126,252, 56,174, 93,187, 6,153, 76,134,168,168, 40, 76,157, 58, 21, 70, 99,145,222,237,223,191,127, 27, 0,167, 89,110, +102, 96,112, 96,231,191, 77, 96,185, 90,181,220,249,104,113,110,212,164, 67, 0, 21,137, 29, 55,226,199, 98,133,197, 98, 6,188, + 44,170,234,171,208,242,244, 28,155, 77, 40,241, 57,162,143,150, 32, 80,222,173,200, 18, 4, 88, 45,150, 50,121,129,130,205, 2, + 65,176,192,221,115, 8,225,108,246, 2, 95,198,242,201,195,129,209,104,196,160, 65,131, 28, 34, 11, 0, 50, 11, 44,208, 25, 45, +104, 81, 51, 20, 13,219,245, 71, 68,144, 2,171,119, 39, 35, 34, 72,253,184,136, 44,232,116,186, 8,165, 82, 9,173, 86,235,176, +100, 45, 94,188, 56,214,100, 50,113, 38,147,137, 91,189,122, 77,220,202,109,151,202,173,216,114,169,220,210,245,199,202,229,228, +228,213,164,148,170, 40,165, 42, 0, 31, 19, 66, 20, 37,241,203,100, 50,135, 64,113, 22, 64, 10,133,226,158, 4,140,163,160,177, +139, 51,153, 76,230,246,184,107,247,154, 55,200,156,133, 22,104,145, 85,203, 69,108, 73, 36, 18,136,190, 81,222, 32,151,203, 29, +113,119, 7, 94,226,244, 60, 73,233, 93, 49,205,102, 51, 10, 11, 11,145,155, 91,204,162, 10, 81, 4, 51, 48, 48,184,215, 34,255, + 86,177, 85,172,252,112, 85,147,176,175, 62,109,181,152,221,138,159, 53,191,236,195,173, 84, 45,162,194, 14,131,122, 88,169,218, + 19, 6, 14, 28,248, 93,116,116,180, 99, 61, 45,133,202, 47,244,133,151, 63,128,213,106,134,191,138,195,243, 67,159, 44, 38,178, +138, 44, 90, 38,120,146,115, 57,121,218,247,159,236,191,112, 90, 96, 64,232, 1, 87,241, 51,115,217,177,126, 57,249,198, 56,142, + 59,130, 28, 18,109,235,255,226, 7, 35,156, 10,247, 83,171,150, 76,126,221,231, 23, 71, 56,105,191, 81, 11, 94,160,188, 95, 13, + 53, 87,176,251,173,225, 79,252,228, 44,230, 66, 66, 66, 54,117,238, 55,191, 99, 90, 54,243,209,122, 88,144,203,229, 24, 55,110, + 92,177, 99, 97,254, 82,168, 21, 82,236, 59,151,137, 99, 59,214, 96,207,217, 76, 40,101, 18,132,211,107,143, 77,188,213,106,117, +186, 78,167,139,214,235,245,200,207,207, 71,126,126,126,113, 65, 32,149,146, 23, 94, 26, 27, 38,149,201, 97, 49,155,240,219,138, + 15,189,114,182, 77, 32, 55,219, 84, 64,249, 30,117,252, 33,145,202, 11,206, 37, 38, 46,224,121, 30, 28,199,225,151,207,222,122, +101,253,220,151,253, 1,224,212,166,207,242, 7, 77,248,116, 33,199,113, 48, 26,141,138,210,132,251,246,237,219,113, 70,163,209, + 96, 23,104,162,105, 29,215,175, 95, 47,103, 52, 26,245,206,199,125,129, 74,237, 15, 4, 37, 0,234,136,187,172,103, 55,110,220, +136,177, 88, 44, 58,158,231, 97, 50,153,124, 82, 69, 28,199,201, 78,159, 62, 29, 39, 8,130,219,235,107, 86,140, 1,162,234, 0, +242,192,210, 20,184, 62, 93,227,174, 5,204,192,240, 95,183,108,161,148,250,226, 81, 16, 88,238,254, 59, 11,173,182,155, 55,111, +166,206, 45, 68,171,197, 98, 23, 89,127,139, 30,155, 77, 64, 74,134, 1,151, 46, 93,198,252,249,243,177,239,224,155,129,211,167, + 79, 87,188,251,238,187,198,129, 3, 7,206, 21, 4,161, 46,199,113,167,250,245,235,231,182,149, 38, 8, 66,185, 99,199,142, 37, +138,251, 22,139, 5,254,254,254,240,247,247, 71,181,202,113,119,137, 44,155,205, 6,115, 9, 93,135,162,143, 22,161, 2,181, 88, +108,176, 9,130, 67,252,228,228, 27,227, 54,110, 63, 94,201,233,242,170,226,159,150,141,107,120, 22,131,163,166, 58,226,177,106, +201,228,215,167,127,245,149, 34,199, 22, 62,110, 80,191,231,106,245, 31, 52, 20,131,159,126,170,141,209,100,218, 32,225,168, 96, +113, 60, 15, 28, 40,138,249,104, 49, 60, 56,100,102,102, 66,175,215, 35, 40, 40,168, 88,133, 21,173,209, 98,194,128, 42,232,244, +214, 94, 24,204, 54, 40,164, 28, 94,233, 21,143, 67, 63,175, 70,166, 49,211, 49, 26,241, 95,142,115, 87,175, 94,141, 46, 87,174, + 28,242,243,243, 97,181, 90,133,190,125,251, 38,243,188, 52,142,151, 74, 73,247, 65, 99,133,212,212, 20, 11,199, 73, 64,169, 13, + 79,245, 31, 69, 20, 74,149,204,108, 50, 89, 1,140,247,176,166,164,243, 20, 14,254,157, 58,117, 10, 17, 71, 2,174,159,251,178, +191,211,185,128,134, 13, 27,134, 56,143, 58,244, 81, 20,147,129, 3, 7,170,202,151, 47, 79, 0,224,200,138,119, 68,235, 25,233, +209,163,135,178,124,249, 34, 63,252, 63, 62,243,125, 77,237, 48, 53, 5,242,174, 3,121, 55,238,178,100,245,232,209, 67,145,152, +152, 88,170,188,104,119,128,247, 56,119,151,134,183, 2,169,199,125,226, 26,222,128, 88,222,105, 13,126,238, 83, 28,228,126,161, +198,166,111,109, 57,196,196, 22, 3,131, 79,112,209, 34,255, 30,216,215, 54,220, 9,160,173,253, 23,197,124,180,186,117,235,182, +171,152,122,164,128,197,106,190, 75,100,217,108, 54, 72,137, 17,243,231,207,199,171,175,190, 10, 0,178,215, 95,127,253,167,233, +211,167,247, 17, 4,161, 46,165,180, 21, 33,164,164, 86,227,206,232,232,232, 52, 74,169,148,227,184, 86,159,125,246, 89, 72,215, +174, 93,225,239,239, 15, 42,208,187, 68,150,205, 38,192,108, 54,193,147, 73, 43, 56, 64, 53,253,247, 53,227,130,219,247,250,184, +131, 77, 16,182,137, 34, 75,176,217, 0,161,232,166,172,244,100,108,253,109, 3, 62, 95,242,121, 14, 8,189, 0, 10,129,227,184, + 83,158,194, 40, 8, 66,221,189, 71,206,183,106,217,184, 6,166,127,245,149,226,236,177, 59, 63,141,125,237,237, 90,253, 7, 13, +197,154, 31, 87,128,179,230, 30,119, 22, 89, 54,139,128,188,156,204, 30, 59,152,143,214, 63, 6,139,197,130,156,156, 28, 88, 10, +115,208, 40, 90,139, 15,250, 71, 32, 45,199, 0,169,160, 67,245,128,116,236,200,190, 1,181, 90,253, 88,196, 53, 63, 63,127,197, +168, 81,163,218,236,222,189, 91,198,113, 28,242,243,243,209,174, 93,187,204, 12, 33, 86,249,194, 75, 99,195, 82, 82,146,173, 1, + 42,222, 40,147, 73,145,158,158, 46,180,233, 58, 68, 63,104,196,171, 49,175,190, 51,115,105,202,190,197,139,125,121,134,243, 72, + 64,215,115, 95,126,249,165, 41, 54, 54,214,160, 80, 40,228,195,135, 15,247,169,255,208,100, 50,209,217,179,103, 27, 93, 71, 23, +154, 76, 38, 58,127,254,124, 83, 92, 92,156, 81,165, 82, 81,139,197,187,223, 39,199, 17,235,243,211,127,176, 90,173,214, 98, 86, + 44, 81,100, 89, 4, 82,184,104,209, 34,115, 92, 92,156, 73,173, 86, 83,133, 66, 33,243, 37,156, 99,199,142,165,193,193,193,102, +141, 70, 35,155, 48, 97,194,125,141, 58,180,216,192, 79,255,204, 49,189,131,194,223,223, 31, 5, 5, 5,142,176, 70, 71, 71, 51, +177,197,192,224, 6,119,105,145,127,153, 21,206,147,143,150, 91, 7, 6, 1, 40, 76, 75,207,140, 8,139,172, 0,171,213,106,223, + 44,176, 90, 44, 24,247,226, 32,204, 93,178, 8, 0, 68,177,213,233,245,215, 95,255, 9, 46,254, 94,238,176,106,213,170,105,175, +191,254,122, 64, 90, 90,218,150,239,190,251, 46,100,200,144, 33, 24, 63,126, 60, 62,254,248, 99, 72,229, 74,132,132,151,115, 60, + 71,124,110,102, 70, 54, 40,104,161, 91, 5,105,247,209,162, 20,124,104,120, 60, 44, 54, 11, 4,139, 5, 22,139, 5, 68, 82, 20, +181,173,191,109,192,144,103,199, 66,170, 8, 8,254,116,254, 71,250, 90,141,162,251,188, 59,114,164,209,187, 60, 5,119,246,216, +157,159,198,190, 58,161,147, 40,178,214,173, 88,114,225,147,137,189, 86, 42,228,188,227, 57, 22, 65, 0,199, 73,152,143,214, 67, + 68, 88, 88, 24, 50, 50, 50,144,155,155, 11,141, 70,131,172,172, 44,100,103,103, 35, 55, 55, 23,198,252, 28,132,218,114, 65,172, +217,224,121, 30,233,183,139,124, 0, 31, 19,107, 22,238,220,185,115,177, 98,197,138,171,222,126,251,237, 65, 19, 39, 78,148, 10, +130,128, 75,151, 46, 1,132, 80,169, 76, 14,142,227, 32,149,242,200,203,203, 23,212,126, 65,119,204, 84,162,150,202,254,207,222, +117,135, 71, 81,188,225,119,246,122,201,165,247,132,132,208,146,144,208,165, 19,138, 84,233, 82,164, 23,145, 38, 77, 16,233,210, + 20, 65,154, 72,147, 34, 2,210,225,135,210,165, 72,239, 16,122, 8, 37,144,222,123,114,185,203,213,157,223, 31,228,226, 17, 83, +238, 66, 20,197,125,159,103,159,189,155,221,125,119,102,118,119,246,221,111,190,249, 70, 4,134, 39, 44,109,152,112, 76,235, 97, +175,194, 59, 48,124, 97,174,105, 36,160, 80, 40,196,245,253,203,115, 90, 15,251,202, 22, 0,132, 98,105,102,135, 14, 29,162,107, +214,172,153,119,251,246,109, 95, 20, 25,117, 88,204,243,105,232, 57,108, 26, 79, 38,149,228,181,111,223, 62,198,196, 25,117,122, +109,206,224, 79,103, 19,194, 19,229,117,237,218, 53, 58, 56, 56, 56,143,199,227,225,241,161,165, 57, 61,135, 77,147,144, 63,198, +244,254, 9, 39,159,211,145,247,247, 95, 10, 88,180,104,145,190,115,231,206,177, 38,127,177,168,168, 40,207, 46, 93,186,136,191, +251,238, 59,125,151, 46, 93,226,106,213,170,165,100, 24, 6,161,161,161,222,165, 89,170, 76,144, 74,165,250, 17, 35, 70,196, 60, +124,248,176, 92,163, 14,203, 66,165, 74,149,192,178, 44,218,180,105,131,252,252,124,206,178,197,129,195, 59,136,162,113,180, 74, +141, 12,175, 55,232,199,143,158,180, 96, 45, 64,108,204, 90,129, 63, 12, 75, 20,100,234,212,207,229, 0,164, 38,177, 53,121,242, +228,204,178, 50, 97, 38,178,222, 27, 56,112, 32,102,206,156,137, 21, 43, 86, 24,151, 45, 91,198,123,242, 44, 82, 55,236,211,121, + 89, 69,206, 3, 10,170,100,245,236,248,226,248, 50,179,243,230,133,116, 89,178, 32, 62, 89,117,121,216,216, 57,133,173,151, 17, + 64, 14,241, 48, 2,192,134, 31,126,200, 19,136,109,229,125,251, 15, 6,128,246,107, 87, 45,253,229,107,252, 88,182,216,162, 36, +112,252,228,105, 14, 38,145,181,238,187, 69, 15,237, 72,242,154, 9,159,135,233,205,207, 3, 0,142, 10,252, 18,210,101, 73,199, +148,140,188,239,185, 91,237,239,129, 86,171,197,234,213,171, 49,103,206, 28,100,100,100, 32, 45, 45, 13,153,153,153,133,139, 82, +169,132,187,187, 59,126,251,237,183, 63,249, 49,253,219,241,242,229,203,117,135, 15, 31,198,133, 11, 23,250,205,152, 49, 67,224, +238,238, 78,236,236,146,137, 94,167, 5, 64,105,106,106, 42, 43,179,177, 79,116,118,243,142, 73, 72, 74, 9,212,235,180, 96,141, +186, 18,189,205, 11,194, 59, 76,125,244,232, 81,229,229,203,151,107,205, 71, 2,246,159,182,118,117,131, 6, 13, 28,215,172, 89, +163,237,218,181,107,180,201,121,221, 18,103,248, 83, 47, 48,233,209,163, 7, 65, 69, 57, 91,143, 90,190,197,196,105, 62, 26,177, +219,231, 27,183, 84,175, 94,221, 49, 56, 56, 56,186, 52,222, 42, 85,170,168, 61, 60, 60,180, 1, 1, 1, 74,129, 64,240,202,146, +165,215,171,170, 84,169,194,186,185,185,105,107,214,172,169,180,214,105, 95, 42,149, 82,147, 85,172, 56, 88, 51,234, 80,192,131, + 97,224,192,129,133,145,225,167, 86,175,158, 56,120,240, 96,143, 41, 83,166, 96,203,150, 45,184,114,229, 74, 70,209, 99, 90,181, +106,133,139, 23, 47, 46, 0, 48,143,123,186, 57,112,248,247,161,204, 56, 90, 69,177,117,235,142,223, 97,230,211, 84, 28,190,254, +250,107,113,129, 37,171,253,103,159,125, 6,181, 90,237, 80,140,186,107,103,138,181, 81,156,200, 90,186,116,233,110, 74,169, 55, +128, 22, 70, 35,123, 99,243,143, 91,219, 88,160, 24, 11, 57, 41, 97,120, 12, 67,148, 34, 1,189,251,195,166, 45, 59,205,247, 43, +112,126,247, 7,193,253,181,171,150,170, 1,180, 47, 42,182,250,244,233,163, 42,202,105,194,152,177, 99, 10, 69,214,218, 85, 75, + 79, 7,191,231,243,225,156, 79,190, 42, 86,156,125, 53,111,180,156, 97, 72, 51,115, 31,173,226, 56, 43, 64, 45,115,156, 5, 16, +139,197,216,179,103, 15, 66, 66, 66, 80,167, 78, 29,100,100,100, 64,169, 84, 66,169, 84, 22, 90,189, 30, 63,126,140,232,232,104, +136,197,226,119,170,236, 5,211,234,172,246,240,240, 56, 51,119,238,220,193,105,105,105, 93, 50, 51,179,156,142,110,253, 10,157, +250,142, 37,173, 58, 15,200,211, 82,190, 36, 46, 49, 57,224,252,241, 93,142, 39,246,174,131, 78,171, 29, 77,200, 15,225,166,240, + 14,197,228, 83,101, 10,227, 16, 16, 16,144,103, 46, 84,124,124,124,242, 61, 61, 61, 53,193,193,193,133,233,197,141,230, 43,174, +236,214,114, 22,248,127,229,149, 85,159, 38,209, 86, 52,108,132, 76, 38,131, 73,124, 89,147, 79,243,209,150,197, 54,148,101,140, + 58, 52,231,220,118,135, 10,204,183,109, 35,132,183, 99,199,142,118, 59,118,236,120, 15,192, 93, 0,167, 0,232, 11,142, 43,116, +154,167,148,206, 7, 48,159,123,222, 57,206,255, 42,231,191,220,154,213, 10, 5,190, 89, 5,104, 77, 41,189, 80,162,208, 42, 11, + 38,199,119, 0,204,228,201,147, 51,213,106,181,195,224,193,131, 75, 61, 38, 41, 41,105,203,246,237,219, 95, 19, 89,189,122,245, + 26,126,224,192,129, 51, 41, 41, 41,229, 42,152,131,173,244,235, 11, 71,166, 59,180,234,186,228, 51, 0,203,138,151,153, 96,131, +223,243,248,112,237,170,165,191, 20, 17, 91, 63, 3,232, 85, 92,125, 1, 64,135, 15,122, 96,215,214,181, 38,223, 46,233,195,219, +241, 39,250,221, 89, 88,236,104, 69,123, 27,241,194,130,124, 76, 1,231,163,245,183, 32, 48, 48, 16, 87,175, 94,197,216,177, 99, +209,182,109, 91,244,232,209, 3,149, 42, 85,130, 88, 44,198,139, 23, 47,112,233,210, 37,188,124,249, 18, 42,149, 10,117,234,212, +121, 39,235, 32, 49, 49,241, 73, 65, 48,210, 73,166,175, 41,177, 68, 42, 28,240,241,103,222,133,163, 14,247,174,131, 38, 95, 13, + 0,124, 66,200, 50, 66,200, 79, 37, 56,196,191, 18, 20,124,190,240,222,189,123,190, 38,171,149, 78,167, 19,155,210,111,223,190, +237,107,138,173,149,159,159,111,241,168,195,191,138,243,193,131, 7,222,166,209,145,166,209,133,124, 62, 95, 24, 26, 26,234,109, +226,212,104, 52, 22,141, 58, 20,137, 68,194,123,247,238,121, 27,141,198, 10, 27,117, 88, 68, 24,159, 44, 88, 76,141,178, 73,100, +153,124, 58,184,110, 67, 14, 28,254,221, 56, 95,116, 82,105,147,158, 40,151,208, 50, 57,190, 91,161,244,248,149, 43, 87,238,208, +191,127,255,215, 68, 86,159, 62,125,140, 7, 15, 30, 60,239,225,225,145,204, 48,204, 19,107,243, 81,232,163, 5, 8,138,110, 99, + 24,230,126,139,134, 53,193, 48,204,253, 57,159,124,162,249, 26, 63,190, 38,182, 14,253,178,175, 99, 73,237, 34, 0, 56,185,122, + 97,224,240,241, 24, 56,124,188, 3,128,230, 64,201,163, 21, 75,203, 7,135,191, 14,205,154, 53, 67,120,120, 56, 78,159, 62,141, +139, 23, 47, 66,165, 82,129, 16, 2,169, 84, 10,173, 86, 11,177, 88,252,206,138,172,146,160,211,233, 12, 51, 22, 44,223,206,227, + 11, 13, 44,171, 35, 58,157,238, 99,107,158,243, 25, 51,102, 48, 40,198,247,106,194,132, 9,197,166,191, 45,206, 89,179,102, 21, + 59, 74,112,194,132, 9,165,142, 30, 44, 9,159,127,254,121,133,141, 58,180, 80,124,113,130,138, 3,135,119,207,170, 85,236,208, +189,114, 9, 45,134, 97,238, 23, 51,186,144, 0,160,197,141,232,163,148, 26,120, 60,222, 2,123,123,251,209,121,121,121,191,245, +234,213,107,114,159, 62,125,140,192, 43, 7,249,242, 22, 42, 51, 59,111, 94,235,110,223, 78,201, 82,106,214, 20,221, 86,212,242, +100, 18, 91,235,190, 95,186,254,151, 3,123,250, 36, 37,196,173, 47,169,108, 37, 9,170,146, 70, 43,102,231,168, 23,180,238,246, +237,103,153, 57,106,206, 71,235, 45, 88,182, 76, 40, 58,169,244,127, 1,148, 82, 13, 33,228, 11, 66,136,201,162,251,197,203,115, +223,175,255,227,193, 95,253,192,124, 91, 41,214,172, 68, 75, 38,136, 46,238,184,210,182,253, 5,156,201,165, 76, 16, 93, 26,146, +173,228, 75, 6, 0,161,128,151, 82,210,228,209, 66, 1, 47,165,130,174,161, 41,192,225, 2,238,137,230,192,225, 95,219, 22, 91, +231,163,101, 18, 65, 37,161,164, 56, 89,165,193,104, 52,126, 11,224,219,138, 44,216,195,103,185,155, 0,108,178,116,255, 2,159, +172,161, 5, 75,241,249, 76,127,100,117,217,250,244,233,179, 1,192, 6,238, 86,251,123,176,127,255,126,174, 18, 94,127,192,215, + 19, 66,126, 50, 9, 47, 75,183, 21,217,239,240, 95,144,175,191,130,243,228,223,201,119, 52,220,224,246,182, 27,105, 14, 28, 56, +252,243, 81,156, 53,171,212, 81,135, 28, 56,112,248,215,137, 45, 77,121,182,113,224,192,129, 3,135,138,251, 88, 42,206,215,146, + 0,104, 87,194, 65, 22,143, 38, 32,132,180, 43, 71,166,206,112,156, 28, 39,199,201,113,114,156, 28, 39,199,249,223,226, 44,139, +219,252,120, 66,200, 40, 74,233, 38,252, 11, 80,226,128, 22, 74,233, 95,182, 0,104,199,113,114,156, 28, 39,199,201,113,114,156, + 28, 39,199, 89,206,243,140,250, 59,206, 83, 1,249,164, 69, 23,211, 54,174,235,144,195, 95, 14,111,111,111,176, 44, 11,134, 97, + 16, 23, 23,199, 85, 8, 7, 14, 28, 56,112,120,167, 96,181, 51, 60,135, 98, 76,130,190, 61,231,128,197,172, 87,127,176,148,198, +252, 58,255, 93, 43, 99,223,190,125,121,214,236, 31, 25,105,207,220,129,199, 10, 91,185,176,155, 50, 79,191,194, 24, 58,119, 77, +113,251,177, 44,139, 35, 71,142,160, 91,183,110, 38,243, 42, 0,192,195,195, 3, 71,142, 28, 41,220,175, 65,131, 6,133,193, 27, + 57,112,224,240, 23,183,105, 14, 65,149, 64,200,199, 0,253, 99,216, 37, 75,195,104,214,227,173,175,237,103, 95,115, 56, 24, 18, +100,150,164, 6,197,102,154, 25, 22, 91, 66,247,137,233,133, 99, 31, 17, 17,225, 91,173, 90,181,104, 0, 89, 69,118,251,211, 54, + 90,202,195, 79, 8, 33,206, 85,234, 15,145, 73,100,159,106,181, 90, 63, 27,133, 34, 37, 35, 61,117, 67, 70,204,131,117,102,187, +217,222,184,113,195,163,113,227,198, 9, 0,114,203,226,228,192,161, 66,159,167, 63, 7, 44,173, 56,103,120, 82,163,183, 31, 12, +204, 80, 80, 12, 2,193, 61,250,114,127,239,114,241, 84,235,229, 5,150,223, 8, 64,125,128,214,151, 75, 37,245,212, 90, 93, 10, + 75,233, 16, 26,177,247,174,213,124, 85,250, 30, 3,208,185,132,173, 11,232,203,125,214, 9, 37,150,206,190,117,241,160,216, 94, + 70, 80,173, 65,175,105, 48,139,224,252, 6, 23, 70, 10, 96, 24, 33,164,173, 76, 38,171,161, 82,169,162, 40,165, 15, 0,172,167, +148, 38,148,147,147, 1, 48,194, 70, 46,239,228,171, 16,213,143, 73,203,142,207,213, 27, 47, 1, 88, 70, 41,205,172,168,155,234, +149,200,114,223,244,217,128,198,195,150, 78,108, 7,251,214,223, 78, 3,176,166,180, 99, 24,134, 25,233,233,233,233,231,229,229, + 21,185,182,123,221,205,227, 15,223, 67,143, 30, 61, 0, 96, 36,203,178,126, 94, 94, 94,145,132,144,205,150,182,141,132, 16, 15, + 0,124, 74,105,108,193,127, 57,128, 96, 0, 85, 0,188, 4,240,136, 82,154,247,134,215,232, 95,193,233,237,237,237,201,178,236, + 39,110,110,110, 93,146,147,147,143, 49, 12,243, 99, 92, 92, 92,194, 91,110,123, 54,154,252, 43, 44, 93, 3, 24,109,205, 9,164, + 82,105,114,126,126,190, 43, 0, 72, 36,146, 20,181, 90,253,151,141, 18,252, 59,207,245,247,188, 25, 48,242,212,229, 71,157,204, +147, 58,180, 8, 42,230,193, 37, 65,167, 46,135,181,124,125,191, 96, 99,113,109, 96, 65,244, 85, 44, 88,176,128, 44, 92,184,112, +120,213,170, 85,171, 51, 12,243,116,238,220,185,175,133,190, 41,186,109,222,188,121,127, 68,110, 45,134,211,219,191,217,161,126, +253,251,182, 30, 55,106,152,141,151,139, 13, 18,211,242,156,126,216,178, 99,249,142, 29,187,186,126,210,175,125, 39, 0,248,234, +171,175,122, 86,170, 84,169, 50,143,199,139,252,242,203, 47,127, 46,141,147, 3,135,191, 0,214, 77, 42, 93,230,243, 25,212, 87, +142,124,218, 7, 32,195, 90, 53,109,208, 98,244,144,110,132,242, 36, 24, 48,114,186,193,106,174,202,195,197,224,169,191,174, 29, + 28, 52,185,111,183,118,204,123,193,149,225,225, 98, 7, 48, 2,108, 60, 30,229,180,102,233,151,235, 1, 52, 46, 71, 54, 59,191, +184,182, 27,137, 89, 70, 16, 2, 16, 2, 48, 4, 80,230,179,232,208,115,232, 60,235,133, 18, 97,236,101, 4,147,119,231, 3, 0, +239,141,219, 56, 66,234,187,184,184,172,155, 56,113,162, 67,237,218,181, 61, 36, 18,137, 76,173, 86, 87,143,136,136,240,155, 51, +103, 78,123, 66,200, 18, 74,233, 65, 43, 57,125,170,121,123,238, 91, 51,121, 68,163, 58, 85,124, 33,208, 42,193,106,242, 42, 61, +139,120,222,116,204,250,253, 35, 9, 33,253,203, 51,101, 66, 90, 90, 26, 1, 0,103,103,103,250,186,200,106, 50,236,187, 41, 29, + 48,121,229, 41,168,242,181, 59, 75, 58, 62, 33, 33,193,100,217,242, 59,114,228, 72, 80,183,110,221,208,200,207, 27, 55,186,165, +162,225,161, 56, 0, 40, 76,183,162,172, 11, 1,204, 42,104,135,119,241,120,188,211,237,218,181,243,251,228,147, 79, 72,131, 6, + 13, 16, 26, 26, 90,101,247,238,221,237,248,124,126,164,209,104,124, 0,224, 41,165, 84,111, 33,183, 0,128, 63,143,199,171,253, + 79,230,244,244,244,148,106,181,218,161,222,222,222,163,186,119,239, 94,187, 91,183,110,196,223,223, 31, 79,158, 60,105,112,226, +196,137,121,117,235,214,125, 16, 23, 23,183, 73, 36, 18,109, 79, 72, 72, 80,191,133, 47,188, 81, 0, 60, 11, 12, 28, 11, 44, 88, + 39, 0, 88, 64, 41, 77,180,244, 28,249,249,249,174,166,247, 40, 33,196,245,175, 44,143, 53,231, 34,132, 60, 38,132, 56, 22,252, + 70,105,107,134, 97, 96, 48, 24,242, 12, 6, 67,213, 50, 56,253, 1, 48, 86,100,153, 82, 74, 75, 11, 4, 45, 5,128, 14,205,131, + 50, 64, 16,102,178,104, 21,243,145, 25, 86, 40,192, 40,130, 78, 93, 9,115,124,205, 10, 86, 4, 11, 22, 44, 32,243,230,205,195, +252,249,243,187, 1, 8, 97, 89,246, 82, 96, 96,224,234,215, 40, 89,182,112,219,188,121,243,190, 95,176, 96, 1, 1, 80,172, 32, +114,172, 92,119,240,135, 31,246,104,189,104,246, 4,155,248,116, 29,238, 69,170,225,104, 35,196,188, 47,198,138, 52, 26,125,211, +245, 63,239, 24,181,118,201,244,205, 70,163,241,125, 0,239, 25,141,198,219, 0,126, 46,141,147, 3,135,191, 0,173,173,154, 84, +186,132,135,156,160,106,239,150, 48, 98,152,111, 37,183, 62, 19, 63,249, 72, 26, 28, 88, 13,249,176, 65, 84,154, 17,199,143,158, + 0,128,189,214, 89,157,250,189,199, 23, 98,251,210,249, 95, 4,132, 52, 10,198,195,120, 61,110,199, 27,161,138,212,131,199,232, + 97,100, 41, 64,145, 95,222, 82,199,101, 26,112,249,169, 22, 12, 1,120, 12,192, 48, 4, 60,166,156,100,172,246,217, 87, 91,239, + 4,167, 37,179, 0,171,125,246,134, 47,160,247,107,212,168,177,106,225,194,133,238,201,201,201,142,183,111,223,134, 88, 44,134, +131,131, 3,223,211,211, 51, 96,213,170, 85,217, 19, 38, 76,248,130, 16,114,151, 82, 26,101, 33,103, 96,231,247,106, 95,221,180, +244, 43, 59,253,141, 19,200,218,243, 63,240, 24, 10,161,220, 6,126, 82, 41, 78,124, 88,205,177,207,209,200,131,132,144, 64, 74, +105,124, 89,124,225,225,225, 60,141, 70,211,223,214,214,182,137, 64, 32,112, 19,219,251,176, 9,252, 70,233,169,164,202,203, 20, + 87, 85,203, 41,237,220, 58,173,248,172, 13, 38,175, 60,133, 85,187,175,111,171,143,164,185,214,212, 65,214,173,115,184,151,249, +231, 75,235, 46, 23, 88, 82, 86, 7, 0,211,181, 90, 45, 35, 20, 10,137, 68, 34, 25,188,104,209, 34,221,128, 1, 3, 10, 29,192, + 66, 66, 66, 16, 18, 18, 66,114,115,115,171,156, 59,119,174,202,142, 29, 59, 12,132,144,199,148,210, 67, 37, 91, 44,100, 49,249, +249,234, 74, 18,169, 84,245,195,250,245, 43, 90,182,108,201,154,207,147, 88, 30, 78, 0,176,183,183,223, 92,163, 70, 13, 50,115, +230,204,132,138,226,244,243,243, 59, 21, 18, 18,210,166, 67,135, 14,252,230,205,155,195,211,211,179,112,155,179,179, 51, 66, 66, + 66, 72,108,108,108,157, 75,151, 46,173, 63,117,234,212,106, 63, 63,191,115,145,145,145, 29,254,206, 86,167,192, 82, 5, 43,132, +211,166, 98, 2, 33,255, 59,141, 69,132,216,108,220,184,209,213, 52, 39,163, 94,175,135,209,104, 44, 92,155, 22,150,101, 97, 52, + 26,177,104,209, 34,163,133,117,154,135,130,224,208,102, 11, 91,220, 90, 36, 18, 89, 22,185,151, 32,204, 67,156, 85, 83, 46,151, +251, 2,232, 92,163, 70,141,233,230,155,171,187,188, 90,231,229,229, 69, 39,106,236,195, 0,180, 44,237,118, 95,184,112,225,208, +249,243,231,247,192, 31,115, 86,214,238,219,183,239,185, 34,251,213, 46, 88,231, 17, 66,206, 51, 12,115, 4,192, 86, 0,127,178, +186,203,100, 54,163, 39,126,250,137, 77, 92,154, 14, 95, 31, 76,195,214,139, 57, 24, 26,162,192,228, 15,236, 48,112, 64, 63,249, +254,255, 29, 24, 13, 96,179,217, 33, 79, 2, 3, 3, 73,120,120, 56, 39,178,222, 45, 52, 4,224, 98,246, 95, 11,192, 52,101, 86, + 90,193,115,225, 84, 36,221,124, 63,211, 58,181, 32,221,165,224, 56,106,198,155, 10,224, 86, 57,219,187, 11, 5,121,248, 19,248, + 0,112,236,216, 49,218,165, 75, 23, 98, 90, 23,223,178,247, 57, 62, 98, 64,247, 78, 93,218, 54, 3, 35,113,192,179, 20,224, 90, + 12, 5,159,209,131, 1,197,141, 43,231, 40,248,236,246, 34, 39, 46,209,122, 66,252,250,124, 94,187, 86,240,183, 63, 46,157,196, +123,156,194,199,214, 75, 42,232,242,149, 72, 77,138, 65, 74, 66, 52, 18,227, 94, 34, 62,230,229, 3,128,204,179,148,243,207, 5, + 7,140,108,193, 55, 32,139,130,250, 44,118,228,101,217,156,186,188,240, 42,254,193,193,153, 34, 35,160,203, 11,183,160,210,207, +148,208, 0,183,175, 86,173,218,178,217,179,103,123, 63,122,244,200, 54, 47, 47, 47,239,196,137, 19, 23,162,163,163,221,220,221, +221, 99,199,142, 29,219,204,203,203,203,181,103,207,158,178,125,251,246,205, 6,240,137, 5,156,193,221,155,212,187,182,101,245, +119,242,244,253,107,160,141,184,143,227,137,121,184,146,172,162, 85,236,196,100,124, 29, 23,216,136,249,248,170,185,167, 77,231, + 95, 34,190, 5, 48,176, 52,206,171, 87,175,122,200,100,178,149, 3, 7, 14,244,156, 56,113,162,200,200,183,231, 31,184,150,110, + 55,125,253, 53, 79,149, 70,199, 27,208,166, 50,166, 12,170,141, 41,171,206,154, 68,214, 40, 63,191, 44,182, 56, 78,111,111,239, +145, 44,203,250, 21,252,173,108, 90,183,189,156,187,216,236,148,133,233, 68,225,188,216,211,211, 19, 12,195, 68,198,197,197,109, +182,244, 26, 73, 36,197,207,158,226,224,224,128, 86,173, 90, 33, 48, 48,144,223,178,101,203,218, 0, 14,149,196,169,211,105, 61, + 88,150, 66,161, 80, 72,157,156,156, 28, 20, 10, 69,186, 78,167,123, 35, 78, 0,112,116,116,236,221,170, 85, 43,254,238,221,187, +211, 34, 35, 35,111, 12, 24, 48,224,165,173,173,237,107,214, 95,185, 92,142,234,213,171,227,203, 47,191,228,119,234,212,169, 76, + 78, 55, 55,183,246, 59,118,236, 0, 33,164,240,165, 93, 20,190,190,190,112,119,119, 71,231,206,157,249,189,123,247,110, 95,222, +231,200,138,134,230, 76, 49, 22,173, 5,175,139,217,146,187,223,138,219,223,130,235,158, 98,178, 46, 73, 36,146,148,242,228,179, + 8, 74,236,238, 20,139,197,133, 86,168,162,231, 42,142,147, 97, 24,204,153, 51, 7,132, 16, 8, 4, 2, 8,133,194, 98,215,173, + 91,183,182, 54,159,177,132, 16, 70, 40, 20, 78,231,243,249,159,104, 52, 26,111,137, 68,146, 96, 52, 26,183,105, 52,154, 69, 5, + 22, 81,251,226,238,221,146, 56,229,114,185,239,179,103,207,106,148, 84, 41, 26,141, 6,181,107,215, 6, 52,120, 92, 26,103, 68, + 68,132,111,213,170, 85,253, 1,152,166,104,187, 72, 41,109,105,246,223, 28, 23, 41,165, 31, 20,252,126,250,226,197, 11, 95,147, +208, 50,231,212,235,116,126,222,174,182,184, 23,165,198,214,139, 57,248,125,182, 39,218, 46, 74, 64,175,250,124, 4,250,216,192, +160,211,251,247,237,219,119, 59, 0,255,130,151,100,207,190,125,251, 6,240,120,188,179, 0,126, 5,144,253,119,221,243, 28,231, +155,161, 12, 45,226, 66, 8, 57,106,118,254,174,166,255, 51,102,204,152,181,120,241,226, 71,132,144,163,230,233,230,251,153,175, + 11,218,155,163,148,210,174, 51,103,206, 12, 94,178,100,201, 55,166,125,255, 10,133,104, 77,215,161,109,106,190, 28,151, 98,108, +193,231, 25,193,103, 8,248, 60, 0,148, 32, 58, 42, 2,185, 57, 89,151,233,203,255, 69, 90,102,201,234,219,188,110,189,218, 75, +119,173,154,198,252,116, 73,133,172,188,124,132,223, 61,143, 91,231,127, 77, 50, 26,140,191,130,208,219, 0, 19,138,151,236, 19, + 74,247, 27,203,127, 35,224,149, 85, 12,164,136,216,122,107, 95,185, 31, 4, 4, 4, 44,158, 51,103,142,239,221,187,119, 21, 57, + 57, 57,169, 59,119,238,124,162,209,104,238, 2,248, 62, 38, 38,166,213,247,223,127, 47, 91,190,124,121,135,218,181,107,251,239, +223,191, 95,101, 1,103,157, 47,134, 13,188,246,201,196,207, 36,143,247,173,131,232,113, 40,230,220, 79, 51,254,158,168,154, 13, + 96, 21, 98,149,205, 83,243, 13,167,191,107, 85,137,169,172, 16,162,154,189,168,117, 89,150, 44,153, 76,182,114,199,142, 29,190, + 13, 27, 54,100, 0,224,210, 83,131,120,250,250,107,158, 39, 23, 55, 39,205,131,156,144,146,165,193,164,117,247,112,226, 90,202, +111, 69, 69,214,159, 12,129, 5,221,133,230,105, 71,142, 28,145, 1,248,147, 51,136,121,122,105,221,136,148,210, 76, 66,200,183, + 34,145,104, 14, 33,132, 54,108,216,240, 94,173, 90,181,148, 14, 14, 14, 80,171,213,208,104, 52, 16, 10,133, 80,171,213,136,142, +142,198,141, 27, 55,224,224,224, 96,213,181, 82, 42,149, 80, 40, 20, 96, 89,246,141, 57,141, 70, 35,217,176, 97,131,252,209,163, + 71,242, 3, 7, 14,184, 77,158, 60, 57,189,102,205,154,183,251,245,235,247,220,213,213, 85,115,255,254,125, 92,189,122, 21,153, +153,153,104,210,164,137, 69,156, 90,173, 22,124, 62, 31,106,181, 26, 98,177, 24,124, 62, 31, 6,131, 1, 44,203, 22,138, 47,165, + 82,137,140,140, 12, 8,133, 66,104,181,218,191,253,126, 55, 89,180,204, 81, 90,247, 91,113,251,151,133,138,246,147, 42,173,187, + 51, 43, 43, 75,106,111,111, 63,221, 18, 11, 29, 33, 4, 60, 30, 15, 66,161, 16,132, 16,180,108,217, 18, 35, 70,140, 64,253,250, +245, 17, 17, 17,129, 61,123,246,224,214,173, 91, 16, 8, 4,133,251, 91,220, 63,209,186, 53, 79, 34,145, 92,237,222,189,123,240, +236,217,179, 37,149, 43, 87,198,227,199,143,125,150, 44, 89, 50,253,204,153, 51, 61, 8, 33,239, 81, 74,217,178,173,244, 5, 93, +130,175,186, 11, 59,107, 52, 26, 60,126,252,216,154, 99,254,132,106,213,170, 69, 51, 12,243,156,101,217, 75, 0,106, 83, 74, 91, + 18, 66, 78, 0,144, 23,217, 53,143, 82,250, 1, 33, 36, 7,192, 3,134, 97,158,178, 44, 27, 93,156, 59,149, 66,161, 72,141, 75, +201,113,115,178,145, 96, 72, 11, 27,180, 93,148,128, 62,239,137, 33, 22, 18, 60,137, 76, 66,181,170,149,201,189,203,135,222, 43, + 16, 89, 13, 19, 19, 19, 1,224, 61, 0,145,177,177,177, 30, 38,161,197,225,221, 64, 81, 49,100, 18, 80,139, 23, 47,238, 90,156, +184, 42,230,217,124, 45,125,201,146, 37,223,152,253,207,124,131,182,163, 21, 94,119,134,111, 93, 96,229,250, 67,104, 29, 59,118, +172,116, 5,194,162,215,209,131,187,175,183,213, 17,223,224, 6, 45,204,172, 67, 20,161, 55,174, 2,160,219, 44,202,140,103, 55, + 41, 35,147,111,219,240,205, 4,102,227,121, 21, 98, 19, 82,112,245,248, 54,164, 38, 70,109, 5,232,100,250,114,127,206, 27, 55, +150, 85,250, 6,187, 58, 59, 33, 95, 71,193, 82, 0,127, 18, 91,111, 69,100,117,243,247,247, 95,120,237,218, 53,223,252,252,124, +197,149, 43, 87,178,118,236,216,241, 92,171,213,254, 72, 41,221, 89,176,207,225,180,180,180,175, 40,165, 80, 40, 20,124,129, 64, + 32, 45,205,153,147, 16, 82,255,139, 79,134, 94,254,118,195, 22,201,243,135,247,240,253,129,227,200, 82,169,140,231, 83,212, 61, + 41,165, 71, 11,246, 57,123, 39, 77, 29, 79, 65, 43, 9, 24, 2, 15,185,192,157, 16, 34,161,148,230,151,240,229, 58, 96,224,192, +129,158, 38,145, 5, 0,105,185,122,190, 74,163,231, 53, 15,114, 66,131, 54,125, 17,122,110, 63,246, 93,140, 71, 85, 23,217, 69, + 63,121, 86,169, 53,202, 48, 76,164,153,104,170,124,228,200, 17, 89,183,110,221, 84, 0,204,187, 68,255,148,206, 48, 76,100, 25, + 15,219, 92, 66,136,219,246,237,219, 25,189, 94,175,140,136,136,128,187,187, 59,220,220,220, 96,103,103,135,240,240,112,252,254, +251,239,120,242,228, 9, 88,150, 69,221,186,117,173,186, 94,233,233,233,184,127,255, 62, 58,119,238, 50, 57, 53, 53,197,214,193, +209, 41,239,242,165,139,203,203,195,201,178, 44, 1,128,224,224, 96, 4, 7, 7, 75,226,227,227,189,143, 30, 61,234,250,245,215, + 95,199,248,250,250,238, 82,171,213,175, 89, 14, 44, 21, 90, 5,194,165, 80, 4, 74, 36, 18, 8,133, 66,228,228,228, 32, 57, 57, + 25,185,185,185,175,250,114,236,237,223,138,208, 42,206, 66, 85,145,251,255,149,226,176, 56, 49, 69, 8, 25, 4, 96,186,133,101, +129,193, 96,128, 80, 40, 68,227,198,141,177,102,205, 26,220,186,117, 11,191,254,250, 43,124,124,124, 48,108,216, 48, 48, 12,131, + 71,143, 30, 89,155, 69,246,218,181,107,211,123,246,236, 25,188,125,251,118, 73,116,116, 52,158, 60,121, 2,123,123,123,172, 89, +179, 70, 60,106,212,168,106,231,206,157,155, 11, 96, 89,153,101, 53, 27, 93,232,233,233,249, 81,237,218,181,255,180,143,187,187, +187,221,201,147, 39, 93, 77, 2,172,232,136,196, 98,144, 53,119,238,220,239, 2, 3, 3, 87, 21,116, 23,134, 0,144, 83, 74, 91, + 31, 56,112,128, 0, 64,159, 62,125, 40, 33,196,244, 66,122,176,127,255,254, 54,225,225,225,116,254,252,249,197,182,115,169, 41, +137, 27,190, 91,179,241,187,111, 23,124, 33,154,210,217, 14,125,222, 19, 64, 34, 36,176,149, 9,176,104,245,102,253,157, 27, 23, +239,123,120,120, 28, 5,208, 51, 49, 49, 17, 30, 30, 30, 74, 0, 79,121, 60, 94,164,209,104, 76,224,124,225,255, 93, 40, 78,139, + 20, 88,149, 19,139, 19, 74,229, 17,106,230, 22, 47, 19,102,206,156, 25,188,120,241,226,155,111, 34,178,204,157,224, 9, 33,148, + 16,210,154, 82,122,161,240,101, 90, 98,151, 97,161,237,139,241,112,119,115,118,156, 49,172, 57, 88, 22, 48, 24, 1,131,145, 34, + 79,165,198,227,135,183, 84,144,144, 3, 22,229, 72, 44, 90,250,245,236,207,170,220,139, 99,144,144,169,195,133, 67, 27,105,106, + 98, 84,111,250,114,223,199, 21, 37,178,220, 93,157,207,239,222,248, 21,110,189,212,194,200,190,210, 89, 44, 75, 11,127,191,133, + 23, 78,117,103,103,231,229,215,175, 95,175, 44, 22,139, 21,207,158, 61, 51,238,223,191, 63, 65,171,213,174, 55,137,172, 2, 12, +106,208,160,129, 94, 46,151, 67,169, 84,106,116, 58,157,178, 20,145,229,221,186,126,157,139,223,110,216, 34,201,215,106,145,173, +214,128,231,228,250,154,200, 42, 64,179, 54, 53,188,188,136, 68, 1, 10, 32, 42, 71,151, 80,146,200, 2, 0,145, 72,212,110,226, +196,137,230,253,219,112, 86, 8, 12, 50,177,192,120, 37, 44,141, 13, 61,183, 31,151, 30,165,177, 18, 33,207,232, 66, 95, 86, 41, +171,236,113,113,113,155, 19, 18, 18,102, 38, 36, 36,204, 52, 19, 87, 81, 0,102,214,180, 19,254, 41, 61,200, 94, 52, 51, 33, 33, + 97, 38,203,178,155, 45,168,218,132,129, 3, 7,198, 5, 5, 5,101, 7, 6, 6,102,167,167,167, 35, 44, 44, 12,153,153,153,248, +254,251,239,241,248,241, 99,176,236, 43, 29, 88, 92, 55,138, 5, 2, 9,153,153, 25, 54,148, 82,100,102,164,203,103,207,158,109, + 87, 30, 78,163,209,248,218,179,229,229,229,133,177, 99,199, 10, 85, 42,149,125, 76, 76,140,173,249, 54, 75, 57,181, 90,109, 97, + 40, 12, 74, 41,180, 90, 45,178,179,179,161,213,106,241,252,249,243, 66,145, 85,112,254,183,102,209, 50,253,150, 74,165,201, 38, + 7, 81,137, 68, 2, 66, 72,113,221,111, 21, 18,253,217,116, 46, 66, 8,149, 74,165,201,229, 16,135,101,150,199,194,235, 14,161, + 80,136, 17, 35, 70,224,230,205,155,136,136,136, 0,143,199, 67, 94, 94, 30, 84, 42, 21,218,183,111, 15,145, 72,100,173, 69,139, + 10,133,194, 65,179,102,205,146, 68, 70, 70, 34, 45, 45,205,228, 76, 15,163,209,136,201,147, 39, 75,197, 98,241, 32,107, 77,247, + 9, 9, 9, 29,159, 61,123,230, 95,116, 73, 74, 74,202, 54,247, 41, 44, 47, 14, 28, 56, 64,250,244,233, 67,251,244,233, 67, 77, +130,203, 82,100,197,133,109,248,245,240,209,211,159,127,185, 84,169,202,203, 69, 85, 79, 41,148,185,217, 88,180,248, 91,253,181, +107,151,206, 79,159, 60,166,233,254,253,251,151, 0,120, 90,112,200,211,253,251,247, 15,253,242,203, 47,127, 70, 65,152, 7, 14, +255, 30, 20,167, 69,204,159,189,138,232,222, 43,142,163,160,251, 80, 90, 78, 74,211,136,195, 86, 38,225, 85, 32,186,206,191,102, +209, 42,181,241,169,214,175,158,155,179,211,185,237,107, 23,216, 28,125, 8,196,197, 70, 33, 53, 49, 26,239, 53,109,141,199, 15, +239,129,213, 27, 15,210,103,251,203, 28,158, 78,252,250,214, 8,172, 25,244,105,171,166,181,176,244,168, 18,207, 66, 79, 34, 43, + 53,113, 45,141,220,119,176, 34, 46, 16,169,210, 55,216,205,197,249,252,207,235, 22, 58,158, 8, 99, 16, 27, 27,133, 67, 63,175, +130, 94,247, 39, 93,113,220,234,198,155,213,138,148, 89,201,208,230, 26, 33, 97, 84, 18, 43, 47,234,115, 23, 23,151,237,223,125, +247,221,152,166, 77,155,202, 6, 12, 24,240, 44, 51, 51,243,107, 74,233, 62,179, 6,254,125,127,127,255,169,107,215,174,173, 22, + 27, 27,139,223,127,255,253, 25,128,219,165,112,198,241,120,188,245,191,255,188,249, 11,105,149, 0,124, 63,235,115,195,129, 91, + 97,221, 41,165, 39,204, 56, 3,219,213,174,113,244,235,169,227, 24,246,206,111,184, 31,157,140,151,217,154,223, 75,226, 76, 75, + 75, 35,106,181,186,178,189,189,189,249,121,224, 33,207,211, 76,251,168, 70, 66,251,233,151, 61,243,117, 70,136, 5, 12,157,212, +195, 55,225,198,175,251,156,210, 52,105,196, 52, 26,209, 90, 60, 83, 26,193,231,243,225,234,250, 71, 15, 82, 88,166, 85, 99, 31, +108,110,222,188,201,240,120,188,215, 4,186,185,133,200, 90, 75,145, 53,176,148,179,168,208, 50,193, 96, 48,144,242,114,106, 52, +154, 98, 99,142, 21,231,171,197,178,236, 95, 82,126,107, 44, 84,230, 93,134, 38,127,186,252,252,124, 87,169, 84,154,108,234,254, +171, 40,139,214,155,140, 68, 44,173,251,210,154,252, 49, 12, 3,150,101, 33, 20, 10, 81,183,110, 93, 28, 61,122, 20,142,142,142, +176,181,181,133,173,173, 45,164, 82, 41,156,156,156, 10,133, 22,195, 88, 60, 74,135,106, 52, 26, 31, 31, 31, 31, 60,127,254, 28, + 18,137,164,112, 17,139,197, 8, 14, 14, 70, 94, 94,158,215,219,179,221,255, 53, 24,217,175, 93,143,117, 59,126, 25,114,244,232, +177, 79,117,154,252, 90, 1, 1,254,244,246,181,115,247,167, 79, 30,211,137,147, 38,255, 45,152,172, 81,230,190, 86, 51,102,204, +152, 85, 94,190, 25, 51,102,204, 42,206,194, 85, 94,193,133, 87, 93,125,166, 53, 10,133,150, 73, 65, 22,167, 36, 77, 34,107,235, +154,249,182,191,220, 5,226,226, 34,113,122,223,234, 92,189, 78,155,201,178,122,223,151, 79,238, 1, 12,182, 89,148, 5,134, 54, +234,209,185, 13, 57,253, 72,139,156,172, 84, 60,189,125, 50, 10,106,209,204,138, 20, 89,219,215, 45,112, 60,242,144, 32, 54, 54, + 10, 39,246,172,202,214, 27,116,239,211,151,251,239,190, 9,247, 96,145,168, 71,191,154,246, 93, 63, 9, 73,128,145, 24, 49,232, +113,248, 7,158, 33,164, 71,194,165,210, 71,134,153, 35, 53, 53,117,145,141,141, 13,179,108,217,178,143,243,243,243,231, 83, 74, + 15,152,221, 56,237,171, 86,173,186,116,195,134, 13,222, 49, 49, 49,162,203,151, 47,103,156, 63,127,158, 2, 88, 92,198, 11,124, + 26, 33,132, 87,191,178,215,132, 59, 81,241,221, 41,165,191,153,113, 6,119,109, 16,116,101,203,226,185, 10,253,149, 3, 80, 38, +198, 98,230,149,184, 28, 0, 22,215,183, 94,175, 71,102,102, 38,244,202, 76,195,123, 30,121,217,243,251,186,106,146, 51,243,249, + 2, 86,101, 8,180, 77,209,156,203,136,226,201,100,178,114,215,171, 80, 36,130, 94,175,135,151,151, 87, 97, 90, 78,174, 18,132, + 16,120,120,120,148,245,176, 45, 4, 48,185, 89,179,102,164,113,227,198, 55, 86,173, 90,117,170, 52,177, 82, 30,139, 86, 89,176, +148,147,101, 89,166,132,250, 37,229,229, 52,183,104,149, 37,180,222,166, 69,171, 56,209, 98, 46, 18,205,133, 80,121,124,180,254, + 74,113,104,141, 8, 43,134,167,208,162,117,239,222, 61, 84,170, 84, 9, 58,157, 14, 10,133, 2, 10,133, 2, 54, 54, 54,200,205, +205,133, 64, 32,128,149,101,102, 37, 18, 73, 76, 88, 88,152,191,139,139, 11,140, 70,227,107, 98,235,217,179,103,144,203,229,241, +214, 90,180, 60, 61, 61, 79, 22,140, 58,124, 13,238,238,238,118, 21, 81,175,230,150,172, 62,125,250,148,235,195,108,221,226, 47, +118, 0,216,209,183,111,223,237, 15,174, 29,123,207,195,195,227, 88, 96, 96, 32, 1, 0,110,132,225,187,101,205, 42,161,135, 45, +181,136, 37, 74,107,246, 63, 21, 0, 41,248,159,106, 38,196,204,127,107,139, 73, 75, 95,188,120,241, 57, 51,255,174,212, 55, 44, +130, 41,196,195,107,190,208,252,178, 44, 89,174, 78,142,231,126,252,126,190,237,190, 80, 32, 62, 54, 18, 23, 14,174,201, 54, 24, +117,239,131,165,137,215,206, 28, 60, 0, 2, 21, 94, 30,184, 0,236,179,160,137, 64,253,250, 53,125,241,235, 35, 61, 82,227,158, +129, 82,118, 43, 77,254, 89,245,198,141, 99,129,200,218,186,102,190,227, 47,247, 8,226, 98, 35,113,122,223,234,108,131, 81,247, +126,121,130,157,154,240, 9, 33, 14, 60,185,100,253,144, 14, 13, 63,242,173,234, 13,150,234,193, 10, 41,122, 77,115,230, 63,189, +163,250,213,167, 3,111, 31,171,100, 63,141,187,102, 89, 32, 80,165, 82,249, 21, 33,228, 23, 74,233, 99,179, 6,249,131,106,213, +170,125,243,195, 15, 63, 84,142,143,143, 87,220,185,115, 39,103,211,166, 77,145, 44,203, 46,164,148,150, 57,138,138, 82,250, 57, + 33,228, 71,243,120, 57,132,144, 58, 95,124, 60,240,218,192,225,159, 72, 34,207,236,128, 67,228, 99, 76,189,146, 96,124,154,169, + 29, 64, 41, 77, 42,137,203,217,217,153,166,166,166, 70,101,101,101,249,203,229,114,164,167,167, 35, 35, 35, 3, 89, 89, 89,208, +228,100, 26,156,140, 89,121,196,144, 1, 62,159,143,148, 88, 3,140, 70, 99, 82, 89,214,172,146, 70, 29, 2, 88,172, 86,171, 77, + 34,171, 48,221,214,214,118,177,173,173,173,201, 71,107,115, 9, 47, 49, 83,120, 7, 82, 16,222,161,201,111,191,253, 22,222,169, + 83,167,184,226,196,138, 88, 44, 70,126,190,117, 81, 66, 74, 26,197, 88, 30,206,146, 44, 90, 69,211,173,225, 52,117, 95,154,156, +224,139,166,155,192,227,241,192,178,236,159,210,255,110,209, 98, 62, 58,176, 60, 34,231, 53,235,114, 25,129, 67,203, 51, 18,177, +162, 45, 90,166,107, 33, 20, 10,113,248,240, 97, 12, 31, 62, 28, 70,163, 17, 50,153, 12, 54, 54, 54,144,203,229, 56,120,240, 32, + 76,225, 31,172,201,162, 94,175,223,185,120,241,226, 89, 27, 54,108,144, 82, 74, 33, 18,137, 10,133,214,252,249,243,213, 58,157, +110,167, 37, 66,171, 48,226, 59, 75,195,170,187,148, 62,234,176,184, 99, 74,240,215,178, 95,184,112,225, 80,150,101,123,160, 72, + 8,135, 34,251,189, 22,250,161,180,240, 14, 0, 28, 22, 46, 92, 56,146,101, 89,211, 0,154,215, 70, 23,154,237,103,122,151,248, +247,237,219,119,123,209, 81,135, 28,254,245,184,245, 15,206, 91,107,179, 64,165,164,160,189, 40, 20, 92,252,146, 69, 86,223, 64, + 87, 39,231,115,155, 87,205,183,221,117, 19, 72,136,125,137,171,135,215,102, 27, 89,189,185,120,105, 97,101,203, 91,223,211,213, + 30, 25,215,213,200, 73,139, 1, 40,238,188,185,200,234, 87,221,213,217,233,252,150,213,243, 29,247,223,101, 16, 31, 19,137,243, + 5, 98,240, 77, 68,214, 96,145,168, 71,112, 13,239, 45,253, 63,104,238, 96, 71, 12, 48, 68,135,227,199, 97, 31, 33,180,155, 14, +205,251,217,161, 81,103, 5,170,213,147,124,116,124,115, 70, 91,207, 16,242,137,165,214,173, 34, 34,171, 91,229,202,149, 23,220, +184,113,195,151,101, 89,197,133, 11, 23,114, 55,108,216,240, 50, 63, 63,127, 53,165,244,152, 21, 47, 7,115,145, 85,127,198,168, + 97,151,191,249,225, 71, 73, 88,232, 45, 44,221,121, 4,106,189,214,120, 50, 78,217,215,188, 91,177, 20, 75,201,153,213,171, 87, + 87,158, 51,103,142, 40, 35, 35, 3,105,105,105,200,204,204, 44, 92,148, 74, 37,220,221,221,241,219,111,191,233,114,114,114,174, + 91,240,178,169,240, 81,135,197, 65,161, 80, 64, 40, 20, 66,167,211, 21, 90,180,196, 98, 49,236,236,236,144,158,158,142,189,123, +247, 2, 64, 70,169, 22, 54,161, 40,145, 97, 72, 37,169, 76,166,145, 72, 36,108,113, 86, 53,107, 57, 11, 16,247,193, 7, 31,120, + 47, 92,184, 80,210,160, 65,131, 63, 89,180,202,195, 73, 41, 85,117,232,208, 65,182,122,245,106,248,250,250, 66,171,213,190, 38, +168, 24,134,129, 80, 40, 68,108,108, 44,190,254,250,107, 80, 74, 85,127,119,203, 99, 46, 90,204,197, 80,129, 15,213,159,132,144, +165, 22,163,178,186, 6,173, 29,137,104, 46,220,196, 98, 49,178,178,178,164,132,144, 65, 37, 68,176,183,216,162,101, 18, 90,143, + 31, 63,198,246,237,219,209,185,115,103, 56, 56, 56, 32, 51, 51, 19,251,246,237, 67,120,120, 56, 68, 34, 17, 8, 33,214, 88,181, +216,198,141, 27,127,123,233,210,165,110, 3, 6, 12, 8,154, 58,117,170,180, 86,173, 90,120,250,244, 41, 22, 46, 92,152, 31, 26, + 26, 26,161, 86,171, 23,194,146,192,166, 5, 17,223, 77,193, 72, 45, 26,117, 88,228,152,162, 40, 33,188,195, 7, 37,176,153,135, +126,120, 45,188,131, 57,174, 94,189,234, 87,185,114,229, 64,188, 26, 73,104,122,225,154,143, 46,124,237,101,156,152,152,216, 16, +220,168, 67, 14,127,111, 91,119,129, 16, 82, 24,176,212, 36,190,254, 52,234,240,207, 71,146,201, 3,134,141,178,221,121,147, 32, + 54, 58, 2,183,143,175, 47, 42,178, 44,105,108,218,153,199,218,144, 72,229,181, 88,242,106, 56,115, 78, 90, 44, 64,121, 86, 11, +173,162,156,160,236,231, 3,134,142,114,220,125,155, 32, 33,246, 5,174, 28, 90,103,181,200, 50,231, 28, 44, 18,125, 41,224,145, + 57, 93, 90,214, 23,182,168, 87, 3,242,148, 40, 36,197, 37, 96,239,227,212,140,136, 76,205, 39, 87,136, 14,209, 47, 52, 63,118, + 30,233,232,232,224, 46, 64,215, 49, 78,142,215,143,228,252,234,245, 62,163,163, 58,186, 56,225, 50,157, 95,108, 62,255,124,206, +234,182,182,182,203, 66, 67, 67, 93, 36, 18,137,237,237,219,183,141, 27, 55,110,140,205,207,207, 95, 78, 41,221, 99, 81,217,255, +188,221,187, 97,141,170, 23,190, 89,183, 89,162,204, 83, 33, 79,171,131,216,205,195,248,203,181,135,189, 75, 10,128, 89,148, 83, + 44, 22,239,222,179,103, 79,231,144,144, 16,223, 58,117,234, 48, 25, 25, 25, 80, 42,149, 80, 42,149, 38,171, 23, 30, 63,126,204, + 70, 71, 71,199,139,197,226, 50,243, 89, 81,163, 14,205, 57,205,194, 59,204, 2,192, 16, 66,110,221,187,119, 79,217,169, 83, 39, + 72,165, 82,228,229,229,193,199,199, 7, 6,131, 1,199,143, 31, 71,104,104,104, 30,203,178, 23, 0,220, 43,173,236,106,181,202, +135, 16,194,168, 85,170,186, 67,135, 14,109, 53,101,202,148,215,134,164,187,186,186,194,209,209,209, 42, 78, 0,200,200,200,168, +249,219,111,191,125,118,239,222,189,207, 59,119,238,108, 55,107,214, 44,177,159,159, 31,140, 70, 35, 83, 94,206,204,204, 76,187, + 59,119,238, 44,111,209,162,197,184, 78,157, 58,241,191,249,230, 27,216,217,217,193,104, 52, 66, 42,149, 34, 39, 39, 7, 11, 23, + 46,196,229,203,151, 13,148,210,117,217,217,217, 83,173,185,151,202,105,193,122,141,179, 36, 11, 80, 73, 66,168,184,253,255,142, +124, 22, 17,110,176,183,183,159, 14, 96,122, 9, 17,236, 97,233,179,105, 18, 90, 60, 30, 15, 81, 81, 81,216,184,113,227,159,226, +104,153,194, 63, 20,199, 93, 66,217,233,249,243,231,141,132,144,166,183,111,223,158, 62,100,200,144, 79,242,242,242,188,229,114, +121,130, 94,175,223,166, 86,171, 77,113,180,132,214,180, 33,121,121,121,209,197,141, 58, 44,186, 15, 96, 95, 42,103,145,240, 14, +175,133,112, 40,114,216,107,161, 31,138,134,119, 48,231,108,214,172, 89, 36,195, 48, 79, 10,186,224,159,160,200,232, 66, 51, 78, +255,196,196,196,134, 30, 30, 30, 23, 0,200,138,142, 58,252, 59,238, 37,142,243,191, 45,182, 80, 90,192,210,226,143,130,228,204, +141, 40,136,164, 25,184,255,251, 86,171, 69, 86,113,208,228,171, 34,230,238,142,169,167,213,228, 35, 47, 59,249, 41,141,220,147, +242,230, 87, 27,242, 51,183,162, 33,145,103,225,238,153,159,178,140,198,252,247,105,196,255,238,149,159, 14, 51,127, 56,113, 64, + 72,236, 28,113,255,179,225, 72,200,202,195,137,151,153,251,168, 74,243,233,142,130,185, 2,189,155,146, 75, 91,102, 39,173, 15, +233,101,247,145,179,151, 0, 43,191,216, 6,201, 12, 39, 97,163,182, 45, 45,158, 3,209,228, 32,255,253,247,223,143, 13, 9, 9, +177,249,232,163,143,158,101,100,100,188,230, 32, 95,142, 11, 29, 71, 8,249,225,216,134, 21, 95, 56,213,110,130,181, 95, 78, 51, +238,190,246,176,232, 40,196, 82, 17, 24, 24,104,188,122,245,234,148,177, 99,199,174,108,219,182,173, 87,143, 30, 61,132,149, 42, + 85,130, 88, 44,198,139, 23, 47,112,233,210, 37,221,203,151, 47,227, 85, 42,213,148, 58,117,234,148, 25,227, 44, 46, 46,110,179, + 72, 36, 66, 88, 88, 24, 90,181,106,181,184,192, 98, 21,117,245,234,213,153, 57, 57, 57,200,201,201, 65,255,254,253, 11,211,199, +143, 31, 63,179,106,213,170,200,200,200, 40,171,172,115, 9, 33, 27,240,106,174,195,164, 29, 59,118, 52, 61,116,232, 80,211,201, +147, 39, 11, 59,119,238,140,235,215,175,227,244,233,211, 58,157, 78,119, 13,192, 53, 75,167,181, 41,136, 63,116,135, 16,242,112, +233,210,165, 77,121, 60, 94, 97,196,251,176,176, 48,108,221,186,181, 60,156, 6, 0,203, 9, 33, 63,236,216,177, 99,238,153, 51, +103, 62, 30, 58,116,168,173, 94,175,199,227,199,143,241,211, 79, 63,149,151,243, 51, 23, 23,151, 57,199,143, 31,223,118,234,212, +169,158,131, 7, 15,102, 38, 78,156,136, 53,107,214,224,127,255,251, 31,107, 52, 26, 15, 9, 4,130,161,169,169,169,121,111,169, +225,217, 84, 48,173,206, 38, 43,230, 60, 44,147,247, 77,186, 6, 45,204,119,226, 27, 55, 75, 5,229,104,221,186,117,161,149,145, + 82,250,154, 95,157, 73, 96, 89,219,117, 8,192,190,224, 62, 93,135, 87,243,139,154, 71,133,231,225,143,200,241,150, 50, 6, 37, +106,236,195,160,193,227,210, 39,149,182, 7, 40,130,202, 96,203,154, 59,119,238,119,243,230,205,251,174,104, 8, 7,243,157,138, +134,126, 88,176, 96, 1, 74, 10,239, 0, 32,115,238,220,185,223, 22,180, 79,164,160,187,240, 61, 20,140, 46, 52,227,220, 94,144, + 46,155, 63,127,254, 16, 0,165,113,114,224,240,183,161, 20, 31, 45, 58, 43,236,210,110, 61, 0, 39, 16,102, 38,125,177, 55,236, +141, 27, 48,150,206, 56,187,107,254, 26, 80,100, 82,163, 97,122,133,148,128,229,205, 14,187,180,139, 5,136, 61, 8, 51,131,190, +248,223, 27,231,147,216, 57, 34,119,225, 88,252,239, 81, 2, 77,202,211,127,184, 67,171,125,205, 26, 84,224,147,213,207, 51,132, +236,117,240, 20,252,242,217,251, 78,228, 88,198, 16,171,207,147,154,154,250,141,141,141, 13,111,249,242,229, 31,171,213,234,215, + 28,228,223,224, 37, 49,141, 16,194,107, 84,221,119,194,205,231,209, 61, 44,233, 46, 44,138,102,205,154, 37,134,135,135, 15, 60, +125,250,244,128,139, 23, 47,182, 83,169, 84,149, 9, 33,144, 74,165, 81, 90,173,246,140, 88, 44,222,109,137,200, 50,127,161,152, + 79, 17, 3, 0, 57, 57, 57,200,205,205,125, 45, 12, 1,240,202,191, 42, 53, 53, 21, 62, 62, 62,214,190, 16, 47, 18, 66, 66, 23, + 46, 92,216,114,225,194,133,117, 11,172, 66, 23,203,219,101, 86, 32,120, 46, 74,165,178, 4, 66,136,183, 80, 36,206,187,122,245, +234,153, 55,228, 84, 21, 88, 74, 86,174, 92,185,114,145, 92, 46,111, 24, 22, 22,246,251,155,112, 22,136,168,222, 78, 78, 78,158, +219,183,111,223,191,101,203,150, 38,124, 62,255, 58, 33,164,111, 86, 86,214,219,158, 84,122, 52, 44,155,227,176, 76,139,145, 37, + 22,177,242,226,175, 16,110, 70,163, 81, 57,103,206,156,148,162,194,171,168,245,202,244, 95,167,211,229, 91,248, 44, 89, 51,138, +178, 12,145, 65,148, 0,240,106,238,194, 87,211,234, 88, 58,169, 52,128, 18,231,206,156, 55,111, 30, 93,176, 96, 1, 97, 24,230, + 16,128,167, 12,195, 60, 47,234,172,110,190,109,193,130, 5,152, 55,111, 30,157, 63,191,228,111, 84, 19,103,120,120, 56,229,241, +120,191, 3,136,228,241,120, 81,230,188,230,233,166, 99, 74,227,228,192,225,173, 11, 45,250,114,127, 44,128,225, 21,250,165, 24, +185,255, 12, 94, 57, 50, 86, 28,103,212,158,104, 0,131, 43,138,143, 5,150,125,210,168,245, 23, 0, 8, 5, 86, 22, 21, 89,230, + 72,184, 68, 15,121, 52, 39,139, 27,181,109, 57,185,192, 26,246,141,181,231, 43,206, 65,190, 2,196,214,159, 28,228,173, 69, 96, + 96,160, 17,192, 14, 0, 59,138, 78, 42, 93,142,151, 14,164, 82,105, 97, 55, 34,195, 48,145, 89, 89, 89, 48, 89,180,204,211, 11, +234, 4,118,118,118,229, 21, 50, 39, 8, 33,167, 40,165,198,138,168, 75,181, 90, 85,169,224, 5,199,171, 40,206,130, 65, 14,159, + 84, 36,103,122,122,122, 2,128,102,213,170, 85, 19, 69, 68, 68,104,255, 41, 13, 76, 69, 88,135,254,106, 84,180,112, 43,248, 96, +168,249, 23,212,229,211, 10, 38,252,169, 67,139, 32, 30,204, 99, 7,149, 53,169,180, 73,160, 81,252, 84, 66, 30, 41,121,165, 36, + 41,128,237, 47, 94,188,240,101, 89, 54,186, 24,203,210,107,219,230,207,159,143,146, 98, 6, 22,225, 4,128, 95, 99, 99, 99, 61, +141, 70, 99, 98, 17,222,215,210, 75,227,228,192,225, 31, 98,209,250,111, 98,167, 86, 59, 15,192, 60, 75,247, 79,188, 66,103, 3, +152,253,134, 13,232,227,138, 46, 71,121, 68,214,254,253,251,141,127, 69,157,234,245,175,122,195,204,231, 46, 52,199,144, 33, 67, + 54, 87,112,217,141,127, 65,125,254, 43, 56,255, 73, 34,139,195, 63, 27, 52, 51, 44, 22,192,151,101,238, 87,118, 52,248, 63, 9, +163,130,159,153, 0, 50, 75,208, 58,165,109, 43,141, 19, 0,114, 0,228, 20,115,108, 73,233, 28, 56,188, 85, 48, 92, 21,112,224, +192,129, 3, 7, 14, 28, 56,252, 53, 32, 0,218,149,240, 5, 97,241,104, 2, 66, 72,187,114,124,205,159,225, 56, 57, 78,142,147, +227,228, 56, 57, 78,142,243,191,197, 89, 22,119,209,209,203, 21, 53, 61,215,223, 42,174,204,243,109, 26, 9,243, 87, 44, 0,218, +113,156, 28, 39,199,201,113,114,156, 28, 39,199,201,113,150,243, 60,163,254,142,243,252,149, 11,231,163,197,129, 3, 7, 14, 28, + 56,252,139,208,222,159,120,240,141, 96, 78, 68,208,248,138,224,251,160, 26,241, 2,128,138,226,251, 47,130, 16,226, 1,160,139, + 89,210, 49,211, 96, 32, 78,104,253,123, 47,106,117, 0,179, 0,216,153, 37,223,164,148, 46, 46,178,223, 46, 0,230, 19, 18,230, + 1, 88, 72, 41,125,110,205,249,120, 60,222,226,150, 45, 91,126,122,249,242,229, 21,122,189,126, 97, 57,242,235,235,225,225,241, + 45, 33,164, 1, 0, 1, 33,228, 69,114,114,242, 98,189, 94,127,230, 13,234,160,138,187,187,251, 18, 0,245, 24,134, 17, 16, 66, + 34,146,147,147,191,214,235,245,231,223,128, 83,225,230,230,214,156, 82,234, 14,128, 39, 16, 8,210,227,227,227,111,148,119,244, + 92,223, 5,225,194,156, 60,131, 0, 0,108,229,124,253,254,121,129, 58, 75,211,184,187,156, 3,135,255,124, 67,207, 43,154,212, +177, 42, 22, 17,138,169, 70,128,116,172, 66, 86,159,140,196,212, 18,143, 47,110,192, 77, 17,206,142, 85,177,136,210, 87, 28, 29, +171,145,229, 39, 95,148, 49,184,203, 2, 78, 19, 54, 1,204, 40, 75, 38, 56,255, 11, 6, 6,189, 5,116, 49,239,226, 44, 8,192, +188,169, 76,161,213,223,159,120, 24,249,224,239, 15,163,177,166,151, 16,128,186, 0,170, 3,120, 14,224, 30,165, 52,247, 13, 5, +195,191,130,243, 31,136,185,148,210,129, 69,202,253,167,157,222,127,255,253,238,167, 78,157,146,153,166,103, 97, 89, 22, 82,169, +212, 0, 96,152, 21,245,233, 58, 96,192,128, 25, 63,254,248, 35, 62,250,232,163, 57,132,144,239, 40,165, 74, 75,143,119,116,116, +236, 83,165, 74,149, 53,155, 55,111,118,105,210,164, 41, 17,137, 68,120,241, 34,194,123,244,232,209,181,220,220,220, 14, 37, 39, + 39,127, 98,109,225,157,156,156, 6, 85,173, 90,117,229,198,141, 27,157, 91,180,104, 1, 66, 8, 66, 67, 67,189, 63,251,236,179, +186,238,238,238,123,146,146,146,198, 89,203,233,236,236, 92,163,106,213,170,109,214,174, 93, 43,109,222,188, 57, 36, 18, 9,238, +221,187,103, 51,102,204, 24,119,119,119,247,199, 73, 73, 73, 23,172, 21, 89, 15, 66,143,244, 52,232, 52, 75, 1,128, 47, 20, 79, +107,250, 93,206,145,140,208,139,221,202, 74,235,187, 0,191,114, 98,139, 3, 7, 14,230, 24,228, 9,119, 74,241,197,169,159,190, +100, 0,160,195,199, 95, 77, 28,228,137, 21, 59, 19,144, 84, 65,124, 83,135,122, 97,205,246,120, 36,191, 73, 62, 55, 1,204,103, +124,254,196, 70,141, 27, 59,143,191,114, 37, 66, 7,108,251,143, 24, 64, 70, 21,151, 94,162,208,234, 19, 68, 22,130,143, 89, 0, +200, 7,213,201,158,211,145,188, 75,237,219,183,175, 54, 98,196, 8, 82,191,126,125,132,134,134,214,216,179,103, 79, 23, 62,159, + 31, 97, 52, 26, 67, 1, 60,178, 52,170, 53, 33, 68, 0, 32,152,199,227, 53,248, 39,115,254,195, 33, 47, 40,119, 50,128,155, 38, +139, 86,209,157,206,158, 61,123,152,207,231,155, 44, 90,141,242,242,242,220,138, 88,193, 44, 65,101,189, 94,143, 39, 79,158,128, + 97, 24, 1, 0, 63,252,121, 74,141,146,174,139,183,183,183,247,250,107, 55, 67,157, 8, 95,138,204,124, 0,249, 58,136,108,220, +240,227,214, 29,142, 83, 38,141,235,109,107,107,123, 41, 39, 39,231,103, 43,110,102, 63, 31, 31,159,239,238,223,191,239, 36,147, +201,192,178, 44,114,115,115,225,238,238,142,205,155, 55,219, 79,153, 50,101,160, 84, 42, 61,175, 86,171,255,103,141, 56,175, 90, +181,106,155,135, 15, 31, 74, 77, 19, 74,107,181, 90,120,123,123, 99,215,174, 93,226,137, 19, 39,214, 20,139,197,113, 26,141,230, +165,165,156, 57,121, 6,129, 65,167, 89,186,125,221,252, 74, 0, 48,116,220,252,165,162, 92,219,227,150,164,229,228, 25,142, 1, +224,132, 22,135,191,251, 69,209,192,217,217,249, 64, 90, 90,218, 5, 0,159, 84, 68, 8, 18, 66,136, 39,159,207,247,163,148,218, + 23,252,207, 50, 24, 12,145,148,210,114, 7,212,117,174,214,166, 27,196,178,225,160,108, 93, 6, 0, 97,152,123, 70,157,106,107, +218,211,115, 71,222,136, 83, 36,253, 24,160,117, 25,128, 37, 12,115,159, 53,168, 54,167,134,159, 59,241, 79,185, 62,215,179,225, + 95,213,221,242,137, 49, 43,130,175,127, 21,120, 48, 44,152, 93, 81,176,184, 91,113, 2,208,121,210,164, 73,238,227, 62,253,148, + 12, 31, 54,172,250,133,203,151, 73, 43,107,102, 43,248, 23,162, 52,135,253, 98,133, 86,223, 32,226, 0, 96,250,158, 53,179, 24, + 62,143, 71, 6, 76, 90, 60,112,203,186,229, 76,251,110,125, 11,187, 79, 66, 66, 66, 16, 18, 18, 66,150, 46, 93, 90,253,247,223, +127,175,190,107,215, 46, 3, 33,228, 62,165,116,111, 73, 39,235, 84,141,168, 89, 64,210, 37,128,159, 55,224,203,159, 55, 54,110, +220, 24, 98,177, 24,111,194, 9, 0, 29,170,243, 94,118,110, 92,237,254,128, 9,115,163,155, 52,105, 70, 43,130,243, 95,132,155, +148,210, 30, 5, 13,152,131,143,143, 79,115,131,193, 32, 1, 0, 62,159,159, 15, 96, 2, 45,152, 58,136, 16,114,136,101,217,238, + 86, 52,144, 12,128,121,221,187,119,159, 51,126,252,120,248,248,248, 96,226,196,137,208,235,245,161,132,144,185, 0,150,148, 21, + 16,208,213,213,117,238,250,245,235, 29,249, 34, 57,234, 79,143, 68, 98,150, 1, 0, 96, 35, 6, 14,143,165,152, 56,113,162,237, +237,219,183,191, 6, 96,177,208,114,117,117, 93,184,121,243,102, 71,153, 76, 6, 74, 41,148, 74, 37,114,115,115, 11,231,100, 28, + 55,110,156,237,227,199,143,191, 5, 96,177,208,114,115,115,107,190,118,237, 90,169, 68, 34,129, 82,169, 20,234,116, 58,146,155, +155, 11,149, 74, 69,181, 90,173,110,194,132, 9,226, 71,143, 30,181, 6,240, 18, 28,254, 41,162,128, 7,224, 67,129, 64,208,171, + 90,181,106,239, 61,127,254,252,174,193, 96, 56, 8,224,224,155,126, 76, 17, 66,218,122,122,122, 46, 74, 72, 72, 88, 75, 41,221, +241, 95,169, 83, 55, 55,183,131, 87,175, 94,173,180,126,253,250, 97, 43, 86,172, 56,110,205, 51, 84,194,199,111,211, 70,141, 26, + 57,247,234,213, 75,224,238,238, 14,149, 74,133,136,136, 8,217,153, 51,103, 92, 36, 18, 73,186, 70,163,185,102,205,181,114,246, +111,110, 3,190,237,158,166,109,218,181,248,168,247,135, 10, 55, 39, 59,168,181, 70, 60,143, 78,244,249,237,248,225, 86,158,181, +186, 92,213,233,178,251,167, 61,189,162,180,150,179, 77,167,174, 45,218,181,109,171,176,179,183, 67,118,158, 14, 47,162,226,125, +207,157, 62, 18,226, 81,171,203, 69,150,232, 7, 39, 63, 56,165,122,155,215,102, 34,192,207,147, 56,213,169,219,172,254,237, 14, + 35,190,126,143, 82, 10,134, 98,117, 81,107,214, 68,128,191, 26, 48, 88,203, 7, 74, 41, 33, 88,110,110,205, 42,236, 86,100, 64, + 58,250,161,244,110, 74,211,251, 24, 16,219, 59, 58, 54, 30, 51,106, 20,201,205,201,193,189,123,247, 84, 69, 69,214,119, 94, 16, + 94,100, 80,249, 80, 44,158,189, 75,214,172,162, 93,135,166,255, 22,199,209,146,201,100,197,166,219,217,217,161, 77,155, 54, 88, +188,120, 49, 31, 64,131, 34, 10,239,245, 73, 86, 1,241,209, 13, 51, 97, 39, 23, 51, 62, 62, 62, 10, 91, 91,219, 55,230,124,149, +200,250, 53,243,161, 31,220,250,121,214,176, 51,187, 86, 6,231,229,102, 9,138,238, 98, 99, 99, 3,127,127,127,204,153, 51,199, + 50,206, 55, 87,183,127, 43,167,135,135, 71, 64, 72, 72, 72,131,179, 23, 46,216, 39, 36, 36,136, 19, 18, 18,196,167,206,158,181, +111,218,180,105, 3, 15, 15,143, 0, 51, 14,107,242,249,213,186,117,235,230, 30, 58,116,136, 9, 9, 9,129,131,131, 3,218,180, +105,131,227,199,143,243, 87,172, 88,241, 13,128, 57,101,229,147, 97,152, 22, 33, 33, 33, 4,148, 34, 41,219,128, 27,139, 3,112, +111,121, 32,114,243, 41, 50,178,115,160, 86,231, 67, 38,147, 73, 10,186,123, 45, 45,123,179,166, 77,155, 18, 0,133,226, 42, 55, +247,213,162, 84,230, 65,171,213, 65, 44, 22, 43, 8, 33, 18, 75, 57, 41,165,238,205,155, 55, 7, 0,232,116,186,194, 47,188,172, +172, 44,146,157,157, 13,173, 86, 11,129, 64, 32, 36,132,240, 45,229,180,149,243,245,124,161,120,218,208,113,243, 99,135,142,155, + 31,203, 23,138,167,105, 21, 57, 70, 75,210,108,229,124,253,219,188, 63, 9, 33, 46, 60, 30,239,167,106,213,170, 61,230,241,120, +219, 9, 33,238,111,194, 73, 8,105, 72, 8,249, 70, 38,147,157,169, 89,179,102,172, 92, 46, 63, 75, 8, 89, 66, 8,105, 90, 30, + 78, 66,136, 72, 38,147,157,253,230,155,111,246,223,189,123,247,163,223,127,255,221,239,193,131, 7,189,151, 46, 93,186,199,198, +198,230, 18, 33, 68,246, 38,207,166,159,159,223,150, 27, 55,110, 52,108,214,172,217,143,132, 16,113, 69, 60,239,132, 16, 30, 33, +164, 30,177,112,174,161,191,251,186, 19, 66, 60,235,215,175, 95, 73, 34,145,160, 93,187,118, 0,208,250, 13, 57,155,142, 25, 51, +198,125,202,148, 41,130,123,247,238,225,199, 31,127,196,161, 67,135,144,146,146,130,174, 93,187, 10,223,127,255,125,119,177, 88, +220,212, 42, 78,190,237,158, 73,159, 77,238,244,197,196,145,138,251, 49, 58,108, 61, 19,131, 95,175, 37, 34, 69, 37, 66,183,222, + 67,237, 58,246,232,215, 81, 36,182,219, 99, 45,231,140,233,211, 59,141,250,120,160, 34, 44,145,197,225,235, 73,184,254, 36, 27, + 6,129, 61, 58,247,254,196,161,110,243, 78, 93,248, 16,108,123,219,215,104, 51,208,100,210,164, 73, 46,211,150,239,188,226,217, +240,195,213,169,153, 8, 49, 23, 62, 53, 0,123, 71,185,252,195, 39,173, 90,141,148,190,154,243,177, 84,206,215,248, 26,244, 88, +147,146,137,150,230,254, 89, 45, 29, 81,189,160, 91,145,119,234,167, 47, 25, 74, 48,113,144, 39,220,203,202,231,121,224,163, 73, +147, 39, 11,236, 28, 28,176,110,221, 58,104,242,242, 94,243,153,109, 91, 9,157,206,200,248,113, 85, 2,189, 31,183,241, 37,151, +222,193, 15,192, 81, 37, 90,180,142, 29, 59, 70,187,116,233, 66, 0, 96,127, 24,205,236, 19, 68,190,237, 55,254,155, 57,132, 33, +180,114,112,179, 48,175,170, 65,121, 78, 78, 78, 80,169, 84,208,104, 52, 16, 10,133,200,207,207, 71, 76, 76, 12,174, 95,191, 14, + 7, 7, 7,171, 50,147,147,147, 3, 27, 27, 27,216,216,216, 84, 8,231,204, 97,237,196, 47, 98, 83,197, 39,175,159,111,245,253, +167,255,107, 82,181, 94,235, 7,109,251, 77,124,104,235,226,153,255,224,193, 3, 92,189,122, 21,153,153,153,104,220,184,241,187, +114, 61,111, 22,180,215, 55, 9, 33, 14, 33, 33, 33,222, 39,207, 92,116, 80,230,179,182, 81,201,122, 1,203,178,144,201, 60, 12, +123, 15, 28,206,254,168,119, 55, 66, 8, 73, 1,112,179, 64,220,222, 44,227, 70,145, 0, 8,232,211,167,207,140, 79, 63,253, 20, + 17, 17, 17, 24, 57,114,164,250,230,205,155,233,205,154, 53,115,218,188,121,179,116,202,148, 41,184,112,225,194, 60, 66,200, 47, + 0, 34, 41,165,249, 37, 52, 26, 66,161, 80, 8, 67,129,108,208, 25,217, 66,125,159,147,147, 3,170,206,132, 80, 40,228, 1,112, + 1, 96,145, 31, 29,203,178, 66,129, 64, 80, 40,178, 98,146,115, 16,147,162, 66,142, 82, 11,181,218, 0,173,154,130, 39,115,226, + 3, 81,110, 0,162, 44,172, 79,158, 68, 34,129,193, 96, 40,156,127,209,100, 41,211,106,181,200,206,206, 6,143,199,179, 1, 96, + 11, 32,195, 18,194, 87, 78,238,248,181,160, 27, 16,183,118,118,119,126,126,108,166,174,207,252,199,133,105,182,114,190,254,192, +148,154, 60, 39,239,186,151,235,125,180, 45,208,148,246, 54,253,179, 8, 33, 98, 23, 23,151,115,251,247,239,175, 89,189,122,117, + 68, 70, 70, 6,246,237,219,183, 49, 33,164,158,181,115, 50, 18, 66,100, 12,195,124, 59,124,248,240, 79, 7, 12, 24, 64,106,212, +168, 1, 62,159, 15,131,193,224, 29, 17, 17,209,102,223,190,125,211,249,124,254,102,163,209,248,185,165,126,127,132, 16, 70, 36, + 18,237,221,184,113, 99,203,198,141, 27, 99,251,246,237,184,121,243, 38,219,176, 97, 67,102,200,144, 33,240,245,245,109, 60,100, +200,144, 95, 9, 33,157,203, 99,217, 34,132,248, 14, 26, 52,168, 18,143,199, 67,179,102,205,132, 87,175, 94,173, 15,224,234, 27, +214,169,141,183,183,247,133,214,173, 91,215, 59,115,230,204, 29, 66, 72,107,107,252, 28, 9, 33, 61, 60, 61, 61,151,218,217,217, + 57, 88,209,198,170,226,227,227,167, 90, 49,135,106,147, 6, 13, 26, 32, 58, 58, 26, 1, 1, 1, 16, 10,133, 77, 9, 33,163, 1, +116, 2, 48,219,154, 25, 44, 8, 33,158, 77,155, 54,117,110,221,186, 53, 89,178,100, 9, 0, 64, 32, 16,192,104, 52,130, 97, 24, + 8, 4, 2, 4, 6, 6,146,151, 47, 95, 58, 18, 66, 60, 45,233, 70,116,174,214,166, 91,179,182,157, 90,180,108, 92,135, 89,113, +224, 57,140,172, 17, 60, 98, 0,159,176, 96,245, 98,136,133, 60,212, 8,126,143,247,228,209,253,198,206,254,237,187,165, 61, 61, +125,196, 18,206, 78,221,186,135,212, 12,168,193,124,255,235, 11,100,197, 63, 54,198,135, 95, 76, 99,120, 12,106, 54,120,223,185, + 70, 80, 61, 94,189,198,173, 5, 9,145,143,218, 56, 86,111,213, 46,227,249,133, 51,111,227,153, 92, 0,240,188,189,156, 63,236, +218,190,181, 48, 49, 33, 33,111,223,129, 35, 15, 85,122, 92, 7,128, 11, 0,233, 12,212,169,221,168, 81,171,205, 75,150, 56,121, +120,120, 8, 6, 15, 24, 96,216,116,231,206,157, 81,128,177, 36, 62,103,119,247,118, 99,198,140,225, 37, 38, 36,208,125, 7,143, + 61, 48,241, 1,128, 12,168, 93,199, 59,176, 43,242,158, 88,213, 77,217, 13, 16,185,185,187,215, 28, 61,122, 52,146, 18, 18,176, +125,199, 14,101, 62,112,205,100,197, 58,204,195,218,160,170,238,195,167,125,210,157, 84,242,112,198,152,121,155,154,182,209,165, + 84, 61,135, 63, 44, 91,230, 90,228,223, 42,178,138,138,173, 18,191,206, 15,132,209,185,182, 34,226,183,111,223,110, 38, 53, 87, +151, 23, 17, 17, 1,103,103,103,120,120,120,192,206,206, 14, 97, 97, 97, 56,123,246, 44,158, 62,125, 10,150,101, 81,183,110, 93, +171, 50,148,150,150,134,251,247,239,195,193,193,161,194, 56,171, 86,114,193,248, 74, 46,194,228,244, 28,225,153,155, 79, 27,111, +154,217, 59,136, 9,236,189, 37, 63,255, 15, 13,160,213,190, 27, 51,148,152,143, 46,244,241,241,105,190,117,235, 86,161,198, 0, + 69,141,209,215,150,229,229, 27,229, 0, 32,151,240,242, 66,151,250,127,254,213, 87, 95,229,125,252,241,199,129, 49, 49, 49,139, +203,226, 21,137, 68,139, 62,248,224,131, 47, 40,165,130, 73,147, 38, 1, 0,134, 14, 29,154,115,253,250,245, 26,148,210, 20, 66, +136,231,136, 17, 35,158,157, 59,119, 78, 54,121,242,100,158,193, 96, 8,227,243,249,148, 16,178,144, 82, 58,191, 40, 31,195, 48, +183,239,220,185, 83,217,211,215, 31,190, 78, 12, 66,230,188,154,174,205, 73,198, 34, 46,234, 5,194, 31,220,132,187,187,187,157, +135,135,199,227,128,128, 0, 93,124,124,252,116,165, 82,185,190,180, 60, 10,133,194,123,161,161,161, 30,190,190,190, 80, 42,149, +136, 75, 85, 97,226, 65, 25,114,212,175,140, 24, 2,168, 81,175,146,191, 66,202,104,111,186,185,185,233,180, 90,237,151, 89, 89, + 89,165, 78, 35, 34, 16, 8,210, 31, 60,120, 96,227,227,227,131,252,252,124,154,145,145, 65,242,242,242,144,155,155, 75,142, 29, + 59,214, 51, 49, 49,177,161,159,159, 31,241,246,246, 94, 88,189,122,117,117,124,124,252, 72, 75,124,192,246,207, 11,212, 17, 66, +140,124, 62,127,197,168, 81,163, 62,250,229,151, 95,110, 31,152, 95,179, 7,165, 84, 87,240, 64,218, 5, 7, 7,159,172, 83, 39, +200,115,199,242,218,171, 41,165,203,254, 1,183,215,240, 89,179,102,213,116,116,116,196,152, 49, 99,176, 96,193, 2,204,157, 59, +183,250,152, 49, 99, 70, 1,248,206,138, 70, 71,234,238,238,126,235,251,239,191, 15,108,222,188, 57,142, 31, 63,142,221,187,119, +227,229,203,151, 6, 63, 63, 63,126,227,198,141, 49,111,222, 60,116,236,216,113,228,132, 9, 19, 90, 17, 66,234, 91, 40, 62, 62, +158, 55,111, 94,143, 22, 45, 90, 96,216,176, 97,154,243,231,207,127, 4,224,212,233,211,167,223,191,112,225,194,129,157, 59,119, + 74,191,249,230,155,118, 83,166, 76, 25, 3, 96, 77, 57,202,223,179,101,203, 87,115, 40,183,104,209, 2, 75,151, 46,237,248, 38, + 66,139, 16, 34,114,114,114, 58,182,125,251,246,122,254,254,254, 24, 60,120,112,253,143, 62,250,232, 24, 33,164, 61,165,212,162, + 6,201,203,203,235,219, 67,135, 14, 85, 43,169,103,161, 56,104, 52, 26,199, 15, 63,252,112, 9, 0,171,132,214,174, 93,187, 48, +117,234, 84,212,173, 91,183, 78,147, 38, 77, 54,140, 30, 61, 26,125,250,244,105, 75, 8,113,163,148,230, 89, 66,196,231,243,253, +186,118,237, 42, 56,120,240,224, 43,235, 72,203,150,104,215,174, 29, 30, 62,124,136,203,151, 47,131,199,227, 65, 46,151,163,121, +243,230,162,132,132, 4, 63, 0,101, 10, 45, 70, 44, 27,222,163,107,103,197,225,235,137, 48,178, 6,188, 87,205, 22,141, 3, 93, +241, 36, 46, 7,161,143,227, 96,212, 10, 97,235,232,132,166,173, 58, 56, 38,197,191, 28, 14,160,108,127, 45,177,108,120,175, 30, + 93,108, 14, 95, 75, 64, 86, 66, 56,125,126,243,151,179,250,252,188,145, 0,112,251,247, 61, 27,220,157,164,237,107, 52,120,143, +215,186,125,119,135,131,187,147,134, 3,120, 43, 66,235, 66, 37,108,244, 21,164, 13,157, 54, 48,132, 10, 28,188,111, 42,244,250, +181,166,109, 29,129, 14,211,103,205,106,242,201,168, 81, 18,150,101,177,243,231,159,115,238,223,185,243,164,180,209,126,107, 1, +223,143,122,244, 16, 43,108,109,241,217,196,137, 80,232,245,231, 10,171, 4,104,251,217, 23, 95, 52, 31, 55,110,156,116,195,194, + 79,111,119, 28,241,117, 3,150, 82, 82, 92, 55,101, 81,156, 1, 26,142,232,209, 3, 10, 91, 91, 76,154, 52, 9, 68,167, 59,105, +218,118,148,143,115, 31,247, 12,105, 60,176, 91, 11, 16, 16,236, 62,122, 25,207,163, 83, 31,156, 75,196,139,119,228,157,108,157, +143,150, 9,185, 58, 36,183,237,210, 27,119,238,220, 1, 0,164,167,167, 35, 61, 61, 29,213,170, 85,195,154, 53,175,183, 95,229, + 17, 48, 44,203, 86, 56, 39, 0,184, 57,217, 98,112,231, 70,252,203,247,119, 75,242, 82, 83, 37, 54, 54, 54,249,239,154,208, 50, +135,193, 96,144,248,249,249, 33, 71, 13,146,173,210,219,164,237,121,101,241,119,238,127,222, 70,171,213, 50, 54, 54, 54,208,104, + 52, 18, 11, 94, 8,130, 30, 61,122,124,177,119,239, 94, 65,120,120, 56,170, 86,173, 10,157, 78,135,235,215,175,199, 21, 76,132, + 12, 74,105, 2,143,199, 75, 96, 89,182,122,221,186,117,177,120,241, 98, 4, 6, 6,146,206,157, 59, 79, 47, 16, 91,175, 61,220, +137,137,137,223,142, 30, 61,250,253,125, 7,126,113,220,216, 79,141,156,236, 28, 40,149, 74,220,187,123, 27, 25,201,249,216,180, +105, 19, 36, 18, 41, 1, 32, 76, 73, 73, 22, 78,158, 60,121,181,183,183,119,167,184,184,184,174, 37,229, 51, 33, 33, 97,209,184, +113,227,154,238,217,179,199, 62, 55, 55, 23,106,117, 62, 50,242,100,120,188,234,213, 60,190, 53, 63,123,140,117,107,215, 51,181, + 43,203,157, 85, 42, 21, 62,253,244,211,149,158,158,158,205, 19, 18, 18, 70,148,196, 25, 31, 31,127, 99,252,248,241,110, 59,119, +238,148,104,181, 90,157,209,104,132, 90,173,102,246,236,217, 51,189,114,229,202, 14,155, 55,111, 38, 18,137,180, 96,223, 56,225, +216,177, 99,247,186,187,187,239, 76, 74, 74, 26, 86, 86,119, 17,143,199, 91,181, 99,199,142, 33,253,250,245, 83, 36, 38, 38, 6, + 29, 58,116, 72, 12, 64, 93,176,139, 71,251,246,237, 43, 47, 95,190,220, 37, 56, 56,120, 58, 33, 68, 64, 41,253,230,109,222, 79, +206,206,206, 19,122,244,232,129, 37, 75,150,224,200,145, 35, 83, 28, 29, 29, 87, 46, 88,176, 0,158,158,158,227, 9, 33,171,172, +152,168,119,217,119,223,125, 23, 24, 24, 24,136,161, 67,135,106,207,156, 57, 51, 11,192,175, 0,162, 47, 93,186,228,179,109,219, +182,110,123,247,238, 93,242,253,247,223, 75,214,172, 89, 83,173,119,239,222,171, 0,140, 40,243,249,118,115,155, 60, 96,192, 0, + 44, 95,190, 28,231,207,159,239, 77, 41, 61, 94,176,233, 4, 33,164,219, 55,223,124,243,251,156, 57,115,240,221,119,223, 77,178, + 86,104, 17, 66,108,106,214,172,249,101,167, 78,157,112,233,210, 37,132,132,132,160,105,211,166, 83, 8, 33,171, 41,165,105,229, + 16, 89,140,141,141,205,222,173, 91,183,134, 84,174, 92, 25, 95,127,253, 53,190,248,226, 11,108,217,178, 37,100,240,224,193,123, + 9, 33,189,138, 62, 51,197,193,206,206,206, 70, 38,147, 97,250,244,233,244,229,203,151,153,101,237, 95,169, 82, 37,135,149, 43, + 87, 18, 7, 7, 7, 59, 75, 69,177, 68, 34,105, 86,171, 86, 45,204,155, 55, 15,167, 79,159,198,156, 57,115, 80,171, 86, 45, 68, + 71, 71,163,127,255,254,178,217,179,103,247, 1,176,213,194,151,142,157,147,147, 19, 82, 82, 82, 32, 16, 8,208,188,121,115,252, +250,235,175,208,104, 52,112,117,117, 69, 86, 86, 22, 26, 53,106,100, 18,101,118, 22,190,202,106, 57, 59,218, 33,229, 81, 60,248, + 48,160, 65, 13,103,156,123,152, 14,157,158,133,171,147, 61,146, 82,146,209,164,150, 55,180, 90, 31, 80,202,214,178,132, 81,196, + 99, 26,136, 37, 82,100,228,166, 33,254,241,249,116,157, 81, 51, 58,235,229,229, 88, 0,112,172,218,114,244,237,203,167,111,247, +237,210,210, 85,153, 87, 9,132,178,141,222,198,243,216,215, 7,149,228, 18,254,208,163, 27,103, 18, 3,203,226,131, 17,139, 26, +118,114,131, 10,201,128, 11,224,215,183,127,255,102,159,127,254,185,232, 89, 68, 4, 59,121,226,196,172,187,183,110,157,255, 13, +184, 93, 26,167, 18,168,222,190,125,123, 48, 0,126, 59,117, 42, 47, 13,136, 3, 0, 55,160, 82,247, 15, 63,108, 57,107,198, 12, +209,139,168, 40,246,122,132,242,240,139, 20,186,184,153, 35,238,239,137,126,181, 79,105, 48, 2,181, 77,188, 39, 79,158,164,234, +130,124,180,174,132,241, 29,155, 7, 55, 30,210,163, 37,226,146,210,177,244,199,195,120,240, 44,241,164, 19,139, 65,239,202,123, +184,180, 8,246,140, 5, 15,204,159,210, 84,170, 63,247, 30,188,169,128,249, 43, 56,139,195,187, 40,180, 76, 48, 77,222,172,213, +179,208,234, 89,211, 87, 45,212,106,181,165,138, 92,127,242,228,201,237, 19, 39, 78,196,202,149, 43,241,236,217, 51, 8,133, 66, +212,170, 85,203,131, 16, 98, 99,178,192, 52,104,208,192,149, 97, 24, 60,121,242, 4, 43, 86,172,192,199, 31,127, 76,175, 94,189, +186,165,184, 23, 6,165,244,110, 70, 70,198,218,209, 35, 63,206,202, 76,142,129, 94,157,137,148,248, 23,208,228,101,225,235,197, +223, 66,165,231, 35, 41, 91,135,164,108, 29, 24,177, 35, 54,108,222,202,171, 89,179,102, 39, 62,159,223,181,148,124, 94, 79, 78, + 78,222, 60,118,236,216,172,164,164,164,194,242,105,245, 20, 90,253,235,247,171, 76, 38,195,170, 85,171,236,106,212,168,209, 67, + 32, 16,180, 41,133, 51, 49, 54, 54, 54,124,236,216,177,218,228,228,100,100,103,103,227,240,225,195,221, 42, 87,174,236,176,100, +217, 74,146,167,227, 35, 41, 75,135,164, 44, 29, 68, 54,174,216,123,224, 23,158,191,191,255, 64,129, 64,208,180, 44,145,181,115, +231,206, 33,253,250,245, 83, 44, 91,182, 44,227,208,161, 67,235, 40,165,230, 23,228,201,170, 85,171,246,237,221,187, 55,247,139, + 47,190,112, 92,186,116,233, 20, 66,200,172,183,216, 88,180,233,215,175, 95, 0,203,178,216,191,127,255, 3, 74,233,119,191,252, +242,203, 45,141, 70,131,254,253,251,251, 21,116, 35, 89,194,211,112,224,192,129,159,134,132,132,224,179,207, 62,211,157, 57,115, +166, 1,165,116, 37,165, 52,138,190, 66, 52,165,116,245,133, 11, 23,234, 78,152, 48, 65,211,168, 81, 35, 12, 27, 54,236, 99, 66, + 72, 72, 25,188,205, 6, 12, 24, 16,200,178, 44,246,236,217,115,223, 76,100,153,174,227,217, 3, 7, 14, 92,215,106,181, 24, 52, +104, 80, 21, 66,200,251, 86,148, 93, 40, 22,139,247,127,245,213, 87,246,241,241,241, 24, 50,100,136,230,201,147, 39,152, 63,127, +190,212,206,206,238,184,233, 25,176, 6, 98,177,120,211, 15, 63,252,208,163,118,237,218, 24, 59,118,172,118,253,250,245, 19, 63, +253,244, 83,109,131, 6, 13,176,110,221,186, 30, 34,145,200,170,169, 69, 18, 18, 18,178,194,194,194,156,202, 90,226,226,226,146, + 45, 44,179, 76,161, 80, 92, 11, 14, 14,206,169, 85,171,214,123, 6,131, 1, 97, 97, 97, 47,182,111,223,206,214,170, 85, 11,107, +215,174,197,210,165, 75,209,181,107, 87,240,120,188, 62,214,228, 53, 47, 47, 15, 18,137, 4, 66,161, 16,161,161,161,208,104, 52, +144,201,100,144, 72, 36,224,241,120,176,183,183,135, 66,161, 0, 44, 28,141, 70, 8,104,142, 74, 15,129,128, 1,159, 97, 17, 30, +157, 13,157,158,133, 68,200,131,128, 79, 0,202,194, 94, 46,128, 68,196, 3, 67, 8,107, 33, 39,178,243,116, 16, 9, 25, 8,132, + 34,194, 24,140,210,194,151, 35,223, 40,149, 74, 69,196,217, 86, 12,137,240, 31, 52, 45, 48,121, 85, 95,195, 1,129,220,199,231, +163,229, 43, 86,136,114,148, 74,244,238,221, 59, 35,234,214,173, 29,106,224, 86,171, 50,234,148,225,243,107,180,110,213, 10,161, +119,238, 32, 55, 51,243, 57,240,202, 57, 94,228,233,217,111,213,170, 85, 34,117,126, 62,122,247,234,149,245,236,242,229,157,177, + 74, 28,181, 68,100, 1, 0, 79, 40,116, 55,241,102,103,102,102, 2,175, 66, 72,184,185,216, 44, 25, 55,176, 35,114, 85,249,152, +246,237, 14,246, 78,120,226,248, 75,113,232,242, 75, 2,178,223,165,119, 48, 33,100,148,249, 98,145, 69,203,100,117,178, 68,172, +104, 52,154, 10, 23, 64,111,202, 89,156, 72,124, 83,206,127, 34,248,124,126,254,211,167, 79, 69,182, 78,158,172,147, 66,144, 89, +249,227,203,118, 0,224,104,195,207,214, 25,245,108, 66, 66, 2,196, 98,113,190, 37, 92,249,249,249, 35, 9, 33, 95, 3, 8,226, +243,249, 71,183,110,221, 74,118,236,216,225, 48, 96,192,128, 8, 66, 72,124,112,112,176,239,214,173, 91,109, 1, 96,245,234,213, +116,239,222,189, 29,241, 42,100, 70,137, 38,229,164,164,164,249, 2,129,224,234,184,113,227,214,136, 68, 34, 7,185, 92,238,116, +233,210, 37,146,175,163,104, 56, 43,186,112, 36,162,173,148,193,197,153,182, 24, 53,106, 20,239,241,227,199,139, 1, 28, 45,133, +115,186, 88, 44,190,244,236,217,179,149,118,222,245, 92,228,190,179,236, 26,207,124, 2, 0,240,117, 22,128, 41,104, 23,179,178, +178,144,154,154,138, 79, 63,253,212, 33, 34, 34, 98, 58,128,115, 37,113,198,197,197, 93, 16,139,197,113,143, 30, 61,106, 45, 16, + 8, 68,114,185,188,225,181,107,215, 72,190,150, 69,157,233,209,200, 80,190,202,167,163, 13, 31,183,191,114,195,248,241,227,249, +207,159, 63,255, 22, 64,139, 98, 27, 51,134, 89,106, 46,178,166, 77,155,118, 15, 64, 21, 66,200,107, 93,163, 70,163,145, 12, 26, + 52,232, 33,128, 90, 95,124,241,133, 35,165,116, 10, 33, 36,131, 82,186,241,239,190,151,108,109,109,151,140, 30, 61, 26,123,247, +238, 69,102,102,230, 42, 0,200,201,201,249,110,215,174, 93,123, 70,142, 28,137,159,127,254,121, 9, 33,228, 55, 11,172, 90, 31, +244,239,223, 31, 39, 78,156,192,239,191,255,254, 37,165, 52,172,132,103,244, 25, 33,100,250,161, 67,135,190, 31, 48, 96, 0,126, +250,233,167, 78, 0, 74,115,144,109,223,177, 99, 71, 28, 63,126, 28,233,233,233,235,138,219, 33, 43, 43,107,253,225,195,135,155, +116,236,216, 17,139, 23, 47,110, 15,224,172, 5, 13,100,160,157,157,221,214,239,191,255,190, 97,237,218,181, 49,112,224,192,124, +157, 78,215,233,139, 47,190, 56,178,123,247,110,197,246,237,219,223, 27, 53,106,212, 13, 66,200, 39,148,210,235, 22,189,116,120, +188,111,214,172, 89, 51,162,117,235,214,152, 50,101,138,225,228,201,147,221, 41,165,167, 8, 33, 17,211,166, 77, 59,182, 98,197, + 10,222,242,229,203, 71,240,120,188, 84,163,209,248,182,196,245, 87,171, 87,175,110,210,161, 67, 7,188,120,241, 2,215,175, 95, +135, 78,167,251,249,218,181,107, 23,171, 87,175,254,149, 86,171, 61, 34,151,203,135, 42, 20,138,224,122,245,234,189, 79, 8,145, + 89,226,167, 71, 8,201,138,136,136,144,187,186,186, 66, 32, 16,224,254,253,251,112,117,117, 5, 0,164,164,164,160, 86,173, 90, +224,241,120,200,202,202, 2, 96,217,203,150, 16,230, 65, 68, 84, 66, 21, 71,133, 28, 48, 74,112,247, 73, 28, 92,156, 29, 96, 36, + 12,146,146, 18, 81, 47,192, 27,132, 16,100,165, 39,129, 16,242,208, 18, 78, 35,101, 67, 99, 18, 82,188,156, 20, 98,212,110,210, +193,233,218,111,169, 59,236,170,182, 24,197,231, 17,158, 88, 98,187,113,196,176, 97,206, 44, 75,145,149,158, 12, 62,195,220,124, + 27, 23,104,127, 12, 98, 91, 85,149,220,237, 48,226,235,122,132,130,170,117,216,254, 83, 50, 50,101, 64,189,213,179,103,219, 59, + 57, 59, 99,224,192,129,108,122,124,252, 25, 21, 96, 81, 96,229, 42,213,171,187,217, 40, 20,184,114,229, 10,120, 64, 36, 0,108, + 1, 2,151, 78,155,230,228,234,238,142,143, 71,140, 96,147, 99, 98,206,170, 45,232,210,125,141,183,106, 85,129,137,151, 41,224, + 77,228, 97,226, 23,221, 67,196,114,169, 24,223,108,248, 5,177,105,121,123,174, 37, 98,195,187,104,236, 40,211,162, 85,146,243, +217, 43,167,106, 89,169, 98, 69, 34,145, 20, 90, 83,172,248,210,171,112,206,178,240, 87,112,190, 69,229, 60,147, 16,114,136, 16, + 50, 51, 54, 54, 54,124,196,136, 17, 58,131, 78,147,123,245,235, 42, 51,238, 44,174, 60,246,218,124,143,177,191, 78,180,155,161, +202,206,200, 93,189,122,181, 62, 54, 54, 54,220,252,152, 50,110,150, 24, 74,233,241,109,219,182,173,223,191,127, 63,106,213,170, +133,176,176, 48,215,188,188,188,250, 15, 31, 62,116, 12, 12, 12,196,142, 29, 59,176,119,239,222,149,148,210,211,165,137, 44, 51, +107,219,153,196,196, 68,255,232,232,232,106,246,246,246,122,123,123,123, 20, 29,137,152,163,102,145,158,149, 13, 71, 71, 39,216, +218,218,250,149,197,169,209,104,142, 39, 38, 38,214, 96, 29, 2, 90,214, 72, 91,149, 29,250, 77, 37,132,126, 83, 9,199,167,123, +194,195, 94,132,204,204, 76,164,166,166, 34, 53, 53, 21,132, 16,232,245,250,154, 22,112,190, 76, 72, 72,248, 49, 38, 38,230,144, +155,155, 27, 20, 10, 5, 40,128,164, 44, 61,238, 45, 15,196,189,229,129, 72,202,210, 35, 39, 55, 23,149, 43, 87,134, 66,161,168, + 85, 82,151,145,151,151, 87,231,126,253,250, 41, 0,160, 64, 64,181,165,148,142, 45,102, 25, 99, 48, 24,154,155,246,157, 58,117, +170, 35,128,142,127,243,253,196, 35,132,140, 27, 57,114,228,123, 18,137, 4,107,215,174,125, 9, 96,167,169,173, 95,191,126,253, + 19, 0,152, 56,113, 98, 48,128, 41,164,132, 72,208, 38, 8,133,194, 6, 53,107,214,196,181,107,215, 0,224,151, 50, 78,127,224, +234,213,171,168, 94,189, 58, 36, 18, 73,195, 50,246,245,171, 84,169, 18,158, 60,121, 2, 0,119, 75,216,231,238,147, 39, 79, 80, +169, 82, 37, 16, 66,252, 44, 40,123,143, 14, 29, 58, 60, 56,119,238, 92,195,102,205,154, 97,196,136, 17,218, 27, 55,110,116,166, +148, 94,188,123,247,110,155, 65,131, 6,229,213,168, 81, 3, 23, 46, 92, 8, 28, 52,104,208, 85, 30,143,247,181, 5,156, 31, 47, + 92,184,112,102,207,158, 61,177,112,225, 66,186,111,223,190,129,148,210, 83, 5,207,215,201, 61,123,246, 12, 89,180,104, 17,237, +213,171, 23, 22, 44, 88, 48,147, 16, 50,182, 12,235, 80,182,209,104, 68, 94, 94,158, 69, 38,121, 75,247,119,118,118,254,160, 67, +135, 14,152, 51,103, 14,188,188,188,112,228,200, 17, 10,224, 40,165,244,146, 70,163,105, 73, 41, 93,145,151,151,247,235,181,107, +215,208,190,125,123, 33, 94,159, 98,164, 68, 24, 12,134,168,115,231,206,233,156,156,156,224,237,237, 13, 31, 31, 31,228,229,229, + 33, 43, 43, 11,181,106,213, 66,147, 38, 77,144,151,151,135,163, 71,143,234,178,178,178, 44, 26,176, 98,208,230,109, 63,125,236, + 96,182,147, 66, 12,111, 87, 59, 84,246,114,132, 50, 43, 13,169, 73, 9,104, 80,211, 7,173, 26, 84, 70, 90,182, 22, 39,143, 30, +204,204,205, 85,109,183,168, 23, 64,163,218,122,230,183, 35,217, 14, 10, 33,252, 3,130, 49,104,196,196,122,245,234, 55, 62,221, +168, 81,243,147,203,150,124, 83,167,109,211,154, 36, 46, 45, 31, 39,142,254,146,153,157,147,179,245,109,180,245, 11, 0, 94,190, + 93,141,139,235, 14,133,254, 24,212,105,228,143,225,113, 88, 5, 0,122, 30, 47,176,243, 7, 31, 32, 46, 46, 14, 7,247,239, 79, + 84, 1,247, 45,229,147, 74,165, 12, 0,100,103,103, 67,252,106,182, 16, 24,128,128, 46, 93,186, 32, 53, 45, 13,187,118,238, 76, + 61, 1,220,177, 38,159,221, 0,145, 76,250,202, 32,152,157,157, 13, 2,228, 0, 0,225,163,115,163, 90,213,145,154,145,131,115, + 55,195,149,149,213,248,180, 52,158,127,171, 35,124,105, 62, 90,101,217, 67,211,166, 76,153, 2,177, 88, 12, 15, 15,143, 66,113, +100, 18, 43, 34,145, 8, 30, 30, 30, 48, 24, 12,216,179,103, 15, 0,148,234,195,192, 0,154,238, 99, 23,179, 26, 61, 85, 9, 4, +130, 10,225, 44,176, 28,104,122, 79,251,137,253,237,106,241,131, 98,202,195,249, 47, 64,163,130,152, 88,141, 40,165,153, 81, 81, + 81,113, 31,245,238,158, 29, 29,241, 40, 41, 47, 43, 33, 49, 39, 61, 54, 49,246,229,195,164, 89,211,167,100,199,197,197,197, 22, +196,210,106,148,144,144,208, 29,128,165,190, 6, 83, 62,250,232,163, 31, 70,142, 28, 73,239,221,187, 7, 0, 8, 13, 13,197,176, + 97,195,232,144, 33, 67, 86, 1,152, 81,142,124,231,169,213,234,215,172, 33, 58, 35, 91,216,229,151,147,147,131,132,132, 4,104, +181, 90,139, 21,241,179,147,203,159,102, 68,221,214, 7,251,202, 17,236, 43, 71, 96, 37, 25,136, 65, 89, 40,178, 82, 83, 83,145, +156,156, 12, 0,249, 86,228, 51, 71,163,209,188,150, 79,243,174,201,156,156, 28, 36, 37, 37,193,104, 52,106, 75,120,232,216,248, +248,248,147,123,247,238,205, 5,128,101,203,150,101, 16, 66,126, 39,132,252, 80,204,178,129,207,231, 95, 49,237,187,124,249,242, + 12, 0,199,255, 70,145,213,179,118,237,218,153, 51,103,206, 92, 59,105,210, 36,108,216,176, 1,137,137,137, 51, 40,165, 6, 83, + 89,210,210,210,166,173, 91,183, 14,195,135, 15,199,220,185,115,151,215,175, 95, 63,135, 16, 82,162,127,133,139,139,139, 55,159, +207,199,157, 59,119,114, 40,165, 47,202,104,160,146,238,220,185,147, 76, 8,129,135,135, 71,213,210,246,117,116,116,172,166, 80, + 40, 16, 31, 31, 15, 20,124, 49, 23,131,168,132,132, 4, 42, 18,137,224,233,233, 89,189,172,242, 59, 56, 56, 76,251,241,199, 31, +249,143, 30, 61, 66,219,182,109,227, 46, 92,184,208,158, 82,122,190, 32,111,119, 66, 67, 67, 67,218,180,105,243,244,244,233,211, +248,246,219,111, 73,221,186,117,199,150,197,233,235,235, 59,230,227,143, 63,198,154, 53,107,176,113,227,198,177,148,210,253, 69, +202,188,123,221,186,117, 19, 55,110,220,136, 17, 35, 70,192,207,207,175, 84, 95,149,232,232,232,233,173, 91,183, 14,125,246,236, +153, 69, 51, 30, 88,178, 63, 33,164, 77,227,198,141,171,169,213,106,108,221,186,245, 69,181,106,213,110,237,223,191,127, 10,165, +180,232, 11,251,215,131, 7, 15, 98,240,224,193,168, 91,183,238, 86, 66,200, 0, 11, 94, 58, 9,209,209,209,105,247,239,223,103, +121, 60, 30,188,189,189,209,185,115,103,244,239,223, 31,117,235,214, 69, 74, 74, 10, 46, 94,188,200, 70, 68, 68,164, 89, 26,184, + 52,237,233,185, 35,145,145, 79,175,220,185,113, 81,207,231, 49,240,241,112,196,135,237,234,225,147, 62,205,209, 32,208, 11,209, + 41,106,156, 61,123, 90, 31, 25,249,226,154, 37, 35, 14, 77,156,225, 97,247,175, 62,186,115,217, 32,224, 19, 4, 6,212,192,156, + 89,211, 28, 22,205,155,110, 95,163,170, 15,238,191,204,198,233, 83, 39,244, 9,113,177,231,222,214,136,195, 11,128,208, 70, 76, +228, 60,134,129,145, 17,231,241, 10, 2, 25,215, 10, 10,242,119,115,119,199,177, 99,199,192, 0,143,173,226,179,121,213, 11,174, + 84, 42, 97,226,171, 22, 16, 16,224,227,235,139,227,199,142,129,199,178,143, 91, 89, 25, 96,244, 9, 32, 51,231, 37, 64,254,167, +149,160,168, 86,201, 53,192,193, 78,142, 27,247,159, 67,163,167, 55,119,102, 66,133,119, 16, 69,187, 13,173,233, 58, 92,182, 97, +195,134, 70, 63,254,248, 99,251, 41, 83,166,216, 12, 29, 58, 20, 18,137, 4, 42,149, 10,222,222,222, 48, 26,141,248,237,183,223, +112,251,246,109, 37,203,178,167, 81, 36,108, 0, 33,164,157,121,172,141,223, 34,168,244, 85, 16, 76, 85,163, 67,125,251, 86, 8, + 39, 0,216, 60,103,109,211, 43,107,119,172,222,127,185,215,174,147,119,200,103, 3, 90, 49, 13, 2, 42, 1, 0,220,220,220, 96, +107,107,107, 53,103, 5, 84,250, 95,206,105,222,173,155,152,152,248,132, 16,146, 50,114,228,200, 64,147,227,187, 88, 44,206,143, +141,141, 13, 55, 5, 44, 45,122, 76, 89,249, 44, 24, 25,247, 41, 33,228,112,118,118,246,201, 47,190,248, 2,139, 22, 45,194,145, + 35, 71, 66, 40,165, 87,202, 83,118, 74,169,209,207,207, 47,235,230,205,155,110,213,107,214, 71, 21, 87, 1, 90,126,249, 12,148, + 82, 56,201, 40,114,179, 50,112,247,238, 29,228,230,230,222,176, 38,159,158,158,158, 89, 41, 41, 41,206,174,174,174,200,200,200, + 64, 90, 90, 90,161,200,202,204,204, 68, 70, 70, 6, 37,228,245,152, 45,101,112,230, 85,171, 86, 77, 21, 30, 30, 46,114,171, 84, + 29, 85, 93,133,104, 60,235, 9, 64, 41,124, 28, 25,228,230,100,225,218,181,107,200,206,206, 62, 95, 18, 39,203,178,159, 15, 26, + 52,136, 7, 96,200, 23, 95,124,225, 8,160,238,180,105,211, 78, 23, 29, 89, 40, 16, 8,190,219,177, 99, 71, 45, 83, 23,227,244, +233,211, 87, 82, 74,127,252,187,238, 37, 39, 39,167,207,143, 29, 59,166,208,233,116, 88,189,122, 53, 86,174, 92,185,133, 82,250, +191, 34,245,113,140,199,227,173, 99, 24,102,220,248,241,227, 49,122,244,104,217,123,239,189, 55,197,204,234,245, 26,103,124,124, +252,156, 6, 13, 26,204, 77, 73, 73,177,200,177,255,217,179,103,163, 26, 52,104, 48, 39, 37, 37,101,105,105,215, 72, 46,151,203, +141, 70, 35, 34, 35, 35, 51, 41,165,217, 37, 92,187,252, 26, 53,106,196, 27,141, 70,111,153, 76,230, 88,214,253,153,153,153,249, +205,123,239,189, 55, 63, 57, 57,249, 20,128,175,139,134, 42,161,148,222, 35,132, 4, 79,154, 52,105,194,146, 37, 75,122, 37, 37, + 37,237, 41,139, 51, 58, 58,250,155, 54,109,218,124,249,244,233,211,109, 37,117, 1, 83, 74,215, 18, 66,116, 59,118,236, 24, 27, + 25, 25,185,184, 52, 78, 74,233, 81,148,210,149, 94, 12,119,177,251,155,115,242,120,188,105, 75,150, 44, 97, 54,108,216, 0, 74, +233,114,131,193, 80, 82, 62,239,243,120,188,237,205,155, 55, 31,186,127,255,126, 73,112,112,240,104, 0,187,203,186, 63, 53, 26, +205,245,171, 87,175, 54,137,138,138,114,110,211,166,141,208,244,129,146,149,149,133,163, 71,143,234, 34, 34, 34,210,242,242,242, +174, 91,211,134, 24,180, 57, 3,174,158, 61,180, 59,234,217,195,166,173, 59,245,112,208,234,188, 33, 78,231, 33, 43, 61, 9,191, + 29, 61,152, 25, 25,249,226,154, 74,149, 53,192, 26, 78,157, 38,187,255,181,115,135,247,196, 69,134, 55,105,217,166,179, 67,190, +214, 23, 98, 33,131,244,228,120,252,118,236, 80, 70,100,228,203, 75,249,122,205,176,183,213,206,243,252,240, 53, 47,233,246,200, + 49,221,234, 65,234,224,125, 87, 0,172,110, 14, 72,157,221,220,132, 5,207, 14,108,128,104, 75, 57,147, 1, 81,245,130, 94, 42, +149, 74, 5, 1,160, 29, 14, 8, 92, 92, 92,164, 0,240,244,233, 83,200,128, 24,107,243,169, 4,228, 50, 51, 94, 6, 80,165,243, +225, 85,205, 86, 78, 0, 32, 46, 41, 29, 90, 61,174,224, 29,133,201,162, 85,156, 83,124, 89,193, 23, 89, 0,215, 9, 33,119,150, + 46, 93,218,242,135, 31,126,104, 53,121,242,100,209, 7, 31,124,128, 91,183,110,225,204,153, 51, 90,141, 70,115, 1,192, 69,211, +112,117, 11, 50, 83,225,156,251, 95,237,247, 81, 35, 47,226,168, 99,213,191,204,249,225, 68,139,202,238,246,212, 96,100,201,195, +135, 15,113,245,234, 85,171, 57,255, 37, 23, 22, 0, 26, 17, 66, 14, 21, 36,221, 44, 26,194,161,160,187,176,145,153, 21,172, 60, +167,186,203,231,243,105, 64, 64, 0, 41,152,158, 38,236, 77,242,157,148,148, 52,112,250,244,233,167,246, 29,248,133,127,112,188, + 20,217, 89,217,175, 26,224,236, 44,164, 39, 39,224,236,217,179,186,212,212,212,209,214,112,166,166,166,126, 58, 96,192,128,125, +187,119,239,118,204,204,204, 44, 20, 90,153,153,153, 96, 89, 22, 91,182,108, 73, 77, 78, 78,158,109, 13,103, 98, 98,226,136, 47, +190,248,226,192,174, 61, 7,248,167,103, 56, 64,105,138, 62,159,151,141,244,148, 68, 28, 57,114, 68,147,150,150, 54,169,148,235, + 99, 36,132,124, 54,104,208, 32,152,196,214,181,107,215, 38, 18, 66,214,154, 94,230,132,144, 42,159,127,254,249, 0, 51, 63,174, +149,127,247,168,195,244,244,244, 69, 77,154, 52, 89,153,154,154,250, 82,167,211,237,167,148, 22, 27,165,223,104, 52,142, 39,132, + 92, 93,187,118,109,127,103,103,103,183,164,164,164, 37,214,190,232,223,116,255,152,152,152,153, 13, 26, 52,152,149,146,146,178, +164,180,253,158, 63,127, 62,174, 96,191,165, 22,156,251, 24,128, 99,101,236, 99,192,171,208, 22,223, 89, 88,158, 67, 0, 14, 89, +216, 56,111,122, 27,237,135,209,104, 92, 86,187,118,109,137,193, 96, 56, 93,150, 63, 32,203,178,163, 38, 79,158, 28, 55,117,234, +212,122, 70,163,209,210, 58,208, 3,184, 68, 8,241, 76, 75, 75,243, 3, 96, 15, 0,124, 62, 63, 43, 43, 43,171, 92, 83,240, 20, + 68,124,239,234,236,223,190,219,254,109,107,134, 83,214, 88,151, 16, 2, 30,195,187,151,171, 84,109,181,212,146, 85, 12,103, 23, +103,255,246,221,146,227,163, 63,166,172,177, 46, 64, 88, 62,159,185,159,171, 84,109, 78, 13, 63,253,214,166,224, 25,234, 5, 55, + 30,193,248, 83, 63,125, 73, 0,160,253,199, 95,213,171,108, 15, 27, 67, 22,178, 80,208,150, 39, 38, 38,194, 1,200,180,148, 83, + 6, 24,116, 5, 62,209,153, 25, 25,144, 1,234, 68,128, 87,224,119, 73,146,147,146, 96, 99, 5, 95,225, 7, 35,160, 43,194,155, + 13, 64,108,114,231,204,200,201, 3, 44,143,107,248,175,180,104, 21,253, 93, 40,184, 40,165, 22, 47,120, 53,191,222,135, 0, 22, + 23,172,229,101,236,223,238,109,112, 54,241,128,127,187,106, 36,188,115, 0, 63, 3, 64,159,138,224,180,118,249,171, 57, 1,108, +211,106,181, 52, 63, 63,159,170, 84, 42,170, 84, 42, 41,128, 67,197, 28,115, 40, 33, 33,129,198,197,197,209,152,152, 24, 26, 21, + 21, 69, 1,236,180, 54,159,182,182,182, 63,246,237,219,215, 40, 16, 8,214, 84, 68,217, 29, 29, 29, 23, 55,110,220, 88,247,253, +247,223,211, 95,127,253,149,110,222,188,153,142, 31, 63,158,214,170, 85, 75, 99,111,111, 63,160, 60,156,238,238,238,115, 2, 2, + 2,210,183,108,217, 66,119,238,220, 73, 87,173, 90, 69,103,207,158,109,244,246,246, 78, 82, 40, 20, 29,203,195,233,234,234,186, +169, 69,139, 22,186, 77,155, 54,209,211,167, 79,211, 93,187,118,209,207, 63,255,156, 6, 6, 6,106,228,114,121,111, 75, 56, 1, +240,248,124,254,138, 49, 99,198, 36,121,122,122, 30, 43,178, 77, 22, 20, 20,116,107,208,160, 65, 9, 0,166,191, 43,247, 39,199, +201,113,114,156,111,206, 57,196, 11,158,237,171,192, 64, 47,126, 73,233,197, 47,105,187, 42, 96, 7,122,194,139, 2, 60,153, 80, +216,191, 85, 72,200,114, 33,208,159, 2,188, 98,151,226,242, 9,240, 36, 60, 94,159,230,141, 27, 47, 23, 2, 3, 76,251, 74,120, +188, 62,173, 66, 66,150, 11,120,188,193, 37,242,149,194, 73, 1,158,144,207,159,222,188,105,211, 21,124, 96,150, 41,237,253, 42, +228,241,231,157, 42,209, 16, 95,242,124,176, 43,100,165,113,150, 80, 31,163, 42,186,142,255,238,165,188, 55, 2,191,162,111,194, +127, 11,231, 63, 72,104, 85, 47,232,182, 57,100,182,204, 44,230,152,153, 69,246,217, 6,160,122, 57,235, 83, 90,145,101, 7, 80, +219,217,217,249, 68,245,234,213, 83, 43, 87,174,156,224,224,224,176, 27,128,247, 27,114, 6,187,187,187,255,236,230,230,246,204, +195,195,227,190,179,179,243,119, 0, 92,222,132, 83, 32, 16, 52,118,115,115, 59,239,231,231,151,229,235,235,155,236,236,236,188, + 7,128,155,181,156, 0, 60, 80, 76,163, 2, 64, 8,192,131,123,233,112,156, 28, 39,199, 89, 84,192,116,168,138, 37,237,171,192, +208,190, 10,140, 29,252,240,157,185, 64,233, 10, 72,203, 43,138,134, 1,226,162,251,151,201, 87, 6, 39, 5,120,205, 0,155,162, +199,116,246, 70,144, 37,156,255,102,161,101,202,103, 65, 59, 63,202, 60,223,252,242,152,200, 76, 78,178, 21,220, 13,246,175,224, +252, 7,117, 27, 62, 7,202, 14,246,102, 30, 65,190, 2,206,169,174,224, 50, 60, 0,240, 65, 5,115, 62, 2, 48,164, 34, 57,117, + 58,221, 13, 88, 56,239, 91, 25,121, 75, 44,197, 23, 46, 17, 28, 56,112,224,240,122,227, 96, 60, 9,204,104,239, 79, 86,243,141, + 96, 78,188,160,241,230,155,143,252, 17,248,216, 42, 78, 0,216, 90,204,244, 60,229,226, 51,227, 4,128, 43,192,159,102,119, 56, +246,134,238, 38,255,178,119,115, 34,128, 77, 86,197,209,226,192,129, 3, 7, 14, 28, 56,188, 61,156,126, 74,185, 15,177,127, 62, +142, 21,153,227,176,208,239,147, 0,104, 87,130, 42,179,120, 36, 5, 33,164, 93, 57, 84,223, 25,142,147,227,228, 56, 57, 78,142, +147,227,228, 56,255, 91,156,102,220, 37, 13,172,120, 82,132,239,173, 12, 24,169, 40, 16,203,167, 45, 43, 7,249,191, 52,108, 2, +199,201,113,114,156, 28, 39,199,201,113,114,156,127, 47,231,191, 90, 76,189,110,205,122, 77, 32,114, 93,135, 28, 56,112,224,192, +129, 3, 7, 14,111,128,210,172,110,156,208,226,192,129, 3, 7, 14, 28, 56,112,120, 3, 16, 66, 60,240,106,138,170, 99, 5,107, +206,162,197,129, 3, 7, 14, 28, 56,112,224, 80, 65,232, 66, 41,221, 84, 92,100,120,134,171, 27, 14, 28, 56,112,224,192,129, 3, +135, 55,131,201, 79,203,218,185, 14, 57,112,224,192,129, 3, 7, 14, 28, 56,148,130,210,124,180, 94, 27,117,120,236,216, 49,218, +165, 75, 23,194, 85, 25, 7, 14, 28, 56,112,224,192,225,109,224,223,168, 69,204, 44, 88,199,138, 6,167,230, 44, 90, 28, 56,112, +224,192,129, 3, 7, 14,111, 0,147, 69,171,160,219,240,181, 52, 78,104,113,224,192,129, 3, 7, 14, 28, 56,188, 1, 74,179,104, + 49,192, 43, 51, 29, 87, 77, 28, 56,112,224,192,129, 3,135,183,133,127,179, 22,161,148,110, 42, 88,254, 52, 93,146,105,212, 97, +235,130, 2,182,230, 46, 53, 7, 14, 28, 56,112,224,192,225, 45,224, 95,171, 69, 8, 33, 30, 5,221,134, 30,127,218,246, 87, 78, +193,195,129, 3, 7, 14, 28, 56,112,224,240,174,195, 20, 63,171,184, 56, 90,156,208,226,192,129, 3, 7, 14, 28, 56,112,120, 67, +161, 85, 52,173,208, 65,158, 19, 90, 28, 56,112,224,192,129, 3, 7, 14,127, 13,254,210,200,240,132,144,118, 28, 39,199,201,113, +114,156, 28, 39,199,201,113,114,156,239, 58, 76, 17,225,139, 90,183,184,240, 14, 28, 56,112,224,192,129, 3, 7, 14,111, 40,178, +204,125,179,204,255,115,115, 29,114,224,192,129, 3, 7, 14, 28, 56,252, 69,224, 44, 90, 28, 56,112,224,192,129, 3, 7, 14,111, + 0,211,136, 67,243,255,156,208,226,192,129, 3, 7, 14, 28, 56,112,168, 64,177, 85, 92, 58,215,117,200,129, 3, 7, 14, 28, 56, +112,224,240, 6, 40,234, 0,111,254,159, 0,104, 87,130, 50, 59, 99,197, 9,172, 30,125, 80, 22, 63,199,201,113,114,156, 28, 39, +199,201,113,114,156,239, 30,103, 89,220,214,232,143,127,146,208, 42,201, 25, 30,148,210,191,108, 1,208,142,227,228, 56, 57, 78, +142,147,227,228, 56, 57, 78,142,243, 93, 94, 0,120, 0, 24,101,182,120,152,182,113, 62, 90, 28, 56,252,219,113,128,240,144, 25, +224, 7, 74, 61,193, 19, 37, 34,241,193, 11,204,163,236, 27,115, 38, 7,249, 66,170,119,131, 65,146,138,228,251, 47,223,152,147, + 3, 7, 14, 28,222, 81, 20, 76, 38, 93,172,143, 22, 39,180, 56,112,248,183, 35, 53,208, 31,124, 44, 6, 3, 15, 80, 93, 4, 92, +130, 22, 3,120,248,198,156, 66,246,107, 24, 25,111, 80,221, 83,184, 6, 44, 1, 16,198, 85, 54, 7, 14, 28, 56, 88,135,191,221, + 25, 94, 32, 16, 36, 19, 66, 88,177, 88,124,176,184, 89,174, 57,112,168, 40, 16, 66, 60,164, 82,233, 65, 66, 8, 43, 20, 10,147, +223,201, 66,238,168, 45, 3, 99,252, 64,171,103,189,126,123,144,229,170,210, 24,253,193, 24, 58,227, 39,127,155, 55,226,228,147, + 14,249, 58,214,103,231, 77,149, 91,158,214, 80, 19, 20,111,198,249,199, 53,177, 23,137, 68,191, 17, 66,156,185, 59,244,221, 68, + 16, 33,239, 53, 20, 8,166,214, 36,228,125, 66, 8,225,106,132, 3, 39,180,254,102, 24, 12, 6,215,216,216, 88,178,121,243,230, +238,182,182,182, 17, 2,129, 96, 38, 33, 68,248, 95,169,112,133, 66,113,213,206,206, 46,217,222,222, 62,217,206,206,238, 78, 89, +233,239,168, 0,242,119,117,117,141,118,114,114,122,106,158,238, 90,183, 87,179, 26, 45,134,206,115, 14,238,217,234, 13,249,133, + 2,129, 96,166,157,157, 93,196,166, 77,155,186,135,135,135, 19,189, 94,239,250, 78, 86,102, 62,235, 6,134,215,230, 81,162, 74, +150,152,163,119, 11,141, 82, 41, 0, 94,107,104, 81,254,143,152,108,214, 13,160,239,223,139, 83,203,175,102,184,184, 93,122,161, +177, 5,195,180, 65, 62,113,127,227, 6,135, 97,198,178, 44,219, 94, 40, 20,126,198, 53,191,239, 38, 68, 12,211,252,106,247,238, + 95, 79,175, 83,103, 66, 32,208,173, 56,177, 69, 94, 97, 98,205,154, 53, 79, 16, 66,250, 87, 96,219,242,109, 96, 96, 96, 60, 33, +100, 18,119, 37, 56,252,205,239,181,250,166, 15,252,130,105,120, 60,172, 22, 90,125,171,144,230, 3,171,146, 11,253,170,144,220, +254, 85,137,114, 72, 85,114,185, 79, 21,242,126,121, 50,228,237,237,141,102,205,154,241, 98, 98, 98,164,147, 38, 77,154, 39, 22, +139, 35, 9, 33, 29,203,195, 37,147,201,110,203,229,242, 88,129, 64,240, 90, 94,228,114,249,109, 27, 27,155, 88,129, 64,208,214, + 60,221,214,214,246,170,157,157, 93,178,173,173,237,157, 18,132,208,109, 59, 59,187,100,133, 66,113,219, 60, 93, 32, 16,180, 85, + 40, 20,113,182,182,182, 69,211,223,183,181,181,141, 45,154, 94, 18, 4, 2,129,119,108,108,172,107, 92, 92,156,171, 72, 36,114, + 51, 79,143,137,137,113,141,141,141,125, 45,221, 26, 8, 4,130,247,109,108,108, 98,229,114,249,237,226,210,139,150,169, 36,152, +213,221,251,150,164, 91, 43,178, 58,116,232,112, 57, 49, 49,209,199,222,222,222,222,124,155,163,157,125,199,159,183,172,155,210, +163,115,135,177,174, 65, 31,214, 46, 39,127, 71,177, 88, 28, 57,121,242,228,121,113,113,113,210,198,141, 27,243,132,194,119, 84, +199, 31, 8, 18,130,176, 45, 89, 74, 93, 30,199,231,187,116,233,222,151,127, 55, 86,237,162, 55, 26, 29, 1, 94,107,108,171, 44, + 46, 23, 39, 95, 31,194, 82,234,246,123,148,192,165,205, 71, 19,120,103,163,248, 46,122,163,209, 9, 12, 90,149,139,243,143,107, + 35,224,241,120, 83, 86,172, 88,193, 0, 24, 79, 8, 17,253,151, 26,226,198, 94,196,171,109,117,254,205, 6,158,164,121, 5, 54, +238,193,114,185,252, 54, 33,196,255,159, 82, 78, 45,203, 62,217,243,242,229,201,193,213,170,117,157, 94,167,206,240,162, 98,171, +224,247,244, 37, 75,150, 12,121,244,232,145, 75,149, 42, 85, 70, 19, 66,152, 10,168,139, 85, 75,150, 44,153,246,232,209, 35, 79, + 63, 63,191, 5, 21,193,201,225,159,165,225, 1,180, 1,208, 5, 64, 91, 0,141, 10,126, 55, 44, 88,186,224, 85, 20, 5,243,117, +195,130, 99, 77,219, 27,151,192,209,165,152,227, 26,154,165,155,255, 47,250,219,132,250, 5,235, 46, 5,163, 13,187, 20,110,161, +148,226,232,209,163,212,124, 93,116,233,231,135,249, 19,154,121,169, 30, 31,217, 69,149,177, 47,105,102,248, 93,122,119,211, 55, +116, 66, 67, 23,213,192, 42,248,214, 74,207,124, 74, 41,165, 59,119,238,164,103,207,158,165, 89, 89, 89, 52, 44, 44,140, 54,106, +212, 72, 45,147,201,126, 7,224,103, 13,159, 66,161, 72,254,253,247,223,105,135, 14, 29,178,109,108,108,150, 3, 96, 40,165,176, +181,181, 77,190,114,229, 10,237,208,161, 67,182, 66,161, 88, 5,128, 71, 41, 69,239,222,189, 83, 40,165,212,197,197, 37,161, 56, +190, 30, 61,122,100, 82, 74,169,157,157, 93,114, 65,126,121, 10,133, 98,213,184,113,227,148,183,110,221,162, 14, 14, 14,166,116, +198,214,214,118,249,248,241,227,149,161,161,161,133,233,101, 45,142,142,142,177, 70,163,145, 30, 57,114,132,186,186,186, 22,230, +193,193,193, 33,214,104, 52,210, 67,135, 14,149,152,183, 82,234,148,177,177,177, 89, 54,120,240,224,220,168,168, 40,234,228,228, +148,108,150,190,124,232,208,161,185, 49, 49, 49,212,217,217,217,162, 60, 58, 57, 57, 37, 95,189,122,149,246,234,213, 43,199,188, + 78,157,156,156,146,175, 93,187,102, 74, 95,102, 74, 47,109,241,244,244, 28,237,234,234,154,224,234,234,154, 96,111,111,191,200, +195,195, 35, 41, 53, 53,149, 82, 74,105,213,170, 85, 83, 40,165,112,169,243, 97,179,234,205,135,204,115, 13,238, 62,121,195,254, +107, 55, 46, 62, 76, 79,173,211,126,236, 50,187, 58, 61,236,172,168, 3, 63,137, 68,242,123,203,150, 45,213, 81, 81, 81, 84,169, + 84,210,219,183,111,211, 75,151, 46,209,199,143, 31,211,130,251,238,221, 26,233,178, 46,200,155,110, 12,216, 19, 54,215, 39,252, +226,146, 78,122, 26,117,150,238, 26,238,162,191, 48,217, 43,130,254, 16,248, 63,186,177,102,165,114,113,254, 80,115,215,253,217, + 62, 79,214, 44,152,168,143,142,142,166, 83,135,118, 50,156,154,224,245,130,110, 8,220, 95, 46,206, 63,174,209,128, 15, 63,252, + 80, 25, 19, 19, 67,131,130,130,242,120, 60,222,136,255,202,136,164, 70,158,240,106,231, 47,138,191,191,115, 42,219, 45, 88,150, + 94,223, 3,205, 43, 96,148, 83,176,171,171,107,218,182,109,219,168, 66,161, 72, 1,224,255, 15, 25,125, 69, 2,129,238,219,235, +212, 57,196,246,233, 99,220, 94,167,206,161, 64,160, 59, 94,133, 19, 34, 0,102, 44, 93,186, 52, 84,175,215,135,110,221,186, 53, +180,123,247,238,161, 0,166,190,225, 57,191,255,246,219,111,169, 94,175,167, 91,183,110,165,221,187,119,167, 0, 86, 91,122,188, +141,141, 77,245,218,181,107,239, 8, 10, 10,138,169, 91,183,174,182,102,205,154,249,254,254,254, 81,193,193,193,219,196, 98,177, + 31, 55,170,238,239, 89,202,208, 34,141,102,204,152, 49, 19, 0,157, 49, 99,198, 76, 74,105,151,130,118,189,139,249,239,162,107, + 74,105, 59,243,255,197,113,152,150,226, 56,139, 59, 71,145,223, 69, 71, 29,122, 20,252, 31, 85,184,205, 84,168,163, 71,143,182, + 58,122,244,232,133,162,133,235, 91, 5,205, 38, 52,243, 82,171, 83, 19,233,195,111, 62,163,231,218,120,211, 43,173,221,233,211, + 41, 31,210,196,157,171,232,167,245, 28, 84,125,170,160,141,181, 66,235,224,193,131,244,208,161, 67,244,248,241,227,244,225,195, +135, 52, 61, 61,157,238,220,185,211,232,228,228,164, 22,139,197, 75, 0, 72, 45,225,179,181,181, 77,166,148, 82,141, 70, 67, 23, + 45, 90,148,175, 80, 40,238, 0,112, 43, 16, 74, 52, 43, 43,139, 46, 89,178, 36,223,206,206,238, 62, 0, 79,103,103,231,216,151, + 47, 95, 82, 55, 55,183, 98,197,140,131,131, 67,242,147, 39, 79,168,131,131, 67, 50, 0, 47, 7, 7,135,135,135, 15, 31,214, 81, + 74,105, 92, 92, 28,117,116,116, 76, 6,224,230,228,228,116,247,232,209,163, 58, 74, 41, 77, 72, 72,160,142,142,142, 22, 11, 45, +181, 90, 77, 79,157, 58,245, 90, 30, 76,233, 39, 78,156,120, 77,128, 89, 80,159,110,118,118,118,161,123,247,238,213, 26,141, 70, +250,240,225, 67,106,103,103,151, 12,192,205,222,222,254,206,254,253,251,181, 70,163,145,134,135,135, 91, 44, 6, 43, 87,174,156, + 66, 41,165, 6,131,129,110,216,176, 65, 99,170, 83, 83,186, 86,171,165,235,215,175,215,216,218,218,134, 2,112, 43,141,203,217, +217, 57, 65,171,213,210,172,172, 44,218,184,113, 99,229,149, 43, 87,104, 78, 78, 14,165,148,210, 2, 62, 4,180, 26,241,213,141, +103,202,156,143,167,173,219,231,215,104,224, 55, 39,111,198,199,253,248,235,237, 80,231,224, 30,157, 44, 40,191, 84, 40, 20, 46, +241,240,240,200, 63,123,246,172, 81,171,213,210,231,207,159,211,171, 87,175,210,235,215,175,211,219,183,111,211,135, 15, 31,190, +123, 66,107, 63,120,116, 99, 64, 15,186, 49, 32,116,219, 96,231,180,220, 59,187, 41, 61, 61,137,190,248,170, 10,157,219, 73,145, +203,110, 12, 8,165, 27, 3,251,208,249,173,248, 86,113,110,170,217,141,110, 12, 8,253,182,175,111,250,221,208, 91,244,194,133, + 11,116,253,170,165,116, 66, 59,175, 60,118, 99, 64, 40,253,161,102, 47,171, 56,205, 22,177, 88,252,236,242,229,203,244,226,197, +139,116,193,130, 5, 84, 38,147,197,188,121, 61,212, 20,210, 31,252,125,233,102,255, 86,116, 75, 13, 15,122,190,124,121,251,171, + 69, 86,123,127, 81, 92,218,221, 95, 41,205,120, 78,147,150, 7,209, 78, 1,130, 55, 18, 91, 5, 34, 43, 53, 42, 42,138, 38, 37, + 37,209,149, 43, 87, 82, 91, 91,219,127,180,216, 10, 0,122, 0,152,185,108,217,178, 66,145,181,110,221,186,208, 7, 15, 30,132, +250,248,248, 28,127,131,115,173, 94,182,108, 89,161,200, 90,183,110, 29,125,240,224, 1,245,245,245,141, 45,235,216,193,131, 7, +203,154, 53,107, 22, 58,104,208, 32,213,182,109,219,104, 84, 84, 20,189,127,255, 62, 93,182,108, 25,157, 55,111, 30,253,233,167, +159,104,175, 94,189,242, 26, 55,110,124,163, 79,159, 62, 18, 43,243,198,167,148,138, 10, 22, 1,165,212, 36, 52,249, 0, 4,166, +143,127,110,121, 93,104,149,164, 69, 74, 18, 83, 37, 9,172,162,219, 74, 17, 98,165, 10,182,178,206, 87, 84, 84, 21,183,152,155, + 86,207,119,233,210,229, 79,190, 49,124,138,133,163, 62,255, 74, 18,185,109, 37,146,247,174, 5, 47, 43, 25,130,220,116,104, 46, + 31,131,254,242, 97, 12,105,218, 84, 42, 37,228,107,107,109,128, 18,137, 4, 82,169, 20, 98,177, 24, 89, 89, 89,120,241,226, 5, +154, 53,107,198,220,190,125, 91, 50,106,212,168, 73, 82,169, 52,134, 16,210,211, 2,115, 49, 0,224,234,213,171, 24, 57,114,164, +120,199,142, 29,117, 93, 92, 92,238, 25,141, 70, 17, 0,132,135,135,163, 95,191,126,226,221,187,119,215,242,244,244,188,163,211, +233,100, 98,177, 24, 60, 30,175, 68, 62,145, 72, 4,189, 94, 47,174, 81,163,198,253,123,247,238, 5,119,237,218, 85, 16, 29, 29, +141,151, 47, 95, 66,175,215,139,252,253,253, 31,220,185,115,167,110,151, 46, 93, 4,177,177,177,136,142,142,134,165, 62,159,132, + 16,104,181, 90,136,197, 98, 48, 12,243, 90,186, 70,163,129, 72, 36,178,152, 75, 32, 16,188, 31, 24, 24,248,224,222,189,123,245, +123,244,232, 33,188,117,235, 22,226,226,226, 96, 52, 26, 69, 53,107,214,124,112,239,222,189,122,221,187,119, 23,222,191,127, 31, +201,201,201,175,157,175, 12, 63, 26, 0,192,189,123,247, 48,104,208, 32,209,111,191,253, 86,207,195,195,227,190,193, 96, 16, 1, +192,131, 7, 15,208,175, 95, 63,209,201,147, 39,235, 87,170, 84,233,126, 25, 93,137, 60, 0,208,235,245, 24, 61,122,180,220,214, +214, 22,177,177,177, 96, 89, 22, 70,163, 17, 0,144,158,153,254,224,222,131,135,225, 67, 6,244,109,165,214,105, 52,215,110,222, +126, 92,181,178,175, 55, 33,180,114, 25,117,217, 83, 38,147,197,124,251,237,183,147, 35, 35, 35,197, 1, 1, 1,204,253,251,247, +145,149,149, 5,145, 72, 4,137, 68, 2,177, 88, 12,129, 64,240,238, 25,209,115,130,156,192,162,125,116,170, 86, 44,182,247, 86, +216,120,248, 3, 49, 23, 81,197, 69, 12, 30,195,147,220,122,169,146, 3,180, 61,124,210,156,172,227,100,219,191, 76,209,138,245, +142,181,108, 60,189,125,144,158,158,142, 74, 85, 3,145, 47,114, 17, 93,125,158,103, 3, 98, 37,231, 31,215, 42,164, 70,141, 26, +238,213,171, 87, 71, 90, 90, 26,234,215,175, 15, 7, 7, 7, 7, 66, 72,251,114,215,193,182,202, 98,228,160, 57,192, 44,135,145, + 44,128,158,191, 24,207, 83,235, 99, 83,131,127,204, 5,111,236, 69,188,108,109, 68,215,119,239,217,235,229,228, 83, 19, 56,246, + 49,220,236,197,216, 50,182,190,163,139,157,248, 80,121,186, 17, 9, 33,193,110,110,110,103,111,220,184,225, 44,145, 72,112,231, +206, 29, 4, 5, 5, 97,229,202,149, 46, 14, 14, 14, 23,255, 9,221,136,148, 82, 26, 14, 28,249,246,254,253,173, 59, 34, 34,142, + 14,174, 86,173,235, 32,127,255, 69, 99,250,247, 31, 49,113,226, 68, 44, 93,186, 20,135, 14, 29, 66,243,230,205, 49,106,212, 40, +125, 76, 76,204,246,114,118, 23,174, 93,190,124,249,132, 73,147, 38, 21,229,212, 69, 71, 71,127, 91,218,177,193,193,193,222,207, +158, 61,139,159, 50,101, 74,253, 29, 59,118, 72,101, 50, 25,178,178,178,176,121,243,102,204,156, 57, 19,132, 16, 80, 74,241,211, + 79, 63,201,134, 15, 31,222, 40, 34, 34, 34,190,114,229,202,150,184,117, 16, 0, 18, 0,178,130, 69, 14, 64,182,123,247,110,187, + 30, 61,122,216, 22,164, 73, 1, 72, 9, 33, 98,112, 40,138, 98,181,136,217, 53, 63, 90,228, 94,235, 90, 52,173,232, 54, 74,105, +215,210, 56,172,188,183,139, 59,223,177,162,145,225, 95,123,167,154,253,110,125,236,216,177, 11,127, 34, 5,234,184,251, 5, 32, +251,244,126, 72,249, 4, 82, 94,193,194, 39, 96, 94, 60, 64, 37,137, 0,122, 74,131,203, 35,180, 76, 98, 75, 42,149, 66, 40, 20, + 66,169, 84, 66,175,215, 99,214,172, 89,226,211,167, 79, 59, 49, 12,243,191,178,120,204, 5,211,211,167, 79, 81,179,102, 77,114, +228,200, 17,183,241,227,199, 75, 1, 64, 36, 18, 33, 59, 59, 27,213,171, 87, 39, 39, 78,156,112,157, 61,123,182, 77,105, 98,134, + 16, 2,161, 80,136, 73,147, 38, 73,111,222,188,233,232,233,233,137, 23, 47, 94, 32, 35, 35, 3, 54, 54, 54,152, 52,105,146,244, +198,141, 27, 46,158,158,158,136,138,138, 66,118,118, 54,108,108,108,172, 22, 90, 66,161,240,181, 99, 8, 33,208,233,116, 16,137, + 68, 22, 11, 34, 59, 59,187, 93,161,161,161, 46,118,118,118,184,127,255, 62, 12, 6, 3,236,236,236, 48, 97,194, 4,105,104,104, +168,139,189,189, 61,194,195,195, 77,150, 63,171,242, 8, 0, 44,203, 34, 60, 60, 28,149, 43, 87,198,197,139, 23, 93,199,140, 25, + 35, 49,165, 63,127,254, 28,222,222,222,184,120,241,162,171, 92, 46,223, 85, 18, 23,203,178, 72, 76, 76,196,163, 71,143,240,226, +197, 11,164,166,166, 34, 45, 45, 13,185,185,185, 48, 24, 12,175,252,236,114,115,142,237,222,119,228,158, 84, 42,149, 5,249,215, +240,121,240, 48, 44, 69, 42,149,202,124,125,124,252, 9, 89,192,148,146,207,255, 69, 68, 68, 56, 13, 31, 62, 92,248,236,217, 51, + 36, 36, 36, 64, 32, 16, 20,222, 91,166, 69, 44,126,199,218, 50, 66, 8,136,182, 6, 8,169,127,253, 69,158, 99, 72,215, 1, 66, +188,252, 13, 96,245, 0,195, 71,235, 58,222,252, 67, 15,242,220, 64, 81, 7, 26, 4, 2, 22, 92,120, 66, 8,160,171, 14,144,247, + 78, 61, 51, 56, 53,255,112,172, 48, 62, 62, 30, 66,161, 16, 98,177, 24,245,223,239,205,223,125, 79,239, 14,130,186,208, 33,192, + 34, 78, 51, 72,165,210, 47,231,205,155, 39, 55,231, 28, 49, 98,132,220,206,206,110, 94,185, 69, 86,158,172, 41, 12,116,210,163, +120, 85,229, 69,199,146,106, 70,164,168, 3, 64,233, 20, 64, 95,239, 77,197, 22, 33,164,181, 68, 34,121, 73, 8,105,241, 70, 34, + 75, 33,186,182,103,207, 94, 47,199, 74,175, 68, 22, 12,249,128, 64, 10,119, 23,123,108,153,220,198,209,197, 94,106,149,216, 42, + 16, 89,191, 95,191,126,221, 89, 34,145, 32, 52, 52, 20, 66,161, 16, 18,137, 4,181,107,215,198,198,141, 27, 93, 28, 29, 29,255, + 81, 98,107,201,253,251,219, 22, 63,122,244,116, 70,112,112, 96, 79,185,220,113,220,160, 65,118,179,103,207, 62,122,248,240,225, +173, 93,186,116, 73,187,121,243,230,119,148,210,253, 86, 94, 31, 66, 8, 89,183, 98,197,138,113, 38,225, 54,123,246,236,159, 14, + 31, 62,188,184, 75,151, 46,137, 55,111,222,156, 66, 41, 93, 87, 26,135, 82,169, 60, 60,103,206, 28,187, 15, 63,252,208,244, 31, +151, 47, 95,198,246,237,219, 33,151,203, 95,219,183,123,247,238, 24, 57,114,164,131, 86,171, 45,245,157,228,230,230,214,246,250, +245,235, 65, 0,132, 0,196, 38,161,245,240,225, 67,251,156,156, 28,123, 27, 27, 27,123, 15, 15, 15,133, 73,108,125,248,225,135, +246, 2,129,160, 5, 56,160, 44, 45, 98, 46,116, 44, 73, 43,239,254,150,138,173, 34,255, 19, 75,154,231,240, 53,161,213,165, 75, +151, 11, 0, 90, 22,183,147, 46, 35, 25, 98, 24, 33,229, 17,200,120,102, 98, 11, 44,248,217, 41, 40,207, 0,222,162, 47, 67,169, + 84, 10,137, 68, 2,129, 64, 0,189, 94,143,236,236,108,171, 68,129,173,173, 45,108,108,108,160, 86,171, 97, 48, 24, 32,145, 72, + 76, 98, 4,182,182,182, 16, 8, 4,133, 47,225,162,214,164,162,214, 28,161, 80, 8,185, 92,142,196,196, 68, 68, 71, 71,131,101, + 89,216,216,216, 64, 46,151, 67, 36, 18, 33, 33, 33, 1, 9, 9, 9,160,148, 66, 46,151, 67, 46,151, 91, 44,142, 0,192,104, 52, + 66, 36,250,179, 31,176, 94,175,183,202,162,101, 48, 24,240,248,241, 99,196,196,196, 64, 34,145, 20,150, 85, 44, 22,227,249,243, +231, 72, 74, 74,130, 76, 38,131,173,173, 45,236,236,236, 44,230, 53,149, 69,161, 80, 64, 42,149, 34, 51, 51, 19, 42,149,170,176, + 78,109,109,109, 33,151,203,145,157,157,141,148,148,148, 82,203,110, 52, 26,145,144,144,128,212,212, 84,196,198,198, 34, 45, 45, +173, 80,108,177,236,155,199,191,188,120,241, 34, 94,188,120, 97,234,154, 42,188,190,230,107, 83,190,223, 25,172, 15,182,131, 94, +208, 33, 77,169, 23,167,234,132,118,110,193,237,128,151, 39, 0,134, 15, 72, 28,208,164, 86, 21, 68,103, 26,229, 79,146,181, 18, + 16,116,196, 58,127, 7,139, 56,141,130,246,169,185,122,113,148,206,197,182,102,157, 6, 72, 78, 78,134, 88, 44,134, 88, 44,198, +123,205,219,225,101,186, 81, 22, 22,175,150,129,162,131, 69,156,127, 60,163, 85,109,108,108,154,182,104,209,130,152,115,118,238, +220, 25,132,144,218,132,144, 64,171,202,191,166,154, 8, 58, 89, 19,240,233,164,176, 68,149,231,161,135,249,254,221,122,246,118, +252,254, 76, 74,205,199, 73, 26, 63, 80,253,231,160,186, 6,229, 21, 91,132,144, 86, 10,133,226,232,154, 53,107,252, 36, 18,201, + 9, 66, 72, 72,121,120,108,164,188, 13, 95,142, 27,224,229, 96, 18, 89,122, 21,192,151, 2, 2, 41,192,151,194,221,213, 25, 95, +143,108,239, 40,147, 8, 14, 90, 33, 88,119,175, 91,183,206,165,168,200, 50, 45,245,235,215,199,220,185,115, 93, 28, 29, 29,119, +189,229,111,129, 14,246,246,246, 59,218,181,107,119, 61, 65,161, 24,153,216,160,129,232,119, 59,187,236,182,217,217,118,190, 15, + 31,234, 2,128, 7, 0,214,199,198,198,118,178, 84,100, 17, 66,250,219,217,217,133,182,107,215, 78,167, 80, 40, 98, 86,174, 92, +249,233,248,241,227,177,116,233, 82,204,153, 51,103, 51,128, 79, 40,165,179, 98, 99, 99, 61,203, 18, 89, 0,144,148,148, 52,112, +250,244,233,105,105,105,105, 0,128,218,181,107, 35, 43, 43, 11, 83,167, 78,197,103,159,125, 6, 0,168, 87,175, 30, 40,165, 72, + 78, 78,198,242,229,203,147,147,146,146,134,149,209,182,199,238,223,191,191,145, 78,167,243, 46,232, 30, 20,103,101,101,217,102, +100,100, 40,116, 58,157,156,101, 89,185,189,189,189, 13, 0,217,144, 33, 67,248, 97, 97, 97, 53, 13, 6, 67, 60,167,173,254, 64, +105, 90,164,156, 56,246, 38,150,171,226, 44, 98, 37,220,159,165, 91,180,186,116,233, 66,204,215,175, 89,140, 8,238,199,220,190, + 8,199,224, 6,175, 89,179,100, 60, 2,169,173, 29, 94,198, 70, 67, 8,242,200,218, 66,152,132, 85, 81,177,149,157,157,141,177, + 99,199,170, 63,250,232,163,116,150,101,123, 91, 42, 10,236,236,236, 96,103,103,135,176,176, 48,218,171, 87,175,228,149, 43, 87, +170,205,133,214,211,167, 79,105,135, 14, 29, 82,230,205,155,167, 44, 77,104,153, 44, 90, 75,150, 44, 81,183,110,221, 58,245,209, +163, 71,212, 36,166,108,108,108,176,124,249,114,117,155, 54,109,146,111,221,186, 69, 77,105,214, 88,180, 24,134, 41, 20, 90,230, +199, 48, 12, 3,150,101,173, 18, 90,121,121,121, 3,187,116,233,146, 28, 30, 30, 78, 77,229,180,179,179,195,202,149, 43,213,237, +219,183, 79,126,244,232, 17, 53,165,217,218,218, 90, 44, 6, 77,231, 87, 40, 20,176,181,181, 69, 88, 88, 24,237,208,161, 67,242, +234,213,171,243,205,211, 31, 63,126, 76,187,119,239,158,156,155,155, 59,176, 52,139,214,139, 23, 47, 10, 45, 88,249,249,249, 72, + 75, 75, 67,108,108,108, 97,215,161, 90,110,219,105,192, 71,221,234,170,213,106, 85,216,211,103, 49,181,107, 5,185,170,213,106, + 85,116, 76,204, 83, 74,231,177,165, 60, 8,189, 63,254,248,227,244,153, 51,103,170,115,114,114,138, 21, 89,166,245, 59, 5,134, +117, 7,161, 45, 46, 61, 83,218,183,239,214, 79, 68,146,110, 2, 58, 37, 32,118, 0,196, 14,224,203,157,240, 65, 72, 61,222,182, +235, 57,238,160,108, 51, 8,197,222,101,114, 10,168, 27,192,134,156,126,154,239,208,162,207, 4, 81, 70, 70, 6,120, 60, 94,161, + 40,146,201,229,104,219,115, 8,243,211, 77,141, 59, 64,155,131,240,188, 45,205,174, 72, 36,154,246,229,151, 95, 10, 51, 51, 51, +193, 48,204, 31,156, 50, 25,198,140, 25, 35,182,181,181,157, 99,113,217, 15, 4, 9, 33, 16, 55, 1,232,103, 79,146,242, 61, 15, + 63, 80, 7,124,190,100,139, 52,184, 94, 35,140,110,237, 42, 93,114, 44, 37,248, 94,172,186, 10, 96,156, 12,131,246, 61,107,197, + 22, 33, 36, 68,161, 80, 28,187,125,251,182,172,115,231,206, 88,190,124,185, 92, 42,149,158, 32,132, 88,221,240,231, 41,141,227, + 23,174,254, 57,249,254,119, 29, 1, 93,222, 43,129,101,182,164, 40, 89,204,221,114, 54, 91,175,167, 3, 44,229, 84,171,213, 67, + 63,249,228,147,244,131, 7, 15,254, 73,100, 73, 36, 18, 68, 70, 70, 98,209,162, 69, 25, 25, 25, 25,195,222,166,200, 26, 63,126, +252,162,184,184,184,128,211,167, 79,243, 83, 83, 83, 93, 87,252,248, 99,246,129,236,236,140,197, 15, 31, 62,153, 85,171, 86,141, + 25,117,234, 12, 43, 41,244, 67, 73, 34,107,220,184,113,187,227,226,226,234,159, 57,115, 70,144,154,154,234, 61,110,220, 56, 44, + 91,182, 12,115,230,204,217, 8, 96, 52, 45,112,150,177, 20, 90,173,246, 73,102,102,102,215,142, 29, 59,102,101,102,102,162, 78, +157, 58,232,214,173, 27,220,221,221,225,233,233,137, 30, 61,122,192,223,223, 31,233,233,233, 24, 48, 96, 64, 70,106,106,106, 71, + 74,233,139,210, 56,211,211,211, 35,118,237,218,245,116,194,132, 9,245,227,226,226,106, 2,112,202,205,205,149,231,230,230,138, +181, 90,173,212,193,193,193,161, 94,189,122,206,163, 70,141,178,185,123,247,110,205,184,184, 56, 37,128,104, 78, 94, 21,138,172, + 18,181, 8,128,212, 2,193,163, 45,178, 78, 45, 99,155,165,199, 22,251,219,130,253, 94, 19, 91,230,203,159, 44, 90, 37, 65, 7, +204,221,190,127, 91,190,200,167, 58,236, 2,234, 66, 38,145, 64, 42, 18, 65,234,224, 4, 13,203,226,199,200, 36, 85, 30,165,115, +172,173, 80,243,110, 67,137, 68, 2, 30,143,135,245,235,215, 27,154, 54,109,154,127,246,236,217, 53, 42,149,202,135, 82,250,171, + 53,162, 96,245,234,213,170, 73,147, 38,221, 75, 73, 73,169, 43,145, 72,180,166,244, 53,107,214,168,134, 12, 25,242, 48, 46, 46, +174,190, 76, 38, 83,149,228,159,101, 46,180,196, 98,177, 38, 37, 37,165,209,136, 17, 35,194,215,175, 95,159, 39,147,201, 32,151, +203, 33, 22,139,181, 41, 41, 41,117, 63,253,244,211,123,203,150, 45, 83, 73,165, 82,200,229,114,171,186,229, 40,165,127, 18, 84, +230,233,150, 66,175,215,159, 77, 73, 73,169, 59,105,210,164,187,223,127,255,125,158, 73, 0,153,231,113,197,138, 21, 42, 27, 27, + 27,171, 44, 90,166,253,228,114, 57, 86,173, 90,165,154, 48, 97,194,189,148,148,148,186, 98,177, 88,107,150,158, 55,126,252,248, +187, 41, 41, 41,117,245,122,253,217, 82,190,240,140, 57, 57, 57,224,243,249,120,248,240,161, 70, 40, 20,130, 97, 24, 60,127,254, +188, 80,104, 57, 58, 58, 6,213,173, 93, 43,240,231,221,251, 47, 72,133, 98,113,211, 70,239,213,124, 17, 21, 29, 71, 41,137, 42, +227,139,227,215,252,252,124,159,203,151, 47,175,233,216,177, 99,254,230,205,155, 13,124, 62,255, 79, 47,159,119, 79,104, 65, 6, + 2,233,179, 20,141, 66,194, 24, 8,158,254,250, 74,100, 73,236, 1,137, 3, 32,113,128,151,151, 55,110, 70,170, 20, 96, 32,130, +209,130, 24, 98,148,202, 65, 32,123,152, 12,133, 64, 36, 37, 73, 73, 73,133,130,200,180,248, 85,175,137, 59,209, 74, 27, 16, 42, + 6, 15,214,132, 32,233,234,228,228,196, 79, 76, 76,252, 19,103, 80, 80, 16, 79,175,215, 91, 30,218, 37,193,232, 1,176,227,158, + 38,229,123,252,114, 47, 47, 96,242,226,159,164, 82, 99, 22,112,123, 53,130,171,122, 98,114,159,122,162,217,135, 83,131,111, 69, +169,170,130, 71, 71,131, 85,186, 88, 33, 16, 90, 40, 20,138, 19,183,110,221,146, 41, 20, 10,188,120,241, 2,141, 26, 53,194,166, + 77,155,100, 50,153,236, 56, 33,164,181, 53,151,233,122, 18,141, 86,230, 26,155, 78,219, 31,147,116, 63,209,240,154,200, 74,205, +163,248,228,219,195, 89,153, 57,249,189,175,197,148,252,252, 20,115,207,223,205,202,202,234, 48,103,206,156,244,212,212,212,215, +238,241,232,232,104,147, 32,104, 77, 41,125,244,182,110, 79, 59, 59,187, 65,139, 23, 47,198,173, 91,183,208,185,115,103, 92,188, +120, 17, 25, 25, 25,216,115,226,196,179, 93,207,158,205, 50,249,108, 21, 23,250,161, 36,216,218,218,126,190,120,241, 98,220,190, +125,187,144, 51, 61, 61, 29,139, 23, 47,142, 3, 48,214, 90,145,101, 66,114,114,242,205, 39, 79,158,116,172, 83,167,206,227, 53, +107,214,196,121,120,120,176,163, 70,141,194, 39,159,124, 2, 23, 23, 23,227,170, 85,171, 98, 66, 66, 66, 30, 70, 68, 68,180,203, +203,203,123, 96,193,245,161,105,105,105, 87, 55,109,218,116,253,253,247,223,151, 13, 29, 58,212,229,208,161, 67, 78, 42,149,202, + 83, 44, 22,187,106,181, 90,209,227,199,143,121, 7, 14, 28,112, 15, 11, 11,139, 84,171,213, 55,203,155,247,255, 32,110, 21, 88, +167,206, 20, 89,223, 42, 99,155,165,199,150,244,187,172,253,204,175,255, 38,243,197,124, 67,153,203,160,170,152, 63,166,150, 66, +117,117,112, 19,154, 52,170, 5, 77,238, 87,147, 94,110,229, 72, 71, 84, 35,121, 67,203, 25,222, 33, 62, 62,158, 38, 39, 39,211, +244,244,116,186,119,239, 94,234,238,238,158,167, 80, 40,172, 14,239,224,238,238,158,156,147,147, 67, 27, 54,108,152,225,226,226, + 82, 24,138,192,195,195, 35, 57, 47, 47,143, 54,105,210, 36,195,213,213,117, 21, 10, 70,120,120,123,123,199, 82, 74,169,175,175, +111, 66, 73,124, 6,131,129,186,187,187,155, 66, 36, 8, 28, 29, 29,127,104,220,184,113, 70,114,114, 50,245,240,240, 40, 12,157, +224,226,226,178,188, 81,163, 70,175,165, 91,144,223,216,184,184, 56, 26, 23, 23, 71, 43, 85,170,148, 96,158, 30, 29, 29, 77,163, +163,163,169,183,183,183,213,225, 29, 92, 92, 92,150, 21,205, 75,121,243,232,227,227,147,172, 86,171,105,179,102,205, 94,171, 83, + 31, 31,159,228,252,252,124, 83,186, 69,225, 29,164, 82,233,104,137, 68,146, 32,145, 72, 18,196, 98,241,162,202,149, 43,167,236, +219,183,143,174, 90,181,138, 42, 20,138, 87,225, 29,130,186, 55,173,222,108,216, 44,151,160, 30,159,191, 73,120, 7,133, 66,241, +187,187,187,123,222,129, 3, 7,168, 70,163,161,122,189,158,154,128,119,105,212,225, 38,255,234,244,135,192,195, 17, 11,253,194, + 38,181,148,229, 63,248,186, 46,165,255,251,144,210,227,159, 80,122,118, 26,189,185,113, 20,109,230, 39, 54, 94,153, 90,233, 41, +221, 16,240,139, 69, 33, 25, 54,213,174, 78,127, 8, 60,254,108,129, 95,216,208, 16,207,252, 31,215,175,162, 55,110,220,160, 15, + 31, 62,164, 47, 94,188,160,199,127,221, 71,155, 85,149,189,226,252, 33,240,176, 53, 97, 30, 0, 52, 23,139,197,202,149, 43, 87, +210,235,215,175, 23,114, 30, 62,124,152,202,100, 50, 21, 96,225,168,101,128,208, 31,130,122, 26,214, 7, 92,154,221,222, 38, 55, +253,232, 52, 74, 31,108,163,116, 83, 48,165, 91, 27, 83,186,175, 11,165, 71,134,209,235,171,250,208,230,126, 66, 61,221, 16,112, +145,110, 12,106,111,105, 62, 5, 2, 65,206,193,131, 7,105, 66, 66, 2,189,120,241, 34,189,125,251, 54, 13, 15, 15,167, 49, 49, + 49,244,216,177, 99, 84, 32, 16,228, 3,176,122, 84, 99, 99, 55,248,182,171, 33, 76,188,183,164, 57,165,135, 6,208,212, 93,131, +104,215, 90,138,140, 38,149,248,239,191,193, 72,187,122, 78, 78, 78,105,199,142, 29,163,145,145,145,244,194,133, 11,212,213,213, + 53, 13, 64,240,219,190, 63,219,181,107,119,131, 82, 26,218,185,115,231, 80, 0,191,181,107,215, 46,244,229,203,151,161,141, 26, + 53,186,142, 82, 66, 63,148,198,217,182,109, 91, 29,165,148,118,238,220,153, 2, 72,104,215,174, 29,125,249,242, 37,109,212,168, +145,182,130, 70, 73,242, 0, 12, 19, 8, 4, 63, 58, 58, 58,158,115,112,112, 56,203,227,241, 54, 1, 24,108, 73, 59, 87, 10,167, + 39,128, 32, 0,239, 21, 44, 53, 11,210,184, 17,135,255,165, 9,167, 45,221,177,143, 31,154, 15,175, 74, 46, 12,172,130,220, 1, + 85,160,252,184, 26,185,220,219, 15,239, 91, 59,187,183, 73,104,101,100,100,208,187,119,239,210, 86,173, 90,229,201,229,242,120, + 0, 29,203, 51, 99,184,179,179,243,109, 87, 87,215, 88, 62,255,245, 70,203, 44,189,173,121,186,171,171,235, 85, 15, 15,143,100, + 23, 23,151, 59,197,113, 58, 59, 59,223,246,240,240, 72,118,118,118,190,109,126, 28,143,199,235,236,236,236, 28, 95, 52,157,207, +231,191,239,234,234, 26, 91, 52, 29, 37,204,108,238,238,238, 30,155,144,144, 64, 83, 83, 83,169,143,143, 79, 66, 81, 1,150,148, +148,244,154, 0,179,102,182,244,146,242, 82, 82,122, 73,156, 22,212,169,213,215,221,108,155,191,151,151, 87,202,138, 21, 43,168, +141,141, 77,138,249,182,128,150, 31,127,121,227,153, 50,231,147,233, 63,236,115,169,217,179,118,121,102,138, 7,208, 81, 46,151, +199,183,105,211, 38,239,249,243,231,165, 10, 45,252, 75,102,180,255, 19,231,254,154, 66,186,177,102,115,186,161,230,177,240,121, +190,143,135, 53,150,107, 66, 87,116,166,244,236, 52,122,253,135, 79,104, 83, 63,209, 43, 65,180, 49,240, 4,253,201,191, 37, 93, + 93, 85,100, 17,231,143,213, 66,232,198,192, 19, 97,115,125, 31,127,216,192, 69,187,123,219, 70,250,252,249,115,122,248,192, 46, +218,164, 74,129,200,218, 80,243, 20,253,161,102, 27,139, 56,139, 17, 91, 91,182,108,161,207,159, 63,167,191,252,242,139, 69, 34, +235, 53, 78, 51,161, 53,179,157, 77,214, 39,141, 37,154, 1,245, 68,218, 30,193, 66, 93,135,234, 66, 67, 51, 95,190,177,174, 7, +195,214,116, 1,237, 16, 32,213,208, 13, 1, 23,233,134,154, 29, 45,205,167, 72, 36,138,129, 89, 76,157,162,139, 88, 44, 78, 45, + 73,104,149,117,221, 27,187,193,183,157,191, 56,241,247,133,239,211,110,117, 20,233,150,136,172,178, 56, 1,212,115,118,118, 78, +219,186,117, 43,117,115,115, 75,181, 68,100,253, 29,247,167,157,157,221, 14,165, 82, 25,122,242,228,201,208,118,237,218,133,238, +216,177, 35,244,242,229,203,161, 50,153,108, 71, 73,161, 31,106, 22,105,255,139,114,218,218,218,134,230,230,230,210,147, 39, 79, +210,118,237,218,209, 29, 59,118,208,203,151, 47, 83,153, 76, 22,250,143,122, 54, 57,206,255,174,152,122, 21, 67,235,181,197,106, +161, 85, 81, 23, 2, 0,205,202,202,162,147, 39, 79,214, 74, 36, 18,149, 80, 40,156, 9, 64,248, 95,185, 9,157,157,157,175,186, +185,185, 37,187,185,185,189, 38,246,204,211,157,157,157,239,188,203, 15, 32, 0,127,161, 80, 24, 45, 16, 8,158,154,167,187, 4, +117,111, 90,173,249,208, 57,110,193,221, 63,120,147,124, 2, 16, 10,133,194,153, 18,137, 68, 53,117,234, 84,173, 82,169,124,183, +132, 22,165,160,171,171,138, 76, 98,235,193, 28,223,240,110,181,100,186, 77, 83, 58,208,166,149,139,136,172,173,190, 98,171, 56, + 11,196,214,221,217, 62,225,109,252,109, 12,139,231, 76,166, 77,170, 72, 95, 23, 89,214,112, 22, 17, 91, 50,153, 44,119,222,188, +121, 22, 91,178,254,196,249, 99,128, 15,221, 24,184,227,149,136, 42, 99,249, 33, 96, 51, 93, 27,224,243, 79,185,238,141,221,224, +219,214, 95,252,200, 82, 75,150, 37,156, 0,234, 57, 56, 56, 60,182,212,146,245,119,148, 29, 64,135, 49, 99,198,132,190,124,249, + 50,244,197,139, 23,161,151, 47, 95, 14,237,217,179,103, 40,128, 14,197,197,217,210,245,234,165,169,199, 48,147,203,224,236, 63, +102,204, 24,250,242,229, 75,250,226,197, 11,122,249,242,101,218,179,103, 79, 10,160, 63, 39, 96, 56,161,245, 79, 95,248,127,119, + 39,171, 68, 34, 73,177,183,183,119,177,177,177, 57,150,159,159, 63,129, 82,154,248, 95,234,100, 78, 77, 77,109,102, 77,250,187, + 8, 74,233, 83, 0,190, 69,211, 83, 30, 29,186, 6,224, 90, 5,240,235, 0, 44, 38,132,108,223,184,113,227,154,229,203,151,247, +148, 72, 36,169,239, 84, 37, 78,136,208, 98, 77,181,219, 16,137,150,212,242,146,205,248,178, 51, 37,139, 79, 94,245, 93,218,203, + 53,166, 89, 53,121, 36, 4,236,183, 32,154,155, 24, 22,165,177,146,243, 38,164,250, 37,117, 43,201,102,124,211, 3,228,219, 19, +219,124,151,245,116,138,105, 86,213, 38, 6, 20,223, 66,172,186,102, 21,231,235,215,229, 10, 33,228,131, 21, 43, 86,108, 87,169, + 84, 35, 41,165,231,172, 38, 81, 48, 73,200,211,207,131,158, 87, 11, 20,162, 82, 78,166, 2,195,123,136, 20,252, 99, 38, 19,191, +158, 68,163, 1, 4, 87,240,179,116,183,160, 59,234,159,244,124,159, 34,132, 96,215,174, 93,131, 2, 3, 3,171,134,133,133,189, + 80,169, 84, 59, 41,165,167,204,125,153, 8, 33, 71,190,189,127, 63,111,109, 88,216, 21, 45,203, 94, 41,131,115, 79, 1,231,231, +129,129,129,193, 97, 97, 97,143, 84, 42,213, 10, 74,233, 30,206,117,137,195, 63, 29,127,187,208, 82,171,213,110, 92,181,115,248, +155, 26,252, 68, 0,189,222,217, 2,154,137,173, 6, 62,210, 9, 7,199, 72, 85,160, 36, 14, 2,118,149,213, 34,171, 24,177,213, +200, 87,250,217, 47,163,165, 42, 80, 36,129,226,187, 55, 17, 89,230, 98, 11, 64,149,114, 19,244, 9,211, 1,136, 4, 33, 81,152, +143,146,157,168,231,163,240,179,155,195,219, 17, 91, 0, 78,149,177, 15, 5,112,182, 96,177,132,115, 15, 0, 78, 88,113,224,132, + 22, 7, 14, 28,254,102,177,117, 32,232, 22,210,120, 83,193,160, 10, 96,136, 70,158, 33, 9, 19,162,180,111,200,121, 3,105,100, + 18,120,240,135,200, 16, 1,165, 54, 9, 99,222,128,243, 47,120,147,227,149,239, 84,241,152,199,221, 26, 28, 56,112,248,251, 64, + 8, 25,101, 62,210,208,252, 63, 39,180, 56,112,248,183,227,149,149, 39,174, 96,249,231,114,114,224,192,129,195,127, 76,112, 1, +175,230,100,106, 87,194, 7,227, 25, 43,136,219,149,227,131,244, 12,199,201,113,114,156, 28, 39,199,201,113,114,156,255, 45,206, +178,184,173,209, 31,255, 36,129, 85, 76, 57, 54,153,126,252,173,163, 14, 57, 78,142,147,227,228, 56, 57, 78,142,147,227,228, 56, +255, 43, 11, 3, 14,255,102, 19,101, 9,203, 43, 83, 37, 33,197,239,195,129, 3, 7, 14, 28, 56,112,168,208,247,113,253,130,181, + 71,193, 20, 60, 30,166,109,111,213, 71, 75,230,236,239, 1, 62, 83,135,176, 52, 16, 0, 40, 67,194, 97, 96,239,171,210,158,190, +113,200, 7,133, 87,128, 35,133,104, 63,129,182,111,110,252,147,140, 55,229,171, 29, 96,215,203,205, 89, 49, 40, 41, 61,123,251, +195,240,220, 67,214, 28,107,111, 95,217, 78,226,232,208, 71,163,211,215, 18, 9,133, 49,186,172,156, 77, 25, 25, 17,185, 21, 91, +155, 20,243,231,131, 28, 77,188, 67,132,178,235,140,211, 2, 33, 81,206, 87, 82,101, 98, 40,235,151, 21, 73, 15, 28,232, 67, 1, + 78,100,113,224,192,129, 3, 7, 14,127, 1,234, 3,184, 3,160, 11,165,116, 83, 65, 87, 98,233,206,240,149,131, 67,110, 73, 36, + 82, 63, 0, 96, 41, 5, 75,129,188,156,172,208,196,136, 91, 29, 1,192,197,175,193, 73,129,196,182, 1, 75, 95,109, 55,178,128, + 65,151, 31,153, 29,117,189,161, 37, 57,178,113, 13,248,176, 93,135,118,189,186,118,237, 18, 80,187, 86,237,106, 0,240,224,225, +131,136,163, 71,143, 61,177,113, 13, 56,168, 76,121,242,203,155,201, 14,201, 87,239,189, 87,175,197,237,219,119, 22, 2, 24,247, +166, 53,232,228,100, 51,225,212,255,166,182,108,219,107,185, 28,128, 85, 66, 75,226,232,208,167, 71,183, 78,245,190,152, 56,134, +249,100,234, 55,126,183,174,156, 95,170,240,172,149, 69, 89,253,169,188,228,126,151, 74,155, 56,217, 18,204,159, 79,201,206,140, +223,152, 85, 91,191,114, 80,103, 68,244,163,172,177, 31, 33, 4, 60,145,236,128, 75,213, 22,251,236, 91, 79,201,164, 20,218,210, + 6,105,113,224,192,129, 3, 7, 14, 28,202,141, 99, 5,226,234, 88,209, 13, 37, 10, 45,137, 68,234,119,253,252, 81,199, 95, 46, +199, 2, 0,218,213,119,199,172,175,215,116, 32,132, 60, 1,128,238,159,204,247, 95, 56,115, 34,174, 62, 74, 1,165, 20,245,170, + 59,225,131, 30,125, 45,202,141,212, 61,168, 97,191,143, 62, 26, 56,117,234,231,221,159, 63,127, 30,181,123,247,238, 75, 0, 16, +210,178,101,245,111,190,249,230,163,229, 14,142, 98,169,123, 80,188, 58, 41,236, 86,121, 74, 43,245,170,230, 21, 84,163,206,160, +189, 63,173, 97, 90,119,236, 61, 64,234, 85,109,177, 58, 62, 34,222,146, 99, 93, 92, 92, 38, 9, 4, 2, 59, 0, 96,217, 63,244, + 79,213, 74, 60,119, 0, 48, 24, 89,133,163, 87, 96, 46, 79, 40, 49,138,197,194,176, 92,165,114,123,118, 92,216,143,165,113,106, +244,250,224,207,198, 14,103,238,190, 72,135, 95,112, 8,111,213,226,217, 96,141,122,135,201, 51,191,238,115,251,198, 94, 0,243, + 46,148,247,202,122,121, 53,225,125,181,216,166, 61, 33, 24,230,219,244,227,158, 11,183, 29, 16,188, 87,221, 22, 26, 61,139, 19, +161,233, 77,127,248,238,171,101, 87,126,232,114,132,124,155,188, 17,192,239,148, 82,150,123, 30, 56,112,224,192,129, 3,135,138, + 67, 65,220,198, 77,102,255, 55,149, 41,180, 0,192, 70,202,199,147,151, 73, 0, 0,123, 41, 48, 97,244, 80,164,167,165,250,107, + 13, 44, 62, 30, 58, 24,119,194, 19,241, 36, 50, 21,148, 82,248,123,203, 44,206, 16, 15,236,123, 31,143,248,184,213,201, 83,167, +110,126, 57,231,203,159, 9,121, 21, 13,124,227,166,205, 77,231,206,155, 59,114,240,208,193,237, 15, 28, 56,240, 8, 69,102,198, +182, 20,124,162, 88,179,108,201, 34, 81, 92, 90,126,254,164,169, 51,216,207,167, 76, 90, 5,160,183, 37,199, 10, 4, 2,187,184, +184, 56, 27,134,121,221,125,237,219, 69, 51, 46,182,239,181,252, 89, 84, 76,214,221,147,135, 15, 55, 12, 10, 10, 66, 92,124, 82, +243,165,223,111,168,235, 81,173,225,240,220, 28,117,175,188,212,176, 98,163, 80,139, 5,130, 71, 11,150,254, 80,143,181,175,206, +204, 26,217, 25,193,213, 60, 17,159,146,133,150, 29,187,243, 67,111,221,234, 0,160,188, 66,171,143,150, 77,169,251,205,246, 27, +109,123, 54,243,124,143, 97,120, 80,170,245, 72,205,214,192,200, 2, 33, 53,237,208,105,199,247,252,140, 60,253,135, 95,255, 47, +246,195,107,171,187, 38, 19, 66,198, 83, 74, 15,114,143, 5, 7, 14, 28, 56,112,224, 80, 49, 40,109,212, 33, 3, 0,199,142, 29, + 43,182, 79,201,104,164,120, 18,153,136, 39,145,137,184, 25,158, 10, 29, 21, 96,213,210, 5, 88,177,120, 30, 50,212, 12,126,185, + 26,139,167,145, 73,120, 26,153,132,180, 76,101,113, 10,239,181, 33,154, 43,150,200,234,175, 90,101,183,172, 67, 75,121,107, 71, + 7, 7,135,103,143,126,206,155, 59, 37,185,230,130,207, 98,133, 2,173, 56, 78,110, 35,111,182,127,255,190, 32, 55, 23, 87,185, +141,141, 98,154,220,187,222, 22,123,251,186,118,165,113, 22,133,204,173,102,247,238, 93, 58,189,239,238,238,198,142, 89, 21, 26, + 94,171,102,160,190, 70,245, 26,205,101,110,254,221, 75, 81,162,133,156, 44,203,130, 97, 24, 36, 39, 39, 35, 33, 33, 1, 47, 95, +190,196,211,167, 79, 17, 27, 27,149,204, 82, 42, 48,130,101, 60, 60,188,193,231,139,224, 87,217, 23, 63,172, 90, 44,251,122,254, +172, 70, 18,185,232, 16, 49,243, 52, 55,231,204,207,200, 60,112,252,183, 83,241, 39,118,255, 96, 4,128,148, 76, 37,206,222,122, +142, 59, 97,177,214, 42,230,162,101,175, 28, 31,253, 60,199, 16,121,140,183,112,246,231,177,151, 47, 95,137,202,206,213, 34, 87, +165,131, 42, 95, 15,141,214, 8,189,145,133,175,139, 4,191,206,168,133,195,231,238,187, 17, 66,190,179,166, 62,203,169,236, 57, + 78,142,147,227,228, 56, 57, 78,142,211, 42,148,164, 69,254, 37, 22,173, 77, 69, 23,211,182, 82, 71, 29, 70,196,102,224,201,203, + 36, 52, 8,244, 66,181,202, 30,184,249, 52, 19, 59,207,198, 98,203,201,104,156,189,151, 10,150,175, 64, 82, 14,240, 44, 42, 25, +207,162,211,202,116, 1,226,137, 5,253, 62,251, 44,123,106,237,160,156, 38,231, 79, 76,128,151,203,179,160,233,211,179, 38,240, +196,130,126, 14,149, 20,187,103, 76,157, 60, 72, 33,147,137,180, 26, 45,170, 86,241,149, 76, 28, 63, 97, 56,113, 16,239,182,180, +160,182,222, 65, 14, 98,169,244,199,175,231, 79, 19,127,247,203,179,152, 60, 45,242, 14, 94, 75,126,241,249,140,185, 25,124,129, +228, 7, 91,239, 32, 7, 75,185,244,122, 61, 52, 26, 13,180, 90, 45,116, 58, 29,226, 99, 31,119,255,253,151, 47, 58, 86,169,228, +216, 81, 44,145,128, 2,200, 81, 27,240, 50, 81,133, 54,109,219,243, 26,212,175, 31,108,227, 81,115, 68,113, 92, 89, 89, 81,217, + 44,229, 41,142,254,186,139,183,239,244, 93,252,124,244, 22, 14,157,187,139,155, 23, 78, 24, 40,171, 47,156,166, 66,225, 89,195, + 95,225, 89, 39, 90,225, 85, 55,185,112,241,174,125,187,212, 58,229, 49,180, 77,219,118,103, 70,143,155,120, 94,149,155,158,242, +227,154, 5,241,169, 9, 81,143,197, 66, 98,144,137,121, 80,230, 27,176,237,247, 4,244, 89,124, 15, 97, 49, 74, 80, 74,133,220, +183, 7, 7, 14, 28, 56,112,224, 80,177, 22, 45,179,197,195,124, 91,137, 93,135,249,249,234,200,222,253, 6,195,195,213,221,166, + 71,235, 97,194,208,136, 44,164, 38, 70,227,249,211,135, 80,229,235, 33,116,168, 2, 72,220, 81,217,207, 23,247,159, 28,210,173, + 94,118, 76,201, 26, 52,145, 37,241,245,232,225,233,237,225, 34,103,150, 45,245,185,254,244, 73,102,131, 93,115,182, 98,224, 64, + 27,231,101, 75,125,174, 71,189,144, 51, 50, 9,109, 54,124,232, 0,194, 16,138,233,211,167,162, 71,215, 78,248,120,248, 16,178, +125,251,182, 38,150, 22,148,133, 96,237,204,217, 11, 68,201, 89, 6,237,205,167, 74,141, 76, 46,149, 94,121,166,204, 11,246,243, +145,118,238, 53, 44,225,216,254, 31,191, 3, 48,212, 18, 46,147,192,210,235,245,208,233,116, 0, 96, 4, 0,134,121,181, 78,207, +213, 34, 37, 75,131,228, 44, 13, 12, 70, 22,189,250, 13,149,222,186,125,111, 40,128, 18,252,181, 88, 86,111,208,227,224,233, 59, +136,191,117,128, 37, 12, 47,219,228, 12,111, 18, 89,238,238, 62, 23,187,246, 26,226, 34,146,188,234,134,205,205,211, 96,251,134, +165,165,230,147, 33,132,178, 70, 67,150, 65,175,207,171, 90,165,106,124, 96, 80, 93,201,229,243, 39,187, 95, 57,115, 80,105,168, + 58,196, 62, 34, 42, 17, 60,129, 24, 60,161, 4, 26, 29,231, 12,207,129, 3, 7, 14, 28, 56, 84, 52,138, 78,191, 67, 8, 65,153, + 83,240, 68, 61,186,212, 16, 0, 2, 26,118, 76,183,145,240, 29,249, 12, 65,114, 92, 4,182, 47,159, 4,150,165,232, 60,114, 25, + 20,126,238,144, 10,121,208, 40,211,149,233,207,207, 59,149,174,246,244,237,215,109,140,247,251,116,108, 85,219, 93,187,148, 2, + 0,216,181, 75, 41, 24, 59,166,146,237,250,141,145,126,141, 91, 52, 0, 53, 26,209,181, 71,111,244,235,223, 15, 81, 73, 42,252, +239, 98, 12,242,212, 90,139,230, 87,147,185,212,172,235,234,233,213,233,179, 97,157,228,124, 30, 33, 53,124,237,120,177,169,122, + 3,143, 39, 48, 30,185,149,157,208,171, 87,127,231,179,199,247,189, 47,115,169, 89, 87,149,250,248, 94, 89,124, 26,141, 6, 70, +163, 17, 26,141, 6,122,189, 30,142,206, 85,142,183,239,189, 60, 46, 49, 41,247, 88, 82,102,126,227, 60,189, 1,201, 89, 26,164, +100,105,144,149,167,131,187,194, 1, 6,189,182,118, 41, 23,225,231,158,189, 7, 15, 1,192, 16,198,176, 53, 55,225,241, 83,211, + 54,147,200,234,212, 99,160,203,197,208, 8, 60,191,125, 34,147,178, 6,253,171,138, 99,139,157, 2, 69,226,221,180,160, 94, 65, +121, 4,172,144, 79,244, 60,134, 97,117, 58,165,222,213,213,229,236,133,179,191,117,203, 55,188, 0, 79, 40, 46, 60, 70,173, 53, +114, 79, 3, 7, 14, 28, 56,112,224,240, 23,192,204, 79,235, 88,129,115, 60, 94, 19, 90,166,190,209, 46, 93,186,252, 41,216, 82, +124,114, 6,156,108,248,112,241,244,195,160, 73, 43,240,243,119, 83, 96, 52,234, 65, 41, 96, 48, 90, 54,136,141, 82,193,233,113, + 99,253, 2, 43,251,241, 92, 6, 13,148,169,119,238, 82, 73, 7, 13,148,169,107,213,118,202, 30, 55,214, 47, 50, 55,223,167,185, +193,104,196,149, 71, 41,120, 24,153,141,135, 81, 57,176,145, 90, 30,230,139, 39, 18,142, 93,186,100,177,144,207, 35,228, 81,180, + 82, 25,151,110, 80,242, 4, 2,157, 76, 42,162, 90,202,215, 68,165,209,244,182, 61,135,171,143,236,248,126, 4,128,241, 37,241, +152, 70, 26,154, 44, 89,166, 53,165,148, 18,128,101,137,209, 24,151,150, 15,165, 78,143,228,204, 63,132, 22, 49,148,220,115,170, +240,172,225,111,103,235,248, 27,143,199, 19, 83, 10,232,117,134,143, 20,158, 53, 58,230, 38, 60,123,106, 46,178,174, 63, 74, 64, +196,221, 51,201, 70,157,106,112, 94,114,248,239,150, 95, 92, 80, 30, 15, 44,143, 33, 44, 33, 96, 5, 12,213,130, 82,182,104,142, + 84,156,208,226,192,129, 3, 7, 14,255, 96,148,166, 69,254,233, 48, 89,176,138,181,104,149, 86, 32, 74,129,103,209,105,168,236, +237, 2,239,202,213,240,244,241,253, 63,182, 1, 48, 24, 45,235,142, 58,116, 40, 33,110,229, 74, 59,118,202,148,236,166, 75,151, +250, 92, 27, 59,166,146, 93,173,218, 78,217,211,166,197, 52, 93,185,210,238,218,233,235, 2, 35, 45,136,215,101,138,205, 85, 16, +230,223, 66, 48,141,234, 6, 85,225, 45,216,245, 44,230,247, 7,185, 41, 66,161, 80,239,238, 32, 33, 10, 27, 17,143,199, 8, 68, + 26, 61,163,241, 15,174,207, 59,194,188,138,222, 90,150,208, 42,218,117,152,158, 26,209,253,212,255,166,214,106,221,115,153, 99, +124,170, 26,217, 90, 94, 97,215, 33,143, 33,120,240, 56, 26,224, 9, 31, 22,199,105,171,112, 60,185,123,231,207, 62, 43,151, 46, +130,206, 96,196,184, 41, 95, 98,248,208,193, 39, 21,158, 53, 58,250,248, 5,132, 94, 58,178, 85,214,113,204, 15,136,126,114, 59, +201,160,201,217, 99,141,200, 42, 20, 91, 0, 53, 82,150,201,200,204,177,209, 24, 32, 65, 49,186, 79,163,227, 34, 59,112,224,192, +129, 3,135,127, 38,254,141,226,234, 15,131,199,107,163, 14,139,183,104,149, 6, 95,111, 55,220,120, 24,137,218,129, 85, 96,103, +171, 64,120, 68, 28,120,140, 0, 12, 1,244, 6,203,197, 16,213,233,247,174, 92,105,135,232, 72, 57,179,254,135, 72,191,113, 99, +253, 34, 87,174,180,187, 70,117,250,189, 0, 6, 83,250,106,238, 69, 83,128, 84,163, 21,186,128,178,250, 74,110,142, 50,222,237, + 23,121,233, 12,195,211, 56,217, 73, 88, 39, 59, 49,227,164, 16, 9,132, 2, 30,107,160,140,206,219,213, 47,159,178,108, 93, 75, +248,204,187, 14,141, 70, 35, 8, 97,140, 5, 66, 76, 30,155,174, 70,118, 62, 15,201, 89, 26,100,230,234, 80,195, 75,142, 51,103, + 15,168,140,122,245,174,226,184,120, 2,161, 93, 53, 63,111,204,250,106, 37,212, 26, 35,158,197, 43, 33, 20,139,221,221,220,131, +239, 13,254,116,134,120,226,166, 8,140,120,223, 9, 83, 46, 69,196,171,146, 37, 51,172,185,184, 70,163, 17,234,124,173, 48, 57, + 45,211, 33, 39, 55,207, 86, 42, 17,171, 93, 28,237,210,138,219, 55,159,179,104,113,224,192,129, 3, 7, 14, 21, 14,115, 31,173, +162,176, 72,104,217,200, 36,160, 60, 9, 46,133, 70, 32, 32,168, 14,182, 29,190,137,234,181,155, 32, 49,215, 0, 10,198,226,128, +227,159,207, 80,221, 1,112,167, 71, 15, 79,239, 15, 63,244,106, 79,169,224,244,250, 13,217,113, 0,240,195,158, 86,160, 0, 88, +150,130, 82,128,178,175, 4,151,229,114,146, 31, 29,153,152, 83,217,207, 93,142,176, 56,157, 70, 46, 22, 50, 14,114, 17,207,197, + 78, 36, 20,242,249, 48, 82,162, 73, 76,140,208, 16, 32,202, 18,186,162, 93,135, 50, 27,143,227,109,123, 46, 75,141,138,201,190, + 93, 35, 67, 85, 55, 91, 39, 2,165, 64, 13, 47, 57, 30, 94, 63,102, 76,142,127,254, 76,157,252,100, 67,113, 92, 44, 11,158,206, +192,226,222,139,108,100,229,233,145,165,212,161,121,155,110,194,230,237,186,227,210,195, 52,176, 6, 61,150,110, 62,150,107,164, +250,126,148,134,233,173, 40, 52,115,227,206, 35,239,212,204, 60,177,128,207,207, 10,172,238,251, 82, 36, 20, 24,114,114,114, 68, +175,239,197,131, 92, 42, 66,134, 82, 15, 0,122,238,145,224,192,129, 3, 7, 14, 28, 42, 14, 5, 35, 13,187,224, 85,100,248, 46, +230,226,203,162, 73,165,141, 44,133,179,147, 35, 36,114, 91, 68, 38,235,144, 75, 92,145,169,162, 48, 26, 95, 89,180,216,146, 79, +220,174,184,244, 67,135, 18,226,126,253, 53,117,203,161, 67, 9,102,142,222,127, 88,178, 10,215, 44,181,152,147, 80,227,153,195, + 39,206,103,119,111,236,226,192,240,120,106,161,128,209,240,133, 60,157,144,207,232,133,124, 70,235,102, 43,224,157, 63,178, 71, + 68, 9,206,151,197,153,159,159,143,118,237,218,161,115,231,206,232,209,163, 7,250,246,237, 11,127,255,154,174, 12,143,104, 41, + 97, 89, 23, 81, 46,170,185, 16,240,243, 99,241,251,158,111, 85, 15,175,252,122,207,168,201,239, 70,205,250, 58, 95,227,164,148, +205,200,214, 32, 95,103, 68,166, 82,135,204, 60, 29, 12, 46, 77,241,235,213, 4,168,181, 70, 68,135, 30, 80,167, 38,197, 77,202, + 79,126, 22, 89,198,133, 44, 82,118, 26,247,201,199, 67, 83, 21, 18,230,121, 72,179,134,169,206, 78,142, 6,243, 73,163, 9, 33, +144,216,186,194,193, 94,129,200, 59, 39,112,106,105, 91, 53,128,217,150,212,231, 27,222,112, 28, 39,199,201,113,114,156, 28, 39, +199,249, 95, 66,151, 2, 97,213,165,104, 28, 45, 11, 44, 90, 20, 85, 61,228,168,238, 37, 71,190,206, 21,249, 90, 35,242,242,141, +200, 81,233,144,163,210, 35, 50, 73,133,135,135,223, 60,135,175,172, 88,175,166, 61,166, 20, 0,121, 37,240, 44,181,105,137,116, +218,175, 86, 44,253,230,163, 61,245,235,105, 39,118,241,168,116, 63, 82,155, 64, 8,163,102,120,124,189,163,130, 47, 8, 15,191, +159,122,237,226,241,150, 18,131,113, 72,105, 60, 6,131, 33,219,203,203,171,192, 18,245,135,132,172, 89, 77,218,227,202,177,233, + 85, 90,117, 95,234,242,221,162,169, 42,134, 39,100, 9, 95,248,208,168, 87,239, 86, 39, 63,249,129,150,226, 80,198, 8, 37,143, +111,220, 13,107, 98,239, 88, 9,207,227,243,144,151,111,128,206,192,194,193, 70,136,184, 7, 39,117,145,225,183,247,229,198,223, +219,102,125,157,209, 93,132, 16,239, 78,157, 58,246,110,210,164, 41,111,238,220, 47, 17, 16, 16, 0,181, 90, 13,134, 97, 80,169, +114, 53, 68, 62,189,139,235,199,190, 50,170,210,163, 54, 0, 88, 72, 41, 77,229,158, 7, 14, 28, 56,112,224,192,161,194,197,231, + 40,243,117,153,225, 29,204,172, 59,145, 45,218,117, 3,203, 82, 24, 41,192, 26, 11, 44, 79,236, 31,214, 39,163, 62, 63,242, 77, + 51,200,178,198,155,107, 55,109,233, 92,191, 81, 43, 94,144,143, 13,114,210,147,112,253,202, 57, 3, 88,122,205,146,227,211,210, +158, 42,101,238, 53,122,127,212,231,195,253, 67, 63, 30,147,213,178, 77, 27,185,171,171,187, 38, 46, 62, 78,245,211,142,157,250, +147,199, 15,181,100, 97,232,159,150,246, 76, 89, 26, 79, 86, 86,214,247,197,165,183,109, 81,169, 57,128, 42, 60, 62,209,170, 82, +158,202,173, 41, 91, 90,124,108,175,111,190,154, 31, 53,112,228,100, 81, 85,175,106, 72,201,230, 33, 50, 46, 9,225, 23, 15,105, +226,159,222,250, 37, 39,238,206, 8,107,235, 43, 63,238,154, 73,108,197, 1,248,142, 16, 18,220,169, 83,167,142,239,191,255, 62, + 29, 53,106, 20, 40, 5,126,223, 52,150,102, 68, 94, 63, 0, 96, 54,165,244, 5,247, 24,112,224,192,129, 3, 7, 14, 21,143, 55, +242,209,138, 9,123, 21, 79,235,175, 70,110, 82,202,224,109,219,126,254,250,231, 29,123,154,231,107,181, 94, 20,194, 88,163, 65, +123, 65,105,196, 92, 75, 57, 84, 73,207,110, 59, 59,251,215,250,105,243,218,217, 63,109, 89,223, 10,172, 49,144, 0, 81,148,224, +188, 68,111, 28, 90,150,200, 42, 93,200,229,110,108,223,123,185, 58, 61, 93,249,179,181,199,170,210,194,147,108,220,170, 86,218, +184,234,171,101, 12,195,235, 96, 52,178, 2,214,168,127,110,212,229,127,171, 78,125,114,152, 90, 55,188,178,164,139,252, 8,192, + 35, 66, 72,200,217,179,103, 27, 1,248, 30,192, 5, 74,233,109,238, 17,224,192,129, 3, 7, 14, 28,254, 58, 16, 66, 70, 21, 13, + 90,106,177, 69,235,239, 66, 70, 70, 68, 46,128,137,111,202,147,150,246, 84, 9, 96, 70, 69,231,239,193,211,236,255, 1,248, 95, +121,143, 87, 38,191, 72,133,133, 81,233,223, 80,112, 93, 2,112,137,187,237, 57,112,224,192,129, 3,135,183, 43,184, 0, 11,157, +225, 57,112,224,192,129, 3, 7, 14, 28, 56,148, 46,178,204,215,133,233, 0,138, 29, 57, 96,205,204,220,229, 25,125, 80, 22, 63, +199,201,113,114,156, 28, 39,199,201,113,114,156,239, 30,103, 89,220,214,232,143,127,133, 0,171, 0,247,160, 82, 43,177,162, 43, +140,227,228, 56, 57, 78,142,147,227,228, 56, 57,206,119,143,243, 95, 45,166,138, 88,177, 10, 4,227, 63,203, 71,139, 3, 7, 14, + 28, 56,112,248,187,224,236,236,111, 3, 20,250,245,150, 9,185, 75,144, 27, 0,228,165,134, 37,115,181,199,161, 36, 81, 85,156, +143, 86,185,132, 22, 33, 68,192,240, 69,159, 73,164, 54,195, 8, 3, 91,101, 86,154,215,127, 88,197, 18,255,202,242,241,149, 42, +185,180,137,139, 79,222, 30,254, 66,117,232,109,112,218,184, 85,117, 33, 34,135, 95, 8,171,249, 38, 39,238,225,137, 10, 46,163, + 56, 40, 40,168, 30, 0,132,133,133,221,165,148,106,222,148, 83,238, 22, 48,192,193,214,126,180,142,213, 26, 85,121,170, 31,148, + 73, 79, 15, 84,100,158, 21,158, 53,156,192, 87,108,128,209,208, 6, 20, 60,240,248,247,136, 38,255,147,156,212,176, 82,195, 92, +248,244, 88, 28, 56,226,163, 46,115,182,236, 59,246,117,204,161,153,225, 69,183, 59,126,176, 70, 49, 97, 72,135,233,235,246, 28, + 90,146,118,120,154,146,107, 94,172,135, 79,139,129,246, 6,190, 59, 47,225,252,242,116,107,142,243, 14,104,250, 72, 32, 16,184, +232,116,186,148,248,167,215,107, 89,114, 76,165,192,102,119,120, 60,198,211,104, 96,227, 98,159, 92,125,143,171,253,178, 33,117, +173,218, 20, 6,195, 44, 10, 16, 16,254,138,252,244, 23,231,222,132,207,211,211, 83,106,103,103,215,210,214,214,182,146, 76, 38, +147,100,102,102,170, 51, 51, 51, 99,162,163,163,207, 82, 74, 13,111,163,140,114,183,128,153, 68, 64,230, 21,252, 94,144,151,252, +100,113,233,237,107,224,215,132,161, 51, 11,126, 47, 86, 38,135,207,249, 39, 92, 43,137,123,128, 47,143, 98, 34,143,225, 55, 51, +176,250, 69,170,228,167, 71,172, 57,222,209,209,177, 3,159,207,151,154,254, 27, 12, 6,117, 70, 70,198, 41,238, 41, 40,215,123, +114, 84,209,223,229,182,104, 17, 66,120, 2,177,236,242,192,143,199,213, 90, 50,127,134,100,213,150, 95, 33,177,113, 8,203, 87, +102, 6,253, 19, 11,239, 82,181,241,109, 30,195,243, 54, 79, 51,178,198,184,212, 23, 55, 42,164,209, 13,168, 44, 29, 49,123,218, +224, 41, 3, 62,106,231,219,174,235, 36, 2,160, 88, 81,164,240,105,120,149, 16,166, 10, 67, 0,134, 33, 96, 8, 0,208,132,180, + 23, 55,234,151,151,211, 4, 59,215,106, 85, 68, 54, 46, 23, 91,244, 24,231, 30,122,102,231, 54,185, 75, 80,251,188,212,176,251, + 21,112,227,184, 84,171, 86,173,161,191,191,191,211,132, 9, 19,132, 0,240,221,119,223, 85,175, 94,189,122,122, 68, 68,196,173, +242, 6, 63,149,187, 6, 14,254,126,249,194,159, 63,248,160, 51, 18,210,242,176,116,229,186,214, 54,238,254,125, 43, 74,108, 57, + 56, 84,177,229,219, 58, 60,152, 52,109,161,107,167,214, 13,121,202,124, 3,126,187,120, 55,100,231,186,133, 55,109, 93,130, 26, +149, 38,182, 88, 85,246, 28, 55, 27,218,137, 85,101, 3,192,128,162,219,189,108,244,237, 92,164,198, 78, 30, 98,254, 93, 0, 7, +203,204,139, 95,139,147, 2,177,216,151, 97, 24,152,174, 61,143,188,186,254,122,157, 58, 58,238,241,197,142,255,132,231,196,214, +183,113, 18,120,124, 39,134,252,145, 63, 82,112,159, 18, 74,115, 18,159, 94,114,170,128,251,201,174, 86,117,251,224, 46,205, 91, +252,116,225,101,134,220,167,213,228, 99,132, 50,235,163, 47,174,184,103,209, 75, 69, 34,113, 56,114,228,136, 75,167, 78,157,236, +220,106,245,188, 96,201, 49, 54, 34, 73,208,209,163,135,133,157, 58,117,180,226,254, 12,104, 15,134,217, 65, 0, 1,203,210,239, +120, 44,221,167, 76,127, 26, 97,109, 24, 22,153, 91,224, 8, 6,212,226,118,134, 5,185,173, 74, 14,223, 82,222,250, 21, 72,236, +218, 10,132,194,207,170,248,215,174, 31, 31,245,252,118,158, 50,119,165, 62, 63,235,130,213, 68,122,195, 23,103, 46,133,126,192, + 23, 8, 72,167,182,141,121, 0,222, 72,104,185,185,185,245, 92,179,102, 77,213,166, 77,155,154, 94,230,182,251,247,239,119,255, +234,171,175,228,150, 60, 67, 37,220, 75, 94, 46, 46, 46, 62, 34,145,200, 11, 0,180, 90,109,124,106,106,106, 12,165, 52,190,204, +123,194,189,154, 51, 1,127,225,165,139, 23,249, 0, 16, 18,210,242,107,223,144, 9, 14, 60,161,141,186,216,234,208,230,202, 1, + 76,190,126,227, 26, 1,128, 38,141,155,206,144,187, 4,173,125,155,150, 45,169, 91, 96, 99, 6,152,210,188,101,251, 94,253,250, + 15,102,130,107,248,160, 67,251,247,167, 3,176, 74,104,241,249,124,233,205,155, 55,171, 49, 12,195, 51, 24, 12,249, 77,154, 52, +137,121,147,124,121, 5, 52,187, 74,192, 84,210, 25,180,155, 83, 95,220,254,154, 82,202, 22,213, 15,118,149,234,207, 6,143, 63, +146,101,217,216,156,232, 91,205,222, 53,139, 86,177,245,108, 45, 25,195, 23,125, 54, 96,248,167,181, 38,127, 62, 75, 50,105,213, + 89, 28, 91, 55, 35,237,159, 42,178, 0,128,199,240,188, 79,158, 58,233, 42, 19,241, 0, 0,202,124, 3, 62,232,212,169,204,227, +236,253, 26,159,103, 8, 9, 48, 77,104, 99, 52,232, 36,124,129, 40,159, 0, 0,121, 53,138,192,217,179,242, 89, 15, 15, 71,217, +128,143,218,249,238,216,115, 58, 46, 38, 46,189,196, 70,141, 97,120,222,135, 14, 31,113,245,114,146,128,207, 35, 80,170, 13,232, +212,185, 91,177,179, 60,123,120, 56,118, 25,240, 81, 59,223, 93,123,207,196, 36, 38,102, 28, 43,181, 49,247,240,111, 32,183,115, +251,173,215,232,175,156,242, 25, 71,204, 93,244,189,243,197, 19,187, 46,180,234, 50,152,141,142,142,205,167,132,132,101,102, 36, +126,166, 76,124,254,196, 82, 33,109, 99, 99, 83,213,198,198,166,238, 7, 31,124, 32,153, 58,117,170,160,117,235,214,133,219, 71, +141, 26, 37, 60,127,254,188,199,242,229,203, 59,123,122,122,230, 43,149,202,123, 74,165,242, 5,165,212,226, 25,171,221,221, 93, +198,247,254,176, 27,222,239, 53, 14, 70,150, 96,212,167,147,113,242,196,193, 49, 0, 42, 68,104,233,101,182, 95,141, 28, 61,213, +165, 73,195,122,188,133,187,158, 64, 42,226,163,227,123, 1,100,248,132, 57,246, 91, 86, 47,252, 17, 64,171,226, 44, 89,172, 42, +123, 78, 45,103,109,255,238, 77,171,224,240,110,109,127,239,118,211,193,200,236, 10, 45, 91,213, 62,152,168,112,144, 74,215,120, +218,243, 92,197,198,212, 53,213, 62,152,120, 38,226,196,234,220, 82, 95,126, 98,177,239,238, 93,187,106, 56, 40,132,224, 51, 4, + 60, 30, 1,159,199, 32, 95,107, 68,223,143,250, 87,212,151, 20, 79,234, 90,163, 51, 3, 12,127,245,194,198, 86,117,202,179,227, +214, 92, 19,194, 19, 58, 29, 61,252, 11,223,213, 78, 12, 30,143,128,199, 0, 60,134, 32, 42, 89,141, 17, 35,134,219,189,169, 96, +255,160,185,107,195,243,107, 91,117,108, 82,203,177,206,222,107,196,174,201, 7,253,156,210,242,101,195,246, 28, 58,215,223,167, +229,148, 27,148,178,203, 98, 47,173, 42,245, 75, 90,163,209, 36,119,236,244,129, 45,225,203,101,103,126,253, 63,123,231, 29, 30, + 85,209,182,241,123,182,103,179,155,108,122, 37, 9, 16, 8, 9, 37, 64,232,189, 23, 9,189, 55, 81,164,136, 32, 10, 34,210,164, + 40, 32,130,116, 17, 65,154,244, 42,210,123, 87,106, 2,129, 80, 18, 72,239,125, 91,182,151,249,254, 72,194, 27, 49,101, 3,248, +189,175, 58,191,235, 58, 87,178,187,103,239,157,115,206,156,115,238,243,204, 51, 51, 59,218,243, 56, 4, 38, 11,133,217, 66, 97, + 41,158, 27,181,232,124, 37,224,112, 8,168,149, 98,252,248, 15,208,163,231, 59, 26,171,217,154,106,251, 69,142,179,235,204,133, +223,220,245, 38, 43,190, 91,191,245,171, 66, 69,206, 87,241, 79, 93, 19,237, 61,235, 76,211,100,197,216, 60, 15, 6, 7,180,105, + 74,220,163,137,123, 78,220, 66,131,122,117, 97,177, 22,149, 51,184,154, 4,123, 78,222, 66, 72,112, 72, 81,185,173, 20,117,252, +164,104,214,180, 25, 0,188,150,209,226,219, 57,206,239, 16,254,238,162,222, 67,198,194,195,221, 29, 28,106,234,125,225,228,158, +222,124,177,236,115,147, 86,241, 93,213,238, 24,150,151,247, 5,106,181,190,113,122,137,143,143,143,123,179,102,255, 25,142,209, +108, 54,163, 70,141, 26, 72, 75, 75, 11,126,141,186,100,239,237,237, 29,190,105,211, 38,143, 94,189,122,241,189,188,188, 0, 0, +153,153,153,190,103,206,156, 9,243,241,241,201,206,200,200, 56, 73, 41,213,148,167, 97, 49,113, 4, 28, 30,184,118,118,246, 69, +219, 8,194,153, 49,229,221,134,158,222, 62,101, 70,234,115,114, 50,133, 51, 39, 95, 38, 60,158,160,120,125,112, 40,181,146, 10, +162, 68, 93,249,124,190,184,172,207,140, 92,199,150,148, 47, 27,199,225,114,138, 42,171,217,148,147,159, 20, 81,183, 10,145,184, +250,124,161, 96,227,200, 49, 19, 91, 15, 30,216, 15,222,238, 50, 92,184, 17,133, 15,167, 76, 55,153,141,166, 85,175,117,143,228, +114,121,217,217,217,137,206,206,206, 94,111,126,191, 37, 53,207,159, 61,237,113,225,226,165, 89, 43,215,172,155,228, 83,167,157, +201, 74,233,203,121,140,253, 27,116,230,119,235, 61,212,209,163, 86, 75,187,117, 11,198,241,255,105, 17,173,242,204, 86,149, 79, + 34,161,216, 97,232,151, 51, 63,182,251,122,247, 45,156,220,240, 97,110,161, 34,199,253,229,147,130,204, 57, 82,173, 40, 8,123, +157, 66, 58,120, 4,183, 34, 92,222, 68,194,229, 74, 8,135, 8,173, 22,107,138,217, 96, 88,172,201,141,201,120,211, 29, 96,181, + 82, 28,254, 61,187,106, 59,141,162,246,174,253,191,120,120, 58,137,160, 51, 90, 48,108,196,104,236,220,185,211,193, 93, 38,132, +206, 96,198,138,149, 43, 85,234,196,147, 30,137, 41, 5,105, 93,251, 76, 63, 23,151,144,253, 40, 57, 67,119,160,252,131,192,129, +135, 76,132, 37,251, 98,224, 40,230,195,217, 65, 0, 14,231, 15,243, 18,190,108, 46, 76,207, 40, 80,148,210,220, 93,238, 73,231, + 29,218, 67,230,236,179,119,192,196, 37, 78,177,217, 60, 80, 24,241,194,209, 14, 67,223,155,234, 24,232, 37,134,196,142,235, 20, +159,148,230, 61,227,243,207,111,200, 60,106, 53, 87,100,191,136,175,108,187,171, 87,175, 62,176,119,239,222,246,159,125,246, 25, +223,207,207, 15,219,247, 28, 12,104,215, 99, 72,159,244,140, 44, 63, 74, 41, 60, 61, 60, 82,198,191, 63,228,248,169, 83,167,146, + 82, 82, 82,248,203,151, 47,111,241,203, 47,191,212,171,202,147,169,133, 82,232,244, 22, 88,138,111,144, 57, 10,125, 85, 43, 52, +241,245,245, 21,165,165,165,233, 75,162, 12,164,212, 36,143, 82,223,198, 61,186,116,104,193,219,116, 58, 1,106,157, 5, 18, 59, + 62, 18,178, 52,104,218, 56,148,252,100, 49, 55, 42, 75,243,131,161,225,243, 60,165,180,103,223, 86, 53,225,225,108,143,109,223, + 47,193,177,155,241, 61,179,212, 4,110,125,151, 79,244, 22,241,186,185,219, 11,214,119,108, 90,203,171,115,147, 0,220,109, 90, +203,235, 90,196,179,152,208,161,171, 62, 78, 83,243, 47,228,159,254, 88, 85,246,133,135, 3, 23, 7, 1,182,158, 77,130,189, 29, + 15, 18, 59, 30, 36,162,162,191,165,143,255,107, 61,213,250,212,243,227, 90, 45, 31, 56,250,212,251, 96,248,208, 33, 62, 35,135, + 15,161,224,114,112,240,240,241,126,187,119,239,202,144,122, 5,111,177,112,184, 91,181,233,143, 83, 42,221,167, 28,192, 67, 38, +196,231, 91, 30,193, 81,204,135,131, 61, 31,142,246,124,116,110,232, 14, 46,231,181, 47, 60,206, 31,246, 11,236, 21,181,179,107, +167, 96,127,105,208,131, 23,138,199, 31, 44,190,183,230,138,188,211,167,223,175,174,231,170,150, 27,120,243,103,140,231,165,166, +167,119, 58,120,252,106,103,159,230, 31, 60, 51, 27, 11,231,100, 63, 56, 80,102, 4, 55,229,233,239, 97,213, 90, 13,177, 51,170, + 77, 15, 31, 60, 75,173, 85,160, 23, 33, 58, 81, 9,137, 29, 15,210,146,125,107,199,131,196,142, 15,169, 29, 15,233,169, 9,200, + 47,228,222, 72,115,229,116,162, 87,126,175, 82, 19,149,206,104,193,253,120, 53,170, 7, 55,134,183,183, 15, 12,189, 70, 85,191, +125,233,240,175, 18,239,186,223, 20,102, 60,153, 99,171,206,158, 19,183, 48,107,218,196, 8, 2, 68, 22,223,164,195,230, 47,219, +208,228,171, 89,147,255,240,222,140, 69,235,154,188,126, 36,203,113, 94,231, 1, 31, 45,106,215,109, 0, 84,249, 89,248,253,220, + 1,244,232, 61, 8,163,198,126, 2, 39, 39,183, 21,124, 59,217, 3,147, 78,113,233, 79,215, 92,239,186,109, 67, 27,212,221,237, +235,227,227,103,181, 22,205,242, 65, 41,208,182, 67,103,204,252,116, 60,172,148,162, 81, 88,243,206,189,134,127, 76,105,241,108, + 32,185,121,185,133,207,158, 62,238,170,205,122,122,219,230,125,169,211,153,114,114,114,112,255,254,125,196,196,196, 32, 58, 58, + 26,121,121,121,144,201,100,234, 42,214, 39,199,134, 13, 27,142,188,116,233,146,157,179,179,243,203,247, 13, 6, 3, 28, 28, 28, + 48,114,228, 72,126,247,238,221,125,195,195,195,199, 16, 66,246, 80, 74,149,101,233,104,243, 98,211, 29,189, 66,126,236,208,177, +195, 36, 0, 16, 59,122,199,175,223,126, 60,186,194,115, 77,230, 19,208,186,117,155, 90,160, 20, 4,116,109, 97,238,179,204, 10, +162, 68,146, 91,183,110, 5,114,185, 92,222,127,238, 65, 86,252,176,109,127,200,249,235, 15, 7, 46, 91,241,157,157,163, 68,132, + 28,133, 1,227, 70, 13,176,249, 30,108,239, 21,210,171, 77,155, 14,191,126,181,232, 75,158, 84, 34,193,185,219,113,248,248,211, +207,117, 25,137,143,190,163, 86,254,134,194,236,103,217,111,120,171,124, 43, 61,227,130,170, 73,225,208,183,135,221,135,239,246, +181, 51,152, 44,144, 23,154,160, 55, 90, 96,177, 82, 40, 10, 77,120,156,172,130,155,163,240,117,164,155, 1,112, 7,144, 3,224, +238, 43,175, 81,252, 63,202,120,157, 91, 20, 30,129, 43, 0, 3,128,210, 63, 94,242,186,188,247, 75,190,255, 24, 64,221, 98, 77, + 11,128, 59, 0, 10,202, 50, 91,101, 69,185,120, 39, 79,158,164,225,225,225, 47,175,248,175,190,126, 21,145,128,239, 35,145,185, +131,210, 39, 40, 61,129,177,167,119,181,188,141, 63,254,228, 34,115,118, 77, 82, 20,228, 5, 20,255,200, 5, 91,110, 22, 60,194, + 93,213,161, 99,251,238,147, 62,250, 8,193,129,213, 4, 22,139,133, 62,138,137, 55,237,216,186,237, 61,153, 95,232, 26,101,234, +163,121, 37, 33,200,170,246,114,176, 88, 45,169,175, 70,176, 44, 86, 75,234, 43, 59,227,194,159,119, 24,224, 36, 21,226,199,211, + 9,160, 20, 32,160,144, 73,248,216,119, 37, 21,241, 17, 71,148,189, 27, 41, 11, 71, 46, 91,216,185, 83,175,169,151, 30,191,208, + 29,200,206,214,157,165,148,102,150,167,201, 33, 0,143, 75,224,104,207,135,204, 94, 0, 39,137, 0,164,212, 13,172,116,115, 97, +199, 94, 83,207, 95,250, 45,105, 14,128,156,210,249, 80,165, 53,197, 94, 65,205, 28,157,170, 29, 24, 56,105,185,195,195, 84, 51, +120, 92,160,166,151, 24, 46, 14, 2, 24,204, 4,137, 57,198,226, 51,199, 9, 31,207, 88,228, 50,107,250,164, 83,132,212,107, 64, +233, 99, 99, 69,219,174,209,104,132,163, 71,143,230,155, 76, 38,227,200,113,159,116,207,204,204,233,247,195,218,111, 69, 30, 30, +158,208,232,204,136,136,126, 94,247,171,175, 22,213, 60,126,230,202,209,133,159,127,248,107,207,158, 61,101,251,247,239,183, 86, +182, 63,255,240,132,152,149,251,253,182,221,135,118,174,254,110, 41,158, 37, 21, 96,235,166, 13,160, 22,243,143,149,132,101, 47, +148,250,159,206,153, 51, 71,124,244,232,209,106, 18,137, 68,169,209,104,114,254, 16,143,224, 16, 94, 86,190, 6,110, 14, 66, 8, +120, 28,120, 58,219,193, 67, 38, 2,159, 11,112, 8,177,148,165,185,245,192,201,197, 86,141, 2,199,246, 26,134,111,251,126, 9, +198, 78,153,139, 71,185,194, 51, 28,123,217,226,201,195, 7,206,114, 23, 91,122,250, 56,113, 60, 58, 55,169, 14,137,157, 0,179, +167,142, 70,243,136, 68,143, 52,185,117,110,142,150,219, 24,197,147,117,255,233,184,115,138, 34, 88, 14,246,124,156,217,189, 34, +187, 80,145,163, 40,105,146, 51,232,117, 73, 54,134,164, 47,148,241,100, 59,171, 73,227,134, 75, 38, 77,248,128,211,166, 85,115, +202,225,240,145,171, 50, 16, 74,129, 79, 63,254, 16,147, 63, 28,239,149,146,158, 61,127,195,134, 31,231, 73, 61,234,126,173,206, +126,178,176, 34, 77, 14, 41,138, 2, 73,237,120,144,138,139,140,139,212,142, 7,157,193, 2, 66,192,117, 14,104,162, 32, 69,145, +220,244,188,196,178,159,192, 95,213,116,241,175,127,241,124,188, 67, 72,193,129,130,155, 9,233,209,139, 35,162,178,238, 80, 74, +243,253, 59, 76, 31, 99, 52, 83,168,117,102, 36,100,105, 96, 54, 82, 50,246,157, 0,212, 24, 76,130,151,110,139,220, 73, 8,113, + 44, 49,208,175,106,166,222, 60,168,115, 11, 29, 56,108,245,186, 77,119,191, 91, 50,151,155,171, 48,192, 74, 41,236,132, 92,136, +133,188,226,133, 11,109,161, 2, 27, 54,254,148,105, 6, 25, 72,175, 92, 49, 87,165,126,194, 74, 71, 13,232,213,126, 31, 1,132, +132, 35, 72,245, 9,168, 30,208,165,207,123,118, 93,250,142,134,197,108,152, 37,241, 12,185, 92,152,245,244,162, 45,154, 13,234, +213, 5, 1, 34,213, 89,207, 62, 4, 0,169,103,240,143, 33,193, 33, 77, 94,125,175,118,237,224, 38,182, 28,247, 18, 4, 98,199, + 41,206, 46,238,115,131,235, 55,246, 8, 12,237, 64, 28, 92,171, 33, 33,246, 62,246,110,156,191,203,170, 51, 44,186,120,242,192, +146, 53, 91,127, 25,218,165,231, 0,108,251,225,219,217, 0, 46,253,233, 60,178, 90, 71,237,216,178,217,143, 47, 20,193,100,182, +194,100,161, 69,127,205, 22,228,231, 23,192,100,182,194,206,222, 1,102, 43,129,201, 98,133,201,108,133,222, 96,150,124, 56, 58, +252, 35, 0,183,203, 42,103,181,186, 29,207, 10, 68,162, 0,138,162,185,107, 41,165,224,154, 13, 28,111,111,239, 61, 0, 32, 18, +137, 32, 18,137, 96,181, 90, 17,241, 44,103,138,123, 72,215, 73, 40, 54,120, 22,163, 33,169, 32,225, 70,143,242,182,221,203,203, +171,207,171, 38, 75,167,211, 65,173, 86,227,250,205,187,178, 45, 59, 15,245, 76, 72, 74, 13,180, 82,153,222,193, 35,176, 7,128, + 62,229,237, 79,101,230,211,143,252, 90, 77,224,124, 54,121, 76,237,117, 59, 78,220,137, 61,243,245,236,138,170, 68,205,174,179, + 12,159, 77, 28,212,116,217,218,173,177,249, 55, 54, 78,171,236, 24,241,120, 60,126, 78, 78,206,203,243,123,253, 79,123,155, 70, + 62, 75,235,191,102,245, 26,187,136, 56, 21, 30, 38,164, 99, 76, 87,127,252,225, 38, 80,129,166,212,171,150, 91,173, 90, 33,123, + 54,172, 93,198,139, 77,215,225,251, 35,119,112,233,215, 31,175,103,102,223,238, 73, 51,211,181,175,115, 13,121, 83,163, 85,145, +230,229,168, 92,168,117,102,232, 13,102,152,172, 20, 74,141, 9,217,114, 3,148, 26, 35,212, 90, 51,198,116,243, 47,243,123,149, +248, 17,119, 66,200, 9, 74,105,111, 20, 13, 75, 37, 44,245, 26,132,144, 19,197,229,250,195,235, 89,179,102,205,249,230,155,111, +162, 75,214, 45,121,191,100,221,138,222, 47,245,125,215,217,179,103, 55, 88,182,108,217,210, 86,173, 90,237,251,253,247,223,227, +203, 50, 90, 21, 70,180, 74, 54,230,228,201,147,180,146, 39,138, 64,123, 71, 87,145,163,152,143,154, 53,252,241,254,156,109,110, +142, 46,158,217,118, 66, 30,247,244,233, 51, 46,121, 6, 41, 56, 28,110,161,237, 81,172, 58,173,197, 98,251,147, 43, 87,174,196, +240, 62,237,196,201,185, 38,117, 84,178, 54,171,208, 0,179,135,123, 29,225,226,165,203,164,203,150,175,152,124,226,152, 85, 14, + 96, 69,217, 77,124,205,238,113, 73,169, 28, 44, 66, 64,173,150,212,252,132, 59, 77, 1,224, 77,114,177,212, 58, 19,184,197,185, + 53,132, 0, 26,157, 25, 92, 46,201,150, 63, 59,240,120,228,215,139, 59,239,218,119, 62,157,114,156, 84,133,133, 9,246,197,115, + 14, 86, 16, 49, 32, 80,106, 76,144,217,243,225, 36,229, 67, 38, 17,128, 91,234, 36, 43,105, 46,220,181,247, 92, 90, 82, 82,222, +221, 98,147, 85,174, 38,143,203,137,167, 22,147,142, 82,139, 67,239,102,238,240,112, 18,194,219, 89, 4,145,144, 7,147, 25,208, + 26,172,208, 25, 44, 72,204,214, 66,165, 21, 35,180,195,144,154,174,222,247,244,174, 1,205,142,230, 37,221, 29, 88,161, 57,181, + 88,176, 99,207,161,218,233,233, 89,253, 78, 29,221, 45,202, 81,154, 16,149, 88,136,108,185, 30,224,186, 99,193,210,239, 69, 95, + 76,155,208,127,199,222,195, 73, 93,218,181, 72,170,234,126, 45,204,126,186, 43,180,117,248,143,189,123,247, 23, 71,223, 62,133, +216,251, 23,151,168,179,108,207,207, 34,132,112, 14, 30, 60,104,158, 48, 97,130,106,233,210,165,126,199,142, 29,171,145,147,147, +115, 31,128,201,201,201, 41,164, 78,237,128, 7,231,206,156,246, 13,239, 63,132,159,154,171,133,204, 94,128, 0, 15,123,220,188, +126,214, 36, 20,242,203,204, 55, 41,110, 30, 28, 81,173,235, 23, 56,118, 51,190,103,116,158,221,149,241, 31,140, 73, 58,119,237, + 89,222,250,157,231,190,245,149,154,238,219, 89,115,214,223,107, 90,203,107,214,199,163,241,205,186, 93,184, 26,241, 44,187,144, +227,189, 36, 67,111, 62,191,112,216,204,114, 66,233, 69, 6,219, 65,204, 71,161, 50, 71,241, 60,226,116,157,183, 20,169, 30,115, +238,232, 46, 78,190,202,132,148, 92, 29, 73,207, 87,193, 98,165,112,178, 23,192,108,165,144,231,231,146,221,187,118,226,238,221, +155, 28,112, 57,227, 0, 44,172,176,153,139, 20, 53, 21, 74,237,248, 69, 17, 33,113,209, 95,147,197,138,224,218,181,176,121,253, + 42, 71, 55, 15, 79,180,109,223,201,246, 40,181,107, 64,163,125,219,215,227,202,239,145, 29,175,174,249,190,153,212,199,125,157, + 99,181,122,223,201,106,116,211,233,141, 22, 40,228, 5, 16, 26, 82,208,220, 55, 7, 46,246, 22, 36, 42,189,241, 40, 51, 86, 90, + 89, 46, 84,238,195, 35,247,221, 27, 12,152,119,232,248,165,111,122,116,235,136, 71,137, 74,136,133, 60,216, 9,185,176, 19,114, +193, 39, 22,172,218,248,163,169, 64,161,234,157,251,232,104,238,107,212,207, 11,197, 79,191, 69, 55, 57,207, 64,247, 93,235,230, +253, 60,126,230,242, 30, 61, 7,188, 71, 30,221,189, 60, 7,192, 69,219, 30,244,168, 77,239, 89,173,182,223,227,196,142,238,107, +167,207, 91, 49,181,123,239, 33,224,114,121, 48,153, 76, 56,188,127, 23,182,127,191,224,169, 65,157,247, 30,165,212, 74,136,203, +132, 3,187, 54, 14,153, 57,127, 21,105,208,168,121,139, 50,253, 36,151,108,122,247,131,137,195, 60, 61, 61, 29,254, 19,209,162, +168, 19, 92, 15,189,250, 14,194,217, 95,127,193,227,232, 40, 88,105,145, 97,178, 90, 41,228, 5,121,153,102,147, 97, 71,185, 45, + 30,118,118, 1,219,182,239, 12,226,112, 8,140, 38, 43, 12,102, 43,166,125,244,190,225,195, 79,231,180,237,213,189, 67,180,144, + 11,101, 98,114,134,211,205,200, 39,161, 86,190,212,239,131, 25,171, 4, 58,189, 5, 10,141, 9,167,182,150,239,117,196, 46, 1, +173, 26,181,238,255,193,135, 95,110, 22,137,184, 28, 99,253, 58,126,241, 29, 90,214, 79,241,247,113, 83,125,181,236,251,230, 55, +110, 71,246, 26, 58,242, 3,187, 49, 33, 77,136,143,171,216,225,253,145, 3, 26, 74, 92,253,223, 45,204, 75, 46,119,202, 52,190, +189,179,220,191, 70,109,205,127, 34, 70,193, 71, 8, 69,205, 63,220, 56, 9,226, 53,153,207, 6, 2,128,183,143,191,142, 47,114, + 84, 85,193,136, 80, 0, 88,247,211,222,166, 15, 98,210,199,175, 94,189,198, 62, 34, 78,133,251,113, 10,136, 4, 28, 24, 77, 86, + 16, 27,131,218, 86,202,157, 56,119,246, 44,199,130, 66, 11,174, 68,229, 32,250,222,101,106, 80,235, 70,218,155, 29, 7, 74, 60, +131,223, 5, 80, 11,192, 11, 66,232,166,194, 44,175, 95, 41,189, 82,229, 78, 6, 86,107,209,243,178,204,163, 86, 77, 11, 79,212, +139, 47,148,180, 34,132,214, 39, 20,206, 0, 77,203, 43,190,167,218,234,212, 10,179, 98,176,124,233,124,172,221,242, 11,210,243, +116,144, 89, 82,240,235,214,197,248,236,155, 61,208,234,203,207,106,168,204,143,148,101,140, 94, 53, 92, 37,255,151,172,247,205, + 55,223,244,126,229,216,244, 46,231,152,253,105,189,146,239, 47, 91,182,108,105,169,207, 53,182,154,172,151, 70,171,100,163, 42, +217,184, 58,238,222, 1,191,255,122,244,136,115,129,218, 8, 59, 1, 23,254, 53,106, 99,225,250, 95,221,223,105,234,134, 92,163, + 12,123, 55,127,151,175,211,168,246,219,116,177,240, 12,105,225,224,224,112,234,200,225, 95, 16,232,239, 33,216,125, 61, 63, 33, + 50, 94,251, 50,212,171,204, 73, 18,214,112,212,240, 6, 14, 24, 96,127,241,210,229, 79,203, 51, 90, 92,194,173,246,211,206,195, + 30, 14, 98, 62, 8, 1, 84, 90, 51,198,191, 59,232,205,111, 99,212,202,253,224,189, 49, 32,197, 38, 75,153,151,137, 57, 95,124, +164,147,152, 98, 31, 39, 39, 38,167,117,237,243,217, 69,165,154,232,134,141,254,232,238,227,152,111, 10, 42,175,197,166,212, 94, +225,189, 4, 69,145, 3,128, 75, 8,172,212,154, 21, 92, 67,250,241,159,154, 11, 51,245, 63, 85,102,220, 84,105,207,242, 29,188, + 67, 7,239, 90, 57,229, 39, 31, 79, 15, 87,169, 68, 76,165,246, 34, 82, 63, 36, 72,208,178,101,107, 97,141,224,134,130,235, 79, +180, 72,206,209, 34, 62, 93, 1,145,103, 99,222,240,206,239, 96,215,154, 25, 29, 9, 33,156, 87,147, 20, 95,229,252,149, 91,125, +182,108, 92, 45,202,146, 27,241, 52, 89,141,204, 2, 29, 50, 10,244,200,204,215, 65, 42,230,163,125,223, 9,162,147,191,110,234, +211,165, 93,139,117,175,179,123,227,227, 19, 78, 38,166,101, 12,105, 24,214, 28,187,126,222,222,206,217,185,166, 99, 65, 65,188, +210,214,163,179,120,241, 98,225,178,101,203,120,235,215,175, 87,182,108,217,210,107,246,236,217, 61,178,179,179,239, 84,175, 94, + 61,248,236,145, 29,151, 26,183,239,215, 12, 86,163,123,187, 14,157, 4, 34, 43, 15,231, 78,156, 48, 30,216,191, 59, 79,171, 85, +125, 88,161,225,176,151, 45,206, 82, 19,184,251,250, 70, 75,133,150,110, 60,142, 60, 38,255,244,199, 59, 1, 28,169,245,206,212, + 11,151,239, 61,139,105, 26,145,232,113, 41,226,121,118,190,198, 88,231,197,233,233, 21, 94,120,185,132,128,207,229,192, 65,204, + 3,167,248,170,234,224,219,232, 57, 8,113, 47,137,156, 18,144,226,191, 0, 33, 72,207, 79,138,180, 33,103,131, 80, 43, 5,158, +165, 22, 66,173, 43, 10,205, 87,115,179, 71, 78, 86, 42,126, 88,183, 3,145,247,238,162,251, 59,125,177,225,167,221, 24,255,238, + 16, 93,101,106, 28, 78,113, 68,171, 84, 52, 75, 42,230, 1, 32,144, 23,154,112,248, 70, 10,106,213,228,216,124, 99, 0, 0, 7, +169, 61, 20, 42, 45, 56, 2, 7,188,136, 56,101,127,250,242,237,217,243,190, 94,253,121, 65, 70, 84,242,243,135,215, 17,236,166, + 64, 77, 95, 35,162, 51, 29,113, 47,175, 6,130,107, 7,130, 35,184,107,147,118,110,116,232,242, 95, 57,135,123, 55,109, 92,175, + 85,128,135, 19,180, 6, 75,113, 84,139,139,237,219,118, 34, 49, 33,245,131,220,232,163,145,111,195,209,170,179,226,114,236, 60, +131, 38, 63,188,125, 49,126,192,200,201,240,246,245,111, 84,149,180, 5, 91,222,179,216,104,180,132, 18,231,217, 51,230,175,156, +218, 61,124, 48,110, 93,191,136,251,209, 47,208,162, 69, 51,188,211,127, 56, 84,202,252,144,131, 59,215,116, 3,112,150, 39, 50, + 79,109,222,186, 51,177, 90, 44,136,125,250,232, 69, 89, 90,154,244,167,247, 1, 56,254,161,121,202,189,110, 35,169,204,229,190, +222,104, 65, 90, 90, 42,126,251,253, 74, 88,241,122, 54, 35, 18,112,113, 46, 50, 27, 70,147, 21, 70,179, 21,237, 59,116, 51, 8, + 56,250,118, 75, 86,111,107,153,145,158,193,145, 56,186, 89, 93,124,235, 10,188, 69, 70,253,131, 56,133,192,104,178, 34,208, 71, + 82,161,166,187, 79,237,165, 51,102, 76,171,203, 21,136,161, 42,212, 27, 50,210,211,188, 54,239,189,172,126,242,244,161,111, 53, + 15,153,227,183,107, 54, 9,148, 58,130,108,133, 30,249, 42, 37, 25, 57,113,166,207,150,239,191, 25, 5,192,230,185,105, 9, 69, +205,147,231,174,135, 56, 59, 8,136, 90,103,182,230, 41,141,150,145,253, 59,189, 81,221, 41, 54, 89, 19, 86,175, 90, 99, 31, 25, +167,194,131, 56, 5,236, 4, 92, 8, 5, 28, 24, 76, 86,216,114, 58, 17, 66, 56, 53, 27,116,248,176,117,211, 80,156,189,159, 11, + 46,151, 3,173,170, 64,195, 67, 94, 76,211,142,221,237,155, 52,111,137, 78, 29, 59,224,121,204, 51,255, 19,199, 14,119,185,249, +219,213, 76,169, 71,240, 20,117,246,179, 95,170, 84,207, 53, 26,174, 73,232,245,190,183,111,245, 54, 3,135,191, 47, 11,240,247, + 37, 30,110,174, 48, 83, 30, 38,188, 59,200,230, 51,191,200,152, 3,203,190,158, 13,189,222, 0,119, 39, 33, 40, 5,182,173, 91, + 8,131,193, 0, 31, 87, 17, 20,133,166,114,191, 95,153, 31, 41, 47, 10, 85,197,102,232, 19,101,153,173, 87,223, 39,132,156,152, + 53,107,214, 28, 0,116,214,172, 89,115, 74, 94,127,243,205, 55, 90, 0,233, 21, 53, 29,150, 54, 94,188,210, 27, 87,110,161,132, +194, 96, 55,239,128,155,231,206,158,145, 29,125, 96,197,173, 95,238, 33,188,133, 55, 4, 60, 14,236,101, 62,120,144,160,192,201, + 35, 27,229,191,238,219,148,166,215,235, 87, 84,222,214, 28,212,212, 65,226,120,246,231, 93,251,173,110,174,174,156, 31,206,229, +196,229,169,204, 47,155,180, 98,110, 31,179,222, 59,187,217,155,130,156,177,179,179,171,109, 48, 24,156, 43, 59,176,219,206, 37, + 21, 39,241,146,183,113,109, 5,225,114, 45,187,118,239,130,155,163, 16,122,147, 21,179, 62,255, 68, 59,166,187, 84, 62,114,232, +240,206,157,122, 77,189,196,151, 4, 93,108, 29, 22, 68, 27, 55,110, 44,231,114,185,149,234,229,197,223,249, 83,239,138,144, 26, +246,227,230,206, 28, 51,183,140,230, 66,155, 18,119, 85, 25, 15,111, 0,248, 67,132,132,212,170, 37,220,115,240,215, 79, 6, 15, + 29, 54,207,183, 81,127,105, 66,134, 2, 2, 98, 68,179,186,222,184,124,230, 23,154,154, 24, 51,173, 50,147, 5, 0,217, 57,249, +126,238,238,158,136,140, 87, 35, 45, 79,139,204, 98,147,149, 81,160,135, 74,171, 66,195, 0, 31,200, 21, 10,191,215,222,191,192, + 47,103,207,158, 29,210,171,223, 48, 76,253,124, 81,219,173, 27,191,139,146,122,213, 25,171,206,140,185, 98,203,147, 34, 33, 36, +255,139, 47,190,168,245,211, 79, 63,113, 70,141, 26,165, 13, 13, 13,181, 27, 61,122,116,219,157, 59,119,218,217,219,219,105, 31, + 92, 63, 54,111,220,199,179,250,109, 94,187,184, 81, 65, 65, 1, 49,155, 76,167,141, 5, 5,179, 84,149,152,185,228, 95,103, 63, + 37,245, 22,189,215,173,157,251, 49, 23,123, 78,125, 17, 53, 12, 39,245, 22,237,167,143, 23, 24, 95,156, 94,167, 10, 29,186,234, +227,116,185,117,174,142,227,177,164, 50,147, 5, 0, 28, 46,129,193,108,129,131,152, 15, 14,135, 83, 98,226,189,183,239, 63,109, +239, 46, 19,130,207,229,128,199, 45,138,118,230, 42,141,152,252,126, 63,155,159, 4,204, 22, 10,173,193, 12, 77,241,211,161, 74, +153,139,217,159, 79,199, 59,125, 6, 96,220,135,211, 81,160, 5,238,197,171, 96, 52,153, 42, 61, 41, 56,132, 3,141,222,140,177, +221, 3,144,175, 54,162, 80,107,134,193,108,133,189,144, 7, 62,143, 3,137, 29, 15,142,246,124,128, 82, 65,201,197,132,207,231, +235,140, 70,227,174, 10,142, 19,106,248,121, 66,107,226,160,249,176,239,208,181, 85, 29, 68,223, 56,204,187,122,235, 97,205, 79, + 63,159,139, 79,198,247,193,161,167,181,224,226, 17, 0,169, 68, 12, 19,229, 0,176,109,232, 16, 74, 23, 88,189, 67, 6,142,248, +241,167,109,207,190,154, 63,203, 78, 94, 72, 32, 18,112,113,233,226, 5,220,188,125,111,109, 78,244,209, 93,120,139,240, 41,199, +211,209,209, 17,118, 66, 46, 12, 70,189,193,246,212, 5, 10, 10,132, 73, 61,131,127, 44,126,226, 15,179, 88, 81,198,123,149, 27, + 45,190, 88, 54,107,234, 23,139,151,118, 15, 31,140,115, 39, 14,225,224,161,253,150, 86, 61, 63,224,238,222,190, 17,109,187,246, + 69,219,238,195,112,250,151,157,211,249, 98, 89,189, 9,159,124,249,117,251,206,189,112,238,228, 33,100,101,166,174,180,181,188, + 92, 62,153,218,185, 91, 31,232, 12, 22,180,235,210, 27,103,142,255,242, 49,138, 59, 89,216,126, 19,123,229,250, 12,142,121,250, +180,169,252,108,185,129,159,163, 52, 32, 53, 71,131,132, 44, 13,126,221,183,149,218,126,189, 48, 52,107,223,176, 26,127,194,242, + 75, 41,126,213,188,245,124,189, 86, 28,243, 34, 46,100,220,251, 99,248, 53,107,135,112,178, 21,122,228, 40,244,200, 85,232,161, +214,153, 81,187, 90, 16,199,100, 38,173,170,122,156,221,100, 66,254,134,227,241,112,148,240,209, 58,228,245, 59,218, 90,173,214, +255,152,172,213, 69, 38, 43, 42, 94, 1,145,128, 11,145,128, 3,145,128, 11,179,133,218,244,224, 34,246,168,211,107,242,148,143, +124, 12,102, 32, 79, 97, 0,143, 75,224,225,230, 44,105,214,104, 4,182,125,247, 49, 0, 96,252, 23, 63, 96,220,216,209,168, 91, + 63, 20,242,130, 2,175, 17,131,123,173, 6,240,139,173,101, 61,117,238,138,255,185,107,145, 95, 76,158,177, 64, 58,180, 79, 39, +238,253, 56, 5, 50,242,245,120, 17,163,170, 82,228, 13, 0,204, 22, 43, 40, 40,118,236, 63, 1,177,144,135, 28,133, 17,148, 82, + 44, 94,127, 0, 14, 98, 62, 50, 10,138,154,251, 43,162, 34, 63, 82, 81, 68,170, 10,209,198,222, 40,202,229,114,183, 53,162,245, +205, 55,223, 68,127,243,205, 55,101, 70,200, 74, 76,214,107, 79, 42, 45, 20, 74, 67,220, 92,125,110,157, 59,115,202,225,151, 7, + 22, 92,126,144,135,193,237,170, 65,157,159,140, 21,159, 15,205, 39,160, 6, 14,151, 43,215,107, 53, 71,180,218,194, 37,148, 82, + 99,133, 38,203, 59, 56, 76, 34,118,188,176, 97,243,207,102, 55, 15, 15,236,186,158,159, 90, 80,104, 54,253,167,217,202, 68,238, +157,221, 92,211,108, 53,245,212,102,198, 86,250,120,107,165, 16,124,179,241, 87, 0, 20, 86,171, 21,212,106, 5,223, 78, 42,113, +175,213, 42,171,248, 66,103,199,227, 16, 93,233, 43, 0,181,154, 83,115,226, 42, 14,131, 18, 0, 50,123, 62,246, 95, 77, 3,128, + 44,174, 42,226,201,200,161, 69,205,133, 58,131,157,178,126,173, 90,180, 89,179,102,114,177, 88,252,218, 7,187,170,205,133, 54, + 85,160, 23, 47, 12, 0,150,251, 4,183, 27,208, 67,218,176,185,144, 35, 64,147, 96,111, 92, 62,123,148,222, 58,179,109,188, 38, +235,217,207, 54, 86, 68,168,117, 38,164,231,233,144,150,167, 67,102,129, 14,153,249,122,100, 22,232, 64, 8,129,206,240,102,195, +223, 20,102, 63, 59,184,235,231, 45,125,245, 70, 12,111,223,125, 0,166, 47,216, 16,176,235,199,101, 23,196,158, 33,109,108, 73, +180,165,148, 90, 8, 33,137,239,191,255,126,163,189,123,247,114, 27, 52,104,160,125,242,228,137, 61, 0, 43, 0,163, 84,106, 47, +222,250,253, 55,103,155, 55,111,190, 47, 45,230,233, 37, 0, 5,182,116,207,175,222,241,125, 81,136, 99,254, 4,127, 73,235, 30, +129, 94,246,240,151,168,122,132, 72, 31,172,240,232,242,233,210,236,139,107,178, 51,244,230,243, 57, 90,110,227, 52, 53,223,166, + 92, 65,147, 94,151, 52,112,240,112,112, 9, 7, 70,157, 38,169,164,114,121,200,132, 88,184,251, 41,164,118,124, 56,136,121,144, +138,249,104, 91,207, 5, 85,184,158, 81,147,197, 10,141,222, 2,173,222, 12,157,193, 12, 55, 63,103,252,180,235, 32,146,179,181, +248,245,110, 46,158, 37,169, 16, 84, 77, 2, 74, 43,191, 76, 90, 45,166,194, 62,131, 70, 57,112, 57, 4, 92, 14,225,212, 11,169, +131,124,181, 17, 2, 30, 7, 2, 59, 49, 36, 34, 30, 28,197,124, 8, 4,124,100,103,103, 67,175,215,195,223,223,223,174, 98, 43, + 72,225, 32, 21, 35,168,166, 15,140, 38, 51, 78, 93,123,140, 37,211, 6,162, 91,251,166, 32,124, 41,158,234,195,224,224,226, 0, + 43,135, 3,163,217, 10,131,209, 2,128, 83,110,244,205,223,223,191,179, 68, 34,145,104, 52, 26, 85, 82, 82,210,149,140,167, 71, +146, 61,234,247,159,112,230,220,165, 93,189,223,233,134,200,168,104, 28,250,229,216,245, 92, 87,197,140,146,239, 52,104,208,160, +165,155,155,155, 52, 47, 47, 79,249,240,225,195, 59,175,249,244, 75, 36,158, 33,159,182,106,219, 17,106,121, 54,178, 82, 18,108, +126,138,174, 27,224,128, 47,191,217,208, 36,184, 78,112, 19, 11, 45, 50, 94,245,252, 29,240,217,130,117, 77,106, 5,213,105, 82, +210, 33,164,174,191,180, 98,147, 37,113,236,254,238,132,207,190,233, 59,248, 61, 92, 58,119, 12,171,150,124,190, 75, 34,115,175, +235,226, 44,107,220,160,101,119, 92,191,112, 12,118, 14, 94,112,118,245,106, 59,106,236,148,174,131, 71, 77,196,205,235, 23,176, +118,217,156,157, 22,189,106,143, 45,101,149,122, 6,186, 55,110,214,126,164,131,139, 39,228, 10, 21, 28,156, 61, 80,183, 97,179, +145, 82,207,192, 47,212, 89,113, 57,175,123,174, 91, 41,133,222, 72, 81,160, 54, 34, 37, 71,139,196,204, 34,163,101,181, 86, 33, + 39,200, 98, 37, 82, 59, 30,207,197,244,220,255,225,133, 75, 52,192,207,147, 44,255,250,115,174, 17,118,200,145, 23,153,172, 28, +165, 1, 57, 10, 3,212, 58, 19, 92, 36, 60, 88, 45,214, 42, 63,117, 23,168,141,112, 40,206,163,181, 88, 95, 63, 55,124,227,246, +253,193, 15, 98,210,251,175, 90,181,198,254,126,124, 41,147,197, 47,138,102,137, 4, 92, 88,172,214,226, 59, 77, 37, 6,155,199, +159,218,175, 87, 87,164,228,106,139,122, 45,115, 8,130, 66,155,195, 77,108, 69,151, 97,179, 0, 0,125,122, 21, 13, 95, 18,159, + 81,136,227,183,114,128, 63, 38,118, 87,124, 45,214,106,185,155,119,159,252,244,224,129,125, 50,157,133,135, 77,167, 19,161,209, +155, 97, 39,224, 66, 36,224, 66, 44,224,254, 33, 31,187,114,163, 85,148,115,151,156,107,130, 70,167,131, 82,107, 2, 5,112,231, +185, 26, 90,131, 25,138, 66, 19, 90,134, 56,191,233,179,207, 73, 0,225,175, 26,162, 87,205, 82,169,136, 84, 89,220, 45,173, 81, +178,126,121, 70,174,116,206, 22,128, 42,245,224,226,189,234, 28, 75,191, 22, 74, 93,234,202, 92,221,111,157, 57,125, 66,250,203, + 3, 43,174, 68, 21,153, 44,147, 54, 23, 43,191, 24,145,170,148,231,118,162,148,198,217,250, 99, 18,247,122, 13,197,246,246,151, +190, 93,179,201,232,225,233,107, 61,114, 75,158,173,208, 88,254, 16, 67,180,232,245, 28,106,165, 2, 91, 76, 86,113,147,135,113, +193,199, 3, 96,165, 20, 11,215, 28,196,210, 25,195, 32, 21,143,178, 39,132,216, 23,234,204,152,182,104, 11, 86,126,249,129,131, +189,136, 7, 66, 0,157,193,130,119,135, 15,176,173, 2,234,204,120,113,123,175, 90, 21,127,226, 73,233,230,194, 22,109,223,185, +215,162, 69, 11,185,179,179, 51,196, 98,241,127, 34, 21, 54, 94,180,203,234, 93,152, 45, 71,170,131,131, 67, 7, 71, 71,199,210, +122,133,114,185,252,232,235,212, 66,149, 60,247, 82,102,226,195,230,109, 58,245,193,149,179, 71,233,173,211, 91,199, 87,101,140, + 30,103, 23,231,148,136,135, 47,234, 18,226, 82, 20,209, 42, 54, 89, 6,147, 21, 1,158,246, 72, 73,124, 1, 39,153, 44,197, 86, + 61,123,143,144,126,132, 67, 63, 36,160,219,212,153, 49, 7,139, 77,207, 8,137, 87, 72, 84,244,163,251, 75,122,143,156,202,235, + 62,248, 35,238,143,223, 76,153,131, 87,146, 88, 43,192,248,236,217,179,199, 31,124,240, 65,235,155, 55,111, 90, 0,104, 8, 33, + 38, 46,151,107,111, 48, 24, 4,157, 58,117, 82, 60,125,250,244, 42,202, 72, 90,124,149,118, 99, 15,185, 17,145,234,157, 90, 65, +205, 70, 4, 56,168,186,117,106,215, 10,173,234,251, 33,165, 93, 43, 0,152,154,164,150, 6,183,157,180,117,127, 77,247,106,167, +126,220,126,124,233,248, 97, 93,167,249,244, 89,180, 42,253,248,130, 10, 19, 81,147, 31, 95,233, 81,150,141,231,113, 57,112, 16, +243, 33, 21,243,224, 32,230,195,193,142, 15,147,153, 86,229,201,145,154,204,214,162,136,150,193, 12,181,214,140, 75,247,179,144, +169, 48, 64,174, 50, 66,107,180,128,130, 22, 61,141,218,112, 53,207,142,189,225,244,242,216, 7, 52, 81,108, 94,255,157,227,225, + 27,169, 47,123,244,201,236,133,112,176, 47,234,141,125,237,218, 53,184,186, 86,254,180,111,181, 90,113,232,204, 29,172,218,113, + 9,103,182,205,132,157,128,139,134,253, 22,225,189,254, 45, 96,165, 86,188,120, 22,157, 21, 84,175,145, 39,135, 35, 6,135, 16, +232, 77, 86, 0,180,220,253,105, 48, 24, 92,147,147,147,149,181,107,215,246,242,245,245, 29,204,229,114,169, 8,208, 31,221,151, +175,185,120, 98,143,125,161, 86,111,177, 55, 43,182,213,206,208,134, 7, 5, 5,129, 16, 66,221,220,220, 4,151, 46, 93, 82,135, +134,134,186,191,166,201,226,136, 61,234,172, 29, 55,233,211,193,181, 2, 3,113,112,207, 54, 80, 74, 14,219,250,253,221,199,111, +226,235,217,127,236, 97,248,217,130,117, 77, 86, 46,154,250,135,247, 38,205, 94, 85, 97,175, 67,177, 72, 58, 99,224,136, 9,184, +119,231,119,172, 88,244,217, 62,189, 58,255, 61,147,217, 52, 36, 63, 35,126, 95,205,122, 45, 64,141, 42,156, 59,240, 29,134,141, + 30, 47,234,222,123, 48,110, 94,191,128,165,115, 38,237,214,200,179,223,183,117,252, 47, 43,229,127,216,169, 71,127,190, 86,111, +196,186,229,243, 49,113,198, 18,180,236,220,135,255,232,254,173, 15, 1,124,101,235, 54,235,141, 22,116, 10,117, 43, 50,207, 38, + 43,142,197,115,121,101,213, 64, 30,151,112, 26, 7, 58, 65,107, 48, 67,169, 49, 85,124,163, 18,240, 51,229, 10,101,245,239,151, +126,202, 45,212,153,145,163, 48, 32, 91,161, 71,174,252, 63, 6, 43, 87,161, 71,142,194, 0, 62,143, 32, 38, 46, 9, 28, 62,175, +202,249,121, 5,106, 19,154,215,113, 46, 58, 71, 95,179,117,196,196,115,108,113,230,234,131,129,171, 86,173,182,123,144,160, 66, + 84,188,178, 56,146,197,133,136,207,129,176,248,127,139, 21,168,236, 39,100, 30,181,106,142,249, 96,124, 23, 71,169, 24,233,177, +217,224,113,139,134,136,145,121,248, 65, 38,210, 97,202,164, 9,112,115,117, 66,114,174, 30,107,127,137, 65,212,227,231,176,106, +171,182,217,235, 54,237,235, 57,110,242,103, 78, 28,190, 16, 59,207, 38, 20,149,147,107,193,211, 91,199,117,233, 47, 30, 22,170, +149,121, 20,212, 98, 99, 0,128, 80,179,165,168,186, 45, 93, 56, 11,251,118,252,128,179, 17,217, 47,147,183,110, 28, 94,137, 79, +103, 47, 70,174,210, 80, 92,245, 43,142,100,189,242, 58,167, 84, 36,234, 79,175, 75,153,163,178, 94,147,226,215,134,114, 52, 12, +175,152, 43,195, 43,239, 27, 94,209,123, 80,198,195,255,230, 74,155, 14,255,100,138,156, 61, 26,200, 28,100,191,159, 62,125, 92, +114, 52,138,190, 52, 89, 70, 77, 46, 93, 50,181, 79,170, 82,158,211,189, 74, 38,203,163, 78, 3,145, 68,114,117,222,226,181,122, + 79,223,234,230, 83,247,149,121, 42,157,229, 79, 97, 17,129,189,196, 34,145,185,235,156, 2,194, 86,241,181,134,249, 57, 57,143, + 11, 43,139, 60, 89, 41,197,137,219,153,160,180,232, 17,233,192,181, 52, 20, 63,153,195, 98, 45,106, 86, 57,127, 63, 27,188,226, + 60, 20, 91,195,223, 27, 55,253,160, 12, 15, 85, 20,142, 92,186,240,101,115, 97,203, 70, 69,145, 44, 71, 71, 71, 56, 57, 57, 65, + 42,149,194,150,166,195, 18,202,235, 93,232,224,224,208,225,254,253,251,118,142,142,142,224,114,185,208,235,245,168, 95,191,254, +107,157,232, 82,175,144,201,205, 59, 15,152,211,182,115, 31, 92, 58,115,132,222, 58,179,125, 66, 85, 7, 66, 12,239,218,250,248, +215, 95, 47,172, 57,111,201,247, 34, 7, 59, 30,158,168, 13,224, 16,130, 0, 79,123,184, 74, 56,184,114,116,167,110, 88,159,214, + 54, 15,142,231,231,231,187,107,229,250,205,146,149,203, 22,117,114,240, 13,190,164, 74,123,150, 15, 0,133,153, 79,151,219,123, +133, 60,174,246,251,185, 83,141, 58, 12,128,167, 79, 96,183, 42,132,127, 41, 33, 68, 19, 23, 23, 23, 63,111,222,188,224,101,203, +150, 81, 46,151,107, 5, 32, 90,179,102,141, 38, 54, 54,246, 62,138,186,230,162,178,155, 77,151,110,245,167, 73,133,150,150, 46, +246,156,250,129, 94,246,104, 85,191,168, 85,116, 88,120, 91,248,249,251, 35, 46, 83,211, 56, 95, 99,229,171, 13,220,192, 13,155, +162,238,214,112,227,142, 55,107, 13,143, 81,201, 96,178,229,213,217,146, 4,249,146,104,150,131,152, 15,107,209,141,189, 74, 70, + 75,111,180, 64,171,183, 64,107, 48,163,208, 96,129,198, 96,129,149, 22,157, 19,132, 16, 24,205, 86,216,244,216,252, 74,221,119, +116,113, 67, 96,141,162, 94,178, 14,226,162,161, 30, 28,237,249, 69,125,164, 93, 93,225,225,225, 97, 83, 84,212, 96, 44, 58,197, + 13, 38,235,203,102,125,131,209, 12, 74, 41, 98, 98,158,205, 76,140,143,239, 87, 59,168,118,251,122, 13, 27,185,216,139, 56, 0, + 80,174,209,210,104, 52, 22, 7, 7, 7, 15, 23, 23, 23, 78, 90, 90,218, 75,243, 92,187,113, 39,243, 47, 71, 14, 99,224,192, 1, +234, 39,119, 30,188,236,226,174,213,106, 73,155, 54,109, 28,253,252,252, 56,122,189, 94, 89,181,125, 64,136,196,189, 78,127,191, +144,214, 75,222,125,127, 98,157, 78, 93,123,226,242,197,115,248,245,200,222,159, 11,179,159,217, 60,114,118,112,112,200,159,122, + 29,214, 10,170,243,167, 94,135,213,107, 6, 85,104,180,234, 53,108,214,130, 18, 30,206,158, 56, 64,117, 28,227,164,162,132,119, +114, 96,255,198, 47,191, 26,241,225,236, 90,189,250,142,192,187,163,223, 3,143,199,197,149,243,199,177,114,209,244,147,106, 69, +246, 24, 91,210, 4, 0,128,212,171, 39,168,237, 95,253, 19,255, 90, 13, 16,113,235, 58, 94,196, 60,138,126,112,247,102,253,218, +161, 45,225,238, 19,240, 9,169, 87,111, 25,125,252,216, 88,153,142, 65,167, 75,122,111,204,104,148,238,117,216, 42, 44,216,149, +188,122, 2, 0,208,168,178,141, 91,191,155, 22, 91,210,235,208,106, 52, 36,149,167,171, 40,200, 57,116,229,183,219, 51,250,133, +247,228,228, 42, 13, 69, 17, 44,133,161,120,209, 35,183,228,127,165, 30, 65, 62, 82, 60,139,142,176,234, 20,185,135,171,120, 94, +234,222, 27,210,227,113, 73,221,181, 90, 41, 8,160,171,234,249, 77,249,142, 19,150,175, 88,101,247, 32, 94,141,168, 4,101, 81, + 83, 33,159, 91,100,176,248,156,151,166,171,168, 55,123, 37,209, 33,194, 93, 58,118,204,112,228, 42,141,176, 90, 1, 30,151, 83, +188, 8,144,172, 34, 72, 81,105,144, 91,144,131,248,196, 36,200, 51, 95,128,195,225,192,205,167, 14,108, 13, 63, 90,168,208, 91, + 99,160,161,131,195,219,243,142,252,158, 1,123, 17, 15,122, 85, 22, 78,239,255, 46, 71,175, 86, 46,209,106,212, 71,180,121,177, +233,182,110, 59,135,144, 28,165, 90,231, 41,226,115,113,112,199,247, 24,242,222,164,226,157, 82,244,103,230,220,175, 1, 14, 65, +126,129, 10,132,144,170, 70, 73,239, 86,242,250,117,120, 27, 26, 40,203, 92,253,225, 65,161,252,167, 81,122,250,220,153,227,146, + 27,137, 34,220,121,150, 81,108,178,114,172,139, 63, 14, 79, 85, 41,242,123, 80, 74, 99,170, 84, 2, 14,167,199,176,177, 51,162, + 3,235,212,211, 95,126,164, 78,144, 23,154,202,205,115,104, 53,120, 94,244,189,147,235,123, 41, 76,113, 31, 73,125,234, 91,172, +102,243,114, 77,246,179, 69,229, 52, 29, 10, 23,173, 61,248,178,217,240,139,101, 59,139,254,183, 88, 96,161, 86, 80, 43, 48,229, +203,141, 48, 91, 45,176, 90, 44,176, 90, 40, 76, 22,106, 95, 89,113, 61,124,170, 31, 41,120,122, 32,100,228, 87,127,110, 46,116, +114,114,130,171,171, 43, 92, 93, 93, 81, 98,140,222,180,185,208,209,209, 17, 82,169, 20,215,175, 95,135, 88, 44,134, 68, 34,169, +146,110, 41,147,245, 81,179,142,253,190,239,220,247, 3,156, 63,178,137,222,189,118,124,162, 38,235,217, 22,155, 35,244, 22, 11, + 49,153, 76, 8,239,222, 49, 41, 50,250,249,153,185, 51, 62,236,217,186,247, 68, 81,171, 96, 95,232, 12, 22,164, 38,190,192,149, +163,219,117,117,106,122,159,237,210,174, 69,146,201,100,130,197, 98,169,244, 70,174, 51, 24,115,185,124,177,100,248,240,145,252, +187,119,238, 28,150,122,212, 57,104, 33,156, 7,132, 90, 27, 18, 66, 6, 54,108, 88, 23, 70,147, 21, 26,141,178,160,170,219,172, + 82,169,226,183,109,219, 86,115,204,152, 49,246,245,234,213,227,191,120,241, 2, 43, 87,174,204, 83,169, 84,241,182,106,156,187, +246,108, 13,143, 20,196, 10,173,198, 17, 1, 14,170,110,201,109, 91, 97,120,239,182,216,119,242, 6,174, 92,191,137, 36,181,244, +190,218,204, 59,154,146,148,174,175,239,162, 60,220,183, 85,117,238,193, 29, 5,135, 61, 58,205, 30, 74,169,232, 92,206,149, 5, +133,182,223,196, 1,149,214, 4, 71,251,162,241,158, 74, 34, 91, 92, 66,108,118, 68, 4,136,191,126, 51,162, 65,211,160,122,136, +140, 87, 32, 91,174,135, 86,111,134,213, 74, 97, 5,133,171,131, 16,118, 2, 14,146, 19,227, 97,165,198,132, 42, 94, 46,114, 58, +180,239,192, 3, 8, 8,161, 60, 62,143, 7,138,162,241, 21,197, 98,177,218,195,195,195,166,136,150,209,108,198,192,158, 45,208, +178, 89, 67,244,155, 88, 52,102,230,197,159,103,193, 89,202,199,190, 93, 91,144,124,117,245,174,192,214,147,206, 61,122, 24, 61, + 40, 58,242,247,145,239, 52, 17, 55,246,226,165, 11,202,211, 83,171,213,135, 9, 33, 66,129, 64,208,179,125,251,246, 46,135, 15, + 31,150,187,185,185, 89,133, 2, 65, 78,223, 62,189,173,124,129, 32,191,100,221,223,126,251,141, 63,113,226, 68,135,130,130,130, +228,172,172,172,155,148, 82, 83,197, 15,130, 33, 93,193,193, 94, 16, 98, 39, 21,219, 39,181,234, 58,220,167, 89,203, 22,178,254, + 3,135, 64, 36, 20,225,252,185, 51, 88,183,122,217, 1,117,198,147,177, 85,217,147,111,171,215, 97,106,114, 66,188, 70,171, 15, +109,208,180, 35,185,126,238,232, 84, 66,220, 87,115, 69,142,223,117, 29, 56,169, 86,124,186, 26,235,190,153, 9,103,153, 4, 9, + 47,158,106, 99,159, 60,220,104,210, 41,103,218,106,178, 0,192, 62,207, 50,168,213,232,158,206,122,163, 5,215, 46,157,212, 89, +205,214,158, 55,175,158,122, 81,173, 78, 51,187, 6,205,186, 56,231,254,186,101, 32,128,125,149,233,164, 62,249,115, 4,215, 63, +184,121,194,197, 75, 23,100,158, 1,245,185, 4, 4, 70,189, 14, 57,113,119,205,154,172,167, 74, 69,234, 67,155,122,225,230,165, +224,203,217, 11,190,253,168, 89,211,166, 18, 10,187, 63, 68,176, 74, 12, 86,174,210, 0, 55, 7, 33,180,202, 28,196,222, 61,163, +211,228,112, 43, 28,239,204,108, 40,180,207,205,206,122,217,196,166,206,122,214,178,162,245,115,179,179,132,102, 67,161,125,229, +183, 58, 46, 28, 37, 66, 60, 76, 72,123,153,248, 46,226, 23,229,102, 9,249,220,151,121, 90, 37,215,130, 74,232, 40,176,115, 66, + 90,158, 14, 4, 20, 86,139, 25,102,147, 1, 42,165, 18,105,233,153,200,202,204,130, 74, 37,135,189,212, 25, 13, 26, 55,135,131, +196, 14, 15,174, 28, 0,165,212,166,113, 13, 77,132, 31,220,172,101, 59,209,163,196,162, 92, 44, 59, 62,197,241,189,203,242,212, +202,236,118,170,244,152,216,170, 94,139,205, 22,203,133,168,199,177,245,171,121,215, 32,247, 95, 40,176,235,167,245, 48, 20, 71, + 54, 77, 38, 11, 30, 37, 23, 34, 35, 95,131,228,184, 39,212,106,177,252,107, 38,164,230,149, 31, 0, 4,175, 97,131,186,232, 62, +170, 63,126,248, 97, 35,226,226, 19,173, 75,166,246, 74, 86,171,228,239,216,106,178, 74,207,238, 93,152,249,116,249,216, 31, 18, + 82,143, 69,230,115,180,134,138,231,183,178,115, 15, 64,187,177, 43,207,106, 85,249, 66,139, 94,195, 59,190,107,236,222,178, 52, +139, 28, 52, 12, 75, 62, 27, 6,169,152, 7, 66, 8, 74,154, 11, 55,124, 61, 1,246,162,162,182,101,173,222,140, 81,211, 86, 97, +215,170,233,160, 0, 70, 12,185,161, 41,175,156,165,154,246,170, 37, 37,102,167,117,237,243,217, 69,157, 81,164,239, 61, 96,204, +189,166, 77,155,202,197, 98, 49,196, 98, 49, 28, 29, 29,225,236,236, 12, 39, 39,167, 74,183,189,220,193, 72, 75,245, 46,228,112, + 56,224,112, 56,144, 72, 36,144, 74,165,144, 72, 36, 21,106,150,107,178, 58,244,221,208,165,223, 56,156, 63,178,153,222,189,118, +252, 67, 77,214,179,159,108, 61, 70,197,205, 61, 15, 6, 14, 28, 24, 58,113,226, 68,193,130, 25, 19,207,158, 60,119, 37,230,224, +137,205,125, 10, 10,228,126,148, 82, 56,201,100, 41,195,250,180, 62,222,169, 77,179,164,139, 23, 47, 90,247,238,221,171, 39,132, + 60,172,172,156,185,217,217, 63, 95,188,112,105, 97,187, 14, 29,177,101,199,222, 14,209,143,159,116,120,241, 34, 22,126, 1,129, +168, 81, 51, 8, 26,226,140, 75, 87,175, 67, 45,207,254,217,150,114,190, 18,213, 34, 5, 5, 5,191, 15, 27, 54,172,251,141, 27, + 55, 56,195,134, 13,211,228,230,230,254, 86,242, 28, 85, 94, 52,171,180,230,239, 27,251,231, 0,248,185,122,199,247, 15,164, 25, +229,159, 0, 88,230, 31,224,143, 43,215,111,226,230,141,219, 27,115,237,253, 23,141, 29,245,254,132,234,125,185,227,250,182,170, +206,245,112,182,199,158,205, 43,185,199,110, 38,174, 74,204,179,108, 1,240,181, 45,199,232,229,141, 67,101, 68,155,186, 46, 48, + 89, 40,172,180,232,130,235, 96,199, 47,243,194, 91,150, 38,207, 32, 26,251,225,196,137, 47, 26, 52,108,252,233,168,247, 63, 20, + 52, 14,244,195,157,231,114,128, 16,184,120, 73,144,145,145,129,107,135, 54,155, 11,210,158,110,228,114,173, 95, 85,165, 46,229, + 39, 70,214, 46,181,222,132,220,220, 92, 92,185,114, 5, 37, 6,203,221,221,189, 76,163,245,170,102, 94, 86,250,111, 95,175,216, +212,102,252,187, 3,208,187, 99,125, 92,189,251, 2,134,226,241,154, 74,186,146,199,223,252, 81,248,201,176, 64,195, 71, 3,235, + 40,181, 38, 97,226,151, 9,138,107,165,123,197,190,170, 73, 41, 53, 16, 66,142, 61,123,246,172,109,163, 70,141,170,159, 58,117, + 42, 63,250,246,217,169,165,203,241,217,103,159, 73,127,248,225, 7,123, 74,233,111,122,189, 62,206,166,109,231, 96, 79,196,189, +123,174, 70,147, 21,215,111, 63,168,219,165, 77, 99, 88, 41,112,247,238, 93,108,217,186, 69,247, 48,234,254,119,133, 89, 94, 95, +149,103, 94,202,219,159,150, 55,232,117, 88, 90, 51, 35, 45,241,187,243, 39, 15,237,106,214,161, 15, 70, 78,249,234,171, 43, 39, +247, 46,108,210,174, 55,167,110,179,238,136,184,121, 9, 23, 78,157,249,214,168,206, 95, 88,217, 60,164,229,149, 83, 36,182,255, +184, 94,147, 14, 72, 78, 74, 68, 66,236,163,159,181,121,177,233, 82,175,144,159,211, 83,147, 62,172, 89,191, 13,110,156,221, 55, +181, 60,163, 85, 89,157,247,115, 23,111, 62,117,226,216,240,212,212, 31,189, 10,181, 58, 17,165, 84, 39, 18,242, 50,165,156,242, +123,168,255,249,184, 63, 54, 74, 92,106, 12, 28, 50,234,195,147,235,214,173,230,123, 58,217, 35,179, 64, 7,165,214, 8,149,198, + 8, 14, 33,168,237, 35,129, 70,149,143,171,135, 86,152, 12,234,130, 97,148, 62, 55,150,167, 41,245, 12, 89, 12,208, 41,159, 77, +186, 12,161,204,207,167,102,151, 57, 21, 70,235, 84,233, 81,125, 62,155,116, 60,152, 82,218, 69,234, 25,162, 42,153,235,176,172, +109, 39,164,232,252, 30,217,201, 15, 70,115,209,248, 99,102, 43, 96,177, 90,139,163,124, 0,125,217,158, 79, 42,217,118, 98,221, +127,242, 55,164,103,201,161, 53,152,160, 55,152, 97, 52, 89,192,225,114,225,228,236,132,160, 26, 97,144, 57, 57, 34, 43, 51, 29, + 55, 47, 30, 67, 76,212,213,223, 8,197, 34, 77,118,204, 69, 91,142,145, 64,236, 20,236,237,227,197,201, 80, 26, 32, 22,114,113, +255,234, 41,163,201,160,255,206, 22,147, 85,150,166, 60, 47,127,213,167, 51, 62, 31,177,125,219, 14,175,208,154,142, 72,205,213, + 34, 53, 71, 7,149,206, 84,108,196,172,208,171,115, 17,117,105, 71,166, 69,167, 90,245,175, 55, 90,102,163, 78,117,248,204, 29, +215, 89, 11, 87,112,159,191,136, 51, 45,254, 36, 60, 85,171, 86,246,170,114, 36,171, 20,219, 62,170,177,175,106,223, 40, 30,210, +228,171,196,138,159,191, 95,109, 46,164, 86, 88, 41,197,241,219,153, 47,155, 11,173,197,153,151,145, 47,228, 85,106,218,139,122, +166,218,173,213,102,201,158, 62,255,174, 0, 0,184, 92,238,203,165, 36,151, 74,167,211, 25, 94,167,185,240,213,196,119,171,213, + 10, 71, 71, 71,136,197,226, 42, 55, 73, 74, 60,131,135, 55,235,216,239,251, 46,253,199,227,194, 47, 63,209,187, 87,143, 77,210, +100, 63,219, 92,229, 28,133,130,130,104, 66, 72,236,119,223,125,215,120,203,150, 45, 53,103,204,152, 17,183,243,251,133,235, 0, + 32, 47,175,104, 14,224,200,200, 72, 58,105,210, 36,189, 78,167,139, 47, 40, 40,136,168,172, 3, 4, 0,104,115,236,151,110,217, +176,172, 65, 74, 90,198,128,192, 6,205,225, 94,179, 57,188,106,183, 64,129,202,136, 59,207,211, 17,247,228, 34,158, 92, 63,116, + 74, 35, 53, 47,172,106,153, 27, 53,106,228,199,225,112,106,168,213,106,175,122,245,234, 53,146, 72, 36,145,141, 26, 53, 10,227, +241,120,169,247,238,221, 75,172,138, 86,226,149,237,250,234, 29,223, 95,155,164,114,232, 20,151,169, 9, 75, 82, 57, 68,106, 68, +178,233,217, 23,215,232, 61,187,127,183,138, 26,115,163, 15,238, 80, 30,222,179,121, 37,119,212,132,207, 44,143, 20,206,159,240, +196,194,243,223,188, 23, 90,133,102, 41, 78,198, 71, 99,250,253,103,120,135,226, 72, 86,241,255, 54,133,233,229,242, 7, 10, 0, + 95,136,125,234,127,255,232,147,137, 95, 55,108,214,102,116,251,119,134,113,204, 2, 41,206,254,242, 35,141,143,186,116,144, 71, + 45,115, 53, 54,204, 6, 80,105,115,144,193, 80,169,201, 42,179,185, 39, 69,210,241,224,222,173,239, 29,254,229,200, 55,253,251, +246,115,221,240,229, 80,172,216,116, 20, 18,177, 8,212,106,197,176,206,254,131,159,236,237,209,199,207,211,206,247,240,229,212, +107, 83, 86, 63,250, 66,163, 49,198, 84, 22,137, 41, 54,206,215, 29, 28, 28,114,218,182,109,219, 82, 36, 18,145,220,220, 92,158, +135,135,135, 89, 38,147, 25, 82, 83, 83, 53,122,189,254, 48,165,180,176, 42,219,105, 52, 89,145,144,165,195,175, 71, 14,227,193, +237,139,120,242,228,153,234,201,227, 39,235, 9,143,174, 86,103,198,228,191,206,190,179,150,217,235,144, 86,185,215,161, 69,175, +218,179,115,227,226,206, 26,157,254,189, 70,173,195, 81,189,110, 27,142,209,100,193,195,187,151,113,249,208,234, 21, 6, 85,222, +172, 55, 57,198, 62,213,106, 6, 81,174, 16,191, 95, 57, 9,106,181,110, 4, 0,106,181,110,140,188,113,234,195, 22,189,198,193, +197,163,122, 35, 66, 8,169,234,124,143, 0, 32,224,113, 10, 79, 31,222,254, 75, 66, 66, 2,158, 62,125,138,231,207,159, 35, 63, + 63, 31,123,246, 36, 84,233,248, 20,230, 39,156,151,186, 6,246, 24, 52,116,228,241,193,195,223,181,171, 25, 20,202, 9,174,230, + 12, 87, 41, 15,207,158, 39, 34,230, 94,148,245,217,157, 83, 58,163, 50,187,191, 38, 63,161, 92,227, 39,113,175,231, 73, 56,116, + 86,201,220,133,173, 90,181, 9,254,124,201, 55, 45, 93,221, 61,202,188,142,231,229,100, 11,103, 78, 57, 22,124,243,214,239, 54, +205,117,104,181, 88,242, 38,188, 55,204,202, 45,154, 40, 20, 47,227,212,164,232, 96, 23, 61, 76, 21,189, 79,173,230, 74, 35,248, +239, 15,104, 7,179,213,138, 66,173, 17,202, 66, 61, 20, 42, 29, 50,178,243,240, 32, 42, 10, 87,143, 31,195,139,103, 15,226, 77, + 6,195, 57, 14,135, 28,210,100, 62,187, 90,181,150, 38, 94, 77, 87, 23, 23,196,231,171, 97, 39,228, 33, 49,230,158,190, 80,169, +216,253,186,245, 72,147, 27,147, 33,241, 12,238, 62,108,216,240, 51,157,123,244,149, 53,107,221,213,222,205,209, 9, 2, 30, 69, +108, 66, 58, 34,126, 59, 83, 24,247,224,154,210,100, 80,247,124, 27,179,190,252, 47, 99, 83,175, 67,163,190,176,207,136,126, 29, +142,112,185, 60,161,213,106,214, 27, 13,250, 65,111, 98,178,254, 42, 40,181,164,190, 55, 98,192, 31,158, 13,204, 86, 42, 30, 49, +228,172,182,244,179,130,201, 66,237, 71, 12,249, 77, 83,116, 1, 41, 63,177,239,101,211,222,190,243,169, 73, 73,121,119,243,243, +245,151,223,180, 39, 96,233,185, 11, 43,232, 93, 88, 24, 18, 18,242,210, 92,113,185, 92, 88, 44, 22,155, 47, 68, 2,145,120,124, +231,190, 31,144, 11, 71,127,162,119,174, 28,253, 72,147, 29,179,233, 13,218,153,141, 0,110, 19, 66, 30,205,157, 59,183,153,167, +167,167,231,252,249,243,237,148, 74, 37,127,195,134, 13,186,220,220,220, 76,165, 82,121,147, 82,170,181, 93, 51,194, 4, 96,160, +212,179, 78, 39,122,248,167,110, 78,110,190,221,101,238,213,106,201,115,210,226, 21, 57,233,231, 0, 92, 40, 30, 40,178, 74,132, +133,133, 5,114, 56,156, 97, 0, 26, 72, 36,146,218, 82,169, 84, 68, 41, 13, 33,132, 68, 91,173,214,168,122,245,234,157, 0, 80, +165,227,151,120,101,187,190,253, 71, 91,247,230,107,172, 2, 3, 71,176, 55,241,202,118, 61, 0,100,157,155,161, 1,240,171,103, +167, 89, 3,143,221, 76, 92, 23, 93, 32,155,154,125,121,233,177,170,150, 89,158,114,191,246,219,170,255,218,244,232, 84, 0,239, + 73, 60,131, 87, 62,140,188,185,128, 80,240, 45, 48, 47,214,100,197,222,123, 27,250,124, 62, 95,231,235,235, 91,102,239, 66,145, + 72,164,171,248,152, 95, 49, 3,216, 66, 72,199, 29, 71, 14,236,120,239,232,177, 95,191,105,223,165,191,171, 93,181,106,168,225, + 65,176, 99, 86,147,169, 23, 35,115,238,244,253,252,218, 15,113,233,186, 40, 74,105,149,242, 97, 84, 42, 85, 12, 33,164, 64,173, + 86,247,163,148,166, 16, 66,252, 10, 10, 10,238,155, 76,166,135, 85, 54, 4, 86,140,108,213,170,249, 30, 66, 8,143,154,173,203, +111,242,185,123,117, 25, 79, 82, 95,199, 88,148, 38,180,134, 35,166,205, 95,219,164, 86,237, 58, 77, 74,230, 58,172, 95,221, 1, + 19,191, 88,217,164,122,205,160, 38,255,153,255, 80, 90,217, 57, 73, 9, 33, 99,143,108, 93,126, 45,242,214,229, 57,110,222,213, +171,103,166,198, 61, 73,121,126,255,107,179, 86,113,228, 77,143,115,194,243,232,213, 91,190,251, 98, 70, 70, 90,252,150,194,236, +152, 71, 0, 80,152, 29,243,200,222,179,206,151,185,153,169, 51,242,178,227,190,123,221,125, 81, 88, 88,152,190,123,247,110,167, + 54,109,218,112, 60, 61, 61,145,147,147,131,203,151, 47, 91,173, 86,107, 90, 85,181,212,121,113,151, 9,169,229,242,243,166,239, +151, 11, 36, 14,189,204,102,179, 15,165, 0,143,199,203, 48,104,148,103, 84, 28,201,231, 52, 63,161,146,122,105, 37, 0, 56, 37, +115, 23, 90,173, 86,178,124,221,142, 68,190,157, 67,153,243, 35,154,116, 42,123,171,213,106,243, 92,135, 5, 73,247,106,189,181, +155, 53,165,139, 26, 53,109, 57,199,100, 50,234, 80,148, 47,166, 3,160,163, 20,121, 28, 14,185,202,181,154,206, 42,222,224, 97, +138, 16, 56, 82,194,131,131,152, 7, 2, 2,181, 34,159, 86, 37, 39,171,204,227,157,245, 44,154,144,142, 1,167, 13, 7,198, 92, + 58,127,106,136,197, 98,169, 81, 92,115, 18,244,218,194,131,234, 12,231,159, 41,189,107,198, 63,159,147, 37,102,139, 87,193,137, + 29,131,162,185,125,254,167,201,139,191,211,244,109,234,101,100,229,239,232,209,127, 6, 77, 72,204,190,147,156,169,255,185,244, +180, 58,111,170,153,146,146,115,185,184,185, 80,255,231, 8,197,235,245, 46,124,105,140,117,218,111,215,204, 29, 14,157,182,112, +167, 38, 59,102,199,219, 49,177, 84, 11,224, 42, 33, 68,246,209, 71, 31,133, 73,165, 82,126,110,110,238,109, 74,169,226,117, 53, +213, 89, 49,151, 1, 92, 6, 48,235,109,148, 49, 50, 50, 50,174,113,227,198,187, 56, 28, 78, 13, 74,169, 39,165, 84, 86,108,100, +115,121, 60, 94,218,227,199,143,211, 94,107,219,245, 14,167,213, 6,110,144,153, 58,159,249,147,249,112,245, 56,159,148,111,249, +137, 43,177,251,159,201, 49, 40,204,122, 22, 13, 96,208,219,214,173,104,156, 44,219,235,209,127, 12,215,149,147,219,223,227, 8, +101,139,187, 4,235, 52,221, 63, 77,251,250,250,195,156,219,148, 82,213, 27,212,209, 28,161, 80,168, 37,132,248, 9, 4, 2,173, +193, 96,136,122,173,253, 87,100,242,221,223,230,190,179,130,220,107,210,164,105,149,214,183, 33,146,183,163,120,121,171,168, 51, +159,126,141,226,230,239, 63, 68, 40,178, 98, 22, 3, 88,252, 38,218,119,239,222, 61,254,221,119,223, 41,214,173, 91,231,111,177, + 88,236, 13, 6,131, 70,171,213, 38,164,166,166,254,254,122,199,252,133, 1,192, 39,197,203,107, 68, 93,158,102, 74, 61,235,172, +109,221,170,245, 39, 69, 15,232,116,109,194,213,181,211, 42,250,142,212,179,142,182,244,250, 21,205,117,248, 86,143, 75,118,204, + 70, 0, 27,255,186, 72,133, 53,103,228,224,126, 64,241,192,220, 86,179, 57,231,173,200, 22,157,243, 91,241,154,147,164,255, 19, +160,148,102, 0,216, 92,108,152,233, 95,246, 67,182,230,171, 48, 77,166,201, 52,255, 93,154,182,204, 78,192,246, 39,211,252, 43, + 53,197, 62,245,252, 0,192,150, 73,215,203, 91,159,237, 79,250,175, 73,104,183, 97,127, 76, 40,195,108,217, 54, 96, 41,131,193, + 96,252, 5, 79,123, 86,182, 23, 24,255, 77,108, 53, 88,175,187, 62,227, 95,119, 77, 43, 55, 39,154,160,104, 22,236,178,190,100, +179, 83, 37,132,116,125,141, 66, 93, 96,154, 76,147,105, 50, 77,166,201, 52,153,230,191, 75,179, 50,237,191, 99,164,172,140,136, +214,201,226,230,195,162,129,217,254,170, 5, 64, 87,166,201, 52,153, 38,211,100,154, 76,147,105, 50,205,127,211, 2, 96, 66,201, +255, 28, 48, 24, 12, 6,131,193, 96, 48,254, 18, 88,142, 22,131,193, 96, 48, 24, 12,198, 27, 80, 86,211, 33, 51, 90, 12, 6,131, +193, 96, 48, 24,111,129,138,146,225, 89,211, 33,131,193, 96, 48, 24, 12,198, 27, 80, 18,209, 34,132,120, 19, 66, 38,148,142,112, + 49,163,197, 96, 48, 24, 12, 6,131,241, 22,160,148,102,188, 26,221, 34,148, 82,156, 60,121,146,134,135,135, 19, 0,127,248,159, +193, 96, 48, 24, 12, 6,227,255,131,191,179, 23, 33,132,120, 3, 8, 47,189, 57, 37,195, 59,112, 74,111, 32, 59,204, 12, 6,131, +193, 96, 48,254,155,102,235,239, 88,238,146, 72, 86,169,229,229,164,217, 47,141, 86,120,120, 56, 97,102,139,193, 96, 48, 24, 12, +198,127,139,127,162, 23,225,188,186,129,236, 48, 51, 24, 12, 6,131,193,248,111,154,173,127,210,246,176,225, 29, 24, 12, 6,131, +193, 96, 48,222,128,138,114,180, 72,241, 80,241, 12, 6,131,193, 96, 48, 24,140,215, 51, 90, 19, 74,247, 54, 44,253,154, 69,180, + 24, 12, 6,131,193, 96, 48,222,130,217, 42,243,125, 22,209, 98, 48, 24, 12, 6,131,193,248,107,248, 75, 7, 44, 37,132,116,101, +154, 76,147,105, 50, 77,166,201, 52,153, 38,211,252, 39, 83, 50, 34,124,241,255, 19,138,115,182,254,122,163,197, 96, 48, 24, 12, + 6,131,241, 47, 32,156, 82,186,185, 84,110, 86, 56, 51, 90, 12, 6,131,193, 96, 48, 24,111,145,178, 38,151,102, 70,139,193, 96, + 48, 24, 12, 6,227, 45, 26,172,210,175,153,209, 98, 48, 24, 12, 6,131,193,248,139, 96, 70,139,193, 96, 48, 24, 12, 6,227, 47, +130, 0, 40,179,231, 0,165,244,130,205, 34,175,209,251,160, 50,125,166,201, 52,153, 38,211,100,154, 76,147,105,254,243, 52, 43, +211,174,138,255,248,159, 49, 83,255, 25, 25,254,100,241,223,255, 52, 31, 82, 74,255,178, 5, 64, 87,166,201, 52,153, 38,211,100, +154, 76,147,105, 50,205,127,242, 2, 96, 66,233,191,165, 23,214,116,200, 96, 48, 24, 12, 6,131,241,230, 81,173,210,227,104,189, + 28, 37,158, 77,193,195, 96, 48, 24, 12, 6,131,241, 6,148, 53,172, 67, 9, 44,162,197, 96, 48, 24, 12, 6,131,241, 6,188, 58, +207, 97,233,215,204,104, 49, 24, 12, 6,131,193, 96,252, 5,134,139, 25, 45, 6,131,193, 96, 48, 24,140,183,104,178,254, 20,221, + 42,206,146,199,201,147, 39,105,120,120, 56, 97,187,138,193, 96, 48, 24, 12,198,127,131,127,162, 23,225,148,222,176,147, 39, 79, + 82,118,152, 25, 12, 6,131,193, 96,252,183, 76,214,223,209,139, 16, 66,188, 75,122, 27, 22, 47,222, 37,159,177, 94,135, 12, 6, +131,193, 96, 48, 24,111, 70,120,233,158,135,197,205,135,155,153,209, 98, 48, 24, 12, 6,131,193,120, 11,148,149, 8, 15,176, 28, + 45, 6,131,193, 96, 48, 24,255, 35,252, 19,189,200, 75,163,197, 96, 48, 24, 12, 6,131,193,120, 13, 51, 85, 70, 52,171,164, 41, +145, 25, 45, 6,131,193, 96, 48, 24,140,183,100,184, 94, 29, 37,158, 25, 45, 6,131,193, 96, 48, 24,140,191,192,100, 1,127,241, +128,165,132,144,174, 76,147,105, 50, 77,166,201, 52,153, 38,211,100,154,255,116,147, 85,242,151, 77, 42,205, 96, 48, 24, 12, 6, +131,241, 22, 97,147, 74, 51, 24, 12, 6,131,193, 96,252, 69,176, 73,165, 25, 12, 6,131,193, 96, 48,254,159, 13, 23, 51, 90, 12, + 6,131,193, 96, 48, 24,111,209,100,189,106,182, 88,142, 22,131,193, 96, 48, 24, 12,198, 27, 80, 81,142, 22, 1,208,181,156, 47, + 93,168,130,139,235,250, 26,133,186,192, 52,153, 38,211,100,154, 76,147,105, 50,205,127,151,102,101,218, 85,241, 31,255,171,252, + 97,168, 7, 74,233, 95,182, 0,232,202, 52,153, 38,211,100,154, 76,147,105, 50, 77,166,249,111, 90, 0, 76, 40,249,159, 53, 29, + 50, 24, 12, 6,131,193, 96,188, 97, 4,171,188,207,152,209, 98, 48, 24, 12, 6,131,193,120, 3,216, 56, 90, 12, 6,131,193, 96, + 48, 24,127, 17,132, 16,239,226, 17,225, 75,254,134, 49,163,197, 96, 48, 24, 12, 6,131,241,118, 8, 47,142,106,149,252,101, 70, +139,193, 96, 48, 24, 12, 6,227,109, 81,222, 56, 90,132, 82,138,147, 39, 79,210,226,215, 29,195,195,195,175,178,221,197, 96, 48, + 24, 12, 6,227,255,147,127,170, 23,121, 25,209, 10, 15, 15, 39, 0,174,176, 67,205, 96, 48, 24, 12, 6,227,191,193, 63,209,139, +112, 94,113,146, 29,217, 97,102, 48, 24, 12, 6,131,241,223,224,159,232, 69,120,175,184, 72, 6,131,193, 96, 48, 24,140,255, 10, +127, 87, 47, 66, 8,241, 6, 16, 14,224,100,241,223,151, 67, 62,176,113,180, 24, 12, 6,131,193, 96, 48,222,208, 35, 82, 74, 55, +255, 97,234,157, 18, 19, 86, 60, 84, 60,131,193, 96, 48, 24, 12, 6,227, 53, 40,107,100,248, 18,195,197,140, 22,131,193, 96, 48, + 24, 12,198, 95,101,194,152,209, 98, 48, 24, 12, 6,131,193,120, 67, 67, 85, 42,170, 85,186,249,144,243, 23,255,104, 87,166,201, + 52,153, 38,211,100,154, 76,147,105, 50,205,127,186,201,162,148,110, 46, 89, 74,155, 46, 54, 50, 60,131,193, 96, 48, 24, 12,198, + 95, 4,235,117,200, 96, 48, 24, 12, 6,131,241, 6,188, 26,197, 42,221,116,200,140, 22,131,193, 96, 48, 24, 12,198, 91, 48, 91, +101,189,207,154, 14, 25, 12, 6,131,193, 96, 48,222,128,178,134,119, 96, 70,139,193, 96, 48, 24, 12, 6,227, 47, 54, 92, 4, 64, +153, 61, 7, 40,165, 23,170, 32, 92,229,222, 7,149,233, 51, 77,166,201, 52,153, 38,211,100,154, 76,243,159,167, 89,153,118, 85, +252,199,255,178,193,122,217,148, 72, 41,253,203, 22, 0, 93,153, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,173, 11,107, + 58,100, 48, 24, 12, 6,131,193,248,139,176,217,104, 17, 66,220,249,124,254, 28,123,123,251, 31,236,237,237, 55,241,249,252,239, + 8, 33,206, 85,253, 65,169, 84, 58,213,219,219,251,169,183,183,119,106, 64, 64,192, 41, 71, 71,201,167,181,236, 72,123, 66, 8, +255, 45,132,238, 56,132,144, 96, 66,200,167,246,246,246, 79,196, 98,113, 34, 33,100, 23, 33,228, 83, 66,136,219,155,104, 47,246, + 37,131,162, 63,237,127,116,177, 47, 25,244,202,111,134,123,121,121, 93, 39,132,116,127, 91, 7,101,132,132,116, 29, 34, 37,201, + 67,164, 36,121,132,228,245, 7,133,115,116,116, 28,237,227,227,115,211,205,205, 45,205,199,199,231, 55,177, 88, 60,184,138,251, +211,195,203,203,107,133,191,191,127,140,175,175,239,154,226,217,201,255,103,105,111, 71,218,181,178, 35, 57,173, 69, 68,213, 86, + 68,126,104, 45, 34,221,186, 19, 98,255,154,117,169, 45, 33,228,144, 76, 38,187,207,231,243, 79, 16, 66, 6, 22,215,175,129,124, + 62,255,132, 76, 38,187, 79, 8, 57, 68, 8,105,251,154,245,116, 5, 33, 36,141, 16,178,180,248,245,199,254,254,254,170, 70,141, + 26, 37, 54,106,212,104,123, 80, 80,208,187,182,234, 73, 36,146,110,254,254,254,135, 3, 2, 2, 18, 91,183,110,157, 95,173, 90, +181,103,126,126,126, 59,236,236,236, 58,178, 75, 28,131,193, 96,252,151,177, 33, 60,216, 7,192, 55, 0,214, 71, 69, 69, 69, 80, + 74, 35, 40,165, 17, 81, 81, 81, 17, 0,126, 0,176, 12,229,132, 16, 95,125,223,213,213,117,209,226,197,139,117, 25, 25, 25, 52, + 39, 39,135,198,196,196,208,213,243,190,176,246,112,225,209, 64,119,103,141,183,183,247,139,128,106,213,246,213,151,114,190, 0, + 80,171, 42,225, 74, 0,206, 98,177,248,246,188,121,243,212,215,175, 95, 87, 27, 12, 6,181,213,106, 85,167,167,167,171, 47, 92, +184,160,110,211,166,141, 26,192, 52, 0,220,215, 9,129,126,229,131,171,116,235,151,244, 43, 31, 92, 45,253,126, 72, 72,200, 99, +171,213, 74, 7, 13, 26,164, 7,224,251, 38, 97, 85, 95,192,174,190, 35,156, 6, 75,145,101,222,241, 53,165, 27,102,208,193, 18, + 36,191,142,166,135,135,199,175, 83,167, 78, 85,166,165,165, 81,189, 94, 79,147,147,147,233,196,137, 19, 21, 30, 30, 30,187,109, +220,159,174,161,161,161, 89, 55,111,222,180,202,229,114,122,229,202, 21,107,131, 6, 13,178, 0,120, 87, 53,164,236,225,225,177, +217,199,199,231, 84, 85, 22, 15, 15,143, 45, 85, 61, 70, 45, 68, 72, 54, 70, 92,166,244,238, 57,122,108, 80, 43,186,186,105, 53, + 58,208, 69, 40,111, 43,196,199, 29, 0, 94, 21,234,210,144, 14, 29, 58, 20, 62,124,248,208,146,151,151, 71, 31, 63,126,108, 29, + 63,126,188, 14, 64,244,248,241,227,117,143, 31, 63,182,230,229,229,209,135, 15, 31, 90, 58,116,232, 80, 8, 96,156,173,229, 44, +126,184,217,182,112,225, 66, 74, 41,165,139, 23, 47,166, 13, 27, 54,164,157, 59,119,166,106,181,154, 82, 74, 19, 41,165,219,205, +102,243,123,182,104,202,100,178,209, 83,167, 78, 85,107, 52, 26, 90,130,213,106,165,114,185,156,174, 95,191,190,208,203,203,235, + 20, 0, 55,214, 60,193, 52,153, 38,211,100, 77,135,127,105,170,148, 55,128, 9,165,150,151,247,202,202,190, 56,226,139, 47,190, + 40, 49, 85,167,219,182,109,123,231,189,247,222,139,120,239,189,247, 34,218,182,109,123, 5,192,217,123,247,238, 69,204,156, 57, + 51, 2,192,136,138, 14, 4, 0,231,214,173, 91,203, 51, 51, 51,105, 80, 80, 16,173, 94,189, 58,205,204,204,164,148, 82,122,119, + 72, 19,122,177, 46,104,202,181,211,244,220, 47,135,232,120,111, 30,109,231, 45, 51,121,123,121,229,185,185,185, 45, 65,241,156, +140,229, 29, 92, 0, 3,234,214,173,171,138,142,142, 86,199,198,198,170, 23, 45, 90,164,238,220,185,179, 58, 52, 52, 84, 61,112, +224, 64,245,186,117,235,212, 70,163, 81,189,101,203, 22,181,163,163, 99,244,171,102,235, 77,140, 22,143,199, 91, 27, 21, 21, 69, + 95,188,120, 65, 1,172, 40, 79, 19,128,204,201,201,169,167,179,179,243, 52, 39, 39,167,158, 0,100,148, 82, 4, 1,210, 70, 50, +248,127,220, 40, 48,228,196,136,174,181,214,119,109,214,100,176, 3, 71,110,250,126, 6,165,131,252, 95,203,104,201,100,178,209, +159,126,250,169, 74,175,215, 83,141, 70, 67,213,106, 53,213,104, 52, 84,165, 82,209, 17, 35, 70, 40,237,236,236, 6, 84,166,233, +230,230,246,245,181,107,215,204,153,153,153,244,218,181,107,244,212,169, 83,116,195,134, 13, 86, 15, 15,143, 85, 85, 61, 1,189, +188,188,206,159, 59,119, 46, 34, 50, 50, 50,226,246,237,219, 17, 38,147, 41,194,104, 52, 70, 24,141,198,136, 19, 39, 78, 68, 28, + 57,114, 36, 98,255,254,253, 17, 6,131, 33,194, 96, 48, 68,232,245,250,136,154, 53,107,158,169,234, 49,106, 46, 66,138,225,250, + 49, 74, 87, 77,166,138,111, 39, 81,249,244, 94, 52,123, 98,123,250, 67,179,106,180,189, 24,199, 75,215,163,138, 52,249,124,254, +213,196,196, 68,235,236,217,179, 13,245,234,213, 83,140, 29, 59, 86,167,215,235, 41,165,148,234,245,122, 58,118,236, 88, 93,189, +122,245, 20,179,103,207, 54, 36, 36, 36, 88,121, 60,222,133, 42, 24,173,101, 37, 38,235,234,213,171,180, 52,106,181,154,118,238, +220, 57,177, 97,195,134,219,107,212,168, 49,178, 50, 77,169, 84,218,111,214,172, 89,106, 90, 6, 38,147,137,170, 84, 42,154,144, +144, 96,173, 94,189,122, 58, 0, 87,118, 49,103,154, 76,147,105, 50,163,245,151, 25,173, 9,229,189,174,112, 39,206,156, 57, 51, +130, 82, 26, 49,119,238,220,136,226,200,150, 0,128,180,120,225, 1, 24, 62,107,214,172, 8, 74,105,196, 23, 95,124, 17, 1,160, + 79, 5, 70,171,207,193,131, 7,141,107,214,172,161,158,158,158,212,203,203,139,174, 93,187,150, 90,173, 86,154,121, 98, 55,189, + 88, 23,244,201,156, 49,148, 82, 74, 99,150, 76,161, 23,235,130,198,109,252,138,142, 26, 53, 74, 99,111,111, 63,162, 2, 3,227, +210,164, 73, 19,149, 86,171, 85,239,216,177, 67,109,111,111,127, 23, 64, 61, 0,124, 20,245,170,148, 2,120,183, 94,189,122,202, + 71,143, 30,169,247,238,221,171, 6,176,200,198,200, 70, 45, 0,157, 36, 18,201,192, 89,190,252, 88,186,245, 75, 58,203, 19, 15, + 1, 52, 0,224, 94,188,142,207, 23, 95,124, 65, 41,165,212,207,207,239, 90, 57,219, 46, 11, 13, 13,253, 34, 54, 54,118,129,201, +100, 90, 16, 25, 25,185,160, 78,157, 58,179,251,214,244,110,117,116, 68,183, 48,197, 87,147,194,232,202,233,161,223,189,211,188, +235,190, 97, 29, 71,188, 95,195,237,250, 88, 15, 59,205, 80, 25, 87, 53,220,254, 15, 58, 54, 85,108, 95, 95,223,219,201,201,201, + 47,205,149, 74,165,162,105,105,105, 52, 62, 62,158, 94,191,126,157,122,123,123, 95,172, 76,211,203,203,235,113,114,114, 50,221, +184,122, 53, 29,212, 32,132,182,119,114,160, 29,156, 29,104, 83,169, 93, 97, 93,160,105, 85,141,214,253,251,247, 35, 0, 68, 0, +136,200,203,203,139,200,203,203,139, 40, 40, 40,120,249, 30,128, 8,133, 66, 17,161, 80, 40, 34, 12, 6, 67, 68, 96, 96, 96,149, +141, 86, 27, 59,180,105, 97,135,252, 86, 34,104,251,248,186,165, 79,170,233,102,185, 53,162, 21, 45,152,220,153,174, 9,243,165, +109,133,248,216,198,227,222, 71, 40, 20, 94, 1, 48, 3, 0, 23,192,152,158, 61,123,106, 40,165,180,103,207,158, 26, 0, 99,138, +223,255,148,199,227, 93, 0,208,211,150,114, 2,224,212,174, 93,187,176, 36,146, 5,224,247,218,181,107, 23, 54,108,216,144, 54, +108,216,144,250,249,249,169, 0,140,177,245,130, 86,171, 86,173, 24,173, 86,251,210, 0,202,229,114,154,158,158, 78,227,226,226, +104,116,116, 52,189,123,247, 46, 77, 76, 76,164, 7, 14, 28,176, 56, 57, 57,157,100, 23,115,166,201, 52,153, 38, 51, 90,127,157, +209,122,117,249,147,209, 58,113,226, 4,125,229, 75,223,222,187,119, 47, 98,214,172, 89, 17,175, 58,181, 87,197,231,206,157, 91, + 18,245,250,166,130,155,255,150,152,152, 24, 58,102,204, 24, 26, 28, 28, 76,131,131,131,233,123,239,189, 71, 21, 10, 5, 85, 63, +127, 68, 47,214, 5,189, 59,180, 41,165,148, 82,213,147, 72,122,177, 46,104,196,168,214,244,193,131, 7,180, 90,181,106,231, 42, +248,253,227,191,253,246, 91,206,238,221,187, 51, 1,236, 42, 54, 88, 45, 1,172, 21,139,197,219,138,155, 11,171, 3,112, 14, 10, + 10,202,215,104, 52,234, 65,131, 6,169, 1,248, 87,160,217, 33, 56, 56,248,197,150, 45, 91,104,118,118, 54,205,207,207,167,203, +219,212,161,116,235,151,116,113,211,234,214,141, 27, 55,234,103,204,152, 81,232,226,226,114, 2,128,207,160, 65,131,204,148, 82, +218,190,125,251,172,178,244,156,156,156,122,198,198,198, 46,208,233,116, 11,228,114,249,130,252,252,252, 5,199,142, 30, 93,208, +163, 65,157, 49,138,175, 38,133, 29, 29,209, 45,236, 29, 95,231,129,171,186, 55,251, 48,109,246,184, 65,115, 91,215,123,162, 91, +246,201,229, 33, 53, 61, 87,188,206, 1,119,119,119,207,208,235,245, 20,192,159,150, 23, 47, 94, 80, 87, 87,215,228,202, 52, 92, + 92, 92,230,126, 58,124,152,101, 64,117, 95,250, 98,205, 60,106, 58,191,151,154, 78,237,160,207,191,157, 78,251,122,185, 41, 91, + 10, 56,179,108, 45,143,151,151,215,249,219,183,111,255,193,104, 21, 20, 20,148,105,180,148, 74,101,132,193, 96,136,168, 93,187, +246,153, 55,173,248, 45,133, 8,236, 32,230,222,141, 28,211,142,230, 76,234, 76,123,202,248,137,111,112, 18, 13, 7,112, 5,192, +168, 42,126,143, 3, 96, 89,137,161,250,246,219,111, 41,165,148,214,174, 93,187, 16, 0,231, 13,202, 35, 11, 9, 9,137, 31, 55, +110,156,185,110,221,186,217,109,218,180,145,223,185,115,135, 94,189,122,149,158, 58,117,138, 30, 58,116,136, 62,122,244,136,166, +165,165,209,152,152, 24, 26, 30, 30, 46, 7,208,129, 93, 16,217,194, 22,182,252, 47, 47,175,122,145,127, 76,175,195,147, 39, 79, +210,240,240,112,114,242,228, 73, 90,156,172, 43, 3, 96,215,180,105,211,156,101,203,150,173, 44,158,195,135, 52,228,145, 33, 93, +236,249, 15,186,216,243, 31, 52,228,145, 33,132, 16, 66, 41,221,188,100,201,146,175, 27, 54,108,152, 1, 64, 76, 8,241, 42, 39, + 23,172,157,171,171, 43,146,147,147, 33,147,201, 32,147,201,144,156,156, 12, 74, 41,204, 20, 48, 81, 64,111, 52, 66,171,213, 66, +103,165,208, 90, 1,165, 90, 13, 47, 47, 47, 24,141,198,192,114,146,138, 27, 13, 29, 58, 52, 48, 52, 52, 52,103,230,204,153,233, + 0,198, 1,216,246,193, 7, 31,156,255,253,247,223, 67,213,106,117,126,116,116,180,174, 65,131, 6, 61, 1,120,197,198,198,142, + 94,191,126, 61,198,140, 25, 3, 0, 29,202,209,108, 16, 30, 30,126,234,209,163, 71,129,163, 70,141,194,149, 43, 87,176,124,249, +114,228,230,230, 82, 0,208,235,245,212, 98,177, 24, 91,183,110,109, 92,179,102, 77,243,246,237,219,223,174, 89,179, 38, 23, 0, +226,227,227,159,151,163, 89, 39, 32, 32, 0,122,189, 30, 57, 57, 57,120,244,232, 17, 28,100, 50, 68,165,231,122,118, 92,181, 49, +111,206,209,243,252,225,205, 67, 93,166,117,107,163, 95,122,238, 74, 80, 61, 31, 79, 79,131,209,228, 21,147,145,149,254, 58,121, +119, 2,129, 32, 57, 55, 55, 23, 6,131, 1, 90,173, 22, 74,165, 18,121,121,121,200,205,205, 69,122,122, 58, 4, 2,193,139, 74, + 19,233,243,243,175,197,255,118,149, 28,248,241, 91, 4,154,243,193, 59,188, 22,188, 95,127, 64, 45, 67, 14, 54,205,155,232, 96, +112,117, 95, 40,115,116, 44,112,118,118,222, 76, 8,169, 93,153, 94, 88, 88, 24,242,242,242,144,151,151, 7, 87, 87, 87, 56, 59, + 59,195,217,217, 25,114,185, 28, 10,133, 2, 74,165, 18, 65, 65, 65,104,212,168, 17,118,238,220,249, 86,242, 15,111,234,105,156, + 25,150, 73,231,159,165, 67, 32,145,160,166,179, 52,160,185, 3,113,169, 32, 73,189,179, 64, 32, 56,232,234,234,122,142, 16, 50, +153, 16, 34, 33,132, 76,118,117,117, 61,199,231,243,251, 3, 88, 76, 41,221, 93,197, 98, 44, 93,184,112,225, 23,177,177,177,246, + 15, 30, 60,192,204,153, 51,177,104,209, 34, 60,127,254,252,123, 74,169,181,248,119, 63,114,115,115, 59,193,229,114,127, 34,132, +244, 34,132,244,244,241,241,233, 82,137,110,255, 25, 51,102,232,154, 52,105, 18,243,228,201,147,254,191,253,246, 91,211,233,211, +167, 43,146,146,146, 16, 19, 19, 3,111,111,111,248,249,249, 65,173, 86,163,160,160, 0,253,251,247,151, 57, 58, 58,142, 96, 89, +169, 12, 6,227,127,149, 87,189,200,223,137, 87,199,209, 42,253,186,204, 94,135,246,246,246, 11, 35, 34, 34, 90, 53,108,216,144, + 7,224, 0, 0,132,114, 49,184,127,235,198,219,142,110,254,182,225,145, 53,243, 26,246,104, 24,180, 45,148,139,146, 94,108, 39, +154, 54,109,234, 28, 17, 17,209, 90, 36, 18,125, 92, 94,222, 61, 0, 56, 59, 59, 67, 38,147,193,201,201, 9,206,206,206,176, 90, +173, 80,107,116, 40,180, 0, 42,157, 1, 10,133, 2,170,226,215,106,189, 17,133,133,133, 47,191, 91, 6, 29,199,141, 27,151,179, +126,253,250,236,140,140,140,111, 1, 52, 24, 51,102, 76,191,117,235,214,225,210,165, 75,186, 94,193,181, 92,151,180,107,252,117, +189,140,231, 11,130,249, 24, 15,224,218,181,107,215,208,186,117,107, 16, 66,134,149, 37, 40, 22,139,127,216,183,111,159, 56, 58, + 58, 26,181,106,213,138, 30, 54,108,216,144,111,191,253, 54, 80,162,206,191, 1, 0,230,188,204,232, 41, 83,166,124,185,100,201, +146,156,156,156, 28,163, 70,163,241,232,219,183, 47,146,147,147,145,150,150,246,123, 57, 38, 51, 38, 50, 50,146, 42, 20, 10,196, +197,197, 33, 50, 50, 82,252,229,151, 95, 54,183,112, 56,253, 82,225,240,254,152, 54, 77,155,143,106,217, 24,187,111, 62, 16, 92, +127, 22,239,212,180,186,175,243,253,148,140, 26, 38,130, 23,175,115,192, 85, 42,213,218,175,191,254, 90,173, 86,171,145,154,154, +138,135, 15, 31,226,201,147, 39, 72, 76, 76,196,242,229,203,213,249,249,249,235, 42,211,240,177,227,125,182, 98,250, 7,132,247, +248,119,224,193, 85, 64,163, 2,180,106,232,159, 70, 96,251,211, 76,108, 56,252,139, 48, 41, 57,217,105,255,254,253,227,252,253, +253, 35, 8, 33, 65,149,117,186, 0, 0, 14,135,243,106,229, 4,135,195, 81, 1,200,148, 72, 36, 41, 14, 14, 14, 41, 28, 14, 39, +147, 82, 90,248, 54, 42, 63,199, 12, 35,184, 92, 64, 40, 6,135,207,171,232, 36, 25, 50,108,216,176,125, 41, 41, 41, 61,226,226, +226, 90,173, 91,183,238,107, 59, 59,187,168,117,235,214,125, 29, 23, 23,215, 42, 37, 37,165,199,176, 97,195,246, 17, 66,222,173, +202,239,215,174, 93,123,202,130, 5, 11,176,124,249,114, 52,106,212, 8, 65, 65, 65,154,133, 11, 23,174, 5, 48,143, 16,242,113, + 80, 80,208,141, 41, 83,166,140,205,206,206,246, 74, 77, 77,109,244,253,247,223, 79, 92,187,118,109,179,244,244,116,187, 74,164, +219,118,239,222, 29,167, 79,159, 6,128, 12, 74,105, 92, 94, 94,158, 57, 61, 61, 29, 33, 33, 33,104,222,188, 57,212,106, 53,212, +106, 53,228,114, 57, 2, 2, 2, 96,181, 90, 91,177, 75, 57,131,193, 96,252,255, 25,174,114,141,150,157,157,157,115, 88, 88, 24, +106,214,172,233, 92,156,139, 5, 87, 33,111,246,180,113,195,237,165, 17,103, 64, 34, 47, 98, 88,187,250,246,174, 66,222,236,226, +175,240, 2, 2, 2, 68, 97, 97, 97,144, 72, 36,190,229,252,254,149,204,204, 76,132,133,133,193,201,201, 9, 50,153, 12, 97, 97, + 97, 48, 26,141, 80,168, 84, 40,180, 0, 26,147, 21, 10,133, 2,249, 57, 89,208, 88, 0,179,131, 43, 18, 19, 19,193,229,114,227, +203,209,244,174, 85,171, 86, 78, 84, 84, 84, 14,128,107, 0, 62, 92,180,104, 17,102,205,154,133,249,243,231,239,179,207, 72,232, +190,239,244,175,174,123, 22,126,228, 30, 36, 36,195, 1, 24, 83, 82, 82,224,228,228, 4,137, 68, 82,166, 49,104,223,190,125, 19, +137, 68,130, 29, 59,118,208,212,212,212, 54,148,210, 67,148,210,120, 66,138,204,158,152, 3, 5,165,116,109, 68, 68, 68,139, 47, +191,252,242, 89,215,174, 93,249, 45, 91,182,196,226,197,139, 1,224, 68, 89,154,114,185,252,214,187,239,190,107,184,124,249, 50, +158, 62,125, 42, 57,122,244,232,224,197,139, 23,215, 79, 74, 74, 18, 29, 63,117,230,157, 93, 41,202,193,223,158,187,110,183,228, +236,149, 91,110,142,146,122, 53,220, 92, 16,153,148, 38,176,112,113,167,178,131,218, 82,192, 27,215, 73,204,143,108,111,199,205, +232, 36,230, 71, 52, 23,240, 62, 80, 42,149,251,143, 29, 59,118,118,250,244,233,234,236,236,108, 56, 56, 56, 32, 47, 47, 15, 75, +151, 46, 85, 71, 70, 70, 30,214,235,245,199, 43,211,181, 88,105, 19,191,234,254,192,139,168,151,239, 25,173, 20,119, 12, 2,244, +254,240, 19, 4,135,132,192, 96, 48,160, 65,131, 6,100,209,162, 69, 18,153, 76,246,121,165,166,135,243,167,234,102, 38,132,100, + 82, 74,211,212,106,117,170, 88, 44, 78, 18, 8, 4, 73,249,249,249,169,148,210,172,183, 80,225, 57,148,131,207, 90, 55,168, 13, +136,196, 72,202, 83,167,223, 81,209,252,178,214,117,112,112,248, 96,195,134, 13,118, 91,183,110, 53, 77,153, 50, 69, 63,113,226, + 68,190, 86,171,245,152, 56,113, 34,127,202,148, 41,250,173, 91,183,154, 54,108,216, 96, 39,149, 74, 7,190, 78, 89, 76, 38, 19, +162,162,162,190,141,141,141,149, 80, 74, 63, 5,240,201,194,133, 11,199,196,198,198,218,173, 95,191, 30,135, 14, 29,194,161, 67, +135,208,175, 95, 63, 76,157, 58, 21, 11, 22, 44,168,104,187,236, 27, 54,108, 24,230,234,234,138,171, 87,175,166, 83, 74,147, 8, + 33, 77,164, 82,169, 67,191,126,253,208,163, 71, 15,232,116, 58, 24,141,198,151, 70,139,203,229,194,201,201,201,149, 93, 6, 25, + 12, 6,227,175, 53, 89,175,154, 45, 30, 0,148,132,234,194,195,195, 73, 69, 55, 70, 75, 65, 54,228,133, 26, 36, 42, 52, 72, 46, +176,254,225, 51,171,213, 90, 97, 1,210,211,211,143,223,188,121,243,131,176,176, 48, 94,122,122, 81,139, 88, 88, 88, 24, 52, 26, + 13,210, 31,220, 70,161, 21,144,212, 10, 69, 97, 97, 33, 10,158,220,135,180, 97, 43,184,134,143,194,170,245,235,245,121,121,121, + 63,150,165, 41, 20, 10,249,213,170, 85,203,137,143,143, 55, 3,200,151,201,100,221,253,253,253,113,229,202, 21, 0,216, 77,129, + 21,136,188, 12, 92, 61, 2, 90, 20, 82,145, 6, 4, 4, 32, 59, 59, 27,106,181,250, 74, 89,154, 55,111,222,140, 53,153, 76, 13, +250,246,237, 75,126,254,249,231, 3,132,144,249, 0, 30,206,241, 2,247, 65, 74, 22, 10, 45,176, 35,132,116,115,118,118,254,116, +193,130, 5, 93,166, 76,153,130, 99,199,142,225,220,185,115, 70, 20,229,130,221, 44, 35,154,163, 32,132,108,154, 49, 99, 70, 75, + 14,135,243,225,249,243,231,205, 65, 65, 65, 74,163,209,104,169, 19, 28,204,153,191,232, 43,193,228, 15, 39, 56,229,105,240,184, + 71, 29,239,214,132, 0,143,211,178,147, 98, 85, 52,175,162,125,218, 65,196, 59, 49,172, 93,195,246, 31, 12,235, 35,149,212,170, +135,194, 71,183,189, 54, 29, 60,181,170,163,152,215, 59, 75,107,238, 39,147,201, 6, 95,185,114,101,178,193, 96,168, 41, 18,137, + 94,200,229,242, 53, 42,149,170, 82,147,197,227,241,194, 67,253,170, 57,203,243,243, 97, 87, 28,137, 82,154,172,200,213,155,241, +212, 41, 8, 35,170,249,189,108, 6,205,204,204,132,151,151, 23,177, 88, 44,125, 42,210, 60,119,238, 28,122,247,238, 93, 98, 60, + 65, 8, 1, 33, 36, 55, 56, 56, 56, 75, 36, 18,229, 9, 4, 2,229,138, 21, 43,116, 58,157, 14, 60, 30,207,206, 98,177,112,223, +164,194,183,144, 16,143,246, 98,242,195,196,190,157,186, 54,170, 23, 66,175,221,125, 64, 10, 52,186,237, 21, 68, 1,191,175, 93, +187, 54, 47, 63, 63,255, 56,128,167, 38,147,105,207,129, 3, 7,236, 70,143, 30,173, 59,120,240,224, 72, 0,129, 43, 87,174, 28, +172, 86,171, 55, 87,165, 28,207,159, 63,255,126,201,146, 37, 95,204,157, 59, 23, 59,119,238,156, 2, 96, 86,113,164,171,223,130, + 5, 11,176, 98,197, 10,236,220,185,211,250,244,233,211, 83, 86,171,245,249,244,233,211, 27,122,122,122,230,102,100,100, 60, 95, +180,104, 81,121,178, 77,123,246,236,169,191,113,227,134, 80,165, 82, 93, 39,132,124, 58,105,210,164,113, 45, 90,180, 80, 14, 27, + 54, 76,154,159,159, 47,183,183,183, 23,110,217,178,197,153,199,227,161,176,176, 16,132, 16,168, 84, 42, 3,187, 20, 50, 24,140, +255, 85,202,243, 34,127, 7, 94, 78,183, 83,214, 61,181,172, 13,212,104, 52, 89,201,201,201, 33,105,105,105,102, 0,102, 0,200, + 51,152,191, 89,178,229,200,214,129, 45,107, 75, 50, 76, 38, 28,189, 27,173,201, 51,152,191, 41,137, 76,164,165,165,169,146,146, +146, 28,180, 90,173,186,156,223,250,253,135, 31,126,208, 94,190,124,217, 33, 46, 46, 14, 22,139, 5, 77,154, 52, 65, 76, 76, 12, + 10,158, 70, 65, 18,210, 4,146, 14,189, 17, 29,113, 23,145,231, 46, 32, 65,109, 48, 63,155,183, 68,161, 46, 44, 92, 96, 48, 24, +142,150, 37,200,231,243,243,139,182,143, 90, 0, 64,169, 84, 62, 84,171,213,237, 60, 61, 61,241,248,241, 99, 73,161, 5, 83, 7, +207, 94,181,142, 82,106, 17, 20,245, 20,155, 54,108,216, 48,220,187,119, 15, 0,238,149,165,169, 84, 42,167,140, 31, 63,254,242, +142, 29, 59,120,113,113,113, 61,182,110,221,218,227,217,179,103,148,228, 39, 91,110,104,248, 8, 28, 51,181,217,198,128,224,115, +189,123,247,134,183,183, 55,182,108,217,130, 53,107,214,152, 62,250,232,163,216, 53,107,214, 52, 3,176,167,156,131,160, 0,112, +198,205,205,109,114,253,250,245, 85,133,133,133,200,203,203, 67,122,122, 58, 92, 92, 93, 57,102,112, 90,187, 59, 57,237, 57,158, +169,146,240,206,220,194,237,212,140, 10,163, 89,173, 4,188,119,135,119,108,220,254,227,185,179,165,184,113, 20,100,252, 2,208, +173, 95,227,147,247, 6, 59,232,244,123, 58, 52,229,241, 70, 43,204,230, 93, 0, 14, 85,209,145,247,108,215,174,221,190, 37, 75, +150,136,231, 44, 95,130,149, 33,190, 48,231,229, 33, 71,111, 65,174,222, 12,101,193, 83, 60,126, 28, 13, 87, 87, 55, 36, 36, 36, + 64,167,211,225,201,147, 39,148,203,229, 30,175, 44,162, 83,234, 55, 74,154, 11,229, 34,145, 40,143,207,231,103,241,120,188,252, +184,184,184, 66,157, 78, 7, 14,135, 35,177, 88, 44, 98, 27,202, 90,205,205,205,109, 58,128,129, 0,142,169,114,115,215,134,241, +225, 4, 30, 58,214,244,112,125,103,222,196,209,110,254, 62, 30,242,184,216, 23,166, 31,207,254,150,171,211,227,155, 10, 78,146, + 19,165, 35,146,132,144, 79, 14, 30, 60, 56, 14,192,182,226,121,183, 46, 0,216,248, 26,231,223,188,195,135, 15,127, 49,119,238, + 92,136,197,226,151,131,167,138,197, 98, 59, 0,216,187,119, 47, 30, 63,126,220,162, 36, 95, 11,192, 62, 27, 52, 3, 67, 67, 67, +227,142, 28, 57, 34, 4,224, 51,105,210,164, 86,235,214,173,195,123,239,189,151, 19, 29, 29,221,178, 40, 2, 75, 2, 63,252,240, +195, 59, 59,119,238,116,182, 90,173, 40, 40, 40,128,193, 96,136,103,151,114, 6,131,193,204,214, 95, 18,205, 10,163,148, 70, 22, + 15,236, 29, 14,224, 36,165, 52,227, 15, 70,171,100, 3, 1, 64,167,211,125, 31, 16, 16, 32, 3,224, 7,160, 55,128, 99, 15, 45, + 56,132,103,137,136, 74, 72,157, 93, 98,188, 30, 90, 94,222,196,135,222,185,115,199, 80,189,122,245, 7, 0,190, 46,231, 70,166, +116,115,115, 91, 60,125,250,244,165,139, 23, 47,230,241,120, 60, 92,190,124, 25, 55,207,158,180, 62,185,126,155, 36,106, 45, 90, +229,221, 25,105, 60,106,185,229,169,205,127,116, 95,131,195,148,210,212,138, 54,172,176,176, 48,249,249,243,231,194,250,245,235, + 91,238,223,191,239, 70, 41,253,229,212,169, 83,237,102,206,156,137, 43, 87,174,236, 57,175,179,140,160,212,122,128, 16,194, 3, + 48,162, 79,159, 62,159, 14, 30, 60, 24,141, 26, 53, 50, 2,216, 89, 78, 57,111, 16, 66, 70,164,164,164,108,250,252,243,207,157, + 62,255,252,115,112, 56, 28, 82,122, 95,229,230,230,226,193,131, 7, 24, 54,108,152,226,183,223,126,155,218,165, 75,151,177,109, +219,182,197,233,211,167,125,108, 56, 24,191, 63,121,242,100,128, 76, 38, 35,207,159, 63,135, 82,169,196,141, 27, 55,248, 1, 1, + 1,173, 15, 28, 56, 32,170, 89,179, 38,162, 31, 61,194,169, 17, 35,194, 9, 33, 1,148,210,164,178,116,196,124, 50,121,204,144, + 62, 82,253,141,227, 64,228, 53, 0,128, 90,169,130, 54, 33, 10,131,155,215,118,188,242, 36,113, 18,138,122, 97, 86, 9, 23, 23, +151, 79, 86,174, 92, 41, 9, 10, 10,194,103, 75,150, 99,250,220,153,248,208, 35, 0,202,180,100,228, 90, 0,161,189, 61, 22,207, +155,139, 62, 67,134,193,195,195, 3,143, 30, 61,162, 91,182,108, 41, 84, 40, 20, 43,108, 49, 90, 92, 46, 23,132, 16, 0, 40, 84, + 40, 20,106,161, 80,168,224,241,120,121, 22,139, 37,235,196,250,181, 77, 56,121, 89,239, 19, 66,184, 98, 43,231, 68,113,103,139, + 50,243,243,156, 8, 9,168, 21, 24,248,232,167, 45, 91, 36, 45, 90,180, 32,119,239,222,157, 60,105,194,248,113, 3, 67,107,156, +234,223,181, 61,188,188,189,244, 86,163, 65,126,234,216, 9,211,198,131,167,174, 26,136,245,243, 8, 74,181, 85,120, 58,217, 87, +218,244, 16, 66,134, 3, 24, 2,224, 8,165,116, 55, 33,100, 12,128,254, 0, 14,151,151, 32, 79, 8,225, 0,216, 60,104, 80,209, +100, 2, 90,173, 86, 83,242,126,195,134, 13, 75,255,150,181, 42,199,200,222,222,222,193,206,206,238,197,233,211,167,197,195,134, + 13,115, 94,186,116,105,218,123,239,189,231,187,103,207,158,239, 1, 36, 16, 66,130, 1,212, 42, 44, 44,180,112, 56, 28, 4, 7, + 7, 99,195,134, 13,106,139,197,178,141, 93,198, 25, 12,198,223,193,108,253, 13,139, 29, 6, 32, 18, 64,120,113, 7,194, 9, 0, + 42,158, 84, 26,192,146,168,168,168,146, 49,180, 38, 85, 52,188,195,172, 89,179, 34,238,221,187, 23, 1, 96, 89,101,221, 28,121, + 60,222, 47, 31,125,244, 17,245,244,244, 84,123,120,120,252,194,231,114,199,249,137, 17,134,215,232,234, 14,160,221,174, 93,187, +250,125,255,253,247,225, 0, 90, 0,224,251,250,250,166,103,102,102,170,127,251,237, 55,117,155, 54,109,212,110,110,110,217,161, +161,161,234,149, 43, 87,170, 77, 38,147,122,250,244,233,106,188, 50,222, 87, 57,218,118, 0, 38, 11,133,194, 95,234,214,173, 27, + 53,175,111,103,211,242,169,227,232,152,218,238,106, 0,223, 3,248, 8,128, 19, 0,254,224,193,131, 47, 62,121,242,228,108,104, +104,232, 38, 27,116,125,234,215,175,127,105,223,190,125,247,142, 28, 57, 18,241,249,231,159,223,115,117,117, 77,141,141,141,181, +234,116, 58, 90, 80, 80, 64,229,114, 57, 61,121,242,164,197,197,197,101,125,121, 58,237, 68,220, 12,122,110,119,153, 67, 56,164, +204, 29, 69,219, 8, 57,105,175,211, 13, 85, 34,145,228,231,229,229,209,204,204, 76, 26, 23, 23, 71, 15, 31, 62, 76,123,182,110, + 78,247,127, 56,144,238,254,160, 31, 93,209,179, 57,109,225, 96, 87,232,229, 32,189,231,224,224,144,237,228,228,180, 25, 64,237, +202,134,119,208,235,245, 47,135,111,168, 86,173, 90, 68,112,112,240,145,208,208,208, 85,199,142, 29,251,100,245,234,213,253, 58, +213, 8,248, 98,105,143,214, 90,205,133,131, 84,117,224,123, 58,171, 73,144, 46,148,139, 33,229, 14, 23,226,234,178,235,234,149, + 43,214,146, 1, 58,205,102, 51, 61,250,203, 47,116,232, 59,221,162, 20,103,246,254,116,125,193,148,125,211,155, 4, 29,109, 99, +135,225,120,101,160,210,178,150, 48, 41, 92,219, 59,114, 54,244,242,119,201,104, 39,227,124,223,210, 1,206,165,142,217,208,160, +160,160, 56, 74,105, 70, 72, 72, 72, 28,128,221, 33, 33, 33,165, 95,191, 95,217,224,164, 11, 23, 46,164, 40,154, 69,129, 3, 96, +254,146, 37, 75, 34, 40,165, 17,181,107,215,190, 65, 41, 69, 35, 9,220, 58,200, 56, 63,245, 13,244,204,235, 32,227,252,212, 72, +242,231,209,220, 41,165, 8, 16,160, 78, 59,119,251,235,253,106,123,171, 58,250,202,174,237,222,190,117,121,175, 94,189,182, 0, + 88, 15,224,107, 87, 87,215,235,195,135, 15,127,188,115,231,206,199, 43, 87,174, 52,198,198,198,210,177, 99,199, 22,138, 68,162, +175, 89,215,113,182,176,133, 45,108,249,203, 71,134,247,174,202,128,165,125,190,248,226,139, 8, 74,105,201, 88, 90,163,203, 88, +167,239,220,185,115, 35, 40,165, 37,163,195,119,173,108, 64, 51, 0, 11, 55,108,216, 64, 69, 34,209, 79,111, 58, 72, 26, 0,175, +254,253,251,183, 84, 42,149,205, 60, 61, 61,155, 21, 71,157,252,220,220,220,226,246,236,217,163,214,106,181,106, 74,169,218,108, + 54,171,239,221,187,167,238,216,177,163, 26, 69, 67, 64,216, 52, 66,120,233,101,142, 23,110,220,157,247, 1,157,227,133, 27,175, +124,119,212,182,109,219, 78,199,199,199, 31,119,116,116,156,105,227,192,149,126,238,238,238,243, 93, 92, 92,206,186,185,185,205, +113,113,113,201, 48, 26,141,180,160,160,128,198,196,196,208, 43, 87,174,208,155, 55,111, 82, 23, 23,151,212,242,202,217, 69,204, +187, 85,176,124, 50,181,110, 91, 66, 13,235,102, 83, 0, 84,190,122, 22,205,253, 97, 17,189, 59,190, 7,237,104,199,253,253,117, + 6,157,115,114,114,218,252,203, 47,191, 88,159, 63,127, 78, 79,156, 56, 65, 79,158, 60, 73,167, 78,157, 74,235,248,120,235, 91, + 10, 57, 89,237, 68,188,179,175, 51, 96,169, 94,175,143, 80, 42,149, 17,106,181, 58,162,110,221,186, 17,205,155, 55, 63,210,178, +101,203, 85, 7, 15, 30,252,100,233,210,165,253,186, 56,136, 98, 52, 23, 14, 82,250,249, 59,148, 78,110, 75, 95,140,235, 72, 59, +139,121, 15,202,213,244,244, 76, 45, 25,173,189,176,176,144, 94,187,118,141, 94,186,116,137,122,185,185, 41,219,139,185, 19,218, +136,208,161,141, 35,156,108, 45,103, 39, 25,103,251,173, 31,190,177,104, 79,239,164,123,199,188, 99,238,232,196,217, 80,106,189, +253,148,210,140, 65,131, 6, 37, 80, 74, 51, 14, 31, 62,156, 66, 41,205, 24, 56,112, 96, 66,113,104,120, 95, 89,154,175, 12, 78, +186,173,216,100, 77, 94,184,112, 97, 4,165, 52, 98,225,194,133, 17, 64,209, 32,170, 29,100,156, 29,183, 55,173,176,234, 79,238, +160, 7,199,134, 91, 58,200, 56, 59,202, 44,167, 19,239,120,228,182,213,212,112,118, 55,253,101,234, 72, 75, 91, 47,199,171, 65, + 65, 65, 43, 62,249,228,147, 35, 55,111,222,124,104,177, 88, 30,199,197,197, 61, 94,191,126,253,227, 86,173, 90,221,112,117,117, +141, 18, 10,133, 31,177, 65, 17,153, 38,211,100,154,108,192,210,255,206,194,171,160,233,228, 56, 33, 68, 66, 41,157, 62,120,240, + 96, 44, 91,182,108,104,131, 6, 13,134,251,250,250,186, 3, 64,122,122,186, 6,128,114,240,224,193,152, 63,127, 62,150, 47, 95, +190,170, 56,151,229,255, 51,249, 44,147, 16, 82,109,202,148, 41,217, 75,151, 46,181,142, 29, 59, 54,132, 82,250,136, 16, 82,103, +228,200,145,147,121, 60,222,224,128,128,128,208,140,140,140, 28,173, 86,187, 27,192,166,146, 54,211,170, 34,226,192,210,180,186, + 55,206,114, 96, 41,213, 52,244,206,252,249,243,135, 13, 28, 56,208,184,122,245,106,179, 82,169, 60,102, 99,185, 83, 0,124, 85, +242,218,213,213,213,235,193,131, 7, 31,121,120,120,112,226,226,226,160,215,235,241,252,249,115, 43,128, 95,203,211, 80,155,233, +218,141,135,207, 7, 79, 31,213,219, 81,243,244, 62, 4, 92, 46, 76,124, 33, 50,111,157,197,182,107, 79,149,133, 70,172,123,157, +237,148,203,229,223, 77,157, 58,117,228,204,153, 51,237, 2, 2, 2,200,239,191,255,142, 3, 7, 14,232,179,179,179,123, 82, 74, +175,190,238,177,178, 90,173, 16, 10,133, 0,128, 89,179,102,129,195,225,240,179,179,179,133,132, 16, 17, 33,196,158, 16,194, 53, +197, 63,134, 85, 89,128,172, 2, 57, 82,178,228, 21,234, 89,172,214, 3,183,111,223,158,214,184,113, 99,206,221,187,119,145,147, +147,131,231,207,159, 83, 11,165,251,174,106,204,155,171, 90, 62,123, 23,215,254,141,156, 69, 28,225,246,249,104,111,224,112,127, +180, 98, 16,128,201,197, 31,111, 35,132, 8, 0,228,213,173, 91,183,211,147, 39, 79,196,117,235,214,213, 62,125,250,244, 52, 33, +196, 23,192,142, 50,155,119,197,226, 92, 0,185,135, 15, 31, 6,128,241,148, 82, 43, 33,164,201,130, 5, 11, 50,174, 93,187,134, +133, 11, 23,102, 1,216, 0, 0, 82,103,215,190,161, 50, 1, 17,254,188, 16,173,244,224,172,179,210, 50, 59, 23, 72, 61, 60, 59, +215,151,112,192,223,250, 37,154,121, 5,115,132,102, 99,131, 69,139, 22, 93, 83,171,213,250,253,251,247, 27,222,127,255,125,110, +108,108,236, 29, 0,215,139,155, 53,205,172, 33,130,193, 96, 48,254,242, 28,173, 87,135,117, 40, 59, 71,171, 12, 67,176,151, 16, +146,187,124,249,242,206, 0, 28, 15, 30, 60,216,180, 78,157, 58, 0,128,152,152, 24,251,224,224,224,103, 13, 27, 54,124, 2,224, + 22,165,244,184,141,229, 41,185,240, 91,223,210,246, 69,207,156, 57,147,236,220,185,211, 12, 20,153,160,226,155,203, 90, 0,107, + 43,202,243,121, 83,130,130,130,186,125,249,229,151,134,173, 91,183, 90,190,254,250,235, 99,148,210,216,215,209,201,207,207, 95, + 57,122,244,232,145, 11, 22, 44,144, 57, 56, 56,144,168,168, 40,235,182,109,219,148,249,249,249, 43,203,251,206,109,131,121,127, + 7, 17,111,160,188,240, 96,183,161, 97,213, 29,158, 76, 9, 71,204,237,235,216,125,245,177, 42, 54, 95,123,238,174,217,124,224, + 53,205,235,115, 66, 72,163,249,243,231,207, 50, 26,141, 3,249,124,254, 29,165, 82,185,136, 82,250,251,235,238, 39,147,201,148, + 85,179,102,205, 87,127,199,100,181, 90, 41,165,148,111, 54,155, 37, 46, 70,235,201, 5,107,182,126,248,126,176, 76,148,155, 43, +199,207,177, 74,125,169,206, 22,127, 34, 39, 39,103,213,184,113,227,222, 91,176, 96,129,179,163,163, 35,137,142,142,166,251,247, +239, 87,231,228,229, 45,123,157, 50,106, 10,242,207,157, 56,116,112,112, 91,131,153,236, 74, 80, 81, 30,151,156, 46, 85,214,243, + 0,206, 23,159, 76,163, 8, 33,131, 0, 28,165,148,254, 92,161,166, 70,115, 14,128,112,208,160, 65,136,138,138, 26, 10, 96, 47, +128,125, 95,125,245, 85,203,249,243,231, 99,209,162, 69, 88,176, 96, 65, 55, 0,103, 85, 5,121, 39,143,236,219, 61,162,163,201, +196,217,149,168,178,114, 57,228, 84,153,154,185, 89,231, 79,159,191,208,183,153,163, 15,217,124,246,186, 85, 99,165,247,199,140, + 25, 83, 96, 48, 24,206, 2, 88, 7, 32,138, 82,202,122, 23, 50, 24, 12,198,255,111,224,103,115, 25,198,107,115,165, 70,171,248, +203, 23, 0, 92, 32,132,120,181,105,211,102,137, 76, 38,147, 88, 44, 22,228,231,231,167, 1, 88, 83, 28,157,169, 10,251, 21, 10, +197,231, 34,145,232,199,183,180,113, 58, 66,136, 71,221,186,117,249, 0,244,101,124,254,118, 76, 22,197,225,231,177,207, 29, 65, +113,184,228,173,216,216,216,125,161,161,161,253,158, 62,125,250, 27,165,244,212, 27,108, 67, 18, 33,164,241,212,169, 83, 63, 3, +208, 15,192,175,249,249,249, 43,203, 75,132, 47,225,170,222, 60,184, 25,143, 55,242,126, 98,230, 71, 6, 43,173, 33,228,112,226, + 11,141,244,135, 59,102,243,222, 55,220,167,207, 1,140, 45, 94,222,152,220,220,220, 74, 7,249, 36,132,144,171, 47,210,111, 61, + 78,201, 46,171,179, 69, 89,101,204, 32,132, 52,154, 62,125,250,116,171,213, 58,132,195,225,252,146,155,155, 91,233, 62, 43, 55, +146,103,176, 76,251,241,242, 93,193, 26,139,181,171,136,195, 57,171, 54, 89,102,151,243,187,187, 1,216, 52, 58,252,139, 23, 47, +126, 90,180,104, 81,253, 5, 11, 22, 96,227,198,141, 37,221, 46, 47, 44, 88,176, 32,219, 98,177,248, 45, 90,180, 8,155, 54,109, + 50, 3,128,222,100,157,177,245,218,125,206,143, 86,235, 59,124, 14,231,180,222,100,157, 81,166, 41,215,153, 39,175, 59,114,198, +104,180, 90,187,113, 65, 78,103, 24,172,243,244,122,154,200, 46,115, 12, 6,131,241,191, 9,207,214, 21, 41,165,153,111,227,198, + 75, 41,141, 3,224, 56,103,206,156,183,233, 36,179,255,234, 29,245,101, 58,253, 30,192,247, 95,126,187,191,244,239,222, 1, 42, + 31, 84,212, 86,179, 5,224,227,226,197,102,238,154,205,123, 80,206,144, 18,127,179,167, 1, 10,224, 96,241, 98,235,119, 82, 81, + 52,151,229,180, 55,253,253,251, 26,154,129,162, 94,132,111,115,155, 34, 81,212, 11, 5,105,105,105,165,183,243, 97,241,130,146, + 49,229,110, 23,210,108, 0, 35,109, 44,231, 80,118,233, 98, 48, 24,140,255, 29,202,106, 58,172,178,209, 98, 48, 24, 12, 6,131, +193, 96,148,249, 96, 93,110,110, 48, 1,208,181,156, 47,217,156,216, 78, 8,233,250, 26,133,186,192, 52,153, 38,211,100,154, 76, +147,105, 50,205,127,151,102,101,218,255,223, 29,235,254, 63, 92,216, 95, 57,174, 4,235,250,202, 52,153, 38,211,100,154, 76,147, +105, 50,205,127,237,194, 97, 1, 63, 6,131,193, 96, 48, 24,140,215,135, 16, 18, 86,252,215,155, 16, 50,161,120, 42, 30, 0,229, +228,104,241, 91, 44,201, 50,155,205, 30, 0,192,227,241,178, 77,119,230,121, 87,244, 3,124,160,139, 25,248,169, 88,112,188,169, +168, 59,252,171,154,231,205,102,179,115,177,102,129,233,206,188, 30, 21,106, 54, 95,124,246, 15,235,223,158,219,173,140, 45,227, +242,155, 47, 78,127,165,172, 62, 54,239,153,226, 57, 18,255,234,114,254, 93, 52,255,205, 8, 90, 46,201, 50,153,138,234, 17,159, +207,203, 54,222,174,184, 30, 9, 90, 44, 78,255,195,250,183,230,122, 86,164,105, 47, 22,229,213,242,117, 95, 85,145,102, 92,122, +238,244, 66,141,206,181, 34,205,170,158,155,126,222,222, 93, 44,197,231, 38, 23, 24,159,146,158,126,254,127,169, 46, 17, 66,154, + 2,152, 7,192,177,212,219, 81,148,210, 79, 89,173,100, 48, 24,127, 35,202,157,130,167, 76,163,101, 54,155, 61, 34,126, 89,128, + 66, 61,208,229,221,197, 30,129,253, 55,253,169, 87,155, 89, 87, 32,148, 71,239, 15,229,154,148,206,238, 60,163, 99,122,122, 58, + 41,190,112,254, 4,192,191, 12, 77,231,136, 95, 22, 64, 99, 0,218, 15, 95,228,236, 15, 56,230, 8, 4,159,137, 37,146, 78, 90, +173,182, 62, 0,136,197,226,104,109, 97,225,101,119,163,113,229,171,235,151,183,101,165,203,218,121,244, 98,143,144,254,155,166, + 90,172, 86, 97,218,221, 31,219,235,114, 99,121,124,179,126,195, 28,224,244, 2,192, 98,203,158,250,195,239, 14,153,237,202, 7, + 58, 11,237,236, 26, 57, 57, 59,183,179, 82, 90,215,106,181, 18,139,217,252, 88,169, 80, 92,183,154,205, 15,204,134, 66,215,136, + 99,223, 88, 43, 42,231,171,219, 50, 4,224,253, 2, 12,150, 72,165,157,184,124,126,107, 0,176,152, 76,191, 23,170,213,151, 7, + 0,135,108,217,118, 91,247,207,235,174,255,111,195,100, 50,123,196,159, 93, 0,189, 9, 8, 27,244,141, 71,195,145, 63,239, 1, + 0, 67,246, 3, 79,117,236,177, 22, 0, 32,169,213,251,182,200, 43, 44, 11, 0,120, 73, 25, 30, 49, 39,230, 66,111, 2,234,246, + 94,228, 81,153,230,251,243, 15,184,206,156, 48, 80, 4, 0,231, 14,127, 95,231,210,145,141,239, 0, 64,231,129,147, 78,119, 31, + 52, 37, 6, 0,150,111, 62,226,186,239,155,161, 21,106,218,118,110, 42, 4,138,216, 19,181, 13,202, 12, 39, 63, 9,207, 43, 54, + 54,150, 3, 0, 62, 62, 62, 54,157,155,213, 0, 89, 6, 48,153,195,229,182,171, 85,187,118, 24, 0, 26,247,226, 69,164,197,108, +190,225, 13,108,120,203,117,105, 42,165,127, 28,156,181,120, 46, 76, 6,131,193,248, 59,113,178,216, 92,157,124,245,131,114,123, + 29, 22,234,129,171,207,129, 14, 45, 27, 98,194,200, 94,210,210,159, 29,218,180,200, 63,246,238,175, 33, 91,127, 94,201,105,216, +176, 33,226,227,227,109, 42,133,198, 0, 92,137, 5, 32,127,226, 80, 32,145,188, 88,189, 98,133, 99,183,110,221,120, 62, 62, 62, + 32,132, 32, 51, 51,179,229,133, 11, 23,154, 78,155, 54,237, 67,200,159, 20,104, 12, 80, 93,177, 97, 8,208,146,178,214,175, 83, + 29,243,166, 12,149, 1,192,156,119, 55, 52,189,251, 44,203,229,197,139, 23, 93,190,248,226,139, 60,238,229,203, 27,221,128,237, + 89, 64,138, 45,229,220,121,252,182,157, 44, 99,111,224,168, 41, 83, 14,215,174, 93, 91, 26, 16, 16, 64, 28, 28, 28,192,229,114, + 81, 80, 80,224,255,232,209,163,119,238,220,185, 83,120,225,234, 79,194,123,119,250,198,101,219,181,208,217,180,237,218,116,187, +115, 14, 14,209,163, 7, 12,168, 54,116,232, 80,187, 90,181,106, 1, 0, 94,188,120, 17,116,232,208,161,225,135, 15, 31,158, 15, +109,186, 89, 99,128,174,178,109,127,169, 9,192, 14,104,237,228,225, 49,138,203,231,215, 55,155,205,190,197,209,134, 52,139,201, + 20, 45,207,206,222,253,234,250,140, 63,163, 55, 1, 79, 50,128,174,237,194, 48,122, 96, 87, 9, 0,124, 49,108, 73,203,164,132, +231, 2,131,193,128, 58,193,117,219,124,253,205,170,179,224,112,176,235,200,133,151,235,219,162, 25,245, 36, 30, 11,190, 94,141, +244,135,135, 90, 90, 20,207, 59,169,148, 10, 46, 0, 56,202,100, 3, 15,237,223,123,217, 39,116,240,173,231,185, 70,155, 52, 43, + 58, 55,207,236, 95,239,157,250,232,114,189, 31,206,109,227,251,251,251,227,225,195,135, 85, 59, 55, 21,207, 28,172,222,222,143, + 87,126,254,185, 87,251,246,237, 33,149, 74,193,227,241, 96, 54,155,187,222,184,113,163,235,130, 5, 11, 38, 65,241,172,208,214, +115,211, 6, 86, 18, 66, 58,189, 63, 97,170,119,175,126,131, 49,176,103, 27, 86, 17, 25, 12,198,223, 10, 66,200,132,226, 94,135, + 47,123, 30,150,238,133, 88,166,209,226,241,120,217,221,198, 44,245,104,215,162, 1,238, 62,136, 81, 36, 38,103,168, 75, 62,203, +143, 62, 84,167, 95, 27,223,122,215,174, 93,133, 94,175,199,239,191,255,142, 7, 15, 30, 32, 33, 33, 1, 19, 39, 78,212,243,128, +241,229,104, 22,180, 31,190,200, 25,138, 88,105,144,240, 89,141, 11, 79,159,114,117, 58, 29,174, 93,187,134,130,130, 2, 8,133, + 66, 84,171, 86, 13,221,187,119,231, 61,125,250,212,165, 75,183,158,178,246, 61, 71,196, 67, 22,164,230,241,120, 5,229,109, 32, +143,199,203,238,242,238, 98,143,122, 65,213,241, 34, 49, 93, 49,239,155,173,106,171,149,242,226, 18,146,140, 87,175, 94, 69, 88, + 88, 24,206,159, 63,239,154,159,159,255,229,134, 13, 27,230,241,191,253, 97,173,201,144, 55,163, 2,189,130,246,195, 23, 57,187, +102, 31, 12,184,116,230,168, 32, 58, 58, 90,240,227,143, 63, 34, 47, 47, 15, 66,161, 16, 78, 78, 78,240,242,242, 66,157, 58,117, +200,156, 57,115,164,189,123, 71,227,227,241,131, 3,140,129,227,158,149, 87,206,151,219,174, 78,178,119, 83,158,171,117,228,228, + 73, 78,219,182,109,255,240,216, 94,179,102, 77,244,232,209,195,110,212,168, 81,181,134, 14, 31,105,109, 31,254,254, 11, 72, 3, + 52,149,106, 22,166,136, 93, 53, 55,125,186, 14, 31,126,108,209,162, 69, 78, 94, 94, 94,144, 72, 36, 0, 0,133, 66, 81, 45, 49, + 49,177,229,252,249,243, 7,221,142,218,207,107,223, 59, 37, 29, 18, 63,109, 69,251,243,223, 10,159,207,203, 46,137, 34, 57, 72, +196, 5, 41,169, 89,133, 0, 96, 48, 24, 96, 48, 24,160,215,235,241,209,164,137,220,241,131,154,215, 14,104, 55,245,126, 66, 90, + 86,126,221, 11,183, 92, 74,190, 91,153, 38, 79,147, 32,151, 39, 95, 28,191,224,243,207,189, 60, 61,255,211, 34,184,107,231, 78, +110,126,126,126,215, 5, 11, 22,212,163,246, 29,229,117,123, 47,114,170, 72,179,162,115, 83, 30,115,178,198,215, 83,122, 52,218, +244,205, 9, 88, 44, 22,220,188,121, 19,215,174, 93,195,170, 85,171,232,233,211,167, 21,142, 18, 73, 37,231,230, 51,135,182,222, +153,129,223,126,123,152,136, 68, 34,252,250,235,175,120,250,244, 41, 56, 28, 14, 26, 54,108,136,209,163, 71,163,107,215,174, 94, + 19, 38, 76,164,237,123, 14,139,131, 44, 88,245, 38,117,137, 16,194, 1, 48,117,246,130,111,189,223, 29, 55, 25,203,191,158,195, +140, 22,131,193,248,219, 70,179,202, 29,226,129, 82,138, 19, 39, 78,208,226,165, 3,165, 20, 20,224,212,236,191,105,223,193,123, +214,147, 53,251,111,218, 71, 1, 14, 5, 56,142, 64,245,198,141, 27,155,228,114, 57,189,115,231, 14,253,232,163,143, 10,215,174, + 93,123,249,228,201,147,135,204, 70,227, 22, 31,111,239,239, 40,192, 41, 51,243, 30,224, 4, 0, 50,123,123,251,156,228,228,100, +122,234,212, 41,186,112,225, 66,186,123,247,110,122,250,244,105,122,225,194, 5,122,250,244,105,186,111,223, 62, 26, 21, 21, 69, + 99, 98, 98,168, 68, 34,201, 9, 0,100, 21,104,114, 41,192,173,211,255,199, 25,135,239,154, 22, 5,247,223, 52,141, 2, 92,103, + 32,164,113,227,198,150, 67,135, 14,209, 93,187,118,209,159,127,254,153, 70, 69, 69,209,220,220, 92,202, 19, 73,114, 74,190, 87, + 94, 57, 41,192,241,245,245,205,145,203,229,212,207,207,143, 10,133, 66,234,233,233, 73,235,212,169, 67, 91,182,108, 73,223,121, +231, 29, 58,114,228, 72,250,229,151, 95, 82,185, 92, 78,237,236,236,178, 74,190, 87,158,102, 24, 32,150, 72, 36,201, 17, 17, 17, +180, 60,180, 90, 45,205,205,205,165,103,207,158,165, 18,137, 36, 57, 12, 16, 87,164, 41, 6,154,132,134,134,230,228,230,230, 82, +163,209, 72,147,147,147,233,163, 71,143,232,211,167, 79,105,114,114, 50,213,106,181, 47,181, 99, 98, 98,104, 96, 96, 96,142, 24, +104, 82,174,230,191,121, 41,169, 19,175, 44,254,158,158,239,120,121,121,105, 15, 31, 62, 76,211,210,210,232,142, 29, 59, 40, 7, + 88,242,167,117, 43,208, 20, 2,221,219,182,109,107,185,121,243, 38,189,127,255, 62,157, 53,107, 22,237,209,163, 7,237,217,179, + 39, 93,176, 96, 1, 77, 77, 77,165,169,169,169,244,157,119,222,177, 8,129,238,149,213,207,178,206, 77, 25,224,223,187,119,111, +173,209,104,164,113,113,113,180,126,253,250,169, 92, 96,148, 4,168,215, 1, 16, 85, 86, 63,125, 1,103,111,111,239,140,155, 55, +111,210, 35, 71,142,208,128,128,128, 28, 46,240,190, 35, 80,211, 17,168,201, 5,222,175, 89,179,102,206,205,155, 55,105, 94, 94, + 30,245,247,247,207,240, 5,156, 95,183, 46,161,104,130,237,109,179, 23,124, 75,159,165, 22,210,217, 11,190,165, 0,146,139, 7, +116, 61,207,234, 36, 91,216,242,239, 91,254,228, 69,254,105,189, 14,195,195,195, 9,128, 43, 21, 89, 54, 45,151,187,116,249,242, +229, 60,157, 78,135,173, 91,183,170,134, 12, 26,116,176, 67,187,118,113, 53, 2, 2,228,132,195,169,116,238,194, 28,145,232,147, +229,203,151, 59, 25, 12, 6,220,187,119, 15, 77,155, 54,133,151,151, 23,164, 82, 41,164, 82, 41, 60, 60, 60, 16, 28, 28,140,236, +236,108, 56, 56, 56, 96,230,204,153,178, 28,145,232,147,202,116,173, 86,202, 3, 0,139,213, 42, 20, 0, 19, 2,155, 53,187, 55, +127,254,124,142,171,171, 43, 92, 92, 92, 32,149, 74,241,244,233, 83, 24, 12, 6,216,139,237,109, 26,164,149,195,225,112,164, 82, + 41, 46, 93,186,132,169, 83,167,162,117,235,214,112,114,114,130,131,131, 3,234,215,175,143,238,221,187, 99,252,248,241,136,139, +139, 3,177, 33,169,228, 49,143, 55,121,252,248,241, 30, 97, 97, 97,101,126,174,211,233, 32,151,203,145,147,147,131,106,213,170, + 97,240,224,193, 30,143,121,188,201,229,233,185, 2, 94,213,130,130,142,221,185,115,199, 77, 34,145, 96,215,174, 93, 56,122,244, + 40,206,156, 57,131, 83,167, 78,225,196,137, 19,248,245,215, 95,145,147,147, 3, 0, 8, 10, 10,194,129, 3, 7,220,164, 30, 30, + 39, 92, 1, 47,246, 0, 98, 27, 73, 89, 89,231,234,103,102,186,141, 26, 57,242,186, 90,173,198,168, 81,163,176,116,217,178, 57, +124, 27, 71,163, 15, 6,100, 46,222,222,219,191,253,246, 91, 78,102,102, 38, 6, 12, 24,144,187,114,217,178, 15, 34,207,158,173, + 21,113,230, 76,173,165,139, 22,125,208,161, 67,135,220,212,212, 84,236,220,185,147,227,233,239,191, 61, 24,144, 85,181,156, 42, + 96,234,154, 53,107,236,116, 58, 29,186,117,235, 22,103,141,142, 14, 54, 3,123,213,192,211, 43,128,177,178,239,103, 0,147,103, +206,156,233, 37, 18,137,240,217,103,159,229,106,146,146, 26,152,129,159, 21, 64,162, 2, 72, 52, 3, 63,171,226,227, 27,188,251, +238,187,185, 34,145, 8,171, 87,175,246,202,248,207,164,219,182, 70,176,154, 18, 66,142, 17, 66,174, 2, 72,127,127,194,212,247, +195,154,183,194,206, 45, 27,240,205,162, 47,182, 3, 24, 66, 8,217, 13, 96, 6,171,121, 12,198,191, 19, 91,188,200,255,106,243, + 97,185, 45,101, 47,227, 94, 39, 79, 82, 0, 29, 43, 18,114,118,117,109,218,160, 65, 3, 92,187,118, 13,161,161,161,119,156,156, +156,204, 2,145, 8,124, 62, 31,212, 90,249, 28,209, 98,137,164, 75,215,174, 93,121,183,110,221, 66, 96, 96, 32,196, 98, 49,248, +124,254, 31, 22,129, 64, 0,111,111,111, 40,149, 74,116,233,210,133,191,110,221,186, 46,208,235,191,174,244,134, 24,251, 72,154, +115,235,219,145, 63,237,216, 94,179,125,251,246, 80, 40,148,176, 90,173,176,183,183,135,193, 96, 0,143,199, 43,106, 2, 50, 81, +165, 45, 59,205, 98,177, 88,184, 92, 46, 2, 3, 3,177,116,233, 82,232,116, 58, 8, 4, 2, 0,128, 82,169,132, 92, 46,199,163, + 71,143,144,152,152,104,211,124,138, 14, 50, 89,175,161, 67,135, 10,203,250, 76,175,215, 67,161, 80, 64,161, 80, 64, 46,151, 67, +167,211,161, 85,171, 86,194,147, 39, 78,244, 66, 94, 94,153, 19, 75,235,237,236, 6,237,220,185,211, 67, 40, 20, 66,171,213, 66, +165, 82, 33, 37, 37, 5, 73, 73, 73,186,236,236,108,179,131,131, 3, 39, 32, 32,128, 35, 18,137, 68,253,251,247, 39, 74,165, 18, +132, 16,244,238,221,219,117,207,174, 93, 67, 1,172, 98,167,180,109,156, 3,244, 77, 12,134, 62, 45,154, 55,191,116,231,238,221, +176, 79, 62,249, 4, 81, 81, 81,223,218,239,223,127, 85, 3, 60,168,232,187,113,192,228,239, 74, 25, 24,154,148, 20,106, 4,114, + 74,173,146, 24, 16, 31,127,230,221,119,223,125, 24, 21, 21,229,182,122,245,106,175, 33, 3, 6, 76, 6,176,164, 42,101,116,144, +201,154,121,123,123,227,244,233,211, 72, 78, 72,248,194, 12,104,171,242,125, 14,151,219,182,125,251,246,248,245,215, 95,145,154, +148,244,133,249,143,101, 44,122, 80, 2,114,120,113,113, 95,108,223,190,125,219,216,177, 99,193,229,241,218,194,108,174,202,207, +252, 41,241,125,236,196, 79,176,125,243,186,237, 0,198, 81, 74,173,120, 75, 83, 90, 49, 24,140,191,105, 27,156, 13, 94,228,239, + 98,182, 74,154, 18,171, 20,209,242,240,240,240,149, 74,165, 72, 79, 79, 71,221,144,144,108,145, 72, 4, 33,159, 15, 59,161,208, +166, 66,104, 52,154, 80, 31, 31, 31, 40, 20, 10,184,185,185, 65, 32, 16,188, 92,132, 66,225,203,255, 29, 28, 28,192,225,112,224, +239,239, 15,141, 70, 19, 90,169,110,214, 35,143,253,235, 38,125,116,243,234,233,154, 3, 6, 12,132,179,179, 11,252,252,170,193, +195,195, 3, 98,177, 24,126,126,126,168, 85,171, 22, 93,185,114, 37,236, 61, 26,218,116, 33, 47,109,158,120, 60, 30, 44, 22, 11, +178,178,178,240,236,217, 51, 68, 69, 69,225,230,205,155,184,127,255, 62, 84, 42, 21,108,153,183, 90,163,213, 54,226,241,120,101, +154, 44,185, 92, 14,185, 92,254,210,104,229,228,228, 32, 49, 49, 17,234,194,194,198, 21,152,222,129, 13, 26, 52,224, 2,128, 88, + 44, 70,227,198,141,177,105,211, 38,243,241,163, 71,135,213,187,121,211,197,239,236, 89,167,159,126,252,113,216,224,193,131, 45, +183,110,221,130, 82,169,196,147, 39, 79,224,238,238,206, 19,218,217,177,185,242,170, 72, 4, 80,232,166, 82,245,108,221,186,117, +188, 66,161,192,138, 21, 43, 56,124, 7,135,205,139, 0,110,133, 95,228,114,219,180,111,223, 30,199,142, 29, 67,122, 82,210,172, +164, 50, 12, 76, 18,144,147, 28, 23, 55,107,251,246,237,232,222,189, 59, 8,143, 87,229, 68,165,150, 45, 91, 54,176, 90,173,120, +248,240, 33,156,128,219, 85,253,126,173,218,181,195, 74, 34,191, 18,224,122,121,235, 73,128,235,145,145,145, 16,139,197,168, 91, +175, 94,147, 42,254,204, 74, 66, 72,198,216,137,159,224,200,153,223, 0, 0,219, 55,175,203, 42,101,178, 24, 12, 6,139,104,253, + 45, 35, 90, 37,198,170,244,242,242, 65,182,138, 34, 0, 0, 62,159, 15,161, 72, 4,161, 80, 88,100,144, 68,162,170, 56, 62,216, +217,217,189, 52, 86,165, 13, 86,233,255,237,237,237,109, 50, 48, 0, 80,240,252, 76,187,113, 31,140, 21,138, 68, 34, 24, 12,122, + 80, 74, 33, 18,217,193,201,201, 9,129,129,129, 80, 42,149,104,221,166,131, 62, 69, 46, 56,225, 90,183,127,212,235,236, 64,179, +217,140,194,194, 66, 20, 20, 20, 32, 63, 63, 31, 74,165, 18, 90,173,214,230,174,232, 86,171,149,155,146,146,130,189,123,247, 34, + 47, 47, 15, 64, 81,162,117,137,185, 42,249, 27, 31, 31,143, 93,187,118, 33, 33, 33,161, 74,199,167, 93,187,118, 56,113,226, 4, +183, 99,151, 46, 91,206, 7, 4,164,159, 15, 8, 72,239,216,165,203,150, 99,199,142,113,125,125,125,145,152,152,136,123,247,238, +161,160,160, 0,148, 82,214,127,254, 53,120, 1, 20,104,242,243,199,206,153, 51,135, 74,165, 82,172,248,238,187, 70, 75,128, 17, +182, 26, 24, 89, 5, 6, 70,246,102, 6, 6,148, 82, 88,173, 86, 88, 44,150,215,218, 54, 66, 8,225,243,249, 85, 29, 90,129, 84, + 65,255,101,226,251,204, 47,151,226,212,175,135, 74, 62,138,101, 38,139,193, 96,252,221,169,104,174, 67, 94, 41, 7,249,242,111, +121,100,101,101,165, 21, 22, 22,214, 12, 8, 8, 64,106,106,170,135,191,191,127,146,144,207,135, 64, 40, 4,225, 84,238, 9,236, +237,237, 31,166,167,167,183,241,245,245,133,217,108,126,105,170, 94,109, 58, 44,137,210,220,191,127, 31,246,246,246, 15,161,171, +112,228, 4, 88, 12, 5,213,155, 52,105,242, 50, 50,228,228,228, 4, 39, 39, 25, 68, 34, 59,204,157, 59,215,186,122,229,202, 13, +254,157, 23, 41,222,155, 54,135,206, 89,178,229,173,238, 92, 91,111, 76,246,246,246, 15,253,252,252, 90,201,100, 50, 28, 57,114, + 4,137,137,137, 40, 40, 40,128, 70,163,129, 94,175,135, 70,163,129,193, 96,128,157,157, 29,234,213,171, 7, 71, 71, 71, 92,184, +112,225, 33,244,250,178,205,101, 94,222,145,135, 15, 31,182,106,222,188,249,203,136, 74,167, 78,157, 72,167, 78,157,220, 94, 70, +209, 52, 26,228,230,230,226,206,157, 59,184,112,225, 2, 8, 33,136,141,141,181,232,181,218,125,236,180,120, 61,116,192,239,220, +237,219,183,125,248,225,135, 31,180,105,211, 6, 22,224, 29, 0,187,254, 91, 6,166,132,155, 55,111, 62,178, 88, 44,109,234,212, +169, 3, 57,208, 2,192,175, 85, 50,145,207,159, 71,154,205,230, 46,141, 26, 53,194,145,131, 7,219, 1, 72, 44,107,189, 66,160, + 93, 88, 88, 24,180, 90, 45,158, 60,126, 28, 81, 5,147,181,101,246,130,111,223,127,119,220,100,236,220,178, 1,219, 55,175, 75, +217,182,105,173, 31,108,200, 31, 99, 48, 24,255,170,104, 86,165, 94,228,127,145,178,114,180, 74,204, 23,175, 42, 66,138,130,130, +136,200,200,200,154, 77,154, 52,193,150, 45, 91,154,183,110,213, 42, 77, 32, 20,154,133, 2, 1, 56, 54,220, 72,180,133,133, 23, + 47, 94,188,216,162,127,255,254,188, 91,183,110,193,203,203,235,165,209, 42,249,203,227,241, 64, 41,133,189,189, 61,126,249,229, + 23,163,182,176,240, 98,165,209, 34,139,213,194, 41, 54,122,148, 82,200,229,114, 8, 4, 2,172, 90,181, 26,235, 87,174, 28,105, + 1, 14, 5, 73,220, 63, 7, 96,247, 95,187, 65,107, 52,151, 78,157, 58,213,116,254,252,249,252,106,213,170, 65, 46,151,163,160, +160, 0,121,121,121, 80, 42,149, 80, 42,149, 40, 40, 40,128, 92, 46,135,157,157, 29,162,162,162, 76, 58,141,230, 82,121,122, 34, +157,238,240,152, 49, 99,102, 70, 70, 70,122,243,120, 60,152, 76, 38, 88,173, 86, 88,173, 86, 24,141, 70, 60,127,254, 28,209,209, +209,120,250,244, 41,242,243,243,193,231,243,193,229,114,113,255,254,253, 2,137,201,116,144,157,210,175, 15, 31, 56,114,227,198, +141, 15, 70,143, 30, 13,159,106,213, 58, 32, 53,213, 38, 3,115,180, 2, 3,163,120, 13, 3,243, 7, 3,164, 82,221,141,143,143, +111,211,177, 99, 71,120, 87,171,246,109,189,212,212,243,143,171,144,167,101, 49,155,175,223,184,113,163,203,187,239,190,139, 45, + 91,182,124,235, 30, 31,127, 38,231,149,102, 78,119,192,189, 70,173, 90,223,190,255,254,251, 56,119,238, 28, 44,102,243,245, 10, + 46, 58,165, 71,124,175,254,254,132,169,126,175, 36,190,111, 34,132, 76, 1,176,130,213, 40, 6,131,241, 79,142,104, 85,169,233, + 80,108,177,204,158, 49, 99,134,137,195,225, 96,224,192,129, 14,191, 30, 59, 54,248,254,131, 7,129,217,217,217, 78, 22,139,165, + 82, 45,119,189,126,237,140, 25, 51,228, 6,131, 1,193,193,193,200,207,207,135,197, 98, 1,143,199, 3,143,199, 3, 33, 4, 28, + 14, 7, 82,169, 20,145,145,145,216,182,109,155,210, 93,175, 95, 91,233, 77,194, 98,121,184,107,215, 46,112,185, 92,106,103,103, + 7, 66, 8,120, 60, 30, 86,175, 94,157,189, 30, 56, 2, 0, 92, 14,199, 0, 0, 28, 14,177, 53,123,183,210,118, 75,161, 80, 8, +107, 81, 39,128, 74,215,117,214,235,215, 44, 95,190, 92,245,228,201, 19, 20, 22, 22,190,140,190,169,213,234,151,201,245,114,185, + 28,132, 16, 20, 22, 22,226,216,177, 99, 42,103,189,126, 77,121,122,121, 64,102,106,108,108,223,230,205,155,231,197,199,199, 67, +161, 80,224,225,195,135,184,112,225, 2, 14, 28, 56,128,115,231,206,225,249,243,231, 48,155,205,240,245,245, 5,165, 20, 71,143, + 30, 85,152, 85,170,119,242,128, 76,118, 90,148, 79,117, 47,175, 46,158, 30, 30,201,238,110,110,169,213,189,188,186,188,250,185, + 12,136,137,137,137,129,217,108, 70, 96, 96,160, 75, 69,121, 90,212,108,190,113,227,198, 13,188,251,238,187,240,171, 89,115, 89, + 0,224,254,234, 58, 1,128,123, 64,173, 90,203, 74, 12, 12, 53,155,111, 84,181,204, 14,192,186,207, 63,255, 92, 43, 16, 8,176, +127,255,254, 64, 83,237,218, 79,121,192, 8, 41, 16,210, 17, 16, 84,246,125,111, 96,195,151, 95,126,153, 73, 8,193,238,221,187, +221,100,181,106, 61,226, 1, 99,100, 64,117, 25, 80,157, 7,140,145,213,170,245,104,255,254,253,110,102,179, 25,211,166, 77,203, +244, 6, 54, 84, 32, 57,149, 82,218,135, 82,218,158, 82,234,183,109,211, 90,156,250,245, 80,137,201, 26, 71, 41,189, 67, 41, 29, + 77, 41,125,196,106, 28,131,193,248, 39, 67,202,202,131,226,183, 88,146, 5, 80,143, 14, 45, 27,226,238,131,103, 10, 55,103,199, +179, 37,159,229, 71, 31,170,211, 57,212,177,225, 15, 63,252, 0, 62,159,143,148,148, 20, 60,126,252, 24,142,142,142, 24, 57,114, +164, 94,171, 82,245, 45,153,235,144, 16,210,149, 82,122,161, 88,179,104, 62, 53, 69,172,180, 22, 47,170,230,153, 83, 39,184, 50, +153, 12,106,181, 26, 28, 14, 7,118,118,118,176,183,183,135, 88, 44,198,189,123,247, 16,222,167,159, 37,199,190,253,203, 1, 75, + 75,230, 83, 43,173, 9, 66,184, 0,208, 2,176,143, 4, 62,243,240,241,153, 49,111,222, 60,113,143, 30, 61, 32, 16, 8, 80,173, +122, 80,102, 96,207, 21,235, 56, 28, 98, 78,205, 83,206,173, 85,221, 71,246, 56, 54, 17, 0, 41,154, 19,177,120,174,195,178,202, +233,111,184, 26,248,203,207, 43, 29, 27, 55, 46,202, 71,151,203,229,200,202,202, 66,118,118, 54,228,114, 57, 10, 11, 11, 1, 0, + 39, 78,156,192,169,107, 79,149,218,106,131,227,202, 43,231,127,182,253,153,131,143,241,118,141, 61,187,126,230,186,187,187, 35, + 43, 43, 11, 57, 57, 57,144,203,229,208,106,181,176, 88, 44,200,207,207,199,214,237, 63, 91,242,164,237, 19, 74, 6,132,172, 80, +179, 48, 69,236,162,254,205, 55,172, 94, 0,253,224,131, 15, 28, 28, 29, 29, 97,181, 90, 81, 80, 80,128,228,228,100,196,199,199, +227,218,181,107,133,217,114, 3, 10,221,186,165,150, 12, 88, 90,230,254,124,123, 33,212,191,159,102,113, 93, 2, 0, 31,111,239, +244,164,164, 36, 15,139,197, 2, 95, 95, 95,179, 60, 63,127,153, 16, 56,231, 0,100, 0,160,185,192,188, 53,235,214,141,237,215, +175, 31,154, 53,107,150,146,153,149, 85,163,172,186, 4, 66,184,193,128, 76, 83,173, 90,244,157, 59,119,188,146,147,147,241,238, +187,239,230, 38,189,120, 49, 75, 86,156,175,165, 0,218, 5,212,170,181,108,255,254,253,110, 53,107,214, 68,104,104,104,166, 93, +114,114,253,103,128,162,156,250, 89,238,185, 41,143, 57, 89, 99,210,128, 6,205, 62,250,232, 35,152,205,102, 92,187,118, 13,183, +111,223, 70, 82, 82, 18,126,251,237, 55,185,163, 68, 50,172,100,174,195,242,234,231, 59, 65,133,129,187,119,239, 34, 2,129, 0, +219,183,111, 71,100,100, 36, 0, 32, 44, 44, 12,239,191,255, 62,204,102, 51, 70,141, 26, 77, 79, 62, 19,199, 85, 84, 63, 9, 33, + 13, 0,124,135, 34,147,215,140, 82,106, 71, 8, 73, 7,224, 87,149,156, 44, 86, 63,153, 38,211,252,247,104,254, 83,169,116,174, +195,197, 27, 33,251,227, 52, 31,227,211, 15,109, 90,196,107,219,174,125,200,162,133, 11, 56,205,155, 55,135,159,159, 31,194,194, +194,144,156,156, 44,114,114,114,170,108, 62, 53,117,251,158, 35,226, 27, 54,108,232, 52,107,214, 44, 89,247,238,221,249,126,126, +126,160,148, 34, 50, 50, 18, 71,142, 28, 49,110,217,178, 69,169,241,236, 35,143,184,188, 87,109,203,124,106,183, 1, 13,128,175, +170,165,167,111,158, 60,105,210,130,198, 77,154,124,176,112,225, 66,142,212, 94,204, 95, 58,119,156, 29, 0, 44,254,254,128,172, +223,224,145, 88, 83, 27,232, 48,162,236,121,228, 74,151, 51, 57,117,124, 82,175, 1, 93,106,127, 54,101,172,101,232,208,161, 18, + 71, 71, 71,248,249,249,193,217,217, 25,113,113,113, 72, 77, 77,165,199,143, 31, 87,223,188, 31,195, 63,122,238,110,146,157,204, +219,150,121, 9, 85,237,123, 12, 73,232,213,171,151,243,152, 49, 99, 28,154, 54,109,202, 23,137, 68, 16,137, 68,200,202,202,194, +243,231,207,141,199,143, 31, 87,107, 60,222, 41,136,184,188, 95,101,227, 92,135,218,246,195, 23, 61,191,126,126,225,180,232,135, + 15, 71, 91,129, 70, 70,163,209,215, 98,177, 16, 14,135,147, 97,181, 90, 31, 26, 85,170,109,250,176,133,171,217, 92,135,182, 97, +177, 88, 4, 22,139, 5,114,185, 28,231,207,159,231,189,120,241, 98,222,131, 7, 15,230,165,167,167,195,100, 50, 97,208,160, 65, + 8, 11, 11,195,229,203,151,145,147,149,117,188, 34,173,103,128, 66,148,154,250,254,248,241,227, 79,239,218,181,139,243,224,193, + 3,183,237,219,183,111, 45,203,192,140, 30, 61,218,154,149,156,252,190, 30, 80, 84, 80, 63, 43, 58, 55,115,207,236, 95,255,160, +255,192,193,245, 22,206,159,199,111,221,186, 53,220,220,220,208,174, 93, 59, 24,141, 70,167,186,117,235, 86,118,110,170,218,247, + 28, 22,215,168, 81, 35,201,234,213,171,189,198,142, 29,139, 41, 83,166, 0, 0,180, 90, 45,206,157, 59,135,105,211,166,101, 38, +243, 90, 20, 86, 86, 63,139, 35, 85, 37, 6,236, 42,128,246, 0,226, 88,226, 59,131,193,248, 71, 70,173, 8, 9,163,148, 70, 18, + 66,188, 1,132, 3, 56, 73, 41,205, 40,215,104, 1,255,153, 79,237,250,237, 71, 40, 61,205, 71, 17,222,143,205,254, 99, 94, 76, +156,177, 44,148,107, 82, 58,243,137,206, 49, 54, 38,134, 84, 54,231,225,203,249,212,100, 65,106,215,248,125,205,151, 46, 94,252, +201,154, 53,107,186,148, 12,225, 96,111,111,255, 80, 91, 88,120,209, 93,175, 95,171,145, 5, 93,172,234,220,124,169, 64, 22,128, + 73,206, 17, 17,235,122,247, 27,180,220,206, 37,144, 63,103,201, 22, 29,151,195, 49, 60, 79,207,193,154,218,128,196,134, 14,146, + 26, 3, 16, 45,247, 54,103,185, 14,126,246,229,231,159,127,182,248,171,175,154, 75,165,210, 14, 70,179, 57,200,106,181, 2, 86, +107,172,166,176,240, 42, 53, 26,239,232,195,230,175,180,147,121, 83,155,231, 37,116,170,171,114, 73, 56,212,124,199,182,109, 83, + 15, 30, 60,248,167,109,119,213,235,215,105,156,234, 94,176,101,219, 75,175,163, 3,126, 71,118,246,239,229, 86, 2,176,185, 14, +109,126,250,176, 90, 39, 56, 59, 59,239,236,210,165,139, 93,215,174, 93, 17, 30, 30,142,214,173, 91,195,106,181,130, 82, 10,149, + 74,133, 3, 7, 14, 96,249,242,229,177, 53,128,175, 42,211,211, 3, 23, 69,167, 78,189,211,168, 81,163,237, 21, 25,152, 98,147, + 85,105, 78, 98,197,231,166, 40,214, 44,235,155, 56,124,242,210,218, 6,101,134,147,171,189,217, 43,250,209, 67,142,237,231,102, +176,202, 18,121,160,197,160, 1, 3, 38,115,121,188,118,197, 61, 32,233,147,199,143, 35, 74, 38,149, 70,216,251,231,171, 88,151, + 74,198,174, 99,137,239, 12, 6,227,159, 74, 24,128, 72, 0,225,148,210,205,197,201,241,229, 39,195,243,120,188,236,146,168, 15, +143,199,203,142, 59, 58,113,100, 69,234,124,160, 75,113, 36, 11,149,206,117, 88,252,127, 34,160,130, 94,255,245, 31, 6, 35, 45, +213,187,144,255,202,250, 85,217,218, 2,224, 25,204,250,222,200,126, 12, 28,155, 84,164,215,124,241, 23,165,183,169,220,155,236, + 31,126, 87,144,175, 3,174, 67,173,190, 14,181,186,204,164, 93, 62, 79,144, 95, 89, 57, 95,221,246,100, 64,249,166,219,206,171, +226,254,225,189,193,254,252,183,145,150,155,123, 20,128,180,218,137, 19,158,103, 78,156, 24,250,217,244,233,131,188,125,124,106, +185,185,185, 57, 59, 56, 56,112,110,221,186, 21,111,214,233,214, 53, 6,118, 20, 71, 83, 43, 69, 15, 92, 12, 78, 78,174, 63,100, +192,128,201,132,199,107, 91,218,192, 80,179,249,183, 64, 96, 67, 69,145,172,215, 61, 55,253, 68,222, 93,138, 35, 89,224,218,120, +110,166, 22,149, 99, 9,204,230, 37,136,138, 42,163,206, 87,185, 46, 45, 38,132,168,192, 18,223, 25, 12,198, 63,151,147,197,230, +234,228,159, 62,249, 43,231,247, 1,208,149,105, 50,205,127,138,102,145, 87,129, 35,219,159, 76,147,105, 50, 77,166,249,246, 53, +255,169, 11,143,153, 80, 6,195, 54,104, 81,114,186,146,237, 9, 6,131,193, 96,148,166, 84,110, 86,233,123,198,102,160, 40,117, +167,107, 57, 55,149, 11, 85,248,129,174,175,113,211,186,192, 52,153, 38,211,100,154, 76,147,105, 50,205,127,151,102,101,218,127, +199,222,140,132,144, 9, 37,185, 89,175,142,169, 69,108,157,230,230, 53,127,152,117,125,101,154, 76,147,105, 50, 77,166,201, 52, +153,230, 63,154,138, 34, 90, 28,182,123, 24, 12, 6, 3, 88,180,136,112, 0, 66,128, 69, 28,224, 16, 23, 24,194, 45,122,253,250, + 12, 25, 66,202, 28,204,118,234, 40, 23, 7,182,199, 25,140,127, 14,148,210,140,242, 38,149,102, 57, 90,255, 93, 7,236,239,229, +229,181, 9, 0,201,204,204,156, 64, 41, 77,102,123,229,127, 15, 87, 87,215, 46,102,179, 25, 10,133,226,226, 63,113,251,234,215, + 38, 3, 40, 7,117,255,115,197, 64,242,227, 88,186,179,172,117,235, 5,145,119, 65,254, 51, 22, 23,177,226, 73,244,115,250, 75, + 21,234, 60,231,157,174,126, 27, 0,224,244,133,148,201,127,197,184, 90,132,144, 58,238,238,238,103,121, 60, 30,207, 98,177, 76, +202,202,202, 58, 81,190, 17, 26,194, 5, 0, 62,189, 60,219,205, 37,100,214,167, 31, 18,190, 70,191, 77,174,215, 22, 42,184,124, +110,130,136,239,117, 3, 92,223,211, 5,234, 86,143,203,250,254,193,131, 7,203,157,197,187, 65, 16,121, 39,164, 94,189, 62, 77, + 66,197,113,223,173,109,190,166, 67,160, 27, 63, 62,229,190,244,219, 31, 21,155, 28, 93,170,247, 25, 51,204,245, 4,207,158,140, +222,186, 53, 87,205,206, 50,219,249,134, 16, 23, 35, 16,202, 23,137,252, 44,102,179, 39, 1, 40,151,199,203, 50,233,245, 41, 2, + 32,106, 22,165,242,127,186,166, 64, 36,170,102, 49,155, 61, 1,224,127,177,156,140, 63, 82,174,209,114,112,112,184,199,225,112, +170,149,158, 12,183,100, 62,193,146,247, 74,127, 70, 8,129,197, 98, 73,205,207,207,111, 90,133, 11,162, 35,128,161, 0, 74,186, +168,239, 1,112,128, 82,170,124,205, 11,172,163, 64, 32,152, 33,145, 72, 58,107,181,218,250, 0, 32, 22,139,163, 11, 11, 11, 47, + 25,141,198,239, 94, 71,151, 16,194, 3, 48, 68, 42,149,118,226,112, 56,157, 40,165,132, 82,122, 89,173, 86, 95, 2,112,144, 82, +106,126, 13, 77,177,135,135,199,146,144,144,144, 17,179,103,207,206,115,117,117, 13,158, 54,109,218, 93,119,119,247,189,185,185, +185,115, 41,165,218,255,133,202, 65, 8,169,229,229,229,181,135,207,231,115, 83, 82, 82, 58, 1,128,159,159,223,101,131,193, 96, +201,206,206, 30, 73, 41,125, 81, 69, 61, 9,128,150, 82,169,180,169, 84, 42,109,111,177, 88,234, 22,207,207,248, 68,173, 86, 95, + 51, 26,141,247, 0,220,162,148, 22,254, 15,153, 97, 7, 15, 15,143, 93,132, 16, 16, 66,130, 40,165,170,127,220,147, 24, 7,117, + 31, 71, 63, 13,126,105,166,234,135, 84,176, 67,224, 95,198,186, 54, 27,173,206, 29,188,251,244,237,219,141, 3, 0, 6,211,233, + 62,168,226,228,215,182,152,172,129, 3, 7,254,190,107,215, 46,103,189, 94,143, 9, 19, 38,236,145,201,100, 27, 20, 10,197,236, +138,190,231, 40,117,158,182, 98,245, 57,251,162,249,175,225, 97,181, 90, 60,210,210, 94, 4, 61,126,244,123,207,232,232,155, 75, +181, 79, 47,221,178, 18,254, 68, 35,218, 61,181,165, 28,245,106,145,222,253,134, 12, 8,255,234,171,133, 24, 49,108, 68,245,232, +104,157,216,215, 49, 78,152,175,149,212,118,117,247,232,251,213,226, 67,228,198,245,163,125,119,109, 95,116,233,131, 15,220, 58, + 51,179,101,211,177, 37,139,121,188,150,206, 33, 33,237,135, 29, 61, 10,169,159, 31,143, 39, 18,113, 0,192,172,215,251,169, 83, + 82,188,247,247,237,219, 98, 17, 33, 87, 22, 80,122,155,105,254,255,107, 50,170,104,180, 56, 28, 78,181,180,180, 52, 15,137, 68, + 82, 18, 22,131,197, 98,129,197, 98,121, 57,121, 49,165,244,229, 95,179,217,140,144,144, 16,155,158,104, 1,116, 6,240, 94,199, +142, 29, 7,127,247,221,119,252,208,208,208,146, 41, 67,218,205,153, 51,231,123, 66,200, 97, 0, 59, 0, 92,180,245,137,151, 16, +210, 67, 34,145,236, 94,177, 98,133, 99,183,110,221,120, 62, 62, 62, 32,132, 32, 51, 51,179,229,133, 11, 23,154, 78,155, 54,109, + 18, 33,100, 20,165,244,108, 21, 78,236, 6, 14, 14, 14,135, 6, 12, 24, 80,173, 67,135, 14,118,245,234,213,131,197, 98,193,253, +251,247,199,222,187,119,111,248,225,195,135, 23, 16, 66, 6,219, 58, 95, 27, 33,132, 72,165,210, 49,190,190,190, 75,230,207,159, +239, 50,106,212, 40,225,163, 71,143, 10, 2, 3, 3,201,141, 27, 55,220, 15, 28, 56, 48,105,217,178,101, 67, 28, 28, 28,230,170, +213,234,159,169, 13, 9,116,142,142,142,247, 56, 28, 78, 53, 91,140, 48, 0,155,205, 48, 33,164,113,141, 26, 53, 14, 92,191,126, +189, 70, 98, 98,162,165,127,255,254, 59, 1,224,210,165, 75,161, 38,147,137,116,239,222,253, 52, 33,100, 40,165,244,190,141,219, +222,208,197,197,229,215, 17, 35, 70,184,212,170, 85,203,190, 70,141, 26, 68, 34,145,128,203,229, 66,161, 80,248, 60,122,244,168, +235,237,219,183,181, 23, 46, 92,200, 39,132,244,165,148, 70, 85,225, 56,181,246,240,240, 24,205,231,243, 27,152,205,102, 95, 0, +224,241,120,105, 38,147,233, 81,118,118,246, 46, 74,233,239,175,123,130,120,122,122,174, 95,178,100,137, 91,118,118, 54, 93,182, +108,217,122, 0, 99,254,169, 23,131, 61,123, 15,226,222,221,219, 0, 32, 32,132,144, 87,235, 31, 33,132,212, 13,130,224,211, 79, +167,163,105,179, 22, 24, 57, 98, 72,165,154,225, 93,253, 86,240,133, 2, 87,157, 78,247,187, 66,163, 63,232,233,234, 52,116,196, +240,222,177, 0,112,250,204,149,161, 45, 90,184, 92,150,217,139,134,216,217,217,181, 54, 25,140,121, 39, 47,164,124, 94, 21, 83, +229,235,235,123,214,217,217,217, 62, 63, 63, 63, 51, 39, 39,103,227,192,129, 3, 23,239,216,177,195, 57, 62, 62, 30, 41, 41, 41, +248,228,147, 79,164,169,169,169,147, 69, 34,209, 77,189, 94, 95,110,100, 75,165,202, 95, 59,103, 86,191,249, 50,153, 27, 87, 98, +239, 8, 7,153, 11, 2,107, 53, 66,203,214,125,240, 78,248, 7,120, 30, 27,217,114,199,246,175, 34,211,210, 46,124, 35,117,169, +185, 88, 46,175, 81,238,117,169,126, 48,233, 80, 98,178,230,207, 95,136,152,167, 79, 85,137, 9,156,143, 79, 30,229,217,191,211, + 37, 68,100, 54,100, 38,222,184,126,180, 70,219,118,253, 1,160,233,174,237,139, 46, 77, 29,229,210,101,221,238,124, 21,187, 37, +149,127,237,252,138,207, 31,211, 99,245,106,143,176, 73,147, 4,234,132, 4, 99,220,143, 63,106,178,174, 93,179,240, 68, 34,234, +215,179, 39,113,239,212,201,110,210,147, 39,130,223,150, 45,107,191, 84, 40, 12,156, 99, 48,236,102,154,255,127,154,172,142,190, + 76,134,127,153,171, 85,210,124,200,171,224, 75,144, 72, 36,216,191,127, 63,248,124, 62,120, 60, 30,248,124,126,185,255,251,251, +251,219, 82,144,129, 94, 94, 94,223,111,216,176,193,179, 71,143, 30,176,179,179,123,249, 25,151,203, 69,183,110,221,208,181,107, + 87,126,122,122,250,240,253,251,247, 15, 95,186,116,105, 22, 33,100, 10,165,244, 72, 37,186,157,130,131,131,143,156, 59,119, 78, +172,211,233,112,237,218, 53, 20, 20, 20, 64, 40, 20,162, 90,181,106,232,222,189, 59,239,233,211,167, 46,221,186,117, 59, 66, 8, +233, 77, 41,189,108, 67, 89,155,122,120,120, 92, 61,120,240,160, 93,163, 70,141,200,243,231,207, 17, 22, 22, 6, 0, 80, 40, 20, +232,223,191,191,221,168, 81,163,106, 13, 31, 62,252, 22, 33,164, 3,165,244, 94, 37,122, 77,188,188,188,126, 30, 48, 96,128,207, +210,165, 75, 29, 29, 28, 28,144,152,152,152,225,229,229, 21, 84,178,191,135, 15, 31, 46,236,211,167,143,247,242,229,203,215, 30, + 58,116,232,115, 66,200, 24, 74,105, 68, 69,186, 37,134,216,222,222, 30, 89, 89, 89,216,179,103, 15, 38, 79,158, 12, 46,151,139, +236,236,108, 28, 56,112, 0, 31,127,252,113,137,161,177,201, 12, 75, 36,146,174,141, 26, 53,218,122,233,210,165,106, 78, 78, 78, +240,241,241,225,124,249,229,151, 13, 2, 3, 3,197,213,171, 87,231,102,100,100,224,200,145, 35,129,163, 71,143,254,213,206,206, +110,172, 78,167,171,180, 73,205,211,211,115,219,201,147, 39,253,163,163,163,241,227,143, 63, 34, 63, 63, 31, 66,161, 16, 78, 78, + 78,240,242,242, 66, 80, 80, 16,153, 53,107,150,125,159, 62,125,236,167, 76,153,178, 13, 64, 99, 27,142, 81, 35, 15, 15,143, 77, +195,135, 15, 15, 92,180,104,145,147,151,151, 23, 74, 30, 12, 20, 10, 69,181,196,196,196,150,243,231,207, 31,236,233,233, 25,159, +157,157, 61,145, 82,250,160,138, 39, 78,227, 46, 93,186,244,238,223,191, 63, 55, 35, 35, 3,187,118,237,234, 77, 8,105,108,171, +185,252,187,113,239,238,109, 76,248,232, 19,181,143,159,159,224,220,217,173, 3,229,242,122,119,157,196, 69, 19, 82,203,181, 48, +118,238,192,109,214,189,199, 7,130, 94,225,253,213,155,127, 88, 43,181,197,104,241,133, 2,215, 61,187, 87, 37, 95,191,113,175, +193,249, 11,183,123, 14,236,219,151, 10, 4, 78,129, 0,240,249,180, 79,249, 71,142, 29,219,222,173,107,139,244,118,109,155, 38, +143, 28, 53,221,191, 10,199,166, 78,157, 58,117,174, 68, 70, 70,122,138, 68, 34,228,231,231,187,110,222,188,121, 85,219,182,109, + 57,113,113,113,120,250,244, 41, 18, 18, 18,160, 80, 40,208,173, 91, 55,105, 68, 68,196, 70, 0,229, 26, 45, 35,167,243, 18,159, +234,166,117,174, 98, 73, 13,163, 69,233, 65, 77, 25,245,206,159, 60,223,112,223, 46,109,152,167,119, 72,208,123,239, 47,192, 87, +139, 15,243,247,238,249,118,254,197, 11,251, 0, 78,141,242,103, 4,160,104, 61,103,238,108, 40, 85,122,140, 26, 49, 30,163, 71, +140,119,165, 48,120, 83,139, 78, 98,208, 22, 56, 57, 8,158,156,216,176,101,213, 0, 0,213, 74,153,173,139,204,108,149,207, 87, + 60, 94,139,222,223,127,239,222, 96,220, 56,209,131, 69,139, 10,115,175, 93,211,214,238,213,171, 32,236,195, 15,245, 0,160, 74, + 72, 16,196, 44, 88, 96,239,222,190,189,184,213,140, 25,206, 22,131,193,235,107, 66,154,127, 73,233,157,170,106,250, 15, 29,106, +153,191,125,123,179,107,211,167,119, 36, 38, 19,183,103,171, 86,247,151,237,218,149,246, 38,154,111,179,156,233, 87,175,234,243, + 3, 3, 17,214,191,127,158,191,135,135,254,109,110,251,155,148,147,129,146,160, 84, 6,128,146,145,225,139,174, 87,148, 82,156, + 60,121,178, 3,128, 43, 0, 22,133,135,135, 47, 4, 0, 39, 39,167, 44,185, 92,238,113,228,200,145, 74, 77, 22,159,207,135,183, +183, 55,130,130,130,178,179,178,178, 60, 43,184, 56,166, 88,173,214,106,148,210,151,209,151,242,208,235,245,136,141,141, 69,195, +134, 13, 83, 41,165,126, 21, 53,237,216,219,219,199, 61,125,250,212,237,241,227,199,184,119,239, 30, 2, 3, 3,225,236,236, 12, + 62,159, 15,147,201, 4,165, 82,137,224,224, 96,136, 68, 34, 52,105,210, 36,183,176,176, 48,176,162, 38, 32, 66,136, 72, 34,145, +196, 94,189,122,213, 47, 44, 44, 12,119,238,220,129,159,159, 31,188,188,188, 0, 0, 9, 9, 9,184,113,227, 6,122,245,234,133, +200,200, 72, 12, 26, 52, 40,165,176,176, 48,136, 82,170, 47, 79,211,213,213, 53,227,210,165, 75,169,161,161,161,186,194,194, 66, + 78, 86, 86, 22,255,218,181,107,102,149, 74, 37, 85, 40, 20,124,185, 92,206, 87, 42,149,188,194,194, 66, 62,135,195, 17,104,181, + 90,254,197,139, 23,185, 6,131,193,177,162,253, 84,114,156,142, 29, 59,134,208,208, 80, 28, 57,114, 4,159,125,246, 25,126,251, +237, 55,248,249,249,225,224,193,131,152, 49, 99, 6,158, 61,123, 6, 55, 55, 55,212,171, 87,175,194, 99, 4, 0,181,107,215,126, +254,240,225,195, 90, 2,129,160,100, 94,199,146,249,242,144,147,147,131, 23, 47, 94, 32, 45, 45, 13,181,107,215,198,136, 17, 35, + 94,164,166,166,214,174,172,242, 85,171, 86, 45, 39, 58, 58,218,173, 97,195,134,200,202,202,130,147,147, 19,100, 50, 25,156,156, +156, 94,254, 31, 24, 24,136,233,211,167,195,203,203, 43, 91,171,213,122, 86,102,130, 66, 67, 67,207, 94,188,120,209,205,209,209, + 17,153,153,153, 80, 42,149,224,241,120,176,183,183,135,155,155,219, 75, 35, 31, 27, 27,139,240,240,240,220,184,184,184, 30, 85, +136,192,113, 60, 61, 61,159, 70, 69, 69, 5, 81, 74,145,156,156,140,103,207,158,225,163,143, 62,138,213,233,116, 33,255,164, 57, +251, 74,229, 93, 9,198,188, 63, 65, 48,160, 95,107,195,147,232, 19, 68,100,125,134,198, 13, 28, 21, 0,112,255,145, 82,166,231, + 4,163,110,253,222,244,151, 95,127, 23,254,188, 99, 51, 31, 86,120,130,224,217,227, 24,250,117,121,218, 61, 58,251,140,251,244, +211,177, 13, 58,182,237,192, 81, 21, 22,122,108,220,184,186, 73, 92,220, 19, 15, 0, 8, 12,172,155, 61,105,210,180, 8, 7,137, + 36,251,202,141,171,214, 53,107,182, 61, 58,123, 41,125,139, 13,199, 38, 48, 40, 40,232,230,177, 99,199,220, 60, 60, 60, 32,147, +201, 80, 88, 88, 8,163,209,136,199,143, 31,235,246,239,223,111,114,116,116,116,200,204,204,132, 92, 46, 7, 33, 4,199,142, 29, + 75,166,148, 6,188,170, 85,146,163, 5, 0, 31,189, 83,151, 95,175,115,144,179, 64,100, 22,139,249, 49,222, 32, 22, 17,161, 82, +207,211,103,239, 55, 60,125,254,206,200, 1, 3, 63,115,111,215, 97, 0,230,207, 27,108, 74, 79, 79, 14, 51,162,221,211,178,114, +180,234, 6,145,206,253, 7, 13, 24,242,213, 87, 11,177,112,254, 34,156, 56,118, 84, 33,149,112,244,142, 78,124, 89,251,150,109, +116,211, 39,247, 75, 81,171,211,253,190, 90,190,127, 68,120,191,233,213,218,182,235,143, 27,215,143, 98,215,246, 69,247,136,152, +178,102,196, 87, 88, 68,136,179, 83, 96,224,196,169,177,177,130, 7, 11, 23,170,205,233,233, 5, 77,167, 77,203, 45,107,221,212, +243,231, 37, 66, 31, 31, 71,231,190,125, 93,214, 6, 4, 80, 83,118,246,166,178,114,140,202,210,188, 32,149, 58,237, 59,125,186, + 11,229,243, 59,204,252,226, 11,113,239,222,189,161, 84, 42,113,248,240, 97,108,250,241, 71,189,183,183,247, 67,159, 71,143, 34, + 27, 40,149,243,108,213,108, 58,109, 90,174,197, 98, 33, 67,102,204,232, 22,157,144,208, 57, 51, 59,187, 58, 0,120,187,184,164, + 52, 13, 12,188,183,237,196,137,103,235,107,212,176,218, 90,206,159,206,156,241, 60,148,152, 56,206,197,197, 69,156,149,157,205, + 19, 9,133,121, 45,235,213, 59,248,195,220,185, 87,204, 81, 81, 2,187,106,213, 28,101,189,123, 87,121,219,155, 78,155,150,155, +175, 82,241,166, 46, 94,220, 38, 41, 43,171,186, 90,175,175, 45, 87,169,188, 44, 38, 19,199,209,222, 62,175,102,112,112,182,246, +218,181,140,154, 26,205, 39, 63, 81,154,253, 87, 29,235,178,188,200,223, 40,162,245,106,175,195, 63,205,117,120, 37, 60, 60,156, +148,225,204,108,138,102,241,249,252, 63, 52, 83, 85,128,128, 16,130,136,136, 8,184,186,186,194,203,203, 11, 34,209, 31, 39, 31, +204,201,201,193,111,191,253,134, 39, 79,158,160, 81,163, 70, 0,138,158,168,203, 67, 36, 18,125,186,124,249,114, 39,131,193,128, +123,247,238,161,105,211,166, 16,137, 68, 16, 8, 4,127, 48,129,217,217,217,168, 95,191, 62,102,206,156, 41, 91,186,116,233,167, +168, 96,142, 58, 30,143, 55,101,252,248,241, 30, 37, 17,172,148,148, 20, 52,105,210,228,229,231,238,238,238,184,127,255, 62,154, + 54,109,138,106,213,170, 97,240,224,193, 30,187,118,237,154, 2,224,187,242, 52,133, 66, 33, 39, 52, 52,180, 89,113,196, 8, 28, + 14, 39,198,209,209,209,221,211,211, 83,226,232,232,248,167,109,220,190,125,187,156,195,225,152, 42,219,161, 28, 14, 7,153,153, +153,104,208,160, 1, 20, 10, 5, 0,160,176,176, 16,181,107,215,134, 82,169,124,105, 90,125,124,124,160,213, 86,156,250,213,168, + 81,163,133, 33, 33, 33,221, 59,118,236, 40,226,243,249,120,240,224, 1,194,194,194,176,127,255,126,248,251,251,195,222,222, 30, +177,177,177, 8, 13, 13,197,213,171, 87,225,238,238,142,250,245,235,139,154, 52,105,114, 61, 63, 63,255,114, 98, 98,226,194, 10, +202,201,145, 74,165,184,122,245, 42,182,109,219,134,132,132, 4,164,167,167,195,193,193, 1,141, 27, 55, 70,189,122,245,208,186, +117,107,196,198,198,130, 84, 82,153, 8, 33, 94, 65, 65, 65, 39,238,220,185,227, 70, 41,197,174, 93,187,160, 86,171, 97, 48, 24, +192,225,112, 96,103,103, 7,103,103,103,116,238,220, 25,238,238,238, 8, 10, 10,194,129, 3, 7,220,222,121,231,157, 83,197, 17, +169,204,202,246,171,179,179,243, 39, 11, 22, 44,240,243,240,240, 64, 98, 98, 34, 20, 10, 5, 60, 61, 61,209,177, 99, 71,223, 11, + 23, 46,124, 2, 96,245, 63,229, 70, 86,146,248, 78, 8, 33,231,206,110, 29, 24, 84,179, 32,180, 81,176,189,223,145, 19,158,126, +251, 79,100,215, 7,128, 6,117, 61,163, 7,246,182, 79,121, 16,125, 34,229,220,217,163,247,158,196,224,136, 45, 77,219, 10,141, +254,224,249, 11,183,123,134, 53,106, 98, 93,254,237,140,240,201, 31,141, 19,121,120,126,128,172,228,163,184,112, 41,194,127,198, +103,227,221,191, 91,249,211,233,243, 23,110,115, 20, 26,253, 60, 91,202, 91,167,142,255,250, 29, 63,180,118, 83,229, 30,194,243, +167, 66,136, 29, 26, 32, 48,176, 14,148, 74, 37,236,236,236,236, 70,140, 24, 97,153, 61,123,182,198,209,209,209,158, 16,130,203, +151, 47,103, 3,232, 81,153,174,206,195,153, 90,140, 38, 51, 21,114,173,148, 56,104,137, 37, 95,248,232,113, 60,186,119,237,148, +213,182, 69,131,165,179,191, 90, 57, 39,168, 78,152,251,216,113,139,248,139, 23,142,252, 17, 4,237,202,210,121, 18, 75, 47,213, +171, 69,196, 0,194,191,250,122, 33,226,226, 98,157, 39,188, 39, 95,196, 19,137,125, 66, 2,218, 56,252,184,237,114,207,218,181, +107, 84,159, 62,101,240,201, 85,223,175, 10, 47, 29,217,218,177,125,193,175,132,144, 46,244,175, 28,119,231,239, 71,195,209, 39, + 78, 64,157,156,108,202,191,126, 93,215,229,251,239,115,253,122,244, 88,109, 48, 26,221, 74, 46, 21, 28, 66, 64, 74, 82, 39,172, + 86,194,155, 57,147, 67,121, 60,152,156,157,223,155, 5,212,169, 76,243,179,140,140,129, 35,199,141, 11,255,245,204, 25,212,168, + 81,227,229,253,204,201,201, 9, 51,102,204,192,180,105,211, 68,247,239,223,111,126,232,208,161,230,223,173, 88,225, 57, 11, 24, +104, 75, 57,207,221,186,229,252,225, 87, 95,205,109,212,180,169,255,206, 61,123, 68,181,106,213, 2, 0,188,120,241, 34,232,219, +101,203, 2, 26,132,134,102, 45,253,244,211, 29,209,179,103,215, 7,112,189, 34,205,204,107,215, 12,135, 18, 19,199, 93,186,124, +217,169, 65,131, 6, 0,128,103,207,158,121,172, 93,187,118,124,253,193,131, 71,125, 53,105,210,188,222, 58,157,220, 49, 39, 71, +212,123,253,122,222,190, 33, 67, 42,213, 44, 41, 39, 0,116, 28, 59,246,211,118,157, 58,213, 27, 56,110,156,139,191,191, 63,145, + 74,165, 48, 26,141, 72, 79, 79,119,142,142,142,174,117, 66,165, 82,254,114,235,214,174,159,138, 39,139,255,139, 40,211,139,252, +157, 34, 89,101,122,138,226,191, 29, 79,158, 60, 73, 1,116, 12, 15, 15,191, 90,114, 3,183, 88, 44, 54,153, 44, 30,143,135,226, +100, 97, 91, 11,132,220,220, 92,228,230,230,190,108, 58,202,206,206,198,165, 75,151, 16, 27, 27, 11, 62,159, 15,129, 64, 0,163, +177,242, 57,104, 37, 18, 73,215,174, 93,187,242,110,221,186,133,192,192, 64,136,197,226,151,229, 42, 89, 4, 2, 1,188,189,189, +161, 84, 42,209,165, 75, 23,254,186,117,235,186, 86,100,180,100, 50, 89,175,161, 67,135, 10, 75, 94,171,213,106,112,185,220,151, +166, 69,173, 86, 35, 63, 63, 31,114,185, 28, 58,157, 14,173, 90,181, 18,158, 56,113,162, 87, 69, 70,171, 52, 26,141, 70,157,157, +157,237,212,174, 93, 59,231, 29, 59,118, 60,107,213,170, 85,240, 31,106,218,149, 43, 58,157, 78,199,231,112, 56, 54,205,163,183, +123,247,238,151,251, 62, 45, 45, 13, 63,254,248,227,203,207, 98, 99, 99,177,110,221,186,151, 83, 1, 84,116,140, 66, 66, 66,222, +217,181,107, 87,211,157, 59,119, 22,112,185, 92, 60,123,246, 12,123,246,236, 1,165, 20,238,238,238,208,104, 52,200,202,202,194, +229,203,151, 97, 54,155, 33,149, 74,225,235,235,107, 55,101,202,148,182,139, 22, 45,226, 3, 40,215,104, 89, 44, 22, 11,151,203, + 69, 64, 64, 0,230,207,159, 15,157, 78, 7,129,160,200, 95, 42,149, 74,200,229,114, 68, 70, 70, 34, 49, 49, 17,149,221,100,236, +236,236, 6,239,220,185,211, 67, 40, 20, 66,171,213, 66,165, 82, 33, 37, 37, 5, 73, 73, 73,186,236,236,108,179,131,131, 3, 39, + 32, 32,128, 35, 18,137, 68,253,251,247, 39, 37,134,179,119,239,222,174,187,118,237, 26, 86,153, 73, 34,132,184,215,173, 91,119, +206,248,241,227,237, 74,215,217,204,204, 76, 12, 28, 56,208,254,247,223,127,159, 77, 8,217, 67, 41,205,249,135,133,188,169, 92, + 94,239,238,189, 11,207, 66,143,156,240,244, 75, 74,181,180,153,241,249, 74, 30, 0,108,222,244, 77,155, 35, 39,210,126, 11,169, +145,149,114,232,151, 58,119,157,156, 30,211,202, 34,130,157, 59,120,247,241,116,117, 26, 58,176,111, 95,186,113,227,234, 38,147, + 63, 26, 39, 10,168, 51, 3, 0,224,203,247, 64, 23,243,215, 68,163,125, 97,183,113,227,234, 38, 3,251, 14,138, 76, 72, 72,220, +212,165,163,207,129, 75, 87, 51,142, 87, 20, 49,244,112,181,243,181, 23, 21,194, 55,176, 30,130,235, 74,112,255,193, 51, 28, 62, +120, 19,117,235,183,132, 94,175,135,217,108,150,244,233,211, 71,179,127,255,126, 93, 76, 76,140, 74,171,213,118,160,148,198, 84, +182,253,169,169,143,173,193, 94, 45,141, 2,177,200,172, 82, 8, 52,179,230, 29, 26,210,164, 69,247,166,206,222,190,124,119,137, +245,248, 59,221,154,239,217,182,101,254,180,121, 11,246,160, 89,243,238,173,158, 60,187, 94, 15,192,195, 50,205,235, 11,122,162, + 65, 16, 49,199, 61,127, 30,158,148,152,152, 90,199,211,203,240, 66, 78, 77,159,204,250,169, 91,187, 14,131, 27,214,170,219, 94, +248,228,241, 85, 50,127,230,176,189, 95, 45, 95, 53,162,196,108, 93, 60,191,183,195,123,239,221, 20, 2,208, 51,127, 85,252,116, + 46, 18, 85,147, 6,252, 31,123, 87, 29, 94,197,241,118,207,236, 94,191,113,247,132, 32, 73, 32, 4,183,226, 20, 39, 80,164, 88, + 11, 5, 74,209,210, 2,133,226,210, 82,193, 74,129, 22,135,182,184, 59,193, 41, 65,138,123, 18, 32, 16, 36, 16,119,189,190,187, +243,253, 17,249,133, 52,114, 19,168,241,237,121,158,251,220,187,123,119,207,206,236,204,238,156,121,231,157,119,124, 36,207, 54, +110,212, 86,235,209, 35, 29, 0, 12, 70,163,227,179,231,207,109,212,106, 53, 40,165, 48,153, 76,175,248, 16, 23,248, 13, 7, 5, + 4,184,152,195,249,108,246,236,186, 83,166, 76, 65, 66, 66, 2, 56,142,131, 84, 42, 45,254,206, 70,110,110, 46,134, 14, 29,138, +159, 23, 47,110,102, 14, 39,207,243,100,244,188,121, 51,167,206,156, 89,125,212,168, 81, 76,209,119,175,189,189, 61,246,236,221, + 43, 95,185,114,165,231,140,159,127, 30,250,161, 66,241,164, 60,206,148, 26, 53, 96,159,152,168, 42, 16, 89, 0, 16, 16, 16,128, + 53,107,214, 40,134, 15, 31, 46,239,209,163,199,146,219,245,234, 45, 95,218,178,229, 99, 7,127,127,107,185, 66,225,105,238,253, + 4,128,108,157, 46,104,233,242,229,118, 87,175, 94, 69, 98, 98, 34, 18, 18, 18, 10,158,101, 52,110,220,152, 12, 30, 60,216,166, +170,151, 87,147,191,184,184,255,164, 69,254, 67, 22,173,145, 37,188, 83,255,231,163,149,159, 33,146,159, 65, 82,164,113,124, 69, +176,148, 39,180, 42,131,140,140, 12,100,100,100, 96,195,134, 13,144,201,100,133,141, 47, 0, 24, 12, 6,115, 68, 75, 29,119,119, +119,100,102,102,194,223,223,255, 21, 75,150, 76, 38,131, 68, 34,129, 76, 38,131, 66,161,128, 94,175,135,183,183, 55, 52, 26, 77, +157,178, 56,181, 90,109,125,123,123,251,194, 6, 86,175,215, 23,138,172,130,244, 26, 12, 6,164,167,167, 35, 39, 39, 7,217,217, +217,200,205,205,109, 96, 78,126, 5, 65, 64, 88, 88, 88, 84, 64, 64, 64,125,150,101, 97,105,105,105,145,155,155, 91,232, 91,148, +150,150,134, 77,155, 54,229,126,244,209, 71,142,135, 14, 29,210,152, 81,184,248,236,179,207,160, 80, 40,160,209,104,176,122,245, +106,124,254,249,231,144,201,100,200,206,206,198,154, 53,107,240,197, 23, 95, 64, 34,145,192, 96, 48, 96,249,242,229,165, 91, 54, + 34, 34,158, 93,185,114,165, 65,195,134, 13,237,246,239,223,159,220,177, 99, 71,167,206,157, 59, 67,165, 82, 65,171,213,194,100, + 50,161, 89,179,102,168, 89,179, 38,146,146,146,112,236,216,177, 20, 63, 63, 63,199,171, 87,175, 10, 9, 9, 9,209,229, 53,226, + 69, 44,134,224,121, 30,137,137,137,200,200,200, 64,114,114, 50,226,226,226, 16, 19, 19, 3,137, 68,130,242, 58,243, 14, 14, 14, +239, 7, 5, 5,177, 0,160, 82,169, 80,191,126,125,204,156, 57,147,211,106,181,253, 1, 28,203, 63,172,235,250,245,235,247, 95, +188,120, 81,226,238,238,142, 7, 15, 30,192,201,201, 73,162, 84, 42,203, 21, 90,174,174,174,191, 29, 62,124,216,190, 64, 92, 23, +220,103,141, 38,175, 56,250,244,233, 99,191,121,243,230,223, 0,116,123,219, 26, 53, 91, 21,100,245,131,172, 51,119, 30, 73,170, + 61,249,203, 37,146,154, 65,121,157,215,145,163, 32,249, 97,241,164,218,131,122, 90,135,216,170,178,100,229,241,116,237,224,181, +242,189,247, 58, 50, 31, 12,236,254, 72, 38,179,173,182,118,221,215,206,206, 46,195,139,152, 56,173,225,224,104,141,106, 62,114, +178, 39,228,190,243,180,233,223,232,183,110,254,241,201,246, 29, 71,186,200,165,167, 58, 1, 24, 83, 26,119,100, 84,198, 33,141, + 94, 89, 43, 43,245, 46,177,119,105,129,250,245, 2,224,236,148,142,245,191,237,132,111,213,198,208,235,245,176,182,182, 86,243, + 60,111,100, 89,118,171, 57, 34, 11, 0,206,156,201, 16,106,215,206, 48,176,217, 2,247,233,231, 63,244,238,216,245,189,192,119, +223,237, 32,156, 60,117,210,216,162,129, 49,190,107,231,250,137,199, 79,173,124, 20, 31,247,212,175,118,157,150,136, 8, 63,219, + 5, 32, 97, 64,201, 21, 54,236, 17, 61, 94,189, 58, 57,187,115,231, 72, 65, 43,220, 82,125,251,221,189,174,193,193, 67,130, 90, +183,106, 45,156, 58,253,187, 65,142,148,251,214, 45,155,199,126,250, 73,215,253,191,108, 93,222,233,248,177,223,106,100,102, 69, + 31,249,237, 55, 42,138,172,162,157, 52,142,115,145, 40, 20, 76,242,217,179, 92,157,225,195,245, 5,207,163, 90,173,198,193,131, + 7, 33,151,203, 11, 63, 50,153,172,240,183,139,139, 75,193,228, 43,179, 56, 1, 32, 62, 62, 30, 9, 9, 9,176,177,177,129,147, +147, 19, 18, 18, 18,112,233,210, 37, 68, 70, 70, 66, 42,149,162, 75,151, 46, 96, 74,241,109, 46,206,217,111,242,228,142,181,234, +212,241, 46, 46,178, 0,192,104, 52, 34, 45, 45, 13, 61,123,246,100,142, 29, 59,230,122,252,197,139,247,102, 3, 91,203,226,108, + 16, 28,156,154,184,103, 79,137,215,110,216,176, 33,249,227,143, 63, 20, 93, 58,119,158, 56,233,187,239, 86,254,188,121,243, 75, +158,227, 92, 43,146,119,134, 97, 24, 66, 8,188,188,188,144,150,150,134,156,156,188, 17,108, 75, 75, 75,216,217,217,193,100, 50, + 65,160, 84,250, 87,150,117,105, 90,228, 63,210, 81, 93, 87, 32,184,138, 71,134,151,228,143,139, 22,188, 40,218, 22,109, 88, 4, + 65, 48, 75,100, 73,165,210,114,125,174,204,177,114, 21,135, 57, 66,171, 32,173, 74,165,178,240, 65, 43, 42,176, 10,210,201, 48, + 12, 88,150,133, 57, 22,121, 65, 16,216,236,236,108,236,221,187, 23,109,218,180, 41, 28,150,202,204,204, 68, 70, 70, 6, 50, 51, + 51,161,211,233,240,236,217, 51,156, 57,115, 6, 53,106,212, 0,204, 12,254,250,228,201,147, 27,190,190,190,141, 10, 26,241,118, +237,218,121,110,220,184, 49,174, 91,183,110,238,148, 82,204,154, 53, 43,165, 89,179,102,142, 69, 27,249,242,192,178, 44, 46, 93, +186,132, 26, 53,106,128, 82, 10,153, 76,134,135, 15, 31,194,217,217, 25,130, 32, 64, 34,145, 32, 57, 57, 25, 86, 86,101,199, 72, + 12, 11, 11, 27,246,241,199, 31,199,217,216,216,212, 77, 77, 77,141, 87, 40, 20,173,206,159, 63,239,101, 52, 26, 97,109,109, 13, +107,107,107, 28, 61,122, 20,182,182,182,152, 48, 97,194, 11,173, 86,123,201,194,194,194, 69,171,213,222, 77, 72, 72,152, 85,145, +242,230, 56, 14,185,185,185, 72, 79, 79, 71, 90, 90, 26,178,178,178,160,211,233,202, 77, 99, 73,104,213,170, 21,142, 28, 57,194, +206,159, 63,255,151, 39, 79,242, 58,134,213,170, 85,195,132, 9, 19, 88, 15, 15, 15, 60,123,246, 12, 55,110,220,128,209,104, 4, +165,180,204,135, 87, 42,149,182,155, 52,105, 82, 75,111,111,111, 98, 52, 26, 33, 8, 2,244,122, 61, 10,126,191,120,241, 2,181, +106,213, 98,124,124,124,222, 33,132,180, 51,103, 98,133,136, 60, 36,190, 56, 0, 15,169, 51,192, 88,131,106, 15, 32, 53,165,114, +203, 70, 38, 37, 37,125, 55,101,246, 31,195,127, 94,100,116,137,137, 7, 2,130,122,193, 47,176, 61,134, 13,230, 48,127,241, 94, +120,251, 4, 32, 58, 58, 26,237,218,181,147,197,197,197,125, 12, 96,178,185,220,167, 78, 93,225, 79, 30, 61,214,183,223,128, 33, +141, 58,116,232,198,157, 56,113, 20, 97,119, 79,132,127, 60,224,253, 36, 42,228, 16,123, 91,213,173,135, 15,174,251,213,173,223, + 22, 6,142,111, 5,124,181, 8, 64,169, 47,149,168, 40,106,248,250,235,175,153,144, 3,191, 13,254, 96,208,208,122,237,219,119, + 50,157, 56,117, 24, 55, 46,159,186,179,100,209,136,115,243,151,239,106,215,177,203,251,181,157, 92, 46, 29, 13,242,215,127,226, +229, 96, 19, 37,214,148,146, 33, 81, 42, 5,228,191, 23, 25, 66, 64, 41,125, 69,100, 21, 23, 90, 12,195,148,107, 0, 40,202, 89, +180, 45, 42,232, 80,175, 93,187, 22, 10,133, 2,114,185, 28, 82,169,180, 92,247,139,162,156,225,207,158,189,187,105,235, 86, 69, + 73, 34, 43, 53, 53, 21,169,169,169,200,201,201,193,192,129, 3,101, 95, 95,191,222,176, 60, 78,111, 55, 55,189,133, 74,149, 24, + 17, 17,225, 30, 24, 24,248, 74,122,179,178,178,160, 82,169,176,117,219, 54, 89,247,224,224,177,237,143, 30, 93, 2, 32,163,162, +121, 39,132,192,217,217, 25,118,118,118, 32,132,128,227, 56, 36, 36, 36, 32, 60, 60, 28,215,175, 95, 7, 75, 8,247, 87,150,113, + 73, 90,228,191,102,213, 42, 46,178,138, 90,180, 72,105,214, 23,115,133, 22,203,178,149,182,106,149, 6,115,134, 14,213,106,245, +189,184,184,184, 22, 30, 30, 30,224, 56,174, 80,104, 21, 31, 58, 44,176,126,220,190,125, 27,106,181,250, 94,121,156,148,210,119, +154, 52,105,130,125,251,246,225,236,217,179,120,250,244, 41, 52, 26, 13,244,122, 61,180, 90, 45,194,195,195, 33, 8, 2,130,130, +130, 96, 97, 97, 81, 46, 39, 0,228,230,230,198, 75,165,210, 0,149, 74, 85,184,207,205,205, 13,169,169,169,130,201,100,194,166, + 77,155,178, 92, 93, 93, 45, 84, 42,149,217,194,149, 16,130,164,164, 36,120,122,122, 22,250,104,101,103,103,195,217,217,185, 64, + 88, 64,175,215,195,202,202,170,220,161, 67, 74,169, 14,192,164, 34,220,141,251,245,235,183,125,231,206,157, 85, 79,159, 62,141, +171, 87,175,194,201,201, 9,223,127,255,253,211,231,207,159,127, 64, 41,189,254, 23, 84,212,114,143, 73, 77, 77,221,123,239,222, +189,119,154, 52,105, 82,248,150,104,215,174, 29,105,215,174,157, 99, 81, 83,127,114,114, 50,174, 93,187,134,211,167, 79,131, 16, +130, 71,143, 30,241, 90,173,118,123, 25,215,150,249,248,248,108,156, 57,115,166, 37,199,113,133,117, 91,165, 82, 65,169, 84, 66, + 38,147,129,101, 89, 60,127,254, 28, 61,123,246,180, 89,177, 98,197,111,132,144,234,148, 82, 35,222, 18,100,104, 97,188, 29,150, +101, 19, 84,203, 37,124,221,218,249, 45, 70,142, 66,193,208, 33, 23, 84,203, 57,252,118, 88,162, 77, 35,103, 24,109,229,101,243, + 28, 59,253,242, 83,131,233, 88,143, 99,199, 67,251,127, 57,113,130,180, 90,181, 90, 73,167,127,191,233,221,158,251,134, 56, 56, + 90, 35, 53, 37, 11,207, 95, 36,226, 73,180,129, 86,171, 86, 43,233,198,181,123,138,197, 75,151,249,229,106,116,187,126, 63, 23, +127,184,156, 78,153,142, 16,210,107,201, 79,138,115, 67, 62,110, 44, 87,169,220,145,150,114, 15,222,222, 78,232,217,189, 46,126, +221,124, 9, 54, 54,246,112,113,113, 1,195, 48, 22,230,230, 61, 37, 37,133,236,221,113, 97,248, 71, 67, 71, 52,235,220, 41,152, + 59,126, 34, 68,114,246,228,161, 75,191,173,155,177,159,178,185,106, 66,179, 85, 85,124, 93,239, 70, 61,190,253,193,187, 29, 6, + 66, 37,179,170, 1,212, 44,177,194, 22, 78, 48,160,120,193, 48, 80,126, 52,116,100,243,206,157,223,227, 78,156, 56,128, 19, 71, + 55, 95,153, 59,183,202,209,167,177,219,100,151,175,199, 40,123,245, 29,147,126,228,216,125,195,251, 61,124, 35,221, 45,234,107, + 33,226,213,142,164, 68,146,200,233,245, 94,158,157, 59,179,154,232,104,169,165,139, 11, 7, 0, 38,147,169, 92,161, 5, 64, 48, +135,211,220,180,104, 52, 26, 8, 0,103, 14,103, 66, 82, 82,149,252, 78,120, 33, 76, 38, 83,161,200, 74, 77, 77, 69, 70, 70, 6, + 44, 44, 44,144,172,215,187,152,195,217,169,105,211, 77, 95,127,245,213,228, 61,123,247,202,138,138,172,130,143, 84, 42,197,194, + 69,139,100,159,127,249,229,152,177, 18,201,248,138,220,207,130, 78, 59,203,178,144, 72, 36,136,142,142,198,139, 23, 47, 16, 29, + 29,141,232,232,104,168, 84, 42,208, 82,238,231, 27,180,104,145,255,106, 61, 45, 24, 58, 44, 58,132,104, 86,120,135,138, 56,195, +155, 43, 12,120,158,127,163, 66, 43, 55, 55,247,244,153, 51,103,154,246,234,213, 75,114,229,202, 21,184,186,186, 22, 10,173,130, +239,130,225, 40,181, 90,141,253,251,247, 27,115,115,115, 79,151,243, 48,157, 57,122,244,104,163, 57,115,230, 72,135, 13, 27,134, +136,136, 8,140, 26, 53, 10, 25, 25, 25,200,202,202, 66,106,106, 42, 52, 26, 13,154, 54,109, 10,165, 82,137,187,119,239,154, 52, + 26,205,153,114, 26, 7,154,148,148,148,227,228,228,228, 86,252,191,190,125,251,186,172, 90,181, 74,243,224,193, 3, 83,139, 22, + 45,172,205, 21, 28, 5,216,177, 99, 71,161,165, 46, 50, 50, 18,171, 86,173, 42,244,201,186,121,243, 38,126,248,225,135,194,216, +103, 21,180, 50, 94,175, 93,187, 54,103, 50,153, 80,163, 70, 13,120,120,120, 64,167,211, 97,217,178,101,220, 95, 33,178,204,133, + 78,167,219, 51,100,200,144,169,183,110,221,114,147, 72, 36,121, 38,237,252,252, 25,141, 70, 60,126,252, 24,225,225,225,120,240, +224, 1,210,210,210, 10, 59, 2,183,111,223, 78, 55,153, 76,187, 74,227,117,114,114,154,245,235,175,191,186,170,213,234, 87,234, +115,129, 53,180,192, 74,154,156,156, 12, 91, 91, 91,180,111,223,222,249,204,153, 51,179, 0,204,121, 27, 26, 52, 66, 8,121,183, + 13,219,248,243, 79,123,161, 79,119,245,203,125, 71, 98,255,248, 97,241,164,124,103,120,231,240, 62,221, 61, 94,222,121,104,139, +190,189, 15, 52,254,253, 28,137, 41,203,151, 46,223,199,234, 96,211,166,246,103,247, 29, 58,244,219,244, 41, 19,111, 78,158, 52, +194, 73,163,141, 82, 86,243,145, 19, 0,120, 18,109,160,119, 35, 4,221, 15, 75, 38,222,156,191,104, 5,147,152,154, 49,234,234, +213,210,195, 27, 20, 21, 47,181,253,161,172, 86,179, 77,156,159,127, 75,223, 43,151,182,194, 82,173, 69, 64,205,198,232,220,233, + 29,156, 13,189,141,132,100, 29,226,227,227,161,215,235,203, 12,151,240,224,238,254,193,148, 80,111, 66,201, 11,194, 80,229,224, + 33,159,180, 10, 14,126,143, 30, 57,114,136, 59,176,127,235,197, 93, 91,126,218,195,200,164, 18,173,193,198, 64,136, 46, 19, 76, + 88, 68, 78,110, 94,135, 70,170,144,149,110,126,205, 15,236, 26, 88,187,166,235,224, 33,163,108,186,117,237, 73,143, 30, 61, 32, +236,218,185,233,236,174, 13,117,182, 10, 76,150, 44,254,165, 70,145,153,101,202,164, 68,110,155,147, 37,104, 18,159, 84,215,185, + 7,247,125,107, 68,251, 27,235,112,235,245, 49, 57, 47, 95,186,217,183,105,163,120,252,213, 87,106,151,166, 77,117, 36,223,135, +184, 44,161,197,178, 44,192, 48,130, 57,156,230,166, 69,171,213, 66, 0, 76,149,225,228, 56,238, 21,145, 85, 32,180, 10,236, 26, +230,112,174,155, 59,247,138,119,231,206,105,161,161,161, 46,109,219,182, 37,217,217,217,200,206,206,126, 69,108,185,187,187,147, +192,160, 32,245,142,179,103,171,205, 49,243,126,154,147,119,134, 97,254,114,161,245, 95, 70, 73,150,172, 87, 44, 90,165,161,192, +162,101,142,208, 50,211,162,101, 50,153, 76,112,118,118, 70, 74, 74, 74,169, 13, 63,195, 48, 80,169, 84, 5, 99,196,101,206,188, +211,235,245,203, 38, 79,158, 60,174,107,215,174,142, 1, 1, 1, 72, 78, 78,134,139,139, 11,148, 74,101,161,239, 88, 1,223,205, +155, 55,241,235,175,191,102,233,245,250,101,229,112, 46, 93,180,104,209,167,125,250,244,177,119,117,117,133,157,157, 29,238,222, +189, 11, 59, 59, 59,100,101,101,225,225,195,135,176,178,178, 42,244,219, 57,116,232, 80,182, 94,175, 95, 90,142,120,163,231,207, +159, 55, 90, 89, 89,221, 77, 78, 78,102,211,210,210, 36,233,233,233,146,172,172, 44,105,102,102,166,244,248,241,227,142, 54, 54, + 54,154,223,127,255, 61,217,219,219,155,125,250,244, 41,107, 50,153, 24, 51, 26, 71,140, 31, 63, 30, 50,153, 12,122,189, 30,203, +150, 45,195,228,201,147, 11,125,178, 22, 45, 90,132,153, 51,103, 22, 10,231,245,235,215, 87,180,242,192,104, 52,194,100, 50,193, +100, 50,153, 37,126, 95, 7,230, 8,118, 74,105, 2, 33,164,123,147, 38, 77, 78,238,222,189,219, 33, 63, 38, 25, 18, 19, 19,145, +152,152,136,228,228,100,228,228,228,128,227, 56,120,120,120, 32, 49, 49, 17, 7, 14, 28,200,204,206,206,238, 92,214,140, 67,150, +101,135,180,106,213, 74, 82, 60, 13, 5,189,188, 2,241,174, 80, 40, 16, 23, 23,135,118,237,218,201, 67, 67, 67,135,252,215,133, + 86,129,128,169,229, 7, 89,167,206,195,101,181,106, 55, 55,220, 9, 63,242,178,166,111,226,203, 65, 61,173, 67, 0,224,118, 88, +162,205,157,135,182,168, 85,187, 59,237,212,217,174, 81, 98,194,186, 58,129,254,196, 88,214,114, 61, 0, 96,163, 86,244,235,216, +161,105,156,149,133, 5,243,195,146,245,199, 86,175, 94,218,112, 79,200,255,194, 59,252,176, 36, 47,188, 67,199, 14, 77,133, 7, +247, 31,244, 3,176,193, 92,241,210,189,123,143, 91,191,110,252, 21, 15,194,127,119,159, 58,190,174, 60, 45,209, 4,149,165, 23, + 26,213,119,193,186,141,247,112,231,206,157, 4,131,193,208,174,204,186, 68,168,119,120, 68,152,127,157,218,129,174,131,135,140, +180,238,222,189, 39,142, 28, 57,136, 45,155, 54,156,127,127, 96,159, 95, 98,211,179, 88,103,169, 90,166,166,130,156,149,217, 72, +100, 10, 85,146,193,144, 55, 7, 66, 42, 85, 90, 3,253,132, 50, 70, 14, 49,122,228, 32,155,119, 59,244, 68,200,209,131,216,178, +105,221,185,217,181,251,110,240,109, 80,139, 52,109,184,120,140,111, 85, 95,159,220,156,196, 44,134,200,141, 58,157, 96,181,120, +211,243, 31,159,204, 28,242,228, 86, 88,191, 37,226,172,195, 87,112,119, 75,183,110, 77, 62,143,138,146, 57,181,108,169,138, 59, +123, 86,157,191, 18, 73,153, 66, 75, 34,145,128,150, 62,212,245, 10, 39,217,188,153, 1, 80,230, 36, 44,153, 76, 6,141, 70, 3, + 19, 96, 52,135,211,237,196,137,151, 81, 81, 81,126,246,246,246,175,136,172,180,180,180,194,223, 58,157, 14, 26,141, 6, 42,149, + 42,220, 28,206,196,243,231,117, 11,198,143,159,243,193,192,129, 63,157, 62,115, 70,233,224,224,128,204,204,204, 87,132,150,193, + 96,192,187,237,219,203, 22,221,186, 53, 24,192, 92,115,238,167, 75,187,118,229,250, 3,179, 44, 11,225, 47, 30, 58,124, 11, 58, +171, 35, 75, 18, 94, 76,121, 67, 56,230,206, 58, 44,169,129, 36,132,116, 40,182,107,102,163, 70,141,116,145,145,145,240,246,246, + 46, 20, 43, 69,175,105,109,109, 13, 91, 91, 91,220,188,121, 19,223,125,247,157, 22,192,204,178, 56, 41,165,217, 26,141,102, 64, +199,142, 29,181, 18,137, 4, 53,107,214, 44,140,159, 37, 8, 2,228,114, 57, 44, 44, 44,112,235,214, 45,244,232,209, 67,163,209, +104, 6, 20,143,161, 85, 2,103,166, 70,163,249,176, 83,167, 78,154,136,136, 8,180,106,213, 10,119,238,220, 65, 78, 78, 14,114, +114,114,240,236,217, 51, 4, 6, 6, 66,163,209, 96,213,170, 85, 90,141, 70,243, 33,165, 52,179, 44,206,236,236,236, 30,147, 39, + 79,102,183,111,223,238,235,225,225, 81,187,113,227,198, 1,237,219,183,175,222,187,119,111,159,110,221,186,185,249,249,249,233, + 58,119,238,236,212,181,107, 87, 39,141, 70, 35,253,227,143, 63,226, 77, 38, 83,215,114,238,103,161, 56,137,140,140, 44, 28, 42, +148, 72, 36, 72, 73, 73, 41,140,220, 95,240, 82, 42, 73, 8,151,198, 89, 84,108, 23, 8,172, 2,193, 85, 94, 27, 80, 10,103,185, + 13,135, 92, 46, 47,176,120,210,242, 56, 41,165,183,239,223,191,223,177, 77,155, 54,183,135, 15, 31,158,157,144,144, 0, 43, 43, + 43, 84,171, 86, 13,254,254,254,112,116,116,132,209,104,196,254,253,251,115, 15, 28, 56,112, 47, 51, 51,179, 93,241, 24, 90,197, + 57, 25,134,121, 86,210, 75,182,192,154, 85, 32,180,148, 74, 37, 60, 60, 60, 10,238,237,179,138,220,207, 74, 62,188,127, 45,103, +190,128,105,255,110,231,170,221,130,123,217,236, 63,120, 73,254,211,202, 3,247, 26,117,192,122,135, 42, 89,135, 28,170,100, 29, +106,212, 1,235,127, 90,121,224,222,254,131,151,228,221,130,123,217,180,127,183,115,213,136,240, 7, 1,175,172,123, 88, 66, 58, +149, 74,101,243, 86, 45, 27,165,135, 94, 60, 39,204, 95,180,130,121,183,221,251,183, 54,252,178,127,255,134, 95,246,239,127,183, +221,251,183,230, 47, 90,193,132, 94, 60, 39,180,106,217, 40, 93,169, 84, 54, 55, 39,239,163, 71, 14,178, 9,238,214, 19, 71,142, +236,231,246,236, 88,181,104,231,222, 71,109, 62, 25,119, 62, 49, 50,242, 14, 77,138, 57, 1, 41, 19,141,251,247,239,103, 26, 12, +134,118, 37, 57,194,151,196, 57,106,196,160,162, 34,235,130,131,107,171,245,247,239,131, 63,117,234,176,233,204,153, 91,218, 11, +183,147, 50,111, 68,164,164,197, 37,167, 61,205,202, 74, 53, 8, 2, 15,158,231,217,175,191,206,115,216, 45,173,140, 90,180,104, +139,223, 79,111,195,166,141,107, 51, 5, 1,186,190,187,119,243,253,250,125, 69,125,170, 84,241,217,186, 99, 27,233,254, 94, 47, + 27, 10, 8, 61,250,244,180,221,190,115, 59,169, 90,163,106,149,106,213,242, 66,218,252, 39,235,210, 95,192, 57,151,210,244,172, +232,232,115, 55, 87,172,208,187, 12, 24, 96, 47,119,113,177, 6,207,147,130,247,123,105, 31,137, 68,242,138, 5,166, 44, 78, 15, + 71,199,216, 67,135, 14,193,223,223, 31, 30, 30, 30, 40,234, 35, 91, 16,144,219,193,193, 1,123,247,238, 5, 5,110,152,195,217, +192,215,247,230,194, 5, 11, 12,130, 32, 32, 61, 61,253, 79,214,172,244,244,116, 8,130,128,163, 33, 33,134,172,156,156, 77,230, +230,189, 29,203,230,124,208,186,245,252,224,224, 96, 99, 84, 84, 20, 4, 65, 64, 81,203, 86, 82, 82, 18, 44, 45, 45,161,211,235, +189, 8, 33,106,115, 56,147,142, 31,183, 64, 57,239,245,226, 22,173,191,162,220,255,235, 34,171,232,130,210, 69, 69, 87,153, 22, + 45,142,227,224,229,229,245,202,146, 46, 12,195,188,242,169,200,140, 67, 74,233,102, 66,200,137,206,157, 59,207,105,214,172,217, +232, 57,115,230,176, 1, 1, 1,200,204,204,132,157,157, 29,156,157,157,241,240,225, 67, 28, 58,116,136, 79, 73, 73, 89, 3, 96, +158, 57, 83,232, 41,165,103, 9, 33,221,235,214,173,187,115,218,180,105, 54,157, 58,117,146,122,121,121,129, 82,138, 91,183,110, + 97,223,190,125,198, 13, 27, 54,100,229,139,172,179,102,166,245, 36, 33,228,253,174, 93,187,110, 29, 50,100,136, 21,207,243,210, +103,207,158, 65,175,215,195,100, 50,225,197,139, 23,198, 35, 71,142,228,104, 52,154, 65,148,210,147,102,240,221, 36,132, 4,158, + 58,117,106,200, 31,127,252,241,221,240,225,195, 29,218,183,111, 47,227, 56, 14, 23, 47, 94, 76,110,208,160,129,115, 82, 82,146, +113,239,222,189,169, 58,157,110, 38,207,243,102, 45,193, 67, 8, 65, 86, 86, 22, 28, 29, 29,161,215,235, 33, 8, 2, 12, 6, 3, + 44, 45, 45, 11,151, 77,162,148,162, 34,206,245,197,234, 0,107, 52, 26, 49,112,224, 64, 8,130,128,101,203,150,129,227,184, 10, +147,217,216,216,220,184,125,251,118,247,250,245,235, 23,138,151,130, 58,164, 80, 40,224,232,232, 8, 7, 7, 7, 28, 57,114, 4, + 82,169,244,134,153,101,116, 7, 64, 3, 66, 72,243,123,247,238,125, 4,160,190,209,104,244,224,121,158, 48, 12, 19, 79, 41,189, +155,149,149,245,139,185, 75,240, 36, 37, 37,125, 55,116,232,208, 6,219,182,109,179,148, 72,254,247,104, 72, 36, 18, 40, 20, 10, + 20, 4,199,164,148,194, 96, 48, 96,214,172, 89, 89,185,185,185,223,189, 45, 47,138, 70,141,155, 98,221,170,229,150,103,126, 63, +145,124,255, 17,246, 21, 13,225, 96, 43, 7,126, 63, 71, 98, 18, 19,214,213,137,123,249,210,178, 81,227,166,102,113,154, 12,198, +212, 15, 7,125,225,157,191, 4,207,172,103,207,158,175,221,186,249,199, 39, 0,176,120,233, 50,191,196,212,140, 81, 15,238, 63, +232,183,118,237,142,230, 38,131, 49,213, 28,206,255,137,151,173,153,160,208, 81, 74,175, 18, 66,124,123, 12, 56, 62,179, 70, 85, +235,247,146, 82,181,177, 57, 57,154,207, 40,165, 79,204,205,123,203, 22,109,240,251,201,237,216,178,105,107, 22, 21, 88,157,163, +163, 35, 5,128,251,247, 29,233,253,251, 25,244,127,126,197,182,185, 82,122,103,222, 23,159,181,255, 34, 51, 43,109,233,210,149, +101, 7,174,173, 91,175, 25,234,214,107,134,113,159,205,176, 9,172, 93,211, 27, 0,118,239,166,124,144, 31, 57, 60,103,246, 87, +239,205,155,247, 21,178,178,245,152, 55, 47,111,185,158,135, 97, 17, 33, 81, 81,212, 32, 54, 91,175, 98, 14,199, 93,197, 23, 95, +248,105,210,210,156, 90, 78,157,234, 40,249,242, 75,166, 44,103,248,162,207,175, 57,156,215,239,222, 13, 25,245,201, 39,177,115, +231,204,233,188,102,237, 90, 85,157, 58,117,144,144,144,128,154, 53,107,194,195,195, 3,167, 78,157,194,222, 93,187,114, 51,178, +179,103, 2, 88,109, 14,231,230,163, 71, 31, 6,212,174,157,178,118,237, 90,247,224,224, 96,146,155,155,139,204,204, 76,100,102, +102, 66,175,215, 35, 63, 32, 52,141,124,244,232,190,201,100, 90, 99,110,222,249,228,100,229,188,166, 77, 99,100,130,176,240,253, + 62,125, 38,207,251,230, 27, 69,213,170, 85,137, 94,175, 47,180,106, 25,141, 70, 88, 90, 90, 26, 13, 6,131, 3, 0,141, 57,156, +138, 13, 27,184,228,228,100, 56, 57, 57, 21,134,107, 42, 26,151, 48, 59, 59, 27,148, 82, 49,152,110,101, 68, 88,105,109,185,189, +189,253, 13,137, 68,226, 89,212,186, 85,210,218,121, 69,247,153, 76,166,152,228,228,228, 70, 69, 21, 47,165,244,116, 41, 2,161, + 26,128,239,223,125,247,221,247, 39, 77,154, 68, 66, 67, 67,113,224,192, 1,250,228,201,147, 61, 0,102,150,246,146, 44,135,211, + 74,161, 80, 76,176,176,176,232, 80, 16,194, 65,173, 86,223,203,205,205, 61,173,215,235,151,149, 22, 13,190, 28, 78,107,133, 66, + 49,222,194,194,162, 99,118,118,118,125, 0,176,178,178,186,157,155,155,123, 74,175,215, 47, 47,109,161,234,114, 56, 85, 54, 54, + 54,223, 57, 58, 58,126,248,229,151, 95, 58,156, 63,127, 62,254,247,223,127,151,101,100,100,108, 51, 24, 12,165, 46, 42, 93, 18, +167,131,131,195, 13,150,101, 61,255,138, 50, 2,128,122,245,234, 29,233,209,163, 71,240,160, 65,131, 96, 50,153,176,122,245,106, +156, 58,117, 42,228,209,163, 71,221,203,234,141, 22,231, 36,132, 56,122,122,122,134,142, 30, 61,218,103,224,192,129,106, 59, 59, + 59, 72, 36, 18,228,230,230,226,241,227,199,184,117,235, 22, 61,120,240, 96,206,205,155, 55, 99, 52, 26, 77, 91, 74,105,138,185, +247,243,117,122,205,197, 57,165, 82,105, 27, 47, 47,175, 29,115,231,206,181,234,216,177,163,202,193,193, 1, 44,203,194,100, 50, + 33, 62, 62, 30, 97, 97, 97, 56,113,226, 68,238,158, 61,123,114, 83, 83, 83, 7, 82, 74,207,253, 19,233,124,147,156,129,254,100, +118,177,133,162, 75,141,246, 94,214,177,230,164,179,125, 91,247,158,253,222,239,218, 5, 0,118,239, 61,118,252, 76,104,220,193, +202,166,179,188,180,154,195, 89,203,143,157, 27, 30, 17,246, 74, 64,203,218,129, 65,145,181,234,244,249,214, 28,174,130,200,240, +197,243, 94, 36,218,126, 81,155,238, 43,195,172, 5, 11, 79,207,152, 57, 29,223,127, 55, 31, 7,119,239, 15,137,136,162, 71,254, +203,117,233,175,228, 44, 88, 4, 89,237,230,214,122,153, 32, 76,191, 19, 22,102, 89,180,195, 86, 96,121, 46,218,169,116,119,119, + 79,138,139,139,115, 49,135,179,251,207, 63, 27, 53, 22, 22,138,233, 11, 23,182,201,209,233,218,204,155, 55, 79,114,253,250,117, +172, 90,177,130,211,197,196,108, 77, 6,198,151, 52, 26, 82, 22,167,207,248,241,202, 41,171, 86, 13,171, 86,163,134,243, 71, 31, +125, 36,149, 74,165,200,205,205,197,203,151, 47,113,242,196, 9, 67,196,253,251, 17, 89, 89, 89,239, 81, 74,227,204,229,236,254, +243,207, 70,219,106,213,160,118,114,162,103,206,158,181, 25, 53, 97,194,232, 42,190,190, 54,157,187,116,145, 90, 91, 91, 35, 61, + 61, 29,207,158, 61,195,254,253,251,147,114,114,114,220, 41,165,188, 57,156, 91,255,248,163,238,209,115,231,250,126,251,237,183, +242,160,160, 32,216,216,216, 32, 59, 59, 27, 97, 97, 97, 56,119,238,156,126,205,154, 53,153,153,153,153,163, 57,142, 59,244, 87, +149,251,219, 58,116, 72,254, 74, 87, 0,115, 10,130, 16,210, 8,192,236,252,205,111,204, 88, 51,240,173,121,249, 16, 66,188,237, +237,237,215,233,116, 58,170,213,106, 71, 81, 74, 95,252,219,210, 73, 8,145, 52,106,212,104, 85, 82, 82, 82,115, 74, 41,108,108, +108, 46,133,135,135,143,165,148,114, 21,229, 36,132,176, 0,154, 91, 90, 90, 54,181,178,178,106,163,215,235,107,229, 15,191,221, +207,205,205, 61,103, 52, 26,175, 2,184, 68, 41,229,255,201,188,231,167,179,163,187,187,251, 39,130, 32,212, 32,132,216,242, 60, + 15,147,201,148, 33, 8,194,227,204,204,204, 13, 0, 78,253,211,233,124, 83,156,181,107,144,222,148, 65,173,210, 4,193, 43,194, +166,152,128, 32, 2,238,135, 63,166,251, 43, 80,231,153,174, 29,188, 86, 2,121, 51, 19,203, 91,202,232, 21,161,101,134,120,169, +176,200,172, 33, 25, 74, 9,245,126,181,247, 73, 94,212,172,219,123,203,235, 8, 45,115, 81, 59,128,180, 1, 69,115,129,226,234, +253, 71,244,247,183,245, 93,247, 38, 57,231, 19, 98,191,194,206,238, 18, 35,145,184, 2, 96,242,173, 47,130, 64, 8, 79, 9,225, +138, 14,111, 21,237, 88,150,199,105, 4,234, 72, 21, 10, 47,158,227, 92, 18, 0,203,163, 60,223, 80, 71,105,142, 39, 48,251, 22, +165, 15, 43,147, 78, 35, 80,135, 85, 40,188,143, 82,218, 51,217,194,162,110,146, 86,235, 4,128, 90, 90, 88,220,207,202,205,221, +164,211,233, 86,150,176,120,123,185,156, 50,133,194,147,231, 56, 23, 0, 96, 36,146,164,157,122,189, 87,140,181,245, 71, 58,189, +222,199,210,210,210,100, 48, 24,178,116, 58,221, 32,147,201,116,166, 34,121,127,204,113,129,127, 48, 76, 43,163,133,133,131,145, + 16, 11, 3,199, 25, 13, 70,227, 75,157, 78,119, 15,192,143,148,210,168,191,178,220,223, 90, 20,204, 78,251, 43, 62, 0, 58,136, +156, 34,167,200, 41,114,138,156, 34,167,200,249,215,115, 2, 80, 3,240, 6,192,254, 23,243,254, 54,125, 0,140, 44,248, 45, 17, +165,166, 8, 17, 34, 68,136, 16,241, 86, 24, 78, 52, 40,193, 39, 75,196, 63, 11, 2,160, 67, 41, 5,102,182, 73,176, 50,179, 15, +204, 24, 98, 16, 57, 69, 78,145, 83,228, 20, 57, 69, 78,145,243, 45,227, 44,143,251,191, 56, 36, 89,214, 90,135,226,208,161,200, + 41,114,138,156, 34,167,200, 41,114,138,156,226,208,225, 95,244, 97, 32,162, 52,117,234, 66, 8,113,121,211,199,138,120,187,235, + 66, 9,231,122, 16, 66, 60, 42,120,188,155,120,215, 69,136, 16, 33,226,237,192,223, 46,180,204,109,180, 94,179,113,123, 45,225, + 67, 8,153, 79, 8,226,242, 62,100,254,155, 58,214,140,235,186, 59, 57, 57,125, 94,187,118,237,173,174,174,174,227, 8, 33,206, + 21, 60,223,207,194,194, 98,185,165,165,101,168,165,165,101,168,133,133,197,114, 66,136,223, 27, 42, 55, 66, 8, 25,165, 84, 42, +207,186,187,187,199, 42, 20,138,179,132,144,209,164,146, 11, 92, 18, 66, 2, 8, 33,243, 8, 33,223, 16, 66,234, 86,228, 92,151, +160, 94,187,156,131,122,221,117, 14,234, 21,230, 88,231, 61, 63,231,160, 94, 97,206, 65,189,238,186, 4,245,218,245, 23,212,215, + 74,151,111,254,185, 47,242, 62,229,159, 75, 8,249,145, 0, 47, 9, 65,204,235,214, 37, 17, 34, 68,136, 16,241,239, 64,133,156, +225, 61, 60, 60,222,167,148,142, 2, 64, 9, 33,235, 98, 99, 99,247, 86,162,225,153,146,255,123, 17,165,116,250,235, 28,103,198, +185, 75, 41,165,147, 43, 46,210, 48, 69, 16, 40, 3, 0, 12, 67,166,186,184,184,168, 89,150,253,147,131, 33,207,243,106, 66, 48, + 78, 16, 40,201, 63,118, 10, 33,100, 57,165, 52,177, 50,226,112,240,224,193, 75,151, 47, 95,174, 84,171,213,136,142,142,238, 52, +122,244,232, 22,132,144, 47, 40,165,241,229,157,175, 82,169, 62,104,210,180,249, 23, 11, 23, 47,177,116,113,118,182,224,120,193, +248, 44,250,185,122,214,180,201, 77, 85, 42,213,242,178, 22, 83, 46, 46,168, 0,140,148, 72, 36,253,149, 74,101,117,157, 78, 23, +197,113,220, 30,150,101, 59,127,247,221,119, 65,221,186,117, 83,102,101,101,201, 57,142,171,177,101,203,150, 47,126,253,245,215, +174,132,144,158,101, 77,211, 47,176,232, 80, 74, 99,139,236,238, 27, 29, 29,221, 72, 38,147,145,106,213,170, 49, 0,238,150,115, +124, 33, 40,224, 23,126,113,119, 29, 0,168,221,178, 95,100,248,197,221,200,255,253, 23,116, 10, 94,173, 11, 74,165,114,141, 78, +167,123, 81,240,127,126, 58, 19,205, 57,151, 16,242, 83,254,242, 65,141, 0,124,148,127,232,102, 74,233, 13, 66,136,171, 82,161, +152,160,213,233, 8, 0,242, 58,117, 73,132, 8, 17, 34, 68,252,237, 70,164, 6,148,210, 91,249, 35, 18,193, 0, 66, 10,218,238, +138,206, 58,252,244,209,163, 71,150, 0,224,239,239, 63, 22,192,222, 10, 36,226, 79, 13, 79,251,246,237, 27,168, 84,170, 87,162, + 32,107,181, 90, 57, 33,104, 95, 25,241, 82,112, 13,131, 65,207, 72,165,114, 48, 12,249,162,110,221,186, 85, 82, 82, 82,206, 51, + 12,179, 53, 38, 38, 38,189, 18, 55, 15,235,215,175,247,119,115,115,251, 83,180,230,248,248,120,121,207,158,239, 85,136,111, 24, + 33, 10,189, 66,209, 84, 70,136, 27,207,113,182, 0, 32,145, 72,210, 3,108,108, 26,125,255,237,183,106, 66,136,144,154,154, 10, +173, 86,139,137, 19, 39,170, 34, 34, 34,122, 1, 88, 89, 78, 26,253,155,189,211, 98,226,137, 19,199,107,101,165,165,235,214, 47, + 93,123, 83, 43,145,105,124, 3,107,202, 86,173,219,100, 55,114,216,160,207, 8, 33,183, 75, 90,142,164, 24, 15, 3, 96,255,132, + 9, 19,106,119,239,222, 93,158,157,157,173,212,106,181, 85,182,110,221, 58,171, 81,163, 70,150,245,235,215,151,239,216,177,131, +100,102,102,130, 82,170,174, 89,179, 38,237,223,191,191,110,231,206,157,227, 0,252, 84,158,240,101, 89,118, 89, 64, 64,192,220, +252, 60,203,138, 28, 35, 13, 12, 12,180, 0,128,135, 15, 31,126, 77, 8, 38,148, 37,178, 9,240,168,118,203,126, 0, 65,141,240, +139,187,149,181, 91,245,211,129,226, 49, 1, 30,229,119, 8,230, 1, 69,226, 66,189,138,251,177,177,177,149, 90,155, 48, 56,184, + 59, 33,132,236,113,119,119,223,155,148,148,228, 75, 8, 70,152,219, 25, 32,132, 16, 7, 7,135,161, 0,230, 3,248,228,254,253, +251, 13, 0,160, 86,173, 90, 50, 0, 55,172,173,173, 91, 24, 13, 6, 34,190,174, 68,136, 16, 33,226, 63,137, 6, 0,110, 1, 8, + 46,178, 4,207,186,202, 8, 45, 57, 0,156, 63,127, 30, 0, 20,149, 17,125, 69, 5,204,248,241,227,225,230,230, 86, 92,188, 32, + 52,244,236,235,100,246,149,107,124,243,205, 55,150, 25, 25, 25, 29,126,249,229,151,214, 30, 30, 30, 63,196,198,198, 94, 41,235, +100, 74,105, 34, 33,100, 81,190, 5, 2, 10,133, 50,114,244,232,209,183,242,255,174,114,248,240, 97,117,143, 30, 61, 52, 0,158, + 3,128, 66,161,244, 96, 89,198, 63,207,233, 13,139,202, 18,132,253, 8,169, 38,151,203,223, 29,245,243,207, 92,195, 30, 61, 36, + 22, 78, 78, 4, 0,158, 63,120,224,176,104,241,226, 22,233, 79,158,200,181, 14, 14,169,169,185,185,218,200,200, 72, 40, 20, 10, +194,178,108,195,242, 50,108, 97, 97,241,249,183,223, 47,180,200, 74,203,208,234,178,178, 13, 44,103,210, 91,169,212,124, 98, 66, + 82,170,165,202, 66, 51,117,246, 87,242, 79, 71, 12,249, 28,192,216,114,168,198,125,241,197, 23,181,154, 52,105,226,177,107,215, + 46,146,153,153, 9,137, 68, 98, 89,191,126,125, 52,106,212,136,255,253,247,223,137,175,175, 47,130,130,130,112,241,226, 69, 92, +186,116,137, 52,104,208, 64,189,111,223,190,193, 37, 9,173,226,226,154,101,153,137, 53,107,214,172,111, 97, 97, 97,240,247,247, +199,136, 17, 35, 64, 41, 69,135, 14, 29,130, 44, 45, 45,247,230,230,230,202, 31, 62,124,208,186, 60,145,157, 24,118,160, 63, 0, + 56, 7,245,186, 11,160, 14, 40, 30, 39,133, 29,168, 91,228,144, 90, 15, 31, 62,108,150,158,158, 94,232,140, 88,176,128,121,235, +214,173,205,174, 72, 5,117,161, 71,143,238, 83, 1, 66, 58,116,232,144, 49,110,220, 56,230,193,131, 7, 31,246,238,221, 43,232, +209,163,199, 40, 45,157,197,234, 17, 25, 58,116, 88,162,165,165,101, 31,119,119,247,135, 0, 36, 50, 89,161,206,100, 93, 92, 92, +156,234,214,173, 59,198,222,222, 62,137,101, 24,103, 10, 74,203,171, 75, 34, 68,136, 16, 33,226, 95,133,144,124,113, 21, 82,252, + 15, 9, 0,132,132,132,208,255,245,218,131, 73, 89, 13,207,157, 59,119,188, 52, 26, 13,204,105, 4,138, 78,209,164,148, 38,178, + 44,187,138, 97,200, 88, 66, 8,130,130,234, 60, 93,182,108, 89, 73,107,122, 25,130,130,234, 60,101, 89,166, 42,165, 20,132, 48, +171, 5,129, 79, 44,137,179,180,134, 81, 46, 87, 76, 1, 0, 87, 87,183, 39,199,142, 29, 51,244,237,219, 23,139, 23, 47,150, 77, +155, 54,109,178,143,143,207,184,232,232,232,132,210,210,153,191, 61,221,197,197, 69,189,126,253,122,255,209,163, 71,223,138,139, +139,155, 14, 0,238,238,238,243, 1, 4, 2,120, 94,100, 31,214,172,217, 25, 59, 98,196,136,200,196,196,196,233,165,113,190, 79, + 72,117,159,154, 53,223,157,119,254, 60,101,244,122,146,114,225, 66, 86,114, 98,162, 41, 42, 57, 89,189,241,198,141,238,179,230, +207,151,122,121,123, 35,244,208, 33,199, 20,141, 38, 57, 83,175,215, 37, 38, 38, 82,142,227, 46,153,145,247,218,206, 78,206,234, +181, 63,174,190,110, 37,101, 5,103, 79, 15, 34,181,183,151, 48,106,107, 57, 43, 97,244, 85,171,248,201, 1,212, 46,175,140,100, + 50,217,224, 78,157, 58,169,119,238,220, 73,130,130,130, 96,107,107,139, 11, 23, 46,224,246,237,219, 72, 79, 79,103, 76, 38, 19, + 26, 55,110,140,133, 11, 23,194,219,219, 27, 25, 25, 25,120,241,226,133,163, 92, 46,119, 42,227,126,190, 82,159,166, 76,153, 2, + 55, 55, 55,112, 28,135,180,180, 52,112, 28, 7, 75, 75, 75, 0, 64, 76, 76, 12, 14, 29, 58, 88,110, 93, 50, 83, 36,225,157,119, +222,201, 38,132,220, 47,110,209,170, 8,167,135,135,199,142,228,228,148,174,239,190,251, 46,210,211,211, 77, 95,125,245, 21,234, +214,173, 11,127,127,127,115,234,252,116,133, 66,241,139,143,143,207,143,227,199,143,119,179,183,183,135, 94,175,159,149,144,144, +128, 49, 99,198, 0, 0,186,117,235, 86, 87, 42,149, 30, 27, 62,124, 56,124,125,125, 99,211,210,210, 94,220,188,121,115, 68,110, +110,110, 88,101,243,110,230,253, 17, 57, 69, 78,145, 83,228,252, 87,113,154,171, 69,254,141,200, 31, 38, 92, 87,100,123,221, 43, + 66, 43, 56, 56,152,132,132,132, 80, 51, 50,150,234,233,233,233,165, 82,169, 0, 32,181,162, 9,225,121,126,156,163,163, 99,210, +244,233,211, 91,250,251,251, 27,198,141, 27, 23,246,236,217,179,153, 69,143,241,245,245,253,110,197,138, 21,136,140,140,124, 62, +127,254,252,139, 41, 41, 41,223, 84, 48,179,211, 8, 33,203,242,173, 99, 41,135, 14, 29,170,123,254,252,249,177, 75,151, 46,117, +250,244,211, 79,101,159,127,254,249, 32, 0,139,203,227, 97, 89, 86, 83,210,112, 97, 73,112,115,115, 51,148,228,195, 85,128, 30, +132,168,172,229,242,118,243,206,159,167,134,231,207, 53,191, 46, 89, 98,181,246,218,181,185, 38, 74, 93,156,157,157,209,170, 69, +139, 28, 37,203,166, 36, 37, 36, 8,206,213,171,179,207,142, 29,115,212,202,229,113, 59,119,238,204, 76, 77, 77, 61, 80,174, 9, +143,144, 44,129, 82,131,165,167,183,169,111,175,142, 65,215,175,222,126, 96,229,236,200, 52,168, 31, 84,247, 65,228,243,155, 16, + 4, 35, 33, 36,171, 60, 30, 27, 27, 27,255,212,212, 84,100,101,101,193,201,201, 9,203,150, 45,131,171,171, 43, 52, 26, 13,194, +195,195,169,167,167, 39, 57,127,254, 60, 60, 61, 61,145,156,156, 12,131,193,128,236,236,236, 36,189, 94,175, 45, 77,248, 74, 36, +146,223, 24,134, 12, 35,132,160,106,213,106,209, 43, 87,174, 52, 8,130,128, 90,181,106,161,119,239,222,216,183,111, 31,194,195, +195, 11, 44, 79, 6, 31,159, 42,209, 12, 67,124,242,181, 82,165,173, 58, 5, 75,251,196,198,198,246,169,148, 89,148, 16,198,221, +221,125,144,159,159,223,216, 15, 62,248,192, 36,151,203,145,155,155, 91,112, 47, 76, 93,187,118,203,232,209,163,187, 77, 72, 72, + 72,153,233,212,235,245, 79, 92, 92, 92, 62,249,226,139, 47,182,174, 89,179,198,110,230,204,153, 16, 4, 1,148, 82,112, 28, 87, +184,232,183, 32, 8,216,191,127, 63,162,162,162,190, 43, 42,178, 68,136, 16, 33,226,255, 11, 42,160, 69,254,117, 40,226,155,133, +226, 98,235,111,143, 12,207,178,236,218,147, 39, 79,214,111,221,186,181,164,125,251,246, 65,158,158,158, 65, 49, 49, 49, 97, 0, +224,233,233, 25,212,165, 75,151, 32,103,103,103, 44, 95,190, 92,195,178,236,218, 74, 42,203,162,141,222, 45, 55, 55,183, 31,246, +237,219,183,104,212,168, 81,112,117,117, 13,252,187,243,108,173, 80, 52, 24,190,108, 25, 39, 53,153,152,159,127,248,193,122,201, +217,179,139,118,237,222, 45,121,231,157,119, 8,165, 20,247,238,222, 85, 45,252,233, 39,245,192, 94,189,158, 63,124,242,132, 59, +120,226,132, 41, 49, 54, 54, 45, 54, 57,121, 14,165, 52,173, 60,126,147,201,116,249,209,163, 71,238,173,218,188,227,113,238, 90, +216,237,190,189,186,189, 43,149, 48,228,241,243,152, 27,110,174,142, 54,161,103, 79,107, 77, 38,211,229,242,120,114,115,115,159, +113, 28,103, 79, 41,117, 10, 13, 13,133,147,147, 19,210,211,211, 97, 50,153, 96, 48, 24, 12, 26,141, 70,153,154,154, 10,157, 78, + 7,189, 94, 15,107,107,107,220,187,119, 47,145,227,184,223, 75,227,228, 56,110,184, 82,169,252, 70, 42,149,202,101, 50, 89,220, +141, 27, 55,144,149,149, 85,197,214,214,118, 49,199,113,136,139,139,195,249,243,231,191,180,182,182,126, 14, 0, 74,165, 18,114, +185,194, 65,175,215,115,165, 57,195,155,107,209,170, 44,220,220,220,188,171, 86,173, 58,111,234,212, 41,181,234,213,171,143,228, +228,100, 8,130, 0, 11, 11, 11,104, 52, 26, 88, 91, 91,163,121,243,230,207,230,205,155, 23, 79, 41, 70,150, 39, 6, 19, 19, 19, +147, 61, 60, 60,198,141, 26, 53,234, 27,127,127,255,170,148, 82,248,249,249,161, 83,167, 78, 56,118,236, 24, 34, 35, 35,145,155, +155,203, 95,185,114,101,123, 92, 92,220, 97,241,117, 43, 66,132, 8, 17,255, 61,157, 88,224,155, 85,212,154,245,143, 8,173,196, +196,196,100, 79, 79,207,227, 55,111,222,236,222,191,127,127,132,134,134, 14, 5,240, 5, 0, 40, 20,138,161,253,251,247,199,205, +155, 55,241,224,193,131,227,137,137,137,201,111,226,154,114,185, 92,103, 48,228, 25,167,148, 74,165,178,130,167, 87,201, 31, 50, + 4,128, 42,101,236, 43, 21,140, 68,226, 86,167, 75, 23, 73,250,237,219, 89,235,175, 94,253,102,235,214,173,146,150, 45, 91, 18, +147,209, 8, 94, 16, 80,173, 90, 53,210,190, 67, 7,139,223,182,110,181,231,115,115,207,127, 59,117,234,133,117,195,135,231, 68, + 82,250,220,156, 4,234,245,250,159,198,142,249,164,195,217,208, 11, 30,129, 53,171,219, 31, 63,121,246,150,131,131,141,218,191, + 70, 13,139,212,244, 52,126,230,180, 47, 37,122,189,254,231,242,120,180, 90,237,254,211,167, 79,247,242,242,242,114, 10, 11, 11, +131,193, 96, 0,207,243,104,223,190, 61, 40,165, 10, 0,130, 68, 34,193,131, 7, 15, 96, 52, 26,147, 30, 61,122, 20,247,248,241, + 99, 5,128, 5,101,241,234,116,186,232,162,219, 94, 94, 94, 29,131,131,131,193,113, 28,186,116,233,130,131, 7, 15,118,140,136, +136, 88, 82, 84,243,189,110,153,231, 91,200,106,121,120,120,236,203,223,101,150, 19,188,167,167,103,144,159,159,223,154, 5, 11, + 22,200, 60, 61, 61, 65, 41,133,157,157, 45, 52, 26, 13, 82, 82, 82, 17, 24, 24, 8, 47, 47, 47, 44, 88,176, 0, 0,182,155,107, +113,139,141,141,125, 12,160,127, 96, 96,160, 44, 35, 35,163, 81,199,142, 29,151,119,232,208, 1,183,110,221,194,133, 11, 23, 6, + 42, 20,138, 36,163,209,200,185,185,185,141, 36,132, 88, 27,141,198,109, 41, 41, 41,241,226,187, 75,132, 8, 17, 34,254, 19, 40, +240,209, 42,140, 18, 95, 97,139, 86, 96, 96,160, 69,102,102,230, 71, 85,170, 84,145, 3,128, 74,165, 10,172, 94,189,250,228,168, +168,168,236,138,166, 70,163,209,236,218,186,117,107,167, 31,127,252, 81,214,173, 91,183,234,158,158,158, 77, 0,160, 79,159, 62, +213,173,172,172,176,117,235, 86,163, 70,163,121, 99, 49,145, 76, 38, 83,235,198,141, 27, 35, 45, 45, 13,207,159, 63,175,208,176, +204,225,195,135,213,200,243,203, 42,115, 95, 89,224, 12, 6, 59, 91, 15, 15, 38,246,236, 89, 99, 90, 86,150, 91,235, 54,109,136, +201,104, 4,195, 48, 72, 77, 77,197,139, 23, 47, 96, 99,107, 75, 30, 60,122,100,185, 97,202,148,195, 85,234,213,147,243, 6,131, + 67, 5, 68, 69, 46, 33,100,216,103,227, 62,221,191,109,219,118,167,140,172,172, 40,149, 74,173, 87, 40,100,174,227, 63,251,140, + 79, 75, 75, 27, 66, 41,205, 49,131,106,193,182,109,219,186,116,233,210,229,174,183,183,183,115,114,114,178,107, 70, 70, 6,159, +150,150,198, 34,207,215,138, 0,192,217,179,103,145,149,149,197,241, 60,127, 30,192, 60, 74,169,193,220,180, 86,169, 82,197,166, +105,211,166,109,157,156,156,144,153,153, 9, 7, 7, 7,212,175, 95,191,109,149, 42, 85,126,121,254,252,121,230,155,172,245,167, + 78,157,178,162,148, 54,163,148,162, 75,151, 46,102,157,195,243,252,199,193,193,193, 50, 66, 8,180, 90, 13,148, 74, 21, 44, 44, + 44, 97,101,101, 13,127,255, 0,196,197,197,161,115,231,206,134,168,168,168, 85,241,241,241, 21,174,163,153,153,153, 61,155, 55, +111, 62,105,204,152, 49,224, 56, 14, 61,123,246,196,203,151, 47,151, 60,123,246,108,167,187,187,251,160,143, 63,254,216,201,193, +193, 1,147, 38, 77, 82, 1,248, 90,124,119,137, 16, 33, 66,196,191, 31,197,125,180, 74,180,104,149, 53, 38,234,230,230,214,202, +222,222,126,150, 86,171,149, 23, 12,201, 16, 66,228, 78, 78, 78, 7,221,221,221,231,199,197,197, 85,200, 41, 46, 61, 61, 61,203, +205,205,237,224,229,203,151,251,245,233,211, 7,167, 78,157, 26,146, 47,180,112,249,242,101, 60,125,250,244, 96,122,122,122,214, +155,200,188,167,167,103,215,182,109,219,246,105,220,184, 49,142, 28, 57, 2,158,231, 47, 85,228,252,162, 51, 12, 81,194,172,195, +130,125,102,145,177, 44, 8, 33,224, 56, 14, 0,144,146,156,140,200,135, 15,145,150,158, 14,189, 78,135, 92,141,134,247,247,245, +213,102, 26, 12, 82, 2,208, 10, 22,114,180,165,165,229, 11, 77,110,174,179,131,157,189, 86,173, 86, 32, 35, 43, 83,118,227,250, +149, 28, 74,105,148,153, 28, 6, 66, 72,155, 99,199,142,205, 97, 89,182,191,165,165, 37,198,142, 29,203,182,109,219, 22, 50,153, + 12,122,189, 30, 25, 25, 25,216,186,117,107, 50,199,113, 85,243,235,129,165,133,133,197, 38,150,101, 99,178,178,178,102,149,119, + 13,131,193,208,173,123,247,238, 18,131,193,128,111,191,253, 22,115,231,206, 69,151, 46, 93, 36,215,175, 95,239, 6, 96,219,155, +170,244,130, 32,160, 99,199,142, 69,157,225,239,155,115,158, 84, 42, 13,170, 81,163, 6,146,147,147,145,156,156, 12, 39, 39, 39, +184,187,187,195,213,213, 21, 75,150, 44,161,203,151, 47, 63,110, 52, 26, 87, 37, 39, 39, 39, 86,162, 46,142, 28, 58,116,232,200, +126,253,250, 33, 39, 39, 7,151, 47, 95, 70,139, 22, 45,176,104,209, 34,183,243,231,207,127,209,184,113, 99, 72,165, 82,132,134, +134,130,227,184,151,226,171, 75,132, 8, 17,255,223,240, 95,244,207, 42, 15,101, 90,180,188,189,189,109,121,158,255,178, 71,143, + 30, 29,123,245,234,133,206,157, 59,191,242,255,182,109,219,172,246,238,221, 59,223,203,203,171,139,209,104, 92, 80,145,161, 62, + 65, 16,246,111,219,182,173,219, 59,239,188,163,110,215,174, 93, 53, 0, 80, 40, 20,134,109,219,182,105, 4, 65,216, 95,209,140, + 20, 15, 30,233,225,225, 81, 87, 34,145,244,233,222,189,123,221, 97,195,134, 33, 60, 60, 28, 91,183,110,125,236,239,239,127,177, +130,212,207,203,153,117, 56,191, 60,235, 22, 43,151,167,102, 36, 36,216, 90,122,123, 75,237,172,172,226,143, 28, 57,226,213,161, + 67, 7,242,242,229, 75,164,167,167, 67,167,211,225,250,245,235,130, 4,136,150,216,217,145,232,203,151, 9, 43,151, 87,120,178, +129,151,155,157,223,236,105,163,171,232,244,186,218,153,153,153,156, 68, 42,149,122,186,218, 86,168,193,166,148,234, 45, 44, 44, + 26, 1,144, 8,130,160,177,183,183, 87,159, 60,121, 18,114,185, 28,132, 16,212,169, 83, 7, 74,165, 82,102, 97, 97,241, 2, 0, + 92, 93, 93,229,107,215,174,181, 25, 52,104,208,133,242,184, 27, 54,108, 40,245,245,245,125,207,223,223, 31,151, 47, 95, 70, 88, + 88, 88,244,229,203,151,125, 26, 52,104, 0,111,111,239,247, 26, 54,108,184,251,230,205,155,166, 55,212,187,168,148, 51, 60,207, +243, 2, 33, 4, 12,195, 64, 16, 4, 36, 39, 39,163,106,213,170, 88,185,114, 37,150, 45, 91,246,109, 92, 92,220,161,202,164, 39, + 48, 48, 80, 86,191,126,253, 33,253,250,245,195,147, 39, 79, 48,127,254,252,148,248,248,248,179, 39, 78,156,120,127,204,152, 49, +108,139, 22, 45,144,154,154,138,223,126,251,141,187,113,227,198,175, 9, 9, 9,155,197, 87,174, 8, 17, 34, 68,188,197, 66,203, +219,219,187,159, 76, 38,155, 52, 96,192, 0, 54, 32, 32, 0,137,137,137,176,182,182, 54, 17, 66,164, 0, 96,107,107,107, 82,169, + 84, 24, 61,122, 52,234,213,171,215,106,202,148, 41, 45, 60, 60, 60, 86,198,198,198,110, 50,231,194,137,137,137, 26, 55, 55,183, + 61, 99,199,142, 93,112,251,246,173,170, 0,112,237,218,181,167,113,113,113,211, 18, 19, 19, 53, 21, 20, 89, 5, 65, 49,137, 74, +165,186,234,231,231,247,172,107,215,174,214,189,122,245,130,147,147, 19,110,222,188,137,133, 11, 23, 62, 50, 24, 12,115, 66, 67, + 67,185,191,251, 38,115,122,125,194,141, 3, 7,172,218,126,248,161,245,248,224,224, 31, 62, 29, 59,246,199,217,179,103, 75, 2, + 2, 2,136, 70,163,193,213,171, 87,233,222,189,123, 77,191,125,243,205, 50, 88, 88, 72, 47,239,221, 43, 55, 24, 12,209, 21,180, +150,180,233,214,165, 77,192, 15, 63,254, 4,157, 54, 7, 87, 47,133, 32, 61, 61, 25,107,215,237, 11,240,244,244,108, 19, 19, 19, +115,174, 2,247,211,255,212,169, 83,206,148, 82,200,229,114,204,155, 55, 15,238,238,238,176,182,182, 70,118,118, 54,190,248,226, + 11,155, 9, 19, 38,216, 0, 64,120,120,120, 97,120,134,242, 16, 23, 23,215,124,244,232,209, 86, 28,199,225,248,241,227, 6, 66, +200,172,211,167, 79,255, 82,167, 78, 29,121,171, 86,173,172, 54,111,222,220, 2, 64,232,155, 18, 90,149, 60,239,241,201,147, 39, + 27,247,239,223,159, 74,165, 82,146,145,145, 1, 91, 91, 91,172, 92,185, 50, 55, 62, 62, 62,164,210,117,128,227,228,106,181, 90, + 78, 41,197,158, 61,123, 16, 29, 29,253,113, 74, 74, 74,130,139,139,203,190, 47,191,252,114,114, 64, 64,128,239,195,135, 15,163, +179,179,179, 23, 37, 38, 38, 62, 19, 95, 77, 34, 68,136, 16,241,223, 65,129, 19,124,133, 34,195,243, 60, 63,250,196,137, 19,172, + 32, 8, 88,183,110, 29,110,220,184, 65,213,106,245, 44,181, 90,189, 66,165, 82,241, 90,173,118,212,136, 17, 35, 6,205,157, 59, +151,105,213,170, 21, 46, 95,190,204, 84,173, 90,117, 8,128, 77, 69, 46,220,161,172, 88, 27,153,153,153,215, 19, 19, 19,170, 22, + 9, 80, 89, 85,161, 80, 94, 47, 39, 51,175,112,150, 16, 20,179,233,188,121,243,114,221,220,220, 12, 97, 97, 97, 88,179,102,141, +112,227,198,141,179,114,185,124,109, 92, 92,156,222, 28,206, 55,116,211, 11, 57,229, 28,119,115,203,228,201,181, 26,246,236, 41, +124, 50,105, 82,142, 76,165,250,252,135,159,126,154,146,145,157,237, 14, 66,168,131,141, 77,244,186,121,243,230,119,121,239,189, +156,240,115,231,148,183, 79,157,146, 58,153, 76,119, 42,146,206,152,152,152,115,126,213,189,177,113,253,143, 48, 26,245,136,143, +205,211,105, 41,169,153, 40, 75,100,149,196,201,113, 92,230,251,239,191, 47, 3,160, 26, 60,120,176, 60, 41, 41, 9,213,171, 87, + 7, 0,100,101,101, 33, 36, 36, 4, 53,107,214, 4, 0,220,187,119,175,240,119,121,233,180,176,176,120,175, 69,139, 22,136,142, +142, 70,120,120,248,153,184,184,184, 84,119,119,247, 51, 47, 95,190,236,214,184,113, 99,236,223,191,191, 71,105, 66,171,162,101, +100,142,208, 42,137, 83,165, 82, 77,219,183,111,223,199,151, 46, 93,234, 63,121,242,100,105,251,246,237, 1, 0,217,217,217, 26, + 74, 41, 95, 25,206,162,105, 50,153, 76, 16, 4, 1,246,246,246,185,249, 29,142,103, 40, 39,144,236, 95, 93, 63, 69, 78,145, 83, +228, 20, 57,255, 13,156,111, 9,204,143, 12, 79, 41,229, 4, 65, 64,104,104, 40,246,237,219,199, 27,141,198,145,113,113,113,247, +138, 28,242,147,187,187,251,169,247,223,127,127,211,195,135, 15,217,136,136, 8,152,211, 16, 21,133, 78,167, 51, 21, 95,146, 88, +167,211,189,246,208,209,198,141, 27,145,144,144, 96,124,249,242,229,105,142,227,246,191,230,236,197,215,158,117,248, 27,165,250, + 15, 9, 57, 61,183,101,203,142,115, 78,157, 82,124, 50, 99,134,126,232,176, 97, 95,242, 6,131,137,149,201, 4,185,133, 5,195, + 43, 20,210,240,115,231,148,203,199,140,177,215,234,245,199,183, 84,192,193,188,136, 69, 11, 67, 63,153, 8,109, 17,139,214,229, +235,145,168,168, 69, 75,167,211,213,206, 23, 29, 47, 0,184,126,244,209, 71, 16, 4, 1, 90,173, 22,217,217,217,136,139,139,203, + 28, 54,108, 24,159, 47,158, 36,125,250,244,177, 54,135,183, 90,181,106,238, 82,169, 20,199,143, 31,135, 84, 42, 13, 1, 0,169, + 84, 26,114,234,212,169,110, 3, 7, 14,132,135,135, 71, 53, 66, 8,161,229,168, 36,151,160, 94,187, 40,224, 7,130, 26,121, 79, + 60,106, 56, 7,245,186, 75,128, 71,249, 81,227,239, 55,104,208, 0, 48,211, 47,171, 40,242, 39,119, 44,115,116,116,220, 61,101, +202,148,177, 77,155, 54,237, 52,119,238, 92, 2,128,125, 35,214, 77,142,123,173,208, 19, 34, 68,136, 16, 33,226,223,107,213, 42, +105,191,164,140, 19,214,181,105,211,102, 36, 0,150, 16,178, 38, 54, 54,246, 94,241, 99,226,226,226, 34, 61, 60, 60, 22,251,250, +250, 22, 46, 52, 93,145, 68,229, 71,114, 95,200, 48,100, 74,222,118,197, 3, 84, 22, 89,234,100, 10, 0,194, 48,236,166, 91,183, +110,205,120,241,226, 69,114, 69,133, 95, 73,120, 19,179, 14, 1, 96, 27,165,207, 6, 18,114, 98, 82, 80, 80,135, 46, 99,198,160, +110,151, 46,214,238, 62, 62,188,214,104, 20,238, 93,188, 72, 46,237,217, 35,187,125,234,148, 84,171,215, 31,223, 71,233,139,138, +166, 51, 38, 38,230, 92,245,106,158, 39,251,246,233,214,169,154,175, 59, 0,224,201,179, 56,164,164,101,158,172,136,200, 42, 38, +184,122,174, 92,185,242,144, 76, 38,147, 20, 93,202,198,104, 52,166, 21,136, 49, 66,136,251,186,117,235,118, 48, 12, 19, 93, 30, + 95, 68, 68,196,193, 57,115,230,244,121,254,252,249,201, 23, 47, 94, 60, 7,128,232,232,232,231,238,238,238,155,226,227,227,251, + 68, 71, 71,239,165,102,168,144, 98,139, 74, 35,252,226,110, 37,128, 58, 5,139, 74, 87,118, 45,195,162,200, 15,173, 48,203,205, +205,109, 91,167, 78,157, 70, 0,136,125, 29, 62,131,193, 96,210,106,181, 28,207,243, 18,163,209, 72, 13, 6,131, 73,124, 45,137, + 16, 33, 66, 68,133,208, 24, 64,193, 74, 36, 5, 6, 20,167, 98,191, 13,200, 95, 46,176,224,245,155,191,157, 12,224,122, 17,142, +162,251,203, 59, 23, 0, 82, 0,220,205,223, 87,146, 22, 89, 87,218,118,169, 66, 43, 54, 54,118, 47,204, 88, 52,218,220,227,202, + 16, 74,211, 9, 33,203, 11, 68,211,235,114,112, 28,247, 70,214,135, 99, 24,230, 89,143, 30, 61, 42,116,124,121,199,236,160, 52, +250,115, 66, 54, 31,249,249,231,250,199,215,172,241,224, 57,206,129, 0,148,149,203, 83, 13, 6,195,115, 39,147,233, 78, 69, 45, + 89,175, 88, 99,158,196,116, 6, 0, 63, 63, 63,250,248,241, 99, 80, 74, 95,107,246, 6,165,244, 14, 0,175,114,142,137, 3,208, +202, 76, 49,184, 29,192,246, 18, 4,251, 14, 0, 59,204,238, 53, 20, 44, 42, 13, 48, 2, 17,250,214,110,217,111, 15, 0,161, 96, + 81,233, 55,137,248,248,248,135,200,143,243,246, 58,120,254,252,185,222,215,215,119,203,194,133, 11, 7,223,190,125,123,103,108, +108,172, 94,124,103,138, 16, 33, 66, 68,197, 68, 22, 33,228, 72,126,219,211, 61,191,179,127,164,248,239,130, 99, 10,142, 43,122, + 76, 1, 71,241,253,101,157, 11, 0,211,166, 77,155, 49,127,254,124, 53, 0,179, 22, 99, 46, 26,184, 84,242,111,184,123,111, 98, +241,220, 55,189, 0,111, 76, 76,204,250,191, 34,175, 63,229, 9,169, 43,127,229,253,124,244,232, 17,121,155,159,182,130, 69,165, +139, 32,232,191,144,238,103,207,158,173,108,219,182,237,218,216,216, 88, 14, 34, 68,136, 16, 33,162, 34,112, 42, 73, 24,149,162, + 7,186,151,245,127, 49, 65,244,167,227, 74,218, 38,132, 28,153, 63,127,126,119,115, 19, 91,212,162,197,136,101, 39, 66,196,223, +135,127, 98,214,171, 8, 17, 34, 68,136, 40, 85, 16,189, 98,197, 42, 16, 95,197,183,167, 77,155, 54, 3,165, 12, 27,230, 31,227, + 70, 8, 25,153, 63,235,240, 21,127, 45, 2,160, 67, 41, 23, 55,123, 54, 1, 33,164, 67, 37, 50,119, 90,228, 20, 57, 69, 78,145, + 83,228, 20, 57, 69,206,255, 95,156,229,113,151,114,126,112,105, 67,125,101, 13, 35, 22,255, 93,222,185,102, 28, 27, 82, 74, 94, + 70, 22, 93,235,240,149, 53, 15, 11,156,156,255,138, 15,128, 14, 34,167,200, 41,114,138,156, 34,167,200, 41,114,138,156,175,249, +105, 76, 41, 13, 70,222,170, 41,148, 82, 26, 76, 41,237, 50,109,218,180,233, 5,251,166, 77,155, 54,157, 82,218,190,224,184,252, + 99, 10,207, 41,216, 87,252,187,248,190,114,142, 45,237,126,140, 44,250,187,232,246,191,194, 71, 75,132, 8, 17, 34, 68,136, 16, + 33,162, 12, 92, 7,208,184,136,181, 41, 25,192,189,249,243,231,167, 23,241,157, 74, 6,112, 7, 64,189,252,227,146,243, 13, 74, + 69,125,171, 12,249,219,134, 18,142, 49,152,115,108, 41, 86,184,117, 37,253, 6, 32, 10,173,210, 80,223,141,253,198,219,211,185, + 81,161,213, 79, 16, 0, 0, 66,126,244,129,194, 48, 4,130, 0, 74, 41,226,146, 50,110,222, 77,164,179, 43,123,189, 0, 15, 98, +239,172, 84, 46, 19, 40,109,153,191,235, 92,102,170,126, 98, 88, 38,205, 48,151,163,150, 43,169,165,100,240,165, 64, 81, 23, 0, + 24,130,187, 58, 1,139,239, 39,208,251,175,123, 63, 8, 33,164,182, 19, 70,202, 85,234, 1, 54,182,118, 53,210,211, 83, 30, 25, +117,250,221, 17,201, 88, 75, 43, 17, 24,170,186, 61,105, 38, 80,204, 0,192, 72, 25, 44,137, 76,165,103,197, 90, 39, 66,132,136, +191, 9,175, 27, 23,175,164,208, 65,175, 59, 9, 73, 12,176,103,158,216, 42,142,107,102, 30,247,143,161, 66, 66,171,182, 51, 25, + 3,130,175, 0, 80, 80,124, 29,158, 68, 87, 87,232,124,119,210, 65,201,178, 27, 0,176, 58, 35, 63,137, 10, 56, 95, 98,163,206, +160,181, 82,198, 46, 1, 32,232,120,126,120,120,156,249,254, 98, 65,158,164,139, 68, 96,182, 8,148, 74,121,129,110, 2,197, 17, + 75, 25,254,184, 28, 67,117, 21, 73,171,183,167,115,163, 3,215,226, 59,157, 93, 61, 30, 77,235, 86, 7,229, 57, 64, 48, 65,221, +234, 75,156, 89,250, 17,154,214,242, 6, 21, 76,128,192,193,178,235, 15,232, 26,100, 83,233,135, 36,192,131,216,251, 56, 58,135, +173, 95,191,193,213,189, 90, 32, 17, 56, 35, 30, 94, 59, 57,104,194,148, 57,239, 6,217,144, 32,115,196, 86, 61,119,242, 73,245, +170, 1, 95, 78,252,234, 71,214,205,221,203, 66, 48,233,185,132,103,247, 27,252,180,104,206,222,122,238,100,201,157, 56,186,193, + 92, 65, 21,232,132, 81, 18,133,188,159, 74,105, 81, 67,163,201,126,204, 27, 77,187,131,220, 37, 93, 22,255,176,172,126,219,142, +221, 44,249,236, 4,198, 36, 32,112,215,206, 29, 62, 63,175, 92,213,141, 16,242, 30,165, 84,168, 72,158, 5,138, 41,145,155, 71, +118,147, 74, 88, 82,235,227,245, 44,204,156, 50, 91, 28,129, 46,228, 3, 66,203, 15, 47, 65, 9, 46, 68, 36,210,237,149,185, 70, + 45, 23,242, 11,161,240, 7,193, 30, 66,177, 35, 60,137, 38,137,239, 59, 17, 34,222, 46, 48, 12,115, 86, 16,132,118,111,146,147, + 16,210,140, 82,122, 69,188,187,255,191, 81, 49,139, 22,193,183,225, 81, 47,237,192, 27, 81,219,191,218, 55, 0, 42, 36,180,148, + 44,187,233,250,163, 68, 87,112, 70,172,255,110,236, 78,131, 9,224, 76, 70,240,156, 9, 60,103, 2,199, 25,193,155, 76,160, 38, + 61,230,252,122, 22, 48,100,163, 81,144,223, 38, 0,110,230, 94, 67, 74,153, 45, 55, 47,158,180, 39,134, 76,108, 95, 61,255,179, +151,201, 57,159,157,190, 27,151, 82,219,133, 76,143, 72,194,111, 21, 17, 4,103,215,140,199,214,253, 33, 49,203,127,201,125, 32, + 80, 10,123,107, 85,192,160,238,225, 94,155, 15,158,125,185,108,147,238, 1, 0,216, 88,200, 3,134,220,125,228,253, 58,133,224, +172, 84, 46, 91,187,234,103, 87, 55, 7, 21,225, 46, 45, 0,199,243,240,242, 9,102,167,143, 27,228,246,237,210, 13, 75, 1, 12, + 45,235,252,154, 46, 36,208,191,122,173, 73,155, 66, 46,121,231,102, 37, 25, 78,110,155, 17, 5, 61, 76,174, 30,181,164,223,204, +255,145,157, 57,117,252, 23, 53, 93,200,213, 7,137, 52,162,156,151, 2, 83,203, 25, 7,231, 47,248,161,238,187, 93,187, 91, 10, + 57,201,172, 46, 55,199,127,253,175, 27,190,170, 89,183,137,186, 85,144,167, 44,105,247,104,162,205, 78,131,145, 81, 42,222,173, +221,193, 90, 59,120,160,105,253,198,173,227, 0,252, 84,161,238, 96,145, 97,107, 65,168,124,239,146, 80,180,186,125,229,236, 40, + 62,238, 58, 40,111, 2,120, 99,225, 55,120, 19,168,144,247,221,116,244,175, 64, 9, 49,188,204,122, 1, 83,116, 58,125,241,186, + 91, 98, 66,124,227,165, 63,124, 63, 61,208,153, 28, 3,143, 45,247,211,112,174,162, 2, 83,132, 8, 17,255, 94, 16, 66, 56, 74, +169,228, 13,115,118,163,148, 30,125, 77,142, 47, 1,124,146,191,185,129, 82,186,248, 13,164,203, 19,128,107,254,102, 2,165, 52, + 70,172, 1,175,117, 63, 71, 22, 29, 50,124,157, 56, 90, 74, 80, 1,216,211, 11, 0, 84, 21, 77, 8, 5,148, 32, 44, 96,202, 69, +207,174, 29,225,232,236, 10,152, 52,128, 81, 3,152,180,128, 41, 23, 48,105,145, 18, 31, 13, 24,115,129, 39,199,192, 81,170,168, +112,142,245,153, 64,228,110,180,111,224, 13, 39, 27, 37,198,247, 12,116, 92,119, 60,114,195,134,147, 15, 59, 0, 24, 96, 86, 90, + 41, 69,211, 58, 53,176,124, 67,238,131, 67, 55,147, 58, 3, 64,112,125,199,227, 77, 3,125,188,150,109,210, 61, 8,185,155,214, + 5, 0,186, 6,217, 28,107, 18,224,230, 45,188,134,213, 87,160,180,149,123,149, 26,132,191,189, 22, 66, 86, 12,178,178,180,136, +121,182, 25,118, 30, 13, 25, 94, 64,155,242,206, 87,177,152,246,249,204,133, 82, 77, 86,162, 65, 48, 38,243, 78,108, 58, 43,145, + 11, 4,177,231,244, 57, 66, 6, 63,113,228, 71,220,164,217,223, 77, 3, 48,168, 76,235,144, 51,198, 45, 89,178,172, 78,139, 70, + 53,157, 19,246,142, 39, 57,233,137,224, 88,181,162,231, 59, 45, 96,235, 23, 40, 36,134, 46, 33,242,106, 29, 96,235, 80, 13,177, +151,182,225,249,149,125,164,101,131, 62,138,223,182,203, 6,151, 38,180,252,156, 72,203,206,173,155,236,172,230,237,238, 70,169, + 0, 65,160,160, 2,143,143,251,118,194,244, 93, 79,192,243, 60,222,239,220,178,253,194, 81,239, 82, 65, 16, 64,169,128,151, 9, +169,154,223,175, 62,104, 31,149, 70,175,154, 99,169,170,215,172, 93,203,187, 55,175,212, 52, 69, 30, 70,163, 65,243, 31, 16,224, + 98,145, 58,215,242,214,137,223,106, 2,191, 86,246,225, 33,181,156,193, 63, 63,190, 0,222,173, 71,178,107,183, 31,119,202, 76, +142, 29,178,119,243,170,190,171,215,174,221, 10, 96,180,248,138, 17, 33,226,237, 0,165,244,141,139,173,232,232,232,184,215, 17, + 91,158,158,158,173, 1, 44, 42,240,208, 32,132, 44,242,245,245,157,243,191,142,234, 43,125,189, 76,158,231, 7,197,196,196,156, + 47,139,179,123,247,238,238, 0,124,139,112,250, 18, 66,124, 75, 58,214,214,214,150,111,222,188,249,243, 35, 71,142,196,137, 53, +164,226,130,171, 50, 66,235,193,139,221,227, 27,232,227,115, 0,224,129, 25,149,246,149, 33, 63,157,137, 95,176,241,171,143, 22, +212,174, 98,143,236, 92, 3, 78,222,120, 14,158, 55,129,231,184,124,203, 22, 7,158, 51,161,115, 61, 71, 52,215,141,198, 79, 71, + 30,130,227,133,249,101,113, 22,135,145, 10, 31,212,239,208,127,151, 32, 80,185, 66,202,100,250,123, 57, 56, 79,122,191, 30, 51, +190,103,109,104,141, 92,255, 64, 23,242,123, 68, 34, 93,111, 22,167,240,231,144, 71,180,164,125, 60, 87,110,222,203,176, 70, 53, + 29,216,189,163, 53,213,103,194,148,242, 4,217, 26, 19,158,164,154,144,160,203,128,130,196,155,197, 41, 80,212,245,244,112, 83, +255,177,115,234, 51, 7, 54, 75,226,204,114, 50, 57,195,129, 23, 40, 75, 51, 34,244,246, 53, 59, 74, 11,252,182,202, 74,167, 74, +109,245, 81,235, 78,193, 54, 47,182,141, 36, 42,255,206,112,110,224,133,103,231, 55, 34,233,198, 17,164,198, 61, 39,214,186, 12, +184, 56, 84, 71,215, 65, 3,176,120, 64, 99,100,103,101,131,141,143,178,145, 75, 21,182,165,113, 82, 30,131,150, 44,252,206, 77, +194, 50,121,247,179,224,195,155,160,213,235, 1,158,131, 82, 34,128,208,130,255, 76,224, 77, 70,117,221, 62, 83,199, 2,184, 90, + 94,222, 35, 18,233,246,218,206,164, 21, 4, 83, 77,106,210,130, 0, 23,195,147,104,161,248, 9,116, 33, 31, 52,236, 60,172, 21, + 37,184, 80,153, 50, 10,114, 64,247, 70,190,150, 22, 22, 89, 15, 16,179,231, 51, 68, 65, 73, 93, 90,124,130, 15, 62, 30,167, 94, +183,110, 93, 15, 66,200,152,162, 62,106,127,197, 34,171, 34,167,200,249, 95,229,180,177,177,169, 90,165, 74,149, 57, 38,147,169, +181, 76, 38,115, 49, 26,141, 16, 4, 33, 65, 46,151, 95,120,254,252,249,188,204,204,204,167,255,182,188,223,189,123,215,108,177, +101, 14,167, 84, 42,197,195,135, 15, 31,155, 43,182,138,115, 74,165,210, 45, 23, 47, 94,196,174, 93,187, 0, 0,145,145,145,240, +243,243,179, 40,233,220,103,207,158, 89,180,109,219,118, 11,138,173,232, 81,156,243,222,189,123, 85, 15, 31, 62,140, 61,123,246, + 0, 0, 30, 62,124, 8,127,127,255, 18,211,115,241,226, 69,246,195, 15, 63,172, 10, 32,238,175, 46,163,183, 65,100, 21,253,126, + 69,104,133,132,132,208,224,224, 96, 82,252,119, 9,120,226,109, 39,111, 0, 29, 15, 0, 79, 42,154,136,136, 4,186,176,158,155, +180,203,153, 61, 43, 91, 43,101, 12,230,174,159,244, 50, 57, 45,187,153,132, 64, 0, 0,142,130,177,179,148, 95,158, 63,164,158, +119,122,142, 14,135,174,197,158, 15, 79,172,152,137, 52, 60,142,158, 2, 96,251,191,134,146,248, 15, 89,124,106,199,142,105, 93, +234, 78,236, 89, 23, 7, 47, 61,159, 8,160,220,168,239, 84, 16, 64, 5,174,208,249, 61,191,235, 0, 8,175, 46, 10, 44,128,230, +237, 19, 42,102,209,106, 75,136, 36,221, 25, 93,237,213,242, 21,163, 70,141,176, 54, 37, 63, 66,154, 65,134,151,233, 58, 36,104, +165,200,145, 56, 35,246,193, 61,158, 33, 56, 85,126,225, 34,139,114, 58, 91, 59,185, 37, 19,212,113,172, 71,214,241, 25,233,114, +194,177,214,189,191,181, 77, 57,243,227,115, 46, 55, 57,151, 16,148,187,182,158,141,141,173,159, 46,245, 57,155,153,158, 2, 91, +215,218,232,210,191, 59,190, 14, 14, 68,118, 86, 46,146,211, 46,211, 26,110,214, 36,250,194, 86,204,236, 90, 11,169,137,241,208, +155, 0,146,171, 79,211, 25,116, 57,165,222, 71, 6,107, 39, 76,158,242,129,143,155,147, 69,193,164, 2, 42,240,168, 87,171, 26, + 58,182,110,138, 83, 23,255,192,245,123,145, 16,242, 39, 21, 80, 65, 64, 76, 82,122,162,206,200,111,172,208, 13,229, 57, 80,147, +174, 68, 33,134, 74, 12, 25,214,113, 33,106, 30,152,221,172,134,213,240,105,221,125,172, 44, 20, 4, 58, 19, 15,157,193,132,236, + 63, 86,192,161, 74, 29,168,149, 74,210, 0, 90, 9, 0,113,221, 66, 17, 34,138,160, 95,191,126,202,196,196,196,208,224,224,224, +192,142, 29, 59,170, 91,181,106,133,220,220, 92,156, 60,121, 18,185,185,185, 62, 94, 94, 94, 62, 39, 79,158,236,211,172, 89,179, + 8, 79, 79,207,182,187,119,239,174,136, 15,173, 4,255,115,102, 23, 0,112,132, 16,228,239, 35, 0,132,215, 89,231, 86, 46,151, + 35, 58, 58,250,141, 91,182, 98, 99, 99, 31, 87,198,178,149,147,147, 35,243,240,240,128,147,147, 19,120,158, 71,110,110, 46, 14, + 28, 56,128,204,204, 76, 8,130, 0,149, 74,133,111,151,172,199,131, 91,161,184,122,245, 42, 50, 51, 51,101,229,113,198,196,196, +144,122,245,234, 65,175,215,131,227, 56,232,116, 58,156, 62,125,186,112, 91, 34,145, 96,202, 55, 75, 17,121, 35, 20,183,111,223, + 70, 76, 76,204,223,178,218, 72, 5,180,200,191,209, 26,186,174,172, 10,251,183,130,231,185,233,235, 54,237,184, 60,125,244, 0, +140, 27,216,193,107,222,202,125, 29, 34,146,233, 38, 0, 8,116, 34, 67, 6,183,171,225,109,171,150,226,235,109, 55, 0, 74,167, +191,238,245,194, 82,105,100,109, 87, 50,113,255,213,232,208, 25, 3, 26,160,154,155,181, 95,245,234, 68, 30, 21,101,198,154,130, + 2, 7, 59, 75, 69, 64,112,125,199,227, 16, 4,216, 90, 41,106,130,231, 96,107,169, 8,232, 26,100,115, 12, 0,108,213,178,154, + 37, 89,190, 74, 67, 99,111,217, 72,181, 66, 50,210,162,161,155,247,208, 30, 29, 85,221,122,244, 81, 89, 74, 57,164, 94, 61,137, + 44,169, 39, 76,246, 62,208,155,210, 16,243, 52,138, 63,115,229,126,108, 74,182,126, 82,185,201,164, 56, 31,251,244,161, 83,213, +186, 29,237, 82,142,204, 76,170, 58,108,155, 47, 3,129,201,222,218, 59,209,194,185,137,234,218,147,167, 57, 2,253,179, 69,167, + 56,178, 50, 51,159,155,120,184,105,121,137, 85,212,217,223, 48,173,107, 29,164,167, 37, 65,103,228,144,169,229,140,174,182, 74, +133,254,105, 24,244, 70, 14, 6,147, 0,169,173, 7, 78, 94,190,151, 34,152, 76,199, 74,227,140, 74,161,183, 1, 88, 22,221, 87, +221,137,212,155,106,173,186, 13,147, 22,209, 49,113,216, 20,114,185, 65,254,113,149,175,228, 2,151, 55,252, 92,196,146, 69, 40, + 90, 85,198, 9,190,150, 11,105,162, 82,202,126, 94, 52,241,195,192,119,252,237, 21, 66,204,101, 16,193, 8, 11, 94, 2,173,156, +135,141, 87, 53, 8,134,108,170,209,233, 50,194, 1, 49,210,187, 8, 17, 69, 80,179,102, 77, 87, 27, 27,155,240,201,147, 39,219, +247,238,221, 27,251,247,239, 71, 86, 86, 22, 54,110,220,136,101,203,150,225,171,175,190,130,201,100,194,186,117,235,212,123,247, +238,109,178,106,213,170, 24, 31, 31,159,218,209,209,209, 9,229,245, 41, 1, 40, 0, 72,243,219, 46, 2, 64, 56,122,244, 40,186, +117,235,134,163, 71,143, 10,249,251,120, 66,136,137, 82, 90,169,245, 68,229,114, 57,228,114, 57, 50, 51, 51,223,136,216,146, 74, +165,176,180,180,132, 92, 46, 71,118,118,118,133,197, 22,199,113,108, 76, 76, 12, 50, 51, 51,209,177, 71, 15, 44,157, 63, 31,237, +218,181, 67,199,142, 29, 65, 41,197,233,211,167,209,161, 69, 16, 6,188,215, 22,247,239,223, 7,199,113,102,165, 55, 33, 33, 1, +137,137,137,232,210,163, 7,214,175, 90,133,166, 77,155, 34, 32, 32, 0, 28,199, 33, 52, 52, 20,125, 59,183,128,178, 87, 7, 68, + 70, 70,138,149,218, 76,107,214,155,242,209,122,109,132, 37,209, 43,129, 78,228,200,192,206, 77,186,247,104, 25,136,245, 59,207, +124, 23, 24, 72,118, 0,128,131,149,226,219,143,218, 85, 67,196,139,116,156,185, 29,119, 36, 34,249,205,204,214, 16,120, 56, 58, + 88,171, 1, 86, 14,173, 81,224,172,159,160, 92, 7,102,129, 82,168, 91, 79,197,224, 30, 17, 94, 77, 3,189,188, 10,102, 29, 90, +118,251, 17, 67,238, 61,246,110, 28,224,234, 13,222, 4,240, 38, 88, 15,216, 6,124, 99, 81,110, 58, 90, 86, 85,156,154, 58,105, + 98,243,174,189,250,171,228,106, 27,240, 89, 47, 97, 74,184,135,212, 71,231,145,171,246, 67, 66,244, 19,236, 58,113, 53,243, 81, + 76,106, 22,195,224,100, 98,166,254,203,168, 52,154, 83, 30,175,206,132,249,115,102, 78, 10,222,181, 99,167,149,162, 90, 75, 18, +181,162, 91,166, 92,194, 41,156,124, 27, 50, 26,165, 35,253,126,227, 78,235, 92, 3, 22,148,199,163,201,205,218,119,250,228,241, + 1, 53,170,182,180,122,118, 61, 4, 90,157, 30,122, 19, 80,187, 73, 91,240, 60,149, 19,134, 8,214, 44, 75,146, 82,211, 65, 76, +124,226,133, 59,207,226, 47,222,121,194,234,173,202,231,126, 69,221, 19,246,243, 30,109,235, 3, 38, 45,222,107, 93, 7, 75,183, +158,249, 12,192,176,215, 43,228, 60,139, 22, 5, 90,214,118, 38,107, 0,180,188,113, 96, 89,205, 70,189, 38,160, 34, 22,173, 32, + 39,210, 53,168,186,251,111, 75,191,157,106,239,224,233,199, 18,193, 4,234, 90, 23,200,138,161, 36,230, 50,108, 60,154,130,119, +111,129,117, 63,253,144, 35, 8,116, 71,101, 66, 91,136, 16,241, 54, 67,167,211,237, 91,184,112,161,125,247,238,221, 11, 44, 50, +184,124,249, 50, 54,108,216, 0, 11,139, 87,223,147,221,186,117, 3,165,212,126,238,220,185,251, 0,188, 83, 26,103,139, 22, 45, +122,252,244,211, 79,113,245,235,215,127,146, 47,182,100, 0,152,176,176, 48,230,229,203,151,196,206,206,142,186,187,187,155,226, +226,226, 4, 0,252,199, 31,127,204, 90, 90, 90,214,200,201,201, 57, 87, 89,161, 37,151,203,223,136,207,150, 84, 42, 5, 33, 4, +114,185, 28, 50,153, 12,148,210, 10,137, 45,158,231, 37, 71,143, 30,197,141, 27, 55,240, 85,253,250,152,232,225, 1,123,123,123, +132,134,134,130, 82, 10, 11, 11, 11,164,165,165, 97,199,142, 29,120,247,221,119,193,113,156,204, 28,222, 61,123,246,224,230,205, +155,248,166, 81, 35, 76,180,177,129,165,165, 37, 78,159,206, 27, 13, 84, 40, 20,136,142,142,198,233,211,167,209,182,109, 91,177, + 82,191, 38,204,174, 60,109, 9,145, 16, 23,184, 26, 13, 90, 80,142, 2, 4,238,129,129, 68, 22, 17, 65,141, 21,189, 40,195, 96, +230, 79,155,142, 4,255, 56,161, 7, 25,217,179,129,251,188,223,206,142, 1,128,225,239,251,123,168, 21, 18, 44, 63, 24, 65, 25, + 6, 51,223, 68, 6, 3, 3,137,140, 97, 48,166, 99,211, 0,196,101, 24, 16, 21,151,241,123, 4,165,102, 13,245,156,249,113, 48, + 54, 31, 10,125,185,108,179,238, 1,165, 20,182,150,138,128, 33,119,163,188,127, 59,122,243,197,146, 93,186, 7, 84,160,176, 85, + 75,107, 14,187,223,162,220, 89,135,141,189,101, 35,167, 79,253,178, 69,207, 97,147,149,220,131,221, 48, 68,157,128, 96,212, 34, +203, 40, 67, 6,235,138,152, 23, 47,240,253,186, 35, 47,179,114, 13, 3,194,146, 42, 38, 48, 35, 83,104, 78,160, 19,233,253,253, +215, 51, 78,205,255,118,174,165,246, 73,104, 14, 75, 56, 45, 91,165,141,228,219,175,126, 36,217,122, 67,255,168, 52,154, 93, 30, +143,222, 10, 11, 22, 46,249, 41,120,196,160, 62, 15,252,253,218, 56,240,113, 79, 29,116, 89, 89, 73,219,142,223,116,205,239, 41, + 18, 0,136,138, 73, 69,114,102, 46,199,115,166,115, 86, 82,204, 11, 55,199, 58,152,143,106, 46,196,169,119,171,186, 31, 58, 89, +201,160,205,201,128,179,149, 20,157,155, 86,255,176,154, 11,153,250, 36,145, 38, 87, 94,104,153, 64, 77, 90, 92, 89,240,110, 77, +202,155,106,130, 55,193,120,119, 75,197, 45, 99, 4, 19,199,181,182,180,182, 51, 60, 99,144,107, 1,168, 28, 65,172,125, 0, 27, + 95, 34,173,213, 31,113, 79,194,185,207, 62, 28,148,250,244,121,204, 47,142, 42, 44, 22, 95, 33, 34, 68,188,138,232,232,232,143, +166, 79,159,126,177,105,211,166, 46,142,142,142,168, 83,167, 14, 14, 29, 58,132,201,147, 39, 23, 30, 83,191,126,125, 80, 74,145, +150,150,134,133, 11, 23, 38,196,197,197,125, 84, 22,103,120,120,248,131,205,155, 55,183, 14, 12, 12, 52,202,100,178, 12, 0,138, +140,140, 12,101, 90, 90, 26,209,233,116, 16, 4, 65,176,177,177,225,227,226,226, 76, 3, 6, 12,208, 95,186,116,169,122,110,110, +110,244,235, 88,180,188,188,188,194, 82, 83, 83, 51, 9, 33,175, 29,250,161, 64,100, 57, 58, 58, 58,229,228,228, 8, 0,210, 43, + 19,250,129,227, 56, 52,106,212, 8, 39,206,223,194,209, 51,151,144, 21,247, 16, 99, 70,124,132, 58,117,234,224,196,137, 19,149, + 46,179,122,245,234,225,248,233,139,184,120,227, 14,162, 35,239,226,179, 49, 35, 80,187,118,109, 28, 63,126, 92,172,208,230, 35, +164,152,111, 86, 72,113,161,213, 54, 36, 36,164,160,103,254, 39,249, 90,203,137,212,115,175, 33,223, 50,183,107,245, 90,210,142, +115, 65,164, 42,236,246, 59,222, 98,230,247, 43, 30,212,113, 33,131,238, 37,150, 63, 59,236, 21,171, 86, 34, 13,175,237, 76,182, +223,185, 95,243,195,247,154,122, 97,253, 33,245,108, 0,232,223,170, 42,174, 61, 74,198,213,200,164,237,225, 73, 52,252,117,115, + 93,199,133,168, 65,177,125,225,231, 61,219,250,120,186, 98,195,254,139, 32, 4,251,204,106,112, 41,165, 77, 3,125,176,108,115, +241, 25,134,174,222, 75,118,233, 30,156, 8,203,234, 10, 0,157,106, 89, 28,107, 92,221,206,187, 60,203,134, 74, 46, 25,213,181, +207, 96, 37, 23,121, 8,120,126, 26,132,211, 67,107, 20, 16,159,146, 13,141,141, 23, 66, 47,223,209,102,234, 12, 19,194,147, 42, +103,197,139, 72,166, 79,234,187,145, 23, 57,185, 90, 55,181, 83,117, 29,203, 8, 66,142,158,226, 90,196,243,172,240,120,250,208, + 28,142,168, 40,106,120,199,147,180, 90,179,105,215, 28,169, 76,222,159, 37, 32,206,182, 22, 78,107,126,252, 6, 86, 86,150, 16, + 12, 57, 64,110, 50,122,127,250,125,242,189, 88, 99, 85, 0,240,119, 36,150,173,171,201, 54, 73, 24, 18,243,251, 99,195,172,114, +205,171, 38,140, 30,212,185,190, 84, 48,228,226,243,133, 59,177,118,106, 79, 12,110, 95, 75, 26,242, 71,228,104, 0,243, 42, 91, +214,148,231, 64, 77, 90,188, 51,227,252, 3, 2, 92,164, 64,203, 27,187,190,173, 9,220, 50,155,163, 33, 33, 82,137, 27,169, 85, +215,219, 66, 38,196,252, 1, 33,230, 15,202,122,181, 0,241,110, 77,136,107, 35,250,243,162,175,114,215,175,223,112, 82, 96,240, +117,121,161, 50, 68,136,248,255, 10, 74,233, 19, 91, 91,219, 46,221,186,117, 59,115,226,196, 9,251,160,160, 32, 0,192,141, 27, + 55, 0, 0,141, 26, 53,130,191,191, 63, 18, 19, 19, 49,112,224,192,148,248,248,248, 46,148,210, 50,125,126,179,179,179,159,238, +217,179,199, 37, 55, 55,183,254,172, 89,179,146,124,124,124,178,116, 58, 29,201,200,200, 16, 56,142,131,157,157,157,188,126,253, +250,104,222,188,121,206,229,203,151,171,188,124,249, 50, 27,192,243,202,164,191,103,207,158, 56,127, 62,111,210,222,155,136,171, + 37,147,201, 16, 20, 20,228,241,228,201,147,216,252,251,115,165, 18,247,180,240,247,157, 59,119,112,238, 86, 12, 36, 6, 45,228, +201,113,184,178,127, 15,122,140, 26, 11,142,171,188, 23,195,157, 59,119,112,224,244, 21, 88, 40, 36,120,248, 48, 28,123,246,236, +193,152, 49, 99, 94,139,179,146, 40, 83,139,252,203,235,125, 60,128,117,165, 90,180,130,131,131,207,161,132,168,182,213,171, 19, +185, 34, 7,115, 59, 55,242,152,210,191,101,117,214,148, 21, 7,129, 23,192, 74, 1,103, 71,107,108,217,178,189,234,246,157, 59, + 47,215,243,144,254, 36,112,220,204,123,137, 84, 83,129,116,205,253,113,231,197,254, 91, 38,181,149,140,233, 90,211, 30, 0,100, + 18, 6,203, 15,133,115, 0,230,190, 78,134,223,241, 36,202, 28, 19, 70,186, 58,216,204,158,254, 73,176,125,219, 70,254, 56,119, + 53, 12, 63,237,185,124, 94,158,132,205,102,223, 56,193,132,226,250,169,164, 89,135, 16,202,247,187,228,121,234, 42,179,176,131, +241,249, 89,192,168,131, 78,111,196,203, 84, 30, 47,211,116,144,168,101,184, 17, 25,163,117, 72,192,145,202,230,153, 16, 66, 90, + 86, 83,186,207,249,110,137,167, 78,155,195,101,165,167,112, 50,249, 21,169, 90,165,136,175, 8,207,229, 24,170,107, 83, 85,214, + 16, 16, 88,185,146,106,102,124, 49,212, 34, 54,226, 4,106, 48,113, 32,148, 66, 85, 43, 24, 86, 42, 86,214,202, 87,246, 2, 0, +124, 93,109,228, 11,191,158,108, 51, 97,234,215,229,250,128, 5, 18, 34,171,211,216,117, 66,144,143, 29,206,223,124,128,243,247, +162,195,207,223,120, 88,187, 93, 29,119,248,123,218,142, 15, 36,100, 65, 4,173,184,133, 52,175, 96, 56,192,164, 43,156,117, 24, +232, 66, 62,104,220,127, 86,137,179, 13, 75,131, 47, 32, 68,242, 20,132,101, 1,194,228,205,128,124,249, 7, 36,182,213,232,246, + 93, 7, 52, 27, 54,108,254, 38, 34,153,138, 86, 44, 17, 34,202, 65, 70, 70,198, 93,181, 90,221,185,110,221,186, 27, 63,255,252, +115,171, 65,131, 6,185,143, 24, 49,130, 1,128,196,196, 68, 97,217,178,101,113, 63,255,252,115,102, 74, 74,202, 48,163,209,120, +207,156,142, 47, 33,228,210, 47,191,252,146,124,225,194,133,218, 77,154, 52, 81, 52,108,216, 80,176,179,179,147, 40, 20, 10,222, + 96, 48,232, 34, 35, 35,249, 39, 79,158,184,101,100,100, 60, 6, 16, 85,153, 97,253,124,235,213, 60,150,101,231, 80, 74,131,222, +132,143,150, 90,173,118, 7,240,152, 16, 82,163,162,195,134,127,106,176, 37, 18,164,167,167, 67,147, 16, 14,101,204, 35,212,181, + 96, 16,104,103, 9,107,107,235,215, 18, 69,153,153,153, 64,110, 44, 46, 94,188, 3,112, 28,108,108,108, 96, 99, 99,243,183, 11, +173,210,180,200,127, 1,197,103, 26,230,215,219,178,125,180,106, 59,147, 49,118,114, 44, 27, 21, 92, 93,230,235,237, 9,125,204, + 13,220,121,153,131,153,205,154, 68,176, 10, 43,221,168,143,122, 54,234,211,183, 10,218, 54,111, 76,124,221,108,198, 47,248,113, +245,167,181, 93,200,228,240, 68,186,220,156, 68,133, 39,209,167,181,156,201,134,179,119, 99, 70,123,170,181, 16, 4,138,179,247, +226,113,239,121,250,134,251, 73,244,105, 69, 50, 88,219,157,116,144,128,217, 73, 41, 85,218, 88, 88,100,215,175, 87,211,177,195, + 59,245,152, 46,109, 26, 65,198, 2, 23,175,221,193,196, 31,247, 93, 17, 4, 26,124,211,204, 97,195,188, 25,134,175, 10,168,188, + 25,134,166, 87,102, 24, 82, 74,105,222,172,195,178,221,190, 88,150, 36,104,162,175,187, 74, 29,252,160,141, 58,139,231,233, 2, +162,147,178,145, 37,113,133, 62, 54, 22,160,194,139, 80, 74, 43, 93,171, 29, 29, 29,157,171, 6,250, 87, 95,177,105, 15,140,154, + 76, 60, 13,221,136,156,244,120,124,187,230, 80,117, 79, 79,207, 54, 49, 49, 49,231, 42, 80, 97,252,207, 28,217,238, 12, 10,176, + 82, 5, 66, 86,237, 66,138,131, 10,142,106, 25, 4,109, 50, 70, 77, 24,100,211,181,227, 32, 27, 0,136,126,120, 27, 62,106,173, + 89,188, 70, 7,244,233,223, 46,192, 22, 38, 45, 54, 29,191,173, 99,128, 46,155, 79,134, 71,181,171,105,171,236,223,210,199,110, + 94, 92,198,251,168,100, 80,209, 2,139, 86,161,133,175, 18,179, 13,119, 83,202,215,114, 34, 81, 59, 47, 37, 89,244,237,216, 80, + 45,147, 16, 66,115, 98, 65, 85,142, 88,189,105,119,142,220,132,117, 98, 19, 42, 66,132,121,208,104, 52, 55, 9, 33,117,190,252, +242,203, 15,102,204,152,209,218,194,194,162, 42, 0,228,230,230, 62, 53,153, 76,231, 1,108,175,200,236,192,124,225,244,152, 16, +242, 52, 42, 42,202,101,235,214,173,182, 0,148,249,127,235, 0,100, 0, 72,124,157, 25,135, 5,162,138, 16, 50,231, 13, 90, 58, +142,230,115,214,168,204,249, 12,195,240,132, 16, 16, 66,160, 80, 40,112,225,194, 5,244, 11,238,136,251, 33, 25, 8,178,181, 68, +147, 97,163,176,243,212, 41,176, 44, 11, 66, 8, 88,150,173, 80, 59, 34,145, 72,112,241,226, 69, 12, 30,216, 23, 10, 9, 96, 99, + 99,131, 47,191,252, 18, 7, 15, 30,132, 68, 34,174,210, 87,129,114, 94, 87, 32,184,204,143,163, 69, 48,239,212,198,239,101,224, + 77, 56,188,241, 7, 28, 9,203, 49, 60, 76,198,204,128,100, 44,219,131,108, 33,249,199,205,163, 79, 93, 12, 91,252,241,128,238, +234,119,219,117,196,187,109,219, 73,106, 55,110, 51, 27,192,242, 34, 13,118,135,178, 98,109,240, 2,190, 89,119,252,193,168,157, +161,145, 4,198,108, 12,232,212,152,242, 2,190, 41, 71, 4,252,137,211, 70,101,185,243,226,229,203,118, 48,230,224,249,237,223, +149, 85,170, 86, 7,120, 35, 30, 63,126,132,159, 55,237, 23, 66,175, 61,220, 98,224,240,121, 84, 26,205, 53,151, 51, 79, 89,113, +176,177,144, 7,116, 13,178, 57, 38,128,194, 86, 45,171, 73, 5, 30,182,106,105,205, 78,181, 44,142, 81, 74,169,149, 74, 90,147, +242,166,114, 57,181, 6,110,237,166, 95, 55, 44, 25, 62,124,184, 69, 74, 76, 2,226,178,194,144, 35,247,128, 73,237,133,168,219, +231,181, 26, 61, 87,110, 35, 94,214,253, 76, 73, 73, 73,186,121, 53, 13, 59,215,204,135,201,160, 71, 82, 76,158, 86,141, 75,201, +130,181,163,199,229,138,112, 26, 57, 33,179,207,160,145, 50,149, 21, 84,131,251,116,151, 71,165,234,209,192,221, 42,175, 50,229, + 36,227,254,233,139,104,155,155,167,219,158,188,100,224, 83,207,221,172,116, 90, 41,101,159,119,109,232,129,167, 47,226,113, 33, + 60,118,211,147, 84, 26, 87,205,129,108,138,138,203, 24,221,179,153, 55,150, 30,140,248,172, 52,113, 84, 26,103,160, 11,249, 0, + 64,203, 60,103,120, 45, 40,208, 50,208,133,124, 96,206, 76,195,146, 56, 37, 50,124,184,228, 88,244,172,221,215, 83,122, 78,249, +176,149,117,243,230,221,228,224, 12,200,214,234, 77, 17,233, 52,235,117,202,232, 53,122, 74, 34,167,200,249,159,228,204, 23, 61, + 91,242, 63,111,146, 51, 14,197,226, 58,189,110,222,139, 14, 19, 82, 74, 37,249,214,172, 50,157,225,203,227, 44, 58, 76, 72, 41, + 61,154,111,205, 42,211,170, 85,156, 83, 16,132,184, 70,141, 26,217,247,232,209, 3, 60,207,227,209,163, 71,136,126,249, 18, 29, + 70,127, 6, 91, 91, 91,156,191,123, 23, 15, 31, 62,196,156, 57,115, 96, 50,153,112,224,192,129,152,242, 56, 37, 18,137,177,122, +245,234,178, 94,189,122,129,227, 56, 60,121,242, 4,177,177,177,152, 56,113, 34,108,108,108,112,243,230,205, 66,206,148,148, 20, + 72, 36, 18,227,223, 81,151,254,235, 40, 73,100,149, 45,180, 0, 30,188, 9,153,167,230, 98,249, 5, 24,141, 38,212, 12, 79,162, +207,138,252,191,186,174, 3, 57,124, 55,236,193,211,155,127,188, 43, 71,210,189,188,115, 42,128,200, 20, 26,223,216, 75,146, 13, + 99,182, 53,158, 28,195,179,196,236,156,200, 20, 26, 95,209,204, 81,129, 39, 48,106,128,248, 27,184,116,254, 28, 66,175,220,193, +245,123, 15,248, 75, 55, 35,119, 50, 2,190,137, 72,161,143, 42,161, 78, 97, 25,188, 20, 67,239, 61,246,110,236,239,226, 13,158, + 3, 21, 76,176, 25,176, 29,195, 34,154,123, 55,174,102,235,157,103,201, 50,193,238,147,223,129, 37,202, 50,249,174,191, 48,174, +107, 89, 85,241,126,118, 70,106,179,246,109,222,177,176,169,213, 21, 41,143, 35,241,232,206, 69,237,205,176,168, 75,215, 95, 24, + 95,203, 90,226,225,225,209,186,125,155, 0, 12, 24, 53, 29, 70, 77, 38,158,132,254,138,156,180, 4, 92,184,108,137, 7, 89, 89, +239, 0, 48,219,162,117, 41,218, 84, 27, 0, 90,250,202, 94, 88, 65,239,250, 81,247, 30, 80, 16, 29, 4,125, 22,136, 38, 5, 81, +177,134,204,247,215,188,228, 1, 64,173, 32, 18, 11,154,105,109, 14,111,160,143,131,159,154, 53, 97,243,169,112, 8, 66,222,242, + 77,130,128,213,155,127,143, 26,253,205,224, 6, 8,244,182,171, 71, 8, 33, 21, 49,249, 19,138, 86,215,119,126, 93, 83,119,102, + 54, 32, 24,113,113,188,125,205, 86,203,211, 90, 85,214, 50,118, 47,150,198, 2, 24, 93,203,157,172, 29,191,252,248,236, 70,167, + 34, 90, 78,250,164,167, 53,168,184, 0,187, 8, 17, 34,254,126,228,228,228,140, 26, 54,108,216, 90,169, 84,234, 4,128, 8,130, + 0, 65, 16, 36,139, 23, 47,150,242, 60,207, 48, 12,195,179, 44,203, 29, 61,122,212,196,243,124,178, 78,167, 27, 85, 30, 39,199, +113, 81, 99,199,142,173, 94,222, 12,197, 29, 59,118, 64, 34,145, 24, 57,142,139, 18, 75,162,124,145, 85,244,187,168,149,171,244, +198,131,226,235, 22,131,231,206, 5, 64, 64,241, 85, 49,145, 5, 0,184,155, 74,227,106, 59,147,137,181, 27,183,153, 91,112, 78, + 69, 19,167,227,249,190,141,235,248,239, 0, 0, 61,229, 7, 87, 38,131, 89,122,109,255,250,141,223,217, 41, 80, 42,225, 40,221, +192, 8,216,171,227,112,223,156,153,118,165, 33, 46, 41,227,102,193, 66,209, 2,232,255,134, 11,243,195, 56, 80, 74,105,225,112, +225, 15, 74,164,100,234,203,141, 3,117,241,169,190, 99, 99,111,217,200,147,127,220, 30,197,243,212,149,101, 73,130,214,192,173, +125, 93,145, 5, 0, 49, 49, 49,231, 2,157,201,201,187,245, 92, 58, 57,170,243,173, 92, 26, 32, 69,131,147, 49, 73,217,231, 42, +195,153,158,107,234, 57, 99,217,193, 67,114, 41, 43, 1,165,121, 1, 69, 41,133,206,200,167, 21,136,177,186, 14,196,253,203, 3, +220, 14,150, 37,209,229,241, 93,125, 24,191,116,192,130,211,147,195,159,167,111,120,150, 78,195, 0,224, 89, 58, 13,171,225, 64, +102, 71, 37,100, 79, 14,139, 78,255,161,162,126, 21,148,224, 66,227, 1,115,255,180,239,117,239,231,253, 56,122, 7, 64,239,218, +206,164,227,128, 73, 63, 79, 34, 4,226,242, 19, 34, 68,252, 63, 66,129, 85,139, 97,152,121,111,144,243, 40, 33,164, 27,128,199, + 21, 56,231, 42,128, 58,111, 56,111,169, 0, 82,197, 82,126,163,247,180,226, 1, 75,195,147,232,106,152,177,104,180,185,199,149, +122,126, 28, 61, 13,192,225,117, 50,152,207, 97,255, 38,111,218,221, 68, 58,251,175, 40,140,124, 81,245,151,248,250, 68, 36,209, +206, 0,224,231,231, 71, 31, 63,126, 12, 74,233,107, 57, 21,222, 79,166,119, 80,108, 41,135,146,196, 54,128, 86,230,240, 69,166, +208,111,128, 63, 15, 13, 63, 78,165,223, 2,248,182, 82,121,174,100,228,119,179,235, 86, 18, 61, 5,148, 31,157, 95,132, 8, 17, +111,167,216,250, 11, 56,143,138,119,246,237, 67, 89, 1, 75, 25,241,246,188,125,120,244,232, 17,121, 93,145, 37, 66,132, 8, 17, +111, 49,248,215,252,148,168,161, 94,243, 35,226, 45, 17, 92,197,247,137, 66, 75,132, 8, 17, 34, 68,136, 16, 33,226, 13,137,172, +226, 98,139, 0,232, 80,162, 52,175,192,108, 2, 66, 72,135,138, 38,168, 60,126,145, 83,228, 20, 57, 69, 78,145, 83,228, 20, 57, +223, 62,206,242,184,223,186,217,140,180,136,147,243,155,254, 0,232, 32,114,138,156, 34,167,200, 41,114,138,156, 34,167,200,249, + 54,127, 0,140, 44,109, 91, 28, 58, 20, 33, 66,132, 8, 17, 34, 68,136,248,139, 32,198, 6, 18, 33, 66,132, 8, 17, 34, 68,136, +120, 61,148,187,168,180, 8, 17, 34, 68,136, 16, 33, 66,132,136, 74,160,220, 69,165, 69,136, 16, 33, 66,132, 8, 17, 34, 68, 84, + 14,149, 90, 84, 90,132, 8, 17, 34, 68,136, 16, 33, 66, 68,249, 40, 43, 50, 60,169,224,138, 39, 34, 68,136, 16, 33, 66,132, 8, + 17, 34,202,192,159, 34,195,135,132,132,208,162,223, 34, 68,136, 16, 33, 66,132, 8, 17,127, 39,222, 86, 45, 34, 14, 29,138, 16, + 33, 66,132, 8, 17, 34, 68,188, 6, 74,242,209, 18,133,150, 8, 17, 34, 68,136, 16, 33, 66,196, 27, 64, 89, 62, 90, 5, 1, 75, +219,230,155,234,218,138,183, 75,132, 8, 17, 34, 68,136, 16,241, 15,224,173,212, 34,133,206,240, 33, 33, 33, 52, 56, 56,152,136, +229, 44, 66,132, 8, 17, 34, 68,136,248, 39,240, 54,106, 17,113,214,161, 8, 17, 34, 68,136, 16, 33, 66,196,235,136,169, 34,179, + 12,139,111,139,107, 29,138, 16, 33, 66,132, 8, 17, 34, 68,188, 33,193, 85,124, 31,243, 23, 95,176,131,200, 41,114,138,156, 34, +167,200, 41,114,138,156, 34,231,255, 23,145, 85, 92,108,137,179, 14, 69,136, 16, 33, 66,132, 8, 17, 34, 94, 3,230,204, 58, 20, + 33, 66,132, 8, 17, 34, 68,136, 16, 81, 9, 16, 66, 70, 18, 66,186,231,255,238, 94,212,170, 37, 90,180, 68,136, 16, 33, 66,132, + 8, 17, 34, 94, 3,148,210,117,132, 16,183,124,129, 21, 66, 41,141, 23,133,150, 8, 17, 34, 68,136, 16, 33, 66,196, 27, 64, 49, +191,172, 96, 66, 72,225,112,162, 40,180, 68,136, 16, 33, 66,132, 8, 17, 34, 94, 3,101,249,104, 17, 0, 29, 74, 57,233,116, 5, +148, 92,135, 74, 36,234,180,200, 41,114,138,156, 34,167,200, 41,114,138,156,255,191, 56,203,227,174,136,254,248,183,160,164,176, + 14,133,226,139, 82,250,151,125, 0,116, 16, 57, 69, 78,145, 83,228, 20, 57, 69, 78,145, 83,228,252,255,250,121,227,179, 14, 27, + 18,162, 18,141,136,111, 31, 8, 33, 46,132, 16, 23,241, 78,136, 16, 33, 66,132, 8, 17,230, 91,184,222,168,143, 86, 32, 33,159, +124, 18,228,180,166, 14, 33,214,247, 40,213,148,117,172,179,179,243, 90,181, 90, 61, 72,163,209,228, 18, 66,132, 34,166, 54, 0, + 40,186, 46,208,147,164,164,164, 86,229, 93, 91,161, 80, 44,115,113,113,249, 36, 39, 39, 71, 67, 8,161,132, 16, 16, 66, 10, 50, +252,202, 55,207,243, 49, 41, 41, 41,141,254,211,133, 8,176,142, 46, 46,215,164, 44,235, 81,209,115,121, 65,120,150,152,144,240, + 78, 5, 42,204,124, 66, 48, 37,255,247, 34, 74,233,244,183,240,169, 96,205, 57, 44, 8,176,138, 4, 6,240, 12,243,153, 20, 88, +169, 23,132, 53,249, 21,151,175,236,165, 13,215, 72,117, 66, 81,143, 16,216, 80,138, 76, 74,112, 71,222,132, 70,253, 67, 47,135, + 62, 82,169,180,167,181,181,181,101,106,106,234, 57, 0, 59, 0, 12,116,112,112,104,147,149,149,149, 99, 50,153, 14, 82, 74,247, + 85,134,187,117,125, 50, 85, 46,147,126,172, 51,154, 22, 94,188, 77,127,109,219,144, 56,112, 2, 22, 40,101,146, 86,122, 3,183, +232,194, 29,186,161,130,105, 37,121,143, 66,193,171,163,226,235,137,237, 49,179,220, 1,224,128,157,157,191,194,201,250,140, 84, +206, 62,203, 72,204, 25,212, 55, 41,233,101,223,215, 40,247,127, 35,156,156,156,134, 50, 12,243, 29,165, 20, 60,207,207, 76, 77, + 77,221,248,134,234,213, 76, 0,182,249,155, 25,148,210,239, 94,147, 47, 26,128,119,254,230, 11, 74,169,143,216,180, 87,250, 94, +174,222,191,127,255,232,118,237,218, 97,233,210,165, 88,189,122,245,243,228,228,228, 5, 0, 54, 81, 74, 13,127, 55,207,219,136, + 55, 38,180,106, 19,210,109,104,231,166,107,199,245,239, 70, 38, 12,157,165, 41,231, 97,254,165, 75,151, 46,131, 55,109,218, 36, +141,140,140, 84,249,250,250,130, 97,152, 66, 33, 84,244,125, 89,165, 74, 21,161,188,107,179, 44,187,188,119,239,222,195,246,236, +217,163,190,121,243,166,186, 86,173, 90,133,124,130, 32,160,248,251,215,215,215,183, 76, 62, 27, 27,155, 27, 44,203,122,150, 36, +210, 74,251,205,243,124, 76,106,106,106, 35, 51, 42, 99,103, 0,211,204,184,165, 11, 40,165, 39,202, 58, 64,202,178, 30,113,113, +113,206, 21, 45, 43, 47, 47, 47, 99, 5, 30, 30, 23, 66, 48, 69, 16, 40, 3, 0, 12, 67,166, 42,149,202, 53, 58,157,238, 69,193, +255,249,101,150, 88,145, 52,120,120,120,188, 79, 41, 29, 5,128, 18, 66,214,197,198,198,238,173,200,249,214,214,214, 55,228,114, +185,167, 68, 34, 33, 37,149, 75,241,109,158,231,169,209,104,140, 73, 75, 75,171,176,192, 62, 7,144, 46, 64,107,142,101, 39, 56, + 56, 58,182,186,121,242,164, 69, 80, 80, 16,195,178,236,116, 0,107, 94,231,185, 49, 92, 35,213,121, 19,250,105, 77,138,238, 10, +159,175,252,245,209, 95, 69,170,164,250, 35,134,107,100,247,223, 45,182, 8, 33, 67,134, 12, 25, 50, 97,225,194,133,142,114,185, +156,217,181,107,151,255,196,137, 19,251, 44, 93,186,212,177,127,255,254, 86, 6,131, 65,152, 58,117,106, 32, 33,196,153, 82,186, +170, 34,220,205,235,147,102, 1,190,110,115,198, 13,122, 23,147,231,239, 24,215,178, 14, 73, 81, 89,200, 86,191,223,170,186,109, +237,170,118,248,122,237,165,207, 1,108,168, 64, 90,137, 68, 34,121,199,221,221,221, 79,167,211,113,249,157, 55, 90,228,157,144, +119,127, 13, 6, 67, 90, 90,218,238,215,189, 55,147,149,202,166, 77,109, 45, 79,205,253, 96,136, 42, 43, 61,205,101,121,200,161, +187,123,224, 92,183, 47,240,252,109,106, 16, 24,134,249, 46, 54, 54,214,141, 82, 10, 55, 55,183,239, 0,108,124, 67,212,182, 5, +239, 97, 66,136,237, 27,224,243, 46,194,231,253, 6,234,190, 82,194, 48, 99,229, 82,105, 39,158,231,235,228,215,161,123, 6,147, +233, 20, 39, 8, 43, 41,165,186,183, 88, 7, 76, 25, 61,122,116,199, 25, 51,102,248, 78,153, 50, 5, 83,166, 76,169,178,126,253, +250,181,223,127,255,253, 84, 66, 72, 93, 74,105,206,223,204,243,159,183, 96,253, 37, 66, 43,144,144, 70,237,235,213,216, 59,126, +232, 0, 8,123,150, 17, 12,157, 85,166,200,122,167, 81,163,143, 55,109,218, 4, 0, 24,212,179, 39, 58, 53,105, 2, 43, 75, 11, +200,229,121,201, 33,148, 64, 38,149,161,215,196, 47,204,201,220,162, 62,125,250,124,184,103,207, 30, 75, 0, 88,189,122, 53,250, +244,233, 3,123,123,123,168,213,106,200,100, 50, 72,165,210, 87,190,205, 16,110,158,177,177,177,206, 74,165,178, 80,248, 9,130, +240,202,167,200, 56, 53, 56,142,131,159,159,159,185,183,107, 90,102,102,102,235,220,220,220, 50,199,116,171, 86,173, 10, 0, 39, +204, 33,252,238,219,111, 32,112,185,144, 72, 0,142, 3,244, 70, 6, 66, 9,125,123,119,119,119,140, 29, 59, 22,175,179,144,120, +112,112,119, 66, 8,217,227,238,238,190, 55, 41, 41,201,151, 16,140,168,164,165,235,211, 71,143, 30, 89, 2,128,191,191,255, 88, + 0, 21, 18, 90, 18,137,196,243,238,221,187,206, 10,133,162, 84,203,101, 17, 17, 12,163,209,136, 6, 13, 26,112, 21,185,134, 11, +224,157,198, 48, 35,234, 55,108, 56,114,110,175, 94,202,107,215,174, 41, 25,134, 1,199,113, 88,188,120, 49, 71, 41,181, 13, 4, +172, 35,128,172, 50,234,231, 12, 0, 67,243,173,180, 27, 40,165,139, 95,249,159,162,158,214,164,232,254, 36,167, 87,147,166, 85, +166, 34, 34,252, 94,147,106,150, 7, 96, 37,209, 71, 1,248, 91,133,150,181,181,117,207,165, 75,151, 58,109,216,176, 33,235,225, +195,135,198, 53,107,214, 56,141, 26, 53,202,202,104, 52, 98,244,232,209,201, 1, 1, 1,178,165, 75,151, 58,237,219,183,239, 93, + 0, 21, 18, 90, 18,130,111, 6,246,236, 4,157,137,129,201,196, 57,185, 57, 89,109, 25, 63,164,173,148, 82, 3, 54, 31,188, 9, + 19, 39,252, 90, 65, 75,214, 59,125,251,246,173,182,125,251,118,201,131, 7, 15, 36, 53,107,214,132, 32, 8,224,121, 30, 38,147, + 9, 0, 32, 8, 2,106,212,168,241,218,247,229, 99,192,223,209,197,254,212, 59,221,186,170,220,148, 10,216,167, 39, 99,184, 76, + 98,181, 81,173,223, 10,160,249,219,212, 88, 80, 74, 33,145, 72,240,242,229, 75, 56, 59, 59,171,236,237,237,227, 1,124,149,150, +150,182,238, 45,110, 32,155,200, 37,146,189,155,127, 93,238,218,180,121,115,214,197,205, 25,145,143, 94, 64, 66,248, 14,119,175, +223,108,251,241,152, 73,227, 9, 33,239, 83, 74,175,189,109,121,119,107,241,105,111,183,150,159,173, 38, 84,192,215, 43, 14,101, +207, 95,180, 76, 61,122,196, 16,118,226,196,137,240,242,242,242,237,221,187,247, 34, 0, 99,202,229,105,246,105,111,215,230,227, + 86,131, 82,204,253,249, 80,246,247,139,150,169,199, 84,130,231, 63,254,236,172,251,203,132, 86, 32, 33,213,106,123, 57,159,156, + 63,101,140,148, 30,251,141,209,164, 38,161, 52, 41,227,236,236,188,182,107,215,174,131, 54,110,252, 95, 39,233,157,160, 32,244, +126,183, 37,156, 29,108,160,182,144,231, 53, 71, 2,193,157,135,207,204, 18, 4, 94, 94, 94,163,247,238,221,107, 89, 84, 76,200, +100,178,194, 79, 81,145, 85,240, 41,110,249, 40, 9, 74,165, 18,167, 79,159,134, 68, 34, 1,203,178,144, 72, 36,133,159,162,219, + 44,203,194,197,165, 66,174, 75, 11,108,108,108,234,102,103,103, 91,103,100,100,192,219,219, 59, 11,192,221, 34,255,215, 77, 78, + 78,182,174, 8,161,192,229, 98,226,240, 90,144, 26,174,192, 32,109, 2,173,164, 5, 46, 93,191,143, 35, 39,206, 33, 54, 46, 1, + 45,155,213,199, 71, 31,244,197,169, 83,167,192,243,124, 69, 43, 79, 34, 33,100, 81,143, 30,221,167, 2,132,116,232,208, 33, 99, +220,184,113,204,131, 7, 15, 62,236,221,187, 87,208,163, 71,143,243,123,194,100, 10, 33,100,121, 5, 44, 91,114, 0, 56,127,254, + 60, 0, 40, 42, 83,247, 20, 10, 5, 46, 95,190,140,130, 97, 98,134, 97,192, 48, 12, 88,150,197,225,199,142,200, 53, 48,208, 36, +134,225,179,238,222,168, 90,181, 42, 24,166,124,151,196,182,128,242, 18,208,155, 72,165, 19,221,220,221,125,219, 84,171,166, 62, +125,250, 52, 11, 0, 62, 62, 62, 52, 62, 62, 62,227,224,193,131,217, 18, 96,181, 15,165,155,202, 18, 89,222,222,222, 45, 24,134, +249,174,224,158, 19, 66, 22,249,250,250,206, 41, 44, 55, 65,192, 7, 29,237,165,227,199, 79,144, 53,109,155,215, 57,105,218, 99, + 59,178,158,204,175, 69,210,102,216,252,221, 47,138,172,172,172,157, 53,106,212, 96, 83, 83, 83, 47, 1,136, 54,153, 76,211,182, +108,217,226, 60,124,248,240,164,173, 91,183, 46, 0,224,190,112,225,194,182,185,185,185,187, 42,194,219,170, 30,233,214,168,126, + 80, 51,111, 47, 47,156,187,116, 13, 50,185,212,118,236,208,238,176,180,148,224,135, 13, 33, 66,116, 76,218,184, 11,119,232,166, + 10,136,172, 38,125,251,246,245,221,190,125,187, 28, 0,238,222,189,139,132,132, 4, 56, 57, 57, 65,165, 82, 65, 42,149,130,101, + 89, 72,165,210, 55, 34,178,108,188, 28,174, 30, 56,112, 80,101,111,111,139, 21, 95,140,199, 71, 73,137,176,181,178,132, 41, 39, +215,247, 45, 19, 28,254,239,191,255,190,146,231,121,228,230,230, 34, 52, 52,212, 70,165, 82,217,120,122,122,206, 5, 96,182,208, + 82,169, 84,137, 58,157,206, 57,255, 61,154,164,213,106, 93, 0,100, 41, 20,138,130,247,116, 78,254,245,204, 26, 78, 44,101,152, +240, 69, 17, 75,214,139,215,200,115,227, 38,141,235,158,222,183,103,155,101,102,118, 2,108,237,146,192, 32, 19,235,214,173,132, + 74,101,141,185,115,103, 72,158,117,120,215,163,115,183,247, 79, 19, 66, 58,188,117, 98,139,146,117, 29,122, 12,178, 87,169,173, +242,219, 18, 19, 54,174, 31, 15,134, 97, 48,103,206, 28,212,174, 93,123, 36, 33,100, 22,165, 52,173,108, 26,172,171,211,186,191, +189, 92,153, 87,196, 2,111,194,154, 29,147,243,120,166,143,194,192, 30, 85, 71,222,217, 74,142,215,174,134,236,188,118, 5, 90, + 41,131, 23,104, 66,147, 10, 56, 66, 66, 66,218, 4, 7, 7,159, 43,109,251, 63,240,252,184, 1, 8, 46, 73,124, 73, 66, 66, 66, +104,112,112, 48, 41,146,185, 87,182,203, 66,125, 66, 28, 93,108,212,167, 87,127, 53,222, 82,114, 37,132,213,190,120,140, 56, 29, + 95,248,228, 20,159,162,169, 86,171, 7,109,220,184,241, 21, 29,230,237,226, 12,153, 76, 10,169,140,192,182, 85,247,188, 39,238, +194, 17, 16, 66, 75,107,248, 95,225,204,205,205,213,221,190,125,219,114,195,134, 13,112,118,118,134,175,175, 47,212,106, 53,148, + 74,229, 43,226,170,168,224, 42, 46,180,138,115, 22,252, 47,145, 72,192, 48, 12, 78,157, 58, 5,142,227,208,183,111,223, 63,137, + 44,137, 68, 82,162,112, 43,109,122, 42,165,244, 4, 33,228, 46,165,180,117,126, 3,124,151, 82,218,166,200,181, 59, 59, 57, 57, + 77, 3,176,192, 92, 78,150,165, 96,117,151, 32,120, 46,131,228,229,120, 24,164,245,112,246,226, 77,108, 92,187, 20, 0,224, 91, +179, 49,250,245,238, 94,104,141, 51,135,179, 40, 60, 60, 60,118, 36, 39,167,116,125,247,221,119,145,158,158,110,250,234,171,175, + 80,183,110, 93,248,251,251,155, 85, 70,165, 9,184,187,119,239,122,105,181, 90,179,134, 29, 75,226, 36,132, 96,203,150, 45,208, +233,254,108,213,183,107,243, 61, 38,247,241,193,176,207, 54, 97,209,195, 93, 88,181,106, 85,153,121, 87, 3,117,117, 54, 53,150, +203, 89,174,238,130, 25,159, 42, 62,250,232, 35,118,216,176, 97,120,241,226, 5,134, 15, 31,174, 59,117,234,148, 33, 33, 62,254, +160, 92, 16, 86, 24, 95, 21,198,165,114, 42, 20,138,205, 39, 78,156,192,174, 93,121,186, 36, 50, 50, 18,126,126,126, 22,175,136, +228,180,221,200,142, 94,129,171,135, 31,160,105,143,237,184,122,248, 3,240, 25, 33,210, 70,126,200,172,200,253,172, 68,239,235, +116, 9,251,118, 1,216, 85,228,254,170,182,110,221,218, 11,192,161,252,255, 0,224,199,138,112,230, 17, 97, 88,255, 62,189, 32, +145, 89,225,193,227, 24,180,121,167, 1, 92,156,157,113,247,126, 20,162, 99,211, 18, 9,193,208, 46, 45, 20, 11,180, 90,195,172, +243,183,233, 47,229,112, 18, 79, 79, 79,255,221,187,119,203,138, 88,160, 11,159,113,150,101, 11,183, 11,132,119,101,234,103,129, +200,178,242,180,188,250,205,202, 22, 22, 87,239,109,133,159, 79, 55,216,117,235,142, 95, 78,158,196,163,240, 8,157, 65,195,181, +255,187,203,232,175,226, 36,132,248,247,233,211,231,210,182,109,219,108, 95,190,124,137,243,231,207,195,215,215, 23, 26,141,166, +220, 14,111,113, 78,157, 78,231, 92,100, 88,175,192,181,225, 59,131,193, 80, 80, 24, 5, 15, 98,169,195,137,197, 56,255, 52, 76, + 88, 25,159,172, 18,222,243,114,165, 76,182,251,192,190, 29,150, 17, 15,206,163,126,189,102,176,180, 9,132,192, 39, 32, 53, 45, + 7,233,143,227,240,237,183,139, 48,247,171,153, 56,180,127,143,101, 64,173,122,123, 9, 33, 53,138, 14, 35,254,215,203, 29,132, +142, 60,125,120,235,106, 66, 5,104, 19, 31, 40,164,185, 79,213,131, 62,120,159, 29, 48, 96, 0, 14, 29, 58,132,240,240,240,213, +165,137,172,162,156,132, 98,100,216,249, 93,171, 65, 41,180, 73, 15, 20, 50,237, 83,245,144, 15,251,177, 31, 13,236,132, 43,191, + 47, 71,167,250, 79,195,220,157,209, 59, 61,127,240, 80,194, 34, 85,161,196, 31,170,107,228, 74, 17,177, 21, 10,128, 20, 17, 88, +161,248,159, 15,230,127, 1,193,249,209,225, 71, 22,183,110, 73, 42, 35,176, 0,192,159, 16, 75,181, 92,118,117,227,220, 79,221, +213, 47,194, 37,250,176,203,136,211, 11,116,205,115, 78,184, 74,136,234, 38,165,218,226,231,104, 52,154,220,168,168, 40,213,208, +222,189,209, 60, 40, 8,110, 14, 14,168,225,233, 9,149, 66, 14,185, 76, 90,228,189, 92, 33, 21, 73, 3, 2, 2,208,163, 71, 15, + 72,165, 82,168,213,106, 88, 90, 90, 66, 46,151,151,104,205, 50,183,151, 75, 41, 5,203,178, 8, 11, 11, 67,116,116, 52,108,109, +109,241,199, 31,127,160,125,251,246,127,178,106, 21, 21,103, 21, 49,209, 23,111,248, 11,132, 24,204, 28, 50, 44, 0,207, 19,228, +208,122, 80, 62, 31, 7, 13,105, 0,189,158,131, 94,175,199, 47, 23,141,184, 22,149, 11,163,209, 0,189, 94, 95,234, 53,203,184, +183,140,187,187,251, 32, 63, 63,191,177, 31,124,240,129, 73, 46,151, 35, 55, 55, 23, 26,141, 6,225,225,225,166,174, 93,187,101, +244,232,209,221, 38, 36, 36,132, 82,138, 69, 21,244,211, 74,245,240,240,240,202, 31,158, 77,173,100, 15,162, 80,196, 20,199,208, + 31, 35, 32, 97,243,202,100,245,234,213,224,121, 30,148,210, 82, 11, 73, 71,200,153,175,190, 95, 98,179,112,217,175,176,177,119, +193,185,115,231,248,227,199,143,103, 19, 32,242, 81,120,248,143,239, 1, 71,119, 3,198,138,164, 47, 61, 61, 93,229,235,235, 11, + 79, 79, 79, 8,130, 0,147,201, 84,104,125, 73, 77, 77,133, 86,171,133,189, 69, 6,170, 59,120,130,203, 14, 69,124,216,215,112, +179,124,128, 77, 39, 12,166,134,254,184,243, 47, 48,133,255, 6,224,183,215, 39,130,135,179,171, 23, 24,106, 66, 92, 82, 42,122, + 5,119, 2, 43,179,196,179,151, 41,168, 23, 88,205,237,195,247, 90,184,177,132,195,148, 5,219,199, 2,248,165, 60,186,156,156, + 28,254,193,131, 7,184,123, 55, 79,239, 90, 91, 91,195,194,194,226,149,103,156, 97,152,215,178,104, 21,136,172,239, 87,183,183, + 96,164,185,200,226, 79, 99,195,150,155,168, 23,208, 29,107,174, 94,215,241,137,105, 29,126,208,233, 34,255,211,195, 70,110,110, +163, 4, 65,152, 75, 41,205,232,211,167,143,203,246,237,219,237, 98, 99, 99,113,243,230, 77,204,153, 51, 39,153,231,121,142, 82, + 74, 40,165, 95,191,129,186, 36, 20, 17, 88,111,210,138, 32, 85, 43,241,153,163, 53,233, 41, 97,172,125,185,172,156,103, 41, 6, +122, 80,195, 9, 63, 83, 74, 77,101,157,203, 48,204, 39,123,118,174,118,119,116, 18,208,214,233, 93,196, 39, 26,241,253, 23, 67, +144,154,154,141, 95,214,207, 7, 32,135,145, 99,209,186,237,251,112,118,246,192,200, 17, 35, 93, 87,175, 93,243, 41,128, 31,222, + 22,131, 86,252, 31, 43,247, 19, 66, 78, 59, 57, 57,133,127, 58,114,164,147,175,239, 96, 40,149, 74,236,216,177, 3,219, 87,172, +224,151, 1,253,214, 18,114,118, 20,165,251,203,228,185,242, 63,158,241,163, 71, 59,213,170, 53, 26, 10,133, 2,191, 31,255, 13, +186,132, 45,217,193,205, 97,212,232, 16, 92,165, 7,181,127,126,152,164, 73,165,120, 12, 0, 82, 37,226,165, 64, 82, 49,186,255, +154,192, 42,148, 81, 5,126, 90, 5,223,175, 29, 25,158, 74,229,247,214, 79, 24,232,227, 2, 61, 49, 92, 60,140, 88,189,192, 47, +124,100,100,111,101,210,201, 17, 37,136,172,252,138, 45,120,123,123,227,221, 70,141,208,187, 85, 43, 72, 36, 18, 40,229, 50, 88, + 41, 85,160,124,158, 37,171, 96,232,176,140, 54, 17, 37, 89,159, 28, 28, 28, 32,147,201, 10, 5,150,185,214,172,210, 56, 5, 65, +128, 68, 34,193,221,187,119,209,178,101, 75,120,121,121, 97,215,174, 93,232,220,185,243,159,134, 18, 43, 42,178, 10,132, 86,209, + 97,188, 34, 78,242,229, 58,193,255, 73, 36, 24, 8, 82, 12,245, 64, 72, 16, 56, 14,224, 41,160,215,233, 64, 41, 64, 41, 96, 50, + 26,160,211,233, 10,175,105,206,144,172,155,155,155,119,213,170, 85,231, 77,157, 58,165, 86,189,122,245,145,156,156, 12, 65, 16, + 96, 97, 97, 1,141, 70, 3,107,107,107, 52,111,222,252,217,188,121,243,226, 41,197,200,138, 58,195,191,129, 23, 44, 0,224,228, +201,147,175, 12, 27, 22,124,114,227, 99, 48,236,243,173,144, 75,242,134,150, 10,124,120,202,122,239,182,107,221, 2,151,110, 69, +114,159, 76, 89,174,151,166,222, 92,224, 42, 8, 27, 99,128,196,215,104, 92,144,146,146,130,196,196, 68,244,236,213, 11,219,183, +109,195,243,231,207, 17, 24, 24,136,118,237,218,193,217,217, 25,207,159, 63,199,181, 11,122,232,211,211,144,102,184, 9,181, 85, + 83, 28, 56, 23,165,159,189,202, 16,245, 79,189, 45, 8, 33, 61, 1, 12,177,182,182,174,170,209,104,226, 57,142,219, 13, 96, 55, +128,126, 18,137,164,159, 90,173,118,203,202,202,122,138,188,217, 68, 7,203, 29, 74, 82, 42, 29, 20, 74,107, 8,156, 30, 18,137, + 4, 94, 94,190,160,188, 1,233, 89, 90, 12, 29,208, 3,183,238,222,199,241,179, 87, 56,147, 73,248,201,156,219,202,178, 44,245, +247,247, 71, 82, 82, 18,164, 82, 41, 84, 42, 21, 44, 45, 45, 49,125,250,116,172, 88,177,162, 80,100, 85, 86,104,125, 12,248, 91, +123, 91, 94,249,110,101,158,200, 74,136,139, 71, 98,140, 20, 78, 14, 46,248,105,197,178,220,244,231, 9, 77,127, 5,254,211, 34, + 11, 0, 4, 65,248, 58, 54, 54,214, 89, 34,145,184,114, 28,135,151, 47, 95,226,198,141, 27, 24, 55,110, 92, 98,106,106,106, 91, + 74,105,165,242,168, 84, 42,147, 10, 44, 89, 74,165, 50, 9, 40,117, 56, 49,163,136, 37, 43,163, 12,202, 18,135, 9, 9, 33,213, +124, 61,173, 78,173, 95, 58,209,187,113,211,230,140, 90, 98,157,158,243, 56,161,229,197,243,231,154,143, 91,250,203,167,132,144, + 78,148,210, 39,165,145, 42,164,210,174,205, 90,180,144,128, 38, 66, 34,111,137, 69, 11, 7, 32, 57, 37, 11,233,105,217,144,201, + 44, 96, 48,177,224, 5,130,230, 45, 91,225,183, 77, 59, 81,123,196,112, 86, 46,149,118,124,155,132, 86, 62,230,255,252,243,207, +222, 1, 1, 1,216,184,113, 35,206,110,222,140,143, 50, 51,113,142, 97, 88,147, 84,234,120,212,100, 90, 7, 96,191,185, 60,181, +107,215,198,175,191,254,138, 45, 91,182,188, 24,212, 62,105,239,196, 65,112, 54, 26,209,229,230, 67,216, 87,233, 1,220,124, 8, +251,134, 1,168,193, 73,240,152, 16,188, 18, 14, 42, 36, 36,164, 77,209,239,255, 18,242,215, 54, 44,113,136, 93, 2,160,109, 72, + 72, 8, 45,250, 93, 30,161,218,217,127,244,150, 1,239,250, 4, 85,247, 38,166, 93,203,241, 50,151, 51,204,122,104,148, 63,202, +161, 19, 35, 40, 93, 86, 70, 15,130,178, 44, 11, 43,149, 10, 78,182,182,121,102,126,134, 1, 4, 64, 48, 1,132,207, 19, 0, 84, + 32,168,200,164,105, 65, 16, 32,151,203, 75,116,124,175,168,111, 86, 81,206,236,236,108, 60,123,246, 12, 35, 71,142,132, 90,173, + 6, 0, 36, 36, 36,192,199,199, 7, 18,137, 4,177,177,177,248,253,247,223, 81,181,106, 85, 40, 20, 10, 82,193, 66, 41,104,248, +235, 18, 66,206, 1,168, 27, 31, 31,111,237,230,230,134, 10, 91,180, 4, 10,141,158,192, 96,224,241,232,209, 35,196,197,197,225, +217,211,199,104,156,155, 5, 10, 22,148,210, 10, 89,180, 60, 61, 61,131,252,252,252,214, 44, 88,176, 64,230,233,233, 9, 74, 41, +236,236,108,161,209,104,144,146,146,138,192,192, 64,120,121,121, 97,209,162, 69, 0,176,253,239, 22, 89,197,234, 84,161,208, 42, + 42,184, 62,127,207, 27,105,105,150, 96,217,255,205, 62, 45,199, 71, 75, 6, 0,109, 59,245,145,156, 58,126,212,130, 3,230, 37, +176,236, 60, 73,249,229,104,226, 5, 65, 93,218,255, 47, 95,190,132, 84, 42,197,158,221,187,145,150,152,136,122,245,234,161, 73, +147, 38,120,252,248, 49,110,221,186, 5, 7, 7, 7, 56,121,190,131,115, 79,141,136,136,211,194,198,198, 6, 81, 49,204, 63, 22, + 50,128, 16, 50,162, 67,135, 14,115,126,252,241, 71,103, 87, 87, 87,105,114,114,114,192,202,149, 43,235,173, 92,185,114,252,167, +159,126,234,242,233,167,159,218, 57, 57, 57, 73, 18, 18, 18,252,191,248,226,139,134,132,144,170,148,210, 37,101,113, 90, 88, 88, +217,179, 50, 11, 16, 34,129,173,141, 29, 36,114, 11, 8,156, 4,188, 0, 88,219, 56,225,210,173, 61,248,227, 94,246,168,164, 84, +236, 54,227,185,161, 14, 14, 14, 96, 24, 6, 14, 14, 14,127,178, 84,143, 27, 55, 14,235,215,175, 47, 28, 70,172,172,200,250,126, +101,123, 75,146, 47,178, 18, 94, 74, 64,244, 85,113,120,255,229,140,244,231, 9, 45,223, 6,145, 85,240,142,163,148,226,233,211, +167,208,104, 52,184,112,225, 2,190,254,250,235,228,226, 34,203,197,197,101,132,181,181,245, 87, 57, 57, 57,139,226,227,227,151, +151,199,155, 47,162, 94,237, 12,150, 48,156,104,110,136,135,146,134, 9, 9, 33, 82, 47, 55,229,137, 91, 23,182,250,216,208, 59, + 4,209, 35,129, 71, 89,225, 86, 87,157, 91,119,107, 28,204, 52, 88,245, 77,149, 38,163,166,159, 32,132, 4,148,102,217, 18,120, +190,129,133,165, 21,128, 36,220,188, 17, 90, 40,178, 82,211, 50,161, 55,178,208, 27, 8,116, 70, 6,239,118,232,130, 21,107,182, + 32, 54, 41, 13, 5, 51, 18,223, 22, 16, 66,236,131,130,130, 70,247,235,215, 15,243,230,205,195,233, 31,127, 52,140, 33, 36, 75, + 2,208, 16,158,135, 64, 41, 97,204,112, 98, 47,206,243,195, 15, 63,236, 7, 48,112,193, 56,188,147,158,131,161,238, 61,168,125, +149, 30,121,199,246,157, 74, 1,192, 62,249,244,171, 77,102,112,112, 48, 41, 24, 89,171,232, 8,219,191, 29,146,224,224,224,115, + 33, 33, 33, 40,250, 93,214, 9,214,174, 53,187, 77,255,114,220,194,198,157, 91,145,248, 73, 29,145,150,165,227,102, 68, 24,229, + 49,218,178, 69, 86, 81,124,185,114, 37,110, 69,230, 61,199,158,206,206,152,242,225,135,160, 28,240, 71,120, 4,118,158, 62,141, + 1, 29, 58,192, 34,127,198,159,185,214,167,146,172, 88, 69,173, 89, 21,181, 58,101,100,100, 96,247,238,221,104,210,164, 9,212, +106, 53, 36, 18, 9,234,214,173,139,251,247,239,163, 90,181,106, 32,132,224,192,129, 3,232,221,187, 55,158, 60,121,130,119,222, +121,199,178, 50, 66, 43, 34, 34,194,154, 82,218,186,192,250, 81, 89,232,245,122, 60,120,240, 0, 61,122,244,128,157,157, 29, 60, + 60,182,227,244,137,173, 80, 7,125, 4, 66, 80, 33,161,197,243,252,199,193,193,193, 50, 66, 8,180, 90, 13,148, 74, 21, 44, 44, + 44, 97,101,101, 13,127,255, 0,196,197,197,161,115,231,206,134,168,168,168, 85,241,241,241,187, 42,154,214,192,192, 64,139,204, +204,204,143,170, 84,169, 34,207,239,237, 6, 86,175, 94,125,114, 84, 84, 84,118, 69,173, 90, 5, 2,139, 16, 2,150,101, 11,133, +150,132, 97,224,230,234, 92,184,157,239,159, 70,202,224,202,138, 77,213, 43, 0,192,219,219, 27, 43,214, 30, 98,130,131,131, 49, +126,252,120,152, 76, 38,172, 90,149, 55,201,238,131, 15, 62,128,209,104,196,222,189,121,147, 36, 37, 18, 73,153,102,147, 27, 55, +110,224,230,205,155, 48,153, 76,200,204,204,196,177, 99,199,112,238,252,121,236, 56,112, 6,207,159, 62, 70,221, 0, 31, 12, 31, +254, 49,164, 82, 41, 54,109,218,132,150, 45, 91,254,163, 47, 4,169, 84, 58,104,253,250,245,110, 27, 55,110,204, 56,112,224, 64, +110,179,102,205, 20,203,150, 45,115, 94,177, 98,133,147,193, 96,192,132, 9, 19,146,174, 92,185,162,239,213,171,151,197,186,117, +235,220,170, 87,175,222, 17,192,146, 18,238,167, 5,128, 1, 0, 6,183,109, 98, 35,201,200,214, 66,224, 12,120,250,252, 25, 50, +115, 12, 16,120, 35, 94,196,196, 33, 71,199, 35, 53, 45, 27,117, 27,116,250, 57, 52, 52,116, 38, 33,100, 6,165,244, 72,121,233, + 12, 15, 15,199,149, 43, 87,240,252,249,115, 60,125,250,244,149,255, 70,140, 24,129, 45, 91,182, 84,216,162, 85,178,200, 98, 65, +244,213,112,228,192,213,140,164,199,241,111,141,200,202,127, 7,205,117,115,115,155,235,230,230,166, 60,121,242,164, 77,149, 42, + 85,192,113,156,161,184, 37,171,109,219,182,179,214,175, 95,239, 86,173, 90,181,113, 0,150,255, 27,210,206, 48, 24,177,104,245, +104, 71, 43,249,139, 56, 60, 90,146, 31, 75,144, 5, 52, 89, 64,232, 54, 72, 90,204,126, 54,174,215, 84,187,105, 27,231,141, 64, + 25, 51,100,163,158,188,196,234,213, 43, 48,113,194, 80,252,246,203, 34, 8,130, 4,122, 19, 11,111,223,102,208, 27, 5, 16, 70, +130,122, 13, 26,225,108,232, 5, 72, 25, 96,247,198,213,111,149, 41,139, 82,154, 70, 8, 89,117,224,192,129,207,198,143, 31, 15, + 65, 16,228, 95,173, 94,173, 77, 78, 78,158,143, 10,196,191, 42,129,167,247,234,213,171, 35,167,173, 72,222, 63,113, 16,216,231, +135, 73,218,205,135,176,239, 59,149, 98,207, 66,130,134, 1, 72, 83,151,220,196,159, 47,246,253,118, 8,173, 2, 37, 89,244,187, + 36, 52,244,175,246,141,141,189,221,199, 77,234,250, 59, 78, 25, 63, 70,242, 36, 65,135,189, 85, 62,204,249,125,243, 79, 22, 9, +156,226,231,199, 84,187,172, 34, 23,222,249,251,239,133,191, 23,111,223, 94,226,127,241,125,251,154,221, 51, 43,205,138, 85, 81, + 75, 22, 0,168,213,106,219,142, 29, 59,162,125,251,246,120,255,253,247, 11,125,178,234,215,175,143, 29, 59,118,160, 79,159, 62, +184,125,251, 54,220,220,220, 80,179,102, 77,212,172, 89, 19, 71,143, 30,173,104, 5, 7,207,243, 8, 10, 10, 42,152,117, 88, 55, + 38, 38,198,186,178, 5,169,215,235,145,154,154, 10,123,123,123,200,229,114, 52,109,218, 4,159,125,222, 20,142,110,191, 34,168, + 86, 0,114,115,115, 11,167,191,155,209,216, 6,213,168, 81, 3,201,201,201, 72, 78, 78,134,147,147, 19,220,221,221,225,234,234, +138, 37, 75,150,208,229,203,151, 31, 55, 26,141,171,146,147,147, 43,108,201,114,115,115,107,101,111,111, 63, 75,171,213,202,139, +244,112,229, 78, 78, 78, 7,221,221,221,231,199,197,197, 85,100,141, 77, 24,141, 70, 16, 66, 16,242,212, 29,185, 6,130,172,152, +155, 24,255,158,207, 43,194, 75, 42,149,154,227,208,155, 59,112,224, 64,103, 47, 47, 79,188,140, 10,199,158, 61, 20, 63,254,248, + 99,193,172, 72, 68,230,119, 12, 10,182,219,181,107, 7, 95, 95, 95, 84, 36, 72,166, 32, 8,184,123,247, 46,182, 31, 60, 7, 55, +159, 90,120,241,232, 1,110, 29, 61,140, 42, 78,246,168,221,160, 17, 76, 38,211,107,133,222,120, 19, 48,153, 76, 27,252,252,252, +168,193, 96, 56, 7, 96,197,189,123,247,134,198,199,199, 79, 56,116,232,144,123,191,126,253,226, 14, 31, 62,188, 12,192,198,123, +247,238,141,254,246,219,111,219,115, 28, 87,226,108, 65,150,101,127,251,226,139, 47,218,246,235,215,143,200, 24,147,225,228,137, + 77, 18,142, 51,145, 47,103,108,224, 67, 47,158, 99, 56,206, 68,222, 31,248,133,112,244,247,123,204,168,207, 23,243,245,155, 5, + 35, 44, 44,204,181,123,247,238,223, 2, 40, 83,104, 21, 88,170, 74,179, 80,178, 44,139,161, 67,135, 98,199,142, 29,102,231,123, + 56, 80,205,218,199,242,202,247, 43, 59, 88, 18, 73, 78, 17,145, 85, 29, 71, 14, 92,205, 72,124, 20,247, 86,137, 44, 0, 72, 73, + 73, 89, 11, 96,173,189,189,125,162,133,133, 5,178,179,179,255, 84,255, 8, 33,202,128,128, 0,165, 92, 46, 71,167, 78,157,236, +221,220,220, 34, 25,134, 89, 30, 27, 27, 91,170,226, 40,105,152,176,164,225,196,215,153,117,104,231,132,238, 77, 91, 53,176,122, +104, 51,207, 74, 41,209,221,174, 18,169,180, 38, 0, 50,245, 46, 79, 47, 69, 15,200, 34, 73,138,250,141,218, 53,132,181,196,162, +123,105, 66,139, 97,217, 91,153,233, 25, 93,179,178, 13,184,248, 71, 24, 6, 14,168, 1,189,145, 64, 16, 24,228,228,234, 1, 86, + 10, 6,192, 7, 31, 14, 1, 37, 18,164, 37,198,129,101,217,123,120,251, 48,125,244,232,209, 93,103,204,152, 81, 53, 63,254,149, + 79,126,252,171, 41,132,144, 58,180,156,224,227,101,240, 84, 57,188, 99,246,164,131, 23,214,100, 6, 55,215, 62,106, 24, 0, 0, +176,111, 24,128, 52,169, 20,143, 37, 44, 82, 41,133,182,152, 85,171, 77,209,239,255,152,117,240, 21, 39,248,162,219,102,249,104, +249, 85,243,236,210,166,113,163,207,103,206,152,105,117,255, 82, 40,166,125,179,130,250, 53,234,152,189,246,194, 45, 67,142,133, +111,215,236,228, 71,127,152,171, 47, 0,160,203,187,125, 80, 55,176,201,159,254,108,217, 46, 47,150,228,197,179, 55,144,152, 28, +107,118, 99,155, 47, 14, 74,244,201, 50,103, 74,127, 9,166,239,140,176,176, 48,231,152,152,152, 87, 28,223,125,125,125, 65, 8, +193,213,171, 87,113,229,202, 21, 12, 28, 56, 16, 18,137, 4, 82,169, 20,231,206,157,171,144, 53,166,136,117,233, 46,165,180, 13, + 33,164,179,167,167,103,137,179, 13,205,225,210,106,181,200,204,204,196,137, 19, 39, 80,163, 70, 13,124,255,253,247,112,119,115, +193,204,153,147, 32, 8, 2,178,178,178,192,243,188,185, 22, 45,161,192, 90, 36, 8, 2,146,147,147, 81,181,106, 85,172, 92,185, + 18,203,150, 45,251, 54, 46, 46,238, 80, 69,211,232,237,237,109,203,243,252,151, 61,122,244,232,216,171, 87, 47,116,238,220,249, +149,255,183,109,219,102,181,119,239,222,249, 94, 94, 94, 93,140, 70,227,130,196,196,196,100,115,120,127,253, 53, 47,252,146,186, +217, 92, 76,235, 87, 5,131,199,110,194,146, 37,251,160, 80, 40, 94,105,120,231,205,155, 87,166,136, 17, 40,245,147,165, 92,138, +155, 52,245, 7,231,249,243, 79,227,244,233, 36, 48, 12, 3, 55, 55, 55, 48, 12,131,103,207,158,129, 97, 24,248,248,248,128, 97, + 24,196,198,198, 22,248, 4,166, 67,103, 94, 44, 67,134, 97,160,211,233,240,242,197,115,196, 68, 69,194, 50, 43, 1, 78,214,106, +164,135,223, 69,221,225, 35, 10,227, 63,253,195, 61,220, 45, 0,182, 20,217,245, 3, 33,196, 64, 8,121, 31,192,126, 74,105,129, + 69,227,219,252, 79,137,104,214,172, 89,253, 25, 51,102, 72, 11,194,109,184,123,127,199, 25,141, 70, 1, 0, 2,234,182,126, 69, +237, 63,126,252, 24, 75,150, 44, 65,110,110, 46,100,230, 4,186,203, 23,173, 5, 51, 12, 75, 18, 97, 21, 17, 89, 0,224,224,227, +249,243,213,155,231,248, 59, 81,107,180,247, 30, 30, 83,197,191, 96,192, 24,222, 94,145, 85,220,178,229,233,233, 57, 87, 16, 4, + 74, 41,157, 93,228,221,170,240,246,246,190,112,242,228, 73, 7,142,227,240,211, 79, 63,217, 38, 36, 36,216,182,110,221,122, 26, +128, 82,133, 86, 73,195,132, 37, 13, 39,162,200,172, 67,133, 66, 97, 95,214,235,163,248,172, 67,158,135,191,181,149, 45,210, 17, + 3,189,163,169,126,134, 3,151,118, 42,126,196,109,247,232, 6,129, 22,188,169, 42,147,101,128,135,218, 22, 2,165,254,165,118, + 78, 77,166, 99,183,111,222,234,228,237, 85,131, 61,116,228, 60,122,246,238, 7,189,158,129,206, 68, 64, 88, 41, 8, 43, 67,157, +186, 13, 80,179,118, 93, 80, 0, 55,174, 93,226, 12, 38,211,169,183,169,236,221, 91,126, 62,208,189,229,103,203, 65, 5, 90, 66, + 28,173,170,189,123,247,158, 15,224,243,242,120, 92,222,249,124,160,107,243, 60,158,162,113,180,190,248,108, 52,194,175, 73,109, +206,223, 92, 40,235,220, 12, 33,201,167, 9,212,202,255,205, 58,148, 50,149, 15,205,241, 95, 17, 92,102, 9, 45,111,111,111, 91, +103, 75,245,175,159, 14,255,216, 42,250,206,101, 36, 68, 92,197, 31,231, 35,211,119,238,221,151,150,155,154, 52,188, 2, 34,171, +112,152,207,193,181, 10,124,107,253, 89,104, 41, 45,157, 0, 0,190,181,154,128,181,176,169,232,144,199,159,172, 89,149, 17, 89, + 69, 95,216, 37,197,208, 26, 53,106, 20,214,175, 95,143, 22, 45, 90,192,207,207,175,240,101, 95, 81,171, 89,113,235, 82,101,102, + 27, 22, 69,118,118, 54,124,124,124,176,110,221, 58,220,187,119, 15, 86, 86, 86, 24, 56,112, 32,178,179,179, 11, 5,150,185,206, +240,148,210,199, 39, 79,158,108,220,191,127,127, 42,149, 74, 73, 70, 70, 6,108,109,109,177,114,229,202,220,248,248,248,144, 74, +136,172,126, 50,153,108,210,128, 1, 3,216,128,128, 0, 36, 38, 38,194,218,218,218, 68, 8,145, 2,128,173,173,173, 73,165, 82, + 97,244,232,209,168, 87,175, 94,171, 41, 83,166,180,240,240,240, 88, 25, 27, 27,187,169,172,186, 68, 8, 41,108, 80,135, 47,127, + 0,131, 33, 79,168,172, 90,181, 10,249,190,110,255, 27, 34,136,138, 2,204,152,201, 98,105,105, 9, 63, 63,191, 18,203,190, 85, +171, 86,184,113,227, 70,222,208,164, 68, 2,103,103,103,252,241,199, 31,102,205,164, 42, 8, 4, 25, 22, 22,134, 90,190,142,184, +119,250, 36, 28,213, 82,212,115,119,133,103,171, 54,136,140,140,252,199,172, 89,249,177,169,198, 0,232,144, 95, 7, 55, 0, 24, + 85,100,123, 37,165,244,231,138,112,114, 28, 71, 25,134, 33, 47, 95,190, 52,170,213,106, 98,111,111, 47, 81, 40, 20,208,235,245, +133,130,235,241,227,199, 56,114,228, 8, 98, 98, 98, 96,111,111,207,216,216,216,192,104, 52,166,155,195,239,239,239, 15, 87, 87, +215, 87, 28,223,135, 15, 31, 94, 41,145, 53, 20, 8, 90,255,221,130, 42, 10,134,181,169,229,216, 5, 79, 31, 60,211, 49, 6, 40, +255, 63,136, 44, 0, 72, 79, 79, 95, 11, 96,109,193,182,147,147,211, 48,150,101,103,218,216,216,216,156, 59,119,206,214,201,201, +137,108,218,180,201, 52,123,246,236, 12,150,101,211, 9, 33, 75,255,121,113,136,136,148,204, 40, 31,169,157,187,112, 71, 71, 47, + 77,120, 57,173,102,186,180,134, 19,169, 29,132,222, 73,247, 47, 14,227,162,154, 39,198, 39, 48, 20, 66, 68, 25,239,224, 13,211, +102,204,251, 50,242,193, 45,111,165,181, 18,163, 70,207, 64,200,241,179, 32,140, 20, 23, 46, 93,133,193,200, 35, 37, 45, 19, 3, + 62, 24, 4, 79, 55, 71, 68, 92, 57,145,204, 9,194,202,183, 75,100, 11, 43, 58,245, 28,102,167, 80,169,243,239, 9,143, 45,191, + 76, 2,195, 44,199,156, 57,115, 16, 20, 20, 52,150, 16,242,117,121,113,180, 8, 17, 86,212,105,243,129,157, 76,145,199, 67, 5, + 30,235,118, 79,203,143,163, 53, 17, 43,215,238,173, 83,219,247,233, 87,101,197,209,122, 91, 68, 86,209,239,114,133, 86,149, 42, + 85, 20, 22, 82,140,180, 87,201,166,124,250, 97, 47,167,164,168,112,196,220,191,149, 55,188, 96,212, 26,227, 35, 35,252,204,184, +104,135, 98,241, 59,104, 89, 67, 87, 58,157, 9, 21,229, 44,104,112,139, 91,179, 42, 34,178, 74,226, 44, 42,182,138,198,205,242, +242,242,194,252,249,243,203,141,163, 85, 66,222, 11,246,119, 6, 80,183, 64,108, 33,207, 25,190,179, 57, 51, 13, 75,227,116,114, +114, 66,106,106, 94,132,132,182,109,219,162,109,219,255,205,103, 48, 26,141,133, 86, 44, 43, 43,171, 63, 89,180, 74,226, 84,169, + 84,211,246,237,219,247,241,165, 75,151,250, 79,158, 60, 89,218,190,125,251, 2, 49,167,161,102,172,237, 86,156,147,231,249,209, + 39, 78,156, 96, 5, 65,192,186,117,235,112,227,198, 13,170, 86,171,103,169,213,234, 21, 42,149,138,215,106,181,163, 70,140, 24, + 49,232,171,175,190, 98, 90,181,106,133,203,151, 47, 51, 85,171, 86, 29, 2, 96, 83,121,121,191,122,245, 42, 24,134, 1,151,246, + 2, 99,167,237,132,133, 74,130, 7, 15, 30, 32, 45, 45,237, 79, 65, 76,205,185,159, 69, 45, 37, 5,159, 86,173, 90, 21, 14, 67, + 54,109,218, 20, 44,203,226,246,237,219, 37, 14,195, 22,227,164, 14, 14, 14,133,245, 67, 38,147,225,236,217,179,248,230,155,111, +224,109,111,139,244,251,247,224,218,246, 93,116,252,120, 4, 6, 14, 28, 8,150,101, 97,111,111, 95,104,249, 45, 47,239,175,249, + 66, 40,202,249,113,173, 90,181,134, 68, 68, 68,120,214,169, 83,199, 45, 44, 44,172, 93, 80, 80,144,207,189,123,247, 10,182, 21, + 48,195, 55,167, 40,231,245,235,215,247,172, 88,177, 98,244,208,161, 67,101,130, 32,240,209,209,209, 38, 0,196,213,213,149,189, +126,253,186,112,232,208, 33,104,181, 90,120,122,122, 50, 30, 30, 30,228,212,169, 83,194,253,251,247,175, 82, 74,103,152,147,119, +158,231, 95, 9,227, 80,240,123,219,182,109, 21,126,222,171,212,244,255,190,125,235, 0,175,148,184,219,136,143,141, 2,159,233, +100, 60,114,224,176,190, 34, 34,235,111, 40,163,191,147,115,222,163, 71,143, 60,244,122, 61,228,114, 57, 86,173, 90,101,156, 63, +127,126, 68, 74, 74, 74, 75, 90,194,140,242,226,156,149,156,117,152, 86, 6,231,159,102, 29,102,166, 34,228,192,193,235,141, 45, +123,111,192,216,184,228, 66,199, 70, 74,136,253, 62,151,192,150,234, 38,117, 98,153,163,115,153,108, 94, 19, 82, 90, 58, 41,165, + 6, 66, 72,191,222,125, 62, 56,179, 99,199,118,203,217,115,231,226,143,171,247,144,154,145, 3,129,178, 16, 8,193,204,153,179, +225,234,104,143,172,184, 71, 26,189,209,216,187,248, 82, 60,255,245,114, 39,132, 25,119,234,208,166,229, 12,129,144,155,248, 80, +193,102, 71,169, 7, 15,236, 45,233,215,175, 31,246,237,219,135,176,176,176, 53,165,137,172,162,156,148, 50,227,238,157,219,185, +156, 0,130, 54,249,161, 66,146,243, 84, 61,228,195,222,146,129, 3, 7, 98,255,145, 75,216,113,248,233,234,237,135,232,225,183, +185,195, 82,169,200,240, 86, 18,132,181, 12,172,230,209,170, 65,109,165,132,215, 34,230,126, 20,210,114,117, 56, 21, 30,157,193, + 80,166,210,177,117,242, 94,144, 50,188,120,241,232, 79,255,101,100, 40,243, 27,244,138, 45, 43,197, 48,204, 43,214,172,215,177, +100, 21, 77,167,139,139,203, 43,203,185, 20,109,184, 11,124,128, 42, 17,218, 97,218,139, 23, 47,172, 95,188,120, 1, 74, 41,174, + 94,189,106,221,180,105,211,105,175, 99,205,154, 52,105, 82,161,213,170,248,119, 73,251,202, 67,190, 83,250, 50, 71, 71,199,221, + 83,166, 76, 25,219,180,105,211, 78,115,231,206, 37, 0,216, 74, 86, 64, 78, 16, 4,132,134,134, 98,223,190,125,188,209,104, 28, + 25, 23, 23, 87,212,215,225, 39,119,119,247, 83,125,250,244,217,244,240,225, 67, 54, 34, 34, 2,230, 8, 58,173, 86, 11, 63, 63, + 63,112, 28,135,133, 99,189,144,157, 93, 7, 28,199,129,231,121, 88, 88, 88,188,178,206,165, 57,229,196, 48, 12,120,158,255,147, +208,186,122,245, 42, 88,150, 69,203,150, 45,113,235,214,173, 66,139, 86,121, 22, 40,163,209,248,194,197,197,197,101,222,188,121, +133,233, 74, 78, 78,198,201,147, 39,209,236,157,230, 8, 28, 57, 10,113,113,113, 88,186,116, 41,220,221,221,241,253,247,223, 35, + 45, 45, 13, 28,199,253,221,230,244,174, 17, 17, 17,158, 31,126,248, 97,210,189,123,247, 60,143, 28, 57, 98,219,189,123,119,139, + 15, 62,248, 32,233,222,189,123,158,132,144,230,168,160, 19, 52,207,243,211, 9, 33,199,191,255,254,251,105,159,127,254,121,211, +161, 67,135, 74,165, 82,169, 16, 27, 27,203,109,223,190,157,248,249,249, 49, 50,153,140,156, 56,113, 66,184,118,237,218, 21,142, +227, 22, 82, 74, 47, 84,196,226, 92, 84,100,177, 44,107,150,200, 42,142, 9,206,138, 33, 86, 76,114,203, 21,171,230, 51, 1,190, +158,198,205,219, 79,190,188,112,249,209, 19, 86,207, 77,248, 21,120,130,255,135, 96, 89,118, 87,173, 90,181,134,141, 27, 55, 78, +213,185,115,103,197, 87, 95,125,149,153,157,157, 93,162,200, 42,229,185,252,203,103, 29, 2,248,101,250,228, 35, 19,190,168, 51, +172,218, 39,174, 85,112, 58, 55, 9,233, 18,150,177,182,101,208,192,135, 69,118,202, 99,167,195,103, 54, 62, 67, 57,113,217, 40, +165,215, 9, 33, 29,106,215,169,191,119,225,247, 11,157,103, 77,157, 34,221,123,228, 24, 40,103,196,213,115,231, 96, 41,227,233, +253,155,167, 19,245, 70, 67,175,183,113, 9,158,184,139, 63,237, 32,132, 28,180,183,183,191,243,241,208,161,126,181,106,125, 0, +181, 90,141, 61,123,246, 96,203, 79, 63,241,203,128,254,107, 9,185, 53, 42, 47,166, 94,169, 72,188, 92,200,115,123,196,199, 31, +251, 55,104,240, 9,212,106, 53,118,239,222,141, 77,203,150,153,205,243, 31,183,102, 21, 68,134, 15,201,255, 54, 35,142, 22, 67, +178,175, 60,138,206,185,250, 40, 58, 7, 2,165, 2,165,122,134,193,203, 92,163,241,251,200, 39, 49, 39, 42,153, 16, 8,130,128, +111,191, 27,247, 38, 51, 87, 40,126, 42, 59,165,187,132, 70, 34,166,232, 26,105,229, 45, 40, 13, 0, 38,147, 41,198, 76,250, 5, +222,222,127, 90, 3,117, 65,101,211, 90, 48, 28,104,174,200, 50, 55,142, 22, 0,164,164,164,196, 3,152,229,230,230,182,173, 83, +167, 78, 35, 0,196, 86,178,140,214,181,105,211,102, 36, 0,150, 16,178, 38, 54, 54,246, 79, 14,165,113,113,113,145, 30, 30, 30, +139,125,125,125, 11, 23,154, 46,139, 83, 16,132,167,117,234,212, 49,150, 84, 22,165,109, 11,130, 80,110, 25,101,100,100,160, 73, +147, 38,127, 90,211,146, 82,138,232,232,232, 2,139, 83,225,189, 47, 75,192,229,228,228,140,250,236,179,207,214, 74,165, 82,111, + 0,164, 64,228,242, 60,207,254,252,243,207, 74,158,231, 89, 0,132, 97, 24, 78, 42,149,234,246,237,219,199,113, 28,247, 66,175, +215,143,250,155,223, 17,187, 73,222, 82, 12,185, 17, 17, 17, 1,249,150,172,152,176,176,176,219, 59,118,236,112, 2,176,179,146, +117,243, 2,128, 11,132,144, 86,171, 86,173,154, 62,106,212,168, 38, 3, 7, 14,148,180,109,219, 22, 33, 33, 33,124,104,104,232, + 85,173, 86,187,160, 34, 2, 43,191, 44, 51,189,188,188, 10, 5, 87, 57,207,114,153,142,188, 14, 62,138, 21,131,198,184, 43,215, + 45, 56,153,147, 18,103,184,100,202, 49,204,216, 8,132,225,255, 49, 18, 18, 18, 38, 19, 66,102, 47, 93,186, 52,174, 94,189,122, + 10,153, 76,102, 48, 87,100,253,141,214, 3,142, 16,210,237,199,142,125, 15,182,153,249,153,111,199,118, 45,213, 94, 85,156, 61, +238, 71, 37,226,241,229,144,220, 59,135,191,123, 78,245,233, 61, 41,165,156, 25, 92,215, 8, 33, 53, 38, 77,153, 84,176,168,116, +221,246,167, 14,208,255, 71,139, 74,127,187,120,241, 98,191, 90,181,106, 97,207,158, 61, 56,181,117, 43, 6,164,164,224, 44,203, +178,140, 76,230,112,216,104,252, 1,230, 5, 46,254,118,201,146, 37,254, 65, 65, 65,216,181,107, 23, 78,108,218,132,254,149,227, + 41, 13,141, 1, 56, 21, 52, 79, 0, 30, 2,104, 8, 64, 5, 64,143,188,165,157, 28,139, 28,159,154,255, 95,193,255,231, 1,252, +149,142,176,229, 71,134, 47,142,123,143,158, 53,124,211,169,208,106,181,105,126,126,126, 21,154,115,109, 50,153,202, 28,195,229, + 56, 46,166, 90,181,106,102, 91, 45,204, 17, 69,169,169,169,141,254,194, 23,196,107,249, 98,189,210,136, 8,194,115, 55, 55, 55, +161,160,209, 47, 73,132,149,180,143, 2,207, 42,114,157,248,248,248,135, 0,190,168,108, 58, 99, 99, 99,247,194,140, 69,163,205, + 61, 14, 0,210,210,210,222,248, 98,190,132,210,216,175,190,250,170, 66, 2, 27,148,198,150, 81,214,247, 0, 52,253,183,191,101, + 11,150,222, 33,132, 48, 97, 97, 97, 35,242,135,183, 79, 3, 88,147, 31,209,251,117,249, 11, 5,215,186,117,235, 38, 80, 74,145, +149,149,181,172,162, 2,171,176,247,156,152, 24,242,166,242,158,150,104,248,125,251,154,152,119,181, 25,198, 9,235,115, 12,155, + 32,162,160,204,116,206,206,206,191, 13, 30, 60,184, 25,128,141,175,203, 87,210,112,226, 27, 72,227, 51, 66, 72,189,179,147,190, +249,248,172,173, 85, 48,120, 73, 0, 12,204, 97, 24, 82, 67, 0,252,106,142, 85,188,104,126,145, 23,166,100,201,255,167,114,206, +143,127, 53, 97,216,176, 97,152, 61,123, 54, 78,252,240,131,113, 12, 33,153, 82,128, 30,207,235,104, 50, 4,152,106, 46,207,144, + 33, 67, 48,123,246,108, 28, 93,184,176, 82, 60,229,192,137, 16,114, 4, 0,166, 77,155, 54, 99,254,252,249,118,211,167, 79,175, +187, 96,193,130,239,243,183,195, 11,254,207, 47,211,238,211,167, 79,175, 93,228,255,108, 0,215,255,226,251, 89, 98,100,248, 87, +122,236,111,250, 3,160,131,200, 41,114,138,156, 34,167,200, 41,114,138,156, 34,231,107,126,130,243, 36, 75,233,223,165,253, 46, +178, 15,255,196, 71, 34,246,221, 68,136, 16, 33, 66,132, 8, 17,255, 81,171,220,145,215,249,255, 13,166,163,192, 71,171,168,165, +116, 29,144, 55,221,189, 67, 41,166,212,138, 4,142,236, 80, 9,179,239,105,145, 83,228, 20, 57, 69, 78,145, 83,228, 20, 57,255, +127,113,150,199, 93,202,249,193,132,144, 35,148,210,238,165,125, 23, 8,171,226,191,139,236,123, 99,110, 7, 37,228,101,100,105, + 62, 90,226,208,161,200, 41,114,138,156, 34,167,200, 41,114,138,156,255,137,161, 67, 0,116,218,180,105,211,255,109, 67,135, 0, +220, 0,140, 44,250, 49, 99,232,112, 15, 27, 27, 11,107,185, 92, 45, 3, 0,131, 65, 99,244,240, 64, 22,208,247, 31, 91,240, 86, +196,127,214,180,235,146, 47,234, 19,223,228,177, 34, 68,136, 16, 33,226,255, 13,146, 11, 44, 85, 0,146, 1,144,252,109, 67,254, +119,114,126,219, 81,252,247, 43,255,255, 85,160,148,198, 3, 40,113,182,188,164, 52,145,149,146,162,118,148, 72,210,253,121, 94, + 87, 19, 0, 36, 18,230, 65, 74,138, 93,164,163,227,158,148,202,136, 45, 39, 23,151,155, 82,150,245, 48,231, 88, 19,207,199,166, + 36, 38,190, 18, 58,158, 2,255,121,129,103,174,136,120, 29,177,241,119, 8, 21, 39, 39, 39, 23, 23, 23,151,247,172,173,173,223, +201,200,200,184,150,156,156,188,191,180,117, 15, 9, 33,243, 9,193,148,252,223,139, 40,165,211,203, 72,187,217,199,150,112,174, +159, 90,173, 30, 75, 8, 9,202,207,127,152, 70,163, 89, 69, 41,125,244,255, 80,216,170, 0,244,146, 72, 36, 67, 28, 29, 29,155, + 36, 36, 36,124, 69, 41, 93, 90, 73, 46, 9,128, 73,182,182,182, 3,109,109,109,171,166,165,165, 61,201,202,202,218, 5, 96, 9, +165,180,220,169,210, 95,143,119,127,167,109,231,182,179, 66, 79,132,126, 59,119,121,220,229, 63,253, 63,217,221,161, 83,199, 22, +179, 67, 15, 95,154, 55,125, 69,108, 90, 5,211,198, 0, 40, 8,154, 39,228,247, 90,233, 27,190,151, 82, 0, 61, 0,180, 5, 16, + 10,224,176, 57,249, 46,133,171, 25,128, 25,249,105, 94, 66, 41, 61,251, 47,175, 71, 22, 46, 46, 46, 11, 1,244,144, 72, 36, 17, +177,177,177, 35, 41,165, 49,255,112,154, 36,200,155,230, 31,132,188, 48, 28,215,205, 9,225, 96, 14, 28, 29, 29,187, 75, 36,146, +177,249,161, 93, 86,165,164,164, 28,249,183,150,141, 66,161, 88,230,234,234,250,137, 86,171,213, 16, 66,104,209,120,143, 28,199, +197, 36, 39, 39, 55,122, 11, 95,109,215,255,229,207,203,200, 18,196, 87,233,113,180, 98, 99, 97, 45,145,164,251, 39, 37,220, 27, + 16, 23,127,183, 63, 0,184,187,213,221,229,236, 90,103,103,108,172,220,216,184, 99, 31, 75,169, 90,178,138,101,165,245,117, 6, +189,163, 84, 34, 77, 49,114,166,219,140,129,142,141,127,176,175,196, 96,139, 82,150,245,120, 30,121,214,153, 51,166, 65,170,116, +135, 84,229, 93,106,130,221,221,221, 43,149, 81,123,251,234, 86, 70,133,114,130, 84,202,118, 20, 40, 23, 68, 5,128, 33,210, 48, +142, 55,157,145,233,245, 63,166,165, 69,101, 87,246, 38,214,116, 36,174, 20, 24, 8,130,142,160, 56, 69,128, 29, 15, 82,104, 66, + 5, 10,193, 44, 17,241,154, 98,163,232,185, 75, 41,165,147,223,116,101,242,244,244,180,123,255,253,247,151,125,243,205, 55, 42, + 75, 75, 75,242,226,197,139,206, 83,167, 78,109,237,233,233,249, 69, 76, 76, 76, 92,113,209, 71, 8,166, 8, 2,101, 0,128, 97, +200, 84, 23, 23, 23, 53,203,178,127,138,109,196,243,188,154, 16,140, 19, 4, 74,242,143,157, 66, 8, 89,110,142, 96, 84,169, 84, + 31, 52,105,218,252,139,133,139,151, 88,186, 56, 59, 91,112,188, 96,124, 22,253, 92, 61,107,218,228,166, 42,149,106,185, 86,171, +221, 94,137,135,134,176, 44, 59, 64,161, 80,116, 7, 80, 43,127,247,125,189, 94,127,132,231,249,157,230, 54,232,174,174,174,231, + 89,150,173, 82,145,107,243, 60,255, 34, 33, 33,161,101, 37, 31,246,126,222,222,222,191,182,105,211, 70,221,164, 73, 19,200,229, +114,204,158, 61,123, 18,128,165,230, 8, 42,181, 90, 61,192,194,194,162, 90, 78, 78, 78,148, 86,171,221, 43,151,203, 59, 44, 95, +190,220,171, 69,139, 22, 86,137,137,137,132,101, 89,151, 35, 71,142,124,244,211, 79, 63,117, 38,132,180, 47,175,145,203,140,162, +179, 20, 61,106,181,202,140, 58, 59, 11, 64,215,226,255,115, 58,229, 16,202,122,117,215,210, 91, 47, 81,129,169,245,132, 16, 70, + 42,149, 46,119,117,117, 29,166,211,233,116,200,139,189, 70, 93, 92, 92, 10, 27, 28, 0, 48, 24, 12,233,233,233,233, 1,149,184, +143, 1, 0,134,219,218,218, 14,251,242,203, 47,237,186,118,237,138,173, 91,183,126,186,126,253,250,116, 66,200,111, 0,126,161, +148, 62,172, 32,237,148,132,132,132,110, 82,169,148,120,121,121,177, 0,206, 86, 32, 61,254, 0,102,230, 55, 54,171, 40,165, 60, + 33,164, 29,144,247,188, 3, 88, 84, 32,220, 88,150, 93, 21, 16, 16,240,222,253,251,247, 87, 83, 74,191,173,236,179,238,234,234, +186,118,229,202,149,253,123,246,236,201, 38, 39, 39,123,212,171, 87,111, 27,128, 86,111,160, 65,250, 88,161, 80, 76,172, 91,183, +110,224,195,135, 15, 35,179,178,178,150,228,223, 79, 90,198, 57,158, 0, 58,216,218,218,182,159, 57,115,166,101,247,238,221,177, +110,221,186,110,235,215,175,207, 33,132,156, 1,112,250,117, 69,160, 68, 34, 25, 27, 19, 19,227, 72, 41,133,155,155,219, 88,148, +179,184,249, 63, 5,150,101,151, 15, 24, 48, 96,216,182,109,219,212,207,159, 63, 87,123,120,120, 20, 6,207, 38,132, 84,186,253, + 20,241,218, 22,173,117, 5,130,203,172, 56, 90,114,185, 90,198,243,186,154,113,241,119,251,183,110,243,179, 13, 0,156, 63,247, + 89,127,103,215,218, 97,114,185, 58, 82, 97,173,220,215,167, 71,135,250,125,187,183, 33,158,110,206,136,137, 79,114,249,101,199, +137, 46, 71, 78,156,221,135,188, 0, 98, 37,130, 51,166, 65,101, 60,141,135, 23,127,130, 99,219, 56,172, 56, 26,131,203,119,158, + 65,147,153,130, 42,174, 42, 44,158,208, 9,174,118,234, 74,101,210,210,197,191, 29,163, 84,239,252,240,131,193, 54,239,245,170, + 37,245,113,117, 5,165, 10, 68, 70,229, 52, 63,118,242,108,227,189,187,183,143,181,116,241, 31,144,147, 24,105,246,203,173,161, + 59, 81,229, 26,209, 75,194,146,143, 90, 53,173,221,254,131,110,173,152,192, 90, 53, 16, 17,126,191,211,193,223,175, 46, 14,116, + 97,206,112, 60,221,108, 33,195,129,155,113,165, 7,244, 43, 73,112,116,236,216,177,149, 66,161, 48, 22, 61, 78,175,215,203, 8, + 65,179,202,136,141,130,107, 24, 12,122, 70, 42,149,131, 97,200, 23,117,235,214,173,149,146,146,114,150, 16,242,107,108,108,197, +172, 5,159, 19, 34, 79,151, 72, 26, 50, 10,133, 27,111, 48, 56, 0, 0,145,203,211, 61,237,236,234,204,156, 49,195,146,101, 89, + 33, 53, 53, 21, 26,141,134,140, 24, 49, 66, 25, 21, 21,213, 7,192, 79,229,164, 17,235,215,175,247,119,115,115, 51, 20,255, 47, + 62, 62, 94,222,179,231,123,149,121,105,251, 55,123,167,197,196, 19, 39,142,215,202, 74, 75,215,173, 95,186,246,166, 73,169,214, + 87,173, 21, 32, 93,181,110,147,205,200, 97,131, 62, 35,132,220,166,148, 70, 86,128,211, 91,165, 82,237,251,225,135, 31,130,218, +181,107, 39,117,118,118, 70, 98, 98, 34,238,223,191, 31,244,251,239,191,247,218,180,105,211, 36, 66, 72, 31, 74,169, 57, 17,220, +253,206,108,254,213,217,194,222, 1,188,201, 4,247,186, 13, 10,227,155, 61,254,253, 36, 56,163, 17,130,201,132, 90,221,123,229, +153,101, 4, 1,129,129,129,149,138,186, 75, 8,113,175, 93,187,246,150,239,191,255, 94,166,215,235,113,245,234, 85,156, 61,123, + 86,136,143,143, 95, 80,158,200, 34,132,156,156, 59,119,174,103,203,150, 45,173, 82, 82, 82,192,243,188,227,129, 3, 7,198, 54, +104,208,192,218,203,203, 75,190,121,243,102,228,228,228,128,227, 56,251,106,213,170,217,127,240,193, 7,134,205,155, 55, 79, 2, +176,176, 52, 75, 86, 86, 20,157,149, 64,170,117, 9,104, 56, 4, 9,228,120,151, 47,186,186, 29,179,174, 78, 10, 45, 91, 93,171, + 87,183,170, 86,211, 98,170,165,117, 29,251,172,216,211, 83,187, 86,175,190,254, 88, 84,249,157, 33, 66, 8,195, 48,204,242, 62, +125,250,124,184, 99,199, 14,245,253,251,247,213,181,106,213,130, 32, 8,133, 17,248, 11, 2,206,250,249,249, 85,230, 62, 46, 24, + 61,122,244,212,254,253,251,163,110,221,186,133, 65, 81,231,204,153,131,169, 83,167,218,157, 63,127,126,210,246,237,219, 39, 17, + 66, 22, 82, 74,167, 85,164, 45, 47,218, 94, 86, 48, 89, 95, 63,125,250,180,223,190,125,251, 6, 77,153, 50,197, 15,192, 56, 0, +179, 83, 83, 83,219, 0,128,131,131,131, 28,192, 89, 66,200,199, 95,126,249,229,152,105,211,166,161, 91,183,110,179, 9, 33,223, + 85,198,202, 71, 8, 97, 29, 29, 29,187,245,236,217,147, 53,153, 76,176,176,176,128,201,100,170,254,154, 2,139, 0, 88, 57,106, +212,168, 49,163, 71,143,134,157,157, 29, 76, 38,147,255,142, 29, 59,214,207,158, 61,251, 29, 66,200,240,146,210, 74, 8, 25, 50, +102,204,152,247, 7, 15, 30,140, 70,141, 26, 65, 34,201,187,141, 63,252,240, 3,230,205,155,103,121,242,228,201, 94,155, 55,111, +238, 69, 8,217, 75, 41,173,116, 44, 52, 65, 16, 32,145, 72,240,242,229, 75, 56, 59, 59, 43,236,237,237, 79, 16, 66,214,165,166, +166,238,255, 23, 89, 77, 22, 13, 24, 48,224,195,109,219,182, 89, 2,192,226,197,139, 49,113,226, 68,184,184,184,192,210,210, 82, + 84, 59,255, 18,139, 86,241, 56, 90,149, 10,239,160,209,104, 26, 76,255,252, 35, 48, 76, 94,175,177, 70, 85,111,204,159, 49,146, + 28, 60,114,162, 65, 89,231, 73,149,238,120,120,241, 39, 40,188, 38, 64,111,226,112,229,206, 83,156, 90,220, 25, 0,224,223,117, + 38,244,198,246, 5,202,208, 94,174, 82, 45, 50,240,252, 31,112,117,189,138,232,232,228,242, 68,150,147,171,203,145, 53,107, 22, +170,130,170, 7,192,200,153, 16,155, 20, 11, 66, 20,240,244,176,194,199, 67,186, 74,219,180,113,119,252,250,235,181, 33, 22, 78, +254,189,115,147, 35,203, 13, 24, 26,224, 68, 54,182,106,224,215,255,131,224,150,138, 58, 65,181, 33, 83,168,254, 39,192, 26, 53, + 66,195, 70,141,152,105, 57,217, 29,175, 93,191,217,113,207,201, 43,250, 0, 39,178,235, 97, 50, 29, 90, 86, 57, 20, 21, 28,227, +199,143, 71, 65,239,187, 0,137,137,137,248,253,247, 51, 37,158, 99,110, 89, 23,189,198,119,223,125,103,149,158,158,222,117,195, +134, 13,239,186,185,185,125, 23, 31, 31,127,209, 28,146,143, 8,169, 2,133,162,253,176, 37, 75,132,250,239,189,199,218,186,186, + 50, 2,207,147,184, 39, 79, 28,150,254,244, 83,219,180,199,143, 85,185,246,246,105,233, 90,173, 38, 50, 50, 18, 74,165,146, 72, + 36,146,198, 37, 40,252, 68, 66,200, 34,134, 33, 83, 9, 33, 80, 40,148,145,163, 71,143,190,149,255,119,149,195,135, 15,171,123, +244,232,161, 1,240, 60,207, 28,174,244, 96, 89,198, 63,207,129, 16,139,204, 17,152, 22, 22, 22,159,127,251,253, 66,139,172,180, + 12,173, 49, 55,215,228,100,109, 73,136,165, 21,155,149,153,157, 29, 27,159,172,159,249,213, 60,118,212,199,131, 63, 7, 48,214, + 92,145, 85,175, 94,189,107,251,246,237,115,118,112,112, 64, 70, 70, 6, 82, 83, 83,113,237,218, 53, 8,130,128, 62,125,250, 40, +154, 55,109,210, 96,198,204, 89,151, 9, 33,239,152, 35,182, 44,236, 29,177,184,101,253,188,198,250,121,106, 97,249,172,235,215, +189,240,152,121, 49,153, 0, 0,165, 82,249, 58, 75, 72,189,211,190,125,123, 25, 0, 12, 31, 62, 60, 43, 59, 59,123, 62,128,109, +180,140,160,170,249,152, 52,107,214, 44,143,170, 85,171,250,108,219,182, 13, 57, 57, 57, 0,224, 92,181,106, 85, 4, 4, 4,240, +161,161,161,240,247,247,135,149,149, 21,206,159, 63,143, 43, 87,174,160, 97,195,134, 86, 50,153,172,127,105, 66,171,109,231,182, +179, 20, 61,106,181, 10,104, 56, 4,150,214,110, 88,191,125, 39, 30,222,220,212, 74,111,188, 63,107,254, 56,143,193, 90,170, 24, +234,233,103, 53,173, 74,163, 54, 14, 53,106,191, 7,159,134,183, 28,117,252,133,167,179, 63,173,182, 64,162,212,109,154,251, 67, + 92,106,105, 34, 11,192,226, 62,125,250,244,219,177, 99,135, 45, 0,220,187,119, 15,137,137,137,112,114,114,130, 82,169,132, 84, + 42, 45, 92,159,180,146, 24,186,106,213,170, 66,209,198,113, 92,225, 42, 0,106,181, 26,173, 91,183, 70,253,250,245,177,127,255, +254,161, 0,166,149,144,198,150, 77,155, 54,221,234,227,227,227, 85,116,127,112,112, 48, 6, 14, 28, 8, 0,104,211,166, 77,251, +190,125,251,210, 2, 65, 24, 31, 31,159,115,253,250,245,142,148,210,171, 37, 37,136, 97, 24,109,108,108, 44,190,252,242, 75, 60, +123,246,236, 83, 66, 72, 52, 0,165, 92, 46, 47,236, 31, 19, 66,252,107,215,174,189,124,226,196,137,136,138,138, 66, 68, 68,196, +181,202, 14,165, 82, 74,121, 95, 95,223,199, 38,147,169, 17,199,113,208,106,181,232,221,187,183,210,222,222, 62,145,101,217, 7, + 41, 41, 41,131,242,125, 82,204,109,132,148, 0,150,140, 30, 61,122,204,148, 41, 83,112,230,204, 25, 28, 60,120, 16,131, 7, 15, +198,132, 9, 19, 96,105,105, 57,108,194,132, 9,151,145,183,160,121,113,180, 95,181,106, 21,120,158,255,211,179,161, 84, 42,209, +178,101, 75, 4, 6, 6,226,224,193,131,237, 81,100,125,212, 10, 54,146, 62,125,250,244,145, 11,130,128,220,220, 92,132,134,134, + 90,170, 84, 42, 75, 79, 79,207, 17, 0,254, 53, 66,203,199,199,103,244,142, 29, 59, 44,139,142,254, 40, 20, 10, 20,169, 7, 34, +254, 97,139, 86,121, 61,172, 66, 24, 12, 26,163, 68,194, 60,112,119,171,187,235,252,185,207, 10,135, 14, 1,230,129,193,160, 49, + 2, 0, 47, 80,100,105, 56,168, 20, 12,158, 39,100, 35,252, 73, 74, 73, 23,126,101,138,166, 84,229, 13, 69,147,231,160,148,194, + 96,228,161,207, 76,192,252, 16, 13,238,199,232, 96,200, 77,135,193,152,231,134,229,232,232, 40, 57,113,226,216,196,211,167,127, + 31,243,219,111,191,177, 49, 54, 54, 17,200,204,108, 80, 18,167,189,125,117, 43,137,133,106,215,234, 53,179, 85,148,125,130,200, + 23,185,168,225,217, 4,142,182, 94, 72, 72,201,197, 31, 17, 71,241,224,209, 17, 84,117,243,193,132,207,187, 40,191,253,126,219, + 78, 59,187,170,222,233,233, 79,179, 74, 75,103, 62,134,172, 61, 30, 9, 46,237, 9,248,212, 40,240,217,113,127, 22,120, 78,222, +104,216,206, 3, 78, 94,213, 21, 67, 39,204, 27, 2, 96,104, 73,156,148,210, 68,150,101, 87, 51, 12, 25, 67, 8, 65,221,186,245, + 98,150, 44, 89, 98, 44,225,154,198,186,117,235,197,176, 44,227,153,247, 98,103, 86, 9, 2,159, 88, 78, 58, 95, 17, 53,114,185, + 98, 74,158,217,223,237,101, 72, 72,136,177, 95,191,126,248,225,135, 31,228, 83,167, 78,157,233,233,233, 57,188,248,240, 94,113, +206, 62,132,120,123, 84,175,222,233,187, 63,254,160, 82,147,137,164, 93,187,150,149, 17, 31,207, 37,100,103,203,119, 63,120,208, +237,147,201,147,229, 94, 94, 94,184,120,228,136, 67,114,110, 46,205,208,235,181, 25, 25, 25,148,227,184,107,165,228,125,186,139, +139,139,122,253,250,245,254,163, 71,143,190, 21, 23, 23, 55, 61,255, 5, 49, 31, 64, 32,128,231, 69,246, 97,205,154,157,177, 35, + 70,140,136, 76, 76, 76,156, 94, 86, 58,139,160,182,179,147,179,122,251,218,205,119,237,173, 84,140,147,167, 59, 35,181,181,149, +112,114,149, 76, 0,180, 85,189,170, 91, 0,168, 93,202, 61, 59, 93,188,199,173, 82,169,246, 29, 58,116,200, 89, 42,149,130,231, +121, 56, 57, 57,225,217,179,103,200,200,200, 64,118,118, 54,158, 62,184, 15, 95, 47, 47,124, 61,109,170,219,184,169,211,246, 17, + 66, 26, 21,109,204, 74, 92, 0,217,100,252,147,101,175,148,133,200, 95,249, 54,167,220,139,225,217,139, 23, 47, 96,105,105,137, +160,160, 32,203, 63,254,248,227, 66,105, 34,171,216, 34,192,253, 91,180,104, 97,181,125,251,118, 52,108,216, 16, 54, 54, 54, 8, + 13, 13,197,189,123,247, 96, 52, 26,153,156,156, 28, 88, 89, 89, 97,193,130, 5,240,241,241, 65, 86, 86, 22, 94,188,120,225, 32, +149, 74, 29, 75,227, 12, 61, 17,250,109,102,212,217, 89, 9,228,120,151,245,219,119, 98,196, 7, 3,240,127,236, 93,117,120, 84, +199,219, 61,179,190,155,221,184, 11, 9, 26, 32,193,221, 67,144, 34, 1,138,123,209, 66,113,135, 96,197, 9, 45, 14,133, 98,197, +189, 88,113, 39, 72,112,136, 64, 32, 64, 72,136, 18,247,245,123,239,124,127, 68, 26, 66,100, 3,244,251,217,158,231,217,103,247, +238,189,251,238,220,153,185, 51,103,206,204,188,175, 3, 13,191, 99, 94,149, 44,255,174,123,203,159, 41,191, 66, 55,185,105, 93, + 75,247,218,221, 33, 18, 43, 48,113,246, 82,132,133,156,181, 84,102, 5, 77, 32,108,116, 5, 0, 83,138,218,204, 83, 68,120, 21, + 42, 84, 24,125,252,248,113,211, 66, 83, 41, 5, 49, 15, 11, 7,129, 47, 41,224,187, 33,249, 73, 8, 65, 68, 68, 4,236,236,236, +160, 80, 40, 10, 2,136,135,134,134,226,193,131, 7,200,143, 70, 81,130,205, 33,215,174, 93,171, 32,151,203,139, 94,131,228,228, +100, 48, 12, 3, 19, 19, 19,176, 44, 11,157, 78, 7,189, 94, 15,181, 90,173,240,244,244, 28, 15,224, 97,113, 54, 57,142,155,222, +191,127,255,150, 15, 31, 62,172,178,105,211, 38,104,181,218,213, 31, 63,126, 68,159, 62,125,192,113, 28,218,183,111,223,140, 82, +250,122,254,252,249, 0,128,105,211,166,233,115,114,114,126,250,146,123,207,187,127,207,190,125,251, 86,185,126,253, 58, 90,183, +110, 13,141, 70,131, 53,107,214,152,109,219,182,205,108,255,254,253,182,179,103,207,222, 13,160, 83,105, 54,243,202,107,181,131, +131,195,184, 65,131, 6,201,242, 98,152, 98,223,190,125, 88,178,100,201, 17, 0,243, 47, 94,188,184,232,204,153, 51,195, 70,143, + 30,141, 37, 75,150, 76,205, 39, 90,197,217,124,255,254, 61,108,109,109, 97,102,102,150,219, 88,234,116,120,254,252, 57,174, 94, +189,138,154, 53,107, 26,210, 17, 94, 43,133,100,237, 62,124,248,176,105,116,116, 52,110,223,190,141, 74,149, 42, 65,169, 84,150, + 25, 27,246, 91, 7,127, 46,203,166, 74,165, 82, 71, 69, 69, 41,126,249,229, 23, 56, 58, 58,194,205,205, 13, 82,169, 20,132, 16, +232,245,250, 18,195,171, 25,146,206,182,109,137, 32, 57,214,242,123,115, 11,203, 9,148, 82, 65, 70, 70,218,118, 29,210,255,124, +247,142,106,255,191,238,253, 63, 92,209,106, 64, 41,125, 86, 56,230, 97,254, 96, 68, 0, 0,231,207,159,167, 62, 62, 62, 36,255, +221,217, 25,153,201,201,150, 97,118, 14,117,142,218, 57,212,202,139,251,197,123,197,231, 91,134,217,219, 43, 51, 1, 64,199, 80, + 4,188, 74, 71,208,219,143, 8,126,251, 17,114,137, 97,226,139, 70,199,228,238,207,164, 20,234,236,191, 7,173, 58,101, 26, 52, +186,220,229, 30, 90,141, 18, 25, 73, 47, 73,191, 94, 29,165,227,198,141,133,163,163,179,109, 73,246,116, 18,233,212,137,211,186, + 90, 88, 89, 8,113,238,222, 37, 52,171,217, 11, 82,137, 16, 41, 25,106,128, 0,111,194,175, 2,156, 41, 66,194,162,208,180,150, + 9, 58,125,231,161, 56,245,231,235,153, 0, 22, 26,146, 94, 38,230, 17, 68,238, 93, 32,100,245,208, 39,191, 6,151,254, 1,144, + 59, 64, 69, 20, 72,137,255,128, 87,119, 78,228,110, 56, 45, 3, 44,203, 78,176,181,181, 77,159, 63,127,126,219,106,213,170,233, +198,143, 31, 31, 24, 25, 25,249, 73, 88,155,138, 21, 43,174,219,186,117, 43,222,190,125, 27,187, 98,197,138, 91, 73, 73, 73, 11, +202,249,128,250, 18, 66, 54,228, 77,197, 37,159, 62,125,186,161,191,191,255,212, 13, 27, 54,216, 79,154, 52, 73, 60,105,210,164, +145, 0,150,149, 54, 93, 40,151, 72, 58,172,184,125,155, 50, 49, 49,154, 3,155, 55,139,183, 4, 4,204,215,113,156,147,141,157, + 29,105,209,180,105,142, 9,143,151,156,146,144,192,216, 86,169,194,143,184,122,213,154,202,100,113, 23, 47, 94,204,204,206,206, + 46, 49,116, 14,159,207, 87, 22, 55, 93, 88, 28, 28, 29, 29,181,197,173,225, 42,165,114,103,114,148,234, 44, 42, 87,166,223,181, +111, 94,237,237,235,240,112,169,133, 5,223,189, 90,165, 26, 47, 94, 69, 60,162, 44,171, 38,132,100, 26, 98,139,207,231, 15,216, +176, 97, 67, 29, 51, 51, 51,112, 28, 7,115,115,115, 36, 37, 37, 65,171,213, 34, 51, 51, 19,218,172, 12,104, 51, 50, 16,252, 33, + 2, 45,219,182, 69,191,206,223,121,236, 63,253,215, 0, 0, 71, 74,179,235, 84,183, 65,129,146,181,180,162,245,223,115, 65,209, +233, 5,164,235,151, 6,238, 16, 41, 20,232, 56,221,247,107, 26,232,103, 98,177,248, 66,239,222,189,187,206,156, 57,147, 23, 31, + 31,127,137, 16,210,146, 82,250,178, 84, 69, 88,161,168,154,156,156,140,172,172, 44,152,155,155, 99,195,134, 13,176,183,183,135, + 82,169,196,227,199,143,169,139,139, 11,185,121,243, 38, 92, 92, 92,144,156,156, 12,157, 78,135,156,156,156,143, 90,173,182,196, +233,242,188,233,193, 46,211,187, 56, 94,124,253,116, 95,107,103,242,254,113,255, 25, 94,111, 95, 7,191,138,186,114,245,222, 50, + 70, 45,141, 78,143,185, 54,167,114,227,103, 54, 19,102, 45,193,111,171, 23,225,245,195,219,169,246,174,153, 91,100, 68,179,183, +105,199,146,211,155,147,147,163,126,245,234,149,105, 96, 96, 32, 8, 33, 48, 55, 55,135,137,137, 73,177,100,235, 11, 26, 75, 94, +161,255, 65, 78, 78, 14, 68, 34, 17,172,173,173,177,107,215,174,130,142,183, 82,165, 74,165,153,217,222,177, 99,199, 1,174,174, +174,166,133,191,108,220,184, 49,198,142, 29,139,223,127,255, 29, 1, 1, 1,159,196,211,252,248,241, 99,188, 94,175,223, 91, 74, +217,166, 19, 66, 58,247,234,213,235,233,157, 59,119,204,118,237,218, 5,134, 97,138,125,237,220,185, 19, 15, 30, 60, 88, 72, 41, +125,245,133, 29, 70,205, 62,125,250,220, 62,120,240,160, 69, 82, 82, 18,146,147,147,145,157,157,141,156,156, 28,176, 44,139, 26, + 53,106, 16,134, 97,106,148,149,143,124, 62,255,244,230,205,155,187,255,248,227,143, 16, 8, 4,208,106,181,216,188,121, 51,230, +204,153,147, 0, 96, 56,165, 84, 71, 8,153,191,119,239,222, 97, 61,122,244, 64,189,122,245, 60, 74,179,153,157,157,141,236,236, +108, 8,133, 66, 56, 56, 56, 96,249,242,229,208,106,115,155,149,234,213,171, 23, 76,121, 2,216, 94,189,122,245,238, 97, 97, 97, +107, 40,165,191,150,208,206,244,162,148,142, 97, 89, 54,171,119,239,222,214,135, 15, 31, 54,141,141,141,197,211,167, 79,177,112, +225,194, 52,142,227, 88,142,227,136, 74,165,122,111,111,111,255, 84, 34,145,200,148, 74,101,106, 74, 74,202, 74, 74,233,165,127, + 97,103, 78,132, 66, 33, 70,141, 26, 5,129, 64, 0,153, 76, 6,181, 90, 13,189, 94, 95, 64,230, 81,206,105,105,119,119, 83,107, + 1, 68, 63, 86,175,222,102,106,191, 41,221,108, 29,157,156, 97, 97, 38, 65,104,232,203,150, 55,174, 95,221,236, 89,195,118, 27, +167,213,111,123, 21,145,254,143, 7,187, 47,202, 69,254,195,184, 86, 3, 0,207, 80, 40,230, 33,242,118, 33,150,208, 18,245,101, +109,108,254, 76,142,141, 21,235,196, 98,147,176,124,149, 43,151,100,245,101,129,195, 96,116,250,188,134,130,230,189, 12, 36, 90, +122, 22,111, 95,135,224,206,149,191, 96,163,140, 69,242,251,250,128,168, 14,180,170, 12,168,181,186,188,209, 27,139,192,167,215, +145,153,145,138,218,141,186, 1, 60,222,131,146,236,153, 91,147,110, 45, 26,214,229,191,141, 10, 65,227,234,125, 81,197,165, 53, + 62,196,103, 34, 61, 91,131,180, 76, 53,234,215,246, 69, 82,154, 10,153, 74, 53, 94,190,221, 15,103,167, 42, 60, 34, 8,111,111, + 40,209,210,188, 60, 9,205,171, 51, 16,185,181,132,184, 70, 15,240,221, 90, 33, 42,232, 38, 2, 47,174, 71,204,139,187,160, 28, + 11,199,234, 77, 12,125, 72, 54, 95,186,116,169, 73,203,150, 45, 5, 29, 58,116,168,231,228,228, 84, 47, 46, 46, 46, 48, 79,205, +169,215,181,107,215,122,182,182,182,216,184,113,163,138, 16,178,249, 11, 59,219,194,211,109,143,236,237,237, 87,156, 60,121,114, +243,216,177, 99, 97,103,103, 87,167,180,223, 38, 9,133,245,134,175, 92, 73,133,124, 62, 61,242,219,111,162, 37,151, 46,173,221, +179,119,175,168,157,183, 55,161,148,226,249,243,231, 38,191,252,246,155,201,224,239,191,143,252,144,152,200,248, 7, 4,232,226, + 99, 98,178, 18,115,114,150,196,197,197,125,252, 87,212,108,189, 94,127,255,125,196,123,231, 70, 77,235,219, 62, 11,125,255,162, + 83,187, 22, 45,120, 60, 30,239,117,248,135, 0, 91, 91, 51,147,171, 87,174,234,244,122,253,125, 67,108, 73, 36,146,110,237,218, +181, 19,164,165,165,193,201,201, 9, 73, 73, 73,136,141,141,205, 85, 28, 50,210,160,203,200,128, 62, 51, 29,108, 78, 54,222, 63, +126,132,250, 85, 42, 75,142,231, 46,150, 63, 82, 70,153, 20,171, 84, 21, 86,182,196,166,166, 16, 43, 20, 32,229,156, 54, 36,132, +124,111, 97, 97, 49, 39, 61, 61,253, 2,165,116,185, 78,167,155, 56,103,206,156,198,155, 54,109,178, 89,177, 98,133,217,152, 49, + 99,142, 19, 66,234, 83, 74, 53,165,116, 96,239, 24,134,177, 1, 96,119,253,250,117,216,217,217, 33, 35, 35, 35, 95,105,209, 42, +149, 74,105, 74, 74, 10, 52, 26, 13,180, 90, 45,204,204,204,240,228,201,147, 52,134, 97,254, 42, 43,125,102, 85,201,114,141, 46, +116,129,181,135, 60, 78,199, 88,122, 37,166,114,105,139,214,196, 45, 5,176,182, 75,213,170, 59,117,220,237,247,111, 66,206, 90, + 70, 60,190,149, 26,247, 38,167,202,206,243,225, 89,165,228, 35, 37,132,112,132, 16, 90,189,122,117, 36, 37, 37,129,207,231,195, +196,196, 4, 10,133, 2,115,231,206,197,230,205,155,203, 77,180, 8, 33, 82,185, 92,190,146,199,227, 13, 48, 55, 55,183,101, 89, + 22,190,190,190,232,222,189, 59,196, 98, 49,116, 58, 93,129,162,153,175, 82,149,166,116, 80, 74,159, 3, 48, 43,242, 31,222, 54, + 54, 54, 55, 52, 26, 13,194,195,195,113,250,244,233,182,148, 82,255,114, 62,219,225,132,144,206,173, 90,181,218,215,176, 97,195, +170,148, 82,212,169, 83, 7, 3, 7, 14,196,254,253,251, 17, 24, 24,136,140,140, 12,238,234,213,171,123, 0,172, 41,111, 7,158, +151,191, 53,250,244,233,115,247,208,161, 67,150, 41, 41, 41, 80,169, 84,200,201,201,193,241,227,199,209,178,101, 75,216,216,216, +224,224,193,131, 12,165,244,108,105, 36,139,199,227,237,218,182,109, 91,247,209,163, 71, 99,203,150, 45, 56,114,228, 8,122,244, +232,129, 1, 3, 6, 32, 41, 41,201,126,245,234,213,195, 8, 33,187, 0, 44, 26, 56,112, 32,178,179,179,241,248,241,227, 80, 3, +159,121,164,167,167, 35, 61, 61, 29, 50,153,172,240, 51, 70, 0,236, 95,191,126,253,160,169, 83,167,162, 74,149, 42,139,242, 54, + 5,125,182, 75,148,227,184,159, 98, 99, 99, 45, 5, 2,129, 53,195, 48,136,142,142,198,147, 39, 79, 48, 97,194,132,212,212,212, +212,177,148,210, 15,132,144,249,163, 70,141, 90, 62,125,250,244,130,186, 52,125,250,244,115,132,144,206,255,223,106, 78,141, 26, +150,181,196,124,201, 20,145, 72,104,157,150,150, 86,208,118,104,181, 90,104, 52,154, 79,148, 44,145, 72,104,221,164,129,219,121, +149, 50,107,222,139,176,180, 18, 3,164,123, 86,179,168,107, 34, 55,159,234,211,185,223,144,239, 58,247,228, 51,122, 61, 46, 95, + 62,139, 63,254,216, 10,239, 86,213, 81,165, 90, 29, 76,154, 60,197, 92,163,101,124,175, 94,189, 52,167, 69,147,202,151,178, 50, +211,231,150,102,243,127, 28,231,243,200,213,249, 98,167, 14,139,103,144,125, 89,103,103,164,229, 61, 56, 54,150,150,150,191,177, + 44,235, 13,252, 8,161,194, 1, 47,159, 60, 68,106,154, 16, 26, 21, 11,142,230,146, 45,131,136,139, 70,139,219,151,207, 96,195, +250,181, 72, 73, 73, 65,171, 54,109,145, 45,168, 0,215, 10,174, 80,171,148,121, 15, 13,160,211,234, 97,107,239,134,103,207, 2, +245,153, 57, 57, 37, 54, 72, 34,169,206,195,213,190, 58, 52,186,230,144,138,197,200,200,210, 34, 45,143,100, 29,252,179, 63, 52, + 74, 21, 24,173, 14,140, 86, 15, 91,215, 62,168,105,223, 14, 28,123,182, 86,185,178,143, 99,161,139,184, 13, 93,196,109,200,154, + 79,198, 95,126,131,138, 52,128,134,197,221, 77, 76, 76, 76,116,114,114, 58,251,252,249,243, 94,253,251,247,199,205,155, 55,199, + 0, 24,151, 55,125, 51,166,127,255,254,120,254,252, 57, 94,188,120,113, 54, 49, 49,241,155, 4, 94, 21,139,197, 42,141, 38,183, +143, 53, 49, 49,145,150,113,173,115,227,222,189,121, 25,207,158,101,174,191,119,111,209,206, 93,187, 68, 29,218,183, 39,122,134, + 1,199,178,168,230,238, 78,190,251,238, 59,249,254, 99,199,172,249,122,253,131, 89, 19, 39, 94,255,125,232,208,172,135,217,217, +134, 46, 52,175,152, 55,101, 8, 0, 21, 75,249,206, 96,104, 52,154, 77, 63,253, 56,162,131,255,237,187, 21, 92, 43, 56,155, 93, +190,234, 31, 40,145,137,121, 85, 42, 85,229,167,101,164, 10,150, 46,154, 39,211,104, 52,134,146, 86, 15, 27, 27, 27,124,252,248, + 17,111,223,190,133, 70,163,129, 94,175, 7,167,204,129, 54, 45, 29,218,140, 84, 16,181, 10, 18,150,133, 58, 57, 1, 21,171, 84, + 6,254,222,145, 88,230, 84, 84,113, 68, 43,255, 93,106,102, 6,145, 92, 1,158, 80,104,112,112,116, 66, 72,195, 38, 77,154, 28, + 59,113,226,132,104,228,200,145, 77, 9, 33,191,229,117, 16,237, 23, 46, 92,248,232,183,223,126,147,140, 29, 59,182,198,154, 53, +107,134, 1,216, 94,146, 29,181, 90,125,236,252,249,243,131,221,220,220,236,130,131,131,161, 86,171,193,113, 28,186,116,233, 2, + 0, 5,117,230,245,235,215, 42,181, 90,157, 24, 18, 18,146,249,225,195, 7, 45, 12,216, 37,184,104, 99,220,253,233,253, 92,122, +219, 59, 56, 63,144,202, 42, 86,162,217,207,122, 77,239,231,178,122,221,241, 24,245,197,119,239,178, 22, 78,168,178, 42, 39, 43, +104,130,133, 75,246,150,139,103,195, 13,217, 21, 76,243,183,179, 91, 91, 91, 67, 32, 16, 64, 40, 20, 66, 36, 18,129, 16,130,201, +147, 39, 99,199,142, 29,165, 78, 29, 22, 37, 89,166,166,166, 47,150, 44, 89,226, 50,118,236, 88,145, 84, 42, 69, 90, 90, 26, 14, + 30, 60,136, 81,163, 70,225,143, 63,254, 40,118,253, 75, 89, 83, 74,197,168,165, 83,135, 14, 29, 10,173, 86,139,129, 3, 7, 98, +231,206,157, 83, 1,248,151,183,190, 83, 74, 31, 16, 66,220, 3, 3, 3,205, 0,244, 24, 48, 96,192,222, 62,125,250,192,223,223, + 31,103,207,158,109, 11, 32, 12,128, 10,128, 95, 94, 16,103,191,210, 54,130,228,185,112,216,106,107,107,219,163, 86,173, 90,129, +125,250,244,169,125,232,208, 33,139,196,196,196,252,205, 15,136,136,136,192,238,221,187,227,119,237,218,149,201,178,172, 53,143, +199, 59,159,158,158, 62,183,148,233,194, 93,235,215,175, 31,145, 55, 29,136, 19, 39, 78,208,181,107,215,146,133, 11, 23, 34, 45, + 45, 13,222,222,222,216,182,109,219,148,236,236,236,122,107,215,174,253,177, 95,191,126, 88,186,116, 41,114,114,114,214,151, 53, + 88, 41,133,124, 17, 0, 45,214,175, 95,239, 54,117,234, 84,156, 56,113, 2, 13, 27, 54,148,189,127,255,254,119, 0,163,139, 43, + 63, 74, 41,222,191,127, 15,165, 82,137,187,119,239, 98,209,162, 69,105,133, 72,214,148,113,227,198, 45,159, 50,101, 10, 86,174, + 92, 73,131,131,131, 19,251,244,233, 99,191, 99,199, 14,126,181,106,213,166, 32, 55,232,250,255, 11,106,186, 91,175,106,210,216, +107,142,163,115, 53, 28, 60,116, 24,169,169,169, 5,121,146,159, 47,148, 82,100,101,101,225,227,199,143, 48, 55, 51,197,234, 53, +203,187,142, 31, 51,162, 2,114,221, 96,124,222,208, 85,181, 90,211,119,224,232, 25, 3, 7,143, 64,112,224, 83,236,223,187, 29, + 33,193,207, 11,236, 49,122, 29,194, 66,159, 32, 44,244, 9,236, 29,220,240, 93,135,182,100,208,160, 65, 93,134, 14, 30, 96, 11, +224, 31,115, 29,241, 31,172,102,125,230, 71,171,240,154, 45, 65, 89,114, 93, 30,201,122,113,244,232, 81,235, 86,173, 90,241, 25, +134,193,165,203,151, 49, 97,220, 15, 24, 54,212, 23, 58, 88,130,209,138,192,137,164, 6, 37, 70,165, 82,130,130, 34, 39, 39, 7, + 1, 1, 1,160, 28,131,253, 59,214,130, 82,174,128,104, 1, 20, 90,157, 14,206,174, 53,176,117,231, 10, 6, 66,225,163,146,236, +101,166,240, 89, 61, 67, 17,155, 24,133,168,248, 16,152,155,186, 66, 32,116, 69, 74,186, 18, 2,158, 3,244,234,215, 96,243,100, + 85,101, 78, 12, 84,186,175, 43, 63, 54,227,115,245,148,150,163,209, 85,169, 84, 7, 14, 28, 56,208,117,221,186,117, 98, 31, 31, +159,234, 78, 78, 78, 45, 0,160,111,223,190,213,205,204,204,112,224,192, 1,173, 74,165, 58,240, 13, 21,159,118, 77,154, 52, 65, + 90, 90, 26, 34, 34, 34, 2, 75,189, 55,173,214, 90, 97,103,199, 79,188,121, 83,159,148,150, 86,161, 93,187,118, 68,207, 48,224, + 17,130,212,140, 12,124,136,140,132,133,133, 5,121,241,250,181, 98,243,164, 73,167,170,215,174, 45,200,223,145,104, 8,206,158, + 61,107,130,220,117, 89,165,126, 87,206,202,157, 67, 8, 25, 49,113,226,196, 83, 7, 14, 28, 52, 79, 72, 76, 8,147,136,197,140, + 66, 33,117, 26, 58,100,188, 32, 61, 61,125, 48,165, 52,219, 80,123,105,105,105,120,255,254, 61,100, 50, 25, 68, 66, 33, 56,149, + 18,108, 78, 54,212,169, 73,224,235,180, 16,179, 44,172, 76, 36,168, 96,111, 15, 87, 91, 27,131,108,190,189,113,165, 96,225,123, +225,233,194,213, 77, 60, 32,150, 43, 32, 54, 85, 96,252,185, 91,121,163, 81, 17,176,112,153, 33, 36,203,198,217,217,249,175, 67, +135, 14,137,146,146,146,240,252,249,243, 64, 74,105, 6, 33,196, 20, 0, 23, 26, 26,122, 45, 36, 36,164, 91,222,174,187,178,118, +139,173, 61,121,242,100,199, 86,173, 90, 49,149, 42, 85,146, 39, 36, 36,184,166,164,164,144,248,248, 79,215, 58, 95,184,112, 65, +170, 82,169,114, 56,142, 59,133, 92, 63, 80,101,250, 47,154,222,207, 69, 26,240, 12,147,189, 58, 85,172, 99,102, 83, 23,169,204, +179, 58, 15, 2,227, 39, 79,239,231,178,105,221,241, 24,181,140,104,246, 18, 54,186,130, 64,170,222,103, 96,121, 83, 27, 27, 27, +132,134,134, 34, 32, 32, 0, 31, 62,124,192,251,247,239, 63, 33, 84, 99,198,140,193,254,253,251, 13, 82,180,228,114,249,202,197, +139, 23,187, 76,157, 58, 85, 84,136, 20, 97,226,196,137,200,200,200,192,206,157, 59, 49,113,226,196,114,119,252, 69,202,170,114, +199,142, 29,125, 28, 29, 29,145,146,146, 2, 7, 7, 7,180,106,213,170, 59, 33,164, 18,165, 52,226, 11,171,254,248, 78,157, 58, + 45, 95,178,100, 9,244,122, 61, 70,141, 26,133, 55,111,222, 28,123,243,230,205, 6, 87, 87,215,201,179,103,207,182,183,183,183, + 71,255,254,253,229, 0,122,151,100,196,202,202,202,111,251,246,237,131,125,124,124,120, 58,157,174,205,141, 27, 55, 16, 25, 25, + 9,173, 86, 11,134, 97,240,238,221, 59, 76,156, 56, 49, 62, 37, 37,197,139, 82,250,206,128,116,141,156, 63,127,254,136,201,147, + 39,227,151, 95,126,193,226,197,139,247,152,155,155,215,174, 95,191,126,131,197,139, 23, 99,214,172, 89,112,115,115,131,181,181, +117,205,133, 11, 23,122, 76,159, 62, 29,155, 54,109,194,162, 69,139,246, 0,216,253, 37, 25,193,113, 28, 89,181,106, 85,189,245, +235,215, 59,230,147, 44, 30,143,135,163, 71,143,226,217,179,103,221, 75,248,205, 54, 7, 7,135, 49,142,142,142,226,171, 87,175, + 42,220,220,220,192, 48,140, 62,143,100,109,118,117,117,157,240,238,221, 59,248,248,248, 32, 60, 60,252, 0,165,116,152,151,151, + 87,206,244,233,211, 77,100, 50,153,249,255,103, 7,206,231,145,225, 43,151,206,194,227,103,175,113,242,164, 8,143, 31, 63,134, +189,189, 61, 36, 18, 9, 40,165,208,104, 52, 72, 74, 74,130, 94,167, 65,157, 90,149,177,111,215, 42, 36, 38, 38, 1, 60, 82,226, +146, 27,194, 35, 67, 70,252,208, 11,119,238, 94,198,239,191,111, 71,118,118, 78, 9,131,111, 41,170, 85,247,128,179,147, 29,162, + 99,162, 65,120,176,249, 39,239,245, 63,124,234, 48,255,121, 55,204,189, 67, 97, 88, 88, 88,108, 56,114,228,136,181,183,183, 55, + 63, 39, 39, 7, 28,199,161,117,171, 86,152, 60,117, 42,206, 30, 58, 4,247,166, 3, 65,180, 10, 48, 38,134,237,122, 80,171,148, +240,108,208, 2,253,250, 15, 64,212,135, 15,232,212,173, 15,212,106,101,193, 8, 35, 95,209,210,106,117,176,177,171,128, 43, 87, +174,240, 49,106, 84,137,107, 76, 88,157, 56, 40,236,157,186,101,186,234, 25, 2, 30,239,135, 78,163, 67,157, 58, 11,161,227,172, + 97,231, 50, 6,122,253,105,100, 38,221,200,157,198,176,246, 70, 76, 84, 20,120,124,209,139, 47,205, 68, 46, 39,233,171, 26,221, +244,244,244, 12, 39, 39,167, 63, 3, 2, 2,134,244,238,221, 27, 87,174, 92,249, 17, 0,122,247,238,141,128,128, 0,188,127,255, +254,207,244,244,244,140,111, 81,224, 78, 78, 78, 61,188,189,189, 7, 54,110,220, 24,231,206,157, 3,165,244,142, 65, 15,182, 80, + 72,121, 60, 30, 56,142, 3, 1,144,146,158,142, 55,111,222, 32, 37, 57, 25,122,189, 30, 57,217,217,156, 71,245,234,217,148,227, + 76,203,147,158,194, 59, 12, 81,204,174,195,252,239,190,128,108,125, 80, 40, 20, 81, 89,217,217,182,150, 22,150, 89, 98,177,152, + 77, 75, 79,207,120,249, 34, 88,107, 96,231,144,143,208,144,144,144,218,113,113,113,136,138,138, 2,147,147, 5,190, 70, 11,158, + 70,137,246, 45,154, 67, 6, 10, 41, 56, 8, 57, 61,132,124, 33,178,114,119,231,149, 57,221,145, 79,244, 11, 43, 91,132,144,220, +233, 66,185, 28, 98,133,233, 39, 10,151, 33,245, 73, 34,145, 28, 58,126,252,184,163,179,179, 51,150, 46, 93, 10, 23, 23,151,154, +117,234,212, 81,182,110,221, 90,102,111,111, 15, 79, 79, 79,180,104,209, 2, 23, 47, 94, 4,128,119,101,228, 31, 67, 8,249,238, +206,157, 59, 51,238,221,187,215,143, 16, 66,124,125,125,209,185,115,103, 72,165, 82, 40,149, 74,164,165,165, 97,199,142, 29,132, + 82,218, 32, 47,173,110, 82,169,244, 48, 33, 36, 70,165, 82,245, 47,106,115,255,250,186, 78,137,169,220, 40,123, 7,231, 94, 94, +157, 42,214,105,215,169, 3, 42,187,183, 67,187, 78, 81, 0,176,202, 74, 16, 57,112,245,130,218,167,108, 42, 88,237,190,114,233, +234,162, 86, 94,237,230,251,142,181, 92,190,106,123, 90,166, 1, 13, 25, 56,142,251,196,119, 80,209,243,195,134, 13,195,209,163, + 71,203,204, 71, 30,143, 55, 96,236,216,177,162,194,223,229, 79, 25,119,235,214, 13,189,123,247,254,132,104,217,216,216,192,193, +193, 1,145,145,145, 0,144, 98, 96,189,154, 60,114,228, 72,162, 82,169, 48,122,244,104,236,220,185, 19, 3, 7, 14, 36,254,254, +254,147, 1, 76, 45,111,125,231,241,120,171,103,207,158, 61, 99,226,196,137, 72, 77, 77,197,133, 11, 23,208,165, 75, 23, 28, 61, +122,212,246,194,133, 11, 43,189,189,189,193,231,243,113,238,220, 57, 48, 12, 83,170,175, 47,145, 72,212,195,199,199,135, 23, 29, + 29, 13,145, 72,132, 70,141, 26, 33, 38, 38, 6, 74,165, 18,177,177,177,152, 50,101,202,199,148,148,148,182,134, 62, 71, 34,145, +104,234,228,201,147,113,228,200, 17,248,250,250,238, 5, 48, 58, 35, 35,163,223,189,123,247,142,124,255,253,247,136,141,141,197, +169, 83,167,176,104,209, 34, 50,108,216, 48,108,217,178, 5, 83,166, 76,217, 3, 96,116, 41, 59, 36,179, 18, 19, 19,205,171, 86, +173,138,132,132, 4,100,103,103,227,212,169, 83,118, 23, 47, 94,172,228,236,236,108,246,254,253,123,118,217,178,101,226,169, 83, +167, 98,195,134, 13,120,254,252, 57,246,239,223,143,118,237,218, 49,225,225,225,197,170,100,121, 46, 27, 78, 89, 89, 89, 93,149, +203,229,200,202,202,202,223, 89, 58,211,215,215,119,162,159, 95,174,200, 30, 23, 23,135,225,195,135, 15, 37,132,112, 75,150, 44, + 49, 17,137, 68, 80,171,213, 57,255,159, 29, 55,199,114, 0, 56, 84,170,160,192,229,179,187,240, 52, 48, 28, 79, 3, 67, 32,150, +228, 46,130, 87,169,148,104, 80,167, 26,154, 54,106,130,184,248, 88, 28,216,191, 11, 86, 54,206,165,182, 35,148, 82,136, 4, 44, + 60,170, 59,224,208,254,237, 56,119,225, 58,246, 31, 56, 92,176,230, 77, 32, 16,162,126,131,166,104,212,168, 21,194,223,191,195, +174, 93,191,195,214,174,130,113,114,240, 11, 81, 48,117, 88,248,189, 8,243,111,215,170, 85, 43,126,118,118, 54,212,106, 53, 62, +126,252,136,200,200, 72, 88, 88, 90, 32, 60, 46, 2,109, 77,116,248,200,101, 34, 52,240, 5, 75,248,194,231,101, 74,131, 94,245, + 1,175,250,152, 48,114, 96,201,149, 0, 20,114, 51,155,220,169, 27,134,121,139, 77,155, 74, 28, 57, 51,172,254,218,229,171, 55, +154,140, 28,214, 67,120,229,198, 78,232,181, 28, 84,122,115,228,168,181,200,209, 9,193, 51,239, 2, 36,251,131, 47,144,160, 89, +189,106, 56,117,242,162,142, 50,250,235, 6,103,144,125,109, 48, 9, 33,133,136,214,167, 51,122, 82, 83, 43,131,167, 14, 11, 58, + 94,150, 61,122,240,224,193,158,205,155, 55, 55,241,246,246,174,154,215,113,234, 14, 30, 60,168,100, 89,246,104,121, 11,177,168, + 55,120, 71, 71,199, 6, 34,145,104, 96,143, 30, 61, 26,140, 24, 49, 2, 47, 95,190,196,129, 3, 7,194,170, 85,171, 86,170, 15, + 49,190, 88,156,146,157,152,104,161,168, 84, 73, 96,105,106, 26,119,241,194, 5,183, 14, 29, 59,146,168,168, 40,164,164,164, 64, +173, 86,227,121, 96, 32, 21,242,249, 49,196,204,140,247,250,217, 51, 30, 95, 44, 78, 41, 71, 82, 35,203,216,117,232,247,165,234, + 86, 5, 71,203,170,139,124,127,170,172,214,168,107,103,102,102, 50, 2,161, 80,232,226, 96,241,161,156,211,144,231,174, 93,187, +214,179, 67,135, 14,146,176,160,231, 96, 50, 50,160,205, 72,131,136, 99, 97,213,160, 30,248, 58, 13,160,213,195,217,131, 66,157, +110, 2,255,135,175,245, 26,141,166, 76,167,134,249, 68,139, 87,132, 24,136, 21, 10, 72, 76,205, 32, 81, 40,138, 18, 6, 82, 70, +121,155,244,232,209,163,125,179,102,205, 64, 41,197,142, 29, 59,160,211,233,196, 58,157, 14, 90,173, 22, 58,157, 14,153,153,153, +216,191,127, 63,182,110,221,122, 15,192, 30, 3,200, 42, 35, 20, 10, 39, 50, 12, 99, 39,145, 72,116,182,182,182,162, 99,199,142, + 21,184,155,168, 95,191, 62,228,114,185,134, 16,162, 3, 0, 7, 7, 7,253,222,189,123, 5,223,127,255,189,168, 56,123, 53,234, +212,156, 85,153,177,244,146,202, 42, 86, 50,179,169,139,202,238,237, 0, 0, 29,187,141, 68,229,106,174,200, 76, 14,170,164, 86, + 69,246, 18, 9,210, 44, 95,108,138,125, 41,243,169, 61, 34, 39,241,214, 27, 20,191,189,191,216,142,130,199,227,149, 56, 29,107, + 8,201, 34,132,240,204,205,205,109,243,215,249,228,117,192,136,143,143, 71,104,104, 40,106,212,168,129,212,212, 84, 56, 59, 59, + 67,171,213,162,113,227,198, 80,169, 84, 88,191,126, 61,238,222,189,123, 15,121, 59, 35,203,248, 15,153,187,187,251,240, 6, 13, + 26,224,194,133, 11,120,252,248,113,236,229,203,151,157, 91,181,106,133, 74,149, 42,141, 32,132,204,163,180,100, 31,124,197, 77, +245,181,105,211,102,210,196,137, 19, 17, 18, 18,130,159,126,250, 41, 37, 58, 58,250,212,177, 99,199, 70, 47, 90,180,136,215,169, + 83, 39,196,199,199, 99,245,234,213,236,221,187,119,215, 0, 88, 90, 70, 62,190,138,142,142,118, 81,171,213, 72, 77, 77, 5,195, + 48, 80, 42,149,184,120,241, 34,246,239,223,159,144, 71,178,222, 26,154,190,122,245,234,121,242,120, 60, 28, 57,114, 4, 0, 22, + 80, 74, 57, 66,200,169, 94,189,122,197, 46, 91,182,204,121,238,220,185,248,241,199, 31,161,211,233,240,203, 47,191, 96,238,220, +185,231,243, 72, 86,105,141,232, 58, 7, 7,135, 49, 63,253,244, 83,205,233,211,167, 35, 32, 32,192,238,201,147, 39,141,158, 63, +127,142, 10, 21, 42, 32, 37, 37, 69, 96,109,109,141, 13, 27, 54, 96,218,180,105, 39, 0, 36,223,191,127,127,192,251,247,239,253, + 40,165,171,203,200,207,109,206,206,206, 99, 40,165, 84,169, 84, 70,250,250,250,174, 94,177, 98, 5,166, 77,155,134, 23, 47, 94, + 32, 35, 35, 3,166,166,166,100,246,236,217,195, 23, 44, 88,128, 81,163, 70,209,156,156,156,173,255,255,211, 82, 44,148,105, 33, + 96, 53,150,168, 95,167, 6,234,215,174,136,203, 55,158, 2, 0,218,247,105, 5,101, 78, 22,246,238,221,129,183,111,223, 64, 32, + 20,194,194,202,193, 16, 37, 16,218,204, 87, 72,215,197,163,131,119, 35,116,233,212, 22,123,246, 29, 5,163,215, 97,244,200,193, + 72, 75, 79,199,190,125,187, 16,254,254, 29, 4, 66, 33,172,109,254,121, 71,168,165,113,145,255,120,162,101,192,244, 19, 56,142, + 67,108,108, 44,158, 60,121,130,136,136, 8,152,152,152, 64,197,176,220,239,215,238,114,132,136, 98, 56, 74,239, 81,166,192, 75, +241,231, 54, 88, 54,182,144,199, 90,115, 75, 75, 75,177, 70,163, 2,195,232, 11,245, 42, 4, 32,128, 72, 0, 56, 58, 85, 70,116, + 84, 52, 85,171,213,183, 74, 29, 65,105,212, 27,206,156, 58, 62,177, 69,203, 86, 54, 93,218, 47,193,169,211, 11,145,150,153, 9, +181, 78,136, 28,181, 14, 74, 53, 96, 97, 85, 29,141,235,212, 69, 92, 92, 10,130, 30,251,103, 11, 52, 74, 67, 22,138,190,217, 60, +127,164,251,200, 9,179, 32,115,107, 9, 77,232, 41,112,217, 9, 5,138,150, 84, 97, 9, 43, 87, 15,164,231,104,112,252,250, 83, + 0, 48, 56,212, 75, 66, 66,130,210,201,201,233,224,196,137, 19,127,121,250,244,137, 11, 0, 60,125,250, 52, 38, 62, 62,126, 78, + 66, 66,130,178, 60, 5, 88,200, 27, 60, 49, 49, 49,121, 90,173, 90,181, 56, 31, 31, 31,243, 94,189,122,193,198,198, 6,207,159, + 63,135,159,159,223, 43,157, 78, 55,235,214,173, 91,165, 78,245,104,181,218,216,167,167, 79,155,181,253,225, 7,139, 89,221,187, +175,158, 56,113,226,134,165, 75,151, 10,221,221,221,137, 94,167, 67,112,112, 48, 61,116,240,160,126,235,220,185,235,197,114,185, +224,209,153, 51, 66, 70,163,137,253, 87, 87, 98, 23, 23, 23,175,174,157,189, 60,214,172,219, 4,181, 42, 27, 15, 3,206, 35, 45, + 45, 9,219,119,156,244,112,113,113,241,138,137,137,241, 55,148, 0,239,222,189,123, 70,211, 6, 13, 26, 84,169, 80, 1,193, 31, + 34, 32,230, 88,136, 24, 6,124,157, 6, 60, 70,141, 10,181, 41, 8,207, 20,241, 31, 51,177,226,200,159, 33,134, 16,227,154, 93, +123, 96,105, 76, 6, 8, 33, 88,219,188, 54,196,166, 10,136,228, 10,140,255,235, 70, 1, 49, 56,183,116, 46,196, 10, 5,170, 54, +109,101, 64,163, 75,149,166,166,166, 79,130,131,131, 27,215,174, 93, 27, 51,102,204, 64,100,100, 36, 56,142, 67, 66, 66,130, 58, + 62, 62, 62, 54, 41, 41, 41, 18,185,254,127,118, 82, 3, 71, 2, 12,195,216, 61,125,250, 20, 0, 68, 0,112,253,250,117, 56, 57, + 57,193,220,220, 28,153,153,153,152, 53,107,150,228,231,159,127, 6, 0, 60,121,242, 68, 88,152,160, 20, 69,240,211,208, 53,233, + 89, 52,141,102, 63,235,149,202, 60,171,211,174, 83, 52, 58,118, 27,129,171,231,246,224,198,229,107,176, 18, 68, 70, 64,158,117, + 49, 57, 34, 57, 51, 38,199,125,155, 71,195,209,252,248,156,203,219, 38,127,111,201,119,116,228,142,251,110,205, 72, 47, 45,173, +238,238,238,176,183,183, 47, 88,163, 37, 16, 8, 48,106,212, 40, 80, 74, 13, 34, 89,121,249,200,153,153,153, 37,169,213,106,123, +169, 84,138,143, 31, 63,226,221,187,119, 8, 15, 15, 47,112, 29,192,113,156,126,230,204,153,194, 73,147, 38,225,247,223,127,199, +173, 91,183,238, 1, 88, 66, 41, 53,116,176, 54,184,127,255,254,166, 90,173, 22,135, 15, 31,102, 0,116, 59,126,252,248,147,198, +141, 27, 11, 58,119,238,108,186,101,203,150,193, 0,118,150,163,186,203,205,204,204, 68, 58,157, 14, 91,182,108, 65,116,116,180, + 23,165, 52,148, 16,178,173,127,255,254, 91,107,215,174, 93, 45, 36, 36,228, 77,118,118,246,120, 74,105,144, 1,109,209,200, 70, +141, 26, 29,231, 56,206,173, 67,135, 14,242,117,235,214,153,189,126,253, 26, 46, 46, 46,224, 56, 46,184,188, 33,172,222,188,121, + 19, 26, 31, 31,239,209,182,109, 91, 92,188,120,113, 21, 33,100, 37,128, 95,198,141, 27,231,252,225,195, 7, 52,104,208, 0, 86, + 86, 86,120,253,250,117, 86,124,124,252, 86, 0,243,202,242,245, 69, 41,125, 15, 96, 14, 33,164,238,182,109,219, 6, 90, 89, 89, + 53,123,254,252, 57,238,220,185,131, 53,107,214,224,231,159,127, 70,235,214,173, 49, 99,198,140,100, 0, 3,243,166,180, 13,242, +155,151,175,108, 1, 64,163, 70,141,226,252,252,252, 48,122,244,104,250,199, 31,127,108, 60,120,240,224,212,193,131, 7, 23,244, +129,195,135, 15,167, 7, 14, 28, 24, 94,218, 70,128,127, 8,122,157, 78, 11, 51,171,202,200, 78,143, 66, 82,116, 0, 76, 76, 29, +208,169, 93, 61, 40, 85, 90,156, 61,115, 2, 65,193,129,224,241,120,176,119,168, 0, 11, 75, 27,132,133,189, 1,128,151,165,219, +212,193,212,178, 34,178, 51,162,161, 77,124, 10,153,194, 14, 35,126,232, 5,165, 74,135,147,167, 78, 32, 36, 36, 8,124, 62, 31, + 14,142, 21, 96,110,145,107,147,208, 82,109, 26,129,226,253,105,149, 73,180,248,124,254,205, 75,151, 46,245,109,218,180,169,224, +237,219,183,120,251, 54,119,112,147,150,150,198, 16,176,127, 38, 4,157, 30, 84, 10, 9,232,144,191, 59,163,112,236, 66,133,169, +105,236,235, 87,161,246,105,169, 9, 8,124,118, 23,111,195,130, 17, 17, 30, 10,157, 78, 13, 62,143, 7, 30,159,135,138,149,107, +225,238,189, 0,173,154, 97, 2, 74,178, 9, 0,169,169,239,178, 20,246,213, 7, 44, 95, 58,239,220,180, 89,139,101,253,250,254, +142,160,215, 47,145,205, 56,128, 82,192,193, 90,142,250, 85,102, 35, 54, 46, 9, 71,246,108, 81,114, 58,221,144,194, 62,180,138, +179, 9, 0,246,201,240,220,186, 99,207,168,157,251, 15, 45,158, 53,105,172,253,247,189,135, 64,156,250, 18,250,184,167,168,220, +184, 11,136,196, 2, 23,174,220,128,255,147,151, 9, 28, 75, 23,219,167,224,143,178,108, 22,153, 66,188,255,241, 99,188, 75, 33, + 47,240, 46, 18,137,244,126, 25,164,170, 67, 17,191, 66,159,120,156,231,243,121, 13,151, 47, 95,174,183,183,183,215,133,132,132, +224,247,223,127,231,158, 62,125,122,133,199,227,109,142,139,139, 83,151,101,211, 86,175, 15, 60,228,235,235,217,164,119,111, 58, +104,210, 36, 37, 36,146,201,171,215,174,245, 77, 74, 75,115,162, 28, 7, 91, 43,171,152,213,115,231,250,245,237,223, 63,237,197, +221,187,178,128,211,167,101, 98,134,121, 90, 86, 58,191,209,188,119,137, 54, 99, 98, 98,252,221,171,186, 98,239,206,117,208,233, + 52,136,143,205, 21,178,146, 83, 50, 80, 26,201, 42,106, 51,111,215, 85,239, 5, 63,255,252, 96,193,180,169, 14,109,218,119, 64, + 84,224,115,232, 82,147, 64,244, 12,132, 68,128,156, 68, 19, 36, 38,100, 99,206,129, 99,137,217, 74,101,239,162,157, 68, 73,233, +204, 87,172, 36,102,166, 16,201, 21, 16, 43, 76, 63, 81,177,164,102,102, 16,203, 21, 16,136,197,197,169, 52,159,217,204,206,206, +238,211,183,111,223,160, 71,143, 30, 89,142, 30, 61, 26, 45, 90,180,120,166, 82,169,188, 41,165, 89, 95,154,159, 2,129, 32,177, + 97,195,134,118, 66,161,144, 25, 53,106,148, 32, 57, 57,185,192,179,122,118,118, 54, 46, 94,188,136, 26, 53,114,119,245,191,120, +241, 2,181,106,213, 42,209,230,232,217,193,177, 0,150, 78,239,231,178,250, 65, 96,252,100, 0,171, 42, 87,171,128, 27,151,175, +225,206,141, 0,223,102,181,185, 77, 93,135, 52, 94,102,226,221,127,150, 71,195,209,124,133,153, 35,246,157, 60,193, 15,125,186, +107,133, 82, 25, 92, 21,192,204,146,210, 73, 8, 1,165,244, 51, 87, 14,124, 62, 31, 7, 15, 30, 44,239,189, 31,219,185,115,231, +184,159,126,250, 73, 20, 31, 31,143, 87,175, 94, 33, 39, 39, 7, 82,169, 20,151, 47, 95,102, 0,108, 57,120,240,224,229,131, 7, + 15,118, 70,174, 95,156,235,229,169,159,114,185,124, 98,167, 78,157,240,234,213, 43, 60,126,252,248, 4,165, 52,136, 16,114,226, +237,219,183, 3, 90,183,110,141, 61,123,246, 76, 44,137,104,149,100,147,227,184,194, 62,147, 82,243,234,110, 32,128,102,229, 45, +247,188, 5,188, 45, 1,192,218,218, 58,218,222,222,222, 44, 48, 48, 16,174,174,174,208,233,116, 77,203, 91,151, 50, 50, 50,214, +109,222,188,249,143,145, 35, 71, 98,217,178,101, 67,142, 29, 59, 54,164,107,215,174,240,241,241,193,238,221,187, 17, 20, 20,180, +202,144,176, 98,197,221,123, 30,113, 12,242,244,244,156, 80,161, 66, 5,172, 89,179, 6,193,193,193,126, 75,151, 46,157, 27, 20, + 20,132, 26, 53,106, 72, 94,190,124,201,124, 73, 27, 2, 0,102,102,102,102,122,189, 30,167, 79,159,126, 72, 41,157, 70, 8,177, +219,176, 97,195, 64,133, 66,129,212,212, 84, 85, 72, 72,200, 96, 74,233,153,255,239,182,142, 18, 50,127,244,143,147,183,253, 56, +122,176,180, 81,195,250, 80,102,198, 64,149,157, 0,101,214, 71,108,222,121, 5,132,240, 96,107,235, 8, 59, 7, 23,124,248, 16, +133,123,231, 47,104,115,148,170, 13, 98, 61,183,170,116,155,147,114,109, 54,200,181,169,204, 73,132, 42, 59,177,192,166,157,157, + 83,158,205, 15,184, 27,112, 65,173,202,201, 89,167,165,228,215,127,242,222,255,147, 81,238, 88,135,133,145,150,150, 54,101,236, +216,177,222,115,230,204,177,102, 24,134,111,101,101,133, 15, 31, 62, 48,127,254,249,103,106,118,118,246,148, 47, 73,144, 64, 40, + 12,114,175, 94,195,251,251,239,191,103,122,244,232, 46, 26, 58,178,179,192,214,206, 14, 25,233, 41, 8,123,245, 28,175, 95, 62, +133,123,141,122, 88,180,116, 61, 96, 97, 81,102, 32,201,236,132,176,155, 10,251,234,221,150, 44,152,121,180,165,215,119,102, 53, +106,213, 19,213,175,106, 14,157,158, 65, 76, 76, 12,206,156, 14,212,133, 60,185,147,201, 49,218, 1, 57, 73,134,133,224,185,149, + 59, 42,218, 94,199,158, 28, 92,185,122,243,140, 45,219,247,206,154, 51,121,180,188,117,171,142, 8,190,182, 7, 39,206, 29,205, + 81,107,180,171, 69,124,172, 13, 78,166,202,242,230,129, 90,173,214, 21,221, 16,165, 86,171,117, 95, 91,216,187,119,239, 70, 66, + 66,130, 54, 50, 50,242, 18,195, 48,199, 74, 10,246, 92, 28, 54, 81,170,237, 77,200,181, 5,173, 90,117, 94,112,249,178,116,248, +236,217,218, 33, 67,135,206,132, 70,163,131, 88, 76, 5,114, 57, 15, 18,137,240,197,221,187,178,141,227,198, 89, 17,173,246,234, +158, 82,220, 6, 20,131,111,190,235,176,144,162,133,225,163,167, 65, 85, 72,209,186,255, 56, 12,229, 81,180,242, 30,140, 40, 66, + 72,179,201,243, 23,156, 28,208,169,189, 71,109,183,138, 18,219, 74, 21,161,112,112, 64, 74, 82, 18,238, 62,126,173, 95,122,244, +100, 72, 30,201, 50,200,175, 12,199,113,185,139,220, 1,180,159, 50, 7,132,207, 7,242,220, 56,228,239, 28,170,212,184, 5,136, + 64, 0,150,114,208,104, 52,212,128,116,198, 16, 66,250, 12, 25, 50,228,250,185,115,231,120,157, 58,117,170,127,234,212, 41,238, +107,234,142, 94,175,119,201, 35, 92,153, 38, 38, 38,130, 17, 35, 70, 64,175,215, 67,169, 84, 34, 35, 35, 3,161,161,161,154,126, +253,250, 73,242, 8,132,126,192,128, 1,101,182, 31,235,142,199,168,167,247,115,217,100, 37,136, 28,152,153, 28, 84,201, 74, 16, + 25,209,172, 54,183,105,221,241, 24,245,146,105, 22,203,147, 35,253,195,226,115, 46,111,219,119,242, 4,127, 88,175, 62,172,139, +226,141,175,212,142,254,217,174,123,153,141,218,103,206, 73, 13, 33, 89, 69,145,149,149, 53,119,225,194,133, 62,105,105,105, 46, +157, 59,119, 22,121,120,120,224,193,131, 7, 56,119,238, 28,115,255,254,253,232,156,156,156,121,148, 82, 53,128, 43, 95,146,167, +213,171, 87,175, 36, 16, 8,242,167,210,126,203,251,250,183, 83,167, 78, 13, 24, 61,122, 52, 42, 86,172,232, 73, 8,145,208,114, + 60, 71,148,210,130, 89,134,111,220, 81,132,111,220,184,209,217,193,193,129, 92,188,120,145,225,243,249,229, 86,110, 40,165,187, + 9, 33, 77,245,122,253,143, 99,198,140,129,151,151, 23, 24,134,193,129, 3, 7,176,107,215,174, 85,229,137,221, 90, 18,194,194, +194,158, 70, 71, 71,183,153, 57,115, 38,214,172, 89, 51,119,230,204,153,136,142,142, 70, 88, 88,216,243,175,177,155,153,153,169, +138,138,138, 50,105,222,188,121, 35, 87, 87,215,144,225,195,135,215, 26, 61,122, 52, 86,173, 90, 69,111,221,186,213,151, 82,122, +241, 95,209,129,191,122,147,178,191, 78, 21,251,203, 75,151,175,251,185,106,149, 74, 63,141, 26,209,159, 95,221,189, 22,114, 50, + 98, 96,109, 99, 15,151, 10,149,145,148,152,140, 75,151, 46,178,201,201,233,187, 89, 30, 89,242,230, 77, 74,220,215,216,116,118, +169,140,196,196, 68, 92,184,112,129, 77, 79,203,220, 1, 61,111,233,203,200,180, 4, 24, 81,166,146, 85,220, 98,120, 98,200,194, +219,188,157,135, 27,115,221, 59,228,170, 92,105,105,105, 83, 40,165,201,134, 50,115, 82,212,137, 90,191,126, 34,156, 63, 95, 23, +122,125, 51, 11, 83,211,246,148,227, 26,215,171, 87, 79,209,191,127,127,174, 85,171, 22, 98, 51, 51, 51,226,233, 89, 59, 51, 35, + 61,221, 10, 0, 40,192,150,197,162,243,131, 74, 11,248,194, 14, 44,171,171,147,155,214,178,131, 74, 27,194,204,171,216, 19, 91, + 1,135, 69, 60, 66, 70,112,148,238, 97,120, 88, 18,158, 64,147,190,116,244, 84,100,218, 47, 63,228,204,220,242,142,242, 10, 79, + 29,242,120,252,253,142,142,142,243, 98, 98, 98, 18, 41,165,236,151, 42, 27,249, 33,120,186, 77,157,170,111,248,221,119,140, 85, +133, 10, 28,165,148,141,120,250,148,220, 63,115, 70,120,255,204, 25,169, 94,163,185,121,156,210,112, 67,108, 58, 57, 57,249,157, + 61,123,214,224,181, 87,221,187,119,127,153,191,110,203,208,252,172, 90,197,229,114,149, 74,206,223, 85,169,148, 59, 61, 29, 30, + 17,135,240,136,216, 43,239,194, 99, 58,125, 73, 25, 21, 14, 42, 77,242, 92, 56, 80, 3,130, 74, 23,181,105, 99, 99,243, 68, 32, + 16,184,148,231,129,101, 89, 54, 46, 41, 41,169,129,129,233, 28, 84,169, 82,165, 85, 31, 62,124, 56,201,178,236,180,111,161, 16, + 18, 66, 90,240,249,252, 11, 44,203,202,138, 42, 94,249,100,140, 16,226, 38,145, 72, 62, 89, 12, 95,154,205,213, 11,106,255,220, +188,117,235, 94,247,239,220, 57, 53,107,121,200, 39,235,134, 38,247,178, 26, 57,104,194,148, 95, 15,111,217, 56,123,211,169,212, +221,101,170,205,246,246,183, 0,184,231, 19, 46, 3,242,178, 81, 25,202,176,212,212,212,212, 15,192, 0,142,227,108, 8, 33,201, +148,210, 35,133, 72,214, 23,231, 39,159,207, 95, 85,179,102,205, 41,175, 95,191, 62,204, 48,204,168, 66,215,175,169, 90,181,234, +132,200,200,200,223,244,122,253,172,114, 60,239,102,173, 91,183, 78,219,184,113, 35,111,218,180,105,240,247,247,183,162,148,166, +125,163,114,119,176,180,180,252,131,101, 89, 15, 74,233,217,172,172,172,185,148,210,156,242,218,204,115,241, 48,192,217,217,121, +150,187,187,187,251,155, 55,111,130, 98, 99, 99, 87, 23, 85,131,190, 34,157, 62, 61,123,246, 60,187, 97,195, 6, 82,161, 66, 5, + 68, 71, 71, 99,234,212,169,244,244,233,211,221, 41,165,231,191,180, 77, 38,132,204, 31, 55,110,220,242,161, 67,135, 22, 16, 90, + 63, 63, 63,122,254,252,249,225,148,210,253, 95,218,206,127, 75,245,222,179,138,109, 21,202,103, 87,212,171,237,209,247,135, 33, +189,200,253,199,111,240,224,126, 0, 98,226,226, 78,113, 60,222,188,176,176,228, 55, 95,107, 51,224,113, 24, 30, 4, 4,208,248, +184,248,227,160,252, 5, 47,195,147,194,255,191,238,253,191, 65,213, 42,110,234,144,124, 97, 40,172,114, 87, 24, 98,136,183, 90, + 39, 39, 39,164,164, 52,149, 10, 4,173, 36, 18,137, 55,143,207,191,153,154,148, 52,213, 80,162,245, 79, 84,236,207, 58,244,170, + 68, 92, 82, 72,130, 47,177, 89,116, 33,251,151,216, 44,143, 13, 67,109,150, 20, 84,154,211,104,226,172, 25,230,201, 38, 90,114, + 30, 20,181,233,226,226,242, 35,199,113,149, 12, 77, 19,143,199,139,136,137,137,217,249, 37,249,233,238,238, 78,223,190,125, 11, + 74, 41,249,150,229,254, 79,212,165,255, 37,155,251,215,215,117,170, 81,167,230,172,224,167,161,107,242,166, 21, 11,176,100,178, +149,105,171,118,109, 23,222,189,113,107,217,162, 77,169, 89,255,202,116, 18, 66,120,180,188,187, 91,190,208,102,190,147,208,242, +218, 20,137, 68,219,154, 52,105,242,227,131, 7, 15,254, 96, 24,102,204,255, 98,253, 36,132,248,240,249,252,153,213,171, 87,175, + 31, 22, 22,246,156,101,217, 53,165,145,172,114, 12,126,231, 85,170, 84,105,188, 72, 36,146,100,103,103,167,197,197,197, 45,164, +148, 30,251,119,203, 79, 79,119,235, 70,148, 22, 56,221, 94, 17,250, 54,229,209, 55,179, 73, 57,150,163,252,229,175,195,147,159, +253,127,151,251,127, 58,201, 42, 73,229, 18,252,127, 37, 34,159, 40,149,138,184,184,104, 0,209, 0,142,255,187,102,166, 33, 36, +171,156,114, 99,194,191,131,141,162,200, 35, 82, 1,223,194, 86, 81,210,244, 79,226,205,155, 55,196,248,200,255,251,225,135,105, + 65,113, 0,166, 54,242,254,252, 92, 30,185,154,229,221,227, 95,159,206, 47, 33, 89, 95,106,243, 75, 3, 62,235,116,186,159, 8, + 33,211,203,179, 91,241,191, 13,121,164,234,252, 63, 96,119, 37,128,149,255,238,247,255,242, 77,202, 19, 0,221,255,221,109,254, +143,213,201,242, 5,149, 54,194, 8, 35,140, 48,226,223,186, 81, 87, 25,115,193, 8, 35,254,189, 80, 88,213, 42, 76,188, 8,128, + 14, 37, 60,200,215,202, 97,188,195, 23, 52, 20,215,140, 54,141, 54,141, 54,141, 54,141, 54,141, 54,141, 54,255,183,108,254,183, +146,172, 79,200, 85,225,227,252, 93, 79,255,196, 11, 64, 7,163, 77,163, 77,163, 77,163, 77,163, 77,163, 77,163, 77,163,205,255, +230, 23,128, 49, 37, 29, 27,167, 14,141,248,199,177,185, 55,113, 6,128, 73, 39,105,236, 63,113,189, 17, 70, 24, 97,132, 17, 70, +252, 43, 65, 41,221, 81,210,212,225,191,156,104, 17, 66,156,144,235,104,175, 42,128,215, 0,238,148,103,187,114, 49,246,108, 0, +244, 39,132,244,203,187,217,227, 0,142,149,229,138, 34, 31, 50,153, 44, 65,173, 86,219, 1,128, 84, 42, 77, 84,171,213,133, 99, + 25, 16,124, 30, 30,133,230,254, 77,201, 11, 91, 43, 87,174,156,160,209,104,236, 12,248,251, 12, 74,105, 16,143,199, 11, 86, 40, + 20, 55, 94,191,126,125,174, 60,247,222,174, 93,187,225,124, 62,127, 5, 0,176, 44, 59,255,198,141, 27,123,255,193,114,107, 90, +193,201, 97,143, 78,175, 99, 18,146, 82, 23,150,180,117,123,107,119,226, 39, 32,152,149,247,121,245,248,179,165,187,176, 40,239, +245,165,164,175,145, 80, 40,156,104,111,111,223, 37, 38, 38,230, 9,128,217,148,210, 50,189, 26,187,186,186,254, 32, 16, 8,134, +176, 44, 91,133,207,231,135, 51, 12,115, 48, 42, 42,106,191,177, 25, 49,194, 8, 35,140, 48,162, 44,178, 85,220,247,229, 34, 90, + 53,109,136, 3, 5, 6,130,160, 35, 40,174, 18,224,200,171,100,250,209,208,223,251,212, 36,122, 61,147,251,159, 34, 30,216,139, +239,120, 59,124,124,124, 92, 38, 77,154,132, 22, 45, 90,224,193,131, 7,205,119,239,222, 61,146,207,231, 7,113, 28,119, 19,192, + 3, 74, 13,114,165, 32, 7,240, 61,128,193, 93,186,116,233,176, 98,197, 10,126,173, 90,181,160, 82,169,112,235,214,173, 86,171, + 87,175,222, 64, 8,185, 6,224, 16,128, 51,165,249,134, 81,171,213,118,249,156,137, 16, 98,215,183,111,223, 71,133,201, 85, 94, +124, 53, 66, 41,189, 79, 8, 9, 96, 89,246,193,241,227,199,163,107, 18,210,116,108, 37,209,159, 83,222,107, 63,243,153,164,209, +104,236, 78,255,186, 18, 2,137, 4,154,172, 76, 52, 31,241,247, 46,208,171, 63,207, 2,225, 24,240, 65,211,188,151,111, 8, 2, + 16, 28, 23, 23, 23,228,229,229, 21, 81,222, 66,230,243,249, 43, 46, 93,186,228, 72, 41, 69,167, 78,157, 86, 0,248, 71,136, 22, + 33, 68,210,172, 81,189,155,103, 79, 28,150,102,167, 38,160,243,247, 3, 14, 18, 66,134, 83, 74, 79,124, 66,154,186, 18,123, 34, +192,172,113, 43, 15,241, 1, 96,235,188,193,179, 55,116, 34,155,166, 94,166, 31, 9, 33,222, 64, 65,200,166, 95, 41,165, 55,183, +118, 37,246,224, 99,206,184,149,135, 8, 0,252, 62,111,240,172,173, 93,201,198,241, 23,202,183,171,146, 16, 50,126,248,240,225, +155, 86,172, 88,193,119,116,116, 68,108,108,108,103, 79, 79,207,234,132, 16,207,210, 22, 17, 87,170, 84,233,104,219,142, 61, 43, +247,238, 55,208,196,214,198, 18,113,241,201,102, 71, 15,255, 49,182, 82,165, 74, 93, 34, 34, 34, 6, 24,155, 17, 35,140, 48,194, + 8, 35, 74,232,119,190,220,189, 67, 67, 39, 34,203,209,161,167,128, 79,126,104,221,180, 86,251, 65, 93, 91,243, 60, 61,170,225, +229,139,208,239,206,220,120,184,218,211,158,119,157, 97,233,126,185, 8,167,159,198,149,190, 19, 70,207, 64,112,229,244, 33, 0, +192,248,145,131,249,143, 30, 61,170,214,176, 97,195, 2,135,128,237,219,183, 71,251,246,237,201,214,173, 91,235, 93,185,114,165, +222,174, 93,187,116,132,144, 61,101, 56,161,155, 88,181,106,213,213,155, 54,109,146,120,121,121, 65, 34,145, 20,156, 83, 40, 20, +232,222,189, 59,186,119,239,206,143,139,139,235,116,246,236,217, 78,191,254,250,171,150, 16, 50,147, 82,250,155, 33,153,183,112, +225,194, 70,197,124,125,137, 16,242,142, 97,152,231,117,235,214,141,174, 65, 72,181,159,186,182,184, 58,190,165,187,188, 36, 59, + 2,177, 24,251,134,231,246,213,133,137, 86,196,141,139, 80,152,153,166,152,152,154, 6, 1, 8, 6, 16, 68, 41, 13,126,247,238, + 93,168, 7, 33,245,154, 89,242,246,236, 74,101,235,150,131,108, 33, 58, 58, 26,230,230,230,178,182,109,219,198, 19, 66, 22,223, +188,121,115,199, 55,174, 83, 77, 23,207, 26, 47, 74,139, 12,194,199, 87,247, 49,189, 95, 43,147,169,155,255, 90, 6,224, 68,233, + 21,145,199,251, 53,128,243,157,154, 27,140,119, 97, 74, 74,138, 23, 0, 88, 91, 91,139, 1,220, 92,255, 16, 93,167,181, 36,228, + 43, 42,186,136,207,231,111,217,183,111,223,232, 31,126,248, 33, 55,116,196,221,187, 80, 40, 20, 88,186,116,105,197, 25, 51,102, +248,161,132, 64,192,174,174,174, 63,180,237,216,179,242,198, 53,203, 60,179, 82, 51, 52,219,183, 28,123,236, 84,187, 6,111,220, +196, 25,166, 27,117, 26, 7, 87, 87,215, 31,140,202,150, 17, 70, 24, 97,132, 17,229, 81,179,202, 36, 90, 53,108,201,222,214, 13, +220,251, 15,242,105, 37,169, 83,187, 22, 68,146,191, 29, 69, 55,108,212, 8, 13, 27, 53,226,249,102,103,117,124,244,248,105,199, + 63,175, 60,208,212,176, 37,199, 94, 39,209,225,134, 38, 44, 63, 40,237,138,239,237,219,229,164, 39, 74, 1, 64,110, 97,167,158, +119,250,227,141,150, 45, 91,194,197,197, 69,116,253,250,245, 81, 40,221, 95,202,188,215,175, 95, 75,248,252,210,253,161, 58, 57, + 57,161,111,223,190,168, 81,163,134,184,109,219,182,243,240,119, 56,140, 79, 32,149, 74, 19, 9, 33,118, 0, 96,101,101,197, 46, + 94,188,248, 57,165, 5, 51,131,148, 82,122,159,199,227, 61,224, 56,238,225,153, 51,103, 98,106, 17, 98,215,173, 97,141, 59,227, +135,246, 53,161,127,110, 40,145, 36,168, 51, 51,139,253,222, 68, 33, 79,146,201,229, 65, 18, 19,105, 48,128, 32, 0,193,206,206, +206,161,181, 8,113,105, 86,163,210,149,173,211, 6,155, 26,146,151, 13, 27, 54,172,238,237,237, 45,101, 89, 22, 57, 57, 57,248, +253,247,223,205,101, 50,153,121,151, 46, 93, 22, 1, 40,168, 0,158,132,212,233,227,196, 31,179, 56,150,153,240, 5, 68,198,162, +117,243, 70,145,155, 87, 45, 50,107,212,172, 53,222,220, 60,128,212,212, 44,100,164,103,131,227,184,207, 34, 12,143,191, 64, 19, +182,118, 39,171,183,206, 29, 60,135,240,120,164, 94,175,217,232,225,144, 49,153, 16,242, 2,128, 80, 44, 22, 23,212, 67, 66,136, + 83,237,218,181, 87, 87,251,174, 53,126,159, 63, 20,148,227, 40,128,213,134,170, 89,132, 16, 59, 83, 83,211, 51, 87,174, 92,105, +218,184,113, 99, 60,120,240, 0,239,223,191,199,248,241,227,181, 19, 38, 76, 16, 13, 27, 54,140, 76,159, 62,125, 18, 33,228, 79, + 74,233,189,207, 30, 4,129, 96,200,247,189, 7,136,179,211, 51,213, 90,141, 78,107,101, 99,193,105,114,212,202,228,180, 76,245, +128,193, 63,106, 95, 60,123, 56, 4,192,103, 68,235,107,242,211, 8, 35,140, 48,194, 8,131,209, 24,128, 45,128, 36, 0,143,139, + 28, 35,239, 51,138, 57, 78, 70,238,172,148,117, 33, 91,201,200, 93,246, 99,139, 92, 31,159,143, 0,164,125, 77,226, 74,242, 10, + 15,228,121,134,207,115, 80,156,239,168,152, 20, 34, 90,244,117, 18, 5,147, 26, 14, 54,229, 29,216,172,207,195, 39, 17,169, 5, + 50, 84, 44,162,195, 67, 49,124,234, 82,188, 78, 42,217, 35,183, 79, 77,162, 55, 23, 67, 96, 42, 2, 68, 38, 22,154, 65,171, 46, + 7, 52,106,212, 72, 61,207,139,231,227,183, 53, 87,233,154, 62,102, 48,154, 79,251,243,114,120,120, 56,227,228,228,132, 31,126, +248, 1,148,210,110,165,220, 92, 66,214,227, 0,187, 87,221, 90,160, 73, 66,241,203,164,194,194,194,112,251,246,109, 68, 69, 69, +161, 74,149, 42, 24, 53,106, 84, 34,165,212,190, 36,155,157, 59,119,190,245,235,175,191,122,173, 93,187, 54,112,223,190,125, 45, + 75,154,110,242, 36, 68, 94,175,162,195,227, 93,126,115,170,144,139,123,132,202,168,183,176,240, 87,145, 98, 72, 30,141,139,251, + 59,239,126,169,238, 8,185,185, 41,228,102,138,132, 97, 87,158, 20, 40, 89,121,239,175, 27, 18, 98,230,226,104,253,228,200,250, +133,206,188, 27, 71,165,162,237,247, 73, 89, 36,171,109,219,182, 1, 43, 86,172,176,140,139,139,195,181,107,215, 80,177, 98, 69, + 40,149, 74,172, 91,183, 46,254,206,157, 59, 78,121,233,181,111, 82,195, 45,232,247, 25, 35,204, 69,163,126,150,148,183, 34,137, + 4,130,223, 2, 46, 29,157, 96, 46,161, 72,143,123,143,119,161, 47,240,232,101,132,126,255,213, 32, 54, 83,165,241,161,148,222, + 40,238,119, 19, 91,145,106, 55,227,108,207, 94,186,245,216,221,209,209, 17, 99,199,142,197,199,143, 31, 65, 41, 5,199,113, 5, +187, 52,230,205,155,135,234,213,171, 99,248,192, 30, 74, 73,234,211,182,103, 95,210, 39, 6, 86,240,218,110,110,110, 87,110,222, +188,105,239,236,236,140, 59,119,238,224,227,199,143,112,112,112,192,245,235,215,177,106,213,170,125,227,198,141,235,183, 98,197, + 10,233,160, 65,131, 98, 47, 95,190, 92,161,232,154,186,138, 21, 43,134,158,189,124, 71,113,227,212,149,119,150,166, 38,144,219, + 89,131,175, 48, 83, 83, 16,165,131,157,165,104, 64,207,246,213, 34, 35, 35, 61,138,148,255, 87,229,167, 17, 70, 24, 97,132, 17, +127,227,252,249,243,212,199,199,135,228,191, 23,165, 16,132,144,115,121,124, 64, 11, 64, 92,232, 24,132,144,115,121,106,200, 39, +199,190,190,190,243,252,252,252, 94,228, 31,231, 95, 51,119,238,220, 90,171, 86,173, 90,217,188,121,243, 35, 1, 1, 1,139, 1, +188,253, 90,162, 85,146,202,101,208, 26, 45, 38,230, 17, 68,238, 93, 32,100,245,208, 39,191, 6,151,254, 1,144, 59, 64, 69, 20, + 72,137,255,128, 87,119, 78,228,114,195,178, 50,241, 21, 21, 18, 66,174,135,134,134,226,213,171, 87,136,142,142,134,137,137,201, +103,215,221,189,123, 23, 50,153, 12,142,142,142,134, 73,118,218, 79,227,177, 6, 53,116,131,162,185, 23,146, 7,253,132,235,215, +175, 35, 49, 49, 17, 34,145, 8, 98,177, 24, 12,195,148,105,143,199,203,141,248,155,175, 98, 21,119, 77, 91, 66, 4, 46, 86,138, +179, 91, 23, 77,169,196,187,127, 78,168,138,122,139, 56, 53, 11, 11, 67,148, 60,133, 28, 38,114,147,120,153,204,164, 40,201,122, +211,144, 16,161, 92, 33, 61,187,103,249,116, 7,254,179,235, 82,213,219, 32,136,138,177,209,177, 99,199,177, 0, 22, 81, 74,211, +219,182,109,107,191, 98,197, 10,203,216,216, 88,188,124,249, 18,199,142, 29, 75, 98,114,111,148, 80, 74,151, 0, 64,115, 66,164, +174,182, 22,151,127,251,121,138, 41,110, 30, 21, 99,212,207,229,174, 72,230, 30,221,207,247, 25, 54,110,194,166, 41,221,145,147, +165,194,161,171,207,112,233,233,187, 30, 0,238,150,182,238,237,183,187,244, 45, 33,164,125,239,222,189,159,223,190,125,219,102, +215,174, 93, 96, 24,166,216,215,174, 93,187,112,237,206,211,201,148, 26, 76,178,156, 42, 85,170,116,237,225,195,135,182, 38, 38, + 38,184,122,245, 42,210,211,211, 11,148,172,225,195,135,147,244,244,244,129,191,255,254,123,159,200,200,200, 53,119,238,220, 73, + 65,110, 56,168, 79, 42, 2,159,207,127,199, 48,186,154,142, 30,213, 4,253,186,183,110,157,157, 18, 4,133,117, 93,220, 15,124, +119, 54, 61, 45, 69,197,231,243,223, 21,190,254, 91,228,167, 17, 70, 24, 97,132, 17,229, 38, 52,231, 40,165,221, 10, 19,167,162, +132, 43,255,115,254,117,126,126,126,221, 10,147, 48, 0, 88,181,106,213,202, 66,199,202,111,145,182,178, 22,195,183, 37,132, 80, + 0,109,139,187, 72,243,242, 36, 52,175,206, 64,228,214, 18,226, 26, 61,192,119,107,133,168,160,155, 8,188,184, 30, 49, 47,238, +130,114, 44, 28,171, 55, 49, 52, 45,234,154, 53,107, 66,173,206, 93,154,165,209,104, 32,146, 91,170,167,143, 25, 44, 5, 0, 78, + 32,213, 20, 74,180, 65, 6, 77, 91,122,163, 73, 2,197, 35,251, 92, 2,156,175,108, 45, 31, 49, 2, 34,145, 8, 34,145,168, 32, +248,172, 33, 68, 43, 47, 40, 42,184,220,233, 43, 90,220,249, 70, 18,225,161, 35,139, 38, 54,145, 68, 6,139, 53, 33,247, 17,167, +225,232,217, 4,246,188, 33,145,147, 77,228, 38,177, 50, 19,147, 96,153, 66, 94,152,104,189, 3, 0, 42, 20,238, 63,176,100, 98, + 93,121, 66,184, 92,253,248, 58,226,213,156,206,172,120, 51, 75, 46, 94,188,104, 39, 16, 8, 28, 88,150, 69, 84, 84, 20, 94,188, +120,129,141, 27, 55, 38,100,101,101,181,125,250,244,105, 88,161,244,242, 26,203,196,199,246, 47,157, 82, 89, 16,228, 47,213,188, + 11, 41,150,188,149, 6,219, 58,189, 58,245,104, 91,239,252,216,161,243,209,179,235,119, 24,214,214,147, 70,196,165,170, 1, 92, + 53, 36,128, 53,165, 52,150, 16,210,177, 77,155, 54, 7,235,215,175,239, 65, 41, 69,157, 58,117, 48,112,224, 64,236,223,191, 31, +129,129,129,200,204,204,212, 93,185,114,101, 3,165,116,183,129, 15,156,137,165,165,229,165, 27, 55,110,216,154,152,152,224,202, +149, 43, 80,169, 84,112,116,116,196,132, 9, 19,196,171, 86,173,218,151,153,153,217,207,207,207, 79, 26, 17, 17,241,219,229,203, +151, 43, 2,224, 81, 74, 63,171, 4, 90,173,118,199,161,253,123, 55, 77,152, 56,201,249,198,131,151,215, 53,217, 89,230,110,110, +209,153,182,150, 10,211, 13,191, 44,113,213,106,181, 99,139,207,207, 91, 95,148,159, 70, 24, 97,132, 17, 70,124,174, 97,156, 63, +127,190, 68, 46, 82,152, 60, 21, 37, 91,229, 33,105, 0, 84,190,190,190,243, 8, 33,231,242, 20, 47, 21,128,184,127,130,100, 21, + 16, 45, 74,169, 63, 33, 4,148, 82,255, 18,173,112, 44,116, 17,183,161,139,184, 13, 89,243,201,248,203,111, 80,145, 63,249,242, + 16, 97,221,151, 94,189,161,209,104, 4,123,247,238, 45, 88,183, 5, 0, 44,203,126,243, 82, 44, 15,209,202, 35,122,159, 37,162, +146, 68,225,191, 99, 90,191,102,214,172, 82,168,189,123, 22,177, 26,142, 89,243, 86,167,124,156, 78,127,157, 87,130,205,211, 83, +199, 34,250,206, 53,152, 40, 20,209,163,111, 7, 23, 86,177,130, 0,188, 7,128, 74, 82,179,235,199,166, 15,106,229, 32,130, 72, +123,254, 56,226, 52,156,102, 91,164,126,247,198,226, 11, 21,148, 82,188,127,255, 30, 74,165, 18, 1, 1, 1, 56,113,226, 68, 82, + 81,146,149,151,222, 91,127,204, 30,210,212, 44,235,163, 72,251,248, 26,226, 52,156,166,186, 33,228,170,110,175,150, 34, 30,185, + 66,120,124, 89,215,214,158,152,250, 99, 47,172,255,227, 47, 70,107,215,186,219,166, 51, 23,250,103,107,116,243, 12, 33, 89,133, +210, 28, 4,192,147, 16, 34, 1,224, 61,112,224,192, 11,125,250,244,129,191,191, 63,206,158, 61,235, 14, 32, 62, 47,255,151, 2, +176, 71,238,110,196,146, 34,199,243, 68, 34,209,145,107,215,174,213,114,114,114,194,181,107,215,160, 82,169, 48,110,220, 56,237, +196,137, 19, 69,195,135, 15, 39, 25, 25, 25, 5, 74, 86, 64, 64, 64, 74, 73, 36, 11, 0, 98, 98, 98, 46,186,185,185,181,104,211, +166, 77,175,202,238, 53,204,194,179, 50, 19, 77, 76,164,178, 59,254, 55, 69,143, 31,222,251, 45, 38, 38,230, 81,241,249,121,221, +224,252, 52,194, 8, 35,140, 48,162,100,248,248,248,248,159, 63,127, 30, 62, 62, 62,254,101,244, 37,221,190,144, 12,229,255, 78, +232,231,231,247,194,207,207,239, 19,197,235, 43,149,182,162, 83,135,231, 41,165,241,133, 21,173,114,129,205,136,250,252, 6, 56, +174, 60, 55,251,217,119,150,150,150,140, 76, 38,251,132,104,113, 6,218, 76, 61,117, 24,225,227, 7, 23, 40, 89,249,202, 22, 58, + 15,255, 42,162,197,113, 92, 0,128, 79, 18, 33,183,175, 49,232,200,208,142, 45, 61, 43, 59,243,244,199, 54, 34, 70,201,168, 23, +189,214,169, 95,101,209, 30, 47,139, 89,100, 93, 96,147,209, 67, 42,151,125,144, 41,228, 69, 73, 86, 36, 0, 40, 28,170,247,217, + 55,200,187,109,189, 26, 85,121,204,209,117,136, 85,234,179,125, 67,117,186,240, 28,122,178,132, 60, 92,244,221,119,223, 45,178, +182,182,150,110,218,180,201,220,205,205, 13, 12,195,104,139,146, 44,185,125,141, 65, 71,135,119,110, 89,221,193,146,167,255,115, + 51,162, 85,172,114, 99,184,126,223, 54, 3, 72,150,141,185,226,242,182,149,227,101, 38, 18, 33,212,106, 53, 86,109,253, 19, 87, +238,133,116, 75, 10, 62,117, 25,192,229,175,168,147,163,187,117,235,182,126,233,210,165,208,235,245, 24, 53,106, 20,222,189,123, +119,229,245,235,215, 27, 93, 93, 93,103,206,158, 61,219,201,193,193, 1,253,251,247, 23, 1, 24, 94,130,141, 95, 14, 29, 58,212, +173, 94,189,122,240,247,247, 71,122,122, 58, 28, 29, 29, 49,113,226, 68,177,159,159,223,190,204,204,204,126, 43, 87,174,148,190, +127,255,190, 84, 37,235,147,122,205,178,203,183,175, 31, 63,179,113,179, 86,188,183,111,195,152,168, 38, 94,188,155,215,206,222, +182,182,182,222,247, 73,126,142,232, 82,238,252, 52,194, 8, 35,140, 48,226,155,225, 60, 0,159,162, 42, 87, 81, 18,150,175, 88, + 21, 62, 46,122,125,222,121,205,215, 38,168,168,162,149, 71,188, 62, 93,163, 85,120, 17,124, 89,224,114,146, 12, 34, 79,159,177, +213,154, 68, 63,182, 49, 4,243,188,120, 16,201, 45,213,221,151, 94,189, 81,210,181,114,185,220, 96, 69,139,211,168,203, 34, 78, +229, 34, 90,121,107,180, 46, 81, 74, 63, 33, 90, 22, 14, 53,188, 22,204,153,178,161, 85,159,206,188,132, 31,155, 35, 61, 91,163, +153,253,146,225, 98,148,165,147,172,220, 94, 92, 31, 97, 34, 87, 4, 75,229,159,172,203,138, 2, 0,153,125,181, 38,190,211, 38, +109,109, 55,168, 59, 73, 26,215, 10,105,233, 42,205,204, 23, 12,137, 85,209,126, 47, 41,189, 89,156,185,235,215,175,111, 7,176, +189,109,219,182, 9,114,185, 28,217,217,217,159,149, 65,126,122, 91,246,233,204, 75, 24,221, 20,169, 57, 58,205,236, 23, 12,226, + 84,220,145,178, 72,150,173,133,233,229,109, 43,198,155,196,197, 68, 66, 36, 18, 65,161, 80,224,234,221, 96, 36,133,156,254, 26, +130, 5, 62,159,191,120,222,188,121,139, 38, 76,152,128,148,148, 20,156, 61,123, 22, 93,187,118,197,225,195,135,221, 46, 92,184, +176,222,219,219, 27,124, 62, 31,231,206,157,131, 94,175,127, 83, 66,121,246, 26, 51,102,204,204, 62,125,250,224,209,163, 71,136, +143,143,255, 68,201, 74, 79, 79, 31,184,117,235,214, 62, 17, 17, 17,101, 42, 89, 69,208,164, 82,213, 6,162,185, 11,215, 66,163, + 76, 20, 36,197, 62,240,191,126,149,119, 63, 53, 53,213, 4, 64,198,151,230,167, 17, 70, 24, 97,132, 17, 6,171, 90, 37,113,145, +164, 60, 18,149, 84,220,113, 33,130, 85,220, 49, 41,162,130,105,139,156, 15,252, 39,239,201, 32, 69, 75, 96, 95, 27, 76, 66, 72, + 33,162,149,248,201,121,169,169,149, 65, 83,135,122, 6,130,109,187, 11,252,104, 73, 83, 82, 82,164, 54, 54, 54,234,194, 4,193, +196,196, 4, 78, 78, 78, 72, 75, 75,195,142, 29, 59, 0,160,172, 69,209,140, 89,159,161,104, 50,104, 20, 30,187,136, 65,245,186, + 2,101,107,219,136, 17,159,144, 45,145, 72,148,191, 54,172,172, 78,247, 33, 33, 36, 18,192,125, 74, 41,109, 88,189,202, 50,169, + 92, 62,162, 81,221,170, 54, 83,199,143, 22, 70, 36,106,112,163,213,220,244, 63,127,153,163,136,166,138, 9, 31,104,250,189, 50, +236,133,127,255,251,129,162, 74, 86, 76,131,234, 85,230, 75, 77,164, 63, 54,171, 93,221,193,119,250,120, 97, 68,130,134,220,104, + 50, 59,243,196,175,179, 77,222,195,116,102, 52, 77,187,105, 64,241, 44,234,218,181,235, 34, 74, 41,229, 56,110, 33, 0, 20, 78, +239,244,137, 63, 10,195, 63,170,113,189,213,252,180, 19,191,204, 49,141, 70,233,233,181,173,219,171,165,189,165,217,229,109, 43, + 39,152,196,199,126,128, 68, 34,129,169,169, 41,162, 19, 50, 32, 20,240, 85, 95, 83,217, 8, 33, 18, 47, 47,175, 57,227,199,143, + 71,112,112, 48,198,141, 27, 23, 31, 21, 21,117,242,232,209,163,227,126,254,249,103, 65,167, 78,157, 16, 31, 31,143,213,171, 87, +235,239,222,189,187, 18,192,234, 98,235,163, 64, 48,122,217,178,101, 52, 46, 46,142,188,127,255, 30,142,142,142,152, 52,105,146, +120,229,202,149, 5,107,178,202,163,100,229, 35, 38, 38,198,223,189,170, 43,122, 92,220, 0, 70,175,241, 79, 79,137,186,253, 42, + 60,205,223, 74, 44,158,209,170, 97,221, 47,202, 79, 35,140, 48,194, 8, 35,190, 9, 30,151,113,252, 47, 69,113, 83,135,134, 18, +173, 55,155,231,143,116, 31, 57, 97, 22,100,110, 45,161, 9, 61, 5, 46, 59,161, 64,209,146, 42, 44, 97,229,234,129,244, 28, 13, +142, 95,127, 10, 0,111,202,147,176,172,172, 44, 52,108,216, 16, 91,134, 87,111,167,206, 74,145,202, 0,104, 36,102,234,211,226, +214, 55, 46, 92,184,160,228, 56,238, 8,128, 11,101,152, 89, 92,171, 86,173,223,214,174, 93, 43,246, 24, 52, 18,217, 15,238, 20, + 85,167, 32,147,201, 32,145, 72, 16, 20, 20,132, 27, 55,110,104, 1, 44, 46, 35,195, 30, 50, 12, 19,120,228,200,145, 24,247, 42, + 46,157,219, 54,110, 50,121,222, 92, 95,211,151,119,174, 96,225,202,223,184,106,141, 58,101,172, 58,124, 58, 43, 67,225,218, 94, + 25,247,234,185, 1,183, 26, 88,132,100,197,121, 84,118,109,215,188, 65,253, 89, 11, 23,206, 55,123,113,231, 42,126,254,117, 27, +117,175,215, 33,227,215, 19,103, 50,147, 77, 42,126,167, 74, 8,125,100, 72, 30,222,186,117,107, 59,128,237,249,199, 69,211,235, +187,116, 35, 87,189,113,231,180, 85,135, 79,228,100,154,186,118, 40, 45,189,118,158,189, 91, 84,112,180,186,188,121,249, 79, 38, + 31, 99,163, 32,145, 72,160, 80, 40, 16, 21,159,142, 69, 27,142,229,232, 56,174,243, 87,214, 69,137,169,169,169, 68,167,211, 97, +203,150, 45,136,138,138,106, 78, 41,141, 34,132,108, 27, 48, 96,192,166, 58,117,234,212,124,241,226,197,155,236,236,236, 9,148, +210, 87, 37, 25,177,176,176,104,110,107,107, 75,238,223,191,143,159,126,250, 73, 59,105,210, 36,209,176, 97,195, 72, 90, 90,218, +151, 42, 89, 0, 0, 23, 23, 23,175,239,125, 90,160,101,199,113,254, 90,117,250,237,136, 87,251,252,121,244,158,180, 97,253,186, + 95,148,159, 70, 24, 97,132, 17, 70,252,111,160,180,197,240,165, 70,163,246, 2, 4,213,173, 49,182,150,179,232,227,254, 95, 38, +209,172,240, 0,170,122,180,157,102,158,250,145,158, 95, 61,140, 94,216, 60,149,142,243,169, 69,107,218,145,143,213,173, 49,214, + 11, 16,148, 22,221,187,107, 13,232, 59, 86, 5,237, 88, 21,212,167, 58,244, 0,230, 53,104,208,224,244,196, 38,160,244,229, 33, + 74, 95, 30,162, 19,155,128, 2,248, 9,128,194,208,136,225, 0, 28, 1,236,104,216,176, 33,115,243,230, 77,250,186, 95, 7,250, +172,166, 13,157, 48, 97, 2,253,249,231,159,233,224,193,131,169,173,173, 45,131,220,249, 82,199,178,108,246,232,209,195,133, 82, +138, 10, 21, 42, 88, 52,242,168,246, 49,232,250, 89,122,123,255, 38,250,199,196,222,180,105, 29,143,100,135,154,109, 2,101,142, + 53,234, 27, 26,217,220,193,193, 97, 46,165,180, 51,165,212,145, 82, 10,119,119,107, 69,131,154,213,226, 2,175,157,165,119, 14, +252, 70,255,152,216,155, 54,171,235,153,226,226,225,253, 74,106, 87,179,201,151, 70, 75, 47, 54,189,181,107, 38,219, 87,107,241, +188,164,244, 22,182, 89,185, 73,255, 51, 49,113, 9,244,225,195,135,244,194,133, 11,244,206,157, 59,116,255,209, 51,212,181,113, +191,108,155, 58, 61, 91,126,109, 84,119, 0,230, 62, 62, 62,244,205,155, 55,180, 75,151, 46, 20,128,249,151,216, 4,112, 58, 34, + 34,130,134,132,132,208,121,243,230, 81, 0,123,199,143, 31,175,202,200,200,160, 29, 58,116,136, 2,192, 67,145,186,104,104, 58, +171, 84,114, 94,213,171,123,235,197, 19,127,234,227,245,181,249,249, 13,163,194, 27,109, 26,109, 26,109, 26,109,254,215,219,252, + 79,126,229,241,144, 49,133,222, 27,228,159, 43, 85,209,186,149,171, 6,108,175, 99, 79, 14,174, 92,189,121,198,150,237,123,103, +205,153, 60, 90,222,186, 85, 71, 4, 95,219,131, 19,231,142,230,168, 53,218,213, 34, 62,214, 6, 39,211, 50,253, 80,156,127, 69, +133,197,168, 71, 38, 86, 85, 81,224,131,233,109, 26, 64, 41,221, 86, 78, 38, 25, 15, 96, 12, 33,100,173,183,183,247,138, 31, 91, + 54,233, 61,177, 69, 59,232,245,122,236,223,191, 31, 31, 62,124, 56, 9, 96, 62,165,212, 32,197, 45, 56, 56, 56,185, 86,181,138, + 83,172,100,162, 89, 19, 6,247,178, 77,122,247, 18, 49,161,207, 0, 0, 26,141, 74, 31, 31,230, 95,175, 60,233,147,201,100, 15, +109,109,109, 95,219,218,218,166,177,154,236, 49, 82,129,217,194,113, 3,191,183, 75,137,120,133,232, 23,185, 51,163, 26,181, 82, + 23, 29,118,163,230,151, 48,233,138, 21, 43, 74,228, 66,140, 45, 54,189, 90,181,254,227,155,208,250,134,216, 81,106,180, 43,151, +172,223,255,221,242, 89, 35, 36,102,102,102,120, 26,242, 22, 11,215, 29,206, 81,105,245,157,147,130, 78,221,251, 70,172, 31,122, +189,222,224,141, 14, 37, 96, 78,189,122,245,106,172, 88,177,194,125,248,240,225,248, 90, 37,171, 48,222,189,143,241,109,219,182, +173,231,219,215, 79,189,173,100,162,131, 95,147,159, 70, 24, 97,132, 17, 70,252,207,192,135, 82,186, 35,223, 67,124,222, 84,226, + 51, 67,166, 14,115,137, 71, 2, 85, 2, 88, 90,197,158,108,155,187, 98,253, 34, 30,217, 48,130,163,116, 15,195,195,146,240,100, +154,244,149, 29,175,210,167, 38, 97,190,235, 57, 88, 0, 0, 66, 1,152,175,176,245, 6, 64, 31, 66, 72,227,157,247, 30, 45,200, +251,122, 57,165,180, 92,115,185,166, 2,132,180,242,172,226,220,186, 65, 45, 41,159, 85, 33, 38,244, 29, 82,115,212,184,250,226, + 67, 58,143,242,246,148, 55, 93,225,225,225,183, 0,160,118,181,138,161,173, 61,171,186,182,105, 88,203, 68, 72,180,136,121,249, + 20, 25, 42, 45,174,188,248,144, 1, 66,190,120, 65,245,183, 74,239,199,160,211,143,109,235,246,234, 64, 8,185, 54,111,226, 32, +201,162,117, 71,190, 41,201, 2,160,140,141,141, 77, 81, 42,149,214,113,113,113, 90,124,161,147, 56, 74,233, 91, 66, 72,157,169, + 83,167, 46,157, 57,115,230,172, 95,126,249, 69,244, 37,107,178, 74, 66, 90,236,135, 83,109,106,125,187,242, 55,194, 8, 35,140, + 48,226,191, 31,249,235,180,138,174,215, 42,151,123,135,240, 4,154, 4, 96, 66,213,170,100,250,187,119, 84,251,173, 18, 87,156, +210,245,149,228,237, 49,128,238, 95,108,128, 71,178, 30,188,249,144,253,240,205,135,108,112,148,114,148,106,120, 60, 68,231,232, +116, 43,195,194, 99, 46,127, 69, 41,176,143,223, 70,169,158,188,139, 86, 83,142,163, 28,165, 90, 66,240, 81,175,231, 86,134,132, + 71,158,249,119, 72,111, 82,208,169,123, 14,158,189, 91,223,123, 24, 50, 61, 39, 71,247, 91,210,203, 83, 1,223,176, 92,244,132, +144, 33,205,155, 55, 31,201,178,236, 54, 74,169,254, 43,108,105, 1,204, 33,132,156, 12, 14, 14, 62, 22, 16, 16, 16,255, 45, 72, +214, 63, 90,254, 70, 24, 97,132, 17, 70,252, 87,226,139,131, 74,151,132,111, 73,178,254, 29, 17,252, 38,162,225, 63, 97, 55,228, + 77, 68,237,255,132,244,126,124,121,242, 9,128,129,255, 80,101,188, 2,224,202,183, 36,213,132,144, 74, 0,248,223,132,100,253, +131,229,111,132, 17, 70, 24, 97,196,127, 39,190, 58,214,161, 17, 70,252,155,143, 36, 40, 0,198,152, 19, 70, 24, 97,132, 17, 70, +252,139,250,161, 18, 21, 45, 2,160, 67, 9, 63,186, 86, 14, 38,215,225, 11, 18,117,205,104,211,104,211,104,211,104,211,104,211, +104,211,104,243,127,203,230,127, 35, 8, 33,142,200,245, 86, 95,224,181,190,128,124,253,195,219, 29,141, 91, 95,141, 54,141, 54, +141, 54,141, 54,141, 54,141, 54,141, 54,255,219,221, 59,140, 41,252, 94,248,197, 51, 10,126, 70, 24, 97,132, 17, 70,252,131, 35, +125, 73, 94, 32,249, 47, 58,111,132, 17,255, 65,117,189, 96,215, 97,225, 53, 91,130, 47, 48, 84, 45, 79, 9,123,251, 15, 38,118, +162,163,163,227,152,186,117,235,122,136, 68, 34, 94, 86, 86,214,146, 27, 55,110, 44, 46,122, 93,155, 90,194, 39,124, 30, 92, 10, +253, 18, 32,124,128,199, 3, 75, 17,115, 59, 80,217,200, 88,244,255,214,149,210, 77,102,102,251, 23,225,241,197, 44,163, 3,171, +215, 1,248, 59, 28, 19,199, 49, 31, 24,173,186, 83, 73,191,119,172,223,219,149, 97,233, 42,128,219, 74,192, 27, 71,193,253, 78, + 40,111, 28,229, 97, 43,225,240, 19, 4,250,213, 96,132, 51, 5, 34,193,252,184,167,199,163,255, 27,242,236,207, 63,255,228,127, +205,239,251,246,237, 91,108, 0, 81,103,103,231,115, 38, 38, 38, 85, 75,250, 93, 78, 78, 78,124, 92, 92,156,247,127,121,125,108, + 3, 96, 51,128, 90, 69, 78,189, 2, 48,133, 82,122,253,107,255,163, 45, 33, 2,123, 96,172, 8,152, 13, 0, 58,224,215, 4, 96, +251,173,111,180,145,227, 91,192,206,206,238,182, 64, 32,112,207,201,201,201,201,204,204,172, 98,102,102, 22, 46,151,203,229, 12, +195,188, 73, 76, 76,108, 83,206, 60, 29,143,188, 80, 90,132,144, 89,148,210,173,229, 57,111,132, 17,255, 41,248,170, 93,135,132, +144,234, 0,188,242, 94,109, 26, 55,110,108,159,147,147, 3, 66, 72, 2,128,219, 0,252, 1,248, 83, 74,195,190, 69, 98,249,124, +254,154,141, 27, 55,206,152, 52,105, 82, 65, 48,232,160,160,160,226,175,229,193,229,230,217,107,118,143,131,195,208,184, 67,223, + 60,162,197, 3,114,226,225,221,177,201,151, 54,182,166,150,150,150, 75, 8, 33,253,120, 60, 94,153,157, 26,199,113, 44,165,244, +120, 90, 90,218, 34, 74,105, 86,121,254, 75, 33,151,234, 25,150, 45,246, 63, 4,124, 62,155,157,163, 46,209,237,133,181,181,117, + 0,143,199,171, 92, 56, 96,118, 94,250,139,253, 92,248,152, 97,152,152,164,164,164, 70, 6,228,133,148, 39, 16, 77, 33, 68,212, + 17, 60,174, 58, 64, 64,192, 11,227, 88,237, 85,142,209,109,164,148,170,191,134,100, 57, 86,168,114,103,218,252, 85, 46, 33,161, +175, 48,111,226, 96,252,178,121, 47,230, 78, 25,137,141, 59, 14, 99,202,152, 65,240,244,172, 85,170, 13,150,146, 37, 11,167, 12, +241, 94,177,241, 80,227,249, 83, 6,203, 87,108, 60,212,120,254,212,193,138, 21,155, 14, 53,154, 63,117,136, 98,249,166,131,141, + 22, 76, 29, 98,182, 98,211, 33, 29,128, 81, 95,146,206,193,213,157,115, 8,195, 20, 59,218,166, 2,129,230, 80, 88,172,252, 95, +241, 80, 15, 31, 62,188,174, 74,165,122, 58,184, 99,131, 85,245,171, 59,199, 22,119, 77,202,199, 88,231,240,215,207,124,133, 34, + 89,195,239,125,247, 6,149,102, 79, 34,145, 84,126,245,234,149, 59,199,113, 96, 89, 22, 12,195, 20,188,107,181, 90,180,105,211, +230,155,108,156, 33,132,116, 7,176, 36,247, 97,133, 31,165,244,216, 87,216, 82, 8, 4,130,105, 98,177,216,139, 97, 24, 15, 0, + 16, 10,133,161, 26,141,198,159, 97,152,245,148,210,236,114,154,220, 16, 27, 27,235,169, 80, 40,160,211,233, 10, 2,208,243,249, +252,154,174,174,174, 91, 0,184,127,237,253,219, 3, 99, 91,180,106,181,113,216,140, 25,124,213,237,219,216,184,123,247, 6,100, +102, 2,192,150,178,126, 43,145, 72, 46,243,120, 60,183,242,252, 31,199,113, 31, 52, 26, 77,167,242,252, 70, 32, 16,184,199,197, +197,217, 57, 57, 57, 1, 0,228,114,185,188,240,113,121,148, 44, 0,171, 41,165, 50, 0,224,241,120, 27, 91,180,104,209,156, 16, +194, 0,160, 28,199,241, 8, 33,131, 56,142, 19,228, 93,191,154, 16,178,155, 82,170, 49,118,219, 70,252, 39,170, 89, 37,145, 45, + 65, 41, 63,186, 0,192,171,113,227,198,178,129, 3, 7,194,203,203, 11,238,238,238,144, 74,165,185,141,120, 74,138,253,243,231, +207,251,223,190,125,187,255,217,179,103, 65, 8, 81, 1,184, 75, 41, 45,246,161,238,208,189,245, 36,169, 66,178, 9, 0,146, 98, + 82,226, 99,222, 39,110,138,143,143, 95, 77, 11, 69,163, 38,132, 84, 25, 54,108,216,244,201,147, 39,227,220,185,115, 56,124,248, + 48, 52, 26, 13,178,178,178,112,227,198,141,226, 19,170, 76, 68,218,141, 85,128, 60, 2,136,242, 7, 76,236, 0,185,253, 23,103, +150,165,165,229,146, 41, 83,166, 76,245,244,244, 44,240, 98,174,215,235,193, 48, 12,244,122, 61,210,210,210, 48,125,250,244,124, + 6, 11,142,227,112,241,226,197, 73, 99,198,140, 1,128,105,197,217,108,222,200,245, 9,143,240, 92,242,181, 26,202,178, 49,247, +159, 69, 55, 98, 88,150,175, 86,235,138,141, 84, 46,149,138, 74, 37,121, 66,161,208,229,229, 95,127,217,241,196, 98, 80,150, 5, + 56, 14,148,227, 0, 20,122,209,220,239, 40,203,129,234, 89,112, 12, 7, 70,165, 65,147,241,227, 13,169, 52, 45,132, 98,217,225, + 33, 63,206,112,104,218,172,153,176, 98, 5, 39, 48, 44,135,119, 17, 49, 14, 79,159, 60,104,121,124,223,150,113,132,144, 65,148, +210, 47,242,179, 37, 54, 49,187,242,219,239, 59, 93, 30, 63, 15,193,245,155,183,113,237,134, 63, 0,224,242,205, 92,115, 60, 30, +175,172,244, 89, 90,187,123,215,157, 52,178,167,124,249,218, 93,146, 73, 35,123, 10,254,126,223, 41,153, 52,242,123,193,138,245, + 59, 37,147, 70,126, 47, 92,246,235,111,245, 9, 33,150,148,210,180,146,236,149, 84, 70,132, 97, 36, 7,195, 19,248, 0,144,180, +109, 27,244,137,137,112, 90,180, 8, 0, 48,164,138,189,193,211, 29,182,182,182, 79,132, 66,161, 75, 89,215,233,245,250, 50, 73, +240,240,225,195,235,169, 84,170, 39, 12,195, 80,129, 64,224, 59,184,215,119,167, 59,183,174,151, 82,248,154,160,160, 64,235,149, + 43,255,234,121,236,105, 22,237,223,208,244,233,185, 53,195, 27,117,155,185, 55,176,148, 14,153,167,209,104,240,230,205, 27, 20, + 14,242, 94,152,215,126, 97,227,195, 3,176,209,218,218,186,105, 74, 74,202, 16, 0,243, 50, 51, 51,235,242,249,124, 88, 89, 89, +205, 35,132,188, 51, 55, 55,223,149,145,145, 17,144,167, 26,113, 6,218,109, 99,102,102,182,255,212,169, 83,150, 13, 26, 52,224, + 37, 39, 39,163, 82,165, 74, 72, 77, 77,109,114,251,246,237,134,163, 70,141, 26, 69, 8,249,129, 82,122,187, 28,201,173, 97, 98, + 98, 66,135, 13, 27, 70, 88,246,239,219,253,227,143, 63,208,169, 54, 83,245,167,206,114,165, 90, 75, 51,174,191, 49,255, 73, 36, + 18,221,141,140,140,204, 40,111,126,136,128,217,195,102,204,224, 43, 34, 35,161, 8, 12,196,144,204, 76,193, 47,185,234, 86,153, + 68,139,199,227,185,237, 63,188,199, 93, 44, 22,131, 97,152, 2, 50,152,223, 70,233,245,122,232,116, 58,232,245,122,176, 44, 11, +189, 78, 15,191,229,191,126,113, 91,104, 98, 98, 98,226,228,228,148, 96, 98, 98, 98,242, 45, 58, 34,137, 68, 34,216,183,111,223, + 32,177, 88, 12, 0,208,106,181,168, 93,187, 54, 49,118,209, 70,252, 55,145,173,226, 84,174,210, 70,169, 93, 50, 51, 51,193,178, + 44, 76, 77, 77,193,231,243,139, 42, 42,232,216,177, 35,218,180,105,131,129, 3, 7,226,229,203,151,178,129, 3, 7,118, 44, 81, + 25,152,209, 13, 21,220,237,243, 58, 19,206,241,222,249,231,171,254, 88,246,167, 45,128, 25,133, 46, 27, 53,118,236, 88,146,146, +146,130,126,253,250,221,214,104, 52, 61, 40,165,153, 37, 42, 26, 28, 98,188, 7, 14, 1, 71,137,108,253,195,157, 68,171, 86, 81, + 30,143,167,202,159, 58,252,194,140,234,231,228,228,132, 35, 71,142, 64,171,253,220, 93,152,153,153, 25, 94,188,120, 81, 88,129, + 67,179,102,205,248,132,144,126, 37, 17, 45, 66,120, 46,247, 30, 71,218,229, 31,119,235, 88, 75,212,188,145, 91,130,173,181, 41, + 5, 64,230,207,159, 95, 64,220, 0, 96,201,146, 37,134,164, 19, 60,161, 16, 73,254,254,127, 55,196, 2, 30,120, 34, 2, 34, 4, +120,130,220, 89, 84, 80,128,178, 0,199, 0,156, 30,144, 58, 86, 48,196,118, 19,103, 87,247,115, 43,215,109,181,208,232, 41,142, +156,185,142,136,136,247,224,243,120,168, 82,213, 29,223,181,109, 45,108,216,184,121,133, 95, 23,207, 56, 75, 8,233, 66, 41,125, + 84,238,140,230,168,180,170,171, 13,118,253,241, 20,182,150, 10,244,235,217, 21, 50,169, 4,191,108,222,131,229,115, 39,194,189, +138, 27,182,111, 88, 81,226,207,205,205,205,151, 54,168, 83,179,202,158, 99,151,224,213,166,133, 96,239,177,203,104,219,166,165, + 96,207,177, 75,104,235,213, 90,176,247,216, 37,180,109,211, 74,184,247,216, 37, 52,107, 84,167,106, 64, 74,208, 82, 0, 19, 75, +190,231, 34,101,244, 93,110, 25,185, 11, 68, 5, 29, 65,228,184,113, 0, 80, 64,180,202, 3,161, 80,232, 18, 23, 23,103, 87,214, +117,101,169, 6,121, 74,214, 19,134, 97,144,152,152, 72,210,211,211,169,133,133, 69,207, 75,219,231,157,234,212,170, 94, 42, 0, + 4, 6, 6, 90,249,249,173,236,121,244, 73, 38, 84, 15,126, 35, 7,255,242,231,134,244,240,122,114,102,213,240,134,125,251,246, +125, 86,156, 93,141, 70, 19, 81,191,126,125,154,247,217, 89, 34,145,136,138,212, 9, 39,119,119,247,207, 84,107, 3,166, 20, 55, +222,191,127,127,162,167,167, 39,106,214,172, 25,208,180,105, 83, 51,185, 92,142, 75,151, 46,193,195,195,163,150,153,153,217,195, +227,199,143, 11,231,204,153, 83,111,247,238,221, 0, 48,201,128,250,217,193,219,219,251,200,185,115,231,164, 34,145, 8, 42,149, + 10, 47, 94,188,128,185,185, 57,196, 98, 49,190,255,254,123,126,203,150, 45,173,219,182,109,123, 34,111, 48, 96,240, 14, 40,181, + 90, 77,231,205,155, 7, 19, 19, 19,152,152,152, 64, 46,151, 67, 46,151, 67, 33, 5,217, 54,197, 85, 54,121, 71,186,108,218,162, +109,171,246,111, 93,124,211,213,213,245,231,168,168,168,244,242,214, 5,213,237,219, 80, 4, 6, 2,133,158, 93, 67, 97, 46,183, +130,175,175,111, 89,138, 20, 68, 34, 17, 90,180,104, 81,166, 61,107,107,235,147, 2,129,192,190, 72,231, 32,245,245,245,101,195, +194,194,228, 60, 30, 79,206,113, 28,124,125,125, 89,134, 97,164,246,246,246, 1, 28,199, 37, 36, 37, 37,245, 46,203, 54,165, 84, + 67, 8,153,197,227,241, 54, 74, 36, 18, 65,197,138, 21, 63, 44, 92,184,240,126,158,154, 9, 74, 41,175, 98,197,138, 77,100, 50, +153,155, 70,163, 97, 0,204, 50,170, 89, 70,148,130,134,185,162,112, 1,180, 0,196,249, 2,126,110,111, 7,155, 34,223, 3, 64, +114,222, 64,209,190,132,227, 20, 0, 47, 1,212, 0, 96,151,119,238, 49,128,212,242, 38,176, 84, 69,139, 16, 66, 11, 93, 88,208, +177,152,154,154,226,241,227,199, 32,132,192,212,212, 20,102,102,102, 48, 55, 55, 71,102,102, 38, 94,190,124,137, 87,175, 94, 33, + 50, 50, 18,132, 16, 84,169, 82, 5,249, 15, 80, 33, 91, 5, 13,220,161,181,231, 32, 85, 72, 64, 8,208,160, 93, 93,212,109, 83, + 27,141, 31,133, 79,113,114,114,218, 17, 23, 23,247,134, 16, 34,168, 93,187,246,168,102,205,154, 97,221,186,117,208,104, 52,235, +138, 35, 89,133,109,222,126,161,111,148,215, 57,205, 60,112,233,157,201,208,206, 85,149,113,113,113,107,190, 32,115, 62,105,136, +147,147,147, 13,142,197,199,113, 28,210,210,210, 74,181, 89, 84, 33, 88,191,241, 55,139,172,140, 4, 44,251,229, 0,244,122, 61, +102,204,152, 1,142,227, 10, 94,233,233,233, 6,165,147,178, 69, 68, 6, 94,238,139,240, 0, 34, 0, 92, 7,228,242,138,168, 35, +191,129, 80,128,176, 0,138,220, 87, 81,155,132, 16, 41, 95, 36, 59,186,248,151, 77, 22,207, 94,197,224,204,245,103,208,101,198, + 34, 62,240, 20, 0,160, 74,139, 65, 56,166,225,163,105,221,170,152, 58,255, 87,203, 5, 83,127, 56, 74, 8,169, 89,120, 26,209, +144,142,141, 82, 22,203,150, 46,197,142, 77,235,240,235,186, 77,200,204, 72,135, 80,104, 3, 0, 96, 24, 22,108,145,123,251,236, +222, 41,237,188, 96,230, 88,178,113,231, 9,212,174,230,128,179, 87, 3,208,168,150, 27, 46,222,120,132,102,117, 42,225,178,255, + 83, 52,171, 91, 25,254, 15, 94, 96,198,132, 97,228,222,197,189,157,203, 83, 70, 27, 54,252,102,145,149,153,128,115, 43,246, 33, +113,203, 22,124,152, 56, 17, 77,242,174,121, 68, 8, 68, 46, 46,128,168,236, 50, 42,138,208,208, 80,104, 52,154,226, 70,251,240, +240,240, 40,179,220, 85, 42,213, 83,134, 97,104, 66, 66, 2, 73, 72, 72,128, 92, 46, 39, 47, 94,132,176,181,106,213,238, 69, 95, +253,185, 19, 0,252,252, 86,246, 58,246, 52, 19,202,128, 77, 80,221,223, 12, 81,165, 32,222,142, 37, 99,117, 99, 22,109,127, 90, +168,147,251, 36,157,241,241,241, 93,242, 63, 87,169, 82,229, 85, 88, 88, 88,141,252,169,230,188, 41, 68, 17,195, 48,238,249,211, +137, 12,195, 64,163,209,160, 67,135, 14,252,210,238,221,210,210,178,153,135,135, 7,158, 61,123,134, 77,155, 54, 89,121,123,123, +227,237,219,183, 32,132, 96,229,202,149,196,211,211, 83,152,156,156,140, 78,157, 58,225,228,201,147, 45,202,202, 79, 66,136,169, + 92, 46,223,125,246,236, 89, 41,143,199, 67, 86, 86, 22, 56,142, 67,203,150, 45,193,227,241, 16, 18, 18,130,249,243,231,227,228, +201,147, 56,125,250,180,172, 97,195,134,187, 9, 33, 30,133,167,245, 75, 41, 35,170, 86,171,169, 68, 34,129, 68, 34,129, 84, 42, +133, 84, 42,133, 88, 44, 70,182, 26, 24,179,254,131,134, 47,181,225,106,213,111, 85,117,196,228,149,188, 53, 11, 71,222, 0,112, +198,208, 58, 15,228,174,201,218,184,103,207,166, 33, 25, 25, 60, 0,216, 69, 8,167,163,244, 87, 67,158,119, 0,200, 86,103,192, +173,138, 11, 78, 28, 61,141, 62, 3,122, 22, 75,178,132, 66, 17, 68, 66, 33,204,172,228,101,218, 20,137, 68,246,175, 94,189,178, + 22, 10,133,160,148,130,101, 89,232,116,186,132, 5, 11, 22,216,250,248,248,152, 94,188,120,145,231,227,227,195, 89, 90, 90,230, + 60,122,244, 40,145, 97, 24,235,214,173, 91, 27, 92,231, 41,165, 91,235,215,175,223,224,212,169, 83, 35,125,125,125,159,204,156, + 57,115, 89,225,243,171, 87,175, 94,122,225,194, 5,183, 94,189,122,237,127,254,252,249,214,242,180, 33, 95,219,206, 27,109,254, +251,217, 60,127,254,124, 65, 67,236,227,227, 83, 84,237,180, 39,132,156, 43,244,255,221,242,143,125,125,125,231,249,249,249,189, + 32,132,156, 43,252,125,254,117,121,109,199,185,226,142,243,126,107, 53,119,238,220,218,171, 86,173, 90,217,188,121,243, 35, 1, + 1, 1,239,203, 75,180,202, 92,163,149, 79,174, 10, 19,174, 34, 6,144,153,153,137,204,204, 76, 68, 71, 71, 99,219,182,109,121, + 15,180, 16, 2,129, 0, 2,129,160, 96, 61, 67, 73,184,118,246,206,102, 0,155, 27, 54,108, 40, 12,190,127,252,226,236, 29,147, +219, 55,234,208,128,255,244,122,112, 95, 0,203, 1,116, 25, 54,108,152, 13, 0,236,219,183, 47, 25,192,197,127, 5,101,166,148, + 30,127,243,230,205, 84, 71, 71,199,130, 53, 42,133,167, 15, 25,134,129, 84, 42, 69,254, 90, 22,181, 90,141,109,219,182, 49,148, +210,227,165,216, 68,216,139, 27,120,243,226,102,238,239, 56, 14, 28,251,247,239, 23, 47, 94, 92,120,139, 40,198,229, 41, 39,101, +146,188,226,242,156, 22,121, 47,242,253,103,228,236,179,233, 9,209,228,190, 63, 76,116,228,136, 0,127,221,120, 14,161, 80, 8, +174,144,154, 41,228,231,142,150, 95,188,141,131,147,125, 45,244, 24, 52,214,225,212,254,223, 38, 3,248,165,188,121, 93,179,110, +115, 76,153, 58, 21, 59,119,236,192,252, 69, 75, 11, 88, 58,195,178, 96,202, 76, 39,143,215,178,145, 39,178, 83, 98,192,231,243, +209,162,126, 85,240,249,124,180,110, 84, 29,124, 62, 31,173, 26,215,128, 64, 32, 64,219,102,158,168, 86,173, 26, 4, 2, 1,175, +140,114, 71,216,139,235,120,243,226, 86, 33,210, 75, 65, 1,232,226,227, 63,187, 94, 31, 31, 15,234,106, 93,222,186,133, 81,163, + 70,165, 71, 71, 71,235,138,158,171, 80,161,130,232,246,237,219, 22, 37, 76,219, 21, 64, 38,147, 53, 20, 8, 4, 79, 83, 83, 83, + 57, 19, 19, 19, 30,199,177, 92,173, 90,181,249,151,182,207, 59,149,127,205,220,185,243, 78,245,111,104,214,235,192,241,115, 84, + 84,177, 21, 33, 66, 9,243,227,162,237, 34,161, 72,102,144,199,251,252,105,196,215,175, 95,163,172,244, 20, 30,152, 21,135,180, +180,180, 97, 30, 30, 30,183, 55,111,222,108, 69, 8,193,157, 59,119,192,231,243, 11, 94,225,225,225,224,241,120,152, 61,123,182, + 46, 51, 51,115,116, 89,105, 19, 8, 4, 83, 79,156, 56, 97, 46, 22,139,145,149,149, 85,240,220,240,249,124,188,122,245, 10,107, +214,172,193,176, 97,195, 16, 21, 21, 5, 39, 39, 39,204,152, 49, 67,177,106,213,170,169, 0,150, 26,112,235, 65, 90,173,182,145, +137,137, 9,164, 82, 41,242, 9, 23, 0, 92,121, 33, 12, 81, 42,149,117,108,108,108, 28,108,253,207,253,213,194,187, 71, 61,107, + 91,199,230,249, 68,203, 80,188, 3,118, 68,176,236,130, 46,167, 78,217,221, 59,117,138,123,112,246,108,140, 36, 43,107,187,193, +117, 72,207,195,135,240, 24, 52,108,216, 16, 79,159, 62, 69,195,134, 13, 11,147, 38,136,197, 98,136, 68, 34,136, 68, 34,216, 88, + 26,180,132,130,242,120, 60,220,187,119, 15, 44,203, 66,171,213, 66,171,213,194,211,211, 51,245,230,205,155, 10, 0, 8, 15, 15, +167, 67,135, 14, 77,127,248,240, 33,234,215, 47, 61,158,186,131,131,195,109, 62,159, 95,177,200,179,106,217,187,119,111,164,165, +165,117,237,221,187,119,171,188,239, 98,255,252,243,207,161, 0, 32, 22,139,193,227,241, 88, 24,241, 63,143,124,114, 85,152,112, + 21,211,230,116, 43,122, 76, 8, 57,231,231,231,215,173,232,119,133, 73, 85,113,159, 11,255,118,213,170, 85, 43, 11,217, 86,125, +193,108, 88,217,107,180, 8, 33,180,172, 70,179, 52,148, 69,180,242,241,244,233, 83,189,179,179,243,206, 55,207, 35,219, 87,173, + 91, 5, 50,185,228, 59, 66,200,102,137, 68, 50,253,135, 31,126,192,131, 7, 15, 16, 18, 18,242,199,215,134, 83,169, 83,167,206, +101,137, 68,226, 86,194, 52,201,135,224,224,224, 78, 37,116, 12,139,242,214,156,149,184, 24,190,240,122,177,194,139,225, 75,172, + 24, 28,133, 94,167, 71,142, 82,245,119, 39,158, 71,180,114,114,114, 48, 96,192,128, 79, 20,173,196,196, 68, 67, 10, 21,107,206, +156,193,213,227,199,209,181, 94, 61,156,124,244, 8,171,126, 24,140,154,110,206,160, 44, 1, 37, 64,212,225,223,144,146,153,141, + 67,215,239, 33, 53, 75,137, 33,173, 91,195,221,204,166,116,187, 66, 81,199, 38,205,154,139,174, 5,188,132, 80, 40, 0, 15, 28, +168, 94, 9, 39,143,182,224,243,120, 48,183,175, 4,145, 80, 8,161, 80,128,240,232,100,120,212,110, 44, 62, 39,150,118,252, 18, +162, 85,193,173, 18, 88,150,197,176, 97,195,112,228,200, 17, 88, 59,184,193,188, 66,109, 44, 95,183, 3, 93, 59,180, 46,243,254, +243, 71,240, 2,129, 0,124, 62,255,179,247,252,207,134,168,147,148,163,208, 21, 45, 35,142, 2,148,194,101,197, 10,184,172, 88, +129, 71,121,255,233,153,147, 3,149, 74, 5, 52,173, 85, 46,146,165,213,106, 17, 29, 29,173,139,143,143,183, 47,166,131, 74,208, +106,181,101, 18,155,189,123,247, 6, 13, 31, 62,188,145,149,149,213,147,160,192, 64,125,221,122,245,132, 23,183,205, 59,157, 63, +109, 8, 0,245,234,213, 75,157, 55,111,222,233,161,253,186,245,220,234, 59,144, 29,191,116,191, 64, 34,147, 53,234, 54,179,244, + 5,241,133,158,143,136,186,117,235, 82, 67,174, 85, 42,149, 31, 75, 41,163,238, 0,150, 52,104,208,192,204,219,219, 27,183,111, +223, 70,159, 62,125, 52, 58,157,238, 77, 94,163, 90,253,208,161, 67,226,151, 47, 95,194,214,214, 86,248,225,195,135,221,132,144, + 82, 23,200,139,197,226,182,141, 27, 55,230,105, 52,154,207, 72,214,170, 85,171, 48,104,208, 32, 84,175, 94, 29, 28,199, 33, 59, + 59, 27,222,222,222,194, 77,155, 54,181, 53,144,104, 77,169, 89,179,230, 26,228,238, 58, 44,220, 22,134, 2,152,149,167,118,127, +236,214,103,216,139,214, 29,122, 55,170, 88,173,182, 99, 89, 6,237,237,237,231,242,120,188,254, 28,199,241, 51, 51, 51,163,181, +132, 84,243,116,115,179,111,217,179, 39, 50,132, 66,254,198,235,215,121, 9, 89, 89, 10, 0, 6, 77, 65,170,245, 57,112,171,146, +187,212,175,207,128,158,120,250,244, 41,250, 14,236, 5,145, 72, 4,129, 64,152,251,108,138,114, 21, 45, 11, 27, 51,131,234,166, + 94,175, 47,104,195,243,215,121,233,116, 58,228, 47,205, 50, 49, 49, 41, 56,167,209,104, 74, 28,144,231,193,253,216,210,133,118, + 50, 51,115,176,122, 61,106,245,236, 91, 80,167, 31,238,218, 42, 3,199,201,210, 63, 68, 96,210,241,179, 66, 24, 97, 68, 9,170, + 86, 49,106, 86,225,118,229, 92, 81,178,245,165, 32,132,156,243,245,245,157, 7,128,250,250,250,206,203, 63,246,243,243, 83, 1, +136,253, 18,178, 85,156,202, 37,248, 22, 36, 43,127,122,161, 52,180,107,215,110,146,169,169,233, 38, 0,104,212,168, 17,162, 31, +196, 34,250, 65, 44, 60,106,212,106,217,160, 94,163,140, 65,131, 6,193,218,218, 26, 51,103,206,164, 0,254, 40,239,255,135,135, +189, 80, 0,160, 78, 78, 78, 51, 1,192,201,201,169,222,163, 71,143,108, 31, 63,126,140,198,141, 27,255, 45,221,235,116,104,213, +170, 85,105, 29, 98, 22,114,215, 90, 77,251,118, 42, 25, 7,157, 78, 7,165, 82, 5,173, 86, 7, 70,207,129, 97, 24, 52,172,101, +138,253, 59,124,115,191, 99,242,213,179, 92,213,204,197,193, 20, 13,235, 56,232,121, 60,162,122, 28, 24, 95,108,139,169,213,106, + 17,244,225, 3, 2, 35, 35, 1, 0, 61,252, 74, 95,248,186,255,250,109,120,122,122,150,149,218,170, 46, 78, 14,136,187, 26,148, +219,120,171,162,241,248,238, 49,152,154, 42, 0, 0,181,188,134, 64, 36,202, 37, 90, 57, 42, 29,108,106, 84, 0,161,180, 68,183, + 0,114, 43,199,203, 2,145,212,141,178, 28, 40,229, 64, 57, 22,148,114,144,152, 90,155, 76, 26, 55, 18, 28,199,162, 73,147, 38, + 32,124, 62, 88,189, 6,253,186,119, 68, 90, 70, 22,172, 45, 12,235, 36, 68, 34, 17,188,188,188,100, 37,157,127,251,246,173,170, + 48, 49, 43,189,140,244,200,201, 81, 65,163,209, 64,167,101,160,211, 51, 96, 43,139,176,108,193, 96, 48, 58, 6,202,129,205,161, +211, 51,224,166,246,130, 78,171, 71,148, 9,143, 87,207,211, 86,207, 3, 81, 61,123,153,104, 86, 22,209,202, 39, 7, 37,161,184, + 53,129, 37,144,173,192,225,195,135, 55,172, 91,175,222,211,254, 29,234,173, 13, 14,121, 17, 23, 28,242,226,179,235,220,170,215, +139, 24,191,234,200, 12,161, 72,214,208, 80,146, 5,124, 58,141,248,149,152,151,149,149, 85, 87,161, 80, 32, 44, 44, 12,124, 62, + 31,132,144,183,148,210,186, 0, 48,118,236,216,119, 2,129,160, 10,159,207,199,150, 45, 91,136, 64, 32,168,211,188,121,243,121, + 0,142,149, 50,160,243, 48, 53, 53,253, 68,205, 18,137, 68,240,245,245,197,208,161, 67, 11, 72,150, 72, 36,194,222,189,123,209, +168, 81, 35,104,181, 90, 15, 3,201,240, 99, 0,173, 13, 80,252, 72, 30, 57, 47,147,140, 50, 12, 51, 60,165,127,255,106,240,247, + 71,203, 42, 85, 60, 27, 54,108, 8,157,238,111, 65,179, 74,149, 42, 21,178,178,178, 62, 18, 66, 14, 2,216, 74, 41,125, 94, 42, + 41, 82,115,248, 16, 30,147, 63,104, 69,147, 38, 77, 10, 20,172,194,106,150, 72, 36,130, 76,172, 40, 23,209,226,184,220,118, 41, + 43, 43,139,231,239,239,111, 83,179,102, 77, 2, 0, 53,107,214, 36,207,159, 63,183, 50, 49, 49, 73,174, 90,181,106,153, 3, 96, +153,153, 57,246, 14, 31, 0, 0,248,185, 67,231,130,129,209,165, 37,243, 32, 20, 10,209,126,230,188,207,234, 61,199,113,124, 24, + 97, 36, 89,101,144,172,226, 20,173,175,235,155,255, 86,180,252,252,252, 94,248,249,249,125,166,142,149,211, 94,217,138,150, 33, + 83, 1,101, 61,172, 37, 97,221,186,117,168, 83,167, 78,169, 29,209,166, 77,155,112,224,192,129,117,148,210,240,242,254,127,183, +246, 13,106, 97,253,169, 23, 85,170,215, 34, 0,176,116,106,119, 94, 78, 78, 14,238,221,187, 7,115,115,115,188,125,107,152,219, + 47, 66,136,169,185,185,249, 18, 30,143,215,143, 95,116, 7, 64,241, 4,147,229, 56,238,120, 70, 70, 70,137,238, 29, 40, 5,116, +122, 6, 57, 74, 53,180, 90, 45,166,206,254,173,204,116,248, 1, 68,167,205, 18,120,181,105, 46, 43, 73,209,105, 82,167, 45, 38, +252,160,248,172,243,230,243, 0, 30, 15,168,223, 36, 87,113,121,254,232, 5, 56, 14, 96, 57,192,198,206, 18,127, 28, 94, 91,106, + 22, 48, 44,151, 55, 58,102,145,173, 97,225,209,172, 27, 98, 66,253, 11, 20, 36,177, 40,119,202, 88, 36, 20,130,163, 36,215,235, + 67, 73, 68, 72, 44,115, 75,139, 15,119,223,113, 46, 24, 99,186,213,193,159,215,130,208,183, 67, 93,220,124,248, 18,222, 77, 61, +241,226, 77, 36,106,185, 87,196,150,221,199, 65, 41,178,126, 95,191,252,227,223, 29, 26,243,193, 16, 69,235,193,131, 7,170,162, + 42, 86,225,119, 90,118,127, 8, 74,255, 86,180, 84,106, 13,102,206, 53,200,157, 79,110, 25,181,110, 38, 51,228,226,210, 20, 43, + 67,136, 88, 81,101, 11,101,184,103,169, 12,160, 17, 48,231, 95,217,112,178, 44,139,243,231,207, 23,148, 71,113,229, 88,184,236, + 12, 32, 57,248,240,225, 3, 94,188,120,129,102,205,154, 33, 35, 35, 3, 66, 30, 15, 51,130,131,225,249,195, 15,208,138, 68,224, + 56, 14, 98,177, 24, 99,199,142, 53, 56, 63,203,217,154,230,173,115, 99,105, 25,109,201,218,110,221,186, 85, 11,203,201,193,139, + 87,175,208, 97,241, 98, 0,192,133, 11, 23, 62,169, 19,211,167, 79, 23,191,124,249,114,212,147, 39, 79, 70, 17, 66,214, 81, 74, +103,148,216,206, 82, 77,193, 26,173,254,131,251,160, 90,205,202, 56,176,231,112,193,249,233,179,166, 64, 40, 20, 65, 40, 18,194, +194,220,194,160,187,209,235,245, 5,164, 85,169, 84,242, 46, 92,184,224,210,177, 99, 71,209,148, 41, 83, 8, 0, 28, 56,112,128, +183,121,243,102,249,213,171, 87, 69,206,206,206,241,101,146, 75,157,238,179, 50, 38,132, 64, 40, 20, 66, 36, 22, 1, 28, 7, 66, +136,124,245,234,213, 75, 95,188,120,209,184,102,205,154,208,104, 52, 63, 16, 66,158, 25,253,104, 25,145, 63,109, 88, 18,225, 42, +110,173, 85,158, 42, 85, 18,146, 10,175,219, 42,137,168, 21, 94,179, 5, 64, 83,254,102,193,192, 53, 90,197,129,207,231,151,169, + 86,241,120,188, 50,167, 14,167, 79,159, 14, 83, 83,211,146, 58, 32, 26, 28, 28,252, 50, 62, 62,126, 7,165,244,183, 47, 41,156, +115,215,159,189, 88, 50,173, 87, 22,242,230, 86, 45, 44, 44,146,219,181,107,151, 13, 64,119,236,216,167, 3,100,141, 70, 83, 98, + 7,110,110,110,190,100,215,174, 93,147,123,246,236,201, 43,234, 98,160,240,244, 94,254, 75,175,215,227,216,177, 99,147,231,204, +153,131,146, 84,176,252, 78, 92,153,163,130, 42,111, 33,244,187,144, 63, 13, 45,189, 18, 79, 41, 44, 28,225, 82,185,110,137,157, + 9, 79,148,187,134,200,222,245,239, 14,204,212, 84, 10,182, 20,155,132,240,194, 35,163,226,156, 43, 56, 88,225, 93,116, 18,236, + 43,214, 65, 90,236,223,249, 32, 16,240, 33,204,155, 58,180, 48,147, 35, 41, 49, 17, 60, 30,191, 84, 98,188,252,208, 51, 60, 12, +137,196,137,107,207,161, 83,231, 96,253,190, 75,208,105,178,161, 83,231, 64,167,206,125, 95, 57,231, 71, 16,130,143, 58,117,118, +245,242,148,187, 64, 32, 64,211,166, 77, 75, 36, 58,177,177,177, 6, 42, 90,180, 64,209, 82,169,203, 89, 70,134, 61,132,165, 42, + 86,249,231,191,148, 24,228,187,124,144,201,100,141,246,238, 45,217,141, 67,113,112,116,116,188,168, 80, 40, 42, 25,122,125, 57, +156,151,174,180,176,176, 88, 82,179,102, 77,143,245,235,215, 11,249,124, 62,218,183,111, 95,253,199, 31,127,252, 0, 0,117,234, +212,113,202,111, 99,198,143, 31, 79, 31, 60,120, 16,146, 59,198, 40, 25, 98,177,248,149,185,185,121, 35,111,111,111,100,100,100, + 32, 58, 58, 26,114,185, 28,158,107,215, 34,120,252,120,212,219,182, 13,188,118,237, 64, 8,129, 88, 44, 70,112,112, 48,100, 50, +217,171, 82,200, 80, 83, 0,191, 2,104,137,191,167, 11, 41,128,123, 0,102, 83, 74, 31, 22,211,222,241, 0,128,229,184,178, 10, +107,240,204,153, 51,145, 46, 20, 2, 62, 62, 16,133,135, 67,167,211,161, 89,179,102, 5, 42,123,179,102,205, 32, 16, 8, 80,183, +110, 93, 56, 57, 57, 97,203,150, 45,131,241,233, 78,236, 79,160,206,214,225, 67,120, 12,154, 55,111, 94,160, 92,249,248,248, 20, + 40, 90, 66,161,176, 64,217, 34,108,217,196,149, 16, 66, 11, 15,146, 89,150, 37, 2,129, 64, 48,109,218, 52,210,167, 79, 31,170, +213,106, 57,177, 88,204, 59,113,226, 4,185,121,243,166, 32, 39, 39,167,204,129,120,237, 94,253,240,115,199, 92, 81,116,121, 37, + 91, 8, 69, 66,136, 69, 34,204,124, 21, 83, 80, 46,102,123,143,136, 87,173, 90,213,183,102,205,154,185,211,240,128,192,232, 71, +203,136, 50,212,172,164, 34, 36, 73, 91,232, 56, 9, 0,201, 59, 78, 42, 68,168,146,144,187,131,176,113,145,107,243,207,107,139, +188,231,159, 15, 44,111,218, 11,197, 58,252,140,124,149, 54, 34,126,115,255,254,125,247,134, 13, 27, 34, 42, 42,234,179,157,112, +249, 29,151, 92, 46,135, 76, 38, 67, 64, 64, 0, 0,188, 41,201,216,141, 27, 55, 54, 35,215,235, 50, 0,192,201,201,169,185,119, +255,182, 1, 77, 58, 55,198, 33,191,195, 25,241,241,241,117,243,125,232, 16, 66,136,147,147,211, 80,161, 88, 48,160, 74,109, 87, + 47,112,220,175,215,254,186,187,184,180,155,172, 82,189, 86, 54, 0, 85,161, 93,135,107,190,164,160,121, 60, 94,191,158, 61,123, +242, 94,190,124,137, 1, 3, 6,224,192,129, 3, 37, 94, 59,116,232, 80, 28, 57,114, 4, 61,123,246,228,205,157, 59,183, 95, 89, + 68, 43, 87, 45,209,126,179, 74, 25,246, 54, 16,251,143,236, 42,113, 13,146,157, 93,238,122,172,196,196,228,130,239, 26, 55, 44, +125,102,132, 99,180, 87,159, 61,121,212,188, 69,155,246,162,232,132,116,112,140, 6,234,172,191,127,175, 76, 79, 0,101,212, 16, +153, 88,193,193,198, 28, 79,239, 95,209,234,180,234,171,165,217,156,220,179, 22,198,119,247, 0, 40,135, 94, 51,254,192,185,223, + 38, 21,140,160, 91,245,153,130,235,199, 54, 26,188,198,175, 40,132, 66, 33,130,131,131, 85, 37,169, 89,124, 62,191, 76,159, 92, +127,171,142,122, 40,149, 42, 40, 85,234,111, 86, 70,132, 16, 91,123,123,251,223,173,172,172,164,197, 17, 41, 66,136,173,173,173, +237,239,214,214,214, 82, 67,167, 14, 75, 34, 89,121,126,181,158, 12, 31, 62,188, 92,100, 75, 34,145, 84,122,243,230, 77,129,179, +210,210,222,181, 90, 45,188,189,189, 13,114, 94, 74, 41, 61, 75, 8,121,239,232,232,120,207,211,211,211,252,221,187,119, 56,124, +248,176, 72, 40, 20,186,230,183, 31, 89, 89, 89,224,243,249, 72, 76, 76,212, 3, 24, 89,214,212,153, 70,163,241,247,247,247,175, +223,189,123,119,254,171, 87,175,192,231,243,115,211,213,188, 57,234,109,219,134,144,105,211,224, 21, 25, 9,181, 78, 7,169, 84, +138,203,151, 47,235,148, 74,165,127, 73,246,100, 50,217,142,136,136,136, 90, 82,169, 20, 58,157, 14, 28,199,129,199,227, 17,129, + 64,208,202,194,194, 98, 19,128,198,159, 62, 83,118,118, 99,167,255, 82,131,101, 24, 54, 62,234, 93, 82, 89,121,144,146,146,130, +179,103,207,162, 89,179,102,240,242,242, 66,108,108, 44,194,195,195,209,181,107,215,130,107, 2, 3, 3,241,236,217, 51, 84,173, + 90,181,108, 69,143,167, 71,213, 26,149, 32, 18,137,114, 21, 34,161, 40,111,224, 35, 44, 80,178, 68, 66, 17,132, 2, 33,164, 50, +169,193,138, 22, 33, 4, 60, 30, 15,132, 16,200,100,178,252, 65, 54,231,226,226, 18,159,154,154,234, 8,128, 47,147,201,192,178, +172, 65,131,150,252, 62, 34,159,100,137,196,162, 2,101, 11, 0,210,211,211,213, 61,123,246, 60,168,209,104, 70,224, 11, 34,148, + 24,241, 63,137,199,255,162,223, 26,204, 19, 41,165, 59,138, 91, 20, 95, 90, 5,239,218,162, 69,139,109,131, 6, 13,106,191, 97, +195, 6, 40, 20, 10,196,199,199, 23,116,136, 98,177, 24, 21, 42, 84, 64,106,106, 42,182,111,223,142,152,152,152, 27, 0,198, 26, +154,162,248,248,248, 7,111,159,191, 73,241,238,219,194,186, 86,139, 26, 22,209,111, 98,154, 1, 8,200, 35, 89,127, 12,154,222, +117,132,119,239, 38, 16,137,133,136,126,251,241,255,173, 36,249,124, 62,159, 16,130, 1, 3, 6, 24,116,253,192,129, 3,225,239, +239,143,210,166, 25,185,124, 69, 75,169, 70,142,234,219, 13,214, 38, 76, 26,138, 9,147,134, 22,144, 9, 67,166, 94,114, 73,238, +209, 82,136,150,110,195,185,163,219,199, 52,104,210,220,173, 81,173, 74,120,248,228, 57, 14,109,251, 91,100,216,189,121, 41,126, +217,125, 3, 21,236, 45,161,211,228,224,226,159, 59, 63,234, 52,202, 13, 95, 40,202,229,146, 91, 66, 96,160,159,202, 79, 84,212, +124,162, 85,187,118,237, 18, 21,173,212,212, 84, 85, 89, 29, 67, 65, 25,105,245,200,206, 81, 65,165,252, 54, 68,139, 16, 82,175, + 85,171, 86, 87,143, 31, 63,110,109,103,103,135,184,184,184, 79,136, 22, 33,164, 94,203,150, 45,175, 30, 63,126,220,218,222,222, + 30,209,209,209, 6,187, 21, 41,134,100, 33, 41, 41,137,164,165,165,113,150,150,150,229, 34, 91, 60, 30, 15, 26,141, 6,161,161, +161,134,254,173,193, 59,196,204,205,205,247, 30, 57,114,196, 60, 57, 57, 25,124, 62, 31,161,161,161,159,236, 58,204,127,253,241, +199, 31,162, 94,189,122,237, 2, 80,234,182, 54,134, 97,214, 13, 29, 58,116, 84,108,108,172,165,157,157, 29,226,227,227, 33, 22, +139, 65, 41, 5,241,246, 70,235,247,239,161, 99, 89,200,100, 50,132,133,133, 97,199,142, 29, 57, 26,141,102, 93, 9,229, 35, 54, + 49, 49,113, 23,137, 68, 24, 50,100,200, 39,231,246,237,219,135, 30,141,248,141,198,116,148,100, 51,144,106, 18,100, 93, 46,242, +249,124, 50,118,230,175,213,155,182,241,169,253, 58,228,225,187,164,132,152,123,101,220,190, 94,171,213,162,102,205,154,120,252, +248, 49,174, 93,187,134,118,237,218,193,203,203, 11, 65, 65, 65,184,114,229, 10,158, 61,123, 6, 66, 8,172,173,173,243,151, 95, +148,186, 6, 67,171,100,144, 24,151,242,153,122, 85,244, 88, 36, 18, 65,163,210, 25, 84, 70,175, 94,189,194,227,199,143, 11, 92, +203,240,249,124,230,135, 31,126, 0,165,148, 70, 68, 68,192,212,212,148, 14, 31, 62,156, 21, 8, 4, 76,108,108,172,161,117, 63, + 87,189,202, 35, 89, 2,145,240, 19,130,198,113, 92, 86, 96, 96,224, 24, 66, 72, 16, 33,100,117,222,215, 70, 63, 90, 70,252, 39, +227,124,225, 88,135, 6, 41, 90,148,210,247, 0, 58, 16, 66, 6,159, 62,125,122,221,166, 77,155,108,187,117,235,134,180,180, 52, +184,185,185,193,209,209, 17,231,206,157,195,133, 11, 23,146, 89,150,157, 65, 41, 61, 80,204,195,214,161, 36, 95, 27,148, 82,234, +228,228,116, 92,147,157, 61,190,161,151, 7,110, 28,187,227,231,232,232, 56,214,217,217,121,234,240,121,223,143,104,219,179, 49, +194,158, 69,224,193,149, 96, 36, 68, 37, 99,120,235,217,165,218, 44,186, 24,222,194,194, 98,148,137,137,137, 24,128,174,152, 81, +241, 39,187, 14, 11,219,100, 89,150,213,106,181, 56,122,244,168, 65,100,235,240,225,195, 80,171,213, 96,139,204,175, 22,182, 73, + 57, 74, 4, 66, 9,156, 42,212,132, 78,151, 3,142,251, 50,245,166,176,205,252, 17,232, 59,177, 24,118,201,201,120,248,240,161, +161,210,108,169,101, 68, 41, 85, 19, 66,134,108, 92, 49,243,220, 68,223, 95, 45,218,181,168,143,159,215,238,131, 78,183, 27, 60, + 62, 15, 50,137, 8, 13,155,180, 4, 31, 26,252,190,106, 86,186, 50, 51,109, 72,209, 80, 60,159,217, 44,109,134,133, 2, 44,199, +225,218,237, 71, 6,223,123, 65,111,207,178, 16, 8, 4,120,251,246,173,170,184,221,134,124,126,238, 52,103,254, 72,189, 52,155, +148,227,136, 80, 36, 69, 5, 55, 79,104, 53,217,223,164,140,236,236,236,102,157, 58,117,202, 58,223, 85, 66, 80, 80, 16, 8, 33, +161,133,212,145, 89,167, 78,157,178, 86,169, 84, 8, 9, 9,201, 15, 53, 21, 90,158,231, 40, 95,201, 74, 74, 74, 34,241,241,241, + 48, 49, 49,225, 5, 5, 5,105,234,214,173,251, 4,165, 71,126, 40,176,169, 86,171, 35, 75, 90, 63,169, 86,171,157,165, 82,169, +176,200,111,157,220,221,221,195,138, 78, 33, 22,151,206,140,140,140,135,115,230,204,105,216,185,115,103,204,154, 53, 43,213,210, +210,210,244,247,223,127, 23,240,249,124, 50,113,226, 68, 54, 49, 49, 49,123,231,206,157,230,167, 79,159, 70,122,122,122, 64, 89, +247, 78, 41,205, 34,132,140,105,209,162,197,190, 75,151, 46,153,184,187,187, 35, 51, 51, 19,148, 82,236,221,187, 23, 19, 39, 78, +132, 84, 42, 69, 88, 88, 24,122,244,232,161, 84, 42,149, 99,138,174,157, 44,100,147, 16, 66, 40,199,113, 88,184,112, 97,129,115, +210,124,103,165,166, 50,130, 29,211, 43,203,167,236,204,144, 15,254,121,231, 15, 0,192, 50, 12,251, 58,228,225,187,189,191,253, +124, 83, 36, 18,221, 46,163,140,230, 79,153, 50,229,119, 31, 31, 31,153, 66,161, 64,106,106, 42,238,221,187,135,251,247,239,227, +193,131, 7,208,106,181,176,182,182,134,165,165, 37,226,227,227,241,234,213, 43, 21,128,249,165,217, 20,155, 8, 81,165,122,254, +206,223, 92, 5, 75, 88,104,183, 97, 97,117, 75, 36, 20, 26,244, 28,181,105,211, 6, 77,155, 54,205, 39, 64,236,135, 15, 31,226, + 53, 26, 13, 41, 68,250, 99,243, 9,185,171,171, 43,115,224,192, 1, 90,154,205, 7, 59,182,224,210,178,249, 16,139, 68,152, 17, + 26, 93, 64,186,246,181,107, 0,161, 88, 4,143,238,125, 10,247, 3, 91, 9, 33,187,243, 62,107, 12,169,243, 95, 49,240, 49,218, +252, 55,183,249,159, 12, 74,105, 60,128,242,133,224, 41,244,227, 67,132,144,139, 63,254,248,227,170,122,245,234,253,184,126,253, +122, 34, 18,137,176,120,241, 98, 26, 23, 23,183, 39,111, 20,146,246,133, 9,219,115,235,100,192,184, 97,190, 61,201,244, 13,195, + 91, 61,185, 30,242,170, 78, 11,119,212,105,225,142, 39, 55, 94,226,183,121,135, 15,176,122,118, 97,124,124,124, 84, 25,166, 52, + 29, 90,214, 40,186, 24,222,218,255,230,117,235,242,238, 58,228, 56,238,248,225,195,135, 39,247,238,221,155,247,232,209,163,207, +214,100,229,135,221,225, 56, 14, 87,175, 94,133, 78,167,195,158, 61,123, 56,142,227, 74,246,163, 5,122,102,227,134, 85,195,246, +236, 63, 35, 22,139, 8,238,223, 62,129,140,180,210, 85, 58,145, 72,136, 63,246,158,212,137, 68,194,215,197,157,215,233,116,209, +215,175, 95,183,239,196,178, 66, 30,143,247, 25,129, 42, 9,199,143, 31,215,115, 28,247,161,140,114, 9, 32, 68,216,125,249,172, +145,135,125,250,255,104,223,162, 69, 43,161,141,157, 61, 8, 33, 72, 76, 72, 68, 88,200, 35,253,197, 19,187, 18,114,148, 89, 6, +133,224, 25,185,230, 86,193,154, 44, 0,232, 54,113, 83,193,250, 44, 0,232, 62,124, 14,188,155,213, 2, 49, 68,122,250,155,100, +113, 12,195, 64, 46,151,131, 97,152, 98, 93, 60,152,155,155,203,212,106,181, 42,207, 17, 99,169, 82, 17, 5,190,121, 25,177, 44, +235,145,150,150,134,156,156, 28,220,191,127,159,174, 88,177, 34, 41, 41, 41,169, 96,209,166, 94,175,247, 72, 77, 77, 69,118,118, + 54, 2, 2, 2,232,170, 85,171,146, 82, 82, 82,230,149,231, 25,146,201,100,141, 4, 2,193,147,180,180, 52,206,196,196,132,167, +215,235,245,117,235,214,149,200,100, 50,131, 3,170,199,197,197,117, 46,233, 92,213,170, 85,223,188,121,243,166, 26,203,178,133, + 99, 32,138,212,106,181,123,139, 22, 45, 12,153,242,153,178,123,247,110,156, 60,121,178, 73,102,102,230,208, 15, 31, 62,236, 3, +208, 68, 32, 16,224,249,243,231,161,106,181,122, 80,239,222,189,247,166,165,165, 61, 4, 48,197,192,118,227, 18, 33,100,136,135, +135,199,238, 37, 75,150, 40,188,188,188, 4, 78, 78, 78,104,220,184, 49,194,194,194,112,254,252,121,253,214,173, 91,115,148, 74, +229, 72, 74,233,213,210,139, 29,132, 97, 24,136,197,226,130,151, 68, 34,129, 72, 36, 66,150,138, 98,244,218,112, 21, 3,153,106, +221,226, 49,231, 41, 64, 62, 70,135, 39, 39,126,140,126, 72, 8,185, 29, 23, 23,151, 81, 66,158,137,213,106,117,125, 71, 71, 71, + 62, 33,100,131, 78,167, 27, 62,105,210, 36,199,149, 43, 87,162, 70,141, 26, 72, 78, 78,134, 92, 46,135,187,187, 59,146,146,146, +240,232,209, 35, 86,169, 84,110, 3,176,148, 82, 90,234,116,100,122,114, 38, 92, 28, 92, 63, 81, 62, 41,165,160, 44,160,215,176, + 96,117, 20, 90,162,135, 80,168,135, 72, 36, 50,164,179,164, 28,199, 33,205,209, 17, 92, 72, 8, 30, 60,120, 0, 74,105,137,170, + 90,205,154, 53, 13, 40, 32, 14, 98,137,248,147,233, 66, 66, 8, 68, 98, 49,132, 98,209,103, 59,103,140, 42,150, 17,255,237, 48, +116,173, 69, 58,128,177,132,144,125,109,219,182, 61, 71, 41, 21, 34,119, 62,242,206,215,252,121,124,124,252, 83, 39, 39,167,185, +246, 46,150,171,186, 12,109,133, 26,245,221,192, 50, 44,238, 93,120,142, 61, 43, 79, 31,137,141,142, 29,110, 72,236, 51,142,227, +110,182,108, 84,131,135, 66,190,186,157,156,156,184, 47,217,117,152,145,145,177,104,198,140, 25,152, 53,107, 86,185,119, 29,150, +116, 77, 80,104,226,216,122, 30,182, 46,221,187,180,238, 4,194,163, 90,173,166,148,134, 15, 5,158, 75, 69, 34,225,235, 71,129, +113,117,139,187, 46, 41, 41,169,211,136, 17, 35,174, 10, 4,130, 74,229,201,115,142,227, 62, 36, 36, 36,180, 47,187,204,245,247, + 8, 33,238,103,143,108,159,118,233,228,238, 78, 28,199, 86, 37, 0,248, 2,209, 59,189, 78,119, 89,163,202, 92,111,104, 80,233, +213, 99,155, 99,202,198, 43,216, 50,171, 59, 38,173, 58,134, 93, 11, 71, 99,238,218,195,248,117,214, 20,172,216,116, 16, 63, 79, + 25,130,190,131, 71,112,148,240,238, 26,122, 31,124, 62,255,210,246,237,219,135,141, 30, 61,186, 96,211, 2,165,244,147,134, 93, +175,215,171, 56,142,195,182,109,219, 56, 0,151, 74,179,247,105, 25, 17, 90,218,122, 41, 67,203, 40, 51, 51,115,100,243,230,205, +247, 2,144, 80, 74,223,166,165,165,253, 68, 41, 45, 8, 13,149,157,157, 61,178, 69,139, 22,123, 41,165, 18, 66,200,103,231, 13, + 65,158,171,135, 70,150,150,150, 79,242,148, 44,201,151, 44,136, 47, 45,171, 75,153, 86,100, 13,104, 59, 56, 20, 10,171, 67, 8, + 89,217,164, 73,147,194, 65,165, 67, 1, 52, 42,111,162, 40,165, 87, 9, 33,181, 22, 46, 92, 56, 77, 42,149,122, 43,149,202,234, + 0, 32,151,203,195, 52, 26,205, 77,149, 74,181, 62,175,221, 42,205,134,214,196,196, 36,140, 97,152,218,182,182,182,185, 59,106, +243,200, 22, 0,252,245,132,125, 66, 41,211,184,188,105,187,112,225, 66, 69, 75, 75,203,239, 8, 33,125, 41,165, 53,179,178,178, + 52, 11, 23, 46, 12, 56,126,252,120, 70,165, 74,149,186,248,248,248, 16, 43, 43, 43, 60,126,252,152,166,164,164,156, 0, 48,207, +144,157,214, 28,199,125, 88,189,122, 53,202,251,188,151,118, 94,167,211,125,188,112,225,130, 77,231,196, 68, 1,199,113,232,222, +189,251, 39, 4,174, 40, 94,191,126, 13,141, 70, 83,170, 51, 71, 77, 70, 26,218, 77,155, 3,228,237,254,204, 71,174,146, 69, 65, +181, 70, 94,101,196,255, 22,200, 63,178,253,185,156,210,162,147,147,211, 0,169, 92, 50,193,173,186, 99,221,184,240,196,151, 89, + 25,202, 3,241,241,241,219, 41,165,236,151,218, 44,143,195, 82,163,252,251,207,217,252,219,143, 22, 11, 74, 89, 80,142,130, 82, + 14, 28,199,230, 6,188,166, 28, 40,203, 18, 66,112, 87,163,204, 24,109,104, 58, 9, 33,150, 54, 54, 54, 75, 41,165,157,249,124, + 62,175,176, 24, 86,248,115,158,146,117, 41, 41, 41,233,231,162,202,235,127, 98,126,254,249,231,159,197,146,127, 67,119, 29,246, +237,219,151, 45,231,179,121, 83, 46,151, 23,235,152, 51, 39, 39, 39, 42, 46, 46,238,187,127,135,252,204, 87, 67,169, 1, 13, 90, +145, 41,248,114,239, 58, 44,203,102,197,138, 21, 37, 58,157,174, 1, 0,119, 66,136, 5,128, 84,157, 78,119, 57, 41, 41, 41,129, + 16,210, 8,192,194,188,159, 45,163,148, 62,249, 87, 62,239,132, 16,153,141,141,205,110, 30,143,231, 98,200,239, 25,134,209,166, +166,166, 14, 43, 60, 32, 40,108,211,198,198,230,137, 64, 32,112, 49,192, 78, 76,114,114,114, 35, 99,251,105,180,249, 95, 67,166, +138, 44,130, 47,124,252,111,177,219, 35, 46, 46,238, 40,128,163,223,210,102, 73,158,223,141,248,255, 69, 78,106,252, 63, 82, 14, +121,164,105,226,255, 90,126,230, 19,165, 98,190,127, 10,128,252, 3,207,166,247,127, 66,190,208, 47, 28, 49,230, 17,169,214,223, + 50, 45,145,145,145, 26, 0, 1,121,175,162,255,247, 4, 64,247,127,163,124, 83, 1, 24,240,173,236,149, 70,158,140, 48,226,127, + 21,198,109,181, 70, 24, 97,132, 17, 70, 24, 97,132, 17, 95,135,243, 69, 66,240,156,207,255, 64, 0,116, 40, 97,164, 99,176, 36, + 72, 8,233,240, 5, 35,169,107, 70,155, 70,155, 70,155, 70,155, 70,155, 70,155, 70,155,255, 91, 54,255,231,144,239, 56,242,159, +120, 1,232, 96,180,105,180,105,180,105,180,105,180,105,180,105,180,105,180,249,223,252, 2, 48,166,164, 99,158,145,106, 26, 97, +132, 17, 70, 24, 97,132, 17, 70,252, 51, 48,152,104, 41, 28, 60, 60,108, 43,214,219,107, 85,161,110,144, 85,133,186, 65,182, 21, +235,237, 85, 56,120,120,252, 47,102, 26, 33, 68, 70, 8, 25, 44, 20, 10,175, 58, 58, 58,102, 18, 66,166,253,151,222,167, 25, 33, +164, 47, 33,100, 41, 33,164, 23, 33,196,228, 91,218,111, 75,136, 96, 32, 33, 19,134, 17, 18, 53,140,144,168,129,132, 76,104, 75, +200,127,221,186,193, 37, 83,156,154,223,185, 52,228,226,146, 41, 78,205,139, 61, 63,211,201,250,225,213,254, 27,253, 38, 58, 91, +125,163,114, 51,181,183,183,223,225,224,224, 16,105,111,111,255,193,222,222,126, 55, 33,196,220,216,220, 25, 97,132, 17, 70,252, + 99, 56, 79, 8, 25,147,255, 66,161, 53, 90, 2, 0, 56,127,254,188, 23,128, 91, 0,218,250,248,248,248, 23,253,181,149, 91,157, +209, 30, 53,107,204, 90,190,120, 30,113,176,179, 49, 97, 88, 78, 23, 17, 25,237,185,104,249,170, 63,173,220,234,172, 75,253, 16, +188,235, 11, 58, 3,194,231,243, 7, 72, 36,146,110, 0,242, 9, 91,168, 70,163, 57,199,178,236, 81, 67,119, 17, 57, 56, 56,220, +230,243,249, 21,203,243,223, 44,203, 70,125,252,248,177,213, 23,118, 98,253, 92, 93, 93,119,123,121,121,153, 52,105,210, 4, 98, +177, 24, 11, 23, 46,156, 1, 96,189,161, 54,172,172,170,154,234, 36,210,169, 2,177,184, 35,213,107,107, 83, 80,128, 39, 9,225, + 24,205,117,145, 70,179, 46, 53,245, 93,150,129,105,153, 7, 96, 56,114,183,163,239,162,148,174,254,154, 90, 50,188, 1,209,235, +217,220, 58, 33, 18,128, 53, 55, 55,191, 53,127,254,124, 65,183,110,221,176,107,215,174, 86, 59,118,236, 24, 67, 8,185, 14,224, + 47, 74,233,187,175,173,149,246,192,216, 22,173, 90,109, 28, 54, 99, 6, 95,117,251, 54, 54,238,222,189, 1,153,153, 0,176,165, +188,117, 73, 36, 66, 95, 27, 27, 97, 55, 74,209,128, 0,132, 0,207,147, 82,184, 11, 58, 29,123,148,150, 55,190,207,167,182, 7, +227,211,237,248,135,202,107, 35,227, 29, 93, 32,233,238,209, 58,227,221,205, 5, 0,186, 20, 61,207,168,165,195, 40,191, 66, 55, + 21,125, 22, 13, 96,237, 87,146, 44, 19, 91, 91,219,160, 51,103,206,184, 52,105,210, 68, 0, 0, 79,158, 60,249,161, 91,183,110, +237, 8, 33,181, 41,165,153,255, 34,210, 46, 21,240,120, 19,196, 66, 97, 71,150,101,235, 0, 0,159,207, 15,214,234,245, 87, 25, +142,219, 98,168, 79, 54, 35,140, 48,226,191,152,169,148,193, 69,254,157, 97,136,103,248, 91, 62, 62, 62,228,252,249,243, 20, 69, +182,136, 43,236,107,122,214,170,229, 49,227,210,169,125, 21,210, 83,211,213,155,215,236,123,154, 35, 16, 43,221, 61,221, 69,155, +215,175,182,156, 48,101,250, 84,133,125,205,135,217, 9,175, 94,150,163,209,117,149,201,100, 39,215,172, 89, 83,219,219,219, 91, +104,103,103,135,132,132, 4,132,134,134,214,190,113,227, 70,207,125,251,246,205, 32,132,244,166,148, 70, 25, 96,206,253,250,254, +221,118,114, 43,107,176,122, 61,156,234, 54, 40,112,180,247,246,198, 21, 48, 58, 29, 56,189, 30, 30,221,122, 2, 0, 56,142,131, +167,167, 39,255, 75, 50,146, 16,226, 84,171, 86,173, 3, 43, 87,174, 20,105, 52, 26, 60,124,248, 16, 55,111,222,228,226,227,227, + 87, 25,106, 67, 97, 95,221,155, 39,147, 31, 29, 48,228, 71,243,239,187, 85, 22,186,218,219, 2, 48,193,235, 8,166,197,197, 43, + 55, 26,159, 58,186,103,188,194,190,250,128,236,132,176,155,165,147, 53,171,102,132,144, 21,249, 30,162, 9, 33,191, 86,170, 84, +233,231,194,215, 20,141,155, 71, 41,133, 64, 32, 72,200,202,202, 26,144,156,156,252,172,168, 77, 61, 11,193,161, 67,185, 60, 98, +193,132,193,252,187,119,239,202, 61, 61, 61, 53, 0,176,122,245,106, 44, 93,186, 84,124,249,242,229,174,251,247,239,239, 74, 8, +217, 64, 41,253,235,107, 42,166, 8,152, 61,108,198, 12,190, 34, 50, 18,138,192, 64, 12,201,204, 20,252, 2,204, 46, 15,209, 34, +132, 84,118,112, 16,254, 57, 99,250, 8,143, 42, 85,155,137, 68, 34,155,220, 32,222,218,228,234, 81, 81,207,250,174,250,101,135, + 47, 33,164, 15,165,244,173,129,246, 4, 0,150, 0,144, 2, 88, 0, 96, 97, 82, 82,146, 59,203,178,112,112,112, 88, 72, 8, 57, + 13, 96,185,173,173, 45, 77, 74, 74,154, 67, 41,101, 74, 83,178, 50,223,209, 5, 31, 73,149,206, 53, 26, 14,195, 71,114,169,243, +244, 46,142, 23,205,170,146,229,139, 54,198,221, 7,128, 46, 85,171,154, 86,169, 41,159,163, 48,171, 99,149, 25,123,109, 78,151, +170, 85,119, 94,124,103, 24,209, 46, 74, 54, 1,192,201,201,105,245,254,253,251, 43, 52,109,218,180,160,142,215,175, 95,159,191, +122,245,106,231,105,211,166,109, 0, 48,194, 64,123,213,109,109,109, 47,179, 44,171, 73, 73, 73,169,158,255,189, 93,189,222, 45, +172, 77,229,237,147,210,178,110, 39,191, 56,237,111,160,173, 38, 82,145,232,196, 95, 7, 54, 58,214,111,218,156,167,176,177,131, + 58, 54, 14,217,122, 93,135,155,247, 30,180, 29, 51, 97,246,148,188, 50,122,100,236,106,140, 48,226,127, 26, 37,114,145,255,100, + 8, 10, 49,201, 98, 21, 36,137, 68,236,187,104,254, 28,146,158,146,174, 82,103,102,105,245,106,181,154, 39,162,234,224,151,239, + 19,121, 2,126,250,180, 41,147, 77,125,231,206,247, 5, 48,196, 80,146, 85,175, 94,189, 71, 39, 79,158,180,179,178,178, 66, 70, + 70, 6, 82, 82, 82,240,232,209, 35, 80, 74,209,187,119,111, 73,211,198,141, 27, 44, 88,184,240, 62, 33,164,185, 33,100, 75,110, +101,131,213,173,114, 99,209,254, 28,153,146,255, 63,216,209,175, 91,193, 53, 75, 99, 50, 0, 0, 82,169,180, 32, 32,241, 23,160, +121,251,246,237, 69, 0, 48,106,212,168,204,172,172, 44, 63, 0,135, 40,165, 6, 69, 90, 85,216, 87,247,182,113,116, 58,247,251, +182,213,178, 58, 85,221,161,211, 51,248,240, 49, 14, 2,161, 5, 92, 92, 68, 24, 49,164,163,176, 77, 11, 43,155, 21,203,118,156, +151,219, 86,239,149,147, 20,118,185, 36, 91, 22, 22, 22,251,142, 30, 61,138, 99,199,142, 1, 0,194,194,194,224,238,238, 46, 47, + 43, 13, 33, 33, 33, 85,122,244,232,113, 4, 64,181,178,174, 45,234, 24, 95, 34,145,160, 85,171, 86,240,244,244,196,153, 51,103, +218, 2,248,235,107, 43,160,234,246,109, 40, 2, 3, 1,255,242, 15, 94, 8, 33,149, 27, 54,116,123,112,225,252, 1,155,243, 23, + 66,177,118,237,110,188,123,151, 43,180, 85,169, 82, 5,131, 7,245, 19, 6, 7, 7,212,234,219,119,112, 0, 33,164, 21,165, 52, +204, 0,179, 75,118,238,220, 57,175, 82,165, 74,232,219,183,111,191, 90,181,106, 57,152,153,153, 97,251,246,237,112,116,116,172, +162,213,106,223,158, 57,115,198,233,227,199,143,152, 60,121, 50, 0,204, 40,201, 80,219, 78,109, 23, 72,186,123,180,174,209,112, + 24, 20,102,142,216,121,248, 40, 94, 63,221,215, 90,163, 11, 93,224, 55,209,121,168,138, 74,134,187,184,155,250, 86,108,228,101, + 93,173, 86, 15,184, 53,124,102,163,102,239,188, 95, 56,161,202, 42,129, 84,189,111,209,154,184,148,207,238,185,223,159,252,218, +153,175,172, 66,174, 34,133,210, 69, 92, 30,193, 42,104,144, 88,138, 30,109,218,180, 41, 40,184,200,200, 72,104, 52, 26,120,120, +120,240,180, 90,173,183,129,249, 90,253,187,239,190,187,123,225,194, 5,235,234,213,171,127, 18, 18,198,193,218,162,147,255,201, + 13,147, 87,108, 60, 88,211,206,179, 87,122,226,203, 83,193,101,145,172,150,205, 26, 94,187,120,242,128,130,100, 71, 67,108,145, + 12,112, 41, 8, 63,242, 7,136,137, 21, 6,140,155, 46,240,110,223,206,185, 99,151, 62,215, 8, 33,237, 41,165,143,141,125,141, + 17, 70,252, 79,171, 90,244,191,237,158, 10,136, 86, 33, 22,249, 9, 56,202,213,181,183,179,150,109, 88,179,247, 49, 95,167,213, +202, 45,204,181, 66,115, 51,142,152,154,243,117, 90,125,182, 91, 21, 55, 49, 71,185,186, 37, 72,105,215,138,142,186,101, 50,217, +201,191,254,250,203, 78, 40, 20,130,227, 56,216,218,218, 34, 34, 34, 2,233,233,233,200,202,202,194,187,208, 80, 84,114,173,128, +197,190,115, 28, 39,207,241, 61, 73, 8,105, 84,120, 26,177,184,109,163,172, 94, 87,180,113, 47, 41,136,240, 39,239,165,217, 44, + 1, 17, 81, 81, 81, 80, 40, 20,168, 93,187,182,226,222,189,123,119, 74, 34, 89, 69,109, 90, 89, 85, 53, 21, 40,100,199,182,254, +190, 80,166,211,135,224,101,120, 42,106, 84,106, 13,123,107, 87,196,165,106,241,224,209, 95, 8, 9, 58,132,170,206,174,152, 56, +174,157,116,213,234, 63,143, 90, 90, 86,118, 77, 75,123,159, 89,156,205,204,204, 76, 69,229,202,149,225,234,154, 27,247,140,101, + 89,188,124,249, 18, 44,203, 22, 28, 23,126,223,123,226, 6,152,204, 15, 24,246,195, 15, 72, 73, 73, 81, 20,103, 83,200, 7, 51, +125,204, 96,129, 76, 8,136,229, 86,218,236,236,236, 2,117, 80,167,211,225,249,243,231,104,222,188,185,215,241,227,199,253,203, +144, 80, 13,202, 79, 29,240,235,198, 61,123, 54, 13,201,200,224, 1,192, 46, 66, 56, 29,165,191, 26, 90,151,236,236,132, 39, 46, + 93,220,111,195,231,189,130,149,249, 47,120,244,232, 3,116,186,220,244,166,164, 36, 98,210,132, 76,136,132,166, 56,115,230,160, +181,135, 71,171, 19,121, 83,103, 92, 25,233,148, 94,188,120, 17,147, 38, 77,194,203,151, 47,157,248,124, 62, 30, 62,124, 8,153, + 76,134, 53,107,214,240, 61, 60, 60,156,228,114, 57, 46, 93,186,132,132,132, 4, 82, 90, 58,111, 93,190,181, 60,227,221,205, 5, + 31,201,165,206, 59, 15, 31,197,143,131, 6,192,129,134,223, 49,175, 74,150,127,215,189,229,207,148, 95,161,155,220,180,174,165, +123,237,238, 16,137, 21,152, 56,123, 41,194, 66,206, 90, 42,179,130, 38, 16, 54,186, 2,242, 98,255,125, 18, 84,249,120, 95,118, +211,225,128,134, 87, 93, 31,187, 57, 53, 28,251, 16, 64,208,223, 68,171,138,128,240, 88,243,124,245,242,237,219,183,120,247,238, + 29, 4, 2, 1, 84, 42, 21, 24,134, 41, 54,157,206,206,206, 99, 25,134,249, 57,175,156,247, 58, 58, 58,142, 60,112,224,128,117, + 97,162,157,175,100,165,166,103,166, 5, 60,126,241,122,250,216,190,109,111, 63, 8,137,182,168,215, 51, 42, 61,240,116, 70, 9, +101, 36,149,137,197, 39, 46,157, 58,168,208,191,191, 1,185, 71, 91, 8, 21,238, 96,245,177, 80,166,229, 32,235, 93, 60, 52,191, +255,134,250, 19,166,225,236,233, 63, 21,181,234, 52, 58, 78, 8,113,167,148,106,191,224,217, 44,143,196,111,180,105,180,105,180, +249,111,104,179, 52, 46, 2,160, 33, 0,251,188,207, 41,200, 93, 50, 99, 3, 32, 25,185,225,192,236, 1,104, 1,136, 11,253,166, +232,113,225,107,139, 30, 23,254,156,146,247,217, 46,239,253, 49,128,212, 50, 6,149,142, 0,124,144,187, 54,203, 39, 47,143, 12, +243, 12, 79, 8, 47,147,101, 57,137,200,214, 78, 61,170,127,251, 58, 87,174, 61,121,110, 98, 99, 38,232,212,182,129,215,163,224, +247,247, 9,143,232, 9,225, 25,180,238,131,207,231, 15,216,176, 97, 67, 29, 51, 51, 51,112, 28, 7,115,115,115, 36, 37, 37, 65, +171,213, 34, 35, 35, 3,154,172, 76,232,178, 50, 17, 24, 29,137,150, 94,109,209,167,243,119, 30, 7, 79,255, 53, 0,192,145,210, +236, 58,213,109, 80,160,100, 45,173,104,253,183, 52, 17,157, 94, 64,186,126,105,224, 14,145, 66,129,142,211,125,191,166, 98, 61, + 19,139,197, 23,123,247,238,221,101,230,204,153,188,248,248,248, 75,132,144,150,148,210, 50,167, 77,117, 18,233,212,241, 83,187, + 89, 90, 42, 40,142, 95,253, 11,109, 26, 12,130,137,152,143,148, 76, 29, 8, 1, 66, 95,156, 4, 33, 86, 8, 10,139, 71,235,250, +102,248,174,147,135,226,244,159,161, 51,241,247,250,160,207,138, 38, 45, 45, 13,137,137,137,208,235,245,208,235,245,232,219,175, + 31,246,239,219,135,156,156, 28,168, 84, 42,104,181, 90,176, 44, 11, 30,143,135,171,231,142, 35,250,125, 40, 90, 52,111,142,146, + 36,217,189,207,168,144, 16,242,224,245,235,215, 8, 13, 13, 69, 76, 76, 12,164, 82, 41, 28, 28, 28,176,116,233, 82,104, 52,185, + 49,202,250,245,235,231, 5, 32,248,107, 31,168,119,192,142, 8,150, 93,208,229,212, 41,187,123,167, 78,113, 15,206,158,141,145, +100,101,109, 55,228,183, 34, 17,250,174,254,117, 92, 13,185, 92,142,152,168, 13,168, 89, 83,132, 25,211,172,225,247, 75, 50, 0, + 96,242, 36, 23, 52,110,100,131,204,244, 63, 97, 99, 55, 15,155, 54, 77,169, 58,124,248,186, 31, 0,236, 45,195,244,130,191,254, +250,171,143,187,187,187,243,179,103,207,136, 88, 44,134, 76, 38,131, 76, 38,131, 84, 42, 69, 98, 98, 34, 34, 34, 34,232,234,213, +171, 99,145, 59,181, 88, 34,242,166, 7,187, 76,239,226,120,241,245,211,125,173,157,249,239, 3,251, 76,108, 21, 25,244,224, 89, +214,149,171,247,150, 49,106,105,116,122,204,181, 57,149, 27, 63,179,153, 48,107, 9,126, 91,189, 8,175, 31,222, 78,181,119,205, +220, 34, 35,154,189, 77, 59, 22,163,146,181, 93, 34,152,176,176, 63, 51,118,120, 31,139,179,246, 1, 99, 47, 8, 72,210,199,228, +167,107, 16,241, 76, 37,169,214, 96,104,245, 42, 60,237,141, 27, 55,100,109,218,180,129, 90,173, 46, 80, 38, 15, 28, 56,192, 49, + 12, 83,236,116,180, 78,167,251, 57, 54, 54,214, 81,165, 82,161,115,231,206,147,215,172, 89, 35,207,143, 81,199,178,236, 39, 74, +214,242,245,251, 47, 79,253,121,203,205,203, 71,126,113, 90,238, 59,178,237,144,137, 43,110,162,132, 56,146, 2, 30,111,194,217, + 83,187, 29,164,150,122,200,172,190,131, 58, 65,133,215, 59,126,132, 50, 83,141,198,203,151, 0, 16, 67,171,231, 97,123,247,190, + 16, 90, 59, 97,209,232,145, 78,243,183,239, 28, 7, 96,131,113, 92,111,132, 17, 70, 20,129, 61, 33,228, 28, 0,248,250,250,206, +243,243,243,123, 65, 8, 57, 71, 41,237,150, 71,116,206, 81, 74,187,229, 95,147,215,103,127,118,156,127,109,209,227,162,159,231, +206,157, 91,107,213,170, 85, 43,155, 55,111,126, 36, 32, 32,224,125, 89, 68, 11,185,241,159,119, 20, 13,197, 3,228,237, 58,244, +241,241, 33,133,223, 63, 81,180, 56,238,246,219,247,145,202,239, 58, 52,117, 57,231, 31,252,120,196, 8,159,246, 3,186,183,233, + 20, 17,149, 18, 90,213,205,193,230,197,139, 96, 51,142,227,110, 27,146, 75, 18,137,164, 91,187,118,237, 4,105,105,105, 48, 49, + 49, 65, 82, 82, 18, 98, 99, 99,161,211,233,160,206, 72,135, 38, 35, 29,234,244, 52,232, 50,210,240,238,201, 35,212,173, 90, 69, +146,183, 88,190, 44, 2, 84,172, 82, 85, 88,217, 18,155,154, 66, 98,106, 10, 82,206,105, 67, 66,200,247,150,150,150, 15, 8, 33, + 11,242, 58,165, 9,115,230,204, 73,230, 56, 14, 43, 86,172, 48, 83, 40, 20,199, 9, 33,146,178,236,152,218,242,187, 53,175, 95, +155,247, 42, 34, 8,173,234, 13, 67,245,202, 93, 17,145,160, 66,114,150, 14,137,233, 58, 52,110,179, 25, 21,235, 45, 65,133,250, +126, 8,253,144, 10, 39,103,119, 30, 4,146, 82,131, 63, 71, 71, 71,127,114,124,228,240, 97, 40,149, 74, 84,173, 90, 21,131, 6, + 13,194,156, 57,115, 48,104,208, 32, 56, 57, 57, 97, 72,255, 30, 88,180,104, 17, 62,126,252, 88, 86, 82, 53,213,171, 87,215,184, +185,185,105,220,220,220, 52, 58,157, 14,217,217,217, 72, 79, 79, 47,154,223, 83,202,253,148,216,219,207,117,116,116, 12,178,183, +183,127, 33,149, 74, 47, 60, 39,228,149,218,205,205,190,101,207,158,196,179,127,127,254, 7,153,140,248, 3, 10, 67,108,217, 88, + 9,125,188,219,117, 17,167,167,237, 6,144, 43, 82,141, 28, 97,139,187,254,181,112,239, 78, 35, 76,154, 80, 21,132, 39, 5,225, +137,161,204,185,129,166, 77,154,139, 44, 44, 72,183, 50,202,122, 48,128,231, 45, 91,182,116,154, 56,113, 34,145, 72, 36,152, 60, +121,178,110,244,232,209,111, 6, 13, 26,244,230,250,245,235,172,155,155, 27, 42, 84,168, 64, 42, 84,168,224, 8,224,121,222,111, + 74,133, 89, 85,178, 92,163, 11,189, 99,225, 46,127,207,194,166, 69,182, 94,210,119,209,154,184,148,101, 91,194,215, 70,188, 86, + 86,121,253,240,118,202,155,144,179, 92,196,227, 91,201,113,111,178,170, 44,219, 18,190,118,238,111,177,197, 62,212,254,254,224, + 78,158,243,215, 41,115,148,130,158,221,189,149, 99, 71, 13,168,110,165,168,117, 0,206,223,213,171,232,234, 50,100,209,202, 77, +186,209,227,166,234,118,253,177,155,102,101,101, 33, 51, 51, 19,155, 54,109, 98,206,158, 61, 27,203,178,236,212,146,198, 64, 0, +160,215,235, 49,118,236, 88,185,153,153, 25,162,163,163, 11, 20, 81, 0,136, 79, 74, 9,190,247, 56,228,213,244,159,250,121,229, +104, 52,154,203,183,158,132,122,186,187,185, 16, 66, 75,220,136, 34, 22, 10, 59, 54,106,218,148, 79,105, 58,136,192, 21,239,246, +173, 70,230,199, 84,100, 38,166,130, 47,148,131,129, 4,122, 78, 12,139,186, 77, 16,246,248, 25,156,109,237, 5, 18,161,208, 24, + 58,203, 8, 35,254, 71, 81, 26, 23, 41, 76,150, 86,173, 90,181,178,180,243,133,222,181, 69,142, 11,136, 84, 81, 18, 86,248, 51, + 0,172, 90,181,106, 37,165,180, 91, 64, 64,192, 97, 0, 42, 3,249,194,152,252,247,194, 94,226,203,100, 29,124,181,214,111,230, +156, 5,176, 52,151,153, 55,105,224,238,112,230,146,255,147,219, 1, 79, 66, 43, 86,176,177,165,122,173,229,175,235,126,115, 33, + 74,149,161,139,193, 61,108,108,108,160,211,233,240,246,237, 91,196,196,196, 64,167,211,129,201,201,129, 38, 61, 29,234,180, 52, +176, 57, 89, 16,177, 44, 84, 73,137,176, 54,145, 2,127,239, 72, 44,235, 6,139, 37, 90,249,239, 82, 51, 51, 72, 76,205,192, 19, + 10,139,157, 86, 44,193,102,195, 38, 77,154, 28, 11, 9, 9,105,218,161, 67,135,101,132, 16,115, 74,233,135,216,216,216,246, 11, + 23, 46,212,216,219,219, 99,236,216,177, 53, 0, 12, 43,147,100,138,181, 30,110, 14, 53, 80,189,202, 48, 84,172,208, 14,233, 57, +122, 36,101,234,145,152,174,195,246,205,205,113, 98, 87, 19,220, 61,209, 26, 33,151, 59, 34, 93,239, 0,133,211,247,160,172,182, + 86,105, 54,175, 94,189,138,165, 75,151, 98,217,178,101, 88,177, 98, 5,150, 45, 91,134,216,216, 88,212,174, 93, 27, 81, 81, 81, +184,120,241, 34,226,227,227, 97, 99, 99,131, 71,143, 30, 97,253,250,245,184,123,247,174, 33,202,157, 65,215, 16, 66,202, 53,151, +206, 48,204,240,248,158, 61,235, 36, 88, 89,121, 54,104,208,160,203,228,201,147,171,180,108,217,178,224,124,149, 42, 85, 92,101, + 50,217, 71, 66,200, 46, 66, 72,253,210,108,113, 64, 3, 91,219,218,208,106, 94,229,149,149, 16,132, 72,209,174, 99, 40, 90,182, +126, 2,157, 94, 4, 30,145,128,199,147,130, 97, 82, 96,105,233, 4, 74, 73,237, 50,146,184, 48, 41, 41,201,253,218,181,107,188, +136,136, 8, 72,165, 82, 0,136, 92,188,120,241,111,107,215,174,125,105,109,109,205,158, 59,119, 14,167, 79,159, 70,183,110,221, +248,163, 71,143,118,175, 80,161,194,182,178,238,123,209,198,184,251,135,214, 93, 28, 40,212, 91,214,151,202, 42, 86, 66,142,226, +251, 9,109,109,229, 0,112,241,221,187, 44, 59,215,204, 85, 57, 89, 65, 81, 22, 46,217,191,148,181, 16,158,210, 69,220,211, 55, +175, 30, 28, 58,117, 41, 35, 49, 33, 77,216,160, 78, 45,149,223,210, 89,162,138,149,170,253,186,104,206, 79, 14,177,153,210,244, +142,147, 47,190, 58,121,233, 81,246,208, 17, 63, 50,163,198, 76, 84, 95,188,116,245, 20,199,113,117, 74,218,113,200,113, 28,226, +227,227,241,226,197, 11,132,135,135, 35, 41, 41, 9,201,201,201,200,202,202, 42,152,110, 52,201,202, 60,255,219,158,179,129,114, +153,204,164,105, 29,119,215,135,207, 94, 38,202,101, 50, 19,247, 74,174,213, 9, 89, 82,108, 59,194,178,108, 29,169,137, 12, 0, + 65,122,200,109,100,167,101, 35, 59, 61, 27, 89,169,217,208,232,248, 80,107,120, 80,105,121,112,243,250, 14,217, 57,106,100,167, +100,128, 99,217,122,198,238,198, 8, 35,140, 40,165, 95, 62,231,235,235, 59,207,192,203, 13,158,222, 44, 74,188,124,125,125,231, + 17, 66,206,205,157, 59,183, 22, 12, 88,211, 76, 41,221, 81,244,149,127,174, 76,247, 14,201,201, 97,217,102,182,158,189,167,205, +254,249,226,225, 63, 54,219,105, 52,202, 40,107, 75, 5,171, 48, 17,219,140, 26,187, 2, 89,217,105,189,178, 83, 13,223, 37,149, +150,150,134,247,239,223, 67, 38,147, 65, 36, 20,130, 85,169,192,170,114,160, 74, 75, 1, 79,167,129,136,101, 97,101, 34,131,155, +147, 3, 42,218, 59, 24,100,243,237,141, 43, 5, 11,223, 11, 79, 23,174,110,226, 1,177, 92, 1,177,169, 2,227,207,221, 2, 0, +136, 68, 34, 96,225, 50, 67, 10,211,198,217,217,249,175, 67,135, 14,137,146,146,146,240,252,249,243, 64, 74,105, 6, 33,196, 20, + 0, 23, 26, 26,122, 45, 36, 36,164,155,187,187, 59, 0, 84, 45,203, 94,102, 50,143,213, 51, 20,209, 31, 35, 17, 17,243, 12, 86, +230,149, 33, 52,169,142,196,116, 29, 36,178,202,208,107,254,158,125, 84,103,126,128, 74,103,216,198, 72,173, 86, 11,134, 97,192, + 48, 12,180, 90, 45,198,140, 25,131,123, 1, 1, 56,114,250, 58,222,191, 11, 67,141, 74, 14,248,225,135,161,104,210,164, 9, 2, + 2, 2, 74,181, 53,188, 1,209,207,111, 3,193,186, 46, 60,136, 21,214,154,102,115, 46, 63, 52,132,108, 81, 74,137, 1,249,185, +182, 91,183,110,213,194,114,114,240,226,213, 43,116, 88,188, 24, 0,112,225,194,133, 79,238,101,250,244,233,226,151, 47, 95,142, +122,242,228,201, 40, 66,200, 58, 74,105,241,139,205, 41,112,254,252,125,252,244,211, 75, 36, 37,229,174,215, 62,122,248,111, 94, + 26,241, 94,135,206, 62,185, 51, 90, 22, 22, 22, 88,183,174,182, 65,249,201,178, 44,118,236,216, 81, 48, 93, 8, 0, 2,129,160, +229,244,233,211,123, 23,119,125,181,106,213, 68,101,217,156,222,207, 69,250,252,131,108,130,121,181,138,181,204,108,234, 34, 69, +255,172,246,179,216,248, 73,211,251,185,108, 88,119, 60, 70, 45, 35,154,189,132,141,174, 32,144,170,247, 25,146,198,119, 23, 55, +105, 45, 42,142,216,247, 49, 41,115,254,196, 31, 7, 91,155, 89,216,229,236,250,205,207,146,199,231,209,191,158,232,210,107, 85, +177,182,248,190,217,198,236,159,166, 45,124,166,101,162, 39, 34,250,175,176,210, 92, 92,176, 44,139,184,184, 56, 36, 37, 37, 33, + 42, 42, 10,201,201,201,121,207,126,242,103, 59, 87,203,217, 32, 66, 21, 21,133, 15,167,118,161,226,208,161,104,188,108, 41, 88, + 78, 0,149,146,197,186, 22,237,145,150,161,130,134, 35,112,106,216, 2, 63, 94,184, 3, 30,101,129,237, 91,140, 61,137, 17, 70, +252,143,194, 16,247, 14,249,132,200,207,207,175,219,183,254,255,194,100,203,207,207,239,133,159,159,159,193,255, 85,116,202,176, +240,113,153,238, 29, 0, 32, 51,233,101,184,181, 91,221,184, 28, 85,142,137,189,157,173,198, 68, 42,225, 50, 50,179,248,207,130, + 3,117,217,241,111, 95,151,227, 62, 66, 67, 66, 66,106,199,197,197, 33,234,195, 7, 48,170, 28,240, 52, 90, 80,181, 18, 29, 90, +181,128, 20,128,148, 71, 32,226,116, 16,240,197,200,202,206, 4,128,208, 50, 59, 71,189,254, 51,101,139, 16, 2,177,169, 41,196, +114, 57,196, 10,211, 79, 20, 46, 67, 20, 27,137, 68,114,232,248,241,227,142,206,206,206, 88,186,116, 41, 92, 92, 92,106,214,169, + 83, 71,217,186,117,107,153,189,189, 61, 60, 61, 61,209,162, 69, 11, 92,188,120, 17, 0,202,244, 41,165,103,164, 65,175, 35,209, + 50, 57, 53, 0,119,110,253, 14,173, 74,131, 6, 94,191, 67, 39,168, 8,219, 90, 75,192,189, 61, 0,229,199, 51,185,234,129, 67, +119,196, 68, 69,130,240,197, 47, 12, 85,158,242, 63, 7, 6, 6,226,240, 25,127, 56,186,121, 32,234,205, 43,188,186,121, 13,247, +108,173,225,230,225, 89, 48, 13, 84, 98, 26, 89, 8,150,111, 41,112,239, 32, 73, 77, 77,149, 88, 89, 89,105,242,243,206,209,209, +241,107,200,214,224,153, 51,103, 34, 93, 40, 4,124,124, 32, 10, 15,135, 78,167, 67,179,102,205,208,184,113, 99, 0, 64,179,102, +205, 32, 16, 8, 80,183,110, 93, 56, 57, 57, 97,203,150, 45,131, 81,194,174, 62, 30,193,115,134, 73,169, 89,165, 74,149, 2,162, +181,111,127, 18,158, 61,233, 8, 2, 49, 54,253,246,183, 55, 7, 87, 87, 87,124,140, 15, 7, 33, 52,164,140, 52, 46,115,112,112, + 88,232,232,232, 88,101,237,218,181,124,169, 84,138,113,227,198, 85,206,206,206,174,152, 39, 37, 99,238,220,185,185, 42,213,162, + 69, 88,188,120, 49, 52, 26,141,178, 36, 99,251,215,215,117, 74, 76,229, 70,217, 59, 56,247,242,182,169, 88,167, 93,167, 14,168, +236,222, 14,237, 58, 69, 1,192, 74, 43, 65,100,255,213, 11,106,159,178,169, 96,181,251,202,165,171,139, 90,121,181,155,239, 59, +214,114,249,170,237,105,101,174,121,204,248,176, 55,235,181,120,192,250,205,219,246,175,255,121,238, 20,105, 84,146, 54, 45, 54, +141,102, 43, 36, 2, 69, 85,123,162,152, 52,123,217,251,184,184,240, 25,136,190, 84,230, 78, 75,142,227, 16, 30, 30, 94,176,166, + 79,173, 86, 35, 39, 39, 7,209,209,209, 5,117, 70, 37, 55,235, 60,113, 68,247,122, 57, 42,149,242, 97,240,155,168, 5,147,135, + 52,207, 81,169,148,111, 34,162,194, 40,221, 88, 44, 27,227,241,120,193,202, 44,101, 7,101,186, 26, 73,207, 95,195,165,189, 27, +244, 12,129,150, 97,145,148,146, 5, 13, 3,176, 60, 33,106,245,255, 1, 44, 17, 32, 57, 46, 22, 60, 62, 63,208,216,221, 24, 97, +196,255, 44,202,116,239, 64, 8, 57,215,188,121,243, 35,133, 85,167,252,207, 0, 52, 0, 74, 91,202,147, 84,152, 76,229, 79, 39, +150,244, 63, 69,236, 26, 58,192,252,108,141, 86,153,238, 29,242,126, 72,234,213,113,115, 90,189,104,136, 11,199, 48, 53, 18,147, + 19, 24,129, 64, 34,172, 96,174,138, 47, 79, 14,106, 52,154,115,215,174, 93,235,217,177, 99, 71,201,155,224, 64,104, 51, 50,160, +205, 72,135,144, 99, 96, 37,107, 4,158, 78, 3,162,213,194,185, 38, 7,117,150, 12,254,247, 66,244, 26,141,230,156,161, 68,139, +199,231,127,186, 46, 75,161,128,196,212, 12, 18,133,162,232,212, 34, 41, 35,163, 76,122,244,232,209,190, 89,179,102,160,148, 98, +199,142, 29,208,233,116, 98,157, 78, 7,173, 86, 11,157, 78,135,204,204, 76,236,223,191, 31, 91,183,110,189, 7, 96, 79,153,157, + 25,163,189,118,249,234,141, 38, 35,135,116, 19, 94, 56,183, 14,140,150,133,138,184, 32, 39, 71,143,108,173, 9, 88,235,161, 64, +194,121,240, 5, 82, 52,175, 91, 25,103,254, 60,169, 3,163,185,110, 32, 11,255, 68, 21,138,142,138, 68,204,187, 48, 40, 50, 63, +194,214,204, 4,202,240, 48, 52,248, 97,216, 23,169, 19, 21, 42, 84, 0,199,113,240,246,246, 46, 88, 92,253,165,100, 43, 37, 37, + 5,103,207,158, 69,179,102,205,224,229,229,133,216,216, 88,132,135,135,163,107,215,174, 5,215, 4, 6, 6,226,217,179,103,168, + 90,181,116,145, 48, 57, 85,127, 33, 38,250,121,191,239,191,255, 94,244,224,193, 3, 80, 74,225,238,110, 6, 51, 83, 57, 8, 79, + 2, 15, 15, 59, 0,185, 99,128,182,109,219, 34, 51, 51,156, 73, 75,163, 23,202,200,199, 67,132,144,211, 90,173,246,109,155, 54, +109,156,222,189,123,135,105,211,166, 9,142, 30, 61,154, 47, 37,195,215,247,211,205, 20, 42, 85,201, 83,247, 53,234,212,156, 85, +153,177,244,146,202, 42, 86, 50,179,169,139,202,238,237, 0, 0, 29,187,141, 68,229,106,174,200, 76, 14,170,164, 86, 69,246, 18, + 9,210, 44,131, 54,197,190,148,249,212, 30,161, 78,188,245, 6,128, 33, 14,128,169,234,205,209,132, 40,225,208, 99,167,255,186, + 56,182,107,183, 30, 66, 61,203, 48,181,221,132, 22,199, 79,157, 79,140,253, 16,181, 17, 81,151, 66,254,214,255, 74, 85,241,216, +204,204, 76,200,229,114,132,132,132,104,124,124,124, 36, 60, 30, 15,111,223,190, 45, 32, 90,118, 54, 86,158, 45, 27,215,174,185, +124,253,254,203,114,137, 68,210,169,109, 35,143,151,111, 62,196, 80, 74, 34, 75, 84, 91,245,250,171,193,207, 3,189,109,157,170, +241,195,111, 61,128,117,235,174,208,104,120, 80,105, 57,104, 24,128,225,139,224, 88,191, 41, 44,170,122,128, 2,120,252,224,158, + 94,163,215, 95, 54,246, 53, 70, 24,241, 63,173,106,209,210, 72, 82,222,231, 84, 0,145,126,126,126,201,133,212,166, 36, 0,129, + 0,234,229, 93,151, 84,228,119, 73,200,221, 61,216,184,144,157,164, 66,132,171,240,103,109,145,107, 12, 26, 0, 22, 94,163, 85, + 44,209, 42,101, 75, 37,108,108,108,236, 26, 52,104, 84,117,231, 31,199, 64, 41,197,235,103,107,144,150,248, 10, 11, 87,222,175, +234,226,226,226, 21, 19, 19,227,111, 72, 34, 88,150, 61,186,123,247,238, 25, 77, 27, 54,104, 80,201,197, 5,129,145, 17, 16, 81, + 22, 34,150, 5, 79,167,129,128,213,194,165, 54, 11, 30, 81, 32, 46, 46, 3,171, 14, 29, 11, 97, 89,246,104, 89,118,107,118,237, +129,165, 49, 25, 32,132, 96,109,243,218, 16,155, 42, 32,146, 43, 48,254,175, 27, 5,228,234,220,210,185, 16, 43, 20,168,218,180, +108,135,240,148, 82,165,169,169,233,147,224,224,224,198,181,107,215,198,140, 25, 51, 16, 25, 25, 9,142,227,144,144,144,160,142, +143,143,143, 77, 74, 74,138, 4,112, 10,192, 78, 67, 60,143,139, 52,234, 13,231, 78,236,155,216,188,149,151,205,247,189,182,226, +244,159,211,145,158,145, 9, 37, 35, 67,142,154, 65,142,134, 15, 43,235, 58,104, 90,183, 46,226, 98, 19,241,226,193,229,108,129, + 70,185,166, 60, 21,148, 16,130,103,207,158,161,138,147, 41,194,238,248,195,198, 68,136,122, 78, 14,112,106,217,170,192,191, 84, +105, 16,242,193, 12, 30, 60,184,192, 51,252,119,223,125, 23, 49,116,232, 80,199,233,211,167,227,143, 63,254,192,189,123,247, 62, + 91,160,237,229,229,133,219,183,111, 47, 1,176,168, 44, 81, 79,171,213,162,102,205,154,120,252,248, 49,174, 93,187,134,118,237, +218,193,203,203, 11, 65, 65, 65,184,114,229, 10,158, 61,123, 6, 66, 8,172,173,173,161,207, 37,207,250,146,140,233,116, 56,254, +203,175,187,231,173, 95,191,181,214,144, 33, 67,112,226,196, 17,140, 28, 81, 3,132, 39, 1, 33, 18,244,232, 94, 3, 75,151, 61, + 70,211,166,109, 97, 99, 35,196,250,117,103,222,171, 84,236,126, 3,178,113,249,149, 43, 87,156,212,106, 53,210,211,211,169, 66, +161, 32, 41, 41,185, 59, 90,139, 83,180,148, 74,165,180, 36, 67,193, 79, 67,215,164,103,209, 52,154,253,172, 87, 42,243,172, 78, +187, 78,209,232,216,109, 4,174,158,219,131, 27,151,175,193, 74, 16, 25, 1,121,214,197,228,136,228,204,248, 28,247,109, 30, 13, + 71,243, 99,114, 46,111,155,252,189, 37,223,209,145, 59,238,187, 53, 35,189,148, 58, 74, 9, 33, 36,245,229,129,191, 78, 81,244, +104,209,188,105,181,218,174,142,226,180,228, 68,250,231,153,139, 33,186,136, 19,103,243, 9, 86, 89, 81, 22, 40,165, 75,125,125, +125,127,206,251,188,119,193,130, 5,163, 87,173, 90,101,251,241,227,199,130, 53, 90,137,201,169, 55, 90,248, 76, 98, 83,210, 51, +180,187,215,207,238, 43,147, 74,196, 11, 86,237,190,165,231,227, 65, 73,118, 25,142,219,210,127,218,194, 41,111, 94, 63,115,174, + 40, 19,227,204,236, 69, 8,188,114, 19,122,158, 8, 63, 93,123, 8,141,142, 69,122,114, 10,174,143,154, 0,133,189, 37,182,222, + 58,145,192,113,220,239,198,174,198, 8, 35,254,119, 81, 10, 23, 41,206,199, 94,130, 1,215, 61, 54,192,206, 87,163,168,138, 85, + 24, 6,109,193, 75, 78, 78, 78,188,125,251, 33,110,157, 91, 14,255,115,203,241,226, 89, 32,226, 98,181,136, 77, 80,195,204,204, +236,126, 41, 29,127,135,162,157,131, 82,169,236,189, 96,225,207, 31,165, 50, 19,180,105,223, 30, 14,182,118, 48, 17, 9,193,103, + 56,240,137, 16,217, 73, 22, 8, 11, 82, 98,206,238, 3,137,217, 74,101,239,162,157, 68, 81,155,133, 73, 6, 33, 4, 18, 51, 83, +136, 21,166,144,152,154,125, 50,141, 40, 53, 51,131,212,212, 12, 2,177,184,184, 69,243,159,217,204,206,206,238,211,183,111,223, +180,140,140, 12,140, 30, 61, 26,254,254,254,207, 46, 95,190,108, 22, 24, 24, 40, 75, 76, 76,172, 70, 41,253,142, 82,186,189, 36, +146, 85,212,102,106,234,187, 44,202,104, 6,248,253, 60, 85,165,102,172,209,111,216, 81,200,121,209, 96, 88, 14, 20,128,147,149, + 24, 45, 59, 44, 67,162,182, 5,142,110, 91,161,228,116,234, 33,133,125,104, 21,181, 73, 41,165,246,246,246,159,229,193,181,107, +215,208,175,111, 31,116,234,213, 19,182,149,170,192,174, 67, 87,116, 26,253, 19,182,109,219, 6, 30,143, 7, 27, 27,155, 79, 20, +142,194, 54,247, 62,163,194, 67, 65,148, 28, 10,162,100,207, 83, 42, 0,240,195,129, 3, 7,126,169, 87,175,222,205,123,247,238, +173, 1, 48,160,240,127, 21, 74,203,226,194,106, 86, 9,101, 52,127,202,148, 41,170, 55,111,222, 64, 46,151,131, 97, 24,220,187, +119, 15, 91,183,110,197,218,181,107,241,236,217, 51, 88, 91, 91,163,106,213,170,208,104, 52,120,252,248,177, 10,192,252, 82,234, + 18,151,148,196,244,217,180,105, 85, 74,183,110,173,177,123,247,111,112,112,104, 1,161,192, 1, 2,161, 45,228,138,154,216,181, +243, 23,116,233,210, 0,127,157, 57,150,154,156,194,244, 41,234,197,189,132,116,170, 31, 62,124,136,109,219,182,161,111,223,190, +177,253,250,245, 99, 51, 50, 50, 10, 20,173,252,104,236,139,243,214,152,105, 52, 26, 73, 73, 54, 71,207, 14,142,157,181, 60,100, +105,194,199,216,102,254, 55,239, 15,190,113,249, 26,222,191,185,129, 27,151,175,225,206,141, 0,223,132,143,177,205, 26, 52,169, + 46,234, 61,122,226,172,125, 39, 79,240, 21,102,142,216,119,242, 4,127,208,164,169, 43, 26,117,106, 55,191,172, 58,159, 87,142, + 52, 59, 49, 97,238,202, 53,155,179, 25,157,154,183,122,227,150, 56, 85, 82,252,124,228,111,197, 44, 65,205, 42,108, 83,169, 84, +110, 87,169, 84, 78, 42,149,202, 73,173, 86,207,143,140,140,108, 51, 99,198,140, 36,150,101, 11,212,210,196, 23,103,238,135,222, +217,179,210,206,198, 82,214,162,113,173, 26,235,182,255,121, 43, 42, 58,225, 96,190, 15,173, 18,202, 72,157,173, 82,247,233,217, +123,104, 78,122,154, 6,205,167,250,130,147, 42,160, 97, 1, 61,229,131, 33, 2, 4, 47, 95, 7,153,149, 41, 14, 69, 60, 85,102, +232,117,125, 10,251,208, 42,227,222,191, 24, 70,155, 70,155, 70,155,255,158, 54,255,147, 65, 8,113, 44, 28,235, 48,207,175,214, +223,138, 86, 89, 91, 42,157,157,157,219,124,223,163, 3,218,118, 91, 0, 74, 41, 94, 61,253, 21,105, 73,175,225,236, 32, 65,120, + 84,102,115, 0,254,134, 38,134, 82, 26, 69, 8,105, 54,101,254,130,147,253,190,107,239, 81,187, 82, 37, 73,197,138,110,144,219, +217, 33, 57, 57, 9,119, 31,188,212,175, 56,124, 60, 36,143,100, 25, 18,130, 7, 28,199,229, 46,114, 7,208,126,202, 28, 16, 62, + 31,200,115,227,144,223, 49, 86,106,220, 2, 68, 32, 0, 75, 57,104, 52, 26,106, 64, 58, 99, 8, 33,125,134,252, 31,123,215, 29, + 30, 85,241,181,223,185,119,123,205,166,119, 2, 4, 82,232,132, 46,189, 8, 72,232, 82, 68,122, 71, 44,136,130,160,160,116,148, + 31, 10, 34, 42, 32, 29, 81,169, 42,189, 74,232, 29,169,161, 5, 2,233,109,211,147,173,247,206,247, 7,217,117, 9, 41,187, 33, + 40,250,237,121,158,155,205,221,187,251,238,244,121,231,204,153,115, 6, 15, 62,178,123,247,110,166, 75,151, 46, 13,119,238,220, +201, 63, 79, 69,228,165,220,249, 67,233, 29,218,125,254,244,113,191, 52,239,208, 91, 29, 82,167,177,168,113, 85, 22, 70, 19, 65, + 98,194, 35,236,222,113,222,120,243,220,129, 28,106,214, 13,204, 79, 43, 59, 4,143,209,104,124, 92,179,102, 77,239, 21, 43, 86, + 88,141,225, 57,142, 67,122,122, 58,206,156, 57,131,122, 77,154,161,214,136, 81, 72, 75, 75,195,178,101,203, 80,165, 74, 21,244, +232,209, 3, 90,173, 22,102,179,249,177,157,117,197, 1, 56, 80,116, 61, 69,104,139, 20, 42,180,188,109,195, 26, 53,106,136,117, + 58, 93, 67, 95, 95, 95,150, 16,178,212, 96, 48, 12,159, 62,125,186,239,130, 5, 11, 16, 22, 22,134,244,244,116, 40, 20, 10,132, +132,132, 32, 45, 45, 13,231,207,159,231, 10, 10, 10, 86, 0,152, 67, 41, 77, 43, 39,125,247, 8, 33,205,223,125,247,173, 29, 95, +124, 62, 46, 68,167,111, 39,118,115,107, 5, 74,205, 72, 75,139, 69,110,206, 41,227,220, 57,235,238,167,164,154,250, 82, 74,239, +218, 89, 77,159,189,253,246,219, 64, 81, 8,158,152,152,152, 43,181,106,213, 10, 41, 77,163,101,143,124,181, 53, 94, 7,224,167, +255,189,255,202,251, 57,233, 87, 67,220, 4,177, 15,155,215,229,151,125,181, 53, 94, 55,251,125,205,188,244,216,168, 59, 73,249, + 7, 86,108,216,177,157, 29,214,231,117, 46, 64,121,119,154,212,139,110,235,208,163,220,250,161, 13, 27, 54, 12, 36, 68, 91, 61, + 53,227,246,197,145,163,199, 13,112, 17, 21,238,109, 16,144, 81,131,169, 18, 33,189,124,249,242, 67,123, 99,134, 22,195,189, 67, + 8,105, 51,125,250,244, 3,148,210,167,108, 19, 82,211,181, 71, 91,116,127,155,102,101,101, 95, 73,189,249,219, 53, 59,176,206, + 19, 66, 58,214,173, 23,177,253,139, 5,159,123,183,123,239, 3,193,157, 63,142, 1,156, 9,143,162,142,129,147, 24,248,175, 78, + 31, 74,201, 54, 26,251, 56,189,194, 59,197, 41, 78,109, 86, 89, 92,228,101, 79,126,113, 99,120, 20,197, 62, 20,216,243,237,248, +248,248,168, 26,193, 1, 7,239,220,105,211,185, 74,128, 39, 0, 32,230, 97, 34, 18, 82,244, 7,237,221, 54, 44,129,108, 53,222, +180,107,239, 64,137, 68,210,157, 20,185,112,160, 21, 8, 42,109, 54,155,227,171, 85,171, 86,202,211,146, 93, 61,113, 28,151, 98, +103, 58,143, 17, 66,134,212,168, 81,227,243, 71,143, 30,237,160,148,230, 63,111, 77,228,165,220,249,195,205,173, 70,240,233,195, +219, 39,157, 61,182,187, 19, 53, 27,234, 1, 0, 17,136, 29, 10, 42,157,151,151, 55,110,194,132, 9, 43,133, 66, 97, 21, 20,217, +156, 89,108,176, 56,142, 99,141, 70,163,148,227, 56, 22, 0, 97, 24,198, 44, 20, 10,117, 59,118,236, 48,155,205,230,199,122,189, +126,220,115,168, 71, 29,234, 0,123,247,238,173,234,234,234,218,153, 16,210,143, 82, 26,158,155,155,171,159, 57,115,230,233,173, + 91,183,230, 84,171, 86,173,107,100,100, 36,113,115,115,195,133, 11, 23,104, 70, 70,198, 54, 0,159, 80, 74, 99, 28, 72, 79, 12, + 33,164,193,184,241,223,191,225,230,182, 50,146, 82, 52, 0, 5, 33, 12,174,101,103,243,123, 11, 10,184, 31,139, 8,163,189,120, +230, 98,154,180,185,215,175, 95, 95, 7, 64, 88,146,141,150, 67, 34,207,251, 93, 87, 24,251, 58, 81, 22,236,252,234,235,120, 29, + 0,124,182, 36, 43, 27,192,234,119,251,184,241,183, 46,173, 94,228,175,190, 59,245,235,157,218,181,246,192, 69, 68, 68, 4, 51, + 12, 51, 16, 64, 93, 47, 73, 86, 77, 79,113, 54, 71, 8,109, 79, 8,227, 1,224,106,237,218,181,119, 3,136,175, 96, 61,223, 1, + 16, 84,252,253,212, 27,191,157, 1,112,198, 65,172,243,132,144,154,239,127, 56,121,162, 88, 40,124, 21, 28, 87,127,238,175, 91, +169, 51,168,180, 83,156,226,148,255,152, 86,107,108, 73,239, 11,236, 5,184, 31, 19,223, 5, 0, 66, 66, 66,232,189,123,247, 28, +158,112, 75, 90,141,227,137,199,247,159,159, 7, 39, 61, 61,189,241,139, 44, 56, 74,233, 79, 0,126,170, 76,204, 34, 34, 53,167, +232,170,104,186,174, 1,104,246, 79, 54, 42,139, 86, 11, 79,130, 48,151, 40,157, 59,119,126,100, 52, 26, 15, 3,136, 35,132,104, + 0,104,141, 70,227, 1,147,201,148, 66, 8,105,252,213, 87, 95, 89, 60,223,207,165,148, 94,172, 96, 58,120, 0,155,139,174,202, +206,227,102, 63, 63,191,201,238,238,238, 53,116, 58,157, 88,167,211,137,108,215, 0, 50,153, 44,205, 94, 44,141,138,172, 23, 9, + 50,221, 53, 42,242, 12,145,114,243,199,246,194,252,235, 97,110,254,216,110, 47,222,229,203,151, 99, 26, 54,108,184,137, 97,152, +106,148, 82,111,128,186, 80,138, 52, 74,105,186, 64, 32, 72,184,121,243,102,194,203, 50, 0, 21, 17,169,197, 69,151, 83,156,226, + 20,167,252,167,164, 44, 27, 45,129,163, 96,119,239,222, 37,206, 34,117,138, 45,217, 42,235,121,108,108,172, 30,192,233,162,171, +248,119, 47, 2,232,241,178,231, 49, 49, 49, 49,162, 50,112, 70, 79,189,150, 0, 96, 82,227, 18, 66, 59,127,182, 76,155, 11, 96, + 74,251,158,142, 97, 94,185,114,229, 49,128,199,206,150,232, 20,167, 56,197, 41,255,156,148,164,205,178, 59,214,161, 83,156,226, + 20,167, 56,197, 41, 78,113,138, 83, 74, 23, 11,169, 42,201,143, 22, 1,208,169,148, 47,217,237,186,190, 34,167, 15,202,195,119, + 98, 58, 49,157,152, 78, 76, 39,166, 19,211,137,249,223,195,252,175, 74, 73, 36, 11, 0, 72, 5, 14, 37, 57,242,163,157, 42,187, +192,157,152, 78, 76, 39,166, 19,211,137,233,196,116, 98,254,247, 48,255,237, 36,171, 4,194,233,220, 58,116,138, 83,156,242,255, + 91,182,109,219,102, 87, 80,209, 55,166,174,238,174, 84,186,206,204,203,201,254,252,231,197, 35,119, 90,222,239,215,175, 31,231, + 44, 69,167, 56,197, 41, 21, 50,134, 15, 14, 14,172,205,112,124, 75, 74, 25,150, 50,212, 68,114, 10,127,185,175,213, 62,229,118, +160, 74,149, 42, 26, 33,131, 30,132, 82, 5, 33, 60,199,179,204,169,152,152,184,155, 14, 48, 64,177,171,171,235,219, 34,145,168, +147,193, 96, 8, 96, 24, 38, 94,175,215, 31, 46, 40, 40, 88, 94,220,113,225, 63, 41, 97, 97, 97,131,142, 29, 59,166,105,213,170, +149, 94, 38,147,153, 11, 11, 11, 5,251,247,239,151,188,246,218,107, 89,247,238,221,171,208,137, 68,127,127,255, 14,171, 87,175, +174,222,165, 75, 23,212,172, 89, 51,127,224,192,129,162, 22, 45, 90,136, 70,143, 30,253, 32, 33, 33,225,168,131, 76,186, 54, 33, +100, 35, 33,132,229,121,126,104,209,137,196, 23,193,216, 25,134, 97,198, 17, 66,250, 80, 74,131, 9, 33, 49,148,210,157, 60,207, +175,180,199, 59,126, 9,120,175, 3,232,198, 48, 76, 4, 0,240, 60,127, 25,192, 94, 74,233,246,231, 72,227, 11,195,148,203,229, + 13, 1,160,160,160,224, 74,101, 97, 18, 66, 26, 22,117,210, 10, 97, 18, 66, 70,200,100,178, 49, 0, 80, 88, 88,248, 3,165,116, +157,195,137, 89, 89,139, 70,204,142, 6, 0, 92,254, 44, 28, 0,224,208,253,184, 91,196,145,223, 42, 9,207, 33,140,103,203,160, +219,224,193,131, 23,252,248,227,143,159, 81, 74,127,123, 17,109,223,199, 39,112,249,151, 95,175,242,155,244,246,168,207,241, 36, + 34, 68,153, 82,135,144, 87,197, 44,219,211,192,113, 39,110, 2, 91, 1, 8,220,220,220, 6,137,197,226, 54, 6,131,193, 87, 32, + 16, 36, 25, 12,134,227,217,217,217, 63, 81, 74, 77,207,157,192,104,226,106, 44,128, 15,225,255,138,243, 70, 25,232, 69,114, 36, + 35,156,102,190, 4,171,125, 6, 79,252,237,152, 0,172,169,136, 59, 15,150,101, 39,249,249,249,245,201,201,201, 41, 96, 89,150, + 62,129, 37, 79,254, 0, 96, 24,134,240, 60,159,154,145,145, 49,244,255,145, 22, 37,168,168, 92,171, 22,189, 37, 4,224, 13,224, + 42,128, 73,148,210, 60, 39, 5,250,219,234,162,184, 70,107, 15,165, 52,201, 74,180,108,220,221,183,139,140,140,140, 10, 14, 14, +172,221,175,119,223, 5,227,199, 77, 32, 44,203,224,250,141, 27,130, 55,135,142,232,236,230,230,230,175,212,235,107,129, 16,190, + 64, 42,189,110, 50, 25, 19,182,254,244,163, 42, 60, 44,140,227, 56, 30, 43, 86,126,255, 90,112,112,224,199,246,144, 45, 66, 72, +168,143,143,207,198,105,211,166,249,244,236,217,147,245,241,241, 65,108,108,172,230,231,159,127, 14,251,230,155,111, 6, 16, 66, +134, 22,249,242,113, 52,179,173,125,220,152,206, 42, 25,233,136, 92, 14,185, 38, 28, 73, 46,196, 65, 74,233,137,138, 22, 96, 65, + 65,193, 59, 5, 5, 5,205,154, 52,105, 66,215,172, 89, 67,134, 15, 31, 78, 9, 33,164,176,176,112, 61, 42,232,250, 65,161, 80, +124,219,165, 75,151,144,144,144,144,152,251,247,239,119,219,178,101,203,222, 97,195,134, 5, 43, 20,138,187, 0, 66, 29,132, 91, +151,145,145,209,160,176,176, 16, 1, 1, 1,107, 0, 52,122, 1,141,136,176, 44,187,211,223,223,159, 46, 90,180,232,183, 6, 13, + 26,120,107,181, 90,243,148, 41, 83, 58,157, 61,123,246, 53, 66, 72, 79,123,201, 22, 33,196,149, 16,178,210,199,199,199,227,243, +207, 63,191,215,184,113,227,171, 18,137, 68,124,247,238, 93,249,228,201,147,223,103, 24,102, 0,165,116, 28,165,246, 79, 16, 22, + 76,127,127,127,143, 5, 11, 22,196, 70, 68, 68, 92, 23,137, 68,162,187,119,239, 42, 62,250,232,163, 73, 21,197,100, 24,102, 69, +139, 22, 45, 92, 63,251,236,179, 91, 97, 97, 97,167, 89,150, 21,199,199,199, 51,179,102,205,122,155,101,217,254, 60,207,143,175, + 72, 58,189,189,189, 93,103,205,154,117,171, 69,139, 22,103, 69, 34,145,232,246,237,219,204,180,105,211,222,118, 36,157,238,238, +238,237,221,221,221, 87, 37, 39, 39, 11, 0,192,215,215,183,105,141, 26, 53,190,177,141,105,105, 49, 13, 48,153, 76,185, 58,157, +110,112, 70, 70, 70,137,142,112,135, 79, 95,214, 3, 0,190, 49, 90,238,159,188,150,119, 15,172,216,101, 79,190, 35,124, 9, 5, +128, 65, 31, 44,238,253,228,245,201,251, 95,230, 3, 2,129,128,223,232, 75,232,229, 36,251, 93,198, 16, 66,122,117,232,208, 97, +214,209,163, 71,191,111,215,174,221, 71,155, 54,109,242,138,139,139,251,130, 16, 18,248,198, 27,111, 12, 63,114,228,200,194,180, +180,180,109,149,213,254,197, 34,137,132, 48, 4, 50,169, 92,109,207,231,133, 12,211,253,116,175, 94, 99,126,184,125, 59,226,155, +232,232,234,249,190,190,205,222,125,247, 93,239,190,125,251, 50,129,129,129,184,119,239,158,251,166, 77,155,106,253,240,195, 15, +125, 8, 33,239, 81, 74, 31, 61, 15,201,202,207, 66, 61,189, 1, 17,148, 66,243, 87, 25, 33, 75, 98,196,101, 69, 52,185,246, 18, +144,173, 79,215,173, 91,247,217,189,123,247,176,112,225, 66, 0, 88,238,224,248, 51,185, 79,159, 62,145, 59,118,236,144,109,221, +186, 85,214,164, 73, 19,248,248,248,160,104, 49,101,117, 76, 93,189,122,245,255, 87,147,187,187,187,251,154, 7, 15, 30,180, 87, + 40, 20, 79,189, 31, 19, 19,211, 48, 36, 36, 36, 27,192, 7,142, 18, 55, 79, 79,207,205, 60,207,235, 51, 50, 50, 70, 1,128, 74, +165,250, 81,161, 80,184, 38, 37, 37,125,252,162, 22, 50, 86,102, 82,140,139,252,155, 53, 90, 37, 58, 44,181,141,152,205,112,124, +203,241,227, 38,144,129,131,222, 72,190, 23,243,128, 23, 8,197,131,246, 31, 56, 32,175, 93,187, 54,163, 95,190, 28,230,180, 52, +152,222,127,255,149,195,135, 15,155,250, 15, 26, 82, 40,100,201,186,224,234,213,228,191,252,244,179,207,142,237,219, 90, 2,184, + 89,158, 38,203,199,199,103,227,177, 99,199,252,171, 87,175,142,172,172, 44,196,198,198, 34, 63, 63, 31, 3, 6, 12, 16,182,108, +217,210,191, 95,191,126, 27, 9, 33,173,236,213,108, 17, 66,188,107, 6, 8,118,127,249,233,128,208,215, 58,183, 84,248, 7,214, + 0, 77,214, 33,238,126,116,147,221,199,206,190, 27,162, 97,238,220,203,166,221, 41,165, 41,142, 22, 96,122,122,250,212, 62,125, +250,108,111,223,190,189,167, 68, 34,129,159,159, 31,233,217,179,103,106, 98, 98,226,236,231, 32, 46, 40, 90,133,113,182,175,197, +195, 3,217, 41, 1,174,174,174,112,117,117, 5, 0,255,231, 93,121,106, 52,154,229, 42,149,170, 95, 78, 78, 78, 33,195, 48,148, + 16, 66, 21, 10,133,204,213,213,245,207, 91,209,119,252,244,122,125,205,197, 75,127,248,186, 67,235, 6,234, 67,135, 14,161,111, +223,190,244,224,193,131,227, 0,124,111,231,111,172,236,211,167, 79,193,204,153, 51,117,247, 98, 98,253,111,221,137, 33, 10,169, +152,247,240,240, 16,158, 63,127, 94,176,100,201, 18,233,172, 89,179, 86, 2,232,231, 64,186, 87,190,241,198, 27,198, 15, 63,252, + 48,233,246,189, 7, 94,215,110,221,163, 74,169,208,236,225,225,206,158, 61,123,150,175, 8, 38,195, 48, 43,166, 78,157,154, 51, +110,220,184,204, 12,109,182, 79,102, 78, 30,149, 8, 89,147,143,143,143,224,183,223,126,211,111,222,188,153, 25, 51,102,204, 10, + 0,253, 29, 40,226, 21, 61,123,246,204,157, 54,109, 90,214,221,152,135, 62,215,110,222,129, 92, 34, 52,121,123,123,177, 23, 46, + 92, 48, 46, 94,188,152,153, 55,111,158, 93,233, 84, 40, 20, 27,182,108,217, 34,248,237,183, 39, 99,223,153, 51,103,152,224,224, + 96,185,237,103, 10,117,122, 48, 4, 72, 79, 79,151,183,104,209, 98, 3,128,128,103, 72,208,236,104, 12,159, 14,188,243,206, 59, + 73,142,182,151, 8,223,119,113,185, 28,247,183,252,138, 90,116,208, 7,139,123, 11, 4, 2,126,204,152, 49,201,197,159,235,116, + 58, 2,160,103,132, 3,100,171, 91,183,110,159,236,217,179,167,198,166, 77,155,190,218,188,121,179, 1, 0,164, 82,169,199,207, + 63,255,188,112,192,128, 1, 24, 48, 96,192, 76, 0,149, 70,180, 56,202, 25, 1, 64, 34,149, 72,162,163,163, 73,120,120,120,153, +198,173, 70,158,191,248,195,237,219,141,223, 10, 15,111,162,229,249,154,162,215, 94,203,155, 60,121,114,122, 78, 78, 14, 98, 99, + 99, 97, 52, 26, 49,124,248,112,182, 93,187,118,126, 3, 6, 12, 88, 70, 8,121,157, 82,106,180, 67,171,179,216,223,223,127,108, +118,118,118,158, 69,171, 83,171,154, 74,208,166,161, 89, 82,191,166, 73, 44, 98,205,162, 30,239,243,228,224,114,146, 31, 94, 29, + 39, 1, 64, 84,128, 52, 17,240,220, 68,203, 37,144, 84,231,132,152,231, 89, 85,254,106, 90, 76,193,103,121,143,232,242,178, 52, +182, 10,133,162,119,126,126,254,182,162,201, 57,180,123,247,238, 56,123,246, 44, 0,180, 4,176,156, 16,210,129, 97,152, 55,121, +158, 95, 77, 41, 45, 43,148,219,187,189,122,245,122,117,199,142, 29, 42, 0,216,182,109, 27, 76, 38, 19,130,131,131, 33, 18,137, + 32, 22,139, 33, 20, 10,173,209, 65,254, 63, 9,195, 48,146,171, 87,175,194,207,207,175,120, 59, 1,128, 54, 21,128,156, 25, 19, + 19,211,226,210,165, 75,104,223,190,253,204,122,245,234,117,141,138,138,242,201,200,200, 64,251,246,237,151, 1,248,237, 69,231, +201,150,139,252,103,234,169, 24,147,108,247,132,153, 49, 44,203, 50,120, 16, 19,107,106,223,190,227,176,199,143, 31, 43,155, 53, +107,198, 8,133, 66,228, 31, 61, 10,221,133, 11, 80, 42,149,232,211,167,143,240,248,241,227,106,181, 82, 61,250,225,131,135,185, + 44,203,128, 82,166, 92,155, 7, 87, 87,215,183, 63,254,248, 99,159,144,144, 16,152,205,102,171, 71,115,179,217,140,184,184, 56, + 40,149, 74, 12, 29, 58,212, 75, 46,151,191,109,231, 36, 91, 53, 52,216,235,242,177,189, 43, 27, 77, 30,223, 77, 17, 42, 63, 4, + 69,220,123, 80,110,123, 11,181, 18,247, 99, 90,239,102,138,131,223,206,140,168,225,231,118,153, 16, 82,213,209, 66,210,233,116, + 39,175, 95,191, 62, 58, 42, 42,138, 7,128, 63,254,248,131,222,186,117,107,220,243,172, 66,121,158, 71, 86, 86, 22,120,158,103, +139,238, 45,175,255,168,122, 95,173, 86,175,232,218,181,235, 27,143, 30, 61,146,237,219,183,207,253,241,227,199, 30, 15, 31, 62, +244, 12, 13, 13, 21, 44, 92,184,112,143, 78,111,100, 77, 28, 53,152, 57, 83,110,210,141, 27, 49,153, 41, 41,151,215,174, 93, 91, + 72, 8,233, 99,231,111,188,238,235,235,235, 62,125,250,116, 16,161,188,105, 88,173,122, 33,172, 80,230,194, 8,197, 46,133,133, + 58,238,193,131, 7,113,211,167, 79,175,214,160, 65, 3,191,162,237, 53,187, 48,253,252,252, 60, 62,252,240, 67, 8, 36,170,134, +245, 27, 68,212, 16, 75, 20, 42, 86, 40, 83, 53,107,214,172, 93, 76, 76, 76,226,180,105,211,124,155, 52,105,226, 16,102,147, 38, + 77, 92,199,140, 25, 99,150,202, 84, 45,170, 87, 15,174, 85,191, 78,173,200,208,208,208,222, 2,129,192,156,150,150,246,104,232, +208,161,190, 61,122,244,240,118, 4,211,203,203,203,117,218,180,105,230,192,160,224, 46, 93, 94,237,220, 92, 36, 83,185, 8,196, + 10, 77, 65,129,142,187,125,251,246,163, 25, 51,102,248, 54,108,216,208,203, 30,204,130,130, 2,161,135,135, 7,234,214,173,139, +218,193,193,200,206,206,198,142, 29, 59,176,110,221, 58,172, 94,189, 26, 63,253,244, 19, 26,183,234, 12,149, 74,133,196,196, 68, +228,228,228, 8,255,238, 54,197,175,168, 69,191, 49,140,237, 57, 97,194,132,196, 49, 99,198, 36,203,100, 50,190,248,229,230,230, +198, 13, 30, 60, 56,101,232, 71, 75,123, 90,182, 22,203,210,100,117,236,216,241,234,222,189,123,239,111,218,180, 9,181,107,215, + 70,151, 46, 93,196, 0,240,246,219,111,139, 7, 12, 24,128, 45, 91,182, 96,219,182,109, 55, 67, 67, 67, 79, 17, 66,122,217,147, +206,161, 67,135,182,234,223,191,255,137,254,253,251, 95, 25, 56,112,224,170,113,227,198, 61, 53,115, 37, 37,198, 95, 52, 24, 12, +104, 16,209, 68, 62,119,205,185,193,229,225,221, 2, 54,173,138,142, 94,247,249,141, 27,143,102,214,174,173, 9,122,248,208,109, +253,226,197, 30,150, 32,221, 38,147, 9,113,113,113,112,117,117,197,224,193,131, 61, 36, 18,201, 80, 59,218,207,146, 94,189,122, +141,120,252,248,177,242,135, 31,126,240,189,114,229,138, 95, 82, 82,146,239,145,195, 7, 60,167,124,240,182,202, 69, 41, 22, 39, +166, 61, 33,170, 15, 19,161,136,126,128, 86,148, 66, 99,187,157, 88,161,113,193,143,200,228,129,228,155, 26,173, 52,119, 62,220, +210,112,224,180, 95, 27,186,122, 4, 74, 63, 46, 35,157,245, 23, 45, 90,180,117,215,174, 93,131, 90,181,106,181,157, 16, 34, 43, +225, 51,210,198,141, 27,239,216,178,101,203,136,214,173, 91,159, 36,132,212, 45,117, 21, 25, 16,208,231,215, 95,127,117,183,220, +123,120,120, 64, 42,149, 62, 67,178, 68, 34, 17, 24,134,193,255, 39, 73, 75, 75,123,179, 77,155, 54, 91,187,117,235,166,191,116, +233, 18,210,210,210,224,239,111, 93,107, 39, 87, 0,210, 77, 46,151, 35, 48, 48, 16, 33, 33, 33,131,142, 31, 63,238, 99, 50,153, +240,240,225, 67,164,166,166, 94,254, 59,242,100,203, 69,254, 77, 82, 44,206,225, 88, 0,123,158, 33, 90, 69,177,133,142, 1, 0, + 37, 36,255,234,245,235, 66, 86, 44, 30,242,227,230,205, 18,145, 72,132, 71,143, 30,225,230,205,155, 40, 56,114, 4,133,167, 79, + 35, 37, 37, 5,121,121,121,240,246,246,198,202, 53,107, 20, 6,142,142,188,125,231, 14, 75,153,191,236, 13, 74, 59,145, 32,145, + 72, 58,245,237,219,183, 84, 66,150,152,152,136,110,221,186, 9, 89,150,237, 84,130,122,238,112,177,204, 17, 63, 79,178,235,200, +246,185,190,190,226,155,192,189,201, 64,238,101,128,234, 1,179, 1, 72,184, 6,236,153,141,160,188,104,114, 96,238, 48, 31,127, +185, 96, 23, 41,166, 54,178,227,120,107,112,120,120,248,234, 33, 67,134, 48, 0,208,161, 67, 7, 18, 30, 30,190,138, 16, 18, 92, +134, 26,241,112, 57,147,228,217,204,204, 76, 12, 24, 48,192,189, 70,141, 26,135, 7, 12, 24,224,110,121,191,162,152, 22,109,114, +157, 58,117, 50,100, 50,217, 79,132,144,114, 7, 88, 91, 76,141, 70,179,188, 91,183,110,253, 54,111,222, 44, 2,128, 99,199,142, + 97,215,174, 93,184,113,227, 6,238,222,189,203, 71, 68, 68,120, 46, 93,189,117,197,242,239, 55, 44,233,221,178,129, 95,187,166, + 17,181,148,121,153,121,222,222,222, 45, 41,165,193,118,166,179,219,236,217,179,111,222,186,255,200,133, 17, 8, 5, 34,161, 64, +162, 86, 43,188, 93, 85,138, 0, 55,185,212, 95,194, 16,101, 65, 65, 65,242, 79, 63,253,196, 3,232,102, 47,230,220,185,115, 31, +220,186,247, 72, 67, 24,129, 64, 40, 16,138,148, 74,185,230,181, 46,237,155, 0,128, 8, 84,148,147,147,147,178,110,221, 58,163, + 35,152,159,125,246,217,117,109, 86,158,171, 64, 40, 20, 10, 4,172,181, 44, 21, 50,153,167, 92, 34, 17,235,245,250,132,175,191, +254,186,208, 17,204,217,179,103,223,188,125,255,177, 27, 67, 8, 75, 8, 35, 80,171, 20,238,238, 46,114, 79, 79,165,204, 67, 46, + 96,197, 57, 57, 57, 9, 27, 55,110,180, 11,211,104, 52,138, 82, 82, 82,112,235,214, 45, 4, 54,105,130, 67,135, 14,161, 74,149, + 42, 24, 48, 96, 0,222,120,227, 13,200,100, 50,116,104, 81, 15,211,167, 79,199,253,251,247, 97, 52, 26, 37, 37, 97, 90,237,164, +138,137,159,159,223,165,242,218,143,237,119,139,167, 51,194,151,208,111, 12, 99,123,218, 18,172,210,240,221,220,220,184,146,180, + 93,197, 49,187,117,235,246,201,145, 35, 71,106,108,220,184,177,231,208,161, 67, 79,110,220,184, 17,205,155, 55,199,173, 91,183, + 80,173, 90, 53,172, 95,191, 30,111,188,241,198,201,101,203,150,245,188,116,233, 82,131,234,213,171,127, 92, 30,230,192,129, 3, + 39, 54,108,216,240,104,114,114,114, 11,173, 86, 91,119,199,142, 29, 35,251,244,233,243, 96,208,160, 65, 29,173, 26, 45,147,105, +243,158,223,183, 35,178,103, 95,132,213,169,187, 98,248,199,155,234,149,133, 73, 41,165, 55,128, 85,235,146,146,210, 54,235,116, + 5, 3,132, 66,185,252,220, 57,183,109,223,127,239, 97,123,210, 59, 33, 33, 1, 61,122,244, 16,138, 68,162,214,101,165,147, 16, +178,168,119,239,222, 3,118,236,216,225,106,209,234,156, 62,125, 26,215,174, 93, 67,108,108, 44,178,178,178,208,113, 92, 30, 38, + 44,124,130, 61, 97, 33, 69,231,183,169,162,130, 99,136, 85,228, 65,196,199, 93, 45, 56, 53,242,235,176,183,199,174,168, 45, 80, +186, 9,241,227, 71,119,145,114, 79,183,173,148,116,146, 22, 45, 90,108,234,223,191, 63, 49, 24, 12, 48, 24, 12, 6, 74,105, 97, + 73,216,254,254,254,210,250,245,235, 99,220,184,113,140, 90,173, 94, 86, 90, 58,243,243,243,245,123,247,238,197,208,161, 67,241, +222,123,239,161,102,205,154,112,117,117,133, 80, 40,196,134, 77,191,120,188, 49,114,124,104,163, 86,109, 26,212,110,212,188,126, +174,158,109, 34,146,187,141, 33, 37,108, 13,188,136, 19,114, 47, 3,102,189,122,245, 90,157, 63,127, 94,210,166, 77, 27, 60,122, +244, 8, 66,161,117, 61,197, 61, 79, 58,103,207,158, 45,209,233,116,248,243,207, 63, 49,108,216,176, 4,163,209,248,254,139,206, +123,113, 46,242,111, 18, 74,233,170, 98, 87, 82,105, 26,173,217, 0, 96,226,177,107,200,176,145, 5,187,119,239,150,139,197, 98, + 60,122,244, 8, 73, 73, 73,216,176,110, 29,215,193,203, 43,183,139,191,127,206,134,117,235,168,193, 96, 0,165, 20,225,225,225, +232,215,175,159,236,245, 1,131, 82, 73, 78,225, 47,118, 48, 63, 95,203,254,250,200,145, 35,159,121, 62,101,202, 20,168,213,106, + 16, 66,124,236,200, 95,255,119,103,247, 14,112,173,174, 73,161,201, 27,180, 96,165,128, 64, 5, 8,212,128,212, 5,144,168, 0, +177, 28,250, 75, 71,181, 12,237, 18,219,183,245, 40,127, 7,183,122,224,231,231, 55,243,232,209,163,158,151, 46, 93,162, 57, 57, + 57, 72, 74, 74,162, 11, 22, 44,240,244,243,243,155, 89,209, 74, 73, 76, 76,156, 27, 25, 25,153, 50,108,216, 48,151,253,251,247, + 7, 14, 27, 54,204, 37, 50, 50, 50, 37, 49, 49,113,238,243, 84,182, 72, 36, 98,111,220,184,225, 54,111,222,188, 55, 0, 92,172, + 91,183,110, 70, 64, 64,192,197, 34,163,201, 50, 69,165, 82, 89, 73,150, 69,187, 38, 16, 8, 32, 20, 10,225,231,231,103,208,106, +181, 92,235, 70,193,178,112, 23,198,228, 39, 17,201,220,100,210, 0,149,218,165, 89, 70, 70,198, 85, 66,136, 93,241, 9, 9, 33, + 13,155, 54,109, 42,228,168,144,159, 48,164,131,223,219, 35,218,123,125, 55,111, 76,149,175,231,142,245, 95, 52,107,116,248,220, +169,131,219, 51, 60,175,171, 86,173,154,143,197,160,221, 14,245,121, 68,227,198,141, 5, 60,132,184,117, 39, 54,229, 81,124, 66, +238,171,237, 90, 88, 53,151,181, 27, 70,116,241,244,244,108, 19, 30, 30,222,216, 94,159, 48, 50,153,172, 97, 88, 88,152,128, 97, +133,196,221, 85, 21,168, 82,202,188, 45,207,212, 26,205, 43,110,158,158,253, 25, 74,179,125,125,125,189,100, 50, 89, 67, 7,242, + 46,224, 33,130,183,151,155,139,167,135, 70,217,165,125,203,154, 45, 94,105, 17, 90,175, 89,243, 22,117, 26, 53,126,157,152,205, + 57,193,193,193, 94, 22, 35,249,178, 68,175,215, 75, 55,111,222,140,121,243,230,161,126, 80, 16,252,253,253,225,229,229,133,211, +167, 79,227,252,249,243,112,117,117, 69,106,106, 42, 22, 47, 94,140,157, 59,119,194,104, 52,170, 28,109, 79,246,144,173,178,196, +108, 54, 51,197, 9, 86,105,248, 50,153,140,183, 24,201,151, 38,123,247,238,221,100,209,100, 77,154, 52,169,213,210,165, 75, 79, + 70, 71, 71, 67,169, 84,226,252,249,243, 24, 57,114,228,201,101,203,150,181, 26, 63,126, 60,214,173, 91,135, 7, 15, 30,172, 41, + 11,111,224,192,129,179, 70,143, 30,253,117, 84, 84, 20,227,237,237, 13, 87, 87, 87,244,238,221, 27,107,214,172, 17,152,205,230, +181,253,251,247,191,210,191,127,255, 43, 92,220,193, 79,182,174, 94,112,250,250,213, 43,152,248,238,135, 98,131,217, 52,205,142, +129,151, 22, 42,149,185,230, 54,109,180, 91, 76,166,130,129, 34,145,220,229,202, 21,183, 93,107,215, 90,201,214,244,233,211,225, +226,226, 2, 60, 49, 96, 70, 25, 90,157,177, 59,119,238,180,142,135,238,238,238, 16,139,197, 16,137, 68, 16, 10,133, 96, 89, 22, +135, 87, 40,240,253,244, 39,252,226,251,233, 4, 7,151,147,231,138,205,170, 8, 32,117, 93,189,197, 87,222, 90, 95,167, 65,221, +142,238, 56,253,115, 50, 22, 68, 94,138, 63,191, 37,109,178, 46,181,212, 80, 74,141,166, 76,153, 82, 59, 53, 53, 21, 23, 46, 92, +192,133, 11, 23,230,149, 82, 54,186,223,127,255,253,139,188,188, 60, 84,175, 94, 29,189,122,245,106, 67, 8,105, 82, 74,191, 65, +227,198,141,209,163, 71, 15,180,111,223, 30,245,235,215,135,193,104, 22,246, 31, 50, 54,236,198,131, 52,255, 5,139, 23,200,143, +254,177,131, 57,121, 50,138,221,180,253,160, 75,139,246,157,191, 22,169,124,207, 18,185,135,239,127, 93,163, 37,149, 74,151, 70, + 69, 69,249, 24,141, 70, 92,191,126, 29,239,189,247,222,243,198, 12,181, 42, 64, 2, 3, 3,113,236,216, 49, 12, 30, 60, 88,151, +146,146,114,230,239,202,147, 45, 23,249,175,136,192,134, 65, 90,229,241,227,199, 89,110,110,110,254, 97, 97, 97,140,193, 96,120, +178, 37,177,109, 27,183,122,237,218, 61, 58,157,238, 93, 0,162,229,223,125,183,194, 63, 32,160,253,144,161, 67,137,201,100, 66, +100,100,164,120,247,238,221,238,247, 83, 82,202, 13,136, 92,124,181, 49,124,248,112, 44, 93,186, 20, 0,240,206, 59,239, 88, 85, +235,196, 14,131, 37,165, 11,186,117,233,222, 88, 29,167,248, 70,109,124,197,148, 87,245,190,234,172, 34, 79,214, 24,140, 88, 0, + 41, 11,222,104, 50,223, 77,237,115,241,254,221, 90,181,101,218,140,106,157,234,180,197,234, 67, 27,187, 1,216, 98,247,170, 78, + 46,111,170, 84, 42,113,241,226, 69,109,227,198,141,179, 40,165, 46,115,231,206,245,144,203,229, 77,159,131,253, 62, 36,132,180, +105,217,178,229,219, 12,195,116,226,121,254,112, 74, 74,202,114, 74,233, 67, 59, 39,237, 9, 0, 62,131,141, 29,138,193, 96, 0, +195, 48,160,148, 98,224,192,129,152, 62,125,122,237,107,215,174,225,232,209,163,110,157, 58,117, 58, 75, 8,201, 2, 48,138, 82, + 90,162,214, 44, 39, 39,167,240,252,249,243,178,163, 71,143,130,231,121,184,185,185, 65,173, 86, 67, 34,145,160,119,239,222,202, +105,211,166,117, 60,112,224, 64,106, 78,213, 42,172, 52, 41, 33, 95,162, 84,170,224,227,223,122,252,160, 55,163, 41,165, 59, 29, + 24, 28,196, 50,129, 89, 71, 56, 61,179,232,211,101,140, 92, 36, 34, 82,145, 0, 18,190, 0,159,124, 49,159,136, 40, 39,128,131, +251,243, 34,145, 72,164,146,192,192,138, 89,147,156,160, 82,156,195,177, 44, 43,150,138,160, 47,237,185,144, 97, 24,134, 97, 68, + 0,204,246, 98, 74, 36, 18,145, 74, 66, 75,197,148,177,132, 37,132,136,241,228,116,214, 51, 18,225, 75,168,141, 22, 73,111, 75, +138, 91,183,110,141, 61, 71, 47, 98,219,174,195, 72,127,116, 21, 51, 62,154,132, 38, 77,154, 96,247,238,221,101,166,201, 98,163, + 85,154,118,217,207,207,239, 82, 98, 98, 98,163,210,190, 91,146,141, 22,191,162, 22, 29,250,209,210,158, 37,105,169, 74,196,255, +212,229, 9, 86, 25, 54, 90,132,144, 94,173, 91,183,158,184,121,243,102, 67,215,174, 93,197, 3, 7, 14, 68,221,186,117, 91,141, + 24, 49, 2, 0,208,169, 83, 39, 44, 93,186,180,213,136, 17, 35,240,203, 47,191, 96,199,142, 29,250,118,237,218,125, 68, 8, 73, +160,148,238, 45, 9,147,231,249, 30, 43, 87,174, 44,174, 41,132,217,108,134,201,100,242, 53,155,205,190, 69, 99, 17,190,254,122, + 89,250,193, 3,187,241,209,199,179,225,229,233,211,208,206, 54, 68,134,127,248, 97,250,250,197,139,177,248,151, 95,240, 97,181, +106,242,141, 55,111,226,160, 78,135, 45, 71,143,166, 23,253, 78,185,182,153,249,249,249,133,123,247,238, 85,111,217,178, 5, 26, +141, 6, 53,107,214,132,155,155, 27,132, 66, 33, 24, 86, 6, 86,228,138,176, 58, 77, 1,156, 7, 0, 84,243, 67,126,120,117,156, + 36, 4, 89,148, 41,189, 13,151,218, 71,131, 72, 85,239, 32,105,212,196,117,117, 53,106, 47, 17,246, 47,127,140, 3,223,196,237, +212,165,227, 43,152,113,187,140,195, 26,141,171, 87,175,142,212,212, 84,236,221,187, 55, 31,192,151,165,253, 6,207,243, 95,124, +247,221,119, 83, 62,254,248, 99, 73,120,120, 56, 0, 52, 4,112,161, 68,210,167, 80,192,223,223,223, 74, 44, 7, 14, 27, 31, 60, +110,242,120, 89,159,206,237, 33, 16,120, 32, 43,223,132,140, 92, 19, 92, 61,148,248,104,114,127,233,225,198,254, 77, 86, 46,251, +241,119, 66, 72, 19,250, 34,157, 69,254,195,226,238,238,222, 48, 35, 35, 3, 15, 31, 62,196,176, 97,195, 18,210,211,211, 15,229, +231,231,143, 76, 76, 76, 4, 0,109, 5, 32,173,100,190, 97,195,134,104,218,180, 41, 6, 12, 24, 32, 45, 40, 40,232, 31, 28, 28, +236, 15,224,149, 23,153,159,226, 92,228, 63, 69,180, 74,156, 16, 76,166, 48,253,138, 21,200, 63,124, 24,226,131, 7,177,197,207, + 47, 79,167,211,125, 64, 41,141, 43, 26,244, 38,173, 91,191,254, 84,207, 51,103,212,134,232,104, 4, 95,187, 6,161, 70,211,208, +209, 4,172, 93,187, 22, 57, 57, 57,200,206,206, 6, 0,124,243,205, 55,200,201,201,129,197,150,161,220, 12,136,208,202,199,171, + 26,146,113, 23,188,128, 81,198,134, 21, 52, 87,234, 84,137,254,143,189,243,179, 25,127, 68, 63,106,166, 40,204, 48, 52, 39,172, + 1,186,244, 2,248,183,172, 9, 1, 4,173, 28, 73,163,101,223, 95, 32, 16,104,239,220,185,211, 35, 52, 52,116, 23, 0,143,231, +181, 7,160,148,222, 3,240,110, 5, 73,192,103, 15, 30, 60,240, 90,179,102,205,219,115,231,206,165,182, 68,203,242,191, 64, 32, + 0,165, 20, 46, 46, 46, 16, 10,133,222,167, 79,159,246,110,214,172,217,183, 69, 3, 90, 73,249,164,117,235,214,197,131, 7, 15, + 32, 16, 8,224,226,226, 2,222,108,196,236,201,227,193,177, 18,193,212,169, 83, 27,246,237,219,247,250,154, 53,107, 76,234, 22, + 45, 95,201,200,200,184, 49,113,240,144,235,191,253,246,155,129,231,249,149,118,230,249,202,221,187,119,217, 0, 63,111,150,154, + 11,120,133, 8,144, 94,253,154,138,149, 62,144, 10, 88, 42, 34, 12, 36, 82,153,203,195,248,248, 12,158,231,111,217,131,201,243, +252,229, 7, 15, 30,200,188,189,220, 5, 5,133,134, 60,153,144,138, 99, 47, 95,140,169, 26,209, 56, 24, 0,116,151,207, 31,147, +132,213,146,197,166,164, 41,170, 85,171,102, 23,102, 97, 97,225,149,132,132, 4,214,219,219, 91,240, 40, 46,254,119,141, 82,225, +169,214,104,154, 3,128, 49, 55,251, 60,163,215,167,177, 66,129,119, 90, 70,134,182,176,176,240,129,189,121,191,127,255,190,192, +215,215,139,221,127,240,200, 46,111,185,196, 75, 37, 22,168, 37,132, 16, 57, 75,114, 68,102, 62, 93, 42,151,123, 61,140,143,215, + 82, 74, 75,213, 16,126,158, 53,164,207,147,250,154,253,139, 13, 54,174, 94,189,138,125, 39,111, 65, 65, 13, 32,186,108, 28, 92, +247, 3, 6, 79,253,248,185,237,254,202, 35, 91, 21,210,102,173,172,117,169, 24, 62, 18,203, 49,132, 31, 60,120,240,236, 77,155, + 54, 89, 13, 80,110,221,186,133, 14, 29, 58, 88,182, 57,208,165, 75, 23, 52,107,214, 12,183,110,221, 66, 72, 72, 8,142, 30, 61, + 42, 97, 89, 86, 50,100,200,144, 5, 0,246,150,151,222, 85,171, 86, 97,228,200,145, 37, 25, 86,223, 7,160, 35,174,225,121,211, + 63,223,224,161,205, 72, 71,106, 90,242, 21,123,203,129, 16,130,225, 31,126,152,190,210, 96,192,230,115,231, 48, 84,161,144,175, +191,119, 15,145,205,154,161, 94,135, 14,233,246,140,117, 22,173,142, 78,167,131, 80, 40,132, 90,173,134,187,187, 59, 68, 34, 17, + 88,161, 31, 4,226, 6, 96, 68, 34, 68,180,110,128,197, 31, 40, 10,134,189,134,101,132, 32, 75, 34,198,101,145,188,100, 91, 29, + 66, 8, 81, 84, 65,111, 74,145, 83, 16,135, 63, 44,132, 68, 83,149,184, 40,213,194,131,163,191, 13,215,168,189, 68,216,183,236, + 17, 14,126, 27,191, 93,151,140, 25, 0,238,151,117,186, 88, 34,145,212,211,104, 52,136,139,139,195,227,199,143,111,150,101,224, + 79, 41, 45,104,209,162, 69,140, 68, 34,169,237,233,233, 9, 0,213, 75, 75, 39,207,243, 86, 59,172,141,155,183,122, 52,108, 19, + 44,125,181, 85,109,108,216, 53, 31,111,245, 95, 6, 33, 75,192,113, 70,124,181,180, 59, 56,125, 30,250,247, 28, 75,218,118, 10, +105,112,120,151, 97, 52,128, 31,254,171, 68, 43, 62, 62,254,221, 54,109,218, 44,200,205,205,205,204,207,207, 31, 12, 0,213,171, + 87, 15, 98, 24, 70, 2, 96,110, 25,237, 41, 8, 37,187,133, 16, 93,187,118, 13, 42,149, 10, 9, 9,127,197,164,143,139,139, 3, +207,243,122, 56,165,172, 62, 26, 65, 41,189, 76, 8,241, 5, 16, 9, 27,247, 14, 76,145,170,174,237,158, 61,123,232,158, 61,123, +218, 90, 39, 47, 74,121,179, 86, 11,170,127, 82,182, 66,161,144, 2,176, 61,209, 36,215,104, 52, 68, 24, 16, 0, 34,121, 98,250, + 65,109,246,132,159, 87, 76, 38,251, 92,203,240, 28, 88, 16, 35,168,141, 18, 35, 95, 74, 48,223,163, 35,222, 21,207, 68,178, 88, + 99,219,179, 1, 51, 5, 7,158,117, 48, 57, 52, 63, 63, 31,102,179,217,181, 70,141, 26,123,204,102,179,171,101,107,224,159,170, + 84,142,227, 98, 88,150,197,219,111,191, 13,139,246,199, 96, 48, 32, 57, 57, 25,122,189, 30, 6,131, 1, 15, 30, 60, 64,118,118, + 54, 12, 6, 3,110,220,184,129,234,213,171,131,101, 89,223, 50, 26, 10,165,148, 34, 48, 48, 16, 85,171, 86, 5, 75, 40, 86, 47, +154,133, 79,222, 27,143, 55,170,243, 88,187,252, 43,180,107,215,174, 86,181,106,213, 90, 8, 4, 2,206,199,199, 71,180, 99,199, +142,223, 57,142,235,237,128, 31,173,189,211,167, 79,175, 90,167, 78, 29, 47,141, 90,101,146,136, 89,136, 77,249, 84,162,207,160, +130,130,116, 4, 6, 6,153, 33,147,135, 12, 29, 58,148,179,103,114,180, 96,126,240,193, 7,190,225,225,225, 46,174, 26, 85,190, + 88,200,166,138, 64,211,179,175, 94, 56, 11, 0, 98, 79, 47, 29,164,242,218,195,134, 13, 51, 59,130, 57,115,230,204,234,158,158, +158, 26, 6, 52,151, 51, 26,255,218,111,215, 27, 50,136, 80, 88, 8,145,184,241, 59,239,188, 67, 28,193,156, 50,101, 74,181,218, +181,107,107, 52,106, 69,158, 64,200, 38,137,120, 62, 73, 10, 62, 89,104, 48,102, 74, 61, 61, 10, 32, 87, 70, 12, 29, 58,180, 84, + 76,139, 54,107,218,180,105,113,197,136, 55,180, 90, 45,116,201,215, 33, 74,136, 70, 3,165, 16, 77, 60, 93, 33,145, 72,172, 71, +223, 75,107,174,165,217,104,149, 68,182,236,253,110,227, 57,101,108, 1,174,172,117,169,184,223,172, 34,252, 50,251,211,143, 63, +254,248,113,251,246,237, 83,187,116,233, 98,216,179,103, 15, 8, 33, 56,122,244, 40, 18, 18, 18,208,165, 75, 23, 80, 74, 45,167, +218,112,229,202, 21,116,234,212,201,208,166, 77,155,132, 31,127,252,241, 51,123, 42,103,228,200,145, 48,153, 76,200,203,203,131, + 86,171,197,238,221,187,209,160, 65, 3, 42,151,203,251,178,129,157,231,247, 31,253,241, 43,117,235, 55,196,183,203, 22, 27,196, + 2,225,231, 14, 14,194, 24,246,193, 7,233,217, 17, 17,218,141,249,249, 5,195,213,106,121,141,184, 56,183,139, 7, 14,120, 24, +141, 70,187, 48, 44, 90,157,128,128, 0, 43,201, 18,137, 68, 16,136, 61,193, 42,234, 65,236,222, 5,114,159,190,248,227,178, 68, +239,162,192, 78,149, 18,251, 21, 26,148,234,218, 65, 30,136,249,175, 12,244,221,209,242, 13,223, 35,242, 42, 88, 67, 8, 97, 8, + 33, 12, 21,144, 29, 35,190, 10,173,225, 89, 85,134, 51, 91,147,113,240,219,248, 95,117,201,152, 5,224, 94,121,253,220,104, 52, +234, 56,142, 3,195, 48, 16, 8, 4,182, 54,162,167,126,253,245, 87, 92,188,120, 17, 0,172,110,123,114,115,115, 57,150,101, 33, +149, 74, 1, 64, 89,198,120, 7,161, 80, 8,161, 80,136, 99,103,143,187,191,241,122,119,114,250,207, 67,104,217, 96, 16, 50,242, +140, 72,201, 54, 34,171, 0,168,211,100, 6,234,118,218,137,171, 15,114,209,176,126, 93,150, 21, 43,134,253,203, 39,239, 32, 47, + 47,175,211, 30, 30, 30, 71, 9, 33, 65,132,144, 32,181, 90,125,202,207,207, 47,154, 16,210,139, 82,250, 91, 98, 98, 98,120, 94, + 94, 94, 75, 74,233, 35, 74,233,163,244,244,244, 14,169,169,169,175,148,117, 88,203,221,221,125, 77, 78, 78,206, 36,142,227,122, + 22, 93,175,113, 28,215,240,238,221,187,181, 27, 54,108,120, 51, 56, 56,248, 74,112,112,240,190,224,224,224,223,131,131,131,127, +111,223,190,253, 82,139,187,135, 23, 41, 37,113,145,127,145, 88, 76, 93, 34,139, 92, 61, 68, 90,231,140,162,215, 99,197, 13,208, +204, 18,201, 13,243,196,137,208,252,254, 59,132,119,239, 98,196,176, 97,106,185, 92,190,140, 16,210,136, 16,210, 82,169, 84,126, + 59,107,214, 44,149,199,194,133,240, 59,126, 28,177,187,119,195, 36, 20, 94,168, 72,234, 10, 11, 11, 33, 16, 8,172,154, 24,133, + 66, 1,142,227,138,184, 91, 57,132,195,140, 51, 9, 41,209, 16,163, 42,120,208,188,253, 57,109,206, 13,138,153,225,181, 59,167, +122,200,189,124, 81,200, 28,207,230, 94,203,130, 90,157,203, 39,130, 60,177, 70,138,199,143,227,192,129,119,104,191, 89,167,211, +101,231,231,231,163, 97,195,134,238, 23, 47, 94,172,209,160, 65, 3,183,162,247,207, 63,103, 39,106,225,239,239,191, 53, 32, 32, +224,161,191,191,255, 86, 66, 72, 11, 7,190,190,230,196,137, 19, 96, 89, 22,179,102,205, 66,110,110, 46,140, 70, 35, 50, 50, 50, +240,248,241, 99, 24, 12, 6,196,199,199,227,246,237,219, 48, 24, 12,136,141,141,133, 94, 95,254,130,132,231,121,168,213,106,232, + 10,243,240,253,252, 79, 48,115,218,100,100,223,191,132,248,196, 20,104, 92, 20,120,247,221,119, 89, 87, 87, 87,158,227,184,170, +102,179,185, 19,199,113, 43,236, 37,156, 69, 78, 11, 79, 6, 6, 6,214, 93,180,104, 81,237, 79,230,175, 16,169, 5,121, 84,162, +146,242, 98,149,132,138,107, 53,199,200, 25,203, 68, 95, 47,249,242,206,153, 51,103, 18,236,113,222,105,193,140,136,136, 8, 77, + 72, 72,104, 16, 30, 30, 30,230, 17, 84, 77, 34,241,245,207, 18,249, 86,201,161,122,221, 57,226, 95,165,245,138, 21, 43,174,159, + 58,117, 42,209, 17, 76,133, 66, 81,107,195,134, 13,117,189,189,189,235, 10,101, 50,105, 65,118,246, 22,115, 65,254, 86, 86,227, + 42,101,212,154,215,118,238,220,121,105,251,246,237,201,142, 96,134,132,132,132,207,159, 63,191, 78,189,122,245,234,248, 84,175, + 33,145,249, 7,102, 72, 3,130, 50,100,245, 26, 72, 16, 80,181,235,183,223,126,123,229,204,153, 51,118, 97,178, 44,107,102, 24, + 6, 66,161, 16,114,185, 28,251,247,239,199,196,209,131, 16,232,239,142,176,240,112,116,124,107, 18,182,111,223,110,181,225, 97, + 89,182,212, 25,125,253,194,119,119, 69,248,146, 75, 88, 89,235, 18, 86,214,186, 20,225, 75, 46,149, 74,182,138,158,151,244, 25, +187, 70,163, 82,236,176,202, 35, 91,148,210,189,199,142, 29,251, 98,248,240,225,226,110,221,186,225,220,185,115, 24, 57,114,228, +201, 29, 59,118, 0, 0,206,157, 59,135,247,223,127,255,228,145, 35, 71, 48,126,252,120,116,232,208, 65,124,226,196,137,111,237, +241,253, 99, 54,155,177,118,237, 90,152,205,102, 40,149, 74,184,185,185,161,123,247,238,184,126,253,250,248,117,235,214, 69,179, + 66,225,155,145, 61, 95,199,158,223,119,224,246,141,235,227,215, 47, 24,226,176, 83, 96,134, 97,208,109,216,176,244,244, 58,117, +180,235,115,114, 10, 70,185,186,202,195,147,147,221,254,216,186,213,195,142,246, 67, 56,142,179,146, 43, 11,233,176, 92, 2,177, + 39, 4,138,186, 16,168,154,224,234, 61,145, 73,216,148, 94, 22, 53,166,183,202,242,159, 37, 20, 51, 35,251,126, 82, 29,125, 63, +169,142, 94, 83,171,141,144, 87,193,106, 69, 21, 76,232,246, 94,213,246,193, 77, 92,144,147,106,196,238,175, 98, 31,233, 50,176, + 16,192,109,123,250, 57,207,243, 55, 19, 18, 18, 32, 22,139, 81,165, 74,149, 80, 66,136,197, 46,112,205,152, 49, 99,222,153, 51, +103,206,100, 0,115,138,242,164,108,223,190,125,157,188,188, 60,220,189,123, 23, 0, 46,150, 81,247,214, 83,134,218,156, 88, 73, + 53,191,122,104, 80,107, 28, 92, 93,235, 35, 65,107, 64,162,214,128,213,223,247,198,165, 19,243,112,241,224, 80, 60, 74, 78,134, +204,167, 15, 56,179,190,238,191, 92, 81, 50, 51, 38, 38,166,197,214,173, 91,219, 3,152, 89,175, 94,189, 51,143, 31, 63,126,229, +248,241,227, 97, 1, 1, 1,203, 42, 10,106,113, 11, 17, 27, 27,251,212, 85,228, 22,194, 64, 41,141,160,148,118,163,148,246, 42, +186,222,127, 46, 95,111,246,203,177,127,171, 49, 60,128, 61,197, 79, 27, 22, 39, 90,182,142,194, 80,195,205, 77,101, 50, 25,227, + 15, 29, 58,100,100, 24, 6,114,185, 28,195, 71,142,100,190,255,238,187,214,131, 90,180, 56, 58,246,213, 87,247, 29, 61,114, 36, +162, 89,179,102,160,148,130, 97, 24,252,242,203, 47,133, 58, 93, 97, 70,149, 42, 85, 52,246, 12, 26,182, 29, 40, 39, 39,199, 74, +180,178,179,179,225,237,237,109,247,214, 97,126, 14, 14, 31,217,127, 41,147,114,111, 61,238,118,111,137,241,243,228,222,205,178, +120, 78,144,205,153,144, 93, 72,145,171,131,224, 28,227,214,108,120, 72, 31,227,131, 78,205,110, 71, 69,159,206,208,113, 58,135, + 78, 75,164,166,166,126,210,191,127,255, 12, 95, 95, 95,162, 86,171,225,239,239,207,244,234,213, 43, 61, 46, 46,110, 78, 69,107, +196,195,195,227,141,246,237,219,239, 74, 72, 72,232, 23, 21, 21, 85,245,248,241,227,253,218,183,111,191,203,195,195,227, 13, 59, + 33,182,124,252,241,199,249, 98,177, 24,205,155, 55, 71,110,110, 46,138, 78,249,148,121,149, 55, 17, 0,128, 72, 36,194,202, 69, +159, 97,230,180,201,208, 70,159,195,213,147,135,112, 44,153, 96,198,252, 47, 33, 18,137, 42,228,235, 43,196, 75, 81,175,158,159, +234,214,251, 35, 7, 38, 78,159, 54, 77,117,229,202, 21,225, 59,239,189, 79, 99,147,180, 16,119, 91,204,162,237, 39,204,159,249, +158,136,124,173, 35,102,205,252,176, 30,165,116, 92,121,152,181,189, 20,245,234,250,169,110,126, 56,118, 80,204,123,239,189, 39, +251,252,243,207,117, 45, 90,180, 40, 76, 73, 73,145, 41, 92,221,194, 5, 46,154,186,177, 73,201,202, 22, 45, 90, 60,120,235,173, +183,178, 28,197,156, 49, 99,134,252,192,129, 3,130,254,253,251,155, 51, 51, 51,149, 66,153,172, 33,145, 72,155,166,101,102,186, +244,235,223,255, 94,191,126,253, 10,120,158, 31,239, 8,230,167,159,126, 42,191,125,251,182,160, 69,139, 22,166,228,228,100,149, +194,221,163, 1,171,113,107,242, 48, 41, 69,221,180, 89,179,251,239,188,243, 78,126, 89,233,180, 37, 41, 42,149, 42,161,101,203, +150,248,234,171,175,240,245,215, 95,163,107,215,174,184,126,227, 58, 34,223,153,140,218, 19,222,199,239,167,207, 34, 33, 33, 1, +115,231,206, 69,131, 6, 13, 32, 18,137,110,151, 8, 58,238, 22,185,156, 68,201,229, 36, 74, 48,238, 22,177,220,151, 74,134,230, +100,227,169,207,151, 32, 23, 63, 45, 89,211, 21,225, 75, 46,149,101,135, 85, 30,217,234,215,175,223, 68,139, 11,135, 81,163, 70, +157, 92,182,108, 89,171, 81,163,158, 44,180,155, 55,111,142,121,243,230,181,154, 49, 99,198,201,249,243,231,163, 99,199,142, 8, + 14, 14, 46,247,224, 11,199,113, 48,155,205, 24, 52,104, 16,204,102, 51,210,210,210,112,231,206, 29,172, 90,181, 10,148, 82, 41, + 0,248,250, 5, 52, 22,139,197,248,243,242,133,130,153,163,154,253,232,192, 98,138,216, 46, 98,242,242,242,208,111,194,132,244, +248,154, 53,181, 43,210,211, 11, 70,187,186,202,171, 61,122,228,166, 50, 24,252,203,178, 73, 37,132,128,231,121, 43,177,178, 16, +174,226, 87,209, 68,105,151, 24, 11,248,189,199, 55, 37, 2, 0,218, 12,241, 67,175,169,213, 70,248,134,200,191,105, 61,248,137, +210,123,251,188, 24,154,155,200,125, 14, 19,110, 58,160,177, 62,119,238,220, 57,104, 52, 26,244,239,223, 95,194, 48,204,194,162, +113, 94, 71, 41, 93, 78, 41, 93, 98,193,146, 72, 36,139,135, 14, 29,202,100,101,101,225,234,213,171, 0,112,164,180,113,137, 82, +106,205,123,158,150,128,227,197, 56,117,121, 63, 14, 30,223,134,135, 9,105,120,148,170, 3, 4, 46,208,229,199,195, 88,152, 0, + 67,214,101,228,232,229,255,133, 29,169, 23,226,110,225, 5,184,133,168, 76,173,214,191,210,166,142, 82,154,100,123,218,208,214, +129,105, 73, 14, 75, 65,213,178,129,219,190,253,222,165,255,160, 33,249, 13, 26, 52,112,245,247,247, 7, 33, 4,189,251,244, 33, +237,163,162, 84, 66, 63, 63,184, 55,106,100,221,142, 56,124,232, 16,246,239,223,159,191,231,215,157,254, 35, 71,143,238, 1, 96, + 67, 25, 3,134,160, 70,141, 26,214,223, 77, 74, 74,130, 68, 34,177,218, 68,228,228,228,192,211,211, 19, 73, 73, 73,176, 83, 81, +178,113,250,180,179,211, 82,155,125, 82,189,153, 74, 72,246,229, 39,131,163, 20, 66,194, 1,133, 20, 38, 14,208,155, 40, 26, 87, + 99,221, 14, 22,154, 93,119,159,219,241, 0,192, 70, 7, 53, 90,127, 16, 66,198,241, 60,191, 13, 0, 19, 21, 21,197,223,188,121, +115,162,189,134,235, 37,170,237,229,242,169, 71,143, 30,117,155, 58,117,106,230,238,221,187,179,187,119,239,238,178,106,213, 42, +183, 14, 29, 58, 76, 5,240,179, 29,149, 90, 72, 8,217, 16, 23, 23, 55,177, 73,147, 38,208,106,181, 48, 26,141,184,116,233, 18, + 66, 66, 66,112,241,226, 69,132,134,134,226,194,133, 11, 8, 11, 11, 3,199,113,208,233,116,224,121,158, 43,111, 48,215,166,167, + 1, 25,143,145,120,110, 31,238, 92,187,132,163,137, 4,203,127,222,133, 42, 85,171, 87,200, 79, 77,152,183,162,142,191,151,251, +193,207,103,127,234, 21,251,199, 47,216,177,118, 57,127,108,223,190,218, 98, 21,198,181, 29, 52,233,117,131, 9, 65, 0,196,175, + 52,107,130,110,174,183, 57,121, 85, 36, 31,185, 81,182, 39,235, 48,111, 69, 29, 63, 79,247, 3,255, 91, 56, 71,117,127,255,122, +108, 89,249, 21,221,190,233,167, 6, 58,160, 89,157, 58,117,186, 49, 12,163, 1,160, 43,178,243,178, 43,180, 77, 73,152,135,119, +237,138,208, 1,205,126,251,237,183,110,114,185,220, 7,128,169,160,160, 32,230,121, 48,143,236,222, 29, 97, 73, 39, 33,196, 11, +128,145, 82,122, 31, 14,134,224, 25, 48, 96,192,188,247,223,127,127, 26,199,113,158,150,247, 76, 38, 19,187,120,241, 98, 1,207, +243, 44,165,212,200, 48,140,241,192,129, 3,156,217,108, 78,212,233,116, 19,158,103, 32,121,253,245,215,113,246,236,217,217,120, +114, 8,195, 94,109,245, 83,118, 90,101,109, 83,218,131, 31, 21, 21, 53,247,205, 55,223,156,254,243,207, 63,223, 89,182,108, 89, +207,241,227,199,227,151, 95,126, 65,205,154, 53,241,231,159,127,226,147, 79, 62, 1,128, 86, 51,102,204,248,125,205,154, 53,193, +177,177,177,139,203, 75,163,201,100,130,217,108,198, 79, 63,253,132,222,189,123,195,211,211, 19,126,126,126, 32,132,252, 49,122, +244,232,239, 0,128, 37,172, 8, 0,244, 58,189, 62, 60,188,137,221, 26,220,224,224, 96,235, 88,151,156,156,108, 61, 41,216,249, +205, 55,211, 87,127,254, 57,126, 44, 44,196,104, 87, 87,121,124, 64,128,239,239,247,239,143, 37,132,172, 42, 77,115,100,209,234, +148, 71,178,236,213, 48, 23, 38,225,227, 95, 23, 60,244, 1,208,181,205, 16, 63,180, 25,226,135, 38,189,188, 8,195, 18, 92, 59, +152,129,235,135,181,219, 77, 57,248,195,145,112, 57,148,210,155,238,238,238,191,183,109,219,182,103,173, 90,181, 48,102,204,152, +183, 68, 34,145,200,100, 50,189,103,113,243, 64, 8,113, 97, 24,102,206,186,117,235,198,186,185,185,225,196,137, 19, 56,126,252, +248, 31,148,210,199,165,141, 75, 0,172, 62,179,170, 4,134,234,110,199,230,201, 83, 19, 78,225,228,137, 95, 81,179,193, 36,200, +124,122,192, 45,124, 62,140,209, 95,195,144,113, 16,110,129,221, 17, 31,123, 31,172, 64,114, 29,255, 17,177,184, 91,184,126,253, +122,137,238, 22, 28,149,122,245,234,181, 58,126,252,184, 68,167,211,225,216,177, 99,104,218,212,122,182,235, 31,141,223,105,203, + 69,254, 77, 82, 86, 80,233, 18,103, 77,194, 19, 97, 88,104, 40, 39, 98,176,174,119,143, 30, 5, 87,174, 92,177,174,250,116,231, +207, 35,127,255,126,112, 28, 7, 74, 41,142, 71, 69, 97,232,144, 33,121, 66,150,172,174, 86,173, 42, 37,244, 47,223, 45, 37, 29, +165, 23,137, 68,253,251,247,239,111, 29,124,226,226,226,160, 80, 40, 32, 22,139,193,243, 60,204,102, 51, 88,150,133,139,139, 11, +204,102,179,161,132,204,116, 42,150, 17, 19,167,205,239,183, 38,114,112,146, 95,158,145,142,211, 84, 67,144, 72,102,237,156, 62, +106,130,158, 13,132,240, 16,164,210, 35,139, 95, 77,228,245, 25,253,138,199, 22, 43,239,200, 63, 33, 36,180,126,253,250,223, 13, + 29, 58,148, 1,128, 78,157, 58, 49,245,235,215,255,134, 16, 18, 90,198,119,202,196,148, 74,165, 18, 0,216,181,107,151,246,206, +157, 59, 93,119,237,218,165,181,125,223, 78,204, 85,139, 22, 45,130, 92, 46,135,217,108,134,193, 96,176,218,103,217,190, 26,141, + 70,120,120,120, 96,207,158, 61,224, 56,110, 79,121,233, 12, 12,170, 10,226, 89, 3, 27,118, 29,197,241,116,145,195, 36,203, 22, +179,166,175, 50,204,199,195,253,208,255, 22,204,245,204,188,119, 9,241,241,241,244,192,254, 61,103, 10, 41, 77,200,202,161, 51, + 51,243,104, 88,129,158, 74,155, 6,227,241,161,149, 31,209, 25,109, 96, 66, 9,167, 6,109, 49,235,248, 42,195,252, 61,221, 15, +124,249,191, 5,170,172,123,151,144,148,156,140,189,123,118, 93, 41,164, 52,129, 82,186,157, 82, 58,130,227,184,186, 28,199,213, +165,148,142, 40,141,188, 56,138,153,159,159, 95, 47, 63, 63,191, 94,101, 98,242, 60, 95,143,231,121,187, 49,109,137,202,146, 37, + 75,162,147,146,146,134,166,166,166,118,177, 92,153,153,153,157,242,242,242,218, 21, 20, 20,180, 46, 92, 82,213, 37, 63, 63,223, + 43, 55, 55,215,183,176,176,176, 49,165,244,146,189,237,211, 86,108,189, 78, 39, 38, 38,206, 74, 76, 76, 36,229,165,147, 25,127, +139,108,254,242,195, 95, 87,174, 92,233,251, 60,248,197,211,153,150,150,182,237,167,159,126,106, 88,189,122,245,224, 17, 35, 70, + 96,197,138, 21, 88,182,108,153, 30, 0,214,172, 89,163,183,209,100, 5, 62,124,248,176, 73, 73,219,134, 79,165,147, 97, 54,118, +238,220,153, 30, 63,126, 28,189,123,247,182, 58, 18,253,225,135, 31, 96, 54,155,115, 58,118,236,200, 3, 64,161,174, 32,135,242, + 20, 6, 99,201,251,239, 37,149,167, 88, 44,126,205,214, 95,160,197, 25,179, 88, 44, 6,165, 20, 97,173, 90,165,103, 53,104,160, + 93,155,157, 93, 48,171, 94, 61,245,216,240,240, 17,181,128, 33, 37, 97, 18, 66,158,210,234, 20,191,236,213,100,217, 98, 82, 74, + 83, 11, 19, 49,230,215, 5, 15,247, 91, 52, 91, 82,165, 0,186, 92, 51,118,126,254, 48, 77,151,134, 31, 0, 60,118, 4, 19, 0, +180, 90,237, 59,159,127,254,185,222,213,213, 21,175,191,254, 58,230,207,159, 63,186, 85,171, 86,217,222,222,222,103, 67, 66, 66, +174, 13, 28, 56, 48,233,210,165, 75,239,180,111,223, 30,119,239,222,197,151, 95,126,153,149,153,153, 57,184, 44, 76, 66,136, 85, +147,215, 43,178,147,246,251,111,190,226, 59,182,157, 8,185, 76, 13,147, 48, 16,218, 60, 19, 50,243, 41, 12,146,102, 16,139, 36, +232,210,162, 14,206, 30, 88, 95,192, 25,242, 55, 84,164,205, 59, 48,185,190,104,204, 74,113,183, 80, 60,157,149,225, 22,226, 69, +228,253,223, 44, 37,248,209,122, 90,163,101, 57, 82,105,121, 37,132,231, 56,142, 71,181,234,213, 84,177, 15, 31, 47, 31, 48,160, +255,168,110,221, 34,229,145,145,145,210, 58,209, 79,182, 46,118,237,218,133, 29, 59,118, 20, 28, 60,120, 48, 71, 34,100,215, 4, + 86, 9,244,230, 56, 30,132,240,101,178, 97,149, 74,245,222,199, 31,127, 44,203,206,206,198,178,101,203,248,134, 13, 27, 50, 10, +133, 2, 70,163, 17,107,214,172, 49,213,169, 83, 71,200, 48, 12,178,179,179,193, 48,204,109, 59, 51,120,149, 16,210,229,187,246, +125,119, 52,121,123,164,123,237,246,175,184,182, 11,244,135,169, 17, 69, 98,220, 67,220, 57,114, 48,243,198,129,165, 25,208,165, +244,165,148,222,116,180, 0,253,252,252, 62, 59,120,240,160,215, 59,239,188, 67,117, 58, 29,121,252,248, 49, 93,176, 96,129,215, +152, 49, 99, 62, 3,240, 70, 69,251, 83, 86, 86, 22, 8, 33,124, 81,163,181,172,250,137, 3, 21,123,157, 16,242, 91,159, 62,125, +122,117,236,216, 17,209,209,209,214, 45, 66, 91,162,101, 57,125,184,112,225,194, 44, 0,211,203,195, 21, 10,133, 88,182, 97, 27, +178, 50,211,225,237,237, 7,169, 76, 86, 97,143,203, 98,134,153,245,197,220, 79,189,210,111,157, 37,215,207, 28,229,183, 94, 77, + 73, 53,115,180,100,143,255,185,137,180,136,253,151,189,154, 97,216, 89, 95, 44,152,227, 98,217,214,252,249,114, 82, 14,225,232, + 59,207,213, 75,254, 45,152,127,179,248,249,249, 33, 49, 49,145,248,249,249, 81,203,182, 94,105, 68,235,153, 6,254,100,187,140, +148,181,109, 88, 81,252, 7, 15, 30, 44,104,212,168,209,135,119,239,222,221, 90,187,118,237,241, 0,170,232,245,250,172, 25, 51, +102,252,111,205,154, 53,163,236,209,100, 1,192, 47,191,252,178,116,228,200,145,251,123,244,232,241, 17,207,243,245,109, 38,145, + 7, 94, 94, 94,214, 45,220,180,148,228,105,227, 70, 13,154,150,151,151,105,183,159, 59,165, 82, 57,118,198,140, 25,210,252,252, +124,124,251,237,183,124,157, 58,117, 24,203,162,104,211,166, 77,230,208,208, 80, 65,255,137, 19,211,151, 36, 39, 99,222,137, 19, +249,211,234,214,109,184,246,206,157,198, 37,105,220, 45, 11,199,146, 52, 89, 22,179,139, 10, 78, 14,137,132,144, 49,191, 46,120, +248, 3,128,174,175, 12,240,193,111,139, 30, 34, 51,214,240, 63,152,113,223,158,176, 64, 37, 96,198, 19, 66,186,164,164,164,252, +246,233,167,159,186, 52,110,220, 24,117,235,214, 21, 42,149,202,102, 22,119, 49,217,217,217, 56,124,248, 48, 86,172, 88, 97,184, +113,227, 70, 31, 74,105,169,219, 85, 28,199,165,134,134,134, 90,202,129, 18, 66, 50,114,244,196,101, 75,173,102,202, 17,227,182, +146,147, 23, 78, 35,209,200, 67,111,226, 81,173,122, 4,218,117, 93,130,223,247, 93,227, 18, 99,111,222, 52, 21,102,174,254,151, +207,223, 47,196,221,194, 11,112, 11, 81,105,218, 44,219,215,255,138,148,216, 67,121,150, 57,181, 98,229,247,175,253,242,211,207, + 62, 44,203,248,220,143,137,185,208,179,111,191,132, 67,135, 14,185,137, 92, 92,154, 2,224, 13,227,199,159, 49,234, 11,181,187, +127,251, 45,168, 90,181,170, 13,138,130, 74, 83,158,101, 78,149,245,131,121,121,121,249, 39, 78,156, 40,152, 62,125, 58,137,139, +139,219,236,237,237, 61,112,223,190,125,202,190,125,251, 22, 70, 71, 71,111,247,241,241,233,213,190,125,123,213,135, 31,126,168, +207,203,203, 91,238, 64,231,190, 73, 8,169,117,254,211,197,111,158, 95,244,253,171, 16,176, 45,161, 23, 2,188,233, 20,140,185, +135, 0,108,166,148,154, 43, 82, 72, 10,133,162,129, 92, 46,199,149, 43, 87, 50,155, 53,107,102,208,233,116,162,249,243,231,187, + 43, 20,138, 6,207, 49,192,209,204,204, 76,240, 60, 47, 0, 64,138, 94,193, 59,126, 22,255,141,158, 61,123,254,182,101,203,150, +206,145,145,145, 8, 14, 14,134,201,100, 66,104,104, 40, 12, 6, 3, 66, 66, 66,160,215,235, 49,123,246,108,100,103,103, 79, 46, + 43, 88, 49, 33, 4,102,179,217,106,108,235, 31, 16,244,196, 79,207,115,184,177, 80, 8,153,224,219,187,215, 34, 53, 35,157,223, +242,103, 74, 74,129,145,235,114, 55, 53,255, 70,241,207, 21,112,200,111, 63,226,221, 4, 0,208,243, 40, 51,226,188, 66,140,224, + 59,123,126, 64, 74,106, 58,126,185,156,148,149,111,228,187,222, 46, 1,211,161,116,254, 75, 48, 35,102, 71,163,223,187,246,127, +246,242,184,138,255,150,189,132,170, 52,185,156, 68, 9,191,162, 22,197,202,181, 37,250,200,122, 30,252, 34, 77,213,111, 69,237, + 54,110,208,160, 65,211, 30, 62,124, 56,183,200, 95,214, 74, 71,176,214,174, 93,123, 23,192,200,178, 62,243,243,226,145, 59, 1, +236,116, 4, 55, 55, 55, 87,119,233,210, 37,221,135, 31,126, 72,226,226,226,246,249,248,248,116,222,191,127,191,188,111,223,190, +250,235,215,175, 31,241,243,243,107,211,169, 83, 39,229,222,115,231, 18, 10,238,223,223,189,251,225,195, 0, 19,207,239, 46,171, +127, 86, 38,201, 42, 78,182,118,206,123,248,197,111, 95, 60,236,196,235,177,221,144,137, 51, 0,226,159, 3,243, 56, 33,164,246, +144, 33, 67,182,116,239,222,253,149,218,181,107,163, 74,149, 42,184,115,231, 14,210,210,210,112,245,234, 85,236,218,181,107,151, + 78,167, 43, 55,160,118, 70, 70,198, 51,225,137,136,204,221,111,253,183,179,118, 93, 56,217, 52,180,117,228,112, 89, 93, 63, 30, + 6, 35, 69,220,163,251,152, 61,115,117, 65,210,163,187, 55,141,102, 99,159,255,128, 15,173,227, 49, 49, 49, 17, 44,203, 86,170, +187,133,138,186,133,112, 74, 37, 18,173,152,152,184,155,193,193,129, 31,239,216,190,173, 37,165, 12, 75, 9,201,215,104, 92,119, + 61,126,252, 56,203,246,115, 53,220,220, 84, 35,199,140, 28, 72,120, 34, 36,132,231,120,150, 57, 21, 19, 19, 87,166,198,200, 96, + 48,140, 27, 56,112,224, 50,185, 92, 62, 67,171,213, 94,209,104, 52,127, 54,104,208, 96, 46,165,116,102, 97, 97,225,111, 42,149, +234,220, 43,175,188, 50, 63, 40, 40,104, 41,165,244,162,131,157,219,140, 39,246, 97, 27, 42, 89,149, 59,135, 82,234, 34, 16, 8, +178,175, 93,187,246, 83, 88, 88,216, 32, 74,169, 11, 33, 36,187,162,152, 58,157,238,157,172,172, 44,143,177, 99,199,154, 86,173, + 90, 21, 54,124,248,240,105, 55,110,220, 16,234,116,186, 24, 7,243,172, 39,132,244, 26, 48, 96,192,106,161, 80,216,145, 97, 24, +194,243, 60,181,121, 14, 74, 41, 56,142,251,189,188,114,225, 56, 46,161, 86,173, 90, 79,173,160, 75,178,207, 53,153, 76, 9,118, + 79, 54, 6,110,210,247, 71,111, 44,212,153, 40, 53,243,116,220,237,148,252, 18,143,156,157,191, 77,235,216,141,169,227, 39, 45, + 59,112,115,161,222,196,243,102,158,142, 47, 13,211,161, 73,241, 95,130, 9, 0,211, 52,155,118, 98,229, 38,171, 97,188,101, 59, +177,248,125,101,138, 69,235, 4, 7, 61, 54, 51,227,159, 24,203,151, 71,248, 42,138, 95,156,116, 57, 42,253,250,245,123, 97,246, + 40, 70,163,241,147,158, 61,123,206,213,104, 52,255, 75, 75, 75,187,162,209,104,110,134,135,135, 79,226,121,126,105, 65, 65,193, + 46,149, 74,213,163, 73,147, 38,147,171, 86,173,186, 62,150,210,245,229,245, 77,139, 86, 7, 0,181,244, 75, 11,145,176, 37, 20, + 38,147, 41,190, 2,101,152, 72, 8,249, 0, 64, 53, 60,113,192,123,143, 82,250, 92,101, 67, 41, 77, 4,208,146, 16, 82, 29, 64, + 71, 60,241,223,151, 5,224, 1,128,139,148,210,171, 21,198, 46,204, 72, 36,132, 52,186,117,249,196,248, 59, 55, 47,191,105, 57, + 93,200,178,226,235,156,177, 96,131,169, 48,115,245,127,196, 81,233,172,144,144, 16, 23, 0,245, 1,164,224, 47, 71,198,177, 0, +190,174,140,133,138,141,116,112, 82,162,231,226, 9, 99,109,183, 11,159,122,246, 34,219, 34, 33,164, 83,101,199, 67,114, 98, 58, + 49,157,152, 78, 76, 39,166, 19,211,137,249,223,195,252,183, 19,173, 18, 8,237,170, 82, 53, 90, 78,113,138, 83,156,226, 20,167, + 56,197, 41, 78,177, 95, 74,213,104, 1,232, 84,202, 23,236,102,170, 21, 57,125, 80, 30,190, 19,211,137,233,196,116, 98, 58, 49, +157,152, 78,204,255, 30,230,255, 55,113,110, 29, 58, 49,157,152, 78, 76, 39,166, 19,211,137,233,196,252,199, 49,255,213,100,202, +185,117,232, 20,167, 56,197, 41, 78,113,138, 83,156,242, 98,196, 66,170, 74, 50,138,119, 18, 45,199, 89, 43, 3,224, 45, 0,253, + 0,212, 0,112, 31,192, 54, 0,223, 57, 16,166,194, 22, 79, 13, 96, 26,128,150,120, 18,189,254, 1,128, 19, 0, 62,167,148,230, + 57, 75,188,100,241,244,244,252, 88, 40, 20,106,128, 39,161, 77, 44,175,182,255,115, 28,151,149,157,157,189,224, 5,181, 3,214, +222, 83, 89,150,180,218,166,205,246,213,100, 50,189,176,116, 58,229,165, 29, 71, 66,221,220,220,126,212,106,181,131, 41,165,119, +156, 37,226,148,255,146,120,121,121,141, 55, 26,141, 51, 68, 34,209,252,212,212,212,239,255, 31,245,235, 18, 79, 30, 90,137,214, +158, 61,123,162, 0, 32, 50, 50,178, 45, 0,168, 84,170,211, 12,195, 84, 47,250, 50,128,191, 98,225, 21, 63,250,111,121,229,121, +254, 65, 70, 70, 70,169, 14,212,228,114,249,105,150,101,171, 19, 66,192, 48,140,245, 50,153, 76, 42,150,101,115, 75,193,140,215, +106,181,141, 95,146, 66, 36, 0,118,187,186,186,234,230,206,157,251, 93,187,118,237, 2, 19, 19, 19,205, 83,167, 78,109,243,231, +159,127, 70, 18, 66, 94,115,132,108, 17, 66, 90, 16, 66,214, 55,108,216,112,231,176, 97,195,182, 52,107,214, 76,156,145,145,161, +218,182,109,155,255,134, 13, 27, 46, 17, 66, 6, 59,234,226,226, 95,208, 16, 5,165,249, 51, 43,235, 89,113, 17, 10,133,154,248, +248,120, 85,209, 74,194, 66,172, 96, 50,153, 96, 50,153,144,159,159,143, 6, 13, 26, 84,122,250,125,125,125, 35, 8, 33,203, 67, + 66, 66, 26,251,249,249, 93, 0, 48, 49, 49, 49,241, 79, 71,210,106, 54,155, 65, 41,181,166,179,118,237,218,206,145,217,177, 54, + 52, 90, 44, 22,119, 13, 9, 9,105,170,215,235, 51, 31, 60,120,112,158,227,184, 79,203,114,122,233, 32,190, 11,128, 79, 37, 18, + 73,179, 26, 53,106, 4,222,189,123, 55,206,104, 52,158, 3, 48,135, 82,154, 93, 25, 36,171,109,219,182, 39,191,253,246, 91,247, + 9, 19, 38,156, 36,132,180,114,146, 45,167,252, 83, 82,165, 74, 21, 77,126,126,254,106, 0, 17, 66,161,208, 71, 42,149, 66, 38, +147, 37, 75, 36,146, 43, 50,153,108,212,201,147, 39,179, 28,197,228, 56,238,211,216,216, 88,159,230,205,155, 47,170, 91,183,238, +236,244,244,116,157,209,104, 60,146,153,153, 57,153, 82,154, 83,214,119,139,115,145,127, 19,201,178,125, 45, 26,239,255,218, 58, + 44,138, 43,212,238, 41, 6, 38, 16, 4,196,198,198,122,169, 84, 42,112, 28,103,213, 22, 88, 38, 53, 91,219,174, 34, 63, 77, 8, + 15, 15, 55,150, 51,225, 4,198,199,199,123, 41,149, 74,235,123, 70,163, 17, 62, 62, 62,124, 66, 66,130,151, 84, 42,125,234,243, + 6,131, 1, 1, 1, 1, 47,147, 47,148,183,220,220,220,178, 31, 63,142,107,160,211, 27,231,140,121,103,250,199,131,251,189,234, +122,250,244,105,254,181,215, 94,211, 71, 69, 69,189, 5, 96,185,157,149,226, 66, 8,217, 48,117,234,212,217, 82,185,218,253,232, +233,155,250, 13,219,246, 36, 52, 12,173, 70, 38, 79,158,204,190,251,238,187,199, 35, 34, 34,126, 36,132, 52,114, 68,179,165, 82, +169,246, 75, 36,146,170, 44,203,194,104, 52, 62,214,106,181,157, 95,162,134,216, 16,192,101, 66, 72, 4,165,244,138,189,207,202, +146,140,140, 12, 20, 22, 22, 62,115,213,174, 93, 27,149,109,127, 72, 8, 17, 4, 6, 6,254,182,112,225, 66,255,228,164, 36,124, +181,100, 73,115, 0,223, 1,104,110,207,247, 83, 83, 83,159, 73,103,120,120, 56,156,226, 80, 29, 76,155, 61,123,246,194, 55,223, +124, 19, 28,199,161,176,176,208,239,222,189,123,117,102,204,152,209,135, 16,210,148, 82, 26,243,156,248,158, 33, 33, 33,209,147, + 38, 77,114,107,218,180, 41,138,162, 84,248,157, 56,113,162,249,154, 53,107,134, 18, 66,194, 41,165,105,207,243, 27,110,110,110, + 63,254,240,195, 15,238,114,185, 28,191,255,254,187,123,199,142, 29, 79, 16, 66, 90, 87,148,108, 17, 66, 24,119,119,247,119, 1, +116,224,121, 94, 12,224, 92,102,102,230, 60, 71,189,186, 19, 66,124,149, 74,229,118,134, 97,170, 21, 91, 96,123, 16, 66,210, 45, +239, 17, 66,188,120,158, 63, 83,214,162,218, 41,255, 14,241,240,240, 24,157,155,155,251,173, 68, 34, 17,185,186,186, 66, 46,151, + 67, 32, 16, 64, 32, 16, 84,145, 72, 36, 85, 36, 18, 73,183, 14, 29, 58, 76, 60,122,244,104,153, 30,246, 95,137,240, 25, 1,134, +204, 97, 9,195, 2, 64,237, 16,119,181,139,139, 11,230,204,153,163,232,213,171,151, 2, 0, 78,158, 60, 57,108,248,240,225, 29, + 9, 33,117, 75, 35, 91, 37,113,145,127,139,148,118,226,240, 41,141, 86,100,100,100, 84,177, 78, 7,153, 76,134, 45, 91,182,128, +101,217,167,162,198,151,244,127,149, 42, 85,202, 77,136, 69, 35,182,107,215, 46,168,213,106,184,184,184, 88, 39, 26,137, 68,130, + 35, 71,142, 64, 40, 20, 66, 32, 16, 64, 40, 20,162,113,227,198, 40, 35,160,253, 11,145,254,117, 8, 5,128,173,111, 63, 73, 87, +255,229, 79,156, 64,110,125, 59, 28,173,107,200,208,239,221, 89, 3, 11,116,198, 38, 0,242,179, 50, 51, 51, 47,236,216,145,216, + 48, 52, 84,244,227,143, 63, 54,245,247,247,239,103, 47,209, 2, 48,173, 81,163, 70,219, 89,153,139,199,176,225, 35,134,141, 18, + 48,198,161,227, 62,156, 31,151,148,158, 63,118,236,216, 29,191,255,254,251,176, 47,190,248,226,214,148, 41, 83,166, 1,248,196, +222,244,139,197,226,170,247,238,221, 11,225,121, 30,245,234,213,123,105,194, 24, 88,136, 20,165, 20,132,144,167, 8, 85, 89,207, +202, 19,139, 6,171,164,171,178,197,223,223, 63,124,200,144, 33, 30,218,244,116,124,181,100,137,229,237,198,229,109, 35, 90,182, + 8, 13, 6, 3, 94,127,253,245, 33, 28,199, 9, 44, 36, 80,175,215, 27,178,179,179,117, 54, 39,123,210, 40,165,175,218, 81,158, +213, 21, 10,197,255, 0, 68, 20, 22, 22,250, 3,128, 66,161, 72,224,121,126,103,126,126,254, 39,150, 0,190, 21,168,167, 64, 0, +117, 80,122, 40, 40,186,112,225,194,187,211,166, 77,139,249,187, 49, 9, 33, 85,189,189,189, 23,244,239,223, 31,123,246,236,193, +222,189,123, 77, 50,153, 76, 48,124,248,112, 50,113,226, 68,215, 73,147, 38,117,195,115, 56,113, 44,146,110,179,103,207,118,171, + 85,171, 22,182,109,219,134,171, 87,175, 22,134,132,132,200,218,181,107, 7,129, 64,224,246,241,199, 31,191, 6, 96,253,243,252, +128, 86,171,157,247,225,135, 31,110,248,233,167,159, 84, 15, 30, 60,192,242,229,203, 61, 6, 14, 28, 24, 69, 8,105,107, 47,217, + 34,132, 72, 0,188, 11,160, 61,203,178,173,135, 15, 31,110,126,231,157,119,132, 12,195,152,150, 44, 89,226,185,102,205,154,129, + 30, 30, 30, 17,233,233,233,121,118, 96, 49, 0,230,140, 26, 53,106,228, 31,127,252,225,122,254,252,121,177,187,187,187,117,129, + 93,244,234,101,105,179,102,179, 25,225,225,225, 1,255, 5,162,193,178,172,145,231,121, 33, 0, 41,165, 84, 95,222,253,127,137, +100,185,187,187, 79,200,204,204,252,206,199,199, 7,222,222,222,207,204,181,122,189, 30, 82,169, 84,228,227,227,243, 67,239,222, +189,133,191,254,250,107,169, 91,128,132, 37,159,254,254,243, 92,127, 55, 87, 21, 0, 96,233,138, 3, 5, 0,240,235,175,191, 34, + 49, 49, 17,174,174,174,168, 91,183, 46, 59,119,238, 92,223,201,147, 39,127, 5, 96, 84,105, 88,197,185,200,191, 73,163,101, 75, +182,108,239,203,180,209,226,121,222, 26,176,212, 66,168, 44, 36,168,248,255,182, 43, 32, 27,134,119,184, 88, 66, 72, 94, 94,158, +149,100,169,213,106, 20, 77,174, 48,153, 76,207,224,114, 28, 7, 66, 8, 45, 11,179,148, 12, 79, 0,112,132, 82,122,223, 78, 38, +106,197,220,250,118, 56, 54, 72,166, 14,178,184, 80,239,246,225,147,215, 13, 0, 78, 63, 28,181,252,219,182,109,253,223,157,185, +108, 86, 97, 70, 98,250,199, 67,122, 84, 13,241,113,151, 41,178, 82,179,221,194,194,186,224,137, 71,101,123,211,217,102,216,176, + 97, 27, 15,158,141, 37, 82,169, 72, 36, 96, 89, 97,171,122,161,238,129, 46,172,139, 10,112,137,139,185,123,122,196,136, 17,245, +166, 76,153,210,218,145,188, 51, 12, 3,181, 90,141,141, 27, 55,130,177, 35,118,206,139, 56, 53, 82, 66,189, 11, 44, 68, 74,171, +213, 98,207,158, 61,136,140,140,188, 76, 8,137, 40,250,200,101, 74, 41,114,114,114,144,148,148, 4, 95, 95,223,203,132, 16,161, +237, 54, 98,113, 76,139, 86,213, 66,170,134, 15, 31, 62,196,108, 54, 11,108, 6,137,226, 4,230, 25, 18, 99,111,222,253,252,252, + 14, 2,120,149,101, 89, 24,116, 58,195,255,190,252,210,246,241, 69, 91,146, 85, 26,166, 37,173, 28,199, 9, 46, 95,190, 44,180, +244, 25, 0, 66, 0, 10, 0, 30,148, 82, 48, 12,115,205,142,242, 12,151,203,229,167,119,237,218,165,110,220,184, 49, 17,139,197, + 48,155,205,184,126,253,122,224, 23, 95,124, 49,238,240,225,195,175, 17, 66,106, 23, 15,158,110,103,189,215, 57,113,226, 68,126, +112,112,112,137,196, 49, 39, 39, 71, 16, 26, 26,218, 22, 64,204, 63,128, 25,159,146,146,210,251,213, 87, 95, 29,159,156,156, 28, +109, 54,155, 63, 2, 80,215,195,195,227,114,223,190,125, 33,147,201,218,219, 67,180,202,170,119, 47, 47,175, 94,175,188,242, 10, +150, 47, 95,142, 47,190,248,162, 19,165,244, 8, 33,164, 99, 78, 78,206,225,158, 61,123, 66,163,209,244, 46,137,104,217,219,150, + 8, 33,161,109,218,180,249, 97,206,156, 57,170, 61,123,246, 32, 36, 36, 4,185,185,185,248,224,131, 15,188, 62,251,236,179, 99, +132,144,118, 22,178, 85, 26, 38, 33,164,182, 68, 34, 89,255,211, 79, 63, 41,131,131,131,131, 69, 34, 17, 19, 28, 28, 12,173, 86, + 11,157, 78, 39,153, 63,127,126, 61,153, 76,246,231,215, 95,127,189, 30, 64,223,114,218, 18, 3, 96,222,202,149, 43,199,143, 29, + 59, 86, 51,100,200, 16,206, 96, 48, 60,181,192,150,203,229, 79, 45,174,195,194,194,236,206,123, 81,244, 12, 53, 0,141, 35,219, +174,101,228, 61, 27,128,196,218,121,132, 66, 72,165, 82, 72,165, 82, 72, 36, 18,220,190,125,123,166, 84, 42, 93, 98, 59, 22,151, +133, 73,254,154,180, 26, 16, 66,206,179, 44, 91,230,125,113,211,144,191, 99,252, 44, 33,205, 1,132,144,165, 0,218, 63, 25,242, +153, 40, 15, 15,143,247,146,147,147, 31,217,139,233,231,231,231,158,151,151,247,181,175,175, 47,188,189,189,173,115,135,191,191, + 63, 76, 38, 19, 82, 82, 82, 64, 41, 69, 86, 86, 22,228,114, 57,252,252,252,190, 30, 55,110,220,182,149, 43, 87,102,148,136,201, +227,139,158, 3,103,124,202,178, 44, 3, 0,172, 64,169,156, 52, 29,168, 90,181, 42, 90,181,106, 5,157, 78,135,236,236,108,212, +169, 83, 71, 64, 8, 25,198, 48,140,154, 82,250, 61,165,244,232,127, 80,235, 94,170, 49,252,236,226,251,162,132, 16,240, 60, 15, +129, 64,240, 20,209, 42,126, 89, 72, 81, 81,123, 37,229,173,156, 12, 6,131,149,100,185,184,184, 88, 73,154,217,108, 46,141,104, + 85,132,169,215,231,121,190, 58, 33,100,165,189,100,171,184, 12, 27, 54,236, 25,123,143,201,147, 39,199,167,166,166,210,215,187, + 52, 80, 68,239, 75, 76,170,225,170,148,121,170, 84,213,164,174,110,154,140,140,140, 51, 0, 52, 14,252, 68,205, 70,141, 26,201, + 54,236, 56, 17, 63,230,253,133,115, 27, 7,187,171,235, 7,120,184,250,184,200,196, 74,134,228, 75,205,166,120, 55, 55,183,144, + 10,172,208, 0, 0, 26,141, 6, 2,129,224,165,208,104, 81, 74,205,132,144, 8, 66,200,229, 61,123,246,160, 89,179,102, 86,178, +101, 33, 33,217,217,217,184,126,253, 58,218,180,105, 3, 0, 17,246,216,106,241, 60, 15,163,209, 8,163,209,104, 37, 48, 34,145, +232, 25, 2, 99,249, 44,203,178,215, 42,152,133,185,174,174,174,109,218,183,111, 47,254,121,203, 22, 49,165, 52, 31, 79, 2, 95, +231, 81, 90, 74,128,236, 98, 98, 54,155,173, 90, 54,161, 80,136,199,143, 31, 91, 39, 46,139,102,184,248,214,121,105, 34,145, 72, + 62,252,229,151, 95,212, 77,155, 54, 37, 25, 25, 25,224,121,222, 58, 72,126,247,221,119,210,126,253,250,249, 95,186,116,233, 99, + 84, 32,156, 13, 0, 82, 26, 33, 2, 0,181, 90,109, 6,192, 84, 6,166,217,108, 38, 45, 91,182,156,146,158,158, 94,175,176,176, +112,190, 61,237, 8,192,239, 69,151,101, 76,249, 51, 58, 58,186,112,192,128, 1,178,106,213,170, 53,123,222,182, 26, 26, 26,218, + 66, 40, 20,226,220,185,115,122, 0,150,149,117,212,213,171, 87,245,125,251,246,149, 4, 6, 6,182,112, 96,192, 13, 13, 15, 15, + 63,228,229,229, 37,179,104,131,250,247,239, 47, 92,181,106,149, 42, 33, 33, 1, 70,163, 17,211,166, 77, 67,247,238,221,225,225, +225,129,201,147, 39,123, 47, 90,180,232, 71, 0,141,202,192,148,138,197,226,141,247,238,221, 11,241,245,245,149,157, 61,123, 22, +245,235,215, 71,122,122, 58,146,147,147,145,151,151,135,228,228,100,140, 26, 53,202,235,171,175,190,242,179, 67,147,101, 37, 89, +171, 86,173,202,218,190,125, 59,187,122,245,106,149,237, 2,187,248,226,186,164, 69,181, 29,146, 37, 18,137, 32,151,203, 53, 89, + 89, 89,217,207, 81, 69, 18, 0, 98, 91,146, 37,145, 72, 32,145, 72, 32,149, 74,159, 43, 46,235,191,100, 18,247, 39,132,220, 20, +137, 68, 18,185, 92, 46, 98, 24, 6, 18,137,164,139,155,155,219,141,206,157, 59,215, 61,120,240, 96,172, 61, 56, 58,157,110,163, + 68, 34, 17,122,121,121, 1, 0, 66, 66, 66, 80,191,126,125,228,231,231,243,217,217,217,208,104, 52,204,163, 71,143, 80, 88, 88, +136,164,164, 36, 4, 5, 5, 9, 25,134,217, 8,224,181,146,240, 78, 93, 74, 90, 1, 96,133,229,222,211,211, 51, 5,128,204,114, + 47,149, 74,225,239,239,143,132,132, 4,168, 84, 42,246,179,207, 62,235,187,101,203,150, 62,132,144, 97,148,210, 77, 54, 80,179, +255,173, 54, 90, 22,146,101,251,250, 20,209,138,140,140,156,181,103,207,158,182, 37, 77,100, 69,251,181,165,106,178, 44,151, 61, + 29,143, 16, 2,142,227,224,237,237, 13,185, 92, 14,185, 92,110,217,243, 7,199,113,207,224, 23,173,240, 29,206,172, 66,161,192, +155,111,190, 73,191,255,254,251,241, 69,100,235,158,189,223,237,191, 60,218,170,197, 42, 46,181,107,215, 62,253,241,199, 31,247, +250,227,143, 63, 18, 26, 7, 87, 19, 40, 18, 31,229, 73,213, 26, 13, 2,170, 68, 14,239,221,247, 42,158,156, 62,180, 87,238,229, +230,230,202,106, 4,200, 13, 12,163, 35, 85, 36, 2,149,175, 66, 36,241,113,117,245, 23, 25,244,169,106, 87, 87,177, 94,175,207, + 2,144, 89, 22,136, 90,173, 62, 32,145, 72,130, 88,150, 5,203,178,240,240,240,112,161,148, 66,163,209, 32, 32, 32, 64, 25, 22, + 22,118, 71, 32, 16,128, 97, 24,228,229,229, 61,122,248,240, 97,151,242, 18,230,234,234,122, 64, 34,145, 4, 49, 12, 3, 66, 8, + 88,150,181, 30, 92,176,252,207,178, 44, 8, 33, 40, 40, 40,176, 11,147, 82,122,133, 16, 18, 17, 25, 25,105, 37, 91,251,246,237, + 67,215,174, 93,145,149,149,133, 27, 55,110,216,146, 44,187,182, 13,109,141,223, 41,165, 16,137, 68,184,125,251,246, 83, 91,218, +150, 75,165, 82, 85,184,243,184,185,185,157,236,223,191, 63,126,248,225, 7, 74, 41, 37, 0, 20,132,144,250, 46, 46, 46,183,111, +222,188,105,151, 29, 12,165, 20, 70,227, 95, 31,181,180,113,219,254,229, 0,153,238,210,168, 81, 35,146,157,157,109, 33,144,214, + 5, 17,203,178,248,246,219,111,101, 77,155, 54,157, 33,149, 74,167,136, 68,162, 28,147,201,244,179, 78,167,155, 79, 41,205,122, +153, 6,165,214,173, 91,191, 31, 23, 23,215, 61, 40, 40,104,215,115,144,120,218,164, 73, 19, 3, 0, 25,203,178,194, 74, 24, 40, +217,162,182,165,179,144,125, 74,169,185, 81,163, 70,186,162, 73,158,181, 23,203,195,195,227,199,189,123,247, 6, 4, 5, 5,193, +100, 50,193,108, 54, 35, 47, 47, 15, 81, 81, 81,208,235,245, 48,155,205, 8, 9, 9,193,167,159,126,170,123,239,189,247,164, 43, + 87,174, 76,205,203,203, 27, 92, 14,236,123,219,182,109, 83,248,250,250,202, 10, 11, 11, 17, 19, 19,131, 70,141, 26, 33, 55, 55, + 23,249,249,249, 40, 40, 40,128,209,104, 68, 78, 78,142,134,227, 56, 67, 57, 88, 51,109, 73,214,184,113,227,174,137,197,226, 70, +239,188,243, 14,226,227,227,173,125,126,204,152, 49,240,246,246, 46, 62,214, 59,196,180, 4, 2, 1, 36, 18, 9, 68, 34, 81, 86, + 80, 80, 16, 8, 33,210,216,216,216,138,108,197,169, 1,228, 8,133, 66,177, 45,193,146, 72, 36, 56,119,238,220,199, 98,177,184, + 68,109, 86, 89,237,199,145,251,151, 96, 34, 95, 42, 18,137, 36,110,110,110, 34,155,121, 90,164, 84, 42,225,229,229,181, 28, 64, + 55, 59,243,221,208,205,205,205, 58,190, 55,104,208, 0,113,113,113, 59,179,179,179,135,166,166,166,130, 97,152,141, 12,195,244, +177,240,128,204,204, 76, 4, 6, 6, 54, 44, 13,175,101, 35,223,241, 32,212,170,209,170, 93,211, 77, 89,108,158,130, 90,173,198, +195,135, 15,145,159,159, 79,239,222,189, 75, 38, 76,152, 64, 12, 6,195, 58, 66,200, 25, 74,233,131,178,184,200,191, 65, 42,100, +163,101, 41,224,210,136, 85,113,226,101, 15, 33, 50, 24, 12,202, 70,141, 26,241,150, 9,220,114, 1, 32,165, 17,173, 34,205,129, +195, 34, 20, 10, 85, 19, 38, 76,200,253,254,251,239,199, 17, 66, 86, 81, 74,239, 86,180, 0,119,109,255,201,251,139, 79,167,125, +234,230, 87,173,198,148, 41, 51, 5, 61,122,244, 56,187, 97,195, 6,206,173, 86,183,142, 71, 15,108,242,254,250,131,169,251,246, +238,221, 11, 60, 49,140,182, 87, 78,238,222,189,219,103,242,187, 19,241,233,135,239,237, 87,135,120,136,149,196, 77, 33,213,231, +167, 41, 65, 11, 37, 53,195,187,239,216,181, 43, 9,192,165,178, 64,100, 50, 89,208,221,187,119, 67,108,137,132,209,104,132, 70, +163,193,134, 13, 27, 60, 85, 42,149,167, 82,169,132, 64, 32, 64,253,250,245,237,213,152, 4,221,185,115, 39, 68,165, 82,161,160, +160, 0,122,189, 30, 38,147, 9, 60,207,131, 16, 2,161, 80, 8,177, 88, 12,133, 66,225,208,201, 62, 91,178,181,111,223, 62,212, +169, 83, 7,153,153,153,136,142,142,118,152,100,217,106,137,108,237,177, 4, 2, 1,126, 12, 14,198,152,196, 68, 43,129, 89,234, +226,130, 79,121,190, 66,117, 95,175, 94, 61,122,234,212, 41,236,223,191, 31, 61,123,246, 36,191,253,246,155,145,227, 56, 81, 66, + 66,130,221,218, 49,158,231,173,105,181,140,219,182, 4,203, 81,162,101, 54,155, 85, 98,177, 24, 58,157,206,186,181,111,123, 85, +175, 94, 29, 90,173, 86,144,147,147, 35, 72, 76, 76,148,207,155, 55,239,157, 99,199,142,249, 2, 24,244, 79, 14, 68,223,127,255, +125,208,152, 49, 99, 30, 11, 4, 2,218,181,107,215, 33,143, 30, 61,234,237,235,235,123,228,143, 63,254,248, 18, 64,168,163,120, +158,158,158, 23, 5, 2, 65,128, 82,169, 20,109,221,186,213,148,155,155, 43,242,242,242, 74,177, 16, 91, 75, 89,155, 76,166,248, +236,236,236,198,246,224,121,122,122,138,190,249,230, 27, 83, 70, 70,134,200,199,199, 39,197,130,163, 80, 40, 68, 91,183,110, 53, +229,228,228,136, 52, 26,205,197,172,172,172,114,241,210,211,211, 7, 15, 27, 54,236,196,145, 35, 71, 60, 88,150,197,163, 71,143, +144,145,145, 1,141, 70,131,141, 27, 55, 34, 40, 40, 8,219,182,109,211,106,181,218,209,255,251,223,255,102,228,229,229,217,227, +234,161, 77,179,102,205,130,178,178,178,160,209,104,144,159,159,143,139, 23, 47,162,118,237,218, 72, 76, 76, 4,195, 48,208,104, + 52,248,238,187,239, 10, 8, 33,218,114,198,142,222, 99,199,142,213, 0,192,216,177, 99, 53, 99,199,142, 45,113,130,107,209,162, + 5,150, 47, 95,238,208,162,186,184,150,221, 66,138,108,200,145,174, 69,139, 22, 56,118,236,216, 84, 71,200, 17,165,212, 32, 20, + 10,159, 34, 88, 54,255,155, 29,109, 67, 28,199,137,138,108, 68,137, 61,247, 47,129,180,149,201,100,162,226,111, 22, 20, 20,136, +124,125,125, 91, 59, 64,124,221,101,178, 39, 10,167,160,160, 32,100,103,103,115, 6,131, 97,224,198,141, 27, 77, 0,208,168, 81, +163,129, 28,199,233,204,102, 51, 43, 22,139,145,159,159, 15, 47, 47, 47,247, 82, 1, 25,124,244,251,207,243,124,138,219,104,249, +250,250, 34, 34, 34, 2,122,189, 30, 73, 73, 73,136,138,138, 50,113, 28,183,249,251,239,191,231, 61, 61, 61, 71,190,254,250,235, +236,165, 75,151,222, 6,240,126, 89, 92,228,223,162,205, 42,141,108, 89, 78, 29,182, 5,112, 12, 64, 59, 75, 38,109,183, 14,203, +210,100, 57,178,202, 97, 89, 54, 43, 62, 62, 94,161, 80, 40,172,239,153, 76, 38,248,249,249,241, 60,207,147,226,191, 83, 65, 21, +245, 83,100,107,250,244,233, 89,223,125,247,221, 80,216,105, 80,190,245,237,112,108, 40, 70,178, 86,124, 49,103,249, 55, 95,204, +115,187,191,127, 29, 86, 47, 91,204,113, 28, 46,213,171, 87,175,117, 94, 94,158,192, 69, 97, 66,122, 22,246,225,137, 31, 45,106, +103,133, 48, 0,214,158, 63,127,254, 82,183,110,221, 78,173,253,101,135, 91, 98, 76,204, 25, 73, 78,122,146,186,102,136, 64,228, + 31,212, 39, 87,167, 19, 13, 28, 56,208, 19,192,235,101, 97, 49, 12,131,152,152, 24,196,198,198, 66,169, 84, 66,165, 82, 65,169, + 84, 66,173, 86, 67,165, 82, 65,165, 82, 57, 92,134, 12,195,128,227, 56,108,223,190, 29,114,185, 28, 10,133,226,169,203, 66,178, +158,167,110,186,118,237, 10,173, 86, 11,165, 82,105,221,238,116, 68, 44, 54, 90, 6,131, 1, 6,131, 1, 70,163,145, 3, 32, 20, + 8, 4, 24, 21, 31,111,213,242, 56, 66, 96,138, 75,253,250,245,233,153, 51,103,112,234,212, 41,228,231,231,227,155,111,190,129, +175,175,111, 7, 0, 51, 29,197,178, 49,210,231,114,114,114,132, 57, 57, 57, 86,237,160, 80, 40,180,106, 15,236,157, 28, 4, 2, +129,117, 53,106,185,108,181, 90, 44,203,194,219,219, 27, 62, 62, 62, 88,177, 98,133,168, 90,181,106,221,255,201, 65,104,209,162, + 69, 53,151, 46, 93,186,102,195,134, 13,251, 6, 15, 30,188,229,250,245,235, 35, 92, 92, 92,174, 29, 61,122,116,158, 68, 34,225, + 43,216,191, 3, 18, 19, 19,189,108,223,226,121, 94,110, 54,155,173,196,182,160,160, 0,117,235,214,181, 27,239,230,205,155,114, + 0,152, 55,111,158, 16,128,220, 98, 12,110,193, 44, 40, 40, 16,214,174, 93,219, 46, 67,112, 74,233, 29, 66, 72,235, 78,157, 58, +157, 62,116,232,144,107, 80, 80, 16, 18, 18, 18,144,144,144,128,154, 53,107, 98,193,130, 5,249, 57, 57, 57, 45,139,200,213,111, +118,102,219,207,213,213, 85,248,248,241, 99,152,205,102, 52,108,216, 16,223,125,247, 29, 6, 14, 28,136,186,117,235, 34, 39, 39, + 7, 55,111,222,196,250,245,235, 93, 69, 34, 81,153, 99, 71, 97, 97,225,111,171, 86,173, 10, 44,174,209, 26, 50,100,136, 34, 37, + 37,197,218, 38,231,204,153,243,212,184,236,200, 46, 67,209,214, 86,169, 87, 69,196,108, 54,171,165, 82,105,142, 68, 34, 17, 91, +236,179,162,162,162, 28,214,102,217, 46, 0, 29,185,255, 39,197, 66, 90,139,139, 88, 44,134,143,143,143,221, 56, 18,137,132, 88, +198, 70,179,217,140,236,236,108,206,215,215,215,186,189,127,249,242,101,174,106,213,170, 28,203,178,172, 88, 44, 6, 33, 4,114, +185,188,212, 1,159,114,116, 78,143,129, 51,173,167, 14, 25,161, 66, 61,105,250,147, 69,255,229,203,151, 97, 52, 26, 17, 21, 21, +101,250,223,255,254,151,152,149,149, 53, 9,128,224,192,129, 3,195,166, 78,157,202,122,121,121, 89,237,104, 75,226, 34,255, 54, +178, 85,146,150,203, 50, 11, 29,139,140,140, 36, 69, 71, 43,137,133,224, 80, 74,159, 33, 87,165, 17,175,162,206, 71,202,235,116, + 44,203, 98,255,254,253, 86, 66, 96, 57,117, 72, 41, 69,101, 19, 45,119,119,247,252,102,205,154,169,227,226,226,126,170,168, 38, +107,197, 23,115,150, 47,156,251,153,155,246,214, 89,196, 39, 38, 65,155,106,186,116,242,218,195,157, 0,118, 2, 0, 86,214, 58, +134,113,183,190,181, 23,179,150,167,188, 65, 61, 63,213,206, 87,187,117, 15, 28, 48,246,125,230,173,183,222,106, 53,108,216,176, +236,193,131, 7,191,171, 84, 42, 67,141, 70, 99,230,142, 61,123, 98, 7, 12, 24, 80,141,227,184, 97,229,249, 28, 49,153, 76,143, +250,246,237,107, 45, 91, 31, 31, 31,245,207, 63,255,236,173, 82,169, 48,100,200,144,180,216,216, 88,235,118, 81,110,110,238, 35, +123,210,104, 52, 26, 31, 53,104,208,160,212,237, 66,139, 70,210, 17,204,162,186,180,158, 46,204,200,200,192,237,219,183, 33, 16, + 8,208,188,121,115,156, 60,121, 18,173, 90,181,114,232,196,161, 78,167, 67, 80, 80, 16,116, 58, 29,242,243,243, 11, 0, 72, 54, + 86,171, 6, 0,120, 59, 35, 3, 23,255,247, 63,156, 93,184,176, 66,237,168, 65,131, 6,244,220,185,115,184,118,237, 26,244,122, + 61, 70,143, 30,141,162,109, 67, 0,232,236, 64,158,131,125,124,124,186,118,235,214,205, 15, 0,242,243,243,201,249,243,231, 33, +149, 74, 65, 8, 65, 82, 82, 18,118,237,218,133,132,132, 4, 16, 66,224,234,234, 26, 64, 8,169, 70, 41,125, 88,198,196, 64, 30, + 62,124,136,207, 63,255, 28, 60,207, 99,234,212,169, 8, 9, 9,177, 18,172, 71,143, 30, 97,222,188,121,224, 56, 14,159,125,246, + 25,106,214,172, 9,147,201, 36,117,196, 79, 89,101,203,228,201,147,239,239,220,185,115, 95, 92, 92,220,107, 95,124,241, 69, 91, + 66, 8, 63,101,202,148,207,213,106, 53,247, 60,184,153,217,185,184,125,239,145,149, 8, 21,191, 60, 61,220, 28,198,187, 27, 19, +103,253, 62,199,217,226,113,112,119,115,117, 52,137, 5, 38,147, 41,191, 79,159, 62,154,237,219,183,147,154, 53,107,226,193,131, + 7,150,197,105, 65, 5, 92, 58, 36,104,181,218, 16,150,101, 69,247,238,221, 67,213,170, 85,209,172, 89, 51,204,159, 63, 31,233, +233,233, 48,155,205,240,242,242,226, 77, 38,211,101,131,193,112,188, 28,172, 57,227,198,141, 19, 1, 24, 95,164,217,170, 55,105, +210, 36,126,241,226,197,184,124,249,178,117, 60,182, 53,134,119,116,235,208, 86,235,100,123, 69, 69, 69, 77, 21,139,197, 20,192, + 57, 0, 14, 17,109, 74,169,161, 74,149, 42,197,177,205, 47,203,100,251, 34, 79, 50,250,250,250, 70,169, 84,170,238,153,153,153, + 79,105,181, 90,182,108,105,244,246,246, 62, 97, 47,142, 82,169,204,100, 89,214, 29, 0, 18, 18, 18,160, 80, 40, 68, 49, 49, 49, + 11, 9, 33,211, 0,160, 90,181,106, 11,181, 90,173,168, 90,209,120,234,227,227, 3,131,193, 80,170, 25,203,233,203,201,235, 0, +172,179,153,123,147,178,179,179,101,139, 23, 47,206, 91,184,112, 97, 33,199,113,122, 0, 71,179,178,178,172,126,180,170, 86,173, +154, 45, 20, 10,221, 52, 26,141,191, 13,212, 51, 92,228,191,176,125,104,235,176,148,150,240,165, 18, 53, 89, 37,145, 45,123,180, + 18,132, 16, 20, 22, 22, 62,165, 29,177,156, 58, 44,137,104, 21, 77,232, 21,218, 58, 44, 34, 89,178,159,127,254,121,243,178,101, +203, 78,217,251, 61, 91, 27,173,149, 95,206,253,194, 66,178,174,158, 58,132,223,162,179,211,167, 46, 92,178,180,162,149, 80,219, + 83, 81,223,199,219,227,216,255, 22,204, 81,223,223,191, 30, 91, 86,126, 69,175, 94,184,208,244,194,133, 11, 67, 39, 78,156, 88, +165,168, 97,105, 1,252, 9, 96,128, 61,167,116,210,210,210,158,178,143, 10, 9, 9,185,163,209,104,188,165, 82, 41, 98, 98, 98, +242,110,220,184,225,240,150, 76,113,204, 74, 98,250, 79,145,172, 27, 55,110,160,125,251,246, 0,128,147, 39, 79,162,101,203,150, + 14,145, 45,147,201,148, 85,171, 86, 45,171,118, 43, 59, 59,155, 7,128,177, 73, 73, 88,229,235, 11,129, 64,128,179, 11, 23,226, + 19,147, 9,243,133,142,153,238, 52,108,216,144, 94,184,112, 1,177,177,177, 48,155,205,232,213,171,151, 45,201,114, 36,207,117, +195,195,195, 15, 31, 61,122,212, 83,169, 84, 34, 63, 63, 31,121,121,121, 24, 62,124, 56, 6, 14, 28, 8,189, 94,143,173, 91,183, +226,247,223,127,135, 74,165, 66,126,126, 62,242,243,243, 93, 35, 35, 35, 79, 19, 66,218,148,102, 91, 72, 41,165, 93,186,116,193, +137, 19, 39,192,178, 44,154, 54,109,138,140, 12,235, 97, 32,120,123,123,151,244,140, 45,234,239,255,200,132, 36, 16, 8,104, 84, + 84,212, 23,109,219,182, 69, 92, 92,220,107,141, 26, 53,250,102,196,136, 17, 9,207,139,235,234,162, 66,131,218,193,208,235,245, +208,235,245,240,243,243, 67,110,110, 46,238,223,191, 15,189, 94, 15,111, 47,141,195,120, 17,117,107, 90,241,188,188,188,144,159, +159,143,135, 15, 31,194, 96, 48,192,195,195,213,145,250, 15,236,210,165,203, 31,155, 55,111,118, 95,191,126,189,161, 93,187,118, +226,111,190,249,134,168,213,106,164,166,166, 86, 52,203, 81, 39, 79,158, 12,234,212,169, 83,216,173, 91,183, 16, 21, 21, 5,131, +193,128,136,136, 8,220,189,123, 23, 45, 90,180, 64, 94, 94,222,185, 11, 23, 46,252,110,199,164,192, 19, 66,102,140, 27, 55, 14, + 22,178,117,226,196, 9, 36, 37, 37, 65,165, 82, 61, 67,180, 44,182,143, 98,177, 24, 0,252,236,212,156, 88, 79, 5, 22,105,158, + 62,209,104, 52, 70, 0, 75,159,167, 45, 62,126,252, 88, 82,191,126,125,189, 84, 42, 21, 23,145,182, 37,255, 84,219, 46,161,222, +159,235, 36, 99, 89,226,227,227, 51,201,195,195,163, 83,245,234,213,145,146,146, 34, 18,139,197,104,217,178,165,177, 73,147, 38, + 70, 31, 31,159,183,237,197,145, 72, 36,183, 68, 34, 81,155, 39,139, 9, 14,143, 31, 63, 6,165,116,106,221,186,117,223,203,205, +205, 69, 70, 70,134, 88,173, 86, 91, 23,213, 97, 97, 97,208,235,245,183, 28, 32,155,115,170, 86,173, 58, 67, 36, 18,205, 79, 75, + 75,251,190,132, 50, 18, 55,104,208, 64, 45, 18,137, 96, 52, 26,159, 34,155, 37,113,145,127, 51,201,122,138,104,217,176,200,226, +234,244,114,183, 13,237,181,209, 34,132,192, 96, 48, 64,161, 80, 88,183,164,108, 61,193,151, 68,180, 42, 34,129,129,129,104,214, +172,153,108,203,150, 45, 63, 46, 94,188,248,116, 69, 48,182,109,222,228,235,194, 23, 4, 38,158,219,139, 59,215, 46, 97,231,205, +172,244,169, 11,151,188,219,227,245, 65, 41,197,137,217,214,113,229,227,133,122, 41,234,250,123,187, 31,251,114,209, 66,181,246, +214, 89, 36, 37, 39, 99,239,185, 11,151, 12,148,222, 4, 48,181,178, 42,219,246,244, 90, 69, 73,234, 11, 24,120,172,238, 29,210, +211,211,113,243,230, 77, 11,201,138, 0,128, 86,173, 90, 93,182,144,173, 75,151, 46,161, 81,163, 70,207,184,119,120, 70,243,144, +153,185,160,216,111,116, 2,224, 97, 33,252, 2,129, 0, 45,103,204,112,152,100, 17, 66, 40,199,113,208,106,181,150,149, 98,133, + 72, 86,209,160,248,225,209,163, 71, 61,215,174, 93,155,179, 97,195,134, 12,158,231,133, 13, 26, 52, 8,104,220,184, 49,217,184, +113, 35, 0, 96,192,128, 1,152, 58,117, 42,110,220,184, 1,133, 66,129, 86,173, 90,113,179,102,205,242,154, 52,105,210,219,120, +226, 39,233, 25,225, 56, 78, 84,173, 90,181, 35, 0, 58,220,186,117, 11, 0, 78, 83, 74, 91, 90,158,151,245,204, 14,225,115,115, +115,133, 42,149,170, 68,215, 16,162, 39,199, 58, 29,221,234,179, 98,158, 58,117,234,243, 47,191,252,114,231, 7, 31,124,112,239, + 57, 49, 75,212,104,117,239,222, 29,133,122, 35,226, 83,178,193,113,102, 20, 26, 83, 29,198,179,213,104,117,239,222, 29, 5, 58, + 3, 30, 39,105, 97, 54,115,200, 45, 52,219,219,142,228,175,190,250,234,129,159,127,254,217,231,204,153, 51,224, 56,142,191,123, +247,238,195, 62,125,250,168,167, 76,153,226,110, 99,131,234,168, 44, 27, 52,104, 80,191, 83,167, 78,105,195,194,194,220,206,157, + 59,135,212,212, 84,152,205,102,116,232,208, 1, 98,177,248,241,194,133, 11, 69, 0,150,217, 57, 57, 88,200,150,241,194,133, 11, + 99,206,158, 61,235,230,230,230, 38,230,195,195,145,116,232, 16,182,111,223,254,204,119, 86,174, 92, 9, 0,118,121,225,183,104, +156,206,159, 63, 95, 41, 4,171,248,118, 89, 69,183, 31,255,173,114,238,220,185,132,137, 19, 39,214, 86,171,213, 75, 91,183,110, +221,222,221,221,157,113,117,117,141,242,247,247,127,175,126,253,250,143, 28,152, 39, 70, 40, 20,138,251,102,179,153,205,203,203, + 67,126,126, 62, 0,192,108, 54,139, 25,134, 65,181,106,213,172,202,147,166, 77,155,194,199,199,135,139,142,142, 30, 97, 47,126, +106,106,234, 83,167, 16, 75,144,113, 45, 91,182, 20,232,245,122,196,198,198,158,180,125, 80, 26, 23,121,217,165, 66, 65,165, 25, +134, 1,165, 20,210,198,141, 75,237,112, 37,116, 62, 82,124,242,179,245,181, 97, 57, 93, 56,102,204, 24,235,103, 46, 93,186,100, + 53,138,239,213,171,215, 83,152,231,207,159,127,134,108,217, 19, 49, 60, 53, 53,245,214,214,173, 91, 47, 44, 90,180,232,156,157, + 5,100,197,180,216,104,245,123,115, 72,210,242,207, 63,189,190, 97,215,209,186, 73,133, 52,105,234,194, 37, 31, 20, 39, 89,246, + 98,214,242, 81,214, 10,240,114,143, 90,188,104,161,139, 69, 59,246,243,229,228,108,152,233, 56, 7, 43,178,220,188,219,106, 22, + 9, 33,124,101, 96, 86,160,193, 61,133,105,235,222, 33, 41, 41,201, 74,178,108, 28,150, 70,180,106,213,234,114, 17,201,178, 60, + 51, 87, 36,157, 2,129, 0, 31,228,229, 65, 32, 16,160,221,236,217,232, 48,119,174,195,121,231, 56, 14, 2,129, 0, 33, 33, 33, + 14,147, 44, 91, 76, 66, 72,203,130,130, 2,172, 95,191, 62,247,222,189,123,193,213,171, 87,159,180,110,221,186, 37,114,185,252, +169,239, 20, 20, 20,160, 71,143, 30,248,254,251,239,209,165, 75, 23,211,136, 17, 35, 36, 12,195,116, 42, 43,157,177,177,177,227, + 58,118,236,184, 82,167,211, 9, 50, 50, 50,198,217,251,172,188,188,111,221,186,245, 94, 72, 72, 72, 91,148,238,194,129, 7,112, +230,121, 48,151, 46, 93, 10, 0, 97,207,131, 89,154, 70,235,151, 95,126, 1,207,243, 8,244,209, 64,175,215,163,120, 89,151,135, + 89, 92,163,181,101,203, 22,240, 60,143, 42,190,110, 48, 24, 12,176, 24, 16,151,135,233,238,238,254,213,134, 13, 27, 2,162,163, +163, 17, 31, 31,143, 37, 75,150, 60,202,202,202,234,150,149,149, 37,153, 53,107,214,177, 55,223,124,211,155,231,121,189,163,125, +147, 82,170, 39,132,140,120,229,149, 87, 54,206,155, 55,239, 65,120,120,120,149,150, 45, 91,106, 50, 50, 50,210,174, 92,185,242, +112,229,202,149, 74,179,217, 60,162,180, 45,169, 82, 48,121, 0,179, 8, 33,223,107, 52,154,157,177,177,177, 77,107,102,102,178, +126,132,160,105,211,166, 79,153, 14, 48, 12,131, 19, 39, 78,128,231,249,251,246,148,103, 66, 66,194,236, 34,109,170, 67, 4,203, +158,254,126,254,252,249,233, 69,216, 23,236,193,254, 59,198, 58,139,198,217,145,123, 71,211,249,237,183,223,198,163,152,127, 52, + 71,211,121,254,252,249,216, 78,157, 58,205,245,246,246,158, 37,149, 74,145,150,246, 36,216,129, 69,243,104,153,175, 27, 55,110, +140, 46, 93,186,224,206,157, 59,115,103,204,152, 17,251, 60,229, 89,180,224, 14, 6, 48,180, 99,199,142, 83,250,245,235,135,111, +191,253, 22,148,210, 53,255, 5, 18, 92,110, 80,233,200,200, 72, 98,251, 90,180, 53, 19,119,255,254,125, 95,219, 14,103, 27,163, +208,210,233, 44, 6,117,199,143, 31, 55,219,118,190, 82, 86,226,113,167, 78,157,242, 62,116,232,144,208, 82,161, 69, 70,157,124, + 98, 98, 34,115,236,216, 49,171,118, 76, 32, 16, 32, 42, 42,202,108, 52, 26, 31, 59,154,225, 59,119,238, 44,171,140,130, 59,126, + 35,246,189, 3,123,127,245,104,222,172,117,150,218,205,173,196,142,108,241, 32, 95,102, 3, 19, 48,243,191, 88, 48, 71, 99, 33, + 89,191, 92, 78,206,210,233,185,246,183,210, 10,174, 86,118,101,231,230,230,198, 90, 78, 23,230,229,229, 61,126,137, 26,225, 21, + 66, 72,132,175,175,239,101, 20, 59, 93,104,121,214,168, 81,163,103,158, 57,164, 54,225,121,184,184,184, 88, 7, 9, 71,237,178, + 8, 33,212,178,149, 93,148, 46,242,156,121, 62,117,253,250,245,170,195,135, 15, 87,133,132,132,196, 16, 66,132,163, 70,141, 50, +250,248,248,136, 78,158, 60,105, 2, 64,218,182,109, 43, 72, 78, 78,166, 9, 9, 9,218,158, 61,123,230,142, 25, 51,198,253,207, + 63,255, 20,243, 60,127,184, 28,236, 7, 0, 58, 58,250,172, 60,233,215,175, 95, 12, 74,112, 28,250, 60,242, 34, 48, 45,162,205, +202, 65, 76,108, 66,145, 7,115, 30,220,163, 20,171, 93,149,201,100,134, 54, 39,195, 97,141,214,253,135, 9, 69, 33,199, 56,112, + 92, 98, 17,222, 19,131,120,154, 89, 96,143,182,160,213,210,165, 75,187, 49, 12,195,156, 61,123, 86,191,104,209,162,184,180,180, +180, 94,148,210,199, 69,237,172,221,250,245,235,127,180,195,149, 67,105,117,127,147, 16,210,226,163,143, 62,122, 23, 64, 43, 0, + 85, 0, 60, 6,112, 18,192,178,138,122, 48,167,148,166, 18, 66, 58,119,235,214,237, 16,203,178,213,108,250,145, 7,128,116,155, +126,225,149,146,146,242,154,157,176, 75, 94,224,176,178, 4, 47,161,252, 91, 78, 50, 30, 62,124,120,118,239,222,189, 5, 65, 65, + 65, 31, 7, 5, 5, 49,153,153,153,200,203,203, 3,195, 48,240,241,241, 65,157, 58,117,224,227,227,195,223,186,117,107,193, 71, + 31,125, 84,174, 79,190,218,181,107, 7,155, 76,166, 26, 12,195, 4, 3, 8,166,148, 6, 19, 66,130, 1,184, 21,105,198,212, 85, +171, 86, 21, 52,111,222, 28,205,154, 53,195,177, 99,199,176,109,219,182,117,148,210, 3,182,218,172,226, 92,228,101,144,155,141, + 73, 91,194,227, 24,101,208,174,246, 69, 26,117, 43,130,208, 90,151,159,157, 31,202, 13, 42,253,204,128,147,153,217,165,132, 14, +103, 11,248,212, 43,207,243,177,229,117,190,204,204,204, 46,239,189,247,222, 33,150,101,171, 89, 52, 85,102,179, 89,175,213,106, +223,106,215,174,221,119, 66,161, 80, 98,139,203,243,252,163,148,148,148,191, 53, 86, 95,113, 63, 90, 93,186,245, 78,127, 94, 76, +165,136,169,113,103,207, 15, 72, 73, 77,199, 47,151,147, 51,115, 13, 92,187, 59,105,249,215, 95, 68,250, 99, 99, 99,187,190,196, +140,255, 74,105, 91,130,101, 61,179, 83,210,236,112, 72,154, 86, 78,250, 72, 17,217,170,148, 78,158,156,156,188,120,198,140, 25, +157, 23, 44, 88,224,185,111,223, 62,117,209,111,160,111,223,190,169,215,175, 95,111, 13, 64,162,211,233, 14, 47, 88,176,192,115, +206,156, 57,238, 0,220,139, 6,153,148,148,148,148,229,112, 74,153, 98, 50,153,226,235,212, 10,179,212,221, 83, 46, 29,108,255, + 55,155,205,241,142,224,149,132, 99,123,207,113, 92,124, 57, 90,229, 15,154, 53,107,198,126,240,193, 7, 41,251,246,237,179, 4, +210, 45,176,105,103,119, 80,134, 83, 82, 59,251,146, 30,192,162,162,171, 50,251,104, 62,128, 22,206,214,245,252, 99,157, 35,247, +255,148,252,250,235,175, 51, 7, 14, 28,184,222,205,205,109, 83,112,112,112,152,183,183,183, 90, 38,147, 65,175,215,231, 26, 12, +134,219,119,238,220, 25, 60, 99,198,140, 7,246, 96,173, 95,191,158, 5, 32,226,121, 94,202, 48,140, 2,128,154, 16,226,106, 33, + 90,132, 16, 24,141, 70,196,198,198,226,147, 79, 62,225,142, 28, 57,242, 63, 0,159, 57,144,220, 38, 0, 60,109,198,113, 79, 0, + 6, 60,113, 96,155, 86,164,217,124, 33, 66,120, 28,171,117,153,146, 91, 17,164, 84, 35,253,114,131, 74,255, 93, 29,174, 28,204, +160,151,165,147, 12,211, 47,250, 9, 43, 23, 61, 21,231,208, 66,194, 74,188, 47,103, 3, 48,187,208, 60,113,217,129, 27,139,245, +102,202, 27,205,252,200, 59,169,249, 55,255, 31, 15, 64,230,138, 60,179, 3,247,213, 74, 74, 31,169,196,188, 94, 39,132,188, 50, +113,226,196,153,114,185,188, 41, 0, 20, 20, 20,156, 77, 76, 76,156,107, 57, 85, 88,222,115,167,148,193,154,211,210, 26,191,140, +120, 6,131,225,189, 87, 94,121,229,107,142,227,190, 52,153, 76, 39,157, 53,229,148,151, 89,126,249,229,151, 7,150,121,185,127, +255,254, 44, 0,108,221,186,213,225,211,192,195,135, 15,231,138, 2,153,235, 0,228, 3,200,193, 19,135,219, 4, 0,242,243,243, + 51, 19, 19, 19,111,113, 28,119, 11,192,143, 21, 56,113,235, 73, 8,217, 77, 41,237, 94, 52,118,238,166,148,118,183,125,239, 69, +139, 13,217, 42,105,188, 47,223, 24,222, 41, 79,100,235,141,191, 38,218,226, 4,170,188,251,210,228,118,114, 94,212,243,174, 96, +157,242,175, 37,150, 49, 0,134, 85,244,185, 83,254,149,117,254, 24, 64, 47,103, 73, 56,229, 95, 55,255, 85,128, 96, 89,228,230, +205,155, 47,204, 68,224,159, 22,219,109,194,146,182, 12, 45, 82,146, 54,203, 73,180,156,226, 20,167, 56,197, 41, 78,113,138, 83, +202, 34,145, 69, 54, 90, 86, 18, 85,100,171, 85,156,100,217,146, 43,219,123, 2,160, 83, 41,171, 50, 71, 78, 19,116,170,192,170, +239,176, 19,211,137,233,196,116, 98, 58, 49,157,152, 78,204,255, 95,152, 21,148,200,114,182, 14,247,188, 40,162,101, 49,126,191, + 25, 65,102,213,190, 76,103,149,100, 12, 95, 22,209,122,202,216,179,178, 47, 0,157,156,152, 78, 76, 39,166, 19,211,137,233,196, +116, 98, 58, 49,159,243,106, 63,109,218,180,233,120, 18,255,152, 78,155, 54,109, 58,165, 52,242, 9,141,161,145, 47,242,183,111, + 52, 66,219,155, 13, 65, 45,215,141, 70,104, 91, 74,153,140,181, 92,182,239, 59,183, 14,157,226, 20,167, 56,197, 41, 78,113,202, +203, 46,167, 23, 46, 92, 88,176,112,225, 66,139,225,123, 26, 0, 82,164,205, 74,123,145, 63, 92,180, 77, 88,238, 65,169,114, 67, +240,252,221, 66, 8,241, 99, 4,162, 33, 66,145,164, 61, 40, 95, 7, 0,192,176, 55, 56,131,238, 15,179,217,184,137, 82,154, 88, + 81,236, 90,132,212,170,169,145,253,174,231, 56, 81, 92,174,161,223, 45, 74,207, 87, 4,167, 63, 33, 45, 37, 98,241, 65,137, 70, + 83,162,151, 66,125, 86, 86,161,222, 96,232,188,149,210, 83,206, 62,224, 20,167, 56,197, 41, 78,249, 55, 8, 33, 68,225,234,234, +122,132, 97,152, 32,155,247, 80,210,255, 0,192,113, 92,146, 86,171,237, 76, 41, 77,255, 59, 49,139,137, 1,192,249,151,161,252, + 28,221, 58, 20, 0, 79,197, 22, 42, 55, 98,118,184,175,178,117, 88,112,208,230,196,228,148,203, 57, 58,195,168,219, 9,185, 90, + 71, 19, 41, 16, 73,199,104, 60,124,230,191, 49,226, 61,247,144,208, 48, 18, 24,232, 15, 80,224,113, 92,188,247,253,123,119, 59, +110,217,176,108,178, 72, 42,253,196,168,211,253,224, 48,243, 36, 68, 17,164,148,156,252, 97,218,155, 26, 1,204, 24, 52,111,243, +254,218,132, 4,222,124,226, 90,194, 33,146,165,113,119, 63,176,240,240, 97,153,107,145, 3, 80, 27,214,250, 36,190,222,213,171, +178,143, 59,119, 62,208,159,144, 46, 78,178,245,159, 28,140,124,212,106,245, 36,161, 80,216,206,104, 52, 6,137,197,226, 56,142, +227,162, 50, 51, 51,151, 82, 74, 19,156, 37,228, 20,167,148,219,135, 74, 13,100,254, 79, 6, 57, 7, 0,149, 74,117,145, 97,152, + 0, 91, 18, 96,241,239, 88,220, 79,164,141,191,200, 7, 25, 25, 25,175,148,145,223, 96, 55, 55,183,239, 0, 52, 41,207, 97,114, +209, 86,211, 5,173, 86,251, 86,209,233,227,146,240, 84,174,174,174,179, 9, 33,253, 25,134, 41, 55,160, 48,207,243, 28,165,116, +107,102,102,230,103,148,210,220,210, 62,231,234,234,122, 56, 58, 58,186,137,151,151, 87,185, 90, 26,179,217,140,199,143, 31,123, + 54,109,218,244, 56,128,240, 23,137,233, 8, 23,249, 39,165,172,147,135, 37,114, 30,203, 63,246, 70,204,230,121, 12, 89, 59,255, + 45,255,164, 71,247,252,199, 45,248, 41, 52,220, 67,222, 46, 58,189, 32,217,222, 31, 20,203, 84,191,183,234,208,189,253,132,119, + 63, 80, 92,185,126, 27, 7,143,157, 65, 78,190, 30, 44,195, 64,163,146, 35, 52,180, 6, 89,178,106,187,199,186, 21, 75,190,148, + 41, 53,145,133,121, 89, 61, 29,201,144, 66, 46,248,100,106,159,166, 10,119, 55, 14,224, 57,124,216,173,129,226,227,221,151, 63, + 1, 48,221, 97,146,117,228,136, 60, 53, 37, 5,115,252,252, 32, 48,155, 33,101, 24, 72, 9,129,148, 97,160,144, 74,209,117,205, + 26,204,221,183, 79, 62,243,181,215,156,100,235, 63, 38, 42,149,106, 68,104,104,232,162,213,171, 87,187, 87,175, 94, 29, 10,133, + 2, 90,173,214,227,206,157, 59, 13,223,127,255,253, 97, 46, 46, 46, 51,178,179,179, 87, 58, 75,202, 41, 78, 41,149,116, 52, 4, + 80, 98,144,248,178,158,253, 93,194, 48, 76, 64, 66, 66,130,151, 92, 46, 7,199,113, 69,209, 0,120,235, 66,218, 54, 82, 78,145, +163, 90,132,135,135, 27,203, 25, 55,190, 77, 77, 77,237,100, 27, 10,173,172,136, 59, 9, 9, 9,157,106,215,174,253, 45,128,206, +165,144,151,217,239,190,251,238,164,186,117,235, 90,180, 64, 69, 81, 16,158,188,166,167,167, 99,226,196,137,214,223,224,121, 30, +135, 14, 29,122,119,196,136, 17, 0,240,126, 25,121, 15,242,242,242, 34, 69, 1,197, 75,149, 89,179,102, 97,214,172, 89, 88,182, +108, 25, 17, 10,133,154,114,202,179, 82, 48,237,229, 34,255,132, 6,171,184,135,248, 98, 31,219, 83, 44,222,225,158,103,136,150, +221,141,147,242,123,231, 45, 93, 61,106,206,240, 86,100,237,251,157, 66,198, 47, 59,124,166,182,159,172,205,205,196,194, 56, 59, + 52, 89, 35,155,183,121,173,221,196, 73, 83, 21, 63,253,122, 20,119,110, 93, 69,244,201,159,159,250, 76,227,206, 35,144,156,158, +139, 17, 19, 62, 84, 18, 86,208, 78, 36,149,143, 52,234, 10,214,218,169,205,242,174,237, 38,127,167,121,211, 58,194, 4,217, 29, +248,184,202,208,170, 81, 77, 97,224,129,107,239,212, 38,228,235,155,148,150, 27,171,176, 56,201, 90,253,230,155,104,109, 50,193, +139,101,193, 18, 2, 22, 0, 67, 8,116,122, 61, 46, 12, 25,130,166, 27, 55,226,179, 93,187,228,179,123,244,112,152,108,201,229, +242,117,133,133,133, 95, 84,192,113,219, 63, 57,120,134,170, 84,170, 79,114,114,114,134,188, 68,105,242, 5,144, 86, 66,124, 68, + 17, 0, 13,165,212,161,200,194, 82,169,116,204,160, 65,131,150, 44, 95,190, 92,158,146,146,130,196,196, 68,112, 28, 7,169, 84, +138,144,144, 16,114,248,240, 97,247,169, 83,167, 46, 86,171,213,146,156,156,156,175, 29, 72, 39, 35, 20, 10,135,187,185,185,245, +246,246,246,246, 74, 75, 75, 75,203,204,204,220,165,215,235,215, 86,116,101, 95,132, 57,184,106,213,170,189,253,252,252,188, 19, + 18, 18,210,227,227,227,127,215,235,245,235,138, 98,216, 61, 79,153,214, 71,145,183,122, 0, 73, 85,171, 86,189,241,240,225,195, +212, 74,196, 76,172, 90,181,234, 77, 71, 49, 9, 33, 10, 0, 91, 0,248,149,243,209, 68, 0, 3,168,131,218,108,167, 84, 30,201, + 42, 10,105,245, 20,161, 42,235,217,223, 45, 50,153, 12, 63,255,252, 51,132, 66, 33,132, 66, 33, 50, 51, 51, 17, 16, 16, 96,189, + 23,137, 68,214,255,171, 84,169, 82, 46, 30,199,113, 77, 89,150, 69, 94, 94, 30, 56,142,179, 94, 89, 89, 89,160,148, 66, 34,145, +128,227,158,132,115,178,121,222,180,140,114,236,239,231,231,135,159,126,250, 9, 6,131,225,153,231,106,181, 26,215,175,255, 21, +100,132,101, 89, 52,107,214,140, 33,132,244, 47,139,104, 17,242,196,233,230,216,177, 99,193,178,236, 83,241, 44,109, 47,142,227, + 48,107,214, 44,216,134, 38,251, 59, 49, 95,186,118, 93,134,135,120, 74,105, 18,128, 18,109,180,152,178, 64,195,125,148,111, 77, +126,243,213,130, 25,163, 34,233,199,195, 58,211,143,222,108, 71, 95,107, 83,239, 87, 86, 32, 32,231,110, 62, 70,128, 11,176,110, + 98,147,160, 64, 15,197,245,186,238,170,208, 18, 84,163,182, 1,165,253,228, 10,245,231,111,189,247,161,114,207,241,107,120, 28, +247,248, 25,146, 5, 0, 23, 15,174, 67, 82, 98, 2, 46, 71,199, 99,240,200,183,149,106,181,230,115, 66,136, 95, 73,152,197,197, + 69, 37,250,223,180, 1,173,164,121,166, 68,228,186, 2,108,176, 24, 66,121, 62,166,118,175, 47, 81,171, 68,139,202, 80,225, 90, + 49, 37, 98,241,193,133,135, 15, 91, 73, 86, 75,189, 30, 18,142,131,153,227,172, 36,203, 96, 54,163,208, 96,128,111, 94, 30,238, +143, 24, 1,106, 50, 97,198,206,157,114,137, 88,124,208,158,116,218,172, 0,186,169,213,234, 99,132,144, 80,123, 42,249, 69, 28, +153,117,208,141, 71,168, 74,165, 58, 70, 8,121,237,101, 72, 39, 33,132, 33,132,204, 27, 53,106,212,165, 26, 53,106, 28, 45, 34, + 86,150,103,130, 26, 53,106, 28, 30, 53,106,212, 21, 66,200, 44, 66, 8, 99, 39,166,191,159,159,223,252,229,203,151,203,239,222, +189,139,132,132, 4,152, 76, 38, 12, 26, 52, 8, 28,199,161,176,176, 16, 6,131, 1, 95,124,241,133,194,221,221,253, 19, 66, 72, +144, 61,121, 39,132,176, 46, 46, 46,235, 55,108,216, 48,246,225,195,135, 62,127,252,241, 7,115,237,218, 53,239, 47,191,252,114, +132,187,187,251,198,162,128,171, 14,149, 39, 33,132,241,245,245, 93,251,219,111,191,189,117,253,250,245,128, 29, 59,118, 8,207, +158, 61,235,187, 98,197,138,209,190,190,190, 27, 9, 33,108, 69,234,136, 16,210, 80, 46,151,119,156, 50,101, 10,127,250,244,233, +132,211,167, 79, 39, 44, 89,178, 4,173, 91,183,110, 57,119,238,220,136, 10, 98, 54, 82,169, 84, 29,166, 76,153,194,159, 56,113, + 34,241,220,185,115,241,139, 23, 47,102, 58,116,232,208,106,193,130, 5,245, 29,196,220,114,250,244,233,182,113,113,113,213,227, +227,227,171,197,199,199, 87,141,143,143,175,154,144,144, 16,148,148,148, 84, 37, 57, 57, 57, 48, 53, 53, 53, 48, 42, 42,170, 21, +128,205, 47, 91, 63,250,175, 99, 22,181,229,203,148, 82,104,181, 90,236,217,179, 7, 69,218,171,134,182, 36, 43, 39, 39, 7, 73, + 73, 73,150,103,130,127, 32,157,224, 56,206, 74,164, 14, 29, 58,132, 81,163, 70, 65,171,213, 90,223, 19, 8, 4,214,255, 45,223, + 41, 15,211,162,121,226, 56, 14,231,206,157,195,184,113,227,176,100,201, 18,108,222,188, 25,187,119,239,134, 86,171,181,146, 45, +179,217, 92, 46,102,122,122, 58,120,158,183, 55,143,200,206,206,182,187,222,109, 9,144, 64, 32,120,134, 20, 89, 46, 71,218,210, +243, 96,190,204, 82,154, 71,120,123,196,218,184,139, 84,117,237,108, 31,134, 85,245,249,100,209,164,254, 50,112, 70, 80, 83, 33, + 96, 44, 0,140,121,224, 13, 5, 32, 34, 25, 96, 42,132,167, 68,139, 45, 19,194,212, 31,253, 20,115,171,150,167, 58,242, 86, 90, +206,254, 18, 73,133, 64, 52,184,255,240,119,221,227, 83,115,144,144,146, 13,150,249,107,222,139,232, 52, 28, 2,150,193,249, 3, + 79, 20, 87, 12,203, 34, 59, 95,143,172, 60, 35,250, 13,159,228,246,195,146, 79, 7, 3,248,162,172,140,212, 35, 36,164,133,159, + 91,159,218,181,171, 48,183, 36,209,136,120,237, 36, 56, 30,160, 39,122,160, 97,166, 23, 27,126, 80,220,167, 30, 33,243,175, 81, +122,183, 44, 28,137, 70, 35,115,173, 95, 31,115,252,252,208,198,100,130,136, 82,188,154,146,130,171,147, 38, 65,191,125, 59, 24, + 0,162,215, 95, 71,251,165, 75,113,220,207, 15, 62,133,133,200,154, 60, 25,158,251,247, 67,164, 86,203, 28, 41,124,145, 72,100, + 92,189,122,181,223,232,209,163,143, 17, 66,218,189,204,154, 45, 66, 72,168,155,155,219,177,207, 63,255,220,123,230,204,153, 73, +149,132,233,173, 80, 40,182,230,231,231, 79,114,116, 69, 91, 68,156,230,173, 92,185,114,252,216,177, 99, 53,163, 71,143,166,247, +239,223,215, 0,176,104, 71, 60, 91,183,110, 93, 99,245,234,213, 62, 77,154, 52,121,119,220,184,113, 34, 66,200,140,242,180, 60, + 74,165,114,194,234,213,171, 61,210,211,211,145,151,151,103, 29,100,227,227,227, 33,147,201,172, 65,213,133, 66, 33, 62,255,252, +115,247, 9, 19, 38, 76, 2, 48,169,188,244, 74, 36,146,225,223,125,247, 93,205, 46, 93,186, 8, 98, 99, 99,193, 48, 12, 36, 18, + 9,222,124,243, 77, 97, 65, 65, 65,208,156, 57,115,198, 2,248,206,145, 50, 16, 10,133,131, 87,173, 90, 21,218,178,101, 75, 65, +116,116, 52, 90,180,104,129,243,231,207,227,245,215, 95, 23,230,230,230, 86,155, 58,117,234,168,210, 86, 88,101,105,157,228,114, +121,221, 63,254,248, 35, 46, 48, 48,208, 58,176, 84,171, 86,141,139,140,140,212, 70, 71, 71,135,157, 57,115, 38,163, 69,139, 22, +143, 29,192,244,151,203,229,225,123,247,238, 77,154, 51,103, 78,199,149, 43, 87,246, 2,128,166, 77,155,254, 62,119,238,220,163, + 90,173,182,206,137, 19, 39,180,173, 91,183,142,183, 19,210,207,215,215,151,155, 56,113,162,178,172, 15,173, 89,179, 38, 11, 64, + 21, 66, 72,245,162, 64,219, 78,249, 27,132, 82,106, 38,132, 68, 16, 66, 46,239,217,179, 7,205,154, 53,195,158, 61,123, 16, 25, + 25,121,217,150, 12, 92,191,126, 29,109,218,180, 1,158, 4,146,255, 71,108,181, 56,142,131, 64, 32, 64,124,124, 60,214,172, 89, +131, 5, 11, 22, 32, 36, 36, 4, 38,147,233, 25,178, 85, 68,136,236, 82,193,152,205,102, 92,184,112, 1,155, 54,110,196,140, 79, + 62,129, 74,165, 2, 0, 24,141, 70,104, 51, 51, 33,149, 74,173,100,172,156,178,220,122,239,222,189, 73, 1, 1, 1, 79,109, 25, + 90, 94,139,198, 44,240, 60, 15,179,217, 12,157, 78,135, 37, 75,150,152, 41,165, 91,203,233,147, 86, 82, 52,105,210, 36,232,245, +127,197, 33,175, 95,100,147, 92,181,106, 85, 52,104,208,192,122,207, 48, 12,181, 23,243,135, 87,234,162,208,230,211, 97,179, 22, + 3, 0, 2, 2, 2, 16, 22, 22, 6, 95, 95,223, 82, 49, 75,226, 34,255,180, 20,183,201,170,144,141, 86,105,145,178,111, 61, 76, +254, 98,244,212,197,139, 21, 82, 86,248, 94,239,122,168,162, 17, 1, 50, 55,136,218,124, 4,162,121,178,144,167,218, 7,192,193, +143,240,101, 31, 45, 51,246, 71,221,175, 53,220,220, 60,239,107,181,207, 24,225, 9, 69,210,246,193, 53, 67,201,227, 36, 45, 4, + 2, 1, 20, 46, 30,120,165,247,251, 96, 89, 6, 74,141, 7, 8, 87,248, 23, 35,102, 88, 8, 88, 1,180,185,133,168, 90,189, 38, + 35,145,202,218,151, 71,180,212, 46,194,239,166, 12,124, 69,154, 97,142,135,172,138, 20,156,101, 58,245, 19,131,113,207,197, 7, + 93, 67,100, 99,127,191,246, 29,128, 14,246, 20, 12,107, 54,195,139,101, 97,164, 20, 87, 39, 77, 66,196,170, 85,184,108, 33,134, +171, 86,225,242,216,177,112, 19, 10, 33, 97, 24, 80,147,233,153, 61,125, 59, 39, 32,244,238,221, 27,233,233,233,222,159,124,242, + 73,133,201,150, 76, 38,219, 68, 8,233, 38, 20, 10,141,132, 16, 48, 12, 99, 13, 2,110,249,223,104, 52,138, 88,150,221,155,158, +158,238,240,150, 31, 33, 36,212,213,213,245,216,233,211,167,189, 21, 10, 5,102,205,154, 85, 41, 36, 75,165, 82,157, 29, 53,106, + 84,149, 77,155, 54,237, 39,132,116,181,151,108, 21, 39, 89,171, 86,173,202, 90,179,102,205, 15,182, 91,132,148,210, 36, 66,200, +218, 38, 77,154,188, 53,118,236, 88, 13,128,241,227,198,141, 67,121,100, 75, 34,145,180, 11, 14, 14,126,106, 85, 43,145, 72, 0, + 0, 10,133, 2, 46, 46, 46, 16,137, 68,208,235,245,136,136,136, 32, 98,177,184,149, 61,105, 86,169, 84,221,250,244,233, 35, 56, +117,234, 20,146,147,147,225,226,226, 2,133, 66, 1,142,227, 48,102,204, 24,209,210,165, 75, 95,115,148,104, 5, 6, 6,246,234, +216,177,163,224,198,141, 27,120,248,240, 33,244,122, 61,238,220,185, 3,181, 90,141,161, 67,135,138, 22, 45, 90,212,195, 81,162, + 5,160,238,216,177, 99, 83,108, 73,150, 69, 20, 10, 5, 9, 13, 13,213,186,187,187, 55, 2,240,216, 17,204,183,223,126, 59,117, +225,194,133,109, 14, 31, 62,252,145,229,205,195,135, 15, 79, 5,128,175,191,254,250,132,167,167,103, 35, 0,246, 18, 45, 80, 74, +249, 55,222,120,227,145, 88, 44,134, 80, 40,132, 88, 44,126,234, 18,137, 68, 96, 24, 70,101,233,206,255, 85, 82, 67, 8,105, 2, +224, 43, 60, 57,145,245, 9,165,244,220, 75, 66,182,174, 16, 66, 34, 34, 35, 35,173,100,107,223,190,125,232,218,181, 43,178,178, +178,112,227,198, 13, 91,146,245, 79,217,104,129,231,121, 8,133, 66, 44, 94,188, 24, 70,163, 17, 63,254,248, 35,182,109,219,246, +212, 24,170, 86,171,177,108,217, 50,135,182,185, 56,142,195,250,245,235,241,209,212,169, 86,146, 85,180,184,134,143,183, 55,220, + 61, 60, 16, 19, 19, 83, 46,209,202,204,204,252,108,215,174, 93, 40,203, 24,126,215,174, 93,214,255,109,141,225,237,154,231, 88, + 22,122,189, 30,175,190,250, 87,168,216,183,223,126,219,250,191, 86,171, 5,203,178,150,178, 32,246, 98, 22, 82,160,183,244,175, +247,186,125,240,193, 83, 26,186,210, 48, 75,227, 34, 47,163,118,171,132, 83,135, 17,148,210,203, 69, 38, 18,145, 0,246, 20,109, + 39,150,109,163,117, 55, 53,127,185,128, 36, 53, 88, 56,177,243,240, 42, 94, 46,160,121, 41, 16,117,248, 12,127,166,201,176,120, +201, 94, 0,192,135,111, 54, 70,253, 78,243, 96, 88,215, 25,147, 90,176,226, 33,241,250, 41, 0,102, 62,219,241,248,240, 0,127, + 63,252,121,255, 58, 4, 44, 11,177,139, 7, 92,220,188,193,155, 13,200, 78,125,136, 99, 59,190, 5, 0,172, 92,191, 21, 12,195, + 64, 32, 96,161, 55,112, 8,169,226, 7,158,231,195,203, 74,103,109, 66, 94,233, 27,234,219, 44, 48, 72, 67,110,184, 62, 68,168, +151,251,211, 31,104, 40, 65, 72,162,146,180, 80,202,154,214, 38,228,149,155,148,158, 46, 87, 3,193, 48, 96, 8,129, 92, 36,130, +126,251,118, 92, 46, 34, 88, 0,112,121,236, 88, 48,191,254, 10,149, 68, 2,150, 16, 8,138, 84,208, 21,233,232, 0, 16, 22, 22, +134,149, 43, 87,122, 79,152, 48,161, 66,100, 75,167,211,205, 87,171,213, 29,215,174, 93,235,221,167, 79,159,103,158,223,191,127, + 31,109,218,180, 73, 73, 78, 78,158,255, 60, 36, 75,163,209, 32, 46, 46,238,185,247,213, 45, 36,235,208,161, 67, 65, 1, 1, 1, +136,136,136,240,252,240,195, 15, 29, 33, 91, 51,109, 73,214,184,113,227,174, 1,240, 34,132, 20, 39, 42,164,232, 89, 61, 27,178, +149, 13, 96, 81, 25, 43,209, 32,133, 66,129,212,212, 84, 12, 31, 62, 28,119,239,254,165, 0,245,243,243,179,174,244, 98, 98, 98, +224,233,233, 9, 66,136,151, 61,121,246,244,244,244, 54, 24, 12, 24, 57,114, 36,226,226,254, 50,103,244,247,247,183,148,169,135, +163,229,232,237,237,237, 93, 88, 88,136,214,173, 91, 67,167,211, 1, 0, 6, 12, 24, 0,161, 80,136,212,212, 84, 8,133, 66,143, + 10, 84,143, 71,100,100,100,169,174, 85,212,106,181,209,213,213,181,150,131,152,238, 61,122,244, 72, 88,181,106,213, 51, 7, 91, +206,159, 63,223,211,205,205,237,176,155,155, 91,168,131,152,188, 45,169, 18,137, 68, 79, 17, 45,161, 80, 8,134, 97,120,252,247, +229,127, 0, 44,167,224,190, 7,208,224, 37,210,108, 89,201,214,190,125,251, 80,167, 78, 29,100,102,102, 34, 58, 58,250, 31, 39, + 89, 54,196, 4, 2,129,192,186, 72,150, 74,165,136,136,136,176,146, 44, 66, 8, 10, 10, 10, 32, 16, 8, 44,227,181, 93,131, 95, + 86, 86, 22,124,125,124,160, 82,169, 80, 51, 36, 4,247,138,198, 17,203,255, 18,137, 4,132, 16,152,205,230,242,202, 48, 23, 79, +108,173,222,175,236,234,177,144,162, 50, 85,199,126,126,224,121,222, 50,230,211,202,192,244,240,240, 64, 94, 94,158,189,152, 47, +165,148,162,209,138, 0,112, 25, 64, 36,165,116, 85,145, 97,252, 83,238, 29,218, 2, 56, 6,155, 35,149,132, 16,166,150,183,114, +205,194, 9, 29,135,119,174,227,129,194,180,135,144,170, 60, 64, 52, 85,177,120,201, 94,220,120,144, 1, 0, 88,188,249, 34,126, +154,211, 13,144,185, 33,204, 37, 29, 62, 42, 65,159,146,136, 22, 1, 37, 60,165, 16,176, 76,209,222, 45, 11,150,101,160, 77, 75, +194,210,207,198, 23,145,172,109,216,115, 34, 26, 1,193,117,254,218,199, 37, 4,160,101, 55,110, 79, 23,209,170, 9,125,155,203, + 82, 72, 18, 52,126,114, 72,165,197,248,163,171, 8,164, 42,131,137,237, 2,228, 23,118,233, 86, 1, 40,119,162,144, 50,204, 19, +227,119, 66, 74, 52,100, 99,138,158,177,132, 60,241,254,202, 59, 62,166, 91, 8,139, 82,169,132,183,183, 55, 22, 44, 88,224, 61, +109,218,180, 31,225, 96, 0,106, 74,233, 29, 66, 72,187, 49, 99,198, 28,203,200,200,240, 14, 11, 11,131, 82,169,132, 82,169, 68, + 74, 74, 10,250,245,235,151,146,156,156, 92, 81,109,217,198, 81,163, 70,121,139, 68, 34,220,191,127, 31,110,110,110, 86,130, 88, + 81,146,165, 86,171,207, 30, 62,124, 56,168, 70,141, 26,184,125,251, 54,106,213,170,133, 45, 91,182,120, 14, 26, 52,200, 46,178, + 37,147,201,122, 23, 17, 39,140, 29, 59, 86, 51,118,236,216,182, 0,218,150,247,219, 99,199,142,213,188,255,254,251, 61,202, 34, + 90, 66,161, 48, 78,171,213,250,200,100, 50,236,216,177, 3, 74,165, 18,114,185, 28,126,126,126,208,106,181,144,203,229,160,148, +194,100, 50, 89, 6,139, 12,123,242,157,150,150,150,194,113, 92,224,254,253,251,145,150,246,151,111,189,160,160, 32,100,103,103, +131,227,184,116, 71,203, 50, 49, 49, 49,133, 16, 18,248,231,159,127, 34, 54, 54, 22, 93,187,118,197,175,191,254,138,198,141, 27, + 3, 0, 12, 6, 67, 69,156,248,113, 44,203,210, 50,234,143, 0,112,173, 76,204,162,201,203, 33, 76,158,231,121, 11,201,178,125, +181, 37, 95,229,252,230,127, 69, 92,108,215, 9, 47,107, 34,187,118,237, 10,173, 86, 11,165, 82,249, 82,217,231, 88, 52, 90,179, +103,207,198,248,241,227,225,237,237,141,143, 62,250, 8, 2,129,192,122,217,238, 12, 56, 34, 94,222,222,101, 62,183, 24,196,151, + 51, 94,170, 92, 92, 92,102, 51, 12,211,159,181,163,224, 56,142,227,120,158,223,154,157,157, 93,166,123, 7,139,225,186, 61,117, + 97, 91, 6,229,164,245,185, 49, 75,226, 34, 47,131, 20, 63,109, 88,146, 70, 11,127,157, 58,124, 38, 20,144, 37,151,199,138, 84, +118,199,108, 73,214,231,227,219, 15,239, 92,199, 21,191, 31, 57, 7,145, 49, 11, 48,228,150, 81,195, 38, 16,145, 2,222, 46,194, +128, 18, 43,129, 97,111,199, 39, 36,194,221, 85, 89, 68,178,138, 46,134, 65,253, 58, 79, 22,179,123, 78, 68, 35,160,122, 29, 8, + 88, 22, 2,150,133, 82, 38, 65, 74,114, 18, 4, 2,230,118,105, 63, 91, 79, 64,250,246, 13, 13,172,234,234, 46, 68,186,167, 1, +190,222,242,146, 63,216, 72,133, 0, 95, 49,186,184, 75,131,234, 9, 72,223,114,136,139,149,104, 25,205,102,136, 94,127,221,186, + 93,120,121,236, 88, 68,172, 90, 5,174, 87, 47,228, 27,141, 79,169,138, 29, 21, 75,131,180, 16,162,153, 51,103,166,100,100,100, + 12,174,224,234,241, 78,102,102,102,187, 79, 62,249, 36, 37, 61, 61, 29,114,185, 28, 73, 73, 73,207, 69,178, 0,160,176,176,112, +232,170, 85,171, 82,142, 29, 59, 6,165, 82, 9,149, 74, 85, 97,162,101,209,100,125,246,217,103, 85, 2, 3, 3, 17, 19, 19, 3, + 23, 23, 23,184,187,187,163,126,253,250, 56,117,234,148,103, 96, 96,224,254, 34,131,217,178,210,244,219,170, 85,171,178, 0, 96, +213,170, 85, 89,132,144, 40, 66,200, 10, 66,200,247,197,174, 21,132,144, 40,219,207, 22, 22, 22,238, 44, 11,219, 96, 48, 68, 69, + 71, 71, 83,185, 92, 14,150,101, 97, 52, 26, 33,149, 74,173,245,149,147,147,131,194,194, 39,219,220,151, 46, 93,130,201,100, 58, +105, 79,222,115,115,115,247,173, 91,183,206, 20, 24, 24,136,122,245,234,161, 81,163, 70,104,209,162, 5,130,130,130, 48,123,246, +108, 67,126,126,254,190, 10, 16,173, 61, 91,182,108, 49, 5, 6, 6,162, 81,163, 70,144, 72, 36,168, 95,191, 62,252,252,252,176, + 96,193, 2, 67,118,118,246,190, 10, 84,211,227,235,215,175,179,101,144, 92, 53,128, 20, 7, 49,227, 46, 92,184,192, 54,111,222, +252,247,226, 15,154, 54,109,250,187, 82,169,116, 1,224,168,221, 31,181, 37, 87, 18,137,196,122, 89,222, 23, 8, 4,255, 31, 52, + 90,147, 0, 92, 3, 16, 3,224,163,151, 41, 97,182,134,239, 25, 25, 25,136,142,142,198,165, 75,151,208,188,121,115,156, 60,121, + 18, 40, 50,144,255, 7,211, 7, 74, 41,132, 66, 33,194,194,194,240,254,251,239, 99,239,222,189,184,115,231, 14, 76, 38,147,149, + 8, 89,108, 50, 29,209,104,137, 68, 34,120,123,123,195,100, 50, 89,181, 89, 0,112,239,238, 93, 8, 4, 2,240, 60, 15,131,193, + 80,174, 70,203,197,197,101,246,234,213,171,223, 77, 79, 79,247, 77, 75, 75,243,178,189, 82, 82, 82,188,146,146,146,188, 18, 18, + 18,188,226,226,226,188, 30, 61,122,228,245,240,225, 67,223, 47,190,248,226, 93, 23, 23,151,217,246,206, 65,245,235,215,199,219, +111,191,109,189,150, 47, 95,110,189,142, 29, 59,230,176,241, 58,203,178, 8,155,181, 24,221,210,168,245,218,235, 73,172,215,141, + 15,199,149,133,249, 20, 23,121,105,218,114,209,105, 67,219,192,210, 37,204,193, 73,148,210, 85,150,237, 66, 91,231,165,197,141, +225, 1, 0,225, 62,242,121,159,143,105, 51,252,213, 90, 46,248,237,200, 69,204,217,249,224,118,200,112,207,176, 26,174,105,224, +211,162,241,225,155,141,177,120,243, 69, 0, 79,182, 14,249,212, 27,160,153, 49,160,170, 64, 60,212,166,151,184,237, 96, 54,232, +142, 62,184,127,183,125, 88,221, 38, 76,114,122,222, 83,199, 63, 35,218,245, 3, 33, 4,254,213,235,128, 21, 8,192,178, 12, 4, + 44, 11,141, 90,138,232, 63,255,228,245,133,133, 71, 75,194,108, 71,136,192, 71, 41, 94,254,102,151,250,210, 68,113, 42, 60,125, + 21, 16, 9,159,144, 0,250,160, 95,177, 25, 66, 0,212, 85, 97, 68,130,187,236,104,138,110,121, 59, 66,126, 63, 86,138, 1, 38, +207,243, 80, 74, 36,208,233,245, 40, 52,155,209,110,233, 82,235,118, 33, 67, 8,174, 0,168,183,116, 41, 78,111,223, 14,181, 88, + 12, 72, 36,118,159, 10, 41, 73,163,149,146,146,130, 1, 3, 6, 60, 23, 33,178,213,108, 77,152, 48,225,216,130, 5, 11,188,103, +206,156, 89,105,152, 31,125,244,209,177,205,155, 55,123, 87,171, 86,173,194,141, 85,169, 84, 78,229,121, 94,179,104,209,162,228, + 47,191,252, 18,197,237,201,138,136,142, 68,163,209, 44, 6,208,190, 12,168, 57,227,198,141, 19, 1, 24, 95,164,217,170, 55,110, +220,184,211,148,210, 25,197,202,119,214,202,149, 43, 7,216,108, 49,174, 0,176,180,172, 52,230,228,228,124,255,254,251,239,143, + 60,126,252,184,135, 84, 42, 5, 33, 4, 34,145, 8, 53,107,214,180,158,162, 17, 10,133,160,148,226,131, 15, 62, 72, 79, 77, 77, +181,203,189,131, 94,175, 95, 63,103,206,156,246,133,133,133, 65, 35, 70,140, 16,185,186,186, 34, 37, 37, 5, 95,125,245,149, 97, +253,250,245,113,249,249,249,142,218, 82,193,100, 50,173,255,244,211, 79,219,229,229,229, 85, 31, 61,122,180, 40, 59, 59, 27,133, +133,133,152, 50,101,138, 97,237,218,181,241,133,133,133, 14, 59,252,109,209,162,197,253, 71,143, 30,181, 42, 40, 40,200,148,203, +229,197,181,125, 68,161, 80, 52, 1,176,209, 17,204,136,136,136,152,199,143, 31, 55,159, 55,111, 94,148,201,100, 18,158, 63,127, +190,151,133,100,125,243,205, 55,199,164, 82,105, 71, 56,110,180,207, 75, 36,146,167, 52, 88,197,255, 23, 8, 4,255,121,141, 22, +165,244, 24,158,184,204,120,169,164, 56,201,186,113,227, 6,218,183,127,210,165, 79,158, 60,137,150, 45, 91,226,228,201,147,104, +213,170,213, 63,234,222,193, 66,180, 4, 2, 1, 6, 13, 26,132, 78,157, 58,161, 74,149, 42, 79,157, 54,180,252,239, 8,217, 48, +155,205,168, 91,183, 46,244, 6, 3, 68, 34,145,117,107, 82, 32, 16,192,211,203, 11,247,239,223,183, 75,163,197, 48, 76,255,222, +189,123, 51, 55,111,222,196,192,129, 3,177,105,211,166, 82, 63, 59,100,200, 16,252,252,243,207,232,221,187, 55, 51,125,250,244, + 50,221, 59, 88,140,208,237,201,147,101,158, 46, 79,163, 87, 89,152,182, 92,228,101, 19, 27,215, 14, 37,181,249,177, 37,180,175, + 85, 79, 17, 45, 27, 39, 97,168,238, 41, 31,209,169,166, 0,191, 29,189,136, 57,191, 61, 94,207, 81,186, 99,199,229,204,221, 31, +181, 4,140, 91,223, 68,253,126, 27,159,108, 23, 2,224, 83,111,192,184,117, 8,136,220, 3, 39, 18,132,200, 46, 52,238, 41,185, +225, 25, 55,253,250,227,183,239, 55,255,174,149,167,175,151, 11,180,217,133, 86,178,117,249,216, 54, 0, 64,223,113,243, 33, 96, +159,108, 41,170,149, 82,200, 68, 44,182,111,248, 58,221,104,212,149,216,186,114,133,204,248,233,175,212,116, 17, 43, 76,200,241, +161,168,227,249,215,161, 63, 82,125,219,179,132,171,161, 43, 60,110,100,226,205, 26, 74,245,215, 55,179,198, 3, 88,254,204,132, +152,149, 85,152,245,231,159,178,174,171, 87,227,252,208,161,240,231, 56, 68,249,249,193, 77, 40,132,139, 68, 2,134, 16, 20,238, +222,141,211, 59,118,192, 91, 34, 1, 84, 42,152,231,206,133, 62, 58, 26,166,220,220, 66, 71,137,214,189,123,247,158, 91,235, 84, + 18, 49,154, 54,109,218,143, 25, 25, 25,131, 43, 19,115,232,208,161,199,142, 28, 57,226, 93, 81,156,220,220,220,201, 0, 38, 87, + 66,122,120, 66,200,140, 34,199,120,227,199,142, 29,171,185,112,225,194, 72, 66,200,119,150,213, 4, 33,196,107,212,168, 81, 99, +138,145,172,114, 79, 29, 82, 74, 31, 43,149,202,185,147, 39, 79,158,255,229,151, 95, 42, 45,134,239, 87,175, 94,133,217,108,134, + 80, 40, 4,199,113, 24, 53,106, 84, 94, 70, 70,198,226,210, 60, 58,151,128,107, 38,132, 12,153, 63,127,254,168,175,191,254,186, + 59,203,178,158, 28,199,165, 21, 22, 22,238, 47, 44, 44, 92, 85,145, 83, 87, 69,229, 48,108,230,204,153,195,150, 44, 89,210,155, + 97, 24, 47,179,217,156,158,155,155,187,171,176,176,176, 66,190,185, 78,159, 62,157,246,221,119,223, 61, 72, 75, 75, 11, 15, 8, + 8,200, 86, 42,149, 6,131,193,192,202,100, 50,181, 66,161,136, 0,112, 6,192, 45, 71, 48, 47, 93,186,148,188, 98,197,138, 88, +189, 94, 31,182, 98,197,138, 19,106,181,250, 8, 33,132,136, 68, 34, 87,153, 76,214, 30, 64, 20,128,123,142, 96, 50, 12,195,219, +106,175,138,219,103,137,197,226,255, 47, 54, 90, 47,157,216,186,119, 72, 79, 79,199,205,155, 55, 45, 36, 43, 2, 0, 90,181,106, +117,217, 66,182, 46, 93,186,132, 70,141, 26, 93, 38,132, 8,255,238,147,135,182, 26, 45, 11,161,170, 82,165,138,245,222,246,178, +177,209,178, 75, 56,142,131, 72, 36,130, 64, 32,128,175,159,159,245,183, 40,165,184,127,255, 62,180, 90,173, 93, 68,139,101, 89, +150, 16,130,129, 3, 7,218,245,187,111,188,241, 6,162,162,162,192,218,201, 10, 89,150, 69,213,170, 85,237,218,121,129,157,246, + 84, 44,203, 34, 32, 32,160,194,152,182, 92,228,101, 34, 88, 37,253, 95, 18,169, 42, 73, 74, 52,134,143, 73, 45,156, 55,228,171, + 83,211,111, 37,235,118, 68,167, 20,188, 15,128,110,189, 33, 63, 88,223,147,237,220, 57, 52, 30,250, 85,173, 64,212, 79,156,183, +209,188, 36, 16,133, 55,226,121,127,204,250,253,118,178, 25,100, 81, 41,137, 72, 20, 73,229, 51, 54,172,254,230,203, 81, 19, 62, + 80,222,136, 73, 65,118,158, 30, 44,203,216, 14,158, 16, 8, 88,168, 21, 82, 4,250,184, 96,243, 15, 95,229,230,230,100,205, 44, + 45,238, 97, 21,149,104, 92,199, 38, 53, 36, 34,223,124,132,213, 27, 0, 86,250,151,147, 89,154, 92,202,238, 96,203,131,120,237, +113,190,244,215,199,249,227, 74, 36, 90, 6, 67,231, 79,186,116, 57, 48,103,239, 94,121,211,245,235, 17, 51,106, 20,252, 10, 11, + 33, 41,218, 74,100, 8,129, 82, 36,130, 82, 36,122, 66,178,150, 44, 65,161,217,140,165, 67,135, 22,232, 13,134, 46, 14,106, 36, + 68,109,219,182,173, 52,146,101, 75,140,224,160,157,151,189,100,171, 83,167, 78,199, 40,165,146,151, 96, 37,111, 33, 91,198, 11, + 23, 46,140, 57,113,226, 68, 12,158, 14, 44,154,117,226,196,137,152,209,163, 71,147, 53,107,214,172, 5,240,169,189, 14, 60,243, +242,242,190,209,104, 52,104,211,166,205,167, 11, 23, 46,116,111,220,184, 49,188,188,188,144,155,155,139, 75,151, 46, 97,210,164, + 73,218,156,156,156,133,153,153,153, 95, 58,152,102,174, 72,115,179,170, 50,203, 1,192,186,162,171, 82,228,173,183,222,186, 26, + 19, 19,147,225,233,233,217, 76, 36, 18,213,195, 19, 59,160,100, 0,107, 29, 37, 68, 22, 25, 63,126,252,159, 49, 49, 49,233,254, +254,254,205,139, 48, 53, 0, 18, 0,172,174, 0,102,226,197,139, 23, 3,154, 52,105,194, 8,133, 66,202,178, 44,132, 66, 33, 21, + 8, 4,180,200,174,134, 2,192,174, 93,187, 36, 0,180,112,202,223,221, 55,173,238, 29,146,146,146,172, 36,203,198, 97,105, 68, +171, 86,173, 46, 23,145, 44,203, 51,243, 63,148, 86,204,153, 51, 7, 43, 87,174, 68,121, 30,205,139, 78,247,145,242,240, 44, 26, + 45,142,227, 96, 52, 26,113,227,198, 13,171,207, 46,203,118,161,197,181,131,217,108, 46,243,180, 58,199,113,156,193, 96,192, 47, +191,252, 98, 23,217,250,233,167,159,160,211,233,192,149,195,224,108, 93, 49, 52,104,208, 0, 90,173,214,122,216, 39, 34,226, 47, + 87,121, 70,163,209, 33,226,106,193, 12, 11, 11, 67,122,122, 58, 60, 60,158,156,199, 9, 28,250,151,178,199,156,255,223,244, 31, + 92,150, 70,139,216,235,146,160,129, 70,227,162, 23,155,118,246,172, 35,105,215, 63,194, 5,213,125, 84, 16,138,164, 72,204, 49, +227,240,173, 28,172, 62,150, 28, 87,104,226,186,223, 73,205,191, 94, 22,142, 84,225,178,191,241, 43,157, 90, 14, 29, 51, 73,145, +167,231, 16, 27,251, 8,105,169, 73, 96, 8, 3, 95,255, 0, 4, 5, 85,133, 76,204, 96,211,170, 47,243, 47,159, 62,114, 42, 55, + 71,219,181, 52,172,238, 26,241,233, 37,175,183,108, 30, 28,172, 34, 48,155, 0,206, 4,152, 77, 0, 95,244,106,121,143,127,186, +205,221,188,153, 69,167, 95,209,158,221,157,101, 40, 49,102, 85,127, 66, 90,106,220,220, 14,204,218,181, 75,206, 27,141,200,152, + 60, 25,114,179, 25,210,162, 85, 9, 0, 64, 34,129,121,238,220, 39, 36,107,200,144,130,236,172, 44,135, 67,240,120,122,122,174, + 75, 79, 79,255,215,121,134,119,119,119,255,164, 34,110, 34, 94, 96,154,188, 0,100, 81, 74,141, 37,172,172, 61, 45, 90,174, 10, +224, 86,245,244,244,156,206, 48, 76, 11, 74,169, 59,195, 48,153, 60,207,159, 73, 77, 77,253,130, 82,122,223, 57,165,254, 99,245, +109,241, 12, 95,222, 62,118, 42,128,247, 0,228, 82, 74, 99,157, 37,247,183,215, 83, 67, 60, 57,133, 85,106, 8, 30,252,131, 39, + 15,221,221,221,207, 29, 56,112,160,113,245,234,213, 25, 91, 51, 6,139,175, 60,203,246,150, 64,240, 68, 31,113,252,248,113,243, +192,129, 3,207, 36, 39, 39,183, 41, 13, 83,173, 86, 31,188,118,237,218,171,217,217,217,207, 16, 42, 91, 79,241,150,251,252,252, +124, 76,152, 48,225, 80, 78, 78, 78,137, 33,120, 52, 26,205,146, 47,191,252,242,221,190,125,251, 50, 22,119, 20,182,151, 37, 92, +144,229, 50, 26,141,216,184,113, 35,255,245,215, 95, 47,203,202,202, 42,117,235,208,207,207, 47, 46, 49, 49, 49,192,226,106,193, + 30,167,162, 85,171, 86, 77,138,141,141,245,251, 59, 49,255,173,132,171,184,118,139, 56,226,251,137, 16, 66,194,188, 20, 3, 40, +208,159, 1, 95,151, 33, 68,108,166,184, 3,138,131,114, 65,193,119,151, 18,169, 93, 91,103, 34,185,124,162, 74,233,250, 89,223, +193,111,187, 87, 13, 14, 33,222,190,254, 32, 96,144,146,156,128, 71, 15,238,210,157, 63,126,155,145,159,163,157, 93, 80,144,247, +109, 89, 56,181, 9, 9,174,166, 22,109, 21,115, 8,133, 37, 31,197,226, 83, 61,195, 48, 1, 24,133,204,237,216, 92,211,128,155, +101,108,251, 88,200,214,140,157, 59,229,226,208,208,103, 28,197,241, 60, 15,125,116, 52,150, 14, 29, 90, 33,146,229, 20,167, 56, +229,185, 7,180,234, 40,223, 71,150, 9, 64,252, 63, 25,188,248,255,121, 29,189,180, 65,165, 9, 33, 10, 55, 55,183, 35, 44,203, + 6, 89, 52, 50,182, 54, 67, 37, 4,148,142, 77, 73, 73,233, 72, 41, 45, 40, 3, 51, 88,165, 82,125,203,113, 92, 83,123,130, 74, +179, 44,123, 62, 55, 55,119, 98, 89, 65,165, 95,196,169, 67, 15, 15,143,251,143, 30, 61, 10,182,156,162,182,157, 43,139,151, 3, + 0,220,187,119, 15,109,219,182,125,148,148,148, 84,245,239,196,124, 89,165, 20, 63, 90,207,175,209,122, 1,141,220, 79, 36, 81, + 14, 19,203,164, 29,120,147, 57, 12, 4, 16, 8,133,183, 13,186,194,163,250,194,188, 13,165,109, 23,254,157,210,159,144,150, 18, +177,248,160, 72,173,150,149, 84, 78,166,220,220, 66,189,193,208,217, 73,178,156,226, 20,167, 56,197, 41,255, 34, 2, 28,234,230, +230,118, 64, 40, 20, 74,108,201,100,241,255, 45, 98, 54,155,117,105,105,105, 93,203,218,125,121, 17,152,255,153,242,118,148,104, +237,217,179,135,218,235,189,149, 16,210,201,158,152, 85, 54,134,111,229,250,206,248,167, 49, 95, 96,222,203,245,138,235, 0,102, + 91, 60, 57, 30, 59, 59, 50, 50,114,214,191, 32,157,149, 89, 71,149,138,105,169,115,123,113, 29,193,180,183, 77, 57,152, 78,187, +218,253,203,128,105, 79, 95,170, 96, 58,203,108,163, 21,172,247, 50,251,210, 75,148,206,202,172,163, 74,193, 44,222,126,236,193, +117, 20,211,158,190, 84,129,116,150,219,238, 95, 22,204,231, 29, 67,202, 72,103,169,109,212,222,182, 84, 74,221,151, 59, 55,189, +172,154, 44, 0,176,248,211, 42,174,209, 42,205, 32, 94,224, 40,201,122, 17,137,183,157,116, 96,167,159,146,127, 2,179, 34,132, +203,145,180, 86,162, 28,171,108,204, 98,229, 89, 89, 50,171,104, 64,143,130, 29, 14, 71, 29,201,123,101,212,123,177,188, 86, 10, +174, 45,102,101,149,101, 73,131, 98,101,166,243, 69, 96, 86, 86, 95, 42,142, 89, 25,237,190,164,122,127,129,117, 84, 89,233,172, +148,190,244, 34,218,124, 9,237,231,185,113,139, 99, 86, 70, 95, 42,142, 89, 25,237,254,239,192,172,140,190, 84, 18,102,101,180, +251,210,234,254,223,170,153,178,108, 23, 22, 17, 46, 82, 2,249,124,106,251,208, 66,188,152,138, 20,218,139,144, 23, 17, 72,178, +178, 9,209,139, 34,155,123,246,236,161, 69, 76,255,165,199,172,228, 58,154, 85,132, 89,153, 43,155,118,149, 85, 71, 47,162,189, +219, 98, 86, 22,126,113,156,202,168,167,146, 48,159, 55,189,165,164,179,210,243,254,188,237,254,239,194,172,228, 58,170,148,190, + 84, 12,179, 93, 37, 47, 6,218,217,220,207,170, 76,204,202,234, 75, 37,164,243,185,235,169, 36,204,231, 77,111, 41,233,172,244, +188, 87,198, 28,242,162,112,255, 41,141,214,173, 8, 66, 41, 83,114,155, 40,114, 88,106,189, 42,164,209,122,145, 36,235, 69, 77, +106,149,137,253, 34,180, 58, 47, 74,243, 86, 89, 90,157, 18,112,163, 42, 17,238, 88,101,167,179, 40,125,228,101,118,122,231,236, + 75,206,190,244,255,169, 47,149,212,110, 34, 35, 35,103,237,217,179,231,179,151,169,157, 23,199,172, 44, 66, 84, 66,222,159,171, + 47, 21,255,110,101,244,165,114, 48,201,139,200,127,101,247,167,191, 83,163, 85, 26,201, 42,237,153,224,101,201,128,165,145, 84, +242,202, 4,149,172,129,121, 97,249,174,228,116,182,123, 17, 26,194, 23, 32,149,158,206,162,149,242,103, 47, 32,239,255,150, 50, +117,246, 37,103, 95,122,233,250, 82,177, 54,217,174, 18, 53, 69,149,170,121, 46,142, 89, 25,191, 97,139, 81, 89,109,244, 69,231, +189, 50,251,210,139,168,251,127,155,252,223, 0, 44,215, 33,254,211,200, 76,208, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, 0}; diff --git a/source/blender/editors/gpencil/gpencil_buttons.c b/source/blender/editors/gpencil/gpencil_buttons.c index a63573b5381..59ad4124a95 100644 --- a/source/blender/editors/gpencil/gpencil_buttons.c +++ b/source/blender/editors/gpencil/gpencil_buttons.c @@ -119,13 +119,13 @@ static void gp_drawui_layer (uiLayout *layout, bGPdata *gpd, bGPDlayer *gpl) box= uiLayoutBox(layout); row= uiLayoutRow(box, 0); + uiLayoutSetAlignment(row, UI_LAYOUT_ALIGN_EXPAND); block= uiLayoutGetBlock(row); // err... uiBlockSetEmboss(block, UI_EMBOSSN); /* left-align ............................... */ - subrow= uiLayoutRow(row, 1); - uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_LEFT); + subrow= uiLayoutRow(row, 0); /* active */ icon= (gpl->flag & GP_LAYER_ACTIVE) ? ICON_RADIOBUT_ON : ICON_RADIOBUT_OFF; @@ -168,6 +168,11 @@ static void gp_drawui_layer (uiLayout *layout, bGPdata *gpd, bGPDlayer *gpl) /* visibility button */ uiItemR(subrow, "", ICON_RESTRICT_VIEW_OFF, &ptr, "hide", 0); + /* frame locking */ + // TODO: this needs its own icons... + icon= (gpl->flag & GP_LAYER_FRAMELOCK) ? ICON_RENDER_STILL : ICON_RENDER_ANIMATION; + uiItemR(subrow, "", icon, &ptr, "frame_lock", 0); + uiBlockSetEmboss(block, UI_EMBOSS); /* name */ @@ -189,7 +194,6 @@ static void gp_drawui_layer (uiLayout *layout, bGPdata *gpd, bGPDlayer *gpl) box= uiLayoutBox(layout); split= uiLayoutSplit(box, 0.5f, 0); - /* draw settings ---------------------------------- */ /* left column ..................... */ col= uiLayoutColumn(split, 0); @@ -259,14 +263,13 @@ static void draw_gpencil_panel (bContext *C, uiLayout *layout, bGPdata *gpd, Poi uiItemL(col, "Drawing Settings:", 0); /* 'stick to view' option */ - //uiItemR(col, NULL, 0, &gpd_ptr, "draw_mode", 0); row= uiLayoutRow(col, 1); uiItemEnumR_string(row, NULL, 0, &gpd_ptr, "draw_mode", "VIEW"); uiItemEnumR_string(row, NULL, 0, &gpd_ptr, "draw_mode", "CURSOR"); row= uiLayoutRow(col, 1); uiItemEnumR_string(row, NULL, 0, &gpd_ptr, "draw_mode", "SURFACE"); uiItemEnumR_string(row, NULL, 0, &gpd_ptr, "draw_mode", "STROKE"); - + row= uiLayoutRow(col, 0); uiLayoutSetActive(row, (gpd->flag & (GP_DATA_DEPTH_STROKE|GP_DATA_DEPTH_VIEW)) ? 1:0); uiItemR(row, NULL, 0, &gpd_ptr, "use_stroke_endpoints", 0); diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c index e5a0cd0f8cb..8926f63ceaa 100644 --- a/source/blender/editors/gpencil/gpencil_edit.c +++ b/source/blender/editors/gpencil/gpencil_edit.c @@ -594,7 +594,7 @@ void GPENCIL_OT_convert (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "type", prop_gpencil_convertmodes, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_gpencil_convertmodes, 0, "Type", ""); } /* ************************************************ */ diff --git a/source/blender/editors/include/ED_anim_api.h b/source/blender/editors/include/ED_anim_api.h index c34885fbe6b..47eeb476c4d 100644 --- a/source/blender/editors/include/ED_anim_api.h +++ b/source/blender/editors/include/ED_anim_api.h @@ -73,6 +73,7 @@ typedef struct bAnimContext { struct Scene *scene; /* active scene */ struct Object *obact; /* active object */ ListBase *markers; /* active set of markers */ + ListBase *reports; /* pointer to current reports list */ // XXX not yet used } bAnimContext; /* Main Data container types */ @@ -230,7 +231,9 @@ typedef enum eAnimFilter_Flags { /* Actions (also used for Dopesheet) */ /* Action Channel Group */ #define EDITABLE_AGRP(agrp) ((agrp->flag & AGRP_PROTECTED)==0) -#define EXPANDED_AGRP(agrp) (agrp->flag & AGRP_EXPANDED) +#define EXPANDED_AGRP(agrp) \ + ( ( ((ac)->spacetype == SPACE_IPO) && (agrp->flag & AGRP_EXPANDED_G) ) || \ + ( ((ac)->spacetype != SPACE_IPO) && (agrp->flag & AGRP_EXPANDED) ) ) #define SEL_AGRP(agrp) ((agrp->flag & AGRP_SELECTED) || (agrp->flag & AGRP_ACTIVE)) /* F-Curve Channels */ #define EDITABLE_FCU(fcu) ((fcu->flag & FCURVE_PROTECTED)==0) @@ -327,6 +330,8 @@ typedef enum eAnimChannel_Settings { /* Drawing, mouse handling, and flag setting behaviour... */ typedef struct bAnimChannelType { /* drawing */ + /* get RGB color that is used to draw the majority of the backdrop */ + void (*get_backdrop_color)(bAnimContext *ac, bAnimListElem *ale, float *color); /* draw backdrop strip for channel */ void (*draw_backdrop)(bAnimContext *ac, bAnimListElem *ale, float yminc, float ymaxc); /* get depth of indention (relative to the depth channel is nested at) */ @@ -334,7 +339,6 @@ typedef struct bAnimChannelType { /* get offset in pixels for the start of the channel (in addition to the indent depth) */ short (*get_offset)(bAnimContext *ac, bAnimListElem *ale); - /* get name (for channel lists) */ void (*name)(bAnimListElem *ale, char *name); /* get icon (for channel lists) */ @@ -344,7 +348,7 @@ typedef struct bAnimChannelType { /* check if the given setting is valid in the current context */ short (*has_setting)(bAnimContext *ac, bAnimListElem *ale, int setting); /* get the flag used for this setting */ - int (*setting_flag)(int setting, short *neg); + int (*setting_flag)(bAnimContext *ac, int setting, short *neg); /* get the pointer to int/short where data is stored, * with type being sizeof(ptr_data) which should be fine for runtime use... * - assume that setting has been checked to be valid for current context @@ -385,13 +389,14 @@ void ANIM_channel_setting_set(bAnimContext *ac, bAnimListElem *ale, int setting, * 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 + * - setting: type of setting to set + * - on: 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); +void ANIM_flush_setting_anim_channels(bAnimContext *ac, ListBase *anim_data, bAnimListElem *ale_setting, int setting, short on); /* Deselect all animation channels */ -void ANIM_deselect_anim_channels(void *data, short datatype, short test, short sel); +void ANIM_deselect_anim_channels(bAnimContext *ac, 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); @@ -404,6 +409,9 @@ void ANIM_fcurve_delete_from_animdata(bAnimContext *ac, struct AnimData *adt, st /* DRAWING API */ /* anim_draw.c */ +/* Get string representing the given frame number as an appropriately represented frame or timecode */ +void ANIM_timecode_string_from_frame(char *str, struct Scene *scene, int power, short timecodes, float cfra); + /* ---------- Current Frame Drawing ---------------- */ /* flags for Current Frame Drawing */ @@ -444,7 +452,7 @@ int getname_anim_fcurve(char *name, struct ID *id, struct FCurve *fcu); /* Automatically determine a color for the nth F-Curve */ void getcolor_fcurve_rainbow(int cur, int tot, float *out); -/* ------------- NLA-Mapping ----------------------- */ +/* ----------------- NLA-Mapping ----------------------- */ /* anim_draw.c */ /* Obtain the AnimData block providing NLA-scaling for the given channel if applicable */ @@ -459,6 +467,27 @@ void ANIM_nla_mapping_apply_fcurve(struct AnimData *adt, struct FCurve *fcu, sho // NOTE: defined in space_nla/nla_edit.c, not in animation/ void ED_nla_postop_refresh(bAnimContext *ac); +/* ------------- Unit Conversion Mappings ------------- */ +/* anim_draw.c */ + +/* flags for conversion mapping */ +typedef enum eAnimUnitConv_Flags { + /* restore to original internal values */ + ANIM_UNITCONV_RESTORE = (1<<0), + /* ignore handles (i.e. only touch main keyframes) */ + ANIM_UNITCONV_ONLYKEYS = (1<<1), + /* only touch selected BezTriples */ + ANIM_UNITCONV_ONLYSEL = (1<<2), + /* only touch selected vertices */ + ANIM_UNITCONV_SELVERTS = (1<<3), +} eAnimUnitConv_Flags; + +/* Get unit conversion factor for given ID + F-Curve */ +float ANIM_unit_mapping_get_factor(struct Scene *scene, struct ID *id, struct FCurve *fcu, short restore); + +/* Apply/Unapply units conversions to keyframes */ +void ANIM_unit_mapping_apply_fcurve(struct Scene *scene, struct ID *id, struct FCurve *fcu, short flag); + /* ------------- Utility macros ----------------------- */ /* provide access to Keyframe Type info in BezTriple diff --git a/source/blender/editors/include/ED_armature.h b/source/blender/editors/include/ED_armature.h index 9d35121032c..6d44c125524 100644 --- a/source/blender/editors/include/ED_armature.h +++ b/source/blender/editors/include/ED_armature.h @@ -129,7 +129,7 @@ void ED_armature_apply_transform(struct Object *ob, float mat[4][4]); #define ARM_GROUPS_ENVELOPE 2 #define ARM_GROUPS_AUTO 3 -void create_vgroups_from_armature(struct Scene *scene, struct Object *ob, struct Object *par, int mode); +void create_vgroups_from_armature(struct Scene *scene, struct Object *ob, struct Object *par, int mode, int mirror); void auto_align_armature(struct Scene *scene, struct View3D *v3d, short mode); void unique_editbone_name(struct ListBase *ebones, char *name, EditBone *bone); /* if bone is already in list, pass it as param to ignore it */ diff --git a/source/blender/editors/include/ED_curve.h b/source/blender/editors/include/ED_curve.h index 0cfa743b0fa..e6bb178c90a 100644 --- a/source/blender/editors/include/ED_curve.h +++ b/source/blender/editors/include/ED_curve.h @@ -57,7 +57,7 @@ void free_editNurb (struct Object *obedit); int mouse_nurb (struct bContext *C, short mval[2], int extend); -struct Nurb *add_nurbs_primitive(struct bContext *C, int type, int newname); +struct Nurb *add_nurbs_primitive(struct bContext *C, float mat[4][4], int type, int newname); int isNurbsel (struct Nurb *nu);; diff --git a/source/blender/editors/include/ED_fileselect.h b/source/blender/editors/include/ED_fileselect.h index 221b377dd25..24a846a53a7 100644 --- a/source/blender/editors/include/ED_fileselect.h +++ b/source/blender/editors/include/ED_fileselect.h @@ -86,6 +86,7 @@ int ED_fileselect_layout_offset(FileLayout* layout, int x, int y); void ED_fileselect_layout_tilepos(FileLayout* layout, int tile, int *x, int *y); +void ED_operatormacros_file(void); #endif /* ED_FILES_H */ diff --git a/source/blender/editors/include/ED_interface.h b/source/blender/editors/include/ED_interface.h deleted file mode 100644 index e69de29bb2d..00000000000 --- a/source/blender/editors/include/ED_interface.h +++ /dev/null diff --git a/source/blender/editors/include/ED_mball.h b/source/blender/editors/include/ED_mball.h index b21bcb0cc09..bc4b79ad176 100644 --- a/source/blender/editors/include/ED_mball.h +++ b/source/blender/editors/include/ED_mball.h @@ -33,7 +33,7 @@ struct wmKeyConfig; void ED_operatortypes_metaball(void); void ED_keymap_metaball(struct wmKeyConfig *keyconf); -struct MetaElem *add_metaball_primitive(struct bContext *C, int type, int newname); +struct MetaElem *add_metaball_primitive(struct bContext *C, float mat[4][4], int type, int newname); int mouse_mball(struct bContext *C, short mval[2], int extend); diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h index 174447c0f9f..04affbac803 100644 --- a/source/blender/editors/include/ED_mesh.h +++ b/source/blender/editors/include/ED_mesh.h @@ -189,14 +189,12 @@ struct bDeformGroup *ED_vgroup_add_name(struct Object *ob, char *name); void ED_vgroup_select_by_name(struct Object *ob, char *name); void ED_vgroup_data_create(struct ID *id); int ED_vgroup_give_array(struct ID *id, struct MDeformVert **dvert_arr, int *dvert_tot); +void ED_vgroup_mirror(struct Object *ob, int mirror_weights, int flip_vgroups); void ED_vgroup_vert_add(struct Object *ob, struct bDeformGroup *dg, int vertnum, float weight, int assignmode); void ED_vgroup_vert_remove(struct Object *ob, struct bDeformGroup *dg, int vertnum); float ED_vgroup_vert_weight(struct Object *ob, struct bDeformGroup *dg, int vertnum); -struct MDeformWeight *ED_vgroup_weight_verify(struct MDeformVert *dv, int defgroup); -struct MDeformWeight *ED_vgroup_weight_get(struct MDeformVert *dv, int defgroup); - /*needed by edge slide*/ struct EditVert *editedge_getOtherVert(struct EditEdge *eed, struct EditVert *eve); struct EditVert *editedge_getSharedVert(struct EditEdge *eed, struct EditEdge *eed2); diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h index 4e3fed6b9f8..006d999e729 100644 --- a/source/blender/editors/include/ED_object.h +++ b/source/blender/editors/include/ED_object.h @@ -82,11 +82,12 @@ void ED_object_enter_editmode(struct bContext *C, int flag); void ED_object_location_from_view(struct bContext *C, float *loc); void ED_object_rotation_from_view(struct bContext *C, float *rot); void ED_object_base_init_transform(struct bContext *C, struct Base *base, float *loc, float *rot); +float ED_object_new_primitive_matrix(struct bContext *C, float *loc, float *rot, float primmat[][4]); void ED_object_add_generic_props(struct wmOperatorType *ot, int do_editmode); int ED_object_add_generic_invoke(struct bContext *C, struct wmOperator *op, struct wmEvent *event); -void ED_object_add_generic_get_opts(struct wmOperator *op, float *loc, float *rot, int *enter_editmode); -struct Object *ED_object_add_type(struct bContext *C, int type, float *loc, float *rot, int enter_editmode); +void ED_object_add_generic_get_opts(struct wmOperator *op, float *loc, float *rot, int *enter_editmode, unsigned int *layer); +struct Object *ED_object_add_type(struct bContext *C, int type, float *loc, float *rot, int enter_editmode, unsigned int layer); void ED_object_single_users(struct Scene *scene, int full); @@ -94,6 +95,10 @@ void ED_object_single_users(struct Scene *scene, int full); int object_is_libdata(struct Object *ob); int object_data_is_libdata(struct Object *ob); +/* object motion paths */ +void ED_objects_clear_paths(struct bContext *C, struct Scene *scene); +void ED_objects_recalculate_paths(struct bContext *C, struct Scene *scene); + /* constraints */ struct ListBase *get_active_constraints(struct Object *ob); struct ListBase *get_constraint_lb(struct Object *ob, struct bConstraint *con, struct bPoseChannel **pchan_r); @@ -101,7 +106,6 @@ struct bConstraint *get_active_constraint(struct Object *ob); void object_test_constraints(struct Object *ob); -void ED_object_constraint_rename(struct Object *ob, struct bConstraint *con, char *oldname); void ED_object_constraint_set_active(struct Object *ob, struct bConstraint *con); void ED_object_constraint_update(struct Object *ob); void ED_object_constraint_dependency_update(struct Scene *scene, struct Object *ob); diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h index a7879c7b70d..fea92d54404 100644 --- a/source/blender/editors/include/ED_view3d.h +++ b/source/blender/editors/include/ED_view3d.h @@ -159,5 +159,8 @@ void ED_view3d_draw_offscreen(struct Scene *scene, struct View3D *v3d, struct AR void view3d_clipping_local(struct RegionView3D *rv3d, float mat[][4]); +Base *ED_view3d_give_base_under_cursor(struct bContext *C, short *mval); +void ED_view3d_quadview_update(struct ScrArea *sa, struct ARegion *ar); + #endif /* ED_VIEW3D_H */ diff --git a/source/blender/editors/include/UI_icons.h b/source/blender/editors/include/UI_icons.h index 01c15a7d303..6bc399a590f 100644 --- a/source/blender/editors/include/UI_icons.h +++ b/source/blender/editors/include/UI_icons.h @@ -539,7 +539,7 @@ DEF_ICON(ICON_MOD_EXPLODE) DEF_ICON(ICON_MOD_FLUIDSIM) DEF_ICON(ICON_MOD_MULTIRES) DEF_ICON(ICON_MOD_SMOKE) -DEF_ICON(ICON_BLANK158) +DEF_ICON(ICON_MOD_SOLIDIFY) DEF_ICON(ICON_BLANK159) DEF_ICON(ICON_BLANK160) DEF_ICON(ICON_BLANK161) diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index 243e55b851a..c94f20da459 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -61,6 +61,7 @@ struct ImageUser; struct uiWidgetColors; struct Tex; struct MTex; +struct ImBuf; typedef struct uiBut uiBut; typedef struct uiBlock uiBlock; @@ -216,9 +217,20 @@ typedef struct uiLayout uiLayout; #define LISTROW (44<<9) #define HOTKEYEVT (45<<9) #define BUT_IMAGE (46<<9) +#define HISTOGRAM (47<<9) #define BUTTYPE (63<<9) +/* gradient types, for color picker HSVCUBE etc */ +#define UI_GRAD_SV 0 +#define UI_GRAD_HV 1 +#define UI_GRAD_HS 2 +#define UI_GRAD_H 3 +#define UI_GRAD_S 4 +#define UI_GRAD_V 5 + +#define UI_GRAD_V_ALT 9 + /* Drawing * * Functions to draw various shapes, taking theme settings into account. @@ -332,6 +344,15 @@ void uiBlockSetXOfs (uiBlock *block, int xofs); int uiButGetRetVal (uiBut *but); +void uiButSetDragID(uiBut *but, struct ID *id); +void uiButSetDragRNA(uiBut *but, struct PointerRNA *ptr); +void uiButSetDragPath(uiBut *but, const char *path); +void uiButSetDragName(uiBut *but, const char *name); +void uiButSetDragValue(uiBut *but); +void uiButSetDragImage(uiBut *but, const char *path, int icon, struct ImBuf *ima, float scale); + +int UI_but_active_drop_name(struct bContext *C); + void uiButSetFlag (uiBut *but, int flag); void uiButClearFlag (uiBut *but, int flag); @@ -456,7 +477,6 @@ uiBut *uiDefHotKeyevtButS(uiBlock *block, int retval, char *str, short x1, short uiBut *uiDefSearchBut(uiBlock *block, void *arg, int retval, int icon, int maxlen, short x1, short y1, short x2, short y2, float a1, float a2, char *tip); void uiBlockPickerButtons(struct uiBlock *block, float *col, float *hsv, float *old, char *hexcol, char mode, short retval); -void uiBlockColorbandButtons(struct uiBlock *block, struct ColorBand *coba, struct rctf *butr, int event); uiBut *uiDefAutoButR(uiBlock *block, struct PointerRNA *ptr, struct PropertyRNA *prop, int index, char *name, int icon, int x1, int y1, int x2, int y2); void uiDefAutoButsRNA(const struct bContext *C, uiLayout *layout, struct PointerRNA *ptr, int columns); @@ -643,17 +663,21 @@ 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 uiTemplateIDBrowse(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, + char *newop, char *openop, char *unlinkop); void uiTemplateIDPreview(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, int rows, int cols); void uiTemplateAnyID(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, char *proptypename, char *text); void uiTemplatePathBuilder(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, struct PointerRNA *root_ptr, char *text); -uiLayout *uiTemplateModifier(uiLayout *layout, struct PointerRNA *ptr); +uiLayout *uiTemplateModifier(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, int compact); uiLayout *uiTemplateConstraint(uiLayout *layout, struct PointerRNA *ptr); void uiTemplatePreview(uiLayout *layout, struct ID *id, struct ID *parent, struct MTex *slot); void uiTemplateColorRamp(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand); +void uiTemplateHistogram(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand); void uiTemplateCurveMapping(uiLayout *layout, struct PointerRNA *ptr, char *propname, int type, int levels, int brush); +void uiTemplateColorWheel(uiLayout *layout, struct PointerRNA *ptr, char *propname, int value_slider, int lock); void uiTemplateTriColorSet(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); @@ -686,6 +710,7 @@ void uiItemPointerR(uiLayout *layout, char *name, int icon, struct PointerRNA *p 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 uiItemLDrag(uiLayout *layout, struct PointerRNA *ptr, char *name, int icon); /* label icon for dragging */ void uiItemM(uiLayout *layout, struct bContext *C, char *name, int icon, char *menuname); /* menu */ void uiItemV(uiLayout *layout, char *name, int icon, int argval); /* value */ void uiItemS(uiLayout *layout); /* separator */ diff --git a/source/blender/editors/include/UI_resources.h b/source/blender/editors/include/UI_resources.h index 1ae3634c73b..e78ff664f3c 100644 --- a/source/blender/editors/include/UI_resources.h +++ b/source/blender/editors/include/UI_resources.h @@ -184,6 +184,11 @@ enum { TH_NODE_CONVERTOR, TH_NODE_GROUP, + TH_CONSOLE_OUTPUT, + TH_CONSOLE_INPUT, + TH_CONSOLE_INFO, + TH_CONSOLE_ERROR, + TH_SEQ_MOVIE, TH_SEQ_IMAGE, TH_SEQ_SCENE, @@ -202,6 +207,8 @@ enum { TH_DOPESHEET_CHANNELOB, TH_DOPESHEET_CHANNELSUBOB, + + TH_PREVIEW_BACK, }; /* XXX WARNING: previous is saved in file, so do not change order! */ @@ -236,6 +243,8 @@ int UI_GetThemeValue(int colorid); // get three color values, scaled to 0.0-1.0 range void UI_GetThemeColor3fv(int colorid, float *col); +// get the color, range 0.0-1.0, complete with shading offset +void UI_GetThemeColorShade3fv(int colorid, int offset, float *col); // get the 3 or 4 byte values void UI_GetThemeColor3ubv(int colorid, char *col); diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index 56157386d4b..44c943fa4f4 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -26,6 +26,7 @@ */ #include <float.h> +#include <limits.h> #include <math.h> #include <string.h> @@ -812,7 +813,7 @@ static void ui_is_but_sel(uiBut *but) if(value == but->hardmax) push= 1; break; case COL: - push= 1; + push= 2; break; default: push= 2; @@ -942,7 +943,42 @@ void uiBlockClearButLock(uiBlock *block) /* *************************************************************** */ +void ui_delete_linkline(uiLinkLine *line, uiBut *but) +{ + uiLink *link; + int a, b; + + BLI_remlink(&but->link->lines, line); + + link= line->from->link; + + /* are there more pointers allowed? */ + if(link->ppoin) { + + if(*(link->totlink)==1) { + *(link->totlink)= 0; + MEM_freeN(*(link->ppoin)); + *(link->ppoin)= NULL; + } + else { + b= 0; + for(a=0; a< (*(link->totlink)); a++) { + + if( (*(link->ppoin))[a] != line->to->poin ) { + (*(link->ppoin))[b]= (*(link->ppoin))[a]; + b++; + } + } + (*(link->totlink))--; + } + } + else { + *(link->poin)= NULL; + } + MEM_freeN(line); + //REDRAW +} /* XXX 2.50 no links supported yet */ #if 0 static void ui_delete_active_linkline(uiBlock *block) @@ -1116,7 +1152,6 @@ void ui_get_but_vectorf(uiBut *but, float *vec) if(but->editvec) { VECCOPY(vec, but->editvec); - return; } if(but->rnaprop) { @@ -1152,7 +1187,6 @@ void ui_set_but_vectorf(uiBut *but, float *vec) if(but->editvec) { VECCOPY(but->editvec, vec); - return; } if(but->rnaprop) { @@ -1192,13 +1226,22 @@ int ui_is_but_float(uiBut *but) int ui_is_but_unit(uiBut *but) { Scene *scene= CTX_data_scene((bContext *)but->block->evil_C); - if(scene->unit.system == USER_UNIT_NONE) - return 0; - + int unit_type; + if(but->rnaprop==NULL) return 0; + + unit_type = RNA_SUBTYPE_UNIT(RNA_property_subtype(but->rnaprop)); + + if (scene->unit.flag & USER_UNIT_ROT_RADIANS && unit_type == PROP_UNIT_ROTATION) + return 0; + + if (scene->unit.system == USER_UNIT_NONE) { + if (unit_type != PROP_UNIT_ROTATION) + return 0; + } - if(RNA_SUBTYPE_UNIT_VALUE(RNA_property_subtype(but->rnaprop))==0) + if(unit_type == PROP_UNIT_NONE) return 0; return 1; @@ -1362,7 +1405,7 @@ void ui_set_but_val(uiBut *but, double value) int ui_get_but_string_max_length(uiBut *but) { - if(but->type == TEX) + if(ELEM(but->type, TEX, SEARCH_MENU)) return but->hardmax; else if(but->type == IDPOIN) return sizeof(((ID*)NULL)->name)-2; @@ -1373,12 +1416,12 @@ int ui_get_but_string_max_length(uiBut *but) static double ui_get_but_scale_unit(uiBut *but, double value) { Scene *scene= CTX_data_scene((bContext *)but->block->evil_C); - int subtype= RNA_property_subtype(but->rnaprop); + int subtype= RNA_SUBTYPE_UNIT(RNA_property_subtype(but->rnaprop)); - if(subtype & PROP_UNIT_LENGTH) { + if(subtype == PROP_UNIT_LENGTH) { return value * scene->unit.scale_length; } - else if(subtype & PROP_UNIT_TIME) { /* WARNING - using evil_C :| */ + else if(subtype == PROP_UNIT_TIME) { /* WARNING - using evil_C :| */ return FRA2TIME(value); } else { @@ -1563,7 +1606,7 @@ int ui_set_but_string(bContext *C, uiBut *but, const char *str) BLI_strncpy(str_unit_convert, str, sizeof(str_unit_convert)); - if(scene->unit.system != USER_UNIT_NONE && unit_type) { + if(ui_is_but_unit(but)) { /* ugly, use the draw string to get the value, this could cause problems if it includes some text which resolves to a unit */ bUnit_ReplaceString(str_unit_convert, sizeof(str_unit_convert), but->drawstr, ui_get_but_scale_unit(but, 1.0), scene->unit.system, unit_type); } @@ -1593,6 +1636,17 @@ int ui_set_but_string(bContext *C, uiBut *but, const char *str) return 0; } +void ui_set_but_default(bContext *C, uiBut *but) +{ + /* if there is a valid property that is editable... */ + if (but->rnapoin.data && but->rnaprop && RNA_property_editable(&but->rnapoin, but->rnaprop)) { + if(RNA_property_reset(&but->rnapoin, but->rnaprop, -1)) { + /* perform updates required for this property */ + RNA_property_update(C, &but->rnapoin, but->rnaprop); + } + } +} + static double soft_range_round_up(double value, double max) { /* round up to .., 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, .. */ @@ -1627,12 +1681,14 @@ void ui_set_but_soft_range(uiBut *but, double value) if(but->rnaprop) { type= RNA_property_type(but->rnaprop); + /* clamp button range to something reasonable in case + * we get -inf/inf from RNA properties */ if(type == PROP_INT) { int imin, imax, istep; RNA_property_int_ui_range(&but->rnapoin, but->rnaprop, &imin, &imax, &istep); - softmin= imin; - softmax= imax; + softmin= (imin == INT_MIN)? -1e4: imin; + softmax= (imin == INT_MAX)? 1e4: imax; step= istep; precision= 1; } @@ -1640,19 +1696,14 @@ void ui_set_but_soft_range(uiBut *but, double value) float fmin, fmax, fstep, fprecision; RNA_property_float_ui_range(&but->rnapoin, but->rnaprop, &fmin, &fmax, &fstep, &fprecision); - softmin= fmin; - softmax= fmax; + softmin= (fmin == -FLT_MAX)? -1e4: fmin; + softmax= (fmax == FLT_MAX)? 1e4: fmax; step= fstep; precision= fprecision; } else return; - /* clamp button range to something reasonable in case - * we get -inf/inf from RNA properties */ - softmin= MAX2(softmin, -1e4); - softmax= MIN2(softmax, 1e4); - /* if the value goes out of the soft/max range, adapt the range */ if(value+1e-10 < softmin) { if(value < 0.0) @@ -2280,7 +2331,7 @@ static uiBut *ui_def_but(uiBlock *block, int type, int retval, char *str, short but->pos= -1; /* cursor invisible */ - if(ELEM(but->type, NUM, NUMABS)) { /* add a space to name */ + if(ELEM4(but->type, NUM, NUMABS, NUMSLI, HSVSLI)) { /* add a space to name */ slen= strlen(but->str); if(slen>0 && slen<UI_MAX_NAME_STR-2) { if(but->str[slen-1]!=' ') { @@ -2692,6 +2743,7 @@ uiBut *uiDefButO(uiBlock *block, int type, char *opname, int opcontext, char *st return but; } +/* if a1==1.0 then a2 is an extra icon blending factor (alpha 0.0 - 1.0) */ uiBut *uiDefIconBut(uiBlock *block, int type, int retval, int icon, short x1, short y1, short x2, short y2, void *poin, float min, float max, float a1, float a2, char *tip) { uiBut *but= ui_def_but(block, type, retval, "", x1, y1, x2, y2, poin, min, max, a1, a2, tip); @@ -2963,6 +3015,45 @@ int uiButGetRetVal(uiBut *but) return but->retval; } +void uiButSetDragID(uiBut *but, ID *id) +{ + but->dragtype= WM_DRAG_ID; + but->dragpoin= (void *)id; +} + +void uiButSetDragRNA(uiBut *but, PointerRNA *ptr) +{ + but->dragtype= WM_DRAG_RNA; + but->dragpoin= (void *)ptr; +} + +void uiButSetDragPath(uiBut *but, const char *path) +{ + but->dragtype= WM_DRAG_PATH; + but->dragpoin= (void *)path; +} + +void uiButSetDragName(uiBut *but, const char *name) +{ + but->dragtype= WM_DRAG_NAME; + but->dragpoin= (void *)name; +} + +/* value from button itself */ +void uiButSetDragValue(uiBut *but) +{ + but->dragtype= WM_DRAG_VALUE; +} + +void uiButSetDragImage(uiBut *but, const char *path, int icon, struct ImBuf *imb, float scale) +{ + but->dragtype= WM_DRAG_PATH; + but->icon= icon; /* no flag UI_HAS_ICON, so icon doesnt draw in button */ + but->dragpoin= (void *)path; + but->imb= imb; + but->imb_scale= scale; +} + PointerRNA *uiButGetOperatorPtrRNA(uiBut *but) { if(but->optype && !but->opptr) { diff --git a/source/blender/editors/interface/interface_anim.c b/source/blender/editors/interface/interface_anim.c index acfd48e0269..6a7f2b2fcb7 100644 --- a/source/blender/editors/interface/interface_anim.c +++ b/source/blender/editors/interface/interface_anim.c @@ -30,45 +30,7 @@ static FCurve *ui_but_get_fcurve(uiBut *but, bAction **action, int *driven) { - FCurve *fcu= NULL; - - *driven= 0; - - /* there must be some RNA-pointer + property combo for this button */ - if(but->rnaprop && but->rnapoin.id.data && - RNA_property_animateable(&but->rnapoin, but->rnaprop)) - { - AnimData *adt= BKE_animdata_from_id(but->rnapoin.id.data); - char *path; - - if(adt) { - if((adt->action && adt->action->curves.first) || (adt->drivers.first)) { - /* XXX this function call can become a performance bottleneck */ - path= RNA_path_from_ID_to_property(&but->rnapoin, but->rnaprop); - - if(path) { - /* animation takes priority over drivers */ - if(adt->action && adt->action->curves.first) - fcu= list_find_fcurve(&adt->action->curves, path, but->rnaindex); - - /* if not animated, check if driven */ - if(!fcu && (adt->drivers.first)) { - fcu= list_find_fcurve(&adt->drivers, path, but->rnaindex); - - if(fcu) - *driven= 1; - } - - if(fcu && action) - *action= adt->action; - - MEM_freeN(path); - } - } - } - } - - return fcu; + return rna_get_fcurve(&but->rnapoin, but->rnaprop, but->rnaindex, action, driven); } void ui_but_anim_flag(uiBut *but, float cfra) @@ -133,7 +95,7 @@ int ui_but_anim_expression_set(uiBut *but, const char *str) return 0; } -void ui_but_anim_autokey(uiBut *but, Scene *scene, float cfra) +void ui_but_anim_autokey(bContext *C, uiBut *but, Scene *scene, float cfra) { ID *id; bAction *action; @@ -151,6 +113,7 @@ void ui_but_anim_autokey(uiBut *but, Scene *scene, float cfra) fcu->flag &= ~FCURVE_SELECTED; insert_keyframe(id, action, ((fcu->grp)?(fcu->grp->name):(NULL)), fcu->rna_path, fcu->array_index, cfra, flag); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); } } } @@ -168,7 +131,7 @@ void uiAnimContextProperty(const bContext *C, struct PointerRNA *ptr, struct Pro if(ar) { for(block=ar->uiblocks.first; block; block=block->next) { for(but=block->buttons.first; but; but= but->next) { - if(but->active && but->rnapoin.id.data) { + if((but->active || but->flag & UI_BUT_LAST_ACTIVE) && but->rnapoin.id.data) { *ptr= but->rnapoin; *prop= but->rnaprop; *index= but->rnaindex; diff --git a/source/blender/editors/interface/interface_draw.c b/source/blender/editors/interface/interface_draw.c index 0602ca656b9..330209ef6f5 100644 --- a/source/blender/editors/interface/interface_draw.c +++ b/source/blender/editors/interface/interface_draw.c @@ -20,9 +20,7 @@ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. * All rights reserved. * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. + * Contributor(s): Blender Foundation * * ***** END GPL LICENSE BLOCK ***** */ @@ -691,6 +689,96 @@ static void ui_draw_but_CHARTAB(uiBut *but) #endif // INTERNATIONAL #endif + +void ui_draw_but_HISTOGRAM(ARegion *ar, uiBut *but, uiWidgetColors *wcol, rcti *recti) +{ + Histogram *hist = (Histogram *)but->poin; + int res = hist->x_resolution; + rctf rect; + int i; + int rgb; + float w, h; + float alpha; + GLint scissor[4]; + + if (hist==NULL) { printf("hist is null \n"); return; } + + rect.xmin = (float)recti->xmin; + rect.xmax = (float)recti->xmax; + rect.ymin = (float)recti->ymin; + rect.ymax = (float)recti->ymax; + + w = rect.xmax - rect.xmin; + h = rect.ymax - rect.ymin; + h *= hist->ymax; + + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + + glColor4f(0.f, 0.f, 0.f, 0.3f); + uiSetRoundBox(15); + gl_round_box(GL_POLYGON, rect.xmin-1, rect.ymin-1, rect.xmax+1, rect.ymax+1, 3.0f); + + glColor4f(1.f, 1.f, 1.f, 0.08f); + /* draw grid lines here */ + for (i=1; i<4; i++) { + fdrawline(rect.xmin, rect.ymin+(i/4.f)*h, rect.xmax, rect.ymin+(i/4.f)*h); + fdrawline(rect.xmin+(i/4.f)*w, rect.ymin, rect.xmin+(i/4.f)*w, rect.ymax); + } + + /* need scissor test, histogram can draw outside of boundary */ + glGetIntegerv(GL_VIEWPORT, scissor); + glScissor(ar->winrct.xmin + (rect.xmin-1), ar->winrct.ymin+(rect.ymin-1), (rect.xmax+1)-(rect.xmin-1), (rect.ymax+1)-(rect.ymin-1)); + + for (rgb=0; rgb<3; rgb++) { + float *data; + + if (rgb==0) data = hist->data_r; + else if (rgb==1) data = hist->data_g; + else if (rgb==2) data = hist->data_b; + + glBlendFunc(GL_SRC_ALPHA, GL_ONE); + alpha = 0.75; + if (rgb==0) glColor4f(1.f, 0.f, 0.f, alpha); + else if (rgb==1) glColor4f(0.f, 1.f, 0.f, alpha); + else if (rgb==2) glColor4f(0.f, 0.f, 1.f, alpha); + + glShadeModel(GL_FLAT); + glBegin(GL_QUAD_STRIP); + glVertex2f(rect.xmin, rect.ymin); + glVertex2f(rect.xmin, rect.ymin + (data[0]*h)); + for (i=1; i < res; i++) { + float x = rect.xmin + i * (w/(float)res); + glVertex2f(x, rect.ymin + (data[i]*h)); + glVertex2f(x, rect.ymin); + } + glEnd(); + + glColor4f(0.f, 0.f, 0.f, 0.25f); + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_LINE_SMOOTH); + glBegin(GL_LINE_STRIP); + for (i=0; i < res; i++) { + float x = rect.xmin + i * (w/(float)res); + glVertex2f(x, rect.ymin + (data[i]*h)); + } + glEnd(); + glDisable(GL_LINE_SMOOTH); + } + + /* restore scissortest */ + glScissor(scissor[0], scissor[1], scissor[2], scissor[3]); + + glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + glColor4f(0.f, 0.f, 0.f, 0.5f); + uiSetRoundBox(15); + gl_round_box(GL_LINE_LOOP, rect.xmin-1, rect.ymin-1, rect.xmax+1, rect.ymax+1, 3.0f); + + glDisable(GL_BLEND); +} + + void ui_draw_but_COLORBAND(uiBut *but, uiWidgetColors *wcol, rcti *rect) { ColorBand *coba; @@ -980,7 +1068,7 @@ void ui_draw_but_CURVE(ARegion *ar, uiBut *but, uiWidgetColors *wcol, rcti *rect glColor3ubv((unsigned char*)wcol->inner); glRectf(rect->xmin, rect->ymin, rect->xmax, rect->ymax); } - + /* grid, every .25 step */ glColor3ubvShade(wcol->inner, -16); ui_draw_but_curve_grid(rect, zoomx, zoomy, offsx, offsy, 0.25f); @@ -996,6 +1084,24 @@ void ui_draw_but_CURVE(ARegion *ar, uiBut *but, uiWidgetColors *wcol, rcti *rect glVertex2f(rect->xmin + zoomx*(-offsx), rect->ymax); glEnd(); + /* magic trigger for curve backgrounds */ + if (but->a1 != -1) { + if (but->a1 == UI_GRAD_H) { + rcti grid; + float col[3]; + + grid.xmin = rect->xmin + zoomx*(-offsx); + grid.xmax = rect->xmax + zoomx*(-offsx); + grid.ymin = rect->ymin + zoomy*(-offsy); + grid.ymax = rect->ymax + zoomy*(-offsy); + + glEnable(GL_BLEND); + ui_draw_gradient(&grid, col, UI_GRAD_H, 0.5f); + glDisable(GL_BLEND); + } + } + + /* cfra option */ /* XXX 2.48 if(cumap->flag & CUMA_DRAW_CFRA) { diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index fa5d60a20f6..019aa10e902 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -89,6 +89,7 @@ typedef enum uiHandleButtonState { BUTTON_STATE_TEXT_EDITING, BUTTON_STATE_TEXT_SELECTING, BUTTON_STATE_MENU_OPEN, + BUTTON_STATE_WAIT_DRAG, BUTTON_STATE_EXIT } uiHandleButtonState; @@ -323,7 +324,7 @@ static void ui_apply_autokey_undo(bContext *C, uiBut *but) } /* try autokey */ - ui_but_anim_autokey(but, scene, scene->r.cfra); + ui_but_anim_autokey(C, but, scene, scene->r.cfra); } static void ui_apply_but_funcs_after(bContext *C) @@ -402,11 +403,7 @@ static void ui_apply_but_BUTM(bContext *C, uiBut *but, uiHandleButtonData *data) static void ui_apply_but_BLOCK(bContext *C, uiBut *but, uiHandleButtonData *data) { - if(but->type == COL) { - if(but->a1 != -1) // this is not a color picker (weak!) - ui_set_but_vectorf(but, data->vec); - } - else if(ELEM3(but->type, MENU, ICONROW, ICONTEXTROW)) + if(ELEM3(but->type, MENU, ICONROW, ICONTEXTROW)) ui_set_but_val(but, data->value); ui_check_but(but); @@ -606,6 +603,53 @@ static void ui_apply_but_CHARTAB(bContext *C, uiBut *but, uiHandleButtonData *da } #endif +/* ****************** drag drop code *********************** */ + +static int ui_but_mouse_inside_icon(uiBut *but, ARegion *ar, wmEvent *event) +{ + rcti rect; + int x= event->x, y= event->y; + + ui_window_to_block(ar, but->block, &x, &y); + + rect.xmin= but->x1; rect.xmax= but->x2; + rect.ymin= but->y1; rect.ymax= but->y2; + + if(but->imb); /* use button size itself */ + else if(but->flag & UI_ICON_LEFT) { + rect.xmax= rect.xmin + (rect.ymax-rect.ymin); + } + else { + int delta= (rect.xmax-rect.xmin) - (rect.ymax-rect.ymin); + rect.xmin += delta/2; + rect.xmax -= delta/2; + } + + return BLI_in_rcti(&rect, x, y); +} + +#define UI_DRAG_THRESHOLD 3 +static int ui_but_start_drag(bContext *C, uiBut *but, uiHandleButtonData *data, wmEvent *event) +{ + /* prevent other WM gestures to start while we try to drag */ + WM_gestures_remove(C); + + if( ABS(data->dragstartx - event->x) + ABS(data->dragstarty - event->y) > UI_DRAG_THRESHOLD ) { + wmDrag *drag; + + button_activate_state(C, but, BUTTON_STATE_EXIT); + data->cancel= 1; + + drag= WM_event_start_drag(C, but->icon, but->dragtype, but->dragpoin, ui_get_but_val(but)); + if(but->imb) + WM_event_drag_image(drag, but->imb, but->imb_scale, but->x2-but->x1, but->y2-but->y1); + return 1; + } + + return 0; +} + +/* ********************** linklines *********************** */ static void ui_delete_active_linkline(uiBlock *block) { @@ -688,23 +732,19 @@ static void ui_add_link(uiBut *from, uiBut *to) if( (line= ui_is_a_link(from, to)) ) { line->flag |= UI_SELECT; ui_delete_active_linkline(from->block); - printf("already exists, means deletion now\n"); return; } if (from->type==INLINK && to->type==INLINK) { - printf("cannot link\n"); return; } else if (from->type==LINK && to->type==INLINK) { if( from->link->tocode != (int)to->hardmin ) { - printf("cannot link\n"); return; } } else if(from->type==INLINK && to->type==LINK) { if( to->link->tocode == (int)from->hardmin ) { - printf("cannot link\n"); return; } } @@ -755,7 +795,13 @@ static void ui_apply_but_LINK(bContext *C, uiBut *but, uiHandleButtonData *data) static void ui_apply_but_IMAGE(bContext *C, uiBut *but, uiHandleButtonData *data) { ui_apply_but_func(C, but); + data->retval= but->retval; + data->applied= 1; +} +static void ui_apply_but_HISTOGRAM(bContext *C, uiBut *but, uiHandleButtonData *data) +{ + ui_apply_but_func(C, but); data->retval= but->retval; data->applied= 1; } @@ -882,6 +928,9 @@ static void ui_apply_button(bContext *C, uiBlock *block, uiBut *but, uiHandleBut case BUT_IMAGE: ui_apply_but_IMAGE(C, but, data); break; + case HISTOGRAM: + ui_apply_but_HISTOGRAM(C, but, data); + break; default: break; } @@ -893,6 +942,30 @@ static void ui_apply_button(bContext *C, uiBlock *block, uiBut *but, uiHandleBut but->editcumap= editcumap; } +/* ******************* drop event ******************** */ + +/* only call if event type is EVT_DROP */ +static void ui_but_drop(bContext *C, wmEvent *event, uiBut *but, uiHandleButtonData *data) +{ + wmDrag *wmd; + ListBase *drags= event->customdata; /* drop event type has listbase customdata by default */ + + for(wmd= drags->first; wmd; wmd= wmd->next) { + if(wmd->type==WM_DRAG_ID) { + /* align these types with UI_but_active_drop_name */ + if(ELEM3(but->type, TEX, IDPOIN, SEARCH_MENU)) { + ID *id= (ID *)wmd->poin; + + if(but->poin==NULL && but->rnapoin.data==NULL); + button_activate_state(C, but, BUTTON_STATE_TEXT_EDITING); + BLI_strncpy(data->str, id->name+2, data->maxlen); + button_activate_state(C, but, BUTTON_STATE_EXIT); + } + } + } + +} + /* ******************* copy and paste ******************** */ /* c = copy, v = paste */ @@ -952,7 +1025,7 @@ static void ui_but_copy_paste(bContext *C, uiBut *but, uiHandleButtonData *data, else { if (sscanf(buf, "[%f, %f, %f]", &rgb[0], &rgb[1], &rgb[2]) == 3) { button_activate_state(C, but, BUTTON_STATE_NUM_EDITING); - VECCOPY(data->vec, rgb); + ui_set_but_vectorf(but, rgb); button_activate_state(C, but, BUTTON_STATE_EXIT); } } @@ -1087,8 +1160,11 @@ static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, sho /* XXX solve generic */ if(but->type==NUM || but->type==NUMSLI) startx += (int)(0.5f*(but->y2 - but->y1)); - else if(but->type==TEX) + else if(ELEM(but->type, TEX, SEARCH_MENU)) { startx += 5; + if (but->flag & UI_HAS_ICON) + startx += 16; + } /* XXX does not take zoom level into account */ while((BLF_width(origstr+but->ofs) + startx) > x) { @@ -1945,7 +2021,7 @@ static int ui_do_but_KEYEVT(bContext *C, uiBut *but, uiHandleButtonData *data, w static int ui_do_but_TEX(bContext *C, uiBlock *block, uiBut *but, uiHandleButtonData *data, wmEvent *event) { if(data->state == BUTTON_STATE_HIGHLIGHT) { - if(ELEM4(event->type, LEFTMOUSE, PADENTER, RETKEY, EVT_BUT_OPEN) && event->val==KM_PRESS) { + if(ELEM(event->type, LEFTMOUSE, EVT_BUT_OPEN) && event->val==KM_PRESS) { if(but->dt == UI_EMBOSSN && !event->ctrl); else { button_activate_state(C, but, BUTTON_STATE_TEXT_EDITING); @@ -1980,13 +2056,42 @@ static int ui_do_but_TOG(bContext *C, uiBut *but, uiHandleButtonData *data, wmEv static int ui_do_but_EXIT(bContext *C, uiBut *but, uiHandleButtonData *data, wmEvent *event) { + if(data->state == BUTTON_STATE_HIGHLIGHT) { + + /* first handle click on icondrag type button */ + if(event->type==LEFTMOUSE && but->dragpoin) { + if(ui_but_mouse_inside_icon(but, data->region, event)) { + button_activate_state(C, but, BUTTON_STATE_WAIT_DRAG); + data->dragstartx= event->x; + data->dragstarty= event->y; + return WM_UI_HANDLER_BREAK; + } + } + if(ELEM3(event->type, LEFTMOUSE, PADENTER, RETKEY) && event->val==KM_PRESS) { button_activate_state(C, but, BUTTON_STATE_EXIT); return WM_UI_HANDLER_BREAK; } } - + else if(data->state == BUTTON_STATE_WAIT_DRAG) { + + /* this function also ends state */ + if(ui_but_start_drag(C, but, data, event)) { + return WM_UI_HANDLER_BREAK; + } + + /* pass on release as press for other keymaps XXX hack alert! */ + if(event->type==LEFTMOUSE && event->val==KM_RELEASE) { + button_activate_state(C, but, BUTTON_STATE_EXIT); + event->val= KM_PRESS; + return WM_UI_HANDLER_CONTINUE; + } + + /* while wait drag, always block other events to get handled */ + return WM_UI_HANDLER_BREAK; + } + return WM_UI_HANDLER_CONTINUE; } @@ -2203,6 +2308,12 @@ static int ui_do_but_NUM(bContext *C, uiBlock *block, uiBut *but, uiHandleButton } else if(ELEM(event->type, PADENTER, RETKEY) && event->val==KM_PRESS) click= 1; + else if (event->type == MINUSKEY && event->val==KM_PRESS) { + button_activate_state(C, but, BUTTON_STATE_NUM_EDITING); + data->value = -data->value; + button_activate_state(C, but, BUTTON_STATE_EXIT); + retval= WM_UI_HANDLER_BREAK; + } } } @@ -2420,6 +2531,12 @@ static int ui_do_but_SLI(bContext *C, uiBlock *block, uiBut *but, uiHandleButton } else if(ELEM(event->type, PADENTER, RETKEY) && event->val==KM_PRESS) click= 1; + else if (event->type == MINUSKEY && event->val==KM_PRESS) { + button_activate_state(C, but, BUTTON_STATE_NUM_EDITING); + data->value = -data->value; + button_activate_state(C, but, BUTTON_STATE_EXIT); + retval= WM_UI_HANDLER_BREAK; + } } } else if(data->state == BUTTON_STATE_NUM_EDITING) { @@ -2550,10 +2667,23 @@ static int ui_do_but_SCROLL(bContext *C, uiBlock *block, uiBut *but, uiHandleBut return retval; } + static int ui_do_but_BLOCK(bContext *C, uiBut *but, uiHandleButtonData *data, wmEvent *event) { if(data->state == BUTTON_STATE_HIGHLIGHT) { + + /* first handle click on icondrag type button */ + if(event->type==LEFTMOUSE && but->dragpoin && event->val==KM_PRESS) { + if(ui_but_mouse_inside_icon(but, data->region, event)) { + button_activate_state(C, but, BUTTON_STATE_WAIT_DRAG); + data->dragstartx= event->x; + data->dragstarty= event->y; + return WM_UI_HANDLER_BREAK; + } + } + + /* regular open menu */ if(ELEM3(event->type, LEFTMOUSE, PADENTER, RETKEY) && event->val==KM_PRESS) { button_activate_state(C, but, BUTTON_STATE_MENU_OPEN); return WM_UI_HANDLER_BREAK; @@ -2586,6 +2716,7 @@ static int ui_do_but_BLOCK(bContext *C, uiBut *but, uiHandleButtonData *data, wm but->hsv[2]= CLAMPIS(but->hsv[2]+0.05f, 0.0f, 1.0f); hsv_to_rgb(but->hsv[0], but->hsv[1], but->hsv[2], data->vec, data->vec+1, data->vec+2); + ui_set_but_vectorf(but, data->vec); button_activate_state(C, but, BUTTON_STATE_EXIT); ui_apply_button(C, but->block, but, data, 1); @@ -2593,6 +2724,26 @@ static int ui_do_but_BLOCK(bContext *C, uiBut *but, uiHandleButtonData *data, wm } } } + else if(data->state == BUTTON_STATE_WAIT_DRAG) { + + /* this function also ends state */ + if(ui_but_start_drag(C, but, data, event)) { + return WM_UI_HANDLER_BREAK; + } + + /* outside icon quit, not needed if drag activated */ + if(0==ui_but_mouse_inside_icon(but, data->region, event)) { + button_activate_state(C, but, BUTTON_STATE_EXIT); + data->cancel= 1; + return WM_UI_HANDLER_BREAK; + } + + if(event->type==LEFTMOUSE && event->val==KM_RELEASE) { + button_activate_state(C, but, BUTTON_STATE_MENU_OPEN); + return WM_UI_HANDLER_BREAK; + } + + } return WM_UI_HANDLER_CONTINUE; } @@ -2694,6 +2845,7 @@ static int ui_do_but_NORMAL(bContext *C, uiBlock *block, uiBut *but, uiHandleBut static int ui_numedit_but_HSVCUBE(uiBut *but, uiHandleButtonData *data, int mx, int my) { + float rgb[3], hsv[3]; float x, y; int changed= 1; int color_profile = but->block->color_profile; @@ -2702,6 +2854,9 @@ static int ui_numedit_but_HSVCUBE(uiBut *but, uiHandleButtonData *data, int mx, if (RNA_property_subtype(but->rnaprop) == PROP_COLOR_GAMMA) color_profile = BLI_PR_NONE; } + + ui_get_but_vectorf(but, rgb); + rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2); /* relative position within box */ x= ((float)mx-but->x1)/(but->x2-but->x1); @@ -2710,31 +2865,43 @@ static int ui_numedit_but_HSVCUBE(uiBut *but, uiHandleButtonData *data, int mx, CLAMP(y, 0.0, 1.0); if(but->a1==0) { - but->hsv[0]= x; - but->hsv[2]= y; + hsv[2]= x; + hsv[1]= y; } else if(but->a1==1) { - but->hsv[0]= x; - but->hsv[1]= y; + hsv[0]= x; + hsv[2]= y; } else if(but->a1==2) { - but->hsv[2]= x; - but->hsv[1]= y; + hsv[0]= x; + hsv[1]= y; } else if(but->a1==3) { - but->hsv[0]= x; + hsv[0]= x; } - else { + else if(but->a1==4) { + hsv[1]= x; + } + else if(but->a1==5) { + hsv[2]= x; + } + else if (but->a1==9){ + float range; + /* vertical 'value' strip */ - but->hsv[2]= y; + hsv[2]= y; + + /* exception only for value strip - use the range set in but->min/max */ + range = but->softmax - but->softmin; + hsv[2] = y*range + but->softmin; + if (color_profile) - but->hsv[2] = srgb_to_linearrgb(but->hsv[2]); + hsv[2] = srgb_to_linearrgb(hsv[2]); + } - ui_set_but_hsv(but); // converts to rgb - - // update button values and strings - ui_update_block_buts_hsv(but->block, but->hsv); + hsv_to_rgb(hsv[0], hsv[1], hsv[2], rgb, rgb+1, rgb+2); + ui_set_but_vectorf(but, rgb); data->draglastx= mx; data->draglasty= my; @@ -2764,9 +2931,42 @@ static int ui_do_but_HSVCUBE(bContext *C, uiBlock *block, uiBut *but, uiHandleBu return WM_UI_HANDLER_BREAK; } + else if (event->type == ZEROKEY && event->val == KM_PRESS) { + if (but->a1==9){ + float rgb[3], hsv[3], def_hsv[3]; + float *def; + int len; + + /* reset only value */ + + len= RNA_property_array_length(&but->rnapoin, but->rnaprop); + if (len >= 3) { + def= MEM_callocN(sizeof(float)*len, "reset_defaults - float"); + + RNA_property_float_get_default_array(&but->rnapoin, but->rnaprop, def); + rgb_to_hsv(def[0], def[1], def[2], def_hsv, def_hsv+1, def_hsv+2); + + ui_get_but_vectorf(but, rgb); + rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2); + + hsv_to_rgb(hsv[0], hsv[1], def_hsv[2], rgb, rgb+1, rgb+2); + ui_set_but_vectorf(but, rgb); + + RNA_property_update(C, &but->rnapoin, but->rnaprop); + + MEM_freeN(def); + } + return WM_UI_HANDLER_BREAK; + } + } } else if(data->state == BUTTON_STATE_NUM_EDITING) { - if(event->type == MOUSEMOVE) { + if(event->type == ESCKEY) { + data->cancel= 1; + data->escapecancel= 1; + button_activate_state(C, but, BUTTON_STATE_EXIT); + } + else if(event->type == MOUSEMOVE) { if(mx!=data->draglastx || my!=data->draglasty) { if(ui_numedit_but_HSVCUBE(but, data, mx, my)) ui_numedit_apply(C, block, but, data); @@ -2785,16 +2985,24 @@ static int ui_numedit_but_HSVCIRCLE(uiBut *but, uiHandleButtonData *data, int mx { rcti rect; int changed= 1; - + float rgb[3], hsv[3]; + rect.xmin= but->x1; rect.xmax= but->x2; rect.ymin= but->y1; rect.ymax= but->y2; - ui_hsvcircle_vals_from_pos(but->hsv, but->hsv+1, &rect, (float)mx, (float)my); + ui_get_but_vectorf(but, rgb); + rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2); - ui_set_but_hsv(but); // converts to rgb + /* exception, when using color wheel in 'locked' value state: + * allow choosing a hue for black values, by giving a tiny increment */ + if (but->a2 == 1) { // lock + if (hsv[2] == 0.f) hsv[2] = 0.0001f; + } + + ui_hsvcircle_vals_from_pos(hsv, hsv+1, &rect, (float)mx, (float)my); - // update button values and strings - // XXX ui_update_block_buts_hsv(but->block, but->hsv); + hsv_to_rgb(hsv[0], hsv[1], hsv[2], rgb, rgb+1, rgb+2); + ui_set_but_vectorf(but, rgb); data->draglastx= mx; data->draglasty= my; @@ -2825,10 +3033,41 @@ static int ui_do_but_HSVCIRCLE(bContext *C, uiBlock *block, uiBut *but, uiHandle return WM_UI_HANDLER_BREAK; } + else if (event->type == ZEROKEY && event->val == KM_PRESS) { + float rgb[3], hsv[3], def_hsv[3]; + float *def; + int len; + + /* reset only saturation */ + + len= RNA_property_array_length(&but->rnapoin, but->rnaprop); + if (len >= 3) { + def= MEM_callocN(sizeof(float)*len, "reset_defaults - float"); + + RNA_property_float_get_default_array(&but->rnapoin, but->rnaprop, def); + rgb_to_hsv(def[0], def[1], def[2], def_hsv, def_hsv+1, def_hsv+2); + + ui_get_but_vectorf(but, rgb); + rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2); + + hsv_to_rgb(hsv[0], def_hsv[1], hsv[2], rgb, rgb+1, rgb+2); + ui_set_but_vectorf(but, rgb); + + RNA_property_update(C, &but->rnapoin, but->rnaprop); + + MEM_freeN(def); + } + return WM_UI_HANDLER_BREAK; + } } else if(data->state == BUTTON_STATE_NUM_EDITING) { + if(event->type == ESCKEY) { + data->cancel= 1; + data->escapecancel= 1; + button_activate_state(C, but, BUTTON_STATE_EXIT); + } /* XXX hardcoded keymap check.... */ - if(event->type == WHEELDOWNMOUSE) { + else if(event->type == WHEELDOWNMOUSE) { but->hsv[2]= CLAMPIS(but->hsv[2]-0.05f, 0.0f, 1.0f); ui_set_but_hsv(but); // converts to rgb ui_numedit_apply(C, block, but, data); @@ -2844,9 +3083,9 @@ static int ui_do_but_HSVCIRCLE(bContext *C, uiBlock *block, uiBut *but, uiHandle ui_numedit_apply(C, block, but, data); } } - else if(event->type==LEFTMOUSE && event->val!=KM_PRESS) + else if(event->type==LEFTMOUSE && event->val!=KM_PRESS) { button_activate_state(C, but, BUTTON_STATE_EXIT); - + } return WM_UI_HANDLER_BREAK; } @@ -3193,6 +3432,81 @@ static int ui_do_but_CURVE(bContext *C, uiBlock *block, uiBut *but, uiHandleButt return WM_UI_HANDLER_CONTINUE; } +static int ui_numedit_but_HISTOGRAM(uiBut *but, uiHandleButtonData *data, int mx, int my) +{ + Histogram *hist = (Histogram *)but->poin; + rcti rect; + int changed= 1; + float dx, dy, yfac=1.f; + + rect.xmin= but->x1; rect.xmax= but->x2; + rect.ymin= but->y1; rect.ymax= but->y2; + + dx = mx - data->draglastx; + dy = my - data->draglasty; + + yfac = MIN2(powf(hist->ymax, 2.f), 1.f) * 0.5; + hist->ymax += dy * yfac; + + CLAMP(hist->ymax, 1.f, 100.f); + + data->draglastx= mx; + data->draglasty= my; + + return changed; +} + +static int ui_do_but_HISTOGRAM(bContext *C, uiBlock *block, uiBut *but, uiHandleButtonData *data, wmEvent *event) +{ + int mx, my; + + mx= event->x; + my= event->y; + ui_window_to_block(data->region, block, &mx, &my); + + if(data->state == BUTTON_STATE_HIGHLIGHT) { + if(event->type==LEFTMOUSE && event->val==KM_PRESS) { + data->dragstartx= mx; + data->dragstarty= my; + data->draglastx= mx; + data->draglasty= my; + button_activate_state(C, but, BUTTON_STATE_NUM_EDITING); + + /* also do drag the first time */ + if(ui_numedit_but_HISTOGRAM(but, data, mx, my)) + ui_numedit_apply(C, block, but, data); + + return WM_UI_HANDLER_BREAK; + } + else if (event->type == ZEROKEY && event->val == KM_PRESS) { + Histogram *hist = (Histogram *)but->poin; + hist->ymax = 1.f; + + button_activate_state(C, but, BUTTON_STATE_EXIT); + return WM_UI_HANDLER_BREAK; + } + } + else if(data->state == BUTTON_STATE_NUM_EDITING) { + if(event->type == ESCKEY) { + data->cancel= 1; + data->escapecancel= 1; + button_activate_state(C, but, BUTTON_STATE_EXIT); + } + else if(event->type == MOUSEMOVE) { + if(mx!=data->draglastx || my!=data->draglasty) { + if(ui_numedit_but_HISTOGRAM(but, data, mx, my)) + ui_numedit_apply(C, block, but, data); + } + } + else if(event->type==LEFTMOUSE && event->val!=KM_PRESS) { + button_activate_state(C, but, BUTTON_STATE_EXIT); + } + return WM_UI_HANDLER_BREAK; + } + + return WM_UI_HANDLER_CONTINUE; +} + #ifdef INTERNATIONAL static int ui_do_but_CHARTAB(bContext *C, uiBlock *block, uiBut *but, uiHandleButtonData *data, wmEvent *event) { @@ -3377,7 +3691,7 @@ static uiBlock *menu_change_shortcut(bContext *C, ARegion *ar, void *arg) 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); + int kmi_id = WM_key_event_operator_id(C, but->optype->idname, but->opcontext, prop, 1, &km); kmi = WM_keymap_item_find_id(km, kmi_id); @@ -3412,7 +3726,8 @@ static uiBlock *menu_add_shortcut(bContext *C, ARegion *ar, void *arg) 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); + if (prop) + kmi->properties= IDP_CopyProperty(prop); RNA_pointer_create(NULL, &RNA_KeyMapItem, kmi, &ptr); @@ -3444,7 +3759,7 @@ static void remove_shortcut_func(bContext *C, void *arg1, void *arg2) 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); + int kmi_id = WM_key_event_operator_id(C, but->optype->idname, but->opcontext, prop, 1, &km); kmi = WM_keymap_item_find_id(km, kmi_id); WM_keymap_remove_item(km, kmi); @@ -3582,10 +3897,15 @@ static int ui_but_menu(bContext *C, uiBut *but) uiBut *but2; IDProperty *prop= (but->opptr)? but->opptr->data: NULL; int w = uiLayoutGetWidth(layout); - char buf[512]; + wmKeyMap *km; + wmKeyMapItem *kmi= NULL; + int kmi_id= WM_key_event_operator_id(C, but->optype->idname, but->opcontext, prop, 1, &km); + + if (kmi_id) + kmi= WM_keymap_item_find_id(km, kmi_id); /* keyboard shortcuts */ - if(WM_key_event_operator_string(C, but->optype->idname, but->opcontext, prop, buf, sizeof(buf))) { + if ((kmi) && ISKEYBOARD(kmi->type)) { // 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, ""); @@ -3662,6 +3982,10 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event) ui_but_copy_paste(C, but, data, (event->type == CKEY)? 'c': 'v'); return WM_UI_HANDLER_BREAK; } + /* handle drop */ + else if(event->type == EVT_DROP) { + ui_but_drop (C, event, but, data); + } /* handle keyframing */ else if(event->type == IKEY && event->val == KM_PRESS) { if(event->alt) @@ -3695,6 +4019,11 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event) return WM_UI_HANDLER_BREAK; } + /* reset to default */ + else if(event->type == ZEROKEY && event->val == KM_PRESS) { + if (!(ELEM3(but->type, HSVCIRCLE, HSVCUBE, HISTOGRAM))) + ui_set_but_default(C, but); + } /* handle menu */ else if(event->type == RIGHTMOUSE && event->val == KM_PRESS) { /* RMB has two options now */ @@ -3764,6 +4093,9 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event) case BUT_IMAGE: retval= ui_do_but_EXIT(C, but, data, event); break; + case HISTOGRAM: + retval= ui_do_but_HISTOGRAM(C, block, but, data, event); + break; case TEX: case IDPOIN: case SEARCH_MENU: @@ -3780,7 +4112,7 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event) retval= ui_do_but_BUT(C, but, data, event); break; case COL: - if(but->a1 == -1) // signal to prevent calling up color picker + if(but->a1 == 9) // signal to prevent calling up color picker retval= ui_do_but_EXIT(C, but, data, event); else retval= ui_do_but_BLOCK(C, but, data, event); @@ -3840,6 +4172,21 @@ int ui_button_is_active(ARegion *ar) return (ui_but_find_activated(ar) != NULL); } +/* returns TRUE if highlighted button allows drop of names */ +/* called in region context */ +int UI_but_active_drop_name(bContext *C) +{ + ARegion *ar= CTX_wm_region(C); + uiBut *but= ui_but_find_activated(ar); + + if(but) { + if(ELEM3(but->type, TEX, IDPOIN, SEARCH_MENU)) + return 1; + } + + return 0; +} + static void ui_blocks_set_tooltips(ARegion *ar, int enable) { uiBlock *block; @@ -3927,8 +4274,8 @@ static uiBut *ui_but_find_mouse_over(wmWindow *win, ARegion *ar, int x, int y) uiBut *but, *butover= NULL; int mx, my; - if(!win->active) - return NULL; +// if(!win->active) +// return NULL; if(!ui_mouse_inside_region(ar, x, y)) return NULL; @@ -3938,7 +4285,10 @@ static uiBut *ui_but_find_mouse_over(wmWindow *win, ARegion *ar, int x, int y) ui_window_to_block(ar, block, &mx, &my); for(but=block->buttons.first; but; but= but->next) { - if(ELEM4(but->type, LABEL, ROUNDBOX, SEPR, LISTBOX)) + /* note, LABEL is included for hilights, this allows drags */ + if(but->type==LABEL && but->dragpoin==NULL) + continue; + if(ELEM3(but->type, ROUNDBOX, SEPR, LISTBOX)) continue; if(but->flag & UI_HIDDEN) continue; @@ -3956,8 +4306,8 @@ static uiBut *ui_list_find_mouse_over(wmWindow *win, ARegion *ar, int x, int y) uiBut *but; int mx, my; - if(!win->active) - return NULL; +// if(!win->active) +// return NULL; if(!ui_mouse_inside_region(ar, x, y)) return NULL; @@ -4004,8 +4354,9 @@ static void button_timers_tooltip_remove(bContext *C, uiBut *but) } } -static void button_tooltip_timer_reset(uiBut *but) +static void button_tooltip_timer_reset(bContext *C, uiBut *but) { + wmWindowManager *wm= CTX_wm_manager(C); uiHandleButtonData *data; data= but->active; @@ -4017,7 +4368,8 @@ static void button_tooltip_timer_reset(uiBut *but) if(U.flag & USER_TOOLTIPS) if(!but->block->tooltipdisabled) - data->tooltiptimer= WM_event_add_timer(data->wm, data->window, TIMER, BUTTON_TOOLTIP_DELAY); + if(!wm->drags.first) + data->tooltiptimer= WM_event_add_timer(data->wm, data->window, TIMER, BUTTON_TOOLTIP_DELAY); } static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState state) @@ -4032,7 +4384,7 @@ static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState s if(state == BUTTON_STATE_HIGHLIGHT) { but->flag &= ~UI_SELECT; - button_tooltip_timer_reset(but); + button_tooltip_timer_reset(C, but); /* automatic open pulldown block timer */ if(ELEM3(but->type, BLOCK, PULLDOWN, ICONTEXTROW)) { @@ -4059,6 +4411,8 @@ static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState s ui_textedit_begin(C, but, data); else if(data->state == BUTTON_STATE_TEXT_EDITING && state != BUTTON_STATE_TEXT_SELECTING) ui_textedit_end(C, but, data); + else if(data->state == BUTTON_STATE_TEXT_SELECTING && state != BUTTON_STATE_TEXT_EDITING) + ui_textedit_end(C, but, data); /* number editing */ if(state == BUTTON_STATE_NUM_EDITING) { @@ -4097,6 +4451,11 @@ static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState s WM_event_remove_ui_handler(&data->window->modalhandlers, ui_handler_region_menu, NULL, data); } } + + /* wait for mousemove to enable drag */ + if(state == BUTTON_STATE_WAIT_DRAG) { + but->flag &= ~UI_SELECT; + } data->state= state; @@ -4356,7 +4715,7 @@ static int ui_handle_button_event(bContext *C, wmEvent *event, uiBut *but) else if(event->x!=event->prevx || event->y!=event->prevy) { /* re-enable tooltip on mouse move */ ui_blocks_set_tooltips(ar, 1); - button_tooltip_timer_reset(but); + button_tooltip_timer_reset(C, but); } break; @@ -4462,8 +4821,8 @@ static int ui_handle_button_event(bContext *C, wmEvent *event, uiBut *but) retval= WM_UI_HANDLER_CONTINUE; } else { - ui_do_button(C, block, but, event); - retval= WM_UI_HANDLER_BREAK; + retval= ui_do_button(C, block, but, event); + // retval= WM_UI_HANDLER_BREAK; XXX why ? } if(data->state == BUTTON_STATE_EXIT) { @@ -4802,9 +5161,16 @@ int ui_handle_menu_event(bContext *C, wmEvent *event, uiPopupBlockHandle *menu, if(but->type!=LABEL && but->type!=SEPR) count++; - + + /* exception for rna layer buts */ + if(but->rnapoin.data && but->rnaprop) { + if (ELEM(RNA_property_subtype(but->rnaprop), PROP_LAYER, PROP_LAYER_MEMBER)) { + if (but->rnaindex== act-1) + doit=1; + } + } /* exception for menus like layer buts, with button aligning they're not drawn in order */ - if(but->type==TOGR) { + else if(but->type==TOGR) { if(but->bitnr==act-1) doit= 1; } @@ -4888,7 +5254,7 @@ int ui_handle_menu_event(bContext *C, wmEvent *event, uiPopupBlockHandle *menu, /* if we are didn't handle the event yet, lets pass it on to * buttons inside this region. disabled inside check .. not sure - * anymore why it was there? but i meant enter enter didn't work + * anymore why it was there? but it meant enter didn't work * for example when mouse was not over submenu */ if((/*inside &&*/ (!menu->menuretval || menu->menuretval == UI_RETURN_UPDATE) && retval == WM_UI_HANDLER_CONTINUE) || event->type == TIMER) { but= ui_but_find_activated(ar); @@ -4947,8 +5313,6 @@ static int ui_handle_menu_return_submenu(bContext *C, wmEvent *event, uiPopupBlo } update= (submenu->menuretval == UI_RETURN_UPDATE); - if(update) - menu->menuretval = UI_RETURN_UPDATE; /* now let activated button in this menu exit, which * will actually close the submenu too */ diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c index 43c8b0b2c74..6c4f5564fd7 100644 --- a/source/blender/editors/interface/interface_icons.c +++ b/source/blender/editors/interface/interface_icons.c @@ -50,6 +50,7 @@ #include "DNA_userdef_types.h" #include "BKE_context.h" +#include "BKE_global.h" #include "BKE_image.h" #include "BKE_icons.h" #include "BKE_utildefines.h" @@ -474,7 +475,8 @@ static void init_internal_icons() if (BLI_exists(iconfilestr)) { bbuf = IMB_loadiffname(iconfilestr, IB_rect); if(bbuf->x < ICON_IMAGE_W || bbuf->y < ICON_IMAGE_H) { - printf("\n***WARNING***\nIcons file %s too small.\nUsing built-in Icons instead\n", iconfilestr); + if (G.f & G_DEBUG) + printf("\n***WARNING***\nIcons file %s too small.\nUsing built-in Icons instead\n", iconfilestr); IMB_freeImBuf(bbuf); bbuf= NULL; } @@ -611,6 +613,7 @@ static void init_iconfile_list(struct ListBase *list) for(; i>=0; i--){ MEM_freeN(dir[i].relname); + MEM_freeN(dir[i].path); if (dir[i].string) MEM_freeN(dir[i].string); } free(dir); @@ -694,7 +697,8 @@ int UI_icon_get_width(int icon_id) icon = BKE_icon_get(icon_id); if (!icon) { - printf("UI_icon_get_width: Internal error, no icon for icon ID: %d\n", icon_id); + if (G.f & G_DEBUG) + printf("UI_icon_get_width: Internal error, no icon for icon ID: %d\n", icon_id); return 0; } @@ -718,7 +722,8 @@ int UI_icon_get_height(int icon_id) icon = BKE_icon_get(icon_id); if (!icon) { - printf("UI_icon_get_height: Internal error, no icon for icon ID: %d\n", icon_id); + if (G.f & G_DEBUG) + printf("UI_icon_get_height: Internal error, no icon for icon ID: %d\n", icon_id); return 0; } @@ -757,7 +762,8 @@ static void icon_create_mipmap(struct PreviewImage* prv_img, int miplevel) unsigned int size = preview_render_size(miplevel); if (!prv_img) { - printf("Error: requested preview image does not exist"); + if (G.f & G_DEBUG) + printf("Error: requested preview image does not exist"); } if (!prv_img->rect[miplevel]) { prv_img->w[miplevel] = size; @@ -772,7 +778,8 @@ static void icon_create_mipmap(struct PreviewImage* prv_img, int miplevel) static void icon_set_image(bContext *C, ID *id, PreviewImage* prv_img, int miplevel) { if (!prv_img) { - printf("No preview image for this ID: %s\n", id->name); + if (G.f & G_DEBUG) + printf("No preview image for this ID: %s\n", id->name); return; } @@ -802,13 +809,14 @@ static void icon_draw_rect(float x, float y, int w, int h, float aspect, int rw, /* draw */ if((w<1 || h<1)) { // XXX - TODO 2.5 verify whether this case can happen - // and only print in debug - printf("what the heck! - icons are %i x %i pixels?\n", w, h); + if (G.f & G_DEBUG) + printf("what the heck! - icons are %i x %i pixels?\n", w, h); } /* rect contains image in 'rendersize', we only scale if needed */ else if(rw!=w && rh!=h) { if(w>2000 || h>2000) { /* something has gone wrong! */ - printf("insane icon size w=%d h=%d\n",w,h); + if (G.f & G_DEBUG) + printf("insane icon size w=%d h=%d\n",w,h); } else { ImBuf *ima; @@ -891,7 +899,8 @@ static void icon_draw_size(float x, float y, int icon_id, float aspect, float al icon = BKE_icon_get(icon_id); if (!icon) { - printf("icon_draw_mipmap: Internal error, no icon for icon ID: %d\n", icon_id); + if (G.f & G_DEBUG) + printf("icon_draw_mipmap: Internal error, no icon for icon ID: %d\n", icon_id); return; } diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h index 72fa949c2b8..e0669a19286 100644 --- a/source/blender/editors/interface/interface_intern.h +++ b/source/blender/editors/interface/interface_intern.h @@ -46,6 +46,7 @@ struct uiLayout; struct bContextStore; struct Scene; struct ID; +struct ImBuf; /* ****************** general defines ************** */ @@ -93,7 +94,7 @@ typedef enum { #define UI_MAX_DRAW_STR 400 -#define UI_MAX_NAME_STR 64 +#define UI_MAX_NAME_STR 128 #define UI_ARRAY 29 /* panel limits */ @@ -226,8 +227,14 @@ struct uiBut { int opcontext; struct IDProperty *opproperties; struct PointerRNA *opptr; + + /* Draggable data, type is WM_DRAG_... */ + int dragtype; + void *dragpoin; + struct ImBuf *imb; + float imb_scale; - /* active button data */ + /* active button data */ struct uiHandleButtonData *active; char *editstr; @@ -318,6 +325,8 @@ typedef struct uiSafetyRct { /* interface.c */ +extern void ui_delete_linkline(uiLinkLine *line, uiBut *but); + extern int ui_translate_buttons(void); extern int ui_translate_menus(void); extern int ui_translate_tooltips(void); @@ -343,12 +352,13 @@ extern void ui_get_but_string(uiBut *but, char *str, int maxlen); extern int ui_set_but_string(struct bContext *C, uiBut *but, const char *str); extern int ui_get_but_string_max_length(uiBut *but); +extern void ui_set_but_default(struct bContext *C, uiBut *but); + extern void ui_set_but_soft_range(uiBut *but, double value); extern void ui_check_but(uiBut *but); extern int ui_is_but_float(uiBut *but); extern int ui_is_but_unit(uiBut *but); -extern void ui_update_block_buts_hsv(uiBlock *block, float *hsv); extern void ui_bounds_block(uiBlock *block); extern void ui_block_translate(uiBlock *block, int x, int y); @@ -378,7 +388,7 @@ struct uiPopupBlockHandle { int butretval; int menuretval; float retvalue; - float retvec[3]; + float retvec[4]; }; uiBlock *ui_block_func_COL(struct bContext *C, uiPopupBlockHandle *handle, void *arg_but); @@ -427,12 +437,14 @@ extern void gl_round_box(int mode, float minx, float miny, float maxx, float max extern void gl_round_box_shade(int mode, float minx, float miny, float maxx, float maxy, float rad, float shadetop, float shadedown); extern void gl_round_box_vertical_shade(int mode, float minx, float miny, float maxx, float maxy, float rad, float shadeLeft, float shadeRight); +void ui_draw_gradient(rcti *rect, float *rgb, int type, float alpha); + +void ui_draw_but_HISTOGRAM(ARegion *ar, uiBut *but, struct uiWidgetColors *wcol, rcti *rect); void ui_draw_but_COLORBAND(uiBut *but, struct uiWidgetColors *wcol, rcti *rect); void ui_draw_but_NORMAL(uiBut *but, struct uiWidgetColors *wcol, rcti *rect); void ui_draw_but_CURVE(ARegion *ar, uiBut *but, struct uiWidgetColors *wcol, rcti *rect); void ui_draw_but_IMAGE(ARegion *ar, uiBut *but, struct uiWidgetColors *wcol, rcti *rect); - /* interface_handlers.c */ extern void ui_button_activate_do(struct bContext *C, struct ARegion *ar, uiBut *but); extern void ui_button_active_cancel(const struct bContext *C, uiBut *but); @@ -442,6 +454,7 @@ extern int ui_button_is_active(struct ARegion *ar); void ui_draw_anti_tria(float x1, float y1, float x2, float y2, float x3, float y3); void ui_draw_menu_back(struct uiStyle *style, uiBlock *block, rcti *rect); void ui_draw_search_back(struct uiStyle *style, uiBlock *block, rcti *rect); +int ui_link_bezier_points(rcti *rect, float coord_array[][2], int resol); void ui_draw_link_bezier(rcti *rect); extern void ui_draw_but(const struct bContext *C, ARegion *ar, struct uiStyle *style, uiBut *but, rcti *rect); @@ -482,7 +495,7 @@ void ui_but_anim_add_keyingset(struct bContext *C); void ui_but_anim_remove_keyingset(struct bContext *C); int ui_but_anim_expression_get(uiBut *but, char *str, int maxlen); int ui_but_anim_expression_set(uiBut *but, const char *str); -void ui_but_anim_autokey(uiBut *but, struct Scene *scene, float cfra); +void ui_but_anim_autokey(struct bContext *C, uiBut *but, struct Scene *scene, float cfra); #endif diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index c2af4150aa2..52ea0a99762 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -388,28 +388,28 @@ static void ui_item_array(uiLayout *layout, uiBlock *block, char *name, int icon } } else if(subtype == PROP_MATRIX) { - /* matrix layout */ + int totdim, dim_size[3]; /* 3 == RNA_MAX_ARRAY_DIMENSION */ int row, col; uiBlockSetCurLayout(block, uiLayoutAbsolute(layout, 1)); - len= ceil(sqrt(len)); - - h /= len; - w /= len; + totdim= RNA_property_array_dimension(ptr, prop, dim_size); + if (totdim != 2) return; /* only 2D matrices supported in UI so far */ + + w /= dim_size[0]; + h /= dim_size[1]; - // XXX test for(a=0; a<len; a++) { - col= a%len; - row= a/len; - - but= uiDefAutoButR(block, ptr, prop, a, "", 0, x + w*col, y+(row-a-1)*UI_UNIT_Y, w, UI_UNIT_Y); + col= a % dim_size[0]; + row= a / dim_size[0]; + + but= uiDefAutoButR(block, ptr, prop, a, "", 0, x + w*col, y+(dim_size[1]*UI_UNIT_Y)-(row*UI_UNIT_Y), w, UI_UNIT_Y); if(slider && but->type==NUM) but->type= NUMSLI; } } else { - if(ELEM(subtype, PROP_COLOR, PROP_COLOR_GAMMA)) + if(ELEM(subtype, PROP_COLOR, PROP_COLOR_GAMMA) && !expand) uiDefAutoButR(block, ptr, prop, -1, "", 0, 0, 0, w, UI_UNIT_Y); if(!ELEM(subtype, PROP_COLOR, PROP_COLOR_GAMMA) || expand) { @@ -911,7 +911,7 @@ void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, Proper name= (char*)RNA_property_ui_name(prop); if(!icon) icon= RNA_property_ui_icon(prop); - + if(ELEM4(type, PROP_INT, PROP_FLOAT, PROP_STRING, PROP_POINTER)) name= ui_item_name_add_colon(name, namestr); else if(type == PROP_BOOLEAN && len && index == RNA_NO_INDEX) @@ -1321,7 +1321,7 @@ void uiItemM(uiLayout *layout, bContext *C, char *name, int icon, char *menuname } /* label item */ -void uiItemL(uiLayout *layout, char *name, int icon) +static uiBut *uiItemL_(uiLayout *layout, char *name, int icon) { uiBlock *block= layout->root->block; uiBut *but; @@ -1342,8 +1342,25 @@ void uiItemL(uiLayout *layout, char *name, int icon) but= uiDefIconBut(block, LABEL, 0, icon, 0, 0, w, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, ""); else but= uiDefBut(block, LABEL, 0, (char*)name, 0, 0, w, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, ""); + + return but; } +void uiItemL(uiLayout *layout, char *name, int icon) +{ + uiItemL_(layout, name, icon); +} + +void uiItemLDrag(uiLayout *layout, PointerRNA *ptr, char *name, int icon) +{ + uiBut *but= uiItemL_(layout, name, icon); + + if(ptr && ptr->type) + if(RNA_struct_is_ID(ptr->type)) + uiButSetDragID(but, ptr->id.data); +} + + /* value item */ void uiItemV(uiLayout *layout, char *name, int icon, int argval) { diff --git a/source/blender/editors/interface/interface_ops.c b/source/blender/editors/interface/interface_ops.c index f016ffe19ae..268f6d6e648 100644 --- a/source/blender/editors/interface/interface_ops.c +++ b/source/blender/editors/interface/interface_ops.c @@ -40,6 +40,7 @@ #include "DNA_view2d_types.h" #include "BLI_blenlib.h" +#include "BLI_math_color.h" #include "BKE_context.h" #include "BKE_utildefines.h" @@ -59,6 +60,142 @@ /* ********************************************************** */ +typedef struct Eyedropper { + PointerRNA ptr; + PropertyRNA *prop; + int index; +} Eyedropper; + +static int eyedropper_init(bContext *C, wmOperator *op) +{ + Eyedropper *eye; + + op->customdata= eye= MEM_callocN(sizeof(Eyedropper), "Eyedropper"); + + uiAnimContextProperty(C, &eye->ptr, &eye->prop, &eye->index); + + return (eye->ptr.data && eye->prop && RNA_property_editable(&eye->ptr, eye->prop)); +} + +static void eyedropper_exit(bContext *C, wmOperator *op) +{ + WM_cursor_restore(CTX_wm_window(C)); + + if(op->customdata) + MEM_freeN(op->customdata); + op->customdata= NULL; +} + +static int eyedropper_cancel(bContext *C, wmOperator *op) +{ + eyedropper_exit(C, op); + return OPERATOR_CANCELLED; +} + +static void eyedropper_sample(bContext *C, Eyedropper *eye, short mx, short my) +{ + float col[3]; + + glReadBuffer(GL_FRONT); + glReadPixels(mx, my, 1, 1, GL_RGB, GL_FLOAT, col); + glReadBuffer(GL_BACK); + + if(RNA_property_type(eye->prop) == PROP_FLOAT) { + + if (RNA_property_array_length(&eye->ptr, eye->prop) < 3) return; + + /* convert from screen (srgb) space to linear rgb space */ + if (RNA_property_subtype(eye->prop) == PROP_COLOR) + srgb_to_linearrgb_v3_v3(col, col); + + RNA_property_float_set_array(&eye->ptr, eye->prop, col); + + RNA_property_update(C, &eye->ptr, eye->prop); + } +} + +/* main modal status check */ +static int eyedropper_modal(bContext *C, wmOperator *op, wmEvent *event) +{ + Eyedropper *eye = (Eyedropper *)op->customdata; + + switch(event->type) { + case ESCKEY: + case RIGHTMOUSE: + return eyedropper_cancel(C, op); + case LEFTMOUSE: + if(event->val==KM_RELEASE) { + eyedropper_sample(C, eye, event->x, event->y); + eyedropper_exit(C, op); + return OPERATOR_FINISHED; + } + break; + } + + return OPERATOR_RUNNING_MODAL; +} + +/* Modal Operator init */ +static int eyedropper_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + /* init */ + if (eyedropper_init(C, op)) { + WM_cursor_modal(CTX_wm_window(C), BC_EYEDROPPER_CURSOR); + + /* add temp handler */ + WM_event_add_modal_handler(C, op); + + return OPERATOR_RUNNING_MODAL; + } else { + eyedropper_exit(C, op); + return OPERATOR_CANCELLED; + } +} + +/* Repeat operator */ +static int eyedropper_exec (bContext *C, wmOperator *op) +{ + /* init */ + if (eyedropper_init(C, op)) { + + /* do something */ + + /* cleanup */ + eyedropper_exit(C, op); + + return OPERATOR_FINISHED; + } else { + return OPERATOR_CANCELLED; + } +} + +static int eyedropper_poll(bContext *C) +{ + if (!CTX_wm_window(C)) return 0; + else return 1; +} + +void UI_OT_eyedropper(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Eyedropper"; + ot->idname= "UI_OT_eyedropper"; + ot->description= "Sample a color from the Blender Window to store in a property"; + + /* api callbacks */ + ot->invoke= eyedropper_invoke; + ot->modal= eyedropper_modal; + ot->cancel= eyedropper_cancel; + ot->exec= eyedropper_exec; + ot->poll= eyedropper_poll; + + /* flags */ + ot->flag= OPTYPE_BLOCKING; + + /* properties */ +} + + /* Copy Data Path Operator ------------------------ */ static int copy_data_path_button_exec(bContext *C, wmOperator *op) @@ -248,6 +385,7 @@ void UI_OT_copy_to_selected_button(wmOperatorType *ot) void UI_buttons_operatortypes(void) { + WM_operatortype_append(UI_OT_eyedropper); 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_panel.c b/source/blender/editors/interface/interface_panel.c index e73a4fbe977..c70bb2dcfa5 100644 --- a/source/blender/editors/interface/interface_panel.c +++ b/source/blender/editors/interface/interface_panel.c @@ -108,6 +108,8 @@ static int panel_aligned(ScrArea *sa, ARegion *ar) return BUT_VERTICAL; else if(sa->spacetype==SPACE_FILE && ar->regiontype == RGN_TYPE_CHANNELS) return BUT_VERTICAL; + else if(sa->spacetype==SPACE_IMAGE && ar->regiontype == RGN_TYPE_PREVIEW) + return BUT_VERTICAL; else if(ELEM3(ar->regiontype, RGN_TYPE_UI, RGN_TYPE_TOOLS, RGN_TYPE_TOOL_PROPS)) return BUT_VERTICAL; @@ -130,6 +132,8 @@ static int panels_re_align(ScrArea *sa, ARegion *ar, Panel **r_pa) } else if(ar->regiontype==RGN_TYPE_UI) return 1; + else if(sa->spacetype==SPACE_IMAGE && ar->regiontype == RGN_TYPE_PREVIEW) + return 1; else if(sa->spacetype==SPACE_FILE && ar->regiontype == RGN_TYPE_CHANNELS) return 1; diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index b6956f84000..b3a3da5e916 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -390,6 +390,16 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but) } if(but->rnaprop) { + int unit_type = RNA_SUBTYPE_UNIT(RNA_property_subtype(but->rnaprop)); + + if (unit_type == PROP_UNIT_ROTATION) { + if (RNA_property_type(but->rnaprop) == PROP_FLOAT) { + BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), "Radians: %f", RNA_property_float_get_index(&but->rnapoin, but->rnaprop, but->rnaindex)); + data->linedark[data->totline]= 1; + data->totline++; + } + } + if(but->flag & UI_BUT_DRIVEN) { if(ui_but_anim_expression_get(but, buf, sizeof(buf))) { /* expression */ @@ -435,7 +445,6 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but) /* set font, get bb */ data->fstyle= style->widget; /* copy struct */ data->fstyle.align= UI_STYLE_TEXT_CENTER; - ui_fontscale(&data->fstyle.points, aspect); uiStyleFontSet(&data->fstyle); h= BLF_height(data->lines[0]); @@ -447,13 +456,12 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but) } fontw *= aspect; - fonth *= aspect; ar->regiondata= data; data->toth= fonth; - data->lineh= h*aspect; - data->spaceh= 5*aspect; + data->lineh= h; + data->spaceh= 5; /* compute position */ ofsx= (but->block->panel)? but->block->panel->ofsx: 0; @@ -462,7 +470,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but) x1f= (but->x1+but->x2)/2.0f + ofsx - 16.0f*aspect; x2f= x1f + fontw + 16.0f*aspect; y2f= but->y1 + ofsy - 15.0f*aspect; - y1f= y2f - fonth - 10.0f*aspect; + y1f= y2f - fonth*aspect - 15.0f*aspect; /* copy to int, gets projected if possible too */ x1= x1f; y1= y1f; x2= x2f; y2= y2f; @@ -494,8 +502,8 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but) } } if(y1 < 0) { - y1 += 56*aspect; - y2 += 56*aspect; + y1 += 56; + y2 += 56; } /* widget rect, in region coords */ @@ -1339,7 +1347,7 @@ uiPopupBlockHandle *ui_popup_block_create(bContext *C, ARegion *butregion, uiBut saferct= MEM_callocN(sizeof(uiSafetyRct), "uiSafetyRct"); saferct->safety= block->safety; BLI_addhead(&block->saferct, saferct); - block->flag |= UI_BLOCK_POPUP; + block->flag |= UI_BLOCK_POPUP|UI_BLOCK_NUMSELECT; } /* the block and buttons were positioned in window space as in 2.4x, now @@ -1535,15 +1543,6 @@ static void ui_warp_pointer(short x, short y) #define DPICK 6.0 #define BPICK 24.0 -#define UI_PALETTE_TOT 16 -/* note; in tot+1 the old color is stored */ -static float palette[UI_PALETTE_TOT+1][3]= { -{0.93, 0.83, 0.81}, {0.88, 0.89, 0.73}, {0.69, 0.81, 0.57}, {0.51, 0.76, 0.64}, -{0.37, 0.56, 0.61}, {0.33, 0.29, 0.55}, {0.46, 0.21, 0.51}, {0.40, 0.12, 0.18}, -{1.0, 1.0, 1.0}, {0.85, 0.85, 0.85}, {0.7, 0.7, 0.7}, {0.56, 0.56, 0.56}, -{0.42, 0.42, 0.42}, {0.28, 0.28, 0.28}, {0.14, 0.14, 0.14}, {0.0, 0.0, 0.0} -}; - /* for picker, while editing hsv */ void ui_set_but_hsv(uiBut *but) { @@ -1553,50 +1552,37 @@ void ui_set_but_hsv(uiBut *but) ui_set_but_vectorf(but, col); } -static void update_picker_hex(uiBlock *block, float *rgb) +/* also used by small picker, be careful with name checks below... */ +void ui_update_block_buts_rgb(uiBlock *block, float *rgb) { uiBut *bt; - char col[16]; + float hsv[3]; - sprintf(col, "%02X%02X%02X", (unsigned int)(rgb[0]*255.0), (unsigned int)(rgb[1]*255.0), (unsigned int)(rgb[2]*255.0)); + rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2); // this updates button strings, is hackish... but button pointers are on stack of caller function - for(bt= block->buttons.first; bt; bt= bt->next) { - if(strcmp(bt->str, "Hex: ")==0) + if (bt->rnaprop) { + + ui_set_but_vectorf(bt, rgb); + + } + else if(strcmp(bt->str, "Hex: ")==0) { + char col[16]; + + sprintf(col, "%02X%02X%02X", (unsigned int)(rgb[0]*255.0), (unsigned int)(rgb[1]*255.0), (unsigned int)(rgb[2]*255.0)); + strcpy(bt->poin, col); - - ui_check_but(bt); - } -} - -/* also used by small picker, be careful with name checks below... */ -void ui_update_block_buts_hsv(uiBlock *block, float *hsv) -{ - uiBut *bt; - float r, g, b; - float rgb[3]; - - // this updates button strings, is hackish... but button pointers are on stack of caller function - hsv_to_rgb(hsv[0], hsv[1], hsv[2], &r, &g, &b); - - rgb[0] = r; rgb[1] = g; rgb[2] = b; - update_picker_hex(block, rgb); - - for(bt= block->buttons.first; bt; bt= bt->next) { - if(ELEM(bt->type, HSVCUBE, HSVCIRCLE)) { - VECCOPY(bt->hsv, hsv); - ui_set_but_hsv(bt); } else if(bt->str[1]==' ') { if(bt->str[0]=='R') { - ui_set_but_val(bt, r); + ui_set_but_val(bt, rgb[0]); } else if(bt->str[0]=='G') { - ui_set_but_val(bt, g); + ui_set_but_val(bt, rgb[1]); } else if(bt->str[0]=='B') { - ui_set_but_val(bt, b); + ui_set_but_val(bt, rgb[2]); } else if(bt->str[0]=='H') { ui_set_but_val(bt, hsv[0]); @@ -1613,315 +1599,62 @@ void ui_update_block_buts_hsv(uiBlock *block, float *hsv) } } -static void ui_update_block_buts_hex(uiBlock *block, char *hexcol) +static void do_picker_rna_cb(bContext *C, void *bt1, void *unused) { - uiBut *bt; - float r=0, g=0, b=0; - float h, s, v; + uiBut *but= (uiBut *)bt1; + uiPopupBlockHandle *popup= but->block->handle; + PropertyRNA *prop = but->rnaprop; + PointerRNA ptr = but->rnapoin; + float rgb[4]; - - // this updates button strings, is hackish... but button pointers are on stack of caller function - hex_to_rgb(hexcol, &r, &g, &b); - rgb_to_hsv(r, g, b, &h, &s, &v); - - for(bt= block->buttons.first; bt; bt= bt->next) { - if(bt->type==HSVCUBE) { - bt->hsv[0] = h; - bt->hsv[1] = s; - bt->hsv[2] = v; - ui_set_but_hsv(bt); - } - else if(bt->str[1]==' ') { - if(bt->str[0]=='R') { - ui_set_but_val(bt, r); - } - else if(bt->str[0]=='G') { - ui_set_but_val(bt, g); - } - else if(bt->str[0]=='B') { - ui_set_but_val(bt, b); - } - else if(bt->str[0]=='H') { - ui_set_but_val(bt, h); - } - else if(bt->str[0]=='S') { - ui_set_but_val(bt, s); - } - else if(bt->str[0]=='V') { - ui_set_but_val(bt, v); - } - } - - ui_check_but(bt); + if (prop) { + RNA_property_float_get_array(&ptr, prop, rgb); + ui_update_block_buts_rgb(but->block, rgb); } -} - -/* bt1 is palette but, col1 is original color */ -/* callback to copy from/to palette */ -static void do_palette_cb(bContext *C, void *bt1, void *col1) -{ - wmWindow *win= CTX_wm_window(C); - uiBut *but1= (uiBut *)bt1; - uiPopupBlockHandle *popup= but1->block->handle; - float *col= (float *)col1; - float *fp, hsv[3]; - fp= (float *)but1->poin; - - if(win->eventstate->ctrl) { - VECCOPY(fp, col); - } - else { - VECCOPY(col, fp); - } - - rgb_to_hsv(col[0], col[1], col[2], hsv, hsv+1, hsv+2); - ui_update_block_buts_hsv(but1->block, hsv); - update_picker_hex(but1->block, col); - if(popup) popup->menuretval= UI_RETURN_UPDATE; } -static void do_hsv_cb(bContext *C, void *bt1, void *unused) +static void do_hsv_rna_cb(bContext *C, void *bt1, void *hsv_arg) { - uiBut *but1= (uiBut *)bt1; - uiPopupBlockHandle *popup= but1->block->handle; - - if(popup) - popup->menuretval= UI_RETURN_UPDATE; -} - -/* bt1 is num but, hsv1 is pointer to original color in hsv space*/ -/* callback to handle changes in num-buts in picker */ -static void do_palette1_cb(bContext *C, void *bt1, void *hsv1) -{ - uiBut *but1= (uiBut *)bt1; - uiPopupBlockHandle *popup= but1->block->handle; - float *hsv= (float *)hsv1; - float *fp= NULL; + uiBut *but= (uiBut *)bt1; + uiPopupBlockHandle *popup= but->block->handle; + float *hsv = (float *)hsv_arg; + float rgb[3]; - if(but1->str[1]==' ') { - if(but1->str[0]=='R') fp= (float *)but1->poin; - else if(but1->str[0]=='G') fp= ((float *)but1->poin)-1; - else if(but1->str[0]=='B') fp= ((float *)but1->poin)-2; - } - if(fp) { - rgb_to_hsv(fp[0], fp[1], fp[2], hsv, hsv+1, hsv+2); - } - ui_update_block_buts_hsv(but1->block, hsv); - - if(popup) - popup->menuretval= UI_RETURN_UPDATE; -} - -/* bt1 is num but, col1 is pointer to original color */ -/* callback to handle changes in num-buts in picker */ -static void do_palette2_cb(bContext *C, void *bt1, void *col1) -{ - uiBut *but1= (uiBut *)bt1; - uiPopupBlockHandle *popup= but1->block->handle; - float *rgb= (float *)col1; - float *fp= NULL; + hsv_to_rgb(hsv[0], hsv[1], hsv[2], rgb, rgb+1, rgb+2); - if(but1->str[1]==' ') { - if(but1->str[0]=='H') fp= (float *)but1->poin; - else if(but1->str[0]=='S') fp= ((float *)but1->poin)-1; - else if(but1->str[0]=='V') fp= ((float *)but1->poin)-2; - } - if(fp) { - hsv_to_rgb(fp[0], fp[1], fp[2], rgb, rgb+1, rgb+2); - } - ui_update_block_buts_hsv(but1->block, fp); - - if(popup) - popup->menuretval= UI_RETURN_UPDATE; -} - -static void do_palette_hex_cb(bContext *C, void *bt1, void *hexcl) -{ - uiBut *but1= (uiBut *)bt1; - uiPopupBlockHandle *popup= but1->block->handle; - char *hexcol= (char *)hexcl; + ui_update_block_buts_rgb(but->block, rgb); - ui_update_block_buts_hex(but1->block, hexcol); - if(popup) popup->menuretval= UI_RETURN_UPDATE; } -/* used for both 3d view and image window */ -static void do_palette_sample_cb(bContext *C, void *bt1, void *col1) /* frontbuf */ +static void do_hex_rna_cb(bContext *C, void *bt1, void *hexcl) { - /* XXX 2.50 this should become an operator? */ -#if 0 - uiBut *but1= (uiBut *)bt1; - uiBut *but; - float tempcol[4]; - int x=0, y=0; - short mval[2]; - float hsv[3]; - short capturing; - int oldcursor; - Window *win; - unsigned short dev; - - oldcursor=get_cursor(); - win=winlay_get_active_window(); - - while (get_mbut() & L_MOUSE) UI_wait_for_statechange(); - - SetBlenderCursor(BC_EYEDROPPER_CURSOR); - - /* loop and wait for a mouse click */ - capturing = TRUE; - while(capturing) { - char ascii; - short val; - - dev = extern_qread_ext(&val, &ascii); - - if(dev==INPUTCHANGE) break; - if(get_mbut() & R_MOUSE) break; - else if(get_mbut() & L_MOUSE) { - uiGetMouse(mywinget(), mval); - x= mval[0]; y= mval[1]; - - capturing = FALSE; - break; - } - else if(dev==ESCKEY) break; - } - window_set_cursor(win, oldcursor); - - if(capturing) return; - - if(x<0 || y<0) return; - - /* if we've got a glick, use OpenGL to sample the color under the mouse pointer */ - glReadBuffer(GL_FRONT); - glReadPixels(x, y, 1, 1, GL_RGBA, GL_FLOAT, tempcol); - glReadBuffer(GL_BACK); - - /* and send that color back to the picker */ - rgb_to_hsv(tempcol[0], tempcol[1], tempcol[2], hsv, hsv+1, hsv+2); - ui_update_block_buts_hsv(but1->block, hsv); - update_picker_hex(but1->block, tempcol); - - for (but= but1->block->buttons.first; but; but= but->next) { - ui_check_but(but); - ui_draw_but(but); - } - - but= but1->block->buttons.first; - ui_block_flush_back(but->block); -#endif -} - -/* color picker, Gimp version. mode: 'f' = floating panel, 'p' = popup */ -/* col = read/write to, hsv/old/hexcol = memory for temporal use */ -void uiBlockPickerButtons(uiBlock *block, float *col, float *hsv, float *old, char *hexcol, char mode, short retval) -{ - uiBut *bt; - float h, offs; - int a; - - VECCOPY(old, col); // old color stored there, for palette_cb to work - - // the cube intersection - bt= uiDefButF(block, HSVCUBE, retval, "", 0,DPICK+BPICK,FPICK,FPICK, col, 0.0, 0.0, 2, 0, ""); - uiButSetFunc(bt, do_hsv_cb, bt, NULL); - - bt= uiDefButF(block, HSVCUBE, retval, "", 0,0,FPICK,BPICK, col, 0.0, 0.0, 3, 0, ""); - uiButSetFunc(bt, do_hsv_cb, bt, NULL); - - // palette - - bt=uiDefButF(block, COL, retval, "", FPICK+DPICK, 0, BPICK,BPICK, old, 0.0, 0.0, -1, 0, "Old color, click to restore"); - uiButSetFunc(bt, do_palette_cb, bt, col); - uiDefButF(block, COL, retval, "", FPICK+DPICK, BPICK+DPICK, BPICK,60-BPICK-DPICK, col, 0.0, 0.0, -1, 0, "Active color"); - - h= (DPICK+BPICK+FPICK-64)/(UI_PALETTE_TOT/2.0); - uiBlockBeginAlign(block); - for(a= -1+UI_PALETTE_TOT/2; a>=0; a--) { - bt= uiDefButF(block, COL, retval, "", FPICK+DPICK, 65.0+(float)a*h, BPICK/2, h, palette[a+UI_PALETTE_TOT/2], 0.0, 0.0, -1, 0, "Click to choose, hold CTRL to store in palette"); - uiButSetFunc(bt, do_palette_cb, bt, col); - bt= uiDefButF(block, COL, retval, "", FPICK+DPICK+BPICK/2, 65.0+(float)a*h, BPICK/2, h, palette[a], 0.0, 0.0, -1, 0, "Click to choose, hold CTRL to store in palette"); - uiButSetFunc(bt, do_palette_cb, bt, col); - } - uiBlockEndAlign(block); + uiBut *but= (uiBut *)bt1; + uiPopupBlockHandle *popup= but->block->handle; + char *hexcol= (char *)hexcl; + float rgb[3]; - // buttons - rgb_to_hsv(col[0], col[1], col[2], hsv, hsv+1, hsv+2); - sprintf(hexcol, "%02X%02X%02X", (unsigned int)(col[0]*255.0), (unsigned int)(col[1]*255.0), (unsigned int)(col[2]*255.0)); - - offs= FPICK+2*DPICK+BPICK; - - /* note; made this a TOG now, with NULL pointer. Is because BUT now gets handled with a afterfunc */ - bt= uiDefIconTextBut(block, TOG, UI_RETURN_OK, ICON_EYEDROPPER, "Sample", offs+55, 170, 85, 20, NULL, 0, 0, 0, 0, "Sample the color underneath the following mouse click (ESC or RMB to cancel)"); - uiButSetFunc(bt, do_palette_sample_cb, bt, col); - uiButSetFlag(bt, UI_TEXT_LEFT); + hex_to_rgb(hexcol, rgb, rgb+1, rgb+2); - bt= uiDefBut(block, TEX, retval, "Hex: ", offs, 140, 140, 20, hexcol, 0, 8, 0, 0, "Hex triplet for color (#RRGGBB)"); - uiButSetFunc(bt, do_palette_hex_cb, bt, hexcol); - - uiBlockBeginAlign(block); - bt= uiDefButF(block, NUMSLI, retval, "R ", offs, 110, 140,20, col, 0.0, 1.0, 10, 3, ""); - uiButSetFunc(bt, do_palette1_cb, bt, hsv); - bt= uiDefButF(block, NUMSLI, retval, "G ", offs, 90, 140,20, col+1, 0.0, 1.0, 10, 3, ""); - uiButSetFunc(bt, do_palette1_cb, bt, hsv); - bt= uiDefButF(block, NUMSLI, retval, "B ", offs, 70, 140,20, col+2, 0.0, 1.0, 10, 3, ""); - uiButSetFunc(bt, do_palette1_cb, bt, hsv); - - uiBlockBeginAlign(block); - bt= uiDefButF(block, NUMSLI, retval, "H ", offs, 40, 140,20, hsv, 0.0, 1.0, 10, 3, ""); - uiButSetFunc(bt, do_palette2_cb, bt, col); - bt= uiDefButF(block, NUMSLI, retval, "S ", offs, 20, 140,20, hsv+1, 0.0, 1.0, 10, 3, ""); - uiButSetFunc(bt, do_palette2_cb, bt, col); - bt= uiDefButF(block, NUMSLI, retval, "V ", offs, 0, 140,20, hsv+2, 0.0, 1.0, 10, 3, ""); - uiButSetFunc(bt, do_palette2_cb, bt, col); - uiBlockEndAlign(block); -} - -/* bt1 is num but, hsv1 is pointer to original color in hsv space*/ -/* callback to handle changes */ -static void do_picker_small_cb(bContext *C, void *bt1, void *hsv1) -{ - uiBut *but1= (uiBut *)bt1; - uiPopupBlockHandle *popup= but1->block->handle; - float *hsv= (float *)hsv1; - float *fp= NULL; - - fp= (float *)but1->poin; - rgb_to_hsv(fp[0], fp[1], fp[2], hsv, hsv+1, hsv+2); - - ui_update_block_buts_hsv(but1->block, hsv); + ui_update_block_buts_rgb(but->block, rgb); if(popup) popup->menuretval= UI_RETURN_UPDATE; } -/* picker sizes S hsize, F full size, D spacer, B button/pallette height */ -#define SPICK1 150.0 -#define DPICK1 6.0 - -/* only the color, a HS circle and V slider */ -static void uiBlockPickerSmall(uiBlock *block, float *col, float *hsv, float *old, char *hexcol, char mode, short retval) +static void close_popup_cb(bContext *C, void *bt1, void *arg) { - uiBut *bt; - - VECCOPY(old, col); // old color stored there, for palette_cb to work + uiBut *but= (uiBut *)bt1; + uiPopupBlockHandle *popup= but->block->handle; - /* 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); - - /* value */ - bt= uiDefButF(block, HSVCUBE, retval, "", SPICK1+DPICK1,0,14,SPICK1, col, 0.0, 0.0, 4, 0, ""); - uiButSetFunc(bt, do_picker_small_cb, bt, hsv); + if(popup) + popup->menuretval= UI_RETURN_OK; } - static void picker_new_hide_reveal(uiBlock *block, short colormode) { uiBut *bt; @@ -1950,20 +1683,62 @@ static void do_picker_new_mode_cb(bContext *C, void *bt1, void *colv) { uiBut *bt= bt1; short colormode= ui_get_but_val(bt); - picker_new_hide_reveal(bt->block, colormode); } +/* picker sizes S hsize, F full size, D spacer, B button/pallette height */ +#define SPICK1 150.0 +#define DPICK1 6.0 + +#define PICKER_H 150 +#define PICKER_W 150 +#define PICKER_SPACE 6 +#define PICKER_BAR 14 + +#define PICKER_TOTAL_W (PICKER_W+PICKER_SPACE+PICKER_BAR) + +static void circle_picker(uiBlock *block, PointerRNA *ptr, const char *propname) +{ + uiBut *bt; + + /* HS circle */ + bt= uiDefButR(block, HSVCIRCLE, 0, "", 0, 0, PICKER_H, PICKER_W, ptr, propname, -1, 0.0, 0.0, 0, 0, ""); + uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); + + /* value */ + bt= uiDefButR(block, HSVCUBE, 0, "", PICKER_W+PICKER_SPACE,0,PICKER_BAR,PICKER_H, ptr, propname, -1, 0.0, 0.0, UI_GRAD_V_ALT, 0, ""); + uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); +} + + +static void square_picker(uiBlock *block, PointerRNA *ptr, const char *propname, int type) +{ + uiBut *bt; + int bartype = type + 3; + + /* HS square */ + bt= uiDefButR(block, HSVCUBE, 0, "", 0, PICKER_BAR+PICKER_SPACE, PICKER_TOTAL_W, PICKER_H, ptr, propname, -1, 0.0, 0.0, type, 0, ""); + uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); + + /* value */ + bt= uiDefButR(block, HSVCUBE, 0, "", 0, 0, PICKER_TOTAL_W, PICKER_BAR, ptr, propname, -1, 0.0, 0.0, bartype, 0, ""); + uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); +} + /* a HS circle, V slider, rgb/hsv/hex sliders */ -static void uiBlockPickerNew(uiBlock *block, float *col, float *hsv, float *old, char *hexcol, char mode, short retval) +static void uiBlockPicker(uiBlock *block, float *rgb, PointerRNA *ptr, PropertyRNA *prop) { static short colormode= 0; /* temp? 0=rgb, 1=hsv, 2=hex */ uiBut *bt; - int width; + int width, butwidth; static char tip[50]; + static float hsv[3]; + static char hexcol[128]; + const char *propname = RNA_property_identifier(prop); - VECCOPY(old, col); // old color stored there, for palette_cb to work + width= PICKER_TOTAL_W; + butwidth = width - UI_UNIT_X - 10; /* existence of profile means storage is in linear colour space, with display correction */ if (block->color_profile == BLI_PR_NONE) @@ -1971,50 +1746,63 @@ static void uiBlockPickerNew(uiBlock *block, float *col, float *hsv, float *old, 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); - - /* value */ - bt= uiDefButF(block, HSVCUBE, retval, "", SPICK1+DPICK1,0,14,SPICK1, col, 0.0, 0.0, 4, 0, ""); - uiButSetFunc(bt, do_picker_small_cb, bt, hsv); + RNA_property_float_get_array(ptr, prop, rgb); + rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2); + + switch (U.color_picker_type) { + case USER_CP_CIRCLE: + circle_picker(block, ptr, propname); + break; + case USER_CP_SQUARE_SV: + square_picker(block, ptr, propname, UI_GRAD_SV); + break; + case USER_CP_SQUARE_HS: + square_picker(block, ptr, propname, UI_GRAD_HS); + break; + case USER_CP_SQUARE_HV: + square_picker(block, ptr, propname, UI_GRAD_HV); + break; + } /* mode */ - width= (SPICK1+DPICK1+14)/3; uiBlockBeginAlign(block); - bt= uiDefButS(block, ROW, retval, "RGB", 0, -30, width, 19, &colormode, 0.0, 0.0, 0, 0, ""); - uiButSetFunc(bt, do_picker_new_mode_cb, bt, col); - bt= uiDefButS(block, ROW, retval, "HSV", width, -30, width, 19, &colormode, 0.0, 1.0, 0, 0, ""); + bt= uiDefButS(block, ROW, 0, "RGB", 0, -30, width/3, UI_UNIT_Y, &colormode, 0.0, 0.0, 0, 0, ""); + uiButSetFunc(bt, do_picker_new_mode_cb, bt, rgb); + bt= uiDefButS(block, ROW, 0, "HSV", width/3, -30, width/3, UI_UNIT_Y, &colormode, 0.0, 1.0, 0, 0, ""); uiButSetFunc(bt, do_picker_new_mode_cb, bt, hsv); - bt= uiDefButS(block, ROW, retval, "Hex", 2*width, -30, width, 19, &colormode, 0.0, 2.0, 0, 0, ""); + bt= uiDefButS(block, ROW, 0, "Hex", 2*width/3, -30, width/3, UI_UNIT_Y, &colormode, 0.0, 2.0, 0, 0, ""); uiButSetFunc(bt, do_picker_new_mode_cb, bt, hexcol); uiBlockEndAlign(block); - - /* sliders or hex */ - width= (SPICK1+DPICK1+14); - rgb_to_hsv(col[0], col[1], col[2], hsv, hsv+1, hsv+2); - sprintf(hexcol, "%02X%02X%02X", (unsigned int)(col[0]*255.0), (unsigned int)(col[1]*255.0), (unsigned int)(col[2]*255.0)); + bt= uiDefIconButO(block, BUT, "UI_OT_eyedropper", WM_OP_INVOKE_DEFAULT, ICON_EYEDROPPER, butwidth+10, -60, UI_UNIT_X, UI_UNIT_Y, NULL); + uiButSetFunc(bt, close_popup_cb, bt, NULL); + + /* RGB values */ uiBlockBeginAlign(block); - 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, 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, tip); - uiButSetFunc(bt, do_palette1_cb, bt, hsv); - uiBlockEndAlign(block); - + bt= uiDefButR(block, NUMSLI, 0, "R ", 0, -60, butwidth, UI_UNIT_Y, ptr, propname, 0, 0.0, 0.0, 0, 0, ""); + uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); + bt= uiDefButR(block, NUMSLI, 0, "G ", 0, -80, butwidth, UI_UNIT_Y, ptr, propname, 1, 0.0, 0.0, 0, 0, ""); + uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); + bt= uiDefButR(block, NUMSLI, 0, "B ", 0, -100, butwidth, UI_UNIT_Y, ptr, propname, 2, 0.0, 0.0, 0, 0, ""); + uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); + // could use uiItemFullR(col, "", 0, ptr, prop, -1, 0, UI_ITEM_R_EXPAND|UI_ITEM_R_SLIDER); + // but need to use uiButSetFunc for updating other fake buttons + + /* HSV values */ uiBlockBeginAlign(block); - bt= uiDefButF(block, NUMSLI, 0, "H ", 0, -60, width, 19, hsv, 0.0, 1.0, 10, 3, ""); - uiButSetFunc(bt, do_palette2_cb, bt, col); - bt= uiDefButF(block, NUMSLI, 0, "S ", 0, -80, width, 19, hsv+1, 0.0, 1.0, 10, 3, ""); - uiButSetFunc(bt, do_palette2_cb, bt, col); - bt= uiDefButF(block, NUMSLI, 0, "V ", 0, -100, width, 19, hsv+2, 0.0, 1.0, 10, 3, ""); - uiButSetFunc(bt, do_palette2_cb, bt, col); + bt= uiDefButF(block, NUMSLI, 0, "H ", 0, -60, butwidth, UI_UNIT_Y, hsv, 0.0, 1.0, 10, 3, ""); + uiButSetFunc(bt, do_hsv_rna_cb, bt, hsv); + bt= uiDefButF(block, NUMSLI, 0, "S ", 0, -80, butwidth, UI_UNIT_Y, hsv+1, 0.0, 1.0, 10, 3, ""); + uiButSetFunc(bt, do_hsv_rna_cb, bt, hsv); + bt= uiDefButF(block, NUMSLI, 0, "V ", 0, -100, butwidth, UI_UNIT_Y, hsv+2, 0.0, 1.0, 10, 3, ""); + uiButSetFunc(bt, do_hsv_rna_cb, bt, hsv); uiBlockEndAlign(block); + + rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2); + sprintf(hexcol, "%02X%02X%02X", (unsigned int)(rgb[0]*255.0), (unsigned int)(rgb[1]*255.0), (unsigned int)(rgb[2]*255.0)); - bt= uiDefBut(block, TEX, 0, "Hex: ", 0, -80, width, 19, hexcol, 0, 8, 0, 0, "Hex triplet for color (#RRGGBB)"); - uiButSetFunc(bt, do_palette_hex_cb, bt, hexcol); + bt= uiDefBut(block, TEX, 0, "Hex: ", 0, -60, butwidth, UI_UNIT_Y, hexcol, 0, 8, 0, 0, "Hex triplet for color (#RRGGBB)"); + uiButSetFunc(bt, do_hex_rna_cb, bt, hexcol); picker_new_hide_reveal(block, colormode); } @@ -2045,7 +1833,7 @@ static int ui_picker_small_wheel(const bContext *C, uiBlock *block, wmEvent *eve ui_set_but_vectorf(but, col); - ui_update_block_buts_hsv(block, but->hsv); + ui_update_block_buts_rgb(block, col); if(popup) popup->menuretval= UI_RETURN_UPDATE; @@ -2058,15 +1846,11 @@ static int ui_picker_small_wheel(const bContext *C, uiBlock *block, wmEvent *eve uiBlock *ui_block_func_COL(bContext *C, uiPopupBlockHandle *handle, void *arg_but) { - wmWindow *win= CTX_wm_window(C); // XXX temp, needs to become keymap to detect type? uiBut *but= arg_but; uiBlock *block; - static float hsvcol[3], oldcol[3]; - static char hexcol[128]; 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; @@ -2076,26 +1860,12 @@ uiBlock *ui_block_func_COL(bContext *C, uiPopupBlockHandle *handle, void *arg_bu uiBlockSetFlag(block, UI_BLOCK_MOVEMOUSE_QUIT); VECCOPY(handle->retvec, but->editvec); - if(win->eventstate->shift) { - uiBlockPickerButtons(block, handle->retvec, hsvcol, oldcol, hexcol, 'p', 0); - block->flag= UI_BLOCK_LOOP|UI_BLOCK_REDRAW|UI_BLOCK_KEEP_OPEN; - uiBoundsBlock(block, 3); - } - else if(win->eventstate->alt) { - uiBlockPickerSmall(block, handle->retvec, hsvcol, oldcol, hexcol, 'p', 0); - block->flag= UI_BLOCK_LOOP|UI_BLOCK_REDRAW|UI_BLOCK_RET_1|UI_BLOCK_OUT_1; - uiBoundsBlock(block, 10); - - block->block_event_func= ui_picker_small_wheel; - } - else { - uiBlockPickerNew(block, handle->retvec, hsvcol, oldcol, hexcol, 'p', 0); - block->flag= UI_BLOCK_LOOP|UI_BLOCK_REDRAW|UI_BLOCK_KEEP_OPEN; - uiBoundsBlock(block, 10); - - block->block_event_func= ui_picker_small_wheel; - } + + uiBlockPicker(block, handle->retvec, &but->rnapoin, but->rnaprop); + block->flag= UI_BLOCK_LOOP|UI_BLOCK_REDRAW|UI_BLOCK_KEEP_OPEN; + uiBoundsBlock(block, 10); + block->block_event_func= ui_picker_small_wheel; /* and lets go */ block->direction= UI_TOP; @@ -2103,90 +1873,6 @@ uiBlock *ui_block_func_COL(bContext *C, uiPopupBlockHandle *handle, void *arg_bu return block; } -/* ******************** Color band *************** */ - -static int vergcband(const void *a1, const void *a2) -{ - const CBData *x1=a1, *x2=a2; - - if( x1->pos > x2->pos ) return 1; - else if( x1->pos < x2->pos) return -1; - return 0; -} - -static void colorband_pos_cb(bContext *C, void *coba_v, void *unused_v) -{ - ColorBand *coba= coba_v; - int a; - - if(coba->tot<2) return; - - for(a=0; a<coba->tot; a++) coba->data[a].cur= a; - qsort(coba->data, coba->tot, sizeof(CBData), vergcband); - for(a=0; a<coba->tot; a++) { - if(coba->data[a].cur==coba->cur) { - /* if(coba->cur!=a) addqueue(curarea->win, REDRAW, 0); */ /* button cur */ - coba->cur= a; - break; - } - } -} - -static void colorband_add_cb(bContext *C, void *coba_v, void *unused_v) -{ - ColorBand *coba= coba_v; - - if(coba->tot < MAXCOLORBAND-1) coba->tot++; - coba->cur= coba->tot-1; - - colorband_pos_cb(C, coba, NULL); -// BIF_undo_push("Add colorband"); - -} - -static void colorband_del_cb(bContext *C, void *coba_v, void *unused_v) -{ - ColorBand *coba= coba_v; - int a; - - if(coba->tot<2) return; - - for(a=coba->cur; a<coba->tot; a++) { - coba->data[a]= coba->data[a+1]; - } - if(coba->cur) coba->cur--; - coba->tot--; - -// BIF_undo_push("Delete colorband"); -// BIF_preview_changed(ID_TE); -} - -void uiBlockColorbandButtons(uiBlock *block, ColorBand *coba, rctf *butr, int event) -{ - CBData *cbd; - uiBut *bt; - float unit= (butr->xmax-butr->xmin)/14.0f; - float xs= butr->xmin; - - cbd= coba->data + coba->cur; - - uiBlockBeginAlign(block); - uiDefButF(block, COL, event, "", xs,butr->ymin+20.0f,2.0f*unit,20, &(cbd->r), 0, 0, 0, 0, ""); - uiDefButF(block, NUM, event, "A:", xs+2.0f*unit,butr->ymin+20.0f,4.0f*unit,20, &(cbd->a), 0.0f, 1.0f, 10, 2, ""); - bt= uiDefBut(block, BUT, event, "Add", xs+6.0f*unit,butr->ymin+20.0f,2.0f*unit,20, NULL, 0, 0, 0, 0, "Adds a new color position to the colorband"); - uiButSetFunc(bt, colorband_add_cb, coba, NULL); - bt= uiDefBut(block, BUT, event, "Del", xs+8.0f*unit, butr->ymin+20.0f, 2.0f*unit, 20, NULL, 0, 0, 0, 0, "Deletes the active position"); - uiButSetFunc(bt, colorband_del_cb, coba, NULL); - - uiDefButS(block, MENU, event, "Interpolation %t|Ease %x1|Cardinal %x3|Linear %x0|B-Spline %x2|Constant %x4", - xs + 10.0f*unit, butr->ymin+20.0f, unit*4.0f, 20, &coba->ipotype, 0.0, 0.0, 0, 0, "Sets interpolation type"); - - uiDefBut(block, BUT_COLORBAND, event, "", xs, butr->ymin, butr->xmax-butr->xmin, 20.0f, coba, 0, 0, 0, 0, ""); - uiBlockEndAlign(block); - -} - - /************************ Popup Menu Memory ****************************/ static int ui_popup_menu_hash(char *str) @@ -2551,7 +2237,9 @@ void uiPupMenuReports(bContext *C, ReportList *reports) ds= BLI_dynstr_new(); for(report=reports->list.first; report; report=report->next) { - if(report->type >= RPT_ERROR) + if(report->type <= reports->printlevel) + ; /* pass */ + else if(report->type >= RPT_ERROR) BLI_dynstr_appendf(ds, "Error %%i%d%%t|%s", ICON_ERROR, report->message); else if(report->type >= RPT_WARNING) BLI_dynstr_appendf(ds, "Warning %%i%d%%t|%s", ICON_ERROR, report->message); @@ -2560,7 +2248,8 @@ void uiPupMenuReports(bContext *C, ReportList *reports) } str= BLI_dynstr_get_cstring(ds); - ui_popup_menu_create(C, NULL, NULL, NULL, NULL, str); + if(str[0] != '\0') + ui_popup_menu_create(C, NULL, NULL, NULL, NULL, str); MEM_freeN(str); BLI_dynstr_free(ds); diff --git a/source/blender/editors/interface/interface_style.c b/source/blender/editors/interface/interface_style.c index 2e8d2a8cb2b..c80db9a1588 100644 --- a/source/blender/editors/interface/interface_style.c +++ b/source/blender/editors/interface/interface_style.c @@ -291,8 +291,10 @@ void uiStyleInit(void) font->blf_id= BLF_load_mem("default", (unsigned char*)datatoc_bfont_ttf, datatoc_bfont_ttf_size); } - if (font->blf_id == -1) - printf("uiStyleInit error, no fonts available\n"); + if (font->blf_id == -1) { + if (G.f & G_DEBUG) + printf("uiStyleInit error, no fonts available\n"); + } else { BLF_set(font->blf_id); /* ? just for speed to initialize? diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 6b36e60fa6c..ab77926b0ba 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -28,6 +28,7 @@ #include "MEM_guardedalloc.h" +#include "DNA_color_types.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" @@ -114,6 +115,17 @@ void uiTemplateDopeSheetFilter(uiLayout *layout, bContext *C, PointerRNA *ptr) uiItemR(row, "", 0, ptr, "display_armature", 0); if (mainptr && mainptr->particle.first) uiItemR(row, "", 0, ptr, "display_particle", 0); + + /* group-based filtering (only when groups are available */ + if (mainptr && mainptr->group.first) { + row= uiLayoutRow(layout, 1); + + uiItemR(row, "", 0, ptr, "only_group_objects", 0); + + /* if enabled, show the group selection field too */ + if (RNA_boolean_get(ptr, "only_group_objects")) + uiItemR(row, "", 0, ptr, "filtering_group", 0); + } } /********************** Search Callbacks *************************/ @@ -348,8 +360,9 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str but= uiDefBlockButN(block, id_search_menu, MEM_dupallocN(template), "", 0, 0, UI_UNIT_X*1.6, UI_UNIT_Y, "Browse ID data"); if(type) { but->icon= RNA_struct_ui_icon(type); - but->flag|= UI_HAS_ICON; - but->flag|= UI_ICON_LEFT; + /* default dragging of icon for id browse buttons */ + uiButSetDragID(but, id); + uiButSetFlag(but, UI_HAS_ICON|UI_ICON_LEFT); } if((idfrom && idfrom->lib)) @@ -358,7 +371,7 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str /* text button with name */ if(id) { - char name[64]; + char name[UI_MAX_NAME_STR]; //text_idbutton(id, name); name[0]= '\0'; @@ -446,12 +459,11 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str uiBlockEndAlign(block); } -static void ui_template_id(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, int previews, int prv_rows, int prv_cols) +static void ui_template_id(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, int flag, int prv_rows, int prv_cols) { TemplateID *template; PropertyRNA *prop; StructRNA *type; - int flag; prop= RNA_struct_find_property(ptr, propname); @@ -466,14 +478,10 @@ static void ui_template_id(uiLayout *layout, bContext *C, PointerRNA *ptr, char template->prv_rows = prv_rows; template->prv_cols = prv_cols; - flag= UI_ID_BROWSE|UI_ID_RENAME|UI_ID_DELETE; - if(newop) flag |= UI_ID_ADD_NEW; if(openop) flag |= UI_ID_OPEN; - if(previews) - flag |= UI_ID_PREVIEWS; type= RNA_property_pointer_type(ptr, prop); template->idlb= wich_libbase(CTX_data_main(C), RNA_type_to_ID_code(type)); @@ -492,12 +500,17 @@ static void ui_template_id(uiLayout *layout, bContext *C, PointerRNA *ptr, char void uiTemplateID(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop) { - ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, 0, 0, 0); + ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, UI_ID_BROWSE|UI_ID_RENAME|UI_ID_DELETE, 0, 0); +} + +void uiTemplateIDBrowse(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop) +{ + ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, UI_ID_BROWSE|UI_ID_RENAME, 0, 0); } void uiTemplateIDPreview(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, int rows, int cols) { - ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, 1, rows, cols); + ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, UI_ID_BROWSE|UI_ID_RENAME|UI_ID_DELETE|UI_ID_PREVIEWS, rows, cols); } /************************ ID Chooser Template ***************************/ @@ -602,9 +615,10 @@ void uiTemplatePathBuilder(uiLayout *layout, bContext *C, PointerRNA *ptr, char static void modifiers_setOnCage(bContext *C, void *ob_v, void *md_v) { + Scene *scene = CTX_data_scene(C); Object *ob = ob_v; ModifierData *md= md_v; - int i, cageIndex = modifiers_getCageIndex(ob, NULL, 0); + int i, cageIndex = modifiers_getCageIndex(scene, ob, NULL, 0); /* undo button operation */ md->mode ^= eModifierMode_OnCage; @@ -652,13 +666,13 @@ static int modifier_can_delete(ModifierData *md) return 1; } -static uiLayout *draw_modifier(uiLayout *layout, Object *ob, ModifierData *md, int index, int cageIndex, int lastCageIndex) +static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, ModifierData *md, int index, int cageIndex, int lastCageIndex, int compact) { ModifierTypeInfo *mti = modifierType_getInfo(md->type); PointerRNA ptr; uiBut *but; uiBlock *block; - uiLayout *box, *column, *row; + uiLayout *box, *column, *row, *col; uiLayout *result= NULL; int isVirtual = (md->mode & eModifierMode_Virtual); char str[128]; @@ -672,11 +686,10 @@ static uiLayout *draw_modifier(uiLayout *layout, Object *ob, ModifierData *md, i /* rounded header ------------------------------------------------------------------- */ box= uiLayoutBox(column); - row= uiLayoutRow(box, 0); - uiLayoutSetAlignment(row, UI_LAYOUT_ALIGN_EXPAND); - block= uiLayoutGetBlock(row); - if (isVirtual) { + row= uiLayoutRow(box, 0); + uiLayoutSetAlignment(row, UI_LAYOUT_ALIGN_EXPAND); + block= uiLayoutGetBlock(row); /* VIRTUAL MODIFIER */ // XXX this is not used now, since these cannot be accessed via RNA sprintf(str, "%s parent deform", md->name); @@ -687,62 +700,88 @@ static uiLayout *draw_modifier(uiLayout *layout, Object *ob, ModifierData *md, i } else { /* REAL MODIFIER */ - uiLayout *subrow, *col2; + uiLayout *split; + + split = uiLayoutSplit(box, 0.16, 0); + + col= uiLayoutColumn(split, 0); + row = uiLayoutRow(col, 1); + + block = uiLayoutGetBlock(row); - /* Open/Close ................................. */ uiBlockSetEmboss(block, UI_EMBOSSN); - uiDefIconButBitI(block, ICONTOG, eModifierMode_Expanded, 0, ICON_TRIA_RIGHT, 0, 0, UI_UNIT_X, UI_UNIT_Y, &md->mode, 0.0, 0.0, 0.0, 0.0, "Collapse/Expand Modifier"); + + /* Open/Close ................................. */ + uiItemR(row, "", 0, &ptr, "expanded", 0); /* modifier-type icon */ uiItemL(row, "", RNA_struct_ui_icon(ptr.type)); + uiBlockSetEmboss(block, UI_EMBOSS); + /* 'Middle Column' ............................ * - first row is the name of the modifier * - second row is the visibility settings, since the layouts were not wide enough to show all */ - col2= uiLayoutColumn(row, 0); - /* First Row */ - subrow= uiLayoutRow(col2, 0); - /* modifier name */ - uiItemR(subrow, "", 0, &ptr, "name", 0); + col= uiLayoutColumn(split, 0); + + row= uiLayoutRow(col, 0); + uiLayoutSetAlignment(row, UI_LAYOUT_ALIGN_EXPAND); + + block = uiLayoutGetBlock(row); + + /* modifier name */ + uiItemR(row, "", 0, &ptr, "name", 0); + + if (compact) { + /* insert delete button at end of top row before splitting to second line */ + uiBlockSetEmboss(block, UI_EMBOSSN); + if (modifier_can_delete(md)) + uiItemO(row, "", ICON_X, "OBJECT_OT_modifier_remove"); + uiBlockSetEmboss(block, UI_EMBOSS); - /* Second Row */ - subrow= uiLayoutRow(col2, 1); - uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_EXPAND); - block= uiLayoutGetBlock(subrow); - /* Softbody not allowed in this situation, enforce! */ - if ( ((md->type!=eModifierType_Softbody && md->type!=eModifierType_Collision) || !(ob->pd && ob->pd->deflect)) - && (md->type!=eModifierType_Surface) ) - { - uiItemR(subrow, "", ICON_SCENE, &ptr, "render", 0); - uiItemR(subrow, "", ICON_RESTRICT_VIEW_OFF, &ptr, "realtime", 0); - - if (mti->flags & eModifierTypeFlag_SupportsEditmode) - uiItemR(subrow, "", ICON_EDITMODE_HLT, &ptr, "editmode", 0); - } - - if ((ob->type==OB_MESH) && modifier_couldBeCage(md) && (index <= lastCageIndex)) - { - but = uiDefIconButBitI(block, TOG, eModifierMode_OnCage, 0, ICON_MESH_DATA, 0, 0, 16, 20, &md->mode, 0.0, 0.0, 0.0, 0.0, "Apply modifier to editing cage during Editmode"); - if (index < cageIndex) - uiButSetFlag(but, UI_BUT_DISABLED); - uiButSetFunc(but, modifiers_setOnCage, ob, md); - } + split = uiLayoutSplit(box, 0.17, 0); + col= uiLayoutColumn(split, 0); + uiItemL(col, "", 0); + col= uiLayoutColumn(split, 0); + row = uiLayoutRow(col, 1); + } + + /* mode enabling buttons */ + uiBlockBeginAlign(block); + /* Softbody not allowed in this situation, enforce! */ + if ( ((md->type!=eModifierType_Softbody && md->type!=eModifierType_Collision) || !(ob->pd && ob->pd->deflect)) + && (md->type!=eModifierType_Surface) ) + { + uiItemR(row, "", 0, &ptr, "render", 0); + uiItemR(row, "", 0, &ptr, "realtime", 0); + if (mti->flags & eModifierTypeFlag_SupportsEditmode) + uiItemR(row, "", 0, &ptr, "editmode", 0); + } + if ((ob->type==OB_MESH) && modifier_couldBeCage(scene, md) && (index <= lastCageIndex)) + { + /* -- convert to rna ? */ + but = uiDefIconButBitI(block, TOG, eModifierMode_OnCage, 0, ICON_MESH_DATA, 0, 0, 16, 20, &md->mode, 0.0, 0.0, 0.0, 0.0, "Apply modifier to editing cage during Editmode"); + if (index < cageIndex) + uiButSetFlag(but, UI_BUT_DISABLED); + uiButSetFunc(but, modifiers_setOnCage, ob, md); + } + uiBlockEndAlign(block); + /* Up/Down + Delete ........................... */ - block= uiLayoutGetBlock(row); uiBlockBeginAlign(block); - uiItemO(row, "", ICON_TRIA_UP, "OBJECT_OT_modifier_move_up"); - uiItemO(row, "", ICON_TRIA_DOWN, "OBJECT_OT_modifier_move_down"); + uiItemO(row, "", ICON_TRIA_UP, "OBJECT_OT_modifier_move_up"); + uiItemO(row, "", ICON_TRIA_DOWN, "OBJECT_OT_modifier_move_down"); uiBlockEndAlign(block); - uiBlockSetEmboss(block, UI_EMBOSSN); - - if (modifier_can_delete(md)) - uiItemO(row, "", ICON_X, "OBJECT_OT_modifier_remove"); - - uiBlockSetEmboss(block, UI_EMBOSS); + if(!compact) { + uiBlockSetEmboss(block, UI_EMBOSSN); + if (modifier_can_delete(md)) + uiItemO(row, "", ICON_X, "OBJECT_OT_modifier_remove"); + uiBlockSetEmboss(block, UI_EMBOSS); + } } @@ -759,8 +798,10 @@ static uiLayout *draw_modifier(uiLayout *layout, Object *ob, ModifierData *md, i if (md->type==eModifierType_ParticleSystem) { ParticleSystem *psys= ((ParticleSystemModifierData *)md)->psys; - if (!(ob->mode & OB_MODE_PARTICLE_EDIT)) { - if(ELEM3(psys->part->ren_as, PART_DRAW_PATH, PART_DRAW_GR, PART_DRAW_OB) && psys->pathcache) + if (!(ob->mode & OB_MODE_PARTICLE_EDIT) && psys->pathcache) { + if(ELEM(psys->part->ren_as, PART_DRAW_GR, PART_DRAW_OB)) + uiItemO(row, "Convert", 0, "OBJECT_OT_duplicates_make_real"); + else if(psys->part->ren_as == PART_DRAW_PATH) uiItemO(row, "Convert", 0, "OBJECT_OT_modifier_convert"); } } @@ -793,8 +834,9 @@ static uiLayout *draw_modifier(uiLayout *layout, Object *ob, ModifierData *md, i return result; } -uiLayout *uiTemplateModifier(uiLayout *layout, PointerRNA *ptr) +uiLayout *uiTemplateModifier(uiLayout *layout, bContext *C, PointerRNA *ptr, int compact) { + Scene *scene = CTX_data_scene(C); Object *ob; ModifierData *md, *vmd; int i, lastCageIndex, cageIndex; @@ -816,14 +858,14 @@ uiLayout *uiTemplateModifier(uiLayout *layout, PointerRNA *ptr) uiBlockSetButLock(uiLayoutGetBlock(layout), (ob && ob->id.lib), ERROR_LIBDATA_MESSAGE); /* find modifier and draw it */ - cageIndex = modifiers_getCageIndex(ob, &lastCageIndex, 0); + cageIndex = modifiers_getCageIndex(scene, ob, &lastCageIndex, 0); // XXX virtual modifiers are not accesible for python vmd = modifiers_getVirtualModifierList(ob); for(i=0; vmd; i++, vmd=vmd->next) { if(md == vmd) - return draw_modifier(layout, ob, md, i, cageIndex, lastCageIndex); + return draw_modifier(layout, scene, ob, md, i, cageIndex, lastCageIndex, compact); else if(vmd->mode & eModifierMode_Virtual) i--; } @@ -892,18 +934,6 @@ static void constraint_active_func(bContext *C, void *ob_v, void *con_v) ED_object_constraint_set_active(ob_v, con_v); } -static void verify_constraint_name_func (bContext *C, void *con_v, void *dummy) -{ - Object *ob= CTX_data_active_object(C); - bConstraint *con= con_v; - - if (!con) - return; - - ED_object_constraint_rename(ob, con, NULL); - ED_object_constraint_set_active(ob, con); - // XXX allqueue(REDRAWACTION, 0); -} /* some commonly used macros in the constraints drawing code */ #define is_armature_target(target) (target && target->type==OB_ARMATURE) @@ -1032,7 +1062,7 @@ static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con) rb_col= (con->flag & CONSTRAINT_ACTIVE)?50:20; /* open/close */ - uiDefIconButBitS(block, ICONTOG, CONSTRAINT_EXPAND, B_CONSTRAINT_TEST, ICON_TRIA_RIGHT, xco-10, yco, 20, 20, &con->flag, 0.0, 0.0, 0.0, 0.0, "Collapse/Expand Constraint"); + uiItemR(subrow, "", 0, &ptr, "expanded", UI_ITEM_R_ICON_ONLY); /* name */ uiBlockSetEmboss(block, UI_EMBOSS); @@ -1043,13 +1073,10 @@ static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con) uiDefBut(block, LABEL, B_CONSTRAINT_TEST, typestr, xco+10, yco, 100, 18, NULL, 0.0, 0.0, 0.0, 0.0, ""); if(proxy_protected == 0) { - but = uiDefBut(block, TEX, B_CONSTRAINT_TEST, "", xco+120, yco, 85, 18, con->name, 0.0, 29.0, 0.0, 0.0, "Constraint name"); - uiButSetFunc(but, verify_constraint_name_func, con, con->name); + uiItemR(subrow, "", 0, &ptr, "name", 0); } else - uiDefBut(block, LABEL, B_CONSTRAINT_TEST, con->name, xco+120, yco-1, 135, 19, NULL, 0.0, 0.0, 0.0, 0.0, ""); - - // XXX uiBlockSetCol(block, TH_AUTO); + uiItemL(subrow, con->name, 0); subrow= uiLayoutRow(row, 0); uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_RIGHT); @@ -1428,6 +1455,7 @@ static void colorband_buttons_large(uiLayout *layout, uiBlock *block, ColorBand { uiBut *bt; + uiLayout *row; if(coba==NULL) return; @@ -1449,23 +1477,13 @@ static void colorband_buttons_large(uiLayout *layout, uiBlock *block, ColorBand 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 + row= uiLayoutRow(layout, 0); + uiItemR(row, "Pos", 0, &ptr, "position", 0); + uiItemR(row, "", 0, &ptr, "color", 0); } } @@ -1476,24 +1494,18 @@ static void colorband_buttons_small(uiLayout *layout, uiBlock *block, ColorBand float unit= (butr->xmax-butr->xmin)/14.0f; float xs= butr->xmin; - + uiBlockBeginAlign(block); bt= uiDefBut(block, BUT, 0, "Add", xs,butr->ymin+20.0f,2.0f*unit,20, NULL, 0, 0, 0, 0, "Add a new color stop to the colorband"); uiButSetNFunc(bt, colorband_add_cb, MEM_dupallocN(cb), coba); bt= uiDefBut(block, BUT, 0, "Delete", xs+2.0f*unit,butr->ymin+20.0f,2.0f*unit,20, NULL, 0, 0, 0, 0, "Delete the active position"); uiButSetNFunc(bt, colorband_del_cb, MEM_dupallocN(cb), coba); + uiBlockEndAlign(block); 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", @@ -1542,9 +1554,45 @@ void uiTemplateColorRamp(uiLayout *layout, PointerRNA *ptr, char *propname, int MEM_freeN(cb); } +/********************* Histogram Template ************************/ + +void uiTemplateHistogram(uiLayout *layout, PointerRNA *ptr, char *propname, int expand) +{ + PropertyRNA *prop= RNA_struct_find_property(ptr, propname); + PointerRNA cptr; + RNAUpdateCb *cb; + uiBlock *block; + uiBut *bt; + Histogram *hist; + rctf rect; + + if(!prop || RNA_property_type(prop) != PROP_POINTER) + return; + + cptr= RNA_property_pointer_get(ptr, prop); + if(!cptr.data || !RNA_struct_is_a(cptr.type, &RNA_Histogram)) + return; + + cb= MEM_callocN(sizeof(RNAUpdateCb), "RNAUpdateCb"); + cb->ptr= *ptr; + cb->prop= prop; + + rect.xmin= 0; rect.xmax= 200; + rect.ymin= 0; rect.ymax= 190; + + block= uiLayoutAbsoluteBlock(layout); + //colorband_buttons_layout(layout, block, cptr.data, &rect, !expand, cb); + + hist = (Histogram *)cptr.data; + + bt= uiDefBut(block, HISTOGRAM, 0, "", rect.xmin, rect.ymin, rect.xmax-rect.xmin, 100.0f, hist, 0, 0, 0, 0, ""); + uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL); + + MEM_freeN(cb); +} + /********************* CurveMapping Template ************************/ -#include "DNA_color_types.h" #include "BKE_colortools.h" static void curvemap_buttons_zoom_in(bContext *C, void *cumap_v, void *unused) @@ -1757,6 +1805,7 @@ static void curvemap_buttons_layout(uiLayout *layout, PointerRNA *ptr, char labe uiBut *bt; float dx= UI_UNIT_X; int icon, size; + int bg=-1; block= uiLayoutGetBlock(layout); @@ -1803,8 +1852,29 @@ static void curvemap_buttons_layout(uiLayout *layout, PointerRNA *ptr, char labe uiButSetFunc(bt, curvemap_buttons_redraw, NULL, NULL); } } + else if (labeltype == 'h') { + /* HSV */ + sub= uiLayoutRow(row, 1); + uiLayoutSetAlignment(sub, UI_LAYOUT_ALIGN_LEFT); + + if(cumap->cm[0].curve) { + bt= uiDefButI(block, ROW, 0, "H", 0, 0, dx, 16, &cumap->cur, 0.0, 0.0, 0.0, 0.0, ""); + uiButSetFunc(bt, curvemap_buttons_redraw, NULL, NULL); + } + if(cumap->cm[1].curve) { + bt= uiDefButI(block, ROW, 0, "S", 0, 0, dx, 16, &cumap->cur, 0.0, 1.0, 0.0, 0.0, ""); + uiButSetFunc(bt, curvemap_buttons_redraw, NULL, NULL); + } + if(cumap->cm[2].curve) { + bt= uiDefButI(block, ROW, 0, "V", 0, 0, dx, 16, &cumap->cur, 0.0, 2.0, 0.0, 0.0, ""); + uiButSetFunc(bt, curvemap_buttons_redraw, NULL, NULL); + } + } else uiLayoutSetAlignment(row, UI_LAYOUT_ALIGN_RIGHT); + + if (labeltype=='h') + bg = UI_GRAD_H; /* operation buttons */ sub= uiLayoutRow(row, 1); @@ -1838,7 +1908,7 @@ static void curvemap_buttons_layout(uiLayout *layout, PointerRNA *ptr, char labe /* curve itself */ size= uiLayoutGetWidth(layout); row= uiLayoutRow(layout, 0); - uiDefBut(block, BUT_CURVE, 0, "", 0, 0, size, MIN2(size, 200), cumap, 0.0f, 1.0f, 0, 0, ""); + uiDefBut(block, BUT_CURVE, 0, "", 0, 0, size, MIN2(size, 200), cumap, 0.0f, 1.0f, bg, 0, ""); /* black/white levels */ if(levels) { @@ -1876,6 +1946,44 @@ void uiTemplateCurveMapping(uiLayout *layout, PointerRNA *ptr, char *propname, i MEM_freeN(cb); } +/********************* ColorWheel Template ************************/ + +#define WHEEL_SIZE 100 + +void uiTemplateColorWheel(uiLayout *layout, PointerRNA *ptr, char *propname, int value_slider, int lock) +{ + PropertyRNA *prop= RNA_struct_find_property(ptr, propname); + uiBlock *block= uiLayoutGetBlock(layout); + uiLayout *col, *row; + float softmin, softmax, step, precision; + + if (!prop) { + printf("uiTemplateColorWheel: property not found: %s\n", propname); + return; + } + + RNA_property_float_ui_range(ptr, prop, &softmin, &softmax, &step, &precision); + + col = uiLayoutColumn(layout, 0); + row= uiLayoutRow(col, 1); + + uiDefButR(block, HSVCIRCLE, 0, "", 0, 0, WHEEL_SIZE, WHEEL_SIZE, ptr, propname, -1, 0.0, 0.0, 0, lock, ""); + + uiItemS(row); + + if (value_slider) + uiDefButR(block, HSVCUBE, 0, "", WHEEL_SIZE+6, 0, 14, WHEEL_SIZE, ptr, propname, -1, softmin, softmax, 9, 0, ""); + + /* maybe a switch for this? + row= uiLayoutRow(col, 0); + if(ELEM(RNA_property_subtype(prop), PROP_COLOR, PROP_COLOR_GAMMA) && RNA_property_array_length(ptr, prop) == 4) { + but= uiDefAutoButR(block, ptr, prop, 3, "A:", 0, 0, 0, WHEEL_SIZE+20, UI_UNIT_Y); + } + */ + +} + + /********************* TriColor (ThemeWireColorSet) Template ************************/ void uiTemplateTriColorSet(uiLayout *layout, PointerRNA *ptr, char *propname) @@ -2096,7 +2204,7 @@ static void list_item_row(bContext *C, uiLayout *layout, PointerRNA *ptr, Pointe uiBlockSetEmboss(block, UI_EMBOSS); } else - uiItemL(sub, name, icon); + uiItemL(sub, name, icon); /* fails, backdrop LISTROW... */ /* free name */ if(namebuf) @@ -2180,6 +2288,7 @@ void uiTemplateList(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propna icon= list_item_icon_get(C, &itemptr, rnaicon); but= uiDefIconButR(block, LISTROW, 0, icon, 0,0,UI_UNIT_X*10,UI_UNIT_Y, activeptr, activepropname, 0, 0, i, 0, 0, ""); uiButSetFlag(but, UI_BUT_NO_TOOLTIP); + i++; } diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index 9e23530be4f..6f17a0d4e6a 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -755,6 +755,9 @@ static void widget_draw_icon(uiBut *but, BIFIconID icon, float alpha, rcti *rect else alpha= 0.5f; } + /* extra feature allows more alpha blending */ + if(but->type==LABEL && but->a1==1.0f) alpha *= but->a2; + glEnable(GL_BLEND); if(icon && icon!=ICON_BLANK1) { @@ -784,8 +787,14 @@ static void widget_draw_icon(uiBut *but, BIFIconID icon, float alpha, rcti *rect xs= (rect->xmin+rect->xmax- height)/2; ys= (rect->ymin+rect->ymax- height)/2; } - - UI_icon_draw_aspect(xs, ys, icon, aspect, alpha); + + /* to indicate draggable */ + if(but->dragpoin && (but->flag & UI_ACTIVE)) { + float rgb[3]= {1.25f, 1.25f, 1.25f}; + UI_icon_draw_aspect_color(xs, ys, icon, aspect, rgb); + } + else + UI_icon_draw_aspect(xs, ys, icon, aspect, alpha); } if(but->flag & UI_ICON_SUBMENU) { @@ -804,6 +813,8 @@ static void ui_text_leftclip(uiFontStyle *fstyle, uiBut *but, rcti *rect) int border= (but->flag & UI_BUT_ALIGN_RIGHT)? 8: 10; int okwidth= rect->xmax-rect->xmin - border; + if (but->flag & UI_HAS_ICON) okwidth -= 16; + /* need to set this first */ uiStyleFontSet(fstyle); @@ -904,19 +915,23 @@ static void widget_draw_text(uiFontStyle *fstyle, uiWidgetColors *wcol, uiBut *b if(but->editstr && but->pos != -1) { short t=0, pos=0, ch; short selsta_tmp, selend_tmp, selsta_draw, selwidth_draw; - + if ((but->selend - but->selsta) > 0) { /* text button selection */ selsta_tmp = but->selsta; selend_tmp = but->selend; if(but->drawstr[0]!=0) { - ch= but->drawstr[selsta_tmp]; - but->drawstr[selsta_tmp]= 0; - - selsta_draw = BLF_width(but->drawstr+but->ofs); - - but->drawstr[selsta_tmp]= ch; + + if (but->selsta >= but->ofs) { + ch= but->drawstr[selsta_tmp]; + but->drawstr[selsta_tmp]= 0; + + selsta_draw = BLF_width(but->drawstr+but->ofs); + + but->drawstr[selsta_tmp]= ch; + } else + selsta_draw = 0; ch= but->drawstr[selend_tmp]; but->drawstr[selend_tmp]= 0; @@ -980,7 +995,10 @@ static void widget_draw_text_icon(uiFontStyle *fstyle, uiWidgetColors *wcol, uiB if (ELEM4(but->type, NUM, NUMABS, NUMSLI, SLI)) { ui_text_label_rightclip(fstyle, but, rect); } - else if (but->type == TEX) { + else if (ELEM(but->type, TEX, SEARCH_MENU)) { + ui_text_leftclip(fstyle, but, rect); + } + else if ((but->block->flag & UI_BLOCK_LOOP) && (but->type == BUT)) { ui_text_leftclip(fstyle, but, rect); } else but->ofs= 0; @@ -1002,7 +1020,7 @@ static void widget_draw_text_icon(uiFontStyle *fstyle, uiWidgetColors *wcol, uiB } /* If there's an icon too (made with uiDefIconTextBut) then draw the icon - and offset the text label to accomodate it */ + and offset the text label to accommodate it */ if (but->flag & UI_HAS_ICON) { widget_draw_icon(but, but->icon+but->iconadd, 1.0f, rect); @@ -1326,10 +1344,9 @@ static void widget_state(uiWidgetType *wt, int state) VECCOPY(wt->wcol.text, wt->wcol.text_sel); - /* only flip shade if it's not "pushed in" already */ - if(wt->wcol.shaded && wt->wcol.shadetop>wt->wcol.shadedown) { + if (!(state & UI_TEXTINPUT)) + /* swap for selection - show depressed */ SWAP(short, wt->wcol.shadetop, wt->wcol.shadedown); - } } else { if(state & UI_BUT_ANIMATED_KEY) @@ -1538,12 +1555,12 @@ void ui_hsvcircle_vals_from_pos(float *valrad, float *valdist, rcti *rect, float *valrad= atan2(mx, my)/(2.0f*M_PI) + 0.5f; } -void ui_draw_but_HSVCIRCLE(uiBut *but, rcti *rect) +void ui_draw_but_HSVCIRCLE(uiBut *but, uiWidgetColors *wcol, rcti *rect) { /* gouraud triangle fan */ float radstep, ang= 0.0f; float centx, centy, radius; - float hsv[3], col[3], colcent[3]; + float rgb[3], hsv[3], hsvo[3], col[3], colcent[3]; int a, tot= 32; radstep= 2.0f*M_PI/(float)tot; @@ -1556,9 +1573,16 @@ void ui_draw_but_HSVCIRCLE(uiBut *but, rcti *rect) radius= (float)(rect->xmax - rect->xmin)/2; /* color */ - VECCOPY(hsv, but->hsv); - hsv[0]= hsv[1]= 0.0f; - hsv_to_rgb(hsv[0], hsv[1], hsv[2], colcent, colcent+1, colcent+2); + ui_get_but_vectorf(but, rgb); + rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2); + copy_v3_v3(hsvo, hsv); + + /* exception: if 'lock' is set (stored in but->a2), + * lock the value of the color wheel to 1. + * Useful for color correction tools where you're only interested in hue. */ + if (but->a2) hsv[2] = 1.f; + + hsv_to_rgb(0.f, 0.f, hsv[2], colcent, colcent+1, colcent+2); glShadeModel(GL_SMOOTH); @@ -1584,15 +1608,15 @@ void ui_draw_but_HSVCIRCLE(uiBut *but, rcti *rect) glTranslatef(centx, centy, 0.0f); glEnable(GL_BLEND); glEnable(GL_LINE_SMOOTH ); - glColor3f(0.0f, 0.0f, 0.0f); + glColor3ubv((unsigned char*)wcol->outline); glutil_draw_lined_arc(0.0f, M_PI*2.0, radius, tot); glDisable(GL_BLEND); glDisable(GL_LINE_SMOOTH ); glPopMatrix(); /* cursor */ - ang= 2.0f*M_PI*but->hsv[0] + 0.5f*M_PI; - radius= but->hsv[1]*radius; + ang= 2.0f*M_PI*hsvo[0] + 0.5f*M_PI; + radius= hsvo[1]*radius; ui_hsv_cursor(centx + cos(-ang)*radius, centy + sin(-ang)*radius); } @@ -1600,50 +1624,60 @@ void ui_draw_but_HSVCIRCLE(uiBut *but, rcti *rect) /* ************ custom buttons, old stuff ************** */ /* draws in resolution of 20x4 colors */ -static void ui_draw_but_HSVCUBE(uiBut *but, rcti *rect) +void ui_draw_gradient(rcti *rect, float *rgb, int type, float alpha) { int a; - float h,s,v; - float dx, dy, sx1, sx2, sy, x=0.0f, y=0.0f; + float h, s, v; + float dx, dy, sx1, sx2, sy; float col0[4][3]; // left half, rect bottom to top float col1[4][3]; // right half, rect bottom to top - h= but->hsv[0]; - s= but->hsv[1]; - v= but->hsv[2]; + rgb_to_hsv(rgb[0], rgb[1], rgb[2], &h, &s, &v); /* draw series of gouraud rects */ glShadeModel(GL_SMOOTH); - if(but->a1==0) { // H and V vary - hsv_to_rgb(0.0, s, 0.0, &col1[0][0], &col1[0][1], &col1[0][2]); - hsv_to_rgb(0.0, s, 0.333, &col1[1][0], &col1[1][1], &col1[1][2]); - hsv_to_rgb(0.0, s, 0.666, &col1[2][0], &col1[2][1], &col1[2][2]); - hsv_to_rgb(0.0, s, 1.0, &col1[3][0], &col1[3][1], &col1[3][2]); - x= h; y= v; - } - else if(but->a1==1) { // H and S vary - hsv_to_rgb(0.0, 0.0, v, &col1[0][0], &col1[0][1], &col1[0][2]); - hsv_to_rgb(0.0, 0.333, v, &col1[1][0], &col1[1][1], &col1[1][2]); - hsv_to_rgb(0.0, 0.666, v, &col1[2][0], &col1[2][1], &col1[2][2]); - hsv_to_rgb(0.0, 1.0, v, &col1[3][0], &col1[3][1], &col1[3][2]); - x= h; y= s; - } - else if(but->a1==2) { // S and V vary - hsv_to_rgb(h, 0.0, 0.0, &col1[0][0], &col1[0][1], &col1[0][2]); - hsv_to_rgb(h, 0.333, 0.0, &col1[1][0], &col1[1][1], &col1[1][2]); - hsv_to_rgb(h, 0.666, 0.0, &col1[2][0], &col1[2][1], &col1[2][2]); - hsv_to_rgb(h, 1.0, 0.0, &col1[3][0], &col1[3][1], &col1[3][2]); - x= v; y= s; - } - else if(but->a1==3) { // only hue slider - hsv_to_rgb(0.0, 1.0, 1.0, &col1[0][0], &col1[0][1], &col1[0][2]); - VECCOPY(col1[1], col1[0]); - VECCOPY(col1[2], col1[0]); - VECCOPY(col1[3], col1[0]); - x= h; y= 0.5; + switch(type) { + case UI_GRAD_SV: + hsv_to_rgb(h, 0.0, 0.0, &col1[0][0], &col1[0][1], &col1[0][2]); + hsv_to_rgb(h, 0.333, 0.0, &col1[1][0], &col1[1][1], &col1[1][2]); + hsv_to_rgb(h, 0.666, 0.0, &col1[2][0], &col1[2][1], &col1[2][2]); + hsv_to_rgb(h, 1.0, 0.0, &col1[3][0], &col1[3][1], &col1[3][2]); + break; + case UI_GRAD_HV: + hsv_to_rgb(0.0, s, 0.0, &col1[0][0], &col1[0][1], &col1[0][2]); + hsv_to_rgb(0.0, s, 0.333, &col1[1][0], &col1[1][1], &col1[1][2]); + hsv_to_rgb(0.0, s, 0.666, &col1[2][0], &col1[2][1], &col1[2][2]); + hsv_to_rgb(0.0, s, 1.0, &col1[3][0], &col1[3][1], &col1[3][2]); + break; + case UI_GRAD_HS: + hsv_to_rgb(0.0, 0.0, v, &col1[0][0], &col1[0][1], &col1[0][2]); + hsv_to_rgb(0.0, 0.333, v, &col1[1][0], &col1[1][1], &col1[1][2]); + hsv_to_rgb(0.0, 0.666, v, &col1[2][0], &col1[2][1], &col1[2][2]); + hsv_to_rgb(0.0, 1.0, v, &col1[3][0], &col1[3][1], &col1[3][2]); + break; + case UI_GRAD_H: + hsv_to_rgb(0.0, 1.0, 1.0, &col1[0][0], &col1[0][1], &col1[0][2]); + VECCOPY(col1[1], col1[0]); + VECCOPY(col1[2], col1[0]); + VECCOPY(col1[3], col1[0]); + break; + case UI_GRAD_S: + hsv_to_rgb(1.0, 0.0, 1.0, &col1[1][0], &col1[1][1], &col1[1][2]); + VECCOPY(col1[0], col1[1]); + VECCOPY(col1[2], col1[1]); + VECCOPY(col1[3], col1[1]); + break; + case UI_GRAD_V: + hsv_to_rgb(1.0, 1.0, 0.0, &col1[2][0], &col1[2][1], &col1[2][2]); + VECCOPY(col1[0], col1[2]); + VECCOPY(col1[1], col1[2]); + VECCOPY(col1[3], col1[2]); + break; } + /* old below */ + for(dx=0.0; dx<1.0; dx+= 0.05) { // previous color VECCOPY(col0[0], col1[0]); @@ -1652,29 +1686,43 @@ static void ui_draw_but_HSVCUBE(uiBut *but, rcti *rect) VECCOPY(col0[3], col1[3]); // new color - if(but->a1==0) { // H and V vary - hsv_to_rgb(dx, s, 0.0, &col1[0][0], &col1[0][1], &col1[0][2]); - hsv_to_rgb(dx, s, 0.333, &col1[1][0], &col1[1][1], &col1[1][2]); - hsv_to_rgb(dx, s, 0.666, &col1[2][0], &col1[2][1], &col1[2][2]); - hsv_to_rgb(dx, s, 1.0, &col1[3][0], &col1[3][1], &col1[3][2]); - } - else if(but->a1==1) { // H and S vary - hsv_to_rgb(dx, 0.0, v, &col1[0][0], &col1[0][1], &col1[0][2]); - hsv_to_rgb(dx, 0.333, v, &col1[1][0], &col1[1][1], &col1[1][2]); - hsv_to_rgb(dx, 0.666, v, &col1[2][0], &col1[2][1], &col1[2][2]); - hsv_to_rgb(dx, 1.0, v, &col1[3][0], &col1[3][1], &col1[3][2]); - } - else if(but->a1==2) { // S and V vary - hsv_to_rgb(h, 0.0, dx, &col1[0][0], &col1[0][1], &col1[0][2]); - hsv_to_rgb(h, 0.333, dx, &col1[1][0], &col1[1][1], &col1[1][2]); - hsv_to_rgb(h, 0.666, dx, &col1[2][0], &col1[2][1], &col1[2][2]); - hsv_to_rgb(h, 1.0, dx, &col1[3][0], &col1[3][1], &col1[3][2]); - } - else if(but->a1==3) { // only H - hsv_to_rgb(dx, 1.0, 1.0, &col1[0][0], &col1[0][1], &col1[0][2]); - VECCOPY(col1[1], col1[0]); - VECCOPY(col1[2], col1[0]); - VECCOPY(col1[3], col1[0]); + switch(type) { + case UI_GRAD_SV: + hsv_to_rgb(h, 0.0, dx, &col1[0][0], &col1[0][1], &col1[0][2]); + hsv_to_rgb(h, 0.333, dx, &col1[1][0], &col1[1][1], &col1[1][2]); + hsv_to_rgb(h, 0.666, dx, &col1[2][0], &col1[2][1], &col1[2][2]); + hsv_to_rgb(h, 1.0, dx, &col1[3][0], &col1[3][1], &col1[3][2]); + break; + case UI_GRAD_HV: + hsv_to_rgb(dx, s, 0.0, &col1[0][0], &col1[0][1], &col1[0][2]); + hsv_to_rgb(dx, s, 0.333, &col1[1][0], &col1[1][1], &col1[1][2]); + hsv_to_rgb(dx, s, 0.666, &col1[2][0], &col1[2][1], &col1[2][2]); + hsv_to_rgb(dx, s, 1.0, &col1[3][0], &col1[3][1], &col1[3][2]); + break; + case UI_GRAD_HS: + hsv_to_rgb(dx, 0.0, v, &col1[0][0], &col1[0][1], &col1[0][2]); + hsv_to_rgb(dx, 0.333, v, &col1[1][0], &col1[1][1], &col1[1][2]); + hsv_to_rgb(dx, 0.666, v, &col1[2][0], &col1[2][1], &col1[2][2]); + hsv_to_rgb(dx, 1.0, v, &col1[3][0], &col1[3][1], &col1[3][2]); + break; + case UI_GRAD_H: + hsv_to_rgb(dx, 1.0, 1.0, &col1[0][0], &col1[0][1], &col1[0][2]); + VECCOPY(col1[1], col1[0]); + VECCOPY(col1[2], col1[0]); + VECCOPY(col1[3], col1[0]); + break; + case UI_GRAD_S: + hsv_to_rgb(h, dx, 1.0, &col1[1][0], &col1[1][1], &col1[1][2]); + VECCOPY(col1[0], col1[1]); + VECCOPY(col1[2], col1[1]); + VECCOPY(col1[3], col1[1]); + break; + case UI_GRAD_V: + hsv_to_rgb(h, 1.0, dx, &col1[2][0], &col1[2][1], &col1[2][2]); + VECCOPY(col1[0], col1[2]); + VECCOPY(col1[1], col1[2]); + VECCOPY(col1[3], col1[2]); + break; } // rect @@ -1685,16 +1733,16 @@ static void ui_draw_but_HSVCUBE(uiBut *but, rcti *rect) glBegin(GL_QUADS); for(a=0; a<3; a++, sy+=dy) { - glColor3fv(col0[a]); + glColor4f(col0[a][0], col0[a][1], col0[a][2], alpha); glVertex2f(sx1, sy); - glColor3fv(col1[a]); + glColor4f(col1[a][0], col1[a][1], col1[a][2], alpha); glVertex2f(sx2, sy); - - glColor3fv(col1[a+1]); + + glColor4f(col1[a+1][0], col1[a+1][1], col1[a+1][2], alpha); glVertex2f(sx2, sy+dy); - glColor3fv(col0[a+1]); + glColor4f(col0[a+1][0], col0[a+1][1], col0[a+1][2], alpha); glVertex2f(sx1, sy+dy); } glEnd(); @@ -1702,6 +1750,35 @@ static void ui_draw_but_HSVCUBE(uiBut *but, rcti *rect) glShadeModel(GL_FLAT); +} + + + +static void ui_draw_but_HSVCUBE(uiBut *but, rcti *rect) +{ + float rgb[3], h,s,v; + float x=0.0f, y=0.0f; + + ui_get_but_vectorf(but, rgb); + rgb_to_hsv(rgb[0], rgb[1], rgb[2], &h, &s, &v); + + ui_draw_gradient(rect, rgb, but->a1, 1.f); + + switch((int)but->a1) { + case UI_GRAD_SV: + x= v; y= s; break; + case UI_GRAD_HV: + x= h; y= v; break; + case UI_GRAD_HS: + x= h; y= s; break; + case UI_GRAD_H: + x= h; y= 0.5; break; + case UI_GRAD_S: + x= s; y= 0.5; break; + case UI_GRAD_V: + x= v; y= 0.5; break; + } + /* cursor */ x= rect->xmin + x*(rect->xmax-rect->xmin); y= rect->ymin + y*(rect->ymax-rect->ymin); @@ -1721,7 +1798,7 @@ 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]; + float rgb[3], hsv[3], v, range; int color_profile = but->block->color_profile; if (but->rnaprop) { @@ -1730,8 +1807,16 @@ static void ui_draw_but_HSV_v(uiBut *but, rcti *rect) } } + ui_get_but_vectorf(but, rgb); + rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2); + v = hsv[2]; + if (color_profile) v = linearrgb_to_srgb(v); + + /* map v from property range to [0,1] */ + range = but->softmax - but->softmin; + v = (v - but->softmin)/range; widget_init(&wtb); @@ -1756,6 +1841,24 @@ static void ui_draw_but_HSV_v(uiBut *but, rcti *rect) } + +/* ************ separator, for menus etc ***************** */ +static void ui_draw_separator(uiBut *but, rcti *rect, uiWidgetColors *wcol) +{ + int y = rect->ymin + (rect->ymax - rect->ymin)/2 - 1; + unsigned char col[4]; + + col[0] = wcol->text[0]; + col[1] = wcol->text[1]; + col[2] = wcol->text[2]; + col[3] = 7; + + glEnable(GL_BLEND); + glColor4ubv(col); + sdrawline(rect->xmin, y, rect->xmax, y); + glDisable(GL_BLEND); +} + /* ************ button callbacks, draw ***************** */ static void widget_numbut(uiWidgetColors *wcol, rcti *rect, int state, int roundboxalign) @@ -1782,8 +1885,8 @@ static void widget_numbut(uiWidgetColors *wcol, rcti *rect, int state, int round rect->xmax -= textofs; } - -static int ui_link_bezier_points(rcti *rect, float coord_array[][2], int resol) +//static int ui_link_bezier_points(rcti *rect, float coord_array[][2], int resol) +int ui_link_bezier_points(rcti *rect, float coord_array[][2], int resol) { float dist, vec[4][2]; @@ -2064,6 +2167,7 @@ static void widget_swatch(uiBut *but, uiWidgetColors *wcol, rcti *rect, int stat wcol->inner[0]= FTOCHAR(col[0]); wcol->inner[1]= FTOCHAR(col[1]); wcol->inner[2]= FTOCHAR(col[2]); + wcol->shaded = 0; widgetbase_draw(&wtb, wcol); @@ -2473,6 +2577,7 @@ void ui_draw_but(const bContext *C, ARegion *ar, uiStyle *style, uiBut *but, rct widget_draw_text_icon(&style->widgetlabel, &tui->wcol_menu_back, but, rect); break; case SEPR: + ui_draw_separator(but, rect, &tui->wcol_menu_item); break; default: @@ -2584,14 +2689,14 @@ void ui_draw_but(const bContext *C, ARegion *ar, uiStyle *style, uiBut *but, rct break; case HSVCUBE: - if(but->a1==4) // vertical V slider, uses new widget draw now + if(but->a1==9) // vertical V slider, uses new widget draw now ui_draw_but_HSV_v(but, rect); else // other HSV pickers... ui_draw_but_HSVCUBE(but, rect); break; case HSVCIRCLE: - ui_draw_but_HSVCIRCLE(but, rect); + ui_draw_but_HSVCIRCLE(but, &tui->wcol_regular, rect); break; case BUT_COLORBAND: @@ -2605,6 +2710,10 @@ void ui_draw_but(const bContext *C, ARegion *ar, uiStyle *style, uiBut *but, rct case BUT_IMAGE: ui_draw_but_IMAGE(ar, but, &tui->wcol_regular, rect); break; + + case HISTOGRAM: + ui_draw_but_HISTOGRAM(ar, but, &tui->wcol_regular, rect); + break; case BUT_CURVE: ui_draw_but_CURVE(ar, but, &tui->wcol_regular, rect); diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c index 47bbbd9292c..9468eb7a0c6 100644 --- a/source/blender/editors/interface/resources.c +++ b/source/blender/editors/interface/resources.c @@ -154,6 +154,9 @@ char *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid) case SPACE_USERPREF: ts= &btheme->tuserpref; break; + case SPACE_CONSOLE: + ts= &btheme->tconsole; + break; case SPACE_TIME: ts= &btheme->ttime; break; @@ -340,6 +343,15 @@ char *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid) case TH_SEQ_META: cp= ts->meta; break; + case TH_CONSOLE_OUTPUT: + cp= ts->console_output; break; + case TH_CONSOLE_INPUT: + cp= ts-> console_input; break; + case TH_CONSOLE_INFO: + cp= ts->console_info; break; + case TH_CONSOLE_ERROR: + cp= ts->console_error; break; + case TH_HANDLE_VERTEX: cp= ts->handle_vertex; break; @@ -356,7 +368,10 @@ char *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid) case TH_DOPESHEET_CHANNELSUBOB: cp= ts->ds_subchannel; break; - + + case TH_PREVIEW_BACK: + cp= ts->preview_back; + break; } } } @@ -407,6 +422,7 @@ static void ui_theme_init_new(bTheme *btheme) ui_theme_init_new_do(&btheme->tnode); ui_theme_init_new_do(&btheme->tlogic); ui_theme_init_new_do(&btheme->tuserpref); + ui_theme_init_new_do(&btheme->tconsole); } @@ -556,6 +572,7 @@ void ui_theme_init_userdef(void) SETCOL(btheme->tima.face, 255, 255, 255, 10); SETCOL(btheme->tima.face_select, 255, 133, 0, 60); SETCOL(btheme->tima.editmesh_active, 255, 255, 255, 128); + SETCOLF(btheme->tima.preview_back, 0.45, 0.45, 0.45, 1.0); /* space imageselect */ btheme->timasel= btheme->tv3d; @@ -594,6 +611,14 @@ void ui_theme_init_userdef(void) /* space user preferences */ btheme->tuserpref= btheme->tv3d; SETCOLF(btheme->tuserpref.back, 0.45, 0.45, 0.45, 1.0); + + /* space console */ + btheme->tconsole= btheme->tv3d; + SETCOL(btheme->tconsole.console_output, 96, 128, 255, 255); + SETCOL(btheme->tconsole.console_input, 255, 255, 255, 255); + SETCOL(btheme->tconsole.console_info, 0, 170, 0, 255); + SETCOL(btheme->tconsole.console_error, 220, 96, 96, 255); + /* space sound */ btheme->tsnd= btheme->tv3d; @@ -782,6 +807,26 @@ void UI_GetThemeColor3fv(int colorid, float *col) col[2]= ((float)cp[2])/255.0; } +// get the color, range 0.0-1.0, complete with shading offset +void UI_GetThemeColorShade3fv(int colorid, int offset, float *col) +{ + int r, g, b; + char *cp; + + cp= UI_ThemeGetColorPtr(theme_active, theme_spacetype, colorid); + + r= offset + (int) cp[0]; + CLAMP(r, 0, 255); + g= offset + (int) cp[1]; + CLAMP(g, 0, 255); + b= offset + (int) cp[2]; + CLAMP(b, 0, 255); + + col[0]= ((float)r)/255.0; + col[1]= ((float)g)/255.0; + col[2]= ((float)b)/255.0; +} + // get the color, in char pointer void UI_GetThemeColor3ubv(int colorid, char *col) { @@ -1328,6 +1373,13 @@ void init_userdef_do_versions(void) if (U.anim_player_preset == 0) { U.anim_player_preset =1 ; } + if (U.scrcastfps == 0) { + U.scrcastfps = 10; + U.scrcastwait = 50; + } + if (U.v2d_min_gridsize == 0) { + U.v2d_min_gridsize= 35; + } /* 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.c b/source/blender/editors/interface/view2d.c index 6cc344b891e..7aabc147139 100644 --- a/source/blender/editors/interface/view2d.c +++ b/source/blender/editors/interface/view2d.c @@ -25,6 +25,7 @@ * ***** END GPL LICENSE BLOCK ***** */ +#include <float.h> #include <limits.h> #include <math.h> #include <string.h> @@ -50,6 +51,7 @@ #include "BLF_api.h" +#include "ED_anim_api.h" #include "ED_screen.h" #include "UI_interface.h" @@ -347,11 +349,14 @@ void UI_view2d_curRect_validate_resize(View2D *v2d, int resize) if (v2d->keepzoom & V2D_LOCKZOOM_Y) height= winy; - /* values used to divide, so make it safe */ - if(width<1) width= 1; - if(height<1) height= 1; - if(winx<1) winx= 1; - if(winy<1) winy= 1; + /* values used to divide, so make it safe + * NOTE: width and height must use FLT_MIN instead of 1, otherwise it is impossible to + * get enough resolution in Graph Editor for editing some curves + */ + if(width < FLT_MIN) width= 1; + if(height < FLT_MIN) height= 1; + if(winx < 1) winx= 1; + if(winy < 1) winy= 1; /* V2D_LIMITZOOM indicates that zoom level should be preserved when the window size changes */ if (resize && (v2d->keepzoom & V2D_KEEPZOOM)) { @@ -838,7 +843,8 @@ void UI_view2d_totRect_set_resize (View2D *v2d, int width, int height, int resiz height -= V2D_SCROLL_HEIGHT; if (ELEM3(0, v2d, width, height)) { - printf("Error: View2D totRect set exiting: v2d=%p width=%d height=%d \n", v2d, width, height); // XXX temp debug info + if (G.f & G_DEBUG) + printf("Error: View2D totRect set exiting: v2d=%p width=%d height=%d \n", v2d, width, height); // XXX temp debug info return; } @@ -1033,9 +1039,6 @@ void UI_view2d_view_restore(const bContext *C) /* *********************************************************************** */ /* Gridlines */ -/* minimum pixels per gridstep */ -#define MINGRIDSTEP 35 - /* View2DGrid is typedef'd in UI_view2d.h */ struct View2DGrid { float dx, dy; /* stepsize (in pixels) between gridlines */ @@ -1126,7 +1129,7 @@ View2DGrid *UI_view2d_grid_calc(const bContext *C, View2D *v2d, short xunits, sh space= v2d->cur.xmax - v2d->cur.xmin; pixels= (float)(v2d->mask.xmax - v2d->mask.xmin); - grid->dx= (MINGRIDSTEP * space) / (seconddiv * pixels); + grid->dx= (U.v2d_min_gridsize * space) / (seconddiv * pixels); step_to_grid(&grid->dx, &grid->powerx, xunits); grid->dx *= seconddiv; @@ -1142,7 +1145,7 @@ View2DGrid *UI_view2d_grid_calc(const bContext *C, View2D *v2d, short xunits, sh space= v2d->cur.ymax - v2d->cur.ymin; pixels= (float)winy; - grid->dy= MINGRIDSTEP * space / pixels; + grid->dy= U.v2d_min_gridsize * space / pixels; step_to_grid(&grid->dy, &grid->powery, yunits); if (yclamp == V2D_GRID_CLAMP) { @@ -1187,7 +1190,7 @@ void UI_view2d_grid_draw(const bContext *C, View2D *v2d, View2DGrid *grid, int f vec2[1]= v2d->cur.ymax; /* minor gridlines */ - step= (v2d->mask.xmax - v2d->mask.xmin + 1) / MINGRIDSTEP; + step= (v2d->mask.xmax - v2d->mask.xmin + 1) / U.v2d_min_gridsize; UI_ThemeColor(TH_GRID); for (a=0; a<step; a++) { @@ -1221,7 +1224,7 @@ void UI_view2d_grid_draw(const bContext *C, View2D *v2d, View2DGrid *grid, int f vec1[0]= grid->startx; vec2[0]= v2d->cur.xmax; - step= (v2d->mask.ymax - v2d->mask.ymin + 1) / MINGRIDSTEP; + step= (v2d->mask.ymax - v2d->mask.ymin + 1) / U.v2d_min_gridsize; UI_ThemeColor(TH_GRID); for (a=0; a<=step; a++) { @@ -1367,6 +1370,9 @@ View2DScrollers *UI_view2d_scrollers_calc(const bContext *C, View2D *v2d, short vert.ymin+=4; vert.ymax-=4; + CLAMP(vert.ymin, vert.ymin, vert.ymax-V2D_SCROLLER_HANDLE_SIZE); + CLAMP(hor.xmin, hor.xmin, hor.xmax-V2D_SCROLLER_HANDLE_SIZE); + /* store in scrollers, used for drawing */ scrollers->vert= vert; scrollers->hor= hor; @@ -1483,72 +1489,7 @@ static void scroll_printstr(View2DScrollers *scrollers, Scene *scene, float x, f } /* get string to print */ - if (unit == V2D_UNIT_SECONDS) { - /* Timecode: - * - In general, minutes and seconds should be shown, as most clips will be - * within this length. Hours will only be included if relevant. - * - Only show frames when zoomed in enough for them to be relevant - * (using separator of '!' for frames). - * When showing frames, use slightly different display to avoid confusion with mm:ss format - * TODO: factor into reusable function. - * Meanwhile keep in sync: - * source/blender/editors/animation/anim_draw.c - * source/blender/editors/interface/view2d.c - */ - int hours=0, minutes=0, seconds=0, frames=0; - char neg[2]= ""; - - /* get values */ - if (val < 0) { - /* correction for negative values */ - sprintf(neg, "-"); - val = -val; - } - if (val >= 3600) { - /* hours */ - /* XXX should we only display a single digit for hours since clips are - * VERY UNLIKELY to be more than 1-2 hours max? However, that would - * go against conventions... - */ - hours= (int)val / 3600; - val= (float)fmod(val, 3600); - } - if (val >= 60) { - /* minutes */ - minutes= (int)val / 60; - val= (float)fmod(val, 60); - } - if (power <= 0) { - /* seconds + frames - * Frames are derived from 'fraction' of second. We need to perform some additional rounding - * to cope with 'half' frames, etc., which should be fine in most cases - */ - seconds= (int)val; - frames= (int)floor( ((val - seconds) * FPS) + 0.5f ); - } - else { - /* seconds (with pixel offset) */ - seconds= (int)floor(val + 0.375f); - } - - /* print timecode to temp string buffer */ - if (power <= 0) { - /* include "frames" in display */ - if (hours) sprintf(str, "%s%02d:%02d:%02d!%02d", neg, hours, minutes, seconds, frames); - else if (minutes) sprintf(str, "%s%02d:%02d!%02d", neg, minutes, seconds, frames); - else sprintf(str, "%s%d!%02d", neg, seconds, frames); - } - else { - /* don't include 'frames' in display */ - if (hours) sprintf(str, "%s%02d:%02d:%02d", neg, hours, minutes, seconds); - else sprintf(str, "%s%02d:%02d", neg, minutes, seconds); - } - } - else { - /* round to whole numbers if power is >= 1 (i.e. scale is coarse) */ - if (power <= 0) sprintf(str, "%.*f", 1-power, val); - else sprintf(str, "%d", (int)floor(val + 0.375f)); - } + ANIM_timecode_string_from_frame(str, scene, power, (unit == V2D_UNIT_SECONDS), val); /* get length of string, and adjust printing location to fit it into the horizontal scrollbar */ len= strlen(str); @@ -1597,10 +1538,20 @@ void UI_view2d_scrollers_draw(const bContext *C, View2D *v2d, View2DScrollers *v state= (v2d->scroll_ui & V2D_SCROLL_H_ACTIVE)?UI_SCROLL_PRESSED:0; - // TODO: disable this for button regions... - if (!(v2d->keepzoom & V2D_LOCKZOOM_X)) + /* show zoom handles if: + * - zooming on x-axis is allowed (no scroll otherwise) + * - slider bubble is large enough (no overdraw confusion) + * - scale is shown on the scroller + * (workaround to make sure that button windows don't show these, + * and only the time-grids with their zoomability can do so) + */ + if ((v2d->keepzoom & V2D_LOCKZOOM_X)==0 && + (v2d->scroll & V2D_SCROLL_SCALE_HORIZONTAL) && + (slider.xmax - slider.xmin > V2D_SCROLLER_HANDLE_SIZE)) + { state |= UI_SCROLL_ARROWS; - + } + uiWidgetScrollDraw(&wcol, &hor, &slider, state); } @@ -1695,9 +1646,19 @@ void UI_view2d_scrollers_draw(const bContext *C, View2D *v2d, View2DScrollers *v state= (v2d->scroll_ui & V2D_SCROLL_V_ACTIVE)?UI_SCROLL_PRESSED:0; - // TODO: disable this for button regions... - if (!(v2d->keepzoom & V2D_LOCKZOOM_Y)) + /* show zoom handles if: + * - zooming on y-axis is allowed (no scroll otherwise) + * - slider bubble is large enough (no overdraw confusion) + * - scale is shown on the scroller + * (workaround to make sure that button windows don't show these, + * and only the time-grids with their zoomability can do so) + */ + if ((v2d->keepzoom & V2D_LOCKZOOM_Y)==0 && + (v2d->scroll & V2D_SCROLL_SCALE_VERTICAL) && + (slider.ymax - slider.ymin > V2D_SCROLLER_HANDLE_SIZE)) + { state |= UI_SCROLL_ARROWS; + } uiWidgetScrollDraw(&wcol, &vert, &slider, state); } @@ -1725,7 +1686,6 @@ void UI_view2d_scrollers_draw(const bContext *C, View2D *v2d, View2DScrollers *v val= grid->starty; /* if vertical clamping (to whole numbers) is used (i.e. in Sequencer), apply correction */ - // XXX only relevant to Sequencer, so need to review this when we port that code if (vs->yclamp == V2D_GRID_CLAMP) fac += 0.5f * dfac; diff --git a/source/blender/editors/interface/view2d_ops.c b/source/blender/editors/interface/view2d_ops.c index 7d1dc00e271..b25922cab5a 100644 --- a/source/blender/editors/interface/view2d_ops.c +++ b/source/blender/editors/interface/view2d_ops.c @@ -199,6 +199,16 @@ static int view_pan_invoke(bContext *C, wmOperator *op, wmEvent *event) /* set initial settings */ vpd->startx= vpd->lastx= event->x; vpd->starty= vpd->lasty= event->y; + + if (event->type == MOUSEPAN) { + RNA_int_set(op->ptr, "deltax", event->prevx - event->x); + RNA_int_set(op->ptr, "deltay", event->prevy - event->y); + + view_pan_apply(C, op); + view_pan_exit(C, op); + return OPERATOR_FINISHED; + } + RNA_int_set(op->ptr, "deltax", 0); RNA_int_set(op->ptr, "deltay", 0); @@ -236,6 +246,18 @@ static int view_pan_modal(bContext *C, wmOperator *op, wmEvent *event) break; case LEFTMOUSE: + /* switch to zoom */ + if (event->val==KM_PRESS) { + /* calculate overall delta mouse-movement for redo */ + RNA_int_set(op->ptr, "deltax", (vpd->startx - vpd->lastx)); + RNA_int_set(op->ptr, "deltay", (vpd->starty - vpd->lasty)); + + view_pan_exit(C, op); + WM_cursor_restore(CTX_wm_window(C)); + + WM_operator_name_call(C, "VIEW2D_OT_zoom", WM_OP_INVOKE_DEFAULT, NULL); + return OPERATOR_FINISHED; + } case MIDDLEMOUSE: case ESCKEY: if (event->val==KM_RELEASE) { @@ -483,7 +505,43 @@ void VIEW2D_OT_scroll_up(wmOperatorType *ot) */ /* ------------------ 'Shared' stuff ------------------------ */ - + +/* temp customdata for operator */ +typedef struct v2dViewZoomData { + View2D *v2d; /* view2d we're operating in */ + + 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 */ +static int view_zoomdrag_init(bContext *C, wmOperator *op) +{ + ARegion *ar= CTX_wm_region(C); + v2dViewZoomData *vzd; + View2D *v2d; + + /* regions now have v2d-data by default, so check for region */ + if (ar == NULL) + return 0; + v2d= &ar->v2d; + + /* check that 2d-view is zoomable */ + if ((v2d->keepzoom & V2D_LOCKZOOM_X) && (v2d->keepzoom & V2D_LOCKZOOM_Y)) + return 0; + + /* set custom-data for operator */ + vzd= MEM_callocN(sizeof(v2dViewZoomData), "v2dViewZoomData"); + op->customdata= vzd; + + /* set pointers to owners */ + vzd->v2d= v2d; + + return 1; +} + /* check if step-zoom can be applied */ static int view_zoom_poll(bContext *C) { @@ -506,6 +564,7 @@ static int view_zoom_poll(bContext *C) /* apply transform to view (i.e. adjust 'cur' rect) */ static void view_zoomstep_apply(bContext *C, wmOperator *op) { + v2dViewZoomData *vzd= op->customdata; ARegion *ar= CTX_wm_region(C); View2D *v2d= &ar->v2d; float dx, dy, facx, facy; @@ -536,8 +595,17 @@ static void view_zoomstep_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) { @@ -551,8 +619,16 @@ static void view_zoomstep_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; + } } } @@ -567,6 +643,15 @@ static void view_zoomstep_apply(bContext *C, wmOperator *op) /* --------------- Individual Operators ------------------- */ +/* cleanup temp customdata */ +static void view_zoomstep_exit(bContext *C, wmOperator *op) +{ + if (op->customdata) { + MEM_freeN(op->customdata); + op->customdata= NULL; + } +} + /* this operator only needs this single callback, where it calls the view_zoom_*() methods */ static int view_zoomin_exec(bContext *C, wmOperator *op) { @@ -581,9 +666,28 @@ static int view_zoomin_exec(bContext *C, wmOperator *op) /* apply movement, then we're done */ view_zoomstep_apply(C, op); + view_zoomstep_exit(C, op); + return OPERATOR_FINISHED; } +static int view_zoomin_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + v2dViewZoomData *vzd; + + if (!view_zoomdrag_init(C, op)) + return OPERATOR_PASS_THROUGH; + + vzd= op->customdata; + + 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); + } + + return view_zoomin_exec(C, op); +} + void VIEW2D_OT_zoom_in(wmOperatorType *ot) { /* identifiers */ @@ -592,7 +696,9 @@ void VIEW2D_OT_zoom_in(wmOperatorType *ot) ot->idname= "VIEW2D_OT_zoom_in"; /* api callbacks */ + ot->invoke= view_zoomin_invoke; ot->exec= view_zoomin_exec; + ot->poll= view_zoom_poll; /* operator is repeatable */ // ot->flag= OPTYPE_REGISTER; @@ -601,9 +707,7 @@ void VIEW2D_OT_zoom_in(wmOperatorType *ot) RNA_def_float(ot->srna, "zoomfacx", 0, -FLT_MAX, FLT_MAX, "Zoom Factor X", "", -FLT_MAX, FLT_MAX); RNA_def_float(ot->srna, "zoomfacy", 0, -FLT_MAX, FLT_MAX, "Zoom Factor Y", "", -FLT_MAX, FLT_MAX); } - - - + /* this operator only needs this single callback, where it callsthe view_zoom_*() methods */ static int view_zoomout_exec(bContext *C, wmOperator *op) { @@ -617,10 +721,29 @@ static int view_zoomout_exec(bContext *C, wmOperator *op) /* apply movement, then we're done */ view_zoomstep_apply(C, op); + + view_zoomstep_exit(C, op); return OPERATOR_FINISHED; } +static int view_zoomout_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + v2dViewZoomData *vzd; + + if (!view_zoomdrag_init(C, op)) + return OPERATOR_PASS_THROUGH; + + vzd= op->customdata; + + 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); + } + + return view_zoomout_exec(C, op); +} + void VIEW2D_OT_zoom_out(wmOperatorType *ot) { /* identifiers */ @@ -629,7 +752,9 @@ void VIEW2D_OT_zoom_out(wmOperatorType *ot) ot->idname= "VIEW2D_OT_zoom_out"; /* api callbacks */ + ot->invoke= view_zoomout_invoke; ot->exec= view_zoomout_exec; + ot->poll= view_zoom_poll; /* operator is repeatable */ // ot->flag= OPTYPE_REGISTER; @@ -647,43 +772,6 @@ void VIEW2D_OT_zoom_out(wmOperatorType *ot) * In order to make sure this works, each operator must define the following RNA-Operator Props: * deltax, deltay - amounts to add to each side of the 'cur' rect */ - -/* ------------------ Shared 'core' stuff ---------------------- */ - -/* temp customdata for operator */ -typedef struct v2dViewZoomData { - View2D *v2d; /* view2d we're operating in */ - - 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 */ -static int view_zoomdrag_init(bContext *C, wmOperator *op) -{ - ARegion *ar= CTX_wm_region(C); - v2dViewZoomData *vzd; - View2D *v2d; - - /* regions now have v2d-data by default, so check for region */ - if (ar == NULL) - return 0; - v2d= &ar->v2d; - - /* check that 2d-view is zoomable */ - if ((v2d->keepzoom & V2D_LOCKZOOM_X) && (v2d->keepzoom & V2D_LOCKZOOM_Y)) - return 0; - - /* set custom-data for operator */ - vzd= MEM_callocN(sizeof(v2dViewZoomData), "v2dViewZoomData"); - op->customdata= vzd; - - /* set pointers to owners */ - vzd->v2d= v2d; - - return 1; -} /* apply transform to view (i.e. adjust 'cur' rect) */ static void view_zoomdrag_apply(bContext *C, wmOperator *op) @@ -777,6 +865,26 @@ static int view_zoomdrag_invoke(bContext *C, wmOperator *op, wmEvent *event) vzd= op->customdata; v2d= vzd->v2d; + if (event->type == MOUSEZOOM) { + float dx, dy, fac; + + vzd->lastx= event->prevx; + vzd->lasty= event->prevy; + + /* As we have only 1D information (magnify value), feed both axes + with magnify information that is stored in x axis */ + fac= 0.01f * (event->x - event->prevx); + dx= fac * (v2d->cur.xmax - v2d->cur.xmin) / 10.0f; + dy= fac * (v2d->cur.ymax - v2d->cur.ymin) / 10.0f; + + RNA_float_set(op->ptr, "deltax", dx); + RNA_float_set(op->ptr, "deltay", dy); + + view_zoomdrag_apply(C, op); + view_zoomdrag_exit(C, op); + return OPERATOR_FINISHED; + } + /* set initial settings */ vzd->lastx= event->x; vzd->lasty= event->y; @@ -1455,6 +1563,8 @@ void UI_view2d_keymap(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "VIEW2D_OT_pan", MIDDLEMOUSE, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "VIEW2D_OT_pan", MIDDLEMOUSE, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "VIEW2D_OT_pan", MOUSEPAN, 0, 0, 0); + WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_right", WHEELDOWNMOUSE, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_left", WHEELUPMOUSE, KM_PRESS, KM_CTRL, 0); @@ -1477,6 +1587,7 @@ void UI_view2d_keymap(wmKeyConfig *keyconf) /* zoom - drag */ WM_keymap_add_item(keymap, "VIEW2D_OT_zoom", MIDDLEMOUSE, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "VIEW2D_OT_zoom", MOUSEZOOM, 0, 0, 0); /* borderzoom - drag */ WM_keymap_add_item(keymap, "VIEW2D_OT_zoom_border", BKEY, KM_PRESS, KM_SHIFT, 0); @@ -1487,9 +1598,11 @@ void UI_view2d_keymap(wmKeyConfig *keyconf) /* Alternative keymap for buttons listview */ keymap= WM_keymap_find(keyconf, "View2D Buttons List", 0, 0); WM_keymap_add_item(keymap, "VIEW2D_OT_pan", MIDDLEMOUSE, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "VIEW2D_OT_pan", MOUSEPAN, 0, 0, 0); WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_down", WHEELDOWNMOUSE, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_up", WHEELUPMOUSE, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "VIEW2D_OT_zoom", MIDDLEMOUSE, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "VIEW2D_OT_zoom", MOUSEZOOM, 0, 0, 0); WM_keymap_add_item(keymap, "VIEW2D_OT_zoom_out", PADMINUS, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "VIEW2D_OT_zoom_in", PADPLUSKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "VIEW2D_OT_reset", HOMEKEY, KM_PRESS, 0, 0); diff --git a/source/blender/editors/mesh/editmesh.c b/source/blender/editors/mesh/editmesh.c index a286c0ad8e8..d5794bfd4b3 100644 --- a/source/blender/editors/mesh/editmesh.c +++ b/source/blender/editors/mesh/editmesh.c @@ -753,7 +753,7 @@ void make_editMesh(Scene *scene, Object *ob) KeyBlock *actkey; EditMesh *em; EditVert *eve, **evlist, *eve1, *eve2, *eve3, *eve4; - EditFace *efa; + EditFace *efa, *efa_last_sel= NULL; EditEdge *eed; EditSelection *ese; float *co, (*keyco)[3]= NULL; @@ -886,12 +886,18 @@ void make_editMesh(Scene *scene, Object *ob) if(paint_facesel_test(ob)) { EM_select_face(efa, 1); /* flush down */ } + + efa_last_sel= efa; } } } } } + if(EM_get_actFace(em, 0) && efa_last_sel) { + EM_set_actFace(em, efa_last_sel); + } + if(eekadoodle) error("This Mesh has old style edgecodes, please put it in the bugtracker!"); @@ -1504,7 +1510,7 @@ void MESH_OT_separate(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - RNA_def_enum(ot->srna, "type", prop_separate_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_separate_types, 0, "Type", ""); } @@ -1552,7 +1558,7 @@ typedef struct UndoMesh { EditFaceC *faces; EditSelectionC *selected; int totvert, totedge, totface, totsel; - short selectmode; + int selectmode, shapenr; RetopoPaintData *retopo_paint_data; char retopo_mode; CustomData vdata, edata, fdata; @@ -1592,6 +1598,7 @@ static void *editMesh_to_undoMesh(void *emv) um= MEM_callocN(sizeof(UndoMesh), "undomesh"); um->selectmode = em->selectmode; + um->shapenr = em->shapenr; for(eve=em->verts.first; eve; eve= eve->next) um->totvert++; for(eed=em->edges.first; eed; eed= eed->next) um->totedge++; @@ -1694,6 +1701,7 @@ static void undoMesh_to_editMesh(void *umv, void *emv) memset(em, 0, sizeof(EditMesh)); em->selectmode = um->selectmode; + em->shapenr = um->shapenr; init_editmesh_fastmalloc(em, um->totvert, um->totedge, um->totface); diff --git a/source/blender/editors/mesh/editmesh_add.c b/source/blender/editors/mesh/editmesh_add.c index d7f421331e5..b79b840eac0 100644 --- a/source/blender/editors/mesh/editmesh_add.c +++ b/source/blender/editors/mesh/editmesh_add.c @@ -484,7 +484,7 @@ static int compareface_overlaps(EditFace *vl1, EditFace *vl2) return 0; } -/* checks for existance, and for tria overlapping inside quad */ +/* checks for existence, and for tria overlapping inside quad */ static EditFace *exist_face_overlaps(EditMesh *em, EditVert *v1, EditVert *v2, EditVert *v3, EditVert *v4) { EditFace *efa, efatest; @@ -766,7 +766,8 @@ static void addedgeface_mesh(EditMesh *em, wmOperator *op) else if( convex(neweve[0]->co, neweve[3]->co, neweve[1]->co, neweve[2]->co) ) { efa= addfacelist(em, neweve[0], neweve[3], neweve[1], neweve[2], NULL, NULL); } - else printf("cannot find nice quad from concave set of vertices\n"); + else BKE_report(op->reports, RPT_ERROR, "cannot find nice quad from concave set of vertices"); + } } } @@ -1265,44 +1266,14 @@ static void make_prim(Object *obedit, int type, float mat[4][4], int tot, int se EM_select_flush(em); /* flushes vertex -> edge -> face selection */ if(type!=PRIM_PLANE && type!=PRIM_MONKEY) - righthandfaces(em, 1); /* otherwise monkey has eyes in wrong direction */ + EM_recalc_normal_direction(em, 0, 0); /* otherwise monkey has eyes in wrong direction */ BKE_mesh_end_editmesh(obedit->data, em); } - -/* uses context to figure out transform for primitive */ -/* returns standard diameter */ -static float new_primitive_matrix(bContext *C, float *loc, float *rot, float primmat[][4]) -{ - Object *obedit= CTX_data_edit_object(C); - View3D *v3d =CTX_wm_view3d(C); - float mat[3][3], rmat[3][3], cmat[3][3], imat[3][3]; - - unit_m4(primmat); - - eul_to_mat3(rmat, rot); - invert_m3(rmat); - - /* inverse transform for initial rotation and object */ - copy_m3_m4(mat, obedit->obmat); - mul_m3_m3m3(cmat, rmat, mat); - invert_m3_m3(imat, cmat); - copy_m4_m3(primmat, imat); - - /* center */ - VECCOPY(primmat[3], loc); - VECSUB(primmat[3], primmat[3], obedit->obmat[3]); - invert_m3_m3(imat, mat); - mul_m3_v3(imat, primmat[3]); - - if(v3d) return v3d->grid; - return 1.0f; -} - /* ********* add primitive operators ************* */ -static void make_prim_ext(bContext *C, float *loc, float *rot, int enter_editmode, +static void make_prim_ext(bContext *C, float *loc, float *rot, int enter_editmode, unsigned int layer, int type, int tot, int seg, int subdiv, float dia, float depth, int ext, int fill) { @@ -1311,7 +1282,7 @@ static void make_prim_ext(bContext *C, float *loc, float *rot, int enter_editmod float mat[4][4]; if(obedit==NULL || obedit->type!=OB_MESH) { - obedit= ED_object_add_type(C, OB_MESH, loc, rot, FALSE); + obedit= ED_object_add_type(C, OB_MESH, loc, rot, FALSE, layer); /* create editmode */ ED_object_enter_editmode(C, EM_DO_UNDO|EM_IGNORE_LAYER); /* rare cases the active layer is messed up */ @@ -1319,7 +1290,7 @@ static void make_prim_ext(bContext *C, float *loc, float *rot, int enter_editmod } else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); - dia *= new_primitive_matrix(C, loc, rot, mat); + dia *= ED_object_new_primitive_matrix(C, loc, rot, mat); make_prim(obedit, type, mat, tot, seg, subdiv, dia, depth, ext, fill); @@ -1337,12 +1308,13 @@ static void make_prim_ext(bContext *C, float *loc, float *rot, int enter_editmod static int add_primitive_plane_exec(bContext *C, wmOperator *op) { int enter_editmode; + unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode); + ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); /* sqrt(2.0f) - plane (diameter of 1.41 makes it unit size) */ - make_prim_ext(C, loc, rot, enter_editmode, + make_prim_ext(C, loc, rot, enter_editmode, layer, PRIM_PLANE, 4, 0, 0, sqrt(2.0f), 0.0f, 0, 1); return OPERATOR_FINISHED; } @@ -1368,12 +1340,13 @@ void MESH_OT_primitive_plane_add(wmOperatorType *ot) static int add_primitive_cube_exec(bContext *C, wmOperator *op) { int enter_editmode; + unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode); + ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); /* sqrt(2.0f) - plane (diameter of 1.41 makes it unit size) */ - make_prim_ext(C, loc, rot, enter_editmode, + make_prim_ext(C, loc, rot, enter_editmode, layer, PRIM_CUBE, 4, 0, 0, sqrt(2.0f), 1.0f, 1, 1); return OPERATOR_FINISHED; } @@ -1399,11 +1372,12 @@ void MESH_OT_primitive_cube_add(wmOperatorType *ot) static int add_primitive_circle_exec(bContext *C, wmOperator *op) { int enter_editmode; + unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode); + ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); - make_prim_ext(C, loc, rot, enter_editmode, + make_prim_ext(C, loc, rot, enter_editmode, layer, PRIM_CIRCLE, RNA_int_get(op->ptr, "vertices"), 0, 0, RNA_float_get(op->ptr,"radius"), 0.0f, 0, RNA_boolean_get(op->ptr, "fill")); @@ -1437,11 +1411,12 @@ void MESH_OT_primitive_circle_add(wmOperatorType *ot) static int add_primitive_tube_exec(bContext *C, wmOperator *op) { int enter_editmode; + unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode); + ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); - make_prim_ext(C, loc, rot, enter_editmode, + make_prim_ext(C, loc, rot, enter_editmode, layer, PRIM_CYLINDER, RNA_int_get(op->ptr, "vertices"), 0, 0, RNA_float_get(op->ptr,"radius"), RNA_float_get(op->ptr, "depth"), 1, @@ -1477,11 +1452,12 @@ void MESH_OT_primitive_tube_add(wmOperatorType *ot) static int add_primitive_cone_exec(bContext *C, wmOperator *op) { int enter_editmode; + unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode); + ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); - make_prim_ext(C, loc, rot, enter_editmode, + make_prim_ext(C, loc, rot, enter_editmode, layer, PRIM_CONE, RNA_int_get(op->ptr, "vertices"), 0, 0, RNA_float_get(op->ptr,"radius"), RNA_float_get(op->ptr, "depth"), 0, RNA_boolean_get(op->ptr, "cap_end")); @@ -1516,11 +1492,12 @@ void MESH_OT_primitive_cone_add(wmOperatorType *ot) static int add_primitive_grid_exec(bContext *C, wmOperator *op) { int enter_editmode; + unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode); + ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); - make_prim_ext(C, loc, rot, enter_editmode, + make_prim_ext(C, loc, rot, enter_editmode, layer, PRIM_GRID, RNA_int_get(op->ptr, "x_subdivisions"), RNA_int_get(op->ptr, "y_subdivisions"), 0, RNA_float_get(op->ptr,"size"), 0.0f, 0, 1); @@ -1554,11 +1531,12 @@ void MESH_OT_primitive_grid_add(wmOperatorType *ot) static int add_primitive_monkey_exec(bContext *C, wmOperator *op) { int enter_editmode; + unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode); + ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); - make_prim_ext(C, loc, rot, enter_editmode, + make_prim_ext(C, loc, rot, enter_editmode, layer, PRIM_MONKEY, 0, 0, 2, 0.0f, 0.0f, 0, 0); return OPERATOR_FINISHED; @@ -1585,11 +1563,12 @@ void MESH_OT_primitive_monkey_add(wmOperatorType *ot) static int add_primitive_uvsphere_exec(bContext *C, wmOperator *op) { int enter_editmode; + unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode); + ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); - make_prim_ext(C, loc, rot, enter_editmode, + make_prim_ext(C, loc, rot, enter_editmode, layer, PRIM_UVSPHERE, RNA_int_get(op->ptr, "rings"), RNA_int_get(op->ptr, "segments"), 0, RNA_float_get(op->ptr,"size"), 0.0f, 0, 0); @@ -1623,11 +1602,12 @@ void MESH_OT_primitive_uv_sphere_add(wmOperatorType *ot) static int add_primitive_icosphere_exec(bContext *C, wmOperator *op) { int enter_editmode; + unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode); + ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); - make_prim_ext(C, loc, rot, enter_editmode, + make_prim_ext(C, loc, rot, enter_editmode, layer, PRIM_ICOSPHERE, 0, 0, RNA_int_get(op->ptr, "subdivisions"), RNA_float_get(op->ptr,"size"), 0.0f, 0, 0); diff --git a/source/blender/editors/mesh/editmesh_lib.c b/source/blender/editors/mesh/editmesh_lib.c index d99765bd199..b3e96729201 100644 --- a/source/blender/editors/mesh/editmesh_lib.c +++ b/source/blender/editors/mesh/editmesh_lib.c @@ -432,7 +432,7 @@ void EM_select_face_fgon(EditMesh *em, EditFace *efa, int val) if(efa->e3->fgoni) index= efa->e3->fgoni; if(efa->v4 && efa->e4->fgoni) index= efa->e4->fgoni; - if(index==0) printf("wrong fgon select\n"); + if((index==0) && (G.f & G_DEBUG))printf("wrong fgon select\n"); // select all ngon faces with index for(efa= em->faces.first; efa; efa= efa->next) { @@ -1975,7 +1975,7 @@ int compareface(EditFace *vl1, EditFace *vl2) return 0; } -/* checks for existance, not tria overlapping inside quad */ +/* checks for existence, not tria overlapping inside quad */ EditFace *exist_face(EditMesh *em, EditVert *v1, EditVert *v2, EditVert *v3, EditVert *v4) { EditFace *efa, efatest; diff --git a/source/blender/editors/mesh/editmesh_loop.c b/source/blender/editors/mesh/editmesh_loop.c index ea444b2d014..2cd5f221ebe 100644 --- a/source/blender/editors/mesh/editmesh_loop.c +++ b/source/blender/editors/mesh/editmesh_loop.c @@ -682,7 +682,6 @@ static int knife_cut_exec(bContext *C, wmOperator *op) if (isect!=0.0f) eed->f2= 1; else eed->f2=0; eed->tmp.fp= isect; - //printf("isect=%i\n", isect); } else { eed->f2=0; diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c index 827b28f954b..717b725387a 100644 --- a/source/blender/editors/mesh/editmesh_mods.c +++ b/source/blender/editors/mesh/editmesh_mods.c @@ -120,7 +120,7 @@ void EM_cache_x_mirror_vert(struct Object *ob, struct EditMesh *em) } } -void EM_select_mirrored(Object *obedit, EditMesh *em, int extend) +static void EM_select_mirrored(Object *obedit, EditMesh *em, int extend) { EditVert *eve; @@ -1260,6 +1260,10 @@ static EnumPropertyItem *select_similar_type_itemf(bContext *C, PointerRNA *ptr, Object *obedit= CTX_data_edit_object(C); EnumPropertyItem *item= NULL; int a, totitem= 0; + + if (C == NULL) { + return prop_similar_types; + } if(obedit && obedit->type == OB_MESH) { EditMesh *em= BKE_mesh_get_editmesh(obedit->data); @@ -1304,6 +1308,7 @@ void MESH_OT_select_similar(wmOperatorType *ot) /* properties */ prop= RNA_def_enum(ot->srna, "type", prop_similar_types, SIMVERT_NORMAL, "Type", ""); RNA_def_enum_funcs(prop, select_similar_type_itemf); + ot->prop= prop; } /* ******************************************* */ @@ -2111,7 +2116,7 @@ void MESH_OT_loop_select(wmOperatorType *ot) /* api callbacks */ ot->invoke= mesh_select_loop_invoke; - ot->poll= ED_operator_editmesh; + ot->poll= ED_operator_editmesh_view3d; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2213,7 +2218,7 @@ void MESH_OT_select_shortest_path(wmOperatorType *ot) /* api callbacks */ ot->invoke= mesh_shortest_path_select_invoke; - ot->poll= ED_operator_editmesh; + ot->poll= ED_operator_editmesh_view3d; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2521,7 +2526,7 @@ void MESH_OT_select_linked_pick(wmOperatorType *ot) /* api callbacks */ ot->invoke= select_linked_pick_invoke; - ot->poll= ED_operator_editmesh; + ot->poll= ED_operator_editmesh_view3d; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2858,7 +2863,7 @@ void MESH_OT_select_by_number_vertices(wmOperatorType *ot) { static const EnumPropertyItem type_items[]= { {3, "TRIANGLES", 0, "Triangles", NULL}, - {4, "QUADS", 0, "Triangles", NULL}, + {4, "QUADS", 0, "Quads", NULL}, {5, "OTHER", 0, "Other", NULL}, {0, NULL, 0, NULL, NULL}}; @@ -2869,13 +2874,14 @@ void MESH_OT_select_by_number_vertices(wmOperatorType *ot) /* api callbacks */ ot->exec= select_by_number_vertices_exec; + ot->invoke= WM_menu_invoke; ot->poll= ED_operator_editmesh; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* props */ - RNA_def_enum(ot->srna, "type", type_items, 3, "Type", "Type of elements to select."); + ot->prop= RNA_def_enum(ot->srna, "type", type_items, 3, "Type", "Type of elements to select."); } @@ -3800,8 +3806,7 @@ void MESH_OT_mark_sharp(wmOperatorType *ot) /* **************** NORMALS ************** */ -/* XXX value of select is messed up, it means two things */ -void righthandfaces(EditMesh *em, int select) /* makes faces righthand turning */ +void EM_recalc_normal_direction(EditMesh *em, int inside, int select) /* makes faces righthand turning */ { EditEdge *eed, *ed1, *ed2, *ed3, *ed4; EditFace *efa, *startvl; @@ -3893,16 +3898,12 @@ void righthandfaces(EditMesh *em, int select) /* makes faces righthand turning * cent_tri_v3(cent, startvl->v1->co, startvl->v2->co, startvl->v3->co); } /* first normal is oriented this way or the other */ - if(select) { - if(select==2) { - if(cent[0]*nor[0]+cent[1]*nor[1]+cent[2]*nor[2] > 0.0) flipface(em, startvl); - } - else { - if(cent[0]*nor[0]+cent[1]*nor[1]+cent[2]*nor[2] < 0.0) flipface(em, startvl); - } + if(inside) { + if(cent[0]*nor[0]+cent[1]*nor[1]+cent[2]*nor[2] > 0.0) flipface(em, startvl); + } + else { + if(cent[0]*nor[0]+cent[1]*nor[1]+cent[2]*nor[2] < 0.0) flipface(em, startvl); } - else if(cent[0]*nor[0]+cent[1]*nor[1]+cent[2]*nor[2] < 0.0) flipface(em, startvl); - eed= startvl->e1; if(eed->v1==startvl->v1) eed->f2= 1; @@ -4012,7 +4013,7 @@ void righthandfaces(EditMesh *em, int select) /* makes faces righthand turning * } -static int righthandfaces_exec(bContext *C, wmOperator *op) +static int normals_make_consistent_exec(bContext *C, wmOperator *op) { Object *obedit= CTX_data_edit_object(C); EditMesh *em= BKE_mesh_get_editmesh(((Mesh *)obedit->data)); @@ -4020,7 +4021,7 @@ static int righthandfaces_exec(bContext *C, wmOperator *op) /* 'standard' behaviour - check if selected, then apply relevant selection */ // XXX need other args - righthandfaces(em, RNA_boolean_get(op->ptr, "inside")); + EM_recalc_normal_direction(em, RNA_boolean_get(op->ptr, "inside"), 1); BKE_mesh_end_editmesh(obedit->data, em); @@ -4038,7 +4039,7 @@ void MESH_OT_normals_make_consistent(wmOperatorType *ot) ot->idname= "MESH_OT_normals_make_consistent"; /* api callbacks */ - ot->exec= righthandfaces_exec; + ot->exec= normals_make_consistent_exec; ot->poll= ED_operator_editmesh; /* flags */ diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index e41d60783fe..3539079591d 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -1326,7 +1326,7 @@ void MESH_OT_delete(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /*props */ - RNA_def_enum(ot->srna, "type", prop_mesh_delete_types, 10, "Type", "Method used for deleting mesh data"); + ot->prop= RNA_def_enum(ot->srna, "type", prop_mesh_delete_types, 10, "Type", "Method used for deleting mesh data"); } @@ -3399,7 +3399,7 @@ void join_triangles(EditMesh *em) #define FACE_MARKCLEAR(f) (f->f1 = 1) -/* quick hack, basically a copy of beauty_fill */ +/* quick hack, basically a copy of beautify_fill */ void edge_flip(EditMesh *em) { EditVert *v1, *v2, *v3, *v4; @@ -5835,6 +5835,10 @@ static EnumPropertyItem *merge_type_itemf(bContext *C, PointerRNA *ptr, int *fre EnumPropertyItem *item= NULL; int totitem= 0; + if (C==NULL) { + return merge_type_items; + } + if(obedit && obedit->type == OB_MESH) { EditMesh *em= BKE_mesh_get_editmesh(obedit->data); @@ -5881,6 +5885,7 @@ void MESH_OT_merge(wmOperatorType *ot) /* properties */ prop= RNA_def_enum(ot->srna, "type", merge_type_items, 3, "Type", "Merge method to use."); RNA_def_enum_funcs(prop, merge_type_itemf); + ot->prop= prop; RNA_def_boolean(ot->srna, "uvs", 0, "UVs", "Move UVs according to merge."); } @@ -6082,7 +6087,7 @@ void MESH_OT_select_vertex_path(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "type", type_items, PATH_SELECT_EDGE_LENGTH, "Type", "Method to compute distance."); + ot->prop= RNA_def_enum(ot->srna, "type", type_items, PATH_SELECT_EDGE_LENGTH, "Type", "Method to compute distance."); } /********************** Region/Loop Operators *************************/ @@ -6720,7 +6725,7 @@ void MESH_OT_subdivide(wmOperatorType *ot) /* note; the EM_selectmode_set() calls here illustrate how badly constructed it all is... from before the edge/face flags, with very mixed results.... */ -static void beauty_fill(EditMesh *em) +static void beautify_fill(EditMesh *em) { EditVert *v1, *v2, *v3, *v4; EditEdge *eed, *nexted; @@ -6955,7 +6960,7 @@ static void fill_mesh(EditMesh *em) } BLI_end_edgefill(); - beauty_fill(em); + beautify_fill(em); WM_cursor_wait(0); EM_select_flush(em); @@ -6993,12 +6998,12 @@ void MESH_OT_fill(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } -static int beauty_fill_exec(bContext *C, wmOperator *op) +static int beautify_fill_exec(bContext *C, wmOperator *op) { Object *obedit= CTX_data_edit_object(C); EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data); - beauty_fill(em); + beautify_fill(em); BKE_mesh_end_editmesh(obedit->data, em); @@ -7008,15 +7013,15 @@ static int beauty_fill_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void MESH_OT_beauty_fill(wmOperatorType *ot) +void MESH_OT_beautify_fill(wmOperatorType *ot) { /* identifiers */ - ot->name= "Beauty Fill"; - ot->description= "Arrange geometry on a selected surface to avoid skinny faces."; - ot->idname= "MESH_OT_beauty_fill"; + ot->name= "Beautify Fill"; + ot->description= "Rearrange geometry on a selected surface to avoid skinny faces."; + ot->idname= "MESH_OT_beautify_fill"; /* api callbacks */ - ot->exec= beauty_fill_exec; + ot->exec= beautify_fill_exec; ot->poll= ED_operator_editmesh; /* flags */ diff --git a/source/blender/editors/mesh/loopcut.c b/source/blender/editors/mesh/loopcut.c index 9fea0d08e70..906d966245f 100644 --- a/source/blender/editors/mesh/loopcut.c +++ b/source/blender/editors/mesh/loopcut.c @@ -27,8 +27,6 @@ */ #include <float.h> -#define _USE_MATH_DEFINES -#include <math.h> #include <string.h> #include <ctype.h> #include <stdio.h> @@ -47,6 +45,7 @@ #include "BLI_blenlib.h" #include "BLI_dynstr.h" /*for WM_operator_pystring */ #include "BLI_editVert.h" +#include "BLI_math.h" #include "BKE_blender.h" #include "BKE_context.h" @@ -103,21 +102,23 @@ static void ringsel_draw(const bContext *C, ARegion *ar, void *arg) int i; tringselOpData *lcd = arg; - glDisable(GL_DEPTH_TEST); + if (lcd->totedge > 0) { + glDisable(GL_DEPTH_TEST); - glPushMatrix(); - glMultMatrixf(lcd->ob->obmat); + glPushMatrix(); + glMultMatrixf(lcd->ob->obmat); - glColor3ub(255, 0, 255); - glBegin(GL_LINES); - for (i=0; i<lcd->totedge; i++) { - glVertex3fv(lcd->edges[i][0]); - glVertex3fv(lcd->edges[i][1]); - } - glEnd(); + glColor3ub(255, 0, 255); + glBegin(GL_LINES); + for (i=0; i<lcd->totedge; i++) { + glVertex3fv(lcd->edges[i][0]); + glVertex3fv(lcd->edges[i][1]); + } + glEnd(); - glPopMatrix(); - glEnable(GL_DEPTH_TEST); + glPopMatrix(); + glEnable(GL_DEPTH_TEST); + } } static void edgering_sel(tringselOpData *lcd, int previewlines, int select) @@ -252,8 +253,13 @@ static void edgering_sel(tringselOpData *lcd, int previewlines, int select) static void ringsel_find_edge(tringselOpData *lcd, const bContext *C, ARegion *ar, int cuts) { - if (lcd->eed) + if (lcd->eed) { edgering_sel(lcd, cuts, 0); + } else { + MEM_freeN(lcd->edges); + lcd->edges = NULL; + lcd->totedge = 0; + } } static void ringsel_finish(bContext *C, wmOperator *op) @@ -325,16 +331,23 @@ static int ringsel_invoke (bContext *C, wmOperator *op, wmEvent *evt) tringselOpData *lcd; EditEdge *edge; int dist = 75; - + view3d_operator_needs_opengl(C); if (!ringsel_init(C, op, 0)) return OPERATOR_CANCELLED; + lcd = op->customdata; + + if (lcd->em->selectmode == SCE_SELECT_FACE) { + ringsel_exit(C, op); + WM_operator_name_call(C, "MESH_OT_loop_select", WM_OP_INVOKE_REGION_WIN, NULL); + return OPERATOR_CANCELLED; + } + /* add a modal handler for this operator - handles loop selection */ WM_event_add_modal_handler(C, op); - lcd = op->customdata; lcd->vc.mval[0] = evt->mval[0]; lcd->vc.mval[1] = evt->mval[1]; diff --git a/source/blender/editors/mesh/mesh_data.c b/source/blender/editors/mesh/mesh_data.c index 050152821f5..90764388029 100644 --- a/source/blender/editors/mesh/mesh_data.c +++ b/source/blender/editors/mesh/mesh_data.c @@ -46,6 +46,7 @@ #include "BKE_depsgraph.h" #include "BKE_displist.h" #include "BKE_global.h" +#include "BKE_library.h" #include "BKE_material.h" #include "BKE_mesh.h" #include "BKE_report.h" @@ -62,6 +63,7 @@ #include "ED_mesh.h" #include "ED_object.h" +#include "ED_uvedit.h" #include "ED_view3d.h" #include "RE_render_ext.h" @@ -309,6 +311,68 @@ void MESH_OT_uv_texture_add(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } +static int drop_named_image_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + Scene *scene= CTX_data_scene(C); + Base *base= ED_view3d_give_base_under_cursor(C, event->mval); + Image *ima; + Mesh *me; + Object *obedit; + int exitmode= 0; + char name[32]; + + /* check input variables */ + RNA_string_get(op->ptr, "name", name); + ima= (Image *)find_id("IM", name); + if(base==NULL || base->object->type!=OB_MESH || ima==NULL) { + BKE_report(op->reports, RPT_ERROR, "Not a Mesh or no Image."); + return OPERATOR_CANCELLED; + } + + /* turn mesh in editmode */ + /* BKE_mesh_get/end_editmesh: ED_uvedit_assign_image also calls this */ + + obedit= base->object; + me= obedit->data; + if(me->edit_mesh==NULL) { + make_editMesh(scene, obedit); + exitmode= 1; + } + if(me->edit_mesh==NULL) + return OPERATOR_CANCELLED; + + ED_uvedit_assign_image(scene, obedit, ima, NULL); + + if(exitmode) { + load_editMesh(scene, obedit); + free_editMesh(me->edit_mesh); + MEM_freeN(me->edit_mesh); + me->edit_mesh= NULL; + } + + WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); + + return OPERATOR_FINISHED; +} + +void MESH_OT_drop_named_image(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Assign Image to UV Texture"; + ot->description= "Assigns Image to active UV layer, or creates a UV layer"; + ot->idname= "MESH_OT_drop_named_image"; + + /* api callbacks */ + ot->poll= layers_poll; + ot->invoke= drop_named_image_invoke; + + /* flags */ + ot->flag= OPTYPE_UNDO; + + /* properties */ + RNA_def_string(ot->srna, "name", "Image", 24, "Name", "Image name to assign."); +} + static int uv_texture_remove_exec(bContext *C, wmOperator *op) { Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data; diff --git a/source/blender/editors/mesh/mesh_intern.h b/source/blender/editors/mesh/mesh_intern.h index 31e8cb16abc..950da02b50d 100644 --- a/source/blender/editors/mesh/mesh_intern.h +++ b/source/blender/editors/mesh/mesh_intern.h @@ -172,7 +172,7 @@ void MESH_OT_select_nth(struct wmOperatorType *ot); extern EditEdge *findnearestedge(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 */ +void EM_recalc_normal_direction(EditMesh *em, int inside, int select); /* makes faces righthand turning */ void EM_select_more(EditMesh *em); void selectconnected_mesh_all(EditMesh *em); void faceloop_select(EditMesh *em, EditEdge *startedge, int select); @@ -198,7 +198,7 @@ extern EditVert *findnearestvert(ViewContext *vc, int *dist, short sel, short st void join_triangles(EditMesh *em); int removedoublesflag(EditMesh *em, short flag, short automerge, float limit); /* return amount */ -void esubdivideflag(Object *obedit, EditMesh *em, int flag, float smooth, float fractal, int beauty, int numcuts, int seltype); +void esubdivideflag(Object *obedit, EditMesh *em, int flag, float smooth, float fractal, int beautify, int numcuts, int seltype); int EdgeSlide(EditMesh *em, struct wmOperator *op, short immediate, float imperc); void MESH_OT_merge(struct wmOperatorType *ot); @@ -209,7 +209,7 @@ void MESH_OT_spin(struct wmOperatorType *ot); void MESH_OT_screw(struct wmOperatorType *ot); void MESH_OT_fill(struct wmOperatorType *ot); -void MESH_OT_beauty_fill(struct wmOperatorType *ot); +void MESH_OT_beautify_fill(struct wmOperatorType *ot); void MESH_OT_quads_convert_to_tris(struct wmOperatorType *ot); void MESH_OT_tris_convert_to_quads(struct wmOperatorType *ot); void MESH_OT_edge_flip(struct wmOperatorType *ot); @@ -234,7 +234,7 @@ void MESH_OT_rip(struct wmOperatorType *ot); void MESH_OT_shape_propagate_to_all(struct wmOperatorType *ot); void MESH_OT_blend_from_shape(struct wmOperatorType *ot); -/* ******************* mesh_layers.c */ +/* ******************* mesh_data.c */ void MESH_OT_uv_texture_add(struct wmOperatorType *ot); void MESH_OT_uv_texture_remove(struct wmOperatorType *ot); @@ -242,6 +242,7 @@ void MESH_OT_vertex_color_add(struct wmOperatorType *ot); void MESH_OT_vertex_color_remove(struct wmOperatorType *ot); void MESH_OT_sticky_add(struct wmOperatorType *ot); void MESH_OT_sticky_remove(struct wmOperatorType *ot); +void MESH_OT_drop_named_image(struct wmOperatorType *ot); void MESH_OT_edgering_select(struct wmOperatorType *ot); void MESH_OT_loopcut(struct wmOperatorType *ot); diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c index 8537d39fbd8..c3bb8dd061d 100644 --- a/source/blender/editors/mesh/mesh_ops.c +++ b/source/blender/editors/mesh/mesh_ops.c @@ -116,7 +116,7 @@ void ED_operatortypes_mesh(void) WM_operatortype_append(MESH_OT_colors_mirror); WM_operatortype_append(MESH_OT_fill); - WM_operatortype_append(MESH_OT_beauty_fill); + WM_operatortype_append(MESH_OT_beautify_fill); WM_operatortype_append(MESH_OT_quads_convert_to_tris); WM_operatortype_append(MESH_OT_tris_convert_to_quads); WM_operatortype_append(MESH_OT_edge_flip); @@ -147,7 +147,8 @@ void ED_operatortypes_mesh(void) WM_operatortype_append(MESH_OT_vertex_color_remove); WM_operatortype_append(MESH_OT_sticky_add); WM_operatortype_append(MESH_OT_sticky_remove); - + WM_operatortype_append(MESH_OT_drop_named_image); + WM_operatortype_append(MESH_OT_edgering_select); WM_operatortype_append(MESH_OT_loopcut); @@ -235,7 +236,6 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) RNA_boolean_set(WM_keymap_add_item(keymap, "MESH_OT_select_linked_pick", LKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "deselect", 1); RNA_float_set(WM_keymap_add_item(keymap, "MESH_OT_faces_select_linked_flat", FKEY, KM_PRESS, (KM_CTRL|KM_SHIFT|KM_ALT), 0)->ptr,"sharpness",135.0); - RNA_float_set(WM_keymap_add_item(keymap, "MESH_OT_edges_select_sharp", SKEY, KM_PRESS, (KM_CTRL|KM_SHIFT|KM_ALT), 0)->ptr,"sharpness",135.0); WM_keymap_add_item(keymap, "MESH_OT_select_similar", GKEY, KM_PRESS, KM_SHIFT, 0); @@ -257,7 +257,7 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "MESH_OT_spin", RKEY, KM_PRESS, KM_ALT, 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); + WM_keymap_add_item(keymap, "MESH_OT_beautify_fill", FKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "MESH_OT_quads_convert_to_tris", TKEY, KM_PRESS, KM_CTRL, 0); 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); @@ -269,7 +269,7 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) /* 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 */ +// WM_keymap_add_item(keymap, "MESH_OT_skin", FKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); /* python, removed */ WM_keymap_add_item(keymap, "MESH_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_menu(keymap, "INFO_MT_mesh_add", AKEY, KM_PRESS, KM_SHIFT, 0); @@ -287,6 +287,8 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "MESH_OT_fgon_clear", FKEY, KM_PRESS, KM_SHIFT|KM_ALT, 0); WM_keymap_add_item(keymap, "MESH_OT_knife_cut", LEFTMOUSE, KM_PRESS, 0, KKEY); + + WM_keymap_add_item(keymap, "OBJECT_OT_vertex_parent_set", PKEY, KM_PRESS, KM_CTRL, 0); /* menus */ WM_keymap_add_menu(keymap, "VIEW3D_MT_edit_mesh_specials", WKEY, KM_PRESS, 0, 0); diff --git a/source/blender/editors/metaball/mball_edit.c b/source/blender/editors/metaball/mball_edit.c index d8e36a503f1..c3afbe0d9e7 100644 --- a/source/blender/editors/metaball/mball_edit.c +++ b/source/blender/editors/metaball/mball_edit.c @@ -97,15 +97,11 @@ void load_editMball(Object *obedit) } /* Add metaelem primitive to metaball object (which is in edit mode) */ -MetaElem *add_metaball_primitive(bContext *C, int type, int newname) +MetaElem *add_metaball_primitive(bContext *C, float mat[4][4], int type, int newname) { - Scene *scene= CTX_data_scene(C); - View3D *v3d= CTX_wm_view3d(C); - RegionView3D *rv3d = CTX_wm_region_view3d(C); Object *obedit= CTX_data_edit_object(C); MetaBall *mball = (MetaBall*)obedit->data; MetaElem *ml; - float *curs, mat[3][3], cent[3], imat[3][3], cmat[3][3]; if(!obedit) return NULL; @@ -116,36 +112,11 @@ MetaElem *add_metaball_primitive(bContext *C, int type, int newname) ml= ml->next; } - copy_m3_m4(mat, obedit->obmat); - if(v3d) { - curs= give_cursor(scene, v3d); - VECCOPY(cent, curs); - } - else - cent[0]= cent[1]= cent[2]= 0.0f; - - cent[0]-= obedit->obmat[3][0]; - cent[1]-= obedit->obmat[3][1]; - cent[2]-= obedit->obmat[3][2]; - - if (rv3d) { - if (!(newname) || U.flag & USER_ADD_VIEWALIGNED) - copy_m3_m4(imat, rv3d->viewmat); - else - unit_m3(imat); - mul_m3_v3(imat, cent); - mul_m3_m3m3(cmat, imat, mat); - invert_m3_m3(imat,cmat); - mul_m3_v3(imat, cent); - } - else - unit_m3(imat); - ml= MEM_callocN(sizeof(MetaElem), "metaelem"); - ml->x= cent[0]; - ml->y= cent[1]; - ml->z= cent[2]; + ml->x= mat[3][0]; + ml->y= mat[3][1]; + ml->z= mat[3][2]; ml->quat[0]= 1.0; ml->quat[1]= 0.0; ml->quat[2]= 0.0; diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index abc182ef7ae..ad7cc59d83e 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -143,6 +143,35 @@ void ED_object_base_init_transform(bContext *C, Base *base, float *loc, float *r where_is_object(scene, ob); } +/* uses context to figure out transform for primitive */ +/* returns standard diameter */ +float ED_object_new_primitive_matrix(bContext *C, float *loc, float *rot, float primmat[][4]) +{ + Object *obedit= CTX_data_edit_object(C); + View3D *v3d =CTX_wm_view3d(C); + float mat[3][3], rmat[3][3], cmat[3][3], imat[3][3]; + + unit_m4(primmat); + + eul_to_mat3(rmat, rot); + invert_m3(rmat); + + /* inverse transform for initial rotation and object */ + copy_m3_m4(mat, obedit->obmat); + mul_m3_m3m3(cmat, rmat, mat); + invert_m3_m3(imat, cmat); + copy_m4_m3(primmat, imat); + + /* center */ + VECCOPY(primmat[3], loc); + VECSUB(primmat[3], primmat[3], obedit->obmat[3]); + invert_m3_m3(imat, mat); + mul_m3_v3(imat, primmat[3]); + + if(v3d) return v3d->grid; + return 1.0f; +} + /********************* Add Object Operator ********************/ void add_object_draw(Scene *scene, View3D *v3d, int type) /* for toolbox or menus, only non-editmode stuff */ @@ -152,6 +181,7 @@ void add_object_draw(Scene *scene, View3D *v3d, int type) /* for toolbox or menu void ED_object_add_generic_props(wmOperatorType *ot, int do_editmode) { + PropertyRNA *prop; RNA_def_boolean(ot->srna, "view_align", 0, "Align to View", "Align the new object to the view."); if(do_editmode) @@ -159,6 +189,9 @@ void ED_object_add_generic_props(wmOperatorType *ot, int do_editmode) RNA_def_float_vector(ot->srna, "location", 3, NULL, -FLT_MAX, FLT_MAX, "Location", "Location for the newly added object.", -FLT_MAX, FLT_MAX); RNA_def_float_rotation(ot->srna, "rotation", 3, NULL, -FLT_MAX, FLT_MAX, "Rotation", "Rotation for the newly added object", -FLT_MAX, FLT_MAX); + + prop = RNA_def_boolean_layer_member(ot->srna, "layer", 32, NULL, "Layer", ""); + RNA_def_property_flag(prop, PROP_HIDDEN); } static void object_add_generic_invoke_options(bContext *C, wmOperator *op) @@ -189,7 +222,30 @@ static void object_add_generic_invoke_options(bContext *C, wmOperator *op) RNA_float_set_array(op->ptr, "rotation", rot); } - + + if (!RNA_property_is_set(op->ptr, "layer")) { + View3D *v3d = CTX_wm_view3d(C); + Scene *scene = CTX_data_scene(C); + int a, values[32], layer; + + if (v3d) { + if (v3d->localvd) { + layer = v3d->layact + v3d->lay; + for(a=0; a<32; a++) + values[a]= (layer & (1<<a)); + } else { + layer = v3d->layact; + for(a=0; a<32; a++) + values[a]= (layer & (1<<a)); + } + } else { + layer = scene->lay; + for(a=0; a<32; a++) + values[a]= (layer & (1<<a)); + } + + RNA_boolean_set_array(op->ptr, "layer", values); + } } int ED_object_add_generic_invoke(bContext *C, wmOperator *op, wmEvent *event) @@ -198,20 +254,28 @@ int ED_object_add_generic_invoke(bContext *C, wmOperator *op, wmEvent *event) return op->type->exec(C, op); } -void ED_object_add_generic_get_opts(wmOperator *op, float *loc, float *rot, int *enter_editmode) +void ED_object_add_generic_get_opts(wmOperator *op, float *loc, float *rot, int *enter_editmode, unsigned int *layer) { + int a, layer_values[32]; + *enter_editmode = FALSE; - if(RNA_struct_find_property(op->ptr, "enter_editmode") && RNA_boolean_get(op->ptr, "enter_editmode")) { *enter_editmode = TRUE; } RNA_float_get_array(op->ptr, "location", loc); RNA_float_get_array(op->ptr, "rotation", rot); + RNA_boolean_get_array(op->ptr, "layer", layer_values); + + for(a=0; a<32; a++) + if(layer_values[a]) + *layer |= (1 << a); + else + *layer &= ~(1 << a); } /* for object add primitive operators */ -Object *ED_object_add_type(bContext *C, int type, float *loc, float *rot, int enter_editmode) +Object *ED_object_add_type(bContext *C, int type, float *loc, float *rot, int enter_editmode, unsigned int layer) { Scene *scene= CTX_data_scene(C); Object *ob; @@ -222,6 +286,7 @@ Object *ED_object_add_type(bContext *C, int type, float *loc, float *rot, int en /* deselects all, sets scene->basact */ ob= add_object(scene, type); + BASACT->lay = ob->lay = layer; /* editor level activate, notifiers */ ED_base_object_activate(C, BASACT); @@ -240,10 +305,11 @@ Object *ED_object_add_type(bContext *C, int type, float *loc, float *rot, int en static int object_add_exec(bContext *C, wmOperator *op) { int enter_editmode; + unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode); - ED_object_add_type(C, RNA_enum_get(op->ptr, "type"), loc, rot, enter_editmode); + ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + ED_object_add_type(C, RNA_enum_get(op->ptr, "type"), loc, rot, enter_editmode, layer); return OPERATOR_FINISHED; } @@ -296,23 +362,27 @@ static Object *effector_add_type(bContext *C, wmOperator *op, int type) { Object *ob; int enter_editmode; + unsigned int layer; float loc[3], rot[3]; + float mat[4][4]; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode); + object_add_generic_invoke_options(C, op); + ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); if(type==PFIELD_GUIDE) { - ob= ED_object_add_type(C, OB_CURVE, loc, rot, FALSE); + ob= ED_object_add_type(C, OB_CURVE, loc, rot, FALSE, layer); rename_id(&ob->id, "CurveGuide"); ((Curve*)ob->data)->flag |= CU_PATH|CU_3D; ED_object_enter_editmode(C, 0); - BLI_addtail(curve_get_editcurve(ob), add_nurbs_primitive(C, CU_NURBS|CU_PRIM_PATH, 1)); + ED_object_new_primitive_matrix(C, loc, rot, mat); + BLI_addtail(curve_get_editcurve(ob), add_nurbs_primitive(C, mat, CU_NURBS|CU_PRIM_PATH, 1)); if(!enter_editmode) - ED_object_exit_editmode(C, EM_FREEDATA|EM_DO_UNDO); + ED_object_exit_editmode(C, EM_FREEDATA); } else { - ob= ED_object_add_type(C, OB_EMPTY, loc, rot, FALSE); + ob= ED_object_add_type(C, OB_EMPTY, loc, rot, FALSE, layer); rename_id(&ob->id, "Field"); switch(type) { @@ -352,11 +422,59 @@ void OBJECT_OT_effector_add(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - RNA_def_enum(ot->srna, "type", field_type_items, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", field_type_items, 0, "Type", ""); + + ED_object_add_generic_props(ot, TRUE); +} + +/* ***************** Add Camera *************** */ +static int object_camera_add_exec(bContext *C, wmOperator *op) +{ + View3D *v3d = CTX_wm_view3d(C); + Scene *scene= CTX_data_scene(C); + Object *ob; + int enter_editmode; + unsigned int layer; + float loc[3], rot[3]; + + /* force view align for cameras */ + RNA_boolean_set(op->ptr, "view_align", 1); + + object_add_generic_invoke_options(C, op); + ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + + ob= ED_object_add_type(C, OB_CAMERA, loc, rot, FALSE, layer); + + if (v3d) { + if (v3d->camera == NULL) + v3d->camera = ob; + if (v3d->scenelock && scene->camera==NULL) { + scene->camera = ob; + } + } + + return OPERATOR_FINISHED; +} + +void OBJECT_OT_camera_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Camera"; + ot->description = "Add a camera object to the scene."; + ot->idname= "OBJECT_OT_camera_add"; + + /* api callbacks */ + ot->exec= object_camera_add_exec; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + ED_object_add_generic_props(ot, TRUE); } + /* ***************** add primitives *************** */ static EnumPropertyItem prop_curve_types[] = { @@ -375,13 +493,15 @@ static int object_add_curve_exec(bContext *C, wmOperator *op) Nurb *nu; int newob= 0, type= RNA_enum_get(op->ptr, "type"); int enter_editmode; + unsigned int layer; float loc[3], rot[3]; + float mat[4][4]; object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode); + ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); if(obedit==NULL || obedit->type!=OB_CURVE) { - obedit= ED_object_add_type(C, OB_CURVE, loc, rot, TRUE); + obedit= ED_object_add_type(C, OB_CURVE, loc, rot, TRUE, layer); newob = 1; if(type & CU_PRIM_PATH) @@ -389,13 +509,15 @@ static int object_add_curve_exec(bContext *C, wmOperator *op) } else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); - nu= add_nurbs_primitive(C, type, newob); + ED_object_new_primitive_matrix(C, loc, rot, mat); + + nu= add_nurbs_primitive(C, mat, type, newob); editnurb= curve_get_editcurve(obedit); BLI_addtail(editnurb, nu); /* userdef */ if (newob && !enter_editmode) { - ED_object_exit_editmode(C, EM_FREEDATA|EM_DO_UNDO); + ED_object_exit_editmode(C, EM_FREEDATA); } WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, obedit); @@ -460,24 +582,28 @@ static int object_add_surface_exec(bContext *C, wmOperator *op) Nurb *nu; int newob= 0; int enter_editmode; + unsigned int layer; float loc[3], rot[3]; + float mat[4][4]; object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode); + ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); if(obedit==NULL || obedit->type!=OB_SURF) { - obedit= ED_object_add_type(C, OB_SURF, loc, rot, TRUE); + obedit= ED_object_add_type(C, OB_SURF, loc, rot, TRUE, layer); newob = 1; } else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); - nu= add_nurbs_primitive(C, RNA_enum_get(op->ptr, "type"), newob); + ED_object_new_primitive_matrix(C, loc, rot, mat); + + nu= add_nurbs_primitive(C, mat, RNA_enum_get(op->ptr, "type"), newob); editnurb= curve_get_editcurve(obedit); BLI_addtail(editnurb, nu); /* userdef */ if (newob && !enter_editmode) { - ED_object_exit_editmode(C, EM_FREEDATA|EM_DO_UNDO); + ED_object_exit_editmode(C, EM_FREEDATA); } WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, obedit); @@ -521,24 +647,28 @@ static int object_metaball_add_exec(bContext *C, wmOperator *op) MetaElem *elem; int newob= 0; int enter_editmode; + unsigned int layer; float loc[3], rot[3]; + float mat[4][4]; object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode); + ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); if(obedit==NULL || obedit->type!=OB_MBALL) { - obedit= ED_object_add_type(C, OB_MBALL, loc, rot, TRUE); + obedit= ED_object_add_type(C, OB_MBALL, loc, rot, TRUE, layer); newob = 1; } else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); - elem= (MetaElem*)add_metaball_primitive(C, RNA_enum_get(op->ptr, "type"), newob); + ED_object_new_primitive_matrix(C, loc, rot, mat); + + elem= (MetaElem*)add_metaball_primitive(C, mat, RNA_enum_get(op->ptr, "type"), newob); mball= (MetaBall*)obedit->data; BLI_addtail(mball->editelems, elem); /* userdef */ if (newob && !enter_editmode) { - ED_object_exit_editmode(C, EM_FREEDATA|EM_DO_UNDO); + ED_object_exit_editmode(C, EM_FREEDATA); } WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, obedit); @@ -583,19 +713,21 @@ void OBJECT_OT_metaball_add(wmOperatorType *ot) RNA_def_enum(ot->srna, "type", prop_metaball_types, 0, "Primitive", ""); ED_object_add_generic_props(ot, TRUE); } + static int object_add_text_exec(bContext *C, wmOperator *op) { Object *obedit= CTX_data_edit_object(C); int enter_editmode; + unsigned int layer; float loc[3], rot[3]; object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode); + ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); if(obedit && obedit->type==OB_FONT) return OPERATOR_CANCELLED; - obedit= ED_object_add_type(C, OB_FONT, loc, rot, enter_editmode); + obedit= ED_object_add_type(C, OB_FONT, loc, rot, enter_editmode, layer); WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, obedit); @@ -626,13 +758,14 @@ static int object_armature_add_exec(bContext *C, wmOperator *op) RegionView3D *rv3d= NULL; int newob= 0; int enter_editmode; + unsigned int layer; float loc[3], rot[3]; object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode); + ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); if ((obedit==NULL) || (obedit->type != OB_ARMATURE)) { - obedit= ED_object_add_type(C, OB_ARMATURE, loc, rot, TRUE); + obedit= ED_object_add_type(C, OB_ARMATURE, loc, rot, TRUE, layer); ED_object_enter_editmode(C, 0); newob = 1; } @@ -650,9 +783,8 @@ static int object_armature_add_exec(bContext *C, wmOperator *op) add_primitive_bone(CTX_data_scene(C), v3d, rv3d); /* userdef */ - if (newob && !enter_editmode) { - ED_object_exit_editmode(C, EM_FREEDATA|EM_DO_UNDO); - } + if (newob && !enter_editmode) + ED_object_exit_editmode(C, EM_FREEDATA); WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, obedit); @@ -681,11 +813,13 @@ static int object_lamp_add_exec(bContext *C, wmOperator *op) Object *ob; int type= RNA_enum_get(op->ptr, "type"); int enter_editmode; + unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode); + object_add_generic_invoke_options(C, op); + ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); - ob= ED_object_add_type(C, OB_LAMP, loc, rot, FALSE); + ob= ED_object_add_type(C, OB_LAMP, loc, rot, FALSE, layer); if(ob && ob->data) ((Lamp*)ob->data)->type= type; @@ -716,7 +850,7 @@ void OBJECT_OT_lamp_add(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "type", lamp_type_items, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", lamp_type_items, 0, "Type", ""); ED_object_add_generic_props(ot, FALSE); } @@ -726,12 +860,14 @@ static int group_instance_add_exec(bContext *C, wmOperator *op) Group *group= BLI_findlink(&CTX_data_main(C)->group, RNA_enum_get(op->ptr, "type")); int enter_editmode; + unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode); + object_add_generic_invoke_options(C, op); + ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); if(group) { - Object *ob= ED_object_add_type(C, OB_EMPTY, loc, rot, FALSE); + Object *ob= ED_object_add_type(C, OB_EMPTY, loc, rot, FALSE, layer); rename_id(&ob->id, group->id.name+2); ob->dup_group= group; ob->transflag |= OB_DUPLIGROUP; @@ -757,6 +893,7 @@ void OBJECT_OT_group_instance_add(wmOperatorType *ot) ot->idname= "OBJECT_OT_group_instance_add"; /* api callbacks */ + ot->invoke= WM_enum_search_invoke; ot->exec= group_instance_add_exec; ot->poll= ED_operator_scene_editable; @@ -767,6 +904,7 @@ void OBJECT_OT_group_instance_add(wmOperatorType *ot) /* properties */ prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, 0, "Type", ""); RNA_def_enum_funcs(prop, RNA_group_itemf); + ot->prop= prop; ED_object_add_generic_props(ot, FALSE); } @@ -968,12 +1106,14 @@ static void make_object_duplilist_real(bContext *C, Scene *scene, Base *base) basen= MEM_dupallocN(base); basen->flag &= ~OB_FROMDUPLI; + basen->lay= base->lay; BLI_addhead(&scene->base, basen); /* addhead: othwise eternal loop */ basen->object= ob; ob->ipo= NULL; /* make sure apply works */ ob->parent= ob->track= NULL; ob->disp.first= ob->disp.last= NULL; ob->transflag &= ~OB_DUPLI; + ob->lay= base->lay; copy_m4_m4(ob->obmat, dob->mat); ED_object_apply_obmat(ob); @@ -1013,7 +1153,6 @@ void OBJECT_OT_duplicates_make_real(wmOperatorType *ot) ot->idname= "OBJECT_OT_duplicates_make_real"; /* api callbacks */ - ot->invoke= WM_operator_confirm; ot->exec= object_duplicates_make_real_exec; ot->poll= ED_operator_scene_editable; @@ -1270,7 +1409,7 @@ void OBJECT_OT_convert(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "target", convert_target_items, OB_MESH, "Target", "Type of object to convert to."); + ot->prop= RNA_def_enum(ot->srna, "target", convert_target_items, OB_MESH, "Target", "Type of object to convert to."); RNA_def_boolean(ot->srna, "keep_original", 0, "Keep Original", "Keep original objects instead of replacing them."); } @@ -1553,6 +1692,70 @@ void OBJECT_OT_duplicate(wmOperatorType *ot) RNA_def_int(ot->srna, "mode", TFM_TRANSLATION, 0, INT_MAX, "Mode", "", 0, INT_MAX); } +/* **************** add named object, for dragdrop ************* */ + +/* contextual operator dupli */ +static int add_named_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + Base *basen, *base; + Object *ob; + int linked= RNA_boolean_get(op->ptr, "linked"); + int dupflag= (linked)? 0: U.dupflag; + char name[32]; + + /* find object, create fake base */ + RNA_string_get(op->ptr, "name", name); + ob= (Object *)find_id("OB", name); + if(ob==NULL) + return OPERATOR_CANCELLED; + + base= MEM_callocN(sizeof(Base), "duplibase"); + base->object= ob; + base->flag= ob->flag; + + /* prepare dupli */ + clear_id_newpoins(); + clear_sca_new_poins(); /* sensor/contr/act */ + + basen= object_add_duplicate_internal(scene, base, dupflag); + basen->lay= basen->object->lay= scene->lay; + + ED_object_location_from_view(C, basen->object->loc); + ED_base_object_activate(C, basen); + + copy_object_set_idnew(C, dupflag); + + DAG_scene_sort(scene); + DAG_ids_flush_update(0); + + MEM_freeN(base); + + WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); + + return OPERATOR_FINISHED; +} + +void OBJECT_OT_add_named(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Named Object"; + ot->description = "Add named object."; + ot->idname= "OBJECT_OT_add_named"; + + /* api callbacks */ + ot->exec= add_named_exec; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + RNA_def_boolean(ot->srna, "linked", 0, "Linked", "Duplicate object but not object data, linking to the original data."); + RNA_def_string(ot->srna, "name", "Cube", 24, "Name", "Object name to add."); +} + + + /**************************** Join *************************/ static int join_poll(bContext *C) { diff --git a/source/blender/editors/object/object_bake.c b/source/blender/editors/object/object_bake.c index 4b02cd8e623..7aa9d557118 100644 --- a/source/blender/editors/object/object_bake.c +++ b/source/blender/editors/object/object_bake.c @@ -215,7 +215,8 @@ static void bake_update(void *bkv) if(bkr->sa && bkr->sa->spacetype==SPACE_IMAGE) { /* incase the user changed while baking */ SpaceImage *sima= bkr->sa->spacedata.first; - sima->image= RE_bake_shade_get_image(); + if(sima) + sima->image= RE_bake_shade_get_image(); } } diff --git a/source/blender/editors/object/object_constraint.c b/source/blender/editors/object/object_constraint.c index 19ba5f7b32b..9c465a75cd0 100644 --- a/source/blender/editors/object/object_constraint.c +++ b/source/blender/editors/object/object_constraint.c @@ -624,51 +624,6 @@ void CONSTRAINT_OT_childof_clear_inverse (wmOperatorType *ot) /***************************** BUTTONS ****************************/ -/* Rename the given constraint, con already has the new name */ -void ED_object_constraint_rename(Object *ob, bConstraint *con, char *oldname) -{ - bConstraint *tcon; - ListBase *conlist= NULL; - int from_object= 0; - - /* get context by searching for con (primitive...) */ - for (tcon= ob->constraints.first; tcon; tcon= tcon->next) { - if (tcon==con) - break; - } - - if (tcon) { - conlist= &ob->constraints; - from_object= 1; - } - else if (ob->pose) { - bPoseChannel *pchan; - - for (pchan=ob->pose->chanbase.first; pchan; pchan=pchan->next) { - for (tcon= pchan->constraints.first; tcon; tcon= tcon->next) { - if (tcon==con) - break; - } - if (tcon) - break; - } - - if (tcon) { - conlist= &pchan->constraints; - } - } - - if (conlist==NULL) { - printf("rename constraint failed\n"); /* should not happen in UI */ - return; - } - - /* first make sure it's a unique name within context */ - unique_constraint_name(con, conlist); -} - - - void ED_object_constraint_set_active(Object *ob, bConstraint *con) { @@ -1218,7 +1173,7 @@ void OBJECT_OT_constraint_add(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "type", constraint_type_items, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", constraint_type_items, 0, "Type", ""); } void OBJECT_OT_constraint_add_with_targets(wmOperatorType *ot) @@ -1237,7 +1192,7 @@ void OBJECT_OT_constraint_add_with_targets(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "type", constraint_type_items, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", constraint_type_items, 0, "Type", ""); } void POSE_OT_constraint_add(wmOperatorType *ot) @@ -1256,7 +1211,7 @@ void POSE_OT_constraint_add(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "type", constraint_type_items, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", constraint_type_items, 0, "Type", ""); } void POSE_OT_constraint_add_with_targets(wmOperatorType *ot) @@ -1275,7 +1230,7 @@ void POSE_OT_constraint_add_with_targets(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "type", constraint_type_items, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", constraint_type_items, 0, "Type", ""); } /************************ IK Constraint operators *********************/ diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 9ef1fafff82..de91d4824e2 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -499,6 +499,10 @@ static int editmode_toggle_poll(bContext *C) { Object *ob = CTX_data_active_object(C); + /* covers proxies too */ + if(ELEM(NULL, ob, ob->data) || ((ID *)ob->data)->lib) + return 0; + return ob && (ob->type == OB_MESH || ob->type == OB_ARMATURE || ob->type == OB_FONT || ob->type == OB_MBALL || ob->type == OB_LATTICE || ob->type == OB_SURF || @@ -1606,6 +1610,118 @@ void copy_attr_menu(Scene *scene, View3D *v3d) copy_attr(scene, v3d, event); } +/* ********************************************** */ +/* Motion Paths */ + +/* For the object with pose/action: update paths for those that have got them + * This should selectively update paths that exist... + * + * To be called from various tools that do incremental updates + */ +void ED_objects_recalculate_paths(bContext *C, Scene *scene) +{ + ListBase targets = {NULL, NULL}; + + /* loop over objects in scene */ + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) + { + /* set flag to force recalc, then grab the relevant bones to target */ + ob->avs.recalc |= ANIMVIZ_RECALC_PATHS; + animviz_get_object_motionpaths(ob, &targets); + } + CTX_DATA_END; + + /* recalculate paths, then free */ + animviz_calc_motionpaths(scene, &targets); + BLI_freelistN(&targets); +} + +/* For the object with pose/action: create path curves for selected bones + * This recalculates the WHOLE path within the pchan->pathsf and pchan->pathef range + */ +static int object_calculate_paths_exec (bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + + /* set up path data for bones being calculated */ + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) + { + /* verify makes sure that the selected bone has a bone with the appropriate settings */ + animviz_verify_motionpaths(scene, ob, NULL); + } + CTX_DATA_END; + + /* calculate the bones that now have motionpaths... */ + // TODO: only make for the selected bones? + ED_objects_recalculate_paths(C, scene); + + /* notifiers for updates */ + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, NULL); + + return OPERATOR_FINISHED; +} + +void OBJECT_OT_paths_calculate (wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Calculate Object Paths"; + ot->idname= "OBJECT_OT_paths_calculate"; + ot->description= "Calculate paths for the selected bones."; + + /* api callbacks */ + ot->exec= object_calculate_paths_exec; + ot->poll= ED_operator_object_active_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + +/* --------- */ + +/* for the object with pose/action: clear path curves for selected bones only */ +void ED_objects_clear_paths(bContext *C, Scene *scene) +{ + /* loop over objects in scene */ + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) + { + if (ob->mpath) { + animviz_free_motionpath(ob->mpath); + ob->mpath= NULL; + } + } + CTX_DATA_END; +} + +/* operator callback for this */ +static int object_clear_paths_exec (bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + + /* use the backend function for this */ + ED_objects_clear_paths(C, scene); + + /* notifiers for updates */ + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, NULL); + + return OPERATOR_FINISHED; +} + +void OBJECT_OT_paths_clear (wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Clear Object Paths"; + ot->idname= "OBJECT_OT_paths_clear"; + ot->description= "Clear path caches for selected bones."; + + /* api callbacks */ + ot->exec= object_clear_paths_exec; + ot->poll= ED_operator_object_active_editable; + + /* flags */ + ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; +} + + /********************** Smooth/Flat *********************/ static int shade_smooth_exec(bContext *C, wmOperator *op) @@ -1961,7 +2077,7 @@ void OBJECT_OT_mode_set(wmOperatorType *ot) ot->poll= ED_operator_object_active_editable; /* flags */ - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag= 0; /* no register/undo here, leave it to operators being called */ prop= RNA_def_enum(ot->srna, "mode", object_mode_items, OB_MODE_OBJECT, "Mode", ""); RNA_def_enum_funcs(prop, object_mode_set_itemsf); diff --git a/source/blender/editors/object/object_group.c b/source/blender/editors/object/object_group.c index 50fc5f5d2fe..a12c6108ba9 100644 --- a/source/blender/editors/object/object_group.c +++ b/source/blender/editors/object/object_group.c @@ -266,14 +266,16 @@ static EnumPropertyItem *group_itemf(bContext *C, PointerRNA *ptr, int *free) RNA_enum_items_add_value(&item, &totitem, group_items, -1); - if(bmain->group.first) - RNA_enum_item_add_separator(&item, &totitem); - - for(a=0, group=bmain->group.first; group; group=group->id.next, a++) { - tmp.value= a; - tmp.identifier= group->id.name+2; - tmp.name= group->id.name+2; - RNA_enum_item_add(&item, &totitem, &tmp); + if (bmain) { + if(bmain->group.first) + RNA_enum_item_add_separator(&item, &totitem); + + for(a=0, group=bmain->group.first; group; group=group->id.next, a++) { + tmp.value= a; + tmp.identifier= group->id.name+2; + tmp.name= group->id.name+2; + RNA_enum_item_add(&item, &totitem, &tmp); + } } RNA_enum_item_end(&item, &totitem); diff --git a/source/blender/editors/object/object_hook.c b/source/blender/editors/object/object_hook.c index 313ffe79c66..c9730e3490b 100644 --- a/source/blender/editors/object/object_hook.c +++ b/source/blender/editors/object/object_hook.c @@ -612,6 +612,7 @@ void OBJECT_OT_hook_remove(wmOperatorType *ot) /* properties */ prop= RNA_def_enum(ot->srna, "modifier", hook_mod_items, 0, "Modifier", "Modifier number to remove."); RNA_def_enum_funcs(prop, hook_mod_itemf); + ot->prop= prop; } static int object_hook_reset_exec(bContext *C, wmOperator *op) diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h index d47cecb762b..06768404d7e 100644 --- a/source/blender/editors/object/object_intern.h +++ b/source/blender/editors/object/object_intern.h @@ -69,6 +69,7 @@ void OBJECT_OT_make_single_user(struct wmOperatorType *ot); void OBJECT_OT_make_links_scene(struct wmOperatorType *ot); void OBJECT_OT_make_links_data(struct wmOperatorType *ot); void OBJECT_OT_move_to_layer(struct wmOperatorType *ot); +void OBJECT_OT_drop_named_material(struct wmOperatorType *ot); /* object_edit.c */ void OBJECT_OT_mode_set(struct wmOperatorType *ot); @@ -79,6 +80,8 @@ void OBJECT_OT_restrictview_clear(struct wmOperatorType *ot); void OBJECT_OT_proxy_make(struct wmOperatorType *ot); void OBJECT_OT_shade_smooth(struct wmOperatorType *ot); void OBJECT_OT_shade_flat(struct wmOperatorType *ot); +void OBJECT_OT_paths_calculate(struct wmOperatorType *ot); +void OBJECT_OT_paths_clear(struct wmOperatorType *ot); /* object_select.c */ void OBJECT_OT_select_all(struct wmOperatorType *ot); @@ -93,6 +96,7 @@ void OBJECT_OT_select_name(struct wmOperatorType *ot); /* object_add.c */ void OBJECT_OT_add(struct wmOperatorType *ot); +void OBJECT_OT_add_named(struct wmOperatorType *ot); void OBJECT_OT_curve_add(struct wmOperatorType *ot); void OBJECT_OT_surface_add(struct wmOperatorType *ot); void OBJECT_OT_metaball_add(struct wmOperatorType *ot); @@ -100,6 +104,7 @@ void OBJECT_OT_text_add(struct wmOperatorType *ot); void OBJECT_OT_armature_add(struct wmOperatorType *ot); void OBJECT_OT_lamp_add(struct wmOperatorType *ot); void OBJECT_OT_effector_add(struct wmOperatorType *ot); +void OBJECT_OT_camera_add(struct wmOperatorType *ot); void OBJECT_OT_group_instance_add(struct wmOperatorType *ot); void OBJECT_OT_duplicates_make_real(struct wmOperatorType *ot); @@ -186,6 +191,7 @@ void OBJECT_OT_vertex_group_levels(struct wmOperatorType *ot); void OBJECT_OT_vertex_group_invert(struct wmOperatorType *ot); void OBJECT_OT_vertex_group_blend(struct wmOperatorType *ot); void OBJECT_OT_vertex_group_clean(struct wmOperatorType *ot); +void OBJECT_OT_vertex_group_mirror(struct wmOperatorType *ot); void OBJECT_OT_vertex_group_set_active(struct wmOperatorType *ot); void OBJECT_OT_game_property_new(struct wmOperatorType *ot); diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index a44ad47b94f..30ccca6fc25 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -265,78 +265,73 @@ int ED_object_modifier_convert(ReportList *reports, Scene *scene, Object *ob, Mo psys=((ParticleSystemModifierData *)md)->psys; part= psys->part; - if(part->ren_as == PART_DRAW_GR || part->ren_as == PART_DRAW_OB) { - ; // XXX make_object_duplilist_real(NULL); - } - else { - if(part->ren_as != PART_DRAW_PATH || psys->pathcache == 0) - return 0; + if(part->ren_as != PART_DRAW_PATH || psys->pathcache == 0) + return 0; - totpart= psys->totcached; - totchild= psys->totchildcache; + totpart= psys->totcached; + totchild= psys->totchildcache; - if(totchild && (part->draw&PART_DRAW_PARENT)==0) - totpart= 0; + if(totchild && (part->draw&PART_DRAW_PARENT)==0) + totpart= 0; - /* count */ - cache= psys->pathcache; - for(a=0; a<totpart; a++) { - key= cache[a]; - totvert+= key->steps+1; - totedge+= key->steps; - } + /* count */ + cache= psys->pathcache; + for(a=0; a<totpart; a++) { + key= cache[a]; + totvert+= key->steps+1; + totedge+= key->steps; + } - cache= psys->childcache; - for(a=0; a<totchild; a++) { - key= cache[a]; - totvert+= key->steps+1; - totedge+= key->steps; - } + cache= psys->childcache; + for(a=0; a<totchild; a++) { + key= cache[a]; + totvert+= key->steps+1; + totedge+= key->steps; + } - if(totvert==0) return 0; + if(totvert==0) return 0; - /* add new mesh */ - obn= add_object(scene, OB_MESH); - me= obn->data; - - me->totvert= totvert; - me->totedge= totedge; - - me->mvert= CustomData_add_layer(&me->vdata, CD_MVERT, CD_CALLOC, NULL, totvert); - me->medge= CustomData_add_layer(&me->edata, CD_MEDGE, CD_CALLOC, NULL, totedge); - me->mface= CustomData_add_layer(&me->fdata, CD_MFACE, CD_CALLOC, NULL, 0); - - mvert= me->mvert; - medge= me->medge; - - /* copy coordinates */ - cache= psys->pathcache; - for(a=0; a<totpart; a++) { - key= cache[a]; - kmax= key->steps; - for(k=0; k<=kmax; k++,key++,cvert++,mvert++) { - VECCOPY(mvert->co,key->co); - if(k) { - medge->v1= cvert-1; - medge->v2= cvert; - medge->flag= ME_EDGEDRAW|ME_EDGERENDER|ME_LOOSEEDGE; - medge++; - } + /* add new mesh */ + obn= add_object(scene, OB_MESH); + me= obn->data; + + me->totvert= totvert; + me->totedge= totedge; + + me->mvert= CustomData_add_layer(&me->vdata, CD_MVERT, CD_CALLOC, NULL, totvert); + me->medge= CustomData_add_layer(&me->edata, CD_MEDGE, CD_CALLOC, NULL, totedge); + me->mface= CustomData_add_layer(&me->fdata, CD_MFACE, CD_CALLOC, NULL, 0); + + mvert= me->mvert; + medge= me->medge; + + /* copy coordinates */ + cache= psys->pathcache; + for(a=0; a<totpart; a++) { + key= cache[a]; + kmax= key->steps; + for(k=0; k<=kmax; k++,key++,cvert++,mvert++) { + VECCOPY(mvert->co,key->co); + if(k) { + medge->v1= cvert-1; + medge->v2= cvert; + medge->flag= ME_EDGEDRAW|ME_EDGERENDER|ME_LOOSEEDGE; + medge++; } } + } - cache=psys->childcache; - for(a=0; a<totchild; a++) { - key=cache[a]; - kmax=key->steps; - for(k=0; k<=kmax; k++,key++,cvert++,mvert++) { - VECCOPY(mvert->co,key->co); - if(k) { - medge->v1=cvert-1; - medge->v2=cvert; - medge->flag= ME_EDGEDRAW|ME_EDGERENDER|ME_LOOSEEDGE; - medge++; - } + cache=psys->childcache; + for(a=0; a<totchild; a++) { + key=cache[a]; + kmax=key->steps; + for(k=0; k<=kmax; k++,key++,cvert++,mvert++) { + VECCOPY(mvert->co,key->co); + if(k) { + medge->v1=cvert-1; + medge->v2=cvert; + medge->flag= ME_EDGEDRAW|ME_EDGERENDER|ME_LOOSEEDGE; + medge++; } } } @@ -558,6 +553,7 @@ void OBJECT_OT_modifier_add(wmOperatorType *ot) /* properties */ prop= RNA_def_enum(ot->srna, "type", modifier_type_items, eModifierType_Subsurf, "Type", ""); RNA_def_enum_funcs(prop, modifier_add_itemf); + ot->prop= prop; } /************************ remove modifier operator *********************/ @@ -918,7 +914,7 @@ void OBJECT_OT_multires_save_external(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|BTXFILE, FILE_SPECIAL); + WM_operator_properties_filesel(ot, FOLDERFILE|BTXFILE, FILE_SPECIAL, FILE_SAVE); } /****************** multires pack operator *********************/ diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index eb2086fe95d..b9935fafb74 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -81,6 +81,8 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_restrictview_set); WM_operatortype_append(OBJECT_OT_shade_smooth); WM_operatortype_append(OBJECT_OT_shade_flat); + WM_operatortype_append(OBJECT_OT_paths_calculate); + WM_operatortype_append(OBJECT_OT_paths_clear); WM_operatortype_append(OBJECT_OT_parent_set); WM_operatortype_append(OBJECT_OT_parent_no_inverse_set); @@ -117,7 +119,9 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_surface_add); WM_operatortype_append(OBJECT_OT_armature_add); WM_operatortype_append(OBJECT_OT_lamp_add); + WM_operatortype_append(OBJECT_OT_camera_add); WM_operatortype_append(OBJECT_OT_add); + WM_operatortype_append(OBJECT_OT_add_named); WM_operatortype_append(OBJECT_OT_effector_add); WM_operatortype_append(OBJECT_OT_group_instance_add); WM_operatortype_append(OBJECT_OT_metaball_add); @@ -172,6 +176,7 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_vertex_group_levels); WM_operatortype_append(OBJECT_OT_vertex_group_blend); WM_operatortype_append(OBJECT_OT_vertex_group_clean); + WM_operatortype_append(OBJECT_OT_vertex_group_mirror); WM_operatortype_append(OBJECT_OT_vertex_group_set_active); WM_operatortype_append(OBJECT_OT_game_property_new); @@ -198,6 +203,7 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_hook_recenter); WM_operatortype_append(OBJECT_OT_bake_image); + WM_operatortype_append(OBJECT_OT_drop_named_material); } void ED_operatormacros_object(void) @@ -213,13 +219,22 @@ void ED_operatormacros_object(void) } /* grr, should be able to pass options on... */ - ot= WM_operatortype_append_macro("OBJECT_OT_duplicate_move_linked", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER); + ot= WM_operatortype_append_macro("OBJECT_OT_duplicate_move_linked", "Duplicate Linked", OPTYPE_UNDO|OPTYPE_REGISTER); if(ot) { otmacro= WM_operatortype_macro_define(ot, "OBJECT_OT_duplicate"); RNA_boolean_set(otmacro->ptr, "linked", 1); otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); RNA_enum_set(otmacro->ptr, "proportional", PROP_EDIT_OFF); } + + /* XXX */ + ot= WM_operatortype_append_macro("OBJECT_OT_add_named_cursor", "Add named object at cursor", OPTYPE_UNDO|OPTYPE_REGISTER); + if(ot) { + RNA_def_string(ot->srna, "name", "Cube", 24, "Name", "Object name to add."); + + WM_operatortype_macro_define(ot, "VIEW3D_OT_cursor3d"); + WM_operatortype_macro_define(ot, "OBJECT_OT_add_named"); + } } static int object_mode_poll(bContext *C) @@ -304,7 +319,7 @@ void ED_keymap_object(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "OBJECT_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "OBJECT_OT_duplicate_move_linked", DKEY, KM_PRESS, KM_ALT, 0); - + WM_keymap_add_item(keymap, "OBJECT_OT_join", JKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "OBJECT_OT_convert", CKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "OBJECT_OT_proxy_make", PKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); @@ -330,6 +345,8 @@ void ED_keymap_object(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "LATTICE_OT_select_all", AKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "OBJECT_OT_vertex_parent_set", PKEY, KM_PRESS, KM_CTRL, 0); + /* menus */ WM_keymap_add_menu(keymap, "VIEW3D_MT_hook", HKEY, KM_PRESS, KM_CTRL, 0); diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index d4bf721e14e..647a9586aff 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -91,6 +91,7 @@ #include "ED_curve.h" #include "ED_object.h" #include "ED_screen.h" +#include "ED_view3d.h" #include "object_intern.h" @@ -251,6 +252,7 @@ void OBJECT_OT_vertex_parent_set(wmOperatorType *ot) ot->idname= "OBJECT_OT_vertex_parent_set"; /* api callbacks */ + ot->invoke= WM_operator_confirm; ot->poll= vertex_parent_set_poll; ot->exec= vertex_parent_set_exec; @@ -260,39 +262,6 @@ void OBJECT_OT_vertex_parent_set(wmOperatorType *ot) /********************** Make Proxy Operator *************************/ -/* present menu listing the possible objects within the group to proxify */ -static void proxy_group_objects_menu (bContext *C, wmOperator *op, Object *ob, Group *group) -{ - uiPopupMenu *pup; - uiLayout *layout; - GroupObject *go; - int len=0; - - /* check if there are any objects within the group to assign for */ - for (go= group->gobject.first; go; go= go->next) { - if (go->ob) len++; - } - if (len==0) return; - - /* now create the menu to draw */ - pup= uiPupMenuBegin(C, "Make Proxy For:", 0); - layout= uiPupMenuLayout(pup); - - for (go= group->gobject.first; go; go= go->next) { - if (go->ob) { - PointerRNA props_ptr; - - /* create operator menu item with relevant properties filled in */ - props_ptr= uiItemFullO(layout, go->ob->id.name+2, 0, op->idname, NULL, WM_OP_EXEC_REGION_WIN, UI_ITEM_O_RETURN_PROPS); - RNA_string_set(&props_ptr, "object", go->ob->id.name+2); - RNA_string_set(&props_ptr, "group_object", go->ob->id.name+2); - } - } - - /* display the menu, and be done */ - uiPupMenuEnd(C, pup); -} - /* set the object to proxify */ static int make_proxy_invoke (bContext *C, wmOperator *op, wmEvent *evt) { @@ -306,7 +275,10 @@ static int make_proxy_invoke (bContext *C, wmOperator *op, wmEvent *evt) /* Get object to work on - use a menu if we need to... */ if (ob->dup_group && ob->dup_group->id.lib) { /* gives menu with list of objects in group */ - proxy_group_objects_menu(C, op, ob, ob->dup_group); + //proxy_group_objects_menu(C, op, ob, ob->dup_group); + WM_enum_search_invoke(C, op, evt); + return OPERATOR_CANCELLED; + } else if (ob->id.lib) { uiPopupMenu *pup= uiPupMenuBegin(C, "OK?", ICON_QUESTION); @@ -315,7 +287,6 @@ static int make_proxy_invoke (bContext *C, wmOperator *op, wmEvent *evt) /* create operator menu item with relevant properties filled in */ props_ptr= uiItemFullO(layout, op->type->name, 0, op->idname, NULL, WM_OP_EXEC_REGION_WIN, UI_ITEM_O_RETURN_PROPS); - RNA_string_set(&props_ptr, "object", ob->id.name+2); /* present the menu and be done... */ uiPupMenuEnd(C, pup); @@ -331,39 +302,10 @@ static int make_proxy_invoke (bContext *C, wmOperator *op, wmEvent *evt) static int make_proxy_exec (bContext *C, wmOperator *op) { - Object *ob=NULL, *gob=NULL; + Object *ob, *gob= CTX_data_active_object(C); + GroupObject *go= BLI_findlink(&gob->dup_group->gobject, RNA_enum_get(op->ptr, "type")); Scene *scene= CTX_data_scene(C); - char ob_name[21], gob_name[21]; - - /* get object and group object - * - firstly names - * - then pointers from context - */ - RNA_string_get(op->ptr, "object", ob_name); - RNA_string_get(op->ptr, "group_object", gob_name); - - if (gob_name[0]) { - Group *group; - GroupObject *go; - - /* active object is group object... */ - // FIXME: we should get the nominated name instead - gob= CTX_data_active_object(C); - group= gob->dup_group; - - /* find the object to affect */ - for (go= group->gobject.first; go; go= go->next) { - if ((go->ob) && strcmp(go->ob->id.name+2, gob_name)==0) { - ob= go->ob; - break; - } - } - } - else { - /* just use the active object for now */ - // FIXME: we should get the nominated name instead - ob= CTX_data_active_object(C); - } + ob= go->ob; if (ob) { Object *newob; @@ -395,8 +337,7 @@ static int make_proxy_exec (bContext *C, wmOperator *op) /* depsgraph flushes are needed for the new data */ DAG_scene_sort(scene); DAG_id_flush_update(&newob->id, OB_RECALC); - - WM_event_add_notifier(C, NC_OBJECT, NULL); + WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, newob); } else { BKE_report(op->reports, RPT_ERROR, "No object to make proxy for"); @@ -406,8 +347,37 @@ static int make_proxy_exec (bContext *C, wmOperator *op) return OPERATOR_FINISHED; } +/* Generic itemf's for operators that take library args */ +static EnumPropertyItem *proxy_group_object_itemf(bContext *C, PointerRNA *ptr, int *free) +{ + EnumPropertyItem *item= NULL, item_tmp; + int totitem= 0; + int i= 0; + Object *ob= CTX_data_active_object(C); + GroupObject *go; + + if(!ob || !ob->dup_group) + return DummyRNA_DEFAULT_items; + + memset(&item_tmp, 0, sizeof(item_tmp)); + + /* find the object to affect */ + for (go= ob->dup_group->gobject.first; go; go= go->next) { + item_tmp.identifier= item_tmp.name= go->ob->id.name+2; + item_tmp.value= i++; + RNA_enum_item_add(&item, &totitem, &item_tmp); + } + + RNA_enum_item_end(&item, &totitem); + *free= 1; + + return item; +} + void OBJECT_OT_proxy_make (wmOperatorType *ot) { + PropertyRNA *prop; + /* identifiers */ ot->name= "Make Proxy"; ot->idname= "OBJECT_OT_proxy_make"; @@ -423,7 +393,9 @@ void OBJECT_OT_proxy_make (wmOperatorType *ot) /* properties */ RNA_def_string(ot->srna, "object", "", 19, "Proxy Object", "Name of lib-linked/grouped object to make a proxy for."); - RNA_def_string(ot->srna, "group_object", "", 19, "Group Object", "Name of group instancer (if applicable)."); + prop= RNA_def_enum(ot->srna, "type", DummyRNA_DEFAULT_items, 0, "Type", "Group object"); /* XXX, relies on hard coded ID at the moment */ + RNA_def_enum_funcs(prop, proxy_group_object_itemf); + ot->prop= prop; } /********************** Clear Parent Operator ******************* */ @@ -480,7 +452,7 @@ void OBJECT_OT_parent_clear(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - RNA_def_enum(ot->srna, "type", prop_clear_parent_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_clear_parent_types, 0, "Type", ""); } /* ******************** Make Parent Operator *********************** */ @@ -659,11 +631,11 @@ static int parent_set_exec(bContext *C, wmOperator *op) } else if(pararm && ob->type==OB_MESH && par->type == OB_ARMATURE) { if(partype == PAR_ARMATURE_NAME) - create_vgroups_from_armature(scene, ob, par, ARM_GROUPS_NAME); + create_vgroups_from_armature(scene, ob, par, ARM_GROUPS_NAME, 0); else if(partype == PAR_ARMATURE_ENVELOPE) - create_vgroups_from_armature(scene, ob, par, ARM_GROUPS_ENVELOPE); + create_vgroups_from_armature(scene, ob, par, ARM_GROUPS_ENVELOPE, 0); else if(partype == PAR_ARMATURE_AUTO) - create_vgroups_from_armature(scene, ob, par, ARM_GROUPS_AUTO); + create_vgroups_from_armature(scene, ob, par, ARM_GROUPS_AUTO, 0); /* get corrected inverse */ ob->partype= PAROBJECT; @@ -921,7 +893,7 @@ void OBJECT_OT_track_clear(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - RNA_def_enum(ot->srna, "type", prop_clear_track_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_clear_track_types, 0, "Type", ""); } /************************** Make Track Operator *****************************/ @@ -1014,7 +986,7 @@ void OBJECT_OT_track_set(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "type", prop_make_track_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_make_track_types, 0, "Type", ""); } /************************** Move to Layer Operator *****************************/ @@ -1219,14 +1191,8 @@ static int make_links_data_exec(bContext *C, wmOperator *op) } break; case MAKE_LINKS_ANIMDATA: -#if 0 // XXX old animation system - if(obt->ipo) obt->ipo->id.us--; - obt->ipo= ob->ipo; - if(obt->ipo) { - id_us_plus((ID *)obt->ipo); - do_ob_ipo(scene, obt); - } -#endif // XXX old animation system + BKE_copy_animdata_id((ID *)obt, (ID *)ob); + BKE_copy_animdata_id((ID *)obt->data, (ID *)ob->data); break; case MAKE_LINKS_DUPLIGROUP: if(ob->dup_group) ob->dup_group->id.us--; @@ -1432,7 +1398,8 @@ void single_obdata_users(Scene *scene, int flag) armature_rebuild_pose(ob, ob->data); break; default: - printf("ERROR single_obdata_users: can't copy %s\n", id->name); + if (G.f & G_DEBUG) + printf("ERROR single_obdata_users: can't copy %s\n", id->name); return; } @@ -1802,7 +1769,7 @@ void OBJECT_OT_make_local(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "type", type_items, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", type_items, 0, "Type", ""); } static int make_single_user_exec(bContext *C, wmOperator *op) @@ -1853,7 +1820,7 @@ void OBJECT_OT_make_single_user(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "type", type_items, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", type_items, 0, "Type", ""); RNA_def_boolean(ot->srna, "object", 0, "Object", "Make single user objects"); RNA_def_boolean(ot->srna, "obdata", 0, "Object Data", "Make single user object data"); @@ -1861,3 +1828,43 @@ void OBJECT_OT_make_single_user(wmOperatorType *ot) RNA_def_boolean(ot->srna, "texture", 0, "Textures", "Make textures local to each material"); RNA_def_boolean(ot->srna, "animation", 0, "Animation Data", "Make animation data local to each object"); } + +static int drop_named_material_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + Base *base= ED_view3d_give_base_under_cursor(C, event->mval); + Material *ma; + char name[32]; + + RNA_string_get(op->ptr, "name", name); + ma= (Material *)find_id("MA", name); + if(base==NULL || ma==NULL) + return OPERATOR_CANCELLED; + + assign_material(base->object, ma, 1); + + DAG_ids_flush_update(0); + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, CTX_wm_view3d(C)); + + return OPERATOR_FINISHED; +} + +/* used for dropbox */ +/* assigns to object under cursor, only first material slot */ +void OBJECT_OT_drop_named_material(wmOperatorType *ot) +{ + + /* identifiers */ + ot->name= "Drop Named Material on Object"; + ot->description = ""; + ot->idname= "OBJECT_OT_drop_named_material"; + + /* api callbacks */ + ot->invoke= drop_named_material_invoke; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_UNDO; + + /* properties */ + RNA_def_string(ot->srna, "name", "Material", 24, "Name", "Material name to assign."); +} diff --git a/source/blender/editors/object/object_select.c b/source/blender/editors/object/object_select.c index becad003d5c..c671a81bc71 100644 --- a/source/blender/editors/object/object_select.c +++ b/source/blender/editors/object/object_select.c @@ -157,7 +157,7 @@ void OBJECT_OT_select_by_type(wmOperatorType *ot) /* properties */ RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first."); - RNA_def_enum(ot->srna, "type", object_type_items, 1, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", object_type_items, 1, "Type", ""); } /*********************** Selection by Links *********************/ @@ -318,7 +318,7 @@ void OBJECT_OT_select_linked(wmOperatorType *ot) /* properties */ RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first."); - RNA_def_enum(ot->srna, "type", prop_select_linked_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_select_linked_types, 0, "Type", ""); } /*********************** Selected Grouped ********************/ @@ -619,7 +619,7 @@ void OBJECT_OT_select_grouped(wmOperatorType *ot) /* properties */ RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first."); - RNA_def_enum(ot->srna, "type", prop_select_grouped_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_select_grouped_types, 0, "Type", ""); } /************************* Select by Layer **********************/ @@ -786,7 +786,7 @@ void object_flip_name (char *name) /* We first check the case with a .### extension, let's find the last period */ if(isdigit(name[len-1])) { - index= strrchr(name, '.'); // last occurrance + index= strrchr(name, '.'); // last occurrence if (index && isdigit(index[1]) ) { // doesnt handle case bone.1abc2 correct..., whatever! strcpy(number, index); *index= 0; diff --git a/source/blender/editors/object/object_shapekey.c b/source/blender/editors/object/object_shapekey.c index 99b35b998c2..226c630f2e8 100644 --- a/source/blender/editors/object/object_shapekey.c +++ b/source/blender/editors/object/object_shapekey.c @@ -260,7 +260,7 @@ void OBJECT_OT_shape_key_add(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_boolean(ot->srna, "from_mix", 0, "From Mix", "Create the new shape key from the existing mix of keys."); + RNA_def_boolean(ot->srna, "from_mix", 1, "From Mix", "Create the new shape key from the existing mix of keys."); } static int shape_key_remove_exec(bContext *C, wmOperator *op) diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index 43382562a8a..15ed20c783e 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -411,7 +411,7 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo if(ob->type==OB_MESH) { me= ob->data; - if(me->id.us>1) { + if(ID_REAL_USERS(me) > 1) { BKE_report(reports, RPT_ERROR, "Can't apply to a multi user mesh, doing nothing."); return OPERATOR_CANCELLED; } @@ -419,7 +419,7 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo else if(ob->type==OB_ARMATURE) { arm= ob->data; - if(arm->id.us>1) { + if(ID_REAL_USERS(arm) > 1) { BKE_report(reports, RPT_ERROR, "Can't apply to a multi user armature, doing nothing."); return OPERATOR_CANCELLED; } @@ -427,7 +427,7 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo else if(ELEM(ob->type, OB_CURVE, OB_SURF)) { cu= ob->data; - if(cu->id.us>1) { + if(ID_REAL_USERS(cu) > 1) { BKE_report(reports, RPT_ERROR, "Can't apply to a multi user curve, doing nothing."); return OPERATOR_CANCELLED; } @@ -984,7 +984,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) if (arm->id.lib) { tot_lib_error++; - } else if(arm->id.us>1) { + } else if(ID_REAL_USERS(arm) > 1) { /*BKE_report(op->reports, RPT_ERROR, "Can't apply to a multi user armature"); return;*/ tot_multiuser_arm_error++; @@ -1040,6 +1040,7 @@ void OBJECT_OT_origin_set(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - RNA_def_enum(ot->srna, "type", prop_set_center_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_set_center_types, 0, "Type", ""); + } diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c index 43fabff6793..728f3214584 100644 --- a/source/blender/editors/object/object_vgroup.c +++ b/source/blender/editors/object/object_vgroup.c @@ -85,51 +85,6 @@ static Lattice *vgroup_edit_lattice(Object *ob) return NULL; } -/* check if deform vertex has defgroup index */ -MDeformWeight *ED_vgroup_weight_get(MDeformVert *dv, int defgroup) -{ - int i; - - if(!dv || defgroup<0) - return NULL; - - for(i=0; i<dv->totweight; i++) - if(dv->dw[i].def_nr == defgroup) - return dv->dw+i; - - return NULL; -} - -/* Ensures that mv has a deform weight entry for the specified defweight group */ -/* Note this function is mirrored in editmesh_tools.c, for use for editvertices */ -MDeformWeight *ED_vgroup_weight_verify(MDeformVert *dv, int defgroup) -{ - MDeformWeight *newdw; - - /* do this check always, this function is used to check for it */ - if(!dv || defgroup<0) - return NULL; - - newdw = ED_vgroup_weight_get(dv, defgroup); - if(newdw) - return newdw; - - newdw = MEM_callocN(sizeof(MDeformWeight)*(dv->totweight+1), "deformWeight"); - if(dv->dw) { - memcpy(newdw, dv->dw, sizeof(MDeformWeight)*dv->totweight); - MEM_freeN(dv->dw); - } - dv->dw=newdw; - - dv->dw[dv->totweight].weight=0.0f; - dv->dw[dv->totweight].def_nr=defgroup; - /* Group index */ - - dv->totweight++; - - return dv->dw+(dv->totweight-1); -} - bDeformGroup *ED_vgroup_add_name(Object *ob, char *name) { bDeformGroup *defgroup; @@ -142,7 +97,7 @@ bDeformGroup *ED_vgroup_add_name(Object *ob, char *name) BLI_strncpy(defgroup->name, name, 32); BLI_addtail(&ob->defbase, defgroup); - unique_vertexgroup_name(defgroup, ob); + defgroup_unique_name(defgroup, ob); ob->actdef = BLI_countlist(&ob->defbase); @@ -362,7 +317,7 @@ void ED_vgroup_vert_add(Object *ob, bDeformGroup *dg, int vertnum, float weight, /* get the deform group number, exit if * it can't be found */ - def_nr = get_defgroup_num(ob, dg); + def_nr = defgroup_find_index(ob, dg); if(def_nr < 0) return; /* if there's no deform verts then create some, @@ -393,7 +348,7 @@ void ED_vgroup_vert_remove(Object *ob, bDeformGroup *dg, int vertnum) * to this deform group, and abort if it * can not be found. */ - def_nr = get_defgroup_num(ob, dg); + def_nr = defgroup_find_index(ob, dg); if(def_nr < 0) return; /* call another routine to do the work @@ -446,7 +401,7 @@ float ED_vgroup_vert_weight(Object *ob, bDeformGroup *dg, int vertnum) if(!ob) return 0.0f; - def_nr = get_defgroup_num(ob, dg); + def_nr = defgroup_find_index(ob, dg); if(def_nr < 0) return 0.0f; return get_vert_def_nr(ob, def_nr, vertnum); @@ -464,7 +419,7 @@ void ED_vgroup_select_by_name(Object *ob, char *name) } } - ob->actdef=0; // this signals on painting to create a new one, if a bone in posemode is selected */ + ob->actdef= 0; // this signals on painting to create a new one, if a bone in posemode is selected */ } /********************** Operator Implementations *********************/ @@ -541,9 +496,10 @@ static void vgroup_duplicate(Object *ob) } else { BLI_snprintf(name, 32, "%s_copy", dg->name); - while(get_named_vertexgroup(ob, name)) { + while(defgroup_find_name(ob, name)) { if((strlen(name) + 6) > 32) { - printf("Internal error: the name for the new vertex group is > 32 characters"); + if (G.f & G_DEBUG) + printf("Internal error: the name for the new vertex group is > 32 characters"); return; } strcpy(s, name); @@ -551,9 +507,9 @@ static void vgroup_duplicate(Object *ob) } } - cdg = copy_defgroup(dg); + cdg = defgroup_duplicate(dg); strcpy(cdg->name, name); - unique_vertexgroup_name(cdg, ob); + defgroup_unique_name(cdg, ob); BLI_addtail(&ob->defbase, cdg); @@ -568,11 +524,11 @@ static void vgroup_duplicate(Object *ob) for(i = 0; i < dvert_tot; i++) { dvert = dvert_array+i; - org = ED_vgroup_weight_get(dvert, idg); + org = defvert_find_index(dvert, idg); if(org) { float weight = org->weight; - /* ED_vgroup_weight_verify re-allocs org so need to store the weight first */ - cpy = ED_vgroup_weight_verify(dvert, icdg); + /* defvert_verify_index re-allocs org so need to store the weight first */ + cpy = defvert_verify_index(dvert, icdg); cpy->weight = weight; } } @@ -596,7 +552,7 @@ static void vgroup_normalize(Object *ob) for(i = 0; i < dvert_tot; i++) { dvert = dvert_array+i; - dw = ED_vgroup_weight_get(dvert, def_nr); + dw = defvert_find_index(dvert, def_nr); if(dw) { weight_max = MAX2(dw->weight, weight_max); } @@ -605,7 +561,7 @@ static void vgroup_normalize(Object *ob) if(weight_max > 0.0f) { for(i = 0; i < dvert_tot; i++) { dvert = dvert_array+i; - dw = ED_vgroup_weight_get(dvert, def_nr); + dw = defvert_find_index(dvert, def_nr); if(dw) { dw->weight /= weight_max; @@ -633,7 +589,7 @@ static void vgroup_levels(Object *ob, float offset, float gain) for(i = 0; i < dvert_tot; i++) { dvert = dvert_array+i; - dw = ED_vgroup_weight_get(dvert, def_nr); + dw = defvert_find_index(dvert, def_nr); if(dw) { dw->weight = gain * (dw->weight + offset); @@ -744,9 +700,9 @@ static void vgroup_invert(Object *ob, int auto_assign, int auto_remove) dvert = dvert_array+i; if(auto_assign) { - dw= ED_vgroup_weight_verify(dvert, def_nr); + dw= defvert_verify_index(dvert, def_nr); } else { - dw= ED_vgroup_weight_get(dvert, def_nr); + dw= defvert_find_index(dvert, def_nr); } if(dw) { @@ -819,7 +775,7 @@ static void vgroup_blend(Object *ob) if(em) dvert= CustomData_em_get(&em->vdata, eve->data, CD_MDEFORMVERT); else dvert= dvert_array+i2; - dw= ED_vgroup_weight_get(dvert, def_nr); + dw= defvert_find_index(dvert, def_nr); if(dw) { vg_weights[i1] += dw->weight; @@ -834,7 +790,7 @@ static void vgroup_blend(Object *ob) if(em) dvert= CustomData_em_get(&em->vdata, eve->data, CD_MDEFORMVERT); else dvert= dvert_array+i; - dw= ED_vgroup_weight_verify(dvert, def_nr); + dw= defvert_verify_index(dvert, def_nr); dw->weight= vg_weights[i] / (float)vg_users[i]; } @@ -862,7 +818,7 @@ static void vgroup_clean(Object *ob, float eul, int keep_single) for(i = 0; i < dvert_tot; i++) { dvert = dvert_array+i; - dw= ED_vgroup_weight_get(dvert, def_nr); + dw= defvert_find_index(dvert, def_nr); if(dw) { if(dw->weight <= eul) @@ -903,6 +859,68 @@ static void vgroup_clean_all(Object *ob, float eul, int keep_single) } } +void ED_vgroup_mirror(Object *ob, int mirror_weights, int flip_vgroups) +{ + EditVert *eve, *eve_mirr; + MDeformVert *dvert, *dvert_mirr; + int *flip_map; + + if(mirror_weights==0 && flip_vgroups==0) + return; + + /* only the active group */ + if(ob->type == OB_MESH) { + Mesh *me= ob->data; + EditMesh *em = BKE_mesh_get_editmesh(me); + + EM_cache_x_mirror_vert(ob, em); + + if(!CustomData_has_layer(&em->vdata, CD_MDEFORMVERT)) + return; + + flip_map= defgroup_flip_map(ob, 0); + + /* Go through the list of editverts and assign them */ + for(eve=em->verts.first; eve; eve=eve->next){ + if((eve_mirr=eve->tmp.v)) { + if(eve_mirr->f & SELECT || eve->f & SELECT) { + dvert= CustomData_em_get(&em->vdata, eve->data, CD_MDEFORMVERT); + dvert_mirr= CustomData_em_get(&em->vdata, eve_mirr->data, CD_MDEFORMVERT); + if(dvert && dvert_mirr) { + if(eve_mirr->f & SELECT && eve->f & SELECT) { + /* swap */ + if(mirror_weights) + SWAP(MDeformVert, *dvert, *dvert_mirr); + if(flip_vgroups) { + defvert_flip(dvert, flip_map); + defvert_flip(dvert_mirr, flip_map); + } + } + else { + /* dvert should always be the target */ + if(eve_mirr->f & SELECT) { + SWAP(MDeformVert *, dvert, dvert_mirr); + } + + if(mirror_weights) + defvert_copy(dvert, dvert_mirr); + if(flip_vgroups) { + defvert_flip(dvert, flip_map); + } + } + } + } + + eve->tmp.v= eve_mirr->tmp.v= NULL; + } + } + + MEM_freeN(flip_map); + + BKE_mesh_end_editmesh(me, em); + } +} + static void vgroup_delete_update_users(Object *ob, int id) { ExplodeModifierData *emd; @@ -979,7 +997,7 @@ static void vgroup_delete_object_mode(Object *ob) for(i = 0; i < dvert_tot; i++) { dvert = dvert_array + i; if(dvert) { - if(ED_vgroup_weight_get(dvert, (ob->actdef-1))) + if(defvert_find_index(dvert, (ob->actdef-1))) ED_vgroup_vert_remove(ob, dg, i); } } @@ -1026,7 +1044,7 @@ static void vgroup_active_remove_verts(Object *ob, int allverts) for(eve=em->verts.first; eve; eve=eve->next){ dvert= CustomData_em_get(&em->vdata, eve->data, CD_MDEFORMVERT); - if(dvert && dvert->dw && ((eve->f & 1) || allverts)){ + if(dvert && dvert->dw && ((eve->f & SELECT) || allverts)){ for(i=0; i<dvert->totweight; i++){ /* Find group */ eg = BLI_findlink(&ob->defbase, dvert->dw[i].def_nr); @@ -1208,7 +1226,7 @@ static void vgroup_assign_verts(Object *ob, float weight) for(eve=em->verts.first; eve; eve=eve->next){ dvert= CustomData_em_get(&em->vdata, eve->data, CD_MDEFORMVERT); - if(dvert && (eve->f & 1)){ + if(dvert && (eve->f & SELECT)){ done=0; /* See if this vert already has a reference to this group */ /* If so: Change its weight */ @@ -1684,6 +1702,39 @@ void OBJECT_OT_vertex_group_clean(wmOperatorType *ot) } +static int vertex_group_mirror_exec(bContext *C, wmOperator *op) +{ + Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data; + + ED_vgroup_mirror(ob, RNA_boolean_get(op->ptr,"mirror_weights"), RNA_boolean_get(op->ptr,"flip_group_names")); + + 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->data); + + return OPERATOR_FINISHED; +} + +void OBJECT_OT_vertex_group_mirror(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Mirror Vertex Group"; + ot->idname= "OBJECT_OT_vertex_group_mirror"; + ot->description= "Mirror weights, and flip vertex group names, copying when only one side is selected."; + + /* api callbacks */ + ot->poll= vertex_group_poll_edit; + ot->exec= vertex_group_mirror_exec; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + RNA_def_boolean(ot->srna, "mirror_weights", TRUE, "Mirror Weights", "Mirror weights."); + RNA_def_boolean(ot->srna, "flip_group_names", TRUE, "Flip Groups", "Flip vertex group names while mirroring."); + +} + static int vertex_group_copy_to_linked_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); @@ -1786,5 +1837,6 @@ void OBJECT_OT_vertex_group_set_active(wmOperatorType *ot) /* properties */ prop= RNA_def_enum(ot->srna, "group", vgroup_items, 0, "Group", "Vertex group to set as active."); RNA_def_enum_funcs(prop, vgroup_itemf); + ot->prop= prop; } diff --git a/source/blender/editors/physics/particle_boids.c b/source/blender/editors/physics/particle_boids.c index b7a97d1131a..50a1bffbf30 100644 --- a/source/blender/editors/physics/particle_boids.c +++ b/source/blender/editors/physics/particle_boids.c @@ -97,7 +97,7 @@ void BOID_OT_rule_add(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - RNA_def_enum(ot->srna, "type", boidrule_type_items, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", boidrule_type_items, 0, "Type", ""); } static int rule_del_exec(bContext *C, wmOperator *op) { diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index 101ec225cb2..c2ead76ff3e 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -88,6 +88,7 @@ static void PE_create_particle_edit(Scene *scene, Object *ob, PointCache *cache, ParticleSystem *psys); static void PTCacheUndo_clear(PTCacheEdit *edit); +static void recalc_emitter_field(Object *ob, ParticleSystem *psys); #define KEY_K PTCacheEditKey *key; int k #define POINT_P PTCacheEditPoint *point; int p @@ -193,7 +194,10 @@ ParticleEditSettings *PE_settings(Scene *scene) return &scene->toolsettings->particle; } -/* always gets atleast the first particlesystem even if PSYS_CURRENT flag is not set */ +/* always gets atleast the first particlesystem even if PSYS_CURRENT flag is not set + * + * note: this function runs on poll, therefor it can runs many times a second + * keep it fast! */ static PTCacheEdit *pe_get_current(Scene *scene, Object *ob, int create) { ParticleEditSettings *pset= PE_settings(scene); @@ -370,7 +374,8 @@ 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.ar, data->vc.rv3d, data->ob, &data->mats); + /* note, the object argument means the modelview matrix does not account for the objects matrix, use viewmat rather then (obmat * viewmat) */ + view3d_get_transformation(data->vc.ar, data->vc.rv3d, NULL, &data->mats); if((data->vc.v3d->drawtype>OB_WIRE) && (data->vc.v3d->flag & V3D_ZBUF_SELECT)) view3d_validate_backbuf(&data->vc); @@ -403,7 +408,8 @@ static int key_test_depth(PEData *data, float co[3]) x+= (short)data->vc.ar->winrct.xmin; y+= (short)data->vc.ar->winrct.ymin; - view3d_validate_backbuf(&data->vc); + /* PE_set_view3d_data calls this. no need to call here */ + /* view3d_validate_backbuf(&data->vc); */ glReadPixels(x, y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &depth); if((float)uz - 0.0001 > depth) @@ -588,25 +594,34 @@ static void foreach_mouse_hit_key(PEData *data, ForKeyMatFunc func, int selected unit_m4(mat); LOOP_VISIBLE_POINTS { - if(edit->psys && !(edit->psys->flag & PSYS_GLOBAL_HAIR)) { - psys_mat_hair_to_global(data->ob, psmd->dm, psys->part->from, psys->particles + p, mat); - invert_m4_m4(imat,mat); - } - if(pset->selectmode==SCE_SELECT_END) { /* only do end keys */ key= point->keys + point->totkey-1; - if(selected==0 || key->flag & PEK_SELECT) - if(key_inside_circle(data, data->rad, KEY_WCO, &data->dist)) + if(selected==0 || key->flag & PEK_SELECT) { + if(key_inside_circle(data, data->rad, KEY_WCO, &data->dist)) { + if(edit->psys && !(edit->psys->flag & PSYS_GLOBAL_HAIR)) { + psys_mat_hair_to_global(data->ob, psmd->dm, psys->part->from, psys->particles + p, mat); + invert_m4_m4(imat,mat); + } + func(data, mat, imat, p, point->totkey-1, key); + } + } } else { /* do all keys */ LOOP_VISIBLE_KEYS { - if(selected==0 || key->flag & PEK_SELECT) - if(key_inside_circle(data, data->rad, KEY_WCO, &data->dist)) + if(selected==0 || key->flag & PEK_SELECT) { + if(key_inside_circle(data, data->rad, KEY_WCO, &data->dist)) { + if(edit->psys && !(edit->psys->flag & PSYS_GLOBAL_HAIR)) { + psys_mat_hair_to_global(data->ob, psmd->dm, psys->part->from, psys->particles + p, mat); + invert_m4_m4(imat,mat); + } + func(data, mat, imat, p, k, key); + } + } } } } @@ -2008,7 +2023,6 @@ static void rekey_particle_to_time(Scene *scene, Object *ob, int pa_index, float static int remove_tagged_particles(Scene *scene, Object *ob, ParticleSystem *psys, int mirror) { PTCacheEdit *edit = psys->edit; - ParticleEditSettings *pset= PE_settings(scene); ParticleData *pa, *npa=0, *new_pars=0; POINT_P; PTCacheEditPoint *npoint=0, *new_points=0; @@ -2079,7 +2093,6 @@ static int remove_tagged_particles(Scene *scene, Object *ob, ParticleSystem *psy static void remove_tagged_keys(Scene *scene, Object *ob, ParticleSystem *psys) { PTCacheEdit *edit= psys->edit; - ParticleEditSettings *pset= PE_settings(scene); ParticleData *pa; HairKey *hkey, *nhkey, *new_hkeys=0; POINT_P; KEY_K; @@ -2270,7 +2283,6 @@ static int remove_doubles_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); Object *ob= CTX_data_active_object(C); - ParticleEditSettings *pset=PE_settings(scene); PTCacheEdit *edit= PE_get_current(scene, ob); ParticleSystem *psys = edit->psys; ParticleSystemModifierData *psmd; @@ -2356,6 +2368,52 @@ void PARTICLE_OT_remove_doubles(wmOperatorType *ot) RNA_def_float(ot->srna, "threshold", 0.0002f, 0.0f, FLT_MAX, "Threshold", "Threshold distance withing which particles are removed", 0.00001f, 0.1f); } + +static int weight_set_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + ParticleEditSettings *pset= PE_settings(scene); + Object *ob= CTX_data_active_object(C); + PTCacheEdit *edit= PE_get_current(scene, ob); + ParticleSystem *psys = edit->psys; + POINT_P; + KEY_K; + HairKey *hkey; + float weight; + ParticleBrushData *brush= &pset->brush[pset->brushtype]; + edit= psys->edit; + + weight= (float)(brush->strength / 100.0f); + + LOOP_SELECTED_POINTS { + ParticleData *pa= psys->particles + p; + + LOOP_SELECTED_KEYS { + hkey= pa->hair + k; + hkey->weight= weight; + } + } + + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, ob); + + return OPERATOR_FINISHED; +} + +void PARTICLE_OT_weight_set(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Weight Set"; + ot->idname= "PARTICLE_OT_weight_set"; + + /* api callbacks */ + ot->exec= weight_set_exec; + ot->poll= PE_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + /************************ cursor drawing *******************************/ static void brush_drawcursor(bContext *C, int x, int y, void *customdata) @@ -2530,7 +2588,7 @@ void PARTICLE_OT_delete(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "type", delete_type_items, DEL_PARTICLE, "Type", "Delete a full particle or only keys."); + ot->prop= RNA_def_enum(ot->srna, "type", delete_type_items, DEL_PARTICLE, "Type", "Delete a full particle or only keys."); } /*************************** mirror operator **************************/ @@ -2689,79 +2747,6 @@ void PARTICLE_OT_mirror(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } -/*********************** set brush operator **********************/ - -static EnumPropertyItem brush_type_items[]= { - {PE_BRUSH_NONE, "NONE", 0, "None", ""}, - {PE_BRUSH_COMB, "COMB", 0, "Comb", ""}, - {PE_BRUSH_SMOOTH, "SMOOTH", 0, "Smooth", ""}, - {PE_BRUSH_ADD, "ADD", 0, "Add", ""}, - {PE_BRUSH_LENGTH, "LENGTH", 0, "Length", ""}, - {PE_BRUSH_PUFF, "PUFF", 0, "Puff", ""}, - {PE_BRUSH_CUT, "CUT", 0, "Cut", ""}, - {0, NULL, 0, NULL, NULL} -}; - -static int set_brush_exec(bContext *C, wmOperator *op) -{ - Scene *scene= CTX_data_scene(C); - ParticleEditSettings *pset= PE_settings(scene); - - pset->brushtype= RNA_enum_get(op->ptr, "type"); - - return OPERATOR_FINISHED; -} - -void PARTICLE_OT_brush_set(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Set Brush"; - ot->idname= "PARTICLE_OT_brush_set"; - - /* api callbacks */ - ot->exec= set_brush_exec; - ot->invoke= WM_menu_invoke; - ot->poll= PE_poll; - - /* properties */ - RNA_def_enum(ot->srna, "type", brush_type_items, PE_BRUSH_NONE, "Type", "Brush type to select for editing."); -} - - -/*********************** set mode operator **********************/ - -static EnumPropertyItem edit_type_items[]= { - {PE_TYPE_PARTICLES, "PARTICLES", 0, "Particles", ""}, - {PE_TYPE_SOFTBODY, "SOFTBODY", 0, "Soft body", ""}, - {PE_TYPE_CLOTH, "CLOTH", 0, "Cloth", ""}, - {0, NULL, 0, NULL, NULL} -}; - -static int set_edit_mode_exec(bContext *C, wmOperator *op) -{ - Scene *scene= CTX_data_scene(C); - ParticleEditSettings *pset= PE_settings(scene); - - pset->edittype= RNA_enum_get(op->ptr, "type"); - - return OPERATOR_FINISHED; -} - -void PARTICLE_OT_edit_type_set(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Set Edit Type"; - ot->idname= "PARTICLE_OT_edit_type_set"; - - /* api callbacks */ - ot->exec= set_edit_mode_exec; - ot->invoke= WM_menu_invoke; - ot->poll= PE_poll; - - /* properties */ - RNA_def_enum(ot->srna, "type", edit_type_items, PE_TYPE_PARTICLES, "Type", "Edit type to select for editing."); -} - /************************* brush edit callbacks ********************/ static void brush_comb(PEData *data, float mat[][4], float imat[][4], int point_index, int key_index, PTCacheEditKey *key) @@ -2907,7 +2892,16 @@ static void brush_puff(PEData *data, int point_index) PTCacheEditPoint *point = edit->points + point_index; KEY_K; float mat[4][4], imat[4][4]; - float lastco[3], rootco[3] = {0.0f, 0.0f, 0.0f}, co[3], nor[3], kco[3], dco[3], fac=0.0f, length=0.0f; + + float lastco[3], rootco[3] = {0.0f, 0.0f, 0.0f}, co[3], nor[3], kco[3], dco[3], ofs[3] = {0.0f, 0.0f, 0.0f}, fac=0.0f, length=0.0f; + int puff_volume = 0; + int change= 0; + + { + ParticleEditSettings *pset= PE_settings(data->scene); + ParticleBrushData *brush= &pset->brush[pset->brushtype]; + puff_volume = brush->flag & PE_BRUSH_DATA_PUFF_VOLUME; + } if(psys && !(psys->flag & PSYS_GLOBAL_HAIR)) { psys_mat_hair_to_global(data->ob, data->dm, psys->part->from, psys->particles + point_index, mat); @@ -2923,12 +2917,15 @@ static void brush_puff(PEData *data, int point_index) /* find root coordinate and normal on emitter */ VECCOPY(co, key->co); mul_m4_v3(mat, co); + mul_v3_m4v3(kco, data->ob->imat, co); /* use 'kco' as the object space version of worldspace 'co', ob->imat is set before calling */ - point_index= BLI_kdtree_find_nearest(edit->emitter_field, co, NULL, NULL); + point_index= BLI_kdtree_find_nearest(edit->emitter_field, kco, NULL, NULL); if(point_index == -1) return; VECCOPY(rootco, co); copy_v3_v3(nor, &edit->emitter_cosnos[point_index*6+3]); + mul_mat3_m4_v3(data->ob->obmat, nor); /* normal into worldspace */ + normalize_v3(nor); length= 0.0f; @@ -2938,24 +2935,101 @@ static void brush_puff(PEData *data, int point_index) fac= -fac; } else { - /* compute position as if hair was standing up straight */ + /* compute position as if hair was standing up straight. + * */ VECCOPY(lastco, co); VECCOPY(co, key->co); mul_m4_v3(mat, co); length += len_v3v3(lastco, co); + if((key->flag & PEK_SELECT) && !(key->flag & PEK_HIDE)) { + VECADDFAC(kco, rootco, nor, length); - VECADDFAC(kco, rootco, nor, length); + /* blend between the current and straight position */ + VECSUB(dco, kco, co); + VECADDFAC(co, co, dco, fac); - /* blend between the current and straight position */ - VECSUB(dco, kco, co); - VECADDFAC(co, co, dco, fac); + /* re-use dco to compare before and after translation and add to the offset */ + VECCOPY(dco, key->co); - VECCOPY(key->co, co); - mul_m4_v3(imat, key->co); + mul_v3_m4v3(key->co, imat, co); + + if(puff_volume) { + /* accumulate the total distance moved to apply to unselected + * keys that come after */ + ofs[0] += key->co[0] - dco[0]; + ofs[1] += key->co[1] - dco[1]; + ofs[2] += key->co[2] - dco[2]; + } + change = 1; + } + else { + + if(puff_volume) { +#if 0 + /* this is simple but looks bad, adds annoying kinks */ + add_v3_v3(key->co, ofs); +#else + /* translate (not rotate) the rest of the hair if its not selected */ + if(ofs[0] || ofs[1] || ofs[2]) { +#if 0 /* kindof works but looks worse then whats below */ + + /* Move the unselected point on a vector based on the + * hair direction and the offset */ + float c1[3], c2[3]; + VECSUB(dco, lastco, co); + mul_mat3_m4_v3(imat, dco); /* into particle space */ + + /* move the point allong a vector perpendicular to the + * hairs direction, reduces odd kinks, */ + cross_v3_v3v3(c1, ofs, dco); + cross_v3_v3v3(c2, c1, dco); + normalize_v3(c2); + mul_v3_fl(c2, len_v3(ofs)); + add_v3_v3(key->co, c2); +#else + /* Move the unselected point on a vector based on the + * the normal of the closest geometry */ + float oco[3], onor[3]; + VECCOPY(oco, key->co); + mul_m4_v3(mat, oco); + mul_v3_m4v3(kco, data->ob->imat, oco); /* use 'kco' as the object space version of worldspace 'co', ob->imat is set before calling */ + + point_index= BLI_kdtree_find_nearest(edit->emitter_field, kco, NULL, NULL); + if(point_index != -1) { + copy_v3_v3(onor, &edit->emitter_cosnos[point_index*6+3]); + mul_mat3_m4_v3(data->ob->obmat, onor); /* normal into worldspace */ + mul_mat3_m4_v3(imat, onor); /* worldspace into particle space */ + normalize_v3(onor); + + + mul_v3_fl(onor, len_v3(ofs)); + add_v3_v3(key->co, onor); + } +#endif + } +#endif + } + } } } - point->flag |= PEP_EDIT_RECALC; + if(change) + point->flag |= PEP_EDIT_RECALC; +} + + +static void brush_weight(PEData *data, float mat[][4], float imat[][4], int point_index, int key_index, PTCacheEditKey *key) +{ + /* roots have full weight allways */ + if(key_index) { + PTCacheEdit *edit = data->edit; + ParticleSystem *psys = edit->psys; + + ParticleData *pa= psys->particles + point_index; + pa->hair[key_index].weight = data->weightfac; + + (data->edit->points + point_index)->flag |= PEP_EDIT_RECALC; + } } static void brush_smooth_get(PEData *data, float mat[][4], float imat[][4], int point_index, int key_index, PTCacheEditKey *key) @@ -3405,6 +3479,23 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr) break; } + case PE_BRUSH_WEIGHT: + { + PEData data; + PE_set_view3d_data(C, &data); + + if(edit->psys) { + data.dm= psmd->dm; + data.mval= mval; + data.rad= (float)brush->size; + + data.weightfac = (float)(brush->strength / 100.0f); /* note that this will never be zero */ + + foreach_mouse_hit_key(&data, brush_weight, selected); + } + + break; + } } if((pset->flag & PE_KEEP_LENGTHS)==0) recalc_lengths(edit); @@ -3970,8 +4061,15 @@ static int particle_edit_toggle_exec(bContext *C, wmOperator *op) Object *ob= CTX_data_active_object(C); if(!(ob->mode & OB_MODE_PARTICLE_EDIT)) { + PTCacheEdit *edit; ob->mode |= OB_MODE_PARTICLE_EDIT; - PE_create_current(scene, ob); + edit= PE_create_current(scene, ob); + + /* mesh may have changed since last entering editmode. + * note, this may have run before if the edit data was just created, so could avoid this and speed up a little */ + if(edit && edit->psys) + recalc_emitter_field(ob, edit->psys); + toggle_particle_cursor(C, 1); WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_MODE_PARTICLE, NULL); } diff --git a/source/blender/editors/physics/particle_object.c b/source/blender/editors/physics/particle_object.c index f94835593c5..e567c940546 100644 --- a/source/blender/editors/physics/particle_object.c +++ b/source/blender/editors/physics/particle_object.c @@ -44,6 +44,7 @@ #include "BKE_depsgraph.h" #include "BKE_DerivedMesh.h" #include "BKE_cdderivedmesh.h" +#include "BKE_global.h" #include "BKE_main.h" #include "BKE_particle.h" #include "BKE_pointcache.h" @@ -654,7 +655,8 @@ static void connect_hair(Scene *scene, Object *ob, ParticleSystem *psys) BLI_bvhtree_find_nearest(bvhtree.tree, key->co, &nearest, bvhtree.nearest_callback, &bvhtree); if(nearest.index == -1) { - printf("No nearest point found for hair root!"); + if (G.f & G_DEBUG) + printf("No nearest point found for hair root!"); continue; } diff --git a/source/blender/editors/physics/physics_intern.h b/source/blender/editors/physics/physics_intern.h index e1b1a8b90a8..3de5c256df7 100644 --- a/source/blender/editors/physics/physics_intern.h +++ b/source/blender/editors/physics/physics_intern.h @@ -50,10 +50,10 @@ void PARTICLE_OT_reveal(struct wmOperatorType *ot); void PARTICLE_OT_rekey(struct wmOperatorType *ot); void PARTICLE_OT_subdivide(struct wmOperatorType *ot); void PARTICLE_OT_remove_doubles(struct wmOperatorType *ot); +void PARTICLE_OT_weight_set(struct wmOperatorType *ot); void PARTICLE_OT_delete(struct wmOperatorType *ot); void PARTICLE_OT_mirror(struct wmOperatorType *ot); -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); diff --git a/source/blender/editors/physics/physics_ops.c b/source/blender/editors/physics/physics_ops.c index 24b3881d6b8..2728f64a777 100644 --- a/source/blender/editors/physics/physics_ops.c +++ b/source/blender/editors/physics/physics_ops.c @@ -57,10 +57,10 @@ static void operatortypes_particle(void) WM_operatortype_append(PARTICLE_OT_rekey); WM_operatortype_append(PARTICLE_OT_subdivide); WM_operatortype_append(PARTICLE_OT_remove_doubles); + WM_operatortype_append(PARTICLE_OT_weight_set); WM_operatortype_append(PARTICLE_OT_delete); WM_operatortype_append(PARTICLE_OT_mirror); - WM_operatortype_append(PARTICLE_OT_brush_set); WM_operatortype_append(PARTICLE_OT_brush_edit); WM_operatortype_append(PARTICLE_OT_brush_radial_control); @@ -112,6 +112,8 @@ static void keymap_particle(wmKeyConfig *keyconf) 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_menu(keymap, "VIEW3D_MT_particle_specials", WKEY, KM_PRESS, 0, 0); + + WM_keymap_add_item(keymap, "PARTICLE_OT_weight_set", KKEY, KM_PRESS, KM_SHIFT, 0); ED_object_generic_keymap(keyconf, keymap, 1); } diff --git a/source/blender/editors/render/render_intern.h b/source/blender/editors/render/render_intern.h index 7b4c0194c5d..846edd67736 100644 --- a/source/blender/editors/render/render_intern.h +++ b/source/blender/editors/render/render_intern.h @@ -43,6 +43,9 @@ void MATERIAL_OT_new(struct wmOperatorType *ot); void TEXTURE_OT_new(struct wmOperatorType *ot); void WORLD_OT_new(struct wmOperatorType *ot); +void MATERIAL_OT_copy(struct wmOperatorType *ot); +void MATERIAL_OT_paste(struct wmOperatorType *ot); + void SCENE_OT_render_layer_add(struct wmOperatorType *ot); void SCENE_OT_render_layer_remove(struct wmOperatorType *ot); diff --git a/source/blender/editors/render/render_ops.c b/source/blender/editors/render/render_ops.c index 3e1643fab7b..0672709d364 100644 --- a/source/blender/editors/render/render_ops.c +++ b/source/blender/editors/render/render_ops.c @@ -52,6 +52,9 @@ void ED_operatortypes_render(void) WM_operatortype_append(MATERIAL_OT_new); WM_operatortype_append(TEXTURE_OT_new); WM_operatortype_append(WORLD_OT_new); + + WM_operatortype_append(MATERIAL_OT_copy); + WM_operatortype_append(MATERIAL_OT_paste); WM_operatortype_append(SCENE_OT_render_layer_add); WM_operatortype_append(SCENE_OT_render_layer_remove); diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index 74e1cca5579..1f1a0ff859d 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -483,10 +483,7 @@ static int ed_preview_draw_rect(ScrArea *sa, Scene *sce, ID *id, int split, int newrect->xmax= MAX2(newrect->xmax, rect->xmin + rres.rectx + offx); newrect->ymax= MAX2(newrect->ymax, rect->ymin + rres.recty); - glPushMatrix(); - glTranslatef(offx, 0, 0); - glaDrawPixelsSafe_to32(rect->xmin, rect->ymin, rres.rectx, rres.recty, rres.rectx, rres.rectf, gamma_correct); - glPopMatrix(); + glaDrawPixelsSafe_to32(rect->xmin+offx, rect->ymin, rres.rectx, rres.recty, rres.rectx, rres.rectf, gamma_correct); RE_ReleaseResultImage(re); return 1; @@ -717,7 +714,7 @@ void BIF_view3d_previewrender(Scene *scene, ScrArea *sa) rdata.layers.first= rdata.layers.last= NULL; rdata.renderer= R_INTERN; - RE_InitState(re, NULL, &rdata, sa->winx, sa->winy, &ri->disprect); + RE_InitState(re, NULL, &rdata, NULL, sa->winx, sa->winy, &ri->disprect); if(orth) RE_SetOrtho(re, &viewplane, clipsta, clipend); @@ -923,7 +920,7 @@ static void shader_preview_render(ShaderPreview *sp, ID *id, int split, int firs else sizex= sp->sizex; /* allocates or re-uses render result */ - RE_InitState(re, NULL, &sce->r, sizex, sp->sizey, NULL); + RE_InitState(re, NULL, &sce->r, NULL, sizex, sp->sizey, NULL); /* callbacs are cleared on GetRender() */ if(sp->pr_method==PR_BUTS_RENDER) { diff --git a/source/blender/editors/render/render_shading.c b/source/blender/editors/render/render_shading.c index 4be35a4a2c4..4874879a31e 100644 --- a/source/blender/editors/render/render_shading.c +++ b/source/blender/editors/render/render_shading.c @@ -758,3 +758,62 @@ void TEXTURE_OT_slot_move(wmOperatorType *ot) RNA_def_enum(ot->srna, "type", slot_move, 0, "Type", ""); } + + + +/* material copy/paste */ +static int copy_material_exec(bContext *C, wmOperator *op) +{ + Material *ma= CTX_data_pointer_get_type(C, "material", &RNA_Material).data; + + if(ma==NULL) + return OPERATOR_CANCELLED; + + copy_matcopybuf(ma); + + WM_event_add_notifier(C, NC_MATERIAL, ma); + + return OPERATOR_FINISHED; +} + +void MATERIAL_OT_copy(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Copy Material"; + ot->idname= "MATERIAL_OT_copy"; + ot->description="Copy the material settings and nodes."; + + /* api callbacks */ + ot->exec= copy_material_exec; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + +static int paste_material_exec(bContext *C, wmOperator *op) +{ + Material *ma= CTX_data_pointer_get_type(C, "material", &RNA_Material).data; + + if(ma==NULL) + return OPERATOR_CANCELLED; + + paste_matcopybuf(ma); + + WM_event_add_notifier(C, NC_MATERIAL|ND_SHADING_DRAW, ma); + + return OPERATOR_FINISHED; +} + +void MATERIAL_OT_paste(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Paste Material"; + ot->idname= "MATERIAL_OT_paste"; + ot->description="Copy the material settings and nodes."; + + /* api callbacks */ + ot->exec= paste_material_exec; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} diff --git a/source/blender/editors/screen/CMakeLists.txt b/source/blender/editors/screen/CMakeLists.txt index ad7770e12fa..75811735d25 100644 --- a/source/blender/editors/screen/CMakeLists.txt +++ b/source/blender/editors/screen/CMakeLists.txt @@ -70,10 +70,9 @@ IF(WIN32) SET(INC ${INC} ${PTHREADS_INC}) ENDIF(WIN32) -# TODO buildinfo -IF(BF_BUILDINFO) +IF(WITH_BUILDINFO) ADD_DEFINITIONS(-DNAN_BUILDINFO) -ENDIF(BF_BUILDINFO) +ENDIF(WITH_BUILDINFO) BLENDERLIB_NOLIST(bf_editors "${SRC}" "${INC}") diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index c494afac79e..93f6542f9cb 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -121,10 +121,12 @@ void ED_region_do_listen(ARegion *ar, wmNotifier *note) case NC_WINDOW: ED_region_tag_redraw(ar); break; +#ifndef WM_FAST_DRAW case NC_SCREEN: if(note->action==NA_EDITED) ED_region_tag_redraw(ar); /* pass on */ +#endif default: if(ar->type && ar->type->listener) ar->type->listener(ar, note); @@ -512,9 +514,9 @@ static void region_azone_icon(ScrArea *sa, AZone *az, ARegion *ar) } else if(az->edge=='b') { az->x1= ar->winrct.xmin + AZONEPAD_ICON; - az->y1= ar->winrct.ymin - AZONEPAD_ICON; + az->y1= ar->winrct.ymin - 2*AZONEPAD_ICON; az->x2= ar->winrct.xmin + 2*AZONEPAD_ICON; - az->y2= ar->winrct.ymin - 2*AZONEPAD_ICON; + az->y2= ar->winrct.ymin - AZONEPAD_ICON; } else if(az->edge=='l') { az->x1= ar->winrct.xmin - 2*AZONEPAD_ICON; @@ -622,8 +624,8 @@ static void region_rect_recursive(ScrArea *sa, ARegion *ar, rcti *remainder, int if(ar->next==NULL && alignment!=RGN_ALIGN_QSPLIT) alignment= RGN_ALIGN_NONE; - prefsizex= ar->type->minsizex; - prefsizey= ar->type->minsizey; + prefsizex= ar->sizex?ar->sizex:ar->type->prefsizex; + prefsizey= ar->sizey?ar->sizey:ar->type->prefsizey; /* hidden is user flag */ if(ar->flag & RGN_FLAG_HIDDEN); @@ -726,7 +728,8 @@ static void region_rect_recursive(ScrArea *sa, ARegion *ar, rcti *remainder, int if(count!=4) { /* let's stop adding regions */ BLI_init_rcti(remainder, 0, 0, 0, 0); - printf("region quadsplit failed\n"); + if (G.f & G_DEBUG) + printf("region quadsplit failed\n"); } else quad= 1; } @@ -1083,7 +1086,10 @@ void ED_area_newspace(bContext *C, ScrArea *sa, int type) /* tell WM to refresh, cursor types etc */ WM_event_add_mousemove(C); - + + /*send space change notifyer*/ + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_CHANGED, sa); + ED_area_tag_redraw(sa); ED_area_tag_refresh(sa); } @@ -1105,6 +1111,9 @@ void ED_area_prevspace(bContext *C, ScrArea *sa) ED_area_newspace(C, sa, SPACE_INFO); } ED_area_tag_redraw(sa); + + /*send space change notifyer*/ + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_CHANGED, sa); } static char *editortype_pup(void) @@ -1150,6 +1159,9 @@ static void spacefunc(struct bContext *C, void *arg1, void *arg2) { ED_area_newspace(C, CTX_wm_area(C), CTX_wm_area(C)->butspacetype); ED_area_tag_redraw(CTX_wm_area(C)); + + /*send space change notifyer*/ + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_CHANGED, CTX_wm_area(C)); } /* returns offset for next button in header */ @@ -1218,11 +1230,11 @@ void ED_region_panels(const bContext *C, ARegion *ar, int vertical, char *contex if(vertical) { w= v2d->cur.xmax - v2d->cur.xmin; - em= (ar->type->minsizex)? 10: 20; + em= (ar->type->prefsizex)? 10: 20; } else { w= UI_PANEL_WIDTH; - em= (ar->type->minsizex)? 10: 20; + em= (ar->type->prefsizex)? 10: 20; } x= 0; @@ -1316,7 +1328,11 @@ void ED_region_panels(const bContext *C, ARegion *ar, int vertical, char *contex } /* clear */ - UI_GetThemeColor3fv(TH_BACK, col); + if (ar->type->regionid == RGN_TYPE_PREVIEW) + UI_GetThemeColor3fv(TH_PREVIEW_BACK, col); + else + UI_GetThemeColor3fv(TH_BACK, col); + glClearColor(col[0], col[1], col[2], 0.0); glClear(GL_COLOR_BUFFER_BIT); diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index f0003669a12..048ade764d5 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -468,6 +468,7 @@ static void screen_copy(bScreen *to, bScreen *from) sa->spacedata.first= sa->spacedata.last= NULL; sa->regionbase.first= sa->regionbase.last= NULL; sa->actionzones.first= sa->actionzones.last= NULL; + sa->handlers.first= sa->handlers.last= NULL; area_copy_data(sa, saf, 0); } @@ -1125,7 +1126,13 @@ void ED_screen_exit(bContext *C, wmWindow *window, bScreen *screen) screen->winid= 0; /* before deleting the temp screen or we get invalid access */ - CTX_wm_window_set(C, prevwin); + if (prevwin->screen->full != SCREENTEMP) { + /* use previous window if possible */ + CTX_wm_window_set(C, prevwin); + } else { + /* none otherwise */ + CTX_wm_window_set(C, NULL); + } /* if temp screen, delete it */ if(screen->full == SCREENTEMP) { @@ -1271,7 +1278,13 @@ void ED_screen_set(bContext *C, bScreen *sc) if (oldscreen != sc) { wmTimer *wt= oldscreen->animtimer; - + ScrArea *sa; + + /* remove handlers referencing areas in old screen */ + for(sa = oldscreen->areabase.first; sa; sa = sa->next) { + WM_event_remove_area_handler(&win->modalhandlers, sa); + } + /* we put timer to sleep, so screen_exit has to think there's no timer */ oldscreen->animtimer= NULL; if(wt) @@ -1461,7 +1474,8 @@ ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa) for(old= sc->areabase.first; old; old= old->next) if(old->full) break; if(old==NULL) { - printf("something wrong in areafullscreen\n"); + if (G.f & G_DEBUG) + printf("something wrong in areafullscreen\n"); return NULL; } // old feature described below (ton) diff --git a/source/blender/editors/screen/screen_intern.h b/source/blender/editors/screen/screen_intern.h index 6278ea8db88..d7d94a9ec62 100644 --- a/source/blender/editors/screen/screen_intern.h +++ b/source/blender/editors/screen/screen_intern.h @@ -60,6 +60,9 @@ void ed_screen_context(const bContext *C, const char *member, bContextDataResult void SCREEN_OT_screenshot(struct wmOperatorType *ot); void SCREEN_OT_screencast(struct wmOperatorType *ot); +/* partial updates, much faster then drawing everything, ton is away so allow easy undo'ing - campbell */ +#define WM_FAST_DRAW + #endif /* ED_SCREEN_INTERN_H */ diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 29d202e8631..209535b1350 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -26,6 +26,7 @@ #include <math.h> #include <string.h> +#include <stddef.h> #include <GL/glew.h> @@ -639,6 +640,11 @@ static int area_swap_modal(bContext *C, wmOperator *op, wmEvent *event) area_swap_exit(C, op); +#ifdef WM_FAST_DRAW + ED_area_tag_redraw(sad->sa1); + ED_area_tag_redraw(sad->sa2); +#endif + WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); return OPERATOR_FINISHED; @@ -707,6 +713,10 @@ static int area_dupli_invoke(bContext *C, wmOperator *op, wmEvent *event) /* copy area to new screen */ area_copy_data((ScrArea *)newsc->areabase.first, sa, 0); +#ifdef WM_FAST_DRAW + ED_area_tag_redraw((ScrArea *)newsc->areabase.first); +#endif + /* screen, areas init */ WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); @@ -853,8 +863,16 @@ 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); +#ifdef WM_FAST_DRAW + { + ScrArea *sa; + for(sa= sc->areabase.first; sa; sa= sa->next) + if(sa->v1->flag || sa->v2->flag || sa->v3->flag || sa->v4->flag) + ED_area_tag_redraw(sa); + } + +#endif + WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); /* redraw everything */ } static void area_move_apply(bContext *C, wmOperator *op) @@ -1115,7 +1133,11 @@ static int area_split_apply(bContext *C, wmOperator *op) if(dir=='h') sd->origval= sd->nedge->v1->vec.y; else sd->origval= sd->nedge->v1->vec.x; - + +#ifdef WM_FAST_DRAW + ED_area_tag_redraw(sd->sarea); + ED_area_tag_redraw(sd->narea); +#endif WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); return 1; @@ -1127,6 +1149,12 @@ static int area_split_apply(bContext *C, wmOperator *op) static void area_split_exit(bContext *C, wmOperator *op) { if (op->customdata) { +#ifdef WM_FAST_DRAW + sAreaSplitData *sd= (sAreaSplitData *)op->customdata; + if(sd->sarea) ED_area_tag_redraw(sd->sarea); + if(sd->narea) ED_area_tag_redraw(sd->narea); +#endif + MEM_freeN(op->customdata); op->customdata = NULL; } @@ -1249,8 +1277,6 @@ static int area_split_modal(bContext *C, wmOperator *op, wmEvent *event) fac= (dir == 'v') ? event->x-sd->origmin : event->y-sd->origmin; RNA_float_set(op->ptr, "factor", fac / (float)sd->origsize); - - WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); break; case LEFTMOUSE: @@ -1348,6 +1374,7 @@ static int region_scale_invoke(bContext *C, wmOperator *op, wmEvent *event) if(az->ar) { RegionMoveData *rmd= MEM_callocN(sizeof(RegionMoveData), "RegionMoveData"); + int maxsize; op->customdata= rmd; @@ -1358,12 +1385,27 @@ static int region_scale_invoke(bContext *C, wmOperator *op, wmEvent *event) rmd->origx= event->x; rmd->origy= event->y; rmd->maxsize = area_max_regionsize(rmd->sa, rmd->ar, rmd->edge); + + /* if not set we do now, otherwise it uses type */ + if(rmd->ar->sizex==0) + rmd->ar->sizex= rmd->ar->type->prefsizex; + if(rmd->ar->sizey==0) + rmd->ar->sizey= rmd->ar->type->prefsizey; + + /* now copy to regionmovedata */ if(rmd->edge=='l' || rmd->edge=='r') { - rmd->origval= rmd->ar->type->minsizex; + rmd->origval= rmd->ar->sizex; } else { - rmd->origval= rmd->ar->type->minsizey; + rmd->origval= rmd->ar->sizey; } - CLAMP(rmd->maxsize, 0, 1000); + + /* limit headers to standard height for now */ + if (rmd->ar->regiontype == RGN_TYPE_HEADER) + maxsize = rmd->ar->type->prefsizey; + else + maxsize = 1000; + + CLAMP(rmd->maxsize, 0, maxsize); /* add temp handler */ WM_event_add_modal_handler(C, op); @@ -1387,11 +1429,11 @@ static int region_scale_modal(bContext *C, wmOperator *op, wmEvent *event) delta= event->x - rmd->origx; if(rmd->edge=='l') delta= -delta; - rmd->ar->type->minsizex= rmd->origval + delta; - CLAMP(rmd->ar->type->minsizex, 0, rmd->maxsize); + rmd->ar->sizex= rmd->origval + delta; + CLAMP(rmd->ar->sizex, 0, rmd->maxsize); - if(rmd->ar->type->minsizex < 24) { - rmd->ar->type->minsizex= rmd->origval; + if(rmd->ar->sizex < 24) { + rmd->ar->sizex= rmd->origval; if(!(rmd->ar->flag & RGN_FLAG_HIDDEN)) ED_region_toggle_hidden(C, rmd->ar); } @@ -1402,18 +1444,20 @@ static int region_scale_modal(bContext *C, wmOperator *op, wmEvent *event) delta= event->y - rmd->origy; if(rmd->edge=='b') delta= -delta; - rmd->ar->type->minsizey= rmd->origval + delta; - CLAMP(rmd->ar->type->minsizey, 0, rmd->maxsize); + rmd->ar->sizey= rmd->origval + delta; + CLAMP(rmd->ar->sizey, 0, rmd->maxsize); - if(rmd->ar->type->minsizey < 24) { - rmd->ar->type->minsizey= rmd->origval; + if(rmd->ar->sizey < 24) { + rmd->ar->sizey= rmd->origval; if(!(rmd->ar->flag & RGN_FLAG_HIDDEN)) ED_region_toggle_hidden(C, rmd->ar); } else if(rmd->ar->flag & RGN_FLAG_HIDDEN) ED_region_toggle_hidden(C, rmd->ar); } - +#ifdef WM_FAST_DRAW + ED_area_tag_redraw(rmd->sa); +#endif WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); break; @@ -1424,6 +1468,9 @@ static int region_scale_modal(bContext *C, wmOperator *op, wmEvent *event) if(ABS(event->x - rmd->origx) < 2 && ABS(event->y - rmd->origy) < 2) { if(rmd->ar->flag & RGN_FLAG_HIDDEN) { ED_region_toggle_hidden(C, rmd->ar); +#ifdef WM_FAST_DRAW + ED_area_tag_redraw(rmd->sa); +#endif WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); } } @@ -1558,7 +1605,7 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op) if (ak) CFRA= (int)ak->cfra; else - BKE_report(op->reports, RPT_ERROR, "No more keyframes to jump to in this direction"); + BKE_report(op->reports, RPT_INFO, "No more keyframes to jump to in this direction"); /* free temp stuff */ BLI_dlrbTree_free(&keys); @@ -1906,6 +1953,10 @@ static int area_join_modal(bContext *C, wmOperator *op, wmEvent *event) break; case LEFTMOUSE: if(event->val==KM_RELEASE) { +#ifdef WM_FAST_DRAW + ED_area_tag_redraw(jd->sa1); + ED_area_tag_redraw(jd->sa2); +#endif area_join_apply(C, op); WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); area_join_exit(C, op); @@ -2088,6 +2139,9 @@ static int region_quadview_exec(bContext *C, wmOperator *op) MEM_freeN(ar); } } +#ifdef WM_FAST_DRAW + ED_area_tag_redraw(sa); +#endif WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); } else if(ar->next) @@ -2124,6 +2178,9 @@ static int region_quadview_exec(bContext *C, wmOperator *op) rv3d->view= RV3D_VIEW_CAMERA; rv3d->persp= RV3D_CAMOB; } +#ifdef WM_FAST_DRAW + ED_area_tag_redraw(sa); +#endif WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); } @@ -2166,6 +2223,9 @@ static int region_flip_exec(bContext *C, wmOperator *op) else if(ar->alignment==RGN_ALIGN_RIGHT) ar->alignment= RGN_ALIGN_LEFT; +#ifdef WM_FAST_DRAW + ED_area_tag_redraw(CTX_wm_area(C)); +#endif WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); return OPERATOR_FINISHED; @@ -2219,8 +2279,11 @@ static int header_flip_exec(bContext *C, wmOperator *op) else if(ar->alignment==RGN_ALIGN_RIGHT) ar->alignment= RGN_ALIGN_LEFT; +#ifdef WM_FAST_DRAW + ED_area_tag_redraw(CTX_wm_area(C)); +#endif + WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); - printf("executed header region flip\n"); return OPERATOR_FINISHED; } @@ -2381,7 +2444,7 @@ static int screen_animation_step(bContext *C, wmOperator *op, wmEvent *event) if (sad->flag & ANIMPLAY_FLAG_REVERSE) { /* jump back to end? */ - if (scene->r.psfra) { + if (PRVRANGEON) { if (scene->r.cfra < scene->r.psfra) { scene->r.cfra= scene->r.pefra; sad->flag |= ANIMPLAY_FLAG_JUMPED; @@ -2396,7 +2459,7 @@ static int screen_animation_step(bContext *C, wmOperator *op, wmEvent *event) } else { /* jump back to start? */ - if (scene->r.psfra) { + if (PRVRANGEON) { if (scene->r.cfra > scene->r.pefra) { scene->r.cfra= scene->r.psfra; sad->flag |= ANIMPLAY_FLAG_JUMPED; @@ -2726,6 +2789,7 @@ static void screen_set_image_output(bContext *C, int mx, int my) Scene *scene= CTX_data_scene(C); ScrArea *sa= NULL; SpaceImage *sima; + int area_was_image=0; if(scene->r.displaymode==R_OUTPUT_WINDOW) { rcti rect; @@ -2750,6 +2814,9 @@ static void screen_set_image_output(bContext *C, int mx, int my) sa= CTX_wm_area(C); } else if(scene->r.displaymode==R_OUTPUT_SCREEN) { + if (CTX_wm_area(C)->spacetype == SPACE_IMAGE) + area_was_image = 1; + /* this function returns with changed context */ ED_screen_full_newspace(C, CTX_wm_area(C), SPACE_IMAGE); sa= CTX_wm_area(C); @@ -2788,14 +2855,24 @@ 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 we're rendering to full screen, set appropriate hints on image editor + * so it can restore properly on pressing esc */ if(sa->full) { - sima->flag |= SI_FULLWINDOW|SI_PREVSPACE; + sima->flag |= SI_FULLWINDOW; + + /* Tell the image editor to revert to previous space in space list on close + * _only_ if it wasn't already an image editor when the render was invoked */ + if (area_was_image == 0) + sima->flag |= SI_PREVSPACE; + else { + /* Leave it alone so the image editor will just go back from + * full screen to the original tiled setup */ + ; + } - // ed_screen_fullarea(C, win, sa); } - // } - + } /* executes blocking render */ @@ -2812,7 +2889,7 @@ static int screen_render_exec(bContext *C, wmOperator *op) if(RNA_boolean_get(op->ptr, "animation")) RE_BlenderAnim(re, scene, scene->r.sfra, scene->r.efra, scene->r.frame_step, op->reports); else - RE_BlenderFrame(re, scene, scene->r.cfra); + RE_BlenderFrame(re, scene, NULL, scene->r.cfra); // no redraw needed, we leave state as we entered it ED_update_for_newframe(C, 1); @@ -2826,6 +2903,7 @@ typedef struct RenderJob { Scene *scene; Render *re; wmWindow *win; + SceneRenderLayer *srl; int anim; Image *image; ImageUser iuser; @@ -2883,7 +2961,8 @@ static void make_renderinfo_string(RenderStats *rs, Scene *scene, char *str) /* very weak... but 512 characters is quite safe */ if(spos >= str+IMA_RW_MAXTEXT) - printf("WARNING! renderwin text beyond limit \n"); + if (G.f & G_DEBUG) + printf("WARNING! renderwin text beyond limit \n"); } @@ -2960,6 +3039,9 @@ static void image_buffer_rect_update(Scene *scene, RenderResult *rr, ImBuf *ibuf } if(rectf==NULL) return; + if(ibuf->rect==NULL) + imb_addrectImBuf(ibuf); + rectf+= 4*(rr->rectx*ymin + xmin); rectc= (char *)(ibuf->rect + ibuf->x*rymin + rxmin); @@ -3038,7 +3120,7 @@ static void render_startjob(void *rjv, short *stop, short *do_update) if(rj->anim) 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); + RE_BlenderFrame(rj->re, rj->scene, rj->srl, rj->scene->r.cfra); } /* called by render, check job 'stop' value or the global */ @@ -3074,6 +3156,7 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event) { /* new render clears all callbacks */ Scene *scene= CTX_data_scene(C); + SceneRenderLayer *srl=NULL; Render *re; wmJob *steve; RenderJob *rj; @@ -3102,10 +3185,29 @@ 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); + /* single layer re-render */ + if(RNA_property_is_set(op->ptr, "layer")) { + SceneRenderLayer *rl; + Scene *scn; + char scene_name[19], rl_name[RE_MAXNAME]; + + RNA_string_get(op->ptr, "layer", rl_name); + RNA_string_get(op->ptr, "scene", scene_name); + + scn = (Scene *)BLI_findstring(&CTX_data_main(C)->scene, scene_name, offsetof(ID, name) + 2); + rl = (SceneRenderLayer *)BLI_findstring(&scene->r.layers, rl_name, offsetof(SceneRenderLayer, name)); + + if (scn && rl) { + scene = scn; + srl = rl; + } + } + /* job custom data */ rj= MEM_callocN(sizeof(RenderJob), "render job"); rj->scene= scene; rj->win= CTX_wm_window(C); + rj->srl = srl; rj->anim= RNA_boolean_get(op->ptr, "animation"); rj->iuser.scene= scene; rj->iuser.ok= 1; @@ -3167,6 +3269,8 @@ static void SCREEN_OT_render(wmOperatorType *ot) ot->poll= ED_operator_screenactive; RNA_def_boolean(ot->srna, "animation", 0, "Animation", ""); + RNA_def_string(ot->srna, "layer", "", RE_MAXNAME, "Render Layer", "Single render layer to re-render"); + RNA_def_string(ot->srna, "scene", "", 19, "Scene", "Re-render single layer in this scene"); } /* ****************************** opengl render *************************** */ @@ -3189,7 +3293,7 @@ typedef struct OGLRender { bMovieHandle *mh; int cfrao, nfra; - wmTimer *timer; + wmTimer *timer; /* use to check if running modal or not (invoke'd or exec'd)*/ } OGLRender; static void screen_opengl_render_apply(OGLRender *oglrender) @@ -3289,11 +3393,11 @@ static int screen_opengl_render_init(bContext *C, wmOperator *op) /* create render and render result */ oglrender->re= RE_NewRender(scene->id.name); - RE_InitState(oglrender->re, NULL, &scene->r, sizex, sizey, NULL); + RE_InitState(oglrender->re, NULL, &scene->r, NULL, sizex, sizey, NULL); rr= RE_AcquireResultWrite(oglrender->re); if(rr->rectf==NULL) - rr->rectf= MEM_mallocN(sizeof(float)*4*sizex*sizex, "32 bits rects"); + rr->rectf= MEM_mallocN(sizeof(float)*4*sizex*sizey, "32 bits rects"); RE_ReleaseResult(oglrender->re); return 1; @@ -3307,8 +3411,8 @@ static void screen_opengl_render_end(bContext *C, OGLRender *oglrender) if(BKE_imtype_is_movie(scene->r.imtype)) oglrender->mh->end_movie(); } - - if(oglrender->timer) { + + if(oglrender->timer) { /* exec will not have a timer */ scene->r.cfra= oglrender->cfrao; scene_update_for_newframe(scene, scene->lay); @@ -3330,7 +3434,32 @@ static int screen_opengl_render_cancel(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } -static int screen_opengl_render_modal(bContext *C, wmOperator *op, wmEvent *event) +/* share between invoke and exec */ +static int screen_opengl_render_anim_initialize(bContext *C, wmOperator *op) +{ + /* 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)) { + if(!oglrender->mh->start_movie(scene, &scene->r, oglrender->sizex, oglrender->sizey, oglrender->reports)) { + screen_opengl_render_end(C, oglrender); + return 0; + } + } + + oglrender->cfrao= scene->r.cfra; + oglrender->nfra= SFRA; + scene->r.cfra= SFRA; + + return 1; +} +static int screen_opengl_render_anim_step(bContext *C, wmOperator *op) { OGLRender *oglrender= op->customdata; Scene *scene= oglrender->scene; @@ -3339,32 +3468,18 @@ 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 */ - screen_opengl_render_end(C, op->customdata); - return OPERATOR_FINISHED; - case TIMER: - /* render frame? */ - if(oglrender->timer == event->customdata) - break; - default: - /* 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) { @@ -3375,7 +3490,7 @@ static int screen_opengl_render_modal(bContext *C, wmOperator *op, wmEvent *even if(camera) oglrender->v3d->camera= scene->camera= camera; } - + /* render into offscreen buffer */ screen_opengl_render_apply(oglrender); @@ -3385,15 +3500,23 @@ static int screen_opengl_render_modal(bContext *C, wmOperator *op, wmEvent *even if(ibuf) { if(BKE_imtype_is_movie(scene->r.imtype)) { ok= oglrender->mh->append_movie(&scene->r, CFRA, (int*)ibuf->rect, oglrender->sizex, oglrender->sizey, oglrender->reports); - if(ok) + if(ok) { printf("Append frame %d", scene->r.cfra); + BKE_reportf(op->reports, RPT_INFO, "Appended frame: %d", scene->r.cfra); + } } else { - BKE_makepicstring(scene, name, scene->r.pic, scene->r.cfra, scene->r.imtype); + BKE_makepicstring(name, scene->r.pic, scene->r.cfra, scene->r.imtype, scene->r.scemode & R_EXTENSION); ok= BKE_write_ibuf(scene, ibuf, name, scene->r.imtype, scene->r.subimtype, scene->r.quality); - if(ok==0) printf("write error: cannot save %s\n", name); - else printf("saved: %s", name); + if(ok==0) { + printf("Write error: cannot save %s\n", name); + BKE_reportf(op->reports, RPT_ERROR, "Write error: cannot save %s", name); + } + else { + printf("Saved: %s", name); + BKE_reportf(op->reports, RPT_INFO, "Saved file: %s", name); + } } } @@ -3406,11 +3529,42 @@ static int screen_opengl_render_modal(bContext *C, wmOperator *op, wmEvent *even 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 0; + } + + return 1; +} + + +static int screen_opengl_render_modal(bContext *C, wmOperator *op, wmEvent *event) +{ + OGLRender *oglrender= op->customdata; + + int ret; + + switch(event->type) { + case ESCKEY: + /* cancel */ + screen_opengl_render_end(C, op->customdata); + return OPERATOR_FINISHED; + case TIMER: + /* render frame? */ + if(oglrender->timer == event->customdata) + break; + default: + /* nothing to do */ + return OPERATOR_RUNNING_MODAL; + } + + ret= screen_opengl_render_anim_step(C, op); + + WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, oglrender->scene); + + /* stop at the end or on error */ + if(ret == 0) { return OPERATOR_FINISHED; } @@ -3433,35 +3587,53 @@ static int screen_opengl_render_invoke(bContext *C, wmOperator *op, wmEvent *eve 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)) { - 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; - + OGLRender *oglrender= op->customdata; + + if(!screen_opengl_render_anim_initialize(C, op)) + return OPERATOR_CANCELLED; + + screen_set_image_output(C, event->x, event->y); + 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; } } +/* executes blocking render */ +static int screen_opengl_render_exec(bContext *C, wmOperator *op) +{ + int anim= RNA_boolean_get(op->ptr, "animation"); + + if(!screen_opengl_render_init(C, op)) + return OPERATOR_CANCELLED; + + if(!anim) { /* same as invoke */ + /* render image */ + screen_opengl_render_apply(op->customdata); + screen_opengl_render_end(C, op->customdata); + + return OPERATOR_FINISHED; + } + else { + int ret= 1; + + if(!screen_opengl_render_anim_initialize(C, op)) + return OPERATOR_CANCELLED; + + while(ret) { + ret= screen_opengl_render_anim_step(C, op); + } + } + + // no redraw needed, we leave state as we entered it +// ED_update_for_newframe(C, 1); + WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, CTX_data_scene(C)); + + return OPERATOR_FINISHED; +} + static void SCREEN_OT_opengl_render(wmOperatorType *ot) { /* identifiers */ @@ -3471,6 +3643,7 @@ static void SCREEN_OT_opengl_render(wmOperatorType *ot) /* api callbacks */ ot->invoke= screen_opengl_render_invoke; + ot->exec= screen_opengl_render_exec; /* blocking */ ot->modal= screen_opengl_render_modal; ot->cancel= screen_opengl_render_cancel; @@ -3740,7 +3913,7 @@ void SCENE_OT_new(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "type", type_items, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", type_items, 0, "Type", ""); } /********************* delete scene operator *********************/ @@ -3749,7 +3922,7 @@ 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); + WM_event_add_notifier(C, NC_SCENE|NA_REMOVED, scene); return OPERATOR_FINISHED; } @@ -3865,7 +4038,7 @@ void ED_keymap_screen(wmKeyConfig *keyconf) 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_area_swap", EVT_ACTIONZONE_AREA, 0, KM_CTRL, 0); WM_keymap_verify_item(keymap, "SCREEN_OT_region_scale", EVT_ACTIONZONE_REGION, 0, 0, 0); /* area move after action zones */ WM_keymap_verify_item(keymap, "SCREEN_OT_area_move", LEFTMOUSE, KM_PRESS, 0, 0); diff --git a/source/blender/editors/screen/screendump.c b/source/blender/editors/screen/screendump.c index 088be194fe8..aea23d3e404 100644 --- a/source/blender/editors/screen/screendump.c +++ b/source/blender/editors/screen/screendump.c @@ -38,6 +38,7 @@ #include "DNA_scene_types.h" #include "DNA_screen_types.h" #include "DNA_space_types.h" +#include "DNA_userdef_types.h" #include "BKE_context.h" #include "BKE_global.h" @@ -84,7 +85,7 @@ static int screenshot_exec(bContext *C, wmOperator *op) /* BKE_add_image_extension() checks for if extension was already set */ if(scene->r.scemode & R_EXTENSION) if(strlen(path)<FILE_MAXDIR+FILE_MAXFILE-5) - BKE_add_image_extension(scene, path, scene->r.imtype); + BKE_add_image_extension(path, scene->r.imtype); ibuf= IMB_allocImBuf(scd->dumpsx, scd->dumpsy, 24, 0, 0); ibuf->rect= scd->dumprect; @@ -174,7 +175,7 @@ void SCREEN_OT_screenshot(wmOperatorType *ot) ot->flag= 0; - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_SAVE); RNA_def_boolean(ot->srna, "full", 1, "Full Screen", ""); } @@ -226,7 +227,7 @@ static void screenshot_startjob(void *sjv, short *stop, short *do_update) int cfra= 1; /* we need this as local variables for renderdata */ - rd.frs_sec= 10; + rd.frs_sec= U.scrcastfps; rd.frs_sec_base= 1.0f; if(BKE_imtype_is_movie(rd.imtype)) { @@ -248,9 +249,10 @@ static void screenshot_startjob(void *sjv, short *stop, short *do_update) if(sj->dumprect) { if(mh) { - if(mh->append_movie(&rd, cfra, (int *)sj->dumprect, sj->dumpsx, sj->dumpsy, &sj->reports)) - printf("Append frame %d\n", cfra); - else + if(mh->append_movie(&rd, cfra, (int *)sj->dumprect, sj->dumpsx, sj->dumpsy, &sj->reports)) { + BKE_reportf(&sj->reports, RPT_INFO, "Appended frame: %d", cfra); + printf("Appended frame %d\n", cfra); + } else break; } else { @@ -258,16 +260,20 @@ static void screenshot_startjob(void *sjv, short *stop, short *do_update) char name[FILE_MAXDIR+FILE_MAXFILE]; int ok; - BKE_makepicstring(sj->scene, name, rd.pic, cfra, rd.imtype); + BKE_makepicstring(name, rd.pic, cfra, rd.imtype, rd.scemode & R_EXTENSION); ibuf->rect= sj->dumprect; ok= BKE_write_ibuf(sj->scene, ibuf, name, rd.imtype, rd.subimtype, rd.quality); if(ok==0) { printf("Write error: cannot save %s\n", name); + BKE_reportf(&sj->reports, RPT_INFO, "Write error: cannot save %s\n", name); break; } - else printf("Saved: %s\n", name); + else { + printf("Saved file: %s\n", name); + BKE_reportf(&sj->reports, RPT_INFO, "Saved file: %s", name); + } /* imbuf knows which rects are not part of ibuf */ IMB_freeImBuf(ibuf); @@ -279,14 +285,16 @@ static void screenshot_startjob(void *sjv, short *stop, short *do_update) *do_update= 1; cfra++; + } else - PIL_sleep_ms(50); + PIL_sleep_ms(U.scrcastwait); } if(mh) mh->end_movie(); - printf("screencast job stopped\n"); + + BKE_report(&sj->reports, RPT_INFO, "Screencast job stopped"); } static int screencast_exec(bContext *C, wmOperator *op) diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index 4c903f66def..c5dc6f74f58 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -1001,8 +1001,7 @@ static void uv_image_outset(float (*orig_uv)[2], float (*outset_uv)[2], const fl float puv[4][2]; /* pixelspace uv's */ float no1[2], no2[2], no3[2], no4[2]; /* normals */ float dir1[2], dir2[2], dir3[2], dir4[2]; - float ibuf_x_inv = 1.0f / (float)ibuf_x; - float ibuf_y_inv = 1.0f / (float)ibuf_y; + float ibuf_inv[2] = {1.0f / (float)ibuf_x, 1.0f / (float)ibuf_y}; /* make UV's in pixel space so we can */ puv[0][0] = orig_uv[0][0] * ibuf_x; @@ -1035,17 +1034,20 @@ static void uv_image_outset(float (*orig_uv)[2], float (*outset_uv)[2], const fl sub_v2_v2v2(dir3, puv[0], puv[2]); normalize_v2(dir3); } - + + /* TODO - angle_normalized_v2v2(...) * (M_PI/180.0f) + * This is incorrect. Its already given radians but without it wont work. + * need to look into a fix - campbell */ if (is_quad) { - a1 = shell_angle_to_dist(angle_normalized_v2v2(dir4, dir1)); - a2 = shell_angle_to_dist(angle_normalized_v2v2(dir1, dir2)); - a3 = shell_angle_to_dist(angle_normalized_v2v2(dir2, dir3)); - a4 = shell_angle_to_dist(angle_normalized_v2v2(dir3, dir4)); + a1 = shell_angle_to_dist(angle_normalized_v2v2(dir4, dir1) * (M_PI/180.0f)); + a2 = shell_angle_to_dist(angle_normalized_v2v2(dir1, dir2) * (M_PI/180.0f)); + a3 = shell_angle_to_dist(angle_normalized_v2v2(dir2, dir3) * (M_PI/180.0f)); + a4 = shell_angle_to_dist(angle_normalized_v2v2(dir3, dir4) * (M_PI/180.0f)); } else { - a1 = shell_angle_to_dist(angle_normalized_v2v2(dir3, dir1)); - a2 = shell_angle_to_dist(angle_normalized_v2v2(dir1, dir2)); - a3 = shell_angle_to_dist(angle_normalized_v2v2(dir2, dir3)); + a1 = shell_angle_to_dist(angle_normalized_v2v2(dir3, dir1) * (M_PI/180.0f)); + a2 = shell_angle_to_dist(angle_normalized_v2v2(dir1, dir2) * (M_PI/180.0f)); + a3 = shell_angle_to_dist(angle_normalized_v2v2(dir2, dir3) * (M_PI/180.0f)); } if (is_quad) { @@ -1065,17 +1067,10 @@ static void uv_image_outset(float (*orig_uv)[2], float (*outset_uv)[2], const fl add_v2_v2v2(outset_uv[1], puv[1], no2); add_v2_v2v2(outset_uv[2], puv[2], no3); add_v2_v2v2(outset_uv[3], puv[3], no4); - outset_uv[0][0] *= ibuf_x_inv; - outset_uv[0][1] *= ibuf_y_inv; - - outset_uv[1][0] *= ibuf_x_inv; - outset_uv[1][1] *= ibuf_y_inv; - - outset_uv[2][0] *= ibuf_x_inv; - outset_uv[2][1] *= ibuf_y_inv; - - outset_uv[3][0] *= ibuf_x_inv; - outset_uv[3][1] *= ibuf_y_inv; + mul_v2_v2(outset_uv[0], ibuf_inv); + mul_v2_v2(outset_uv[1], ibuf_inv); + mul_v2_v2(outset_uv[2], ibuf_inv); + mul_v2_v2(outset_uv[3], ibuf_inv); } else { sub_v2_v2v2(no1, dir3, dir1); @@ -1090,14 +1085,10 @@ static void uv_image_outset(float (*orig_uv)[2], float (*outset_uv)[2], const fl add_v2_v2v2(outset_uv[0], puv[0], no1); add_v2_v2v2(outset_uv[1], puv[1], no2); add_v2_v2v2(outset_uv[2], puv[2], no3); - outset_uv[0][0] *= ibuf_x_inv; - outset_uv[0][1] *= ibuf_y_inv; - - outset_uv[1][0] *= ibuf_x_inv; - outset_uv[1][1] *= ibuf_y_inv; - - outset_uv[2][0] *= ibuf_x_inv; - outset_uv[2][1] *= ibuf_y_inv; + + mul_v2_v2(outset_uv[0], ibuf_inv); + mul_v2_v2(outset_uv[1], ibuf_inv); + mul_v2_v2(outset_uv[2], ibuf_inv); } } @@ -2849,7 +2840,17 @@ static void project_paint_begin(ProjPaintState *ps) } } - + /* when using subsurf or multires, mface arrays are thrown away, we need to keep a copy */ + if(ps->dm->type != DM_TYPE_CDDM) { + ps->dm_mvert= MEM_dupallocN(ps->dm_mvert); + ps->dm_mface= MEM_dupallocN(ps->dm_mface); + /* looks like these are ok for now.*/ + /* + ps->dm_mtface= MEM_dupallocN(ps->dm_mtface); + ps->dm_mtface_clone= MEM_dupallocN(ps->dm_mtface_clone); + ps->dm_mtface_stencil= MEM_dupallocN(ps->dm_mtface_stencil); + */ + } ps->viewDir[0] = 0.0f; ps->viewDir[1] = 0.0f; @@ -3275,6 +3276,18 @@ static void project_paint_end(ProjPaintState *ps) BLI_memarena_free(ps->arena_mt[a]); } + /* copy for subsurf/multires, so throw away */ + if(ps->dm->type != DM_TYPE_CDDM) { + if(ps->dm_mvert) MEM_freeN(ps->dm_mvert); + if(ps->dm_mface) MEM_freeN(ps->dm_mface); + /* looks like these dont need copying */ + /* + if(ps->dm_mtface) MEM_freeN(ps->dm_mtface); + if(ps->dm_mtface_clone) MEM_freeN(ps->dm_mtface_clone); + if(ps->dm_mtface_stencil) MEM_freeN(ps->dm_mtface_stencil); + */ + } + if(ps->dm_release) ps->dm->release(ps->dm); } @@ -4090,10 +4103,17 @@ static int imapaint_canvas_set(ImagePaintState *s, Image *ima) s->clonecanvas= ibuf; + /* temporarily add float rect for cloning */ if(s->canvas->rect_float && !s->clonecanvas->rect_float) { - /* temporarily add float rect for cloning */ + int profile = IB_PROFILE_NONE; + + /* Don't want to color manage, but don't disturb existing profiles */ + SWAP(int, s->clonecanvas->profile, profile); + IMB_float_from_rect(s->clonecanvas); s->clonefreefloat= 1; + + SWAP(int, s->clonecanvas->profile, profile); } else if(!s->canvas->rect_float && !s->clonecanvas->rect) IMB_rect_from_float(s->clonecanvas); @@ -4253,12 +4273,10 @@ static int image_paint_3d_poll(bContext *C) static int image_paint_2d_clone_poll(bContext *C) { - Scene *scene= CTX_data_scene(C); - ToolSettings *settings= scene->toolsettings; Brush *brush= image_paint_brush(C); if(!CTX_wm_region_view3d(C) && image_paint_poll(C)) - if(brush && (settings->imapaint.tool == PAINT_TOOL_CLONE)) + if(brush && (brush->imagepaint_tool == PAINT_TOOL_CLONE)) if(brush->clone.image) return 1; @@ -4366,7 +4384,7 @@ static int texture_paint_init(bContext *C, wmOperator *op) return 0; pop->s.brush = brush; - pop->s.tool = settings->imapaint.tool; + pop->s.tool = brush->imagepaint_tool; if(pop->mode == PAINT_MODE_3D && (pop->s.tool == PAINT_TOOL_CLONE)) pop->s.tool = PAINT_TOOL_DRAW; pop->s.blend = pop->s.brush->blend; diff --git a/source/blender/editors/sculpt_paint/paint_intern.h b/source/blender/editors/sculpt_paint/paint_intern.h index 108be50267d..bcbc0666782 100644 --- a/source/blender/editors/sculpt_paint/paint_intern.h +++ b/source/blender/editors/sculpt_paint/paint_intern.h @@ -52,6 +52,8 @@ typedef void (*StrokeDone)(struct bContext *C, struct PaintStroke *stroke); struct PaintStroke *paint_stroke_new(struct bContext *C, StrokeGetLocation get_location, StrokeTestStart test_start, StrokeUpdateStep update_step, StrokeDone done); +void paint_stroke_free(struct PaintStroke *stroke); + int paint_stroke_modal(struct bContext *C, struct wmOperator *op, struct wmEvent *event); int paint_stroke_exec(struct bContext *C, struct wmOperator *op); struct ViewContext *paint_stroke_view_context(struct PaintStroke *stroke); @@ -62,6 +64,7 @@ void paint_cursor_start(struct bContext *C, int (*poll)(struct bContext *C)); /* paint_vertex.c */ int weight_paint_poll(struct bContext *C); +int weight_paint_mode_poll(struct bContext *C); int vertex_paint_poll(struct bContext *C); int vertex_paint_mode_poll(struct bContext *C); @@ -72,6 +75,7 @@ void PAINT_OT_weight_paint_toggle(struct wmOperatorType *ot); void PAINT_OT_weight_paint_radial_control(struct wmOperatorType *ot); void PAINT_OT_weight_paint(struct wmOperatorType *ot); void PAINT_OT_weight_set(struct wmOperatorType *ot); +void PAINT_OT_weight_from_bones(struct wmOperatorType *ot); void PAINT_OT_vertex_paint_radial_control(struct wmOperatorType *ot); void PAINT_OT_vertex_paint_toggle(struct wmOperatorType *ot); diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index 715a41e6431..c00b6b56072 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -127,6 +127,7 @@ void ED_operatortypes_paint(void) WM_operatortype_append(PAINT_OT_weight_paint_radial_control); WM_operatortype_append(PAINT_OT_weight_paint); WM_operatortype_append(PAINT_OT_weight_set); + WM_operatortype_append(PAINT_OT_weight_from_bones); /* vertex */ WM_operatortype_append(PAINT_OT_vertex_paint_radial_control); @@ -263,7 +264,7 @@ void ED_keymap_paint(wmKeyConfig *keyconf) /* Vertex Paint mode */ keymap= WM_keymap_find(keyconf, "Vertex Paint", 0, 0); - keymap->poll= vertex_paint_poll; + keymap->poll= vertex_paint_mode_poll; RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_vertex_paint_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE); RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_vertex_paint_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH); @@ -276,9 +277,12 @@ void ED_keymap_paint(wmKeyConfig *keyconf) ed_keymap_paint_brush_switch(keymap, "tool_settings.vertex_paint.active_brush_index"); ed_keymap_paint_brush_size(keymap, "tool_settings.vertex_paint.brush.size"); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", MKEY, KM_PRESS, 0, 0); /* mask toggle */ + RNA_string_set(kmi->ptr, "path", "vertex_paint_object.data.use_paint_mask"); + /* Weight Paint mode */ keymap= WM_keymap_find(keyconf, "Weight Paint", 0, 0); - keymap->poll= weight_paint_poll; + keymap->poll= weight_paint_mode_poll; RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_weight_paint_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE); RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_weight_paint_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH); @@ -291,6 +295,11 @@ void ED_keymap_paint(wmKeyConfig *keyconf) ed_keymap_paint_brush_switch(keymap, "tool_settings.weight_paint.active_brush_index"); ed_keymap_paint_brush_size(keymap, "tool_settings.weight_paint.brush.size"); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", MKEY, KM_PRESS, 0, 0); /* mask toggle */ + RNA_string_set(kmi->ptr, "path", "weight_paint_object.data.use_paint_mask"); + + WM_keymap_verify_item(keymap, "PAINT_OT_weight_from_bones", WKEY, KM_PRESS, 0, 0); + /* Image/Texture Paint mode */ keymap= WM_keymap_find(keyconf, "Image Paint", 0, 0); keymap->poll= image_texture_paint_poll; @@ -305,6 +314,9 @@ void ED_keymap_paint(wmKeyConfig *keyconf) ed_keymap_paint_brush_switch(keymap, "tool_settings.image_paint.active_brush_index"); ed_keymap_paint_brush_size(keymap, "tool_settings.image_paint.brush.size"); + kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", MKEY, KM_PRESS, 0, 0); /* mask toggle */ + RNA_string_set(kmi->ptr, "path", "texture_paint_object.data.use_paint_mask"); + /* face-mask mode */ keymap= WM_keymap_find(keyconf, "Face Mask", 0, 0); keymap->poll= facemask_paint_poll; diff --git a/source/blender/editors/sculpt_paint/paint_stroke.c b/source/blender/editors/sculpt_paint/paint_stroke.c index e26b1945e7f..89c5443bf99 100644 --- a/source/blender/editors/sculpt_paint/paint_stroke.c +++ b/source/blender/editors/sculpt_paint/paint_stroke.c @@ -237,6 +237,11 @@ PaintStroke *paint_stroke_new(bContext *C, return stroke; } +void paint_stroke_free(PaintStroke *stroke) +{ + MEM_freeN(stroke); +} + int paint_stroke_modal(bContext *C, wmOperator *op, wmEvent *event) { PaintStroke *stroke = op->customdata; diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c index cddfad19fa7..b818de56aa3 100644 --- a/source/blender/editors/sculpt_paint/paint_vertex.c +++ b/source/blender/editors/sculpt_paint/paint_vertex.c @@ -66,6 +66,7 @@ #include "RNA_define.h" #include "BKE_armature.h" +#include "BKE_action.h" #include "BKE_brush.h" #include "BKE_DerivedMesh.h" #include "BKE_cloth.h" @@ -87,6 +88,7 @@ #include "BIF_gl.h" #include "BIF_glutil.h" +#include "ED_armature.h" #include "ED_mesh.h" #include "ED_object.h" #include "ED_screen.h" @@ -95,7 +97,7 @@ #include "paint_intern.h" - /* vp->mode */ +/* brush->vertexpaint_tool */ #define VP_MIX 0 #define VP_ADD 1 #define VP_SUB 2 @@ -134,6 +136,13 @@ int vertex_paint_poll(bContext *C) return 0; } +int weight_paint_mode_poll(bContext *C) +{ + Object *ob = CTX_data_active_object(C); + + return ob && ob->mode == OB_MODE_WEIGHT_PAINT; +} + int weight_paint_poll(bContext *C) { Object *ob = CTX_data_active_object(C); @@ -426,9 +435,9 @@ void wpaint_fill(VPaint *wp, Object *ob, float paintweight) faceverts[3]= mface->v4; for (i=0; i<3 || faceverts[i]; i++) { if(!((me->dvert+faceverts[i])->flag)) { - dw= ED_vgroup_weight_verify(me->dvert+faceverts[i], vgroup); + dw= defvert_verify_index(me->dvert+faceverts[i], vgroup); if(dw) { - uw= ED_vgroup_weight_verify(wp->wpaint_prev+faceverts[i], vgroup); + uw= defvert_verify_index(wp->wpaint_prev+faceverts[i], vgroup); uw->weight= dw->weight; /* set the undo weight */ dw->weight= paintweight; @@ -437,11 +446,11 @@ void wpaint_fill(VPaint *wp, Object *ob, float paintweight) if(j>=0) { /* copy, not paint again */ if(vgroup_mirror != -1) { - dw= ED_vgroup_weight_verify(me->dvert+j, vgroup_mirror); - uw= ED_vgroup_weight_verify(wp->wpaint_prev+j, vgroup_mirror); + dw= defvert_verify_index(me->dvert+j, vgroup_mirror); + uw= defvert_verify_index(wp->wpaint_prev+j, vgroup_mirror); } else { - dw= ED_vgroup_weight_verify(me->dvert+j, vgroup); - uw= ED_vgroup_weight_verify(wp->wpaint_prev+j, vgroup); + dw= defvert_verify_index(me->dvert+j, vgroup); + uw= defvert_verify_index(wp->wpaint_prev+j, vgroup); } uw->weight= dw->weight; /* set the undo weight */ dw->weight= paintweight; @@ -661,12 +670,12 @@ static void vpaint_blend(VPaint *vp, unsigned int *col, unsigned int *colorig, u { Brush *brush = paint_brush(&vp->paint); - if(vp->mode==VP_MIX || vp->mode==VP_BLUR) *col= mcol_blend( *col, paintcol, alpha); - else if(vp->mode==VP_ADD) *col= mcol_add( *col, paintcol, alpha); - else if(vp->mode==VP_SUB) *col= mcol_sub( *col, paintcol, alpha); - else if(vp->mode==VP_MUL) *col= mcol_mul( *col, paintcol, alpha); - else if(vp->mode==VP_LIGHTEN) *col= mcol_lighten( *col, paintcol, alpha); - else if(vp->mode==VP_DARKEN) *col= mcol_darken( *col, paintcol, alpha); + if(brush->vertexpaint_tool==VP_MIX || brush->vertexpaint_tool==VP_BLUR) *col= mcol_blend( *col, paintcol, alpha); + else if(brush->vertexpaint_tool==VP_ADD) *col= mcol_add( *col, paintcol, alpha); + else if(brush->vertexpaint_tool==VP_SUB) *col= mcol_sub( *col, paintcol, alpha); + else if(brush->vertexpaint_tool==VP_MUL) *col= mcol_mul( *col, paintcol, alpha); + else if(brush->vertexpaint_tool==VP_LIGHTEN) *col= mcol_lighten( *col, paintcol, alpha); + else if(brush->vertexpaint_tool==VP_DARKEN) *col= mcol_darken( *col, paintcol, alpha); /* if no spray, clip color adding with colorig & orig alpha */ if((vp->flag & VP_SPRAY)==0) { @@ -675,12 +684,12 @@ static void vpaint_blend(VPaint *vp, unsigned int *col, unsigned int *colorig, u alpha= (int)(255.0*brush->alpha); - if(vp->mode==VP_MIX || vp->mode==VP_BLUR) testcol= mcol_blend( *colorig, paintcol, alpha); - else if(vp->mode==VP_ADD) testcol= mcol_add( *colorig, paintcol, alpha); - else if(vp->mode==VP_SUB) testcol= mcol_sub( *colorig, paintcol, alpha); - else if(vp->mode==VP_MUL) testcol= mcol_mul( *colorig, paintcol, alpha); - else if(vp->mode==VP_LIGHTEN) testcol= mcol_lighten( *colorig, paintcol, alpha); - else if(vp->mode==VP_DARKEN) testcol= mcol_darken( *colorig, paintcol, alpha); + if(brush->vertexpaint_tool==VP_MIX || brush->vertexpaint_tool==VP_BLUR) testcol= mcol_blend( *colorig, paintcol, alpha); + else if(brush->vertexpaint_tool==VP_ADD) testcol= mcol_add( *colorig, paintcol, alpha); + else if(brush->vertexpaint_tool==VP_SUB) testcol= mcol_sub( *colorig, paintcol, alpha); + else if(brush->vertexpaint_tool==VP_MUL) testcol= mcol_mul( *colorig, paintcol, alpha); + else if(brush->vertexpaint_tool==VP_LIGHTEN) testcol= mcol_lighten( *colorig, paintcol, alpha); + else if(brush->vertexpaint_tool==VP_DARKEN) testcol= mcol_darken( *colorig, paintcol, alpha); cp= (char *)col; ct= (char *)&testcol; @@ -784,38 +793,38 @@ static float calc_vp_alpha_dl(VPaint *vp, ViewContext *vc, float vpimat[][3], fl static void wpaint_blend(VPaint *wp, MDeformWeight *dw, MDeformWeight *uw, float alpha, float paintval, int flip) { Brush *brush = paint_brush(&wp->paint); - int mode = wp->mode; + int tool = brush->vertexpaint_tool; if(dw==NULL || uw==NULL) return; if (flip) { - switch(mode) { + switch(tool) { case VP_MIX: paintval = 1.f - paintval; break; case VP_ADD: - mode= VP_SUB; break; + tool= VP_SUB; break; case VP_SUB: - mode= VP_ADD; break; + tool= VP_ADD; break; case VP_LIGHTEN: - mode= VP_DARKEN; break; + tool= VP_DARKEN; break; case VP_DARKEN: - mode= VP_LIGHTEN; break; + tool= VP_LIGHTEN; break; } } - if(mode==VP_MIX || mode==VP_BLUR) + if(tool==VP_MIX || tool==VP_BLUR) dw->weight = paintval*alpha + dw->weight*(1.0-alpha); - else if(mode==VP_ADD) + else if(tool==VP_ADD) dw->weight += paintval*alpha; - else if(mode==VP_SUB) + else if(tool==VP_SUB) dw->weight -= paintval*alpha; - else if(mode==VP_MUL) + else if(tool==VP_MUL) /* first mul, then blend the fac */ dw->weight = ((1.0-alpha) + alpha*paintval)*dw->weight; - else if(mode==VP_LIGHTEN) { + else if(tool==VP_LIGHTEN) { if (dw->weight < paintval) dw->weight = paintval*alpha + dw->weight*(1.0-alpha); - } else if(mode==VP_DARKEN) { + } else if(tool==VP_DARKEN) { if (dw->weight > paintval) dw->weight = paintval*alpha + dw->weight*(1.0-alpha); } @@ -826,21 +835,21 @@ static void wpaint_blend(VPaint *wp, MDeformWeight *dw, MDeformWeight *uw, float float testw=0.0f; alpha= brush->alpha; - if(mode==VP_MIX || mode==VP_BLUR) + if(tool==VP_MIX || tool==VP_BLUR) testw = paintval*alpha + uw->weight*(1.0-alpha); - else if(mode==VP_ADD) + else if(tool==VP_ADD) testw = uw->weight + paintval*alpha; - else if(mode==VP_SUB) + else if(tool==VP_SUB) testw = uw->weight - paintval*alpha; - else if(mode==VP_MUL) + else if(tool==VP_MUL) /* first mul, then blend the fac */ testw = ((1.0-alpha) + alpha*paintval)*uw->weight; - else if(mode==VP_LIGHTEN) { + else if(tool==VP_LIGHTEN) { if (uw->weight < paintval) testw = paintval*alpha + uw->weight*(1.0-alpha); else testw = uw->weight; - } else if(mode==VP_DARKEN) { + } else if(tool==VP_DARKEN) { if (uw->weight > paintval) testw = paintval*alpha + uw->weight*(1.0-alpha); else @@ -980,20 +989,20 @@ void sample_wpaint(Scene *scene, ARegion *ar, View3D *v3d, int mode) fac= MIN4(w1, w2, w3, w4); if(w1==fac) { - dw= ED_vgroup_weight_get(me->dvert+mface->v1, ob->actdef-1); + dw= defvert_find_index(me->dvert+mface->v1, ob->actdef-1); if(dw) ts->vgroup_weight= dw->weight; else ts->vgroup_weight= 0.0f; } else if(w2==fac) { - dw= ED_vgroup_weight_get(me->dvert+mface->v2, ob->actdef-1); + dw= defvert_find_index(me->dvert+mface->v2, ob->actdef-1); if(dw) ts->vgroup_weight= dw->weight; else ts->vgroup_weight= 0.0f; } else if(w3==fac) { - dw= ED_vgroup_weight_get(me->dvert+mface->v3, ob->actdef-1); + dw= defvert_find_index(me->dvert+mface->v3, ob->actdef-1); if(dw) ts->vgroup_weight= dw->weight; else ts->vgroup_weight= 0.0f; } else if(w4==fac) { if(mface->v4) { - dw= ED_vgroup_weight_get(me->dvert+mface->v4, ob->actdef-1); + dw= defvert_find_index(me->dvert+mface->v4, ob->actdef-1); if(dw) ts->vgroup_weight= dw->weight; else ts->vgroup_weight= 0.0f; } } @@ -1049,12 +1058,12 @@ static void do_weight_paint_vertex(VPaint *wp, Object *ob, int index, int vgroup= ob->actdef-1; if(wp->flag & VP_ONLYVGROUP) { - dw= ED_vgroup_weight_get(me->dvert+index, vgroup); - uw= ED_vgroup_weight_get(wp->wpaint_prev+index, vgroup); + dw= defvert_find_index(me->dvert+index, vgroup); + uw= defvert_find_index(wp->wpaint_prev+index, vgroup); } else { - dw= ED_vgroup_weight_verify(me->dvert+index, vgroup); - uw= ED_vgroup_weight_verify(wp->wpaint_prev+index, vgroup); + dw= defvert_verify_index(me->dvert+index, vgroup); + uw= defvert_verify_index(wp->wpaint_prev+index, vgroup); } if(dw==NULL || uw==NULL) return; @@ -1067,9 +1076,9 @@ static void do_weight_paint_vertex(VPaint *wp, Object *ob, int index, if(j>=0) { /* copy, not paint again */ if(vgroup_mirror != -1) - uw= ED_vgroup_weight_verify(me->dvert+j, vgroup_mirror); + uw= defvert_verify_index(me->dvert+j, vgroup_mirror); else - uw= ED_vgroup_weight_verify(me->dvert+j, vgroup); + uw= defvert_verify_index(me->dvert+j, vgroup); uw->weight= dw->weight; @@ -1380,22 +1389,23 @@ static int wpaint_stroke_test_start(bContext *C, wmOperator *op, wmEvent *event) if(ob->actdef<=0) { Object *modob; if((modob = modifiers_isDeformedByArmature(ob))) { - bPoseChannel *pchan; - for(pchan= modob->pose->chanbase.first; pchan; pchan= pchan->next) - if(pchan->bone->flag & SELECT) - break; - if(pchan) { - bDeformGroup *dg= get_named_vertexgroup(ob, pchan->name); - if(dg==NULL) - dg= ED_vgroup_add_name(ob, pchan->name); /* sets actdef */ - else - ob->actdef= get_defgroup_num(ob, dg); + Bone *actbone= ((bArmature *)modob->data)->act_bone; + if(actbone) { + bPoseChannel *pchan= get_pose_channel(modob->pose, actbone->name); + + if(pchan) { + bDeformGroup *dg= defgroup_find_name(ob, pchan->name); + if(dg==NULL) + dg= ED_vgroup_add_name(ob, pchan->name); /* sets actdef */ + else + ob->actdef= 1 + defgroup_find_index(ob, dg); + } } } } if(ob->defbase.first==NULL) { ED_vgroup_add(ob); - } + } // if(ob->lay & v3d->lay); else error("Active object is not in this layer"); @@ -1513,7 +1523,7 @@ static void wpaint_stroke_update_step(bContext *C, struct PaintStroke *stroke, P /* make sure each vertex gets treated only once */ /* and calculate filter weight */ totw= 0; - if(wp->mode==VP_BLUR) + if(brush->vertexpaint_tool==VP_BLUR) paintweight= 0.0f; else paintweight= ts->vgroup_weight; @@ -1527,11 +1537,11 @@ static void wpaint_stroke_update_step(bContext *C, struct PaintStroke *stroke, P (me->dvert+mface->v3)->flag= 1; if(mface->v4) (me->dvert+mface->v4)->flag= 1; - if(wp->mode==VP_BLUR) { - MDeformWeight *dw, *(*dw_func)(MDeformVert *, int) = ED_vgroup_weight_verify; + if(brush->vertexpaint_tool==VP_BLUR) { + MDeformWeight *dw, *(*dw_func)(MDeformVert *, int) = defvert_verify_index; if(wp->flag & VP_ONLYVGROUP) - dw_func= ED_vgroup_weight_get; + dw_func= defvert_find_index; dw= dw_func(me->dvert+mface->v1, ob->actdef-1); if(dw) {paintweight+= dw->weight; totw++;} @@ -1547,7 +1557,7 @@ static void wpaint_stroke_update_step(bContext *C, struct PaintStroke *stroke, P } } - if(wp->mode==VP_BLUR) + if(brush->vertexpaint_tool==VP_BLUR) paintweight/= (float)totw; for(index=0; index<totindex; index++) { @@ -1700,8 +1710,6 @@ void PAINT_OT_weight_set(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - - RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Extend selection instead of deselecting everything first."); } /* ************ set / clear vertex paint mode ********** */ @@ -1844,6 +1852,7 @@ static int vpaint_stroke_test_start(bContext *C, struct wmOperator *op, wmEvent static void vpaint_paint_face(VPaint *vp, VPaintData *vpd, Object *ob, int index, float mval[2], float pressure, int flip) { ViewContext *vc = &vpd->vc; + Brush *brush = paint_brush(&vp->paint); Mesh *me = get_mesh(ob); MFace *mface= ((MFace*)me->mface) + index; unsigned int *mcol= ((unsigned int*)me->mcol) + 4*index; @@ -1855,7 +1864,7 @@ static void vpaint_paint_face(VPaint *vp, VPaintData *vpd, Object *ob, int index ((me->editflag & ME_EDIT_PAINT_MASK) && !(mface->flag & ME_FACE_SEL))) return; - if(vp->mode==VP_BLUR) { + if(brush->vertexpaint_tool==VP_BLUR) { unsigned int fcol1= mcol_blend( mcol[0], mcol[1], 128); if(mface->v4) { unsigned int fcol2= mcol_blend( mcol[2], mcol[3], 128); @@ -1923,7 +1932,7 @@ static void vpaint_stroke_update_step(bContext *C, struct PaintStroke *stroke, P swap_m4m4(vc->rv3d->persmat, mat); /* was disabled because it is slow, but necessary for blur */ - if(vp->mode == VP_BLUR) + if(brush->vertexpaint_tool == VP_BLUR) do_shared_vertexcol(me); ED_region_tag_redraw(vc->ar); @@ -1979,3 +1988,51 @@ void PAINT_OT_vertex_paint(wmOperatorType *ot) RNA_def_collection_runtime(ot->srna, "stroke", &RNA_OperatorStrokeElement, "Stroke", ""); } +/* ********************** weight from bones operator ******************* */ + +static int weight_from_bones_poll(bContext *C) +{ + Object *ob= CTX_data_active_object(C); + + return (ob && (ob->mode & OB_MODE_WEIGHT_PAINT) && modifiers_isDeformedByArmature(ob)); +} + +static int weight_from_bones_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + Object *ob= CTX_data_active_object(C); + Object *armob= modifiers_isDeformedByArmature(ob); + Mesh *me= ob->data; + int type= RNA_enum_get(op->ptr, "type"); + + create_vgroups_from_armature(scene, ob, armob, type, (me->editflag & ME_EDIT_MIRROR_X)); + + DAG_id_flush_update(&me->id, OB_RECALC_DATA); + WM_event_add_notifier(C, NC_GEOM|ND_DATA, me); + + return OPERATOR_FINISHED; +} + +void PAINT_OT_weight_from_bones(wmOperatorType *ot) +{ + static EnumPropertyItem type_items[]= { + {ARM_GROUPS_AUTO, "AUTOMATIC", 0, "Automatic", "Automatic weights froms bones."}, + {ARM_GROUPS_ENVELOPE, "ENVELOPES", 0, "From Envelopes", "Weights from envelopes with user defined radius."}, + {0, NULL, 0, NULL, NULL}}; + + /* identifiers */ + ot->name= "Weight from Bones"; + ot->idname= "PAINT_OT_weight_from_bones"; + + /* api callbacks */ + ot->exec= weight_from_bones_exec; + ot->invoke= WM_menu_invoke; + ot->poll= weight_from_bones_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + ot->prop= RNA_def_enum(ot->srna, "type", type_items, 0, "Type", "Method to use for assigning weights."); +} + diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 11ce41c5ff8..16c7bffd938 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -1460,12 +1460,12 @@ static void sculpt_update_tex(Sculpt *sd, SculptSession *ss) } /* Checks whether full update mode (slower) needs to be used to work with modifiers */ -char sculpt_modifiers_active(Object *ob) +static int sculpt_modifiers_active(Scene *scene, Object *ob) { ModifierData *md; for(md= modifiers_getVirtualModifierList(ob); md; md= md->next) { - if(modifier_isEnabled(md, eModifierMode_Realtime)) + if(modifier_isEnabled(scene, md, eModifierMode_Realtime)) if(!ELEM(md->type, eModifierType_Multires, eModifierType_ShapeKey)) return 1; } @@ -1801,7 +1801,9 @@ static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, struct P static void sculpt_stroke_modifiers_check(bContext *C, SculptSession *ss) { - if(sculpt_modifiers_active(ss->ob)) { + Scene *scene= CTX_data_scene(C); + + if(sculpt_modifiers_active(scene, ss->ob)) { Sculpt *sd = CTX_data_tool_settings(C)->sculpt; Brush *brush = paint_brush(&sd->paint); @@ -1979,6 +1981,7 @@ static void sculpt_restore_mesh(Sculpt *sd, SculptSession *ss) static void sculpt_flush_update(bContext *C) { + Scene *scene = CTX_data_scene(C); Object *ob = CTX_data_active_object(C); SculptSession *ss = ob->sculpt; ARegion *ar = CTX_wm_region(C); @@ -1988,7 +1991,7 @@ static void sculpt_flush_update(bContext *C) if(mmd) multires_mark_as_modified(ob); - if(sculpt_modifiers_active(ob)) { + if(sculpt_modifiers_active(scene, ob)) { DAG_id_flush_update(&ob->id, OB_RECALC_DATA); ED_region_tag_redraw(ar); } @@ -2010,15 +2013,20 @@ static void sculpt_flush_update(bContext *C) } } -static int sculpt_stroke_test_start(bContext *C, struct wmOperator *op, wmEvent *event) +/* Returns whether the mouse/stylus is over the mesh (1) + or over the background (0) */ +static int over_mesh(bContext *C, struct wmOperator *op, float x, float y) { - float mouse[2] = {event->x, event->y}, location[3]; - int over_mesh; - - over_mesh = sculpt_stroke_get_location(C, op->customdata, location, mouse); + float mouse[2] = {x, y}, co[3]; + return (int)sculpt_stroke_get_location(C, op->customdata, co, mouse); +} + +static int sculpt_stroke_test_start(bContext *C, struct wmOperator *op, + wmEvent *event) +{ /* Don't start the stroke until mouse goes over the mesh */ - if(over_mesh) { + if(over_mesh(C, op, event->x, event->y)) { Object *ob = CTX_data_active_object(C); SculptSession *ss = ob->sculpt; Sculpt *sd = CTX_data_tool_settings(C)->sculpt; @@ -2076,14 +2084,27 @@ static void sculpt_stroke_done(bContext *C, struct PaintStroke *stroke) static int sculpt_brush_stroke_invoke(bContext *C, wmOperator *op, wmEvent *event) { + struct PaintStroke *stroke; + int ignore_background_click; + if(!sculpt_brush_stroke_init(C, op->reports)) return OPERATOR_CANCELLED; - op->customdata = paint_stroke_new(C, sculpt_stroke_get_location, - sculpt_stroke_test_start, - sculpt_stroke_update_step, - sculpt_stroke_done); + stroke = paint_stroke_new(C, sculpt_stroke_get_location, + sculpt_stroke_test_start, + sculpt_stroke_update_step, + sculpt_stroke_done); + + op->customdata = stroke; + /* For tablet rotation */ + ignore_background_click = RNA_boolean_get(op->ptr, + "ignore_background_click"); + if(ignore_background_click && !over_mesh(C, op, event->x, event->y)) { + paint_stroke_free(stroke); + return OPERATOR_PASS_THROUGH; + } + /* add modal handler */ WM_event_add_modal_handler(C, op); @@ -2144,6 +2165,10 @@ 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); + + RNA_def_boolean(ot->srna, "ignore_background_click", 0, + "Ignore Background Click", + "Clicks on the background don't start the stroke"); } /**** Reset the copy of the mesh that is being sculpted on (currently just for the layer brush) ****/ diff --git a/source/blender/editors/sculpt_paint/sculpt_intern.h b/source/blender/editors/sculpt_paint/sculpt_intern.h index 0e1c0510902..0fd2eee60bd 100644 --- a/source/blender/editors/sculpt_paint/sculpt_intern.h +++ b/source/blender/editors/sculpt_paint/sculpt_intern.h @@ -54,7 +54,6 @@ 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 *); -char sculpt_modifiers_active(struct Object *ob); void sculpt(Sculpt *sd); int sculpt_poll(struct bContext *C); diff --git a/source/blender/editors/sound/sound_ops.c b/source/blender/editors/sound/sound_ops.c index d48a322f562..d5de3f8101b 100644 --- a/source/blender/editors/sound/sound_ops.c +++ b/source/blender/editors/sound/sound_ops.c @@ -114,7 +114,7 @@ void SOUND_OT_open(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE|MOVIEFILE, FILE_SPECIAL); + WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPEN); RNA_def_boolean(ot->srna, "cache", FALSE, "Cache", "Cache the sound in memory."); } diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c index 687e7c53644..72ec45845c2 100644 --- a/source/blender/editors/space_action/action_edit.c +++ b/source/blender/editors/space_action/action_edit.c @@ -214,6 +214,7 @@ static int actkeys_previewrange_exec(bContext *C, wmOperator *op) /* set the range directly */ get_keyframe_extents(&ac, &min, &max); + scene->r.flag |= SCER_PRV_RANGE; scene->r.psfra= (int)floor(min + 0.5f); scene->r.pefra= (int)floor(max + 0.5f); @@ -513,7 +514,7 @@ void ACTION_OT_keyframe_insert (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* id-props */ - RNA_def_enum(ot->srna, "type", prop_actkeys_insertkey_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_actkeys_insertkey_types, 0, "Type", ""); } /* ******************** Duplicate Keyframes Operator ************************* */ @@ -872,7 +873,7 @@ void ACTION_OT_extrapolation_type (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* id-props */ - RNA_def_enum(ot->srna, "type", prop_actkeys_expo_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_actkeys_expo_types, 0, "Type", ""); } /* ******************** Set Interpolation-Type Operator *********************** */ @@ -943,7 +944,7 @@ void ACTION_OT_interpolation_type (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* id-props */ - RNA_def_enum(ot->srna, "type", beztriple_interpolation_mode_items, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", beztriple_interpolation_mode_items, 0, "Type", ""); } /* ******************** Set Handle-Type Operator *********************** */ @@ -1032,7 +1033,7 @@ void ACTION_OT_handle_type (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* id-props */ - RNA_def_enum(ot->srna, "type", beztriple_handle_type_items, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", beztriple_handle_type_items, 0, "Type", ""); } /* ******************** Set Keyframe-Type Operator *********************** */ @@ -1103,7 +1104,7 @@ void ACTION_OT_keyframe_type (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* id-props */ - RNA_def_enum(ot->srna, "type", beztriple_keyframe_type_items, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", beztriple_keyframe_type_items, 0, "Type", ""); } /* ************************************************************************** */ @@ -1133,7 +1134,6 @@ static int actkeys_framejump_exec(bContext *C, wmOperator *op) for (ale= anim_data.first; ale; ale= ale->next) { AnimData *adt= ANIM_nla_mapping_get(&ac, ale); - if (adt) { ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1); ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, bezt_calc_average, NULL); @@ -1224,6 +1224,7 @@ static void snap_action_keys(bAnimContext *ac, short mode) else ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, edit_cb, calchandles_fcurve); } + BLI_freelistN(&anim_data); } @@ -1269,7 +1270,7 @@ void ACTION_OT_snap (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* id-props */ - RNA_def_enum(ot->srna, "type", prop_actkeys_snap_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_actkeys_snap_types, 0, "Type", ""); } /* ******************** Mirror Keyframes Operator *********************** */ @@ -1277,7 +1278,6 @@ void ACTION_OT_snap (wmOperatorType *ot) /* defines for mirror keyframes tool */ EnumPropertyItem prop_actkeys_mirror_types[] = { {ACTKEYS_MIRROR_CFRA, "CFRA", 0, "By Times over Current frame", ""}, - {ACTKEYS_MIRROR_YAXIS, "YAXIS", 0, "By Times over Time=0", ""}, {ACTKEYS_MIRROR_XAXIS, "XAXIS", 0, "By Values over Value=0", ""}, {ACTKEYS_MIRROR_MARKER, "MARKER", 0, "By Times over First Selected Marker", ""}, {0, NULL, 0, NULL, NULL} @@ -1341,6 +1341,7 @@ static void mirror_action_keys(bAnimContext *ac, short mode) else ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, edit_cb, calchandles_fcurve); } + BLI_freelistN(&anim_data); } @@ -1386,7 +1387,7 @@ void ACTION_OT_mirror (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* id-props */ - RNA_def_enum(ot->srna, "type", prop_actkeys_mirror_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_actkeys_mirror_types, 0, "Type", ""); } /* ************************************************************************** */ diff --git a/source/blender/editors/space_action/action_select.c b/source/blender/editors/space_action/action_select.c index 8eeed6da100..be74da0718e 100644 --- a/source/blender/editors/space_action/action_select.c +++ b/source/blender/editors/space_action/action_select.c @@ -416,7 +416,7 @@ static void markers_selectkeys_between (bAnimContext *ac) for (ale= anim_data.first; ale; ale= ale->next) { AnimData *adt= ANIM_nla_mapping_get(ac, ale); - if (adt) { + if (adt) { ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1); ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, ok_cb, select_cb, NULL); ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 1, 1); @@ -633,7 +633,7 @@ static void actkeys_mselect_leftright (bAnimContext *ac, short leftright, short select_mode= SELECT_ADD; /* deselect all other channels and keyframes */ - ANIM_deselect_anim_channels(ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); + ANIM_deselect_anim_channels(ac, ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); deselect_action_keys(ac, 0, SELECT_SUBTRACT); } @@ -872,7 +872,7 @@ static void mouse_action_keys (bAnimContext *ac, int mval[2], short select_mode, /* highlight channel clicked on */ if (ELEM(ac->datatype, ANIMCONT_ACTION, ANIMCONT_DOPESHEET)) { /* deselect all other channels first */ - ANIM_deselect_anim_channels(ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); + ANIM_deselect_anim_channels(ac, ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); /* Highlight Action-Group or F-Curve? */ if (ale && ale->data) { @@ -891,7 +891,7 @@ static void mouse_action_keys (bAnimContext *ac, int mval[2], short select_mode, } } else if (ac->datatype == ANIMCONT_GPENCIL) { - ANIM_deselect_anim_channels(ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); + ANIM_deselect_anim_channels(ac, ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); /* Highlight gpencil layer */ //gpl->flag |= GP_LAYER_SELECT; diff --git a/source/blender/editors/space_action/space_action.c b/source/blender/editors/space_action/space_action.c index 57a39b3225e..f7902405589 100644 --- a/source/blender/editors/space_action/space_action.c +++ b/source/blender/editors/space_action/space_action.c @@ -103,7 +103,7 @@ static SpaceLink *action_new(const bContext *C) ar->regiontype= RGN_TYPE_WINDOW; ar->v2d.tot.xmin= -10.0f; - ar->v2d.tot.ymin= (float)(-sa->winy); + ar->v2d.tot.ymin= (float)(-sa->winy)/3.0f; ar->v2d.tot.xmax= (float)(sa->winx); ar->v2d.tot.ymax= 0.0f; @@ -113,7 +113,7 @@ static SpaceLink *action_new(const bContext *C) ar->v2d.min[1]= 0.0f; ar->v2d.max[0]= MAXFRAMEF; - ar->v2d.max[1]= 10000.0f; + ar->v2d.max[1]= FLT_MAX; ar->v2d.minzoom= 0.01f; ar->v2d.maxzoom= 50; @@ -137,7 +137,8 @@ static void action_free(SpaceLink *sl) /* spacetype; init callback */ static void action_init(struct wmWindowManager *wm, ScrArea *sa) { - + SpaceAction *saction = sa->spacedata.first; + saction->flag |= SACTION_TEMP_NEEDCHANSYNC; } static SpaceLink *action_duplicate(SpaceLink *sl) @@ -325,10 +326,12 @@ static void action_main_area_listener(ARegion *ar, wmNotifier *wmn) break; case NC_OBJECT: switch(wmn->data) { + case ND_TRANSFORM: + /* moving object shouldn't need to redraw action */ + break; case ND_BONE_ACTIVE: case ND_BONE_SELECT: case ND_KEYS: - case ND_TRANSFORM: ED_region_tag_redraw(ar); break; } @@ -385,15 +388,42 @@ static void action_listener(ScrArea *sa, wmNotifier *wmn) saction->flag |= SACTION_TEMP_NEEDCHANSYNC; ED_area_tag_refresh(sa); break; - + case ND_TRANSFORM: + /* moving object shouldn't need to redraw action */ + break; default: /* just redrawing the view will do */ ED_area_tag_redraw(sa); break; } break; case NC_SPACE: - if(wmn->data == ND_SPACE_DOPESHEET) - ED_area_tag_redraw(sa); + switch (wmn->data) { + case ND_SPACE_DOPESHEET: + ED_area_tag_redraw(sa); + break; + case ND_SPACE_CHANGED: + saction->flag |= SACTION_TEMP_NEEDCHANSYNC; + ED_area_tag_refresh(sa); + break; + } + break; + } +} + +static void action_header_area_listener(ARegion *ar, wmNotifier *wmn) +{ + /* context changes */ + switch(wmn->category) { + case NC_SCENE: + switch(wmn->data) { + case ND_OB_ACTIVE: + ED_region_tag_redraw(ar); + break; + } + break; + case NC_ID: + if(wmn->action == NA_RENAME) + ED_region_tag_redraw(ar); break; } } @@ -445,18 +475,19 @@ void ED_spacetype_action(void) /* regions: header */ art= MEM_callocN(sizeof(ARegionType), "spacetype action region"); art->regionid = RGN_TYPE_HEADER; - art->minsizey= HEADERY; + art->prefsizey= HEADERY; 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; + art->listener= action_header_area_listener; BLI_addhead(&st->regiontypes, art); /* regions: channels */ art= MEM_callocN(sizeof(ARegionType), "spacetype action region"); art->regionid = RGN_TYPE_CHANNELS; - art->minsizex= 200; + art->prefsizex= 200; art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; art->init= action_channel_area_init; diff --git a/source/blender/editors/space_api/spacetypes.c b/source/blender/editors/space_api/spacetypes.c index 90457c05fa7..492080eda52 100644 --- a/source/blender/editors/space_api/spacetypes.c +++ b/source/blender/editors/space_api/spacetypes.c @@ -42,6 +42,7 @@ #include "ED_anim_api.h" #include "ED_armature.h" #include "ED_curve.h" +#include "ED_fileselect.h" #include "ED_gpencil.h" #include "ED_markers.h" #include "ED_mesh.h" @@ -104,10 +105,12 @@ void ED_spacetypes_init(void) UI_view2d_operatortypes(); UI_buttons_operatortypes(); + /* register operators */ spacetypes = BKE_spacetypes_list(); - for(type=spacetypes->first; type; type=type->next) - type->operatortypes(); - + for(type=spacetypes->first; type; type=type->next) { + if(type->operatortypes) + type->operatortypes(); + } /* Macros's must go last since they reference other operators * maybe we'll need to have them go after python operators too? */ @@ -115,6 +118,15 @@ void ED_spacetypes_init(void) ED_operatormacros_mesh(); ED_operatormacros_node(); ED_operatormacros_object(); + ED_operatormacros_file(); + + /* register dropboxes (can use macros) */ + spacetypes = BKE_spacetypes_list(); + for(type=spacetypes->first; type; type=type->next) { + if(type->dropboxes) + type->dropboxes(); + } + } /* called in wm.c */ diff --git a/source/blender/editors/space_buttons/buttons_context.c b/source/blender/editors/space_buttons/buttons_context.c index c4bdd3a6c5b..fcfd8b907eb 100644 --- a/source/blender/editors/space_buttons/buttons_context.c +++ b/source/blender/editors/space_buttons/buttons_context.c @@ -35,6 +35,7 @@ #include "DNA_lamp_types.h" #include "DNA_material_types.h" #include "DNA_modifier_types.h" +#include "DNA_node_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" @@ -332,15 +333,16 @@ static int buttons_context_path_texture(const bContext *C, ButsContextPath *path World *wo; Tex *tex; PointerRNA *ptr= &path->ptr[path->len-1]; + int orig_len = path->len; /* if we already have a (pinned) texture, we're done */ if(RNA_struct_is_a(ptr->type, &RNA_Texture)) { return 1; } /* try brush */ - else if((path->flag & SB_BRUSH_TEX) && buttons_context_path_brush(C, path)) { + if((path->flag & SB_BRUSH_TEX) && buttons_context_path_brush(C, path)) { br= path->ptr[path->len-1].data; - + if(br) { tex= give_current_brush_texture(br); @@ -350,7 +352,7 @@ static int buttons_context_path_texture(const bContext *C, ButsContextPath *path } } /* try world */ - else if((path->flag & SB_WORLD_TEX) && buttons_context_path_world(path)) { + if((path->flag & SB_WORLD_TEX) && buttons_context_path_world(path)) { wo= path->ptr[path->len-1].data; if(wo && GS(wo->id.name)==ID_WO) { @@ -362,7 +364,7 @@ static int buttons_context_path_texture(const bContext *C, ButsContextPath *path } } /* try material */ - else if(buttons_context_path_material(path)) { + if(buttons_context_path_material(path)) { ma= path->ptr[path->len-1].data; if(ma) { @@ -374,7 +376,7 @@ static int buttons_context_path_texture(const bContext *C, ButsContextPath *path } } /* try lamp */ - else if(buttons_context_path_data(path, OB_LAMP)) { + if(buttons_context_path_data(path, OB_LAMP)) { la= path->ptr[path->len-1].data; if(la) { @@ -385,7 +387,19 @@ static int buttons_context_path_texture(const bContext *C, ButsContextPath *path return 1; } } - /* TODO: material nodes */ + /* try brushes again in case of no material, lamp, etc */ + path->len = orig_len; + if(buttons_context_path_brush(C, path)) { + br= path->ptr[path->len-1].data; + + if(br) { + tex= give_current_brush_texture(br); + + RNA_id_pointer_create(&tex->id, &path->ptr[path->len]); + path->len++; + return 1; + } + } /* no path to a texture possible */ return 0; @@ -460,6 +474,32 @@ static int buttons_context_path(const bContext *C, ButsContextPath *path, int ma return found; } +static int buttons_shading_context(const bContext *C, int mainb) +{ + Object *ob= CTX_data_active_object(C); + + if(ELEM3(mainb, BCONTEXT_MATERIAL, BCONTEXT_WORLD, BCONTEXT_TEXTURE)) + return 1; + if(mainb == BCONTEXT_DATA && ob && ELEM(ob->type, OB_LAMP, OB_CAMERA)) + return 1; + + return 0; +} + +static int buttons_shading_new_context(const bContext *C, int flag, int mainb) +{ + Object *ob= CTX_data_active_object(C); + + if(flag & (1 << BCONTEXT_MATERIAL)) + return BCONTEXT_MATERIAL; + else if(ob && ELEM(ob->type, OB_LAMP, OB_CAMERA) && (flag & (1 << BCONTEXT_DATA))) + return BCONTEXT_DATA; + else if(flag & (1 << BCONTEXT_WORLD)) + return BCONTEXT_WORLD; + + return BCONTEXT_RENDER; +} + void buttons_context_compute(const bContext *C, SpaceButs *sbuts) { ButsContextPath *path; @@ -497,7 +537,11 @@ void buttons_context_compute(const bContext *C, SpaceButs *sbuts) /* in case something becomes invalid, change */ if((flag & (1 << sbuts->mainb)) == 0) { - if(flag & BCONTEXT_OBJECT) { + if(sbuts->flag & SB_SHADING_CONTEXT) { + /* try to keep showing shading related buttons */ + sbuts->mainb= buttons_shading_new_context(C, flag, sbuts->mainb); + } + else if(flag & BCONTEXT_OBJECT) { sbuts->mainb= BCONTEXT_OBJECT; } else { @@ -519,6 +563,11 @@ void buttons_context_compute(const bContext *C, SpaceButs *sbuts) sbuts->mainb= BCONTEXT_SCENE; } + if(buttons_shading_context(C, sbuts->mainb)) + sbuts->flag |= SB_SHADING_CONTEXT; + else + sbuts->flag &= ~SB_SHADING_CONTEXT; + sbuts->pathflag= flag; } @@ -599,13 +648,29 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r return 1; } + else if(CTX_data_equals(member, "texture_node")) { + PointerRNA *ptr; + + if((ptr=get_pointer_type(path, &RNA_Material))) { + Material *ma= ptr->data; + + if(ma) { + bNode *node= give_current_material_texture_node(ma); + CTX_data_pointer_set(result, &ma->id, &RNA_Node, node); + } + } + + return 1; + } else if(CTX_data_equals(member, "texture_slot")) { PointerRNA *ptr; if((ptr=get_pointer_type(path, &RNA_Material))) { - Material *ma= ptr->data; /* should this be made a different option? */ - Material *ma_node= give_node_material(ma); - ma= ma_node?ma_node:ma; + Material *ma= ptr->data; + + /* if we have a node material, get slot from material in material node */ + if(ma && ma->use_nodes && ma->nodetree) + ma= give_node_material(ma); if(ma) CTX_data_pointer_set(result, &ma->id, &RNA_MaterialTextureSlot, ma->mtex[(int)ma->texact]); @@ -773,10 +838,10 @@ void buttons_context_draw(const bContext *C, uiLayout *layout) if(name) { if(!ELEM(sbuts->mainb, BCONTEXT_RENDER, BCONTEXT_SCENE) && ptr->type == &RNA_Scene) - uiItemL(row, "", icon); /* save some space */ + uiItemLDrag(row, ptr, "", icon); /* save some space */ else - uiItemL(row, name, icon); - + uiItemLDrag(row, ptr, name, icon); + if(name != namebuf) MEM_freeN(name); } diff --git a/source/blender/editors/space_buttons/buttons_ops.c b/source/blender/editors/space_buttons/buttons_ops.c index 634b3e36ea7..406ecd77136 100644 --- a/source/blender/editors/space_buttons/buttons_ops.c +++ b/source/blender/editors/space_buttons/buttons_ops.c @@ -148,6 +148,6 @@ void BUTTONS_OT_file_browse(wmOperatorType *ot) ot->cancel= file_browse_cancel; /* properties */ - WM_operator_properties_filesel(ot, 0, FILE_SPECIAL); + WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPEN); } diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c index 6677a064e11..15d352969f2 100644 --- a/source/blender/editors/space_buttons/space_buttons.c +++ b/source/blender/editors/space_buttons/space_buttons.c @@ -256,10 +256,17 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) switch(wmn->category) { case NC_SCENE: switch(wmn->data) { - case ND_FRAME: case ND_RENDER_OPTIONS: buttons_area_redraw(sa, BCONTEXT_RENDER); break; + case ND_FRAME: + buttons_area_redraw(sa, BCONTEXT_RENDER); + buttons_area_redraw(sa, BCONTEXT_MATERIAL); + buttons_area_redraw(sa, BCONTEXT_TEXTURE); + buttons_area_redraw(sa, BCONTEXT_WORLD); + buttons_area_redraw(sa, BCONTEXT_DATA); + sbuts->preview= 1; + break; case ND_OB_ACTIVE: ED_area_tag_redraw(sa); sbuts->preview= 1; @@ -279,6 +286,7 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) case ND_TRANSFORM: buttons_area_redraw(sa, BCONTEXT_OBJECT); break; + case ND_POSE: case ND_BONE_ACTIVE: case ND_BONE_SELECT: buttons_area_redraw(sa, BCONTEXT_BONE); @@ -322,6 +330,7 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) switch(wmn->data) { case ND_SHADING: case ND_SHADING_DRAW: + case ND_NODES: /* currently works by redraws... if preview is set, it (re)starts job */ sbuts->preview= 1; break; @@ -351,6 +360,12 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) if(wmn->action == NA_RENAME) ED_area_tag_redraw(sa); break; + case NC_ANIMATION: + switch(wmn->data) { + case ND_KEYFRAME_EDIT: + ED_area_tag_redraw(sa); + break; + } } if(wmn->data == ND_KEYS) @@ -388,7 +403,7 @@ void ED_spacetype_buttons(void) /* regions: header */ art= MEM_callocN(sizeof(ARegionType), "spacetype buttons region"); art->regionid = RGN_TYPE_HEADER; - art->minsizey= BUTS_HEADERY; + art->prefsizey= BUTS_HEADERY; art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->init= buttons_header_area_init; diff --git a/source/blender/editors/space_console/console_draw.c b/source/blender/editors/space_console/console_draw.c index ab1fc8a5fca..eda2b2021e5 100644 --- a/source/blender/editors/space_console/console_draw.c +++ b/source/blender/editors/space_console/console_draw.c @@ -78,16 +78,16 @@ static void console_line_color(unsigned char *fg, int type) { switch(type) { case CONSOLE_LINE_OUTPUT: - fg[0]=96; fg[1]=128; fg[2]=255; + UI_GetThemeColor3ubv(TH_CONSOLE_OUTPUT, (char *)fg); break; case CONSOLE_LINE_INPUT: - fg[0]=255; fg[1]=255; fg[2]=255; + UI_GetThemeColor3ubv(TH_CONSOLE_INPUT, (char *)fg); break; case CONSOLE_LINE_INFO: - fg[0]=0; fg[1]=170; fg[2]=0; + UI_GetThemeColor3ubv(TH_CONSOLE_INFO, (char *)fg); break; case CONSOLE_LINE_ERROR: - fg[0]=220; fg[1]=96; fg[2]=96; + UI_GetThemeColor3ubv(TH_CONSOLE_ERROR, (char *)fg); break; } } diff --git a/source/blender/editors/space_console/console_ops.c b/source/blender/editors/space_console/console_ops.c index 76e1231b0d4..969918392c9 100644 --- a/source/blender/editors/space_console/console_ops.c +++ b/source/blender/editors/space_console/console_ops.c @@ -279,12 +279,12 @@ static int console_edit_poll(bContext *C) return 1; } - +#if 0 static int console_poll(bContext *C) { return (CTX_wm_space_console(C) != NULL); } - +#endif /* static funcs for text editing */ diff --git a/source/blender/editors/space_console/space_console.c b/source/blender/editors/space_console/space_console.c index e9e87a865ef..ea1d6667d11 100644 --- a/source/blender/editors/space_console/space_console.c +++ b/source/blender/editors/space_console/space_console.c @@ -366,7 +366,7 @@ void ED_spacetype_console(void) /* regions: header */ art= MEM_callocN(sizeof(ARegionType), "spacetype console region"); art->regionid = RGN_TYPE_HEADER; - art->minsizey= HEADERY; + art->prefsizey= HEADERY; art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER; art->init= console_header_area_init; diff --git a/source/blender/editors/space_file/file_draw.c b/source/blender/editors/space_file/file_draw.c index 93bedd0b866..ad3ec1a3d69 100644 --- a/source/blender/editors/space_file/file_draw.c +++ b/source/blender/editors/space_file/file_draw.c @@ -99,12 +99,6 @@ enum { static void do_file_buttons(bContext *C, void *arg, int event) { switch(event) { - case B_FS_EXEC: - file_exec(C, NULL); /* file_ops.c */ - break; - case B_FS_CANCEL: - file_cancel_exec(C, NULL); /* file_ops.c */ - break; case B_FS_PARENT: file_parent_exec(C, NULL); /* file_ops.c */ break; @@ -133,7 +127,6 @@ static void do_file_buttons(bContext *C, void *arg, int event) void file_draw_buttons(const bContext *C, ARegion *ar) { /* Button layout. */ - const int min_x = 10; const int max_x = ar->winx - 10; const int line1_y = IMASEL_BUTTONS_HEIGHT/2 + IMASEL_BUTTONS_MARGIN*2; const int line2_y = IMASEL_BUTTONS_MARGIN; @@ -148,6 +141,7 @@ void file_draw_buttons(const bContext *C, ARegion *ar) char name[20]; int loadbutton; int fnumbuttons; + int min_x = 10; int available_w = max_x - min_x; int line1_w = available_w; int line2_w = available_w; @@ -156,11 +150,20 @@ void file_draw_buttons(const bContext *C, ARegion *ar) uiBlock* block; SpaceFile* sfile = CTX_wm_space_file(C); FileSelectParams* params = ED_fileselect_get_params(sfile); + ARegion* artmp; /* Initialize UI block. */ sprintf(name, "win %p", ar); block = uiBeginBlock(C, ar, name, UI_EMBOSS); uiBlockSetHandleFunc(block, do_file_buttons, NULL); + + /* exception to make space for collapsed region icon */ + for (artmp=CTX_wm_area(C)->regionbase.first; artmp; artmp=artmp->next) { + if (artmp->regiontype == RGN_TYPE_CHANNELS && artmp->flag & RGN_FLAG_HIDDEN) { + min_x += 16; + available_w -= 16; + } + } /* Is there enough space for the execute / cancel buttons? */ loadbutton = UI_GetStringWidth(sfile->params->title) + btn_margin; @@ -217,12 +220,13 @@ void file_draw_buttons(const bContext *C, ARegion *ar) /* Execute / cancel buttons. */ if(loadbutton) { - uiDefBut(block, BUT, B_FS_EXEC, params->title, - max_x - loadbutton, line1_y, loadbutton, btn_h, - params->dir, 0.0, (float)FILE_MAXFILE-1, 0, 0, params->title); - uiDefBut(block, BUT, B_FS_CANCEL, "Cancel", - max_x - loadbutton, line2_y, loadbutton, btn_h, - params->file, 0.0, (float)FILE_MAXFILE-1, 0, 0, "Cancel."); + + uiDefButO(block, BUT, "FILE_OT_execute", WM_OP_EXEC_REGION_WIN, params->title, + max_x - loadbutton, line1_y, loadbutton, btn_h, + params->title); + uiDefButO(block, BUT, "FILE_OT_cancel", WM_OP_EXEC_REGION_WIN, "Cancel", + max_x - loadbutton, line2_y, loadbutton, btn_h, + "Cancel"); } uiEndBlock(C, block); @@ -316,8 +320,9 @@ static int get_file_icon(struct direntry *file) return ICON_FILE_BLANK; } -static void file_draw_icon(int sx, int sy, int icon, int width, int height) +static void file_draw_icon(uiBlock *block, char *path, int sx, int sy, int icon, int width, int height) { + uiBut *but; float x,y; float alpha=1.0f; @@ -325,10 +330,9 @@ static void file_draw_icon(int sx, int sy, int icon, int width, int height) y = (float)(sy-height); if (icon == ICON_FILE_BLANK) alpha = 0.375f; - - glEnable(GL_BLEND); - - UI_icon_draw_aspect(x, y, icon, 1.f, alpha); + + but= uiDefIconBut(block, LABEL, 0, icon, x, y, width, height, NULL, 0.0, 0.0, 0, 0, ""); + uiButSetDragPath(but, path); } @@ -360,62 +364,67 @@ void file_calc_previews(const bContext *C, ARegion *ar) UI_view2d_totRect_set(v2d, sfile->layout->width, sfile->layout->height+V2D_SCROLL_HEIGHT); } -static void file_draw_preview(int sx, int sy, ImBuf *imb, FileLayout *layout, short dropshadow) +static void file_draw_preview(uiBlock *block, struct direntry *file, int sx, int sy, ImBuf *imb, FileLayout *layout, short dropshadow) { if (imb) { - float fx, fy; - float dx, dy; - int xco, yco; - float scaledx, scaledy; - float scale; - int ex, ey; - - if ( (imb->x > layout->prv_w) || (imb->y > layout->prv_h) ) { - if (imb->x > imb->y) { - scaledx = (float)layout->prv_w; - scaledy = ( (float)imb->y/(float)imb->x )*layout->prv_w; - scale = scaledx/imb->x; - } - else { - scaledy = (float)layout->prv_h; - scaledx = ( (float)imb->x/(float)imb->y )*layout->prv_h; - scale = scaledy/imb->y; - } - } else { - scaledx = (float)imb->x; - scaledy = (float)imb->y; - scale = 1.0; + uiBut *but; + float fx, fy; + float dx, dy; + int xco, yco; + float scaledx, scaledy; + float scale; + int ex, ey; + + if ( (imb->x > layout->prv_w) || (imb->y > layout->prv_h) ) { + if (imb->x > imb->y) { + scaledx = (float)layout->prv_w; + scaledy = ( (float)imb->y/(float)imb->x )*layout->prv_w; + scale = scaledx/imb->x; } - ex = (int)scaledx; - ey = (int)scaledy; - fx = ((float)layout->prv_w - (float)ex)/2.0f; - fy = ((float)layout->prv_h - (float)ey)/2.0f; - dx = (fx + 0.5f + layout->prv_border_x); - dy = (fy + 0.5f - layout->prv_border_y); - xco = (float)sx + dx; - yco = (float)sy - layout->prv_h + dy; - - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - /* shadow */ - if (dropshadow) - uiDrawBoxShadow(220, xco, yco, xco + ex, yco + ey); - - glEnable(GL_BLEND); - - /* the image */ - glColor4f(1.0, 1.0, 1.0, 1.0); - glaDrawPixelsTexScaled(xco, yco, imb->x, imb->y, GL_UNSIGNED_BYTE, imb->rect, scale, scale); - - /* border */ - if (dropshadow) { - glColor4f(0.0f, 0.0f, 0.0f, 0.4f); - fdrawbox(xco, yco, xco + ex, yco + ey); + else { + scaledy = (float)layout->prv_h; + scaledx = ( (float)imb->x/(float)imb->y )*layout->prv_h; + scale = scaledy/imb->y; } - - glDisable(GL_BLEND); - imb = 0; + } else { + scaledx = (float)imb->x; + scaledy = (float)imb->y; + scale = 1.0; + } + ex = (int)scaledx; + ey = (int)scaledy; + fx = ((float)layout->prv_w - (float)ex)/2.0f; + fy = ((float)layout->prv_h - (float)ey)/2.0f; + dx = (fx + 0.5f + layout->prv_border_x); + dy = (fy + 0.5f - layout->prv_border_y); + xco = (float)sx + dx; + yco = (float)sy - layout->prv_h + dy; + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + /* shadow */ + if (dropshadow) + uiDrawBoxShadow(220, xco, yco, xco + ex, yco + ey); + + glEnable(GL_BLEND); + + /* the image */ + glColor4f(1.0, 1.0, 1.0, 1.0); + glaDrawPixelsTexScaled(xco, yco, imb->x, imb->y, GL_UNSIGNED_BYTE, imb->rect, scale, scale); + + /* border */ + if (dropshadow) { + glColor4f(0.0f, 0.0f, 0.0f, 0.4f); + fdrawbox(xco, yco, xco + ex, yco + ey); } + + /* dragregion */ + but= uiDefBut(block, LABEL, 0, "", xco, yco, ex, ey, NULL, 0.0, 0.0, 0, 0, ""); + uiButSetDragImage(but, file->path, get_file_icon(file), imb, scale); + + glDisable(GL_BLEND); + imb = 0; + } } static void renamebutton_cb(bContext *C, void *arg1, char *oldname) @@ -487,6 +496,7 @@ void file_draw_list(const bContext *C, ARegion *ar) struct FileList* files = sfile->files; struct direntry *file; ImBuf *imb; + uiBlock *block = uiBeginBlock(C, ar, "FileNames", UI_EMBOSS); int numfiles; int numfiles_layout; int colorid = 0; @@ -522,10 +532,10 @@ void file_draw_list(const bContext *C, ARegion *ar) if (params->active_file == i) { if (file->flags & ACTIVE) colorid= TH_HILITE; else colorid = TH_BACK; - draw_tile(sx-2, sy-3, layout->tile_w+2, sfile->layout->tile_h+layout->tile_border_y, colorid,20); + draw_tile(sx, sy-3, layout->tile_w+4, sfile->layout->tile_h+layout->tile_border_y, colorid,20); } else if (file->flags & ACTIVE) { colorid = TH_HILITE; - draw_tile(sx-2, sy-3, layout->tile_w+2, sfile->layout->tile_h+layout->tile_border_y, colorid,0); + draw_tile(sx, sy-3, layout->tile_w+4, sfile->layout->tile_h+layout->tile_border_y, colorid,0); } } @@ -542,11 +552,11 @@ void file_draw_list(const bContext *C, ARegion *ar) is_icon = 1; } - file_draw_preview(sx, sy, imb, layout, !is_icon && (file->flags & IMAGEFILE)); + file_draw_preview(block, file, sx, sy, imb, layout, !is_icon && (file->flags & IMAGEFILE)); } else { - file_draw_icon(spos, sy-3, get_file_icon(file), ICON_DEFAULT_WIDTH, ICON_DEFAULT_WIDTH); - spos += ICON_DEFAULT_WIDTH + 4; + file_draw_icon(block, file->path, spos, sy-3, get_file_icon(file), ICON_DEFAULT_WIDTH, ICON_DEFAULT_WIDTH); + spos += ICON_DEFAULT_WIDTH + 4; } UI_ThemeColor4(TH_TEXT); @@ -554,15 +564,13 @@ void file_draw_list(const bContext *C, ARegion *ar) sw = file_string_width(file->relname); if (file->flags & EDITING) { int but_width = (FILE_IMGDISPLAY == params->display) ? layout->tile_w : layout->column_widths[COLUMN_NAME]; - uiBlock *block = uiBeginBlock(C, ar, "FileName", UI_EMBOSS); + uiBut *but = uiDefBut(block, TEX, 1, "", spos, sy-layout->tile_h-3, but_width, layout->textheight*2, file->relname, 1.0f, (float)FILE_MAX,0,0,""); uiButSetRenameFunc(but, renamebutton_cb, file); if ( 0 == uiButActiveOnly(C, block, but)) { file->flags &= ~EDITING; } - uiEndBlock(C, block); - uiDrawBlock(C, block); } else { float name_width = (FILE_IMGDISPLAY == params->display) ? layout->tile_w : sw; file_draw_string(spos, sy, file->relname, name_width, layout->tile_h, FILE_SHORTEN_END); @@ -615,8 +623,14 @@ void file_draw_list(const bContext *C, ARegion *ar) } } + /* XXX this timer is never removed, cause smooth view operator + to get executed all the time after closing file browser */ if (!sfile->loadimage_timer) sfile->loadimage_timer= WM_event_add_timer(CTX_wm_manager(C), CTX_wm_window(C), TIMER1, 1.0/30.0); /* max 30 frames/sec. */ + + uiEndBlock(C, block); + uiDrawBlock(C, block); + } diff --git a/source/blender/editors/space_file/file_intern.h b/source/blender/editors/space_file/file_intern.h index fa99dc6e1ee..58899818b7c 100644 --- a/source/blender/editors/space_file/file_intern.h +++ b/source/blender/editors/space_file/file_intern.h @@ -72,7 +72,7 @@ void FILE_OT_filenum(struct wmOperatorType *ot); void FILE_OT_delete(struct wmOperatorType *ot); void FILE_OT_rename(struct wmOperatorType *ot); -int file_exec(bContext *C, struct wmOperator *unused); +int file_exec(bContext *C, struct wmOperator *exec_op); int file_cancel_exec(bContext *C, struct wmOperator *unused); int file_parent_exec(bContext *C, struct wmOperator *unused); int file_previous_exec(bContext *C, struct wmOperator *unused); diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index 8fe1ddd636d..93230c79b19 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -560,19 +560,35 @@ void FILE_OT_cancel(struct wmOperatorType *ot) } /* sends events now, so things get handled on windowqueue level */ -int file_exec(bContext *C, wmOperator *unused) +int file_exec(bContext *C, wmOperator *exec_op) { SpaceFile *sfile= CTX_wm_space_file(C); char name[FILE_MAX]; if(sfile->op) { wmOperator *op= sfile->op; + + /* when used as a macro, for doubleclick, + to prevent closing when doubleclicking on .. item */ + if (RNA_boolean_get(exec_op->ptr, "need_active")) { + int i, active=0; + struct direntry *file; + + for (i=0; i<filelist_numfiles(sfile->files); i++) { + file = filelist_file(sfile->files, i); + if(file->flags & ACTIVE) { + active=1; + } + } + if (active == 0) + return OPERATOR_CANCELLED; + } sfile->op = NULL; RNA_string_set(op->ptr, "filename", sfile->params->file); BLI_strncpy(name, sfile->params->dir, sizeof(name)); RNA_string_set(op->ptr, "directory", name); - strcat(name, sfile->params->file); + strcat(name, sfile->params->file); // XXX unsafe if(RNA_struct_find_property(op->ptr, "relative_paths")) if(RNA_boolean_get(op->ptr, "relative_paths")) @@ -637,6 +653,8 @@ void FILE_OT_execute(struct wmOperatorType *ot) /* api callbacks */ ot->exec= file_exec; ot->poll= file_operator_poll; + + RNA_def_boolean(ot->srna, "need_active", 0, "Need Active", "Only execute if there's an active selected file in the file list."); } @@ -1090,3 +1108,15 @@ void FILE_OT_delete(struct wmOperatorType *ot) ot->poll= file_delete_poll; /* <- important, handler is on window level */ } + +void ED_operatormacros_file(void) +{ + wmOperatorType *ot; + wmOperatorTypeMacro *otmacro; + + ot= WM_operatortype_append_macro("FILE_OT_select_execute", "Select and Execute", OPTYPE_UNDO|OPTYPE_REGISTER); + WM_operatortype_macro_define(ot, "FILE_OT_select"); + otmacro= WM_operatortype_macro_define(ot, "FILE_OT_execute"); + RNA_boolean_set(otmacro->ptr, "need_active", 1); + +} diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c index 81aa63dcad9..dbe9417fd2a 100644 --- a/source/blender/editors/space_file/filelist.c +++ b/source/blender/editors/space_file/filelist.c @@ -440,18 +440,36 @@ int folderlist_clear_next(struct SpaceFile *sfile) return 1; } +/* not listbase itself */ void folderlist_free(ListBase* folderlist) { FolderList *folder; if (folderlist){ - for(folder= folderlist->last; folder; folder= folderlist->last) { - MEM_freeN(folder->foldername); - BLI_freelinkN(folderlist, folder); - } + for(folder= folderlist->first; folder; folder= folder->next) + MEM_freeN(folder->foldername); + BLI_freelistN(folderlist); } folderlist= NULL; } +ListBase *folderlist_duplicate(ListBase* folderlist) +{ + + if (folderlist) { + ListBase *folderlistn= MEM_callocN(sizeof(ListBase), "copy folderlist"); + FolderList *folder; + + BLI_duplicatelist(folderlistn, folderlist); + + for(folder= folderlistn->first; folder; folder= folder->next) { + folder->foldername= MEM_dupallocN(folder->foldername); + } + return folderlistn; + } + return NULL; +} + + static void filelist_read_main(struct FileList* filelist); static void filelist_read_library(struct FileList* filelist); static void filelist_read_dir(struct FileList* filelist); @@ -499,6 +517,8 @@ void filelist_free(struct FileList* filelist) filelist->filelist[i].image = 0; if (filelist->filelist[i].relname) MEM_freeN(filelist->filelist[i].relname); + if (filelist->filelist[i].path) + MEM_freeN(filelist->filelist[i].path); filelist->filelist[i].relname = 0; if (filelist->filelist[i].string) MEM_freeN(filelist->filelist[i].string); @@ -863,7 +883,9 @@ void filelist_setfiletypes(struct FileList* filelist, short has_quicktime) file->flags |= BLENDERFILE; } else if(BLI_testextensie(file->relname, ".py")) { file->flags |= PYSCRIPTFILE; - } else if(BLI_testextensie(file->relname, ".txt")) { + } else if(BLI_testextensie(file->relname, ".txt") + || BLI_testextensie(file->relname, ".glsl") + || BLI_testextensie(file->relname, ".data")) { file->flags |= TEXTFILE; } else if( BLI_testextensie(file->relname, ".ttf") || BLI_testextensie(file->relname, ".ttc") diff --git a/source/blender/editors/space_file/filelist.h b/source/blender/editors/space_file/filelist.h index a8d909f899e..157a2f5cd52 100644 --- a/source/blender/editors/space_file/filelist.h +++ b/source/blender/editors/space_file/filelist.h @@ -81,6 +81,7 @@ void filelist_hideparent(struct FileList* filelist, short hide); struct ListBase * folderlist_new(); void folderlist_free(struct ListBase* folderlist); +struct ListBase * folderlist_duplicate(ListBase* folderlist); void folderlist_popdir(struct ListBase* folderlist, char *dir); void folderlist_pushdir(struct ListBase* folderlist, const char *dir); int folderlist_clear_next(struct SpaceFile* sfile); diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c index e0915010e16..e73a8c9a7fa 100644 --- a/source/blender/editors/space_file/space_file.c +++ b/source/blender/editors/space_file/space_file.c @@ -173,10 +173,10 @@ static SpaceLink *file_duplicate(SpaceLink *sl) if (sfileo->params) sfilen->files = filelist_new(sfileo->params->type); if(sfileo->folders_prev) - sfilen->folders_prev = MEM_dupallocN(sfileo->folders_prev); + sfilen->folders_prev = folderlist_duplicate(sfileo->folders_prev); if(sfileo->folders_next) - sfilen->folders_next = MEM_dupallocN(sfileo->folders_next); + sfilen->folders_next = folderlist_duplicate(sfileo->folders_next); if(sfileo->params) { sfilen->params= MEM_dupallocN(sfileo->params); @@ -381,8 +381,9 @@ void file_keymap(struct wmKeyConfig *keyconf) /* keys for main area */ 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); + WM_keymap_add_item(keymap, "FILE_OT_select_execute", LEFTMOUSE, KM_DBL_CLICK, 0, 0); + WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_CLICK, 0, 0); + kmi = WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_CLICK, KM_SHIFT, 0); RNA_boolean_set(kmi->ptr, "extend", 1); WM_keymap_add_item(keymap, "FILE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "FILE_OT_select_border", BKEY, KM_PRESS, 0, 0); @@ -530,7 +531,7 @@ void ED_spacetype_file(void) /* regions: header */ art= MEM_callocN(sizeof(ARegionType), "spacetype file region"); art->regionid = RGN_TYPE_HEADER; - art->minsizey= HEADERY; + art->prefsizey= HEADERY; art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER; art->init= file_header_area_init; art->draw= file_header_area_draw; @@ -540,7 +541,7 @@ void ED_spacetype_file(void) /* regions: ui */ art= MEM_callocN(sizeof(ARegionType), "spacetype file region"); art->regionid = RGN_TYPE_UI; - art->minsizey= 60; + art->prefsizey= 60; art->keymapflag= ED_KEYMAP_UI; art->listener= file_ui_area_listener; art->init= file_ui_area_init; @@ -550,7 +551,7 @@ void ED_spacetype_file(void) /* regions: channels (directories) */ art= MEM_callocN(sizeof(ARegionType), "spacetype file region"); art->regionid = RGN_TYPE_CHANNELS; - art->minsizex= 240; + art->prefsizex= 240; art->keymapflag= ED_KEYMAP_UI; art->listener= file_channel_area_listener; art->init= file_channel_area_init; diff --git a/source/blender/editors/space_file/writeimage.c b/source/blender/editors/space_file/writeimage.c index 045c790b9cd..9e8e3b7b058 100644 --- a/source/blender/editors/space_file/writeimage.c +++ b/source/blender/editors/space_file/writeimage.c @@ -102,7 +102,7 @@ static void save_rendered_image_cb_real(char *name, int confirm) /* BKE_add_image_extension() checks for if extension was already set */ if(scene->r.scemode & R_EXTENSION) if(strlen(name)<FILE_MAXDIR+FILE_MAXFILE-5) - BKE_add_image_extension(scene, name, scene->r.imtype); + BKE_add_image_extension(name, scene->r.imtype); strcpy(str, name); BLI_convertstringcode(str, G.sce); diff --git a/source/blender/editors/space_graph/graph_buttons.c b/source/blender/editors/space_graph/graph_buttons.c index a866ebd75e2..1d6fe6d0b6b 100644 --- a/source/blender/editors/space_graph/graph_buttons.c +++ b/source/blender/editors/space_graph/graph_buttons.c @@ -147,7 +147,7 @@ static void graph_panel_view(const bContext *C, Panel *pa) SpaceIpo *sipo= CTX_wm_space_graph(C); Scene *scene= CTX_data_scene(C); PointerRNA spaceptr, sceneptr; - uiLayout *col, *subcol; + uiLayout *col, *subcol, *row; /* get RNA pointers for use when creating the UI elements */ RNA_id_pointer_create(&scene->id, &sceneptr); @@ -159,12 +159,16 @@ static void graph_panel_view(const bContext *C, Panel *pa) subcol= uiLayoutColumn(col, 1); uiLayoutSetActive(subcol, RNA_boolean_get(&spaceptr, "show_cursor")); - uiItemR(subcol, "Cursor X", 0, &sceneptr, "current_frame", 0); - uiItemR(subcol, "Cursor Y", 0, &spaceptr, "cursor_value", 0); - + uiItemO(subcol, "Cursor from Selection", 0, "GRAPH_OT_frame_jump"); + subcol= uiLayoutColumn(col, 1); uiLayoutSetActive(subcol, RNA_boolean_get(&spaceptr, "show_cursor")); - uiItemO(subcol, "Cursor from Selection", 0, "GRAPH_OT_frame_jump"); + row= uiLayoutSplit(subcol, 0.7, 1); + uiItemR(row, "Cursor X", 0, &sceneptr, "current_frame", 0); + uiItemEnumO(row, "To Keys", 0, "GRAPH_OT_snap", "type", GRAPHKEYS_SNAP_CFRA); + row= uiLayoutSplit(subcol, 0.7, 1); + uiItemR(row, "Cursor Y", 0, &spaceptr, "cursor_value", 0); + uiItemEnumO(row, "To Keys", 0, "GRAPH_OT_snap", "type", GRAPHKEYS_SNAP_VALUE); } /* ******************* active F-Curve ************** */ @@ -314,7 +318,7 @@ static void graph_panel_driverVar__singleProp(const bContext *C, uiLayout *layou /* Target ID */ row= uiLayoutRow(layout, 0); - uiTemplateAnyID(row, (bContext *)C, &dtar_ptr, "id", "id_type", "Value:"); + uiTemplateAnyID(row, (bContext *)C, &dtar_ptr, "id", "id_type", "Prop:"); /* Target Property */ // TODO: make this less technical... @@ -486,6 +490,21 @@ static void graph_panel_drivers(const bContext *C, Panel *pa) if (driver->flag & DRIVER_FLAG_INVALID) uiItemL(col, "ERROR: invalid target channel(s)", ICON_ERROR); } + + col= uiLayoutColumn(pa->layout, 1); + /* debug setting */ + uiItemR(col, NULL, 0, &driver_ptr, "show_debug_info", 0); + + /* value of driver */ + if (driver->flag & DRIVER_FLAG_SHOWDEBUG) { + uiLayout *row= uiLayoutRow(col, 1); + char valBuf[32]; + + uiItemL(row, "Driver Value:", 0); + + sprintf(valBuf, "%.3f", driver->curval); + uiItemL(row, valBuf, 0); + } /* add driver variables */ col= uiLayoutColumn(pa->layout, 0); @@ -538,6 +557,19 @@ static void graph_panel_drivers(const bContext *C, Panel *pa) graph_panel_driverVar__transChan(C, box, ale->id, dvar); break; } + + /* value of variable */ + if (driver->flag & DRIVER_FLAG_SHOWDEBUG) { + uiLayout *row; + char valBuf[32]; + + box= uiLayoutBox(col); + row= uiLayoutRow(box, 1); + uiItemL(row, "Value:", 0); + + sprintf(valBuf, "%.3f", dvar->curval); + uiItemL(row, valBuf, 0); + } } /* cleanup */ diff --git a/source/blender/editors/space_graph/graph_draw.c b/source/blender/editors/space_graph/graph_draw.c index 9681d20c13b..8642c2d15c5 100644 --- a/source/blender/editors/space_graph/graph_draw.c +++ b/source/blender/editors/space_graph/graph_draw.c @@ -163,7 +163,7 @@ static void draw_fcurve_modifier_controls_envelope (FCurve *fcu, FModifier *fcm, /* Points ---------------- */ /* helper func - draw keyframe vertices only for an F-Curve */ -static void draw_fcurve_vertices_keyframes (FCurve *fcu, View2D *v2d, short edit, short sel) +static void draw_fcurve_vertices_keyframes (bAnimContext *ac, FCurve *fcu, View2D *v2d, short edit, short sel) { BezTriple *bezt= fcu->bezt; const float fac= 0.05f * (v2d->cur.xmax - v2d->cur.xmin); @@ -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 (SpaceIpo *sipo, FCurve *fcu, View2D *v2d, short sel) +static void draw_fcurve_vertices_handles (bAnimContext *ac, SpaceIpo *sipo, FCurve *fcu, View2D *v2d, short sel) { BezTriple *bezt= fcu->bezt; BezTriple *prevbezt = NULL; @@ -300,7 +300,7 @@ static void set_fcurve_vertex_color (SpaceIpo *sipo, FCurve *fcu, short sel) } -void draw_fcurve_vertices (SpaceIpo *sipo, ARegion *ar, FCurve *fcu) +void draw_fcurve_vertices (bAnimContext *ac, SpaceIpo *sipo, ARegion *ar, FCurve *fcu) { View2D *v2d= &ar->v2d; @@ -318,18 +318,18 @@ 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(sipo, fcu, v2d, 0); + draw_fcurve_vertices_handles(ac, sipo, fcu, v2d, 0); set_fcurve_vertex_color(sipo, fcu, 1); - draw_fcurve_vertices_handles(sipo, fcu, v2d, 1); + draw_fcurve_vertices_handles(ac, sipo, fcu, v2d, 1); } /* draw keyframes over the handles */ set_fcurve_vertex_color(sipo, fcu, 0); - draw_fcurve_vertices_keyframes(fcu, v2d, !(fcu->flag & FCURVE_PROTECTED), 0); + draw_fcurve_vertices_keyframes(ac, fcu, v2d, !(fcu->flag & FCURVE_PROTECTED), 0); set_fcurve_vertex_color(sipo, fcu, 1); - draw_fcurve_vertices_keyframes(fcu, v2d, !(fcu->flag & FCURVE_PROTECTED), 1); + draw_fcurve_vertices_keyframes(ac, fcu, v2d, !(fcu->flag & FCURVE_PROTECTED), 1); glPointSize(1.0f); } @@ -337,7 +337,7 @@ void draw_fcurve_vertices (SpaceIpo *sipo, ARegion *ar, FCurve *fcu) /* Handles ---------------- */ /* draw lines for F-Curve handles only (this is only done in EditMode) */ -static void draw_fcurve_handles (SpaceIpo *sipo, ARegion *ar, FCurve *fcu) +static void draw_fcurve_handles (bAnimContext *ac, SpaceIpo *sipo, ARegion *ar, FCurve *fcu) { extern unsigned int nurbcol[]; int sel, b; @@ -458,7 +458,7 @@ static void draw_fcurve_sample_control (float x, float y, float xscale, float ys } /* helper func - draw keyframe vertices only for an F-Curve */ -static void draw_fcurve_samples (SpaceIpo *sipo, ARegion *ar, FCurve *fcu) +static void draw_fcurve_samples (bAnimContext *ac, SpaceIpo *sipo, ARegion *ar, FCurve *fcu) { FPoint *first, *last; float hsize, xscale, yscale; @@ -491,22 +491,20 @@ static void draw_fcurve_samples (SpaceIpo *sipo, ARegion *ar, FCurve *fcu) /* Curve ---------------- */ -/* minimum pixels per gridstep - * XXX: defined in view2d.c - must keep these in sync or relocate to View2D header! - */ -#define MINGRIDSTEP 35 - /* helper func - just draw the F-Curve by sampling the visible region (for drawing curves with modifiers) */ -static void draw_fcurve_curve (FCurve *fcu, SpaceIpo *sipo, View2D *v2d, View2DGrid *grid) +static void draw_fcurve_curve (bAnimContext *ac, ID *id, FCurve *fcu, SpaceIpo *sipo, View2D *v2d, View2DGrid *grid) { ChannelDriver *driver; float samplefreq, ctime; float stime, etime; + float unitFac; /* disable any drivers temporarily */ driver= fcu->driver; fcu->driver= NULL; + /* compute unit correction factor */ + unitFac= ANIM_unit_mapping_get_factor(ac->scene, id, fcu, 0); /* Note about sampling frequency: * Ideally, this is chosen such that we have 1-2 pixels = 1 segment @@ -520,10 +518,10 @@ static void draw_fcurve_curve (FCurve *fcu, SpaceIpo *sipo, View2D *v2d, View2DG * loop (i.e. too close to FLT_EPSILON), fall back to default of 0.001 */ /* grid->dx is the first float in View2DGrid struct, so just cast to float pointer, and use it - * It represents the number of 'frames' between gridlines, but we divide by MINGRIDSTEP to get pixels-steps + * It represents the number of 'frames' between gridlines, but we divide by U.v2d_min_gridsize to get pixels-steps */ // TODO: perhaps we should have 1.0 frames as upper limit so that curves don't get too distorted? - samplefreq= *((float *)grid) / MINGRIDSTEP; + samplefreq= *((float *)grid) / U.v2d_min_gridsize; if (IS_EQ(samplefreq, 0)) samplefreq= 0.001f; @@ -532,11 +530,14 @@ static void draw_fcurve_curve (FCurve *fcu, SpaceIpo *sipo, View2D *v2d, View2DG etime= v2d->cur.xmax; - /* at each sampling interval, add a new vertex */ + /* at each sampling interval, add a new vertex + * - apply the unit correction factor to the calculated values so that + * the displayed values appear correctly in the viewport + */ glBegin(GL_LINE_STRIP); for (ctime= stime; ctime <= etime; ctime += samplefreq) - glVertex2f( ctime, evaluate_fcurve(fcu, ctime) ); + glVertex2f( ctime, evaluate_fcurve(fcu, ctime)*unitFac ); glEnd(); @@ -545,7 +546,7 @@ static void draw_fcurve_curve (FCurve *fcu, SpaceIpo *sipo, View2D *v2d, View2DG } /* helper func - draw a samples-based F-Curve */ -static void draw_fcurve_curve_samples (FCurve *fcu, View2D *v2d) +static void draw_fcurve_curve_samples (bAnimContext *ac, ID *id, FCurve *fcu, View2D *v2d) { FPoint *prevfpt= fcu->fpt; FPoint *fpt= prevfpt + 1; @@ -554,6 +555,9 @@ static void draw_fcurve_curve_samples (FCurve *fcu, View2D *v2d) glBegin(GL_LINE_STRIP); + /* apply unit mapping */ + ANIM_unit_mapping_apply_fcurve(ac->scene, id, fcu, 0); + /* extrapolate to left? - left-side of view comes before first keyframe? */ if (prevfpt->vec[0] > v2d->cur.xmin) { v[0]= v2d->cur.xmin; @@ -612,11 +616,14 @@ static void draw_fcurve_curve_samples (FCurve *fcu, View2D *v2d) glVertex2fv(v); } + /* unapply unit mapping */ + ANIM_unit_mapping_apply_fcurve(ac->scene, id, fcu, ANIM_UNITCONV_RESTORE); + glEnd(); } /* helper func - draw one repeat of an F-Curve */ -static void draw_fcurve_curve_bezts (FCurve *fcu, View2D *v2d, View2DGrid *grid) +static void draw_fcurve_curve_bezts (bAnimContext *ac, ID *id, FCurve *fcu, View2D *v2d, View2DGrid *grid) { BezTriple *prevbezt= fcu->bezt; BezTriple *bezt= prevbezt+1; @@ -628,6 +635,9 @@ static void draw_fcurve_curve_bezts (FCurve *fcu, View2D *v2d, View2DGrid *grid) glBegin(GL_LINE_STRIP); + /* apply unit mapping */ + ANIM_unit_mapping_apply_fcurve(ac->scene, id, fcu, 0); + /* extrapolate to left? */ if (prevbezt->vec[1][0] > v2d->cur.xmin) { /* left-side of view comes before first keyframe, so need to extend as not cyclic */ @@ -759,12 +769,17 @@ static void draw_fcurve_curve_bezts (FCurve *fcu, View2D *v2d, View2DGrid *grid) glVertex2fv(v1); } + /* unapply unit mapping */ + ANIM_unit_mapping_apply_fcurve(ac->scene, id, fcu, ANIM_UNITCONV_RESTORE); + glEnd(); } /* Public Curve-Drawing API ---------------- */ -/* Draw the 'ghost' F-Curves (i.e. snapshots of the curve) */ +/* Draw the 'ghost' F-Curves (i.e. snapshots of the curve) + * NOTE: unit mapping has already been applied to the values, so do not try and apply again + */ void graph_draw_ghost_curves (bAnimContext *ac, SpaceIpo *sipo, ARegion *ar, View2DGrid *grid) { FCurve *fcu; @@ -786,7 +801,7 @@ void graph_draw_ghost_curves (bAnimContext *ac, SpaceIpo *sipo, ARegion *ar, Vie glColor4f(fcu->color[0], fcu->color[1], fcu->color[2], 0.5f); /* simply draw the stored samples */ - draw_fcurve_curve_samples(fcu, &ar->v2d); + draw_fcurve_curve_samples(ac, NULL, fcu, &ar->v2d); } /* restore settings */ @@ -859,14 +874,14 @@ void graph_draw_curves (bAnimContext *ac, SpaceIpo *sipo, ARegion *ar, View2DGri /* draw a curve affected by modifiers or only allowed to have integer values * by sampling it at various small-intervals over the visible region */ - draw_fcurve_curve(fcu, sipo, &ar->v2d, grid); + draw_fcurve_curve(ac, ale->id, fcu, sipo, &ar->v2d, grid); } else if ( ((fcu->bezt) || (fcu->fpt)) && (fcu->totvert) ) { /* just draw curve based on defined data (i.e. no modifiers) */ if (fcu->bezt) - draw_fcurve_curve_bezts(fcu, &ar->v2d, grid); + draw_fcurve_curve_bezts(ac, ale->id, fcu, &ar->v2d, grid); else if (fcu->fpt) - draw_fcurve_curve_samples(fcu, &ar->v2d); + draw_fcurve_curve_samples(ac, ale->id, fcu, &ar->v2d); } /* restore settings */ @@ -891,18 +906,24 @@ void graph_draw_curves (bAnimContext *ac, SpaceIpo *sipo, ARegion *ar, View2DGri } } else if ( ((fcu->bezt) || (fcu->fpt)) && (fcu->totvert) ) { + /* apply unit mapping */ + ANIM_unit_mapping_apply_fcurve(ac->scene, ale->id, fcu, 0); + if (fcu->bezt) { /* only draw handles/vertices on keyframes */ glEnable(GL_BLEND); - draw_fcurve_handles(sipo, ar, fcu); + draw_fcurve_handles(ac, sipo, ar, fcu); glDisable(GL_BLEND); - draw_fcurve_vertices(sipo, ar, fcu); + draw_fcurve_vertices(ac, sipo, ar, fcu); } else { /* samples: only draw two indicators at either end as indicators */ - draw_fcurve_samples(sipo, ar, fcu); + draw_fcurve_samples(ac, sipo, ar, fcu); } + + /* unapply unit mapping */ + ANIM_unit_mapping_apply_fcurve(ac->scene, ale->id, fcu, ANIM_UNITCONV_RESTORE); } } diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index ffc450b5368..3c7ce2778b6 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -121,15 +121,22 @@ void get_graph_keyframe_extents (bAnimContext *ac, float *xmin, float *xmax, flo AnimData *adt= ANIM_nla_mapping_get(ac, ale); FCurve *fcu= (FCurve *)ale->key_data; float txmin, txmax, tymin, tymax; + float unitFac; - /* get range and apply necessary scaling before */ + /* get range */ calc_fcurve_bounds(fcu, &txmin, &txmax, &tymin, &tymax); + /* apply NLA scaling */ if (adt) { txmin= BKE_nla_tweakedit_remap(adt, txmin, NLATIME_CONVERT_MAP); txmax= BKE_nla_tweakedit_remap(adt, txmax, NLATIME_CONVERT_MAP); } + /* apply unit corrections */ + unitFac= ANIM_unit_mapping_get_factor(ac->scene, ale->id, fcu, 0); + tymin *= unitFac; + tymax *= unitFac; + /* try to set cur using these values, if they're more extreme than previously set values */ if ((xmin) && (txmin < *xmin)) *xmin= txmin; if ((xmax) && (txmax > *xmax)) *xmax= txmax; @@ -174,6 +181,7 @@ static int graphkeys_previewrange_exec(bContext *C, wmOperator *op) /* set the range directly */ get_graph_keyframe_extents(&ac, &min, &max, NULL, NULL); + scene->r.flag |= SCER_PRV_RANGE; scene->r.psfra= (int)floor(min + 0.5f); scene->r.pefra= (int)floor(max + 0.5f); @@ -279,11 +287,15 @@ static void create_ghost_curves (bAnimContext *ac, int start, int end) AnimData *adt= ANIM_nla_mapping_get(ac, ale); ChannelDriver *driver= fcu->driver; FPoint *fpt; + float unitFac; int cfra; /* disable driver so that it don't muck up the sampling process */ fcu->driver= NULL; + /* calculate unit-mapping factor */ + unitFac= ANIM_unit_mapping_get_factor(ac->scene, ale->id, fcu, 0); + /* create samples, but store them in a new curve * - we cannot use fcurve_store_samples() as that will only overwrite the original curve */ @@ -497,7 +509,7 @@ void GRAPH_OT_keyframe_insert (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* id-props */ - RNA_def_enum(ot->srna, "type", prop_graphkeys_insertkey_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_graphkeys_insertkey_types, 0, "Type", ""); } /* ******************** Click-Insert Keyframes Operator ************************* */ @@ -507,6 +519,7 @@ static int graphkeys_click_insert_exec (bContext *C, wmOperator *op) bAnimContext ac; bAnimListElem *ale; AnimData *adt; + FCurve *fcu; float frame, val; /* get animation context */ @@ -519,7 +532,8 @@ static int graphkeys_click_insert_exec (bContext *C, wmOperator *op) if (ale) MEM_freeN(ale); return OPERATOR_CANCELLED; } - + fcu = ale->data; + /* get frame and value from props */ frame= RNA_float_get(op->ptr, "frame"); val= RNA_float_get(op->ptr, "value"); @@ -528,8 +542,11 @@ static int graphkeys_click_insert_exec (bContext *C, wmOperator *op) adt= ANIM_nla_mapping_get(&ac, ale); frame= BKE_nla_tweakedit_remap(adt, frame, NLATIME_CONVERT_UNMAP); + /* apply inverse unit-mapping to value to get correct value for F-Curves */ + val *= ANIM_unit_mapping_get_factor(ac.scene, ale->id, fcu, 1); + /* insert keyframe on the specified frame + value */ - insert_vert_fcurve((FCurve *)ale->data, frame, val, 0); + insert_vert_fcurve(fcu, frame, val, 0); /* free temp data */ MEM_freeN(ale); @@ -1001,7 +1018,7 @@ void GRAPH_OT_bake (wmOperatorType *ot) * which provides the necessary info for baking the sound */ typedef struct tSoundBakeInfo { - float* samples; + float *samples; int length; int cfra; } tSoundBakeInfo; @@ -1074,7 +1091,7 @@ static int graphkeys_sound_bake_exec(bContext *C, wmOperator *op) /* loop through all selected F-Curves, replacing its data with the sound samples */ for (ale= anim_data.first; ale; ale= ale->next) { FCurve *fcu= (FCurve *)ale->key_data; - + /* sample the sound */ fcurve_store_samples(fcu, &sbi, start, end, fcurve_samplingcb_sound); } @@ -1121,7 +1138,7 @@ void GRAPH_OT_sound_bake (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE|MOVIEFILE, FILE_SPECIAL); + WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPEN); RNA_def_float(ot->srna, "low", 0.0f, 0.0, 100000.0, "Lowest frequency", "", 0.1, 1000.00); RNA_def_float(ot->srna, "high", 100000.0, 0.0, 100000.0, "Highest frequency", "", 0.1, 1000.00); RNA_def_float(ot->srna, "attack", 0.005, 0.0, 2.0, "Attack time", "", 0.01, 0.1); @@ -1270,7 +1287,7 @@ void GRAPH_OT_extrapolation_type (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* id-props */ - RNA_def_enum(ot->srna, "type", prop_graphkeys_expo_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_graphkeys_expo_types, 0, "Type", ""); } /* ******************** Set Interpolation-Type Operator *********************** */ @@ -1339,7 +1356,7 @@ void GRAPH_OT_interpolation_type (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* id-props */ - RNA_def_enum(ot->srna, "type", beztriple_interpolation_mode_items, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", beztriple_interpolation_mode_items, 0, "Type", ""); } /* ******************** Set Handle-Type Operator *********************** */ @@ -1427,7 +1444,7 @@ void GRAPH_OT_handle_type (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* id-props */ - RNA_def_enum(ot->srna, "type", beztriple_handle_type_items, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", beztriple_handle_type_items, 0, "Type", ""); } /* ************************************************************************** */ @@ -1556,6 +1573,9 @@ static int graphkeys_framejump_exec(bContext *C, wmOperator *op) for (ale= anim_data.first; ale; ale= ale->next) { AnimData *adt= ANIM_nla_mapping_get(&ac, ale); + /* apply unit corrections */ + ANIM_unit_mapping_apply_fcurve(ac.scene, ale->id, ale->key_data, ANIM_UNITCONV_ONLYKEYS); + if (adt) { ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1); ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, bezt_calc_average, NULL); @@ -1564,6 +1584,8 @@ static int graphkeys_framejump_exec(bContext *C, wmOperator *op) else ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, bezt_calc_average, NULL); + /* unapply unit corrections */ + ANIM_unit_mapping_apply_fcurve(ac.scene, ale->id, ale->key_data, ANIM_UNITCONV_RESTORE|ANIM_UNITCONV_ONLYKEYS); } BLI_freelistN(&anim_data); @@ -1644,6 +1666,9 @@ static void snap_graph_keys(bAnimContext *ac, short mode) for (ale= anim_data.first; ale; ale= ale->next) { AnimData *adt= ANIM_nla_mapping_get(ac, ale); + /* apply unit corrections */ + ANIM_unit_mapping_apply_fcurve(ac->scene, ale->id, ale->key_data, 0); + if (adt) { ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1); ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, edit_cb, calchandles_fcurve); @@ -1651,7 +1676,11 @@ static void snap_graph_keys(bAnimContext *ac, short mode) } else ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, edit_cb, calchandles_fcurve); + + /* apply unit corrections */ + ANIM_unit_mapping_apply_fcurve(ac->scene, ale->id, ale->key_data, ANIM_UNITCONV_RESTORE); } + BLI_freelistN(&anim_data); } @@ -1686,7 +1715,7 @@ void GRAPH_OT_snap (wmOperatorType *ot) /* identifiers */ ot->name= "Snap Keys"; ot->idname= "GRAPH_OT_snap"; - ot->description= "Snap selected keyframes to the times specified."; + ot->description= "Snap selected keyframes to the chosen times/values."; /* api callbacks */ ot->invoke= WM_menu_invoke; @@ -1697,7 +1726,7 @@ void GRAPH_OT_snap (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* id-props */ - RNA_def_enum(ot->srna, "type", prop_graphkeys_snap_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_graphkeys_snap_types, 0, "Type", ""); } /* ******************** Mirror Keyframes Operator *********************** */ @@ -1761,6 +1790,9 @@ static void mirror_graph_keys(bAnimContext *ac, short mode) for (ale= anim_data.first; ale; ale= ale->next) { AnimData *adt= ANIM_nla_mapping_get(ac, ale); + /* apply unit corrections */ + ANIM_unit_mapping_apply_fcurve(ac->scene, ale->id, ale->key_data, ANIM_UNITCONV_ONLYKEYS); + if (adt) { ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1); ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, edit_cb, calchandles_fcurve); @@ -1768,7 +1800,11 @@ static void mirror_graph_keys(bAnimContext *ac, short mode) } else ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, edit_cb, calchandles_fcurve); + + /* unapply unit corrections */ + ANIM_unit_mapping_apply_fcurve(ac->scene, ale->id, ale->key_data, ANIM_UNITCONV_ONLYKEYS|ANIM_UNITCONV_RESTORE); } + BLI_freelistN(&anim_data); } @@ -1814,7 +1850,7 @@ void GRAPH_OT_mirror (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* id-props */ - RNA_def_enum(ot->srna, "type", prop_graphkeys_mirror_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_graphkeys_mirror_types, 0, "Type", ""); } /* ******************** Smooth Keyframes Operator *********************** */ @@ -1922,11 +1958,11 @@ static int graph_fmodifier_add_exec(bContext *C, wmOperator *op) type= RNA_enum_get(op->ptr, "type"); /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE| ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); if (RNA_boolean_get(op->ptr, "only_active")) filter |= ANIMFILTER_ACTIVE; else - filter |= ANIMFILTER_SEL; + filter |= (ANIMFILTER_SEL|ANIMFILTER_CURVEVISIBLE); ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); /* smooth keyframes */ diff --git a/source/blender/editors/space_graph/graph_select.c b/source/blender/editors/space_graph/graph_select.c index 8d2e2921b7f..b90d5a48d9a 100644 --- a/source/blender/editors/space_graph/graph_select.c +++ b/source/blender/editors/space_graph/graph_select.c @@ -109,6 +109,7 @@ static void deselect_graph_keys (bAnimContext *ac, short test, short sel) bAnimListElem *ale; int filter; + SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first; BeztEditData bed; BeztEditFunc test_cb, sel_cb; @@ -142,13 +143,18 @@ static void deselect_graph_keys (bAnimContext *ac, short test, short sel) /* Keyframes First */ ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, sel_cb, NULL); - /* deactivate the F-Curve, and deselect if deselecting keyframes. - * otherwise select the F-Curve too since we've selected all the keyframes - */ - if (sel == SELECT_SUBTRACT) - fcu->flag &= ~FCURVE_SELECTED; - else - fcu->flag |= FCURVE_SELECTED; + /* only change selection of channel when the visibility of keyframes doesn't depend on this */ + if ((sipo->flag & SIPO_SELCUVERTSONLY) == 0) { + /* deactivate the F-Curve, and deselect if deselecting keyframes. + * otherwise select the F-Curve too since we've selected all the keyframes + */ + if (sel == SELECT_SUBTRACT) + fcu->flag &= ~FCURVE_SELECTED; + else + fcu->flag |= FCURVE_SELECTED; + } + + /* always deactivate all F-Curves if we perform batch ops for selection */ fcu->flag &= ~FCURVE_ACTIVE; } @@ -214,6 +220,7 @@ static void borderselect_graphkeys (bAnimContext *ac, rcti rect, short mode, sho bAnimListElem *ale; int filter; + SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first; BeztEditData bed; BeztEditFunc ok_cb, select_cb; View2D *v2d= &ac->ar->v2d; @@ -240,32 +247,47 @@ static void borderselect_graphkeys (bAnimContext *ac, rcti rect, short mode, sho AnimData *adt= ANIM_nla_mapping_get(ac, ale); FCurve *fcu= (FCurve *)ale->key_data; - /* set horizontal range (if applicable) */ + /* apply unit corrections */ + ANIM_unit_mapping_apply_fcurve(ac->scene, ale->id, ale->key_data, ANIM_UNITCONV_ONLYKEYS); + + /* apply NLA mapping to all the keyframes, since it's easier than trying to + * guess when a callback might use something different + */ + if (adt) + ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1); + + /* set horizontal range (if applicable) + * NOTE: these values are only used for x-range and y-range but not region + * (which uses bed.data, i.e. rectf) + */ if (mode != BEZT_OK_VALUERANGE) { - /* if channel is mapped in NLA, apply correction */ - if (adt) { - bed.f1= BKE_nla_tweakedit_remap(adt, rectf.xmin, NLATIME_CONVERT_UNMAP); - bed.f2= BKE_nla_tweakedit_remap(adt, rectf.xmax, NLATIME_CONVERT_UNMAP); - } - else { - bed.f1= rectf.xmin; - bed.f2= rectf.xmax; - } + bed.f1= rectf.xmin; + bed.f2= rectf.xmax; } else { bed.f1= rectf.ymin; bed.f2= rectf.ymax; } - /* select keyframes that are in the appropriate places */ - ANIM_fcurve_keys_bezier_loop(&bed, fcu, ok_cb, select_cb, NULL); - - /* select the curve too - * NOTE: this should really only happen if the curve got touched... - */ - if (selectmode == SELECT_ADD) { - fcu->flag |= FCURVE_SELECTED; + /* firstly, check if any keyframes will be hit by this */ + if (ANIM_fcurve_keys_bezier_loop(&bed, fcu, NULL, ok_cb, NULL)) { + /* select keyframes that are in the appropriate places */ + ANIM_fcurve_keys_bezier_loop(&bed, fcu, ok_cb, select_cb, NULL); + + /* only change selection of channel when the visibility of keyframes doesn't depend on this */ + if ((sipo->flag & SIPO_SELCUVERTSONLY) == 0) { + /* select the curve too now that curve will be touched */ + if (selectmode == SELECT_ADD) + fcu->flag |= FCURVE_SELECTED; + } } + + /* un-apply NLA mapping from all the keyframes */ + if (adt) + ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 1, 1); + + /* unapply unit corrections */ + ANIM_unit_mapping_apply_fcurve(ac->scene, ale->id, ale->key_data, ANIM_UNITCONV_RESTORE|ANIM_UNITCONV_ONLYKEYS); } /* cleanup */ @@ -284,7 +306,7 @@ static int graphkeys_borderselect_exec(bContext *C, wmOperator *op) if (ANIM_animdata_get_context(C, &ac) == 0) return OPERATOR_CANCELLED; - if(RNA_int_get(op->ptr, "gesture_mode")==GESTURE_MODAL_SELECT) + if (RNA_int_get(op->ptr, "gesture_mode")==GESTURE_MODAL_SELECT) selectmode= SELECT_ADD; else selectmode= SELECT_SUBTRACT; @@ -578,7 +600,7 @@ static short findnearest_fcurve_vert (bAnimContext *ac, int mval[2], FCurve **fc * include the 'only selected' flag... */ filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY); - if (sipo->flag & SIPO_SELCUVERTSONLY) + if (sipo->flag & SIPO_SELCUVERTSONLY) // FIXME: this should really be check for by the filtering code... filter |= ANIMFILTER_SEL; ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); @@ -586,6 +608,9 @@ static short findnearest_fcurve_vert (bAnimContext *ac, int mval[2], FCurve **fc FCurve *fcu= (FCurve *)ale->key_data; AnimData *adt= ANIM_nla_mapping_get(ac, ale); + /* apply unit corrections */ + ANIM_unit_mapping_apply_fcurve(ac->scene, ale->id, ale->key_data, 0); + /* try to progressively get closer to the right point... */ if (fcu->bezt) { BezTriple *bezt1=fcu->bezt, *prevbezt=NULL; @@ -652,6 +677,9 @@ static short findnearest_fcurve_vert (bAnimContext *ac, int mval[2], FCurve **fc if (adt) ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 1, 1); } + + /* unapply unit corrections */ + ANIM_unit_mapping_apply_fcurve(ac->scene, ale->id, ale->key_data, ANIM_UNITCONV_RESTORE); } /* free channels */ @@ -664,6 +692,7 @@ static short findnearest_fcurve_vert (bAnimContext *ac, int mval[2], FCurve **fc /* option 1) select keyframe directly under mouse */ static void mouse_graph_keys (bAnimContext *ac, int mval[], short select_mode, short curves_only) { + SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first; FCurve *fcu; BezTriple *bezt; short handle; @@ -681,9 +710,15 @@ static void mouse_graph_keys (bAnimContext *ac, int mval[], short select_mode, s /* reset selection mode */ select_mode= SELECT_ADD; - /* deselect all other channels and keyframes */ - //ANIM_deselect_anim_channels(ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); + /* deselect all other keyframes */ deselect_graph_keys(ac, 0, SELECT_SUBTRACT); + + /* deselect other channels too, but only only do this if + * selection of channel when the visibility of keyframes + * doesn't depend on this + */ + if ((sipo->flag & SIPO_SELCUVERTSONLY) == 0) + ANIM_deselect_anim_channels(ac, ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); } /* if points can be selected on this F-Curve */ @@ -740,16 +775,19 @@ static void mouse_graph_keys (bAnimContext *ac, int mval[], short select_mode, s ANIM_fcurve_keys_bezier_loop(&bed, fcu, NULL, select_cb, NULL); } - /* select or deselect curve? */ - if (select_mode == SELECT_INVERT) - fcu->flag ^= FCURVE_SELECTED; - else if (select_mode == SELECT_ADD) - fcu->flag |= FCURVE_SELECTED; - - /* set active F-Curve (NOTE: sync the filter flags with findnearest_fcurve_vert) */ - if (fcu->flag & FCURVE_SELECTED) { - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY); - ANIM_set_active_channel(ac, ac->data, ac->datatype, filter, fcu, ANIMTYPE_FCURVE); + /* only change selection of channel when the visibility of keyframes doesn't depend on this */ + if ((sipo->flag & SIPO_SELCUVERTSONLY) == 0) { + /* select or deselect curve? */ + if (select_mode == SELECT_INVERT) + fcu->flag ^= FCURVE_SELECTED; + else if (select_mode == SELECT_ADD) + fcu->flag |= FCURVE_SELECTED; + + /* set active F-Curve (NOTE: sync the filter flags with findnearest_fcurve_vert) */ + if (fcu->flag & FCURVE_SELECTED) { + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY); + ANIM_set_active_channel(ac, ac->data, ac->datatype, filter, fcu, ANIMTYPE_FCURVE); + } } } @@ -760,6 +798,7 @@ static void graphkeys_mselect_leftright (bAnimContext *ac, short leftright, shor bAnimListElem *ale; int filter; + SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first; BeztEditFunc ok_cb, select_cb; BeztEditData bed; Scene *scene= ac->scene; @@ -769,9 +808,15 @@ static void graphkeys_mselect_leftright (bAnimContext *ac, short leftright, shor /* reset selection mode to add to selection */ select_mode= SELECT_ADD; - /* deselect all other channels and keyframes */ - ANIM_deselect_anim_channels(ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); + /* deselect all other keyframes */ deselect_graph_keys(ac, 0, SELECT_SUBTRACT); + + /* deselect other channels too, but only only do this if + * selection of channel when the visibility of keyframes + * doesn't depend on this + */ + if ((sipo->flag & SIPO_SELCUVERTSONLY) == 0) + ANIM_deselect_anim_channels(ac, ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); } /* set callbacks and editing data */ @@ -816,6 +861,7 @@ static void graphkeys_mselect_column (bAnimContext *ac, int mval[2], short selec bAnimListElem *ale; int filter; + SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first; BeztEditFunc select_cb, ok_cb; BeztEditData bed; FCurve *fcu; @@ -835,9 +881,15 @@ static void graphkeys_mselect_column (bAnimContext *ac, int mval[2], short selec /* reset selection mode to add to selection */ select_mode= SELECT_ADD; - /* deselect all other channels and keyframes */ - ANIM_deselect_anim_channels(ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); + /* deselect all other keyframes */ deselect_graph_keys(ac, 0, SELECT_SUBTRACT); + + /* deselect other channels too, but only only do this if + * selection of channel when the visibility of keyframes + * doesn't depend on this + */ + if ((sipo->flag & SIPO_SELCUVERTSONLY) == 0) + ANIM_deselect_anim_channels(ac, ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); } /* initialise keyframe editing data */ diff --git a/source/blender/editors/space_graph/graph_utils.c b/source/blender/editors/space_graph/graph_utils.c index 40fe3393a60..f642b284491 100644 --- a/source/blender/editors/space_graph/graph_utils.c +++ b/source/blender/editors/space_graph/graph_utils.c @@ -224,10 +224,10 @@ int graphop_editable_keyframes_poll (bContext *C) if (ANIM_animdata_get_context(C, &ac) == 0) return 0; - /* loop over the editable (selected + editable) F-Curves, and see if they're suitable + /* loop over the editable F-Curves, and see if they're suitable * stopping on the first successful match */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); items = ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); if (items == 0) return 0; diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c index cf99e3602dd..d6342011520 100644 --- a/source/blender/editors/space_graph/space_graph.c +++ b/source/blender/editors/space_graph/space_graph.c @@ -151,11 +151,11 @@ static SpaceLink *graph_new(const bContext *C) ar->v2d.cur= ar->v2d.tot; - ar->v2d.min[0]= 0.001f; - ar->v2d.min[1]= 0.001f; - + ar->v2d.min[0]= FLT_MIN; + ar->v2d.min[1]= FLT_MIN; + ar->v2d.max[0]= MAXFRAMEF; - ar->v2d.max[1]= 50000.0f; + ar->v2d.max[1]= FLT_MAX; ar->v2d.scroll= (V2D_SCROLL_BOTTOM|V2D_SCROLL_SCALE_HORIZONTAL); ar->v2d.scroll |= (V2D_SCROLL_LEFT|V2D_SCROLL_SCALE_VERTICAL); @@ -462,6 +462,8 @@ static void graph_listener(ScrArea *sa, wmNotifier *wmn) sipo->flag |= SIPO_TEMP_NEEDCHANSYNC; ED_area_tag_refresh(sa); break; + case ND_TRANSFORM: + break; /*do nothing*/ default: /* just redrawing the view will do */ ED_area_tag_redraw(sa); @@ -614,7 +616,7 @@ void ED_spacetype_ipo(void) /* regions: header */ art= MEM_callocN(sizeof(ARegionType), "spacetype graphedit region"); art->regionid = RGN_TYPE_HEADER; - art->minsizey= HEADERY; + art->prefsizey= HEADERY; 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; @@ -625,7 +627,7 @@ void ED_spacetype_ipo(void) /* regions: channels */ art= MEM_callocN(sizeof(ARegionType), "spacetype graphedit region"); art->regionid = RGN_TYPE_CHANNELS; - art->minsizex= 200+V2D_SCROLL_WIDTH; /* 200 is the 'standard', but due to scrollers, we want a bit more to fit the lock icons in */ + art->prefsizex= 200+V2D_SCROLL_WIDTH; /* 200 is the 'standard', but due to scrollers, we want a bit more to fit the lock icons in */ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES; art->listener= graph_region_listener; art->init= graph_channel_area_init; @@ -636,7 +638,7 @@ void ED_spacetype_ipo(void) /* regions: UI buttons */ art= MEM_callocN(sizeof(ARegionType), "spacetype graphedit region"); art->regionid = RGN_TYPE_UI; - art->minsizex= 200; + art->prefsizex= 200; art->keymapflag= ED_KEYMAP_UI; art->listener= graph_region_listener; art->init= graph_buttons_area_init; diff --git a/source/blender/editors/space_image/image_buttons.c b/source/blender/editors/space_image/image_buttons.c index 6b92fc3fe4f..94df99d9c8d 100644 --- a/source/blender/editors/space_image/image_buttons.c +++ b/source/blender/editors/space_image/image_buttons.c @@ -592,7 +592,7 @@ static void set_frames_cb(bContext *C, void *ima_v, void *iuser_v) if(ima->anim) { iuser->frames = IMB_anim_get_duration(ima->anim); - BKE_image_user_calc_imanr(iuser, scene->r.cfra, 0); + BKE_image_user_calc_frame(iuser, scene->r.cfra, 0); } } @@ -888,26 +888,30 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propn uiblock_layer_pass_arrow_buttons(layout, ima->rr, iuser); } else if(ima->source != IMA_SRC_GENERATED) { - ibuf= BKE_image_acquire_ibuf(ima, iuser, &lock); - image_info(ima, ibuf, str); - BKE_image_release_ibuf(ima, lock); - uiItemL(layout, str, 0); + if(compact == 0) { + ibuf= BKE_image_acquire_ibuf(ima, iuser, &lock); + image_info(ima, ibuf, str); + BKE_image_release_ibuf(ima, lock); + uiItemL(layout, str, 0); + } } if(ima->source != IMA_SRC_GENERATED) { - uiItemS(layout); + if(compact == 0) { /* background image view doesnt need these */ + uiItemS(layout); - split= uiLayoutSplit(layout, 0, 0); + split= uiLayoutSplit(layout, 0, 0); - col= uiLayoutColumn(split, 0); - uiItemR(col, NULL, 0, &imaptr, "fields", 0); - row= uiLayoutRow(col, 0); - uiItemR(row, NULL, 0, &imaptr, "field_order", UI_ITEM_R_EXPAND); - uiLayoutSetActive(row, RNA_boolean_get(&imaptr, "fields")); + col= uiLayoutColumn(split, 0); + uiItemR(col, NULL, 0, &imaptr, "fields", 0); + row= uiLayoutRow(col, 0); + uiItemR(row, NULL, 0, &imaptr, "field_order", UI_ITEM_R_EXPAND); + uiLayoutSetActive(row, RNA_boolean_get(&imaptr, "fields")); - col= uiLayoutColumn(split, 0); - uiItemR(col, NULL, 0, &imaptr, "antialias", 0); - uiItemR(col, NULL, 0, &imaptr, "premultiply", 0); + col= uiLayoutColumn(split, 0); + uiItemR(col, NULL, 0, &imaptr, "antialias", 0); + uiItemR(col, NULL, 0, &imaptr, "premultiply", 0); + } } if(ELEM(ima->source, IMA_SRC_MOVIE, IMA_SRC_SEQUENCE)) { @@ -1036,5 +1040,26 @@ void IMAGE_OT_properties(wmOperatorType *ot) ot->flag= 0; } +static int image_scopes(bContext *C, wmOperator *op) +{ + ScrArea *sa= CTX_wm_area(C); + ARegion *ar= image_has_scope_region(sa); + + if(ar) + ED_region_toggle_hidden(C, ar); + + return OPERATOR_FINISHED; +} +void IMAGE_OT_scopes(wmOperatorType *ot) +{ + ot->name= "Scopes"; + ot->idname= "IMAGE_OT_scopes"; + + ot->exec= image_scopes; + ot->poll= ED_operator_image_active; + + /* flags */ + ot->flag= 0; +} diff --git a/source/blender/editors/space_image/image_draw.c b/source/blender/editors/space_image/image_draw.c index 46ec41eda58..6e883405ef8 100644 --- a/source/blender/editors/space_image/image_draw.c +++ b/source/blender/editors/space_image/image_draw.c @@ -68,47 +68,6 @@ #define HEADER_HEIGHT 18 -#if 0 -static int image_preview_active(SpaceImage *sima, Scene *scene, float *xim, float *yim) -{ - /* only when compositor shows, and image handler set */ - if(sima->image && sima->image->type==IMA_TYPE_COMPOSITE) { - /* XXX panels .. */ -#if 0 - short a; - - for(a=0; a<SPACE_MAXHANDLER; a+=2) { - if(sima->blockhandler[a] == IMAGE_HANDLER_PREVIEW) { - if(xim) *xim= (scene->r.size*scene->r.xsch)/100; - if(yim) *yim= (scene->r.size*scene->r.ysch)/100; - return 1; - } - } -#endif - } - return 0; -} -#endif - -/* are there curves? curves visible? and curves do something? */ -static int image_curves_active(SpaceImage *sima) -{ - if(sima->cumap) { - if(curvemapping_RGBA_does_something(sima->cumap)) { - /* XXX panels .. */ -#if 0 - short a; - for(a=0; a<SPACE_MAXHANDLER; a+=2) { - if(sima->blockhandler[a] == IMAGE_HANDLER_CURVES) - return 1; - } -#endif - } - } - - return 0; -} - static void image_verify_buffer_float(SpaceImage *sima, Image *ima, ImBuf *ibuf, int color_manage) { /* detect if we need to redo the curve map. @@ -120,18 +79,13 @@ static void image_verify_buffer_float(SpaceImage *sima, Image *ima, ImBuf *ibuf, if(ibuf->rect_float) { if(ibuf->rect==NULL) { - if(image_curves_active(sima)) { - curvemapping_do_ibuf(sima->cumap, ibuf); - } - else { - if (color_manage) { - if (ima && ima->source == IMA_SRC_VIEWER) - ibuf->profile = IB_PROFILE_SRGB; - } else { - ibuf->profile = IB_PROFILE_NONE; - } - IMB_rect_from_float(ibuf); + if (color_manage) { + if (ima && ima->source == IMA_SRC_VIEWER) + ibuf->profile = IB_PROFILE_LINEAR_RGB; + } else { + ibuf->profile = IB_PROFILE_NONE; } + IMB_rect_from_float(ibuf); } } } @@ -625,7 +579,7 @@ static void draw_image_paint_helpers(SpaceImage *sima, ARegion *ar, Scene *scene brush= paint_brush(&scene->toolsettings->imapaint.paint); - if(brush && (scene->toolsettings->imapaint.tool == PAINT_TOOL_CLONE)) { + if(brush && (brush->imagepaint_tool == PAINT_TOOL_CLONE)) { /* this is not very efficient, but glDrawPixels doesn't allow drawing with alpha */ clonerect= get_alpha_clone_image(scene, &w, &h); @@ -701,7 +655,7 @@ void draw_image_main(SpaceImage *sima, ARegion *ar, Scene *scene) /* render info */ if(ibuf && ima && show_render) draw_render_info(ima, ar); - + /* XXX integrate this code */ #if 0 if(ibuf) { diff --git a/source/blender/editors/space_image/image_intern.h b/source/blender/editors/space_image/image_intern.h index a33475c1213..b7f81245296 100644 --- a/source/blender/editors/space_image/image_intern.h +++ b/source/blender/editors/space_image/image_intern.h @@ -44,6 +44,7 @@ struct bNodeTree; /* space_image.c */ struct ARegion *image_has_buttons_region(struct ScrArea *sa); +struct ARegion *image_has_scope_region(struct ScrArea *sa); /* image_header.c */ void image_header_buttons(const struct bContext *C, struct ARegion *ar); @@ -88,6 +89,7 @@ void draw_uvedit_main(struct SpaceImage *sima, struct ARegion *ar, struct Scene struct ImageUser *ntree_get_active_iuser(struct bNodeTree *ntree); void image_buttons_register(struct ARegionType *art); void IMAGE_OT_properties(struct wmOperatorType *ot); +void IMAGE_OT_scopes(struct wmOperatorType *ot); #endif /* ED_IMAGE_INTERN_H */ diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index 897b02404ef..7dd26c31658 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -214,8 +214,21 @@ static int view_pan_exec(bContext *C, wmOperator *op) static int view_pan_invoke(bContext *C, wmOperator *op, wmEvent *event) { - view_pan_init(C, op, event); - return OPERATOR_RUNNING_MODAL; + if (event->type == MOUSEPAN) { + SpaceImage *sima= CTX_wm_space_image(C); + float offset[2]; + + offset[0]= (event->x - event->prevx)/sima->zoom; + offset[1]= (event->y - event->prevy)/sima->zoom; + RNA_float_set_array(op->ptr, "offset", offset); + + view_pan_exec(C, op); + return OPERATOR_FINISHED; + } + else { + view_pan_init(C, op, event); + return OPERATOR_RUNNING_MODAL; + } } static int view_pan_modal(bContext *C, wmOperator *op, wmEvent *event) @@ -331,8 +344,22 @@ static int view_zoom_exec(bContext *C, wmOperator *op) static int view_zoom_invoke(bContext *C, wmOperator *op, wmEvent *event) { - view_zoom_init(C, op, event); - return OPERATOR_RUNNING_MODAL; + if (event->type == MOUSEZOOM) { + SpaceImage *sima= CTX_wm_space_image(C); + ARegion *ar= CTX_wm_region(C); + float factor; + + factor= 1.0 + (event->x-event->prevx+event->y-event->prevy)/300.0f; + RNA_float_set(op->ptr, "factor", factor); + sima_zoom_set(sima, ar, sima->zoom*factor); + ED_area_tag_redraw(CTX_wm_area(C)); + + return OPERATOR_FINISHED; + } + else { + view_zoom_init(C, op, event); + return OPERATOR_RUNNING_MODAL; + } } static int view_zoom_modal(bContext *C, wmOperator *op, wmEvent *event) @@ -649,7 +676,8 @@ static int open_exec(bContext *C, wmOperator *op) char str[FILE_MAX]; RNA_string_get(op->ptr, "path", str); - ima= BKE_add_image_file(str, scene->r.cfra); + /* default to frame 1 if there's no scene in context */ + ima= BKE_add_image_file(str, scene ? scene->r.cfra : 1); if(!ima) { if(op->customdata) MEM_freeN(op->customdata); @@ -676,7 +704,8 @@ static int open_exec(bContext *C, wmOperator *op) // XXX other users? BKE_image_signal(ima, (sima)? &sima->iuser: NULL, IMA_SIGNAL_RELOAD); - + WM_event_add_notifier(C, NC_IMAGE|NA_EDITED, ima); + MEM_freeN(op->customdata); return OPERATOR_FINISHED; @@ -712,7 +741,7 @@ void IMAGE_OT_open(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPEN); } /******************** replace image operator ********************/ @@ -765,7 +794,7 @@ void IMAGE_OT_replace(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPEN); } /******************** save image as operator ********************/ @@ -784,8 +813,7 @@ static void save_image_doit(bContext *C, SpaceImage *sima, Scene *scene, wmOpera BLI_convertstringframe(name, scene->r.cfra); if(scene->r.scemode & R_EXTENSION) { - BKE_add_image_extension(scene, name, sima->imtypenr); - BKE_add_image_extension(scene, name, sima->imtypenr); + BKE_add_image_extension(name, sima->imtypenr); } /* enforce user setting for RGB or RGBA, but skip BW */ @@ -934,7 +962,7 @@ void IMAGE_OT_save_as(wmOperatorType *ot) /* properties */ RNA_def_enum(ot->srna, "file_type", image_file_type_items, R_PNG, "File Type", "File type to save image as."); - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_SAVE); } /******************** save image operator ********************/ @@ -1051,7 +1079,7 @@ static int save_sequence_exec(bContext *C, wmOperator *op) break; } - printf("Saved: %s\n", ibuf->name); + BKE_reportf(op->reports, RPT_INFO, "Saved: %s\n", ibuf->name); ibuf->userflags &= ~IB_BITMAPDIRTY; } } diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index 4622962bac5..5a584782237 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -75,6 +75,243 @@ #include "image_intern.h" +/**************************** common state *****************************/ + +/* note; image_panel_properties() uses pointer to sima->image directly */ +Image *ED_space_image(SpaceImage *sima) +{ + return sima->image; +} + +/* called to assign images to UV faces */ +void ED_space_image_set(bContext *C, SpaceImage *sima, Scene *scene, Object *obedit, Image *ima) +{ + ED_uvedit_assign_image(scene, obedit, ima, sima->image); + + /* change the space ima after because uvedit_face_visible uses the space ima + * to check if the face is displayed in UV-localview */ + sima->image= ima; + + if(ima == NULL || ima->type==IMA_TYPE_R_RESULT || ima->type==IMA_TYPE_COMPOSITE) + sima->flag &= ~SI_DRAWTOOL; + + if(sima->image) + BKE_image_signal(sima->image, &sima->iuser, IMA_SIGNAL_USER_NEW_IMAGE); + + if(sima->image && sima->image->id.us==0) + sima->image->id.us= 1; + + if(C) { + if(obedit) + WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); + + ED_area_tag_redraw(CTX_wm_area(C)); + } +} + +ImBuf *ED_space_image_acquire_buffer(SpaceImage *sima, void **lock_r) +{ + ImBuf *ibuf; + + if(sima && sima->image) { +#if 0 + if(sima->image->type==IMA_TYPE_R_RESULT && BIF_show_render_spare()) + return BIF_render_spare_imbuf(); + else +#endif + ibuf= BKE_image_acquire_ibuf(sima->image, &sima->iuser, lock_r); + + if(ibuf && (ibuf->rect || ibuf->rect_float)) + return ibuf; + } + + return NULL; +} + +void ED_space_image_release_buffer(SpaceImage *sima, void *lock) +{ + if(sima && sima->image) + BKE_image_release_ibuf(sima->image, lock); +} + +int ED_space_image_has_buffer(SpaceImage *sima) +{ + ImBuf *ibuf; + void *lock; + int has_buffer; + + ibuf= ED_space_image_acquire_buffer(sima, &lock); + has_buffer= (ibuf != NULL); + ED_space_image_release_buffer(sima, lock); + + return has_buffer; +} + +void ED_image_size(Image *ima, int *width, int *height) +{ + ImBuf *ibuf= NULL; + void *lock; + + if(ima) + ibuf= BKE_image_acquire_ibuf(ima, NULL, &lock); + + if(ibuf && ibuf->x > 0 && ibuf->y > 0) { + *width= ibuf->x; + *height= ibuf->y; + } + else { + *width= 256; + *height= 256; + } + + if(ima) + BKE_image_release_ibuf(ima, lock); +} + +void ED_space_image_size(SpaceImage *sima, int *width, int *height) +{ + Scene *scene= sima->iuser.scene; + ImBuf *ibuf; + void *lock; + + ibuf= ED_space_image_acquire_buffer(sima, &lock); + + if(ibuf && ibuf->x > 0 && ibuf->y > 0) { + *width= ibuf->x; + *height= ibuf->y; + } + else if(sima->image && sima->image->type==IMA_TYPE_R_RESULT && scene) { + /* not very important, just nice */ + *width= (scene->r.xsch*scene->r.size)/100; + *height= (scene->r.ysch*scene->r.size)/100; + } + /* I know a bit weak... but preview uses not actual image size */ + // XXX else if(image_preview_active(sima, width, height)); + else { + *width= 256; + *height= 256; + } + + ED_space_image_release_buffer(sima, lock); +} + +void ED_image_aspect(Image *ima, float *aspx, float *aspy) +{ + *aspx= *aspy= 1.0; + + if((ima == NULL) || (ima->type == IMA_TYPE_R_RESULT) || (ima->type == IMA_TYPE_COMPOSITE) || + (ima->aspx==0.0 || ima->aspy==0.0)) + return; + + /* x is always 1 */ + *aspy = ima->aspy/ima->aspx; +} + +void ED_space_image_aspect(SpaceImage *sima, float *aspx, float *aspy) +{ + ED_image_aspect(ED_space_image(sima), aspx, aspy); +} + +void ED_space_image_zoom(SpaceImage *sima, ARegion *ar, float *zoomx, float *zoomy) +{ + int width, height; + + ED_space_image_size(sima, &width, &height); + + *zoomx= (float)(ar->winrct.xmax - ar->winrct.xmin + 1)/(float)((ar->v2d.cur.xmax - ar->v2d.cur.xmin)*width); + *zoomy= (float)(ar->winrct.ymax - ar->winrct.ymin + 1)/(float)((ar->v2d.cur.ymax - ar->v2d.cur.ymin)*height); +} + +void ED_space_image_uv_aspect(SpaceImage *sima, float *aspx, float *aspy) +{ + int w, h; + + ED_space_image_aspect(sima, aspx, aspy); + ED_space_image_size(sima, &w, &h); + + *aspx *= (float)w/256.0f; + *aspy *= (float)h/256.0f; +} + +void ED_image_uv_aspect(Image *ima, float *aspx, float *aspy) +{ + int w, h; + + ED_image_aspect(ima, aspx, aspy); + ED_image_size(ima, &w, &h); + + *aspx *= (float)w; + *aspy *= (float)h; +} + +int ED_space_image_show_render(SpaceImage *sima) +{ + return (sima->image && ELEM(sima->image->type, IMA_TYPE_R_RESULT, IMA_TYPE_COMPOSITE)); +} + +int ED_space_image_show_paint(SpaceImage *sima) +{ + if(ED_space_image_show_render(sima)) + return 0; + + return (sima->flag & SI_DRAWTOOL); +} + +int ED_space_image_show_uvedit(SpaceImage *sima, Object *obedit) +{ + if(ED_space_image_show_render(sima)) + return 0; + if(ED_space_image_show_paint(sima)) + return 0; + + if(obedit && obedit->type == OB_MESH) { + EditMesh *em = BKE_mesh_get_editmesh(obedit->data); + int ret; + + ret = EM_texFaceCheck(em); + + BKE_mesh_end_editmesh(obedit->data, em); + return ret; + } + + return 0; +} + +int ED_space_image_show_uvshadow(SpaceImage *sima, Object *obedit) +{ + if(ED_space_image_show_render(sima)) + return 0; + + if(ED_space_image_show_paint(sima)) + if(obedit && obedit->type == OB_MESH) { + EditMesh *em = BKE_mesh_get_editmesh(obedit->data); + int ret; + + ret = EM_texFaceCheck(em); + + BKE_mesh_end_editmesh(obedit->data, em); + return ret; + } + + return 0; +} + + + +static void image_histogram_tag_refresh(ScrArea *sa) +{ + SpaceImage *sima= (SpaceImage *)sa->spacedata.first; + ARegion *ar; + + /* only while histogram is visible */ + for (ar=sa->regionbase.first; ar; ar=ar->next) { + if (ar->regiontype == RGN_TYPE_PREVIEW && ar->flag & RGN_FLAG_HIDDEN) + return; + } + + sima->hist.ok=0; +} + /* ******************** manage regions ********************* */ ARegion *image_has_buttons_region(ScrArea *sa) @@ -104,6 +341,35 @@ ARegion *image_has_buttons_region(ScrArea *sa) return arnew; } +ARegion *image_has_scope_region(ScrArea *sa) +{ + ARegion *ar, *arnew; + + for(ar= sa->regionbase.first; ar; ar= ar->next) + if(ar->regiontype==RGN_TYPE_PREVIEW) + return ar; + + /* add subdiv level; after buttons */ + for(ar= sa->regionbase.first; ar; ar= ar->next) + if(ar->regiontype==RGN_TYPE_UI) + break; + + /* is error! */ + if(ar==NULL) return NULL; + + arnew= MEM_callocN(sizeof(ARegion), "scopes for image"); + + BLI_insertlinkafter(&sa->regionbase, ar, arnew); + arnew->regiontype= RGN_TYPE_PREVIEW; + arnew->alignment= RGN_ALIGN_RIGHT; + + arnew->flag = RGN_FLAG_HIDDEN; + + image_histogram_tag_refresh(sa); + + return arnew; +} + /* ******************** default callbacks for image space ***************** */ static SpaceLink *image_new(const bContext *C) @@ -135,6 +401,14 @@ static SpaceLink *image_new(const bContext *C) ar->alignment= RGN_ALIGN_LEFT; ar->flag = RGN_FLAG_HIDDEN; + /* scopes */ + ar= MEM_callocN(sizeof(ARegion), "buttons for image"); + + BLI_addtail(&simage->regionbase, ar); + ar->regiontype= RGN_TYPE_PREVIEW; + ar->alignment= RGN_ALIGN_RIGHT; + ar->flag = RGN_FLAG_HIDDEN; + /* main area */ ar= MEM_callocN(sizeof(ARegion), "main area for image"); @@ -157,10 +431,14 @@ static void image_free(SpaceLink *sl) } -/* spacetype; init callback */ +/* spacetype; init callback, add handlers */ static void image_init(struct wmWindowManager *wm, ScrArea *sa) { + ListBase *lb= WM_dropboxmap_find("Image", SPACE_IMAGE, 0); + /* add drop boxes */ + WM_event_add_dropbox_handler(&sa->handlers, lb); + } static SpaceLink *image_duplicate(SpaceLink *sl) @@ -201,6 +479,7 @@ void image_operatortypes(void) WM_operatortype_append(IMAGE_OT_toolbox); WM_operatortype_append(IMAGE_OT_properties); + WM_operatortype_append(IMAGE_OT_scopes); } void image_keymap(struct wmKeyConfig *keyconf) @@ -213,18 +492,21 @@ void image_keymap(struct wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "IMAGE_OT_save", SKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "IMAGE_OT_save_as", F3KEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "IMAGE_OT_properties", NKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "IMAGE_OT_scopes", PKEY, KM_PRESS, 0, 0); keymap= WM_keymap_find(keyconf, "Image", SPACE_IMAGE, 0); WM_keymap_add_item(keymap, "IMAGE_OT_view_all", HOMEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "IMAGE_OT_view_selected", PADPERIOD, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "IMAGE_OT_view_pan", MIDDLEMOUSE, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "IMAGE_OT_view_pan", MOUSEPAN, 0, 0, 0); WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_in", WHEELINMOUSE, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_out", WHEELOUTMOUSE, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_in", PADPLUSKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_out", PADMINUS, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom", MIDDLEMOUSE, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom", MOUSEZOOM, 0, 0, 0); RNA_float_set(WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_ratio", PAD8, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 8.0f); RNA_float_set(WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_ratio", PAD4, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 4.0f); @@ -243,6 +525,31 @@ void image_keymap(struct wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "IMAGE_OT_toolbox", SPACEKEY, KM_PRESS, 0, 0); } +/* dropboxes */ +static int image_drop_poll(bContext *C, wmDrag *drag, wmEvent *event) +{ + if(drag->type==WM_DRAG_PATH) + if(ELEM(drag->icon, ICON_FILE_IMAGE, ICON_FILE_BLANK)) /* rule might not work? */ + return 1; + return 0; +} + +static void image_drop_copy(wmDrag *drag, wmDropBox *drop) +{ + /* copy drag path to properties */ + RNA_string_set(drop->ptr, "path", drag->path); +} + +/* area+region dropbox definition */ +static void image_dropboxes(void) +{ + ListBase *lb= WM_dropboxmap_find("Image", SPACE_IMAGE, 0); + + WM_dropbox_add(lb, "IMAGE_OT_open", image_drop_poll, image_drop_copy); +} + + + static void image_refresh(const bContext *C, ScrArea *sa) { SpaceImage *sima= CTX_wm_space_image(C); @@ -278,6 +585,8 @@ static void image_refresh(const bContext *C, ScrArea *sa) static void image_listener(ScrArea *sa, wmNotifier *wmn) { + SpaceImage *sima= (SpaceImage *)sa->spacedata.first; + /* context changes */ switch(wmn->category) { case NC_SCENE: @@ -285,13 +594,19 @@ static void image_listener(ScrArea *sa, wmNotifier *wmn) case ND_MODE: case ND_RENDER_RESULT: case ND_COMPO_RESULT: + if (ED_space_image_show_render(sima)) + image_histogram_tag_refresh(sa); ED_area_tag_refresh(sa); ED_area_tag_redraw(sa); break; } break; case NC_IMAGE: - ED_area_tag_redraw(sa); + if (wmn->reference == sima->image) { + image_histogram_tag_refresh(sa); + ED_area_tag_refresh(sa); + ED_area_tag_redraw(sa); + } break; case NC_SPACE: if(wmn->data == ND_SPACE_IMAGE) @@ -399,6 +714,7 @@ static void image_main_area_init(wmWindowManager *wm, ARegion *ar) WM_event_add_keymap_handler(&ar->handlers, keymap); keymap= WM_keymap_find(wm->defaultconf, "Image", SPACE_IMAGE, 0); WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + } static void image_main_area_draw(const bContext *C, ARegion *ar) @@ -484,6 +800,54 @@ static void image_buttons_area_listener(ARegion *ar, wmNotifier *wmn) } } +/* *********************** scopes region ************************ */ + +/* add handlers, stuff you only do once or on area/region changes */ +static void image_scope_area_init(wmWindowManager *wm, ARegion *ar) +{ + wmKeyMap *keymap; + + ED_region_panels_init(wm, ar); + + keymap= WM_keymap_find(wm->defaultconf, "Image Generic", SPACE_IMAGE, 0); + WM_event_add_keymap_handler(&ar->handlers, keymap); +} + +static void image_scope_area_draw(const bContext *C, ARegion *ar) +{ + SpaceImage *sima= CTX_wm_space_image(C); + void *lock; + ImBuf *ibuf= ED_space_image_acquire_buffer(sima, &lock); + if(ibuf) + histogram_update(&sima->hist, ibuf); + ED_space_image_release_buffer(sima, lock); + + ED_region_panels(C, ar, 1, NULL, -1); +} + +static void image_scope_area_listener(ARegion *ar, wmNotifier *wmn) +{ + /* context changes */ + switch(wmn->category) { + case NC_SCENE: + switch(wmn->data) { + case ND_MODE: + case ND_RENDER_RESULT: + case ND_COMPO_RESULT: + ED_region_tag_redraw(ar); + break; + } + break; + case NC_IMAGE: + ED_region_tag_redraw(ar); + break; + case NC_NODE: + ED_region_tag_redraw(ar); + break; + + } +} + /************************* header region **************************/ /* add handlers, stuff you only do once or on area/region changes */ @@ -514,6 +878,7 @@ void ED_spacetype_image(void) st->duplicate= image_duplicate; st->operatortypes= image_operatortypes; st->keymap= image_keymap; + st->dropboxes= image_dropboxes; st->refresh= image_refresh; st->listener= image_listener; st->context= image_context; @@ -531,7 +896,7 @@ void ED_spacetype_image(void) /* regions: listview/buttons */ art= MEM_callocN(sizeof(ARegionType), "spacetype image region"); art->regionid = RGN_TYPE_UI; - art->minsizex= 220; // XXX + art->prefsizex= 220; // XXX art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_FRAMES; art->listener= image_buttons_area_listener; art->init= image_buttons_area_init; @@ -539,11 +904,21 @@ void ED_spacetype_image(void) BLI_addhead(&st->regiontypes, art); image_buttons_register(art); + + /* regions: statistics/scope buttons */ + art= MEM_callocN(sizeof(ARegionType), "spacetype image region"); + art->regionid = RGN_TYPE_PREVIEW; + art->minsizex= 220; // XXX + art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_FRAMES; + art->listener= image_scope_area_listener; + art->init= image_scope_area_init; + art->draw= image_scope_area_draw; + BLI_addhead(&st->regiontypes, art); /* regions: header */ art= MEM_callocN(sizeof(ARegionType), "spacetype image region"); art->regionid = RGN_TYPE_HEADER; - art->minsizey= HEADERY; + art->prefsizey= HEADERY; 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; @@ -553,224 +928,3 @@ void ED_spacetype_image(void) BKE_spacetype_register(st); } -/**************************** common state *****************************/ - -/* note; image_panel_properties() uses pointer to sima->image directly */ -Image *ED_space_image(SpaceImage *sima) -{ - return sima->image; -} - -/* called to assign images to UV faces */ -void ED_space_image_set(bContext *C, SpaceImage *sima, Scene *scene, Object *obedit, Image *ima) -{ - ED_uvedit_assign_image(scene, obedit, ima, sima->image); - - /* change the space ima after because uvedit_face_visible uses the space ima - * to check if the face is displayed in UV-localview */ - sima->image= ima; - - if(ima == NULL || ima->type==IMA_TYPE_R_RESULT || ima->type==IMA_TYPE_COMPOSITE) - sima->flag &= ~SI_DRAWTOOL; - - if(sima->image) - BKE_image_signal(sima->image, &sima->iuser, IMA_SIGNAL_USER_NEW_IMAGE); - - if(sima->image && sima->image->id.us==0) - sima->image->id.us= 1; - - if(C) { - if(obedit) - WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); - - ED_area_tag_redraw(CTX_wm_area(C)); - } -} - -ImBuf *ED_space_image_acquire_buffer(SpaceImage *sima, void **lock_r) -{ - ImBuf *ibuf; - - if(sima && sima->image) { -#if 0 - if(sima->image->type==IMA_TYPE_R_RESULT && BIF_show_render_spare()) - return BIF_render_spare_imbuf(); - else -#endif - ibuf= BKE_image_acquire_ibuf(sima->image, &sima->iuser, lock_r); - - if(ibuf && (ibuf->rect || ibuf->rect_float)) - return ibuf; - } - - return NULL; -} - -void ED_space_image_release_buffer(SpaceImage *sima, void *lock) -{ - if(sima && sima->image) - BKE_image_release_ibuf(sima->image, lock); -} - -int ED_space_image_has_buffer(SpaceImage *sima) -{ - ImBuf *ibuf; - void *lock; - int has_buffer; - - ibuf= ED_space_image_acquire_buffer(sima, &lock); - has_buffer= (ibuf != NULL); - ED_space_image_release_buffer(sima, lock); - - return has_buffer; -} - -void ED_image_size(Image *ima, int *width, int *height) -{ - ImBuf *ibuf= NULL; - void *lock; - - if(ima) - ibuf= BKE_image_acquire_ibuf(ima, NULL, &lock); - - if(ibuf && ibuf->x > 0 && ibuf->y > 0) { - *width= ibuf->x; - *height= ibuf->y; - } - else { - *width= 256; - *height= 256; - } - - if(ima) - BKE_image_release_ibuf(ima, lock); -} - -void ED_space_image_size(SpaceImage *sima, int *width, int *height) -{ - Scene *scene= sima->iuser.scene; - ImBuf *ibuf; - void *lock; - - ibuf= ED_space_image_acquire_buffer(sima, &lock); - - if(ibuf && ibuf->x > 0 && ibuf->y > 0) { - *width= ibuf->x; - *height= ibuf->y; - } - else if(sima->image && sima->image->type==IMA_TYPE_R_RESULT && scene) { - /* not very important, just nice */ - *width= (scene->r.xsch*scene->r.size)/100; - *height= (scene->r.ysch*scene->r.size)/100; - } - /* I know a bit weak... but preview uses not actual image size */ - // XXX else if(image_preview_active(sima, width, height)); - else { - *width= 256; - *height= 256; - } - - ED_space_image_release_buffer(sima, lock); -} - -void ED_image_aspect(Image *ima, float *aspx, float *aspy) -{ - *aspx= *aspy= 1.0; - - if((ima == NULL) || (ima->type == IMA_TYPE_R_RESULT) || (ima->type == IMA_TYPE_COMPOSITE) || - (ima->aspx==0.0 || ima->aspy==0.0)) - return; - - /* x is always 1 */ - *aspy = ima->aspy/ima->aspx; -} - -void ED_space_image_aspect(SpaceImage *sima, float *aspx, float *aspy) -{ - ED_image_aspect(ED_space_image(sima), aspx, aspy); -} - -void ED_space_image_zoom(SpaceImage *sima, ARegion *ar, float *zoomx, float *zoomy) -{ - int width, height; - - ED_space_image_size(sima, &width, &height); - - *zoomx= (float)(ar->winrct.xmax - ar->winrct.xmin)/(float)((ar->v2d.cur.xmax - ar->v2d.cur.xmin)*width); - *zoomy= (float)(ar->winrct.ymax - ar->winrct.ymin)/(float)((ar->v2d.cur.ymax - ar->v2d.cur.ymin)*height); -} - -void ED_space_image_uv_aspect(SpaceImage *sima, float *aspx, float *aspy) -{ - int w, h; - - ED_space_image_aspect(sima, aspx, aspy); - ED_space_image_size(sima, &w, &h); - - *aspx *= (float)w/256.0f; - *aspy *= (float)h/256.0f; -} - -void ED_image_uv_aspect(Image *ima, float *aspx, float *aspy) -{ - int w, h; - - ED_image_aspect(ima, aspx, aspy); - ED_image_size(ima, &w, &h); - - *aspx *= (float)w; - *aspy *= (float)h; -} - -int ED_space_image_show_render(SpaceImage *sima) -{ - return (sima->image && ELEM(sima->image->type, IMA_TYPE_R_RESULT, IMA_TYPE_COMPOSITE)); -} - -int ED_space_image_show_paint(SpaceImage *sima) -{ - if(ED_space_image_show_render(sima)) - return 0; - - return (sima->flag & SI_DRAWTOOL); -} - -int ED_space_image_show_uvedit(SpaceImage *sima, Object *obedit) -{ - if(ED_space_image_show_render(sima)) - return 0; - if(ED_space_image_show_paint(sima)) - return 0; - - if(obedit && obedit->type == OB_MESH) { - EditMesh *em = BKE_mesh_get_editmesh(obedit->data); - int ret; - - ret = EM_texFaceCheck(em); - - BKE_mesh_end_editmesh(obedit->data, em); - return ret; - } - - return 0; -} - -int ED_space_image_show_uvshadow(SpaceImage *sima, Object *obedit) -{ - if(ED_space_image_show_render(sima)) - return 0; - - if(ED_space_image_show_paint(sima)) - if(obedit && obedit->type == OB_MESH) { - EditMesh *em = BKE_mesh_get_editmesh(obedit->data); - int ret; - - ret = EM_texFaceCheck(em); - - BKE_mesh_end_editmesh(obedit->data, em); - return ret; - } - - return 0; -} - diff --git a/source/blender/editors/space_info/info_ops.c b/source/blender/editors/space_info/info_ops.c index 13bcd3276af..5d8ff3849e6 100644 --- a/source/blender/editors/space_info/info_ops.c +++ b/source/blender/editors/space_info/info_ops.c @@ -196,21 +196,12 @@ void FILE_OT_unpack_all(wmOperatorType *ot) static int make_paths_relative_exec(bContext *C, wmOperator *op) { - char txtname[24]; /* text block name */ - int tot, changed, failed, linked; - if(!G.relbase_valid) { BKE_report(op->reports, RPT_WARNING, "Can't set relative paths with an unsaved blend file."); return OPERATOR_CANCELLED; } - txtname[0] = '\0'; - makeFilesRelative(txtname, &tot, &changed, &failed, &linked); - - if(failed) - BKE_reportf(op->reports, RPT_ERROR, "Total files %i|Changed %i|Failed %i, See Text \"%s\"|Linked %i", tot, changed, failed, txtname, linked); - else - BKE_reportf(op->reports, RPT_INFO, "Total files %i|Changed %i|Failed %i|Linked %i", tot, changed, failed, linked); + makeFilesRelative(G.sce, op->reports); return OPERATOR_FINISHED; } @@ -232,22 +223,12 @@ void FILE_OT_make_paths_relative(wmOperatorType *ot) static int make_paths_absolute_exec(bContext *C, wmOperator *op) { - char txtname[24]; /* text block name */ - int tot, changed, failed, linked; - if(!G.relbase_valid) { BKE_report(op->reports, RPT_WARNING, "Can't set absolute paths with an unsaved blend file."); return OPERATOR_CANCELLED; } - txtname[0] = '\0'; - makeFilesAbsolute(txtname, &tot, &changed, &failed, &linked); - - if(failed) - BKE_reportf(op->reports, RPT_ERROR, "Total files %i|Changed %i|Failed %i, See Text \"%s\"|Linked %i", tot, changed, failed, txtname, linked); - else - BKE_reportf(op->reports, RPT_INFO, "Total files %i|Changed %i|Failed %i|Linked %i", tot, changed, failed, linked); - + makeFilesAbsolute(G.sce, op->reports); return OPERATOR_FINISHED; } @@ -273,12 +254,7 @@ static int report_missing_files_exec(bContext *C, wmOperator *op) txtname[0] = '\0'; /* run the missing file check */ - checkMissingFiles(txtname); - - if(txtname[0] == '\0') - BKE_report(op->reports, RPT_INFO, "No external files missing."); - else - BKE_reportf(op->reports, RPT_ERROR, "Missing files listed in Text \"%s\"", txtname); + checkMissingFiles(G.sce, op->reports); return OPERATOR_FINISHED; } @@ -303,7 +279,7 @@ static int find_missing_files_exec(bContext *C, wmOperator *op) char *path; path= RNA_string_get_alloc(op->ptr, "path", NULL, 0); - findMissingFiles(path); + findMissingFiles(path, G.sce); MEM_freeN(path); return OPERATOR_FINISHED; @@ -330,5 +306,5 @@ void FILE_OT_find_missing_files(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, 0, FILE_SPECIAL); + WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPEN); } diff --git a/source/blender/editors/space_info/space_info.c b/source/blender/editors/space_info/space_info.c index d9662339bb2..9f7a74465e0 100644 --- a/source/blender/editors/space_info/space_info.c +++ b/source/blender/editors/space_info/space_info.c @@ -116,12 +116,16 @@ static SpaceLink *info_duplicate(SpaceLink *sl) /* add handlers, stuff you only do once or on area/region changes */ static void info_main_area_init(wmWindowManager *wm, ARegion *ar) { - ED_region_panels_init(wm, ar); } static void info_main_area_draw(const bContext *C, ARegion *ar) { - ED_region_panels(C, ar, 1, NULL, -1); + float col[3]; + + /* clear and setup matrix */ + UI_GetThemeColor3fv(TH_BACK, col); + glClearColor(col[0], col[1], col[2], 0.0); + glClear(GL_COLOR_BUFFER_BIT); } void info_operatortypes(void) @@ -204,7 +208,8 @@ void ED_spacetype_info(void) /* regions: header */ art= MEM_callocN(sizeof(ARegionType), "spacetype info region"); art->regionid = RGN_TYPE_HEADER; - art->minsizey= HEADERY; + art->prefsizey= HEADERY; + 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; diff --git a/source/blender/editors/space_logic/Makefile b/source/blender/editors/space_logic/Makefile index d5709993368..90cd73bd62a 100644 --- a/source/blender/editors/space_logic/Makefile +++ b/source/blender/editors/space_logic/Makefile @@ -48,6 +48,7 @@ CPPFLAGS += -I../../makesrna CPPFLAGS += -I../../imbuf CPPFLAGS += -I../../python CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include +CPPFLAGS += -I../interface # own include diff --git a/source/blender/editors/space_logic/SConscript b/source/blender/editors/space_logic/SConscript index e32fcc1b535..307d229fb3f 100644 --- a/source/blender/editors/space_logic/SConscript +++ b/source/blender/editors/space_logic/SConscript @@ -5,7 +5,7 @@ sources = env.Glob('*.c') incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf' incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include' -incs += ' ../../makesrna' +incs += ' ../../makesrna ../interface' defs = [] diff --git a/source/blender/editors/space_logic/logic_buttons.c b/source/blender/editors/space_logic/logic_buttons.c index e159af65c74..cf3fb889118 100644 --- a/source/blender/editors/space_logic/logic_buttons.c +++ b/source/blender/editors/space_logic/logic_buttons.c @@ -56,6 +56,7 @@ #include "BIF_glutil.h" #include "RNA_access.h" +#include "RNA_define.h" #include "WM_api.h" #include "WM_types.h" @@ -64,6 +65,7 @@ #include "UI_resources.h" #include "UI_view2d.h" +#include "interface_intern.h" #include "logic_intern.h" #if 0 @@ -143,5 +145,91 @@ void LOGIC_OT_properties(wmOperatorType *ot) ot->flag= 0; } +/* Remove Logic Bricks Connections */ +/* ********************** Cut Link operator ***************** */ +#define LINK_RESOL 12 +static int cut_links_intersect(uiLinkLine *line, float mcoords[][2], int tot) +{ + float coord_array[LINK_RESOL+1][2]; + int i, b; + rcti rectlink; + + rectlink.xmin= (int) (line->from->x1 + line->from->x2) / 2; + rectlink.ymin= (int) (line->from->y1 + line->from->y2) / 2; + rectlink.xmax= (int) (line->to->x1 + line->to->x2) / 2; + rectlink.ymax= (int) (line->to->y1 + line->to->y2) / 2; + + if(ui_link_bezier_points(&rectlink, coord_array, LINK_RESOL)){ + for(i=0; i<tot-1; i++) + for(b=0; b<LINK_RESOL-1; b++) + if(isect_line_line_v2(mcoords[i], mcoords[i+1], coord_array[b], coord_array[b+1]) > 0) + return 1; + } + return 0; +} + +static int cut_links_exec(bContext *C, wmOperator *op) +{ + ARegion *ar= CTX_wm_region(C); + float mcoords[256][2]; + int i= 0; + + RNA_BEGIN(op->ptr, itemptr, "path") { + float loc[2]; + + RNA_float_get_array(&itemptr, "loc", loc); + UI_view2d_region_to_view(&ar->v2d, (short)loc[0], (short)loc[1], + &mcoords[i][0], &mcoords[i][1]); + i++; + if(i>= 256) break; + } + RNA_END; + + if (i>1) { + uiBlock *block; + uiLinkLine *line, *nline; + uiBut *but; + for(block= ar->uiblocks.first; block; block= block->next) + { + but= block->buttons.first; + while(but) { + if(but->type==LINK && but->link) { + for(line= but->link->lines.first; line; line= nline) { + nline= line->next; + + if(cut_links_intersect(line, mcoords, i)) { + ui_delete_linkline(line, but); + } + } + } + but= but->next; + } + } + return OPERATOR_FINISHED; + } + return OPERATOR_CANCELLED|OPERATOR_PASS_THROUGH; +} + +void LOGIC_OT_links_cut(wmOperatorType *ot) +{ + PropertyRNA *prop; + + ot->name= "Cut links"; + ot->idname= "LOGIC_OT_links_cut"; + + ot->invoke= WM_gesture_lines_invoke; + ot->modal= WM_gesture_lines_modal; + ot->exec= cut_links_exec; + + ot->poll= ED_operator_logic_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + prop= RNA_def_property(ot->srna, "path", PROP_COLLECTION, PROP_NONE); + RNA_def_property_struct_runtime(prop, &RNA_OperatorMousePath); + /* internal */ + RNA_def_int(ot->srna, "cursor", BC_KNIFECURSOR, 0, INT_MAX, "Cursor", "", 0, INT_MAX); +} diff --git a/source/blender/editors/space_logic/logic_intern.h b/source/blender/editors/space_logic/logic_intern.h index ac5d11a3ee1..eba1d332acd 100644 --- a/source/blender/editors/space_logic/logic_intern.h +++ b/source/blender/editors/space_logic/logic_intern.h @@ -50,6 +50,7 @@ void logic_header_buttons(const struct bContext *C, struct ARegion *ar); /* logic_buttons.c */ void logic_buttons_register(struct ARegionType *art); void LOGIC_OT_properties(struct wmOperatorType *ot); +void LOGIC_OT_links_cut(struct wmOperatorType *ot); /* logic_window.c */ void logic_buttons(struct bContext *C, struct ARegion *ar); diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index 3e4c76f993f..ae14fe59a4e 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -375,7 +375,7 @@ void do_logic_buts(bContext *C, void *arg, int event) switch(event) { case B_SETPROP: - /* check for inconsistant types */ + /* check for inconsistent types */ ob->gameflag &= ~(OB_SECTOR|OB_MAINACTOR|OB_DYNAMIC|OB_ACTOR); break; @@ -1436,6 +1436,8 @@ static short draw_sensorbuttons(Object *ob, bSensor *sens, uiBlock *block, short /* Line 2: type selection. The number are a bit mangled to get * proper compatibility with older .blend files. */ + /* Any sensor type default is 0 but the ms enum starts in 1. + * Therefore the mosue sensor is initialized to 1 in sca.c */ str= "Type %t|Left button %x1|Middle button %x2|" "Right button %x4|Wheel Up %x5|Wheel Down %x6|Movement %x8|Mouse over %x16|Mouse over any%x32"; uiDefButS(block, MENU, B_REDR, str, xco+10, yco-44, (width*0.8f)-20, 19, diff --git a/source/blender/editors/space_logic/space_logic.c b/source/blender/editors/space_logic/space_logic.c index 06e92ee5fce..abe20477914 100644 --- a/source/blender/editors/space_logic/space_logic.c +++ b/source/blender/editors/space_logic/space_logic.c @@ -183,7 +183,7 @@ static SpaceLink *logic_duplicate(SpaceLink *sl) void logic_operatortypes(void) { WM_operatortype_append(LOGIC_OT_properties); - + WM_operatortype_append(LOGIC_OT_links_cut); } void logic_keymap(struct wmKeyConfig *keyconf) @@ -191,6 +191,7 @@ void logic_keymap(struct wmKeyConfig *keyconf) wmKeyMap *keymap= WM_keymap_find(keyconf, "Logic Editor", SPACE_LOGIC, 0); WM_keymap_add_item(keymap, "LOGIC_OT_properties", NKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "LOGIC_OT_links_cut", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); } static void logic_refresh(const bContext *C, ScrArea *sa) @@ -356,7 +357,7 @@ void ED_spacetype_logic(void) /* regions: listview/buttons */ art= MEM_callocN(sizeof(ARegionType), "spacetype logic region"); art->regionid = RGN_TYPE_UI; - art->minsizex= 220; // XXX + art->prefsizex= 220; // XXX art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_FRAMES; art->listener= logic_listener; art->init= logic_buttons_area_init; @@ -368,7 +369,7 @@ void ED_spacetype_logic(void) /* regions: header */ art= MEM_callocN(sizeof(ARegionType), "spacetype logic region"); art->regionid = RGN_TYPE_HEADER; - art->minsizey= HEADERY; + art->prefsizey= HEADERY; 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 df791297967..71717a5432c 100644 --- a/source/blender/editors/space_nla/nla_buttons.c +++ b/source/blender/editors/space_nla/nla_buttons.c @@ -97,7 +97,8 @@ static void do_nla_region_buttons(bContext *C, void *arg, int event) } /* default for now */ - WM_event_add_notifier(C, NC_SCENE|NC_OBJECT|ND_TRANSFORM, NULL); + WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); + WM_event_add_notifier(C, NC_SCENE|ND_TRANSFORM, NULL); } static int nla_panel_context(const bContext *C, PointerRNA *adt_ptr, PointerRNA *nlt_ptr, PointerRNA *strip_ptr) @@ -363,6 +364,7 @@ static void nla_panel_actclip(const bContext *C, Panel *pa) uiItemL(column, "Action Extents:", 0); uiItemR(column, "Start Frame", 0, &strip_ptr, "action_start_frame", 0); uiItemR(column, "End Frame", 0, &strip_ptr, "action_end_frame", 0); + uiItemO(column, NULL, 0, "NLA_OT_action_sync_length"); /* action usage */ column= uiLayoutColumn(layout, 1); diff --git a/source/blender/editors/space_nla/nla_channels.c b/source/blender/editors/space_nla/nla_channels.c index 5f9d6b03efc..1666a169f12 100644 --- a/source/blender/editors/space_nla/nla_channels.c +++ b/source/blender/editors/space_nla/nla_channels.c @@ -203,7 +203,7 @@ static int mouse_nla_channels (bAnimContext *ac, float x, int channel_index, sho } else { /* select AnimData block by itself */ - ANIM_deselect_anim_channels(ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); + ANIM_deselect_anim_channels(ac, ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); ale->adt->flag |= ADT_UI_SELECTED; } @@ -262,7 +262,7 @@ static int mouse_nla_channels (bAnimContext *ac, float x, int channel_index, sho } else { /* select F-Curve by itself */ - ANIM_deselect_anim_channels(ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); + ANIM_deselect_anim_channels(ac, ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); nlt->flag |= NLATRACK_SELECTED; } diff --git a/source/blender/editors/space_nla/nla_edit.c b/source/blender/editors/space_nla/nla_edit.c index 4422bc2d158..7e2aa6b5709 100644 --- a/source/blender/editors/space_nla/nla_edit.c +++ b/source/blender/editors/space_nla/nla_edit.c @@ -1181,6 +1181,85 @@ void NLA_OT_move_down (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } +/* ******************** Sync Action Length Operator ***************************** */ +/* Recalculate the extents of the action ranges used for the selected strips */ + +static int nlaedit_sync_actlen_exec (bContext *C, wmOperator *op) +{ + bAnimContext ac; + + ListBase anim_data = {NULL, NULL}; + bAnimListElem *ale; + int filter; + short active_only= RNA_boolean_get(op->ptr, "active"); + + /* get editor data */ + if (ANIM_animdata_get_context(C, &ac) == 0) + return OPERATOR_CANCELLED; + + /* get a list of the editable tracks being shown in the NLA */ + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_NLATRACKS | ANIMFILTER_FOREDIT); + if (active_only) filter |= ANIMFILTER_ACTIVE; + ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); + + /* for each NLA-Track, apply scale of all selected strips */ + for (ale= anim_data.first; ale; ale= ale->next) { + NlaTrack *nlt= (NlaTrack *)ale->data; + NlaStrip *strip; + + for (strip= nlt->strips.first; strip; strip= strip->next) { + /* strip selection/active status check */ + if (active_only) { + if ((strip->flag & NLASTRIP_FLAG_ACTIVE) == 0) + continue; + } + else { + if ((strip->flag & NLASTRIP_FLAG_SELECT) == 0) + continue; + } + + /* must be action-clip only (transitions don't have scale) */ + if (strip->type == NLASTRIP_TYPE_CLIP) { + if (strip->act == NULL) + continue; + + /* recalculate the length of the action */ + calc_action_range(strip->act, &strip->actstart, &strip->actend, 0); + + /* adjust the strip extents in response to this */ + BKE_nlastrip_recalculate_bounds(strip); + } + } + } + + /* free temp data */ + BLI_freelistN(&anim_data); + + /* set notifier that things have changed */ + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + + /* done */ + return OPERATOR_FINISHED; +} + +void NLA_OT_action_sync_length (wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Sync Action Length"; + ot->idname= "NLA_OT_action_sync_length"; + ot->description= "Sychronise the length of the referenced Action with the lengths used in the strip."; + + /* api callbacks */ + ot->exec= nlaedit_sync_actlen_exec; + ot->poll= ED_operator_nla_active; // XXX: is this satisfactory... probably requires a check for active strip... + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + ot->prop= RNA_def_boolean(ot->srna, "active", 1, "Active Strip Only", "Only sync the active length for the active strip."); +} + /* ******************** Apply Scale Operator ***************************** */ /* Reset the scaling of the selected strips to 1.0f */ @@ -1484,7 +1563,7 @@ void NLA_OT_snap (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "type", prop_nlaedit_snap_types, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_nlaedit_snap_types, 0, "Type", ""); } /* *********************************************** */ diff --git a/source/blender/editors/space_nla/nla_intern.h b/source/blender/editors/space_nla/nla_intern.h index ca50452b442..3b73f783c41 100644 --- a/source/blender/editors/space_nla/nla_intern.h +++ b/source/blender/editors/space_nla/nla_intern.h @@ -103,6 +103,8 @@ void NLA_OT_mute_toggle(wmOperatorType *ot); void NLA_OT_move_up(wmOperatorType *ot); void NLA_OT_move_down(wmOperatorType *ot); +void NLA_OT_action_sync_length(wmOperatorType *ot); + void NLA_OT_apply_scale(wmOperatorType *ot); void NLA_OT_clear_scale(wmOperatorType *ot); diff --git a/source/blender/editors/space_nla/nla_ops.c b/source/blender/editors/space_nla/nla_ops.c index bec3a003b1e..32408abcdeb 100644 --- a/source/blender/editors/space_nla/nla_ops.c +++ b/source/blender/editors/space_nla/nla_ops.c @@ -157,6 +157,8 @@ void nla_operatortypes(void) WM_operatortype_append(NLA_OT_move_up); WM_operatortype_append(NLA_OT_move_down); + WM_operatortype_append(NLA_OT_action_sync_length); + WM_operatortype_append(NLA_OT_apply_scale); WM_operatortype_append(NLA_OT_clear_scale); diff --git a/source/blender/editors/space_nla/nla_select.c b/source/blender/editors/space_nla/nla_select.c index 801434c4794..f705922c039 100644 --- a/source/blender/editors/space_nla/nla_select.c +++ b/source/blender/editors/space_nla/nla_select.c @@ -442,7 +442,7 @@ static void mouse_nla_strips (bContext *C, bAnimContext *ac, int mval[2], short deselect_nla_strips(ac, 0, SELECT_SUBTRACT); /* deselect all other channels first */ - ANIM_deselect_anim_channels(ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); + ANIM_deselect_anim_channels(ac, ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); /* Highlight NLA-Track */ if (ale->type == ANIMTYPE_NLATRACK) { @@ -492,7 +492,7 @@ static void nlaedit_mselect_leftright (bContext *C, bAnimContext *ac, short left select_mode= SELECT_ADD; /* deselect all other channels and keyframes */ - ANIM_deselect_anim_channels(ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); + ANIM_deselect_anim_channels(ac, ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR); deselect_nla_strips(ac, 0, SELECT_SUBTRACT); } diff --git a/source/blender/editors/space_nla/space_nla.c b/source/blender/editors/space_nla/space_nla.c index b384a30de56..0cffef049b7 100644 --- a/source/blender/editors/space_nla/space_nla.c +++ b/source/blender/editors/space_nla/space_nla.c @@ -106,6 +106,7 @@ ARegion *nla_has_buttons_region(ScrArea *sa) static SpaceLink *nla_new(const bContext *C) { Scene *scene= CTX_data_scene(C); + ScrArea *sa= CTX_wm_area(C); ARegion *ar; SpaceNla *snla; @@ -151,7 +152,7 @@ static SpaceLink *nla_new(const bContext *C) ar->regiontype= RGN_TYPE_WINDOW; ar->v2d.tot.xmin= (float)(SFRA-10); - ar->v2d.tot.ymin= -500.0f; + ar->v2d.tot.ymin= (float)(-sa->winy)/3.0f; ar->v2d.tot.xmax= (float)(EFRA+10); ar->v2d.tot.ymax= 0.0f; @@ -485,13 +486,14 @@ static void nla_listener(ScrArea *sa, wmNotifier *wmn) ED_area_tag_refresh(sa); break; case NC_OBJECT: - /*switch (wmn->data) { - case ND_BONE_SELECT: - case ND_BONE_ACTIVE: + switch (wmn->data) { + case ND_TRANSFORM: + /* do nothing */ + break; + default: ED_area_tag_refresh(sa); break; - }*/ - ED_area_tag_refresh(sa); + } break; case NC_SPACE: if(wmn->data == ND_SPACE_NLA) @@ -530,7 +532,7 @@ void ED_spacetype_nla(void) /* regions: header */ art= MEM_callocN(sizeof(ARegionType), "spacetype nla region"); art->regionid = RGN_TYPE_HEADER; - art->minsizey= HEADERY; + art->prefsizey= HEADERY; art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->init= nla_header_area_init; @@ -541,7 +543,7 @@ void ED_spacetype_nla(void) /* regions: channels */ art= MEM_callocN(sizeof(ARegionType), "spacetype nla region"); art->regionid = RGN_TYPE_CHANNELS; - art->minsizex= 200; + art->prefsizex= 200; art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; art->init= nla_channel_area_init; @@ -553,7 +555,7 @@ void ED_spacetype_nla(void) /* regions: UI buttons */ art= MEM_callocN(sizeof(ARegionType), "spacetype nla region"); art->regionid = RGN_TYPE_UI; - art->minsizex= 200; + art->prefsizex= 200; art->keymapflag= ED_KEYMAP_UI; art->listener= nla_region_listener; art->init= nla_buttons_area_init; diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c index 4c634c20440..fe5c7bca3a6 100644 --- a/source/blender/editors/space_node/drawnode.c +++ b/source/blender/editors/space_node/drawnode.c @@ -94,54 +94,13 @@ #include "node_intern.h" -/* ****************** GENERAL CALLBACKS FOR NODES ***************** */ - -#if 0 -/* XXX not used yet, make compiler happy :) */ -static void node_group_alone_cb(bContext *C, void *node_v, void *unused_v) -{ - bNode *node= node_v; - - nodeCopyGroup(node); - - // allqueue(REDRAWNODE, 0); -} /* ****************** BUTTON CALLBACKS FOR ALL TREES ***************** */ -static void node_buts_group(uiLayout *layout, bContext *C, PointerRNA *ptr) +void node_buts_group(uiLayout *layout, bContext *C, PointerRNA *ptr) { - uiBlock *block= uiLayoutAbsoluteBlock(layout); - bNode *node= ptr->data; - rctf *butr= &node->butr; - - if(node->id) { - uiBut *bt; - short width; - - uiBlockBeginAlign(block); - - /* name button */ - width= (short)(butr->xmax-butr->xmin - (node->id->us>1?19.0f:0.0f)); - bt= uiDefBut(block, TEX, B_NOP, "NT:", - (short)butr->xmin, (short)butr->ymin, width, 19, - node->id->name+2, 0.0, 19.0, 0, 0, "NodeTree name"); - uiButSetFunc(bt, node_ID_title_cb, node, NULL); - - /* user amount */ - if(node->id->us>1) { - char str1[32]; - sprintf(str1, "%d", node->id->us); - bt= uiDefBut(block, BUT, B_NOP, str1, - (short)butr->xmax-19, (short)butr->ymin, 19, 19, - NULL, 0, 0, 0, 0, "Displays number of users."); - uiButSetFunc(bt, node_group_alone_cb, node, NULL); - } - - uiBlockEndAlign(block); - } + uiTemplateIDBrowse(layout, C, ptr, "nodetree", NULL, NULL, ""); } -#endif static void node_buts_value(uiLayout *layout, bContext *C, PointerRNA *ptr) { @@ -166,6 +125,7 @@ static void node_buts_rgb(uiLayout *layout, bContext *C, PointerRNA *ptr) RNA_property_collection_lookup_int(ptr, prop, 0, &sockptr); col = uiLayoutColumn(layout, 0); + uiTemplateColorWheel(col, &sockptr, "default_value", 1, 0); uiItemR(col, "", 0, &sockptr, "default_value", 0); } @@ -545,16 +505,33 @@ static void node_composit_buts_image(uiLayout *layout, bContext *C, PointerRNA * static void node_composit_buts_renderlayers(uiLayout *layout, bContext *C, PointerRNA *ptr) { bNode *node= ptr->data; - uiLayout *col; - + uiLayout *col, *row; + PointerRNA op_ptr; + PointerRNA scn_ptr; + PropertyRNA *prop; + const char *layer_name; + char scene_name[19]; + uiTemplateID(layout, C, ptr, "scene", NULL, NULL, NULL); if(!node->id) return; col= uiLayoutColumn(layout, 0); - uiItemR(col, "", 0, ptr, "layer", 0); + row = uiLayoutRow(col, 0); + uiItemR(row, "", 0, ptr, "layer", 0); - /* XXX Missing 're-render this layer' button - needs completely new implementation */ + prop = RNA_struct_find_property(ptr, "layer"); + if (!(RNA_property_enum_identifier(C, ptr, prop, RNA_property_enum_get(ptr, prop), &layer_name))) + return; + + scn_ptr = RNA_pointer_get(ptr, "scene"); + RNA_string_get(&scn_ptr, "name", scene_name); + + WM_operator_properties_create(&op_ptr, "SCREEN_OT_render"); + RNA_string_set(&op_ptr, "layer", layer_name); + RNA_string_set(&op_ptr, "scene", scene_name); + uiItemFullO(row, "", ICON_RENDER_STILL, "SCREEN_OT_render", op_ptr.data, WM_OP_INVOKE_DEFAULT, 0); + } @@ -936,6 +913,56 @@ static void node_composit_buts_view_levels(uiLayout *layout, bContext *C, Pointe uiItemR(layout, NULL, 0, ptr, "channel", UI_ITEM_R_EXPAND); } +static void node_composit_buts_colorbalance(uiLayout *layout, bContext *C, PointerRNA *ptr) +{ + uiLayout *split, *col, *row; + + uiItemR(layout, NULL, 0, ptr, "correction_formula", 0); + + if (RNA_enum_get(ptr, "correction_formula")== 0) { + + split = uiLayoutSplit(layout, 0, 0); + col = uiLayoutColumn(split, 0); + uiTemplateColorWheel(col, ptr, "lift", 1, 1); + row = uiLayoutRow(col, 0); + uiItemR(row, NULL, 0, ptr, "lift", 0); + + col = uiLayoutColumn(split, 0); + uiTemplateColorWheel(col, ptr, "gamma", 1, 1); + row = uiLayoutRow(col, 0); + uiItemR(row, NULL, 0, ptr, "gamma", 0); + + col = uiLayoutColumn(split, 0); + uiTemplateColorWheel(col, ptr, "gain", 1, 1); + row = uiLayoutRow(col, 0); + uiItemR(row, NULL, 0, ptr, "gain", 0); + + } else { + + split = uiLayoutSplit(layout, 0, 0); + col = uiLayoutColumn(split, 0); + uiTemplateColorWheel(col, ptr, "offset", 1, 1); + row = uiLayoutRow(col, 0); + uiItemR(row, NULL, 0, ptr, "offset", 0); + + col = uiLayoutColumn(split, 0); + uiTemplateColorWheel(col, ptr, "power", 1, 1); + row = uiLayoutRow(col, 0); + uiItemR(row, NULL, 0, ptr, "power", 0); + + col = uiLayoutColumn(split, 0); + uiTemplateColorWheel(col, ptr, "slope", 1, 1); + row = uiLayoutRow(col, 0); + uiItemR(row, NULL, 0, ptr, "slope", 0); + } + +} + +static void node_composit_buts_huecorrect(uiLayout *layout, bContext *C, PointerRNA *ptr) +{ + uiTemplateCurveMapping(layout, ptr, "mapping", 'h', 0, 0); +} + /* only once called */ static void node_composit_set_butfunc(bNodeType *ntype) { @@ -1065,9 +1092,15 @@ static void node_composit_set_butfunc(bNodeType *ntype) case CMP_NODE_PREMULKEY: ntype->uifunc= node_composit_buts_premulkey; break; - case CMP_NODE_VIEW_LEVELS: + case CMP_NODE_VIEW_LEVELS: ntype->uifunc=node_composit_buts_view_levels; break; + case CMP_NODE_COLORBALANCE: + ntype->uifunc=node_composit_buts_colorbalance; + break; + case CMP_NODE_HUECORRECT: + ntype->uifunc=node_composit_buts_huecorrect; + break; default: ntype->uifunc= NULL; } @@ -1251,7 +1284,7 @@ void draw_nodespace_back_pix(ARegion *ar, SpaceNode *snode, int color_manage) if(!ibuf->rect) { if(color_manage) - ibuf->profile= IB_PROFILE_SRGB; + ibuf->profile = IB_PROFILE_LINEAR_RGB; else ibuf->profile = IB_PROFILE_NONE; IMB_rect_from_float(ibuf); diff --git a/source/blender/editors/space_node/node_draw.c b/source/blender/editors/space_node/node_draw.c index 59085ce19cd..03bc8340810 100644 --- a/source/blender/editors/space_node/node_draw.c +++ b/source/blender/editors/space_node/node_draw.c @@ -109,22 +109,9 @@ void ED_node_changed_update(ID *id, bNode *node) NodeTagChanged(edittree, node); /* don't use NodeTagIDChanged, it gives far too many recomposites for image, scene layers, ... */ - /* not the best implementation of the world... but we need it to work now :) */ - if(node->type==CMP_NODE_R_LAYERS && node->custom2) { - /* add event for this window (after render curarea can be changed) */ - //addqueue(curarea->win, UI_BUT_EVENT, B_NODE_TREE_EXEC); - - //composite_node_render(snode, node); - //snode_handle_recalc(snode); - - /* add another event, a render can go fullscreen and open new window */ - //addqueue(curarea->win, UI_BUT_EVENT, B_NODE_TREE_EXEC); - } - else { - node= node_tree_get_editgroup(nodetree); - if(node) - NodeTagIDChanged(nodetree, node->id); - } + node= node_tree_get_editgroup(nodetree); + if(node) + NodeTagIDChanged(nodetree, node->id); WM_main_add_notifier(NC_SCENE|ND_NODES, id); } @@ -161,6 +148,36 @@ static void node_scaling_widget(int color_id, float aspect, float xmin, float ym fdrawline(xmin+dx, ymin+aspect, xmax, ymax-dy+aspect); } +static void node_uiblocks_init(const bContext *C, bNodeTree *ntree) +{ + bNode *node; + char str[32]; + + /* add node uiBlocks in reverse order - prevents events going to overlapping nodes */ + + /* process selected nodes first so they're at the start of the uiblocks list */ + for(node= ntree->nodes.last; node; node= node->prev) { + + if (node->flag & NODE_SELECT) { + /* ui block */ + sprintf(str, "node buttons %p", node); + node->block= uiBeginBlock(C, CTX_wm_region(C), str, UI_EMBOSS); + uiBlockSetHandleFunc(node->block, do_node_internal_buttons, node); + } + } + + /* then the rest */ + for(node= ntree->nodes.last; node; node= node->prev) { + + if (!(node->flag & (NODE_GROUP_EDIT|NODE_SELECT))) { + /* ui block */ + sprintf(str, "node buttons %p", node); + node->block= uiBeginBlock(C, CTX_wm_region(C), str, UI_EMBOSS); + uiBlockSetHandleFunc(node->block, do_node_internal_buttons, node); + } + } +} + /* based on settings in node, sets drawing rect info. each redraw! */ static void node_update(const bContext *C, bNodeTree *ntree, bNode *node) { @@ -169,7 +186,6 @@ static void node_update(const bContext *C, bNodeTree *ntree, bNode *node) bNodeSocket *nsock; float dy= node->locy; int buty; - char str[32]; /* header */ dy-= NODE_DY; @@ -236,12 +252,7 @@ static void node_update(const bContext *C, bNodeTree *ntree, bNode *node) /* XXX ugly hack, typeinfo for group is generated */ if(node->type == NODE_GROUP) - ; // XXX node->typeinfo->uifunc= node_buts_group; - - /* ui block */ - sprintf(str, "node buttons %p", node); - node->block= uiBeginBlock(C, CTX_wm_region(C), str, UI_EMBOSS); - uiBlockSetHandleFunc(node->block, do_node_internal_buttons, node); + node->typeinfo->uifunc= node_buts_group; /* buttons rect? */ if((node->flag & NODE_OPTIONS) && node->typeinfo->uifunc) { @@ -290,7 +301,6 @@ static void node_update_hidden(const bContext *C, bNode *node) bNodeSocket *nsock; float rad, drad, hiddenrad= HIDDEN_RAD; int totin=0, totout=0, tot; - char str[32]; /* calculate minimal radius */ for(nsock= node->inputs.first; nsock; nsock= nsock->next) @@ -331,11 +341,6 @@ static void node_update_hidden(const bContext *C, bNode *node) rad+= drad; } } - - /* ui block */ - sprintf(str, "node buttons %p", node); - node->block= uiBeginBlock(C, CTX_wm_region(C), str, UI_EMBOSS); - uiBlockSetHandleFunc(node->block, do_node_internal_buttons, node); } static int node_get_colorid(bNode *node) @@ -368,10 +373,14 @@ static void node_update_group(const bContext *C, bNodeTree *ntree, bNode *gnode) rctf *rect= &gnode->totr; int counter; + /* init ui blocks for sub-nodetrees */ + node_uiblocks_init(C, ngroup); + /* center them, is a bit of abuse of locx and locy though */ for(node= ngroup->nodes.first; node; node= node->next) { node->locx+= gnode->locx; node->locy+= gnode->locy; + if(node->flag & NODE_HIDDEN) node_update_hidden(C, node); else @@ -504,32 +513,20 @@ static void socket_circle_draw(bNodeSocket *sock, float size) { int col[3]; - /* choose color based on sock flags */ - if(sock->flag & SELECT) { - if(sock->flag & SOCK_SEL) { - col[0]= 240; col[1]= 200; col[2]= 40;} - else if(sock->type==SOCK_VALUE) { - col[0]= 200; col[1]= 200; col[2]= 200;} - else if(sock->type==SOCK_VECTOR) { - col[0]= 140; col[1]= 140; col[2]= 240;} - else if(sock->type==SOCK_RGBA) { - col[0]= 240; col[1]= 240; col[2]= 100;} - else { - col[0]= 140; col[1]= 240; col[2]= 140;} + if(sock->type==-1) { + col[0]= 0; col[1]= 0; col[2]= 0; + } + else if(sock->type==SOCK_VALUE) { + col[0]= 160; col[1]= 160; col[2]= 160; } - else if(sock->flag & SOCK_SEL) { - col[0]= 200; col[1]= 160; col[2]= 0;} - else { - if(sock->type==-1) { - col[0]= 0; col[1]= 0; col[2]= 0;} - else if(sock->type==SOCK_VALUE) { - col[0]= 160; col[1]= 160; col[2]= 160;} - else if(sock->type==SOCK_VECTOR) { - col[0]= 100; col[1]= 100; col[2]= 200;} - else if(sock->type==SOCK_RGBA) { - col[0]= 200; col[1]= 200; col[2]= 40;} - else { - col[0]= 100; col[1]= 200; col[2]= 100;} + else if(sock->type==SOCK_VECTOR) { + col[0]= 100; col[1]= 100; col[2]= 200; + } + else if(sock->type==SOCK_RGBA) { + col[0]= 200; col[1]= 200; col[2]= 40; + } + else { + col[0]= 100; col[1]= 200; col[2]= 100; } circle_draw(sock->locx, sock->locy, size, sock->type, col); @@ -1083,6 +1080,8 @@ void drawnodespace(const bContext *C, ARegion *ar, View2D *v2d) if(snode->nodetree) { bNode *node; + node_uiblocks_init(C, snode->nodetree); + /* for now, we set drawing coordinates on each redraw */ for(node= snode->nodetree->nodes.first; node; node= node->next) { if(node->flag & NODE_GROUP_EDIT) diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index 05926782a0d..89fb40367e8 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -212,7 +212,7 @@ bNode *editnode_get_active(bNodeTree *ntree) return nodeGetActive(ntree); } -void snode_handle_recalc(bContext *C, SpaceNode *snode) +void snode_notify(bContext *C, SpaceNode *snode) { if(snode->treetype==NTREE_SHADER) WM_event_add_notifier(C, NC_MATERIAL|ND_NODES, snode->id); @@ -222,116 +222,6 @@ void snode_handle_recalc(bContext *C, SpaceNode *snode) WM_event_add_notifier(C, NC_TEXTURE|ND_NODES, snode->id); } -#if 0 -static int image_detect_file_sequence(int *start_p, int *frames_p, char *str) -{ - SpaceFile *sfile; - char name[FILE_MAX], head[FILE_MAX], tail[FILE_MAX], filename[FILE_MAX]; - int a, frame, totframe, found, minframe; - unsigned short numlen; - - sfile= scrarea_find_space_of_type(curarea, SPACE_FILE); - if(sfile==NULL || sfile->filelist==NULL) - return 0; - - /* find first frame */ - found= 0; - minframe= 0; - - for(a=0; a<sfile->totfile; a++) { - if(sfile->filelist[a].flags & ACTIVE) { - BLI_strncpy(name, sfile->filelist[a].relname, sizeof(name)); - frame= BLI_stringdec(name, head, tail, &numlen); - - if(!found || frame < minframe) { - BLI_strncpy(filename, name, sizeof(name)); - minframe= frame; - found= 1; - } - } - } - - /* not one frame found */ - if(!found) - return 0; - - /* counter number of following frames */ - found= 1; - totframe= 0; - - for(frame=minframe; found; frame++) { - found= 0; - BLI_strncpy(name, filename, sizeof(name)); - BLI_stringenc(name, head, tail, numlen, frame); - - for(a=0; a<sfile->totfile; a++) { - if(sfile->filelist[a].flags & ACTIVE) { - if(strcmp(sfile->filelist[a].relname, name) == 0) { - found= 1; - totframe++; - break; - } - } - } - } - - if(totframe > 1) { - BLI_strncpy(str, sfile->dir, sizeof(name)); - strcat(str, filename); - - *start_p= minframe; - *frames_p= totframe; - return 1; - } - - return 0; -} - -static void load_node_image(char *str) /* called from fileselect */ -{ - SpaceNode *snode= curarea->spacedata.first; - bNode *node= nodeGetActive(snode->edittree); - Image *ima= NULL; - ImageUser *iuser= node->storage; - char filename[FILE_MAX]; - int start=0, frames=0, sequence; - - sequence= image_detect_file_sequence(&start, &frames, filename); - if(sequence) - str= filename; - - ima= BKE_add_image_file(str); - if(ima) { - if(node->id) - node->id->us--; - - node->id= &ima->id; - id_us_plus(node->id); - - BLI_strncpy(node->name, node->id->name+2, 21); - - if(sequence) { - ima->source= IMA_SRC_SEQUENCE; - iuser->frames= frames; - iuser->offset= start-1; - } - - BKE_image_signal(ima, node->storage, IMA_SIGNAL_RELOAD); - - NodeTagChanged(snode->edittree, node); - // XXX snode_handle_recalc(C, snode); - } -} - -static void set_node_imagepath(char *str) /* called from fileselect */ -{ - SpaceNode *snode= curarea->spacedata.first; - bNode *node= nodeGetActive(snode->edittree); - BLI_strncpy(((NodeImageFile *)node->storage)->name, str, sizeof( ((NodeImageFile *)node->storage)->name )); -} - -#endif /* 0 */ - bNode *node_tree_get_editgroup(bNodeTree *nodetree) { bNode *gnode; @@ -343,136 +233,6 @@ bNode *node_tree_get_editgroup(bNodeTree *nodetree) return gnode; } -#if 0 - -/* node has to be of type 'render layers' */ -/* is a bit clumsy copying renderdata here... scene nodes use render size of current render */ -static void composite_node_render(SpaceNode *snode, bNode *node) -{ - RenderData rd; - Scene *scene= NULL; - int scemode, actlay; - - /* the button press won't show up otherwise, button hilites disabled */ - force_draw(0); - - if(node->id && node->id!=(ID *)G.scene) { - scene= G.scene; - set_scene_bg((Scene *)node->id); - rd= G.scene->r; - G.scene->r.xsch= scene->r.xsch; - G.scene->r.ysch= scene->r.ysch; - G.scene->r.size= scene->r.size; - G.scene->r.mode &= ~(R_BORDER|R_DOCOMP); - G.scene->r.mode |= scene->r.mode & R_BORDER; - G.scene->r.border= scene->r.border; - G.scene->r.cfra= scene->r.cfra; - } - - scemode= G.scene->r.scemode; - actlay= G.scene->r.actlay; - - G.scene->r.scemode |= R_SINGLE_LAYER|R_COMP_RERENDER; - G.scene->r.actlay= node->custom1; - - BIF_do_render(0); - - G.scene->r.scemode= scemode; - G.scene->r.actlay= actlay; - - node->custom2= 0; - - if(scene) { - G.scene->r= rd; - set_scene_bg(scene); - } -} - -static void composit_node_event(SpaceNode *snode, short event) -{ - - switch(event) { - case B_REDR: - // allqueue(REDRAWNODE, 1); - break; - case B_NODE_SETIMAGE: - { - bNode *node= nodeGetActive(snode->edittree); - char name[FILE_MAXDIR+FILE_MAXFILE]; - - strcpy(name, ((NodeImageFile *)node->storage)->name); - if (G.qual & LR_CTRLKEY) { - activate_imageselect(FILE_SPECIAL, "SELECT OUTPUT DIR", name, set_node_imagepath); - } else { - activate_fileselect(FILE_SPECIAL, "SELECT OUTPUT DIR", name, set_node_imagepath); - } - break; - } - case B_NODE_TREE_EXEC: - // XXX snode_handle_recalc(snode); - break; - default: - /* B_NODE_EXEC */ - { - bNode *node= BLI_findlink(&snode->edittree->nodes, event-B_NODE_EXEC); - if(node) { - NodeTagChanged(snode->edittree, node); - /* don't use NodeTagIDChanged, it gives far too many recomposites for image, scene layers, ... */ - - /* not the best implementation of the world... but we need it to work now :) */ - if(node->type==CMP_NODE_R_LAYERS && node->custom2) { - /* add event for this window (after render curarea can be changed) */ - addqueue(curarea->win, UI_BUT_EVENT, B_NODE_TREE_EXEC); - - composite_node_render(snode, node); - // XXX snode_handle_recalc(snode); - - /* add another event, a render can go fullscreen and open new window */ - addqueue(curarea->win, UI_BUT_EVENT, B_NODE_TREE_EXEC); - } - else { - node= node_tree_get_editgroup(snode->nodetree); - if(node) - NodeTagIDChanged(snode->nodetree, node->id); - - // XXX snode_handle_recalc(snode); - } - } - } - } -} - -static void texture_node_event(SpaceNode *snode, short event) -{ - switch(event) { - case B_REDR: - // allqueue(REDRAWNODE, 1); - break; - case B_NODE_LOADIMAGE: - { - bNode *node= nodeGetActive(snode->edittree); - char name[FILE_MAXDIR+FILE_MAXFILE]; - - if(node->id) - strcpy(name, ((Image *)node->id)->name); - else strcpy(name, U.textudir); - if (G.qual & LR_CTRLKEY) { - activate_imageselect(FILE_SPECIAL, "SELECT IMAGE", name, load_node_image); - } else { - activate_fileselect(FILE_SPECIAL, "SELECT IMAGE", name, load_node_image); - } - break; - } - default: - /* B_NODE_EXEC */ - ntreeTexCheckCyclics( snode->nodetree ); - // XXX snode_handle_recalc(snode); - // allqueue(REDRAWNODE, 1); - break; - } -} - -#endif /* 0 */ /* assumes nothing being done in ntree yet, sets the default in/out node */ /* called from shading buttons or header */ void ED_node_shader_default(Material *ma) @@ -482,7 +242,8 @@ void ED_node_shader_default(Material *ma) /* but lets check it anyway */ if(ma->nodetree) { - printf("error in shader initialize\n"); + if (G.f & G_DEBUG) + printf("error in shader initialize\n"); return; } @@ -512,7 +273,8 @@ void ED_node_composit_default(Scene *sce) /* but lets check it anyway */ if(sce->nodetree) { - printf("error in composit initialize\n"); + if (G.f & G_DEBUG) + printf("error in composite initialize\n"); return; } @@ -546,7 +308,8 @@ void ED_node_texture_default(Tex *tx) /* but lets check it anyway */ if(tx->nodetree) { - printf("error in texture initialize\n"); + if (G.f & G_DEBUG) + printf("error in texture initialize\n"); return; } @@ -663,29 +426,6 @@ void snode_set_context(SpaceNode *snode, Scene *scene) node_tree_from_ID(snode->id, &snode->nodetree, &snode->edittree, NULL); } -#if 0 -/* on activate image viewer, check if we show it */ -static void node_active_image(Image *ima) -{ - ScrArea *sa; - SpaceImage *sima= NULL; - - /* find an imagewindow showing render result */ - for(sa=G.curscreen->areabase.first; sa; sa= sa->next) { - if(sa->spacetype==SPACE_IMAGE) { - sima= sa->spacedata.first; - if(sima->image && sima->image->source!=IMA_SRC_VIEWER) - break; - } - } - if(sa && sima) { - sima->image= ima; - scrarea_queue_winredraw(sa); - scrarea_queue_headredraw(sa); - } -} -#endif /* 0 */ - void node_set_active(SpaceNode *snode, bNode *node) { nodeSetActive(snode->edittree, node); @@ -693,12 +433,12 @@ void node_set_active(SpaceNode *snode, bNode *node) if(node->type!=NODE_GROUP) { /* tree specific activate calls */ if(snode->treetype==NTREE_SHADER) { - // XXX -#if 0 - /* when we select a material, active texture is cleared, for buttons */ if(node->id && GS(node->id->name)==ID_MA) nodeClearActiveID(snode->edittree, ID_TE); + + // XXX +#if 0 if(node->id) ; // XXX BIF_preview_changed(-1); /* temp hack to force texture preview to update */ @@ -735,18 +475,9 @@ void node_set_active(SpaceNode *snode, bNode *node) /* addnode() doesnt link this yet... */ node->id= (ID *)BKE_image_verify_viewer(IMA_TYPE_COMPOSITE, "Viewer Node"); } - else if(node->type==CMP_NODE_IMAGE) { - // XXX -#if 0 - if(node->id) - node_active_image((Image *)node->id); -#endif - } else if(node->type==CMP_NODE_R_LAYERS) { if(node->id==NULL || node->id==(ID *)scene) { scene->r.actlay= node->custom1; - // XXX - // allqueue(REDRAWBUTSSCENE, 0); } } } @@ -808,13 +539,6 @@ void snode_make_group_editable(SpaceNode *snode, bNode *gnode) snode->edittree= snode->nodetree; ntreeSolveOrder(snode->nodetree); - - /* finally send out events for new active node */ - if(snode->treetype==NTREE_SHADER) { - // allqueue(REDRAWBUTSSHADING, 0); - - // XXX BIF_preview_changed(-1); /* temp hack to force texture preview to update */ - } } static int node_group_edit_exec(bContext *C, wmOperator *op) @@ -1139,31 +863,8 @@ void NODE_OT_resize(wmOperatorType *ot) ot->flag= OPTYPE_BLOCKING; } - -#if 0 - /* ********************** select ******************** */ -/* used in buttons to check context, also checks for edited groups */ -bNode *editnode_get_active_idnode(bNodeTree *ntree, short id_code) -{ - return nodeGetActiveID(ntree, id_code); -} - -/* used in buttons to check context, also checks for edited groups */ -Material *editnode_get_active_material(Material *ma) -{ - if(ma && ma->use_nodes && ma->nodetree) { - bNode *node= editnode_get_active_idnode(ma->nodetree, ID_MA); - if(node) - return (Material *)node->id; - else - return NULL; - } - return ma; -} -#endif /* 0 */ - /* no undo here! */ void node_deselectall(SpaceNode *snode) @@ -1215,8 +916,6 @@ static void node_link_viewer(SpaceNode *snode, bNode *tonode) link->fromnode= tonode; link->fromsock= tonode->outputs.first; NodeTagChanged(snode->edittree, node); - -// XXX snode_handle_recalc(snode); } } } @@ -1268,10 +967,10 @@ static int find_indicated_socket(SpaceNode *snode, bNode **nodep, bNodeSocket ** /* check if we click in a socket */ for(node= snode->edittree->nodes.first; node; node= node->next) { - rect.xmin = snode->mx - NODE_SOCKSIZE+3; - rect.ymin = snode->my - NODE_SOCKSIZE+3; - rect.xmax = rect.xmin + 2*NODE_SOCKSIZE+6; - rect.ymax = rect.ymin + 2*NODE_SOCKSIZE+6; + rect.xmin = snode->mx - (NODE_SOCKSIZE+4); + rect.ymin = snode->my - (NODE_SOCKSIZE+4); + rect.xmax = snode->mx + (NODE_SOCKSIZE+4); + rect.ymax = snode->my + (NODE_SOCKSIZE+4); if (!(node->flag & NODE_HIDDEN)) { /* extra padding inside and out - allow dragging on the text areas too */ @@ -1422,7 +1121,7 @@ static bNodeSocket *best_socket_input(bNodeTree *ntree, bNode *node, int num, in { bNodeSocket *sock; int socktype, maxtype=0; - int a; + int a = 0; for (sock=node->inputs.first; sock; sock=sock->next) { maxtype = MAX2(sock->type, maxtype); @@ -1492,6 +1191,7 @@ void snode_autoconnect(SpaceNode *snode, int allow_multiple, int replace) if (replace) nodeRemSocketLinks(snode->edittree, sock_to); nodeAddLink(snode->edittree, node_fr, sock_fr, node_to, sock_to); + NodeTagChanged(snode->edittree, node_to); break; } } @@ -1542,7 +1242,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(ELEM3(node->type, CMP_NODE_R_LAYERS, CMP_NODE_COMPOSITE, CMP_NODE_DEFOCUS)) + if(ELEM4(node->type, CMP_NODE_R_LAYERS, CMP_NODE_COMPOSITE, CMP_NODE_DEFOCUS, CMP_NODE_OUTPUT_FILE)) node->id = &scene->id; ntreeCompositForceHidden(snode->edittree, scene); @@ -1571,7 +1271,7 @@ static int node_duplicate_exec(bContext *C, wmOperator *op) ntreeSolveOrder(snode->edittree); node_tree_verify_groups(snode->nodetree); - snode_handle_recalc(C, snode); + snode_notify(C, snode); return OPERATOR_FINISHED; } @@ -1602,24 +1302,6 @@ typedef struct NodeLinkDrag int in_out; } NodeLinkDrag; -/*static*/ void reset_sel_socket(SpaceNode *snode, int in_out) -{ - bNode *node; - bNodeSocket *sock; - - for(node= snode->edittree->nodes.first; node; node= node->next) { - if(in_out & SOCK_IN) { - for(sock= node->inputs.first; sock; sock= sock->next) - if(sock->flag & SOCK_SEL) sock->flag&= ~SOCK_SEL; - } - if(in_out & SOCK_OUT) { - for(sock= node->outputs.first; sock; sock= sock->next) - if(sock->flag & SOCK_SEL) sock->flag&= ~SOCK_SEL; - } - } -} - - static void node_remove_extra_links(SpaceNode *snode, bNodeSocket *tsock, bNodeLink *link) { bNodeLink *tlink; @@ -1728,7 +1410,7 @@ static int node_link_modal(bContext *C, wmOperator *op, wmEvent *event) ntreeSolveOrder(snode->edittree); node_tree_verify_groups(snode->nodetree); - snode_handle_recalc(C, snode); + snode_notify(C, snode); MEM_freeN(op->customdata); op->customdata= NULL; @@ -1846,7 +1528,7 @@ static int node_make_link_exec(bContext *C, wmOperator *op) snode_autoconnect(snode, 0, replace); node_tree_verify_groups(snode->nodetree); - snode_handle_recalc(C, snode); + snode_notify(C, snode); return OPERATOR_FINISHED; } @@ -1918,7 +1600,7 @@ static int cut_links_exec(bContext *C, wmOperator *op) ntreeSolveOrder(snode->edittree); node_tree_verify_groups(snode->nodetree); - snode_handle_recalc(C, snode); + snode_notify(C, snode); return OPERATOR_FINISHED; } @@ -1973,7 +1655,7 @@ void node_read_renderlayers(SpaceNode *snode) } } - // XXX snode_handle_recalc(snode); + // XXX snode_notify(snode); } void node_read_fullsamplelayers(SpaceNode *snode) @@ -2054,7 +1736,7 @@ static int node_group_make_exec(bContext *C, wmOperator *op) ntreeSolveOrder(snode->nodetree); } - snode_handle_recalc(C, snode); + snode_notify(C, snode); return OPERATOR_FINISHED; } @@ -2103,7 +1785,7 @@ static int node_hide_exec(bContext *C, wmOperator *op) } } - snode_handle_recalc(C, snode); + snode_notify(C, snode); return OPERATOR_FINISHED; } @@ -2138,11 +1820,12 @@ static int node_mute_exec(bContext *C, wmOperator *op) if(node->flag & SELECT) { if(node->inputs.first && node->outputs.first) { node->flag ^= NODE_MUTED; + NodeTagChanged(snode->edittree, node); } } } - snode_handle_recalc(C, snode); + snode_notify(C, snode); return OPERATOR_FINISHED; } @@ -2168,18 +1851,10 @@ static int node_delete_exec(bContext *C, wmOperator *op) { SpaceNode *snode= CTX_wm_space_node(C); bNode *node, *next; - bNodeSocket *sock; for(node= snode->edittree->nodes.first; node; node= next) { next= node->next; if(node->flag & SELECT) { - /* set selin and selout NULL if the sockets belong to a node to be deleted */ - for(sock= node->inputs.first; sock; sock= sock->next) - if(snode->edittree->selin == sock) snode->edittree->selin= NULL; - - for(sock= node->outputs.first; sock; sock= sock->next) - if(snode->edittree->selout == sock) snode->edittree->selout= NULL; - /* check id user here, nodeFreeNode is called for free dbase too */ if(node->id) node->id->us--; @@ -2189,7 +1864,7 @@ static int node_delete_exec(bContext *C, wmOperator *op) node_tree_verify_groups(snode->nodetree); - snode_handle_recalc(C, snode); + snode_notify(C, snode); return OPERATOR_FINISHED; } @@ -2217,7 +1892,7 @@ static int node_show_cycles_exec(bContext *C, wmOperator *op) /* this is just a wrapper around this call... */ ntreeSolveOrder(snode->edittree); - snode_handle_recalc(C, snode); + snode_notify(C, snode); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/space_node/node_header.c b/source/blender/editors/space_node/node_header.c index d8a14c6412b..ed6a45e9736 100644 --- a/source/blender/editors/space_node/node_header.c +++ b/source/blender/editors/space_node/node_header.c @@ -90,7 +90,7 @@ static void do_node_add(bContext *C, void *arg, int event) if(node->flag & NODE_TEST) node->flag &= ~NODE_SELECT; } - snode_handle_recalc(C, snode); + snode_notify(C, snode); } static void node_auto_add_menu(bContext *C, uiLayout *layout, void *arg_nodeclass) diff --git a/source/blender/editors/space_node/node_intern.h b/source/blender/editors/space_node/node_intern.h index 1ff2f7d7128..723e740a412 100644 --- a/source/blender/editors/space_node/node_intern.h +++ b/source/blender/editors/space_node/node_intern.h @@ -69,9 +69,11 @@ void node_draw_link_bezier(View2D *v2d, SpaceNode *snode, bNodeLink *link, int t int node_link_bezier_points(View2D *v2d, SpaceNode *snode, bNodeLink *link, float coord_array[][2], int resol); void draw_nodespace_back_pix(ARegion *ar, SpaceNode *snode, int color_manage); +void node_buts_group(struct uiLayout *layout, struct bContext *C, struct PointerRNA *ptr); + /* node_edit.c */ void node_tree_from_ID(ID *id, bNodeTree **ntree, bNodeTree **edittree, int *treetype); -void snode_handle_recalc(bContext *C, SpaceNode *snode); +void snode_notify(bContext *C, SpaceNode *snode); bNode *next_node(bNodeTree *ntree); bNode *node_add_node(SpaceNode *snode, Scene *scene, int type, float locx, float locy); void snode_set_context(SpaceNode *snode, Scene *scene); diff --git a/source/blender/editors/space_node/node_ops.c b/source/blender/editors/space_node/node_ops.c index 1bb38e9aad4..bc04268c6f0 100644 --- a/source/blender/editors/space_node/node_ops.c +++ b/source/blender/editors/space_node/node_ops.c @@ -109,6 +109,7 @@ void node_keymap(struct wmKeyConfig *keyconf) RNA_boolean_set(kmi->ptr, "extend", 1); kmi= WM_keymap_add_item(keymap, "NODE_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0); RNA_boolean_set(kmi->ptr, "extend", 1); + RNA_boolean_set(WM_keymap_add_item(keymap, "NODE_OT_select_border", EVT_TWEAK_S, KM_ANY, 0, 0)->ptr, "tweak", 1); /* each of these falls through if not handled... */ WM_keymap_add_item(keymap, "NODE_OT_link", LEFTMOUSE, KM_PRESS, 0, 0); diff --git a/source/blender/editors/space_node/node_select.c b/source/blender/editors/space_node/node_select.c index c81cfb47f5b..f10fff56ec5 100644 --- a/source/blender/editors/space_node/node_select.c +++ b/source/blender/editors/space_node/node_select.c @@ -55,7 +55,21 @@ #include "UI_view2d.h" #include "node_intern.h" - + +/* ****** helpers ****** */ + +static bNode *node_under_mouse(bNodeTree *ntree, int mx, int my) +{ + bNode *node; + + for(next_node(ntree); (node=next_node(NULL));) { + /* node body (header and scale are in other operators) */ + if (BLI_in_rctf(&node->totr, mx, my)) + return node; + } + return NULL; +} + /* ****** Click Select ****** */ static bNode *node_mouse_select(SpaceNode *snode, ARegion *ar, short *mval, short extend) @@ -70,11 +84,7 @@ static bNode *node_mouse_select(SpaceNode *snode, ARegion *ar, short *mval, shor UI_view2d_region_to_view(&ar->v2d, mval[0], mval[1], &mx, &my); /* find the closest visible node */ - for(next_node(snode->edittree); (node=next_node(NULL));) { - /* node body (header and scale are in other operators) */ - if (BLI_in_rctf(&node->totr, mx, my)) - break; - } + node = node_under_mouse(snode->edittree, mx, my); if (node) { if (extend == 0) { @@ -112,7 +122,7 @@ static int node_select_exec(bContext *C, wmOperator *op) /* WATCH THIS, there are a few other ways to change the active material */ if(node) { - if (node->id && GS(node->id->name)== ID_MA) { + if (node->id && ELEM(GS(node->id->name), ID_MA, ID_TE)) { WM_event_add_notifier(C, NC_MATERIAL|ND_SHADING_DRAW, node->id); } } @@ -177,9 +187,6 @@ static int node_borderselect_exec(bContext *C, wmOperator *op) rect.ymax= RNA_int_get(op->ptr, "ymax"); UI_view2d_region_to_view(&ar->v2d, rect.xmax, rect.ymax, &rectf.xmax, &rectf.ymax); - if (snode->edittree == NULL) // XXX should this be in poll()? - campbell - return OPERATOR_FINISHED; - for(node= snode->edittree->nodes.first; node; node= node->next) { if(BLI_isect_rctf(&rectf, &node->totr, NULL)) { if(gesture_mode==GESTURE_MODAL_SELECT) @@ -194,6 +201,34 @@ static int node_borderselect_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } +static int node_border_select_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + int tweak = RNA_boolean_get(op->ptr, "tweak"); + + if (tweak) { + /* prevent initiating the border select if the mouse is over a node */ + /* this allows border select on empty space, but drag-translate on nodes */ + SpaceNode *snode= CTX_wm_space_node(C); + ARegion *ar= CTX_wm_region(C); + short mval[2]; + float mx, my; + + mval[0]= event->x - ar->winrct.xmin; + mval[1]= event->y - ar->winrct.ymin; + + /* get mouse coordinates in view2d space */ + mx= (float)mval[0]; + my= (float)mval[1]; + + UI_view2d_region_to_view(&ar->v2d, mval[0], mval[1], &mx, &my); + + if (node_under_mouse(snode->edittree, mx, my)) + return OPERATOR_CANCELLED|OPERATOR_PASS_THROUGH; + } + + return WM_border_select_invoke(C, op, event); +} + void NODE_OT_select_border(wmOperatorType *ot) { /* identifiers */ @@ -201,7 +236,7 @@ void NODE_OT_select_border(wmOperatorType *ot) ot->idname= "NODE_OT_select_border"; /* api callbacks */ - ot->invoke= WM_border_select_invoke; + ot->invoke= node_border_select_invoke; ot->exec= node_borderselect_exec; ot->modal= WM_border_select_modal; @@ -212,6 +247,7 @@ void NODE_OT_select_border(wmOperatorType *ot) /* rna */ WM_operator_properties_gesture_border(ot, FALSE); + RNA_def_boolean(ot->srna, "tweak", 0, "Tweak", "Only activate when mouse is not over a node - useful for tweak gesture"); } /* ****** Select/Deselect All ****** */ diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c index dcd07690f0e..125c669cd4c 100644 --- a/source/blender/editors/space_node/space_node.c +++ b/source/blender/editors/space_node/space_node.c @@ -170,8 +170,12 @@ static void node_area_listener(ScrArea *sa, wmNotifier *wmn) /* preview renders */ switch(wmn->category) { case NC_SCENE: - if(wmn->data==ND_NODES) - ED_area_tag_refresh(sa); + switch (wmn->data) { + case ND_NODES: + case ND_FRAME: + ED_area_tag_refresh(sa); + break; + } break; case NC_WM: if(wmn->data==ND_FILEREAD) @@ -308,6 +312,10 @@ static void node_region_listener(ARegion *ar, wmNotifier *wmn) if(wmn->data==ND_SPACE_NODE) ED_region_tag_redraw(ar); break; + case NC_SCREEN: + if(wmn->data == ND_GPENCIL) + ED_region_tag_redraw(ar); + break; case NC_SCENE: case NC_MATERIAL: case NC_TEXTURE: @@ -376,7 +384,7 @@ void ED_spacetype_node(void) /* regions: header */ art= MEM_callocN(sizeof(ARegionType), "spacetype node region"); art->regionid = RGN_TYPE_HEADER; - art->minsizey= HEADERY; + art->prefsizey= HEADERY; 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; @@ -389,7 +397,7 @@ void ED_spacetype_node(void) /* regions: listview/buttons */ art= MEM_callocN(sizeof(ARegionType), "spacetype node region"); art->regionid = RGN_TYPE_UI; - art->minsizex= 180; // XXX + art->prefsizex= 180; // XXX art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_FRAMES; art->listener= node_region_listener; art->init= node_buttons_area_init; diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c index 93b32086614..3e0604b1f25 100644 --- a/source/blender/editors/space_outliner/outliner.c +++ b/source/blender/editors/space_outliner/outliner.c @@ -140,7 +140,7 @@ static void error() {} /* ******************** PROTOTYPES ***************** */ -static void outliner_draw_tree_element(bContext *C, Scene *scene, ARegion *ar, SpaceOops *soops, TreeElement *te, int startx, int *starty); +static void outliner_draw_tree_element(bContext *C, uiBlock *block, Scene *scene, ARegion *ar, SpaceOops *soops, TreeElement *te, int startx, int *starty); static void outliner_do_object_operation(bContext *C, Scene *scene, SpaceOops *soops, ListBase *lb, void (*operation_cb)(bContext *C, Scene *scene, TreeElement *, TreeStoreElem *, TreeStoreElem *)); @@ -2019,7 +2019,7 @@ static int tree_element_active_posegroup(bContext *C, Scene *scene, TreeElement if(set) { if (ob->pose) { ob->pose->active_group= te->index+1; - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); } } else { @@ -2494,8 +2494,11 @@ static int do_outliner_item_rename(bContext *C, ARegion *ar, SpaceOops *soops, T /* name and first icon */ if(mval[0]>te->xs && mval[0]<te->xend) { - - if(ELEM10(tselem->type, TSE_ANIM_DATA, TSE_NLA, TSE_DEFGROUP_BASE, TSE_CONSTRAINT_BASE, TSE_MODIFIER_BASE, TSE_SCRIPT_BASE, TSE_POSE_BASE, TSE_POSEGRP_BASE, TSE_R_LAYER_BASE, TSE_R_PASS)) + + /* can't rename rna datablocks entries */ + if(ELEM3(tselem->type, TSE_RNA_STRUCT, TSE_RNA_PROPERTY, TSE_RNA_ARRAY_ELEM)) + ; + else if(ELEM10(tselem->type, TSE_ANIM_DATA, TSE_NLA, TSE_DEFGROUP_BASE, TSE_CONSTRAINT_BASE, TSE_MODIFIER_BASE, TSE_SCRIPT_BASE, TSE_POSE_BASE, TSE_POSEGRP_BASE, TSE_R_LAYER_BASE, TSE_R_PASS)) error("Cannot edit builtin name"); else if(ELEM3(tselem->type, TSE_SEQUENCE, TSE_SEQ_STRIP, TSE_SEQUENCE_DUP)) error("Cannot edit sequence name"); @@ -3316,7 +3319,7 @@ void OUTLINER_OT_object_operation(wmOperatorType *ot) ot->flag= 0; - RNA_def_enum(ot->srna, "type", prop_object_op_types, 0, "Object Operation", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_object_op_types, 0, "Object Operation", ""); } /* **************************************** */ @@ -3374,7 +3377,7 @@ void OUTLINER_OT_group_operation(wmOperatorType *ot) ot->flag= 0; - RNA_def_enum(ot->srna, "type", prop_group_op_types, 0, "Group Operation", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_group_op_types, 0, "Group Operation", ""); } /* **************************************** */ @@ -3440,7 +3443,7 @@ void OUTLINER_OT_id_operation(wmOperatorType *ot) ot->flag= 0; - RNA_def_enum(ot->srna, "type", prop_id_op_types, 0, "ID data Operation", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_id_op_types, 0, "ID data Operation", ""); } /* **************************************** */ @@ -3511,7 +3514,7 @@ void OUTLINER_OT_data_operation(wmOperatorType *ot) ot->flag= 0; - RNA_def_enum(ot->srna, "type", prop_data_op_types, 0, "Data Operation", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_data_op_types, 0, "Data Operation", ""); } @@ -4084,8 +4087,39 @@ void OUTLINER_OT_keyingset_remove_selected(wmOperatorType *ot) /* ***************** DRAW *************** */ -static void tselem_draw_icon(float x, float y, TreeStoreElem *tselem, TreeElement *te) +/* make function calls a bit compacter */ +struct DrawIconArg { + uiBlock *block; + ID *id; + int xmax, x, y; + float alpha; +}; + +static void tselem_draw_icon_uibut(struct DrawIconArg *arg, int icon) { + /* restrict collumn clip... it has been coded by simply overdrawing, doesnt work for buttons */ + if(arg->x >= arg->xmax) + UI_icon_draw(arg->x, arg->y, icon); + else { + uiBut *but= uiDefIconBut(arg->block, LABEL, 0, icon, arg->x-4, arg->y, ICON_DEFAULT_WIDTH, ICON_DEFAULT_WIDTH, NULL, 0.0, 0.0, 1.0, arg->alpha, ""); + if(arg->id) + uiButSetDragID(but, arg->id); + } + +} + +static void tselem_draw_icon(uiBlock *block, int xmax, float x, float y, TreeStoreElem *tselem, TreeElement *te, float alpha) +{ + struct DrawIconArg arg; + + /* make function calls a bit compacter */ + arg.block= block; + arg.id= tselem->id; + arg.xmax= xmax; + arg.x= x; + arg.y= y; + arg.alpha= alpha; + if(tselem->type) { switch( tselem->type) { case TSE_ANIM_DATA: @@ -4216,7 +4250,12 @@ static void tselem_draw_icon(float x, float y, TreeStoreElem *tselem, TreeElemen UI_icon_draw(x, y, ICON_OBJECT_DATA); break; case TSE_RNA_STRUCT: - UI_icon_draw(x, y, RNA_struct_ui_icon(te->rnaptr.type)); + if(RNA_struct_is_ID(te->rnaptr.type)) { + arg.id= (ID *)te->rnaptr.data; + tselem_draw_icon_uibut(&arg, RNA_struct_ui_icon(te->rnaptr.type)); + } + else + UI_icon_draw(x, y, RNA_struct_ui_icon(te->rnaptr.type)); break; default: UI_icon_draw(x, y, ICON_DOT); break; @@ -4225,98 +4264,103 @@ static void tselem_draw_icon(float x, float y, TreeStoreElem *tselem, TreeElemen else if (GS(tselem->id->name) == ID_OB) { Object *ob= (Object *)tselem->id; switch (ob->type) { - case OB_LAMP: - UI_icon_draw(x, y, ICON_OUTLINER_OB_LAMP); break; + case OB_LAMP: + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_LAMP); break; case OB_MESH: - UI_icon_draw(x, y, ICON_OUTLINER_OB_MESH); break; + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_MESH); break; case OB_CAMERA: - UI_icon_draw(x, y, ICON_OUTLINER_OB_CAMERA); break; + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_CAMERA); break; case OB_CURVE: - UI_icon_draw(x, y, ICON_OUTLINER_OB_CURVE); break; + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_CURVE); break; case OB_MBALL: - UI_icon_draw(x, y, ICON_OUTLINER_OB_META); break; + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_META); break; case OB_LATTICE: - UI_icon_draw(x, y, ICON_OUTLINER_OB_LATTICE); break; + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_LATTICE); break; case OB_ARMATURE: - UI_icon_draw(x, y, ICON_OUTLINER_OB_ARMATURE); break; + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_ARMATURE); break; case OB_FONT: - UI_icon_draw(x, y, ICON_OUTLINER_OB_FONT); break; + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_FONT); break; case OB_SURF: - UI_icon_draw(x, y, ICON_OUTLINER_OB_SURFACE); break; + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_SURFACE); break; case OB_EMPTY: - UI_icon_draw(x, y, ICON_OUTLINER_OB_EMPTY); break; + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_OB_EMPTY); break; } } else { switch( GS(tselem->id->name)) { case ID_SCE: - UI_icon_draw(x, y, ICON_SCENE_DATA); break; + tselem_draw_icon_uibut(&arg, ICON_SCENE_DATA); break; case ID_ME: - UI_icon_draw(x, y, ICON_OUTLINER_DATA_MESH); break; + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_MESH); break; case ID_CU: - UI_icon_draw(x, y, ICON_OUTLINER_DATA_CURVE); break; + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_CURVE); break; case ID_MB: - UI_icon_draw(x, y, ICON_OUTLINER_DATA_META); break; + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_META); break; case ID_LT: - UI_icon_draw(x, y, ICON_OUTLINER_DATA_LATTICE); break; + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_LATTICE); break; case ID_LA: { Lamp *la= (Lamp *)tselem->id; switch(la->type) { case LA_LOCAL: - UI_icon_draw(x, y, ICON_LAMP_POINT); break; + tselem_draw_icon_uibut(&arg, ICON_LAMP_POINT); break; case LA_SUN: - UI_icon_draw(x, y, ICON_LAMP_SUN); break; + tselem_draw_icon_uibut(&arg, ICON_LAMP_SUN); break; case LA_SPOT: - UI_icon_draw(x, y, ICON_LAMP_SPOT); break; + tselem_draw_icon_uibut(&arg, ICON_LAMP_SPOT); break; case LA_HEMI: - UI_icon_draw(x, y, ICON_LAMP_HEMI); break; + tselem_draw_icon_uibut(&arg, ICON_LAMP_HEMI); break; case LA_AREA: - UI_icon_draw(x, y, ICON_LAMP_AREA); break; + tselem_draw_icon_uibut(&arg, ICON_LAMP_AREA); break; default: - UI_icon_draw(x, y, ICON_OUTLINER_DATA_LAMP); break; + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_LAMP); break; } break; } case ID_MA: - UI_icon_draw(x, y, ICON_MATERIAL_DATA); break; + tselem_draw_icon_uibut(&arg, ICON_MATERIAL_DATA); break; case ID_TE: - UI_icon_draw(x, y, ICON_TEXTURE_DATA); break; + tselem_draw_icon_uibut(&arg, ICON_TEXTURE_DATA); break; case ID_IM: - UI_icon_draw(x, y, ICON_IMAGE_DATA); break; + tselem_draw_icon_uibut(&arg, ICON_IMAGE_DATA); break; case ID_SO: - UI_icon_draw(x, y, ICON_SPEAKER); break; + tselem_draw_icon_uibut(&arg, ICON_SPEAKER); break; case ID_AR: - UI_icon_draw(x, y, ICON_OUTLINER_DATA_ARMATURE); break; + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_ARMATURE); break; case ID_CA: - UI_icon_draw(x, y, ICON_OUTLINER_DATA_CAMERA); break; + tselem_draw_icon_uibut(&arg, ICON_OUTLINER_DATA_CAMERA); break; case ID_KE: - UI_icon_draw(x, y, ICON_SHAPEKEY_DATA); break; + tselem_draw_icon_uibut(&arg, ICON_SHAPEKEY_DATA); break; case ID_WO: - UI_icon_draw(x, y, ICON_WORLD_DATA); break; + tselem_draw_icon_uibut(&arg, ICON_WORLD_DATA); break; case ID_AC: - UI_icon_draw(x, y, ICON_ACTION); break; + tselem_draw_icon_uibut(&arg, ICON_ACTION); break; case ID_NLA: - UI_icon_draw(x, y, ICON_NLA); break; + tselem_draw_icon_uibut(&arg, ICON_NLA); break; case ID_TXT: - UI_icon_draw(x, y, ICON_SCRIPT); break; + tselem_draw_icon_uibut(&arg, ICON_SCRIPT); break; case ID_GR: - UI_icon_draw(x, y, ICON_GROUP); break; + tselem_draw_icon_uibut(&arg, ICON_GROUP); break; case ID_LI: - UI_icon_draw(x, y, ICON_LIBRARY_DATA_DIRECT); break; + tselem_draw_icon_uibut(&arg, ICON_LIBRARY_DATA_DIRECT); break; } } } -static void outliner_draw_iconrow(bContext *C, Scene *scene, SpaceOops *soops, ListBase *lb, int level, int *offsx, int ys) +static void outliner_draw_iconrow(bContext *C, uiBlock *block, Scene *scene, SpaceOops *soops, ListBase *lb, int level, int xmax, int *offsx, int ys) { TreeElement *te; TreeStoreElem *tselem; int active; for(te= lb->first; te; te= te->next) { + + /* exit drawing early */ + if((*offsx) - OL_X > xmax) + break; + tselem= TREESTORE(te); /* object hierarchy always, further constrained on level */ @@ -4335,10 +4379,10 @@ static void outliner_draw_iconrow(bContext *C, Scene *scene, SpaceOops *soops, L uiSetRoundBox(15); glColor4ub(255, 255, 255, 100); uiRoundBox( (float)*offsx-0.5f, (float)ys-1.0f, (float)*offsx+OL_H-3.0f, (float)ys+OL_H-3.0f, OL_H/2.0f-2.0f); - glEnable(GL_BLEND); + glEnable(GL_BLEND); /* roundbox disables */ } - tselem_draw_icon((float)*offsx, (float)ys, tselem, te); + tselem_draw_icon(block, xmax, (float)*offsx, (float)ys, tselem, te, 0.5f); te->xs= (float)*offsx; te->ys= (float)ys; te->xend= (short)*offsx+OL_X; @@ -4349,12 +4393,12 @@ static void outliner_draw_iconrow(bContext *C, Scene *scene, SpaceOops *soops, L /* this tree element always has same amount of branches, so dont draw */ if(tselem->type!=TSE_R_LAYER) - outliner_draw_iconrow(C, scene, soops, &te->subtree, level+1, offsx, ys); + outliner_draw_iconrow(C, block, scene, soops, &te->subtree, level+1, xmax, offsx, ys); } } -static void outliner_draw_tree_element(bContext *C, Scene *scene, ARegion *ar, SpaceOops *soops, TreeElement *te, int startx, int *starty) +static void outliner_draw_tree_element(bContext *C, uiBlock *block, Scene *scene, ARegion *ar, SpaceOops *soops, TreeElement *te, int startx, int *starty) { TreeElement *ten; TreeStoreElem *tselem; @@ -4363,7 +4407,12 @@ static void outliner_draw_tree_element(bContext *C, Scene *scene, ARegion *ar, S tselem= TREESTORE(te); if(*starty+2*OL_H >= ar->v2d.cur.ymin && *starty<= ar->v2d.cur.ymax) { - + int xmax= ar->v2d.cur.xmax; + + /* icons can be ui buts, we dont want it to overlap with restrict */ + if((soops->flag & SO_HIDE_RESTRICTCOLS)==0) + xmax-= OL_TOGW+ICON_DEFAULT_WIDTH; + glEnable(GL_BLEND); /* colors for active/selected data */ @@ -4436,8 +4485,9 @@ static void outliner_draw_tree_element(bContext *C, Scene *scene, ARegion *ar, S /* datatype icon */ if(!(ELEM(tselem->type, TSE_RNA_PROPERTY, TSE_RNA_ARRAY_ELEM))) { - // icons a bit higher - tselem_draw_icon((float)startx+offsx, (float)*starty+2, tselem, te); + // icons a bit higher + tselem_draw_icon(block, xmax, (float)startx+offsx, (float)*starty+2, tselem, te, 1.0f); + offsx+= OL_X; } else @@ -4469,6 +4519,7 @@ static void outliner_draw_tree_element(bContext *C, Scene *scene, ARegion *ar, S if(tselem->type==0 && te->idcode==ID_SCE); else if(tselem->type!=TSE_R_LAYER) { /* this tree element always has same amount of branches, so dont draw */ int tempx= startx+offsx; + // divider UI_ThemeColorShade(TH_BACK, -40); glRecti(tempx -10, *starty+4, tempx -8, *starty+OL_H-4); @@ -4476,8 +4527,8 @@ static void outliner_draw_tree_element(bContext *C, Scene *scene, ARegion *ar, S glEnable(GL_BLEND); glPixelTransferf(GL_ALPHA_SCALE, 0.5); - outliner_draw_iconrow(C, scene, soops, &te->subtree, 0, &tempx, *starty+2); - + outliner_draw_iconrow(C, block, scene, soops, &te->subtree, 0, xmax, &tempx, *starty+2); + glPixelTransferf(GL_ALPHA_SCALE, 1.0); glDisable(GL_BLEND); } @@ -4493,7 +4544,7 @@ static void outliner_draw_tree_element(bContext *C, Scene *scene, ARegion *ar, S if((tselem->flag & TSE_CLOSED)==0) { for(ten= te->subtree.first; ten; ten= ten->next) { - outliner_draw_tree_element(C, scene, ar, soops, ten, startx+OL_X, starty); + outliner_draw_tree_element(C, block, scene, ar, soops, ten, startx+OL_X, starty); } } } @@ -4572,7 +4623,7 @@ static void outliner_draw_selection(ARegion *ar, SpaceOops *soops, ListBase *lb, } -static void outliner_draw_tree(bContext *C, Scene *scene, ARegion *ar, SpaceOops *soops) +static void outliner_draw_tree(bContext *C, uiBlock *block, Scene *scene, ARegion *ar, SpaceOops *soops) { TreeElement *te; int starty, startx; @@ -4604,7 +4655,7 @@ static void outliner_draw_tree(bContext *C, Scene *scene, ARegion *ar, SpaceOops starty= (int)ar->v2d.tot.ymax-OL_H; startx= 0; for(te= soops->tree.first; te; te= te->next) { - outliner_draw_tree_element(C, scene, ar, soops, te, startx, &starty); + outliner_draw_tree_element(C, block, scene, ar, soops, te, startx, &starty); } } @@ -4723,7 +4774,7 @@ static void restrictbutton_modifier_cb(bContext *C, void *poin, void *poin2) DAG_id_flush_update(&ob->id, OB_RECALC_DATA); object_handle_update(scene, ob); - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); } static void restrictbutton_bone_cb(bContext *C, void *poin, void *poin2) @@ -4770,7 +4821,7 @@ static void namebutton_cb(bContext *C, void *tsep, char *oldname) else { switch(tselem->type) { case TSE_DEFGROUP: - unique_vertexgroup_name(te->directdata, (Object *)tselem->id); // id = object + defgroup_unique_name(te->directdata, (Object *)tselem->id); // id = object break; case TSE_NLA_ACTION: test_idbutton(tselem->id->name+2); @@ -4838,6 +4889,7 @@ static void namebutton_cb(bContext *C, void *tsep, char *oldname) break; } } + tselem->flag &= ~TSE_TEXTBUT; } } @@ -5104,6 +5156,9 @@ static char *keymap_mouse_menu(void) str += sprintf(str, formatstr, "Wheel Down", WHEELDOWNMOUSE); str += sprintf(str, formatstr, "Wheel In", WHEELINMOUSE); str += sprintf(str, formatstr, "Wheel Out", WHEELOUTMOUSE); + str += sprintf(str, formatstr, "Mouse/Trackpad Pan", MOUSEPAN); + str += sprintf(str, formatstr, "Mouse/Trackpad Zoom", MOUSEZOOM); + str += sprintf(str, formatstr, "Mouse/Trackpad Rotate", MOUSEROTATE); return string; } @@ -5275,8 +5330,9 @@ static void outliner_buttons(const bContext *C, uiBlock *block, ARegion *ar, Spa else if(tselem->id && GS(tselem->id->name)==ID_LI) len = sizeof(((Library*) 0)->name); else len= sizeof(((ID*) 0)->name)-2; + dx= (int)UI_GetStringWidth(te->name); - if(dx<50) dx= 50; + if(dx<100) dx= 100; bt= uiDefBut(block, TEX, OL_NAMEBUTTON, "", (short)te->xs+2*OL_X-4, (short)te->ys, dx+10, OL_H-1, te->name, 1.0, (float)len-1, 0, 0, ""); uiButSetRenameFunc(bt, namebutton_cb, tselem); @@ -5347,10 +5403,10 @@ void draw_outliner(const bContext *C) /* draw outliner stuff (background and hierachy lines) */ outliner_back(ar, soops); - outliner_draw_tree((bContext *)C, scene, ar, soops); + block= uiBeginBlock(C, ar, "outliner buttons", UI_EMBOSS); + outliner_draw_tree((bContext *)C, block, scene, ar, soops); /* draw icons and names */ - block= uiBeginBlock(C, ar, "outliner buttons", UI_EMBOSS); outliner_buttons(C, block, ar, soops, &soops->tree); if(ELEM(soops->outlinevis, SO_DATABLOCKS, SO_USERDEF)) { diff --git a/source/blender/editors/space_outliner/space_outliner.c b/source/blender/editors/space_outliner/space_outliner.c index 469fe148b97..c62f2fee66a 100644 --- a/source/blender/editors/space_outliner/space_outliner.c +++ b/source/blender/editors/space_outliner/space_outliner.c @@ -128,9 +128,11 @@ static void outliner_main_area_listener(ARegion *ar, wmNotifier *wmn) break; case NC_OBJECT: switch(wmn->data) { + case ND_TRANSFORM: + /* transform doesn't change outliner data */ + break; case ND_BONE_ACTIVE: case ND_BONE_SELECT: - case ND_TRANSFORM: ED_region_tag_redraw(ar); break; case ND_MODIFIER: @@ -284,7 +286,7 @@ void ED_spacetype_outliner(void) /* regions: header */ art= MEM_callocN(sizeof(ARegionType), "spacetype time region"); art->regionid = RGN_TYPE_HEADER; - art->minsizey= HEADERY; + art->prefsizey= HEADERY; art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->init= outliner_header_area_init; diff --git a/source/blender/editors/space_script/space_script.c b/source/blender/editors/space_script/space_script.c index b882a3313cd..89f5eefae88 100644 --- a/source/blender/editors/space_script/space_script.c +++ b/source/blender/editors/space_script/space_script.c @@ -219,7 +219,7 @@ void ED_spacetype_script(void) /* regions: header */ art= MEM_callocN(sizeof(ARegionType), "spacetype script region"); art->regionid = RGN_TYPE_HEADER; - art->minsizey= HEADERY; + art->prefsizey= HEADERY; art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER; art->init= script_header_area_init; diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index 354b4712ce4..13bf50b1c19 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -148,13 +148,19 @@ static void seq_load_operator_info(SeqLoadInfo *seq_load, wmOperator *op) memset(seq_load, 0, sizeof(SeqLoadInfo)); seq_load->start_frame= RNA_int_get(op->ptr, "start_frame"); + seq_load->end_frame= seq_load->start_frame; /* un-set */ + seq_load->channel= RNA_int_get(op->ptr, "channel"); - seq_load->len= 1; // images only! + seq_load->len= 1; // images only, if endframe isnt set! 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 */ + if (RNA_struct_find_property(op->ptr, "end_frame")) { + seq_load->end_frame = RNA_int_get(op->ptr, "end_frame"); + } + if (RNA_struct_find_property(op->ptr, "replace_sel") && RNA_boolean_get(op->ptr, "replace_sel")) seq_load->flag |= SEQ_LOAD_REPLACE_SEL; @@ -336,7 +342,7 @@ void SEQUENCER_OT_movie_strip_add(struct wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|MOVIEFILE, FILE_SPECIAL); + WM_operator_properties_filesel(ot, FOLDERFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPEN); sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_FILES); RNA_def_boolean(ot->srna, "sound", TRUE, "Sound", "Load sound with the movie"); } @@ -373,7 +379,7 @@ void SEQUENCER_OT_sound_strip_add(struct wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE, FILE_SPECIAL); + WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE, FILE_SPECIAL, FILE_OPEN); sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_FILES); RNA_def_boolean(ot->srna, "cache", FALSE, "Cache", "Cache the sound in memory."); } @@ -417,6 +423,9 @@ static int sequencer_add_image_strip_exec(bContext *C, wmOperator *op) } else { BLI_split_dirfile_basic(seq_load.path, NULL, se->name); + if(seq_load.start_frame < seq_load.end_frame) { + seq->endstill= seq_load.end_frame - seq_load.start_frame; + } } calc_sequence_disp(seq); @@ -433,7 +442,7 @@ static int sequencer_add_image_strip_exec(bContext *C, wmOperator *op) static int sequencer_add_image_strip_invoke(bContext *C, wmOperator *op, wmEvent *event) { - sequencer_generic_invoke_xy__internal(C, op, event, 0); + sequencer_generic_invoke_xy__internal(C, op, event, SEQPROP_ENDFRAME); return WM_operator_filesel(C, op, event); //return sequencer_add_image_strip_exec(C, op); } @@ -456,8 +465,8 @@ void SEQUENCER_OT_image_strip_add(struct wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL); - sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_FILES); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPEN); + sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_ENDFRAME|SEQPROP_FILES); } @@ -599,7 +608,7 @@ void SEQUENCER_OT_effect_strip_add(struct wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, 0, FILE_SPECIAL); + WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPEN); sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_ENDFRAME); RNA_def_enum(ot->srna, "type", sequencer_prop_effect_types, SEQ_CROSS, "Type", "Sequencer effect type"); RNA_def_float_vector(ot->srna, "color", 3, NULL, 0.0f, 1.0f, "Color", "Initialize the strip with this color (only used when type='COLOR')", 0.0f, 1.0f); diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index a2525430a10..37bb75a5efd 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -699,8 +699,14 @@ void draw_image_seq(Scene *scene, ARegion *ar, SpaceSeq *sseq) break; } - if(ibuf->rect_float && ibuf->rect==NULL) - IMB_rect_from_float(ibuf); + if(ibuf->rect_float && ibuf->rect==NULL) { + if (scene->r.color_mgt_flag & R_COLOR_MANAGEMENT) { + ibuf->profile = IB_PROFILE_LINEAR_RGB; + } else { + ibuf->profile = IB_PROFILE_NONE; + } + IMB_rect_from_float(ibuf); + } /* needed for gla draw */ glaDefine2DArea(&ar->winrct); diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c index 25364aed5ca..d2b13ac7912 100644 --- a/source/blender/editors/space_sequencer/space_sequencer.c +++ b/source/blender/editors/space_sequencer/space_sequencer.c @@ -237,7 +237,7 @@ static void sequencer_free(SpaceLink *sl) /* spacetype; init callback */ static void sequencer_init(struct wmWindowManager *wm, ScrArea *sa) { - + } static SpaceLink *sequencer_duplicate(SpaceLink *sl) @@ -251,11 +251,13 @@ 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) { wmKeyMap *keymap; + ListBase *lb; UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_CUSTOM, ar->winx, ar->winy); @@ -265,6 +267,12 @@ static void sequencer_main_area_init(wmWindowManager *wm, ARegion *ar) /* 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); + + /* add drop boxes */ + lb= WM_dropboxmap_find("Sequencer", SPACE_SEQ, RGN_TYPE_WINDOW); + + WM_event_add_dropbox_handler(&ar->handlers, lb); + } static void sequencer_main_area_draw(const bContext *C, ARegion *ar) @@ -275,6 +283,40 @@ static void sequencer_main_area_draw(const bContext *C, ARegion *ar) draw_timeline_seq(C, ar); } +/* ************* dropboxes ************* */ + +static int image_drop_poll(bContext *C, wmDrag *drag, wmEvent *event) +{ + if(drag->type==WM_DRAG_PATH) + if(ELEM(drag->icon, ICON_FILE_IMAGE, ICON_FILE_BLANK)) /* rule might not work? */ + return 1; + return 0; +} + +static int movie_drop_poll(bContext *C, wmDrag *drag, wmEvent *event) +{ + if(drag->type==WM_DRAG_PATH) + if(ELEM(drag->icon, ICON_FILE_MOVIE, ICON_FILE_BLANK)) /* rule might not work? */ + return 1; + return 0; +} + +static void sequencer_drop_copy(wmDrag *drag, wmDropBox *drop) +{ + /* copy drag path to properties */ + RNA_string_set(drop->ptr, "path", drag->path); +} + +/* this region dropbox definition */ +static void sequencer_dropboxes(void) +{ + ListBase *lb= WM_dropboxmap_find("Sequencer", SPACE_SEQ, RGN_TYPE_WINDOW); + + WM_dropbox_add(lb, "SEQUENCER_OT_image_strip_add", image_drop_poll, sequencer_drop_copy); + WM_dropbox_add(lb, "SEQUENCER_OT_movie_strip_add", movie_drop_poll, sequencer_drop_copy); +} + +/* ************* end drop *********** */ /* add handlers, stuff you only do once or on area/region changes */ static void sequencer_header_area_init(wmWindowManager *wm, ARegion *ar) @@ -421,7 +463,8 @@ void ED_spacetype_sequencer(void) st->duplicate= sequencer_duplicate; st->operatortypes= sequencer_operatortypes; st->keymap= sequencer_keymap; - + st->dropboxes= sequencer_dropboxes; + /* regions: main window */ art= MEM_callocN(sizeof(ARegionType), "spacetype sequencer region"); art->regionid = RGN_TYPE_WINDOW; @@ -435,7 +478,7 @@ void ED_spacetype_sequencer(void) /* preview */ art= MEM_callocN(sizeof(ARegionType), "spacetype sequencer region"); art->regionid = RGN_TYPE_PREVIEW; - art->minsizey = 240; // XXX + art->prefsizey = 240; // XXX art->init= sequencer_preview_area_init; art->draw= sequencer_preview_area_draw; art->listener= sequencer_preview_area_listener; @@ -445,7 +488,7 @@ void ED_spacetype_sequencer(void) /* regions: listview/buttons */ art= MEM_callocN(sizeof(ARegionType), "spacetype sequencer region"); art->regionid = RGN_TYPE_UI; - art->minsizex= 220; // XXX + art->prefsizex= 220; // XXX art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_FRAMES; art->listener= sequencer_buttons_area_listener; art->init= sequencer_buttons_area_init; @@ -459,7 +502,7 @@ void ED_spacetype_sequencer(void) /* regions: header */ art= MEM_callocN(sizeof(ARegionType), "spacetype sequencer region"); art->regionid = RGN_TYPE_HEADER; - art->minsizey= HEADERY; + art->prefsizey= HEADERY; art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->init= sequencer_header_area_init; diff --git a/source/blender/editors/space_sound/space_sound.c b/source/blender/editors/space_sound/space_sound.c index 1cd5ab65c0f..f77afb6e168 100644 --- a/source/blender/editors/space_sound/space_sound.c +++ b/source/blender/editors/space_sound/space_sound.c @@ -246,7 +246,7 @@ void ED_spacetype_sound(void) /* regions: header */ art= MEM_callocN(sizeof(ARegionType), "spacetype sound region"); art->regionid = RGN_TYPE_HEADER; - art->minsizey= HEADERY; + art->prefsizey= HEADERY; art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER; art->init= sound_header_area_init; @@ -257,7 +257,7 @@ void ED_spacetype_sound(void) /* regions: channels */ art= MEM_callocN(sizeof(ARegionType), "spacetype sound region"); art->regionid = RGN_TYPE_CHANNELS; - art->minsizex= 80; + art->prefsizex= 80; art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; // art->init= sound_channel_area_init; diff --git a/source/blender/editors/space_text/space_text.c b/source/blender/editors/space_text/space_text.c index 292249bb0e8..77e0efafd0b 100644 --- a/source/blender/editors/space_text/space_text.c +++ b/source/blender/editors/space_text/space_text.c @@ -127,14 +127,6 @@ static void text_listener(ScrArea *sa, wmNotifier *wmn) if(!wmn->reference || wmn->reference == st->text) { ED_area_tag_redraw(sa); - if(wmn->data == ND_CURSOR || wmn->action == NA_EDITED) { - ARegion *ar; - - for(ar=sa->regionbase.first; ar; ar= ar->next) - if(ar->regiontype==RGN_TYPE_WINDOW) - text_update_cursor_moved(st, ar); - } - if(wmn->action == NA_EDITED) if(st->text) text_update_edited(st->text); @@ -280,8 +272,6 @@ static void text_keymap(struct wmKeyConfig *keyconf) 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", 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", LEFTARROWKEY, KM_PRESS, 0, 0)->ptr, "type", PREV_CHAR); @@ -313,6 +303,7 @@ static void text_keymap(struct wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "TEXT_OT_overwrite_toggle", INSERTKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "TEXT_OT_scroll", MIDDLEMOUSE, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "TEXT_OT_scroll", MOUSEPAN, 0, 0, 0); WM_keymap_add_item(keymap, "TEXT_OT_scroll_bar", LEFTMOUSE, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "TEXT_OT_cursor_set", LEFTMOUSE, KM_PRESS, 0, 0); RNA_boolean_set(WM_keymap_add_item(keymap, "TEXT_OT_cursor_set", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "select", 1); @@ -442,7 +433,7 @@ void ED_spacetype_text(void) /* regions: properties */ art= MEM_callocN(sizeof(ARegionType), "spacetype text region"); art->regionid = RGN_TYPE_UI; - art->minsizex= UI_COMPACT_PANEL_WIDTH; + art->prefsizex= UI_COMPACT_PANEL_WIDTH; art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; art->init= text_properties_area_init; @@ -452,7 +443,7 @@ void ED_spacetype_text(void) /* regions: header */ art= MEM_callocN(sizeof(ARegionType), "spacetype text region"); art->regionid = RGN_TYPE_HEADER; - art->minsizey= HEADERY; + art->prefsizey= HEADERY; art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER; art->init= text_header_area_init; diff --git a/source/blender/editors/space_text/text_draw.c b/source/blender/editors/space_text/text_draw.c index 035c56005fe..b74e1f6cfb2 100644 --- a/source/blender/editors/space_text/text_draw.c +++ b/source/blender/editors/space_text/text_draw.c @@ -43,6 +43,7 @@ #include "DNA_screen_types.h" #include "DNA_userdef_types.h" +#include "BKE_context.h" #include "BKE_global.h" #include "BKE_main.h" #include "BKE_suggestions.h" @@ -1311,10 +1312,19 @@ void text_update_character_width(SpaceText *st) /* Moves the view to the cursor location, also used to make sure the view isnt outside the file */ -void text_update_cursor_moved(SpaceText *st, ARegion *ar) +void text_update_cursor_moved(bContext *C) { + ScrArea *sa= CTX_wm_area(C); + SpaceText *st= CTX_wm_space_text(C); Text *text= st->text; - int i, x; + ARegion *ar; + int i, x, winx= 0; + + if(!st) return; + + for(ar=sa->regionbase.first; ar; ar= ar->next) + if(ar->regiontype==RGN_TYPE_WINDOW) + winx= ar->winx; if(!text || !text->curl) return; @@ -1330,8 +1340,8 @@ void text_update_cursor_moved(SpaceText *st, ARegion *ar) else { x= text_draw(st, text->sell->line, st->left, text->selc, 0, 0, 0, NULL); - if(x==0 || x>ar->winx) - st->left= text->curc-0.5*(ar->winx)/st->cwidth; + if(x==0 || x>winx) + st->left= text->curc-0.5*winx/st->cwidth; } if(st->top < 0) st->top= 0; diff --git a/source/blender/editors/space_text/text_intern.h b/source/blender/editors/space_text/text_intern.h index 4847f2f0741..5e3070c4718 100644 --- a/source/blender/editors/space_text/text_intern.h +++ b/source/blender/editors/space_text/text_intern.h @@ -56,7 +56,7 @@ int text_font_width(struct SpaceText *st, char *str); void text_update_line_edited(struct Text *text, struct TextLine *line); void text_update_edited(struct Text *text); void text_update_character_width(struct SpaceText *st); -void text_update_cursor_moved(struct SpaceText *st, struct ARegion *ar); +void text_update_cursor_moved(struct bContext *C); #define TEXTXLOC (st->cwidth * st->linenrs_tot) diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c index 0504db51a72..bc103466c49 100644 --- a/source/blender/editors/space_text/text_ops.c +++ b/source/blender/editors/space_text/text_ops.c @@ -287,7 +287,7 @@ void TEXT_OT_open(wmOperatorType *ot) ot->poll= text_new_poll; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE|PYSCRIPTFILE, FILE_SPECIAL); + WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE|PYSCRIPTFILE, FILE_SPECIAL, FILE_OPEN); } /******************* reload operator *********************/ @@ -307,6 +307,7 @@ static int reload_exec(bContext *C, wmOperator *op) #endif text_update_edited(text); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); return OPERATOR_FINISHED; @@ -337,10 +338,12 @@ static int unlink_exec(bContext *C, wmOperator *op) if(st) { if(text->id.prev) { st->text = text->id.prev; + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, st->text); } else if(text->id.next) { st->text = text->id.next; + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, st->text); } } @@ -378,6 +381,7 @@ static int make_internal_exec(bContext *C, wmOperator *op) text->name= NULL; } + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); return OPERATOR_FINISHED; @@ -447,6 +451,7 @@ static int save_exec(bContext *C, wmOperator *op) txt_write_file(text, op->reports); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); return OPERATOR_FINISHED; @@ -482,6 +487,7 @@ static int save_as_exec(bContext *C, wmOperator *op) txt_write_file(text, op->reports); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); return OPERATOR_FINISHED; @@ -521,7 +527,7 @@ void TEXT_OT_save_as(wmOperatorType *ot) ot->poll= text_edit_poll; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE|PYSCRIPTFILE, FILE_SPECIAL); + WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE|PYSCRIPTFILE, FILE_SPECIAL, FILE_SAVE); } /******************* run script operator *********************/ @@ -720,7 +726,7 @@ static int paste_exec(bContext *C, wmOperator *op) MEM_freeN(buf); - WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); /* run the script while editing, evil but useful */ @@ -789,7 +795,7 @@ static int cut_exec(bContext *C, wmOperator *op) txt_copy_clipboard(text); txt_delete_selected(text); - WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); /* run the script while editing, evil but useful */ @@ -826,7 +832,7 @@ static int indent_exec(bContext *C, wmOperator *op) text_update_edited(text); - WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); return OPERATOR_FINISHED; @@ -856,7 +862,7 @@ static int unindent_exec(bContext *C, wmOperator *op) text_update_edited(text); - WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); return OPERATOR_FINISHED; @@ -897,7 +903,7 @@ static int line_break_exec(bContext *C, wmOperator *op) text_update_line_edited(text, text->curl); } - WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); return OPERATOR_CANCELLED; @@ -926,6 +932,7 @@ static int comment_exec(bContext *C, wmOperator *op) comment(text); text_update_edited(text); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); return OPERATOR_FINISHED; } @@ -956,6 +963,7 @@ static int uncomment_exec(bContext *C, wmOperator *op) uncomment(text); text_update_edited(text); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); return OPERATOR_FINISHED; @@ -1097,7 +1105,7 @@ static int convert_whitespace_exec(bContext *C, wmOperator *op) } text_update_edited(text); - + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); return OPERATOR_FINISHED; @@ -1126,6 +1134,7 @@ static int select_all_exec(bContext *C, wmOperator *op) txt_sel_all(text); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); return OPERATOR_FINISHED; @@ -1151,6 +1160,7 @@ static int select_line_exec(bContext *C, wmOperator *op) txt_sel_line(text); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); return OPERATOR_FINISHED; @@ -1186,6 +1196,7 @@ static int previous_marker_exec(bContext *C, wmOperator *op) txt_move_to(text, mrk->lineno, mrk->end, 1); } + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); return OPERATOR_FINISHED; @@ -1221,6 +1232,7 @@ static int next_marker_exec(bContext *C, wmOperator *op) txt_move_to(text, mrk->lineno, mrk->end, 1); } + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); return OPERATOR_FINISHED; @@ -1246,6 +1258,7 @@ static int clear_all_markers_exec(bContext *C, wmOperator *op) txt_clear_markers(text, 0, 0); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); return OPERATOR_FINISHED; @@ -1519,7 +1532,7 @@ static int move_cursor(bContext *C, int type, int select) break; } - WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); return OPERATOR_FINISHED; @@ -1584,6 +1597,7 @@ static int jump_exec(bContext *C, wmOperator *op) txt_move_toline(text, line-1, 0); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text); return OPERATOR_FINISHED; @@ -1630,7 +1644,7 @@ static int delete_exec(bContext *C, wmOperator *op) text_update_line_edited(text, text->curl); - WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); /* run the script while editing, evil but useful */ @@ -1720,25 +1734,6 @@ static int scroll_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -static int scroll_invoke(bContext *C, wmOperator *op, wmEvent *event) -{ - SpaceText *st= CTX_wm_space_text(C); - TextScroll *tsc; - - if(RNA_property_is_set(op->ptr, "lines")) - return scroll_exec(C, op); - - tsc= MEM_callocN(sizeof(TextScroll), "TextScroll"); - tsc->first= 1; - op->customdata= tsc; - - st->flags|= ST_SCROLL_SELECT; - - WM_event_add_modal_handler(C, op); - - return OPERATOR_RUNNING_MODAL; -} - static void scroll_apply(bContext *C, wmOperator *op, wmEvent *event) { SpaceText *st= CTX_wm_space_text(C); @@ -1816,6 +1811,40 @@ static int scroll_cancel(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } +static int scroll_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + SpaceText *st= CTX_wm_space_text(C); + TextScroll *tsc; + + if(RNA_property_is_set(op->ptr, "lines")) + return scroll_exec(C, op); + + tsc= MEM_callocN(sizeof(TextScroll), "TextScroll"); + tsc->first= 1; + op->customdata= tsc; + + st->flags|= ST_SCROLL_SELECT; + + if (event->type == MOUSEPAN) { + text_update_character_width(st); + + tsc->hold[0] = event->prevx; + tsc->hold[1] = event->prevy; + /* Sensitivity of scroll set to 4pix per line/char */ + event->mval[0] = event->prevx + (event->x - event->prevx)*st->cwidth/4; + event->mval[1] = event->prevy + (event->y - event->prevy)*st->lheight/4; + tsc->first = 0; + tsc->scrollbar = 0; + scroll_apply(C, op, event); + scroll_exit(C, op); + return OPERATOR_FINISHED; + } + + WM_event_add_modal_handler(C, op); + + return OPERATOR_RUNNING_MODAL; +} + void TEXT_OT_scroll(wmOperatorType *ot) { /* identifiers */ @@ -2042,6 +2071,7 @@ static void set_cursor_apply(bContext *C, wmOperator *op, wmEvent *event) set_cursor_to_pos(st, ar, event->mval[0], event->mval[1]<0?0:ar->winy, 1); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, st->text); } else if(!st->wordwrap && (event->mval[0]<0 || event->mval[0]>ar->winx)) { @@ -2050,12 +2080,14 @@ static void set_cursor_apply(bContext *C, wmOperator *op, wmEvent *event) set_cursor_to_pos(st, ar, event->mval[0], event->mval[1], 1); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, st->text); // XXX PIL_sleep_ms(10); } else { set_cursor_to_pos(st, ar, event->mval[0], event->mval[1], 1); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, st->text); scu->old[0]= event->mval[0]; @@ -2083,6 +2115,7 @@ static void set_cursor_exit(bContext *C, wmOperator *op) if(scu->sell!=linep2 || scu->selc!=charp2) txt_undo_add_toop(st->text, UNDO_STO, scu->sell, scu->selc, linep2, charp2); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, st->text); MEM_freeN(scu); @@ -2195,6 +2228,7 @@ static int line_number_invoke(bContext *C, wmOperator *op, wmEvent *event) txt_move_toline(text, jump_to-1, 0); last_jump= time; + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text); return OPERATOR_FINISHED; @@ -2240,7 +2274,7 @@ static int insert_exec(bContext *C, wmOperator *op) text_update_line_edited(text, text->curl); - WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); return OPERATOR_FINISHED; @@ -2323,6 +2357,7 @@ static int find_and_replace(bContext *C, wmOperator *op, short mode) MEM_freeN(text->curl->format); text->curl->format= NULL; } + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); } else if(mode==TEXT_MARK_ALL) { @@ -2335,6 +2370,7 @@ static int find_and_replace(bContext *C, wmOperator *op, short mode) } txt_add_marker(text, text->curl, text->curc, text->selc, color, TMARK_GRP_FINDALL, TMARK_EDITALL); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); } } @@ -2344,6 +2380,7 @@ static int find_and_replace(bContext *C, wmOperator *op, short mode) /* Find next */ if(txt_find_string(text, st->findstr, flags & ST_FIND_WRAP)) { + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text); } else if(flags & ST_FIND_ALL) { @@ -2354,6 +2391,7 @@ static int find_and_replace(bContext *C, wmOperator *op, short mode) else text= st->text= G.main->text.first; txt_move_toline(text, 0, 0); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text); first= 1; } @@ -2664,7 +2702,7 @@ void ED_text_undo_step(bContext *C, int step) text_update_edited(text); - WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text); + text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text); } diff --git a/source/blender/editors/space_text/text_python.c b/source/blender/editors/space_text/text_python.c index 92a64720210..9a8a8e7f976 100644 --- a/source/blender/editors/space_text/text_python.c +++ b/source/blender/editors/space_text/text_python.c @@ -401,6 +401,7 @@ short do_textmarkers(SpaceText *st, char ascii, unsigned short evnt, short val) if(marker) { txt_move_to(text, marker->lineno, marker->start, 0); txt_move_to(text, marker->lineno, marker->end, 1); + // XXX text_update_cursor_moved(C); // XXX WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text); evnt= ascii= val= 0; draw= 1; @@ -504,6 +505,7 @@ short do_textmarkers(SpaceText *st, char ascii, unsigned short evnt, short val) if(mrk) { txt_move_to(text, mrk->lineno, mrk->start, 0); txt_move_to(text, mrk->lineno, mrk->end, 1); + // XXX text_update_cursor_moved(C); // XXX WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text); } swallow= 1; diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c index eb578e093df..7b935ae916b 100644 --- a/source/blender/editors/space_time/space_time.c +++ b/source/blender/editors/space_time/space_time.c @@ -113,21 +113,28 @@ static ActKeyColumn *time_cfra_find_ak (ActKeyColumn *ak, float cframe) } /* helper for time_draw_keyframes() */ -static void time_draw_idblock_keyframes(View2D *v2d, ID *id) +static void time_draw_idblock_keyframes(View2D *v2d, ID *id, short onlysel) { + bDopeSheet ads; DLRBT_Tree keys; ActKeyColumn *ak; /* init binarytree-list for getting keyframes */ BLI_dlrbTree_init(&keys); + /* init dopesheet settings */ + // FIXME: the ob_to_keylist function currently doesn't take this into account... + memset(&ads, 0, sizeof(bDopeSheet)); + if (onlysel) + ads.filterflag |= ADS_FILTER_ONLYSEL; + /* populate tree with keyframe nodes */ switch (GS(id->name)) { case ID_SCE: - scene_to_keylist(NULL, (Scene *)id, &keys, NULL); + scene_to_keylist(&ads, (Scene *)id, &keys, NULL); break; case ID_OB: - ob_to_keylist(NULL, (Object *)id, &keys, NULL); + ob_to_keylist(&ads, (Object *)id, &keys, NULL); break; } @@ -159,21 +166,47 @@ static void time_draw_keyframes(const bContext *C, SpaceTime *stime, ARegion *ar Scene *scene= CTX_data_scene(C); Object *ob= CTX_data_active_object(C); View2D *v2d= &ar->v2d; + short onlysel= (stime->flag & TIME_ONLYACTSEL); /* draw scene keyframes first - * - only if we're not only showing the + * - don't try to do this when only drawing active/selected data keyframes, + * since this can become quite slow */ - if ((scene) && (stime->flag & TIME_ONLYACTSEL)==0) { + if (scene && onlysel==0) { /* set draw color */ glColor3ub(0xDD, 0xA7, 0x00); - time_draw_idblock_keyframes(v2d, (ID *)scene); + time_draw_idblock_keyframes(v2d, (ID *)scene, onlysel); } - /* draw active object's keyframes */ - if (ob) { - /* set draw color */ - glColor3ub(0xDD, 0xD7, 0x00); - time_draw_idblock_keyframes(v2d, (ID *)ob); + /* draw keyframes from selected objects + * - only do the active object if in posemode (i.e. showing only keyframes for the bones) + * OR the onlysel flag was set, which means that only active object's keyframes should + * be considered + */ + glColor3ub(0xDD, 0xD7, 0x00); + + if (ob && ((ob->mode == OB_MODE_POSE) || onlysel)) { + /* draw keyframes for active object only */ + time_draw_idblock_keyframes(v2d, (ID *)ob, onlysel); + } + else { + short active_done = 0; + + /* draw keyframes from all selected objects */ + CTX_DATA_BEGIN(C, Object*, obsel, selected_objects) + { + /* last arg is 0, since onlysel doesn't apply here... */ + time_draw_idblock_keyframes(v2d, (ID *)obsel, 0); + + /* if this object is the active one, set flag so that we don't draw again */ + if (obsel == ob) + active_done= 1; + } + CTX_DATA_END; + + /* if active object hasn't been done yet, draw it... */ + if (ob && (active_done == 0)) + time_draw_idblock_keyframes(v2d, (ID *)ob, 0); } } @@ -399,7 +432,7 @@ void ED_spacetype_time(void) /* regions: header */ art= MEM_callocN(sizeof(ARegionType), "spacetype time region"); art->regionid = RGN_TYPE_HEADER; - art->minsizey= HEADERY; + art->prefsizey= HEADERY; art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; art->init= time_header_area_init; diff --git a/source/blender/editors/space_time/time_ops.c b/source/blender/editors/space_time/time_ops.c index c80f13336cb..e3ea2ea29ea 100644 --- a/source/blender/editors/space_time/time_ops.c +++ b/source/blender/editors/space_time/time_ops.c @@ -69,7 +69,7 @@ static int time_set_sfra_exec (bContext *C, wmOperator *op) if (PEFRA < frame) frame= PEFRA; /* if Preview Range is defined, set the 'start' frame for that */ - if (scene->r.psfra) + if (PRVRANGEON) scene->r.psfra= frame; else scene->r.sfra= frame; @@ -109,7 +109,7 @@ static int time_set_efra_exec (bContext *C, wmOperator *op) if (PSFRA > frame) frame= PSFRA; /* if Preview Range is defined, set the 'end' frame for that */ - if (scene->r.pefra) + if (PRVRANGEON) scene->r.pefra= frame; else scene->r.efra= frame; diff --git a/source/blender/editors/space_userpref/space_userpref.c b/source/blender/editors/space_userpref/space_userpref.c index f45e08be697..7b522482db1 100644 --- a/source/blender/editors/space_userpref/space_userpref.c +++ b/source/blender/editors/space_userpref/space_userpref.c @@ -175,7 +175,7 @@ void ED_spacetype_userpref(void) /* regions: header */ art= MEM_callocN(sizeof(ARegionType), "spacetype userpref region"); art->regionid = RGN_TYPE_HEADER; - art->minsizey= HEADERY; + art->prefsizey= HEADERY; art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_HEADER; art->listener= userpref_header_listener; art->init= userpref_header_area_init; diff --git a/source/blender/editors/space_view3d/drawanimviz.c b/source/blender/editors/space_view3d/drawanimviz.c index b8184a60cee..11e598aeb59 100644 --- a/source/blender/editors/space_view3d/drawanimviz.c +++ b/source/blender/editors/space_view3d/drawanimviz.c @@ -104,6 +104,7 @@ void draw_motion_paths_init(Scene *scene, View3D *v3d, ARegion *ar) * - assumes that the viewport has already been initialised properly * i.e. draw_motion_paths_init() has been called */ +// FIXME: the text is still drawn in the wrong space - it includes the current transforms of the object still... void draw_motion_path_instance(Scene *scene, View3D *v3d, ARegion *ar, Object *ob, bPoseChannel *pchan, bAnimVizSettings *avs, bMotionPath *mpath) { @@ -273,7 +274,7 @@ void draw_motion_path_instance(Scene *scene, View3D *v3d, ARegion *ar, glPointSize(1.0f); /* Draw frame numbers of keyframes */ - if (avs->path_viewflag & (MOTIONPATH_VIEW_FNUMS|MOTIONPATH_VIEW_KFNOS)) { + if (avs->path_viewflag & MOTIONPATH_VIEW_FNUMS) { for (i=0, mpv=mpv_start; i < len; i++, mpv++) { float mframe= (float)(sfra + i); @@ -515,7 +516,7 @@ static void draw_ghost_poses(Scene *scene, View3D *v3d, ARegion *ar, Base *base) /* draw from darkest blend to lowest */ for(cur= stepsize; cur<range; cur+=stepsize) { - ctime= cur - (float)fmod(cfrao, stepsize); /* ensures consistant stepping */ + ctime= cur - (float)fmod(cfrao, stepsize); /* ensures consistent stepping */ colfac= ctime/range; UI_ThemeColorShadeAlpha(TH_WIRE, 0, -128-(int)(120.0*sqrt(colfac))); @@ -530,7 +531,7 @@ static void draw_ghost_poses(Scene *scene, View3D *v3d, ARegion *ar, Base *base) } } - ctime= cur + (float)fmod((float)cfrao, stepsize) - stepsize+1.0f; /* ensures consistant stepping */ + ctime= cur + (float)fmod((float)cfrao, stepsize) - stepsize+1.0f; /* ensures consistent stepping */ colfac= ctime/range; UI_ThemeColorShadeAlpha(TH_WIRE, 0, -128-(int)(120.0*sqrt(colfac))); diff --git a/source/blender/editors/space_view3d/drawarmature.c b/source/blender/editors/space_view3d/drawarmature.c index c59c5cddb3f..e7eff234b6e 100644 --- a/source/blender/editors/space_view3d/drawarmature.c +++ b/source/blender/editors/space_view3d/drawarmature.c @@ -2118,200 +2118,21 @@ static void draw_ebones(View3D *v3d, ARegion *ar, Object *ob, int dt) */ static void draw_pose_paths(Scene *scene, View3D *v3d, ARegion *ar, Object *ob) { - RegionView3D *rv3d= ar->regiondata; - AnimData *adt= BKE_animdata_from_id(&ob->id); + bAnimVizSettings *avs= &ob->pose->avs; bArmature *arm= ob->data; bPoseChannel *pchan; - ActKeyColumn *ak; - DLRBT_Tree keys; - float *fp, *fp_start; - int a, stepsize; - int sfra, efra, len; - if (v3d->zbuf) glDisable(GL_DEPTH_TEST); - - glPushMatrix(); - glLoadMatrixf(rv3d->viewmat); - - /* version patch here - cannot access frame info from file reading */ - if (arm->pathsize == 0) arm->pathsize= 1; - stepsize = arm->pathsize; + /* setup drawing environment for paths */ + draw_motion_paths_init(scene, v3d, ar); + /* draw paths where they exist and they releated bone is visible */ for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { - if (pchan->bone->layer & arm->layer) { - if (pchan->path) { - /* version patch here - cannot access frame info from file reading */ - if ((pchan->pathsf == 0) || (pchan->pathef == 0)) { - pchan->pathsf= SFRA; - pchan->pathef= EFRA; - } - - /* get frame ranges */ - if (arm->pathflag & ARM_PATH_ACFRA) { - int sind; - - /* With "Around Current", we only choose frames from around - * the current frame to draw. However, this range is still - * restricted by the limits of the original path. - */ - sfra= CFRA - arm->pathbc; - efra= CFRA + arm->pathac; - if (sfra < pchan->pathsf) sfra= pchan->pathsf; - if (efra > pchan->pathef) efra= pchan->pathef; - - len= efra - sfra; - - sind= sfra - pchan->pathsf; - fp_start= (pchan->path + (3*sind)); - } - else { - sfra= pchan->pathsf; - efra = sfra + pchan->pathlen; - len = pchan->pathlen; - fp_start = pchan->path; - } - - /* draw curve-line of path */ - glShadeModel(GL_SMOOTH); - - glBegin(GL_LINE_STRIP); - for (a=0, fp=fp_start; a<len; a++, fp+=3) { - float intensity; /* how faint */ - - /* set color - * - more intense for active/selected bones, less intense for unselected bones - * - black for before current frame, green for current frame, blue for after current frame - * - intensity decreases as distance from current frame increases - */ - #define SET_INTENSITY(A, B, C, min, max) (((1.0f - ((C - B) / (C - A))) * (max-min)) + min) - if ((a+sfra) < CFRA) { - /* black - before cfra */ - if (pchan->bone->flag & BONE_SELECTED) { - // intensity= 0.5f; - intensity = SET_INTENSITY(sfra, a, CFRA, 0.25f, 0.75f); - } - else { - //intensity= 0.8f; - intensity = SET_INTENSITY(sfra, a, CFRA, 0.68f, 0.92f); - } - UI_ThemeColorBlend(TH_WIRE, TH_BACK, intensity); - } - else if ((a+sfra) > CFRA) { - /* blue - after cfra */ - if (pchan->bone->flag & BONE_SELECTED) { - //intensity = 0.5f; - intensity = SET_INTENSITY(CFRA, a, efra, 0.25f, 0.75f); - } - else { - //intensity = 0.8f; - intensity = SET_INTENSITY(CFRA, a, efra, 0.68f, 0.92f); - } - UI_ThemeColorBlend(TH_BONE_POSE, TH_BACK, intensity); - } - else { - /* green - on cfra */ - if (pchan->bone->flag & BONE_SELECTED) { - intensity= 0.5f; - } - else { - intensity= 0.99f; - } - UI_ThemeColorBlendShade(TH_CFRAME, TH_BACK, intensity, 10); - } - - /* draw a vertex with this color */ - glVertex3fv(fp); - } - - glEnd(); - glShadeModel(GL_FLAT); - - glPointSize(1.0); - - /* draw little black point at each frame - * NOTE: this is not really visible/noticable - */ - glBegin(GL_POINTS); - for (a=0, fp=fp_start; a<len; a++, fp+=3) - glVertex3fv(fp); - glEnd(); - - /* Draw little white dots at each framestep value */ - UI_ThemeColor(TH_TEXT_HI); - glBegin(GL_POINTS); - for (a=0, fp=fp_start; a<len; a+=stepsize, fp+=(stepsize*3)) - glVertex3fv(fp); - glEnd(); - - /* Draw frame numbers at each framestep value */ - if (arm->pathflag & ARM_PATH_FNUMS) { - for (a=0, fp=fp_start; a<len; a+=stepsize, fp+=(stepsize*3)) { - char str[32]; - - /* only draw framenum if several consecutive highlighted points don't occur on same point */ - if (a == 0) { - sprintf(str, "%d", (a+sfra)); - view3d_cached_text_draw_add(fp[0], fp[1], fp[2], str, 0); - } - else if ((a > stepsize) && (a < len-stepsize)) { - if ((equals_v3v3(fp, fp-(stepsize*3))==0) || (equals_v3v3(fp, fp+(stepsize*3))==0)) { - sprintf(str, "%d", (a+sfra)); - view3d_cached_text_draw_add(fp[0], fp[1], fp[2], str, 0); - } - } - } - } - - /* Keyframes - dots and numbers */ - if (arm->pathflag & ARM_PATH_KFRAS) { - /* build list of all keyframes in active action for pchan */ - BLI_dlrbTree_init(&keys); - - if (adt) { - bActionGroup *agrp= action_groups_find_named(adt->action, pchan->name); - if (agrp) { - agroup_to_keylist(adt, agrp, &keys, NULL); - BLI_dlrbTree_linkedlist_sync(&keys); - } - } - - /* Draw slightly-larger yellow dots at each keyframe */ - UI_ThemeColor(TH_VERTEX_SELECT); - glPointSize(5.0f); - - glBegin(GL_POINTS); - for (a=0, fp=fp_start; a<len; a++, fp+=3) { - for (ak= keys.first; ak; ak= ak->next) { - if (ak->cfra == (a+sfra)) - glVertex3fv(fp); - } - } - glEnd(); - - glPointSize(1.0f); - - /* Draw frame numbers of keyframes */ - if ((arm->pathflag & ARM_PATH_FNUMS) || (arm->pathflag & ARM_PATH_KFNOS)) { - for(a=0, fp=fp_start; a<len; a++, fp+=3) { - for (ak= keys.first; ak; ak= ak->next) { - if (ak->cfra == (a+sfra)) { - char str[32]; - - sprintf(str, "%d", (a+sfra)); - view3d_cached_text_draw_add(fp[0], fp[1], fp[2], str, 0); - } - } - } - } - - BLI_dlrbTree_free(&keys); - } - } - } + if ((pchan->bone->layer & arm->layer) && (pchan->mpath)) + draw_motion_path_instance(scene, v3d, ar, ob, pchan, avs, pchan->mpath); } - if (v3d->zbuf) glEnable(GL_DEPTH_TEST); - glPopMatrix(); + /* cleanup after drawing */ + draw_motion_paths_cleanup(scene, v3d, ar); } @@ -2529,7 +2350,7 @@ static void draw_ghost_poses(Scene *scene, View3D *v3d, ARegion *ar, Base *base) /* draw from darkest blend to lowest */ for(cur= stepsize; cur<range; cur+=stepsize) { - ctime= cur - (float)fmod(cfrao, stepsize); /* ensures consistant stepping */ + ctime= cur - (float)fmod(cfrao, stepsize); /* ensures consistent stepping */ colfac= ctime/range; UI_ThemeColorShadeAlpha(TH_WIRE, 0, -128-(int)(120.0*sqrt(colfac))); @@ -2544,7 +2365,7 @@ static void draw_ghost_poses(Scene *scene, View3D *v3d, ARegion *ar, Base *base) } } - ctime= cur + (float)fmod((float)cfrao, stepsize) - stepsize+1.0f; /* ensures consistant stepping */ + ctime= cur + (float)fmod((float)cfrao, stepsize) - stepsize+1.0f; /* ensures consistent stepping */ colfac= ctime/range; UI_ThemeColorShadeAlpha(TH_WIRE, 0, -128-(int)(120.0*sqrt(colfac))); diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 66790d9b7f0..cca8dc134e9 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -103,7 +103,6 @@ #include "GPU_draw.h" #include "GPU_material.h" #include "GPU_extensions.h" -#include "gpu_buffers.h" #include "ED_mesh.h" #include "ED_particle.h" @@ -766,18 +765,89 @@ static void spotvolume(float *lvec, float *vvec, float inp) return; } -static void drawlamp(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob) +static void draw_spot_cone(Lamp *la, float x, float z) { - Lamp *la; + float vec[3]; + + z= fabs(z); + + glBegin(GL_TRIANGLE_FAN); + glVertex3f(0.0f, 0.0f, -x); + + if(la->mode & LA_SQUARE) { + vec[0]= z; + vec[1]= z; + vec[2]= 0.0; + + glVertex3fv(vec); + vec[1]= -z; + glVertex3fv(vec); + vec[0]= -z; + glVertex3fv(vec); + vec[1]= z; + glVertex3fv(vec); + } + else { + float angle; + int a; + + for(a=0; a<33; a++) { + angle= a*M_PI*2/(33-1); + glVertex3f(z*cos(angle), z*sin(angle), 0); + } + } + + glEnd(); +} + +static void draw_transp_spot_volume(Lamp *la, float x, float z) +{ + glEnable(GL_CULL_FACE); + glEnable(GL_BLEND); + glDepthMask(0); + + /* draw backside darkening */ + glCullFace(GL_FRONT); + + glBlendFunc(GL_ZERO, GL_SRC_ALPHA); + glColor4f(0.0f, 0.0f, 0.0f, 0.4f); + + draw_spot_cone(la, x, z); + + /* draw front side lightening */ + glCullFace(GL_BACK); + + glBlendFunc(GL_ONE, GL_ONE); + glColor4f(0.2f, 0.2f, 0.2f, 1.0f); + + draw_spot_cone(la, x, z); + + /* restore state */ + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glDisable(GL_BLEND); + glDepthMask(1); + glDisable(GL_CULL_FACE); + glCullFace(GL_BACK); +} + +static void drawlamp(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, int dt, int flag) +{ + Object *ob= base->object; + Lamp *la= ob->data; float vec[3], lvec[3], vvec[3], circrad, x,y,z; float pixsize, lampsize; float imat[4][4], curcol[4]; char col[4]; + int drawcone= (dt>OB_WIRE && !(G.f & G_PICKSEL) && la->type == LA_SPOT && (la->mode & LA_SHOW_CONE)); if(G.f & G_RENDER_SHADOW) return; - la= ob->data; + if(drawcone && !v3d->transp) { + /* in this case we need to draw delayed */ + add_view3d_after(v3d, base, V3D_TRANSP, flag); + return; + } /* we first draw only the screen aligned & fixed scale stuff */ glPushMatrix(); @@ -820,6 +890,8 @@ static void drawlamp(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob) circrad = 3.0f*lampsize; drawcircball(GL_LINE_LOOP, vec, circrad, imat); } + else + circrad = 0.0f; setlinestyle(3); @@ -887,12 +959,8 @@ static void drawlamp(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob) y = cos( M_PI*la->spotsize/360.0 ); spotvolume(lvec, vvec, y); x = -la->dist; - lvec[0] *= x ; - lvec[1] *= x ; - lvec[2] *= x; - vvec[0] *= x ; - vvec[1] *= x ; - vvec[2] *= x; + mul_v3_fl(lvec, x); + mul_v3_fl(vvec, x); /* draw the angled sides of the cone */ glBegin(GL_LINE_STRIP); @@ -931,7 +999,9 @@ static void drawlamp(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob) if (spotblcirc != 0 && spotblcirc != fabs(z)) circ(0.0, 0.0, spotblcirc); } - + + if(drawcone) + draw_transp_spot_volume(la, x, z); } else if ELEM(la->type, LA_HEMI, LA_SUN) { @@ -1227,7 +1297,7 @@ static void drawlattice__point(Lattice *lt, DispList *dl, int u, int v, int w, i if(use_wcol) { float col[3]; - MDeformWeight *mdw= ED_vgroup_weight_get (lt->dvert+index, use_wcol-1); + MDeformWeight *mdw= defvert_find_index (lt->dvert+index, use_wcol-1); weight_to_rgb(mdw?mdw->weight:0.0f, col, col+1, col+2); glColor3fv(col); @@ -1575,82 +1645,15 @@ static void draw_dm_verts__mapFunc(void *userData, int index, float *co, float * } } -/* disabled because it crashes combined with e.g. subsurf modifier, - * the derivedmesh can't be assumed to be an EditMeshDerivedMesh, - * nor should this struct be copied around, it should be defined in - * a single place only to avoid them getting out of sync */ -#if 0 -/* originally defined in DerivedMesh.c */ -typedef struct { - DerivedMesh dm; - - EditMesh *em; - float (*vertexCos)[3]; - float (*vertexNos)[3]; - float (*faceNos)[3]; -} EditMeshDerivedMesh; -#endif - static void draw_dm_verts(DerivedMesh *dm, int sel, EditVert *eve_act) { struct { int sel; EditVert *eve_act; } data; - //GPUBuffer *buffer; - //float *varray; data.sel = sel; data.eve_act = eve_act; -#if 0 - /* first come the unselected vertices, then the selected */ - buffer = GPU_buffer_legacy(dm)?0:GPU_buffer_alloc( sizeof(float)*3*dm->getNumVerts(dm)*2, 0 ); - - if( (varray = GPU_buffer_lock_stream( buffer )) && bglPointHack() == 0 ) { - EditMeshDerivedMesh *emdm= (EditMeshDerivedMesh*) dm; - EditVert *eve; - int i; - int numverts = 0, numselected = 0; - int datatype[] = { GPU_BUFFER_INTER_V3F, GPU_BUFFER_INTER_END }; - GPU_buffer_unlock( buffer ); - GPU_interleaved_setup( buffer, datatype ); - varray = GPU_buffer_lock_stream( buffer ); - - glBegin(GL_POINTS); - for (i=0,eve= emdm->em->verts.first; eve; i++,eve=eve->next) { - if (eve->h==0 && (eve->f&SELECT)==data.sel) { - if (eve==data.eve_act) { - if (emdm->vertexCos) { - VECCOPY(&varray[3*(dm->getNumVerts(dm)+numselected)],emdm->vertexCos[i]); - } - else { - VECCOPY(&varray[3*(dm->getNumVerts(dm)+numselected)],eve->co); - } - numselected++; - } else { - if (emdm->vertexCos) { - VECCOPY(&varray[3*numverts],emdm->vertexCos[i]); - } else { - VECCOPY(&varray[3*numverts],eve->co); - } - numverts++; - } - } - } - glEnd(); - GPU_buffer_unlock( buffer ); - glDrawArrays(GL_POINTS,0,numverts); - UI_ThemeColor4(TH_EDITMESH_ACTIVE); - glDrawArrays(GL_POINTS,dm->getNumVerts(dm),numselected); - UI_ThemeColor4(data.sel?TH_VERTEX_SELECT:TH_VERTEX); - GPU_buffer_unbind(); - } - { -#endif - bglBegin(GL_POINTS); - dm->foreachMappedVert(dm, draw_dm_verts__mapFunc, &data); - bglEnd(); -#if 0 - } - GPU_buffer_free( buffer, 0 ); -#endif + bglBegin(GL_POINTS); + dm->foreachMappedVert(dm, draw_dm_verts__mapFunc, &data); + bglEnd(); } /* Draw edges with color set based on selection */ @@ -1722,55 +1725,8 @@ static void draw_dm_edges_sel_interp__setDrawInterpOptions(void *userData, int i static void draw_dm_edges_sel_interp(DerivedMesh *dm, unsigned char *baseCol, unsigned char *selCol) { unsigned char *cols[2] = {baseCol, selCol}; -#if 0 - int elemsize = sizeof(float)*3+sizeof(unsigned char)*4; - EditMeshDerivedMesh *emdm = (EditMeshDerivedMesh *)dm; - EditMesh *em= emdm->em; - unsigned char *varray; - int i; - GPUBuffer *buffer; - - buffer = GPU_buffer_legacy(dm)?0:GPU_buffer_alloc( elemsize*em->totedge*2, 0 ); - if( (varray = GPU_buffer_lock_stream( buffer )) ) { - EditEdge *eed; - int numedges = 0; - int datatype[] = { GPU_BUFFER_INTER_V3F, GPU_BUFFER_INTER_C4UB, GPU_BUFFER_INTER_END }; - GPU_buffer_unlock( buffer ); - GPU_interleaved_setup( buffer, datatype ); - varray = GPU_buffer_lock_stream( buffer ); - for (i=0,eed= em->edges.first; eed; i++,eed= eed->next) { - if(eed->h==0) { - unsigned char *col0 = cols[(eed->v1->f&SELECT)?1:0]; - unsigned char *col1 = cols[(eed->v2->f&SELECT)?1:0]; - - if( emdm->vertexCos ) { - VECCOPY(((float *)&varray[elemsize*numedges*2]),emdm->vertexCos[(int) eed->v1->tmp.l]); - } - else { - VECCOPY(((float *)&varray[elemsize*numedges*2]),eed->v1->co); - } - QUATCOPY(&varray[elemsize*numedges*2+sizeof(float)*3],col0); - if( emdm->vertexCos ) { - VECCOPY(((float *)&varray[elemsize*numedges*2+elemsize]),emdm->vertexCos[(int) eed->v2->tmp.l]); - } - else { - VECCOPY(((float *)&varray[elemsize*numedges*2+elemsize]),eed->v2->co); - } - QUATCOPY(&varray[elemsize*numedges*2+elemsize+sizeof(float)*3],col1); - numedges++; - } - } - GPU_buffer_unlock( buffer ); - glDrawArrays(GL_LINES,0,numedges*2); - GPU_buffer_unbind(); - } - else { -#endif - dm->drawMappedEdgesInterp(dm, draw_dm_edges_sel_interp__setDrawOptions, draw_dm_edges_sel_interp__setDrawInterpOptions, cols); -#if 0 - } - GPU_buffer_free( buffer, 0 ); -#endif + + dm->drawMappedEdgesInterp(dm, draw_dm_edges_sel_interp__setDrawOptions, draw_dm_edges_sel_interp__setDrawInterpOptions, cols); } /* Draw only seam edges */ @@ -1824,236 +1780,12 @@ static int draw_dm_faces_sel__setDrawOptions(void *userData, int index, int *dra static void draw_dm_faces_sel(DerivedMesh *dm, unsigned char *baseCol, unsigned char *selCol, unsigned char *actCol, EditFace *efa_act) { struct { unsigned char *cols[3]; EditFace *efa_act; } data; - //EditMeshDerivedMesh *emdm = (EditMeshDerivedMesh *)dm; - EditFace *efa; - unsigned char *col; - GPUBuffer *buffer; - unsigned char *varray; - unsigned char black[] = { 0, 0, 0, 0 }; - int i, draw=0; - int elemsize = (sizeof(float)*6+sizeof(unsigned char)*4); data.cols[0] = baseCol; data.cols[1] = selCol; data.cols[2] = actCol; data.efa_act = efa_act; - - buffer = GPU_buffer_legacy(dm)?0:GPU_buffer_alloc( elemsize*dm->getNumFaces(dm)*3*2, 0 ); - if( dm->getVertCos == 0 && (varray = GPU_buffer_lock_stream( buffer )) ) { - int prevdraw = 0; - int numfaces = 0; - int datatype[] = { GPU_BUFFER_INTER_V3F, GPU_BUFFER_INTER_N3F, GPU_BUFFER_INTER_C4UB, GPU_BUFFER_INTER_END }; - GPU_buffer_unlock( buffer ); - GPU_interleaved_setup( buffer, datatype ); - glShadeModel(GL_SMOOTH); - varray = GPU_buffer_lock_stream( buffer ); - for (i=0,efa= efa_act; efa; i++,efa= efa->next) { - int drawSmooth = (efa->flag & ME_SMOOTH); - if (efa->h==0) { - if (efa == data.efa_act) { - draw = 2; - } else { - col = data.cols[(efa->f&SELECT)?1:0]; - if (col[3]==0) draw = 0; - else draw = 1; - } - } - else { - draw = 0; - } - if( prevdraw != draw && prevdraw != 0 && numfaces > 0) { - if( prevdraw==2 ) { - glEnable(GL_POLYGON_STIPPLE); - glPolygonStipple(stipple_quarttone); - } - GPU_buffer_unlock( buffer ); - glDrawArrays(GL_TRIANGLES,0,numfaces*3); - if( prevdraw==2 ) { - glDisable(GL_POLYGON_STIPPLE); - } - varray = GPU_buffer_lock_stream( buffer ); - numfaces = 0; - } - - if( draw != 0 ) { - if(!drawSmooth) { - /*if (emdm->vertexCos) { - VECCOPY((float *)&varray[elemsize*3*numfaces],emdm->vertexCos[(int) efa->v1->tmp.l]); - VECCOPY((float *)&varray[elemsize*3*numfaces+sizeof(float)*3],emdm->faceNos[i]); - - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize],emdm->vertexCos[(int) efa->v2->tmp.l]); - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize+sizeof(float)*3],emdm->faceNos[i]); - - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2],emdm->vertexCos[(int) efa->v3->tmp.l]); - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],emdm->faceNos[i]); - } - else {*/ - VECCOPY((float *)&varray[elemsize*3*numfaces],efa->v1->co); - VECCOPY((float *)&varray[elemsize*3*numfaces+sizeof(float)*3],efa->n); - - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize],efa->v2->co); - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize+sizeof(float)*3],efa->n); - - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2],efa->v3->co); - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],efa->n); - /*}*/ - if( draw == 2 ) { - QUATCOPY(&varray[elemsize*3*numfaces+sizeof(float)*6],data.cols[2]); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize+sizeof(float)*6],data.cols[2]); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*6],data.cols[2]); - } - else if( draw == 1 ) { - QUATCOPY(&varray[elemsize*3*numfaces+sizeof(float)*6],data.cols[(efa->f&SELECT)?1:0]); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize+sizeof(float)*6],data.cols[(efa->f&SELECT)?1:0]); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*6],data.cols[(efa->f&SELECT)?1:0]); - } - else { - QUATCOPY(&varray[elemsize*3*numfaces+sizeof(float)*6],black); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize+sizeof(float)*6],black); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*6],black); - } - - numfaces++; - if( efa->v4 ) { - /*if (emdm->vertexCos) { - VECCOPY((float *)&varray[elemsize*3*numfaces],emdm->vertexCos[(int) efa->v3->tmp.l]); - VECCOPY((float *)&varray[elemsize*3*numfaces+sizeof(float)*3],emdm->faceNos[i]); - - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize],emdm->vertexCos[(int) efa->v4->tmp.l]); - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize+sizeof(float)*3],emdm->faceNos[i]); - - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2],emdm->vertexCos[(int) efa->v1->tmp.l]); - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],emdm->faceNos[i]); - } - else {*/ - VECCOPY((float *)&varray[elemsize*3*numfaces],efa->v3->co); - VECCOPY((float *)&varray[elemsize*3*numfaces+sizeof(float)*3],efa->n); - - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize],efa->v4->co); - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize+sizeof(float)*3],efa->n); - - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2],efa->v1->co); - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],efa->n); - /*}*/ - - if( draw == 2 ) { - QUATCOPY(&varray[elemsize*3*numfaces+sizeof(float)*6],data.cols[2]); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize+sizeof(float)*6],data.cols[2]); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*6],data.cols[2]); - } - else if( draw == 1 ) { - QUATCOPY(&varray[elemsize*3*numfaces+sizeof(float)*6],data.cols[(efa->f&SELECT)?1:0]); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize+sizeof(float)*6],data.cols[(efa->f&SELECT)?1:0]); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*6],data.cols[(efa->f&SELECT)?1:0]); - } - else { - QUATCOPY(&varray[elemsize*3*numfaces+sizeof(float)*6],black); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize+sizeof(float)*6],black); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*6],black); - } - - numfaces++; - } - } - else { - /*if (emdm->vertexCos) { - VECCOPY((float *)&varray[elemsize*3*numfaces],emdm->vertexCos[(int) efa->v1->tmp.l]); - VECCOPY((float *)&varray[elemsize*3*numfaces+sizeof(float)*3],emdm->vertexNos[(int) efa->v1->tmp.l]); - - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize],emdm->vertexCos[(int) efa->v2->tmp.l]); - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize+sizeof(float)*3],emdm->vertexNos[(int) efa->v2->tmp.l]); - - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2],emdm->vertexCos[(int) efa->v3->tmp.l]); - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],emdm->vertexNos[(int) efa->v3->tmp.l]); - } - else {*/ - VECCOPY((float *)&varray[elemsize*3*numfaces],efa->v1->co); - VECCOPY((float *)&varray[elemsize*3*numfaces+sizeof(float)*3],efa->v1->no); - - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize],efa->v2->co); - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize+sizeof(float)*3],efa->v2->no); - - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2],efa->v3->co); - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],efa->v3->no); - /*}*/ - - if( draw == 2 ) { - QUATCOPY(&varray[elemsize*3*numfaces+sizeof(float)*6],data.cols[2]); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize+sizeof(float)*6],data.cols[2]); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*6],data.cols[2]); - } - else if( draw == 1 ) { - QUATCOPY(&varray[elemsize*3*numfaces+sizeof(float)*6],data.cols[(efa->f&SELECT)?1:0]); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize+sizeof(float)*6],data.cols[(efa->f&SELECT)?1:0]); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*6],data.cols[(efa->f&SELECT)?1:0]); - } - else { - QUATCOPY(&varray[elemsize*3*numfaces+sizeof(float)*6],black); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize+sizeof(float)*6],black); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*6],black); - } - - numfaces++; - if( efa->v4 ) { - /*if (emdm->vertexCos) { - VECCOPY((float *)&varray[elemsize*3*numfaces],emdm->vertexCos[(int) efa->v3->tmp.l]); - VECCOPY((float *)&varray[elemsize*3*numfaces+sizeof(float)*3],emdm->vertexNos[(int) efa->v1->tmp.l]); - - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize],emdm->vertexCos[(int) efa->v4->tmp.l]); - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize+sizeof(float)*3],emdm->vertexNos[(int) efa->v2->tmp.l]); - - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2],emdm->vertexCos[(int) efa->v1->tmp.l]); - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],emdm->vertexNos[(int) efa->v3->tmp.l]); - } - else {*/ - VECCOPY((float *)&varray[elemsize*3*numfaces],efa->v3->co); - VECCOPY((float *)&varray[elemsize*3*numfaces+sizeof(float)*3],efa->v3->no); - - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize],efa->v4->co); - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize+sizeof(float)*3],efa->v4->no); - - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2],efa->v1->co); - VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],efa->v1->no); - /*}*/ - - if( draw == 2 ) { - QUATCOPY(&varray[elemsize*3*numfaces+sizeof(float)*6],data.cols[2]); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize+sizeof(float)*6],data.cols[2]); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*6],data.cols[2]); - } - else if( draw == 1 ) { - QUATCOPY(&varray[elemsize*3*numfaces+sizeof(float)*6],data.cols[(efa->f&SELECT)?1:0]); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize+sizeof(float)*6],data.cols[(efa->f&SELECT)?1:0]); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*6],data.cols[(efa->f&SELECT)?1:0]); - } - else { - QUATCOPY(&varray[elemsize*3*numfaces+sizeof(float)*6],black); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize+sizeof(float)*6],black); - QUATCOPY(&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*6],black); - } - - numfaces++; - } - } - } - prevdraw = draw; - } - GPU_buffer_unlock( buffer ); - if( prevdraw != 0 && numfaces > 0) { - if( prevdraw==2 ) { - glEnable(GL_POLYGON_STIPPLE); - glPolygonStipple(stipple_quarttone); - } - glDrawArrays(GL_TRIANGLES,0,numfaces*3); - if( prevdraw==2 ) { - glDisable(GL_POLYGON_STIPPLE); - } - } - GPU_buffer_unbind(); - } else { - dm->drawMappedFaces(dm, draw_dm_faces_sel__setDrawOptions, &data, 0); - } - GPU_buffer_free( buffer, 0 ); + dm->drawMappedFaces(dm, draw_dm_faces_sel__setDrawOptions, &data, 0); } static int draw_dm_creases__setDrawOptions(void *userData, int index) @@ -2376,7 +2108,7 @@ static void draw_em_measure_stats(View3D *v3d, RegionView3D *rv3d, Object *ob, E /* Vec 1 */ sprintf(val,"%.3f", RAD2DEG(angle_v3v3v3(v4, v1, v2))); interp_v3_v3v3(fvec, efa->cent, efa->v1->co, 0.8f); - view3d_cached_text_draw_add(efa->cent[0], efa->cent[1], efa->cent[2], val, 0); + view3d_cached_text_draw_add(fvec[0], fvec[1], fvec[2], val, 0); } if( (e1->f & e2->f & SELECT) || (G.moving && (efa->v2->f & SELECT)) ) { /* Vec 2 */ @@ -2467,114 +2199,12 @@ static void draw_em_fancy(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object } else { /* 3 floats for position, 3 for normal and times two because the faces may actually be quads instead of triangles */ - GPUBuffer *buffer = GPU_buffer_legacy(em->derivedFinal)?0:GPU_buffer_alloc( sizeof(float)*6*em->totface*3*2, 0 ); - float *varray; - EditFace *efa; - int i, curmat = 0, draw = 0; - glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, me->flag & ME_TWOSIDED); glEnable(GL_LIGHTING); glFrontFace((ob->transflag&OB_NEG_SCALE)?GL_CW:GL_CCW); - if( finalDM->getVertCos == 0 && (varray = GPU_buffer_lock_stream( buffer )) ) { - int prevdraw = 0, prevmat = 0; - int numfaces = 0; - int datatype[] = { GPU_BUFFER_INTER_V3F, GPU_BUFFER_INTER_N3F, GPU_BUFFER_INTER_END }; - GPU_buffer_unlock( buffer ); - GPU_interleaved_setup( buffer, datatype ); - glShadeModel(GL_SMOOTH); - varray = GPU_buffer_lock_stream( buffer ); - for (i=0,efa= em->faces.first; efa; i++,efa= efa->next) { - int drawSmooth = (efa->flag & ME_SMOOTH); - if( efa->h == 0 ) { - curmat = efa->mat_nr+1; - draw = 1; - } - else { - draw = 0; - } - if( ((prevdraw != draw) || (curmat != prevmat)) && prevdraw != 0 && numfaces > 0) { - if( prevdraw==2 ) { - glEnable(GL_POLYGON_STIPPLE); - glPolygonStipple(stipple_quarttone); - } - GPU_buffer_unlock( buffer ); - GPU_enable_material(prevmat, NULL); - glDrawArrays(GL_TRIANGLES,0,numfaces*3); - if( prevdraw==2 ) { - glDisable(GL_POLYGON_STIPPLE); - } - varray = GPU_buffer_lock_stream( buffer ); - numfaces = 0; - } - if( draw != 0 ) { - if(!drawSmooth) { - VECCOPY(&varray[numfaces*18],efa->v1->co); - VECCOPY(&varray[numfaces*18+3],efa->n); - - VECCOPY(&varray[numfaces*18+6],efa->v2->co); - VECCOPY(&varray[numfaces*18+9],efa->n); - - VECCOPY(&varray[numfaces*18+12],efa->v3->co); - VECCOPY(&varray[numfaces*18+15],efa->n); - numfaces++; - if( efa->v4 ) { - VECCOPY(&varray[numfaces*18],efa->v3->co); - VECCOPY(&varray[numfaces*18+3],efa->n); - - VECCOPY(&varray[numfaces*18+6],efa->v4->co); - VECCOPY(&varray[numfaces*18+9],efa->n); - - VECCOPY(&varray[numfaces*18+12],efa->v1->co); - VECCOPY(&varray[numfaces*18+15],efa->n); - numfaces++; - } - } - else { - VECCOPY(&varray[numfaces*18],efa->v1->co); - VECCOPY(&varray[numfaces*18+3],efa->v1->no); - - VECCOPY(&varray[numfaces*18+6],efa->v2->co); - VECCOPY(&varray[numfaces*18+9],efa->v2->no); - - VECCOPY(&varray[numfaces*18+12],efa->v3->co); - VECCOPY(&varray[numfaces*18+15],efa->v3->no); - numfaces++; - if( efa->v4 ) { - VECCOPY(&varray[numfaces*18],efa->v3->co); - VECCOPY(&varray[numfaces*18+3],efa->v3->no); - - VECCOPY(&varray[numfaces*18+6],efa->v4->co); - VECCOPY(&varray[numfaces*18+9],efa->v4->no); - - VECCOPY(&varray[numfaces*18+12],efa->v1->co); - VECCOPY(&varray[numfaces*18+15],efa->v1->no); - numfaces++; - } - } - } - prevdraw = draw; - prevmat = curmat; - } - GPU_buffer_unlock( buffer ); - if( prevdraw != 0 && numfaces > 0) { - if( prevdraw==2 ) { - glEnable(GL_POLYGON_STIPPLE); - glPolygonStipple(stipple_quarttone); - } - GPU_enable_material(prevmat, NULL); - glDrawArrays(GL_TRIANGLES,0,numfaces*3); - if( prevdraw==2 ) { - glDisable(GL_POLYGON_STIPPLE); - } - } - GPU_buffer_unbind(); - } - else { - finalDM->drawMappedFaces(finalDM, draw_em_fancy__setFaceOpts, 0, 0); - } - GPU_buffer_free(buffer,0); + finalDM->drawMappedFaces(finalDM, draw_em_fancy__setFaceOpts, 0, 0); glFrontFace(GL_CCW); glDisable(GL_LIGHTING); @@ -2799,44 +2429,70 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D } } else if(dt==OB_SOLID) { - Paint *p; + if(ob==OBACT && ob && ob->mode & OB_MODE_WEIGHT_PAINT) { + /* weight paint in solid mode, special case. focus on making the weights clear + * rather then the shading, this is also forced in wire view */ + GPU_enable_material(0, NULL); + dm->drawMappedFaces(dm, wpaint__setSolidDrawOptions, me->mface, 1); - if((v3d->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !draw_wire && !ob->sculpt) - draw_mesh_object_outline(v3d, ob, dm); + bglPolygonOffset(rv3d->dist, 1.0); + glDepthMask(0); // disable write in zbuffer, selected edge wires show better - glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, me->flag & ME_TWOSIDED ); + glEnable(GL_BLEND); + glColor4ub(196, 196, 196, 196); + glEnable(GL_LINE_STIPPLE); + glLineStipple(1, 0x8888); - glEnable(GL_LIGHTING); - glFrontFace((ob->transflag&OB_NEG_SCALE)?GL_CW:GL_CCW); + dm->drawEdges(dm, 1); - 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); + bglPolygonOffset(rv3d->dist, 0.0); + glDepthMask(1); + glDisable(GL_LINE_STIPPLE); + + GPU_disable_material(); - 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); + else { + Paint *p; - GPU_disable_material(); + if((v3d->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !draw_wire && !ob->sculpt) + draw_mesh_object_outline(v3d, ob, dm); - glFrontFace(GL_CCW); - glDisable(GL_LIGHTING); + glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, me->flag & ME_TWOSIDED ); - if(base->flag & SELECT) { - UI_ThemeColor((ob==OBACT)?TH_ACTIVE:TH_SELECT); - } else { - UI_ThemeColor(TH_WIRE); + glEnable(GL_LIGHTING); + glFrontFace((ob->transflag&OB_NEG_SCALE)?GL_CW:GL_CCW); + + 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); + glDisable(GL_LIGHTING); + + if(base->flag & SELECT) { + UI_ThemeColor((ob==OBACT)?TH_ACTIVE:TH_SELECT); + } else { + UI_ThemeColor(TH_WIRE); + } + if(!ob->sculpt) + 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... */ @@ -2928,15 +2584,28 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D } } if (draw_wire) { - /* If drawing wire and drawtype is not OB_WIRE then we are - * overlaying the wires. - * - * UPDATE bug #10290 - With this wire-only objects can draw - * behind other objects depending on their order in the scene. 2x if 0's below. undo'ing zr's commit: r4059 - * - * if draw wire is 1 then just drawing wire, no need for depth buffer stuff, - * otherwise this wire is to overlay solid mode faces so do some depth buffer tricks. - */ + + /* When using wireframe object traw in particle edit mode + * the mesh gets in the way of seeing the particles, fade the wire color + * with the background. */ + if(ob==OBACT && (ob->mode & OB_MODE_PARTICLE_EDIT)) { + float col_wire[4], col_bg[4], col[3]; + + UI_GetThemeColor3fv(TH_BACK, col_bg); + glGetFloatv(GL_CURRENT_COLOR, col_wire); + interp_v3_v3v3(col, col_bg, col_wire, 0.15); + glColor3fv(col); + } + + /* If drawing wire and drawtype is not OB_WIRE then we are + * overlaying the wires. + * + * UPDATE bug #10290 - With this wire-only objects can draw + * behind other objects depending on their order in the scene. 2x if 0's below. undo'ing zr's commit: r4059 + * + * if draw wire is 1 then just drawing wire, no need for depth buffer stuff, + * otherwise this wire is to overlay solid mode faces so do some depth buffer tricks. + */ if (dt!=OB_WIRE && draw_wire==2) { bglPolygonOffset(rv3d->dist, 1.0); glDepthMask(0); // disable write in zbuffer, selected edge wires show better @@ -4237,6 +3906,12 @@ static void draw_ptcache_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Obj glEnable(GL_COLOR_MATERIAL); glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE); + glShadeModel(GL_SMOOTH); + + if(pset->brushtype == PE_BRUSH_WEIGHT) { + glLineWidth(2.0f); + glDisable(GL_LIGHTING); + } cache=edit->pathcache; for(i=0; i<totpoint; i++){ @@ -4344,9 +4019,9 @@ static void draw_ptcache_edit(Scene *scene, View3D *v3d, RegionView3D *rv3d, Obj glDisableClientState(GL_COLOR_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); glDisableClientState(GL_VERTEX_ARRAY); + glShadeModel(GL_FLAT); glEnable(GL_DEPTH_TEST); glLineWidth(1.0f); - glPointSize(1.0); } //static void ob_draw_RE_motion(float com[3],float rotscale[3][3],float tw,float th) @@ -5560,6 +5235,10 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) return; } + /* XXX particles are not safe for simultaneous threaded render */ + if(G.rendering && ob->particlesystem.first) + return; + /* xray delay? */ if((flag & DRAW_PICKING)==0 && (base->flag & OB_FROMDUPLI)==0) { /* don't do xray in particle mode, need the z-buffer */ @@ -5574,6 +5253,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) /* no return after this point, otherwise leaks */ view3d_cached_text_draw_begin(); + /* draw keys? */ #if 0 // XXX old animation system @@ -5654,8 +5334,19 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) /* patch? children objects with a timeoffs change the parents. How to solve! */ /* if( ((int)ob->ctime) != F_(scene->r.cfra)) where_is_object(scene, ob); */ - /* draw paths... */ - // TODO... + /* draw motion paths (in view space) */ + if (ob->mpath) { + bAnimVizSettings *avs= &ob->avs; + + /* setup drawing environment for paths */ + draw_motion_paths_init(scene, v3d, ar); + + /* draw motion path for object */ + draw_motion_path_instance(scene, v3d, ar, ob, NULL, avs, ob->mpath); + + /* cleanup after drawing */ + draw_motion_paths_cleanup(scene, v3d, ar); + } /* multiply view with object matrix. * local viewmat and persmat, to calculate projections */ @@ -5718,10 +5409,14 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) if(ob->mode & OB_MODE_EDIT); else { - if(dt<OB_SOLID) + if(dt<OB_SOLID) { zbufoff= 1; + dt= OB_SOLID; + } + else { + dt= OB_SHADED; + } - dt= OB_SHADED; glEnable(GL_DEPTH_TEST); } } @@ -5890,7 +5585,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) drawaxes(ob->empty_drawsize, flag, ob->empty_drawtype); break; case OB_LAMP: - drawlamp(scene, v3d, rv3d, ob); + drawlamp(scene, v3d, rv3d, base, dt, flag); if(dtx || (base->flag & SELECT)) wmMultMatrix(ob->obmat); break; case OB_CAMERA: @@ -6312,24 +6007,13 @@ static void bbs_mesh_solid_EM(Scene *scene, View3D *v3d, Object *ob, DerivedMesh } } -static int bbs_mesh_solid_hide__setDrawOpts(void *userData, int index, int *drawSmooth_r) -{ - Mesh *me = userData; - - if (!(me->mface[index].flag&ME_HIDE)) { - return 1; - } else { - return 0; - } -} - -static int bbs_mesh_solid__setDrawOpts_legacy(void *userData, int index, int *drawSmooth_r) +static int bbs_mesh_solid__setDrawOpts(void *userData, int index, int *drawSmooth_r) { WM_set_framebuffer_index_color(index+1); return 1; } -static int bbs_mesh_solid_hide__setDrawOpts_legacy(void *userData, int index, int *drawSmooth_r) +static int bbs_mesh_solid_hide__setDrawOpts(void *userData, int index, int *drawSmooth_r) { Mesh *me = userData; @@ -6345,43 +6029,12 @@ static void bbs_mesh_solid(Scene *scene, View3D *v3d, Object *ob) { DerivedMesh *dm = mesh_get_derived_final(scene, ob, v3d->customdata_mask); Mesh *me = (Mesh*)ob->data; - MCol *colors; - int i,j; int face_sel_mode = (me->flag & ME_EDIT_PAINT_MASK) ? 1:0; glColor3ub(0, 0, 0); - if( !GPU_buffer_legacy(dm) ) { - int *index = DM_get_face_data_layer(dm, CD_ORIGINDEX); - int ind; - colors = MEM_mallocN(dm->getNumFaces(dm)*sizeof(MCol)*4,"bbs_mesh_solid"); - for(i=0;i<dm->getNumFaces(dm);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++) { - colors[i*4+j].b = ((fbindex)&0xFF); - colors[i*4+j].g = (((fbindex)>>8)&0xFF); - colors[i*4+j].r = (((fbindex)>>16)&0xFF); - } - } - else { - memset(&colors[i*4],0,sizeof(MCol)*4); - } - } - - CustomData_add_layer( &dm->faceData, CD_ID_MCOL, CD_ASSIGN, colors, dm->numFaceData ); - GPU_buffer_free(dm->drawObject->colors,0); - dm->drawObject->colors = 0; - - if(face_sel_mode) dm->drawMappedFaces(dm, bbs_mesh_solid_hide__setDrawOpts, me, 1); - else dm->drawMappedFaces(dm, NULL, me, 1); - } - else { - if(face_sel_mode) dm->drawMappedFaces(dm, bbs_mesh_solid_hide__setDrawOpts_legacy, me, 0); - else dm->drawMappedFaces(dm, bbs_mesh_solid__setDrawOpts_legacy, me, 0); - } + if(face_sel_mode) dm->drawMappedFaces(dm, bbs_mesh_solid_hide__setDrawOpts, me, 0); + else dm->drawMappedFaces(dm, bbs_mesh_solid__setDrawOpts, me, 0); dm->release(dm); } diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index 6ee0e341849..a65521cd0fb 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -48,6 +48,7 @@ #include "BKE_global.h" #include "BKE_screen.h" #include "BKE_utildefines.h" +#include "BKE_image.h" #include "ED_armature.h" #include "ED_space_api.h" @@ -221,8 +222,8 @@ static SpaceLink *view3d_new(const bContext *C) ar->regiontype= RGN_TYPE_HEADER; ar->alignment= RGN_ALIGN_BOTTOM; - /* toolbar */ - ar= MEM_callocN(sizeof(ARegion), "toolbar for view3d"); + /* tool shelf */ + ar= MEM_callocN(sizeof(ARegion), "toolshelf for view3d"); BLI_addtail(&v3d->regionbase, ar); ar->regiontype= RGN_TYPE_UI; @@ -265,12 +266,13 @@ static SpaceLink *view3d_new(const bContext *C) static void view3d_free(SpaceLink *sl) { View3D *vd= (View3D *) sl; - - if(vd->bgpic) { - if(vd->bgpic->ima) vd->bgpic->ima->id.us--; - MEM_freeN(vd->bgpic); + + BGpic *bgpic; + for(bgpic= vd->bgpicbase.first; bgpic; bgpic= bgpic->next) { + if(bgpic->ima) bgpic->ima->id.us--; } - + BLI_freelistN(&vd->bgpicbase); + if(vd->localvd) MEM_freeN(vd->localvd); if(vd->properties_storage) MEM_freeN(vd->properties_storage); @@ -288,6 +290,7 @@ static SpaceLink *view3d_duplicate(SpaceLink *sl) { View3D *v3do= (View3D *)sl; View3D *v3dn= MEM_dupallocN(sl); + BGpic *bgpic; /* clear or remove stuff from old */ @@ -302,10 +305,11 @@ static SpaceLink *view3d_duplicate(SpaceLink *sl) /* copy or clear inside new stuff */ - if(v3dn->bgpic) { - v3dn->bgpic= MEM_dupallocN(v3dn->bgpic); - if(v3dn->bgpic->ima) v3dn->bgpic->ima->id.us++; - } + BLI_duplicatelist(&v3dn->bgpicbase, &v3do->bgpicbase); + for(bgpic= v3dn->bgpicbase.first; bgpic; bgpic= bgpic->next) + if(bgpic->ima) + bgpic->ima->id.us++; + v3dn->properties_storage= NULL; return (SpaceLink *)v3dn; @@ -314,6 +318,7 @@ static SpaceLink *view3d_duplicate(SpaceLink *sl) /* add handlers, stuff you only do once or on area/region changes */ static void view3d_main_area_init(wmWindowManager *wm, ARegion *ar) { + ListBase *lb; wmKeyMap *keymap; /* object ops. */ @@ -381,8 +386,77 @@ static void view3d_main_area_init(wmWindowManager *wm, ARegion *ar) keymap= WM_keymap_find(wm->defaultconf, "3D View", SPACE_VIEW3D, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); + + /* add drop boxes */ + lb= WM_dropboxmap_find("View3D", SPACE_VIEW3D, RGN_TYPE_WINDOW); + + WM_event_add_dropbox_handler(&ar->handlers, lb); + +} + +static int view3d_ob_drop_poll(bContext *C, wmDrag *drag, wmEvent *event) +{ + if(drag->type==WM_DRAG_ID) { + ID *id= (ID *)drag->poin; + if( GS(id->name)==ID_OB ) + return 1; + } + return 0; } +static int view3d_mat_drop_poll(bContext *C, wmDrag *drag, wmEvent *event) +{ + if(drag->type==WM_DRAG_ID) { + ID *id= (ID *)drag->poin; + if( GS(id->name)==ID_MA ) + return 1; + } + return 0; +} + +static int view3d_ima_drop_poll(bContext *C, wmDrag *drag, wmEvent *event) +{ + if(drag->type==WM_DRAG_ID) { + ID *id= (ID *)drag->poin; + if( GS(id->name)==ID_IM ) + return 1; + } + return 0; +} + +static void view3d_ob_drop_copy(wmDrag *drag, wmDropBox *drop) +{ + ID *id= (ID *)drag->poin; + PointerRNA ptr; + + /* need to put name in sub-operator in macro */ + ptr= RNA_pointer_get(drop->ptr, "OBJECT_OT_add_named"); + if(ptr.data) + RNA_string_set(&ptr, "name", id->name+2); + else + RNA_string_set(drop->ptr, "name", id->name+2); +} + +static void view3d_id_drop_copy(wmDrag *drag, wmDropBox *drop) +{ + ID *id= (ID *)drag->poin; + + RNA_string_set(drop->ptr, "name", id->name+2); +} + + +/* region dropbox definition */ +static void view3d_dropboxes(void) +{ + ListBase *lb= WM_dropboxmap_find("View3D", SPACE_VIEW3D, RGN_TYPE_WINDOW); + + WM_dropbox_add(lb, "OBJECT_OT_add_named_cursor", view3d_ob_drop_poll, view3d_ob_drop_copy); + WM_dropbox_add(lb, "OBJECT_OT_drop_named_material", view3d_mat_drop_poll, view3d_id_drop_copy); + WM_dropbox_add(lb, "MESH_OT_drop_named_image", view3d_ima_drop_poll, view3d_id_drop_copy); +} + + + /* type callback, not region itself */ static void view3d_main_area_free(ARegion *ar) { @@ -447,8 +521,8 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn) break; case NC_SCENE: switch(wmn->data) { - case ND_TRANSFORM: case ND_FRAME: + case ND_TRANSFORM: case ND_OB_ACTIVE: case ND_OB_SELECT: case ND_LAYER: @@ -483,6 +557,11 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn) ED_region_tag_redraw(ar); break; } + switch(wmn->action) { + case NA_EDITED: + ED_region_tag_redraw(ar); + break; + } break; case NC_GROUP: /* all group ops for now */ @@ -526,6 +605,10 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn) if(wmn->action == NA_RENAME) ED_region_tag_redraw(ar); break; + case NC_SCREEN: + if(wmn->data == ND_GPENCIL) + ED_region_tag_redraw(ar); + break; } } @@ -568,6 +651,7 @@ static void view3d_header_area_listener(ARegion *ar, wmNotifier *wmn) case ND_OB_SELECT: case ND_MODE: case ND_LAYER: + case ND_TOOLSETTINGS: ED_region_tag_redraw(ar); break; } @@ -619,6 +703,11 @@ static void view3d_buttons_area_listener(ARegion *ar, wmNotifier *wmn) ED_region_tag_redraw(ar); break; } + switch(wmn->action) { + case NA_EDITED: + ED_region_tag_redraw(ar); + break; + } break; case NC_OBJECT: switch(wmn->data) { @@ -777,6 +866,24 @@ static int view3d_context(const bContext *C, const char *member, bContextDataRes return -1; /* found but not available */ } +/*area (not region) level listener*/ +#if 0 // removed since BKE_image_user_calc_frame is now called in draw_bgpic because screen_ops doesnt call the notifier. +void space_view3d_listener(struct ScrArea *area, struct wmNotifier *wmn) +{ + if (wmn->category == NC_SCENE && wmn->data == ND_FRAME) { + View3D *v3d = area->spacedata.first; + BGpic *bgpic = v3d->bgpicbase.first; + + for (; bgpic; bgpic = bgpic->next) { + if (bgpic->ima) { + Scene *scene = wmn->reference; + BKE_image_user_calc_imanr(&bgpic->iuser, scene->r.cfra, 0); + } + } + } +} +#endif + /* only called once, from space/spacetypes.c */ void ED_spacetype_view3d(void) { @@ -789,9 +896,11 @@ void ED_spacetype_view3d(void) st->new= view3d_new; st->free= view3d_free; st->init= view3d_init; +// st->listener = space_view3d_listener; st->duplicate= view3d_duplicate; st->operatortypes= view3d_operatortypes; st->keymap= view3d_keymap; + st->dropboxes= view3d_dropboxes; st->context= view3d_context; /* regions: main window */ @@ -809,7 +918,7 @@ void ED_spacetype_view3d(void) /* regions: listview/buttons */ art= MEM_callocN(sizeof(ARegionType), "spacetype view3d region"); art->regionid = RGN_TYPE_UI; - art->minsizex= 180; // XXX + art->prefsizex= 180; // XXX art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_FRAMES; art->listener= view3d_buttons_area_listener; art->init= view3d_buttons_area_init; @@ -821,21 +930,21 @@ void ED_spacetype_view3d(void) /* regions: tool(bar) */ art= MEM_callocN(sizeof(ARegionType), "spacetype view3d region"); art->regionid = RGN_TYPE_TOOLS; - art->minsizex= 160; // XXX - art->minsizey= 50; // XXX + art->prefsizex= 160; // XXX + art->prefsizey= 50; // XXX art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_FRAMES; art->listener= view3d_buttons_area_listener; art->init= view3d_tools_area_init; art->draw= view3d_tools_area_draw; BLI_addhead(&st->regiontypes, art); - view3d_toolbar_register(art); + view3d_toolshelf_register(art); /* regions: tool properties */ art= MEM_callocN(sizeof(ARegionType), "spacetype view3d region"); art->regionid = RGN_TYPE_TOOL_PROPS; - art->minsizex= 0; - art->minsizey= 120; + art->prefsizex= 0; + art->prefsizey= 120; art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_FRAMES; art->listener= view3d_buttons_area_listener; art->init= view3d_tools_area_init; @@ -848,7 +957,7 @@ void ED_spacetype_view3d(void) /* regions: header */ art= MEM_callocN(sizeof(ARegionType), "spacetype view3d region"); art->regionid = RGN_TYPE_HEADER; - art->minsizey= HEADERY; + art->prefsizey= HEADERY; 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; diff --git a/source/blender/editors/space_view3d/view3d_buttons.c b/source/blender/editors/space_view3d/view3d_buttons.c index 5ca10de8456..4adb2b3af26 100644 --- a/source/blender/editors/space_view3d/view3d_buttons.c +++ b/source/blender/editors/space_view3d/view3d_buttons.c @@ -70,6 +70,7 @@ #include "BKE_scene.h" #include "BKE_screen.h" #include "BKE_utildefines.h" +#include "BKE_deform.h" #include "BIF_gl.h" @@ -203,7 +204,7 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d max+= BLI_snprintf(str, sizeof(str), "%s %%x%d|", dg->name, dvert->dw[i].def_nr); if(max<320) strcat(defstr, str); } - else printf("oh no!\n"); + if(tfp->curdef==dvert->dw[i].def_nr) { init= 0; tfp->defweightp= &dvert->dw[i].weight; @@ -476,6 +477,258 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d // ED_undo_push(C, "Transform properties"); } } +#define B_VGRP_PNL_COPY 1 +#define B_VGRP_PNL_NORMALIZE 2 +#define B_VGRP_PNL_EDIT_SINGLE 8 /* or greater */ +#define B_VGRP_PNL_COPY_SINGLE 16384 /* or greater */ + +static void act_vert_def(Object *ob, EditVert **eve, MDeformVert **dvert) +{ + if(ob && ob->mode & OB_MODE_EDIT && ob->type==OB_MESH && ob->defbase.first) { + Mesh *me= ob->data; + EditMesh *em = BKE_mesh_get_editmesh(me); + EditSelection *ese = ((EditSelection*)em->selected.last); + + if(ese && ese->type == EDITVERT) { + *eve= (EditVert*)ese->data; + *dvert= CustomData_em_get(&em->vdata, (*eve)->data, CD_MDEFORMVERT); + return; + } + + BKE_mesh_end_editmesh(me, em); + } + + *eve= NULL; + *dvert= NULL; +} + +static void editvert_mirror_update(Object *ob, EditVert *eve, int def_nr) +{ + Mesh *me= ob->data; + EditMesh *em = BKE_mesh_get_editmesh(me); + EditVert *eve_mirr; + + eve_mirr= editmesh_get_x_mirror_vert(ob, em, eve->co); + + if(eve_mirr && eve_mirr != eve) { + MDeformVert *dvert_src= CustomData_em_get(&em->vdata, eve->data, CD_MDEFORMVERT); + MDeformVert *dvert_dst= CustomData_em_get(&em->vdata, eve_mirr->data, CD_MDEFORMVERT); + if(dvert_dst) { + if(def_nr == -1) { + /* all vgroups, add groups where neded */ + + int *flip_map= defgroup_flip_map(ob, 1); + defvert_sync_mapped(dvert_dst, dvert_src, flip_map, 1); + MEM_freeN(flip_map); + } + else { + /* single vgroup */ + MDeformWeight *dw= defvert_verify_index(dvert_dst, defgroup_flip_index(ob, def_nr, 1)); + if(dw) { + dw->weight= defvert_find_weight(dvert_src, def_nr); + } + } + } + } +} + +static void vgroup_adjust_active(Object *ob, int def_nr) +{ + EditVert *eve_act; + MDeformVert *dvert_act; + + act_vert_def(ob, &eve_act, &dvert_act); + + if(dvert_act) { + if(((Mesh *)ob->data)->editflag & ME_EDIT_MIRROR_X) + editvert_mirror_update(ob, eve_act, def_nr); + } +} + +static void vgroup_copy_active_to_sel(Object *ob) +{ + EditVert *eve_act; + MDeformVert *dvert_act; + + act_vert_def(ob, &eve_act, &dvert_act); + + if(dvert_act==NULL) { + return; + } + else { + Mesh *me= ob->data; + EditMesh *em = BKE_mesh_get_editmesh(me); + EditVert *eve; + MDeformVert *dvert; + + for(eve= em->verts.first; eve; eve= eve->next) { + if(eve->f & SELECT && eve != eve_act) { + dvert= CustomData_em_get(&em->vdata, eve->data, CD_MDEFORMVERT); + if(dvert) { + defvert_copy(dvert, dvert_act); + + if(me->editflag & ME_EDIT_MIRROR_X) + editvert_mirror_update(ob, eve, -1); + + } + } + } + } +} + +static void vgroup_copy_active_to_sel_single(Object *ob, int def_nr) +{ + EditVert *eve_act; + MDeformVert *dvert_act; + + act_vert_def(ob, &eve_act, &dvert_act); + + if(dvert_act==NULL) { + return; + } + else { + Mesh *me= ob->data; + EditMesh *em = BKE_mesh_get_editmesh(me); + EditVert *eve; + MDeformVert *dvert; + MDeformWeight *dw; + float act_weight = -1.0f; + int i; + + for(i=0, dw=dvert_act->dw; i < dvert_act->totweight; i++, dw++) { + if(def_nr == dw->def_nr) { + act_weight= dw->weight; + break; + } + } + + if(act_weight < -0.5f) + return; + + for(eve= em->verts.first; eve; eve= eve->next) { + if(eve->f & SELECT && eve != eve_act) { + dvert= CustomData_em_get(&em->vdata, eve->data, CD_MDEFORMVERT); + if(dvert) { + for(i=0, dw=dvert->dw; i < dvert->totweight; i++, dw++) { + if(def_nr == dw->def_nr) { + dw->weight= act_weight; + + if(me->editflag & ME_EDIT_MIRROR_X) + editvert_mirror_update(ob, eve, -1); + + break; + } + } + } + } + } + + if(me->editflag & ME_EDIT_MIRROR_X) + editvert_mirror_update(ob, eve_act, -1); + + } +} + +static void vgroup_normalize_active(Object *ob) +{ + EditVert *eve_act; + MDeformVert *dvert_act; + + act_vert_def(ob, &eve_act, &dvert_act); + + if(dvert_act==NULL) + return; + + defvert_normalize(dvert_act); + + if(((Mesh *)ob->data)->editflag & ME_EDIT_MIRROR_X) + editvert_mirror_update(ob, eve_act, -1); + + + +} + +static void do_view3d_vgroup_buttons(bContext *C, void *arg, int event) +{ + Scene *scene= CTX_data_scene(C); + Object *ob= OBACT; + + if(event==B_VGRP_PNL_NORMALIZE) { + vgroup_normalize_active(ob); + } + else if(event == B_VGRP_PNL_COPY) { + vgroup_copy_active_to_sel(ob); + } + else if(event >= B_VGRP_PNL_COPY_SINGLE) { + vgroup_copy_active_to_sel_single(ob, event - B_VGRP_PNL_COPY_SINGLE); + } + else if(event >= B_VGRP_PNL_EDIT_SINGLE) { + vgroup_adjust_active(ob, event - B_VGRP_PNL_EDIT_SINGLE); + } + +// todo +// if(((Mesh *)ob->data)->editflag & ME_EDIT_MIRROR_X) +// ED_vgroup_mirror(ob, 1, 1, 0); + + /* default for now */ + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); + WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); +} + +int view3d_panel_vgroup_poll(const bContext *C, PanelType *pt) +{ + Scene *scene= CTX_data_scene(C); + Object *ob= OBACT; + EditVert *eve_act; + MDeformVert *dvert_act; + + act_vert_def(ob, &eve_act, &dvert_act); + + return dvert_act ? dvert_act->totweight : 0; +} + + +static void view3d_panel_vgroup(const bContext *C, Panel *pa) +{ + uiBlock *block= uiLayoutAbsoluteBlock(pa->layout); + Scene *scene= CTX_data_scene(C); + Object *ob= OBACT; + + EditVert *eve; + MDeformVert *dvert; + + act_vert_def(ob, &eve, &dvert); + + if(dvert && dvert->totweight) { + uiLayout *col; + bDeformGroup *dg; + int i; + int yco = 0; + + uiBlockSetHandleFunc(block, do_view3d_vgroup_buttons, NULL); + + col= uiLayoutColumn(pa->layout, 0); + block= uiLayoutAbsoluteBlock(col); + + uiBlockBeginAlign(block); + + for (i=0; i<dvert->totweight; i++){ + dg = BLI_findlink (&ob->defbase, dvert->dw[i].def_nr); + if(dg) { + uiDefButF(block, NUM, B_VGRP_PNL_EDIT_SINGLE + dvert->dw[i].def_nr, dg->name, 0, yco, 180, 20, &dvert->dw[i].weight, 0.0, 1.0, 1, 3, ""); + uiDefBut(block, BUT, B_VGRP_PNL_COPY_SINGLE + dvert->dw[i].def_nr, "C", 180,yco,20,20, 0, 0, 0, 0, 0, "Copy this groups weight to other selected verts"); + yco -= 20; + } + } + yco-=2; + + uiBlockEndAlign(block); + uiBlockBeginAlign(block); + uiDefBut(block, BUT, B_VGRP_PNL_NORMALIZE, "Normalize", 0, yco,100,20, 0, 0, 0, 0, 0, "Normalize active vertex weights"); + uiDefBut(block, BUT, B_VGRP_PNL_COPY, "Copy", 100,yco,100,20, 0, 0, 0, 0, 0, "Copy active vertex to other seleted verts"); + uiBlockEndAlign(block); + } +} static void v3d_transform_butsR(uiLayout *layout, PointerRNA *ptr) { @@ -900,7 +1153,7 @@ static void do_view3d_region_buttons(bContext *C, void *arg, int event) } /* default for now */ - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, ob); + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, ob); } void removeTransformOrientation_func(bContext *C, void *target, void *unused) @@ -1135,11 +1388,13 @@ static void redo_cb(bContext *C, void *arg_op, void *arg2) if(lastop) { int retval; - printf("operator redo %s\n", lastop->type->name); + if (G.f & G_DEBUG) + printf("operator redo %s\n", lastop->type->name); ED_undo_pop(C); retval= WM_operator_repeat(C, lastop); if((retval & OPERATOR_FINISHED)==0) { - printf("operator redo failed %s\n", lastop->type->name); + if (G.f & G_DEBUG) + printf("operator redo failed %s\n", lastop->type->name); ED_undo_redo(C); } } @@ -1189,7 +1444,14 @@ void view3d_buttons_register(ARegionType *art) strcpy(pt->label, "Grease Pencil"); pt->draw= gpencil_panel_standard; BLI_addtail(&art->paneltypes, pt); - + + pt= MEM_callocN(sizeof(PanelType), "spacetype view3d panel vgroup"); + strcpy(pt->idname, "VIEW3D_PT_vgroup"); + strcpy(pt->label, "Vertex Groups"); + pt->draw= view3d_panel_vgroup; + pt->poll= view3d_panel_vgroup_poll; + BLI_addtail(&art->paneltypes, pt); + // XXX view3d_panel_preview(C, ar, 0); } diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index fc0af608dce..fa155489b59 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -1044,14 +1044,6 @@ static void drawviewborder(Scene *scene, ARegion *ar, View3D *v3d) UI_ThemeColor(TH_WIRE); glRectf(x1, y1, x2, y2); - /* camera name - draw in highlighted text color */ - if (ca && (ca->flag & CAM_SHOWNAME)) { - UI_ThemeColor(TH_TEXT_HI); - BLF_draw_default(x1, y1-15, 0.0f, v3d->camera->id.name+2); - UI_ThemeColor(TH_WIRE); - } - - /* border */ if(scene->r.mode & R_BORDER) { @@ -1086,6 +1078,12 @@ static void drawviewborder(Scene *scene, ARegion *ar, View3D *v3d) setlinestyle(0); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + /* camera name - draw in highlighted text color */ + if (ca && (ca->flag & CAM_SHOWNAME)) { + UI_ThemeColor(TH_TEXT_HI); + BLF_draw_default(x1, y1-15, 0.0f, v3d->camera->id.name+2); + UI_ThemeColor(TH_WIRE); + } } /* *********************** backdraw for selection *************** */ @@ -1096,16 +1094,6 @@ void backdrawview3d(Scene *scene, ARegion *ar, View3D *v3d) struct Base *base = scene->basact; rcti winrct; -/*for 2.43 release, don't use glext and just define the constant. - this to avoid possibly breaking platforms before release.*/ -#ifndef GL_MULTISAMPLE_ARB - #define GL_MULTISAMPLE_ARB 0x809D -#endif - -#ifdef GL_MULTISAMPLE_ARB - int m; -#endif - if(base && (base->object->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT) || paint_facesel_test(base->object))); else if((base && (base->object->mode & OB_MODE_TEXTURE_PAINT)) && @@ -1126,16 +1114,6 @@ void backdrawview3d(Scene *scene, ARegion *ar, View3D *v3d) // } // } - /* Disable FSAA for backbuffer selection. - - Only works if GL_MULTISAMPLE_ARB is defined by the header - file, which is should be for every OS that supports FSAA.*/ - -#ifdef GL_MULTISAMPLE_ARB - m = glIsEnabled(GL_MULTISAMPLE_ARB); - if (m) glDisable(GL_MULTISAMPLE_ARB); -#endif - if(v3d->drawtype > OB_WIRE) v3d->zbuf= TRUE; glDisable(GL_DITHER); @@ -1172,10 +1150,6 @@ void backdrawview3d(Scene *scene, ARegion *ar, View3D *v3d) if(rv3d->rflag & RV3D_CLIPPING) view3d_clr_clipping(); -#ifdef GL_MULTISAMPLE_ARB - if (m) glEnable(GL_MULTISAMPLE_ARB); -#endif - /* it is important to end a view in a transform compatible with buttons */ // persp(PERSP_WIN); // set ortho @@ -1338,106 +1312,113 @@ static void draw_bgpic(Scene *scene, ARegion *ar, View3D *v3d) ImBuf *ibuf= NULL; float vec[4], fac, asp, zoomx, zoomy; float x1, y1, x2, y2, cx, cy; - - bgpic= v3d->bgpic; - if(bgpic==NULL) return; - - ima= bgpic->ima; - - if(ima) - ibuf= BKE_image_get_ibuf(ima, &bgpic->iuser); - if(ibuf==NULL || (ibuf->rect==NULL && ibuf->rect_float==NULL) ) - return; - if(ibuf->channels!=4) - return; - if(ibuf->rect==NULL) - IMB_rect_from_float(ibuf); - - if(rv3d->persp==2) { - rctf vb; - - calc_viewborder(scene, ar, v3d, &vb); - - x1= vb.xmin; - y1= vb.ymin; - x2= vb.xmax; - y2= vb.ymax; - } - else { - float sco[2]; - - /* calc window coord */ - initgrabz(rv3d, 0.0, 0.0, 0.0); - window_to_3d_delta(ar, vec, 1, 0); - fac= MAX3( fabs(vec[0]), fabs(vec[1]), fabs(vec[1]) ); - fac= 1.0/fac; - - asp= ( (float)ibuf->y)/(float)ibuf->x; - - vec[0] = vec[1] = vec[2] = 0.0; - view3d_project_float(ar, vec, sco, rv3d->persmat); - cx = sco[0]; - cy = sco[1]; - - x1= cx+ fac*(bgpic->xof-bgpic->size); - y1= cy+ asp*fac*(bgpic->yof-bgpic->size); - x2= cx+ fac*(bgpic->xof+bgpic->size); - y2= cy+ asp*fac*(bgpic->yof+bgpic->size); - } - - /* complete clip? */ - - if(x2 < 0 ) return; - if(y2 < 0 ) return; - if(x1 > ar->winx ) return; - if(y1 > ar->winy ) return; - - zoomx= (x2-x1)/ibuf->x; - zoomy= (y2-y1)/ibuf->y; - - /* for some reason; zoomlevels down refuses to use GL_ALPHA_SCALE */ - if(zoomx < 1.0f || zoomy < 1.0f) { - float tzoom= MIN2(zoomx, zoomy); - int mip= 0; - - if(ibuf->mipmap[0]==NULL) - IMB_makemipmap(ibuf, 0, 0); - - while(tzoom < 1.0f && mip<8 && ibuf->mipmap[mip]) { - tzoom*= 2.0f; - zoomx*= 2.0f; - zoomy*= 2.0f; - mip++; + + + for ( bgpic= v3d->bgpicbase.first; bgpic; bgpic= bgpic->next ) { + + if( (bgpic->view == 0) || /* zero for any */ + (bgpic->view & (1<<rv3d->view)) || /* check agaist flags */ + (rv3d->persp==RV3D_CAMOB && bgpic->view == (1<<RV3D_VIEW_CAMERA)) + ) { + ima= bgpic->ima; + if(ima==NULL) + continue; + BKE_image_user_calc_frame(&bgpic->iuser, CFRA, 0); + ibuf= BKE_image_get_ibuf(ima, &bgpic->iuser); + if(ibuf==NULL || (ibuf->rect==NULL && ibuf->rect_float==NULL) ) + continue; + if(ibuf->channels!=4) + continue; + if(ibuf->rect==NULL) + IMB_rect_from_float(ibuf); + + if(rv3d->persp==RV3D_CAMOB) { + rctf vb; + + calc_viewborder(scene, ar, v3d, &vb); + + x1= vb.xmin; + y1= vb.ymin; + x2= vb.xmax; + y2= vb.ymax; + } + else { + float sco[2]; + + /* calc window coord */ + initgrabz(rv3d, 0.0, 0.0, 0.0); + window_to_3d_delta(ar, vec, 1, 0); + fac= MAX3( fabs(vec[0]), fabs(vec[1]), fabs(vec[1]) ); + fac= 1.0/fac; + + asp= ( (float)ibuf->y)/(float)ibuf->x; + + vec[0] = vec[1] = vec[2] = 0.0; + view3d_project_float(ar, vec, sco, rv3d->persmat); + cx = sco[0]; + cy = sco[1]; + + x1= cx+ fac*(bgpic->xof-bgpic->size); + y1= cy+ asp*fac*(bgpic->yof-bgpic->size); + x2= cx+ fac*(bgpic->xof+bgpic->size); + y2= cy+ asp*fac*(bgpic->yof+bgpic->size); + } + + /* complete clip? */ + + if(x2 < 0 ) continue; + if(y2 < 0 ) continue; + if(x1 > ar->winx ) continue; + if(y1 > ar->winy ) continue; + + zoomx= (x2-x1)/ibuf->x; + zoomy= (y2-y1)/ibuf->y; + + /* for some reason; zoomlevels down refuses to use GL_ALPHA_SCALE */ + if(zoomx < 1.0f || zoomy < 1.0f) { + float tzoom= MIN2(zoomx, zoomy); + int mip= 0; + + if(ibuf->mipmap[0]==NULL) + IMB_makemipmap(ibuf, 0, 0); + + while(tzoom < 1.0f && mip<8 && ibuf->mipmap[mip]) { + tzoom*= 2.0f; + zoomx*= 2.0f; + zoomy*= 2.0f; + mip++; + } + if(mip>0) + ibuf= ibuf->mipmap[mip-1]; + } + + if(v3d->zbuf) glDisable(GL_DEPTH_TEST); + glDepthMask(0); + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + /* need to use wm push/pop matrix because ED_region_pixelspace + uses the wm functions too, otherwise gets out of sync */ + wmPushMatrix(); + ED_region_pixelspace(ar); + + glEnable(GL_BLEND); + + glPixelZoom(zoomx, zoomy); + glColor4f(1.0, 1.0, 1.0, 1.0-bgpic->blend); + glaDrawPixelsTex(x1, y1, ibuf->x, ibuf->y, GL_UNSIGNED_BYTE, ibuf->rect); + + glPixelZoom(1.0, 1.0); + glPixelTransferf(GL_ALPHA_SCALE, 1.0f); + + wmPopMatrix(); + + glDisable(GL_BLEND); + + glDepthMask(1); + if(v3d->zbuf) glEnable(GL_DEPTH_TEST); } - if(mip>0) - ibuf= ibuf->mipmap[mip-1]; } - - if(v3d->zbuf) glDisable(GL_DEPTH_TEST); - glDepthMask(0); - - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - /* need to use wm push/pop matrix because ED_region_pixelspace - uses the wm functions too, otherwise gets out of sync */ - wmPushMatrix(); - ED_region_pixelspace(ar); - - glEnable(GL_BLEND); - - glPixelZoom(zoomx, zoomy); - glColor4f(1.0, 1.0, 1.0, 1.0-bgpic->blend); - glaDrawPixelsTex(x1, y1, ibuf->x, ibuf->y, GL_UNSIGNED_BYTE, ibuf->rect); - - glPixelZoom(1.0, 1.0); - glPixelTransferf(GL_ALPHA_SCALE, 1.0f); - - wmPopMatrix(); - - glDisable(GL_BLEND); - - glDepthMask(1); - if(v3d->zbuf) glEnable(GL_DEPTH_TEST); } /* ****************** View3d afterdraw *************** */ @@ -1519,7 +1500,7 @@ static void draw_dupli_objects_color(Scene *scene, ARegion *ar, View3D *v3d, Bas ListBase *lb; DupliObject *dob; Base tbase; - BoundBox *bb= NULL; + BoundBox bb; /* use a copy because draw_object, calls clear_mesh_caches */ GLuint displist=0; short transflag, use_displist= -1; /* -1 is initialize */ char dt, dtx; @@ -1561,7 +1542,7 @@ static void draw_dupli_objects_color(Scene *scene, ARegion *ar, View3D *v3d, Bas /* disable boundbox check for list creation */ object_boundbox_flag(dob->ob, OB_BB_DISABLED, 1); /* need this for next part of code */ - bb= object_get_boundbox(dob->ob); + bb= *object_get_boundbox(dob->ob); unit_m4(dob->ob->obmat); /* obmat gets restored */ @@ -1576,7 +1557,7 @@ static void draw_dupli_objects_color(Scene *scene, ARegion *ar, View3D *v3d, Bas } if(use_displist) { wmMultMatrix(dob->mat); - if(boundbox_clip(rv3d, dob->mat, bb)) + if(boundbox_clip(rv3d, dob->mat, &bb)) glCallList(displist); wmLoadMatrix(rv3d->viewmat); } @@ -1953,8 +1934,16 @@ void ED_view3d_draw_offscreen(Scene *scene, View3D *v3d, ARegion *ar, int winx, G.f |= G_RENDER_OGL; GPU_free_images(); - /* set background color */ - glClearColor(scene->world->horr, scene->world->horg, scene->world->horb, 0.0); + /* set background color, fallback on the view background color */ + if(scene->world) { + glClearColor(scene->world->horr, scene->world->horg, scene->world->horb, 0.0); + } + else { + float col[3]; + UI_GetThemeColor3fv(TH_BACK, col); + glClearColor(col[0], col[1], col[2], 0.0); + } + glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); /* setup view matrices */ @@ -2057,6 +2046,10 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) } else v3d->zbuf= FALSE; + + /* enables anti-aliasing for 3D view drawing */ + if (!(U.gameflags & USER_DISABLE_AA)) + glEnable(GL_MULTISAMPLE_ARB); // needs to be done always, gridview is adjusted in drawgrid() now rv3d->gridview= v3d->grid; @@ -2070,7 +2063,7 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) star_stuff_term_func); } } - if(v3d->flag & V3D_DISPBGPIC) draw_bgpic(scene, ar, v3d); + if(v3d->flag & V3D_DISPBGPICS) draw_bgpic(scene, ar, v3d); } } else { @@ -2082,7 +2075,7 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) glMatrixMode(GL_MODELVIEW); wmLoadMatrix(rv3d->viewmat); - if(v3d->flag & V3D_DISPBGPIC) { + if(v3d->flag & V3D_DISPBGPICS) { draw_bgpic(scene, ar, v3d); } } @@ -2164,6 +2157,10 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) BIF_draw_manipulator(C); + /* Disable back anti-aliasing */ + if (!(U.gameflags & USER_DISABLE_AA)) + glDisable(GL_MULTISAMPLE_ARB); + if(v3d->zbuf) { v3d->zbuf= FALSE; glDisable(GL_DEPTH_TEST); diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index c0d9d49d188..ad061532045 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -162,6 +162,8 @@ static void view3d_boxview_clip(ScrArea *sa) if(rv3d->viewlock & RV3D_BOXCLIP) { rv3d->rflag |= RV3D_CLIPPING; memcpy(rv3d->clip, clip, sizeof(clip)); + if(rv3d->clipbb) MEM_freeN(rv3d->clipbb); + rv3d->clipbb= MEM_dupallocN(bb); } } } @@ -227,6 +229,34 @@ void view3d_boxview_copy(ScrArea *sa, ARegion *ar) view3d_boxview_clip(sa); } +void ED_view3d_quadview_update(ScrArea *sa, ARegion *ar) +{ + RegionView3D *rv3d= ar->regiondata; + short viewlock; + + /* this function copies flags from the first of the 3 other quadview + regions to the 2 other, so it assumes this is the region whose + properties are always being edited, weak */ + viewlock= rv3d->viewlock; + + if((viewlock & RV3D_LOCKED)==0) + viewlock= 0; + else if((viewlock & RV3D_BOXVIEW)==0) + viewlock &= ~RV3D_BOXCLIP; + + for(; ar; ar= ar->prev) { + if(ar->alignment==RGN_ALIGN_QSPLIT) { + rv3d= ar->regiondata; + rv3d->viewlock= viewlock; + } + } + + if(rv3d->viewlock & RV3D_BOXVIEW) + view3d_boxview_copy(sa, sa->regionbase.last); + + ED_area_tag_redraw(sa); +} + /* ************************** init for view ops **********************************/ typedef struct ViewOpsData { @@ -445,16 +475,21 @@ enum { #define VIEW_MODAL_CONFIRM 1 /* used for all view operations */ #define VIEWROT_MODAL_AXIS_SNAP_ENABLE 2 #define VIEWROT_MODAL_AXIS_SNAP_DISABLE 3 - +#define VIEWROT_MODAL_SWITCH_ZOOM 4 +#define VIEWROT_MODAL_SWITCH_MOVE 5 +#define VIEWROT_MODAL_SWITCH_ROTATE 6 /* called in transform_ops.c, on each regeneration of keymaps */ void viewrotate_modal_keymap(wmKeyConfig *keyconf) { static EnumPropertyItem modal_items[] = { - {VIEW_MODAL_CONFIRM, "CONFIRM", 0, "Cancel", ""}, + {VIEW_MODAL_CONFIRM, "CONFIRM", 0, "Confirm", ""}, {VIEWROT_MODAL_AXIS_SNAP_ENABLE, "AXIS_SNAP_ENABLE", 0, "Enable Axis Snap", ""}, - {VIEWROT_MODAL_AXIS_SNAP_DISABLE, "AXIS_SNAP_DISABLE", 0, "Enable Axis Snap", ""}, + {VIEWROT_MODAL_AXIS_SNAP_DISABLE, "AXIS_SNAP_DISABLE", 0, "Disable Axis Snap", ""}, + + {VIEWROT_MODAL_SWITCH_ZOOM, "SWITCH_TO_ZOOM", 0, "Switch to Zoom"}, + {VIEWROT_MODAL_SWITCH_MOVE, "SWITCH_TO_MOVE", 0, "Switch to Move"}, {0, NULL, 0, NULL, NULL}}; @@ -469,9 +504,13 @@ void viewrotate_modal_keymap(wmKeyConfig *keyconf) WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_RELEASE, KM_ANY, 0, VIEW_MODAL_CONFIRM); WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, VIEW_MODAL_CONFIRM); - WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_AXIS_SNAP_ENABLE); - WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_RELEASE, KM_ANY, 0, VIEWROT_MODAL_AXIS_SNAP_DISABLE); + WM_modalkeymap_add_item(keymap, LEFTALTKEY, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_AXIS_SNAP_ENABLE); + WM_modalkeymap_add_item(keymap, LEFTALTKEY, KM_RELEASE, KM_ANY, 0, VIEWROT_MODAL_AXIS_SNAP_DISABLE); + WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ZOOM); + WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ZOOM); + WM_modalkeymap_add_item(keymap, LEFTSHIFTKEY, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_SWITCH_MOVE); + /* assign map to operators */ WM_modalkeymap_assign(keymap, "VIEW3D_OT_rotate"); @@ -545,7 +584,7 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y) invert_m3_m3(m_inv,m); /* Determine the direction of the x vector (for rotating up and down) */ - /* This can likely be compuated directly from the quaternion. */ + /* This can likely be computed directly from the quaternion. */ mul_m3_v3(m_inv,xvec); /* Perform the up/down rotation */ @@ -633,6 +672,14 @@ static int viewrotate_modal(bContext *C, wmOperator *op, wmEvent *event) vod->axis_snap= FALSE; event_code= VIEW_APPLY; break; + case VIEWROT_MODAL_SWITCH_ZOOM: + WM_operator_name_call(C, "VIEW3D_OT_zoom", WM_OP_INVOKE_DEFAULT, NULL); + event_code= VIEW_CONFIRM; + break; + case VIEWROT_MODAL_SWITCH_MOVE: + WM_operator_name_call(C, "VIEW3D_OT_move", WM_OP_INVOKE_DEFAULT, NULL); + event_code= VIEW_CONFIRM; + break; } } else if(event->type==vod->origkey && event->val==KM_RELEASE) { @@ -673,11 +720,30 @@ static int viewrotate_invoke(bContext *C, wmOperator *op, wmEvent *event) vod->rv3d->persp= RV3D_PERSP; ED_region_tag_redraw(vod->ar); } + + if (event->type == MOUSEPAN) { + viewrotate_apply(vod, event->prevx, event->prevy); + request_depth_update(CTX_wm_region_view3d(C)); + + viewops_data_free(C, op); + + return OPERATOR_FINISHED; + } + else if (event->type == MOUSEROTATE) { + /* MOUSEROTATE performs orbital rotation, so y axis delta is set to 0 */ + viewrotate_apply(vod, event->prevx, event->y); + request_depth_update(CTX_wm_region_view3d(C)); + + viewops_data_free(C, op); + + return OPERATOR_FINISHED; + } + else { + /* add temp handler */ + WM_event_add_modal_handler(C, op); - /* add temp handler */ - WM_event_add_modal_handler(C, op); - - return OPERATOR_RUNNING_MODAL; + return OPERATOR_RUNNING_MODAL; + } } static int ED_operator_view3d_rotate(bContext *C) @@ -736,6 +802,10 @@ void viewmove_modal_keymap(wmKeyConfig *keyconf) WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_RELEASE, KM_ANY, 0, VIEW_MODAL_CONFIRM); WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, VIEW_MODAL_CONFIRM); + WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ZOOM); + WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ZOOM); + WM_modalkeymap_add_item(keymap, LEFTSHIFTKEY, KM_RELEASE, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ROTATE); + /* assign map to operators */ WM_modalkeymap_assign(keymap, "VIEW3D_OT_move"); } @@ -784,6 +854,14 @@ static int viewmove_modal(bContext *C, wmOperator *op, wmEvent *event) case VIEW_MODAL_CONFIRM: event_code= VIEW_CONFIRM; break; + case VIEWROT_MODAL_SWITCH_ZOOM: + WM_operator_name_call(C, "VIEW3D_OT_zoom", WM_OP_INVOKE_DEFAULT, NULL); + event_code= VIEW_CONFIRM; + break; + case VIEWROT_MODAL_SWITCH_ROTATE: + WM_operator_name_call(C, "VIEW3D_OT_rotate", WM_OP_INVOKE_DEFAULT, NULL); + event_code= VIEW_CONFIRM; + break; } } else if(event->type==vod->origkey && event->val==KM_RELEASE) { @@ -809,13 +887,23 @@ static int viewmove_invoke(bContext *C, wmOperator *op, wmEvent *event) /* makes op->customdata */ viewops_data_create(C, op, event); - /* add temp handler */ - WM_event_add_modal_handler(C, op); + if (event->type == MOUSEPAN) { + ViewOpsData *vod= op->customdata; + viewmove_apply(vod, event->prevx, event->prevy); + request_depth_update(CTX_wm_region_view3d(C)); + + viewops_data_free(C, op); + + return OPERATOR_FINISHED; + } + else { + /* add temp handler */ + WM_event_add_modal_handler(C, op); - return OPERATOR_RUNNING_MODAL; + return OPERATOR_RUNNING_MODAL; + } } - void VIEW3D_OT_move(wmOperatorType *ot) { @@ -854,6 +942,10 @@ void viewzoom_modal_keymap(wmKeyConfig *keyconf) WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_RELEASE, KM_ANY, 0, VIEW_MODAL_CONFIRM); WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, VIEW_MODAL_CONFIRM); + WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_RELEASE, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ROTATE); + WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_RELEASE, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ROTATE); + WM_modalkeymap_add_item(keymap, LEFTSHIFTKEY, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_SWITCH_MOVE); + /* assign map to operators */ WM_modalkeymap_assign(keymap, "VIEW3D_OT_zoom"); } @@ -907,11 +999,11 @@ static void view_zoom_mouseloc(ARegion *ar, float dfac, int mx, int my) } -static void viewzoom_apply(ViewOpsData *vod, int x, int y) +static void viewzoom_apply(ViewOpsData *vod, int x, int y, short viewzoom) { float zfac=1.0; - if(U.viewzoom==USER_ZOOM_CONT) { + if(viewzoom==USER_ZOOM_CONT) { double time= PIL_check_seconds_timer(); float time_step= (float)(time - vod->timer_lastdraw); @@ -919,7 +1011,7 @@ static void viewzoom_apply(ViewOpsData *vod, int x, int y) 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) { + else if(viewzoom==USER_ZOOM_SCALE) { int ctr[2], len1, len2; // method which zooms based on how far you move the mouse @@ -953,7 +1045,7 @@ static void viewzoom_apply(ViewOpsData *vod, int x, int y) view_zoom_mouseloc(vod->ar, zfac, vod->oldx, vod->oldy); - if ((U.uiflag & USER_ORBIT_ZBUF) && (U.viewzoom==USER_ZOOM_CONT) && (vod->rv3d->persp==RV3D_PERSP)) { + if ((U.uiflag & USER_ORBIT_ZBUF) && (viewzoom==USER_ZOOM_CONT) && (vod->rv3d->persp==RV3D_PERSP)) { float upvec[3], mat[3][3]; /* Secret apricot feature, translate the view when in continues mode */ @@ -984,10 +1076,7 @@ static int viewzoom_modal(bContext *C, wmOperator *op, wmEvent *event) short event_code= VIEW_PASS; /* execute the events */ - if (event->type == TIMER && event->customdata == vod->timer) { - event_code= VIEW_APPLY; - } - else if(event->type==MOUSEMOVE) { + if(event->type==MOUSEMOVE) { event_code= VIEW_APPLY; } else if(event->type==EVT_MODAL_MAP) { @@ -995,6 +1084,14 @@ static int viewzoom_modal(bContext *C, wmOperator *op, wmEvent *event) case VIEW_MODAL_CONFIRM: event_code= VIEW_CONFIRM; break; + case VIEWROT_MODAL_SWITCH_MOVE: + WM_operator_name_call(C, "VIEW3D_OT_move", WM_OP_INVOKE_DEFAULT, NULL); + event_code= VIEW_CONFIRM; + break; + case VIEWROT_MODAL_SWITCH_ROTATE: + WM_operator_name_call(C, "VIEW3D_OT_rotate", WM_OP_INVOKE_DEFAULT, NULL); + event_code= VIEW_CONFIRM; + break; } } else if(event->type==vod->origkey && event->val==KM_RELEASE) { @@ -1002,7 +1099,7 @@ static int viewzoom_modal(bContext *C, wmOperator *op, wmEvent *event) } if(event_code==VIEW_APPLY) { - viewzoom_apply(vod, event->x, event->y); + viewzoom_apply(vod, event->x, event->y, U.viewzoom); } else if (event_code==VIEW_CONFIRM) { request_depth_update(CTX_wm_region_view3d(C)); @@ -1047,6 +1144,8 @@ static int viewzoom_exec(bContext *C, wmOperator *op) request_depth_update(CTX_wm_region_view3d(C)); ED_region_tag_redraw(CTX_wm_region(C)); + + viewops_data_free(C, op); return OPERATOR_FINISHED; } @@ -1063,6 +1162,8 @@ static int viewzoom_invoke(bContext *C, wmOperator *op, wmEvent *event) } if(delta) { + /* makes op->customdata */ + viewops_data_create(C, op, event); viewzoom_exec(C, op); } else { @@ -1073,13 +1174,31 @@ static int viewzoom_invoke(bContext *C, wmOperator *op, wmEvent *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(); + if (event->type == MOUSEZOOM) { + if (U.uiflag & USER_ZOOM_INVERT) /* Bypass Zoom invert flag */ + SWAP(int, event->x, event->prevx); - /* add temp handler */ - WM_event_add_modal_handler(C, op); + if (U.uiflag & USER_ZOOM_DOLLY_HORIZ) { + vod->origx = vod->oldx = event->x; + viewzoom_apply(vod, event->prevx, event->prevy, USER_ZOOM_DOLLY); + } + else { + + /* Set y move = x move as MOUSEZOOM uses only x axis to pass magnification value */ + vod->origy = vod->oldy = event->x; + viewzoom_apply(vod, event->x, event->prevx, USER_ZOOM_DOLLY); + } + request_depth_update(CTX_wm_region_view3d(C)); + + viewops_data_free(C, op); + return OPERATOR_FINISHED; + } + else { + /* add temp handler */ + WM_event_add_modal_handler(C, op); - return OPERATOR_RUNNING_MODAL; + return OPERATOR_RUNNING_MODAL; + } } return OPERATOR_FINISHED; } @@ -1195,7 +1314,7 @@ void VIEW3D_OT_view_all(wmOperatorType *ot) RNA_def_boolean(ot->srna, "center", 0, "Center", ""); } -static int viewcenter_exec(bContext *C, wmOperator *op) /* like a localview without local!, was centerview() in 2.4x */ +static int viewselected_exec(bContext *C, wmOperator *op) /* like a localview without local!, was centerview() in 2.4x */ { ARegion *ar= CTX_wm_region(C); View3D *v3d = CTX_wm_view3d(C); @@ -1312,16 +1431,16 @@ static int viewcenter_exec(bContext *C, wmOperator *op) /* like a localview with return OPERATOR_FINISHED; } -void VIEW3D_OT_view_center(wmOperatorType *ot) +void VIEW3D_OT_view_selected(wmOperatorType *ot) { /* identifiers */ ot->name= "View Selected"; ot->description = "Move the view to the selection center."; - ot->idname= "VIEW3D_OT_view_center"; + ot->idname= "VIEW3D_OT_view_selected"; /* api callbacks */ - ot->exec= viewcenter_exec; + ot->exec= viewselected_exec; ot->poll= ED_operator_view3d_active; /* flags */ @@ -1763,10 +1882,14 @@ static int viewnumpad_exec(bContext *C, wmOperator *op) /* lastview - */ if(rv3d->persp != RV3D_CAMOB) { - /* store settings of current view before allowing overwriting with camera view */ - QUATCOPY(rv3d->lviewquat, rv3d->viewquat); - rv3d->lview= rv3d->view; - rv3d->lpersp= rv3d->persp; + + if (!rv3d->smooth_timer) { + /* store settings of current view before allowing overwriting with camera view + * only if we're not currently in a view transition */ + QUATCOPY(rv3d->lviewquat, rv3d->viewquat); + rv3d->lview= rv3d->view; + rv3d->lpersp= rv3d->persp; + } #if 0 if(G.qual==LR_ALTKEY) { @@ -1976,7 +2099,82 @@ void VIEW3D_OT_view_persportho(wmOperatorType *ot) ot->flag= 0; } +/* ******************** add background image operator **************** */ + +static int add_background_image_exec(bContext *C, wmOperator *op) +{ + View3D *v3d= CTX_wm_view3d(C); + + BGpic *bgpic= MEM_callocN(sizeof(BGpic), "Background Image"); + bgpic->size= 5.0; + bgpic->blend= 0.5; + bgpic->iuser.fie_ima= 2; + bgpic->iuser.ok= 1; + bgpic->view= 0; /* 0 for all */ + + BLI_addtail(&v3d->bgpicbase, bgpic); + + //ED_region_tag_redraw(v3d); + + return OPERATOR_FINISHED; +} + +static int add_background_image_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + return add_background_image_exec(C, op); +} + +void VIEW3D_OT_add_background_image(wmOperatorType *ot) +{ + /* identifiers */ + ot->name = "Add Background Image"; + ot->description= "Add a new background image."; + ot->idname = "VIEW3D_OT_add_background_image"; + + /* api callbacks */ + ot->invoke = add_background_image_invoke; + ot->exec = add_background_image_exec; + ot->poll = ED_operator_view3d_active; + /* flags */ + ot->flag = 0; +} + +/* ***** remove image operator ******* */ +static int remove_background_image_exec(bContext *C, wmOperator *op) +{ + BGpic *bgpic_rem = CTX_data_pointer_get_type(C, "bgpic", &RNA_BackgroundImage).data; + View3D *vd = CTX_wm_view3d(C); + int index = RNA_int_get(op->ptr, "index"); + + bgpic_rem = BLI_findlink(&vd->bgpicbase, index); + if(bgpic_rem) { + BLI_remlink(&vd->bgpicbase, bgpic_rem); + if(bgpic_rem->ima) bgpic_rem->ima->id.us--; + MEM_freeN(bgpic_rem); + } + + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, vd); + + return OPERATOR_FINISHED; +} + +void VIEW3D_OT_remove_background_image(wmOperatorType *ot) +{ + /* identifiers */ + ot->name = "Remove Background Image"; + ot->description= "Remove a background image from the 3D view"; + ot->idname = "VIEW3D_OT_remove_background_image"; + + /* api callbacks */ + ot->exec = remove_background_image_exec; + ot->poll = ED_operator_view3d_active; + + /* flags */ + ot->flag = 0; + + RNA_def_int(ot->srna, "index", 0, 0, INT_MAX, "Index", "Background image index to remove ", 0, INT_MAX); +} /* ********************* set clipping operator ****************** */ static void calc_clipping_plane(float clip[6][4], BoundBox *clipbb) @@ -2034,7 +2232,7 @@ static int view3d_clipping_exec(bContext *C, wmOperator *op) view3d_operator_needs_opengl(C); view3d_set_viewcontext(C, &vc); - view3d_get_transformation(vc.ar, vc.rv3d, vc.obact, &mats); + view3d_get_transformation(vc.ar, vc.rv3d, NULL, &mats); /* NULL because we don't want it in object space */ view3d_calculate_clipping(rv3d->clipbb, rv3d->clip, &mats, &rect); return OPERATOR_FINISHED; @@ -2192,7 +2390,40 @@ void VIEW3D_OT_manipulator(wmOperatorType *ot) RNA_def_boolean_vector(ot->srna, "constraint_axis", 3, NULL, "Constraint Axis", ""); } +static int enable_manipulator_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + View3D *v3d = CTX_wm_view3d(C); + + v3d->twtype=0; + + if (RNA_boolean_get(op->ptr, "translate")) + v3d->twtype |= V3D_MANIP_TRANSLATE; + if (RNA_boolean_get(op->ptr, "rotate")) + v3d->twtype |= V3D_MANIP_ROTATE; + if (RNA_boolean_get(op->ptr, "scale")) + v3d->twtype |= V3D_MANIP_SCALE; + + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, v3d); + return OPERATOR_FINISHED; +} + +void VIEW3D_OT_enable_manipulator(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Enable 3D Manipulator"; + ot->description = "Enable the transform manipulator for use."; + ot->idname= "VIEW3D_OT_enable_manipulator"; + + /* api callbacks */ + ot->invoke= enable_manipulator_invoke; + ot->poll= ED_operator_view3d_active; + + /* rna later */ + RNA_def_boolean(ot->srna, "translate", 0, "Translate", "Enable the translate manipulator"); + RNA_def_boolean(ot->srna, "rotate", 0, "Rotate", "Enable the rotate manipulator"); + RNA_def_boolean(ot->srna, "scale", 0, "Scale", "Enable the scale manipulator"); +} /* ************************* below the line! *********************** */ diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index 98f0f2fec65..bf774442812 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -533,8 +533,8 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) /* Scene lock */ uiItemR(layout, "", 0, &v3dptr, "lock_camera_and_layers", UI_ITEM_R_ICON_ONLY); } - - /* selection modus */ + + /* selection modus, dont use python for this since it cant do the toggle buttons with shift+click as well as clicking to set one. */ if(obedit && (obedit->type == OB_MESH)) { EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data); diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h index a5d4c61bc01..bdcaa4a7e32 100644 --- a/source/blender/editors/space_view3d/view3d_intern.h +++ b/source/blender/editors/space_view3d/view3d_intern.h @@ -73,14 +73,17 @@ void VIEW3D_OT_move(struct wmOperatorType *ot); void VIEW3D_OT_rotate(struct wmOperatorType *ot); void VIEW3D_OT_view_all(struct wmOperatorType *ot); void VIEW3D_OT_viewnumpad(struct wmOperatorType *ot); -void VIEW3D_OT_view_center(struct wmOperatorType *ot); +void VIEW3D_OT_view_selected(struct wmOperatorType *ot); void VIEW3D_OT_view_center_cursor(struct wmOperatorType *ot); void VIEW3D_OT_view_pan(struct wmOperatorType *ot); void VIEW3D_OT_view_persportho(struct wmOperatorType *ot); +void VIEW3D_OT_add_background_image(struct wmOperatorType *ot); +void VIEW3D_OT_remove_background_image(struct wmOperatorType *ot); void VIEW3D_OT_view_orbit(struct wmOperatorType *ot); void VIEW3D_OT_clip_border(struct wmOperatorType *ot); void VIEW3D_OT_cursor3d(struct wmOperatorType *ot); void VIEW3D_OT_manipulator(struct wmOperatorType *ot); +void VIEW3D_OT_enable_manipulator(struct wmOperatorType *ot); void VIEW3D_OT_render_border(struct wmOperatorType *ot); void VIEW3D_OT_zoom_border(struct wmOperatorType *ot); void VIEW3D_OT_drawtype(struct wmOperatorType *ot); @@ -161,8 +164,8 @@ void VIEW3D_OT_properties(struct wmOperatorType *ot); void view3d_buttons_register(struct ARegionType *art); /* view3d_toolbar.c */ -void VIEW3D_OT_toolbar(struct wmOperatorType *ot); -void view3d_toolbar_register(struct ARegionType *art); +void VIEW3D_OT_toolshelf(struct wmOperatorType *ot); +void view3d_toolshelf_register(struct ARegionType *art); void view3d_tool_props_register(struct ARegionType *art); /* view3d_snap.c */ @@ -172,6 +175,7 @@ void VIEW3D_OT_snap_selected_to_grid(struct wmOperatorType *ot); void VIEW3D_OT_snap_selected_to_cursor(struct wmOperatorType *ot); 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_center(struct wmOperatorType *ot); void VIEW3D_OT_snap_cursor_to_selected(struct wmOperatorType *ot); void VIEW3D_OT_snap_cursor_to_active(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c index 2bcd78b3d3d..2192eb13cd0 100644 --- a/source/blender/editors/space_view3d/view3d_ops.c +++ b/source/blender/editors/space_view3d/view3d_ops.c @@ -70,7 +70,9 @@ void view3d_operatortypes(void) WM_operatortype_append(VIEW3D_OT_view_orbit); WM_operatortype_append(VIEW3D_OT_view_pan); WM_operatortype_append(VIEW3D_OT_view_persportho); - WM_operatortype_append(VIEW3D_OT_view_center); + WM_operatortype_append(VIEW3D_OT_add_background_image); + WM_operatortype_append(VIEW3D_OT_remove_background_image); + WM_operatortype_append(VIEW3D_OT_view_selected); WM_operatortype_append(VIEW3D_OT_view_center_cursor); WM_operatortype_append(VIEW3D_OT_select); WM_operatortype_append(VIEW3D_OT_select_border); @@ -80,6 +82,7 @@ void view3d_operatortypes(void) WM_operatortype_append(VIEW3D_OT_render_border); WM_operatortype_append(VIEW3D_OT_zoom_border); WM_operatortype_append(VIEW3D_OT_manipulator); + WM_operatortype_append(VIEW3D_OT_enable_manipulator); WM_operatortype_append(VIEW3D_OT_cursor3d); WM_operatortype_append(VIEW3D_OT_select_lasso); WM_operatortype_append(VIEW3D_OT_setcameratoview); @@ -90,12 +93,13 @@ void view3d_operatortypes(void) WM_operatortype_append(VIEW3D_OT_layers); WM_operatortype_append(VIEW3D_OT_properties); - WM_operatortype_append(VIEW3D_OT_toolbar); + WM_operatortype_append(VIEW3D_OT_toolshelf); WM_operatortype_append(VIEW3D_OT_snap_selected_to_grid); WM_operatortype_append(VIEW3D_OT_snap_selected_to_cursor); WM_operatortype_append(VIEW3D_OT_snap_selected_to_center); WM_operatortype_append(VIEW3D_OT_snap_cursor_to_grid); + WM_operatortype_append(VIEW3D_OT_snap_cursor_to_center); WM_operatortype_append(VIEW3D_OT_snap_cursor_to_selected); WM_operatortype_append(VIEW3D_OT_snap_cursor_to_active); @@ -110,7 +114,7 @@ void view3d_keymap(wmKeyConfig *keyconf) 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); + WM_keymap_add_item(keymap, "VIEW3D_OT_toolshelf", TKEY, KM_PRESS, 0, 0); /* only for region 3D window */ keymap= WM_keymap_find(keyconf, "3D View", SPACE_VIEW3D, 0); @@ -126,15 +130,27 @@ void view3d_keymap(wmKeyConfig *keyconf) WM_keymap_verify_item(keymap, "VIEW3D_OT_rotate", MIDDLEMOUSE, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "VIEW3D_OT_move", MIDDLEMOUSE, KM_PRESS, KM_SHIFT, 0); WM_keymap_verify_item(keymap, "VIEW3D_OT_zoom", MIDDLEMOUSE, KM_PRESS, KM_CTRL, 0); - WM_keymap_verify_item(keymap, "VIEW3D_OT_view_center", PADPERIOD, KM_PRESS, 0, 0); + WM_keymap_verify_item(keymap, "VIEW3D_OT_view_selected", PADPERIOD, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "VIEW3D_OT_view_center_cursor", PADPERIOD, KM_PRESS, KM_CTRL, 0); WM_keymap_verify_item(keymap, "VIEW3D_OT_fly", FKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_verify_item(keymap, "VIEW3D_OT_smoothview", TIMER1, KM_ANY, KM_ANY, 0); + WM_keymap_add_item(keymap, "VIEW3D_OT_rotate", MOUSEPAN, 0, KM_ALT, 0); + WM_keymap_add_item(keymap, "VIEW3D_OT_rotate", MOUSEROTATE, 0, 0, 0); + WM_keymap_add_item(keymap, "VIEW3D_OT_move", MOUSEPAN, 0, 0, 0); + WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", MOUSEZOOM, 0, 0, 0); + + /*numpad +/-*/ RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", PADPLUSKEY, KM_PRESS, 0, 0)->ptr, "delta", 1); RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", PADMINUS, KM_PRESS, 0, 0)->ptr, "delta", -1); + + /*ctrl +/-*/ + RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", EQUALKEY, KM_PRESS, KM_CTRL, 0)->ptr, "delta", 1); + RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", MINUSKEY, KM_PRESS, KM_CTRL, 0)->ptr, "delta", -1); + + /*wheel mouse forward/back*/ RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", WHEELINMOUSE, KM_PRESS, 0, 0)->ptr, "delta", 1); RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", WHEELOUTMOUSE, KM_PRESS, 0, 0)->ptr, "delta", -1); @@ -251,7 +267,7 @@ void view3d_keymap(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "VIEW3D_OT_object_as_camera", PAD0, KM_PRESS, KM_CTRL, 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); RNA_string_set(kmi->ptr, "path", "space_data.pivot_point"); diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c index 0ed7f4c0d0a..6cad57f03d5 100644 --- a/source/blender/editors/space_view3d/view3d_select.c +++ b/source/blender/editors/space_view3d/view3d_select.c @@ -124,12 +124,19 @@ void view3d_get_view_aligned_coordinate(ViewContext *vc, float *fp, short mval[2 } } +/* + * ob == NULL if you want global matrices + * */ 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, rv3d->viewmat); + if (ob) { + mul_m4_m4m4(cpy, ob->obmat, rv3d->viewmat); + } else { + copy_m4_m4(cpy, rv3d->viewmat); + } for(i = 0; i < 4; ++i) { for(j = 0; j < 4; ++j) { @@ -338,9 +345,8 @@ int lasso_inside_edge(short mcords[][2], short moves, int x0, int y0, int x1, in /* warning; lasso select with backbuffer-check draws in backbuf with persp(PERSP_WIN) and returns with persp(PERSP_VIEW). After lasso select backbuf is not OK */ -static void do_lasso_select_pose(ViewContext *vc, short mcords[][2], short moves, short select) +static void do_lasso_select_pose(ViewContext *vc, Object *ob, short mcords[][2], short moves, short select) { - Object *ob= vc->obact; bPoseChannel *pchan; float vec[3]; short sco1[2], sco2[2]; @@ -375,7 +381,7 @@ static void do_lasso_select_objects(ViewContext *vc, short mcords[][2], short mo Base *base; for(base= vc->scene->base.first; base; base= base->next) { - if(base->lay & vc->v3d->lay) { + if(BASE_SELECTABLE(vc->v3d, base)) { /* use this to avoid un-needed lasso lookups */ project_short(vc->ar, base->object->obmat[3], &base->sx); if(lasso_inside(mcords, moves, base->sx, base->sy)) { @@ -384,7 +390,7 @@ static void do_lasso_select_objects(ViewContext *vc, short mcords[][2], short mo base->object->flag= base->flag; } if(base->object->mode & OB_MODE_POSE) { - do_lasso_select_pose(vc, mcords, moves, select); + do_lasso_select_pose(vc, base->object, mcords, moves, select); } } } @@ -463,7 +469,8 @@ static void do_lasso_select_mesh(ViewContext *vc, short mcords[][2], short moves /* 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 */ + // XXX not needed anymore, check here if selection is broken + //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(ts->selectmode & SCE_SELECT_VERTEX) { @@ -999,6 +1006,123 @@ static short mixed_bones_object_selectbuffer(ViewContext *vc, unsigned int *buff return 0; } +/* returns basact */ +static Base *mouse_select_eval_buffer(ViewContext *vc, unsigned int *buffer, int hits, short *mval, Base *startbase, int has_bones) +{ + Scene *scene= vc->scene; + View3D *v3d= vc->v3d; + Base *base, *basact= NULL; + static short lastmval[2]={-100, -100}; + int a, donearest= 0; + + /* define if we use solid nearest select or not */ + if(v3d->drawtype>OB_WIRE) { + donearest= 1; + if( ABS(mval[0]-lastmval[0])<3 && ABS(mval[1]-lastmval[1])<3) { + if(!has_bones) /* hrms, if theres bones we always do nearest */ + donearest= 0; + } + } + lastmval[0]= mval[0]; lastmval[1]= mval[1]; + + if(donearest) { + unsigned int min= 0xFFFFFFFF; + int selcol= 0, notcol=0; + + + if(has_bones) { + /* we skip non-bone hits */ + for(a=0; a<hits; a++) { + if( min > buffer[4*a+1] && (buffer[4*a+3] & 0xFFFF0000) ) { + min= buffer[4*a+1]; + selcol= buffer[4*a+3] & 0xFFFF; + } + } + } + else { + /* only exclude active object when it is selected... */ + if(BASACT && (BASACT->flag & SELECT) && hits>1) notcol= BASACT->selcol; + + for(a=0; a<hits; a++) { + if( min > buffer[4*a+1] && notcol!=(buffer[4*a+3] & 0xFFFF)) { + min= buffer[4*a+1]; + selcol= buffer[4*a+3] & 0xFFFF; + } + } + } + + base= FIRSTBASE; + while(base) { + if(base->lay & v3d->lay) { + if(base->selcol==selcol) break; + } + base= base->next; + } + if(base) basact= base; + } + else { + + base= startbase; + while(base) { + /* skip objects with select restriction, to prevent prematurely ending this loop + * with an un-selectable choice */ + if (base->object->restrictflag & OB_RESTRICT_SELECT) { + base=base->next; + if(base==NULL) base= FIRSTBASE; + if(base==startbase) break; + } + + if(base->lay & v3d->lay) { + for(a=0; a<hits; a++) { + if(has_bones) { + /* skip non-bone objects */ + if((buffer[4*a+3] & 0xFFFF0000)) { + if(base->selcol== (buffer[(4*a)+3] & 0xFFFF)) + basact= base; + } + } + else { + if(base->selcol== (buffer[(4*a)+3] & 0xFFFF)) + basact= base; + } + } + } + + if(basact) break; + + base= base->next; + if(base==NULL) base= FIRSTBASE; + if(base==startbase) break; + } + } + + return basact; +} + +/* mval comes from event->mval, only use within region handlers */ +Base *ED_view3d_give_base_under_cursor(bContext *C, short *mval) +{ + ViewContext vc; + Base *basact= NULL; + unsigned int buffer[4*MAXPICKBUF]; + int hits; + + /* setup view context for argument to callbacks */ + view3d_operator_needs_opengl(C); + view3d_set_viewcontext(C, &vc); + + hits= mixed_bones_object_selectbuffer(&vc, buffer, mval); + + if(hits>0) { + int a, has_bones= 0; + + for(a=0; a<hits; a++) if(buffer[4*a+3] & 0xFFFF0000) has_bones= 1; + + basact= mouse_select_eval_buffer(&vc, buffer, hits, mval, vc.scene->base.first, has_bones); + } + + return basact; +} /* mval is region coords */ static int mouse_select(bContext *C, short *mval, short extend, short obcenter, short enumerate) @@ -1063,89 +1187,7 @@ static int mouse_select(bContext *C, short *mval, short extend, short obcenter, if(has_bones==0 && enumerate) { basact= mouse_select_menu(C, &vc, buffer, hits, mval, extend); } else { - static short lastmval[2]={-100, -100}; - int donearest= 0; - - /* define if we use solid nearest select or not */ - if(v3d->drawtype>OB_WIRE) { - donearest= 1; - if( ABS(mval[0]-lastmval[0])<3 && ABS(mval[1]-lastmval[1])<3) { - if(!has_bones) /* hrms, if theres bones we always do nearest */ - donearest= 0; - } - } - lastmval[0]= mval[0]; lastmval[1]= mval[1]; - - if(donearest) { - unsigned int min= 0xFFFFFFFF; - int selcol= 0, notcol=0; - - - if(has_bones) { - /* we skip non-bone hits */ - for(a=0; a<hits; a++) { - if( min > buffer[4*a+1] && (buffer[4*a+3] & 0xFFFF0000) ) { - min= buffer[4*a+1]; - selcol= buffer[4*a+3] & 0xFFFF; - } - } - } - else { - /* only exclude active object when it is selected... */ - if(BASACT && (BASACT->flag & SELECT) && hits>1) notcol= BASACT->selcol; - - for(a=0; a<hits; a++) { - if( min > buffer[4*a+1] && notcol!=(buffer[4*a+3] & 0xFFFF)) { - min= buffer[4*a+1]; - selcol= buffer[4*a+3] & 0xFFFF; - } - } - } - - base= FIRSTBASE; - while(base) { - if(base->lay & v3d->lay) { - if(base->selcol==selcol) break; - } - base= base->next; - } - if(base) basact= base; - } - else { - - base= startbase; - while(base) { - /* skip objects with select restriction, to prevent prematurely ending this loop - * with an un-selectable choice */ - if (base->object->restrictflag & OB_RESTRICT_SELECT) { - base=base->next; - if(base==NULL) base= FIRSTBASE; - if(base==startbase) break; - } - - if(base->lay & v3d->lay) { - for(a=0; a<hits; a++) { - if(has_bones) { - /* skip non-bone objects */ - if((buffer[4*a+3] & 0xFFFF0000)) { - if(base->selcol== (buffer[(4*a)+3] & 0xFFFF)) - basact= base; - } - } - else { - if(base->selcol== (buffer[(4*a)+3] & 0xFFFF)) - basact= base; - } - } - } - - if(basact) break; - - base= base->next; - if(base==NULL) base= FIRSTBASE; - if(base==startbase) break; - } - } + basact= mouse_select_eval_buffer(&vc, buffer, hits, mval, startbase, has_bones); } if(has_bones && basact) { @@ -1354,7 +1396,10 @@ static void do_mesh_box_select(ViewContext *vc, rcti *rect, int select, int exte EM_deselect_all(vc->em); } - ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */ + /* XXX Don't think we need this, it break selection of transformed objects. + * Also, it's not done by Circle select and that works fine + */ + //ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */ bbsel= EM_init_backbuf_border(vc, rect->xmin, rect->ymin, rect->xmax, rect->ymax); if(ts->selectmode & SCE_SELECT_VERTEX) { @@ -1416,7 +1461,7 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op) 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, extend); return OPERATOR_FINISHED; diff --git a/source/blender/editors/space_view3d/view3d_snap.c b/source/blender/editors/space_view3d/view3d_snap.c index b56a853d5b7..6d2638154d2 100644 --- a/source/blender/editors/space_view3d/view3d_snap.c +++ b/source/blender/editors/space_view3d/view3d_snap.c @@ -707,7 +707,7 @@ static int snap_curs_to_grid(bContext *C, wmOperator *op) curs[1]= gridf*floor(.5+curs[1]/gridf); curs[2]= gridf*floor(.5+curs[2]/gridf); - WM_event_add_notifier(C, NC_SCENE|ND_TRANSFORM, scene); // hrm + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, v3d); // hrm return OPERATOR_FINISHED; } @@ -814,7 +814,7 @@ static int snap_curs_to_sel(bContext *C, wmOperator *op) } } } - WM_event_add_notifier(C, NC_SCENE|ND_TRANSFORM, scene); // hrm + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, v3d); return OPERATOR_FINISHED; } @@ -866,7 +866,7 @@ static int snap_curs_to_active(bContext *C, wmOperator *op) } } - WM_event_add_notifier(C, NC_SCENE|ND_TRANSFORM, scene); + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, v3d); return OPERATOR_FINISHED; } @@ -1084,6 +1084,43 @@ void VIEW3D_OT_snap_selected_to_center(wmOperatorType *ot) } +/* **************************************************** */ +/*New Code - Snap Cursor to Center -*/ +static int snap_curs_to_center(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + View3D *v3d= CTX_wm_view3d(C); + float *curs; + curs= give_cursor(scene, v3d); + + curs[0]= 0.0; + curs[1]= 0.0; + curs[2]= 0.0; + + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, v3d); + + return OPERATOR_FINISHED; +} + +void VIEW3D_OT_snap_cursor_to_center(wmOperatorType *ot) +{ + + /* identifiers */ + ot->name= "Snap Cursor to Center"; + ot->description= "Snap cursor to the Center"; + ot->idname= "VIEW3D_OT_snap_cursor_to_center"; + + /* api callbacks */ + ot->exec= snap_curs_to_center; + ot->poll= ED_operator_view3d_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + +/* **************************************************** */ + + int minmax_verts(Object *obedit, float *min, float *max) { TransVert *tv; diff --git a/source/blender/editors/space_view3d/view3d_toolbar.c b/source/blender/editors/space_view3d/view3d_toolbar.c index b05043cd76e..8d354c1b565 100644 --- a/source/blender/editors/space_view3d/view3d_toolbar.c +++ b/source/blender/editors/space_view3d/view3d_toolbar.c @@ -108,11 +108,13 @@ static void redo_cb(bContext *C, void *arg_op, void *arg2) if(lastop) { int retval; - printf("operator redo %s\n", lastop->type->name); + if (G.f & G_DEBUG) + printf("operator redo %s\n", lastop->type->name); ED_undo_pop_op(C, lastop); retval= WM_operator_repeat(C, lastop); if((retval & OPERATOR_FINISHED)==0) { - printf("operator redo failed %s\n", lastop->type->name); + if (G.f & G_DEBUG) + printf("operator redo failed %s\n", lastop->type->name); ED_undo_redo(C); } } @@ -159,6 +161,19 @@ static void view3d_panel_operator_redo_header(const bContext *C, Panel *pa) else BLI_strncpy(pa->drawname, "Operator", sizeof(pa->drawname)); } +static void view3d_panel_operator_redo_operator(const bContext *C, Panel *pa, wmOperator *op) +{ + if(op->type->flag & OPTYPE_MACRO) { + for(op= op->macro.first; op; op= op->next) { + uiItemL(pa->layout, op->idname, 0); + view3d_panel_operator_redo_operator(C, pa, op); + } + } + else { + view3d_panel_operator_redo_buts(C, pa, op); + } +} + static void view3d_panel_operator_redo(const bContext *C, Panel *pa) { wmOperator *op= view3d_last_operator(C); @@ -173,13 +188,7 @@ static void view3d_panel_operator_redo(const bContext *C, Panel *pa) uiBlockSetFunc(block, redo_cb, op, NULL); - if(op->macro.first) { - for(op= op->macro.first; op; op= op->next) - view3d_panel_operator_redo_buts(C, pa, op); - } - else { - view3d_panel_operator_redo_buts(C, pa, op); - } + view3d_panel_operator_redo_operator(C, pa, op); } /* ******************* */ @@ -282,7 +291,7 @@ static void view3d_panel_tool_shelf(const bContext *C, Panel *pa) } -void view3d_toolbar_register(ARegionType *art) +void view3d_toolshelf_register(ARegionType *art) { PanelType *pt; @@ -305,9 +314,9 @@ void view3d_tool_props_register(ARegionType *art) BLI_addtail(&art->paneltypes, pt); } -/* ********** operator to open/close toolbar region */ +/* ********** operator to open/close toolshelf region */ -static int view3d_toolbar(bContext *C, wmOperator *op) +static int view3d_toolshelf(bContext *C, wmOperator *op) { ScrArea *sa= CTX_wm_area(C); ARegion *ar= view3d_has_tools_region(sa); @@ -318,13 +327,13 @@ static int view3d_toolbar(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void VIEW3D_OT_toolbar(wmOperatorType *ot) +void VIEW3D_OT_toolshelf(wmOperatorType *ot) { - ot->name= "Toolbar"; - ot->description= "Toggles toolbar display."; - ot->idname= "VIEW3D_OT_toolbar"; + ot->name= "Tool Shelf"; + ot->description= "Toggles tool shelf display."; + ot->idname= "VIEW3D_OT_toolshelf"; - ot->exec= view3d_toolbar; + ot->exec= view3d_toolshelf; ot->poll= ED_operator_view3d_active; /* flags */ diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index c7b62dd7ef4..a83d226ae79 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -423,7 +423,7 @@ static int view3d_setcameratoview_exec(bContext *C, wmOperator *op) setcameratoview3d(v3d, rv3d, v3d->camera); rv3d->persp = RV3D_CAMOB; - WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, CTX_data_scene(C)); + WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, v3d->camera); return OPERATOR_FINISHED; @@ -1199,6 +1199,7 @@ short view3d_opengl_select(ViewContext *vc, unsigned int *buffer, unsigned int b ARegion *ar= vc->ar; rctf rect; short code, hits; + char dt, dtx; G.f |= G_PICKSEL; @@ -1269,8 +1270,16 @@ short view3d_opengl_select(ViewContext *vc, unsigned int *buffer, unsigned int b tbase.object= dob->ob; copy_m4_m4(dob->ob->obmat, dob->mat); + /* extra service: draw the duplicator in drawtype of parent */ + /* MIN2 for the drawtype to allow bounding box objects in groups for lods */ + dt= tbase.object->dt; tbase.object->dt= MIN2(tbase.object->dt, base->object->dt); + dtx= tbase.object->dtx; tbase.object->dtx= base->object->dtx; + draw_object(scene, ar, v3d, &tbase, DRAW_PICKING|DRAW_CONSTCOLOR); + tbase.object->dt= dt; + tbase.object->dtx= dtx; + copy_m4_m4(dob->ob->obmat, dob->omat); } free_object_duplilist(lb); @@ -1656,11 +1665,6 @@ void game_set_commmandline_options(GameData *gm) if ( (syshandle = SYS_GetSystem()) ) { /* User defined settings */ - test= (U.gameflags & USER_DISABLE_SOUND); - /* if user already disabled audio at the command-line, don't re-enable it */ - if (test) - SYS_WriteCommandLineInt(syshandle, "noaudio", test); - test= (U.gameflags & USER_DISABLE_MIPMAP); GPU_set_mipmap(!test); SYS_WriteCommandLineInt(syshandle, "nomipmap", test); @@ -2486,14 +2490,7 @@ static int flyApply(FlyInfo *fly) if (rv3d->persp==RV3D_CAMOB) { rv3d->persp= RV3D_PERSP; /*set this so setviewmatrixview3d uses the ofs and quat instead of the camera */ setviewmatrixview3d(scene, v3d, rv3d); - setcameratoview3d(v3d, rv3d, v3d->camera); - - { //XXX - some reason setcameratoview3d doesnt copy, shouldnt not be needed! - VECCOPY(v3d->camera->loc, rv3d->ofs); - negate_v3(v3d->camera->loc); - } - rv3d->persp= RV3D_CAMOB; #if 0 //XXX2.5 /* record the motion */ diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index e8e7e323496..e8b1e6e0de1 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -217,7 +217,7 @@ void projectIntView(TransInfo *t, float *vec, int *adr) UI_view2d_to_region_no_clip(t->view, v[0], v[1], adr, adr+1); } - else if(ELEM(t->spacetype, SPACE_IPO, SPACE_NLA)) { + else if(ELEM3(t->spacetype, SPACE_IPO, SPACE_NLA, SPACE_ACTION)) { int out[2] = {0, 0}; UI_view2d_view_to_region((View2D *)t->view, vec[0], vec[1], out, out+1); @@ -470,6 +470,8 @@ static void view_editmove(unsigned short event) #define TFM_MODAL_CONS_OFF 15 #define TFM_MODAL_ADD_SNAP 16 #define TFM_MODAL_REMOVE_SNAP 17 +/* 18 and 19 used by numinput, defined in transform.h + * */ /* called in transform_ops.c, on each regeneration of keymaps */ wmKeyMap* transform_modal_keymap(wmKeyConfig *keyconf) @@ -492,6 +494,8 @@ wmKeyMap* transform_modal_keymap(wmKeyConfig *keyconf) {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", ""}, + {TFM_MODAL_INCREMENT_UP, "INCREMENT_UP", 0, "Numinput Increment Up", ""}, + {TFM_MODAL_INCREMENT_DOWN, "INCREMENT_DOWN", 0, "Numinput Increment Down", ""}, {0, NULL, 0, NULL, NULL}}; wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "Transform Modal Map"); @@ -519,6 +523,9 @@ wmKeyMap* transform_modal_keymap(wmKeyConfig *keyconf) 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); + WM_modalkeymap_add_item(keymap, UPARROWKEY, KM_PRESS, 0, 0, TFM_MODAL_INCREMENT_UP); + WM_modalkeymap_add_item(keymap, DOWNARROWKEY, KM_PRESS, 0, 0, TFM_MODAL_INCREMENT_DOWN); + return keymap; } @@ -702,6 +709,9 @@ int transformEvent(TransInfo *t, wmEvent *event) handled = 0; break; } + + // Modal numinput events + t->redraw |= handleNumInput(&(t->num), event, t->snap[1]); } /* else do non-mapped events */ else if (event->val==KM_PRESS) { @@ -954,7 +964,7 @@ int transformEvent(TransInfo *t, wmEvent *event) } // Numerical input events - t->redraw |= handleNumInput(&(t->num), event); + t->redraw |= handleNumInput(&(t->num), event, t->snap[1]); // NDof input events switch(handleNDofInput(&(t->ndof), event)) @@ -5069,37 +5079,37 @@ int SeqSlide(TransInfo *t, short mval[2]) static short getAnimEdit_SnapMode(TransInfo *t) { short autosnap= SACTSNAP_OFF; - - /* currently, some of these are only for the action editor */ + if (t->spacetype == SPACE_ACTION) { SpaceAction *saction= (SpaceAction *)t->sa->spacedata.first; - + if (saction) autosnap= saction->autosnap; } else if (t->spacetype == SPACE_IPO) { SpaceIpo *sipo= (SpaceIpo *)t->sa->spacedata.first; - + if (sipo) autosnap= sipo->autosnap; } else if (t->spacetype == SPACE_NLA) { SpaceNla *snla= (SpaceNla *)t->sa->spacedata.first; - + if (snla) autosnap= snla->autosnap; } else { - // TRANSFORM_FIX_ME This needs to use proper defines for t->modifiers -// // FIXME: this still toggles the modes... -// if (ctrl) -// autosnap= SACTSNAP_STEP; -// else if (shift) -// autosnap= SACTSNAP_FRAME; -// else if (alt) -// autosnap= SACTSNAP_MARKER; -// else + autosnap= SACTSNAP_OFF; + } + + /* toggle autosnap on/off + * - when toggling on, prefer nearest frame over 1.0 frame increments + */ + if (t->modifiers & MOD_SNAP_INVERT) { + if (autosnap) autosnap= SACTSNAP_OFF; + else + autosnap= SACTSNAP_FRAME; } return autosnap; @@ -5113,17 +5123,21 @@ static short getAnimEdit_DrawTime(TransInfo *t) { short drawtime; - /* currently, some of these are only for the action editor */ if (t->spacetype == SPACE_ACTION) { SpaceAction *saction= (SpaceAction *)t->sa->spacedata.first; - + drawtime = (saction->flag & SACTION_DRAWTIME)? 1 : 0; } else if (t->spacetype == SPACE_NLA) { SpaceNla *snla= (SpaceNla *)t->sa->spacedata.first; - + drawtime = (snla->flag & SNLA_DRAWTIME)? 1 : 0; } + else if (t->spacetype == SPACE_IPO) { + SpaceIpo *sipo= (SpaceIpo *)t->sa->spacedata.first; + + drawtime = (sipo->flag & SIPO_DRAWTIME)? 1 : 0; + } else { drawtime = 0; } @@ -5217,7 +5231,7 @@ static void headerTimeTranslate(TransInfo *t, char *str) const short doTime = getAnimEdit_DrawTime(t); const double secf= FPS; float val = t->values[0]; - + /* apply snapping + frame->seconds conversions */ if (autosnap == SACTSNAP_STEP) { if (doTime) @@ -5229,8 +5243,11 @@ static void headerTimeTranslate(TransInfo *t, char *str) if (doTime) val= val / secf; } - - sprintf(&tvec[0], "%.4f", val); + + if (autosnap == SACTSNAP_FRAME) + sprintf(&tvec[0], "%d.00 (%.4f)", (int)val, val); + else + sprintf(&tvec[0], "%.4f", val); } sprintf(str, "DeltaX: %s", &tvec[0]); @@ -5449,11 +5466,21 @@ int TimeSlide(TransInfo *t, short mval[2]) void initTimeScale(TransInfo *t) { + int center[2]; + t->mode = TFM_TIME_SCALE; t->transform = TimeScale; - initMouseInputMode(t, &t->mouse, INPUT_NONE); - t->helpline = HLP_SPRING; /* set manually because we don't use a predefined input */ + /* recalculate center2d to use CFRA and mouse Y, since that's + * what is used in time scale */ + t->center[0] = t->scene->r.cfra; + projectIntView(t, t->center, center); + center[1] = t->imval[1]; + + /* force a reinit with the center2d used here */ + initMouseInput(t, &t->mouse, center, t->imval); + + initMouseInputMode(t, &t->mouse, INPUT_SPRING_FLIP); t->flag |= T_NULL_ONE; t->num.flag |= NUM_NULL_ONE; @@ -5521,19 +5548,8 @@ static void applyTimeScale(TransInfo *t) { int TimeScale(TransInfo *t, short mval[2]) { - float cval, sval; - float deltax, startx; - float width= 0.0f; char str[200]; - - sval= t->imval[0]; - cval= mval[0]; - - /* calculate scaling factor */ - startx= sval-(width/2+(t->ar->winx)/2); - deltax= cval-(width/2+(t->ar->winx)/2); - t->values[0] = deltax / startx; - + /* handle numeric-input stuff */ t->vec[0] = t->values[0]; applyNumInput(&t->num, &t->vec[0]); diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index fd4f67f4f27..231a01b86d7 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -677,7 +677,10 @@ void initNumInput(NumInput *n); void outputNumInput(NumInput *n, char *str); short hasNumInput(NumInput *n); void applyNumInput(NumInput *n, float *vec); -char handleNumInput(NumInput *n, struct wmEvent *event); +char handleNumInput(NumInput *n, struct wmEvent *event, float increment); + +#define TFM_MODAL_INCREMENT_UP 18 +#define TFM_MODAL_INCREMENT_DOWN 19 /*********************** NDofInput ********************************/ diff --git a/source/blender/editors/transform/transform_constraints.c b/source/blender/editors/transform/transform_constraints.c index fd53f6fcd20..b67e2cb0df1 100644 --- a/source/blender/editors/transform/transform_constraints.c +++ b/source/blender/editors/transform/transform_constraints.c @@ -198,15 +198,21 @@ static void postConstraintChecks(TransInfo *t, float vec[3], float pvec[3]) { } static void axisProjection(TransInfo *t, float axis[3], float in[3], float out[3]) { - float norm[3], vec[3], factor; + float norm[3], vec[3], factor, angle; if(in[0]==0.0f && in[1]==0.0f && in[2]==0.0f) return; + angle = fabs(angle_v3v3(axis, t->viewinv[2])); + if (angle > M_PI / 2) { + angle = M_PI - angle; + } + angle = 180.0f * angle / M_PI; + /* For when view is parallel to constraint... will cause NaNs otherwise So we take vertical motion in 3D space and apply it to the constraint axis. Nice for camera grab + MMB */ - if(1.0f - fabs(dot_v3v3(axis, t->viewinv[2])) < 0.000001f) { + if(angle < 5.0f) { project_v3_v3v3(vec, in, t->viewinv[1]); factor = dot_v3v3(t->viewinv[1], vec) * 2.0f; /* since camera distance is quite relative, use quadratic relationship. holding shift can compensate */ diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 822c0e5a961..52e5a634011 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -332,7 +332,7 @@ static void createTransTexspace(bContext *C, TransInfo *t) /* ********************* edge (for crease) ***** */ static void createTransEdge(bContext *C, TransInfo *t) { -#if 0 // TRANSFORM_FIX_ME + EditMesh *em = ((Mesh *)t->obedit->data)->edit_mesh; TransData *td = NULL; EditEdge *eed; float mtx[3][3], smtx[3][3]; @@ -390,7 +390,6 @@ static void createTransEdge(bContext *C, TransInfo *t) { td++; } } -#endif } /* ********************* pose mode ************* */ @@ -715,7 +714,7 @@ int count_set_pose_transflags(int *out_mode, short around, Object *ob) for(pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) { bone = pchan->bone; if(bone->layer & arm->layer) { - if(bone->flag & BONE_SELECTED) + if((bone->flag & BONE_SELECTED) && !(ob->proxy && pchan->bone->layer & arm->layer_protected)) bone->flag |= BONE_TRANSFORM; else bone->flag &= ~BONE_TRANSFORM; @@ -2140,14 +2139,20 @@ static void createTransEditVerts(bContext *C, TransInfo *t) int count=0, countsel=0, a, totleft; int propmode = t->flag & T_PROP_EDIT; int mirror = 0; + short selectmode = ts->selectmode; if (t->flag & T_MIRROR) { mirror = 1; } + /* edge slide forces edge select */ + if (t->mode == TFM_EDGE_SLIDE) { + selectmode = SCE_SELECT_EDGE; + } + // transform now requires awareness for select mode, so we tag the f1 flags in verts - if(ts->selectmode & SCE_SELECT_VERTEX) { + if(selectmode & SCE_SELECT_VERTEX) { for(eve= em->verts.first; eve; eve= eve->next) { if(eve->h==0 && (eve->f & SELECT)) eve->f1= SELECT; @@ -2155,7 +2160,7 @@ static void createTransEditVerts(bContext *C, TransInfo *t) eve->f1= 0; } } - else if(ts->selectmode & SCE_SELECT_EDGE) { + else if(selectmode & SCE_SELECT_EDGE) { EditEdge *eed; for(eve= em->verts.first; eve; eve= eve->next) eve->f1= 0; for(eed= em->edges.first; eed; eed= eed->next) { @@ -2211,11 +2216,11 @@ static void createTransEditVerts(bContext *C, TransInfo *t) /* detect CrazySpace [tm] */ if(propmode==0) { - if(modifiers_getCageIndex(t->obedit, NULL, 1)>=0) { + if(modifiers_getCageIndex(t->scene, t->obedit, NULL, 1)>=0) { 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= editmesh_get_first_deform_matrices(t->obedit, em, &defmats, &defcos); + totleft= editmesh_get_first_deform_matrices(t->scene, t->obedit, em, &defmats, &defcos); /* if we still have more modifiers, also do crazyspace correction with quats, relative to the coordinates after @@ -3490,6 +3495,8 @@ static void createTransGraphEditData(bContext *C, TransInfo *t) if (fcu->bezt == NULL) continue; + ANIM_unit_mapping_apply_fcurve(ac.scene, ale->id, ale->key_data, ANIM_UNITCONV_ONLYSEL|ANIM_UNITCONV_SELVERTS); + /* only include BezTriples whose 'keyframe' occurs on the same side of the current frame as mouse (if applicable) */ for (i=0, bezt= fcu->bezt; i < fcu->totvert; i++, bezt++) { if (FrameOnMouseSide(side, bezt->vec[1][0], cfra)) { @@ -4225,7 +4232,6 @@ static void ObjectToTransData(bContext *C, TransInfo *t, TransData *td, Object * { Scene *scene = CTX_data_scene(C); Object *track; - ListBase fakecons = {NULL, NULL}; float obmtx[3][3]; short constinv; short skip_invert = 0; @@ -4251,18 +4257,13 @@ static void ObjectToTransData(bContext *C, TransInfo *t, TransData *td, Object * track= ob->track; ob->track= NULL; - if (constinv == 0) { - fakecons.first = ob->constraints.first; - fakecons.last = ob->constraints.last; - ob->constraints.first = ob->constraints.last = NULL; - } + if (constinv == 0) + ob->transflag |= OB_NO_CONSTRAINTS; /* where_is_object_time checks this */ where_is_object(t->scene, ob); - if (constinv == 0) { - ob->constraints.first = fakecons.first; - ob->constraints.last = fakecons.last; - } + if (constinv == 0) + ob->transflag &= ~OB_NO_CONSTRAINTS; ob->track= track; } @@ -4601,7 +4602,6 @@ void autokeyframe_pose_cb_func(bContext *C, Scene *scene, View3D *v3d, Object *o { ID *id= &ob->id; AnimData *adt= ob->adt; - bArmature *arm= ob->data; bAction *act= (adt) ? adt->action : NULL; bPose *pose= ob->pose; bPoseChannel *pchan; @@ -4709,8 +4709,8 @@ void autokeyframe_pose_cb_func(bContext *C, Scene *scene, View3D *v3d, Object *o /* 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 + if (C && (ob->pose->avs.path_type == MOTIONPATH_TYPE_ACFRA)) { + //ED_pose_clear_paths(C, ob); // XXX for now, don't need to clear ED_pose_recalculate_paths(C, scene, ob); } } @@ -4964,7 +4964,7 @@ void special_aftertrans_update(bContext *C, TransInfo *t) ; } else { /* Objects */ - int i; + int i, recalcObPaths=0; for (i = 0; i < t->total; i++) { TransData *td = t->data + i; @@ -4997,8 +4997,20 @@ void special_aftertrans_update(bContext *C, TransInfo *t) DAG_id_flush_update(&ob->id, OB_RECALC_OB); /* Set autokey if necessary */ - if (!cancelled) + if (!cancelled) { autokeyframe_ob_cb_func(C, t->scene, (View3D *)t->view, ob, t->mode); + + if (ob->avs.path_type == MOTIONPATH_TYPE_ACFRA) + recalcObPaths= 1; + } + } + + /* recalculate motion paths for objects (if necessary) + * NOTE: only do this when there is context info + */ + if (C && recalcObPaths) { + //ED_objects_clear_paths(C); // XXX for now, don't need to clear + ED_objects_recalculate_paths(C, t->scene); } } @@ -5148,11 +5160,11 @@ void createTransData(bContext *C, TransInfo *t) Scene *scene = CTX_data_scene(C); Object *ob = OBACT; - if (t->options == CTX_TEXTURE) { + if (t->options & CTX_TEXTURE) { t->flag |= T_TEXTURE; createTransTexspace(C, t); } - else if (t->options == CTX_EDGE) { + else if (t->options & CTX_EDGE) { t->ext = NULL; t->flag |= T_EDIT; createTransEdge(C, t); diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index 061b2adbd79..892ee467a69 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -335,6 +335,7 @@ void recalcData(TransInfo *t) } else if (t->spacetype == SPACE_ACTION) { Scene *scene= t->scene; + SpaceAction *saction= (SpaceAction *)t->sa->spacedata.first; bAnimContext ac; ListBase anim_data = {NULL, NULL}; @@ -358,10 +359,14 @@ void recalcData(TransInfo *t) filter= (ANIMFILTER_VISIBLE | ANIMFILTER_ANIMDATA); ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); - /* 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 */ - ANIM_list_elem_update(t->scene, ale); + /* just tag these animdata-blocks to recalc, assuming that some data there changed + * BUT only do this if realtime updates are enabled + */ + if ((saction->flag & SACTION_NOREALTIMEUPDATES) == 0) { + for (ale= anim_data.first; ale; ale= ale->next) { + /* set refresh tags for objects using this animation */ + ANIM_list_elem_update(t->scene, ale); + } } /* now free temp channels */ @@ -369,6 +374,7 @@ void recalcData(TransInfo *t) } else if (t->spacetype == SPACE_IPO) { Scene *scene; + SpaceIpo *sipo= (SpaceIpo *)t->sa->spacedata.first; ListBase anim_data = {NULL, NULL}; bAnimContext ac; @@ -402,14 +408,22 @@ void recalcData(TransInfo *t) for (ale= anim_data.first; ale; ale= ale->next) { FCurve *fcu= (FCurve *)ale->key_data; + // fixme: only do this for selected verts... + ANIM_unit_mapping_apply_fcurve(ac.scene, ale->id, ale->key_data, ANIM_UNITCONV_ONLYSEL|ANIM_UNITCONV_SELVERTS|ANIM_UNITCONV_RESTORE); + + /* watch it: if the time is wrong: do not correct handles yet */ if (test_time_fcurve(fcu)) dosort++; else calchandles_fcurve(fcu); - - /* set refresh tags for objects using this animation */ - ANIM_list_elem_update(t->scene, ale); + + /* set refresh tags for objects using this animation, + * BUT only if realtime updates are enabled + */ + if ((sipo->flag & SIPO_NOREALTIMEUPDATES) == 0) + ANIM_list_elem_update(t->scene, ale); + } /* do resort and other updates? */ @@ -439,8 +453,11 @@ void recalcData(TransInfo *t) if (tdn->handle == 0) continue; - /* set refresh tags for objects using this animation */ - ANIM_id_update(t->scene, tdn->id); + /* set refresh tags for objects using this animation, + * BUT only if realtime updates are enabled + */ + if ((snla->flag & SNLA_NOREALTIMEUPDATES) == 0) + ANIM_id_update(t->scene, tdn->id); /* if cancelling transform, just write the values without validating, then move on */ if (t->state == TRANS_CANCEL) { @@ -762,16 +779,6 @@ void recalcData(TransInfo *t) else { int i; - for(base= FIRSTBASE; base; base= base->next) { - Object *ob= base->object; - - /* this flag is from depgraph, was stored in initialize phase, handled in drawview.c */ - if(base->flag & BA_HAS_RECALC_OB) - ob->recalc |= OB_RECALC_OB; - if(base->flag & BA_HAS_RECALC_DATA) - ob->recalc |= OB_RECALC_DATA; - } - for (i = 0; i < t->total; i++) { TransData *td = t->data + i; Object *ob = td->ob; @@ -792,11 +799,10 @@ void recalcData(TransInfo *t) autokeyframe_ob_cb_func(NULL, t->scene, (View3D *)t->view, ob, t->mode); } - /* proxy exception */ - if(ob->proxy) - ob->proxy->recalc |= ob->recalc; - if(ob->proxy_group) - group_tag_recalc(ob->proxy_group->dup_group); + /* sets recalc flags fully, instead of flushing existing ones + * otherwise proxies don't function correctly + */ + DAG_id_flush_update(&ob->id, OB_RECALC); } } @@ -919,6 +925,11 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) t->flag |= T_MODAL; } + /* Crease needs edge flag */ + if (t->mode == TFM_CREASE) { + t->options |= CTX_EDGE; + } + t->spacetype = sa->spacetype; if(t->spacetype == SPACE_VIEW3D) { diff --git a/source/blender/editors/transform/transform_numinput.c b/source/blender/editors/transform/transform_numinput.c index f5f1d5fac9e..239a52e6ce3 100644 --- a/source/blender/editors/transform/transform_numinput.c +++ b/source/blender/editors/transform/transform_numinput.c @@ -22,7 +22,7 @@ * * The Original Code is: all of this file. * - * Contributor(s): none yet. + * Contributor(s): Jonathan Smith * * ***** END GPL LICENSE BLOCK ***** */ @@ -159,120 +159,139 @@ void applyNumInput(NumInput *n, float *vec) } } -char handleNumInput(NumInput *n, wmEvent *event) +char handleNumInput(NumInput *n, wmEvent *event, float increment) { float Val = 0; short idx = n->idx, idx_max = n->idx_max; - switch (event->type) { - case BACKSPACEKEY: - if (n->ctrl[idx] == 0) { - n->val[0] = - n->val[1] = - n->val[2] = 0.0f; - n->ctrl[0] = - n->ctrl[1] = - n->ctrl[2] = 0; - n->inv[0] = - n->inv[1] = - n->inv[2] = 0; - } - else { - n->val[idx] = 0.0f; - n->ctrl[idx] = 0; - n->inv[idx] = 0; - } - break; - case PERIODKEY: - case PADPERIOD: - if (n->flag & NUM_NO_FRACTION) + if (event->type == EVT_MODAL_MAP) { + switch (event->val) { + case TFM_MODAL_INCREMENT_UP: + if (!n->ctrl[idx]) + n->ctrl[idx] = 1; + + n->val[idx] += increment; break; + case TFM_MODAL_INCREMENT_DOWN: + if (!n->ctrl[idx]) + n->ctrl[idx] = 1; - switch (n->ctrl[idx]) - { - case 0: - case 1: - n->ctrl[idx] = 10; + n->val[idx] -= increment; break; - case -1: - n->ctrl[idx] = -10; + default: + return 0; } - break; - case PADMINUS: - if(event->alt) + } else { + switch (event->type) { + case BACKSPACEKEY: + if (n->ctrl[idx] == 0) { + n->val[0] = + n->val[1] = + n->val[2] = 0.0f; + n->ctrl[0] = + n->ctrl[1] = + n->ctrl[2] = 0; + n->inv[0] = + n->inv[1] = + n->inv[2] = 0; + } + else { + n->val[idx] = 0.0f; + n->ctrl[idx] = 0; + n->inv[idx] = 0; + } break; - case MINUSKEY: - if (n->flag & NUM_NO_NEGATIVE) + case PERIODKEY: + case PADPERIOD: + if (n->flag & NUM_NO_FRACTION) + break; + + switch (n->ctrl[idx]) + { + case 0: + case 1: + n->ctrl[idx] = 10; + break; + case -1: + n->ctrl[idx] = -10; + } break; + case PADMINUS: + if(event->alt) + break; + case MINUSKEY: + if (n->flag & NUM_NO_NEGATIVE) + break; - if (n->ctrl[idx]) { - n->ctrl[idx] *= -1; - n->val[idx] *= -1; - } - else - n->ctrl[idx] = -1; - break; - case PADSLASHKEY: - case SLASHKEY: - n->inv[idx] = !n->inv[idx]; - break; - case TABKEY: - idx++; - if (idx > idx_max) - idx = 0; - n->idx = idx; - break; - case PAD9: - case NINEKEY: - Val += 1.0f; - case PAD8: - case EIGHTKEY: - Val += 1.0f; - case PAD7: - case SEVENKEY: - Val += 1.0f; - case PAD6: - case SIXKEY: - Val += 1.0f; - case PAD5: - case FIVEKEY: - Val += 1.0f; - case PAD4: - case FOURKEY: - Val += 1.0f; - case PAD3: - case THREEKEY: - Val += 1.0f; - case PAD2: - case TWOKEY: - Val += 1.0f; - case PAD1: - case ONEKEY: - Val += 1.0f; - case PAD0: - case ZEROKEY: - if (!n->ctrl[idx]) - n->ctrl[idx] = 1; + if (n->ctrl[idx]) { + n->ctrl[idx] *= -1; + n->val[idx] *= -1; + } + else + n->ctrl[idx] = -1; + break; + case PADSLASHKEY: + case SLASHKEY: + n->inv[idx] = !n->inv[idx]; + break; + case TABKEY: + idx++; + if (idx > idx_max) + idx = 0; + n->idx = idx; + break; + case PAD9: + case NINEKEY: + Val += 1.0f; + case PAD8: + case EIGHTKEY: + Val += 1.0f; + case PAD7: + case SEVENKEY: + Val += 1.0f; + case PAD6: + case SIXKEY: + Val += 1.0f; + case PAD5: + case FIVEKEY: + Val += 1.0f; + case PAD4: + case FOURKEY: + Val += 1.0f; + case PAD3: + case THREEKEY: + Val += 1.0f; + case PAD2: + case TWOKEY: + Val += 1.0f; + case PAD1: + case ONEKEY: + Val += 1.0f; + case PAD0: + case ZEROKEY: + if (!n->ctrl[idx]) + n->ctrl[idx] = 1; - if (fabs(n->val[idx]) > 9999999.0f); - else if (n->ctrl[idx] == 1) { - n->val[idx] *= 10; - n->val[idx] += Val; - } - else if (n->ctrl[idx] == -1) { - n->val[idx] *= 10; - n->val[idx] -= Val; - } - else { - /* float resolution breaks when over six digits after comma */ - if( ABS(n->ctrl[idx]) < 10000000) { - n->val[idx] += Val / (float)n->ctrl[idx]; - n->ctrl[idx] *= 10; + if (fabs(n->val[idx]) > 9999999.0f); + else if (n->ctrl[idx] == 1) { + n->val[idx] *= 10; + n->val[idx] += Val; } + else if (n->ctrl[idx] == -1) { + n->val[idx] *= 10; + n->val[idx] -= Val; + } + else { + /* float resolution breaks when over six digits after comma */ + if( ABS(n->ctrl[idx]) < 10000000) { + n->val[idx] += Val / (float)n->ctrl[idx]; + n->ctrl[idx] *= 10; + } + } + break; + default: + return 0; } - break; - default: - return 0; } /* REDRAW SINCE NUMBERS HAVE CHANGED */ diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c index 1ef0bdb0e05..14f0e860576 100644 --- a/source/blender/editors/transform/transform_ops.c +++ b/source/blender/editors/transform/transform_ops.c @@ -67,6 +67,7 @@ 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_EDGE_CREASE[] = "TRANSFORM_OT_edge_crease"; char OP_SEQ_SLIDE[] = "TRANSFORM_OT_seq_slide"; void TRANSFORM_OT_translate(struct wmOperatorType *ot); @@ -80,6 +81,7 @@ 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_edge_crease(struct wmOperatorType *ot); void TRANSFORM_OT_seq_slide(struct wmOperatorType *ot); TransformModeItem transform_modes[] = @@ -95,6 +97,7 @@ TransformModeItem transform_modes[] = {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_EDGE_CREASE, TFM_CREASE, TRANSFORM_OT_edge_crease}, {OP_SEQ_SLIDE, TFM_SEQ_SLIDE, TRANSFORM_OT_seq_slide}, {NULL, 0} }; @@ -105,7 +108,7 @@ static int snap_type_exec(bContext *C, wmOperator *op) ts->snap_mode = RNA_enum_get(op->ptr,"type"); - WM_event_add_notifier(C, NC_SCENE|ND_MODE, NULL); /* header redraw */ + WM_event_add_notifier(C, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */ return OPERATOR_FINISHED; } @@ -127,7 +130,7 @@ void TRANSFORM_OT_snap_type(wmOperatorType *ot) ot->flag= OPTYPE_UNDO; /* props */ - RNA_def_enum(ot->srna, "type", snap_element_items, 0, "Type", "Set the snap element type"); + ot->prop= RNA_def_enum(ot->srna, "type", snap_element_items, 0, "Type", "Set the snap element type"); } @@ -184,6 +187,7 @@ static int delete_orientation_exec(bContext *C, wmOperator *op) BIF_removeTransformOrientationIndex(C, selected_index); WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, CTX_wm_view3d(C)); + WM_event_add_notifier(C, NC_SCENE|NA_EDITED, CTX_data_scene(C)); return OPERATOR_FINISHED; } @@ -234,6 +238,7 @@ static int create_orientation_exec(bContext *C, wmOperator *op) BIF_createTransformOrientation(C, op->reports, name, use, overwrite); WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, CTX_wm_view3d(C)); + WM_event_add_notifier(C, NC_SCENE|NA_EDITED, CTX_data_scene(C)); return OPERATOR_FINISHED; } @@ -697,6 +702,26 @@ void TRANSFORM_OT_edge_slide(struct wmOperatorType *ot) Properties_Snapping(ot, 0, 0); } +void TRANSFORM_OT_edge_crease(struct wmOperatorType *ot) +{ + /* identifiers */ + ot->name = "Edge Crease"; + ot->description= "Change the crease of edges."; + ot->idname = OP_EDGE_CREASE; + 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_editmesh; + + RNA_def_float_factor(ot->srna, "value", 0, -1.0f, 1.0f, "Factor", "", -1.0f, 1.0f); + + Properties_Snapping(ot, 0, 0); +} + void TRANSFORM_OT_seq_slide(struct wmOperatorType *ot) { /* identifiers */ @@ -840,7 +865,7 @@ void transform_keymap_for_space(wmKeyConfig *keyconf, wmKeyMap *keymap, int spac 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, "TRANSFORM_OT_snap_type", TABKEY, KM_PRESS, KM_SHIFT|KM_CLICK, 0); + km = WM_keymap_add_item(keymap, "TRANSFORM_OT_snap_type", TABKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0); break; case SPACE_ACTION: diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index b4894ecdcaa..bae3c790684 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -1578,9 +1578,10 @@ int snapObjects(Scene *scene, View3D *v3d, ARegion *ar, Object *obedit, float mv * * To solve that problem, we do it first as an exception. * */ - if(BASACT->object && BASACT->object->mode & OB_MODE_PARTICLE_EDIT) + base= BASACT; + if(base && base->object && base->object->mode & OB_MODE_PARTICLE_EDIT) { - Object *ob = BASACT->object; + Object *ob = base->object; retval |= snapObject(scene, ar, ob, 0, ob->obmat, ray_start, ray_normal, mval, loc, no, dist, &depth); } diff --git a/source/blender/editors/util/editmode_undo.c b/source/blender/editors/util/editmode_undo.c index 5fb93b0f8ec..a21ff088f2e 100644 --- a/source/blender/editors/util/editmode_undo.c +++ b/source/blender/editors/util/editmode_undo.c @@ -203,7 +203,6 @@ static void undo_clean_stack(bContext *C) { UndoElem *uel, *next; Object *obedit= CTX_data_edit_object(C); - int mixed= 0; /* global undo changes pointers, so we also allow identical names */ /* side effect: when deleting/renaming object and start editing new one with same name */ @@ -226,7 +225,9 @@ static void undo_clean_stack(bContext *C) if(isvalid) uel->ob= obedit; else { - mixed= 1; + if(uel == curundo) + curundo= NULL; + uel->freedata(uel->undodata); BLI_freelinkN(&undobase, uel); } @@ -234,7 +235,7 @@ static void undo_clean_stack(bContext *C) uel= next; } - if(mixed) curundo= undobase.last; + if(curundo == NULL) curundo= undobase.last; } /* 1= an undo, -1 is a redo. we have to make sure 'curundo' remains at current situation */ diff --git a/source/blender/gpu/intern/gpu_buffers.c b/source/blender/gpu/intern/gpu_buffers.c index 33aa4168ff8..6590d838b90 100644 --- a/source/blender/gpu/intern/gpu_buffers.c +++ b/source/blender/gpu/intern/gpu_buffers.c @@ -772,6 +772,7 @@ GPUBuffer *GPU_buffer_setup( DerivedMesh *dm, GPUDrawObject *object, int size, G DEBUG_VBO( "Failed to map buffer to client address space\n" ); GPU_buffer_free( buffer, globalPool ); GPU_buffer_pool_delete_last( globalPool ); + buffer= NULL; if( globalPool->size > 0 ) { GPU_buffer_pool_delete_last( globalPool ); buffer = GPU_buffer_alloc( size, globalPool ); diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c index 1353e151792..74b9f362939 100644 --- a/source/blender/gpu/intern/gpu_draw.c +++ b/source/blender/gpu/intern/gpu_draw.c @@ -1313,6 +1313,8 @@ void GPU_state_init(void) glFrontFace(GL_CCW); glCullFace(GL_BACK); glDisable(GL_CULL_FACE); + + glDisable(GL_MULTISAMPLE_ARB); } /* debugging aid */ diff --git a/source/blender/gpu/intern/gpu_extensions.c b/source/blender/gpu/intern/gpu_extensions.c index 5deef4a5200..a5a8c626cbd 100644 --- a/source/blender/gpu/intern/gpu_extensions.c +++ b/source/blender/gpu/intern/gpu_extensions.c @@ -103,7 +103,7 @@ int GPU_non_power_of_two_support() /* Exception for buggy ATI/Apple driver in Mac OS X 10.5/10.6, * they claim to support this but can cause system freeze */ #ifdef __APPLE__ - if(strcmp(glGetString(GL_VENDOR), "ATI Technologies Inc.") == 0) + if(strcmp((char*)glGetString(GL_VENDOR), "ATI Technologies Inc.") == 0) return 0; #endif @@ -372,6 +372,13 @@ GPUTexture *GPU_texture_create_3D(int w, int h, int depth, float *fpixels) GPU_print_error("3D glTexImage3D"); if (fpixels) { + if(!GPU_non_power_of_two_support() && (w != tex->w || h != tex->h || depth != tex->depth)) { + /* clear first to avoid unitialized pixels */ + float *zero= MEM_callocN(sizeof(float)*tex->w*tex->h*tex->depth, "zero"); + glTexSubImage3D(tex->target, 0, 0, 0, 0, tex->w, tex->h, tex->depth, format, type, zero); + MEM_freeN(zero); + } + glTexSubImage3D(tex->target, 0, 0, 0, 0, w, h, depth, format, type, fpixels); GPU_print_error("3D glTexSubImage3D"); } diff --git a/source/blender/ikplugin/intern/iksolver_plugin.c b/source/blender/ikplugin/intern/iksolver_plugin.c index e9378a7e12b..c80bf43ce00 100644 --- a/source/blender/ikplugin/intern/iksolver_plugin.c +++ b/source/blender/ikplugin/intern/iksolver_plugin.c @@ -413,7 +413,7 @@ static void execute_posetree(struct Scene *scene, Object *ob, PoseTree *tree) if(data->weight != 0.0) { if(poleconstrain) IK_SolverSetPoleVectorConstraint(solver, iktarget, goalpos, - polepos, data->poleangle*M_PI/180, (poleangledata == data)); + polepos, data->poleangle, (poleangledata == data)); IK_SolverAddGoal(solver, iktarget, goalpos, data->weight); } if((data->flag & CONSTRAINT_IK_ROT) && (data->orientweight != 0.0)) @@ -426,7 +426,7 @@ static void execute_posetree(struct Scene *scene, Object *ob, PoseTree *tree) IK_Solve(solver, 0.0f, tree->iterations); if(poleangledata) - poleangledata->poleangle= IK_SolverGetPoleAngle(solver)*180/M_PI; + poleangledata->poleangle= IK_SolverGetPoleAngle(solver); IK_FreeSolver(solver); diff --git a/source/blender/imbuf/intern/amiga.c b/source/blender/imbuf/intern/amiga.c index f84740826ae..91638a7ea72 100644 --- a/source/blender/imbuf/intern/amiga.c +++ b/source/blender/imbuf/intern/amiga.c @@ -452,6 +452,7 @@ struct ImBuf *imb_loadamiga(int *iffmem,int flags) if (ibuf == 0) return (0); ibuf->ftype = (ftype | AMI); + ibuf->profile = IB_PROFILE_SRGB; if (cmap){ ibuf->mincol = 0; diff --git a/source/blender/imbuf/intern/anim.c b/source/blender/imbuf/intern/anim.c index 1aaba620f3a..4d573fd15b3 100644 --- a/source/blender/imbuf/intern/anim.c +++ b/source/blender/imbuf/intern/anim.c @@ -504,6 +504,8 @@ static ImBuf * avi_fetchibuf (struct anim *anim, int position) { MEM_freeN (tmp); } + ibuf->profile = IB_PROFILE_SRGB; + return ibuf; } @@ -881,6 +883,8 @@ static ImBuf * ffmpeg_fetchibuf(struct anim * anim, int position) { IMB_filtery(ibuf); } + ibuf->profile = IB_PROFILE_SRGB; + return(ibuf); } @@ -1056,7 +1060,9 @@ struct ImBuf * IMB_anim_absolute(struct anim * anim, int position) { if (ibuf == NULL) { return (0); } + IMB_freeImBuf(ibuf); /* ???? */ + ibuf= NULL; } if (position < 0) return(0); @@ -1069,6 +1075,7 @@ struct ImBuf * IMB_anim_absolute(struct anim * anim, int position) { if (nextanim5(anim)) return (0); } ibuf = anim5_fetchibuf(anim); + ibuf->profile = IB_PROFILE_SRGB; break; case ANIM_SEQUENCE: pic = an_stringdec(anim->first, head, tail, &digits); @@ -1089,22 +1096,26 @@ struct ImBuf * IMB_anim_absolute(struct anim * anim, int position) { if (ibuf) { anim->curposition = position; IMB_convert_rgba_to_abgr(ibuf); + ibuf->profile = IB_PROFILE_SRGB; } break; case ANIM_AVI: ibuf = avi_fetchibuf(anim, position); - if (ibuf) anim->curposition = position; + if (ibuf) + anim->curposition = position; break; #ifdef WITH_QUICKTIME case ANIM_QTIME: ibuf = qtime_fetchibuf(anim, position); - if (ibuf) anim->curposition = position; + if (ibuf) + anim->curposition = position; break; #endif #ifdef WITH_FFMPEG case ANIM_FFMPEG: ibuf = ffmpeg_fetchibuf(anim, position); - if (ibuf) anim->curposition = position; + if (ibuf) + anim->curposition = position; filter_y = 0; /* done internally */ break; #endif diff --git a/source/blender/imbuf/intern/anim5.c b/source/blender/imbuf/intern/anim5.c index 43a6b0d2c5d..7aaaee36e9a 100644 --- a/source/blender/imbuf/intern/anim5.c +++ b/source/blender/imbuf/intern/anim5.c @@ -532,6 +532,8 @@ struct ImBuf * anim5_fetchibuf(struct anim * anim) { ibuf = IMB_dupImBuf(anim->ibuf1); planes_to_rect(ibuf, anim->ib_flags); + ibuf->profile = IB_PROFILE_SRGB; + return(ibuf); } diff --git a/source/blender/imbuf/intern/bmp.c b/source/blender/imbuf/intern/bmp.c index 141b8a985cf..ada5fcebf73 100644 --- a/source/blender/imbuf/intern/bmp.c +++ b/source/blender/imbuf/intern/bmp.c @@ -175,6 +175,7 @@ struct ImBuf *imb_bmp_decode(unsigned char *mem, int size, int flags) if (ibuf) { ibuf->ftype = BMP; + ibuf->profile = IB_PROFILE_SRGB; } return(ibuf); diff --git a/source/blender/imbuf/intern/dds/dds_api.cpp b/source/blender/imbuf/intern/dds/dds_api.cpp index cf2f6c16d08..20b77c75841 100644 --- a/source/blender/imbuf/intern/dds/dds_api.cpp +++ b/source/blender/imbuf/intern/dds/dds_api.cpp @@ -80,6 +80,10 @@ struct ImBuf *imb_load_dds(unsigned char *mem, int size, int flags) /* check if DDS is valid and supported */ if (!dds.isValid()) { + /* no need to print error here, just testing if it is a DDS */ + if(flags & IB_test) + return (0); + printf("DDS: not valid; header follows\n"); dds.printInfo(); return(0); @@ -101,6 +105,7 @@ struct ImBuf *imb_load_dds(unsigned char *mem, int size, int flags) if (ibuf == 0) return(0); /* memory allocation failed */ ibuf->ftype = DDS; + ibuf->profile = IB_PROFILE_SRGB; if ((flags & IB_test) == 0) { if (!imb_addrectImBuf(ibuf)) return(ibuf); diff --git a/source/blender/imbuf/intern/divers.c b/source/blender/imbuf/intern/divers.c index 35be1f716e6..93bfec823e9 100644 --- a/source/blender/imbuf/intern/divers.c +++ b/source/blender/imbuf/intern/divers.c @@ -175,12 +175,14 @@ void IMB_gamwarp(struct ImBuf *ibuf, double gamma) } +/* assume converting from linear float to sRGB byte */ void IMB_rect_from_float(struct ImBuf *ibuf) { /* quick method to convert floatbuf to byte */ float *tof = (float *)ibuf->rect_float; - float dither= ibuf->dither; - float srgb[3]; +// int do_dither = ibuf->dither != 0.f; + float dither= ibuf->dither / 255.0; + float srgb[4]; int i, channels= ibuf->channels; short profile= ibuf->profile; unsigned char *to = (unsigned char *) ibuf->rect; @@ -195,7 +197,7 @@ void IMB_rect_from_float(struct ImBuf *ibuf) for (i = ibuf->x * ibuf->y; i > 0; i--, to+=4, tof++) to[1]= to[2]= to[3]= to[0] = FTOCHAR(tof[0]); } - else if (profile == IB_PROFILE_SRGB) { + else if (profile == IB_PROFILE_LINEAR_RGB) { if(channels == 3) { for (i = ibuf->x * ibuf->y; i > 0; i--, to+=4, tof+=3) { srgb[0]= linearrgb_to_srgb(tof[0]); @@ -209,10 +211,26 @@ void IMB_rect_from_float(struct ImBuf *ibuf) } } else if (channels == 4) { - floatbuf_to_srgb_byte(tof, to, 0, ibuf->x, 0, ibuf->y, ibuf->x); + if (dither != 0.f) { + for (i = ibuf->x * ibuf->y; i > 0; i--, to+=4, tof+=4) { + const float d = (BLI_frand()-0.5)*dither; + + srgb[0]= d + linearrgb_to_srgb(tof[0]); + srgb[1]= d + linearrgb_to_srgb(tof[1]); + srgb[2]= d + linearrgb_to_srgb(tof[2]); + srgb[3]= d + tof[3]; + + to[0] = FTOCHAR(srgb[0]); + to[1] = FTOCHAR(srgb[1]); + to[2] = FTOCHAR(srgb[2]); + to[3] = FTOCHAR(srgb[3]); + } + } else { + floatbuf_to_srgb_byte(tof, to, 0, ibuf->x, 0, ibuf->y, ibuf->x); + } } } - else if(ELEM(profile, IB_PROFILE_NONE, IB_PROFILE_LINEAR_RGB) && dither==0.0f) { + else if(ELEM(profile, IB_PROFILE_NONE, IB_PROFILE_SRGB)) { if(channels==3) { for (i = ibuf->x * ibuf->y; i > 0; i--, to+=4, tof+=3) { to[0] = FTOCHAR(tof[0]); @@ -222,32 +240,25 @@ void IMB_rect_from_float(struct ImBuf *ibuf) } } else { - for (i = ibuf->x * ibuf->y; i > 0; i--, to+=4, tof+=4) { - to[0] = FTOCHAR(tof[0]); - to[1] = FTOCHAR(tof[1]); - to[2] = FTOCHAR(tof[2]); - to[3] = FTOCHAR(tof[3]); + if (dither != 0.f) { + for (i = ibuf->x * ibuf->y; i > 0; i--, to+=4, tof+=4) { + const float d = (BLI_frand()-0.5)*dither; + const float col[4] = {d+tof[0], d+tof[1], d+tof[2], d+tof[3]}; + to[0] = FTOCHAR(col[0]); + to[1] = FTOCHAR(col[1]); + to[2] = FTOCHAR(col[2]); + to[3] = FTOCHAR(col[3]); + } + } else { + for (i = ibuf->x * ibuf->y; i > 0; i--, to+=4, tof+=4) { + to[0] = FTOCHAR(tof[0]); + to[1] = FTOCHAR(tof[1]); + to[2] = FTOCHAR(tof[2]); + to[3] = FTOCHAR(tof[3]); + } } } } - else { - float dither_value, col; - dither= dither/255.0f; - for (i = ibuf->x * ibuf->y; i > 0; i--) { - dither_value = (BLI_frand()-0.5)*dither; - col= tof[0] + dither_value; - to[0] = FTOCHAR(col); - col= tof[1] + dither_value; - to[1] = FTOCHAR(col); - col= tof[2] + dither_value; - to[2] = FTOCHAR(col); - col= tof[3] + dither_value; - to[3] = FTOCHAR(col); - - to += 4; - tof += 4; - } - } } void IMB_float_from_rect(struct ImBuf *ibuf) @@ -263,8 +274,11 @@ void IMB_float_from_rect(struct ImBuf *ibuf) tof = ibuf->rect_float; } - if (ibuf->profile == IB_PROFILE_SRGB) { - /* convert from srgb to linear rgb */ + /* Float bufs should be stored linear */ + + if (ibuf->profile != IB_PROFILE_NONE) { + /* if the image has been given a profile then we're working + * with color management in mind, so convert it to linear space */ for (i = ibuf->x * ibuf->y; i > 0; i--) { diff --git a/source/blender/imbuf/intern/dynlibtiff.c b/source/blender/imbuf/intern/dynlibtiff.c index 6db83b37c05..18d508b6db4 100644 --- a/source/blender/imbuf/intern/dynlibtiff.c +++ b/source/blender/imbuf/intern/dynlibtiff.c @@ -85,40 +85,58 @@ void libtiff_loadlibtiff(void) if (libtiff != NULL) return; libtiff = PIL_dynlib_open("/usr/local/lib/libtiff.3.dylib"); if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("/usr/local/lib/libtiff.4.dylib"); + if (libtiff != NULL) return; //inside the blender app package contents/resources libtiff = PIL_dynlib_open("@executable_path/../resources/libtiff.dylib"); if (libtiff != NULL) return; libtiff = PIL_dynlib_open("@executable_path/../resources/libtiff.3.dylib"); if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/../resources/libtiff.4.dylib"); + if (libtiff != NULL) return; //inside the blender app package contents/frameworks libtiff = PIL_dynlib_open("@executable_path/../frameworks/libtiff.dylib"); if (libtiff != NULL) return; libtiff = PIL_dynlib_open("@executable_path/../frameworks/libtiff.3.dylib"); if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/../frameworks/libtiff.4.dylib"); + if (libtiff != NULL) return; //along side the blender app package libtiff = PIL_dynlib_open("@executable_path/../../../libtiff.dylib"); if (libtiff != NULL) return; libtiff = PIL_dynlib_open("@executable_path/../../../libtiff.3.dylib"); if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/../../../libtiff.4.dylib"); + if (libtiff != NULL) return; //inside the blender app package contents/MacOS libtiff = PIL_dynlib_open("@executable_path/libtiff.dylib"); if (libtiff != NULL) return; libtiff = PIL_dynlib_open("@executable_path/libtiff.3.dylib"); if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/libtiff.4.dylib"); + if (libtiff != NULL) return; #else libtiff = PIL_dynlib_open("libtiff.so"); if (libtiff != NULL) return; libtiff = PIL_dynlib_open("libtiff.so.3"); if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("libtiff.so.4"); + if (libtiff != NULL) return; libtiff = PIL_dynlib_open("libtiff.dll"); if (libtiff != NULL) return; libtiff = PIL_dynlib_open("/usr/lib/libtiff.so"); if (libtiff != NULL) return; libtiff = PIL_dynlib_open("/usr/lib/libtiff.so.3"); if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("/usr/lib/libtiff.so.4"); + if (libtiff != NULL) return; #ifdef __x86_64__ + libtiff = PIL_dynlib_open("/usr/lib64/libtiff.so"); + if (libtiff != NULL) return; libtiff = PIL_dynlib_open("/usr/lib64/libtiff.so.3"); if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("/usr/lib64/libtiff.so.4"); + if (libtiff != NULL) return; #endif libtiff = PIL_dynlib_open("/usr/local/lib/libtiff.so"); if (libtiff != NULL) return; diff --git a/source/blender/imbuf/intern/gen_dynlibtiff.py b/source/blender/imbuf/intern/gen_dynlibtiff.py index 4dba5b13aa0..a81ef981357 100755 --- a/source/blender/imbuf/intern/gen_dynlibtiff.py +++ b/source/blender/imbuf/intern/gen_dynlibtiff.py @@ -117,25 +117,71 @@ void libtiff_loadlibtiff(void) if (libtiff != NULL) return; /* Try to find libtiff in a couple of standard places */ +#ifdef __APPLE__ + /* OSX has version specific library */ + //standard install location + libtiff = PIL_dynlib_open("/usr/local/lib/libtiff.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("/usr/local/lib/libtiff.3.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("/usr/local/lib/libtiff.4.dylib"); + if (libtiff != NULL) return; + //inside the blender app package contents/resources + libtiff = PIL_dynlib_open("@executable_path/../resources/libtiff.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/../resources/libtiff.3.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/../resources/libtiff.4.dylib"); + if (libtiff != NULL) return; + //inside the blender app package contents/frameworks + libtiff = PIL_dynlib_open("@executable_path/../frameworks/libtiff.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/../frameworks/libtiff.3.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/../frameworks/libtiff.4.dylib"); + if (libtiff != NULL) return; + //along side the blender app package + libtiff = PIL_dynlib_open("@executable_path/../../../libtiff.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/../../../libtiff.3.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/../../../libtiff.4.dylib"); + if (libtiff != NULL) return; + //inside the blender app package contents/MacOS + libtiff = PIL_dynlib_open("@executable_path/libtiff.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/libtiff.3.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/libtiff.4.dylib"); + if (libtiff != NULL) return; +#else libtiff = PIL_dynlib_open("libtiff.so"); if (libtiff != NULL) return; libtiff = PIL_dynlib_open("libtiff.so.3"); if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("libtiff.so.4"); + if (libtiff != NULL) return; libtiff = PIL_dynlib_open("libtiff.dll"); if (libtiff != NULL) return; libtiff = PIL_dynlib_open("/usr/lib/libtiff.so"); if (libtiff != NULL) return; libtiff = PIL_dynlib_open("/usr/lib/libtiff.so.3"); if (libtiff != NULL) return; - /* OSX has version specific library */ + libtiff = PIL_dynlib_open("/usr/lib/libtiff.so.4"); + if (libtiff != NULL) return; #ifdef __x86_64__ + libtiff = PIL_dynlib_open("/usr/lib64/libtiff.so"); + if (libtiff != NULL) return; libtiff = PIL_dynlib_open("/usr/lib64/libtiff.so.3"); if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("/usr/lib64/libtiff.so.4"); + if (libtiff != NULL) return; #endif libtiff = PIL_dynlib_open("/usr/local/lib/libtiff.so"); if (libtiff != NULL) return; /* For solaris */ libtiff = PIL_dynlib_open("/usr/openwin/lib/libtiff.so"); +#endif } @@ -145,8 +191,11 @@ void *libtiff_findsymbol(char *name) assert(libtiff != NULL); symbol = PIL_dynlib_find_symbol(libtiff, name); if (symbol == NULL) { - printf("libtiff_findsymbol: error %s\\n", - PIL_dynlib_get_error_as_string(libtiff)); + char *err = PIL_dynlib_get_error_as_string(libtiff); + + if (err) printf("libtiff_findsymbol: error %s\\n",err); + else printf("libtiff_findsymbol: error Unknown.\\n"); + libtiff = NULL; G.have_libtiff = (0); return NULL; diff --git a/source/blender/imbuf/intern/hamx.c b/source/blender/imbuf/intern/hamx.c index 258c196fcdf..222604121f9 100644 --- a/source/blender/imbuf/intern/hamx.c +++ b/source/blender/imbuf/intern/hamx.c @@ -387,6 +387,7 @@ struct ImBuf *imb_loadanim(int *iffmem, int flags) if (ibuf==0) return (0); ibuf->ftype = (Anim | adat.type); + ibuf->profile = IB_PROFILE_SRGB; ibuf->xorig = adat.xorig; ibuf->yorig = adat.yorig; ibuf->flags = flags; diff --git a/source/blender/imbuf/intern/iris.c b/source/blender/imbuf/intern/iris.c index 7b8c383ddb9..4389eea8939 100644 --- a/source/blender/imbuf/intern/iris.c +++ b/source/blender/imbuf/intern/iris.c @@ -494,6 +494,7 @@ struct ImBuf *imb_loadiris(unsigned char *mem, int flags) } ibuf->ftype = IMAGIC; + ibuf->profile = IB_PROFILE_SRGB; if (flags & IB_ttob) IMB_flipy(ibuf); test_endian_zbuf(ibuf); diff --git a/source/blender/imbuf/intern/jpeg.c b/source/blender/imbuf/intern/jpeg.c index 2df522ff4a2..97d700f3af7 100644 --- a/source/blender/imbuf/intern/jpeg.c +++ b/source/blender/imbuf/intern/jpeg.c @@ -64,7 +64,7 @@ static ImBuf * ibJpegImageFromCinfo(struct jpeg_decompress_struct * cinfo, int f type 3 is unsupported as of jul 05 2000 Frank. - * 3. jstr - as 2, but written in 2 seperate fields + * 3. jstr - as 2, but written in 2 separate fields * 4. jmax - no scaling in the components */ @@ -416,6 +416,7 @@ next_stamp_marker: jpeg_destroy((j_common_ptr) cinfo); ibuf->ftype = ibuf_ftype; + ibuf->profile = IB_PROFILE_SRGB; } return(ibuf); diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp b/source/blender/imbuf/intern/openexr/openexr_api.cpp index a780727b1a2..18462121810 100644 --- a/source/blender/imbuf/intern/openexr/openexr_api.cpp +++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp @@ -933,6 +933,9 @@ struct ImBuf *imb_load_openexr(unsigned char *mem, int size, int flags) ibuf = IMB_allocImBuf(width, height, 32, 0, 0); ibuf->ftype = OPENEXR; + + /* openEXR is linear as per EXR spec */ + ibuf->profile = IB_PROFILE_LINEAR_RGB; if (!(flags & IB_test)) { diff --git a/source/blender/imbuf/intern/png.c b/source/blender/imbuf/intern/png.c index 3d42eafe623..724f209884c 100644 --- a/source/blender/imbuf/intern/png.c +++ b/source/blender/imbuf/intern/png.c @@ -368,6 +368,7 @@ struct ImBuf *imb_loadpng(unsigned char *mem, int size, int flags) if (ibuf) { ibuf->ftype = PNG; + ibuf->profile = IB_PROFILE_SRGB; } else { printf("Couldn't allocate memory for PNG image\n"); } diff --git a/source/blender/imbuf/intern/radiance_hdr.c b/source/blender/imbuf/intern/radiance_hdr.c index 69c4970df38..ac62872479b 100644 --- a/source/blender/imbuf/intern/radiance_hdr.c +++ b/source/blender/imbuf/intern/radiance_hdr.c @@ -204,6 +204,7 @@ struct ImBuf *imb_loadhdr(unsigned char *mem, int size, int flags) if (ibuf==NULL) return NULL; ibuf->ftype = RADHDR; + ibuf->profile = IB_PROFILE_LINEAR_RGB; ibuf->xorig = ibuf->yorig = 0; if (flags & IB_test) return ibuf; @@ -282,7 +283,7 @@ static int fwritecolrs(FILE* file, int width, int channels, unsigned char* ibufs putc(2, file); putc((unsigned char)(width >> 8), file); putc((unsigned char)(width & 255), file); - /* put components seperately */ + /* put components separately */ for (i=0;i<4;i++) { for (j=0;j<width;j+=cnt) { /* find next run */ for (beg=j;beg<width;beg+=cnt) { diff --git a/source/blender/imbuf/intern/readimage.c b/source/blender/imbuf/intern/readimage.c index 61254944001..ce3d6f9ce91 100644 --- a/source/blender/imbuf/intern/readimage.c +++ b/source/blender/imbuf/intern/readimage.c @@ -161,6 +161,7 @@ ImBuf *IMB_ibImageFromMemory(int *mem, int size, int flags) { ibuf = imb_cocoaLoadImage((uchar *)mem, size, flags); if(ibuf) { ibuf->ftype = TIF; + ibuf->profile = IB_PROFILE_SRGB; return ibuf; } #else diff --git a/source/blender/imbuf/intern/targa.c b/source/blender/imbuf/intern/targa.c index acc3e06448f..9e6a774e4e5 100644 --- a/source/blender/imbuf/intern/targa.c +++ b/source/blender/imbuf/intern/targa.c @@ -569,6 +569,7 @@ struct ImBuf *imb_loadtarga(unsigned char *mem, int mem_size, int flags) if (ibuf == 0) return(0); ibuf->ftype = TGA; + ibuf->profile = IB_PROFILE_SRGB; ibuf->xorig = tga.xorig; ibuf->yorig = tga.yorig; mem = mem + 18 + tga.numid; diff --git a/source/blender/imbuf/intern/tiff.c b/source/blender/imbuf/intern/tiff.c index b2465d6cc2f..0a81e903d05 100644 --- a/source/blender/imbuf/intern/tiff.c +++ b/source/blender/imbuf/intern/tiff.c @@ -347,6 +347,7 @@ struct ImBuf *imb_loadtiff(unsigned char *mem, int size, int flags) ibuf = IMB_allocImBuf(width, height, 8*bytesperpixel, 0, 0); if (ibuf) { ibuf->ftype = TIF; + ibuf->profile = IB_PROFILE_SRGB; } else { fprintf(stderr, "imb_loadtiff: could not allocate memory for TIFF " \ diff --git a/source/blender/makesdna/DNA_ID.h b/source/blender/makesdna/DNA_ID.h index 0c38421a3f5..1abc9cd4514 100644 --- a/source/blender/makesdna/DNA_ID.h +++ b/source/blender/makesdna/DNA_ID.h @@ -198,6 +198,8 @@ typedef struct PreviewImage { /* fluidsim Ipo */ #define ID_FLUIDSIM MAKE_ID2('F', 'S') +#define ID_REAL_USERS(id) (((ID *)id)->us - ((((ID *)id)->flag & LIB_FAKEUSER) ? 1:0)) + /* id->flag: set frist 8 bits always at zero while reading */ #define LIB_LOCAL 0 #define LIB_EXTERN 1 @@ -212,8 +214,8 @@ typedef struct PreviewImage { #define LIB_FAKEUSER 512 /* free test flag */ #define LIB_DOIT 1024 -/* */ -#define LIB_APPEND_TAG 2048 +/* tag existing data before linking so we know what is new */ +#define LIB_PRE_EXISTING 2048 #ifdef __cplusplus } diff --git a/source/blender/makesdna/DNA_action_types.h b/source/blender/makesdna/DNA_action_types.h index b6af91a9570..d2eb8f235fa 100644 --- a/source/blender/makesdna/DNA_action_types.h +++ b/source/blender/makesdna/DNA_action_types.h @@ -39,6 +39,7 @@ struct SpaceLink; struct Object; +struct Group; /* ************************************************ */ /* Visualisation */ @@ -90,10 +91,13 @@ typedef struct bAnimVizSettings { int ghost_sf, ghost_ef; /* start and end frames of ghost-drawing range (only used for GHOST_TYPE_RANGE) */ int ghost_bc, ghost_ac; /* number of frames before/after current frame to show */ - short ghost_type; /* eOnionSkinTypes */ + short ghost_type; /* eOnionSkin_Types */ short ghost_step; /* number of frames between each ghost shown (not for GHOST_TYPE_KEYS) */ - int pad; + short ghost_flag; /* eOnionSkin_Flag */ + + /* General Settings ------------------------ */ + short recalc; /* eAnimViz_RecalcFlags */ /* Motion Path Settings ------------------- */ short path_type; /* eMotionPath_Types */ @@ -107,16 +111,31 @@ typedef struct bAnimVizSettings { } bAnimVizSettings; +/* bAnimVizSettings->recalc */ +typedef enum eAnimViz_RecalcFlags { + /* motionpaths need recalculating */ + ANIMVIZ_RECALC_PATHS = (1<<0), +} eAnimViz_RecalcFlags; + + /* bAnimVizSettings->ghost_type */ typedef enum eOnionSkin_Types { + /* no ghosts at all */ + GHOST_TYPE_NONE = 0, /* around current frame */ - GHOST_TYPE_ACFRA = 0, + GHOST_TYPE_ACFRA, /* show ghosts within the specified frame range */ GHOST_TYPE_RANGE, /* show ghosts on keyframes within the specified range only */ GHOST_TYPE_KEYS, } eOnionSkin_Types; +/* bAnimVizSettings->ghost_flag */ +typedef enum eOnionSkin_Flag { + /* only show selected bones in ghosts */ + GHOST_FLAG_ONLYSEL = (1<<0), +} eOnionSkin_Flag; + /* bAnimVizSettings->path_type */ typedef enum eMotionPaths_Types { @@ -423,12 +442,14 @@ typedef enum eActionGroup_Flag { AGRP_ACTIVE = (1<<1), /* keyframes/channels belonging to it cannot be edited */ AGRP_PROTECTED = (1<<2), - /* for UI, sub-channels are shown */ + /* for UI (DopeSheet), sub-channels are shown */ AGRP_EXPANDED = (1<<3), /* sub-channels are not evaluated */ AGRP_MUTED = (1<<4), /* sub-channels are not visible in Graph Editor */ AGRP_NOTVISIBLE = (1<<5), + /* for UI (Graph Editor), sub-channels are shown */ + AGRP_EXPANDED_G = (1<<6), AGRP_TEMP = (1<<30), AGRP_MOVED = (1<<31) @@ -478,11 +499,13 @@ typedef enum eAction_Flags { /* Storage for Dopesheet/Grease-Pencil Editor data */ typedef struct bDopeSheet { - ID *source; /* currently ID_SCE (for Dopesheet), and ID_SC (for Grease Pencil) */ - ListBase chanbase; /* cache for channels (only initialised when pinned) */ // XXX not used! + ID *source; /* currently ID_SCE (for Dopesheet), and ID_SC (for Grease Pencil) */ + ListBase chanbase; /* cache for channels (only initialised when pinned) */ // XXX not used! + + struct Group *filter_grp; /* object group for ADS_FILTER_ONLYOBGROUP filtering option */ - int filterflag; /* flags to use for filtering data */ - int flag; /* standard flags */ + int filterflag; /* flags to use for filtering data */ + int flag; /* standard flags */ } bDopeSheet; @@ -491,15 +514,19 @@ typedef enum eDopeSheet_FilterFlag { /* general filtering */ ADS_FILTER_ONLYSEL = (1<<0), /* only include channels relating to selected data */ - /* temporary (runtime flags) */ + /* temporary filters */ ADS_FILTER_ONLYDRIVERS = (1<<1), /* for 'Drivers' editor - only include Driver data from AnimData */ ADS_FILTER_ONLYNLA = (1<<2), /* for 'NLA' editor - only include NLA data from AnimData */ ADS_FILTER_SELEDIT = (1<<3), /* for Graph Editor - used to indicate whether to include a filtering flag or not */ - ADS_FILTER_SUMMARY = (1<<4), /* for 'DopeSheet' Editor - include 'summary' line */ + + /* general filtering 2 */ + ADS_FILTER_SUMMARY = (1<<4), /* for 'DopeSheet' Editors - include 'summary' line */ + ADS_FILTER_ONLYOBGROUP = (1<<5), /* only the objects in the specified object group get used */ /* datatype-based filtering */ ADS_FILTER_NOSHAPEKEYS = (1<<6), ADS_FILTER_NOMESH = (1<<7), + // NOTE: there are a few more spaces for datablock filtering here... ADS_FILTER_NOCAM = (1<<10), ADS_FILTER_NOMAT = (1<<11), ADS_FILTER_NOLAM = (1<<12), @@ -540,9 +567,7 @@ typedef struct SpaceAction { bDopeSheet ads; /* the currently active context (when not showing action) */ char mode, autosnap; /* mode: editing context; autosnap: automatic keyframe snapping mode */ - short flag, actnr; /* flag: bitmapped settings; */ - short pin, lock; /* pin: keep showing current action; actnr: used for finding chosen action from menu; lock: lock time to other windows */ - short actwidth; /* width of the left-hand side name panel (in pixels?) */ // XXX depreceated! + short flag; /* flag: bitmapped settings; */ float timeslide; /* for Time-Slide transform mode drawing - current frame? */ } SpaceAction; @@ -550,24 +575,26 @@ typedef struct SpaceAction { typedef enum eSAction_Flag { /* during transform (only set for TimeSlide) */ SACTION_MOVING = (1<<0), - /* show sliders (if relevant) */ + /* show sliders */ SACTION_SLIDERS = (1<<1), /* draw time in seconds instead of time in frames */ SACTION_DRAWTIME = (1<<2), /* don't filter action channels according to visibility */ - SACTION_NOHIDE = (1<<3), + //SACTION_NOHIDE = (1<<3), // XXX depreceated... old animation system /* don't kill overlapping keyframes after transform */ SACTION_NOTRANSKEYCULL = (1<<4), /* don't include keyframes that are out of view */ - SACTION_HORIZOPTIMISEON = (1<<5), + //SACTION_HORIZOPTIMISEON = (1<<5), // XXX depreceated... old irrelevant trick /* hack for moving pose-markers (temp flag) */ SACTION_POSEMARKERS_MOVE = (1<<6), /* don't draw action channels using group colours (where applicable) */ - SACTION_NODRAWGCOLORS = (1<<7), + SACTION_NODRAWGCOLORS = (1<<7), // XXX depreceated... irrelevant for current groups implementation /* 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), + /* don't perform realtime updates */ + SACTION_NOREALTIMEUPDATES = (1<<10), } eSAction_Flag; /* SpaceAction Mode Settings */ diff --git a/source/blender/makesdna/DNA_anim_types.h b/source/blender/makesdna/DNA_anim_types.h index 5b0dfbdd574..acee06e487e 100644 --- a/source/blender/makesdna/DNA_anim_types.h +++ b/source/blender/makesdna/DNA_anim_types.h @@ -294,9 +294,10 @@ typedef struct DriverVar { char name[64]; /* name of the variable to use in py-expression (must be valid python identifier) */ DriverTarget targets[8]; /* MAX_DRIVER_TARGETS, target slots */ - int num_targets; /* number of targets actually used by this variable */ + short num_targets; /* number of targets actually used by this variable */ - int type; /* type of driver target (eDriverTarget_Types) */ + short type; /* type of driver target (eDriverTarget_Types) */ + float curval; /* result of previous evaluation */ } DriverVar; /* Driver Variable Types */ @@ -339,7 +340,7 @@ typedef struct ChannelDriver { 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 curval; /* result of previous evaluation */ float influence; /* influence of driver on result */ // XXX to be implemented... this is like the constraint influence setting /* general settings */ @@ -371,7 +372,11 @@ typedef enum eDriver_Flags { // 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), + DRIVER_FLAG_RECOMPILE = (1<<3), + /* the names are cached so they dont need have python unicode versions created each time */ + DRIVER_FLAG_RENAMEVAR = (1<<4), + /* intermediate values of driver should be shown in the UI for debugging purposes */ + DRIVER_FLAG_SHOWDEBUG = (1<<5), } eDriver_Flags; /* F-Curves -------------------------------------- */ @@ -440,6 +445,7 @@ typedef enum eFCurve_Flags { FCURVE_INT_VALUES = (1<<11), /* curve can only have certain discrete-number values (no interpolation at all, for enums/booleans) */ FCURVE_DISCRETE_VALUES = (1<<12), + } eFCurve_Flags; /* extrapolation modes (only simple value 'extending') */ diff --git a/source/blender/makesdna/DNA_armature_types.h b/source/blender/makesdna/DNA_armature_types.h index 1b0da09058a..010f210d5aa 100644 --- a/source/blender/makesdna/DNA_armature_types.h +++ b/source/blender/makesdna/DNA_armature_types.h @@ -117,7 +117,7 @@ typedef enum eArmature_Flag { ARM_AUTO_IK = (1<<9), ARM_NO_CUSTOM = (1<<10), /* made option negative, for backwards compat */ ARM_COL_CUSTOM = (1<<11), /* draw custom colours */ - ARM_GHOST_ONLYSEL = (1<<12), /* when ghosting, only show selected bones (this should belong to ghostflag instead) */ + ARM_GHOST_ONLYSEL = (1<<12), /* when ghosting, only show selected bones (this should belong to ghostflag instead) */ // XXX depreceated ARM_DS_EXPAND = (1<<13) } eArmature_Flag; diff --git a/source/blender/makesdna/DNA_brush_types.h b/source/blender/makesdna/DNA_brush_types.h index 4738b0d81e8..45ace37866b 100644 --- a/source/blender/makesdna/DNA_brush_types.h +++ b/source/blender/makesdna/DNA_brush_types.h @@ -65,8 +65,10 @@ typedef struct Brush { float rgb[3]; /* color */ float alpha; /* opacity */ - char sculpt_tool; /* active tool */ - char pad2[3]; + char sculpt_tool; /* active sculpt tool */ + char vertexpaint_tool; /* active vertex/weight paint tool/blend mode */ + char imagepaint_tool; /* active image paint tool */ + char pad2; } Brush; /* Brush.flag */ diff --git a/source/blender/makesdna/DNA_color_types.h b/source/blender/makesdna/DNA_color_types.h index 3caa74c9a72..f971a0a0480 100644 --- a/source/blender/makesdna/DNA_color_types.h +++ b/source/blender/makesdna/DNA_color_types.h @@ -80,5 +80,16 @@ typedef struct CurveMapping { #define CUMA_DRAW_CFRA 4 #define CUMA_DRAW_SAMPLE 8 +typedef struct Histogram { + int channels; + int x_resolution; + float data_r[256]; + float data_g[256]; + float data_b[256]; + float xmax, ymax; + int ok; + int flag; +} Histogram; + #endif diff --git a/source/blender/makesdna/DNA_gpencil_types.h b/source/blender/makesdna/DNA_gpencil_types.h index 332442b9f42..00afd687f79 100644 --- a/source/blender/makesdna/DNA_gpencil_types.h +++ b/source/blender/makesdna/DNA_gpencil_types.h @@ -113,6 +113,8 @@ typedef struct bGPDlayer { #define GP_LAYER_ONIONSKIN (1<<4) /* for editing in Action Editor */ #define GP_LAYER_SELECT (1<<5) + /* current frame for layer can't be changed */ +#define GP_LAYER_FRAMELOCK (1<<6) /* Grease-Pencil Annotations - 'DataBlock' */ diff --git a/source/blender/makesdna/DNA_lamp_types.h b/source/blender/makesdna/DNA_lamp_types.h index c321c9feea7..e5a7abe6323 100644 --- a/source/blender/makesdna/DNA_lamp_types.h +++ b/source/blender/makesdna/DNA_lamp_types.h @@ -145,6 +145,7 @@ typedef struct Lamp { #define LA_YF_SOFT 16384 #define LA_LAYER_SHADOW 32768 #define LA_SHAD_TEX (1<<16) +#define LA_SHOW_CONE (1<<17) /* layer_shadow */ #define LA_LAYER_SHADOW_BOTH 0 diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index 2491e58f176..233de55effb 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -679,7 +679,7 @@ typedef struct ShapeKeyModifierData { typedef struct SolidifyModifierData { ModifierData modifier; - char vgroup[32]; /* name of vertex group to use */ + char defgrp_name[32]; /* name of vertex group to use */ float offset; /* new surface offset level*/ float crease_inner; float crease_outer; diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h index 7ca8cea0763..71b607247d3 100644 --- a/source/blender/makesdna/DNA_node_types.h +++ b/source/blender/makesdna/DNA_node_types.h @@ -95,8 +95,6 @@ typedef struct bNodeSocket { #define SOCK_IN_USE 4 /* unavailable is for dynamic sockets */ #define SOCK_UNAVAIL 8 - /* flag for selection status */ -#define SOCK_SEL 16 # # typedef struct bNodePreview { @@ -185,10 +183,8 @@ typedef struct bNodeTree { ListBase alltypes; /* type definitions */ struct bNodeType *owntype; /* for groups or dynamic trees, no read/write */ - /* selected input/output socket */ - bNodeSocket *selin; - bNodeSocket *selout; - + int pad2[2]; + /* callbacks */ void (*timecursor)(void *, int nr); void (*stats_draw)(void *, char *str); @@ -304,6 +300,18 @@ typedef struct NodeLensDist { short jit, proj, fit, pad; } NodeLensDist; +typedef struct NodeColorBalance { + /* for processing */ + float slope[3]; + float offset[3]; + float power[3]; + + /* for ui representation */ + float lift[3]; + float gamma[3]; + float gain[3]; +} NodeColorBalance; + /* TEX_output */ typedef struct TexNodeOutput { char name[32]; diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h index ace56e78a46..09b8ac01a45 100644 --- a/source/blender/makesdna/DNA_object_types.h +++ b/source/blender/makesdna/DNA_object_types.h @@ -135,15 +135,15 @@ typedef struct Object { /* rot en drot have to be together! (transform('r' en 's')) */ float loc[3], dloc[3], orig[3]; - float size[3], dsize[3]; + float size[3], dsize[3]; /* scale and delta scale */ float rot[3], drot[3]; /* euler rotation */ float quat[4], dquat[4]; /* quaternion rotation */ float rotAxis[3], drotAxis[3]; /* axis angle rotation - axis part */ float rotAngle, drotAngle; /* axis angle rotation - angle part */ - float obmat[4][4]; + float obmat[4][4]; /* final worldspace matrix with constraints & animsys applied */ float parentinv[4][4]; /* inverse result of parent, so that object doesn't 'stick' to parent */ float constinv[4][4]; /* inverse result of constraints. doesn't include effect of parent or object local transform */ - float imat[4][4]; /* for during render, old game engine, temporally: ipokeys of transform */ + float imat[4][4]; /* inverse matrix of 'obmat' for during render, old game engine, temporally: ipokeys of transform */ unsigned int lay; /* copy of Base */ @@ -196,7 +196,7 @@ typedef struct Object { float bbsize[3]; short index; /* custom index, for renderpasses */ - unsigned short actdef; /* current deformation group */ + unsigned short actdef; /* current deformation group, note: index starts at 1 */ float col[4]; /* object color, adjusted via IPO's only */ /** * Settings for game objects @@ -334,6 +334,7 @@ extern Object workob; #define OB_DUPLIFACES_SCALE 1024 #define OB_DUPLIPARTS 2048 #define OB_RENDER_DUPLI 4096 +#define OB_NO_CONSTRAINTS 8192 /* runtime constraints disable */ /* (short) ipoflag */ // XXX depreceated - old animation system crap diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index 974967c6aa6..636596f7af7 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -170,23 +170,25 @@ typedef struct SceneRenderLayer { #define SCE_LAY_NEG_ZMASK 0x80000 /* srl->passflag */ -#define SCE_PASS_COMBINED 1 -#define SCE_PASS_Z 2 -#define SCE_PASS_RGBA 4 -#define SCE_PASS_DIFFUSE 8 -#define SCE_PASS_SPEC 16 -#define SCE_PASS_SHADOW 32 -#define SCE_PASS_AO 64 -#define SCE_PASS_REFLECT 128 -#define SCE_PASS_NORMAL 256 -#define SCE_PASS_VECTOR 512 -#define SCE_PASS_REFRACT 1024 -#define SCE_PASS_INDEXOB 2048 -#define SCE_PASS_UV 4096 -#define SCE_PASS_RADIO 8192 /* Radio removed, can use for new GI? */ -#define SCE_PASS_MIST 16384 - -#define SCE_PASS_RAYHITS 32768 +#define SCE_PASS_COMBINED 1 +#define SCE_PASS_Z 2 +#define SCE_PASS_RGBA 4 +#define SCE_PASS_DIFFUSE 8 +#define SCE_PASS_SPEC 16 +#define SCE_PASS_SHADOW 32 +#define SCE_PASS_AO 64 +#define SCE_PASS_REFLECT 128 +#define SCE_PASS_NORMAL 256 +#define SCE_PASS_VECTOR 512 +#define SCE_PASS_REFRACT 1024 +#define SCE_PASS_INDEXOB 2048 +#define SCE_PASS_UV 4096 +#define SCE_PASS_RADIO 8192 /* Radio removed, can use for new GI? */ +#define SCE_PASS_MIST 16384 +#define SCE_PASS_RAYHITS 32768 +#define SCE_PASS_EMIT 65536 +#define SCE_PASS_ENVIRONMENT 131072 +#define SCE_PASS_INDIRECT 262144 /* note, srl->passflag is treestore element 'nr' in outliner, short still... */ @@ -510,7 +512,7 @@ typedef struct Paint { typedef struct ImagePaintSettings { Paint paint; - short flag, tool; + short flag, pad; /* for projection painting only */ short seam_bleed, normal_angle; @@ -521,6 +523,7 @@ typedef struct ImagePaintSettings { typedef struct ParticleBrushData { short size, strength; /* common settings */ short step, invert; /* for specific brushes only */ + int flag, pad; } ParticleBrushData; typedef struct ParticleEditSettings { @@ -564,7 +567,7 @@ typedef struct Sculpt { typedef struct VPaint { Paint paint; - short mode, flag; + short flag, pad; int tot; /* allocation size of prev buffers */ unsigned int *vpaint_prev; /* previous mesh colors */ struct MDeformVert *wpaint_prev; /* previous vertex weights */ @@ -788,6 +791,10 @@ typedef struct Scene { #define R_FRONTBUF 4 #define R_FRONTBUFANIM 8 +/* flag */ + /* use preview range */ +#define SCER_PRV_RANGE (1<<0) + /* mode (int now) */ #define R_OSA 0x0001 #define R_SHADOW 0x0002 @@ -990,8 +997,9 @@ typedef struct Scene { #define F_CFRA ((float)(scene->r.cfra)) #define SFRA (scene->r.sfra) #define EFRA (scene->r.efra) -#define PSFRA ((scene->r.psfra != 0)? (scene->r.psfra): (scene->r.sfra)) -#define PEFRA ((scene->r.psfra != 0)? (scene->r.pefra): (scene->r.efra)) +#define PRVRANGEON (scene->r.flag & SCER_PRV_RANGE) +#define PSFRA ((PRVRANGEON)? (scene->r.psfra): (scene->r.sfra)) +#define PEFRA ((PRVRANGEON)? (scene->r.pefra): (scene->r.efra)) #define FRA2TIME(a) ((((double) scene->r.frs_sec_base) * (a)) / scene->r.frs_sec) #define TIME2FRA(a) ((((double) scene->r.frs_sec) * (a)) / scene->r.frs_sec_base) #define FPS (((double) scene->r.frs_sec) / scene->r.frs_sec_base) @@ -1136,10 +1144,14 @@ typedef enum SculptFlags { #define PE_BRUSH_PUFF 3 #define PE_BRUSH_ADD 4 #define PE_BRUSH_SMOOTH 5 +#define PE_BRUSH_WEIGHT 6 /* this must equal ParticleEditSettings.brush array size */ #define PE_TOT_BRUSH 6 +/* ParticleBrushData->flag */ +#define PE_BRUSH_DATA_PUFF_VOLUME 1 + /* tooksettings->particle edittype */ #define PE_TYPE_PARTICLES 0 #define PE_TYPE_SOFTBODY 1 @@ -1211,6 +1223,7 @@ typedef enum SculptFlags { #define USER_UNIT_IMPERIAL 2 /* UnitSettings->flag */ #define USER_UNIT_OPT_SPLIT 1 +#define USER_UNIT_ROT_RADIANS 2 #ifdef __cplusplus diff --git a/source/blender/makesdna/DNA_screen_types.h b/source/blender/makesdna/DNA_screen_types.h index 12f61cbb026..8a0c02d729e 100644 --- a/source/blender/makesdna/DNA_screen_types.h +++ b/source/blender/makesdna/DNA_screen_types.h @@ -60,8 +60,8 @@ typedef struct bScreen { short do_refresh; /* notifier for scale screen, changed screen, etc */ short do_draw_gesture; /* notifier for gesture draw. */ short do_draw_paintcursor; /* notifier for paint cursor draw. */ + short do_draw_drag; /* notifier for dragging draw. */ short swap; /* indicator to survive swap-exchange systems */ - short pad; short mainwin; /* screensize subwindow, for screenedges and global menus */ short subwinactive; /* active subwindow */ @@ -148,11 +148,11 @@ typedef struct ARegion { short alignment; /* how it should split */ short flag; /* hide, ... */ - float fsize; /* current split size in float */ + float fsize; /* current split size in float (unused) */ + short sizex, sizey; /* current split size in pixels (if zero it uses regiontype) */ short do_draw; /* private, cached notifier events */ short swap; /* private, indicator to survive swap-exchange */ - int pad1; struct ARegionType *type; /* callbacks for this region type */ diff --git a/source/blender/makesdna/DNA_smoke_types.h b/source/blender/makesdna/DNA_smoke_types.h index 6cf308aa0ad..08cd1ba2994 100644 --- a/source/blender/makesdna/DNA_smoke_types.h +++ b/source/blender/makesdna/DNA_smoke_types.h @@ -33,6 +33,8 @@ #define MOD_SMOKE_HIGHRES (1<<1) /* enable high resolution */ #define MOD_SMOKE_DISSOLVE (1<<2) /* let smoke dissolve */ #define MOD_SMOKE_DISSOLVE_LOG (1<<3) /* using 1/x for dissolve */ +#define MOD_SMOKE_INITVELOCITY (1<<4) /* passes particles speed to + the smoke*/ /* noise */ #define MOD_SMOKE_NOISEWAVE (1<<0) @@ -41,6 +43,10 @@ /* viewsettings */ #define MOD_SMOKE_VIEW_SHOWBIG (1<<0) +/* cache compression */ +#define SM_CACHE_LIGHT 0 +#define SM_CACHE_HEAVY 1 + typedef struct SmokeDomainSettings { struct SmokeModifierData *smd; /* for fast RNA access */ struct FLUID_3D *fluid; @@ -73,6 +79,8 @@ typedef struct SmokeDomainSettings { int res_wt[3]; float dx_wt; int v3dnum; + int cache_comp; + int cache_high_comp; struct PointCache *point_cache[2]; /* definition is in DNA_object_force.h */ struct ListBase ptcaches[2]; struct EffectorWeights *effector_weights; diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h index e06aa899c49..f7b7584a731 100644 --- a/source/blender/makesdna/DNA_space_types.h +++ b/source/blender/makesdna/DNA_space_types.h @@ -32,6 +32,7 @@ #define DNA_SPACE_TYPES_H #include "DNA_listBase.h" +#include "DNA_color_types.h" /* for Histogram */ #include "DNA_vec_types.h" #include "DNA_outliner_types.h" /* for TreeStoreElem */ #include "DNA_image_types.h" /* ImageUser */ @@ -43,6 +44,7 @@ struct Text; struct Script; struct ImBuf; struct Image; +struct Histogram; struct SpaceIpo; struct BlendHandle; struct RenderInfo; @@ -124,8 +126,8 @@ typedef struct SpaceButs { short preview; /* preview is signal to refresh */ char flag, pad[3]; - void *path; /* runtime */ - int pathflag, dataicon; /* runtime */ + void *path; /* runtime */ + int pathflag, dataicon; /* runtime */ ID *pinid; } SpaceButs; @@ -255,6 +257,8 @@ typedef struct SpaceImage { float centx, centy; /* storage for offset while render drawing */ struct bGPdata *gpd; /* grease pencil data */ + + struct Histogram hist; /* viewer histogram */ } SpaceImage; typedef struct SpaceNla { @@ -573,7 +577,6 @@ typedef struct SpaceUserPref { #define TAB_SCENE_SOUND 3 #define TAB_SCENE_SEQUENCER 4 - /* buts->mainb new */ #define BCONTEXT_RENDER 0 #define BCONTEXT_SCENE 1 @@ -595,6 +598,7 @@ typedef struct SpaceUserPref { #define SB_PIN_CONTEXT 2 #define SB_WORLD_TEX 4 #define SB_BRUSH_TEX 8 +#define SB_SHADING_CONTEXT 16 /* sbuts->align */ #define BUT_FREE 0 @@ -645,6 +649,9 @@ enum FileSortTypeE { #define FILE_LOADLIB 1 #define FILE_MAIN 2 #define FILE_LOADFONT 3 +/* filesel op property -> action */ +#define FILE_OPEN 0 +#define FILE_SAVE 1 /* sfile->flag and simasel->flag */ #define FILE_SHOWSHORT 1 @@ -657,6 +664,7 @@ enum FileSortTypeE { #define FILE_SYNCPOSE 128 #define FILE_FILTER 256 #define FILE_BOOKMARKS 512 +#define FILE_GROUP_INSTANCE 1024 /* files in filesel list: 2=ACTIVE */ #define EDITING 1 @@ -745,6 +753,8 @@ enum FileSortTypeE { #define SIPO_SELVHANDLESONLY (1<<9) /* temporary flag to force channel selections to be synced with main */ #define SIPO_TEMP_NEEDCHANSYNC (1<<10) + /* don't perform realtime updates */ +#define SIPO_NOREALTIMEUPDATES (1<<11) /* SpaceIpo->mode (Graph Editor Mode) */ enum { @@ -830,15 +840,15 @@ enum { #define IMS_INFILESLI 4 /* nla->flag */ - // depreceated -#define SNLA_ALLKEYED (1<<0) - // depreceated -#define SNLA_ACTIVELAYERS (1<<1) - +/* flags (1<<0), (1<<1), and (1<<3) are depreceated flags from old blenders */ + /* draw timing in seconds instead of frames */ #define SNLA_DRAWTIME (1<<2) -#define SNLA_NOTRANSKEYCULL (1<<3) + /* don't draw frame number beside frame indicator */ #define SNLA_NODRAWCFRANUM (1<<4) + /* don't draw influence curves on strips */ #define SNLA_NOSTRIPCURVES (1<<5) + /* don't perform realtime updates */ +#define SNLA_NOREALTIMEUPDATES (1<<6) /* time->flag */ /* show timing in frames instead of in seconds */ diff --git a/source/blender/makesdna/DNA_text_types.h b/source/blender/makesdna/DNA_text_types.h index 5793f061f06..9a9daf56e8a 100644 --- a/source/blender/makesdna/DNA_text_types.h +++ b/source/blender/makesdna/DNA_text_types.h @@ -84,6 +84,7 @@ typedef struct Text { #define TXT_ISSCRIPT 0x0010 /* used by space handler scriptlinks */ #define TXT_READONLY 0x0100 #define TXT_FOLLOW 0x0200 /* always follow cursor (console) */ +#define TXT_TABSTOSPACES 0x0400 /* use space instead of tabs */ /* format continuation flags */ #define TXT_NOCONT 0x00 /* no continuation */ diff --git a/source/blender/makesdna/DNA_texture_types.h b/source/blender/makesdna/DNA_texture_types.h index eac7a97f0c0..76651cbc551 100644 --- a/source/blender/makesdna/DNA_texture_types.h +++ b/source/blender/makesdna/DNA_texture_types.h @@ -184,7 +184,7 @@ typedef struct VoxelData { short file_format; short flag; short extend; - short pad; + short smoked_type; struct Object *object; /* for rendering smoke sims */ float int_multiplier; @@ -546,5 +546,10 @@ typedef struct TexMapping { #define TEX_VD_IMAGE_SEQUENCE 3 #define TEX_VD_SMOKE 4 +/* smoke data types */ +#define TEX_VD_SMOKEDENSITY 0 +#define TEX_VD_SMOKEHEAT 1 +#define TEX_VD_SMOKEVEL 2 + #endif diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index a6be7256170..40de15ac012 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -201,6 +201,8 @@ typedef struct ThemeSpace { char cframe[4]; char ds_channel[4], ds_subchannel[4]; // dopesheet + char console_output[4], console_input[4], console_info[4], console_error[4]; // Console + char vertex_size, facedot_size; char bpad[2]; @@ -217,7 +219,7 @@ typedef struct ThemeSpace { char handle_vertex_size; char hpad[3]; - char pad[4]; + char preview_back[4]; } ThemeSpace; @@ -261,12 +263,13 @@ typedef struct bTheme { ThemeSpace tnode; ThemeSpace tlogic; ThemeSpace tuserpref; + ThemeSpace tconsole; /* 20 sets of bone colors for this theme */ ThemeWireColor tarm[20]; /*ThemeWireColor tobj[20];*/ - int active_theme_group, pad; + int active_theme_area, pad; } bTheme; @@ -288,7 +291,9 @@ typedef struct UserDef { char sounddir[160]; char anim_player[240]; // FILE_MAX length int anim_player_preset; - int pad; + + short v2d_min_gridsize; /* minimum spacing between gridlines in View2D grids */ + short timecode_style; /* style of timecode display */ short versions; short dbl_click_time; @@ -337,6 +342,11 @@ typedef struct UserDef { short glreslimit; short ndof_pan, ndof_rotate; short curssize, ipo_new; + short color_picker_type; + short pad2; + + short scrcastfps; /* frame rate for screencast to be played back */ + short scrcastwait; /* milliseconds between screencast snapshots */ char versemaster[160]; char verseuser[160]; @@ -465,9 +475,11 @@ extern UserDef U; /* from blenkernel blender.c */ /* gameflags */ #define USER_DEPRECATED_FLAG 1 -#define USER_DISABLE_SOUND 2 +// #define USER_DISABLE_SOUND 2 deprecated, don't use without checking for +// backwards compatibilty in do_versions! #define USER_DISABLE_MIPMAP 4 #define USER_DISABLE_VBO 8 +#define USER_DISABLE_AA 16 /* wm draw method */ #define USER_DRAW_TRIPLE 0 @@ -480,6 +492,27 @@ extern UserDef U; /* from blenkernel blender.c */ #define GP_PAINT_DOSMOOTH (1<<0) #define GP_PAINT_DOSIMPLIFY (1<<1) +/* color picker types */ +#define USER_CP_CIRCLE 0 +#define USER_CP_SQUARE_SV 1 +#define USER_CP_SQUARE_HS 2 +#define USER_CP_SQUARE_HV 3 + +/* timecode display styles */ + /* as little info as is necessary to show relevant info + * with '+' to denote the frames + * i.e. HH:MM:SS+FF, MM:SS+FF, SS+FF, or MM:SS + */ +#define USER_TIMECODE_MINIMAL 0 + /* reduced SMPTE - (HH:)MM:SS:FF */ +#define USER_TIMECODE_SMPTE_MSF 1 + /* full SMPTE - HH:MM:SS:FF */ +#define USER_TIMECODE_SMPTE_FULL 2 + /* milliseconds for sub-frames - HH:MM:SS.sss */ +#define USER_TIMECODE_MILLISECONDS 3 + /* seconds only */ +#define USER_TIMECODE_SECONDS_ONLY 4 + /* theme drawtypes */ #define TH_MINIMAL 0 #define TH_ROUNDSHADED 1 diff --git a/source/blender/makesdna/DNA_vec_types.h b/source/blender/makesdna/DNA_vec_types.h index 264ad348e92..4dc3c44bc04 100644 --- a/source/blender/makesdna/DNA_vec_types.h +++ b/source/blender/makesdna/DNA_vec_types.h @@ -38,14 +38,16 @@ typedef struct vec2s { short x, y; } vec2s; -typedef struct vec2i { - int x, y; -} vec2i; - typedef struct vec2f { float x, y; } vec2f; +/* not used at the moment */ +#if 0 +typedef struct vec2i { + int x, y; +} vec2i; + typedef struct vec2d { double x, y; } vec2d; @@ -73,6 +75,7 @@ typedef struct vec4f { typedef struct vec4d { double x, y, z, w; } vec4d; +#endif typedef struct rcti { int xmin, xmax; diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h index 4ad18a90a6b..6546ec5747a 100644 --- a/source/blender/makesdna/DNA_view3d_types.h +++ b/source/blender/makesdna/DNA_view3d_types.h @@ -63,9 +63,14 @@ struct wmTimer; /* Background Picture in 3D-View */ typedef struct BGpic { + struct BGpic *next, *prev; + struct Image *ima; struct ImageUser iuser; float xof, yof, size, blend; + short view; + short flag; + float pad2; } BGpic; /* ********************************* */ @@ -140,7 +145,10 @@ typedef struct View3D { short view; /* XXX depricated */ struct Object *camera, *ob_centre; - struct BGpic *bgpic; + + struct ListBase bgpicbase; + struct BGpic *bgpic; /* deprecated, use bgpicbase, only kept for do_versions(...) */ + struct View3D *localvd; char ob_centre_bone[32]; /* optional string for armature bone to define center */ @@ -197,7 +205,7 @@ typedef struct View3D { /* View3D->flag (short) */ #define V3D_MODE (16+32+64+128+256+512) #define V3D_DISPIMAGE 1 -#define V3D_DISPBGPIC 2 +#define V3D_DISPBGPICS 2 #define V3D_HIDE_HELPLINES 4 #define V3D_INVALID_BACKBUF 8 #define V3D_EDITMODE 16 @@ -283,6 +291,9 @@ typedef struct View3D { #define V3D_DRAW_MANIPULATOR 2 #define V3D_CALC_MANIPULATOR 4 +/* BGPic->flag */ +/* may want to use 1 for select ?*/ +#define V3D_BGPIC_EXPANDED 2 #endif diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h index 0b2d0255f02..f520a3d5fb2 100644 --- a/source/blender/makesdna/DNA_windowmanager_types.h +++ b/source/blender/makesdna/DNA_windowmanager_types.h @@ -109,7 +109,7 @@ typedef struct wmWindowManager { int initialized; /* set on file read */ short file_saved; /* indicator whether data was saved */ - short pad; + short op_undo_depth; /* operator stack depth to avoid nested undo pushes */ ListBase operators; /* operator registry */ @@ -121,6 +121,8 @@ typedef struct wmWindowManager { ListBase paintcursors; /* extra overlay cursors to draw, like circles */ + ListBase drags; /* active dragged items */ + ListBase keyconfigs; /* known key configurations */ struct wmKeyConfig *defaultconf; /* default configuration, not saved */ @@ -182,7 +184,7 @@ typedef struct wmOperatorTypeMacro { struct wmOperatorTypeMacro *next, *prev; /* operator id */ - char idname[OP_MAX_TYPENAME]; + char idname[64]; /* 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; @@ -194,7 +196,7 @@ typedef struct wmKeyMapItem { struct wmKeyMapItem *next, *prev; /* operator */ - char idname[OP_MAX_TYPENAME]; /* used to retrieve operator type pointer */ + char idname[64]; /* used to retrieve operator type pointer */ IDProperty *properties; /* operator properties, assigned to ptr->data and can be written to a file */ /* modal */ @@ -257,9 +259,7 @@ typedef struct wmKeyConfig { } wmKeyConfig; /* wmKeyConfig.flag */ -#define KEYCONF_TWOBUTTONMOUSE (1 << 1) -#define KEYCONF_LMOUSESELECT (1 << 2) -#define KEYCONF_NONUMPAD (1 << 3) +#define KEYCONF_USER (1 << 1) /* this one is the operator itself, stored in files for macros etc */ /* operator + operatortype should be able to redo entirely, but for different contextes */ @@ -267,7 +267,7 @@ typedef struct wmOperator { struct wmOperator *next, *prev; /* saved */ - char idname[OP_MAX_TYPENAME];/* used to retrieve type pointer */ + char idname[64];/* used to retrieve type pointer */ IDProperty *properties; /* saved, user-settable properties */ /* runtime */ @@ -290,6 +290,8 @@ typedef struct wmOperator { #define OPERATOR_FINISHED 4 /* add this flag if the event should pass through */ #define OPERATOR_PASS_THROUGH 8 +/* in case operator got executed outside WM code... like via fileselect */ +#define OPERATOR_HANDLED 16 /* wmOperator flag */ #define OP_GRAB_POINTER 1 diff --git a/source/blender/makesdna/DNA_world_types.h b/source/blender/makesdna/DNA_world_types.h index 9b3f78caee0..b79bc766d17 100644 --- a/source/blender/makesdna/DNA_world_types.h +++ b/source/blender/makesdna/DNA_world_types.h @@ -107,7 +107,7 @@ 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; + float ao_indirect_energy, ao_env_energy, ao_pad2; short ao_indirect_bounces, ao_pad; short ao_samp_method, ao_gather_method, ao_approx_passes; @@ -142,13 +142,16 @@ typedef struct World { #define WO_STARS 2 #define WO_DOF 4 #define WO_ACTIVITY_CULLING 8 -#define WO_AMB_OCC 16 +#define WO_ENV_LIGHT 16 #define WO_DBVT_CULLING 32 +#define WO_AMB_OCC 64 +#define WO_INDIRECT_LIGHT 128 /* aomix */ #define WO_AOADD 0 -#define WO_AOSUB 1 -#define WO_AOADDSUB 2 +#define WO_AOSUB 1 /* deprecated */ +#define WO_AOADDSUB 2 /* deprecated */ +#define WO_AOMUL 3 /* ao_samp_method - methods for sampling the AO hemi */ #define WO_AOSAMP_CONSTANT 0 diff --git a/source/blender/makesdna/intern/SConscript b/source/blender/makesdna/intern/SConscript index 120398791a8..8a0e738080c 100644 --- a/source/blender/makesdna/intern/SConscript +++ b/source/blender/makesdna/intern/SConscript @@ -50,7 +50,7 @@ targetdir = normpath(root_build_dir + '/makesdna') if not (root_build_dir[0]==os.sep or root_build_dir[1]==':'): targetdir = '#' + targetdir -makesdna = makesdna_tool.Program (target = targetdir, source = source_files, LIBS=['bf_guardedalloc']) +makesdna = makesdna_tool.Program (target = targetdir, source = source_files, LIBS=['bf_guardedalloc', 'bf_blenlib']) dna_dict = dna.Dictionary() dna.Depends ('dna.c', makesdna) diff --git a/source/blender/makesdna/intern/makesdna.c b/source/blender/makesdna/intern/makesdna.c index cae28f163ed..d7e01e9559f 100644 --- a/source/blender/makesdna/intern/makesdna.c +++ b/source/blender/makesdna/intern/makesdna.c @@ -277,7 +277,13 @@ int add_name(char *str) if((str[0]==0) /* || (str[1]==0) */) return -1; if (str[0] == '(' && str[1] == '*') { - if (debugSDNA > 3) printf("\t\t\t\t*** Function pointer found\n"); + /* we handle function pointer and special array cases here, e.g. + void (*function)(...) and float (*array)[..]. the array case + name is still converted to (array*)() though because it is that + way in old dna too, and works correct with elementsize() */ + int isfuncptr = (strchr(str+1, '(')) != NULL; + + if (debugSDNA > 3) printf("\t\t\t\t*** Function pointer or multidim array pointer found\n"); /* functionpointer: transform the type (sometimes) */ i = 0; j = 0; @@ -302,7 +308,15 @@ int add_name(char *str) if (debugSDNA > 3) printf("seen %c ( %d) \n", str[j], str[j]); if (debugSDNA > 3) printf("special after offset %d\n", j); - if (str[j] == 0 ) { + if (!isfuncptr) { + /* multidimensional array pointer case */ + if(str[j] == 0) { + if (debugSDNA > 3) printf("offsetting for multidim array pointer\n"); + } + else + printf("Error during tokening multidim array pointer\n"); + } + else if (str[j] == 0 ) { if (debugSDNA > 3) printf("offsetting for space\n"); /* get additional offset */ k = 0; @@ -1050,10 +1064,10 @@ int make_structDNA(char *baseDirectory, FILE *file) /* ************************* END MAKE DNA ********************** */ -static void make_bad_file(char *file) +static void make_bad_file(char *file, int line) { FILE *fp= fopen(file, "w"); - fprintf(fp, "ERROR! Cannot make correct DNA.c file, STUPID!\n"); + fprintf(fp, "#error \"Error! can't make correct DNA.c file from %s:%d, STUPID!\"\n", __FILE__, line); fclose(fp); } @@ -1087,7 +1101,7 @@ int main(int argc, char ** argv) if (make_structDNA(baseDirectory, file)) { // error fclose(file); - make_bad_file(argv[1]); + make_bad_file(argv[1], __LINE__); return_status = 1; } else { fprintf(file, "};\n"); diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index 5697747fcab..61197b2296e 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -52,6 +52,9 @@ extern StructRNA RNA_ActuatorSensor; extern StructRNA RNA_AlwaysSensor; extern StructRNA RNA_AndController; extern StructRNA RNA_AnimData; +extern StructRNA RNA_AnimViz; +extern StructRNA RNA_AnimVizOnionSkinning; +extern StructRNA RNA_AnimVizMotionPaths; extern StructRNA RNA_AnyType; extern StructRNA RNA_Area; extern StructRNA RNA_AreaLamp; @@ -232,6 +235,7 @@ extern StructRNA RNA_GreasePencil; extern StructRNA RNA_Group; extern StructRNA RNA_Header; extern StructRNA RNA_HemiLamp; +extern StructRNA RNA_Histogram; extern StructRNA RNA_HookModifier; extern StructRNA RNA_ID; extern StructRNA RNA_IDProperty; @@ -251,6 +255,7 @@ extern StructRNA RNA_KeyboardSensor; extern StructRNA RNA_KeyConfig; extern StructRNA RNA_KeyingSet; extern StructRNA RNA_KeyingSetPath; +extern StructRNA RNA_Keyframe; extern StructRNA RNA_KeyMap; extern StructRNA RNA_KeyMapItem; extern StructRNA RNA_KinematicConstraint; @@ -305,6 +310,8 @@ extern StructRNA RNA_MirrorModifier; extern StructRNA RNA_Modifier; extern StructRNA RNA_MouseSensor; extern StructRNA RNA_MovieSequence; +extern StructRNA RNA_MotionPath; +extern StructRNA RNA_MotionPathVert; extern StructRNA RNA_MultiresModifier; extern StructRNA RNA_MusgraveTexture; extern StructRNA RNA_NandController; @@ -312,6 +319,7 @@ extern StructRNA RNA_NearSensor; extern StructRNA RNA_NlaStrip; extern StructRNA RNA_NlaTrack; extern StructRNA RNA_Node; +extern StructRNA RNA_NodeGroup; extern StructRNA RNA_NodeSocket; extern StructRNA RNA_NodeTree; extern StructRNA RNA_NoiseTexture; @@ -486,6 +494,7 @@ extern StructRNA RNA_TextureSlot; extern StructRNA RNA_Theme; extern StructRNA RNA_ThemeAudioWindow; extern StructRNA RNA_ThemeBoneColorSet; +extern StructRNA RNA_ThemeConsole; extern StructRNA RNA_ThemeDopeSheet; extern StructRNA RNA_ThemeFileBrowser; extern StructRNA RNA_ThemeFontStyle; @@ -562,6 +571,7 @@ void RNA_id_pointer_create(struct ID *id, PointerRNA *r_ptr); void RNA_pointer_create(struct ID *id, StructRNA *type, void *data, PointerRNA *r_ptr); void RNA_blender_rna_pointer_create(PointerRNA *r_ptr); +void RNA_pointer_recast(PointerRNA *ptr, PointerRNA *r_ptr); extern PointerRNA PointerRNA_NULL; @@ -637,7 +647,7 @@ 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_bitflag_identifiers(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); @@ -877,6 +887,10 @@ void RNA_parameter_get(ParameterList *parms, PropertyRNA *parm, void **value); void RNA_parameter_get_lookup(ParameterList *parms, const char *identifier, void **value); void RNA_parameter_set(ParameterList *parms, PropertyRNA *parm, void *value); void RNA_parameter_set_lookup(ParameterList *parms, const char *identifier, void *value); +int RNA_parameter_length_get(ParameterList *parms, PropertyRNA *parm); +int RNA_parameter_length_get_data(ParameterList *parms, PropertyRNA *parm, void *data); +void RNA_parameter_length_set(ParameterList *parms, PropertyRNA *parm, int length); +void RNA_parameter_length_set_data(ParameterList *parms, PropertyRNA *parm, void *data, int length); int RNA_function_call(struct bContext *C, struct ReportList *reports, PointerRNA *ptr, FunctionRNA *func, ParameterList *parms); int RNA_function_call_lookup(struct bContext *C, struct ReportList *reports, PointerRNA *ptr, const char *identifier, ParameterList *parms); diff --git a/source/blender/makesrna/RNA_define.h b/source/blender/makesrna/RNA_define.h index f340834d93b..4bdb9f0862c 100644 --- a/source/blender/makesrna/RNA_define.h +++ b/source/blender/makesrna/RNA_define.h @@ -172,7 +172,7 @@ void RNA_def_property_srna(PropertyRNA *prop, const char *type); FunctionRNA *RNA_def_function(StructRNA *srna, const char *identifier, const char *call); FunctionRNA *RNA_def_function_runtime(StructRNA *srna, const char *identifier, CallFunc call); void RNA_def_function_return(FunctionRNA *func, PropertyRNA *ret); -void RNA_def_function_return_mark(FunctionRNA *func, PropertyRNA *ret); +void RNA_def_function_output(FunctionRNA *func, PropertyRNA *ret); void RNA_def_function_flag(FunctionRNA *func, int flag); void RNA_def_function_ui_description(FunctionRNA *func, const char *description); diff --git a/source/blender/makesrna/RNA_enum_types.h b/source/blender/makesrna/RNA_enum_types.h index 55ebf014b64..14b2f0c561e 100644 --- a/source/blender/makesrna/RNA_enum_types.h +++ b/source/blender/makesrna/RNA_enum_types.h @@ -33,6 +33,7 @@ extern EnumPropertyItem id_type_items[]; /* use in cases where only dynamic types are used */ extern EnumPropertyItem DummyRNA_NULL_items[]; +extern EnumPropertyItem DummyRNA_DEFAULT_items[]; extern EnumPropertyItem object_mode_items[]; @@ -64,6 +65,8 @@ extern EnumPropertyItem operator_return_items[]; extern EnumPropertyItem brush_sculpt_tool_items[]; +extern EnumPropertyItem texture_type_items[]; + extern EnumPropertyItem unpack_method_items[]; extern EnumPropertyItem object_type_items[]; diff --git a/source/blender/makesrna/RNA_types.h b/source/blender/makesrna/RNA_types.h index 4e60fb413db..960060691f0 100644 --- a/source/blender/makesrna/RNA_types.h +++ b/source/blender/makesrna/RNA_types.h @@ -150,7 +150,7 @@ typedef enum PropertyFlag { /* function paramater flags */ PROP_REQUIRED = 1<<2, - PROP_RETURN = 1<<3, + PROP_OUTPUT = 1<<3, PROP_RNAPTR = 1<<11, /* registering */ PROP_REGISTER = 1<<4, @@ -187,7 +187,8 @@ typedef enum PropertyFlag { PROP_RAW_ACCESS = 1<<13, PROP_RAW_ARRAY = 1<<14, PROP_FREE_POINTERS = 1<<15, - PROP_DYNAMIC = 1<<17 /* for dynamic arrays, and retvals of type string */ + PROP_DYNAMIC = 1<<17, /* for dynamic arrays, and retvals of type string */ + PROP_ENUM_NO_CONTEXT = 1<<18 /* for enum that shouldn't be contextual */ } PropertyFlag; typedef struct CollectionPropertyIterator { @@ -266,6 +267,7 @@ typedef enum FunctionFlag { FUNC_NO_SELF = 1, /* for static functions */ FUNC_USE_CONTEXT = 2, FUNC_USE_REPORTS = 4, + FUNC_USE_SELF_ID = 2048, /* registering */ FUNC_REGISTER = 8, @@ -323,6 +325,20 @@ typedef struct ExtensionRNA { void (*free)(void *data); } ExtensionRNA; +/* fake struct definitions, needed otherwise collections end up owning the C + * structs like 'Object' when defined first */ +#define MainCameras Main +#define MainScenes Main +#define MainArmatures Main +#define MainMaterials Main +#define MainMeshes Main +#define MainLamps Main +#define MainObjects Main +#define MainTexts Main +#define MainActions Main +#define MainGroups Main +#define MainTextures Main + #ifdef __cplusplus } #endif diff --git a/source/blender/makesrna/intern/CMakeLists.txt b/source/blender/makesrna/intern/CMakeLists.txt index 113dfc51138..38dd83c39d7 100644 --- a/source/blender/makesrna/intern/CMakeLists.txt +++ b/source/blender/makesrna/intern/CMakeLists.txt @@ -42,6 +42,12 @@ SET(SRC INCLUDE_DIRECTORIES(../../../../intern/guardedalloc .. ../../makesdna ../../blenkernel ../../blenlib ../../ikplugin ../../windowmanager ../../editors/include ../../imbuf ../../render/extern/include .) FILE(GLOB INC_FILES ../*.h ../../makesdna/*.h) +IF(WITH_PYTHON) + +ELSE(WITH_PYTHON) + ADD_DEFINITIONS(-DDISABLE_PYTHON) +ENDIF(WITH_PYTHON) + IF(WIN32) SET(INC ${INC} ${PTHREADS_INC}) ENDIF(WIN32) @@ -63,7 +69,7 @@ IF(WITH_DDS) ENDIF(WITH_DDS) IF(WITH_QUICKTIME) - SET(INC "${INC} ../../quicktime") + SET(INC ${INC} ../../quicktime) ADD_DEFINITIONS(-DWITH_QUICKTIME) ENDIF(WITH_QUICKTIME) @@ -99,6 +105,7 @@ TARGET_LINK_LIBRARIES(makesrna bf_dna) # Output rna_*_gen.c ADD_CUSTOM_COMMAND( OUTPUT ${GENSRC} + # with crashes try add this after COMMAND: valgrind --leak-check=full --track-origins=yes COMMAND ${CMAKE_BINARY_DIR}/bin/${CMAKE_CFG_INTDIR}/makesrna ${CMAKE_CURRENT_BINARY_DIR}/ DEPENDS makesrna ) diff --git a/source/blender/makesrna/intern/SConscript b/source/blender/makesrna/intern/SConscript index e5a08c9aeea..9491c4cf30e 100644 --- a/source/blender/makesrna/intern/SConscript +++ b/source/blender/makesrna/intern/SConscript @@ -126,9 +126,9 @@ if not (root_build_dir[0]==os.sep or root_build_dir[1]==':'): targetpath = '#' + targetpath if env['OURPLATFORM'] == 'linux2' and root_build_dir[0]==os.sep: - makesrna = makesrna_tool.Program (target = targetpath, source = source_files, LIBS=['bf_guardedalloc', 'bf_dna']) + makesrna = makesrna_tool.Program (target = targetpath, source = source_files, LIBS=['bf_guardedalloc', 'bf_dna', 'bf_blenlib']) else: - makesrna = makesrna_tool.Program (target = targetpath, source = source_files, LIBS=['bf_guardedalloc', 'bf_dna']) + makesrna = makesrna_tool.Program (target = targetpath, source = source_files, LIBS=['bf_guardedalloc', 'bf_dna', 'bf_blenlib']) rna_dict = rna.Dictionary() rna.Depends (generated_files, makesrna) diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c index 35515e76f48..978ca0ba188 100644 --- a/source/blender/makesrna/intern/makesrna.c +++ b/source/blender/makesrna/intern/makesrna.c @@ -44,6 +44,85 @@ #endif #endif +/* Replace if different */ +#define TMP_EXT ".tmp" + +static int replace_if_different(char *tmpfile) +{ + +#define REN_IF_DIFF \ + remove(orgfile); \ + if(rename(tmpfile, orgfile) != 0) { \ + fprintf(stderr, "%s:%d, rename error: \"%s\" -> \"%s\"\n", __FILE__, __LINE__, tmpfile, orgfile); \ + return -1; \ + } \ + remove(tmpfile); \ + return 1; \ +/* end REN_IF_DIFF */ + + + FILE *fp_new, *fp_org; + int len_new, len_org; + char *arr_new, *arr_org; + int cmp; + + char orgfile[4096]; + + strcpy(orgfile, tmpfile); + orgfile[strlen(orgfile) - strlen(TMP_EXT)] = '\0'; /* strip '.tmp' */ + + fp_org= fopen(orgfile, "rb"); + + if(fp_org==NULL) { + REN_IF_DIFF; + } + + fp_new= fopen(tmpfile, "rb"); + + if(fp_new==NULL) { + /* shouldn't happen, just to be safe */ + fprintf(stderr, "%s:%d, open error: \"%s\"\n", __FILE__, __LINE__, tmpfile); + return -1; + } + + fseek(fp_new, 0L, SEEK_END); len_new = ftell(fp_new); fseek(fp_new, 0L, SEEK_SET); + fseek(fp_org, 0L, SEEK_END); len_org = ftell(fp_org); fseek(fp_org, 0L, SEEK_SET); + + + if(len_new != len_org) { + fclose(fp_new); + fclose(fp_org); + REN_IF_DIFF; + } + + /* now compare the files... */ + arr_new= MEM_mallocN(sizeof(char)*len_new, "rna_cmp_file_new"); + arr_org= MEM_mallocN(sizeof(char)*len_org, "rna_cmp_file_org"); + + fread(arr_new, sizeof(char), len_new, fp_new); + fread(arr_org, sizeof(char), len_org, fp_org); + + fclose(fp_new); + fclose(fp_org); + + cmp= memcmp(arr_new, arr_org, len_new); + + MEM_freeN(arr_new); + MEM_freeN(arr_org); + + if(cmp) { + REN_IF_DIFF; + } + else { + remove(tmpfile); + return 0; + } + +#undef REN_IF_DIFF +} + + + /* Sorting */ static int cmp_struct(const void *a, const void *b) @@ -1211,13 +1290,14 @@ static void rna_def_function_funcs(FILE *f, StructDefRNA *dsrna, FunctionDefRNA StructRNA *srna; FunctionRNA *func; PropertyDefRNA *dparm; - char *funcname, *ptrstr; - int first; + PropertyType type; + char *funcname, *ptrstr, *valstr; + int flag, pout, cptr, first; srna= dsrna->srna; func= dfunc->func; - if(func->flag & FUNC_REGISTER) + if(!dfunc->call) return; funcname= rna_alloc_function_name(srna->identifier, func->identifier, "call"); @@ -1228,22 +1308,39 @@ static void rna_def_function_funcs(FILE *f, StructDefRNA *dsrna, FunctionDefRNA /* variable definitions */ if((func->flag & FUNC_NO_SELF)==0) { + if(func->flag & FUNC_USE_SELF_ID) + fprintf(f, "\tstruct ID *_selfid;\n"); + if(dsrna->dnaname) fprintf(f, "\tstruct %s *_self;\n", dsrna->dnaname); else fprintf(f, "\tstruct %s *_self;\n", srna->identifier); } dparm= dfunc->cont.properties.first; for(; dparm; dparm= dparm->next) { - if(dparm->prop->arraydimension) + type = dparm->prop->type; + flag = dparm->prop->flag; + pout = (flag & PROP_OUTPUT); + cptr = ((type == PROP_POINTER) && !(flag & PROP_RNAPTR)); + + if(dparm->prop==func->c_ret) + ptrstr= cptr || dparm->prop->arraydimension ? "*" : ""; + /* XXX only arrays and strings are allowed to be dynamic, is this checked anywhere? */ + else if (cptr || (flag & PROP_DYNAMIC)) + ptrstr= pout ? "**" : "*"; + /* fixed size arrays and RNA pointers are pre-allocated on the ParameterList stack, pass a pointer to it */ + else if (type == PROP_POINTER || dparm->prop->arraydimension) ptrstr= "*"; - else if(dparm->prop==func->c_ret) - ptrstr= ((dparm->prop->type == PROP_POINTER) && !(dparm->prop->flag & PROP_RNAPTR))? "*": ""; - else if ((dparm->prop->flag & PROP_RETURN)) - ptrstr= ((dparm->prop->type == PROP_POINTER) && !(dparm->prop->flag & PROP_RNAPTR))? "**": "*"; + /* PROP_THICK_WRAP strings are pre-allocated on the ParameterList stack, but type name for string props is already char*, so leave empty */ + else if (type == PROP_STRING && (flag & PROP_THICK_WRAP)) + ptrstr= ""; else - ptrstr= (dparm->prop->type == PROP_POINTER)? "*": ""; + ptrstr= pout ? "*" : ""; fprintf(f, "\t%s%s %s%s;\n", rna_type_struct(dparm->prop), rna_parameter_type_name(dparm->prop), ptrstr, dparm->prop->identifier); + + /* for dynamic parameters we pass an additional int for the length of the parameter */ + if (flag & PROP_DYNAMIC) + fprintf(f, "\tint %s%s_len;\n", pout ? "*" : "", dparm->prop->identifier); } fprintf(f, "\tchar *_data"); @@ -1253,6 +1350,9 @@ static void rna_def_function_funcs(FILE *f, StructDefRNA *dsrna, FunctionDefRNA /* assign self */ if((func->flag & FUNC_NO_SELF)==0) { + if(func->flag & FUNC_USE_SELF_ID) + fprintf(f, "\t_selfid= (struct ID*)_ptr->id.data;\n"); + if(dsrna->dnaname) fprintf(f, "\t_self= (struct %s *)_ptr->data;\n", dsrna->dnaname); else fprintf(f, "\t_self= (struct %s *)_ptr->data;\n", srna->identifier); } @@ -1261,26 +1361,45 @@ static void rna_def_function_funcs(FILE *f, StructDefRNA *dsrna, FunctionDefRNA dparm= dfunc->cont.properties.first; for(; dparm; dparm= dparm->next) { - if ((dparm->prop->flag & PROP_RETURN)) - ptrstr= ""; - else - ptrstr= "*"; + type = dparm->prop->type; + flag = dparm->prop->flag; + pout = (flag & PROP_OUTPUT); + cptr = ((type == PROP_POINTER) && !(flag & PROP_RNAPTR)); if(dparm->prop==func->c_ret) fprintf(f, "\t_retdata= _data;\n"); - else if(dparm->prop->arraydimension) - fprintf(f, "\t%s= ((%s%s*)_data);\n", dparm->prop->identifier, rna_type_struct(dparm->prop), rna_parameter_type_name(dparm->prop)); - else if(dparm->prop->type == PROP_POINTER) { - if(dparm->prop->flag & PROP_RNAPTR) - fprintf(f, "\t%s= ((%s%s*)_data);\n", dparm->prop->identifier, rna_type_struct(dparm->prop), rna_parameter_type_name(dparm->prop)); - else - fprintf(f, "\t%s= %s((%s%s**)_data);\n", dparm->prop->identifier, ptrstr, rna_type_struct(dparm->prop), rna_parameter_type_name(dparm->prop)); + else { + if (cptr || (flag & PROP_DYNAMIC)) { + ptrstr= "**"; + valstr= "*"; + } + else if (type == PROP_POINTER || dparm->prop->arraydimension) { + ptrstr= "*"; + valstr= ""; + } + else if (type == PROP_STRING && (flag & PROP_THICK_WRAP)) { + ptrstr= ""; + valstr= ""; + } + else { + ptrstr= "*"; + valstr= "*"; + } + + fprintf(f, "\t%s= ", dparm->prop->identifier); + + if (!pout) + fprintf(f, "%s", valstr); + + fprintf(f, "((%s%s%s)_data);\n", rna_type_struct(dparm->prop), rna_parameter_type_name(dparm->prop), ptrstr); + + /* this must be kept in sync with RNA_parameter_length_get_data, we could just call the function directly, but this is faster */ + if (flag & PROP_DYNAMIC) + fprintf(f, "\t%s_len= %s((int *)(_data+%d));\n", dparm->prop->identifier, pout ? "" : "*", rna_parameter_size(dparm->prop)); } - else - fprintf(f, "\t%s= %s((%s%s*)_data);\n", dparm->prop->identifier, ptrstr, rna_type_struct(dparm->prop), rna_parameter_type_name(dparm->prop)); if(dparm->next) - fprintf(f, "\t_data+= %d;\n", rna_parameter_size(dparm->prop)); + fprintf(f, "\t_data+= %d;\n", rna_parameter_size_alloc(dparm->prop)); } if(dfunc->call) { @@ -1292,6 +1411,9 @@ static void rna_def_function_funcs(FILE *f, StructDefRNA *dsrna, FunctionDefRNA first= 1; if((func->flag & FUNC_NO_SELF)==0) { + if(func->flag & FUNC_USE_SELF_ID) + fprintf(f, "_selfid, "); + fprintf(f, "_self"); first= 0; } @@ -1317,6 +1439,9 @@ static void rna_def_function_funcs(FILE *f, StructDefRNA *dsrna, FunctionDefRNA first= 0; fprintf(f, "%s", dparm->prop->identifier); + + if (dparm->prop->flag & PROP_DYNAMIC) + fprintf(f, ", %s_len", dparm->prop->identifier); } fprintf(f, ");\n"); @@ -1558,7 +1683,8 @@ static void rna_generate_static_parameter_prototypes(BlenderRNA *brna, StructRNA FunctionRNA *func; PropertyDefRNA *dparm; StructDefRNA *dsrna; - int first; + PropertyType type; + int flag, pout, cptr, first; char *ptrstr; dsrna= rna_find_struct_def(srna); @@ -1589,6 +1715,9 @@ static void rna_generate_static_parameter_prototypes(BlenderRNA *brna, StructRNA /* self, context and reports parameters */ if((func->flag & FUNC_NO_SELF)==0) { + if(func->flag & FUNC_USE_SELF_ID) + fprintf(f, "struct ID *_selfid, "); + if(dsrna->dnaname) fprintf(f, "struct %s *_self", dsrna->dnaname); else fprintf(f, "struct %s *_self", srna->identifier); first= 0; @@ -1608,23 +1737,33 @@ static void rna_generate_static_parameter_prototypes(BlenderRNA *brna, StructRNA /* defined parameters */ for(dparm= dfunc->cont.properties.first; dparm; dparm= dparm->next) { + type = dparm->prop->type; + flag = dparm->prop->flag; + pout = (flag & PROP_OUTPUT); + cptr = ((type == PROP_POINTER) && !(flag & PROP_RNAPTR)); + if(dparm->prop==func->c_ret) continue; - if(!first) fprintf(f, ", "); - first= 0; - - if((dparm->prop->flag & PROP_RETURN)) + if (cptr || (flag & PROP_DYNAMIC)) + ptrstr= pout ? "**" : "*"; + else if (type == PROP_POINTER || dparm->prop->arraydimension) ptrstr= "*"; - else + else if (type == PROP_STRING && (flag & PROP_THICK_WRAP)) ptrstr= ""; + else + ptrstr= pout ? "*" : ""; + + if(!first) fprintf(f, ", "); + first= 0; - if(dparm->prop->arraydimension) + if(!(flag & PROP_DYNAMIC) && dparm->prop->arraydimension) fprintf(f, "%s%s %s[%d]", rna_type_struct(dparm->prop), rna_parameter_type_name(dparm->prop), dparm->prop->identifier, dparm->prop->totarraylength); - else if(dparm->prop->type == PROP_POINTER) - fprintf(f, "%s%s *%s%s", rna_type_struct(dparm->prop), rna_parameter_type_name(dparm->prop), (dparm->prop->flag & PROP_RNAPTR) ? "" : ptrstr, dparm->prop->identifier); else fprintf(f, "%s%s %s%s", rna_type_struct(dparm->prop), rna_parameter_type_name(dparm->prop), ptrstr, dparm->prop->identifier); + + if (flag & PROP_DYNAMIC) + fprintf(f, ", int %s%s_len", pout ? "*" : "", dparm->prop->identifier); } fprintf(f, ");\n"); @@ -1634,16 +1773,19 @@ static void rna_generate_static_function_prototypes(BlenderRNA *brna, StructRNA { FunctionRNA *func; FunctionDefRNA *dfunc; - - fprintf(f, "/* Repeated prototypes to detect errors */\n\n"); + int first= 1; for(func= srna->functions.first; func; func= func->cont.next) { - if(func->flag & FUNC_REGISTER) - continue; - dfunc= rna_find_function_def(func); - if(dfunc->call) + + if(dfunc->call) { + if(first) { + fprintf(f, "/* Repeated prototypes to detect errors */\n\n"); + first= 0; + } + rna_generate_static_parameter_prototypes(brna, srna, dfunc, f); + } } fprintf(f, "\n"); @@ -1996,6 +2138,7 @@ RNAProcessItem PROCESS_ITEMS[]= { {"rna_texture.c", NULL, RNA_def_texture}, {"rna_action.c", "rna_action_api.c", RNA_def_action}, {"rna_animation.c", "rna_animation_api.c", RNA_def_animation}, + {"rna_animviz.c", NULL, RNA_def_animviz}, {"rna_actuator.c", NULL, RNA_def_actuator}, {"rna_armature.c", "rna_armature_api.c", RNA_def_armature}, {"rna_boid.c", NULL, RNA_def_boid}, @@ -2330,10 +2473,10 @@ static void rna_generate_header_cpp(BlenderRNA *brna, FILE *f) fprintf(f, "}\n\n#endif /* __RNA_BLENDER_CPP_H__ */\n\n"); } -static void make_bad_file(char *file) +static void make_bad_file(char *file, int line) { FILE *fp= fopen(file, "w"); - fprintf(fp, "ERROR! Cannot make correct RNA file, STUPID!\n"); + fprintf(fp, "#error \"Error! can't make correct RNA file from %s:%d, STUPID!\"\n", __FILE__, line); fclose(fp); } @@ -2363,12 +2506,12 @@ static int rna_preprocess(char *outfile) /* create RNA_blender_cpp.h */ strcpy(deffile, outfile); - strcat(deffile, "RNA_blender_cpp.h"); + strcat(deffile, "RNA_blender_cpp.h" TMP_EXT); status= (DefRNA.error != 0); if(status) { - make_bad_file(deffile); + make_bad_file(deffile, __LINE__); } else { file = fopen(deffile, "w"); @@ -2380,11 +2523,12 @@ static int rna_preprocess(char *outfile) else { rna_generate_header_cpp(brna, file); fclose(file); - status= (DefRNA.error != 0); } } + replace_if_different(deffile); + rna_sort(brna); /* create rna_gen_*.c files */ @@ -2392,10 +2536,10 @@ static int rna_preprocess(char *outfile) strcpy(deffile, outfile); strcat(deffile, PROCESS_ITEMS[i].filename); deffile[strlen(deffile)-2] = '\0'; - strcat(deffile, "_gen.c"); + strcat(deffile, "_gen.c" TMP_EXT); if(status) { - make_bad_file(deffile); + make_bad_file(deffile, __LINE__); } else { file = fopen(deffile, "w"); @@ -2407,18 +2551,19 @@ static int rna_preprocess(char *outfile) else { rna_generate(brna, file, PROCESS_ITEMS[i].filename, PROCESS_ITEMS[i].api_filename); fclose(file); - status= (DefRNA.error != 0); } } + + replace_if_different(deffile); } /* create RNA_blender.h */ strcpy(deffile, outfile); - strcat(deffile, "RNA_blender.h"); + strcat(deffile, "RNA_blender.h" TMP_EXT); if(status) { - make_bad_file(deffile); + make_bad_file(deffile, __LINE__); } else { file = fopen(deffile, "w"); @@ -2430,11 +2575,12 @@ static int rna_preprocess(char *outfile) else { rna_generate_header(brna, file); fclose(file); - status= (DefRNA.error != 0); } } + replace_if_different(deffile); + /* free RNA */ RNA_define_free(brna); RNA_free(brna); diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c index e931f08c3a3..ac354366c25 100644 --- a/source/blender/makesrna/intern/rna_ID.c +++ b/source/blender/makesrna/intern/rna_ID.c @@ -93,6 +93,18 @@ void rna_ID_name_set(PointerRNA *ptr, const char *value) test_idbutton(id->name+2); } +static int rna_ID_name_editable(PointerRNA *ptr) +{ + ID *id= (ID*)ptr->data; + + if (GS(id->name) == ID_VF) { + if (strcmp(id->name+2, "<builtin>")==0) + return 0; + } + + return 1; +} + short RNA_type_to_ID_code(StructRNA *type) { if(RNA_struct_is_a(type, &RNA_Action)) return ID_AC; @@ -365,6 +377,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_editable_func(prop, "rna_ID_name_editable"); RNA_def_property_update(prop, NC_ID|NA_RENAME, NULL); RNA_def_struct_name_property(srna, prop); diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 61fdbb27507..b641f6b3105 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -36,6 +36,7 @@ #include "BLI_dynstr.h" #include "BLI_ghash.h" +#include "BKE_animsys.h" #include "BKE_context.h" #include "BKE_idprop.h" #include "BKE_main.h" @@ -191,6 +192,30 @@ PointerRNA rna_pointer_inherit_refine(PointerRNA *ptr, StructRNA *type, void *da return result; } +/**/ +void RNA_pointer_recast(PointerRNA *ptr, PointerRNA *r_ptr) +{ +#if 0 // works but this case if covered by more general code below. + if(RNA_struct_is_ID(ptr->type)) { + /* simple case */ + RNA_id_pointer_create(ptr->id.data, r_ptr); + } + else +#endif + { + StructRNA *base; + PointerRNA t_ptr; + *r_ptr= *ptr; /* initialize as the same incase cant recast */ + + for(base=ptr->type->base; base; base=base->base) { + t_ptr= rna_pointer_inherit_refine(ptr, base, ptr->data); + if(t_ptr.type && t_ptr.type != ptr->type) { + *r_ptr= t_ptr; + } + } + } +} + /* ID Properties */ /* return a UI local ID prop definition for this prop */ @@ -918,15 +943,25 @@ EnumPropertyItem DummyRNA_NULL_items[] = { {0, NULL, 0, NULL, NULL} }; +/* Reuse for dynamic types with default value */ +EnumPropertyItem DummyRNA_DEFAULT_items[] = { + {0, "DEFAULT", 0, "Default", ""}, + {0, NULL, 0, NULL, NULL} +}; + void RNA_property_enum_items(bContext *C, PointerRNA *ptr, PropertyRNA *prop, EnumPropertyItem **item, int *totitem, int *free) { EnumPropertyRNA *eprop= (EnumPropertyRNA*)rna_ensure_property(prop); *free= 0; - if(eprop->itemf && C) { + if(eprop->itemf && (C != NULL || (prop->flag & PROP_ENUM_NO_CONTEXT))) { int tot= 0; - *item= eprop->itemf(C, ptr, free); + + if (prop->flag & PROP_ENUM_NO_CONTEXT) + *item= eprop->itemf(NULL, ptr, free); + else + *item= eprop->itemf(C, ptr, free); if(totitem) { if(*item) { @@ -1060,7 +1095,7 @@ int RNA_property_editable(PointerRNA *ptr, PropertyRNA *prop) id= ptr->id.data; - return (flag & PROP_EDITABLE) && (!id || !id->lib || (flag & PROP_LIB_EXCEPTION)); + return (flag & PROP_EDITABLE) && (!id || !id->lib || (prop->flag & PROP_LIB_EXCEPTION)); } /* same as RNA_property_editable(), except this checks individual items in an array */ @@ -1070,34 +1105,32 @@ int RNA_property_editable_index(PointerRNA *ptr, PropertyRNA *prop, int index) int flag; prop= rna_ensure_property(prop); + + flag= prop->flag; - /* 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); + if(prop->editable) + flag &= prop->editable(ptr); + + if (prop->itemeditable) + flag &= prop->itemeditable(ptr, index); + id= ptr->id.data; - - return (flag & PROP_EDITABLE) && (!id || !id->lib || (flag & PROP_LIB_EXCEPTION)); + + return (flag & PROP_EDITABLE) && (!id || !id->lib || (prop->flag & PROP_LIB_EXCEPTION)); } int RNA_property_animateable(PointerRNA *ptr, PropertyRNA *prop) { - int flag; - + /* check that base ID-block can support animation data */ + if (!id_type_can_have_animdata(ptr->id.data)) + return 0; + prop= rna_ensure_property(prop); if(!(prop->flag & PROP_ANIMATEABLE)) return 0; - if(prop->editable) - flag= prop->editable(ptr); - else - flag= prop->flag; - - return (flag & PROP_EDITABLE); + return (prop->flag & PROP_EDITABLE); } int RNA_property_animated(PointerRNA *ptr, PropertyRNA *prop) @@ -2021,7 +2054,7 @@ int RNA_property_collection_remove(PointerRNA *ptr, PropertyRNA *prop, int key) if(key+1 < len) { /* move element to be removed to the back */ memcpy(&tmp, &array[key], sizeof(IDProperty)); - memmove(array+key, array+key+1, sizeof(IDProperty)*(len-key+1)); + memmove(array+key, array+key+1, sizeof(IDProperty)*(len-(key+1))); memcpy(&array[len-1], &tmp, sizeof(IDProperty)); } @@ -2213,6 +2246,7 @@ int RNA_property_collection_raw_array(PointerRNA *ptr, PropertyRNA *prop, Proper case PROP_RAW_INT: ((int*)raw.array)[a] = (int)var; break; \ case PROP_RAW_FLOAT: ((float*)raw.array)[a] = (float)var; break; \ case PROP_RAW_DOUBLE: ((double*)raw.array)[a] = (double)var; break; \ + default: break; \ } \ } @@ -3584,7 +3618,7 @@ ParameterList *RNA_parameter_list_create(ParameterList *parms, PointerRNA *ptr, /* allocate data */ for(parm= func->cont.properties.first; parm; parm= parm->next) - tot+= rna_parameter_size(parm); + tot+= rna_parameter_size_alloc(parm); parms->data= MEM_callocN(tot, "RNA_parameter_list_create"); parms->func= func; @@ -3625,7 +3659,11 @@ ParameterList *RNA_parameter_list_create(ParameterList *parms, PointerRNA *ptr, } } - data= ((char*)data) + size; + /* set length to 0 */ + if (parm->flag & PROP_DYNAMIC) + *((int *)(((char *)data) + size))= 0; + + data= ((char*)data) + rna_parameter_size_alloc(parm); } return parms; @@ -3647,7 +3685,7 @@ void RNA_parameter_list_free(ParameterList *parms) MEM_freeN(array); } - tot+= rna_parameter_size(parm); + tot+= rna_parameter_size_alloc(parm); } MEM_freeN(parms->data); @@ -3673,7 +3711,7 @@ void RNA_parameter_list_begin(ParameterList *parms, ParameterIterator *iter) iter->offset= 0; if(iter->valid) { - iter->size= rna_parameter_size(iter->parm); + iter->size= rna_parameter_size_alloc(iter->parm); iter->data= (((char*)iter->parms->data)+iter->offset); ptype= RNA_property_type(iter->parm); } @@ -3688,7 +3726,7 @@ void RNA_parameter_list_next(ParameterIterator *iter) iter->valid= iter->parm != NULL; if(iter->valid) { - iter->size= rna_parameter_size(iter->parm); + iter->size= rna_parameter_size_alloc(iter->parm); iter->data= (((char*)iter->parms->data)+iter->offset); ptype= RNA_property_type(iter->parm); } @@ -3759,6 +3797,51 @@ void RNA_parameter_set_lookup(ParameterList *parms, const char *identifier, void RNA_parameter_set(parms, parm, value); } +int RNA_parameter_length_get(ParameterList *parms, PropertyRNA *parm) +{ + ParameterIterator iter; + int len= 0; + + RNA_parameter_list_begin(parms, &iter); + + for(; iter.valid; RNA_parameter_list_next(&iter)) + if(iter.parm==parm) + break; + + if(iter.valid) + len= RNA_parameter_length_get_data(parms, parm, iter.data); + + RNA_parameter_list_end(&iter); + + return len; +} + +void RNA_parameter_length_set(ParameterList *parms, PropertyRNA *parm, int length) +{ + ParameterIterator iter; + + RNA_parameter_list_begin(parms, &iter); + + for(; iter.valid; RNA_parameter_list_next(&iter)) + if(iter.parm==parm) + break; + + if(iter.valid) + RNA_parameter_length_set_data(parms, parm, iter.data, length); + + RNA_parameter_list_end(&iter); +} + +int RNA_parameter_length_get_data(ParameterList *parms, PropertyRNA *parm, void *data) +{ + return *((int *)(((char *)data) + rna_parameter_size(parm))); +} + +void RNA_parameter_length_set_data(ParameterList *parms, PropertyRNA *parm, void *data, int length) +{ + *((int *)(((char *)data) + rna_parameter_size(parm)))= length; +} + int RNA_function_call(bContext *C, ReportList *reports, PointerRNA *ptr, FunctionRNA *func, ParameterList *parms) { if(func->call) { @@ -4003,7 +4086,7 @@ int RNA_function_call_direct_va(bContext *C, ReportList *reports, PointerRNA *pt retdata= iter.data; continue; } - else if (flag & PROP_RETURN) { + else if (flag & PROP_OUTPUT) { continue; } diff --git a/source/blender/makesrna/intern/rna_action.c b/source/blender/makesrna/intern/rna_action.c index b9c5661b771..38facec1415 100644 --- a/source/blender/makesrna/intern/rna_action.c +++ b/source/blender/makesrna/intern/rna_action.c @@ -64,40 +64,60 @@ static void rna_def_dopesheet(BlenderRNA *brna) 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."); - + RNA_def_struct_ui_text(srna, "DopeSheet", "Settings for filtering the channels shown in Animation Editors."); + + /* Source of DopeSheet 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)."); - + + /* General Filtering Settings */ 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."); + + /* Object Group Filtering Settings */ + prop= RNA_def_property(srna, "only_group_objects", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_ONLYOBGROUP); + RNA_def_property_ui_text(prop, "Only Objects in Group", "Only include channels from Objects in the specified Group."); + RNA_def_property_ui_icon(prop, ICON_GROUP, 0); 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."); + + prop= RNA_def_property(srna, "filtering_group", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "filter_grp"); + RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Filtering Group", "Group that included Object should be a member of."); RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); - + + /* NLA Specific Settings */ + 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); + + /* Summary Settings (DopeSheet editors only) */ 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. (DopeSheet Editors only)"); 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, "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 Editors Only)"); + RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + + + /* General DataType Filtering Settings */ 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_mesh", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOMESH); RNA_def_property_ui_text(prop, "Display Meshes", "Include visualization of Mesh related Animation data."); @@ -109,71 +129,60 @@ static void rna_def_dopesheet(BlenderRNA *brna) 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 Editors Only)"); - RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); } static void rna_def_action_group(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_action_api.c b/source/blender/makesrna/intern/rna_action_api.c index 991a8251cc5..f1f3800db42 100644 --- a/source/blender/makesrna/intern/rna_action_api.c +++ b/source/blender/makesrna/intern/rna_action_api.c @@ -41,40 +41,35 @@ #include "DNA_anim_types.h" #include "DNA_curve_types.h" -/* XXX disabled until RNA allows returning arrays */ -#if 0 /* return frame range of all curves (min, max) or (0, 1) if there are no keys */ -int *rna_Action_get_frame_range(bAction *act, int *ret_length) +void rna_Action_get_frame_range(bAction *act, int **frame_range, int *length_r) { int *ret; float start, end; calc_action_range(act, &start, &end, 1); - *ret_length= 2; - ret= MEM_callocN(*ret_length * sizeof(int), "rna_Action_get_frame_range"); + *length_r= 2; + ret= MEM_callocN(*length_r * sizeof(int), "rna_Action_get_frame_range"); ret[0]= (int)start; ret[1]= (int)end; - - return ret; + + *frame_range= ret; } -#endif #else void RNA_api_action(StructRNA *srna) { -#if 0 FunctionRNA *func; PropertyRNA *parm; func= RNA_def_function(srna, "get_frame_range", "rna_Action_get_frame_range"); RNA_def_function_ui_description(func, "Get action frame range as a (min, max) tuple."); parm= RNA_def_int_array(func, "frame_range", 1, NULL, 0, 0, "", "Action frame range.", 0, 0); - RNA_def_property_flag(parm, PROP_DYNAMIC_ARRAY); - RNA_def_function_return(func, parm); -#endif + RNA_def_property_flag(parm, PROP_DYNAMIC); + RNA_def_function_output(func, parm); } #endif diff --git a/source/blender/makesrna/intern/rna_animviz.c b/source/blender/makesrna/intern/rna_animviz.c new file mode 100644 index 00000000000..261cfc83b6c --- /dev/null +++ b/source/blender/makesrna/intern/rna_animviz.c @@ -0,0 +1,350 @@ +/** + * $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): Blender Foundation (2010), Joshua Leung + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include <stdlib.h> + +#include "RNA_access.h" +#include "RNA_define.h" +#include "RNA_types.h" +#include "RNA_enum_types.h" + +#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 PointerRNA rna_AnimViz_onion_skinning_get(PointerRNA *ptr) +{ + return rna_pointer_inherit_refine(ptr, &RNA_AnimVizOnionSkinning, ptr->data); +} + +static PointerRNA rna_AnimViz_motion_paths_get(PointerRNA *ptr) +{ + return rna_pointer_inherit_refine(ptr, &RNA_AnimVizMotionPaths, ptr->data); +} + +static void rna_AnimViz_ghost_start_frame_set(PointerRNA *ptr, int value) +{ + bAnimVizSettings *data= (bAnimVizSettings*)ptr->data; + + CLAMP(value, 1, data->ghost_ef); + data->ghost_sf= value; +} + +static void rna_AnimViz_ghost_end_frame_set(PointerRNA *ptr, int value) +{ + bAnimVizSettings *data= (bAnimVizSettings*)ptr->data; + + CLAMP(value, data->ghost_sf, (int)(MAXFRAMEF/2)); + data->ghost_ef= value; +} + +static void rna_AnimViz_path_start_frame_set(PointerRNA *ptr, int value) +{ + bAnimVizSettings *data= (bAnimVizSettings*)ptr->data; + + CLAMP(value, 1, data->path_ef); + data->path_sf= value; +} + +static void rna_AnimViz_path_end_frame_set(PointerRNA *ptr, int value) +{ + bAnimVizSettings *data= (bAnimVizSettings*)ptr->data; + + CLAMP(value, data->path_sf, (int)(MAXFRAMEF/2)); + data->path_ef= value; +} + +#else + +void rna_def_motionpath_common(StructRNA *srna) +{ + PropertyRNA *prop; + + prop= RNA_def_property(srna, "motion_path", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "mpath"); + RNA_def_property_ui_text(prop, "Motion Path", "Motion Path for this element."); +} + +static void rna_def_animviz_motionpath_vert(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna= RNA_def_struct(brna, "MotionPathVert", NULL); + RNA_def_struct_sdna(srna, "bMotionPathVert"); + RNA_def_struct_ui_text(srna, "Motion Path Cache Point", "Cached location on path."); + + prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_XYZ); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Coordinates", ""); + + prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", MOTIONPATH_VERT_SEL); + RNA_def_property_ui_text(prop, "Selected", "Path point is selected for editing."); +} + +static void rna_def_animviz_motion_path(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna= RNA_def_struct(brna, "MotionPath", NULL); + RNA_def_struct_sdna(srna, "bMotionPath"); + RNA_def_struct_ui_text(srna, "Motion Path", "Cache of the worldspace positions of an element over a frame range."); + + /* Collections */ + prop= RNA_def_property(srna, "points", PROP_COLLECTION, PROP_NONE); + RNA_def_property_collection_sdna(prop, NULL, "points", "length"); + RNA_def_property_struct_type(prop, "MotionPathVert"); + RNA_def_property_ui_text(prop, "Motion Path Points", "Cached positions per frame"); + + /* Playback Ranges */ + prop= RNA_def_property(srna, "start_frame", PROP_INT, PROP_TIME); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Start Frame", "Starting frame of the stored range."); + + prop= RNA_def_property(srna, "end_frame", PROP_INT, PROP_TIME); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "End Frame", "End frame of the stored range."); + + prop= RNA_def_property(srna, "length", PROP_INT, PROP_TIME); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Length", "Number of frames cached."); + + /* Settings */ + prop= RNA_def_property(srna, "use_bone_head", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", MOTIONPATH_FLAG_BHEAD); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); // xxx + RNA_def_property_ui_text(prop, "Use Bone Heads", "For PoseBone paths, use the bone head location when calculating this path."); + + prop= RNA_def_property(srna, "editing", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", MOTIONPATH_FLAG_EDIT); + RNA_def_property_ui_text(prop, "Edit Path", "Path is being edited."); +} + +/* --- */ + +static void rna_def_animviz_ghosts(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + static const EnumPropertyItem prop_type_items[] = { + {GHOST_TYPE_NONE, "NONE", 0, "No Ghosts", "Don not show any ghosts"}, + {GHOST_TYPE_ACFRA, "CURRENT_FRAME", 0, "Around Current Frame", "Show ghosts from around the current frame"}, + {GHOST_TYPE_RANGE, "RANGE", 0, "In Range", "Show ghosts for the specified frame range"}, + {GHOST_TYPE_KEYS, "KEYS", 0, "On Keyframes", "Show ghosts on keyframes"}, + {0, NULL, 0, NULL, NULL}}; + + + srna= RNA_def_struct(brna, "AnimVizOnionSkinning", NULL); + RNA_def_struct_sdna(srna, "bAnimVizSettings"); + RNA_def_struct_nested(brna, srna, "AnimViz"); + RNA_def_struct_ui_text(srna, "Onion Skinning Settings", "Onion Skinning settings for animation visualisation."); + + /* Enums */ + prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "ghost_type"); + RNA_def_property_enum_items(prop, prop_type_items); + RNA_def_property_ui_text(prop, "Type", "Method used for determining what ghosts get drawn."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */ + + /* Settings */ + prop= RNA_def_property(srna, "only_selected", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "ghost_flag", GHOST_FLAG_ONLYSEL); + RNA_def_property_ui_text(prop, "On Selected Bones Only", "For Pose-Mode drawing, only draw ghosts for selected bones."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */ + + prop= RNA_def_property(srna, "frame_step", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "ghost_step"); + RNA_def_property_range(prop, 1, 20); + RNA_def_property_ui_text(prop, "Frame Step", "Number of frames between ghosts shown (not for 'On Keyframes' Onion-skining method)."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */ + + /* Playback Ranges */ + prop= RNA_def_property(srna, "start_frame", PROP_INT, PROP_TIME); + RNA_def_property_int_sdna(prop, NULL, "ghost_sf"); + RNA_def_property_int_funcs(prop, NULL, "rna_AnimViz_ghost_start_frame_set", NULL); + RNA_def_property_ui_text(prop, "Start Frame", "Starting frame of range of Ghosts to display (not for 'Around Current Frame' Onion-skinning method)."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */ + + prop= RNA_def_property(srna, "end_frame", PROP_INT, PROP_TIME); + RNA_def_property_int_sdna(prop, NULL, "ghost_ef"); + RNA_def_property_int_funcs(prop, NULL, "rna_AnimViz_ghost_end_frame_set", NULL); + RNA_def_property_ui_text(prop, "End Frame", "End frame of range of Ghosts to display (not for 'Around Current Frame' Onion-skinning method)."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */ + + /* Around Current Ranges */ + prop= RNA_def_property(srna, "before_current", PROP_INT, PROP_TIME); + RNA_def_property_int_sdna(prop, NULL, "ghost_bc"); + RNA_def_property_range(prop, 0, 30); + RNA_def_property_ui_text(prop, "Before Current", "Number of frames to show before the current frame (only for 'Around Current Frame' Onion-skinning method)."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */ + + prop= RNA_def_property(srna, "after_current", PROP_INT, PROP_TIME); + RNA_def_property_int_sdna(prop, NULL, "ghost_ac"); + RNA_def_property_range(prop, 0, 30); + RNA_def_property_ui_text(prop, "After Current", "Number of frames to show after the current frame (only for 'Around Current Frame' Onion-skinning method)."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */ +} + +static void rna_def_animviz_paths(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + static const EnumPropertyItem prop_type_items[]= { + {MOTIONPATH_TYPE_RANGE, "RANGE", 0, "In Range", "Display Paths of poses within specified range."}, + {MOTIONPATH_TYPE_ACFRA, "CURRENT_FRAME", 0, "Around Frame", "Display Paths of poses within a fixed number of frames around the current frame."}, + {0, NULL, 0, NULL, NULL}}; + static const EnumPropertyItem prop_location_items[]= { + {MOTIONPATH_BAKE_HEADS, "HEADS", 0, "Heads", "Calculate bone paths from heads"}, + {0, "TAILS", 0, "Tails", "Calculate bone paths from tails"}, + {0, NULL, 0, NULL, NULL}}; + + srna= RNA_def_struct(brna, "AnimVizMotionPaths", NULL); + RNA_def_struct_sdna(srna, "bAnimVizSettings"); + RNA_def_struct_nested(brna, srna, "AnimViz"); + RNA_def_struct_ui_text(srna, "Motion Path Settings", "Motion Path settings for animation visualisation."); + + /* Enums */ + prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "path_type"); + RNA_def_property_enum_items(prop, prop_type_items); + RNA_def_property_ui_text(prop, "Paths Type", "Type of range to show for Motion Paths"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */ + + prop= RNA_def_property(srna, "bake_location", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "path_bakeflag"); + RNA_def_property_enum_items(prop, prop_location_items); + RNA_def_property_ui_text(prop, "Bake Location", "When calculating Bone Paths, use Head or Tips"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */ + + /* Settings */ + prop= RNA_def_property(srna, "show_frame_numbers", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "path_viewflag", MOTIONPATH_VIEW_FNUMS); + RNA_def_property_ui_text(prop, "Show Frame Numbers", "Show frame numbers on Motion Paths"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */ + + prop= RNA_def_property(srna, "highlight_keyframes", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "path_viewflag", MOTIONPATH_VIEW_KFRAS); + RNA_def_property_ui_text(prop, "Highlight Keyframes", "Emphasize position of keyframes on Motion Paths"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */ + + prop= RNA_def_property(srna, "show_keyframe_numbers", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "path_viewflag", MOTIONPATH_VIEW_KFNOS); + RNA_def_property_ui_text(prop, "Show Keyframe Numbers", "Show frame numbers of Keyframes on Motion Paths"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */ + + prop= RNA_def_property(srna, "frame_step", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "path_step"); + RNA_def_property_range(prop, 1, 100); + RNA_def_property_ui_text(prop, "Frame Step", "Number of frames between paths shown (not for 'On Keyframes' Onion-skining method)."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */ + + + /* Playback Ranges */ + prop= RNA_def_property(srna, "start_frame", PROP_INT, PROP_TIME); + RNA_def_property_int_sdna(prop, NULL, "path_sf"); + RNA_def_property_int_funcs(prop, NULL, "rna_AnimViz_path_start_frame_set", NULL); + RNA_def_property_ui_text(prop, "Start Frame", "Starting frame of range of paths to display/calculate (not for 'Around Current Frame' Onion-skinning method)."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */ + + prop= RNA_def_property(srna, "end_frame", PROP_INT, PROP_TIME); + RNA_def_property_int_sdna(prop, NULL, "path_ef"); + RNA_def_property_int_funcs(prop, NULL, "rna_AnimViz_path_end_frame_set", NULL); + RNA_def_property_ui_text(prop, "End Frame", "End frame of range of paths to display/calculate (not for 'Around Current Frame' Onion-skinning method)."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */ + + /* Around Current Ranges */ + prop= RNA_def_property(srna, "before_current", PROP_INT, PROP_TIME); + RNA_def_property_int_sdna(prop, NULL, "path_bc"); + RNA_def_property_range(prop, 1, MAXFRAMEF/2); + RNA_def_property_ui_text(prop, "Before Current", "Number of frames to show before the current frame (only for 'Around Current Frame' Onion-skinning method)."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */ + + prop= RNA_def_property(srna, "after_current", PROP_INT, PROP_TIME); + RNA_def_property_int_sdna(prop, NULL, "path_ac"); + RNA_def_property_range(prop, 1, MAXFRAMEF/2); + RNA_def_property_ui_text(prop, "After Current", "Number of frames to show after the current frame (only for 'Around Current Frame' Onion-skinning method)."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */ +} + +/* --- */ + +void rna_def_animviz_common(StructRNA *srna) +{ + PropertyRNA *prop; + + prop= RNA_def_property(srna, "animation_visualisation", PROP_POINTER, PROP_NONE); + RNA_def_property_flag(prop, PROP_NEVER_NULL); + RNA_def_property_pointer_sdna(prop, NULL, "avs"); + RNA_def_property_ui_text(prop, "Animation Visualisation", "Animation data for this datablock."); +} + +static void rna_def_animviz(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna= RNA_def_struct(brna, "AnimViz", NULL); + RNA_def_struct_sdna(srna, "bAnimVizSettings"); + RNA_def_struct_ui_text(srna, "Animation Visualisation", "Settings for the visualisation of motion."); + + /* onion-skinning settings (nested struct) */ + prop= RNA_def_property(srna, "onion_skinning", PROP_POINTER, PROP_NONE); + RNA_def_property_flag(prop, PROP_NEVER_NULL); + RNA_def_property_struct_type(prop, "AnimVizOnionSkinning"); + RNA_def_property_pointer_funcs(prop, "rna_AnimViz_onion_skinning_get", NULL, NULL); + RNA_def_property_ui_text(prop, "Onion Skinning", "Onion Skinning (ghosting) settings for visualisation."); + + /* motion path settings (nested struct) */ + prop= RNA_def_property(srna, "motion_paths", PROP_POINTER, PROP_NONE); + RNA_def_property_flag(prop, PROP_NEVER_NULL); + RNA_def_property_struct_type(prop, "AnimVizMotionPaths"); + RNA_def_property_pointer_funcs(prop, "rna_AnimViz_motion_paths_get", NULL, NULL); + RNA_def_property_ui_text(prop, "Motion Paths", "Motion Path settings for visualisation."); +} + +/* --- */ + +void RNA_def_animviz(BlenderRNA *brna) +{ + rna_def_animviz(brna); + rna_def_animviz_ghosts(brna); + rna_def_animviz_paths(brna); + + rna_def_animviz_motion_path(brna); + rna_def_animviz_motionpath_vert(brna); +} + +#endif diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c index 8f8dd4681ab..f9f6f9e5020 100644 --- a/source/blender/makesrna/intern/rna_brush.c +++ b/source/blender/makesrna/intern/rna_brush.c @@ -32,19 +32,11 @@ #include "DNA_brush_types.h" #include "DNA_texture_types.h" +#include "BLI_math.h" + #include "IMB_imbuf.h" -#include "WM_types.h" -EnumPropertyItem brush_sculpt_tool_items[] = { - {SCULPT_TOOL_DRAW, "DRAW", 0, "Draw", ""}, - {SCULPT_TOOL_SMOOTH, "SMOOTH", 0, "Smooth", ""}, - {SCULPT_TOOL_PINCH, "PINCH", 0, "Pinch", ""}, - {SCULPT_TOOL_INFLATE, "INFLATE", 0, "Inflate", ""}, - {SCULPT_TOOL_GRAB, "GRAB", 0, "Grab", ""}, - {SCULPT_TOOL_LAYER, "LAYER", 0, "Layer", ""}, - {SCULPT_TOOL_FLATTEN, "FLATTEN", 0, "Flatten", ""}, - {SCULPT_TOOL_CLAY, "CLAY", 0, "Clay", ""}, - {0, NULL, 0, NULL, NULL}}; +#include "WM_types.h" #ifdef RNA_RUNTIME @@ -60,20 +52,6 @@ static void rna_Brush_update(Main *bmain, Scene *scene, PointerRNA *ptr) WM_main_add_notifier(NC_BRUSH|NA_EDITED, br); } -static float rna_BrushTextureSlot_angle_get(PointerRNA *ptr) -{ - MTex *tex= (MTex*)ptr->data; - const float conv = 57.295779506; - return tex->rot * conv; -} - -static void rna_BrushTextureSlot_angle_set(PointerRNA *ptr, float v) -{ - MTex *tex= (MTex*)ptr->data; - const float conv = 0.017453293; - tex->rot = v * conv; -} - #else static void rna_def_brush_texture_slot(BlenderRNA *brna) @@ -93,8 +71,7 @@ static void rna_def_brush_texture_slot(BlenderRNA *brna) prop= RNA_def_property(srna, "angle", PROP_FLOAT, PROP_ANGLE); RNA_def_property_float_sdna(prop, NULL, "rot"); - RNA_def_property_range(prop, 0, 360); - RNA_def_property_float_funcs(prop, "rna_BrushTextureSlot_angle_get", "rna_BrushTextureSlot_angle_set", NULL); + RNA_def_property_range(prop, 0, M_PI*2); RNA_def_property_ui_text(prop, "Angle", "Defines brush texture rotation."); RNA_def_property_update(prop, 0, "rna_TextureSlot_update"); @@ -121,6 +98,34 @@ static void rna_def_brush(BlenderRNA *brna) {IMB_BLEND_ADD_ALPHA, "ADD_ALPHA", 0, "Add Alpha", "Add alpha while painting."}, {0, NULL, 0, NULL, NULL}}; + static EnumPropertyItem brush_sculpt_tool_items[] = { + {SCULPT_TOOL_DRAW, "DRAW", 0, "Draw", ""}, + {SCULPT_TOOL_SMOOTH, "SMOOTH", 0, "Smooth", ""}, + {SCULPT_TOOL_PINCH, "PINCH", 0, "Pinch", ""}, + {SCULPT_TOOL_INFLATE, "INFLATE", 0, "Inflate", ""}, + {SCULPT_TOOL_GRAB, "GRAB", 0, "Grab", ""}, + {SCULPT_TOOL_LAYER, "LAYER", 0, "Layer", ""}, + {SCULPT_TOOL_FLATTEN, "FLATTEN", 0, "Flatten", ""}, + {SCULPT_TOOL_CLAY, "CLAY", 0, "Clay", ""}, + {0, NULL, 0, NULL, NULL}}; + + static EnumPropertyItem brush_vertexpaint_tool_items[] = { + {0, "MIX", 0, "Mix", "Use mix blending mode while painting."}, + {1, "ADD", 0, "Add", "Use add blending mode while painting."}, + {2, "SUB", 0, "Subtract", "Use subtract blending mode while painting."}, + {3, "MUL", 0, "Multiply", "Use multiply blending mode while painting."}, + {4, "BLUR", 0, "Blur", "Blur the color with surrounding values"}, + {5, "LIGHTEN", 0, "Lighten", "Use lighten blending mode while painting."}, + {6, "DARKEN", 0, "Darken", "Use darken blending mode while painting."}, + {0, NULL, 0, NULL, NULL}}; + + static EnumPropertyItem brush_imagepaint_tool_items[] = { + {PAINT_TOOL_DRAW, "DRAW", 0, "Draw", ""}, + {PAINT_TOOL_SOFTEN, "SOFTEN", 0, "Soften", ""}, + {PAINT_TOOL_SMEAR, "SMEAR", 0, "Smear", ""}, + {PAINT_TOOL_CLONE, "CLONE", 0, "Clone", ""}, + {0, NULL, 0, NULL, NULL}}; + static const EnumPropertyItem prop_flip_direction_items[]= { {0, "ADD", 0, "Add", "Add effect of brush"}, {BRUSH_DIR_IN, "SUBTRACT", 0, "Subtract", "Subtract effect of brush"}, @@ -140,6 +145,16 @@ static void rna_def_brush(BlenderRNA *brna) RNA_def_property_enum_items(prop, brush_sculpt_tool_items); RNA_def_property_ui_text(prop, "Sculpt Tool", ""); RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "vertexpaint_tool", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_items(prop, brush_vertexpaint_tool_items); + RNA_def_property_ui_text(prop, "Vertex/Weight Paint Tool", ""); + RNA_def_property_update(prop, 0, "rna_Brush_update"); + + prop= RNA_def_property(srna, "imagepaint_tool", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_items(prop, brush_imagepaint_tool_items); + RNA_def_property_ui_text(prop, "Image Paint Tool", ""); + RNA_def_property_update(prop, 0, "rna_Brush_update"); prop= RNA_def_property(srna, "direction", PROP_ENUM, PROP_NONE); RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); @@ -182,6 +197,7 @@ static void rna_def_brush(BlenderRNA *brna) RNA_def_property_update(prop, 0, "rna_Brush_update"); prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_range(prop, 0.0, 1.0); RNA_def_property_float_sdna(prop, NULL, "rgb"); RNA_def_property_ui_text(prop, "Color", ""); RNA_def_property_update(prop, 0, "rna_Brush_update"); diff --git a/source/blender/makesrna/intern/rna_camera.c b/source/blender/makesrna/intern/rna_camera.c index e8538522d84..12dc790a1e8 100644 --- a/source/blender/makesrna/intern/rna_camera.c +++ b/source/blender/makesrna/intern/rna_camera.c @@ -22,9 +22,7 @@ * ***** END GPL LICENSE BLOCK ***** */ -#define _USE_MATH_DEFINES #include <stdlib.h> -#include <math.h> #include "RNA_define.h" #include "RNA_types.h" @@ -33,6 +31,8 @@ #include "DNA_camera_types.h" +#include "BLI_math.h" + #include "WM_types.h" #ifdef RNA_RUNTIME @@ -79,7 +79,6 @@ void RNA_def_camera(BlenderRNA *brna) prop= RNA_def_property(srna, "passepartout_alpha", PROP_FLOAT, PROP_FACTOR); RNA_def_property_float_sdna(prop, NULL, "passepartalpha"); - RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "Passepartout Alpha", "Opacity (alpha) of the darkened overlay in Camera view."); RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL); diff --git a/source/blender/makesrna/intern/rna_color.c b/source/blender/makesrna/intern/rna_color.c index c4edd00045b..a9ef608cd6c 100644 --- a/source/blender/makesrna/intern/rna_color.c +++ b/source/blender/makesrna/intern/rna_color.c @@ -229,11 +229,22 @@ static void rna_def_curvemapping(BlenderRNA *brna) RNA_def_property_float_funcs(prop, NULL, "rna_CurveMapping_white_level_set", NULL); } +static void rna_def_histogram(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna= RNA_def_struct(brna, "Histogram", NULL); + RNA_def_struct_ui_text(srna, "Histogram", "Statistical view of the levels of color in an image"); + +} + void RNA_def_color(BlenderRNA *brna) { rna_def_curvemappoint(brna); rna_def_curvemap(brna); rna_def_curvemapping(brna); + rna_def_histogram(brna); } #endif diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c index 5ec8d438c42..4671dbcd80d 100644 --- a/source/blender/makesrna/intern/rna_constraint.c +++ b/source/blender/makesrna/intern/rna_constraint.c @@ -29,6 +29,8 @@ #include "rna_internal.h" +#include "BLI_math.h" + #include "DNA_action_types.h" #include "DNA_constraint_types.h" #include "DNA_modifier_types.h" @@ -488,9 +490,9 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Pole Sub-Target", ""); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); - prop= RNA_def_property(srna, "pole_angle", PROP_FLOAT, PROP_ANGLE); // XXX - todo, convert to rad + prop= RNA_def_property(srna, "pole_angle", PROP_FLOAT, PROP_ANGLE); RNA_def_property_float_sdna(prop, NULL, "poleangle"); - RNA_def_property_range(prop, -180.0f, 180.f); + RNA_def_property_range(prop, -M_PI, M_PI); RNA_def_property_ui_text(prop, "Pole Angle", "Pole rotation offset."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); @@ -1190,21 +1192,21 @@ static void rna_def_constraint_rigid_body_joint(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Pivot Z", "Offset pivot on Z."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "axis_x", PROP_FLOAT, PROP_ANGLE); // XXX - convert to radians + prop= RNA_def_property(srna, "axis_x", PROP_FLOAT, PROP_ANGLE); RNA_def_property_float_sdna(prop, NULL, "axX"); - RNA_def_property_range(prop, -360.0, 360.f); + RNA_def_property_range(prop, -M_PI*2, M_PI*2); RNA_def_property_ui_text(prop, "Axis X", "Rotate pivot on X axis in degrees."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "axis_y", PROP_FLOAT, PROP_ANGLE); // XXX - convert to radians + prop= RNA_def_property(srna, "axis_y", PROP_FLOAT, PROP_ANGLE); RNA_def_property_float_sdna(prop, NULL, "axY"); - RNA_def_property_range(prop, -360.0, 360.f); + RNA_def_property_range(prop, -M_PI*2, M_PI*2); RNA_def_property_ui_text(prop, "Axis Y", "Rotate pivot on Y axis in degrees."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); - prop= RNA_def_property(srna, "axis_z", PROP_FLOAT, PROP_ANGLE); // XXX - convert to radians + prop= RNA_def_property(srna, "axis_z", PROP_FLOAT, PROP_ANGLE); RNA_def_property_float_sdna(prop, NULL, "axZ"); - RNA_def_property_range(prop, -360.0, 360.f); + RNA_def_property_range(prop, -M_PI*2, M_PI*2); RNA_def_property_ui_text(prop, "Axis Z", "Rotate pivot on Z axis in degrees."); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); @@ -1848,10 +1850,10 @@ void RNA_def_constraint(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Target Space", "Space that target is evaluated in."); /* flags */ - // XXX do we want to wrap this? prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_EXPAND); RNA_def_property_ui_text(prop, "Expanded", "Constraint's panel is expanded in UI."); + RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 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); diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index d3a56661813..91c296fd862 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -50,12 +50,6 @@ EnumPropertyItem beztriple_interpolation_mode_items[] = { {BEZT_IPO_LIN, "LINEAR", 0, "Linear", ""}, {BEZT_IPO_BEZ, "BEZIER", 0, "Bezier", ""}, {0, NULL, 0, NULL, NULL}}; - -EnumPropertyItem beztriple_keyframe_type_items[] = { - {BEZT_KEYTYPE_KEYFRAME, "KEYFRAME", 0, "Keyframe", ""}, - {BEZT_KEYTYPE_BREAKDOWN, "BREAKDOWN", 0, "Breakdown", ""}, - {BEZT_KEYTYPE_EXTREME, "EXTREME", 0, "Extreme", ""}, - {0, NULL, 0, NULL, NULL}}; #ifdef RNA_RUNTIME @@ -73,7 +67,7 @@ static StructRNA *rna_Curve_refine(PointerRNA *ptr) { Curve *cu= (Curve*)ptr->data; short obtype= curve_type(cu); - + if(obtype == OB_FONT) return &RNA_TextCurve; else if(obtype == OB_SURF) return &RNA_SurfaceCurve; else return &RNA_Curve; @@ -421,18 +415,6 @@ static void rna_def_beztriple(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Handle 2 Type", "Handle types"); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); - prop= RNA_def_property(srna, "interpolation", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "ipo"); - RNA_def_property_enum_items(prop, beztriple_interpolation_mode_items); - RNA_def_property_ui_text(prop, "Interpolation", "(For F-Curves Only) Interpolation to use for segment of curve starting from current BezTriple."); - //RNA_def_property_update(prop, 0, "rna_Curve_update_data"); // this should be an F-Curve update call instead... - - prop= RNA_def_property(srna, "keyframe_type", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "hide"); - RNA_def_property_enum_items(prop, beztriple_keyframe_type_items); - RNA_def_property_ui_text(prop, "Keyframe Type", "(For F-Curves only) The type of keyframe this control point defines."); - //RNA_def_property_update(prop, 0, "rna_Curve_update_data"); // this should be an F-Curve update call instead... - /* Vector values */ prop= RNA_def_property(srna, "handle1", PROP_FLOAT, PROP_TRANSLATION); RNA_def_property_array(prop, 3); @@ -634,6 +616,7 @@ static void rna_def_font(BlenderRNA *brna, StructRNA *srna) prop= RNA_def_property(srna, "font", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "vfont"); RNA_def_property_ui_text(prop, "Font", ""); + RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); prop= RNA_def_property(srna, "edit_format", PROP_POINTER, PROP_NONE); @@ -811,6 +794,7 @@ static void rna_def_curve(BlenderRNA *brna) prop= RNA_def_property(srna, "extrude", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "ext1"); RNA_def_property_ui_range(prop, 0, 100.0, 0.1, 0); + RNA_def_property_range(prop, 0.0, FLT_MAX); RNA_def_property_ui_text(prop, "Extrude", "Amount of curve extrusion when not using a bevel object."); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); @@ -823,23 +807,27 @@ static void rna_def_curve(BlenderRNA *brna) prop= RNA_def_property(srna, "resolution_u", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "resolu"); RNA_def_property_ui_range(prop, 1, 1024, 1, 0); + RNA_def_property_range(prop, 1, INT_MAX); RNA_def_property_ui_text(prop, "Resolution U", "Surface resolution in U direction."); 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_range(prop, 1, INT_MAX); RNA_def_property_ui_text(prop, "Resolution V", "Surface resolution in V direction."); 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"); RNA_def_property_ui_range(prop, 0, 1024, 1, 0); + RNA_def_property_range(prop, 0, INT_MAX); RNA_def_property_ui_text(prop, "Render Resolution U", "Surface resolution in U direction used while rendering. Zero skips this property."); prop= RNA_def_property(srna, "render_resolution_v", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "resolv_ren"); RNA_def_property_ui_range(prop, 0, 1024, 1, 0); + RNA_def_property_range(prop, 0, INT_MAX); RNA_def_property_ui_text(prop, "Render Resolution V", "Surface resolution in V direction used while rendering. Zero skips this property."); @@ -893,12 +881,6 @@ static void rna_def_curve(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Twist Smooth", "Smoothing iteration for tangents"); RNA_def_property_update(prop, 0, "rna_Curve_update_data"); - - - prop= RNA_def_property(srna, "retopo", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_RETOPO); - RNA_def_property_ui_text(prop, "Retopo", "Turn on the re-topology tool."); - RNA_def_property_update(prop, 0, "rna_Curve_update_data"); } static void rna_def_curve_nurb(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_define.c b/source/blender/makesrna/intern/rna_define.c index 767752af0ea..d2036c61f61 100644 --- a/source/blender/makesrna/intern/rna_define.c +++ b/source/blender/makesrna/intern/rna_define.c @@ -2419,17 +2419,26 @@ FunctionRNA *RNA_def_function_runtime(StructRNA *srna, const char *identifier, C return func; } -/* C return value only!, multiple rna returns can be done with RNA_def_function_return_mark */ +/* C return value only!, multiple RNA returns can be done with RNA_def_function_output */ void RNA_def_function_return(FunctionRNA *func, PropertyRNA *ret) { + if (ret->flag & PROP_DYNAMIC) { + fprintf(stderr, "RNA_def_function_return: %s.%s, dynamic values are not allowed as strict returns, use RNA_def_function_output instead.\n", func->identifier, ret->identifier); + return; + } + else if (ret->arraydimension) { + fprintf(stderr, "RNA_def_function_return: %s.%s, arrays are not allowed as strict returns, use RNA_def_function_output instead.\n", func->identifier, ret->identifier); + return; + } + func->c_ret= ret; - RNA_def_function_return_mark(func, ret); + RNA_def_function_output(func, ret); } -void RNA_def_function_return_mark(FunctionRNA *func, PropertyRNA *ret) +void RNA_def_function_output(FunctionRNA *func, PropertyRNA *ret) { - ret->flag|=PROP_RETURN; + ret->flag|= PROP_OUTPUT; } void RNA_def_function_flag(FunctionRNA *func, int flag) @@ -2448,6 +2457,7 @@ int rna_parameter_size(PropertyRNA *parm) int len= parm->totarraylength; /* only supports fixed length at the moment */ if(len > 0) { + /* XXX in other parts is mentioned that strings can be dynamic as well */ if (parm->flag & PROP_DYNAMIC) return sizeof(void *); @@ -2470,7 +2480,12 @@ int rna_parameter_size(PropertyRNA *parm) case PROP_FLOAT: return sizeof(float); case PROP_STRING: - return sizeof(char *); + /* return valyes dont store a pointer to the original */ + if(parm->flag & PROP_THICK_WRAP) { + StringPropertyRNA *sparm= (StringPropertyRNA*)parm; + return sizeof(char) * sparm->maxlength; + } else + return sizeof(char *); case PROP_POINTER: { #ifdef RNA_RUNTIME if(parm->flag & PROP_RNAPTR) @@ -2492,6 +2507,18 @@ int rna_parameter_size(PropertyRNA *parm) return sizeof(void *); } +/* this function returns the size of the memory allocated for the parameter, + useful for instance for memory alignment or for storing additional information */ +int rna_parameter_size_alloc(PropertyRNA *parm) +{ + int size = rna_parameter_size(parm); + + if (parm->flag & PROP_DYNAMIC) + size+= sizeof(int); + + return size; +} + /* Dynamic Enums */ void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, EnumPropertyItem *item) diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index 1fa731f512b..d571f5038ee 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -37,6 +37,8 @@ #include "MEM_guardedalloc.h" +#include "BLI_math.h" + #include "WM_types.h" EnumPropertyItem fmodifier_type_items[] = { @@ -51,6 +53,12 @@ EnumPropertyItem fmodifier_type_items[] = { {FMODIFIER_TYPE_LIMITS, "LIMITS", 0, "Limits", ""}, {0, NULL, 0, NULL, NULL}}; +EnumPropertyItem beztriple_keyframe_type_items[] = { + {BEZT_KEYTYPE_KEYFRAME, "KEYFRAME", 0, "Keyframe", ""}, + {BEZT_KEYTYPE_BREAKDOWN, "BREAKDOWN", 0, "Breakdown", ""}, + {BEZT_KEYTYPE_EXTREME, "EXTREME", 0, "Extreme", ""}, + {0, NULL, 0, NULL, NULL}}; + #ifdef RNA_RUNTIME #include "WM_api.h" @@ -129,6 +137,15 @@ static void rna_DriverTarget_update_data(Main *bmain, Scene *scene, PointerRNA * } } +static void rna_DriverTarget_update_name(Main *bmain, Scene *scene, PointerRNA *ptr) +{ + ChannelDriver *driver= ptr->data; + rna_DriverTarget_update_data(bmain, scene, ptr); + + driver->flag |= DRIVER_FLAG_RENAMEVAR; + +} + /* ----------- */ static StructRNA *rna_DriverTarget_id_typef(PointerRNA *ptr) @@ -143,12 +160,31 @@ static int rna_DriverTarget_id_editable(PointerRNA *ptr) return (dtar->idtype)? PROP_EDITABLE : 0; } +static int rna_DriverTarget_id_type_editable(PointerRNA *ptr) +{ + DriverTarget *dtar= (DriverTarget*)ptr->data; + + /* when the id-type can only be object, don't allow editing + * otherwise, there may be strange crashes + */ + return ((dtar->flag & DTAR_FLAG_ID_OB_ONLY) == 0); +} + static void rna_DriverTarget_id_type_set(PointerRNA *ptr, int value) { DriverTarget *data= (DriverTarget*)(ptr->data); - /* set the driver type, then clear the id-block if the type is invalid */ - data->idtype= value; + /* check if ID-type is settable */ + if ((data->flag & DTAR_FLAG_ID_OB_ONLY) == 0) { + /* change ID-type to the new type */ + data->idtype= value; + } + else { + /* make sure ID-type is Object */ + data->idtype= ID_OB; + } + + /* clear the id-block if the type is invalid */ if ((data->id) && (GS(data->id->name) != data->idtype)) data->id= NULL; } @@ -197,6 +233,56 @@ static void rna_DriverVariable_type_set(PointerRNA *ptr, int value) /* ****************************** */ +static void rna_FKeyframe_handle1_get(PointerRNA *ptr, float *values) +{ + BezTriple *bezt= (BezTriple*)ptr->data; + + values[0]= bezt->vec[0][0]; + values[1]= bezt->vec[0][1]; +} + +static void rna_FKeyframe_handle1_set(PointerRNA *ptr, const float *values) +{ + BezTriple *bezt= (BezTriple*)ptr->data; + + bezt->vec[0][0]= values[0]; + bezt->vec[0][1]= values[1]; +} + +static void rna_FKeyframe_handle2_get(PointerRNA *ptr, float *values) +{ + BezTriple *bezt= (BezTriple*)ptr->data; + + values[0]= bezt->vec[2][0]; + values[1]= bezt->vec[2][1]; +} + +static void rna_FKeyframe_handle2_set(PointerRNA *ptr, const float *values) +{ + BezTriple *bezt= (BezTriple*)ptr->data; + + bezt->vec[2][0]= values[0]; + bezt->vec[2][1]= values[1]; +} + +static void rna_FKeyframe_ctrlpoint_get(PointerRNA *ptr, float *values) +{ + BezTriple *bezt= (BezTriple*)ptr->data; + + values[0]= bezt->vec[1][0]; + values[1]= bezt->vec[1][1]; +} + +static void rna_FKeyframe_ctrlpoint_set(PointerRNA *ptr, const float *values) +{ + BezTriple *bezt= (BezTriple*)ptr->data; + + bezt->vec[1][0]= values[0]; + bezt->vec[1][1]= values[1]; +} + +/* ****************************** */ + static void rna_FCurve_RnaPath_get(PointerRNA *ptr, char *value) { FCurve *fcu= (FCurve *)ptr->data; @@ -715,8 +801,8 @@ static void rna_def_drivertarget(BlenderRNA *brna) RNA_def_property_enum_sdna(prop, NULL, "idtype"); RNA_def_property_enum_items(prop, id_type_items); RNA_def_property_enum_default(prop, ID_OB); - // XXX need to add an 'editable func' for this, in the case where certain flags are set already... RNA_def_property_enum_funcs(prop, NULL, "rna_DriverTarget_id_type_set", NULL); + RNA_def_property_editable_func(prop, "rna_DriverTarget_id_type_editable"); RNA_def_property_ui_text(prop, "ID Type", "Type of ID-block that can be used."); RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data"); @@ -764,7 +850,7 @@ static void rna_def_drivervar(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_DriverTarget_update_data"); // XXX + RNA_def_property_update(prop, 0, "rna_DriverTarget_update_name"); // XXX /* Enums */ prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE); @@ -847,6 +933,11 @@ static void rna_def_channeldriver(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Variables", "Properties acting as inputs for this driver."); rna_def_channeldriver_variables(brna, prop); + /* Settings */ + prop= RNA_def_property(srna, "show_debug_info", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", DRIVER_FLAG_SHOWDEBUG); + RNA_def_property_ui_text(prop, "Show Debug Info", "Show intermediate values for the driver calculations to allow debugging of drivers."); + /* Functions */ RNA_api_drivers(srna); } @@ -869,11 +960,86 @@ static void rna_def_fpoint(BlenderRNA *brna) /* Vector value */ prop= RNA_def_property(srna, "point", PROP_FLOAT, PROP_XYZ); - RNA_def_property_array(prop, 2); RNA_def_property_float_sdna(prop, NULL, "vec"); + RNA_def_property_array(prop, 2); RNA_def_property_ui_text(prop, "Point", "Point coordinates"); } + +/* duplicate of BezTriple in rna_curve.c + * but with F-Curve specific options updates/functionality + */ +static void rna_def_fkeyframe(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna= RNA_def_struct(brna, "Keyframe", NULL); + RNA_def_struct_sdna(srna, "BezTriple"); + RNA_def_struct_ui_text(srna, "Keyframe", "Bezier curve point with two handles defining a Keyframe on an F-Curve."); + + /* Boolean values */ + prop= RNA_def_property(srna, "selected_handle1", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "f1", 0); + RNA_def_property_ui_text(prop, "Handle 1 selected", "Handle 1 selection status"); + //RNA_def_property_update(prop, 0, NULL); + + prop= RNA_def_property(srna, "selected_handle2", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "f3", 0); + RNA_def_property_ui_text(prop, "Handle 2 selected", "Handle 2 selection status"); + //RNA_def_property_update(prop, 0, NULL); + + prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "f2", 0); + RNA_def_property_ui_text(prop, "Selected", "Control point selection status"); + //RNA_def_property_update(prop, 0, NULL); + + /* Enums */ + prop= RNA_def_property(srna, "handle1_type", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "h1"); + RNA_def_property_enum_items(prop, beztriple_handle_type_items); + RNA_def_property_ui_text(prop, "Handle 1 Type", "Handle types"); + //RNA_def_property_update(prop, 0, NULL); + + prop= RNA_def_property(srna, "handle2_type", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "h2"); + RNA_def_property_enum_items(prop, beztriple_handle_type_items); + RNA_def_property_ui_text(prop, "Handle 2 Type", "Handle types"); + //RNA_def_property_update(prop, 0, NULL); + + prop= RNA_def_property(srna, "interpolation", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "ipo"); + RNA_def_property_enum_items(prop, beztriple_interpolation_mode_items); + RNA_def_property_ui_text(prop, "Interpolation", "Interpolation method to use for segment of the curve from this Keyframe until the next Keyframe."); + //RNA_def_property_update(prop, 0, "rna_Curve_update_data"); // this should be an F-Curve update call instead... + + prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "hide"); + RNA_def_property_enum_items(prop, beztriple_keyframe_type_items); + RNA_def_property_ui_text(prop, "Type", "The type of keyframe."); + //RNA_def_property_update(prop, 0, "rna_Curve_update_data"); // this should be an F-Curve update call instead... + + /* Vector values */ + prop= RNA_def_property(srna, "handle1", PROP_FLOAT, PROP_TRANSLATION); + RNA_def_property_array(prop, 2); + RNA_def_property_float_funcs(prop, "rna_FKeyframe_handle1_get", "rna_FKeyframe_handle1_set", NULL); + RNA_def_property_ui_text(prop, "Handle 1", "Coordinates of the first handle"); + //RNA_def_property_update(prop, 0, NULL); + + prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_TRANSLATION); + RNA_def_property_array(prop, 2); + RNA_def_property_float_funcs(prop, "rna_FKeyframe_ctrlpoint_get", "rna_FKeyframe_ctrlpoint_set", NULL); + RNA_def_property_ui_text(prop, "Control Point", "Coordinates of the control point"); + //RNA_def_property_update(prop, 0, NULL); + + prop= RNA_def_property(srna, "handle2", PROP_FLOAT, PROP_TRANSLATION); + RNA_def_property_array(prop, 2); + RNA_def_property_float_funcs(prop, "rna_FKeyframe_handle2_get", "rna_FKeyframe_handle2_set", NULL); + RNA_def_property_ui_text(prop, "Handle 2", "Coordinates of the second handle"); + //RNA_def_property_update(prop, 0, NULL); +} + + static void rna_def_fcurve_modifiers(BlenderRNA *brna, PropertyRNA *cprop) { /* add modifiers */ @@ -983,7 +1149,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, "BezierSplinePoint"); + RNA_def_property_struct_type(prop, "Keyframe"); RNA_def_property_ui_text(prop, "Keyframes", "User-editable keyframes"); prop= RNA_def_property(srna, "modifiers", PROP_COLLECTION, PROP_NONE); @@ -998,7 +1164,8 @@ static void rna_def_fcurve(BlenderRNA *brna) void RNA_def_fcurve(BlenderRNA *brna) { rna_def_fcurve(brna); - rna_def_fpoint(brna); + rna_def_fkeyframe(brna); + rna_def_fpoint(brna); rna_def_drivertarget(brna); rna_def_drivervar(brna); diff --git a/source/blender/makesrna/intern/rna_gpencil.c b/source/blender/makesrna/intern/rna_gpencil.c index 87cf9502c69..40e0c316cc1 100644 --- a/source/blender/makesrna/intern/rna_gpencil.c +++ b/source/blender/makesrna/intern/rna_gpencil.c @@ -35,6 +35,8 @@ #include "MEM_guardedalloc.h" +#include "WM_types.h" + #ifdef RNA_RUNTIME static int rna_GPencilLayer_active_frame_editable(PointerRNA *ptr) @@ -81,11 +83,13 @@ static void rna_def_gpencil_stroke_point(BlenderRNA *brna) RNA_def_property_float_sdna(prop, NULL, "x"); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Coordinates", ""); + RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL); prop= RNA_def_property(srna, "pressure", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "pressure"); RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "Pressure", "Pressure of tablet at point when drawing it."); + RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL); } static void rna_def_gpencil_stroke(BlenderRNA *brna) @@ -168,51 +172,65 @@ static void rna_def_gpencil_layer(BlenderRNA *brna) prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Color", "Color that all sketches in this layer are drawn with."); + RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL); prop= RNA_def_property(srna, "opacity", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "color[3]"); RNA_def_property_range(prop, 0.3, 1.0f); RNA_def_property_ui_text(prop, "Opacity", "Visibility of strokes."); + RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL); /* Line Thickness */ prop= RNA_def_property(srna, "line_thickness", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "thickness"); RNA_def_property_range(prop, 1, 10); RNA_def_property_ui_text(prop, "Thickness", "Thickness of strokes (in pixels)."); + RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL); /* Onion-Skinning */ prop= RNA_def_property(srna, "use_onion_skinning", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LAYER_ONIONSKIN); RNA_def_property_ui_text(prop, "Use Onion Skinning", "Ghost frames on either side of frame."); + RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL); prop= RNA_def_property(srna, "max_ghost_range", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "gstep"); RNA_def_property_range(prop, 0, 120); RNA_def_property_ui_text(prop, "Max Ghost Range", "Maximum number of frames on either side of the active frame to show. (0 = just show the 'first' available sketch on either side)"); + RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL); /* Flags */ prop= RNA_def_property(srna, "hide", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LAYER_HIDE); RNA_def_property_ui_text(prop, "Hide", "Layer doesn't get drawn."); + RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL); prop= RNA_def_property(srna, "locked", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LAYER_LOCKED); RNA_def_property_ui_text(prop, "Locked", "Layer is protected from further editing and/or frame changes."); + RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL); + + prop= RNA_def_property(srna, "frame_lock", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LAYER_FRAMELOCK); + RNA_def_property_ui_text(prop, "Frame Locked", "Current frame displayed by layer cannot be changed."); + RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL); prop= RNA_def_property(srna, "active", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LAYER_ACTIVE); RNA_def_property_boolean_funcs(prop, NULL, "rna_GPencilLayer_active_set"); RNA_def_property_ui_text(prop, "Active", "Layer is 'active' layer being edited."); + RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL); prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LAYER_SELECT); RNA_def_property_ui_text(prop, "Selected", "Layer is selected for editing in the DopeSheet."); + RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL); // XXX keep this option? prop= RNA_def_property(srna, "show_points", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LAYER_DRAWDEBUG); RNA_def_property_ui_text(prop, "Show Points", "Draw the points which make up the strokes (for debugging purposes)."); - + RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL); } static void rna_def_gpencil_data(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_image.c b/source/blender/makesrna/intern/rna_image.c index e0d8a6950de..1c0ee2c416f 100644 --- a/source/blender/makesrna/intern/rna_image.c +++ b/source/blender/makesrna/intern/rna_image.c @@ -118,7 +118,7 @@ static void rna_ImageUser_update(Main *bmain, Scene *scene, PointerRNA *ptr) { ImageUser *iuser= ptr->data; - BKE_image_user_calc_imanr(iuser, scene->r.cfra, 0); + BKE_image_user_calc_frame(iuser, scene->r.cfra, 0); } static EnumPropertyItem *rna_Image_source_itemf(bContext *C, PointerRNA *ptr, int *free) @@ -153,6 +153,26 @@ static int rna_Image_has_data_get(PointerRNA *ptr) return 0; } +static void rna_Image_size_get(PointerRNA *ptr,int *values) +{ + Image *im= (Image*)ptr->data; + ImBuf *ibuf; + void *lock; + + ibuf = BKE_image_acquire_ibuf(im, NULL , &lock); + if (ibuf) { + values[0]= ibuf->x; + values[1]= ibuf->y; + } + else { + values[0]= 0; + values[1]= 0; + } + + BKE_image_release_ibuf(im, lock); +} + + static int rna_Image_depth_get(PointerRNA *ptr) { Image *im= (Image*)ptr->data; @@ -401,6 +421,10 @@ static void rna_def_image(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Depth", "Image bit depth."); RNA_def_property_clear_flag(prop, PROP_EDITABLE); + prop= RNA_def_int_vector(srna, "size" , 2 , NULL , 0, 0, "Size" , "Width and height in pixels, zero when image data cant be loaded." , 0 , 0); + RNA_def_property_int_funcs(prop, "rna_Image_size_get" , NULL, NULL); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_api_image(srna); } diff --git a/source/blender/makesrna/intern/rna_image_api.c b/source/blender/makesrna/intern/rna_image_api.c index 2bb7905fc03..34e2fc06ad7 100644 --- a/source/blender/makesrna/intern/rna_image_api.c +++ b/source/blender/makesrna/intern/rna_image_api.c @@ -63,6 +63,35 @@ static char *rna_Image_get_export_path(Image *image, char *dest_dir, int rel) return path; } +static void rna_Image_save(Image *image, bContext *C, ReportList *reports, char *path, Scene *scene) +{ + ImBuf *ibuf; + + if (scene == NULL) { + scene = CTX_data_scene(C); + } + + if (scene) { + ImageUser iuser; + void *lock; + + iuser.scene = scene; + iuser.ok = 1; + + ibuf = BKE_image_acquire_ibuf(image, &iuser, &lock); + + if (ibuf == NULL) { + BKE_reportf(reports, RPT_ERROR, "Couldn't acquire buffer from image"); + } + + if (!BKE_write_ibuf(NULL, ibuf, path, scene->r.imtype, scene->r.subimtype, scene->r.quality)) { + BKE_reportf(reports, RPT_ERROR, "Couldn't write image: %s", path); + } + } else { + BKE_reportf(reports, RPT_ERROR, "Scene not in context, couldn't get save parameters"); + } +} + char *rna_Image_get_abs_filename(Image *image, bContext *C) { char *filename= MEM_callocN(FILE_MAX, "Image.get_abs_filename()"); @@ -95,6 +124,13 @@ void RNA_api_image(StructRNA *srna) RNA_def_function_flag(func, FUNC_USE_CONTEXT); parm= RNA_def_string_file_path(func, "abs_filename", NULL, 0, "", "Image/movie absolute filename."); RNA_def_function_return(func, parm); + + func= RNA_def_function(srna, "save", "rna_Image_save"); + RNA_def_function_ui_description(func, "Save image to a specific path."); + RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS); + parm= RNA_def_string(func, "path", "", 0, "", "Save path."); + RNA_def_property_flag(parm, PROP_REQUIRED); + parm= RNA_def_pointer(func, "scene", "Scene", "", "Scene to take image parameters from."); } #endif diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h index 22b8388f693..5423c3eee31 100644 --- a/source/blender/makesrna/intern/rna_internal.h +++ b/source/blender/makesrna/intern/rna_internal.h @@ -118,6 +118,7 @@ extern BlenderRNA BLENDER_RNA; void RNA_def_ID(struct BlenderRNA *brna); void RNA_def_action(struct BlenderRNA *brna); void RNA_def_animation(struct BlenderRNA *brna); +void RNA_def_animviz(struct BlenderRNA *brna); void RNA_def_armature(struct BlenderRNA *brna); void RNA_def_actuator(struct BlenderRNA *brna); void RNA_def_boid(struct BlenderRNA *brna); @@ -175,6 +176,9 @@ void RNA_def_world(struct BlenderRNA *brna); void rna_def_animdata_common(struct StructRNA *srna); +void rna_def_animviz_common(struct StructRNA *srna); +void rna_def_motionpath_common(struct StructRNA *srna); + void rna_def_texmat_common(struct StructRNA *srna, const char *texspace_editable); void rna_def_mtex_common(struct StructRNA *srna, const char *begin, const char *activeget, const char *activeset, const char *structname, const char *update); void rna_def_render_layer_common(struct StructRNA *srna, int scene); @@ -221,11 +225,39 @@ void RNA_api_material(StructRNA *srna); void RNA_api_mesh(struct StructRNA *srna); void RNA_api_object(struct StructRNA *srna); void RNA_api_pose_channel(struct StructRNA *srna); -void RNA_api_scene(struct StructRNA *srna); +void RNA_api_scene(struct StructRNA *srna); +void RNA_api_scene_render(struct StructRNA *srna); void RNA_api_text(struct StructRNA *srna); void RNA_api_ui_layout(struct StructRNA *srna); void RNA_api_wm(struct StructRNA *srna); +/* main collection functions */ +void RNA_def_main_cameras(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_scenes(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_objects(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_materials(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_node_groups(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_meshes(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_lamps(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_libraries(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_screens(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_window_managers(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_images(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_lattices(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_curves(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_metaballs(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_vfonts(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_textures(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_brushes(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_worlds(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_groups(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_texts(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_sounds(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_armatures(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_actions(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_particles(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_def_main_gpencil(BlenderRNA *brna, PropertyRNA *cprop); + /* ID Properties */ extern StringPropertyRNA rna_IDProperty_string; @@ -299,6 +331,7 @@ PointerRNA rna_pointer_inherit_refine(struct PointerRNA *ptr, struct StructRNA * /* Functions */ int rna_parameter_size(struct PropertyRNA *parm); +int rna_parameter_size_alloc(struct PropertyRNA *parm); #endif /* RNA_INTERNAL_H */ diff --git a/source/blender/makesrna/intern/rna_key.c b/source/blender/makesrna/intern/rna_key.c index 9e560a50af0..6ff961070b9 100644 --- a/source/blender/makesrna/intern/rna_key.c +++ b/source/blender/makesrna/intern/rna_key.c @@ -283,7 +283,13 @@ static PointerRNA rna_ShapeKey_data_get(CollectionPropertyIterator *iter) static char *rna_ShapeKey_path(PointerRNA *ptr) { - return BLI_sprintfN("keys[\"%s\"]", ((KeyBlock*)ptr->data)->name); + KeyBlock *kb= (KeyBlock *)ptr->data; + ID *id= ptr->id.data; + + if ((id) && (GS(id->name) != ID_KE)) + return BLI_sprintfN("shape_keys.keys[\"%s\"]", kb->name); + else + return BLI_sprintfN("keys[\"%s\"]", kb->name); } static void rna_Key_update_data(Main *bmain, Scene *scene, PointerRNA *ptr) diff --git a/source/blender/makesrna/intern/rna_lamp.c b/source/blender/makesrna/intern/rna_lamp.c index 5112e68a008..47d7b5fadb7 100644 --- a/source/blender/makesrna/intern/rna_lamp.c +++ b/source/blender/makesrna/intern/rna_lamp.c @@ -646,6 +646,11 @@ static void rna_def_spot_lamp(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Spot Size", "Angle of the spotlight beam in degrees."); RNA_def_property_update(prop, 0, "rna_Lamp_draw_update"); + prop= RNA_def_property(srna, "show_cone", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "mode", LA_SHOW_CONE); + RNA_def_property_ui_text(prop, "Show Cone", "Draw transparent cone in 3D view to visualize which objects are contained in it."); + RNA_def_property_update(prop, 0, "rna_Lamp_draw_update"); + prop= RNA_def_property(srna, "shadow_buffer_clip_start", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "clipsta"); RNA_def_property_range(prop, 0.0f, 9999.0f); diff --git a/source/blender/makesrna/intern/rna_main.c b/source/blender/makesrna/intern/rna_main.c index 82988a06af9..b47a2d5c907 100644 --- a/source/blender/makesrna/intern/rna_main.c +++ b/source/blender/makesrna/intern/rna_main.c @@ -235,40 +235,54 @@ static PointerRNA rna_Test_test_get(PointerRNA *ptr) #else +/* local convenience types */ +typedef void (CollectionDefFunc)(struct BlenderRNA *brna, struct PropertyRNA *cprop); + +typedef struct MainCollectionDef { + const char *identifier; + const char *type; + const char *iter_begin; + const char *name; + const char *description; + CollectionDefFunc *func; +} MainCollectionDef; + void RNA_def_main(BlenderRNA *brna) { StructRNA *srna; PropertyRNA *prop; + CollectionDefFunc *func; + + MainCollectionDef lists[]= { + {"cameras", "Camera", "rna_Main_camera_begin", "Cameras", "Camera datablocks.", RNA_def_main_cameras}, + {"scenes", "Scene", "rna_Main_scene_begin", "Scenes", "Scene datablocks.", RNA_def_main_scenes}, + {"objects", "Object", "rna_Main_object_begin", "Objects", "Object datablocks.", RNA_def_main_objects}, + {"materials", "Material", "rna_Main_mat_begin", "Materials", "Material datablocks.", RNA_def_main_materials}, + {"node_groups", "NodeTree", "rna_Main_nodetree_begin", "Node Groups", "Node group datablocks.", RNA_def_main_node_groups}, + {"meshes", "Mesh", "rna_Main_mesh_begin", "Meshes", "Mesh datablocks.", RNA_def_main_meshes}, + {"lamps", "Lamp", "rna_Main_lamp_begin", "Lamps", "Lamp datablocks.", RNA_def_main_lamps}, + {"libraries", "Library", "rna_Main_library_begin", "Libraries", "Library datablocks.", RNA_def_main_libraries}, + {"screens", "Screen", "rna_Main_screen_begin", "Screens", "Screen datablocks.", RNA_def_main_screens}, + {"window_managers", "WindowManager", "rna_Main_wm_begin", "Window Managers", "Window manager datablocks.", RNA_def_main_window_managers}, + {"images", "Image", "rna_Main_image_begin", "Images", "Image datablocks.", RNA_def_main_images}, + {"lattices", "Lattice", "rna_Main_latt_begin", "Lattices", "Lattice datablocks.", RNA_def_main_lattices}, + {"curves", "Curve", "rna_Main_curve_begin", "Curves", "Curve datablocks.", RNA_def_main_curves} , + {"metaballs", "MetaBall", "rna_Main_mball_begin", "Metaballs", "Metaball datablocks.", RNA_def_main_metaballs}, + {"vfonts", "VectorFont", "rna_Main_vfont_begin", "Vector Fonts", "Vector font datablocks.", RNA_def_main_vfonts}, + {"textures", "Texture", "rna_Main_tex_begin", "Textures", "Texture datablocks.", RNA_def_main_textures}, + {"brushes", "Brush", "rna_Main_brush_begin", "Brushes", "Brush datablocks.", RNA_def_main_brushes}, + {"worlds", "World", "rna_Main_world_begin", "Worlds", "World datablocks.", RNA_def_main_worlds}, + {"groups", "Group", "rna_Main_group_begin", "Groups", "Group datablocks.", RNA_def_main_groups}, +/* {"keys", "Key", "rna_Main_key_begin", "Keys", "Key datablocks.", NULL}, */ + {"scripts", "ID", "rna_Main_script_begin", "Scripts", "Script datablocks (DEPRECATED).", NULL}, + {"texts", "Text", "rna_Main_text_begin", "Texts", "Text datablocks.", RNA_def_main_texts}, + {"sounds", "Sound", "rna_Main_sound_begin", "Sounds", "Sound datablocks.", RNA_def_main_sounds}, + {"armatures", "Armature", "rna_Main_armature_begin", "Armatures", "Armature datablocks.", RNA_def_main_armatures}, + {"actions", "Action", "rna_Main_action_begin", "Actions", "Action datablocks.", RNA_def_main_actions}, + {"particles", "ParticleSettings", "rna_Main_particle_begin", "Particles", "Particle datablocks.", RNA_def_main_particles}, + {"gpencil", "GreasePencil", "rna_Main_gpencil_begin", "Grease Pencil", "Grease Pencil datablocks.", RNA_def_main_gpencil}, + {NULL, NULL, NULL, NULL, NULL, NULL}}; - const char *lists[][5]= { - {"cameras", "Camera", "rna_Main_camera_begin", "Cameras", "Camera datablocks."}, - {"scenes", "Scene", "rna_Main_scene_begin", "Scenes", "Scene datablocks."}, - {"objects", "Object", "rna_Main_object_begin", "Objects", "Object datablocks."}, - {"materials", "Material", "rna_Main_mat_begin", "Materials", "Material datablocks."}, - {"nodegroups", "NodeTree", "rna_Main_nodetree_begin", "Node Groups", "Node group datablocks."}, - {"meshes", "Mesh", "rna_Main_mesh_begin", "Meshes", "Mesh datablocks."}, // "add_mesh", "remove_mesh" - {"lamps", "Lamp", "rna_Main_lamp_begin", "Lamps", "Lamp datablocks."}, - {"libraries", "Library", "rna_Main_library_begin", "Libraries", "Library datablocks."}, - {"screens", "Screen", "rna_Main_screen_begin", "Screens", "Screen datablocks."}, - {"windowmanagers", "WindowManager", "rna_Main_wm_begin", "Window Managers", "Window manager datablocks."}, - {"images", "Image", "rna_Main_image_begin", "Images", "Image datablocks."}, - {"lattices", "Lattice", "rna_Main_latt_begin", "Lattices", "Lattice datablocks."}, - {"curves", "Curve", "rna_Main_curve_begin", "Curves", "Curve datablocks."} , - {"metaballs", "MetaBall", "rna_Main_mball_begin", "Metaballs", "Metaball datablocks."}, - {"vfonts", "VectorFont", "rna_Main_vfont_begin", "Vector Fonts", "Vector font datablocks."}, - {"textures", "Texture", "rna_Main_tex_begin", "Textures", "Texture datablocks."}, - {"brushes", "Brush", "rna_Main_brush_begin", "Brushes", "Brush datablocks."}, - {"worlds", "World", "rna_Main_world_begin", "Worlds", "World datablocks."}, - {"groups", "Group", "rna_Main_group_begin", "Groups", "Group datablocks."}, -/* {"keys", "Key", "rna_Main_key_begin", "Keys", "Key datablocks."}, */ - {"scripts", "ID", "rna_Main_script_begin", "Scripts", "Script datablocks (DEPRECATED)."}, - {"texts", "Text", "rna_Main_text_begin", "Texts", "Text datablocks."}, - {"sounds", "Sound", "rna_Main_sound_begin", "Sounds", "Sound datablocks."}, - {"armatures", "Armature", "rna_Main_armature_begin", "Armatures", "Armature datablocks."}, - {"actions", "Action", "rna_Main_action_begin", "Actions", "Action datablocks."}, - {"particles", "ParticleSettings", "rna_Main_particle_begin", "Particles", "Particle datablocks."}, - {"gpencil", "GreasePencil", "rna_Main_gpencil_begin", "Grease Pencil", "Grease Pencil datablocks."}, - {NULL, NULL, NULL, NULL, NULL}}; int i; srna= RNA_def_struct(brna, "Main", NULL); @@ -281,12 +295,17 @@ void RNA_def_main(BlenderRNA *brna) RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Filename", "Path to the .blend file."); - for(i=0; lists[i][0]; i++) + for(i=0; lists[i].name; i++) { - prop= RNA_def_property(srna, lists[i][0], PROP_COLLECTION, PROP_NONE); - RNA_def_property_struct_type(prop, lists[i][1]); - RNA_def_property_collection_funcs(prop, lists[i][2], "rna_iterator_listbase_next", "rna_iterator_listbase_end", "rna_iterator_listbase_get", 0, 0, 0); - RNA_def_property_ui_text(prop, lists[i][3], lists[i][4]); + prop= RNA_def_property(srna, lists[i].identifier, PROP_COLLECTION, PROP_NONE); + RNA_def_property_struct_type(prop, lists[i].type); + RNA_def_property_collection_funcs(prop, lists[i].iter_begin, "rna_iterator_listbase_next", "rna_iterator_listbase_end", "rna_iterator_listbase_get", 0, 0, 0); + RNA_def_property_ui_text(prop, lists[i].name, lists[i].description); + + /* collection functions */ + func= lists[i].func; + if(func) + func(brna, prop); } RNA_api_main(srna); diff --git a/source/blender/makesrna/intern/rna_main_api.c b/source/blender/makesrna/intern/rna_main_api.c index 5069bbd6ae6..5eadcd54774 100644 --- a/source/blender/makesrna/intern/rna_main_api.c +++ b/source/blender/makesrna/intern/rna_main_api.c @@ -33,6 +33,8 @@ #include "RNA_types.h" #include "RNA_enum_types.h" +#include "BKE_utildefines.h" + #ifdef RNA_RUNTIME #include "BKE_main.h" @@ -43,108 +45,218 @@ #include "BKE_material.h" #include "BKE_image.h" #include "BKE_texture.h" +#include "BKE_scene.h" +#include "BKE_text.h" +#include "BKE_action.h" +#include "BKE_group.h" #include "DNA_armature_types.h" +#include "DNA_camera_types.h" #include "DNA_lamp_types.h" #include "DNA_material_types.h" #include "DNA_mesh_types.h" #include "DNA_object_types.h" +#include "DNA_text_types.h" +#include "DNA_texture_types.h" +#include "DNA_group_types.h" + +#include "ED_screen.h" -static Mesh *rna_Main_add_mesh(Main *bmain, char *name) +Tex *rna_Main_add_texture(Main *bmain, char *name) { - Mesh *me= add_mesh(name); - me->id.us--; - return me; + return add_texture(name); } -static void rna_Main_remove_mesh(Main *bmain, ReportList *reports, Mesh *me) +Image *rna_Main_add_image(Main *bmain, char *filename) { - if(me->id.us == 0) - 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? */ + return BKE_add_image_file(filename, 0); } -static void rna_Main_remove_armature(Main *bmain, ReportList *reports, bArmature *arm) +Camera *rna_Main_cameras_new(Main *bmain, char* name) { - if(arm->id.us == 0) - free_libblock(&bmain->armature, arm); + return add_camera(name); +} +void rna_Main_cameras_remove(Main *bmain, ReportList *reports, struct Camera *camera) +{ + if(ID_REAL_USERS(camera) == 0) + free_libblock(&bmain->camera, camera); else - BKE_report(reports, RPT_ERROR, "Armature must have zero users to be removed."); + BKE_reportf(reports, RPT_ERROR, "Camera \"%s\" must have zero users to be removed, found %d.", camera->id.name+2, ID_REAL_USERS(camera)); /* XXX python now has invalid pointer? */ } -static bArmature *rna_Main_add_armature(Main *bmain, char *name) +Scene *rna_Main_scenes_new(Main *bmain, char* name) { - bArmature *arm= add_armature(name); - arm->id.us--; - return arm; + return add_scene(name); } +void rna_Main_scenes_remove(Main *bmain, bContext *C, ReportList *reports, struct Scene *scene) +{ + /* dont call free_libblock(...) directly */ + Scene *newscene; -static Lamp *rna_Main_add_lamp(Main *bmain, char *name) + if(scene->id.prev) + newscene= scene->id.prev; + else if(scene->id.next) + newscene= scene->id.next; + else { + BKE_reportf(reports, RPT_ERROR, "Scene \"%s\" is the last, cant ve removed.", scene->id.name+2); + return; + } + + ED_screen_set_scene(C, newscene); + + unlink_scene(bmain, scene, newscene); +} + +Object *rna_Main_objects_new(Main *bmain, char* name, int type) { - Lamp *la= add_lamp(name); - la->id.us--; - return la; + Object *ob= add_only_object(type, name); + ob->id.us--; + return ob; } +void rna_Main_objects_remove(Main *bmain, ReportList *reports, struct Object *object) +{ + /* + NOTE: the following example shows when this function should _not_ be called -/* -static void rna_Main_remove_lamp(Main *bmain, ReportList *reports, Lamp *la) + ob = bpy.data.add_object() + scene.add_object(ob) + + # ob is freed here + scene.remove_object(ob) + + # don't do this since ob is already freed! + bpy.data.remove_object(ob) + */ + if(ID_REAL_USERS(object) == 0) + free_libblock(&bmain->object, object); + else + BKE_reportf(reports, RPT_ERROR, "Object \"%s\" must have zero users to be removed, found %d.", object->id.name+2, ID_REAL_USERS(object)); +} + +struct Material *rna_Main_materials_new(Main *bmain, char* name) { - if(la->id.us == 0) - free_libblock(&main->lamp, la); + return add_material(name); +} +void rna_Main_materials_remove(Main *bmain, ReportList *reports, struct Material *material) +{ + if(ID_REAL_USERS(material) == 0) + free_libblock(&bmain->mat, material); else - BKE_report(reports, RPT_ERROR, "Lamp must have zero users to be removed."); + BKE_reportf(reports, RPT_ERROR, "Material \"%s\" must have zero users to be removed, found %d.", material->id.name+2, ID_REAL_USERS(material)); + + /* XXX python now has invalid pointer? */ } -*/ -static Object* rna_Main_add_object(Main *bmain, int type, char *name) +Mesh *rna_Main_meshes_new(Main *bmain, char* name) { - Object *ob= add_only_object(type, name); - ob->id.us--; - return ob; + Mesh *me= add_mesh(name); + me->id.us--; + return me; } +void rna_Main_meshes_remove(Main *bmain, ReportList *reports, Mesh *mesh) +{ + if(ID_REAL_USERS(mesh) == 0) + free_libblock(&bmain->mesh, mesh); + else + BKE_reportf(reports, RPT_ERROR, "Mesh \"%s\" must have zero users to be removed, found %d.", mesh->id.name+2, ID_REAL_USERS(mesh)); -/* - NOTE: the following example shows when this function should _not_ be called + /* XXX python now has invalid pointer? */ +} - ob = bpy.data.add_object() - scene.add_object(ob) +Lamp *rna_Main_lamps_new(Main *bmain, char* name) +{ + Lamp *lamp= add_lamp(name); + lamp->id.us--; + return lamp; +} +void rna_Main_lamps_remove(Main *bmain, ReportList *reports, Lamp *lamp) +{ + if(ID_REAL_USERS(lamp) == 0) + free_libblock(&bmain->lamp, lamp); + else + BKE_reportf(reports, RPT_ERROR, "Lamp \"%s\" must have zero users to be removed, found %d.", lamp->id.name+2, ID_REAL_USERS(lamp)); - # ob is freed here - scene.remove_object(ob) + /* XXX python now has invalid pointer? */ +} - # don't do this since ob is already freed! - bpy.data.remove_object(ob) -*/ -static void rna_Main_remove_object(Main *bmain, ReportList *reports, Object *ob) +Tex *rna_Main_textures_new(Main *bmain, char* name) { - if(ob->id.us == 0) - free_libblock(&bmain->object, ob); + Tex *tex= add_texture(name); + tex->id.us--; + return tex; +} +void rna_Main_textures_remove(Main *bmain, ReportList *reports, struct Tex *tex) +{ + if(ID_REAL_USERS(tex) == 0) + free_libblock(&bmain->tex, tex); else - BKE_report(reports, RPT_ERROR, "Object must have zero users to be removed."); + BKE_reportf(reports, RPT_ERROR, "Texture \"%s\" must have zero users to be removed, found %d.", tex->id.name+2, ID_REAL_USERS(tex)); } -static Material *rna_Main_add_material(Main *bmain, char *name) +Group *rna_Main_groups_new(Main *bmain, char* name) { - return add_material(name); + return add_group(name); +} +void rna_Main_groups_remove(Main *bmain, ReportList *reports, Group *group) +{ + unlink_group(group); + group->id.us= 0; + free_libblock(&bmain->group, group); + /* XXX python now has invalid pointer? */ } -/* TODO: remove material? */ +Text *rna_Main_texts_new(Main *bmain, char* name) +{ + return add_empty_text(name); +} +void rna_Main_texts_remove(Main *bmain, ReportList *reports, Text *text) +{ + unlink_text(bmain, text); + free_libblock(&bmain->text, text); + /* XXX python now has invalid pointer? */ +} +Text *rna_Main_texts_load(Main *bmain, ReportList *reports, char* path) +{ + Text *txt= add_text(path, bmain->name); + if(txt==NULL) + BKE_reportf(reports, RPT_ERROR, "Couldn't load text from path \"%s\".", path); + + return txt; +} -struct Tex *rna_Main_add_texture(Main *bmain, char *name) +bArmature *rna_Main_armatures_new(Main *bmain, char* name) { - return add_texture(name); + bArmature *arm= add_armature(name); + arm->id.us--; + return arm; } +void rna_Main_armatures_remove(Main *bmain, ReportList *reports, bArmature *arm) +{ + if(ID_REAL_USERS(arm) == 0) + free_libblock(&bmain->armature, arm); + else + BKE_reportf(reports, RPT_ERROR, "Armature \"%s\" must have zero users to be removed, found %d.", arm->id.name+2, ID_REAL_USERS(arm)); -/* TODO: remove texture? */ + /* XXX python now has invalid pointer? */ +} -struct Image *rna_Main_add_image(Main *bmain, char *filename) +bAction *rna_Main_actions_new(Main *bmain, char* name) { - return BKE_add_image_file(filename, 0); + bAction *act= add_empty_action(name); + act->id.us--; + act->id.flag &= ~LIB_FAKEUSER; + return act; +} +void rna_Main_actions_remove(Main *bmain, ReportList *reports, bAction *act) +{ + if(ID_REAL_USERS(act) == 0) + free_libblock(&bmain->action, act); + else + BKE_reportf(reports, RPT_ERROR, "Action \"%s\" must have zero users to be removed, found %d.", act->id.name+2, ID_REAL_USERS(act)); + + /* XXX python now has invalid pointer? */ } #else @@ -154,73 +266,351 @@ void RNA_api_main(StructRNA *srna) FunctionRNA *func; PropertyRNA *parm; - func= RNA_def_function(srna, "add_object", "rna_Main_add_object"); - RNA_def_function_ui_description(func, "Add a new object."); - parm= RNA_def_enum(func, "type", object_type_items, 0, "", "Type of Object."); + func= RNA_def_function(srna, "add_image", "rna_Main_add_image"); + RNA_def_function_ui_description(func, "Add a new image."); + parm= RNA_def_string(func, "filename", "", 0, "", "Filename to load image from."); + RNA_def_property_flag(parm, PROP_REQUIRED); + parm= RNA_def_pointer(func, "image", "Image", "", "New image."); + RNA_def_function_return(func, parm); + +} + +void RNA_def_main_cameras(BlenderRNA *brna, PropertyRNA *cprop) +{ + StructRNA *srna; + FunctionRNA *func; + PropertyRNA *parm; + + RNA_def_property_srna(cprop, "MainCameras"); + srna= RNA_def_struct(brna, "MainCameras", NULL); + RNA_def_struct_ui_text(srna, "Main Cameras", "Collection of cameras."); + + func= RNA_def_function(srna, "new", "rna_Main_cameras_new"); + RNA_def_function_ui_description(func, "Add a new camera to the main database"); + parm= RNA_def_string(func, "name", "Camera", 0, "", "New name for the datablock."); + RNA_def_property_flag(parm, PROP_REQUIRED); + /* return type */ + parm= RNA_def_pointer(func, "camera", "Camera", "", "New camera datablock."); + RNA_def_function_return(func, parm); + + func= RNA_def_function(srna, "remove", "rna_Main_cameras_remove"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); + RNA_def_function_ui_description(func, "Remove a camera from the current blendfile."); + parm= RNA_def_pointer(func, "camera", "Camera", "", "Camera to remove."); + RNA_def_property_flag(parm, PROP_REQUIRED); +} + +void RNA_def_main_scenes(BlenderRNA *brna, PropertyRNA *cprop) +{ + StructRNA *srna; + FunctionRNA *func; + PropertyRNA *parm; + + RNA_def_property_srna(cprop, "MainScenes"); + srna= RNA_def_struct(brna, "MainScenes", NULL); + RNA_def_struct_ui_text(srna, "Main Scenes", "Collection of scenes."); + + func= RNA_def_function(srna, "new", "rna_Main_scenes_new"); + RNA_def_function_ui_description(func, "Add a new scene to the main database"); + parm= RNA_def_string(func, "name", "Scene", 0, "", "New name for the datablock."); RNA_def_property_flag(parm, PROP_REQUIRED); + /* return type */ + parm= RNA_def_pointer(func, "scene", "Scene", "", "New scene datablock."); + RNA_def_function_return(func, parm); + + func= RNA_def_function(srna, "remove", "rna_Main_scenes_remove"); + RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS); + parm= RNA_def_pointer(func, "scene", "Scene", "", "Scene to remove."); + RNA_def_property_flag(parm, PROP_REQUIRED); + RNA_def_function_ui_description(func, "Remove a scene from the current blendfile."); + RNA_def_property_flag(parm, PROP_REQUIRED); +} + +void RNA_def_main_objects(BlenderRNA *brna, PropertyRNA *cprop) +{ + StructRNA *srna; + FunctionRNA *func; + PropertyRNA *parm; + + RNA_def_property_srna(cprop, "MainObjects"); + srna= RNA_def_struct(brna, "MainObjects", NULL); + RNA_def_struct_ui_text(srna, "Main Objects", "Collection of objects."); + + func= RNA_def_function(srna, "new", "rna_Main_objects_new"); + RNA_def_function_ui_description(func, "Add a new object to the main database"); parm= RNA_def_string(func, "name", "Object", 0, "", "New name for the datablock."); RNA_def_property_flag(parm, PROP_REQUIRED); - parm= RNA_def_pointer(func, "object", "Object", "", "New object."); + parm= RNA_def_enum(func, "type", object_type_items, 0, "", "Type of Object."); + RNA_def_property_flag(parm, PROP_REQUIRED); + + /* return type */ + parm= RNA_def_pointer(func, "object", "Object", "", "New object datablock."); RNA_def_function_return(func, parm); - func= RNA_def_function(srna, "remove_object", "rna_Main_remove_object"); + func= RNA_def_function(srna, "remove", "rna_Main_objects_remove"); RNA_def_function_flag(func, FUNC_USE_REPORTS); - RNA_def_function_ui_description(func, "Remove an object if it has zero users."); parm= RNA_def_pointer(func, "object", "Object", "", "Object to remove."); RNA_def_property_flag(parm, PROP_REQUIRED); + RNA_def_function_ui_description(func, "Remove a object from the current blendfile."); +} + +void RNA_def_main_materials(BlenderRNA *brna, PropertyRNA *cprop) +{ + StructRNA *srna; + FunctionRNA *func; + PropertyRNA *parm; + + RNA_def_property_srna(cprop, "MainMaterials"); + srna= RNA_def_struct(brna, "MainMaterials", NULL); + RNA_def_struct_ui_text(srna, "Main Material", "Collection of materials."); + + func= RNA_def_function(srna, "new", "rna_Main_materials_new"); + RNA_def_function_ui_description(func, "Add a new material to the main database"); + parm= RNA_def_string(func, "name", "Material", 0, "", "New name for the datablock."); + RNA_def_property_flag(parm, PROP_REQUIRED); + /* return type */ + parm= RNA_def_pointer(func, "material", "Material", "", "New material datablock."); + RNA_def_function_return(func, parm); + + func= RNA_def_function(srna, "remove", "rna_Main_materials_remove"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); + RNA_def_function_ui_description(func, "Remove a material from the current blendfile."); + parm= RNA_def_pointer(func, "material", "Material", "", "Material to remove."); + RNA_def_property_flag(parm, PROP_REQUIRED); +} +void RNA_def_main_node_groups(BlenderRNA *brna, PropertyRNA *cprop) +{ - func= RNA_def_function(srna, "add_mesh", "rna_Main_add_mesh"); - RNA_def_function_ui_description(func, "Add a new mesh."); +} +void RNA_def_main_meshes(BlenderRNA *brna, PropertyRNA *cprop) +{ + StructRNA *srna; + FunctionRNA *func; + PropertyRNA *parm; + + RNA_def_property_srna(cprop, "MainMeshes"); + srna= RNA_def_struct(brna, "MainMeshes", NULL); + RNA_def_struct_ui_text(srna, "Main Meshes", "Collection of meshes."); + + func= RNA_def_function(srna, "new", "rna_Main_meshes_new"); + RNA_def_function_ui_description(func, "Add a new mesh to the main database"); parm= RNA_def_string(func, "name", "Mesh", 0, "", "New name for the datablock."); RNA_def_property_flag(parm, PROP_REQUIRED); - parm= RNA_def_pointer(func, "mesh", "Mesh", "", "New mesh."); + /* return type */ + parm= RNA_def_pointer(func, "mesh", "Mesh", "", "New mesh datablock."); RNA_def_function_return(func, parm); - func= RNA_def_function(srna, "remove_mesh", "rna_Main_remove_mesh"); + func= RNA_def_function(srna, "remove", "rna_Main_meshes_remove"); RNA_def_function_flag(func, FUNC_USE_REPORTS); - RNA_def_function_ui_description(func, "Remove a mesh if it has zero users."); + RNA_def_function_ui_description(func, "Remove a mesh from the current blendfile."); parm= RNA_def_pointer(func, "mesh", "Mesh", "", "Mesh to remove."); RNA_def_property_flag(parm, PROP_REQUIRED); +} +void RNA_def_main_lamps(BlenderRNA *brna, PropertyRNA *cprop) +{ + StructRNA *srna; + FunctionRNA *func; + PropertyRNA *parm; - 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_srna(cprop, "MainLamps"); + srna= RNA_def_struct(brna, "MainLamps", NULL); + RNA_def_struct_ui_text(srna, "Main Lamps", "Collection of lamps."); + + func= RNA_def_function(srna, "new", "rna_Main_lamps_new"); + RNA_def_function_ui_description(func, "Add a new lamp to the main database"); + parm= RNA_def_string(func, "name", "Lamp", 0, "", "New name for the datablock."); RNA_def_property_flag(parm, PROP_REQUIRED); - parm= RNA_def_pointer(func, "armature", "Armature", "", "New armature."); + /* return type */ + parm= RNA_def_pointer(func, "lamp", "Lamp", "", "New lamp datablock."); RNA_def_function_return(func, parm); - func= RNA_def_function(srna, "remove_armature", "rna_Main_remove_armature"); + func= RNA_def_function(srna, "remove", "rna_Main_lamps_remove"); 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_function_ui_description(func, "Remove a lamp from the current blendfile."); + parm= RNA_def_pointer(func, "lamp", "Lamp", "", "Lamp to remove."); RNA_def_property_flag(parm, PROP_REQUIRED); +} +void RNA_def_main_libraries(BlenderRNA *brna, PropertyRNA *cprop) +{ - 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."); +} +void RNA_def_main_screens(BlenderRNA *brna, PropertyRNA *cprop) +{ + +} +void RNA_def_main_window_managers(BlenderRNA *brna, PropertyRNA *cprop) +{ + +} +void RNA_def_main_images(BlenderRNA *brna, PropertyRNA *cprop) +{ + +} +void RNA_def_main_lattices(BlenderRNA *brna, PropertyRNA *cprop) +{ + +} +void RNA_def_main_curves(BlenderRNA *brna, PropertyRNA *cprop) +{ + +} +void RNA_def_main_metaballs(BlenderRNA *brna, PropertyRNA *cprop) +{ + +} +void RNA_def_main_vfonts(BlenderRNA *brna, PropertyRNA *cprop) +{ + +} +void RNA_def_main_textures(BlenderRNA *brna, PropertyRNA *cprop) +{ + StructRNA *srna; + FunctionRNA *func; + PropertyRNA *parm; + + RNA_def_property_srna(cprop, "MainTextures"); + srna= RNA_def_struct(brna, "MainTextures", NULL); + RNA_def_struct_ui_text(srna, "Main Textures", "Collection of groups."); + + func= RNA_def_function(srna, "new", "rna_Main_textures_new"); + RNA_def_function_ui_description(func, "Add a new texture to the main database"); + parm= RNA_def_string(func, "name", "Texture", 0, "", "New name for the datablock."); RNA_def_property_flag(parm, PROP_REQUIRED); - parm= RNA_def_pointer(func, "mesh", "Lamp", "", "New lamp."); + /* return type */ + parm= RNA_def_pointer(func, "texture", "Texture", "", "New texture datablock."); RNA_def_function_return(func, parm); - func= RNA_def_function(srna, "add_material", "rna_Main_add_material"); - RNA_def_function_ui_description(func, "Add a new material."); - parm= RNA_def_string(func, "name", "Material", 0, "", "New name for the datablock."); /* optional */ - parm= RNA_def_pointer(func, "material", "Material", "", "New material."); + func= RNA_def_function(srna, "remove", "rna_Main_textures_remove"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); + RNA_def_function_ui_description(func, "Remove a texture from the current blendfile."); + parm= RNA_def_pointer(func, "texture", "Texture", "", "Texture to remove."); + RNA_def_property_flag(parm, PROP_REQUIRED); +} +void RNA_def_main_brushes(BlenderRNA *brna, PropertyRNA *cprop) +{ + +} +void RNA_def_main_worlds(BlenderRNA *brna, PropertyRNA *cprop) +{ + +} +void RNA_def_main_groups(BlenderRNA *brna, PropertyRNA *cprop) +{ + StructRNA *srna; + FunctionRNA *func; + PropertyRNA *parm; + + RNA_def_property_srna(cprop, "MainGroups"); + srna= RNA_def_struct(brna, "MainGroups", NULL); + RNA_def_struct_ui_text(srna, "Main Groups", "Collection of groups."); + + func= RNA_def_function(srna, "new", "rna_Main_groups_new"); + RNA_def_function_ui_description(func, "Add a new group to the main database"); + parm= RNA_def_string(func, "name", "Group", 0, "", "New name for the datablock."); + RNA_def_property_flag(parm, PROP_REQUIRED); + /* return type */ + parm= RNA_def_pointer(func, "group", "Group", "", "New group datablock."); RNA_def_function_return(func, parm); - func= RNA_def_function(srna, "add_texture", "rna_Main_add_texture"); - RNA_def_function_ui_description(func, "Add a new texture."); - parm= RNA_def_string(func, "name", "Tex", 0, "", "New name for the datablock."); /* optional */ - parm= RNA_def_pointer(func, "texture", "Texture", "", "New texture."); + func= RNA_def_function(srna, "remove", "rna_Main_groups_remove"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); + RNA_def_function_ui_description(func, "Remove a group from the current blendfile."); + parm= RNA_def_pointer(func, "group", "Group", "", "Group to remove."); + RNA_def_property_flag(parm, PROP_REQUIRED); +} +void RNA_def_main_texts(BlenderRNA *brna, PropertyRNA *cprop) +{ + StructRNA *srna; + FunctionRNA *func; + PropertyRNA *parm; + + RNA_def_property_srna(cprop, "MainTexts"); + srna= RNA_def_struct(brna, "MainTexts", NULL); + RNA_def_struct_ui_text(srna, "Main Texts", "Collection of texts."); + + func= RNA_def_function(srna, "new", "rna_Main_texts_new"); + RNA_def_function_ui_description(func, "Add a new text to the main database"); + parm= RNA_def_string(func, "name", "Text", 0, "", "New name for the datablock."); + RNA_def_property_flag(parm, PROP_REQUIRED); + /* return type */ + parm= RNA_def_pointer(func, "text", "Text", "", "New text datablock."); RNA_def_function_return(func, parm); - func= RNA_def_function(srna, "add_image", "rna_Main_add_image"); - RNA_def_function_ui_description(func, "Add a new image."); - parm= RNA_def_string(func, "filename", "", 0, "", "Filename to load image from."); + func= RNA_def_function(srna, "remove", "rna_Main_texts_remove"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); + RNA_def_function_ui_description(func, "Remove a text from the current blendfile."); + parm= RNA_def_pointer(func, "text", "Text", "", "Text to remove."); RNA_def_property_flag(parm, PROP_REQUIRED); - parm= RNA_def_pointer(func, "image", "Image", "", "New image."); + + /* load func */ + func= RNA_def_function(srna, "load", "rna_Main_texts_load"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); + RNA_def_function_ui_description(func, "Add a new text to the main database from a file"); + parm= RNA_def_string(func, "path", "Path", FILE_MAXDIR + FILE_MAXFILE, "", "path for the datablock."); + RNA_def_property_flag(parm, PROP_REQUIRED); + /* return type */ + parm= RNA_def_pointer(func, "text", "Text", "", "New text datablock."); + RNA_def_function_return(func, parm); +} +void RNA_def_main_sounds(BlenderRNA *brna, PropertyRNA *cprop) +{ + +} +void RNA_def_main_armatures(BlenderRNA *brna, PropertyRNA *cprop) +{ + StructRNA *srna; + FunctionRNA *func; + PropertyRNA *parm; + + RNA_def_property_srna(cprop, "MainArmatures"); + srna= RNA_def_struct(brna, "MainArmatures", NULL); + RNA_def_struct_ui_text(srna, "Main Armatures", "Collection of armatures."); + + func= RNA_def_function(srna, "new", "rna_Main_armatures_new"); + RNA_def_function_ui_description(func, "Add a new armature to the main database"); + parm= RNA_def_string(func, "name", "Armature", 0, "", "New name for the datablock."); + RNA_def_property_flag(parm, PROP_REQUIRED); + /* return type */ + parm= RNA_def_pointer(func, "armature", "Armature", "", "New armature datablock."); + RNA_def_function_return(func, parm); + + func= RNA_def_function(srna, "remove", "rna_Main_armatures_remove"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); + RNA_def_function_ui_description(func, "Remove a armature from the current blendfile."); + parm= RNA_def_pointer(func, "armature", "Armature", "", "Armature to remove."); + RNA_def_property_flag(parm, PROP_REQUIRED); +} +void RNA_def_main_actions(BlenderRNA *brna, PropertyRNA *cprop) +{ + StructRNA *srna; + FunctionRNA *func; + PropertyRNA *parm; + + RNA_def_property_srna(cprop, "MainActions"); + srna= RNA_def_struct(brna, "MainActions", NULL); + RNA_def_struct_ui_text(srna, "Main Actions", "Collection of actions."); + + func= RNA_def_function(srna, "new", "rna_Main_actions_new"); + RNA_def_function_ui_description(func, "Add a new action to the main database"); + parm= RNA_def_string(func, "name", "Action", 0, "", "New name for the datablock."); + RNA_def_property_flag(parm, PROP_REQUIRED); + /* return type */ + parm= RNA_def_pointer(func, "action", "Action", "", "New action datablock."); RNA_def_function_return(func, parm); + func= RNA_def_function(srna, "remove", "rna_Main_actions_remove"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); + RNA_def_function_ui_description(func, "Remove a action from the current blendfile."); + parm= RNA_def_pointer(func, "action", "Action", "", "Action to remove."); + RNA_def_property_flag(parm, PROP_REQUIRED); +} +void RNA_def_main_particles(BlenderRNA *brna, PropertyRNA *cprop) +{ + +} +void RNA_def_main_gpencil(BlenderRNA *brna, PropertyRNA *cprop) +{ + } #endif diff --git a/source/blender/makesrna/intern/rna_material.c b/source/blender/makesrna/intern/rna_material.c index b69e5130c0f..635879ce9ec 100644 --- a/source/blender/makesrna/intern/rna_material.c +++ b/source/blender/makesrna/intern/rna_material.c @@ -451,13 +451,13 @@ static void rna_def_material_mtex(BlenderRNA *brna) prop= RNA_def_property(srna, "normal_factor", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "norfac"); - RNA_def_property_ui_range(prop, 0, 5, 10, 3); + RNA_def_property_ui_range(prop, -5, 5, 10, 3); RNA_def_property_ui_text(prop, "Normal Factor", "Amount texture affects normal values."); RNA_def_property_update(prop, 0, "rna_Material_update"); prop= RNA_def_property(srna, "displacement_factor", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "dispfac"); - RNA_def_property_ui_range(prop, 0, 1, 10, 3); + RNA_def_property_ui_range(prop, -1, 1, 10, 3); RNA_def_property_ui_text(prop, "Displacement Factor", "Amount texture displaces the surface."); RNA_def_property_update(prop, 0, "rna_Material_update"); @@ -487,49 +487,49 @@ static void rna_def_material_mtex(BlenderRNA *brna) prop= RNA_def_property(srna, "alpha_factor", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "alphafac"); - RNA_def_property_ui_range(prop, 0, 1, 10, 3); + RNA_def_property_ui_range(prop, -1, 1, 10, 3); RNA_def_property_ui_text(prop, "Alpha Factor", "Amount texture affects alpha."); RNA_def_property_update(prop, 0, "rna_Material_update"); prop= RNA_def_property(srna, "diffuse_factor", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "difffac"); - RNA_def_property_ui_range(prop, 0, 1, 10, 3); + RNA_def_property_ui_range(prop, -1, 1, 10, 3); RNA_def_property_ui_text(prop, "Diffuse Factor", "Amount texture affects diffuse reflectivity."); RNA_def_property_update(prop, 0, "rna_Material_update"); prop= RNA_def_property(srna, "specular_factor", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "specfac"); - RNA_def_property_ui_range(prop, 0, 1, 10, 3); + RNA_def_property_ui_range(prop, -1, 1, 10, 3); RNA_def_property_ui_text(prop, "Specular Factor", "Amount texture affects specular reflectivity."); RNA_def_property_update(prop, 0, "rna_Material_update"); prop= RNA_def_property(srna, "emit_factor", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "emitfac"); - RNA_def_property_ui_range(prop, 0, 1, 10, 3); + RNA_def_property_ui_range(prop, -1, 1, 10, 3); RNA_def_property_ui_text(prop, "Emit Factor", "Amount texture affects emission."); RNA_def_property_update(prop, 0, "rna_Material_update"); prop= RNA_def_property(srna, "hardness_factor", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "hardfac"); - RNA_def_property_ui_range(prop, 0, 1, 10, 3); + RNA_def_property_ui_range(prop, -1, 1, 10, 3); RNA_def_property_ui_text(prop, "Hardness Factor", "Amount texture affects hardness."); RNA_def_property_update(prop, 0, "rna_Material_update"); prop= RNA_def_property(srna, "raymir_factor", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "raymirrfac"); - RNA_def_property_ui_range(prop, 0, 1, 10, 3); + RNA_def_property_ui_range(prop, -1, 1, 10, 3); RNA_def_property_ui_text(prop, "Ray Mirror Factor", "Amount texture affects ray mirror."); RNA_def_property_update(prop, 0, "rna_Material_update"); prop= RNA_def_property(srna, "translucency_factor", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "translfac"); - RNA_def_property_ui_range(prop, 0, 1, 10, 3); + RNA_def_property_ui_range(prop, -1, 1, 10, 3); RNA_def_property_ui_text(prop, "Translucency Factor", "Amount texture affects translucency."); RNA_def_property_update(prop, 0, "rna_Material_update"); prop= RNA_def_property(srna, "ambient_factor", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "ambfac"); - RNA_def_property_ui_range(prop, 0, 1, 10, 3); + RNA_def_property_ui_range(prop, -1, 1, 10, 3); RNA_def_property_ui_text(prop, "Ambient Factor", "Amount texture affects ambient."); RNA_def_property_update(prop, 0, "rna_Material_update"); @@ -1394,11 +1394,13 @@ static void rna_def_material_strand(BlenderRNA *brna) prop= RNA_def_property(srna, "root_size", PROP_FLOAT, PROP_UNSIGNED); RNA_def_property_float_sdna(prop, NULL, "strand_sta"); RNA_def_property_float_funcs(prop, NULL, NULL, "rna_MaterialStrand_start_size_range"); + RNA_def_property_ui_range(prop, 0, 10.0f, 10, 5); RNA_def_property_ui_text(prop, "Root Size", "Start size of strands in pixels or Blender units."); RNA_def_property_update(prop, 0, "rna_Material_update"); prop= RNA_def_property(srna, "tip_size", PROP_FLOAT, PROP_UNSIGNED); RNA_def_property_float_sdna(prop, NULL, "strand_end"); + RNA_def_property_ui_range(prop, 0, 10.0f, 10, 5); RNA_def_property_float_funcs(prop, NULL, NULL, "rna_MaterialStrand_end_size_range"); RNA_def_property_ui_text(prop, "Tip Size", "End size of strands in pixels or Blender units."); RNA_def_property_update(prop, 0, "rna_Material_update"); diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index 1516ae2536d..9b8995b770a 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -55,7 +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_Solidify, "SOLIDIFY", ICON_MOD_SOLIDIFY, "Solidify", ""}, {eModifierType_Subsurf, "SUBSURF", ICON_MOD_SUBSURF, "Subdivision Surface", ""}, {eModifierType_UVProject, "UV_PROJECT", ICON_MOD_UVPROJECT, "UV Project", ""}, {0, "", 0, "Deform", ""}, @@ -328,7 +328,7 @@ static void rna_CastModifier_vgroup_set(PointerRNA *ptr, const char *value) 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)); + rna_object_vgroup_name_set(ptr, value, smd->defgrp_name, sizeof(smd->defgrp_name)); } static void rna_DisplaceModifier_uvlayer_set(PointerRNA *ptr, const char *value) @@ -2019,7 +2019,7 @@ static void rna_def_modifier_solidify(BlenderRNA *brna) 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); + RNA_def_struct_ui_icon(srna, ICON_MOD_SOLIDIFY); prop= RNA_def_property(srna, "offset", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "offset"); @@ -2050,7 +2050,7 @@ static void rna_def_modifier_solidify(BlenderRNA *brna) 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_string_sdna(prop, NULL, "defgrp_name"); 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"); @@ -2124,6 +2124,7 @@ void RNA_def_modifier(BlenderRNA *brna) prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "mode", eModifierMode_Expanded); RNA_def_property_ui_text(prop, "Expanded", "Set modifier expanded in the user interface."); + RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1); /* types */ diff --git a/source/blender/makesrna/intern/rna_nla.c b/source/blender/makesrna/intern/rna_nla.c index 20d1a898303..7de0f4e8f6b 100644 --- a/source/blender/makesrna/intern/rna_nla.c +++ b/source/blender/makesrna/intern/rna_nla.c @@ -85,6 +85,12 @@ static char *rna_NlaStrip_path(PointerRNA *ptr) return ""; } +static void rna_NlaStrip_transform_update(Main *bmain, Scene *scene, PointerRNA *ptr) +{ + NlaStrip *strip= (NlaStrip*)ptr->data; + + BKE_nlameta_flush_transforms(strip); +} static void rna_NlaStrip_start_frame_set(PointerRNA *ptr, float value) { @@ -158,43 +164,25 @@ static void rna_NlaStrip_end_frame_set(PointerRNA *ptr, float value) static void rna_NlaStrip_scale_set(PointerRNA *ptr, float value) { NlaStrip *data= (NlaStrip*)ptr->data; - float actlen, mapping; /* set scale value */ CLAMP(value, 0.0001f, 1000.0f); /* NOTE: these need to be synced with the values in the property definition in rna_def_nlastrip() */ data->scale= value; - /* calculate existing factors */ - actlen= data->actend - data->actstart; - if (IS_EQ(actlen, 0.0f)) actlen= 1.0f; - mapping= data->scale * data->repeat; - - /* adjust endpoint of strip in response to this */ - if (IS_EQ(mapping, 0.0f) == 0) - data->end = (actlen * mapping) + data->start; - else - printf("NlaStrip Set Scale Error (in RNA): Scale = %0.4f, Repeat = %0.4f \n", data->scale, data->repeat); + /* adjust the strip extents in response to this */ + BKE_nlastrip_recalculate_bounds(data); } static void rna_NlaStrip_repeat_set(PointerRNA *ptr, float value) { NlaStrip *data= (NlaStrip*)ptr->data; - float actlen, mapping; - /* set scale value */ + /* set repeat value */ CLAMP(value, 0.01f, 1000.0f); /* NOTE: these need to be synced with the values in the property definition in rna_def_nlastrip() */ data->repeat= value; - /* calculate existing factors */ - actlen= data->actend - data->actstart; - if (IS_EQ(actlen, 0.0f)) actlen= 1.0f; - mapping= data->scale * data->repeat; - - /* adjust endpoint of strip in response to this */ - if (IS_EQ(mapping, 0.0f) == 0) - data->end = (actlen * mapping) + data->start; - else - printf("NlaStrip Set Repeat Error (in RNA): Scale = %0.4f, Repeat = %0.4f \n", data->scale, data->repeat); + /* adjust the strip extents in response to this */ + BKE_nlastrip_recalculate_bounds(data); } static void rna_NlaStrip_blend_in_set(PointerRNA *ptr, float value) @@ -228,15 +216,26 @@ static void rna_NlaStrip_blend_out_set(PointerRNA *ptr, float value) static void rna_NlaStrip_action_start_frame_set(PointerRNA *ptr, float value) { NlaStrip *data= (NlaStrip*)ptr->data; + + /* prevent start frame from occurring after end of action */ CLAMP(value, MINAFRAME, data->actend); data->actstart= value; + + /* adjust the strip extents in response to this */ + // TODO: should the strip be moved backwards instead as a special case? + BKE_nlastrip_recalculate_bounds(data); } static void rna_NlaStrip_action_end_frame_set(PointerRNA *ptr, float value) { NlaStrip *data= (NlaStrip*)ptr->data; + + /* prevent end frame from starting before start of action */ CLAMP(value, data->actstart, MAXFRAME); data->actend= value; + + /* adjust the strip extents in response to this */ + BKE_nlastrip_recalculate_bounds(data); } static void rna_NlaStrip_animated_influence_set(PointerRNA *ptr, int value) @@ -326,11 +325,13 @@ static void rna_def_nlastrip(BlenderRNA *brna) RNA_def_property_float_sdna(prop, NULL, "start"); RNA_def_property_float_funcs(prop, NULL, "rna_NlaStrip_start_frame_set", NULL); RNA_def_property_ui_text(prop, "Start Frame", ""); + RNA_def_property_update(prop, 0, "rna_NlaStrip_transform_update"); prop= RNA_def_property(srna, "end_frame", PROP_FLOAT, PROP_TIME); RNA_def_property_float_sdna(prop, NULL, "end"); RNA_def_property_float_funcs(prop, NULL, "rna_NlaStrip_end_frame_set", NULL); RNA_def_property_ui_text(prop, "End Frame", ""); + RNA_def_property_update(prop, 0, "rna_NlaStrip_transform_update"); /* Blending */ prop= RNA_def_property(srna, "blend_in", PROP_FLOAT, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c index d1e73d6add3..8b9eb00e96a 100644 --- a/source/blender/makesrna/intern/rna_nodetree.c +++ b/source/blender/makesrna/intern/rna_nodetree.c @@ -42,8 +42,12 @@ #include "BKE_image.h" #include "BKE_texture.h" +#include "BLI_math.h" + #include "WM_types.h" +#include "MEM_guardedalloc.h" + #ifdef RNA_RUNTIME #include "ED_node.h" @@ -63,6 +67,9 @@ static StructRNA *rna_Node_refine(struct PointerRNA *ptr) #undef DefNode + case NODE_GROUP: + return &RNA_NodeGroup; + default: return &RNA_Node; } @@ -177,6 +184,16 @@ static void rna_Node_update(Main *bmain, Scene *scene, PointerRNA *ptr) node_update(bmain, scene, ntree, node); } +static void rna_NodeGroup_update(Main *bmain, Scene *scene, PointerRNA *ptr) +{ + bNodeTree *ntree= (bNodeTree*)ptr->id.data; + bNode *node= (bNode*)ptr->data; + + nodeVerifyGroup((bNodeTree *)node->id); + + node_update(bmain, scene, ntree, node); +} + static void rna_Node_update_name(Main *bmain, Scene *scene, PointerRNA *ptr) { bNodeTree *ntree= (bNodeTree*)ptr->id.data; @@ -474,7 +491,7 @@ static EnumPropertyItem node_filter_items[] = { enum { - Category_NoCategory, + Category_GroupNode, Category_ShaderNode, Category_CompositorNode, Category_TextureNode @@ -521,6 +538,8 @@ static void init(void) #undef DefNode #undef Str + + reg_node(NODE_GROUP, Category_GroupNode, "GROUP", "NodeGroup", "Node", "Group", ""); } static StructRNA* def_node(BlenderRNA *brna, int node_id) @@ -535,17 +554,17 @@ static StructRNA* def_node(BlenderRNA *brna, int node_id) return srna; } -static EnumPropertyItem* alloc_node_type_items(int category) +void alloc_node_type_items(EnumPropertyItem *items, int category) { int i; - int count = 2; - EnumPropertyItem *item, *items; + int count = 3; + EnumPropertyItem *item = items; for(i=0; i<MaxNodes; i++) if(nodes[i].defined && nodes[i].category == category) count++; - item = items = malloc(count * sizeof(EnumPropertyItem)); + /*item = items = MEM_callocN(count * sizeof(EnumPropertyItem), "alloc_node_type_items");*/ for(i=0; i<MaxNodes; i++) { NodeInfo *node = nodes + i; @@ -562,19 +581,41 @@ static EnumPropertyItem* alloc_node_type_items(int category) item->value = NODE_DYNAMIC; item->identifier = "SCRIPT"; + item->icon = 0; item->name = "Script"; item->description = ""; item++; - memset(item, 0, sizeof(EnumPropertyItem)); + item->value = NODE_GROUP; + item->identifier = "GROUP"; + item->icon = 0; + item->name = "Group"; + item->description = ""; + + item++; - return items; + /* NOTE!, increase 'count' when adding items here */ + + memset(item, 0, sizeof(EnumPropertyItem)); } /* -- Common nodes ---------------------------------------------------------- */ +static void def_group(StructRNA *srna) +{ + PropertyRNA *prop; + + prop = RNA_def_property(srna, "nodetree", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "id"); + RNA_def_property_struct_type(prop, "NodeTree"); + RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Node Tree", ""); + RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_NodeGroup_update"); +} + + static void def_math(StructRNA *srna) { PropertyRNA *prop; @@ -1077,12 +1118,6 @@ static void def_cmp_render_layers(StructRNA *srna) RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_Node_scene_layer_itemf"); RNA_def_property_ui_text(prop, "Layer", ""); RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update"); - - /* TODO: comments indicate this might be a hack */ - prop = RNA_def_property(srna, "re_render", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "custom2", 1); - RNA_def_property_ui_text(prop, "Re-render", ""); - RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update"); } static void def_cmp_output_file(StructRNA *srna) @@ -1821,7 +1856,83 @@ static void def_cmp_lensdist(StructRNA *srna) RNA_def_property_ui_text(prop, "Fit", "For positive distortion factor only: scale image such that black areas are not visible"); RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update"); } + +static void def_cmp_colorbalance(StructRNA *srna) +{ + PropertyRNA *prop; + static float default_1[3] = {1.f, 1.f, 1.f}; + static EnumPropertyItem type_items[] = { + {0, "LIFT_GAMMA_GAIN", 0, "Lift/Gamma/Gain", ""}, + {1, "OFFSET_POWER_SLOPE", 0, "Offset/Power/Slope (ASC-CDL)", "ASC-CDL standard color correction"}, + {0, NULL, 0, NULL, NULL}}; + + prop = RNA_def_property(srna, "correction_formula", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "custom1"); + RNA_def_property_enum_items(prop, type_items); + RNA_def_property_ui_text(prop, "Correction Formula", ""); + RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update"); + + RNA_def_struct_sdna_from(srna, "NodeColorBalance", "storage"); + + prop = RNA_def_property(srna, "lift", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, NULL, "lift"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_range(prop, 0, 1, 0.1, 3); + RNA_def_property_ui_text(prop, "Lift", "Correction for Shadows"); + RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update"); + + prop = RNA_def_property(srna, "gamma", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, NULL, "gamma"); + RNA_def_property_array(prop, 3); + RNA_def_property_float_array_default(prop, default_1); + RNA_def_property_ui_range(prop, 0, 2, 0.1, 3); + RNA_def_property_ui_text(prop, "Gamma", "Correction for Midtones"); + RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update"); + + prop = RNA_def_property(srna, "gain", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, NULL, "gain"); + RNA_def_property_array(prop, 3); + RNA_def_property_float_array_default(prop, default_1); + RNA_def_property_ui_range(prop, 0, 2, 0.1, 3); + RNA_def_property_ui_text(prop, "Gain", "Correction for Highlights"); + RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update"); + + + prop = RNA_def_property(srna, "offset", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, NULL, "lift"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_range(prop, 0, 1, 0.1, 3); + RNA_def_property_ui_text(prop, "Offset", "Correction for Shadows"); + RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update"); + + prop = RNA_def_property(srna, "power", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, NULL, "gamma"); + RNA_def_property_array(prop, 3); + RNA_def_property_float_array_default(prop, default_1); + RNA_def_property_ui_range(prop, 0, 2, 0.1, 3); + RNA_def_property_ui_text(prop, "Power", "Correction for Midtones"); + RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update"); + + prop = RNA_def_property(srna, "slope", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, NULL, "gain"); + RNA_def_property_array(prop, 3); + RNA_def_property_float_array_default(prop, default_1); + RNA_def_property_ui_range(prop, 0, 2, 0.1, 3); + RNA_def_property_ui_text(prop, "Slope", "Correction for Highlights"); + RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update"); +} + +static void def_cmp_huecorrect(StructRNA *srna) +{ + PropertyRNA *prop; + + prop = RNA_def_property(srna, "mapping", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "storage"); + RNA_def_property_struct_type(prop, "CurveMapping"); + RNA_def_property_ui_text(prop, "Mapping", ""); + RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update"); +} /* -- Texture Nodes --------------------------------------------------------- */ @@ -1889,13 +2000,13 @@ static void def_tex_bricks(StructRNA *srna) /* -------------------------------------------------------------------------- */ +static EnumPropertyItem shader_node_type_items[MaxNodes]; static void rna_def_shader_node(BlenderRNA *brna) { StructRNA *srna; PropertyRNA *prop; - EnumPropertyItem *node_type_items; - node_type_items = alloc_node_type_items(Category_ShaderNode); + alloc_node_type_items(shader_node_type_items, Category_ShaderNode); srna = RNA_def_struct(brna, "ShaderNode", "Node"); RNA_def_struct_ui_text(srna, "Shader Node", "Material shader node."); @@ -1903,17 +2014,17 @@ static void rna_def_shader_node(BlenderRNA *brna) prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE); RNA_def_property_clear_flag(prop, PROP_EDITABLE); - RNA_def_property_enum_items(prop, node_type_items); + RNA_def_property_enum_items(prop, shader_node_type_items); RNA_def_property_ui_text(prop, "Type", ""); } +static EnumPropertyItem compositor_node_type_items[MaxNodes]; static void rna_def_compositor_node(BlenderRNA *brna) { StructRNA *srna; PropertyRNA *prop; - EnumPropertyItem *node_type_items; - node_type_items = alloc_node_type_items(Category_CompositorNode); + alloc_node_type_items(compositor_node_type_items, Category_CompositorNode); srna = RNA_def_struct(brna, "CompositorNode", "Node"); RNA_def_struct_ui_text(srna, "Compositor Node", ""); @@ -1921,17 +2032,17 @@ static void rna_def_compositor_node(BlenderRNA *brna) prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE); RNA_def_property_clear_flag(prop, PROP_EDITABLE); - RNA_def_property_enum_items(prop, node_type_items); + RNA_def_property_enum_items(prop, compositor_node_type_items); RNA_def_property_ui_text(prop, "Type", ""); } +static EnumPropertyItem texture_node_type_items[MaxNodes]; static void rna_def_texture_node(BlenderRNA *brna) { StructRNA *srna; PropertyRNA *prop; - EnumPropertyItem *node_type_items; - node_type_items = alloc_node_type_items(Category_TextureNode); + alloc_node_type_items(texture_node_type_items, Category_TextureNode); srna = RNA_def_struct(brna, "TextureNode", "Node"); RNA_def_struct_ui_text(srna, "Texture Node", ""); @@ -1939,7 +2050,7 @@ static void rna_def_texture_node(BlenderRNA *brna) prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE); RNA_def_property_clear_flag(prop, PROP_EDITABLE); - RNA_def_property_enum_items(prop, node_type_items); + RNA_def_property_enum_items(prop, texture_node_type_items); RNA_def_property_ui_text(prop, "Type", ""); } @@ -2112,13 +2223,15 @@ void RNA_def_nodetree(BlenderRNA *brna) rna_def_shader_node(brna); rna_def_compositor_node(brna); rna_def_texture_node(brna); - + #define DefNode(Category, ID, DefFunc, EnumName, StructName, UIName, UIDesc) \ define_specific_node(brna, ID, DefFunc); #include "rna_nodetree_types.h" #undef DefNode + + define_specific_node(brna, NODE_GROUP, def_group); } #endif diff --git a/source/blender/makesrna/intern/rna_nodetree_types.h b/source/blender/makesrna/intern/rna_nodetree_types.h index d9a1db996de..73a1c23af50 100644 --- a/source/blender/makesrna/intern/rna_nodetree_types.h +++ b/source/blender/makesrna/intern/rna_nodetree_types.h @@ -107,6 +107,8 @@ DefNode( CompositorNode, CMP_NODE_LENSDIST, def_cmp_lensdist, "LENSD DefNode( CompositorNode, CMP_NODE_VIEW_LEVELS, def_cmp_levels, "LEVELS", Levels, "Levels", "" ) DefNode( CompositorNode, CMP_NODE_COLOR_MATTE, def_cmp_color_matte, "COLOR_MATTE", ColorMatte, "Color Matte", "" ) DefNode( CompositorNode, CMP_NODE_DIST_MATTE, def_cmp_distance_matte, "DISTANCE_MATTE", DistanceMatte, "Distance Matte", "" ) +DefNode( CompositorNode, CMP_NODE_COLORBALANCE, def_cmp_colorbalance, "COLORBALANCE", ColorBalance, "Color Balance", "" ) +DefNode( CompositorNode, CMP_NODE_HUECORRECT, def_cmp_huecorrect, "HUECORRECT", HueCorrect, "Hue Correct", "" ) DefNode( TextureNode, TEX_NODE_OUTPUT, def_tex_output, "OUTPUT", Output, "Output", "" ) DefNode( TextureNode, TEX_NODE_CHECKER, 0, "CHECKER", Checker, "Checker", "" ) diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 0a4fa71c006..ff94b2eddbd 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -930,7 +930,7 @@ static PointerRNA rna_Object_active_shape_key_get(PointerRNA *ptr) return PointerRNA_NULL; kb= BLI_findlink(&key->block, ob->shapenr-1); - RNA_pointer_create(&key->id, &RNA_ShapeKey, kb, &keyptr); + RNA_pointer_create((ID *)ob->data, &RNA_ShapeKey, kb, &keyptr); return keyptr; } @@ -1378,12 +1378,12 @@ static void rna_def_object(BlenderRNA *brna) {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem track_items[] = { - {OB_POSX, "POSX", 0, "+X", ""}, - {OB_POSY, "POSY", 0, "+Y", ""}, - {OB_POSZ, "POSZ", 0, "+Z", ""}, - {OB_NEGX, "NEGX", 0, "-X", ""}, - {OB_NEGY, "NEGY", 0, "-Y", ""}, - {OB_NEGZ, "NEGZ", 0, "-Z", ""}, + {OB_POSX, "POS_X", 0, "+X", ""}, + {OB_POSY, "POS_Y", 0, "+Y", ""}, + {OB_POSZ, "POS_Z", 0, "+Z", ""}, + {OB_NEGX, "NEG_X", 0, "-X", ""}, + {OB_NEGY, "NEG_Y", 0, "-Y", ""}, + {OB_NEGZ, "NEG_Z", 0, "-Z", ""}, {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem up_items[] = { @@ -1559,7 +1559,7 @@ static void rna_def_object(BlenderRNA *brna) * having a single one is better for Keyframing and other property-management situations... */ 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_array(prop, 4); 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_float_array_default(prop, default_axisAngle); @@ -1771,6 +1771,9 @@ static void rna_def_object(BlenderRNA *brna) /* anim */ rna_def_animdata_common(srna); + rna_def_animviz_common(srna); + rna_def_motionpath_common(srna); + /* duplicates */ prop= RNA_def_property(srna, "track_override_parent", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "transflag", OB_POWERTRACK); diff --git a/source/blender/makesrna/intern/rna_object_api.c b/source/blender/makesrna/intern/rna_object_api.c index 9426b9c9eb3..df4c12edd1d 100644 --- a/source/blender/makesrna/intern/rna_object_api.c +++ b/source/blender/makesrna/intern/rna_object_api.c @@ -310,19 +310,23 @@ static Object *rna_Object_find_armature(Object *ob) return ob_arm; } -static KeyBlock *rna_Object_add_shape_key(Object *ob, bContext *C, ReportList *reports, char *name, int from_mix) +static PointerRNA rna_Object_add_shape_key(Object *ob, bContext *C, ReportList *reports, char *name, int from_mix) { Scene *scene= CTX_data_scene(C); KeyBlock *kb= NULL; if((kb=object_insert_shape_key(scene, ob, name, from_mix))) { + PointerRNA keyptr; + + RNA_pointer_create((ID *)ob->data, &RNA_ShapeKey, kb, &keyptr); WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + + return keyptr; } else { BKE_reportf(reports, RPT_ERROR, "Object \"%s\"does not support shapes.", ob->id.name+2); + return PointerRNA_NULL; } - - return kb; } int rna_Object_is_visible(Object *ob, bContext *C) @@ -339,7 +343,7 @@ static void rna_Mesh_assign_verts_to_group(Object *ob, bDeformGroup *group, int } Mesh *me = (Mesh*)ob->data; - int group_index = get_defgroup_num(ob, group); + int group_index = defgroup_find_index(ob, group); if (group_index == -1) { BKE_report(reports, RPT_ERROR, "No deform groups assigned to mesh."); return; @@ -476,6 +480,7 @@ void RNA_api_object(StructRNA *srna) parm= RNA_def_string(func, "name", "Key", 0, "", "Unique name for the new keylock."); /* optional */ parm= RNA_def_boolean(func, "from_mix", 1, "", "Create new shape from existing mix of shapes."); parm= RNA_def_pointer(func, "key", "ShapeKey", "", "New shape keyblock."); + RNA_def_property_flag(parm, PROP_RNAPTR); RNA_def_function_return(func, parm); /* Ray Cast */ @@ -492,13 +497,13 @@ void RNA_api_object(StructRNA *srna) /* return location and normal */ parm= RNA_def_float_vector(func, "location", 3, NULL, -FLT_MAX, FLT_MAX, "Location", "The hit location of this ray cast", -1e4, 1e4); RNA_def_property_flag(parm, PROP_THICK_WRAP); - RNA_def_function_return_mark(func, parm); + RNA_def_function_output(func, parm); parm= RNA_def_float_vector(func, "normal", 3, NULL, -FLT_MAX, FLT_MAX, "Normal", "The face normal at the ray cast hit location", -1e4, 1e4); RNA_def_property_flag(parm, PROP_THICK_WRAP); - RNA_def_function_return_mark(func, parm); + RNA_def_function_output(func, parm); parm= RNA_def_int(func, "index", 0, 0, 0, "", "The face index, -1 when no intersection is found.", 0, 0); - RNA_def_function_return_mark(func, parm); + RNA_def_function_output(func, parm); /* DAG */ diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c index 0eb4f9b9da0..852c9107dd3 100644 --- a/source/blender/makesrna/intern/rna_object_force.c +++ b/source/blender/makesrna/intern/rna_object_force.c @@ -1312,7 +1312,7 @@ static void rna_def_field(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Amplitude", "The amplitude of the offset"); RNA_def_property_update(prop, 0, "rna_FieldSettings_update"); - /* Variables used for Curve Guide, allready wrapped, used for other fields too */ + /* Variables used for Curve Guide, already wrapped, used for other fields too */ // falloff_power, use_max_distance, maximum_distance } diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c index 543965a337e..4cbd2f39bf6 100644 --- a/source/blender/makesrna/intern/rna_particle.c +++ b/source/blender/makesrna/intern/rna_particle.c @@ -590,7 +590,7 @@ static void psys_vg_name_set__internal(PointerRNA *ptr, const char *value, int i psys->vgroup[index]= 0; } else { - int vgroup_num = get_named_vertexgroup_num(ob, (char*)value); + int vgroup_num = defgroup_name_index(ob, (char*)value); if(vgroup_num == -1) return; @@ -658,7 +658,8 @@ static void rna_def_particle_hair_key(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Time", "Relative time of key over hair length."); prop= RNA_def_property(srna, "weight", PROP_FLOAT, PROP_UNSIGNED); - RNA_def_property_ui_text(prop, "Weight", "Weight for softbody simulation."); + RNA_def_property_range(prop, 0.0, 1.0); + RNA_def_property_ui_text(prop, "Weight", "Weight for cloth simulation."); } static void rna_def_particle_key(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c index ff8f21028eb..17c793b3b8c 100644 --- a/source/blender/makesrna/intern/rna_pose.c +++ b/source/blender/makesrna/intern/rna_pose.c @@ -37,6 +37,8 @@ #include "DNA_object_types.h" #include "DNA_scene_types.h" +#include "BLI_math.h" + #include "WM_types.h" #ifdef RNA_RUNTIME @@ -44,7 +46,6 @@ #include "BIK_api.h" #include "BKE_action.h" #include "BKE_armature.h" -#include "BLI_math.h" #include "DNA_userdef_types.h" @@ -446,10 +447,19 @@ static int rna_PoseChannel_constraints_remove(bPoseChannel *pchan, bContext *C, return remove_constraint_index(&pchan->constraints, index); } -static int rna_PoseChannel_location_editable(PointerRNA *ptr, int index) +static int rna_PoseChannel_proxy_editable(PointerRNA *ptr) { + Object *ob= (Object*)ptr->id.data; + bArmature *arm= ob->data; bPoseChannel *pchan= (bPoseChannel*)ptr->data; + return (ob->proxy && pchan->bone && (pchan->bone->layer & arm->layer_protected))? 0: PROP_EDITABLE; +} + +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; @@ -674,6 +684,7 @@ static void rna_def_pose_channel(BlenderRNA *brna) prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); RNA_def_property_string_funcs(prop, NULL, NULL, "rna_PoseChannel_name_set"); RNA_def_property_ui_text(prop, "Name", ""); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_struct_name_property(srna, prop); prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); @@ -685,14 +696,18 @@ static void rna_def_pose_channel(BlenderRNA *brna) RNA_def_property_int_sdna(prop, NULL, "pathsf"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Bone Paths Calculation Start Frame", "Starting frame of range of frames to use for Bone Path calculations."); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); prop= RNA_def_property(srna, "path_end_frame", PROP_INT, PROP_TIME); RNA_def_property_int_sdna(prop, NULL, "pathef"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Bone Paths Calculation End Frame", "End frame of range of frames to use for Bone Path calculations."); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); + rna_def_motionpath_common(srna); + /* Relationships to other bones */ prop= RNA_def_property(srna, "bone", PROP_POINTER, PROP_NONE); RNA_def_property_flag(prop, PROP_NEVER_NULL); @@ -715,20 +730,23 @@ static void rna_def_pose_channel(BlenderRNA *brna) 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"); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); + RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "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"); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); + RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "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_float_array_default(prop, default_quat); RNA_def_property_ui_text(prop, "Quaternion Rotation", "Rotation in Quaternions."); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update"); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); + RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); /* XXX: for axis-angle, it would have been nice to have 2 separate fields for UI purposes, but * having a single one is better for Keyframing and other property-management situations... @@ -739,18 +757,21 @@ static void rna_def_pose_channel(BlenderRNA *brna) RNA_def_property_editable_array_func(prop, "rna_PoseChannel_rotation_4d_editable"); RNA_def_property_float_array_default(prop, default_axisAngle); 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"); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); + RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "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_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_ui_text(prop, "Euler Rotation", "Rotation in Eulers."); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Pose_update"); + RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); prop= RNA_def_property(srna, "rotation_mode", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "rotmode"); RNA_def_property_enum_items(prop, prop_rotmode_items); // XXX move to using a single define of this someday RNA_def_property_enum_funcs(prop, NULL, "rna_PoseChannel_rotation_mode_set", NULL); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_ui_text(prop, "Rotation Mode", ""); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); @@ -795,113 +816,133 @@ static void rna_def_pose_channel(BlenderRNA *brna) prop= RNA_def_property(srna, "ik_dof_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "ikflag", BONE_IK_NO_XDOF); RNA_def_property_ui_text(prop, "IK X DoF", "Allow movement around the X axis."); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update"); prop= RNA_def_property(srna, "ik_dof_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "ikflag", BONE_IK_NO_YDOF); RNA_def_property_ui_text(prop, "IK Y DoF", "Allow movement around the Y axis."); - RNA_def_property_update(prop, NC_OBJECT|ND_POSE|ND_TRANSFORM, "rna_Pose_IK_update"); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); + RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update"); prop= RNA_def_property(srna, "ik_dof_z", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "ikflag", BONE_IK_NO_ZDOF); RNA_def_property_ui_text(prop, "IK Z DoF", "Allow movement around the Z axis."); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update"); prop= RNA_def_property(srna, "ik_limit_x", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "ikflag", BONE_IK_XLIMIT); RNA_def_property_ui_text(prop, "IK X Limit", "Limit movement around the X axis."); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update"); prop= RNA_def_property(srna, "ik_limit_y", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "ikflag", BONE_IK_YLIMIT); RNA_def_property_ui_text(prop, "IK Y Limit", "Limit movement around the Y axis."); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update"); prop= RNA_def_property(srna, "ik_limit_z", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "ikflag", BONE_IK_ZLIMIT); RNA_def_property_ui_text(prop, "IK Z Limit", "Limit movement around the Z axis."); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update"); prop= RNA_def_property(srna, "ik_rot_control", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "ikflag", BONE_IK_ROTCTL); RNA_def_property_ui_text(prop, "IK rot control", "Apply channel rotation as IK constraint"); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update"); prop= RNA_def_property(srna, "ik_lin_control", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "ikflag", BONE_IK_LINCTL); RNA_def_property_ui_text(prop, "IK rot control", "Apply channel size as IK constraint if stretching is enabled"); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update"); prop= RNA_def_property(srna, "ik_min_x", PROP_FLOAT, PROP_ANGLE); RNA_def_property_float_sdna(prop, NULL, "limitmin[0]"); - RNA_def_property_range(prop, -180.0f, 0.0f); + RNA_def_property_range(prop, -M_PI, 0.0f); RNA_def_property_ui_text(prop, "IK X Minimum", "Minimum angles for IK Limit"); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update"); prop= RNA_def_property(srna, "ik_max_x", PROP_FLOAT, PROP_ANGLE); RNA_def_property_float_sdna(prop, NULL, "limitmax[0]"); - RNA_def_property_range(prop, 0.0f, 180.0f); + RNA_def_property_range(prop, 0.0f, M_PI); RNA_def_property_ui_text(prop, "IK X Maximum", "Maximum angles for IK Limit"); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update"); prop= RNA_def_property(srna, "ik_min_y", PROP_FLOAT, PROP_ANGLE); RNA_def_property_float_sdna(prop, NULL, "limitmin[1]"); - RNA_def_property_range(prop, -180.0f, 0.0f); + RNA_def_property_range(prop, -M_PI, 0.0f); RNA_def_property_ui_text(prop, "IK Y Minimum", "Minimum angles for IK Limit"); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update"); prop= RNA_def_property(srna, "ik_max_y", PROP_FLOAT, PROP_ANGLE); RNA_def_property_float_sdna(prop, NULL, "limitmax[1]"); - RNA_def_property_range(prop, 0.0f, 180.0f); + RNA_def_property_range(prop, 0.0f, M_PI); RNA_def_property_ui_text(prop, "IK Y Maximum", "Maximum angles for IK Limit"); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update"); prop= RNA_def_property(srna, "ik_min_z", PROP_FLOAT, PROP_ANGLE); RNA_def_property_float_sdna(prop, NULL, "limitmin[2]"); - RNA_def_property_range(prop, -180.0f, 0.0f); + RNA_def_property_range(prop, -M_PI, 0.0f); RNA_def_property_ui_text(prop, "IK Z Minimum", "Minimum angles for IK Limit"); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update"); prop= RNA_def_property(srna, "ik_max_z", PROP_FLOAT, PROP_ANGLE); RNA_def_property_float_sdna(prop, NULL, "limitmax[2]"); - RNA_def_property_range(prop, 0.0f, 180.0f); + RNA_def_property_range(prop, 0.0f, M_PI); RNA_def_property_ui_text(prop, "IK Z Maximum", "Maximum angles for IK Limit"); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update"); prop= RNA_def_property(srna, "ik_stiffness_x", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "stiffness[0]"); RNA_def_property_range(prop, 0.0f, 0.99f); RNA_def_property_ui_text(prop, "IK X Stiffness", "IK stiffness around the X axis."); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update"); prop= RNA_def_property(srna, "ik_stiffness_y", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "stiffness[1]"); RNA_def_property_range(prop, 0.0f, 0.99f); RNA_def_property_ui_text(prop, "IK Y Stiffness", "IK stiffness around the Y axis."); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update"); prop= RNA_def_property(srna, "ik_stiffness_z", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "stiffness[2]"); RNA_def_property_range(prop, 0.0f, 0.99f); RNA_def_property_ui_text(prop, "IK Z Stiffness", "IK stiffness around the Z axis."); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update"); prop= RNA_def_property(srna, "ik_stretch", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "ikstretch"); RNA_def_property_range(prop, 0.0f,1.0f); RNA_def_property_ui_text(prop, "IK Stretch", "Allow scaling of the bone for IK."); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update"); prop= RNA_def_property(srna, "ik_rot_weight", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "ikrotweight"); RNA_def_property_range(prop, 0.0f,1.0f); RNA_def_property_ui_text(prop, "IK Rot Weight", "Weight of rotation constraint for IK."); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); prop= RNA_def_property(srna, "ik_lin_weight", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "iklinweight"); RNA_def_property_range(prop, 0.0f,1.0f); RNA_def_property_ui_text(prop, "IK Lin Weight", "Weight of scale constraint for IK."); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); /* custom bone shapes */ @@ -910,6 +951,7 @@ static void rna_def_pose_channel(BlenderRNA *brna) RNA_def_property_struct_type(prop, "Object"); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Custom Object", "Object that defines custom draw type for this bone."); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); prop= RNA_def_property(srna, "custom_shape_transform", PROP_POINTER, PROP_NONE); @@ -917,6 +959,7 @@ static void rna_def_pose_channel(BlenderRNA *brna) RNA_def_property_struct_type(prop, "PoseBone"); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Custom Shape Transform", "Bone that defines the display transform of this custom shape."); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); /* bone groups */ @@ -925,6 +968,7 @@ static void rna_def_pose_channel(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_int_funcs(prop, "rna_PoseChannel_bone_group_index_get", "rna_PoseChannel_bone_group_index_set", "rna_PoseChannel_bone_group_index_range"); RNA_def_property_ui_text(prop, "Bone Group Index", "Bone Group this pose channel belongs to (0=no group)."); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); prop= RNA_def_property(srna, "bone_group", PROP_POINTER, PROP_NONE); @@ -932,6 +976,7 @@ static void rna_def_pose_channel(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_pointer_funcs(prop, "rna_PoseChannel_bone_group_get", "rna_PoseChannel_bone_group_set", NULL); RNA_def_property_ui_text(prop, "Bone Group", "Bone Group this pose channel belongs to"); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); /* transform locks */ @@ -939,29 +984,35 @@ static void rna_def_pose_channel(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "protectflag", OB_LOCK_LOCX); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Lock Location", "Lock editing of location in the interface."); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); prop= RNA_def_property(srna, "lock_rotation", PROP_BOOLEAN, PROP_XYZ); RNA_def_property_boolean_sdna(prop, NULL, "protectflag", OB_LOCK_ROTX); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Lock Rotation", "Lock editing of rotation in the interface."); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); // XXX this is sub-optimal - it really should be included above, but due to technical reasons we can't do this! prop= RNA_def_property(srna, "lock_rotation_w", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "protectflag", OB_LOCK_ROTW); RNA_def_property_ui_text(prop, "Lock Rotation (4D Angle)", "Lock editing of 'angle' component of four-component rotations in the interface."); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); + // XXX this needs a better name prop= RNA_def_property(srna, "lock_rotations_4d", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "protectflag", OB_LOCK_ROT4D); RNA_def_property_ui_text(prop, "Lock Rotations (4D)", "Lock editing of four component rotations by components (instead of as Eulers)."); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); prop= RNA_def_property(srna, "lock_scale", PROP_BOOLEAN, PROP_XYZ); RNA_def_property_boolean_sdna(prop, NULL, "protectflag", OB_LOCK_SCALEX); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Lock Scale", "Lock editing of scale in the interface."); + RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable"); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); RNA_api_pose_channel(srna); @@ -1115,7 +1166,8 @@ static void rna_def_pose(BlenderRNA *brna) RNA_def_property_int_funcs(prop, "rna_Pose_active_bone_group_index_get", "rna_Pose_active_bone_group_index_set", "rna_Pose_active_bone_group_index_range"); RNA_def_property_ui_text(prop, "Active Bone Group Index", "Active index in bone groups array."); RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update"); - + + /* ik solvers */ prop= RNA_def_property(srna, "ik_solver", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "iksolver"); RNA_def_property_enum_funcs(prop, NULL, "rna_Pose_ik_solver_set", NULL); @@ -1128,7 +1180,10 @@ static void rna_def_pose(BlenderRNA *brna) RNA_def_property_pointer_funcs(prop, "rna_Pose_ikparam_get", NULL, "rna_Pose_ikparam_typef"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "IK Param", "Parameters for IK solver."); - + + /* animviz */ + rna_def_animviz_common(srna); + /* RNA_api_pose(srna); */ } diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c index 8212423acd5..85fd33f6c63 100644 --- a/source/blender/makesrna/intern/rna_render.c +++ b/source/blender/makesrna/intern/rna_render.c @@ -369,6 +369,8 @@ static void rna_def_render_pass(BlenderRNA *brna) {SCE_PASS_INDEXOB, "OBJECT_INDEX", 0, "Object Index", ""}, {SCE_PASS_UV, "UV", 0, "UV", ""}, {SCE_PASS_MIST, "MIST", 0, "Mist", ""}, + {SCE_PASS_EMIT, "EMIT", 0, "Emit", ""}, + {SCE_PASS_ENVIRONMENT, "ENVIRONMENT", 0, "Environment", ""}, {0, NULL, 0, NULL, NULL}}; srna= RNA_def_struct(brna, "RenderPass", NULL); diff --git a/source/blender/makesrna/intern/rna_rna.c b/source/blender/makesrna/intern/rna_rna.c index e6c21d8fede..7de418108ed 100644 --- a/source/blender/makesrna/intern/rna_rna.c +++ b/source/blender/makesrna/intern/rna_rna.c @@ -436,10 +436,10 @@ static int rna_Property_readonly_get(PointerRNA *ptr) return prop->flag & PROP_EDITABLE ? 0:1; } -static int rna_Property_use_return_get(PointerRNA *ptr) +static int rna_Property_use_output_get(PointerRNA *ptr) { PropertyRNA *prop= (PropertyRNA*)ptr->data; - return prop->flag & PROP_RETURN ? 1:0; + return prop->flag & PROP_OUTPUT ? 1:0; } static int rna_Property_is_required_get(PointerRNA *ptr) @@ -798,6 +798,42 @@ static void rna_BlenderRNA_structs_begin(CollectionPropertyIterator *iter, Point rna_iterator_listbase_begin(iter, &((BlenderRNA*)ptr->data)->structs, NULL); } +/* optional, for faster lookups */ +static int rna_BlenderRNA_structs_length(PointerRNA *ptr) +{ + return BLI_countlist(&((BlenderRNA*)ptr->data)->structs); +} +static PointerRNA rna_BlenderRNA_structs_lookup_int(PointerRNA *ptr, int index) +{ + StructRNA *srna= BLI_findlink(&((BlenderRNA*)ptr->data)->structs, index); + + if(srna) { + PointerRNA r_ptr; + RNA_pointer_create(NULL, &RNA_Struct, srna, &r_ptr); + return r_ptr; + } + else { + return PointerRNA_NULL; + } +} +static PointerRNA rna_BlenderRNA_structs_lookup_string(PointerRNA *ptr, const char *key) +{ + StructRNA *srna= ((BlenderRNA*)ptr->data)->structs.first; + for(; srna; srna=srna->cont.next) + if(key[0] == srna->identifier[0] && strcmp(key, srna->identifier)==0) + break; + + if(srna) { + PointerRNA r_ptr; + RNA_pointer_create(NULL, &RNA_Struct, srna, &r_ptr); + return r_ptr; + } + else { + return PointerRNA_NULL; + } +} + + #else static void rna_def_struct(BlenderRNA *brna) @@ -961,10 +997,10 @@ static void rna_def_property(BlenderRNA *brna) 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); + prop= RNA_def_property(srna, "use_output", 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_boolean_funcs(prop, "rna_Property_use_output_get", NULL); + RNA_def_property_ui_text(prop, "Return", "True when this property is an output value from an rna function."); prop= RNA_def_property(srna, "registered", PROP_BOOLEAN, PROP_NONE); RNA_def_property_clear_flag(prop, PROP_EDITABLE); @@ -1238,7 +1274,14 @@ void RNA_def_rna(BlenderRNA *brna) prop= RNA_def_property(srna, "structs", PROP_COLLECTION, PROP_NONE); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_struct_type(prop, "Struct"); - RNA_def_property_collection_funcs(prop, "rna_BlenderRNA_structs_begin", "rna_iterator_listbase_next", "rna_iterator_listbase_end", "rna_iterator_listbase_get", 0, 0, 0); + RNA_def_property_collection_funcs(prop, "rna_BlenderRNA_structs_begin", "rna_iterator_listbase_next", "rna_iterator_listbase_end", "rna_iterator_listbase_get", + /* included for speed, can be removed */ +#if 0 + 0,0,0); +#else + "rna_BlenderRNA_structs_length", "rna_BlenderRNA_structs_lookup_int", "rna_BlenderRNA_structs_lookup_string"); +#endif + RNA_def_property_ui_text(prop, "Structs", ""); } diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index b8a85b6521b..a1e1559fb13 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -29,6 +29,8 @@ #include "rna_internal.h" +#include "DNA_group_types.h" +#include "DNA_modifier_types.h" #include "DNA_scene_types.h" #include "DNA_userdef_types.h" @@ -47,6 +49,7 @@ #include "WM_types.h" +#include "BLI_threads.h" EnumPropertyItem snap_target_items[] = { {SCE_SNAP_TARGET_CLOSEST, "CLOSEST", 0, "Closest", "Snap closest point onto target."}, @@ -96,11 +99,13 @@ EnumPropertyItem snap_element_items[] = { #include "BKE_context.h" #include "BKE_global.h" +#include "BKE_image.h" #include "BKE_main.h" #include "BKE_node.h" #include "BKE_pointcache.h" #include "BKE_scene.h" #include "BKE_depsgraph.h" +#include "BKE_image.h" #include "BKE_mesh.h" #include "BLI_threads.h" @@ -124,32 +129,41 @@ static PointerRNA rna_Scene_objects_get(CollectionPropertyIterator *iter) return rna_pointer_inherit_refine(&iter->parent, &RNA_Object, ((Base*)internal->link)->object); } -static void rna_Scene_link_object(Scene *sce, ReportList *reports, Object *ob) +static void rna_Scene_link_object(Scene *scene, ReportList *reports, Object *ob) { - Base *base= object_in_scene(ob, sce); - if (base) { - BKE_report(reports, RPT_ERROR, "Object is already in this scene."); + Base *base; + + if (ob->type != OB_EMPTY && ob->data==NULL) { + BKE_reportf(reports, RPT_ERROR, "Object \"%s\" is not an Empty type and has no Object Data set."); + return; + } + + if (object_in_scene(ob, scene)) { + BKE_reportf(reports, RPT_ERROR, "Object \"%s\" is already in scene \"%s\".", ob->id.name+2, scene->id.name+2); return; } - base= scene_add_base(sce, ob); + + base= scene_add_base(scene, ob); ob->id.us++; /* this is similar to what object_add_type and add_object do */ - ob->lay= base->lay= sce->lay; + ob->lay= base->lay= scene->lay; ob->recalc |= OB_RECALC; - DAG_scene_sort(sce); + DAG_scene_sort(scene); } -static void rna_Scene_unlink_object(Scene *sce, ReportList *reports, Object *ob) +static void rna_Scene_unlink_object(Scene *scene, bContext *C, ReportList *reports, Object *ob) { - Base *base= object_in_scene(ob, sce); + Base *base= object_in_scene(ob, scene); if (!base) { BKE_report(reports, RPT_ERROR, "Object is not in this scene."); return; } /* as long as ED_base_object_free_and_unlink calls free_libblock_us, we don't have to decrement ob->id.us */ - ED_base_object_free_and_unlink(sce, base); + ED_base_object_free_and_unlink(scene, base); + + WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, scene); } static void rna_Scene_skgen_etch_template_set(PointerRNA *ptr, PointerRNA value) @@ -218,28 +232,21 @@ static void rna_Scene_end_frame_set(PointerRNA *ptr, int value) data->r.efra= value; } -static int rna_Scene_use_preview_range_get(PointerRNA *ptr) -{ - Scene *data= (Scene*)ptr->data; - - /* this is simply overloaded to assume that preview-range - * start frame cannot be less than 1 when on, - * so psfra=0 means 'off' - */ - return (data->r.psfra != 0); -} - static void rna_Scene_use_preview_range_set(PointerRNA *ptr, int value) { Scene *data= (Scene*)ptr->data; - /* if enable, copy range from render-range, otherwise just clear */ if (value) { - data->r.psfra= data->r.sfra; - data->r.pefra= data->r.efra; + /* copy range from scene if not set before */ + if ((data->r.psfra == data->r.pefra) && (data->r.psfra == 0)) { + data->r.psfra= data->r.sfra; + data->r.pefra= data->r.efra; + } + + data->r.flag |= SCER_PRV_RANGE; } else - data->r.psfra= 0; + data->r.flag &= ~SCER_PRV_RANGE; } @@ -248,14 +255,14 @@ static void rna_Scene_preview_range_start_frame_set(PointerRNA *ptr, int value) Scene *data= (Scene*)ptr->data; /* check if enabled already */ - if (data->r.psfra == 0) { + if ((data->r.flag & SCER_PRV_RANGE) == 0) { /* set end of preview range to end frame, then clamp as per normal */ // TODO: or just refuse to set instead? data->r.pefra= data->r.efra; } /* now set normally */ - CLAMP(value, 1, data->r.pefra); + CLAMP(value, MINAFRAME, data->r.pefra); data->r.psfra= value; } @@ -264,7 +271,7 @@ static void rna_Scene_preview_range_end_frame_set(PointerRNA *ptr, int value) Scene *data= (Scene*)ptr->data; /* check if enabled already */ - if (data->r.psfra == 0) { + if ((data->r.flag & SCER_PRV_RANGE) == 0) { /* set start of preview range to start frame, then clamp as per normal */ // TODO: or just refuse to set instead? data->r.psfra= data->r.sfra; @@ -359,6 +366,21 @@ static void rna_SceneRenderData_file_format_set(PointerRNA *ptr, int value) #endif } +static int rna_SceneRender_file_ext_length(PointerRNA *ptr) +{ + RenderData *rd= (RenderData*)ptr->data; + char ext[8]; + ext[0]= '\0'; + BKE_add_image_extension(ext, rd->imtype); + return strlen(ext); +} + +static void rna_SceneRender_file_ext_get(PointerRNA *ptr, char *str) +{ + RenderData *rd= (RenderData*)ptr->data; + BKE_add_image_extension(str, rd->imtype); +} + void rna_SceneRenderData_jpeg2k_preset_update(RenderData *rd) { rd->subimtype &= ~(R_JPEG2K_12BIT|R_JPEG2K_16BIT | R_JPEG2K_CINE_PRESET|R_JPEG2K_CINE_48FPS); @@ -501,6 +523,26 @@ static int rna_SceneRenderData_engine_get(PointerRNA *ptr) return 0; } +static void rna_SceneRenderData_color_management_update(Main *bmain, Scene *unused, PointerRNA *ptr) +{ + /* reset image nodes */ + Scene *scene= (Scene*)ptr->id.data; + bNodeTree *ntree=scene->nodetree; + bNode *node; + + if(ntree && scene->use_nodes) { + for (node=ntree->nodes.first; node; node=node->next) { + if (ELEM(node->type, CMP_NODE_VIEWER, CMP_NODE_IMAGE)) { + ED_node_changed_update(&scene->id, node); + WM_main_add_notifier(NC_NODE|NA_EDITED, node); + + if (node->type == CMP_NODE_IMAGE) + BKE_image_signal((Image *)node->id, NULL, IMA_SIGNAL_RELOAD); + } + } + } +} + static void rna_SceneRenderLayer_name_set(PointerRNA *ptr, const char *value) { Scene *scene= (Scene*)ptr->id.data; @@ -576,13 +618,15 @@ static void rna_Scene_editmesh_select_mode_set(PointerRNA *ptr, const int *value 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(flag) { + ts->selectmode = flag; - if(scene->basact) { - Mesh *me= get_mesh(scene->basact->object); - if(me && me->edit_mesh && me->edit_mesh->selectmode != flag) { - me->edit_mesh->selectmode= flag; - EM_selectmode_set(me->edit_mesh); + if(scene->basact) { + Mesh *me= get_mesh(scene->basact->object); + if(me && me->edit_mesh && me->edit_mesh->selectmode != flag) { + me->edit_mesh->selectmode= flag; + EM_selectmode_set(me->edit_mesh); + } } } } @@ -598,7 +642,34 @@ static void rna_Scene_editmesh_select_mode_update(Main *bmain, Scene *scene, Poi } WM_main_add_notifier(NC_GEOM|ND_SELECT, me); - WM_main_add_notifier(NC_SCENE|ND_MODE, NULL); /* header redraw */ + WM_main_add_notifier(NC_SCENE|ND_TOOLSETTINGS, NULL); +} + +static void object_simplify_update(Object *ob) +{ + ModifierData *md; + + for(md=ob->modifiers.first; md; md=md->next) + if(ELEM3(md->type, eModifierType_Subsurf, eModifierType_Multires, eModifierType_ParticleSystem)) + ob->recalc |= OB_RECALC_DATA; + + if(ob->dup_group) { + GroupObject *gob; + + for(gob=ob->dup_group->gobject.first; gob; gob=gob->next) + object_simplify_update(gob->ob); + } +} + +static void rna_Scene_simplify_update(Main *bmain, Scene *scene, PointerRNA *ptr) +{ + Base *base; + + for(base= scene->base.first; base; base= base->next) + object_simplify_update(base->object); + + DAG_ids_flush_update(0); + WM_main_add_notifier(NC_GEOM|ND_DATA, NULL); } #else @@ -687,13 +758,13 @@ static void rna_def_tool_settings(BlenderRNA *brna) RNA_def_property_enum_sdna(prop, NULL, "proportional"); RNA_def_property_enum_items(prop, proportional_editing_items); RNA_def_property_ui_text(prop, "Proportional Editing", "Proportional editing mode."); - RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */ + RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */ prop= RNA_def_property(srna, "proportional_editing_falloff", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "prop_mode"); RNA_def_property_enum_items(prop, proportional_falloff_items); RNA_def_property_ui_text(prop, "Proportional Editing Falloff", "Falloff type for proportional editing mode."); - RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */ + RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */ prop= RNA_def_property(srna, "normal_size", PROP_FLOAT, PROP_DISTANCE); RNA_def_property_float_sdna(prop, NULL, "normalsize"); @@ -710,37 +781,37 @@ static void rna_def_tool_settings(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP); 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 */ + RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */ prop= RNA_def_property(srna, "snap_align_rotation", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP_ROTATE); RNA_def_property_ui_text(prop, "Snap Align Rotation", "Align rotation with the snapping target."); RNA_def_property_ui_icon(prop, ICON_SNAP_NORMAL, 0); - RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */ + RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */ prop= RNA_def_property(srna, "snap_element", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "snap_mode"); RNA_def_property_enum_items(prop, snap_element_items); 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 */ + RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */ 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_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 */ + RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */ prop= RNA_def_property(srna, "snap_peel_object", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP_PEEL_OBJECT); RNA_def_property_ui_text(prop, "Snap Peel Object", "Consider objects as whole when finding volume center."); RNA_def_property_ui_icon(prop, ICON_SNAP_PEEL_OBJECT, 0); - RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */ + RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */ prop= RNA_def_property(srna, "snap_project", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP_PROJECT); RNA_def_property_ui_text(prop, "Project Individual Elements", "DOC_BROKEN"); RNA_def_property_ui_icon(prop, ICON_RETOPO, 0); - RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */ + RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */ /* Auto Keying */ prop= RNA_def_property(srna, "enable_auto_key", PROP_BOOLEAN, PROP_NONE); @@ -779,6 +850,7 @@ static void rna_def_tool_settings(BlenderRNA *brna) 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_ui_text(prop, "Mesh Selection Mode", "Which mesh elements selection works on."); RNA_def_property_update(prop, 0, "rna_Scene_editmesh_select_mode_update"); prop= RNA_def_property(srna, "vertex_group_weight", PROP_FLOAT, PROP_FACTOR); @@ -861,6 +933,11 @@ static void rna_def_unit_settings(BlenderRNA *brna) {USER_UNIT_METRIC, "METRIC", 0, "Metric", ""}, {USER_UNIT_IMPERIAL, "IMPERIAL", 0, "Imperial", ""}, {0, NULL, 0, NULL, NULL}}; + + static EnumPropertyItem rotation_units[] = { + {0, "DEGREES", 0, "Degrees", ""}, + {USER_UNIT_ROT_RADIANS, "RADIANS", 0, "Radians", ""}, + {0, NULL, 0, NULL, NULL}}; srna= RNA_def_struct(brna, "UnitSettings", NULL); RNA_def_struct_ui_text(srna, "Unit Settings", ""); @@ -881,6 +958,12 @@ static void rna_def_unit_settings(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_UNIT_OPT_SPLIT); RNA_def_property_ui_text(prop, "Separate Units", "Display units in pairs."); RNA_def_property_update(prop, NC_WINDOW, NULL); + + prop= RNA_def_property(srna, "rotation_units", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); + RNA_def_property_enum_items(prop, rotation_units); + RNA_def_property_ui_text(prop, "Rotation Units", "Unit to use for displaying/editing rotation values"); + RNA_def_property_update(prop, NC_WINDOW, NULL); } void rna_def_render_layer_common(StructRNA *srna, int scene) @@ -1074,6 +1157,24 @@ void rna_def_render_layer_common(StructRNA *srna, int scene) if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update"); else RNA_def_property_clear_flag(prop, PROP_EDITABLE); + prop= RNA_def_property(srna, "pass_emit", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "passflag", SCE_PASS_EMIT); + RNA_def_property_ui_text(prop, "Emit", "Deliver emission pass."); + if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update"); + else RNA_def_property_clear_flag(prop, PROP_EDITABLE); + + prop= RNA_def_property(srna, "pass_environment", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "passflag", SCE_PASS_ENVIRONMENT); + RNA_def_property_ui_text(prop, "Environment", "Deliver environment lighting pass."); + if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update"); + else RNA_def_property_clear_flag(prop, PROP_EDITABLE); + + prop= RNA_def_property(srna, "pass_indirect", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "passflag", SCE_PASS_INDIRECT); + RNA_def_property_ui_text(prop, "Indirect", "Deliver indirect lighting pass."); + if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update"); + else RNA_def_property_clear_flag(prop, PROP_EDITABLE); + prop= RNA_def_property(srna, "pass_specular_exclude", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "pass_xor", SCE_PASS_SPEC); RNA_def_property_ui_text(prop, "Specular Exclude", "Exclude specular pass from combined."); @@ -1103,6 +1204,24 @@ void rna_def_render_layer_common(StructRNA *srna, int scene) RNA_def_property_ui_text(prop, "Refraction Exclude", "Exclude raytraced refraction pass from combined."); if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update"); else RNA_def_property_clear_flag(prop, PROP_EDITABLE); + + prop= RNA_def_property(srna, "pass_emit_exclude", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "pass_xor", SCE_PASS_EMIT); + RNA_def_property_ui_text(prop, "Emit Exclude", "Exclude emission pass from combined."); + if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update"); + else RNA_def_property_clear_flag(prop, PROP_EDITABLE); + + prop= RNA_def_property(srna, "pass_environment_exclude", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "pass_xor", SCE_PASS_ENVIRONMENT); + RNA_def_property_ui_text(prop, "Environment Exclude", "Exclude environment pass from combined."); + if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update"); + else RNA_def_property_clear_flag(prop, PROP_EDITABLE); + + prop= RNA_def_property(srna, "pass_indirect_exclude", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "pass_xor", SCE_PASS_INDIRECT); + RNA_def_property_ui_text(prop, "Indirect Exclude", "Exclude indirect pass from combined."); + if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update"); + else RNA_def_property_clear_flag(prop, PROP_EDITABLE); } static void rna_def_scene_game_data(BlenderRNA *brna) @@ -2025,7 +2144,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna) prop= RNA_def_property(srna, "threads", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "threads"); - RNA_def_property_range(prop, 1, 8); + RNA_def_property_range(prop, 1, BLENDER_MAX_THREADS); RNA_def_property_int_funcs(prop, "rna_SceneRenderData_threads_get", NULL, NULL); RNA_def_property_ui_text(prop, "Threads", "Number of CPU threads to use simultaneously while rendering (for multi-core/CPU systems)"); RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); @@ -2098,9 +2217,9 @@ static void rna_def_scene_render_data(BlenderRNA *brna) prop= RNA_def_property(srna, "color_management", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "color_mgt_flag", R_COLOR_MANAGEMENT); RNA_def_property_ui_text(prop, "Color Management", "Use color profiles and gamma corrected imaging pipeline"); - RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS|NC_MATERIAL|ND_SHADING, NULL); + RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS|NC_MATERIAL|ND_SHADING, "rna_SceneRenderData_color_management_update"); - prop= RNA_def_property(srna, "file_extensions", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "use_file_extension", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "scemode", R_EXTENSION); RNA_def_property_ui_text(prop, "File Extensions", "Add the file format extensions to the rendered file name (eg: filename + .jpg)"); RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); @@ -2111,7 +2230,13 @@ static void rna_def_scene_render_data(BlenderRNA *brna) RNA_def_property_enum_funcs(prop, NULL, "rna_SceneRenderData_file_format_set", NULL); RNA_def_property_ui_text(prop, "File Format", "File format to save the rendered images as."); RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); - + + prop= RNA_def_property(srna, "file_extension", PROP_STRING, PROP_NONE); + RNA_def_property_string_funcs(prop, "rna_SceneRender_file_ext_get", "rna_SceneRender_file_ext_length", NULL); + RNA_def_property_ui_text(prop, "Extension", "The file extension used for saving renders."); + RNA_def_struct_name_property(srna, prop); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + prop= RNA_def_property(srna, "free_image_textures", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "scemode", R_FREE_IMAGE); RNA_def_property_ui_text(prop, "Free Image Textures", "Free all image texture from memory after render, to save memory before compositing."); @@ -2205,7 +2330,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna) prop= RNA_def_property(srna, "stamp_time", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_TIME); - RNA_def_property_ui_text(prop, "Stamp Time", "Include the current time in image metadata"); + RNA_def_property_ui_text(prop, "Stamp Time", "Include the render frame as HH:MM:SS.FF in image metadata"); RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); prop= RNA_def_property(srna, "stamp_date", PROP_BOOLEAN, PROP_NONE); @@ -2317,8 +2442,38 @@ static void rna_def_scene_render_data(BlenderRNA *brna) RNA_def_property_boolean_funcs(prop, "rna_SceneRenderData_use_game_engine_get", NULL); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Use Game Engine", "Current rendering engine is a game engine."); -} + /* simplify */ + prop= RNA_def_property(srna, "use_simplify", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "mode", R_SIMPLIFY); + RNA_def_property_ui_text(prop, "Use Simplify", "Enable simplification of scene for quicker preview renders."); + RNA_def_property_update(prop, 0, "rna_Scene_simplify_update"); + + prop= RNA_def_property(srna, "simplify_subdivision", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "simplify_subsurf"); + RNA_def_property_ui_range(prop, 0, 6, 1, 0); + RNA_def_property_ui_text(prop, "Simplify Subdivision", "Global maximum subdivision level."); + RNA_def_property_update(prop, 0, "rna_Scene_simplify_update"); + + prop= RNA_def_property(srna, "simplify_child_particles", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_sdna(prop, NULL, "simplify_particles"); + RNA_def_property_ui_text(prop, "Simplify Child Particles", "Global child particles percentage."); + RNA_def_property_update(prop, 0, "rna_Scene_simplify_update"); + + prop= RNA_def_property(srna, "simplify_shadow_samples", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "simplify_shadowsamples"); + RNA_def_property_ui_range(prop, 1, 16, 1, 0); + RNA_def_property_ui_text(prop, "Simplify Shadow Samples", "Global maximum shadow samples."); + RNA_def_property_update(prop, 0, "rna_Scene_simplify_update"); + + prop= RNA_def_property(srna, "simplify_ao_sss", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_sdna(prop, NULL, "simplify_aosss"); + RNA_def_property_ui_text(prop, "Simplify AO and SSS", "Global approximate AA and SSS quality factor."); + RNA_def_property_update(prop, 0, "rna_Scene_simplify_update"); + + /* Scene API */ + RNA_api_scene_render(srna); +} /* scene.objects */ static void rna_def_scene_objects(BlenderRNA *brna, PropertyRNA *cprop) @@ -2342,7 +2497,7 @@ static void rna_def_scene_objects(BlenderRNA *brna, PropertyRNA *cprop) func= RNA_def_function(srna, "unlink", "rna_Scene_unlink_object"); RNA_def_function_ui_description(func, "Unlink object from scene."); - RNA_def_function_flag(func, FUNC_USE_REPORTS); + RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS); parm= RNA_def_pointer(func, "object", "Object", "", "Object to remove from scene."); RNA_def_property_flag(parm, PROP_REQUIRED); @@ -2481,9 +2636,10 @@ void RNA_def_scene(BlenderRNA *brna) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); /* Preview Range (frame-range for UI playback) */ - prop=RNA_def_property(srna, "use_preview_range", PROP_BOOLEAN, PROP_NONE); /* use_preview_range is not really a separate setting in SDNA */ + prop=RNA_def_property(srna, "use_preview_range", PROP_BOOLEAN, PROP_NONE); RNA_def_property_clear_flag(prop, PROP_ANIMATEABLE); - RNA_def_property_boolean_funcs(prop, "rna_Scene_use_preview_range_get", "rna_Scene_use_preview_range_set"); + RNA_def_property_boolean_sdna(prop, NULL, "r.flag", SCER_PRV_RANGE); + RNA_def_property_boolean_funcs(prop, NULL, "rna_Scene_use_preview_range_set"); RNA_def_property_ui_text(prop, "Use Preview Range", ""); RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL); diff --git a/source/blender/makesrna/intern/rna_scene_api.c b/source/blender/makesrna/intern/rna_scene_api.c index 4efbed167a6..b9dd28ec298 100644 --- a/source/blender/makesrna/intern/rna_scene_api.c +++ b/source/blender/makesrna/intern/rna_scene_api.c @@ -36,12 +36,15 @@ #include "DNA_anim_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" +#include "BKE_utildefines.h" #ifdef RNA_RUNTIME #include "BKE_animsys.h" #include "BKE_scene.h" +#include "BKE_image.h" #include "BKE_depsgraph.h" +#include "BKE_writeavi.h" #include "ED_object.h" #include "ED_anim_api.h" @@ -84,6 +87,14 @@ static KeyingSet *rna_Scene_add_keying_set(Scene *sce, ReportList *reports, } } +static void rna_SceneRender_get_frame_path(RenderData *rd, int frame, char *name) +{ + if(BKE_imtype_is_movie(rd->imtype)) + BKE_makeanimstring(name, rd); + else + BKE_makepicstring(name, rd->pic, (frame==INT_MIN) ? rd->cfra : frame, rd->imtype, rd->scemode & R_EXTENSION); +} + #else void RNA_api_scene(StructRNA *srna) @@ -97,6 +108,9 @@ void RNA_api_scene(StructRNA *srna) parm= RNA_def_int(func, "frame", 0, MINAFRAME, MAXFRAME, "", "Frame number to set.", MINAFRAME, MAXFRAME); RNA_def_property_flag(parm, PROP_REQUIRED); + func= RNA_def_function(srna, "update", "scene_update_tagged"); + RNA_def_function_ui_description(func, "Update data tagged to be updated from previous access to data or operators."); + /* Add Keying Set */ func= RNA_def_function(srna, "add_keying_set", "rna_Scene_add_keying_set"); RNA_def_function_ui_description(func, "Add a new Keying Set to Scene."); @@ -113,5 +127,18 @@ void RNA_api_scene(StructRNA *srna) RNA_def_boolean(func, "insertkey_visual", 0, "Insert Keyframes - Visual", "Insert keyframes based on 'visual transforms'."); } +void RNA_api_scene_render(StructRNA *srna) +{ + FunctionRNA *func; + PropertyRNA *parm; + + func= RNA_def_function(srna, "frame_path", "rna_SceneRender_get_frame_path"); + RNA_def_function_ui_description(func, "Set scene frame updating all objects immediately."); + parm= RNA_def_int(func, "frame", INT_MIN, INT_MIN, INT_MAX, "", "Frame number to use, if unset the current frame will be used.", MINAFRAME, MAXFRAME); + parm= RNA_def_string(func, "name", "", FILE_MAX, "File Name", "the resulting filename from the scenes render settings."); + RNA_def_property_flag(parm, PROP_THICK_WRAP); /* needed for string return value */ + RNA_def_function_output(func, parm); +} + #endif diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c index 99bee9413cd..462ba5c256f 100644 --- a/source/blender/makesrna/intern/rna_sculpt_paint.c +++ b/source/blender/makesrna/intern/rna_sculpt_paint.c @@ -44,6 +44,7 @@ static EnumPropertyItem particle_edit_hair_brush_items[] = { {PE_BRUSH_LENGTH, "LENGTH", 0, "Length", "Make hairs longer or shorter."}, {PE_BRUSH_PUFF, "PUFF", 0, "Puff", "Make hairs stand up."}, {PE_BRUSH_CUT, "CUT", 0, "Cut", "Cut hairs."}, + {PE_BRUSH_WEIGHT, "WEIGHT", 0, "Weight", "Weight hair particles."}, {0, NULL, 0, NULL, NULL}}; #ifdef RNA_RUNTIME @@ -276,23 +277,10 @@ static void rna_def_vertex_paint(BlenderRNA *brna) { StructRNA *srna; PropertyRNA *prop; - static EnumPropertyItem brush_mode_items[] = { - {0, "MIX", 0, "Mix", "Use mix blending mode while painting."}, - {1, "ADD", 0, "Add", "Use add blending mode while painting."}, - {2, "SUB", 0, "Subtract", "Use subtract blending mode while painting."}, - {3, "MUL", 0, "Multiply", "Use multiply blending mode while painting."}, - {4, "BLUR", 0, "Blur", "Blur the color with surrounding values"}, - {5, "LIGHTEN", 0, "Lighten", "Use lighten blending mode while painting."}, - {6, "DARKEN", 0, "Darken", "Use darken blending mode while painting."}, - {0, NULL, 0, NULL, NULL}}; - + srna= RNA_def_struct(brna, "VertexPaint", "Paint"); RNA_def_struct_sdna(srna, "VPaint"); RNA_def_struct_ui_text(srna, "Vertex Paint", "Properties of vertex and weight paint mode."); - - prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_items(prop, brush_mode_items); - RNA_def_property_ui_text(prop, "Brush Mode", "Mode in which color is painted."); prop= RNA_def_property(srna, "all_faces", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", VP_AREA); @@ -311,22 +299,11 @@ static void rna_def_image_paint(BlenderRNA *brna) { StructRNA *srna; PropertyRNA *prop; - - static EnumPropertyItem tool_items[] = { - {PAINT_TOOL_DRAW, "DRAW", 0, "Draw", ""}, - {PAINT_TOOL_SOFTEN, "SOFTEN", 0, "Soften", ""}, - {PAINT_TOOL_SMEAR, "SMEAR", 0, "Smear", ""}, - {PAINT_TOOL_CLONE, "CLONE", 0, "Clone", ""}, - {0, NULL, 0, NULL, NULL}}; srna= RNA_def_struct(brna, "ImagePaint", "Paint"); RNA_def_struct_sdna(srna, "ImagePaintSettings"); RNA_def_struct_ui_text(srna, "Image Paint", "Properties of image and texture painting mode."); - - prop= RNA_def_property(srna, "tool", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_items(prop, tool_items); - RNA_def_property_ui_text(prop, "Tool", ""); - + /* booleans */ prop= RNA_def_property(srna, "show_brush_draw", PROP_BOOLEAN, PROP_NONE); @@ -527,6 +504,10 @@ static void rna_def_particle_edit(BlenderRNA *brna) RNA_def_property_enum_items(prop, puff_mode); RNA_def_property_ui_text(prop, "Puff Mode", ""); + prop= RNA_def_property(srna, "use_puff_volume", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_BRUSH_DATA_PUFF_VOLUME); + RNA_def_property_ui_text(prop, "Puff Volume", "Apply puff to unselected end-points, (helps maintain hair volume when puffing root)"); + prop= RNA_def_property(srna, "length_mode", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "invert"); RNA_def_property_enum_items(prop, length_mode); diff --git a/source/blender/makesrna/intern/rna_smoke.c b/source/blender/makesrna/intern/rna_smoke.c index 11b1e80865e..da77a659b7c 100644 --- a/source/blender/makesrna/intern/rna_smoke.c +++ b/source/blender/makesrna/intern/rna_smoke.c @@ -117,6 +117,11 @@ static void rna_def_smoke_domain_settings(BlenderRNA *brna) /* {MOD_SMOKE_NOISECURL, "NOISECURL", 0, "Curl", ""}, */ {0, NULL, 0, NULL, NULL}}; + static EnumPropertyItem smoke_cache_comp_items[] = { + {SM_CACHE_LIGHT, "CACHELIGHT", 0, "Light", "Fast but not so effective compression."}, + {SM_CACHE_HEAVY, "CACHEHEAVY", 0, "Heavy", "Effective but slow compression."}, + {0, NULL, 0, NULL, NULL}}; + srna = RNA_def_struct(brna, "SmokeDomainSettings", NULL); RNA_def_struct_ui_text(srna, "Domain Settings", "Smoke domain settings."); RNA_def_struct_sdna(srna, "SmokeDomainSettings"); @@ -201,6 +206,11 @@ static void rna_def_smoke_domain_settings(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Dissolve Speed", "Dissolve Speed"); RNA_def_property_update(prop, 0, NULL); + prop= RNA_def_property(srna, "initial_velocity", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_SMOKE_INITVELOCITY); + RNA_def_property_ui_text(prop, "Initial Velocity", "Smoke inherits it's velocity from the emitter particle."); + RNA_def_property_update(prop, 0, NULL); + prop= RNA_def_property(srna, "dissolve_smoke", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_SMOKE_DISSOLVE); RNA_def_property_ui_text(prop, "Dissolve Smoke", "Enable smoke to disappear over time."); @@ -221,10 +231,24 @@ static void rna_def_smoke_domain_settings(BlenderRNA *brna) RNA_def_property_pointer_sdna(prop, NULL, "point_cache[1]"); RNA_def_property_ui_text(prop, "Point Cache", ""); + prop= RNA_def_property(srna, "smoke_cache_comp", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "cache_comp"); + RNA_def_property_enum_items(prop, smoke_cache_comp_items); + RNA_def_property_ui_text(prop, "Cache Compression", "Compression method to be used."); + RNA_def_property_update(prop, 0, NULL); + + prop= RNA_def_property(srna, "smoke_cache_high_comp", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "cache_high_comp"); + RNA_def_property_enum_items(prop, smoke_cache_comp_items); + RNA_def_property_ui_text(prop, "Cache Compression", "Compression method to be used."); + RNA_def_property_update(prop, 0, NULL); + + prop= RNA_def_property(srna, "effector_weights", PROP_POINTER, PROP_NONE); RNA_def_property_struct_type(prop, "EffectorWeights"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Effector Weights", ""); + } static void rna_def_smoke_flow_settings(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 23a534562d0..71de3a19ce7 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -158,6 +158,40 @@ static StructRNA* rna_Space_refine(struct PointerRNA *ptr) } } +static ScrArea *rna_area_from_space(PointerRNA *ptr) +{ + bScreen *sc = (bScreen*)ptr->id.data; + SpaceLink *link= (SpaceLink*)ptr->data; + ScrArea *sa; + + for(sa=sc->areabase.first; sa; sa=sa->next) + if(BLI_findindex(&sa->spacedata, link) != -1) + return sa; + + return NULL; +} + +static void rna_area_region_from_regiondata(PointerRNA *ptr, ScrArea **sa_r, ARegion **ar_r) +{ + bScreen *sc = (bScreen*)ptr->id.data; + ScrArea *sa; + ARegion *ar; + void *regiondata= ptr->data; + + *sa_r= NULL; + *ar_r= NULL; + + for(sa=sc->areabase.first; sa; sa=sa->next) { + for(ar=sa->regionbase.first; ar; ar=ar->next) { + if(ar->regiondata == regiondata) { + *sa_r= sa; + *ar_r= ar; + return; + } + } + } +} + static PointerRNA rna_CurrentOrientation_get(PointerRNA *ptr) { Scene *scene = ((bScreen*)ptr->id.data)->scene; @@ -243,6 +277,38 @@ static void rna_Space3DView_layer_set(PointerRNA *ptr, const int *values) v3d->lay= ED_view3d_scene_layer_set(v3d->lay, values); } +static PointerRNA rna_SpaceView3D_region_3d_get(PointerRNA *ptr) +{ + View3D *v3d= (View3D*)(ptr->data); + ScrArea *sa= rna_area_from_space(ptr); + ListBase *regionbase= (sa->spacedata.first == v3d)? &sa->regionbase: &v3d->regionbase; + ARegion *ar= regionbase->last; /* always last in list, weak .. */ + + return rna_pointer_inherit_refine(ptr, &RNA_Region3DView, ar->regiondata); +} + +static PointerRNA rna_SpaceView3D_region_quadview_get(PointerRNA *ptr) +{ + View3D *v3d= (View3D*)(ptr->data); + ScrArea *sa= rna_area_from_space(ptr); + ListBase *regionbase= (sa->spacedata.first == v3d)? &sa->regionbase: &v3d->regionbase; + ARegion *ar= regionbase->last; /* always before last in list, weak .. */ + + ar= (ar->alignment == RGN_ALIGN_QSPLIT)? ar->prev: NULL; + + return rna_pointer_inherit_refine(ptr, &RNA_Region3DView, (ar)? ar->regiondata: NULL); +} + +static void rna_Region3DView_quadview_update(Main *main, Scene *scene, PointerRNA *ptr) +{ + ScrArea *sa; + ARegion *ar; + + rna_area_region_from_regiondata(ptr, &sa, &ar); + if(sa && ar && ar->alignment==RGN_ALIGN_QSPLIT) + ED_view3d_quadview_update(sa, ar); +} + /* Space Image Editor */ static PointerRNA rna_SpaceImageEditor_uvedit_get(PointerRNA *ptr) @@ -333,6 +399,19 @@ static void rna_SpaceImageEditor_curves_update(Main *bmain, Scene *scene, Pointe WM_main_add_notifier(NC_IMAGE, sima->image); } +static void rna_SpaceImageEditor_histogram_update(Main *bmain, Scene *scene, PointerRNA *ptr) +{ + SpaceImage *sima= (SpaceImage*)ptr->data; + ImBuf *ibuf; + void *lock; + + ibuf= ED_space_image_acquire_buffer(sima, &lock); + histogram_update(&sima->hist, ibuf); + ED_space_image_release_buffer(sima, lock); + + WM_main_add_notifier(NC_IMAGE, sima->image); +} + /* Space Text Editor */ @@ -412,22 +491,6 @@ static void rna_ConsoleLine_cursor_index_range(PointerRNA *ptr, int *min, int *m *max= ci->len; } -static void rna_View3D_display_background_image_set(PointerRNA *ptr, int value) -{ - View3D *vd= (View3D*)ptr->data; - - if(value) vd->flag |= V3D_DISPBGPIC; - else vd->flag &= ~V3D_DISPBGPIC; - - if((vd->flag & V3D_DISPBGPIC) && vd->bgpic == NULL) { - vd->bgpic= MEM_callocN(sizeof(BGpic), "bgpic"); - vd->bgpic->size= 5.0; - vd->bgpic->blend= 0.5; - vd->bgpic->iuser.fie_ima= 2; - vd->bgpic->iuser.ok= 1; - } -} - /* Space Time */ static void rna_SpaceTime_redraw_update(Main *bmain, Scene *scene, PointerRNA *ptr) @@ -452,7 +515,7 @@ static void rna_SpaceDopeSheetEditor_action_update(Main *bmain, Scene *scene, Po 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) { + if(obact/* && saction->pin == 0*/) { AnimData *adt= BKE_id_add_animdata(&obact->id); /* this only adds if non-existant */ /* set action */ @@ -654,6 +717,25 @@ static void rna_def_background_image(BlenderRNA *brna) StructRNA *srna; PropertyRNA *prop; + /* note: combinations work but dont flip so arnt that useful */ + static EnumPropertyItem bgpic_axis_items[] = { + {0, "", 0, "X Axis", ""}, + {(1<<RV3D_VIEW_LEFT), "LEFT", 0, "Left", ""}, + {(1<<RV3D_VIEW_RIGHT), "RIGHT", 0, "Right", ""}, + /*{(1<<RV3D_VIEW_LEFT)|(1<<RV3D_VIEW_RIGHT), "LEFT_RIGHT", 0, "Left/Right", ""},*/ + {0, "", 0, "Y Axis", ""}, + {(1<<RV3D_VIEW_BACK), "BACK", 0, "Back", ""}, + {(1<<RV3D_VIEW_FRONT), "FRONT", 0, "Front", ""}, + /*{(1<<RV3D_VIEW_BACK)|(1<<RV3D_VIEW_FRONT), "BACK_FRONT", 0, "Back/Front", ""},*/ + {0, "", 0, "Z Axis", ""}, + {(1<<RV3D_VIEW_BOTTOM), "BOTTOM", 0, "Bottom", ""}, + {(1<<RV3D_VIEW_TOP), "TOP", 0, "Top", ""}, + /*{(1<<RV3D_VIEW_BOTTOM)|(1<<RV3D_VIEW_TOP), "BOTTOM_TOP", 0, "Top/Bottom", ""},*/ + {0, "", 0, "Other", ""}, + {0, "ALL", 0, "All Views", ""}, + {(1<<RV3D_VIEW_CAMERA), "CAMERA", 0, "Camera", ""}, + {0, NULL, 0, NULL, NULL}}; + srna= RNA_def_struct(brna, "BackgroundImage", NULL); RNA_def_struct_sdna(srna, "BGpic"); RNA_def_struct_ui_text(srna, "Background Image", "Image and settings for display in the 3d View background."); @@ -691,6 +773,18 @@ static void rna_def_background_image(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Transparency", "Amount to blend the image against the background color."); RNA_def_property_range(prop, 0.0, 1.0); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); + + prop= RNA_def_property(srna, "view_axis", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "view"); + RNA_def_property_enum_items(prop, bgpic_axis_items); + RNA_def_property_ui_text(prop, "Image Axis", "The axis to display the image on."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); + + prop= RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_BGPIC_EXPANDED); + RNA_def_property_ui_text(prop, "Show Expanded", "Show the expanded in the user interface."); + RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1); + } static void rna_def_space_3dview(BlenderRNA *brna) @@ -734,10 +828,6 @@ static void rna_def_space_3dview(BlenderRNA *brna) 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"); prop= RNA_def_property(srna, "viewport_shading", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "drawtype"); @@ -830,13 +920,18 @@ static void rna_def_space_3dview(BlenderRNA *brna) 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); - RNA_def_property_ui_text(prop, "Display Background Image", "Display a reference image behind objects in the 3D View"); + + prop= RNA_def_property(srna, "background_images", PROP_COLLECTION, PROP_NONE); + RNA_def_property_collection_sdna(prop, NULL, "bgpicbase", NULL); + RNA_def_property_struct_type(prop, "BackgroundImage"); + RNA_def_property_ui_text(prop, "Background Images", "List of background images"); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); - + + prop= RNA_def_property(srna, "display_background_images", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_DISPBGPICS); + RNA_def_property_ui_text(prop, "Display Background Images", "Display reference images behind objects in the 3D View"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); + prop= RNA_def_property(srna, "pivot_point", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "around"); RNA_def_property_enum_items(prop, pivot_items); @@ -885,21 +980,6 @@ static void rna_def_space_3dview(BlenderRNA *brna) RNA_def_property_pointer_funcs(prop, "rna_CurrentOrientation_get", NULL, NULL); RNA_def_property_ui_text(prop, "Current Transform Orientation", "Current Transformation orientation."); - prop= RNA_def_property(srna, "lock_rotation", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, "RegionView3D", "viewlock", RV3D_LOCKED); - RNA_def_property_ui_text(prop, "Lock", "Lock View Rotation"); - RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); - - prop= RNA_def_property(srna, "box_preview", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, "RegionView3D", "viewlock", RV3D_BOXVIEW); - RNA_def_property_ui_text(prop, "Box", ""); - RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); - - prop= RNA_def_property(srna, "box_clip", PROP_BOOLEAN, PROP_NONE); - 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"); @@ -919,6 +999,37 @@ static void rna_def_space_3dview(BlenderRNA *brna) 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."); + + prop= RNA_def_property(srna, "region_3d", PROP_POINTER, PROP_NONE); + RNA_def_property_struct_type(prop, "Region3DView"); + RNA_def_property_pointer_funcs(prop, "rna_SpaceView3D_region_3d_get", NULL, NULL); + RNA_def_property_ui_text(prop, "3D Region", "3D region in this space, in case of quad view the camera region."); + + prop= RNA_def_property(srna, "region_quadview", PROP_POINTER, PROP_NONE); + RNA_def_property_struct_type(prop, "Region3DView"); + RNA_def_property_pointer_funcs(prop, "rna_SpaceView3D_region_quadview_get", NULL, NULL); + RNA_def_property_ui_text(prop, "Quad View Region", "3D region that defines the quad view settings."); + + /* region */ + + srna= RNA_def_struct(brna, "Region3DView", "Region"); + RNA_def_struct_sdna(srna, "RegionView3D"); + RNA_def_struct_ui_text(srna, "3D View Region", "3D View region data"); + + prop= RNA_def_property(srna, "lock_rotation", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "viewlock", RV3D_LOCKED); + RNA_def_property_ui_text(prop, "Lock", "Lock view rotation in side views."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, "rna_Region3DView_quadview_update"); + + prop= RNA_def_property(srna, "box_preview", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "viewlock", RV3D_BOXVIEW); + RNA_def_property_ui_text(prop, "Box", "Sync view position between side views."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, "rna_Region3DView_quadview_update"); + + prop= RNA_def_property(srna, "box_clip", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "viewlock", RV3D_BOXCLIP); + RNA_def_property_ui_text(prop, "Clip", "Clip objects based on what's visible in other side views."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, "rna_Region3DView_quadview_update"); } static void rna_def_space_buttons(BlenderRNA *brna) @@ -1004,6 +1115,12 @@ static void rna_def_space_image(BlenderRNA *brna) RNA_def_property_pointer_sdna(prop, NULL, "cumap"); RNA_def_property_ui_text(prop, "Curves", "Color curve mapping to use for displaying the image."); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, "rna_SpaceImageEditor_curves_update"); + + prop= RNA_def_property(srna, "histogram", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "hist"); + RNA_def_property_struct_type(prop, "Histogram"); + RNA_def_property_ui_text(prop, "Histogram", "Histogram for viewing image statistics"); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, "rna_SpaceImageEditor_histogram_update"); prop= RNA_def_property(srna, "image_pin", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "pin", 0); @@ -1307,6 +1424,11 @@ 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); + + prop= RNA_def_property(srna, "realtime_updates", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SACTION_NOREALTIMEUPDATES); + RNA_def_property_ui_text(prop, "Realtime Updates", "When transforming keyframes, changes to the animation data are flushed to other views."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_DOPESHEET, NULL); /* dopesheet */ prop= RNA_def_property(srna, "dopesheet", PROP_POINTER, PROP_NONE); @@ -1351,7 +1473,7 @@ static void rna_def_space_graph(BlenderRNA *brna) 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_GRAPH, NULL); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL); // XXX need to be able to flush channel types /* display */ prop= RNA_def_property(srna, "show_seconds", PROP_BOOLEAN, PROP_NONE); @@ -1391,6 +1513,11 @@ static void rna_def_space_graph(BlenderRNA *brna) RNA_def_property_ui_text(prop, "AutoMerge Keyframes", "Show handles of Bezier control points."); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL); + prop= RNA_def_property(srna, "realtime_updates", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SIPO_NOREALTIMEUPDATES); + RNA_def_property_ui_text(prop, "Realtime Updates", "When transforming keyframes, changes to the animation data are flushed to other views."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL); + /* cursor */ prop= RNA_def_property(srna, "show_cursor", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SIPO_NODRAWCURSOR); @@ -1454,6 +1581,12 @@ 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 */ + prop= RNA_def_property(srna, "realtime_updates", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SNLA_NOREALTIMEUPDATES); + RNA_def_property_ui_text(prop, "Realtime Updates", "When transforming strips, changes to the animation data are flushed to other views."); + RNA_def_property_update(prop, NC_SPACE|ND_SPACE_NLA, NULL); /* dopesheet */ prop= RNA_def_property(srna, "dopesheet", PROP_POINTER, PROP_NONE); @@ -1517,7 +1650,7 @@ static void rna_def_space_time(BlenderRNA *brna) /* 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_ui_text(prop, "Only Selected channels", "Show keyframes for active Object and/or its selected channels only."); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, NULL); prop= RNA_def_property(srna, "show_cframe_indicator", PROP_BOOLEAN, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_text.c b/source/blender/makesrna/intern/rna_text.c index bed686ed360..3445933a3dc 100644 --- a/source/blender/makesrna/intern/rna_text.c +++ b/source/blender/makesrna/intern/rna_text.c @@ -198,6 +198,10 @@ static void rna_def_text(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flags", TXT_ISSCRIPT); RNA_def_property_ui_text(prop, "Register", "Register this text as a module on loading."); + prop= RNA_def_property(srna, "tabs_as_spaces", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flags", TXT_TABSTOSPACES); + RNA_def_property_ui_text(prop, "Tabs as Spaces", "Automatically converts all new tabs into spaces."); + prop= RNA_def_property(srna, "lines", PROP_COLLECTION, PROP_NONE); RNA_def_property_struct_type(prop, "TextLine"); RNA_def_property_ui_text(prop, "Lines", "Lines of text."); diff --git a/source/blender/makesrna/intern/rna_texture.c b/source/blender/makesrna/intern/rna_texture.c index 19d33465ceb..f4b081b273e 100644 --- a/source/blender/makesrna/intern/rna_texture.c +++ b/source/blender/makesrna/intern/rna_texture.c @@ -51,6 +51,25 @@ static EnumPropertyItem texture_filter_items[] = { {TXF_SAT, "SAT", 0, "SAT (4x mem)", ""}, {0, NULL, 0, NULL, NULL}}; +EnumPropertyItem texture_type_items[] = { + {0, "NONE", 0, "None", ""}, + {TEX_BLEND, "BLEND", ICON_TEXTURE, "Blend", ""}, + {TEX_CLOUDS, "CLOUDS", ICON_TEXTURE, "Clouds", ""}, + {TEX_DISTNOISE, "DISTORTED_NOISE", ICON_TEXTURE, "Distorted Noise", ""}, + {TEX_ENVMAP, "ENVIRONMENT_MAP", ICON_IMAGE_DATA, "Environment Map", ""}, + {TEX_IMAGE, "IMAGE", ICON_IMAGE_DATA, "Image or Movie", ""}, + {TEX_MAGIC, "MAGIC", ICON_TEXTURE, "Magic", ""}, + {TEX_MARBLE, "MARBLE", ICON_TEXTURE, "Marble", ""}, + {TEX_MUSGRAVE, "MUSGRAVE", ICON_TEXTURE, "Musgrave", ""}, + {TEX_NOISE, "NOISE", ICON_TEXTURE, "Noise", ""}, + {TEX_PLUGIN, "PLUGIN", ICON_PLUGIN, "Plugin", ""}, + {TEX_POINTDENSITY, "POINT_DENSITY", ICON_TEXTURE, "Point Density", ""}, + {TEX_STUCCI, "STUCCI", ICON_TEXTURE, "Stucci", ""}, + {TEX_VORONOI, "VORONOI", ICON_TEXTURE, "Voronoi", ""}, + {TEX_VOXELDATA, "VOXEL_DATA", ICON_TEXTURE, "Voxel Data", ""}, + {TEX_WOOD, "WOOD", ICON_TEXTURE, "Wood", ""}, + {0, NULL, 0, NULL, NULL}}; + #ifdef RNA_RUNTIME #include "MEM_guardedalloc.h" @@ -1598,7 +1617,7 @@ static void rna_def_texture_pointdensity(BlenderRNA *brna) prop= RNA_def_property(srna, "radius", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "radius"); - RNA_def_property_range(prop, 0.01, FLT_MAX); + RNA_def_property_range(prop, 0.001, FLT_MAX); RNA_def_property_ui_text(prop, "Radius", "Radius from the shaded sample to look for points within"); RNA_def_property_update(prop, 0, "rna_Texture_update"); @@ -1707,6 +1726,12 @@ static void rna_def_texture_voxeldata(BlenderRNA *brna) {TEX_REPEAT, "REPEAT", 0, "Repeat", "Causes the image to repeat horizontally and vertically"}, {0, NULL, 0, NULL, NULL}}; + static EnumPropertyItem smoked_type_items[] = { + {TEX_VD_SMOKEDENSITY, "SMOKEDENSITY", 0, "Density", "Use smoke density as texture data."}, + {TEX_VD_SMOKEHEAT, "SMOKEHEAT", 0, "Heat", "Use smoke heat as texture data. Values from -2.0 to 2.0 are used."}, + {TEX_VD_SMOKEVEL, "SMOKEVEL", 0, "Velocity", "Use smoke velocity as texture data."}, + {0, NULL, 0, NULL, NULL}}; + srna= RNA_def_struct(brna, "VoxelData", NULL); RNA_def_struct_sdna(srna, "VoxelData"); RNA_def_struct_ui_text(srna, "VoxelData", "Voxel data settings."); @@ -1716,6 +1741,12 @@ static void rna_def_texture_voxeldata(BlenderRNA *brna) RNA_def_property_enum_items(prop, interpolation_type_items); RNA_def_property_ui_text(prop, "Interpolation", "Method to interpolate/smooth values between voxel cells"); RNA_def_property_update(prop, 0, "rna_Texture_update"); + + prop= RNA_def_property(srna, "smoke_data_type", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "smoked_type"); + RNA_def_property_enum_items(prop, smoked_type_items); + RNA_def_property_ui_text(prop, "Source", "Simulation value to be used as a texture."); + RNA_def_property_update(prop, 0, "rna_Texture_update"); prop= RNA_def_property(srna, "extension", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "extend"); @@ -1772,6 +1803,18 @@ static void rna_def_texture_voxeldata(BlenderRNA *brna) RNA_def_property_struct_type(prop, "VoxelData"); RNA_def_property_ui_text(prop, "Voxel Data", "The voxel data associated with this texture"); RNA_def_property_update(prop, 0, "rna_Texture_update"); + + prop= RNA_def_property(srna, "image", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "ima"); + RNA_def_property_struct_type(prop, "Image"); + RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Image", ""); + RNA_def_property_update(prop, 0, "rna_Texture_update"); + + prop= RNA_def_property(srna, "image_user", PROP_POINTER, PROP_NEVER_NULL); + RNA_def_property_pointer_sdna(prop, NULL, "iuser"); + RNA_def_property_ui_text(prop, "Image User", "Parameters defining which layer, pass and frame of the image is displayed."); + RNA_def_property_update(prop, 0, "rna_Texture_update"); } static void rna_def_texture(BlenderRNA *brna) @@ -1779,25 +1822,6 @@ static void rna_def_texture(BlenderRNA *brna) StructRNA *srna; PropertyRNA *prop; - static EnumPropertyItem prop_type_items[] = { - {0, "NONE", 0, "None", ""}, - {TEX_BLEND, "BLEND", ICON_TEXTURE, "Blend", ""}, - {TEX_CLOUDS, "CLOUDS", ICON_TEXTURE, "Clouds", ""}, - {TEX_DISTNOISE, "DISTORTED_NOISE", ICON_TEXTURE, "Distorted Noise", ""}, - {TEX_ENVMAP, "ENVIRONMENT_MAP", ICON_IMAGE_DATA, "Environment Map", ""}, - {TEX_IMAGE, "IMAGE", ICON_IMAGE_DATA, "Image or Movie", ""}, - {TEX_MAGIC, "MAGIC", ICON_TEXTURE, "Magic", ""}, - {TEX_MARBLE, "MARBLE", ICON_TEXTURE, "Marble", ""}, - {TEX_MUSGRAVE, "MUSGRAVE", ICON_TEXTURE, "Musgrave", ""}, - {TEX_NOISE, "NOISE", ICON_TEXTURE, "Noise", ""}, - {TEX_PLUGIN, "PLUGIN", ICON_PLUGIN, "Plugin", ""}, - {TEX_POINTDENSITY, "POINT_DENSITY", ICON_TEXTURE, "Point Density", ""}, - {TEX_STUCCI, "STUCCI", ICON_TEXTURE, "Stucci", ""}, - {TEX_VORONOI, "VORONOI", ICON_TEXTURE, "Voronoi", ""}, - {TEX_VOXELDATA, "VOXEL_DATA", ICON_TEXTURE, "Voxel Data", ""}, - {TEX_WOOD, "WOOD", ICON_TEXTURE, "Wood", ""}, - {0, NULL, 0, NULL, NULL}}; - srna= RNA_def_struct(brna, "Texture", "ID"); RNA_def_struct_sdna(srna, "Tex"); RNA_def_struct_ui_text(srna, "Texture", "Texture datablock used by materials, lamps, worlds and brushes."); @@ -1807,7 +1831,7 @@ static void rna_def_texture(BlenderRNA *brna) prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE); //RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_enum_sdna(prop, NULL, "type"); - RNA_def_property_enum_items(prop, prop_type_items); + RNA_def_property_enum_items(prop, texture_type_items); RNA_def_property_enum_funcs(prop, NULL, "rna_Texture_type_set", NULL); RNA_def_property_ui_text(prop, "Type", ""); RNA_def_property_update(prop, 0, "rna_Texture_update"); diff --git a/source/blender/makesrna/intern/rna_timeline.c b/source/blender/makesrna/intern/rna_timeline.c index 5e20fca15f0..bccc4f6c3f3 100644 --- a/source/blender/makesrna/intern/rna_timeline.c +++ b/source/blender/makesrna/intern/rna_timeline.c @@ -31,6 +31,8 @@ #include "DNA_scene_types.h" +#include "WM_types.h" + #ifdef RNA_RUNTIME #else @@ -48,9 +50,23 @@ static void rna_def_timeline_marker(BlenderRNA *brna) prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); RNA_def_property_ui_text(prop, "Name", ""); RNA_def_struct_name_property(srna, prop); + RNA_def_property_update(prop, NC_ANIMATION, NULL); prop= RNA_def_property(srna, "frame", PROP_INT, PROP_TIME); RNA_def_property_ui_text(prop, "Frame", "The frame on which the timeline marker appears."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); + + prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", 1 /*SELECT*/); + RNA_def_property_ui_text(prop, "Selected", "Marker selection state."); + RNA_def_property_update(prop, NC_ANIMATION, NULL); + +#ifdef DURIAN_CAMERA_SWITCH + prop= RNA_def_property(srna, "camera", PROP_POINTER, PROP_NONE); + RNA_def_property_struct_type(prop, "Object"); + RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); + RNA_def_property_ui_text(prop, "Camera", "Camera this timeline sets to active."); +#endif } void RNA_def_timeline_marker(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c index de20da0c0ca..07bf20b0c03 100644 --- a/source/blender/makesrna/intern/rna_ui_api.c +++ b/source/blender/makesrna/intern/rna_ui_api.c @@ -299,10 +299,12 @@ void RNA_api_ui_layout(StructRNA *srna) parm= RNA_def_string(func, "text", "", 0, "", "Custom label to display in UI."); func= RNA_def_function(srna, "template_modifier", "uiTemplateModifier"); + RNA_def_function_flag(func, FUNC_USE_CONTEXT); parm= RNA_def_pointer(func, "data", "Modifier", "", "Modifier data."); RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR|PROP_NEVER_NULL); parm= RNA_def_pointer(func, "layout", "UILayout", "", "Sub-layout to put items in."); RNA_def_function_return(func, parm); + RNA_def_boolean(func, "compact", 0, "", "Show a smaller version of the template, split on two lines."); func= RNA_def_function(srna, "template_constraint", "uiTemplateConstraint"); parm= RNA_def_pointer(func, "data", "Constraint", "", "Constraint data."); @@ -326,6 +328,10 @@ void RNA_api_ui_layout(StructRNA *srna) api_ui_item_rna_common(func); RNA_def_boolean(func, "expand", 0, "", "Expand button to show more detail."); + func= RNA_def_function(srna, "template_histogram", "uiTemplateHistogram"); + api_ui_item_rna_common(func); + RNA_def_boolean(func, "expand", 0, "", "Expand button to show more detail."); + 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."); @@ -335,6 +341,11 @@ void RNA_api_ui_layout(StructRNA *srna) 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_color_wheel", "uiTemplateColorWheel"); + api_ui_item_rna_common(func); + RNA_def_boolean(func, "value_slider", 0, "", "Display the value slider to the right of the color wheel"); + RNA_def_boolean(func, "lock", 0, "", "Lock the color wheel display to value 1.0 regardless of actual color"); + func= RNA_def_function(srna, "template_triColorSet", "uiTemplateTriColorSet"); api_ui_item_rna_common(func); diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 9b314afeb08..d14dfd08d48 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -107,6 +107,40 @@ static void rna_userdef_autokeymode_set(PointerRNA *ptr,int value) } } +static void rna_userdef_timecode_style_set(PointerRNA *ptr, int value) +{ + UserDef *userdef = (UserDef*)ptr->data; + int required_size = userdef->v2d_min_gridsize; + + /* set the timecode style */ + userdef->timecode_style= value; + + /* adjust the v2d gridsize if needed so that timecodes don't overlap + * NOTE: most of these have been hand-picked to avoid overlaps while still keeping + * things from getting too blown out + */ + switch (value) { + case USER_TIMECODE_MINIMAL: + case USER_TIMECODE_SECONDS_ONLY: + /* 35 is great most of the time, but not that great for full-blown */ + required_size= 35; + break; + case USER_TIMECODE_SMPTE_MSF: + required_size= 50; + break; + case USER_TIMECODE_SMPTE_FULL: + /* the granddaddy! */ + required_size= 65; + break; + case USER_TIMECODE_MILLISECONDS: + required_size= 45; + break; + } + + if (U.v2d_min_gridsize < required_size) + U.v2d_min_gridsize= required_size; +} + static PointerRNA rna_UserDef_view_get(PointerRNA *ptr) { return rna_pointer_inherit_refine(ptr, &RNA_UserPreferencesView, ptr->data); @@ -906,6 +940,44 @@ static void rna_def_userdef_theme_space_userpref(BlenderRNA *brna) rna_def_userdef_theme_spaces_main(srna, SPACE_USERPREF); } +static void rna_def_userdef_theme_space_console(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + /* space_console */ + + srna= RNA_def_struct(brna, "ThemeConsole", NULL); + RNA_def_struct_sdna(srna, "ThemeSpace"); + RNA_def_struct_ui_text(srna, "Theme Console", "Theme settings for the Console."); + + rna_def_userdef_theme_spaces_main(srna, SPACE_CONSOLE); + + prop= RNA_def_property(srna, "line_output", PROP_FLOAT, PROP_COLOR); + RNA_def_property_float_sdna(prop, NULL, "console_output"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Line Output", ""); + RNA_def_property_update(prop, 0, "rna_userdef_update"); + + prop= RNA_def_property(srna, "line_input", PROP_FLOAT, PROP_COLOR); + RNA_def_property_float_sdna(prop, NULL, "console_input"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Line Input", ""); + RNA_def_property_update(prop, 0, "rna_userdef_update"); + + prop= RNA_def_property(srna, "line_info", PROP_FLOAT, PROP_COLOR); + RNA_def_property_float_sdna(prop, NULL, "console_info"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Line Info", ""); + RNA_def_property_update(prop, 0, "rna_userdef_update"); + + prop= RNA_def_property(srna, "line_error", PROP_FLOAT, PROP_COLOR); + RNA_def_property_float_sdna(prop, NULL, "console_error"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Line Error", ""); + RNA_def_property_update(prop, 0, "rna_userdef_update"); +} + static void rna_def_userdef_theme_space_info(BlenderRNA *brna) { StructRNA *srna; @@ -1164,6 +1236,12 @@ static void rna_def_userdef_theme_space_image(BlenderRNA *brna) RNA_def_property_array(prop, 4); RNA_def_property_ui_text(prop, "Active Vert/Edge/Face", ""); RNA_def_property_update(prop, 0, "rna_userdef_update"); + + prop= RNA_def_property(srna, "scope_back", PROP_FLOAT, PROP_COLOR); + RNA_def_property_float_sdna(prop, NULL, "preview_back"); + RNA_def_property_array(prop, 4); + RNA_def_property_ui_text(prop, "Scope region background color", ""); + RNA_def_property_update(prop, 0, "rna_userdef_update"); } static void rna_def_userdef_theme_space_seq(BlenderRNA *brna) @@ -1434,7 +1512,7 @@ static void rna_def_userdef_themes(BlenderRNA *brna) StructRNA *srna; PropertyRNA *prop; - static EnumPropertyItem active_theme_group[] = { + static EnumPropertyItem active_theme_area[] = { {0, "USER_INTERFACE", ICON_UI, "User Interface", ""}, {1, "VIEW_3D", ICON_VIEW3D, "3D View", ""}, {2, "TIMELINE", ICON_TIME, "Timeline", ""}, @@ -1462,10 +1540,10 @@ static void rna_def_userdef_themes(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Name", "Name of the theme."); RNA_def_struct_name_property(srna, prop); - prop= RNA_def_property(srna, "active_theme", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "active_theme_group"); - RNA_def_property_enum_items(prop, active_theme_group); - RNA_def_property_ui_text(prop, "Active Theme", ""); + prop= RNA_def_property(srna, "theme_area", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "active_theme_area"); + RNA_def_property_enum_items(prop, active_theme_area); + RNA_def_property_ui_text(prop, "Active Theme Area", ""); prop= RNA_def_property(srna, "user_interface", PROP_POINTER, PROP_NONE); RNA_def_property_flag(prop, PROP_NEVER_NULL); @@ -1562,6 +1640,12 @@ static void rna_def_userdef_themes(BlenderRNA *brna) RNA_def_property_pointer_sdna(prop, NULL, "tuserpref"); RNA_def_property_struct_type(prop, "ThemeUserPreferences"); RNA_def_property_ui_text(prop, "User Preferences", ""); + + prop= RNA_def_property(srna, "console", PROP_POINTER, PROP_NONE); + RNA_def_property_flag(prop, PROP_NEVER_NULL); + RNA_def_property_pointer_sdna(prop, NULL, "tconsole"); + RNA_def_property_struct_type(prop, "ThemeConsole"); + RNA_def_property_ui_text(prop, "Console", ""); prop= RNA_def_property(srna, "bone_color_sets", PROP_COLLECTION, PROP_NONE); RNA_def_property_flag(prop, PROP_NEVER_NULL); @@ -1590,6 +1674,7 @@ static void rna_def_userdef_dothemes(BlenderRNA *brna) rna_def_userdef_theme_space_outliner(brna); rna_def_userdef_theme_space_info(brna); rna_def_userdef_theme_space_userpref(brna); + rna_def_userdef_theme_space_console(brna); rna_def_userdef_theme_space_sound(brna); rna_def_userdef_theme_space_logic(brna); rna_def_userdef_theme_colorset(brna); @@ -1631,6 +1716,14 @@ static void rna_def_userdef_solidlight(BlenderRNA *brna) static void rna_def_userdef_view(BlenderRNA *brna) { + static EnumPropertyItem timecode_styles[] = { + {USER_TIMECODE_MINIMAL, "MINIMAL", 0, "Minimal Info", "Most compact representation. Uses '+' as separator for sub-second frame numbers, with left and right truncation of the timecode as necessary."}, + {USER_TIMECODE_SMPTE_FULL, "SMPTE", 0, "SMPTE (Full)", "Full SMPTE timecode. Format is HH:MM:SS:FF."}, + {USER_TIMECODE_SMPTE_MSF, "SMPTE_COMPACT", 0, "SMPTE (Compact)", "SMPTE timecode showing minutes, seconds, and frames only. Hours are also shown if necessary, but not by default."}, + {USER_TIMECODE_MILLISECONDS, "MILLISECONDS", 0, "Compact with Milliseconds", "Similar to SMPTE (Compact), except that instead of frames, milliseconds are shown instead."}, + {USER_TIMECODE_SECONDS_ONLY, "SECONDS_ONLY", 0, "Only Seconds", "Direct conversion of frame numbers to seconds."}, + {0, NULL, 0, NULL, NULL}}; + PropertyRNA *prop; StructRNA *srna; @@ -1718,13 +1811,11 @@ static void rna_def_userdef_view(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Auto Depth", "Use the depth under the mouse to improve view pan/rotate/zoom functionality."); /* view zoom */ - prop= RNA_def_property(srna, "zoom_to_mouse", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_ZOOM_TO_MOUSEPOS); RNA_def_property_ui_text(prop, "Zoom To Mouse Position", "Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D window center."); /* view rotation */ - prop= RNA_def_property(srna, "auto_perspective", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_AUTOPERSP); RNA_def_property_ui_text(prop, "Auto Perspective", "Automatically switch between orthographic and perspective when changing from top/front/side views."); @@ -1732,17 +1823,8 @@ 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 pivot point."); - - /* select with */ - - - - - prop= RNA_def_property(srna, "use_middle_mouse_paste", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_MMB_PASTE); - RNA_def_property_ui_text(prop, "Middle Mouse Paste", "In text window, paste with middle mouse button instead of panning."); - + /* mini axis */ prop= RNA_def_property(srna, "show_mini_axis", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_SHOW_ROTVIEWICON); RNA_def_property_ui_text(prop, "Show Mini Axis", "Show a small rotating 3D axis in the bottom left corner of the 3D View."); @@ -1761,9 +1843,10 @@ static void rna_def_userdef_view(BlenderRNA *brna) RNA_def_property_update(prop, 0, "rna_userdef_update"); /* middle mouse button */ + prop= RNA_def_property(srna, "use_middle_mouse_paste", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_MMB_PASTE); + RNA_def_property_ui_text(prop, "Middle Mouse Paste", "In text window, paste with middle mouse button instead of panning."); - - prop= RNA_def_property(srna, "wheel_invert_zoom", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_WHEELZOOMDIR); RNA_def_property_ui_text(prop, "Wheel Invert Zoom", "Swap the Mouse Wheel zoom direction."); @@ -1811,8 +1894,21 @@ static void rna_def_userdef_view(BlenderRNA *brna) RNA_def_property_range(prop, 4, 10); 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"); - - + + /* View2D Grid Displays */ + prop= RNA_def_property(srna, "view2d_grid_minimum_spacing", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "v2d_min_gridsize"); + RNA_def_property_range(prop, 1, 500); // XXX: perhaps the lower range should only go down to 5? + RNA_def_property_ui_text(prop, "2D View Minimum Grid Spacing", "Minimum number of pixels between each gridline in 2D Viewports"); + RNA_def_property_update(prop, 0, "rna_userdef_update"); + + // TODO: add a setter for this, so that we can bump up the minimum size as necessary... + prop= RNA_def_property(srna, "timecode_style", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_items(prop, timecode_styles); + RNA_def_property_enum_sdna(prop, NULL, "timecode_style"); + RNA_def_property_enum_funcs(prop, NULL, "rna_userdef_timecode_style_set", NULL); + RNA_def_property_ui_text(prop, "TimeCode Style", "Format of Time Codes displayed when not displaying timing in terms of frames."); + RNA_def_property_update(prop, 0, "rna_userdef_update"); } static void rna_def_userdef_edit(BlenderRNA *brna) @@ -1824,7 +1920,8 @@ static void rna_def_userdef_edit(BlenderRNA *brna) {AUTOKEY_MODE_NORMAL, "ADD_REPLACE_KEYS", 0, "Add/Replace", ""}, {AUTOKEY_MODE_EDITKEYS, "REPLACE_KEYS", 0, "Replace", ""}, {0, NULL, 0, NULL, NULL}}; - + + // XXX: we could just use the one that is defined in rna_curve.h static EnumPropertyItem new_interpolation_types[] = { {BEZT_IPO_CONST, "CONSTANT", 0, "Constant", ""}, {BEZT_IPO_LIN, "LINEAR", 0, "Linear", ""}, @@ -1841,7 +1938,6 @@ static void rna_def_userdef_edit(BlenderRNA *brna) {USER_ADD_VIEWALIGNED, "VIEW", 0, "View", "Align newly added objects to the world coordinates"}, {0, NULL, 0, NULL, NULL}}; - srna= RNA_def_struct(brna, "UserPreferencesEdit", NULL); RNA_def_struct_sdna(srna, "UserDef"); RNA_def_struct_nested(brna, srna, "UserPreferences"); @@ -1927,7 +2023,7 @@ static void rna_def_userdef_edit(BlenderRNA *brna) RNA_def_property_enum_items(prop, new_interpolation_types); RNA_def_property_enum_sdna(prop, NULL, "ipo_new"); RNA_def_property_ui_text(prop, "New Interpolation Type", ""); - + prop= RNA_def_property(srna, "grease_pencil_manhattan_distance", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "gp_manhattendist"); RNA_def_property_range(prop, 0, 100); @@ -2075,7 +2171,14 @@ static void rna_def_userdef_system(BlenderRNA *brna) {USER_DRAW_OVERLAP, "OVERLAP", 0, "Overlap", "Redraw all overlapping regions, minimal memory usage but more redraws."}, {USER_DRAW_FULL, "FULL", 0, "Full", "Do a full redraw each time, slow, only use for reference or when all else fails."}, {0, NULL, 0, NULL, NULL}}; - + + static EnumPropertyItem color_picker_types[] = { + {USER_CP_CIRCLE, "CIRCLE", 0, "Circle", "A circular Hue/Saturation color wheel, with Value slider"}, + {USER_CP_SQUARE_SV, "SQUARE_SV", 0, "Square (SV + H)", "A square showing Saturation/Value, with Hue slider"}, + {USER_CP_SQUARE_HS, "SQUARE_HS", 0, "Square (HS + V)", "A square showing Hue/Saturation, with Value slider"}, + {USER_CP_SQUARE_HV, "SQUARE_HV", 0, "Square (HV + S)", "A square showing Hue/Value, with Saturation slider"}, + {0, NULL, 0, NULL, NULL}}; + /* hardcoded here, could become dynamic somehow */ static EnumPropertyItem language_items[] = { {0, "ENGLISH", 0, "English", ""}, @@ -2172,6 +2275,11 @@ static void rna_def_userdef_system(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Weight Color Range", "Color range used for weight visualization in weight painting mode."); RNA_def_property_update(prop, 0, "rna_UserDef_weight_color_update"); + prop= RNA_def_property(srna, "color_picker_type", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_items(prop, color_picker_types); + RNA_def_property_enum_sdna(prop, NULL, "color_picker_type"); + RNA_def_property_ui_text(prop, "Color Picker Type", "Different styles of displaying the color picker widget"); + prop= RNA_def_property(srna, "enable_all_codecs", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_ALLWINCODECS); RNA_def_property_ui_text(prop, "Enable All Codecs", "Enables automatic saving of preview images in the .blend file (Windows only)."); @@ -2195,10 +2303,6 @@ static void rna_def_userdef_system(BlenderRNA *brna) RNA_def_property_range(prop, 0, 32727); RNA_def_property_ui_text(prop, "Frame Server Port", "Frameserver Port for Framserver-Rendering."); - prop= RNA_def_property(srna, "game_sound", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_negative_sdna(prop, NULL, "gameflags", USER_DISABLE_SOUND); - RNA_def_property_ui_text(prop, "Game Sound", "Enables sounds to be played in games."); - prop= RNA_def_property(srna, "clip_alpha", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "glalphaclip"); RNA_def_property_range(prop, 0.0f, 1.0f); @@ -2212,6 +2316,10 @@ static void rna_def_userdef_system(BlenderRNA *brna) RNA_def_property_boolean_negative_sdna(prop, NULL, "gameflags", USER_DISABLE_VBO); RNA_def_property_ui_text(prop, "VBOs", "Use Vertex Buffer Objects (or Vertex Arrays, if unsupported) for viewport rendering."); + prop= RNA_def_property(srna, "use_antialiasing", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "gameflags", USER_DISABLE_AA); + RNA_def_property_ui_text(prop, "Anti-aliasing", "Use anti-aliasing for the 3D view (may impact redraw performance)"); + prop= RNA_def_property(srna, "gl_texture_limit", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "glreslimit"); RNA_def_property_enum_items(prop, gl_texture_clamp_items); @@ -2262,6 +2370,16 @@ static void rna_def_userdef_system(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Audio Channels", "Sets the audio channel count."); RNA_def_property_update(prop, 0, "rna_UserDef_audio_update"); + prop= RNA_def_property(srna, "screencast_fps", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "scrcastfps"); + RNA_def_property_range(prop, 10, 50); + RNA_def_property_ui_text(prop, "FPS", "Frame rate for the screencast to be played back."); + + prop= RNA_def_property(srna, "screencast_wait_time", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "scrcastwait"); + RNA_def_property_range(prop, 50, 1000); + RNA_def_property_ui_text(prop, "Wait Timer (ms)", "Time in milliseconds between each frame recorded for screencast."); + #if 0 prop= RNA_def_property(srna, "verse_master", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "versemaster"); diff --git a/source/blender/makesrna/intern/rna_vfont.c b/source/blender/makesrna/intern/rna_vfont.c index aa2aaaf6342..db576207eae 100644 --- a/source/blender/makesrna/intern/rna_vfont.c +++ b/source/blender/makesrna/intern/rna_vfont.c @@ -43,7 +43,7 @@ void RNA_def_vfont(BlenderRNA *brna) srna= RNA_def_struct(brna, "VectorFont", "ID"); RNA_def_struct_ui_text(srna, "Vector Font", "Vector font for Text objects."); RNA_def_struct_sdna(srna, "VFont"); - RNA_def_struct_ui_icon(srna, ICON_FONT_DATA); + RNA_def_struct_ui_icon(srna, ICON_FILE_FONT); prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH); RNA_def_property_clear_flag(prop, PROP_EDITABLE); diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index e68681919eb..955b0f30fcc 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -64,6 +64,7 @@ EnumPropertyItem event_value_items[] = { {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_type_items[]= { @@ -84,6 +85,9 @@ EnumPropertyItem event_mouse_type_items[]= { {SELECTMOUSE, "SELECTMOUSE", 0, "Select", ""}, {0, "", 0, NULL, NULL}, {MOUSEMOVE, "MOUSEMOVE", 0, "Move", ""}, + {MOUSEPAN, "TRACKPADPAN", 0, "Mouse/Trackpad Pan", ""}, + {MOUSEZOOM, "TRACKPADZOOM", 0, "Mouse/Trackpad Zoom", ""}, + {MOUSEROTATE, "MOUSEROTATE", 0, "Mouse/Trackpad Rotate", ""}, {0, "", 0, NULL, NULL}, {WHEELUPMOUSE, "WHEELUPMOUSE", 0, "Wheel Up", ""}, {WHEELDOWNMOUSE, "WHEELDOWNMOUSE", 0, "Wheel Down", ""}, @@ -111,6 +115,9 @@ EnumPropertyItem event_type_items[] = { {SELECTMOUSE, "SELECTMOUSE", 0, "Select Mouse", ""}, {0, "", 0, NULL, NULL}, {MOUSEMOVE, "MOUSEMOVE", 0, "Mouse Move", ""}, + {MOUSEPAN, "TRACKPADPAN", 0, "Mouse/Trackpad Pan", ""}, + {MOUSEZOOM, "TRACKPADZOOM", 0, "Mouse/Trackpad Zoom", ""}, + {MOUSEROTATE, "MOUSEROTATE", 0, "Mouse/Trackpad Rotate", ""}, {0, "", 0, NULL, NULL}, {WHEELUPMOUSE, "WHEELUPMOUSE", 0, "Wheel Up", ""}, {WHEELDOWNMOUSE, "WHEELDOWNMOUSE", 0, "Wheel Down", ""}, @@ -598,7 +605,8 @@ static void rna_Operator_unregister(const bContext *C, StructRNA *type) WM_operatortype_remove(ot->idname); MEM_freeN(idname); - // RNA_struct_free(&BLENDER_RNA, type); // WM_operatortype_remove calls this + /* not to be confused with the RNA_struct_free that WM_operatortype_remove calls, they are 2 different srna's */ + RNA_struct_free(&BLENDER_RNA, type); /* update while blender is running */ if(C) @@ -691,6 +699,7 @@ static void operator_draw(bContext *C, wmOperator *op) RNA_parameter_list_free(&list); } +#ifndef DISABLE_PYTHON void operator_wrapper(wmOperatorType *ot, void *userdata); void macro_wrapper(wmOperatorType *ot, void *userdata); @@ -829,6 +838,7 @@ static StructRNA *rna_MacroOperator_register(const bContext *C, ReportList *repo return dummyot.ext.srna; } +#endif static StructRNA* rna_Operator_refine(PointerRNA *opr) { @@ -853,7 +863,9 @@ static void rna_def_operator(BlenderRNA *brna) 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"); +#ifndef DISABLE_PYTHON RNA_def_struct_register_funcs(srna, "rna_Operator_register", "rna_Operator_unregister"); +#endif prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); RNA_def_property_clear_flag(prop, PROP_EDITABLE); @@ -881,6 +893,11 @@ static void rna_def_operator(BlenderRNA *brna) 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_description", PROP_STRING, PROP_NONE); + RNA_def_property_string_sdna(prop, NULL, "type->description"); + 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); @@ -906,8 +923,10 @@ static void rna_def_macro_operator(BlenderRNA *brna) 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"); RNA_def_struct_refine_func(srna, "rna_MacroOperator_refine"); +#ifndef DISABLE_PYTHON RNA_def_struct_register_funcs(srna, "rna_MacroOperator_register", "rna_Operator_unregister"); - +#endif + 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); @@ -931,6 +950,11 @@ static void rna_def_macro_operator(BlenderRNA *brna) 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_description", PROP_STRING, PROP_NONE); + RNA_def_property_string_sdna(prop, NULL, "type->description"); + 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); @@ -1162,6 +1186,11 @@ static void rna_def_keyconfig(BlenderRNA *brna) RNA_def_property_struct_type(prop, "KeyMap"); RNA_def_property_ui_text(prop, "Key Maps", "Key maps configured as part of this configuration."); + prop= RNA_def_property(srna, "user_defined", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", KEYCONF_USER); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "User Defined", "Indicates that a keyconfig was defined by the user."); + RNA_api_keyconfig(srna); /* KeyMap */ diff --git a/source/blender/makesrna/intern/rna_wm_api.c b/source/blender/makesrna/intern/rna_wm_api.c index 9ed6046ecd0..9c41d280dac 100644 --- a/source/blender/makesrna/intern/rna_wm_api.c +++ b/source/blender/makesrna/intern/rna_wm_api.c @@ -144,45 +144,67 @@ static void rna_Operator_report(wmOperator *op, int type, char *msg) BKE_report(op->reports, type, msg); } +/* since event isnt needed... */ +static void rna_Operator_enum_search_invoke(bContext *C, wmOperator *op) +{ + WM_enum_search_invoke(C, op, NULL); + +} + #else +static void rna_generic_op_invoke(FunctionRNA *func, int use_event, int use_ret) +{ + PropertyRNA *parm; + + RNA_def_function_flag(func, FUNC_NO_SELF|FUNC_USE_CONTEXT); + parm= RNA_def_pointer(func, "operator", "Operator", "", "Operator to call."); + RNA_def_property_flag(parm, PROP_REQUIRED); + + if(use_event) { + parm= RNA_def_pointer(func, "event", "Event", "", "Event."); + RNA_def_property_flag(parm, PROP_REQUIRED); + } + + if(use_ret) { + parm= RNA_def_enum(func, "result", operator_return_items, 0, "result", ""); + RNA_def_property_flag(parm, PROP_ENUM_FLAG); + RNA_def_function_return(func, parm); + } +} + void RNA_api_wm(StructRNA *srna) { FunctionRNA *func; PropertyRNA *parm; func= RNA_def_function(srna, "add_fileselect", "WM_event_add_fileselect"); - RNA_def_function_flag(func, FUNC_NO_SELF|FUNC_USE_CONTEXT); RNA_def_function_ui_description(func, "Show up the file selector."); - parm= RNA_def_pointer(func, "operator", "Operator", "", "Operator to call."); - RNA_def_property_flag(parm, PROP_REQUIRED); + rna_generic_op_invoke(func, 0, 0); - func= RNA_def_function(srna, "add_keyconfig", "WM_keyconfig_add"); + func= RNA_def_function(srna, "add_keyconfig", "WM_keyconfig_add_user"); parm= RNA_def_string(func, "name", "", 0, "Name", ""); RNA_def_property_flag(parm, PROP_REQUIRED); parm= RNA_def_pointer(func, "keyconfig", "KeyConfig", "Key Configuration", "Added key configuration."); RNA_def_function_return(func, parm); + func= RNA_def_function(srna, "remove_keyconfig", "WM_keyconfig_remove"); + parm= RNA_def_pointer(func, "keyconfig", "KeyConfig", "Key Configuration", "Removed key configuration."); + RNA_def_property_flag(parm, PROP_REQUIRED); + /* invoke functions, for use with python */ func= RNA_def_function(srna, "invoke_props_popup", "WM_operator_props_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_pointer(func, "event", "Event", "", "Event."); - RNA_def_property_flag(parm, PROP_REQUIRED); - - 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); + rna_generic_op_invoke(func, 1, 1); + /* invoke enum */ + func= RNA_def_function(srna, "invoke_search_popup", "rna_Operator_enum_search_invoke"); + rna_generic_op_invoke(func, 0, 0); /* 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); + rna_generic_op_invoke(func, 0, 0); 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); } @@ -343,6 +365,12 @@ void RNA_api_keymap(StructRNA *srna) parm= RNA_def_pointer(func, "item", "KeyMapItem", "Item", ""); RNA_def_property_flag(parm, PROP_REQUIRED); + func= RNA_def_function(srna, "item_from_id", "WM_keymap_item_find_id"); + parm= RNA_def_property(func, "id", PROP_INT, PROP_NONE); + RNA_def_property_ui_text(parm, "id", "ID of the item."); + parm= RNA_def_pointer(func, "item", "KeyMapItem", "Item", ""); + RNA_def_function_return(func, parm); + func= RNA_def_function(srna, "copy_to_user", "WM_keymap_copy_to_user"); parm= RNA_def_pointer(func, "keymap", "KeyMap", "Key Map", "User editable key map."); RNA_def_function_return(func, parm); diff --git a/source/blender/makesrna/intern/rna_world.c b/source/blender/makesrna/intern/rna_world.c index 4046fc266da..c2af18193b2 100644 --- a/source/blender/makesrna/intern/rna_world.c +++ b/source/blender/makesrna/intern/rna_world.c @@ -45,9 +45,9 @@ #include "WM_api.h" #include "WM_types.h" -static PointerRNA rna_World_ambient_occlusion_get(PointerRNA *ptr) +static PointerRNA rna_World_lighting_get(PointerRNA *ptr) { - return rna_pointer_inherit_refine(ptr, &RNA_WorldAmbientOcclusion, ptr->id.data); + return rna_pointer_inherit_refine(ptr, &RNA_WorldLighting, ptr->id.data); } static PointerRNA rna_World_stars_get(PointerRNA *ptr) @@ -182,15 +182,14 @@ static void rna_def_world_mtex(BlenderRNA *brna) RNA_def_property_update(prop, 0, "rna_World_update"); } -static void rna_def_ambient_occlusion(BlenderRNA *brna) +static void rna_def_lighting(BlenderRNA *brna) { StructRNA *srna; PropertyRNA *prop; static EnumPropertyItem blend_mode_items[] = { + {WO_AOMUL, "MULTIPLY", 0, "Multiply", "Multiply direct lighting with ambient occlusion, darkening the result."}, {WO_AOADD, "ADD", 0, "Add", "Add light and shadow."}, - {WO_AOSUB, "SUBTRACT", 0, "Subtract", "Subtract light and shadow (needs a normal light to make anything visible.)"}, - {WO_AOADDSUB, "BOTH", 0, "Both", "Both lighten and darken."}, {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem prop_color_items[] = { @@ -210,14 +209,78 @@ static void rna_def_ambient_occlusion(BlenderRNA *brna) {WO_AOGATHER_APPROX, "APPROXIMATE", 0, "Approximate", "Inaccurate, but faster and without noise."}, {0, NULL, 0, NULL, NULL}}; - srna= RNA_def_struct(brna, "WorldAmbientOcclusion", NULL); + srna= RNA_def_struct(brna, "WorldLighting", NULL); RNA_def_struct_sdna(srna, "World"); RNA_def_struct_nested(brna, srna, "World"); - RNA_def_struct_ui_text(srna, "Ambient Occlusion", "Ambient occlusion settings for a World datablock."); + RNA_def_struct_ui_text(srna, "Lighting", "Lighting for a World datablock."); - prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE); + /* ambient occlusion */ + prop= RNA_def_property(srna, "use_ambient_occlusion", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "mode", WO_AMB_OCC); - RNA_def_property_ui_text(prop, "Enabled", "Use Ambient Occlusion to add light based on distance between elements, creating the illusion of omnipresent light"); + RNA_def_property_ui_text(prop, "Use Ambient Occlusion", "Use Ambient Occlusion to add shadowing based on distance between objects."); + RNA_def_property_update(prop, 0, "rna_World_update"); + + prop= RNA_def_property(srna, "ao_factor", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_sdna(prop, NULL, "aoenergy"); + RNA_def_property_range(prop, 0, INT_MAX); + RNA_def_property_ui_range(prop, 0, 1, 0.1, 2); + RNA_def_property_ui_text(prop, "Factor", "Factor for ambient occlusion blending blending."); + RNA_def_property_update(prop, 0, "rna_World_update"); + + prop= RNA_def_property(srna, "ao_blend_mode", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "aomix"); + RNA_def_property_enum_items(prop, blend_mode_items); + RNA_def_property_ui_text(prop, "Blend Mode", "Defines how AO mixes with material shading."); + RNA_def_property_update(prop, 0, "rna_World_update"); + + /* environment lighting */ + prop= RNA_def_property(srna, "use_environment_lighting", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "mode", WO_ENV_LIGHT); + RNA_def_property_ui_text(prop, "Use Environment Lighting", "Add light coming from the environment."); + RNA_def_property_update(prop, 0, "rna_World_update"); + + prop= RNA_def_property(srna, "environment_energy", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "ao_env_energy"); + RNA_def_property_ui_range(prop, 0, FLT_MAX, 0.1, 2); + RNA_def_property_ui_text(prop, "Environment Color", "Defines the strength of environment light."); + RNA_def_property_update(prop, 0, "rna_World_update"); + + prop= RNA_def_property(srna, "environment_color", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "aocolor"); + RNA_def_property_enum_items(prop, prop_color_items); + RNA_def_property_ui_text(prop, "Environment Color", "Defines where the color of the environment light comes from."); + RNA_def_property_update(prop, 0, "rna_World_update"); + + /* indirect lighting */ + prop= RNA_def_property(srna, "use_indirect_lighting", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "mode", WO_INDIRECT_LIGHT); + RNA_def_property_ui_text(prop, "Use Indirect Lighting", "Add indirect light bouncing of surrounding objects."); + RNA_def_property_update(prop, 0, "rna_World_update"); + + prop= RNA_def_property(srna, "indirect_factor", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_sdna(prop, NULL, "ao_indirect_energy"); + RNA_def_property_range(prop, 0, INT_MAX); + RNA_def_property_ui_range(prop, 0, 1, 0.1, 2); + RNA_def_property_ui_text(prop, "Indirect Factor", "Factor for how much surrounding objects contribute to light."); + 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_range(prop, 1, INT_MAX); + 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"); + + /* gathering parameters */ + prop= RNA_def_property(srna, "gather_method", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "ao_gather_method"); + RNA_def_property_enum_items(prop, prop_gather_method_items); + RNA_def_property_ui_text(prop, "Gather Method", ""); + RNA_def_property_update(prop, 0, "rna_World_update"); + + prop= RNA_def_property(srna, "passes", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "ao_approx_passes"); + 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, "distance", PROP_FLOAT, PROP_DISTANCE); @@ -230,12 +293,6 @@ static void rna_def_ambient_occlusion(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Strength", "Distance attenuation factor, the higher, the 'shorter' the shadows."); RNA_def_property_update(prop, 0, "rna_World_update"); - prop= RNA_def_property(srna, "energy", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "aoenergy"); - RNA_def_property_ui_range(prop, 0, 10, 0.1, 3); - RNA_def_property_ui_text(prop, "Energy", "Amount of enerygy generated by ambient occlusion."); - RNA_def_property_update(prop, 0, "rna_World_update"); - prop= RNA_def_property(srna, "bias", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "aobias"); RNA_def_property_range(prop, 0, 0.5); @@ -283,46 +340,11 @@ static void rna_def_ambient_occlusion(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Samples", "Amount of ray samples. Higher values give smoother results and longer rendering times"); RNA_def_property_update(prop, 0, "rna_World_update"); - prop= RNA_def_property(srna, "blend_mode", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "aomix"); - RNA_def_property_enum_items(prop, blend_mode_items); - RNA_def_property_ui_text(prop, "Blend Mode", "Defines how AO mixes with material shading."); - RNA_def_property_update(prop, 0, "rna_World_update"); - - prop= RNA_def_property(srna, "color", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "aocolor"); - RNA_def_property_enum_items(prop, prop_color_items); - RNA_def_property_ui_text(prop, "Color", "Defines the color of the AO light"); - RNA_def_property_update(prop, 0, "rna_World_update"); - prop= RNA_def_property(srna, "sample_method", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "ao_samp_method"); RNA_def_property_enum_items(prop, prop_sample_method_items); RNA_def_property_ui_text(prop, "Sample Method", "Method for generating shadow samples (for Raytrace)."); RNA_def_property_update(prop, 0, "rna_World_update"); - - prop= RNA_def_property(srna, "gather_method", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "ao_gather_method"); - RNA_def_property_enum_items(prop, prop_gather_method_items); - RNA_def_property_ui_text(prop, "Gather Method", ""); - RNA_def_property_update(prop, 0, "rna_World_update"); - - prop= RNA_def_property(srna, "passes", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "ao_approx_passes"); - 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) @@ -499,11 +521,11 @@ void RNA_def_world(BlenderRNA *brna) RNA_def_property_update(prop, 0, "rna_World_update"); /* nested structs */ - prop= RNA_def_property(srna, "ambient_occlusion", PROP_POINTER, PROP_NONE); + prop= RNA_def_property(srna, "lighting", PROP_POINTER, PROP_NONE); RNA_def_property_flag(prop, PROP_NEVER_NULL); - RNA_def_property_struct_type(prop, "WorldAmbientOcclusion"); - RNA_def_property_pointer_funcs(prop, "rna_World_ambient_occlusion_get", NULL, NULL); - RNA_def_property_ui_text(prop, "Ambient Occlusion", "World ambient occlusion settings."); + RNA_def_property_struct_type(prop, "WorldLighting"); + RNA_def_property_pointer_funcs(prop, "rna_World_lighting_get", NULL, NULL); + RNA_def_property_ui_text(prop, "Lighting", "World lighting settings."); prop= RNA_def_property(srna, "mist", PROP_POINTER, PROP_NONE); RNA_def_property_flag(prop, PROP_NEVER_NULL); @@ -517,7 +539,7 @@ void RNA_def_world(BlenderRNA *brna) RNA_def_property_pointer_funcs(prop, "rna_World_stars_get", NULL, NULL); RNA_def_property_ui_text(prop, "Stars", "World stars settings."); - rna_def_ambient_occlusion(brna); + rna_def_lighting(brna); rna_def_world_mist(brna); rna_def_world_stars(brna); rna_def_world_mtex(brna); diff --git a/source/blender/nodes/CMP_node.h b/source/blender/nodes/CMP_node.h index 041bf1c8361..7bea141de64 100644 --- a/source/blender/nodes/CMP_node.h +++ b/source/blender/nodes/CMP_node.h @@ -59,6 +59,8 @@ extern bNodeType cmp_node_gamma; extern bNodeType cmp_node_invert; extern bNodeType cmp_node_alphaover; extern bNodeType cmp_node_zcombine; +extern bNodeType cmp_node_colorbalance; +extern bNodeType cmp_node_huecorrect; extern bNodeType cmp_node_normal; extern bNodeType cmp_node_curve_vec; diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_colorbalance.c b/source/blender/nodes/intern/CMP_nodes/CMP_colorbalance.c new file mode 100644 index 00000000000..09dccd8e3c4 --- /dev/null +++ b/source/blender/nodes/intern/CMP_nodes/CMP_colorbalance.c @@ -0,0 +1,174 @@ +/** + * + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2006 Blender Foundation. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): Matt Ebb. + * + * ***** END GPL LICENSE BLOCK ***** + */ + + +#include "../CMP_util.h" + + +/* ******************* Color Balance ********************************* */ +static bNodeSocketType cmp_node_colorbalance_in[]={ + {SOCK_VALUE, 1, "Fac", 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f}, + {SOCK_RGBA,1,"Image", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f}, + {-1,0,""} +}; + +static bNodeSocketType cmp_node_colorbalance_out[]={ + {SOCK_RGBA,0,"Image", 0.0f, 0.0f, 1.0f, 1.0f, -1.0f, 1.0f}, + {-1,0,""} +}; + +DO_INLINE float colorbalance_cdl(float in, float offset, float power, float slope) +{ + float x = in * slope + offset; + + /* prevent NaN */ + if (x < 0.f) x = 0.f; + + //powf(in * slope + offset, power) + return powf(x, 1.f/power); +} + +DO_INLINE float colorbalance_lgg(float in, float lift, float gamma, float gain) +{ + float x = gain*(in+lift*(1-in)); + + /* prevent NaN */ + if (x < 0.f) x = 0.f; + + return powf(x, (1.f/gamma)); +} + +static void do_colorbalance_cdl(bNode *node, float* out, float *in) +{ + NodeColorBalance *n= (NodeColorBalance *)node->storage; + + out[0] = colorbalance_cdl(in[0], n->lift[0], n->gamma[0], n->gain[0]); + out[1] = colorbalance_cdl(in[1], n->lift[1], n->gamma[1], n->gain[1]); + out[2] = colorbalance_cdl(in[2], n->lift[2], n->gamma[2], n->gain[2]); + out[3] = in[3]; +} + +static void do_colorbalance_cdl_fac(bNode *node, float* out, float *in, float *fac) +{ + NodeColorBalance *n= (NodeColorBalance *)node->storage; + const float mfac= 1.0f - *fac; + + out[0] = mfac*in[0] + *fac * colorbalance_cdl(in[0], n->lift[0], n->gamma[0], n->gain[0]); + out[1] = mfac*in[1] + *fac * colorbalance_cdl(in[1], n->lift[1], n->gamma[1], n->gain[1]); + out[2] = mfac*in[2] + *fac * colorbalance_cdl(in[2], n->lift[2], n->gamma[2], n->gain[2]); + out[3] = in[3]; +} + +static void do_colorbalance_lgg(bNode *node, float* out, float *in) +{ + NodeColorBalance *n= (NodeColorBalance *)node->storage; + + out[0] = colorbalance_lgg(in[0], n->lift[0], n->gamma[0], n->gain[0]); + out[1] = colorbalance_lgg(in[1], n->lift[1], n->gamma[1], n->gain[1]); + out[2] = colorbalance_lgg(in[2], n->lift[2], n->gamma[2], n->gain[2]); + out[3] = in[3]; +} + +static void do_colorbalance_lgg_fac(bNode *node, float* out, float *in, float *fac) +{ + NodeColorBalance *n= (NodeColorBalance *)node->storage; + const float mfac= 1.0f - *fac; + + out[0] = mfac*in[0] + *fac * colorbalance_lgg(in[0], n->lift[0], n->gamma[0], n->gain[0]); + out[1] = mfac*in[1] + *fac * colorbalance_lgg(in[1], n->lift[1], n->gamma[1], n->gain[1]); + out[2] = mfac*in[2] + *fac * colorbalance_lgg(in[2], n->lift[2], n->gamma[2], n->gain[2]); + out[3] = in[3]; +} + +static void node_composit_exec_colorbalance(void *data, bNode *node, bNodeStack **in, bNodeStack **out) +{ + CompBuf *cbuf= in[1]->data; + CompBuf *stackbuf; + + /* stack order input: fac, image */ + /* stack order output: image */ + if(out[0]->hasoutput==0) return; + + if(in[0]->vec[0] == 0.f && in[0]->data == NULL) { + out[0]->data = pass_on_compbuf(cbuf); + return; + } + + if (cbuf) { + stackbuf= alloc_compbuf(cbuf->x, cbuf->y, CB_RGBA, 1); /* create output based on image input */ + + if (node->custom1 == 0) { + /* lift gamma gain */ + if ((in[0]->data==NULL) && (in[0]->vec[0] >= 1.f)) { + composit1_pixel_processor(node, stackbuf, in[1]->data, in[1]->vec, do_colorbalance_lgg, CB_RGBA); + } + else { + composit2_pixel_processor(node, stackbuf, in[1]->data, in[1]->vec, in[0]->data, in[0]->vec, do_colorbalance_lgg_fac, CB_RGBA, CB_VAL); + } + } else { + /* offset/power/slope : ASC-CDL */ + if ((in[0]->data==NULL) && (in[0]->vec[0] >= 1.f)) { + composit1_pixel_processor(node, stackbuf, in[1]->data, in[1]->vec, do_colorbalance_cdl, CB_RGBA); + } + else { + composit2_pixel_processor(node, stackbuf, in[1]->data, in[1]->vec, in[0]->data, in[0]->vec, do_colorbalance_cdl_fac, CB_RGBA, CB_VAL); + } + + } + + out[0]->data=stackbuf; + } +} + +static void node_composit_init_colorbalance(bNode *node) +{ + NodeColorBalance *n= node->storage= MEM_callocN(sizeof(NodeColorBalance), "node colorbalance"); + + n->lift[0] = n->lift[1] = n->lift[2] = 0.0f; + n->gamma[0] = n->gamma[1] = n->gamma[2] = 1.0f; + n->gain[0] = n->gain[1] = n->gain[2] = 1.0f; +} + +bNodeType cmp_node_colorbalance={ + /* *next,*prev */ NULL, NULL, + /* type code */ CMP_NODE_COLORBALANCE, + /* name */ "Color Balance", + /* width+range */ 400, 200, 400, + /* class+opts */ NODE_CLASS_OP_COLOR, NODE_OPTIONS, + /* input sock */ cmp_node_colorbalance_in, + /* output sock */ cmp_node_colorbalance_out, + /* storage */ "NodeColorBalance", + /* execfunc */ node_composit_exec_colorbalance, + /* butfunc */ NULL, + /* initfunc */ node_composit_init_colorbalance, + /* freestoragefunc */ node_free_standard_storage, + /* copystoragefunc */ node_copy_standard_storage, + /* id */ NULL +}; + diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_huecorrect.c b/source/blender/nodes/intern/CMP_nodes/CMP_huecorrect.c new file mode 100644 index 00000000000..0ba2140b756 --- /dev/null +++ b/source/blender/nodes/intern/CMP_nodes/CMP_huecorrect.c @@ -0,0 +1,184 @@ +/** + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2006 Blender Foundation. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): Matt Ebb + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include "../CMP_util.h" + +static bNodeSocketType cmp_node_huecorrect_in[]= { + { SOCK_VALUE, 1, "Fac", 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f}, + { SOCK_RGBA, 1, "Image", 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f}, + { -1, 0, "" } +}; + +static bNodeSocketType cmp_node_huecorrect_out[]= { + { SOCK_RGBA, 0, "Image", 0.0f, 0.0f, 1.0f, 1.0f, -1.0f, 1.0f}, + { -1, 0, "" } +}; + +static void do_huecorrect(bNode *node, float *out, float *in) +{ + float hsv[3], f; + + rgb_to_hsv(in[0], in[1], in[2], hsv, hsv+1, hsv+2); + + /* adjust hue, scaling returned default 0.5 up to 1 */ + f = curvemapping_evaluateF(node->storage, 0, hsv[0]); + hsv[0] *= (f * 2.f); + + /* adjust saturation, scaling returned default 0.5 up to 1 */ + f = curvemapping_evaluateF(node->storage, 1, hsv[0]); + hsv[1] *= (f * 2.f); + + /* adjust value, scaling returned default 0.5 up to 1 */ + f = curvemapping_evaluateF(node->storage, 2, hsv[0]); + hsv[2] *= (f * 2.f); + + CLAMP(hsv[0], 0.f, 1.f); + CLAMP(hsv[1], 0.f, 1.f); + CLAMP(hsv[2], 0.f, 1.f); + + /* convert back to rgb */ + hsv_to_rgb(hsv[0], hsv[1], hsv[2], out, out+1, out+2); + + out[3]= in[3]; +} + +static void do_huecorrect_fac(bNode *node, float *out, float *in, float *fac) +{ + float hsv[3], rgb[3], f; + const float mfac = 1.f-*fac; + + rgb_to_hsv(in[0], in[1], in[2], hsv, hsv+1, hsv+2); + + /* adjust hue, scaling returned default 0.5 up to 1 */ + f = curvemapping_evaluateF(node->storage, 0, hsv[0]); + hsv[0] *= (f * 2.f); + + /* adjust saturation, scaling returned default 0.5 up to 1 */ + f = curvemapping_evaluateF(node->storage, 1, hsv[0]); + hsv[1] *= (f * 2.f); + + /* adjust value, scaling returned default 0.5 up to 1 */ + f = curvemapping_evaluateF(node->storage, 2, hsv[0]); + hsv[2] *= (f * 2.f); + + CLAMP(hsv[0], 0.f, 1.f); + CLAMP(hsv[1], 0.f, 1.f); + CLAMP(hsv[2], 0.f, 1.f); + + /* convert back to rgb */ + hsv_to_rgb(hsv[0], hsv[1], hsv[2], rgb, rgb+1, rgb+2); + + out[0]= mfac*in[0] + *fac*rgb[0]; + out[1]= mfac*in[1] + *fac*rgb[1]; + out[2]= mfac*in[2] + *fac*rgb[2]; + out[3]= in[3]; +} + +static void node_composit_exec_huecorrect(void *data, bNode *node, bNodeStack **in, bNodeStack **out) +{ + CompBuf *cbuf= in[1]->data; + CompBuf *stackbuf; + + /* stack order input: fac, image, black level, white level */ + /* stack order output: image */ + + if(out[0]->hasoutput==0) + return; + + if(in[0]->vec[0] == 0.f && in[0]->data == NULL) { + out[0]->data = pass_on_compbuf(cbuf); + return; + } + + /* input no image? then only color operation */ + if(in[1]->data==NULL) { + do_huecorrect_fac(node, out[0]->vec, in[1]->vec, in[0]->vec); + } + + if (cbuf) { + stackbuf= alloc_compbuf(cbuf->x, cbuf->y, CB_RGBA, 1); /* make output size of input image */ + + if ((in[0]->data==NULL) && (in[0]->vec[0] >= 1.f)) + composit1_pixel_processor(node, stackbuf, in[1]->data, in[1]->vec, do_huecorrect, CB_RGBA); + else + composit2_pixel_processor(node, stackbuf, in[1]->data, in[1]->vec, in[0]->data, in[0]->vec, do_huecorrect_fac, CB_RGBA, CB_VAL); + + out[0]->data= stackbuf; + } + +} + +static void node_composit_init_huecorrect(bNode* node) +{ + CurveMapping *cumapping = node->storage= curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f); + int c, i; + + for (c=0; c<3; c++) { + CurveMap *cuma = &cumapping->cm[c]; + + /* set default horizontal curve */ + if(cuma->curve) + MEM_freeN(cuma->curve); + + cuma->totpoint= 9; + cuma->curve= MEM_callocN(cuma->totpoint*sizeof(CurveMapPoint), "curve points"); + + for (i=0; i < cuma->totpoint; i++) + { + cuma->curve[i].x= i / ((float)cuma->totpoint-1); + cuma->curve[i].y= 0.5; + } + + if(cuma->table) { + MEM_freeN(cuma->table); + cuma->table= NULL; + } + } + + /* default to showing Saturation */ + cumapping->cur = 1; +} + +bNodeType cmp_node_huecorrect= { + /* *next,*prev */ NULL, NULL, + /* type code */ CMP_NODE_HUECORRECT, + /* name */ "Hue Correct", + /* width+range */ 320, 140, 400, + /* class+opts */ NODE_CLASS_OP_COLOR, NODE_OPTIONS, + /* input sock */ cmp_node_huecorrect_in, + /* output sock */ cmp_node_huecorrect_out, + /* storage */ "CurveMapping", + /* execfunc */ node_composit_exec_huecorrect, + /* butfunc */ NULL, + /* initfunc */ node_composit_init_huecorrect, + /* freestoragefunc */ node_free_curves, + /* copystoragefunc */ node_copy_curves, + /* id */ NULL +}; + diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_image.c b/source/blender/nodes/intern/CMP_nodes/CMP_image.c index 89a3072ac8d..f209687d6a5 100644 --- a/source/blender/nodes/intern/CMP_nodes/CMP_image.c +++ b/source/blender/nodes/intern/CMP_nodes/CMP_image.c @@ -64,27 +64,19 @@ static CompBuf *node_composit_get_image(RenderData *rd, Image *ima, ImageUser *i ibuf= BKE_image_get_ibuf(ima, iuser); if(ibuf==NULL) return NULL; - - if (rd->color_mgt_flag & R_COLOR_MANAGEMENT) { - if (ibuf->profile == IB_PROFILE_NONE) { - /* if float buffer already exists = already linear */ - /* else ... */ - if (ibuf->rect_float == NULL) { - imb_freerectfloatImBuf(ibuf); - ibuf->profile = IB_PROFILE_SRGB; - IMB_float_from_rect(ibuf); - } else { - ibuf->profile = IB_PROFILE_LINEAR_RGB; - } - } - } else { - if (ibuf->profile == IB_PROFILE_SRGB) { - if (ibuf->rect_float != NULL) { - imb_freerectfloatImBuf(ibuf); - } - ibuf->profile = IB_PROFILE_NONE; - IMB_float_from_rect(ibuf); + + if (!(rd->color_mgt_flag & R_COLOR_MANAGEMENT)) { + int profile = IB_PROFILE_NONE; + + /* temporarily set profile to none to not disturb actual */ + SWAP(int, ibuf->profile, profile); + + if (ibuf->rect_float != NULL) { + imb_freerectfloatImBuf(ibuf); } + IMB_float_from_rect(ibuf); + + SWAP(int, ibuf->profile, profile); } if (ibuf->rect_float == NULL) { @@ -206,7 +198,7 @@ static void node_composit_exec_image(void *data, bNode *node, bNodeStack **in, b CompBuf *stackbuf= NULL; /* first set the right frame number in iuser */ - BKE_image_user_calc_imanr(iuser, rd->cfra, 0); + BKE_image_user_calc_frame(iuser, rd->cfra, 0); /* force a load, we assume iuser index will be set OK anyway */ if(ima->type==IMA_TYPE_MULTILAYER) diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_outputFile.c b/source/blender/nodes/intern/CMP_nodes/CMP_outputFile.c index e63e5802507..0ad11b4c936 100644 --- a/source/blender/nodes/intern/CMP_nodes/CMP_outputFile.c +++ b/source/blender/nodes/intern/CMP_nodes/CMP_outputFile.c @@ -62,7 +62,7 @@ static void node_composit_exec_output_file(void *data, bNode *node, bNodeStack * } } - BKE_makepicstring((Scene *)node->id, string, nif->name, rd->cfra, nif->imtype); + BKE_makepicstring(string, nif->name, rd->cfra, nif->imtype, (rd->scemode & R_EXTENSION)); if(0 == BKE_write_ibuf((Scene *)node->id, ibuf, string, nif->imtype, nif->subimtype, nif->imtype==R_OPENEXR?nif->codec:nif->quality)) printf("Cannot save Node File Output to %s\n", string); diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_rgb.c b/source/blender/nodes/intern/CMP_nodes/CMP_rgb.c index ae2678dc5f0..496e432bebf 100644 --- a/source/blender/nodes/intern/CMP_nodes/CMP_rgb.c +++ b/source/blender/nodes/intern/CMP_nodes/CMP_rgb.c @@ -47,7 +47,7 @@ bNodeType cmp_node_rgb= { /* *next,*prev */ NULL, NULL, /* type code */ CMP_NODE_RGB, /* name */ "RGB", - /* width+range */ 100, 60, 140, + /* width+range */ 140, 80, 140, /* class+opts */ NODE_CLASS_INPUT, NODE_OPTIONS, /* input sock */ NULL, /* output sock */ cmp_node_rgb_out, diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_splitViewer.c b/source/blender/nodes/intern/CMP_nodes/CMP_splitViewer.c index 04383f478e9..7564b07523f 100644 --- a/source/blender/nodes/intern/CMP_nodes/CMP_splitViewer.c +++ b/source/blender/nodes/intern/CMP_nodes/CMP_splitViewer.c @@ -65,7 +65,7 @@ static void node_composit_exec_splitviewer(void *data, bNode *node, bNodeStack * buf1= typecheck_compbuf(in[0]->data, CB_RGBA); buf2= typecheck_compbuf(in[1]->data, CB_RGBA); - BKE_image_user_calc_imanr(node->storage, rd->cfra, 0); + BKE_image_user_calc_frame(node->storage, rd->cfra, 0); /* always returns for viewer image, but we check nevertheless */ ibuf= BKE_image_get_ibuf(ima, node->storage); diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_viewer.c b/source/blender/nodes/intern/CMP_nodes/CMP_viewer.c index d0dcc5c6973..105037d3bfc 100644 --- a/source/blender/nodes/intern/CMP_nodes/CMP_viewer.c +++ b/source/blender/nodes/intern/CMP_nodes/CMP_viewer.c @@ -51,7 +51,7 @@ static void node_composit_exec_viewer(void *data, bNode *node, bNodeStack **in, CompBuf *cbuf, *tbuf; int rectx, recty; - BKE_image_user_calc_imanr(node->storage, rd->cfra, 0); + BKE_image_user_calc_frame(node->storage, rd->cfra, 0); /* always returns for viewer image, but we check nevertheless */ ibuf= BKE_image_get_ibuf(ima, node->storage); diff --git a/source/blender/nodes/intern/SHD_nodes/SHD_rgb.c b/source/blender/nodes/intern/SHD_nodes/SHD_rgb.c index 1aa1a2ffc33..1c18e006a74 100644 --- a/source/blender/nodes/intern/SHD_nodes/SHD_rgb.c +++ b/source/blender/nodes/intern/SHD_nodes/SHD_rgb.c @@ -54,7 +54,7 @@ bNodeType sh_node_rgb= { /* *next,*prev */ NULL, NULL, /* type code */ SH_NODE_RGB, /* name */ "RGB", - /* width+range */ 100, 60, 140, + /* width+range */ 140, 80, 140, /* class+opts */ NODE_CLASS_INPUT, NODE_OPTIONS, /* input sock */ NULL, /* output sock */ sh_node_rgb_out, diff --git a/source/blender/nodes/intern/node_util.h b/source/blender/nodes/intern/node_util.h index 5c8ed19a8d1..6cfcd03fdc8 100644 --- a/source/blender/nodes/intern/node_util.h +++ b/source/blender/nodes/intern/node_util.h @@ -40,3 +40,14 @@ extern void node_copy_standard_storage(struct bNode *orig_node, struct bNode *ne #endif +// this is needed for inlining behaviour +#if defined _WIN32 +# define DO_INLINE __inline +#elif defined (__sgi) +# define DO_INLINE +#elif defined (__sun) || defined (__sun__) +# define DO_INLINE +#else +# define DO_INLINE static inline +#endif + diff --git a/source/blender/python/doc/epy/BGL.py b/source/blender/python/doc/epy/BGL.py new file mode 100644 index 00000000000..b054e762273 --- /dev/null +++ b/source/blender/python/doc/epy/BGL.py @@ -0,0 +1,1779 @@ +# Blender.BGL module (OpenGL wrapper) + +""" +The Blender.BGL submodule (the OpenGL wrapper). + +B{New}: some GLU functions: L{gluLookAt}, etc. + +The Blender.BGL submodule +========================= +(when accessing it from the Game Engine use BGL instead of Blender.BGL) + +This module wraps OpenGL constants and functions, making them available from +within Blender Python. + +The complete list can be retrieved from the module itself, by listing its +contents: dir(Blender.BGL). A simple search on the net can point to more +than enough material to teach OpenGL programming, from books to many +collections of tutorials. + +The "red book": "I{OpenGL Programming Guide: The Official Guide to Learning +OpenGL}" and the online NeHe tutorials are two of the best resources. + +Example:: + import Blender + from Blender.BGL import * + from Blender import Draw + R = G = B = 0 + A = 1 + title = "Testing BGL + Draw" + instructions = "Use mouse buttons or wheel to change the background color." + quitting = " Press ESC or q to quit." + len1 = Draw.GetStringWidth(title) + len2 = Draw.GetStringWidth(instructions + quitting) + # + def show_win(): + glClearColor(R,G,B,A) # define color used to clear buffers + glClear(GL_COLOR_BUFFER_BIT) # use it to clear the color buffer + glColor3f(0.35,0.18,0.92) # define default color + glBegin(GL_POLYGON) # begin a vertex data list + glVertex2i(165, 158) + glVertex2i(252, 55) + glVertex2i(104, 128) + glEnd() + glColor3f(0.4,0.4,0.4) # change default color + glRecti(40, 96, 60+len1, 113) + glColor3f(1,1,1) + glRasterPos2i(50,100) # move cursor to x = 50, y = 100 + Draw.Text(title) # draw this text there + glRasterPos2i(350,40) # move cursor again + Draw.Text(instructions + quitting) # draw another msg + glBegin(GL_LINE_LOOP) # begin a vertex-data list + glVertex2i(46,92) + glVertex2i(120,92) + glVertex2i(120,115) + glVertex2i(46,115) + glEnd() # close this list + # + def ev(evt, val): # event callback for Draw.Register() + global R,G,B,A # ... it handles input events + if evt == Draw.ESCKEY or evt == Draw.QKEY: + Draw.Exit() # this quits the script + elif not val: return + elif evt == Draw.LEFTMOUSE: R = 1 - R + elif evt == Draw.MIDDLEMOUSE: G = 1 - G + elif evt == Draw.RIGHTMOUSE: B = 1 - B + elif evt == Draw.WHEELUPMOUSE: + R += 0.1 + if R > 1: R = 1 + elif evt == Draw.WHEELDOWNMOUSE: + R -= 0.1 + if R < 0: R = 0 + else: + return # don't redraw if nothing changed + Draw.Redraw(1) # make changes visible. + # + Draw.Register(show_win, ev, None) # start the main loop + +@note: you can use the L{Image} module and L{Image.Image} BPy object to load + and set textures. See L{Image.Image.glLoad} and L{Image.Image.glFree}, + for example. +@see: U{www.opengl.org} +@see: U{nehe.gamedev.net} +""" + +def glAccum(op, value): + """ + Operate on the accumulation buffer + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/accum.html} + + @type op: Enumerated constant + @param op: The accumulation buffer operation. + @type value: float + @param value: a value used in the accumulation buffer operation. + """ + +def glAlphaFunc(func, ref): + """ + Specify the alpha test function + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/alphafunc.html} + + @type func: Enumerated constant + @param func: Specifies the alpha comparison function. + @type ref: float + @param ref: The reference value that incoming alpha values are compared to. + Clamped between 0 and 1. + """ + +def glAreTexturesResident(n, textures, residences): + """ + Determine if textures are loaded in texture memory + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/aretexturesresident.html} + + @type n: int + @param n: Specifies the number of textures to be queried. + @type textures: Buffer object I{type GL_INT} + @param textures: Specifies an array containing the names of the textures to be queried + @type residences: Buffer object I{type GL_INT}(boolean) + @param residences: An array in which the texture residence status in returned.The residence status of a + texture named by an element of textures is returned in the corresponding element of residences. + """ + +def glBegin(mode): + """ + Delimit the vertices of a primitive or a group of like primatives + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/begin.html} + + @type mode: Enumerated constant + @param mode: Specifies the primitive that will be create from vertices between glBegin and + glEnd. + """ + +def glBindTexture(target, texture): + """ + Bind a named texture to a texturing target + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/bindtexture.html} + + @type target: Enumerated constant + @param target: Specifies the target to which the texture is bound. + @type texture: unsigned int + @param texture: Specifies the name of a texture. + """ + +def glBitmap(width, height, xorig, yorig, xmove, ymove, bitmap): + """ + Draw a bitmap + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/bitmap.html} + + @type width, height: int + @param width, height: Specify the pixel width and height of the bitmap image. + @type xorig, yorig: float + @param xorig, yorig: Specify the location of the origin in the bitmap image. The origin is measured + from the lower left corner of the bitmap, with right and up being the positive axes. + @type xmove, ymove: float + @param xmove, ymove: Specify the x and y offsets to be added to the current raster position after + the bitmap is drawn. + @type bitmap: Buffer object I{type GL_BYTE} + @param bitmap: Specifies the address of the bitmap image. + """ + +def glBlendFunc(sfactor, dfactor): + """ + Specify pixel arithmetic + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/blendfunc.html} + + @type sfactor: Enumerated constant + @param sfactor: Specifies how the red, green, blue, and alpha source blending factors are + computed. + @type dfactor: Enumerated constant + @param dfactor: Specifies how the red, green, blue, and alpha destination blending factors are + computed. + """ + +def glCallList(list): + """ + Execute a display list + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/calllist.html} + + @type list: unsigned int + @param list: Specifies the integer name of the display list to be executed. + """ + +def glCallLists(n, type, lists): + """ + Execute a list of display lists + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/calllists.html} + + @type n: int + @param n: Specifies the number of display lists to be executed. + @type type: Enumerated constant + @param type: Specifies the type of values in lists. + @type lists: Buffer object + @param lists: Specifies the address of an array of name offsets in the display list. + The pointer type is void because the offsets can be bytes, shorts, ints, or floats, + depending on the value of type. + """ + +def glClear(mask): + """ + Clear buffers to preset values + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/clear.html} + + @type mask: Enumerated constant(s) + @param mask: Bitwise OR of masks that indicate the buffers to be cleared. + """ + +def glClearAccum(red, green, blue, alpha): + """ + Specify clear values for the accumulation buffer + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/clearaccum.html} + + @type red, green, blue, alpha: float + @param red, green, blue, alpha: Specify the red, green, blue, and alpha values used when the + accumulation buffer is cleared. The initial values are all 0. + """ + +def glClearColor(red, green, blue, alpha): + """ + Specify clear values for the color buffers + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/clearcolor.html} + + @type red, green, blue, alpha: float + @param red, green, blue, alpha: Specify the red, green, blue, and alpha values used when the + color buffers are cleared. The initial values are all 0. + """ + +def glClearDepth(depth): + """ + Specify the clear value for the depth buffer + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/cleardepth.html} + + @type depth: int + @param depth: Specifies the depth value used when the depth buffer is cleared. + The initial value is 1. + """ + +def glClearIndex(c): + """ + Specify the clear value for the color index buffers + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/clearindex.html} + + @type c: float + @param c: Specifies the index used when the color index buffers are cleared. + The initial value is 0. + """ + +def glClearStencil(s): + """ + Specify the clear value for the stencil buffer + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/clearstencil.html} + + @type s: int + @param s: Specifies the index used when the stencil buffer is cleared. The initial value is 0. + """ + +def glClipPlane (plane, equation): + """ + Specify a plane against which all geometry is clipped + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/clipplane.html} + + @type plane: Enumerated constant + @param plane: Specifies which clipping plane is being positioned. + @type equation: Buffer object I{type GL_FLOAT}(double) + @param equation: Specifies the address of an array of four double- precision floating-point + values. These values are interpreted as a plane equation. + """ + +def glColor (red, green, blue, alpha): + """ + B{glColor3b, glColor3d, glColor3f, glColor3i, glColor3s, glColor3ub, glColor3ui, glColor3us, + glColor4b, glColor4d, glColor4f, glColor4i, glColor4s, glColor4ub, glColor4ui, glColor4us, + glColor3bv, glColor3dv, glColor3fv, glColor3iv, glColor3sv, glColor3ubv, glColor3uiv, + glColor3usv, glColor4bv, glColor4dv, glColor4fv, glColor4iv, glColor4sv, glColor4ubv, + glColor4uiv, glColor4usv} + + Set a new color. + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/color.html} + + @type red, green, blue, alpha: Depends on function prototype. + @param red, green, blue: Specify new red, green, and blue values for the current color. + @param alpha: Specifies a new alpha value for the current color. Included only in the + four-argument glColor4 commands. (With '4' colors only) + """ + +def glColorMask(red, green, blue, alpha): + """ + Enable and disable writing of frame buffer color components + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/colormask.html} + + @type red, green, blue, alpha: int (boolean) + @param red, green, blue, alpha: Specify whether red, green, blue, and alpha can or cannot be + written into the frame buffer. The initial values are all GL_TRUE, indicating that the + color components can be written. + """ + +def glColorMaterial(face, mode): + """ + Cause a material color to track the current color + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/colormaterial.html} + + @type face: Enumerated constant + @param face: Specifies whether front, back, or both front and back material parameters should + track the current color. + @type mode: Enumerated constant + @param mode: Specifies which of several material parameters track the current color. + """ + +def glCopyPixels(x, y, width, height, type): + """ + Copy pixels in the frame buffer + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/copypixels.html} + + @type x, y: int + @param x, y: Specify the window coordinates of the lower left corner of the rectangular + region of pixels to be copied. + @type width, height: int + @param width,height: Specify the dimensions of the rectangular region of pixels to be copied. + Both must be non-negative. + @type type: Enumerated constant + @param type: Specifies whether color values, depth values, or stencil values are to be copied. + """ + +def glCullFace(mode): + """ + Specify whether front- or back-facing facets can be culled + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/cullface.html} + + @type mode: Enumerated constant + @param mode: Specifies whether front- or back-facing facets are candidates for culling. + """ + +def glDeleteLists(list, range): + """ + Delete a contiguous group of display lists + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/deletelists.html} + + @type list: unsigned int + @param list: Specifies the integer name of the first display list to delete + @type range: int + @param range: Specifies the number of display lists to delete + """ + +def glDeleteTextures(n, textures): + """ + Delete named textures + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/deletetextures.html} + + @type n: int + @param n: Specifies the number of textures to be deleted + @type textures: Buffer I{GL_INT} + @param textures: Specifies an array of textures to be deleted + """ + +def glDepthFunc(func): + """ + Specify the value used for depth buffer comparisons + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/depthfunc.html} + + @type func: Enumerated constant + @param func: Specifies the depth comparison function. + """ + +def glDepthMask(flag): + """ + Enable or disable writing into the depth buffer + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/depthmask.html} + + @type flag: int (boolean) + @param flag: Specifies whether the depth buffer is enabled for writing. If flag is GL_FALSE, + depth buffer writing is disabled. Otherwise, it is enabled. Initially, depth buffer + writing is enabled. + """ + +def glDepthRange(zNear, zFar): + """ + Specify mapping of depth values from normalized device coordinates to window coordinates + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/depthrange.html} + + @type zNear: int + @param zNear: Specifies the mapping of the near clipping plane to window coordinates. + The initial value is 0. + @type zFar: int + @param zFar: Specifies the mapping of the far clipping plane to window coordinates. + The initial value is 1. + """ + +def glDisable(cap): + """ + Disable server-side GL capabilities + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/enable.html} + + @type cap: Enumerated constant + @param cap: Specifies a symbolic constant indicating a GL capability. + """ + +def glDrawBuffer(mode): + """ + Specify which color buffers are to be drawn into + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/drawbuffer.html} + + @type mode: Enumerated constant + @param mode: Specifies up to four color buffers to be drawn into. + """ + +def glDrawPixels(width, height, format, type, pixels): + """ + Write a block of pixels to the frame buffer + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/drawpixels.html} + + @type width, height: int + @param width, height: Specify the dimensions of the pixel rectangle to be + written into the frame buffer. + @type format: Enumerated constant + @param format: Specifies the format of the pixel data. + @type type: Enumerated constant + @param type: Specifies the data type for pixels. + @type pixels: Buffer object + @param pixels: Specifies a pointer to the pixel data. + """ + +def glEdgeFlag (flag): + """ + B{glEdgeFlag, glEdgeFlagv} + + Flag edges as either boundary or non-boundary + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/edgeflag.html} + + @type flag: Depends of function prototype + @param flag: Specifies the current edge flag value.The initial value is GL_TRUE. + """ + +def glEnable(cap): + """ + Enable server-side GL capabilities + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/enable.html} + + @type cap: Enumerated constant + @param cap: Specifies a symbolic constant indicating a GL capability. + """ + +def glEnd(): + """ + Delimit the vertices of a primitive or group of like primitives + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/begin.html} + """ + +def glEndList(): + """ + Create or replace a display list + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/newlist.html} + """ + +def glEvalCoord (u,v): + """ + B{glEvalCoord1d, glEvalCoord1f, glEvalCoord2d, glEvalCoord2f, glEvalCoord1dv, glEvalCoord1fv, + glEvalCoord2dv, glEvalCoord2fv} + + Evaluate enabled one- and two-dimensional maps + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/evalcoord.html} + + @type u: Depends on function prototype. + @param u: Specifies a value that is the domain coordinate u to the basis function defined + in a previous glMap1 or glMap2 command. If the function prototype ends in 'v' then + u specifies a pointer to an array containing either one or two domain coordinates. The first + coordinate is u. The second coordinate is v, which is present only in glEvalCoord2 versions. + @type v: Depends on function prototype. (only with '2' prototypes) + @param v: Specifies a value that is the domain coordinate v to the basis function defined + in a previous glMap2 command. This argument is not present in a glEvalCoord1 command. + """ + +def glEvalMesh (mode, i1, i2): + """ + B{glEvalMesh1 or glEvalMesh2} + + Compute a one- or two-dimensional grid of points or lines + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/evalmesh.html} + + @type mode: Enumerated constant + @param mode: In glEvalMesh1, specifies whether to compute a one-dimensional + mesh of points or lines. + @type i1, i2: int + @param i1, i2: Specify the first and last integer values for the grid domain variable i. + """ + +def glEvalPoint (i, j): + """ + B{glEvalPoint1 and glEvalPoint2} + + Generate and evaluate a single point in a mesh + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/evalpoint.html} + + @type i: int + @param i: Specifies the integer value for grid domain variable i. + @type j: int (only with '2' prototypes) + @param j: Specifies the integer value for grid domain variable j (glEvalPoint2 only). + """ + +def glFeedbackBuffer (size, type, buffer): + """ + Controls feedback mode + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/feedbackbuffer.html} + + @type size: int + @param size:Specifies the maximum number of values that can be written into buffer. + @type type: Enumerated constant + @param type:Specifies a symbolic constant that describes the information that + will be returned for each vertex. + @type buffer: Buffer object I{GL_FLOAT} + @param buffer: Returns the feedback data. + """ + +def glFinish(): + """ + Block until all GL execution is complete + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/finish.html} + """ + +def glFlush(): + """ + Force Execution of GL commands in finite time + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/flush.html} + """ + +def glFog (pname, param): + """ + B{glFogf, glFogi, glFogfv, glFogiv} + + Specify fog parameters + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/fog.html} + + @type pname: Enumerated constant + @param pname: Specifies a single-valued fog parameter. If the function prototype + ends in 'v' specifies a fog parameter. + @type param: Depends on function prototype. + @param param: Specifies the value or values to be assigned to pname. GL_FOG_COLOR + requires an array of four values. All other parameters accept an array containing + only a single value. + """ + +def glFrontFace(mode): + """ + Define front- and back-facing polygons + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/frontface.html} + + @type mode: Enumerated constant + @param mode: Specifies the orientation of front-facing polygons. + """ + +def glFrustum(left, right, bottom, top, zNear, zFar): + """ + Multiply the current matrix by a perspective matrix + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/frustum.html} + + @type left, right: double (float) + @param left, right: Specify the coordinates for the left and right vertical + clipping planes. + @type top, bottom: double (float) + @param top, bottom: Specify the coordinates for the bottom and top horizontal + clipping planes. + @type zNear, zFar: double (float) + @param zNear, zFar: Specify the distances to the near and far depth clipping planes. + Both distances must be positive. + """ + +def glGenLists(range): + """ + Generate a contiguous set of empty display lists + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/genlists.html} + + @type range: int + @param range: Specifies the number of contiguous empty display lists to be generated. + """ + +def glGenTextures(n, textures): + """ + Generate texture names + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/gentextures.html} + + @type n: int + @param n: Specifies the number of textures name to be generated. + @type textures: Buffer object I{type GL_INT} + @param textures: Specifies an array in which the generated textures names are stored. + """ + +def glGet (pname, param): + """ + B{glGetBooleanv, glGetfloatv, glGetFloatv, glGetIntegerv} + + Return the value or values of a selected parameter + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/get.html} + + @type pname: Enumerated constant + @param pname: Specifies the parameter value to be returned. + @type param: Depends on function prototype. + @param param: Returns the value or values of the specified parameter. + """ + +def glGetClipPlane(plane, equation): + """ + Return the coefficients of the specified clipping plane + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getclipplane.html} + + @type plane: Enumerated constant + @param plane: Specifies a clipping plane. The number of clipping planes depends on the + implementation, but at least six clipping planes are supported. They are identified by + symbolic names of the form GL_CLIP_PLANEi where 0 < i < GL_MAX_CLIP_PLANES. + @type equation: Buffer object I{type GL_FLOAT} + @param equation: Returns four float (double)-precision values that are the coefficients of the + plane equation of plane in eye coordinates. The initial value is (0, 0, 0, 0). + """ + +def glGetError(): + """ + Return error information + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/geterror.html} + """ + +def glGetLight (light, pname, params): + """ + B{glGetLightfv and glGetLightiv} + + Return light source parameter values + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getlight.html} + + @type light: Enumerated constant + @param light: Specifies a light source. The number of possible lights depends on the + implementation, but at least eight lights are supported. They are identified by symbolic + names of the form GL_LIGHTi where 0 < i < GL_MAX_LIGHTS. + @type pname: Enumerated constant + @param pname: Specifies a light source parameter for light. + @type params: Buffer object. Depends on function prototype. + @param params: Returns the requested data. + """ + +def glGetMap (target, query, v): + """ + B{glGetMapdv, glGetMapfv, glGetMapiv} + + Return evaluator parameters + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getmap.html} + + @type target: Enumerated constant + @param target: Specifies the symbolic name of a map. + @type query: Enumerated constant + @param query: Specifies which parameter to return. + @type v: Buffer object. Depends on function prototype. + @param v: Returns the requested data. + """ + +def glGetMaterial (face, pname, params): + """ + B{glGetMaterialfv, glGetMaterialiv} + + Return material parameters + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getmaterial.html} + + @type face: Enumerated constant + @param face: Specifies which of the two materials is being queried. + representing the front and back materials, respectively. + @type pname: Enumerated constant + @param pname: Specifies the material parameter to return. + @type params: Buffer object. Depends on function prototype. + @param params: Returns the requested data. + """ + +def glGetPixelMap (map, values): + """ + B{glGetPixelMapfv, glGetPixelMapuiv, glGetPixelMapusv} + + Return the specified pixel map + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getpixelmap.html} + + @type map: Enumerated constant + @param map: Specifies the name of the pixel map to return. + @type values: Buffer object. Depends on function prototype. + @param values: Returns the pixel map contents. + """ + +def glGetPolygonStipple(mask): + """ + Return the polygon stipple pattern + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getpolygonstipple.html} + + @type mask: Buffer object I{type GL_BYTE} + @param mask: Returns the stipple pattern. The initial value is all 1's. + """ + +def glGetString(name): + """ + Return a string describing the current GL connection + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getstring.html} + + @type name: Enumerated constant + @param name: Specifies a symbolic constant. + + """ + +def glGetTexEnv (target, pname, params): + """ + B{glGetTexEnvfv, glGetTexEnviv} + + Return texture environment parameters + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/gettexenv.html} + + @type target: Enumerated constant + @param target: Specifies a texture environment. Must be GL_TEXTURE_ENV. + @type pname: Enumerated constant + @param pname: Specifies the symbolic name of a texture environment parameter. + @type params: Buffer object. Depends on function prototype. + @param params: Returns the requested data. + """ + +def glGetTexGen (coord, pname, params): + """ + B{glGetTexGendv, glGetTexGenfv, glGetTexGeniv} + + Return texture coordinate generation parameters + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/gettexgen.html} + + @type coord: Enumerated constant + @param coord: Specifies a texture coordinate. + @type pname: Enumerated constant + @param pname: Specifies the symbolic name of the value(s) to be returned. + @type params: Buffer object. Depends on function prototype. + @param params: Returns the requested data. + """ + +def glGetTexImage(target, level, format, type, pixels): + """ + Return a texture image + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getteximage.html} + + @type target: Enumerated constant + @param target: Specifies which texture is to be obtained. + @type level: int + @param level: Specifies the level-of-detail number of the desired image. + Level 0 is the base image level. Level n is the nth mipmap reduction image. + @type format: Enumerated constant + @param format: Specifies a pixel format for the returned data. + @type type: Enumerated constant + @param type: Specifies a pixel type for the returned data. + @type pixels: Buffer object. + @param pixels: Returns the texture image. Should be a pointer to an array of the + type specified by type + """ + +def glGetTexLevelParameter (target, level, pname, params): + """ + B{glGetTexLevelParameterfv, glGetTexLevelParameteriv} + + return texture parameter values for a specific level of detail + @see: U{opengl.org/developers/documentation/man_pages/hardcopy/GL/html/gl/gettexlevelparameter.html} + + @type target: Enumerated constant + @param target: Specifies the symbolic name of the target texture. + @type level: int + @param level: Specifies the level-of-detail number of the desired image. + Level 0 is the base image level. Level n is the nth mipmap reduction image. + @type pname: Enumerated constant + @param pname: Specifies the symbolic name of a texture parameter. + @type params: Buffer object. Depends on function prototype. + @param params: Returns the requested data. + """ + +def glGetTexParameter (target, pname, params): + """ + B{glGetTexParameterfv, glGetTexParameteriv} + + Return texture parameter values + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/gettexparameter.html} + + @type target: Enumerated constant + @param target: Specifies the symbolic name of the target texture. + @type pname: Enumerated constant + @param pname: Specifies the symbolic name the target texture. + @type params: Buffer object. Depends on function prototype. + @param params: Returns the texture parameters. + """ + +def glHint(target, mode): + """ + Specify implementation-specific hints + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/hint.html} + + @type target: Enumerated constant + @param target: Specifies a symbolic constant indicating the behavior to be + controlled. + @type mode: Enumerated constant + @param mode: Specifies a symbolic constant indicating the desired behavior. + """ + +def glIndex (c): + """ + B{glIndexd, glIndexf, glIndexi, glIndexs, glIndexdv, glIndexfv, glIndexiv, glIndexsv} + + Set the current color index + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/index_.html} + + @type c: Buffer object. Depends on function prototype. + @param c: Specifies a pointer to a one element array that contains the new value for + the current color index. + """ + +def glInitNames(): + """ + Initialize the name stack + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/initnames.html} + """ + +def glIsEnabled(cap): + """ + Test whether a capability is enabled + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/isenabled.html} + + @type cap: Enumerated constant + @param cap: Specifies a constant representing a GL capability. + """ + +def glIsList(list): + """ + Determine if a name corresponds to a display-list + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/islist.html} + + @type list: unsigned int + @param list: Specifies a potential display-list name. + """ + +def glIsTexture(texture): + """ + Determine if a name corresponds to a texture + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/istexture.html} + + @type texture: unsigned int + @param texture: Specifies a value that may be the name of a texture. + """ + +def glLight (light, pname, param): + """ + B{glLightf,glLighti, glLightfv, glLightiv} + + Set the light source parameters + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/light.html} + + @type light: Enumerated constant + @param light: Specifies a light. The number of lights depends on the implementation, + but at least eight lights are supported. They are identified by symbolic names of the + form GL_LIGHTi where 0 < i < GL_MAX_LIGHTS. + @type pname: Enumerated constant + @param pname: Specifies a single-valued light source parameter for light. + @type param: Depends on function prototype. + @param param: Specifies the value that parameter pname of light source light will be set to. + If function prototype ends in 'v' specifies a pointer to the value or values that + parameter pname of light source light will be set to. + """ + +def glLightModel (pname, param): + """ + B{glLightModelf, glLightModeli, glLightModelfv, glLightModeliv} + + Set the lighting model parameters + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/lightmodel.html} + + @type pname: Enumerated constant + @param pname: Specifies a single-value light model parameter. + @type param: Depends on function prototype. + @param param: Specifies the value that param will be set to. If function prototype ends in 'v' + specifies a pointer to the value or values that param will be set to. + """ + +def glLineStipple(factor, pattern): + """ + Specify the line stipple pattern + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/linestipple.html} + + @type factor: int + @param factor: Specifies a multiplier for each bit in the line stipple pattern. + If factor is 3, for example, each bit in the pattern is used three times before + the next bit in the pattern is used. factor is clamped to the range [1, 256] and + defaults to 1. + @type pattern: unsigned short int + @param pattern: Specifies a 16-bit integer whose bit pattern determines which fragments + of a line will be drawn when the line is rasterized. Bit zero is used first; the default + pattern is all 1's. + """ + +def glLineWidth(width): + """ + Specify the width of rasterized lines. + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/linewidth.html} + + @type width: float + @param width: Specifies the width of rasterized lines. The initial value is 1. + """ + +def glListBase(base): + """ + Set the display-list base for glCallLists + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/listbase.html} + + @type base: unsigned int + @param base: Specifies an integer offset that will be added to glCallLists + offsets to generate display-list names. The initial value is 0. + """ + +def glLoadIdentity(): + """ + Replace the current matrix with the identity matrix + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/loadidentity.html} + """ + +def glLoadMatrix (m): + """ + B{glLoadMatrixd, glLoadMatixf} + + Replace the current matrix with the specified matrix + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/loadmatrix.html} + + @type m: Buffer object. Depends on function prototype. + @param m: Specifies a pointer to 16 consecutive values, which are used as the elements + of a 4x4 column-major matrix. + """ + +def glLoadName(name): + """ + Load a name onto the name stack. + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/loadname.html} + + @type name: unsigned int + @param name: Specifies a name that will replace the top value on the name stack. + """ + +def glLogicOp(opcode): + """ + Specify a logical pixel operation for color index rendering + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/logicop.html} + + @type opcode: Enumerated constant + @param opcode: Specifies a symbolic constant that selects a logical operation. + """ + +def glMap1 (target, u1, u2, stride, order, points): + """ + B{glMap1d, glMap1f} + + Define a one-dimensional evaluator + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/map1.html} + + @type target: Enumerated constant + @param target: Specifies the kind of values that are generated by the evaluator. + @type u1, u2: Depends on function prototype. + @param u1,u2: Specify a linear mapping of u, as presented to glEvalCoord1, to ^, t + he variable that is evaluated by the equations specified by this command. + @type stride: int + @param stride: Specifies the number of floats or float (double)s between the beginning + of one control point and the beginning of the next one in the data structure + referenced in points. This allows control points to be embedded in arbitrary data + structures. The only constraint is that the values for a particular control point must + occupy contiguous memory locations. + @type order: int + @param order: Specifies the number of control points. Must be positive. + @type points: Buffer object. Depends on function prototype. + @param points: Specifies a pointer to the array of control points. + """ + +def glMap2 (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points): + """ + B{glMap2d, glMap2f} + + Define a two-dimensional evaluator + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/map2.html} + + @type target: Enumerated constant + @param target: Specifies the kind of values that are generated by the evaluator. + @type u1, u2: Depends on function prototype. + @param u1,u2: Specify a linear mapping of u, as presented to glEvalCoord2, to ^, t + he variable that is evaluated by the equations specified by this command. Initially + u1 is 0 and u2 is 1. + @type ustride: int + @param ustride: Specifies the number of floats or float (double)s between the beginning + of control point R and the beginning of control point R ij, where i and j are the u + and v control point indices, respectively. This allows control points to be embedded + in arbitrary data structures. The only constraint is that the values for a particular + control point must occupy contiguous memory locations. The initial value of ustride is 0. + @type uorder: int + @param uorder: Specifies the dimension of the control point array in the u axis. + Must be positive. The initial value is 1. + @type v1, v2: Depends on function prototype. + @param v1, v2: Specify a linear mapping of v, as presented to glEvalCoord2, to ^, + one of the two variables that are evaluated by the equations specified by this command. + Initially, v1 is 0 and v2 is 1. + @type vstride: int + @param vstride: Specifies the number of floats or float (double)s between the beginning of control + point R and the beginning of control point R ij, where i and j are the u and v control + point(indices, respectively. This allows control points to be embedded in arbitrary data + structures. The only constraint is that the values for a particular control point must + occupy contiguous memory locations. The initial value of vstride is 0. + @type vorder: int + @param vorder: Specifies the dimension of the control point array in the v axis. + Must be positive. The initial value is 1. + @type points: Buffer object. Depends on function prototype. + @param points: Specifies a pointer to the array of control points. + """ + +def glMapGrid (un, u1,u2 ,vn, v1, v2): + """ + B{glMapGrid1d, glMapGrid1f, glMapGrid2d, glMapGrid2f} + + Define a one- or two-dimensional mesh + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/mapgrid.html} + + @type un: int + @param un: Specifies the number of partitions in the grid range interval + [u1, u2]. Must be positive. + @type u1, u2: Depends on function prototype. + @param u1, u2: Specify the mappings for integer grid domain values i=0 and i=un. + @type vn: int + @param vn: Specifies the number of partitions in the grid range interval [v1, v2] + (glMapGrid2 only). + @type v1, v2: Depends on function prototype. + @param v1, v2: Specify the mappings for integer grid domain values j=0 and j=vn + (glMapGrid2 only). + """ + +def glMaterial (face, pname, params): + """ + Specify material parameters for the lighting model. + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/material.html} + + @type face: Enumerated constant + @param face: Specifies which face or faces are being updated. Must be one of: + @type pname: Enumerated constant + @param pname: Specifies the single-valued material parameter of the face + or faces that is being updated. Must be GL_SHININESS. + @type params: int + @param params: Specifies the value that parameter GL_SHININESS will be set to. + If function prototype ends in 'v' specifies a pointer to the value or values that + pname will be set to. + """ + +def glMatrixMode(mode): + """ + Specify which matrix is the current matrix. + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/matrixmode.html} + + @type mode: Enumerated constant + @param mode: Specifies which matrix stack is the target for subsequent matrix operations. + """ + +def glMultMatrix (m): + """ + B{glMultMatrixd, glMultMatrixf} + + Multiply the current matrix with the specified matrix + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/multmatrix.html} + + @type m: Buffer object. Depends on function prototype. + @param m: Points to 16 consecutive values that are used as the elements of a 4x4 column + major matrix. + """ + +def glNewList(list, mode): + """ + Create or replace a display list + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/newlist.html} + + @type list: unsigned int + @param list: Specifies the display list name + @type mode: Enumerated constant + @param mode: Specifies the compilation mode. + """ + +def glNormal3 (nx, ny, nz, v): + """ + B{Normal3b, Normal3bv, Normal3d, Normal3dv, Normal3f, Normal3fv, Normal3i, Normal3iv, + Normal3s, Normal3sv} + + Set the current normal vector + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/normal.html} + + @type nx, ny, nz: Depends on function prototype. (non - 'v' prototypes only) + @param nx, ny, nz: Specify the x, y, and z coordinates of the new current normal. + The initial value of the current normal is the unit vector, (0, 0, 1). + @type v: Buffer object. Depends on function prototype. ('v' prototypes) + @param v: Specifies a pointer to an array of three elements: the x, y, and z coordinates + of the new current normal. + """ + +def glOrtho(left, right, bottom, top, zNear, zFar): + """ + Multiply the current matrix with an orthographic matrix + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/ortho.html} + + @type left, right: double (float) + @param left, right: Specify the coordinates for the left and + right vertical clipping planes. + @type bottom, top: double (float) + @param bottom, top: Specify the coordinates for the bottom and top + horizontal clipping planes. + @type zNear, zFar: double (float) + @param zNear, zFar: Specify the distances to the nearer and farther + depth clipping planes. These values are negative if the plane is to be behind the viewer. + """ + +def glPassThrough(token): + """ + Place a marker in the feedback buffer + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/passthrough.html} + + @type token: float + @param token: Specifies a marker value to be placed in the feedback + buffer following a GL_PASS_THROUGH_TOKEN. + """ + +def glPixelMap (map, mapsize, values): + """ + B{glPixelMapfv, glPixelMapuiv, glPixelMapusv} + + Set up pixel transfer maps + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pixelmap.html} + + @type map: Enumerated constant + @param map: Specifies a symbolic map name. + @type mapsize: int + @param mapsize: Specifies the size of the map being defined. + @type values: Buffer object. Depends on function prototype. + @param values: Specifies an array of mapsize values. + """ + +def glPixelStore (pname, param): + """ + B{glPixelStoref, glPixelStorei} + + Set pixel storage modes + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pixelstore.html} + + @type pname: Enumerated constant + @param pname: Specifies the symbolic name of the parameter to be set. + Six values affect the packing of pixel data into memory. + Six more affect the unpacking of pixel data from memory. + @type param: Depends on function prototype. + @param param: Specifies the value that pname is set to. + """ + +def glPixelTransfer (pname, param): + """ + B{glPixelTransferf, glPixelTransferi} + + Set pixel transfer modes + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pixeltransfer.html} + + @type pname: Enumerated constant + @param pname: Specifies the symbolic name of the pixel transfer parameter to be set. + @type param: Depends on function prototype. + @param param: Specifies the value that pname is set to. + """ + +def glPixelZoom(xfactor, yfactor): + """ + Specify the pixel zoom factors + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pixelzoom.html} + + @type xfactor, yfactor: float + @param xfactor, yfactor: Specify the x and y zoom factors for pixel write operations. + """ + +def glPointSize(size): + """ + Specify the diameter of rasterized points + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pointsize.html} + + @type size: float + @param size: Specifies the diameter of rasterized points. The initial value is 1. + """ + +def glPolygonMode(face, mode): + """ + Select a polygon rasterization mode + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/polygonmode.html} + + @type face: Enumerated constant + @param face: Specifies the polygons that mode applies to. + Must be GL_FRONT for front-facing polygons, GL_BACK for back- facing polygons, + or GL_FRONT_AND_BACK for front- and back-facing polygons. + @type mode: Enumerated constant + @param mode: Specifies how polygons will be rasterized. + The initial value is GL_FILL for both front- and back- facing polygons. + """ + +def glPolygonOffset(factor, units): + """ + Set the scale and units used to calculate depth values + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/polygonoffset.html} + + @type factor: float + @param factor: Specifies a scale factor that is used to create a variable depth + offset for each polygon. The initial value is 0. + @type units: float + @param units: Is multiplied by an implementation-specific value to create a constant + depth offset. The initial value is 0. + """ + +def glPolygonStipple(mask): + """ + Set the polygon stippling pattern + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/polygonstipple.html} + + @type mask: Buffer object I{type GL_BYTE} + @param mask: Specifies a pointer to a 32x32 stipple pattern that will be unpacked + from memory in the same way that glDrawPixels unpacks pixels. + """ + +def glPopAttrib(): + """ + Pop the server attribute stack + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushattrib.html} + """ + +def glPopClientAttrib(): + """ + Pop the client attribute stack + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushclientattrib.html} + """ + +def glPopMatrix(): + """ + Pop the current matrix stack + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushmatrix.html} + """ + +def glPopName(): + """ + Pop the name stack + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushname.html} + """ + +def glPrioritizeTextures(n, textures, priorities): + """ + Set texture residence priority + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/prioritizetextures.html} + + @type n: int + @param n:Specifies the number of textures to be prioritized. + @type textures: Buffer I{type GL_INT} + @param textures: Specifies an array containing the names of the textures to be prioritized. + @type priorities: Buffer I{type GL_FLOAT} + @param priorities: Specifies an array containing the texture priorities. A priority given + in an element of priorities applies to the texture named by the corresponding element of textures. + """ + +def glPushAttrib(mask): + """ + Push the server attribute stack + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushattrib.html} + + @type mask: Enumerated constant(s) + @param mask: Specifies a mask that indicates which attributes to save. + """ + +def glPushClientAttrib(mask): + """ + Push the client attribute stack + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushclientattrib.html} + + @type mask: Enumerated constant(s) + @param mask: Specifies a mask that indicates which attributes to save. + """ + +def glPushMatrix(): + """ + Push the current matrix stack + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushmatrix.html} + """ + +def glPushName(name): + """ + Push the name stack + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushname.html} + + @type name: unsigned int + @param name: Specifies a name that will be pushed onto the name stack. + """ + +def glRasterPos (x,y,z,w): + """ + B{glRasterPos2d, glRasterPos2f, glRasterPos2i, glRasterPos2s, glRasterPos3d, + glRasterPos3f, glRasterPos3i, glRasterPos3s, glRasterPos4d, glRasterPos4f, + glRasterPos4i, glRasterPos4s, glRasterPos2dv, glRasterPos2fv, glRasterPos2iv, + glRasterPos2sv, glRasterPos3dv, glRasterPos3fv, glRasterPos3iv, glRasterPos3sv, + glRasterPos4dv, glRasterPos4fv, glRasterPos4iv, glRasterPos4sv} + + Specify the raster position for pixel operations + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/rasterpos.html} + + @type x, y, z, w: Depends on function prototype. (z and w for '3' and '4' prototypes only) + @param x, y, z, w: Specify the x,y,z, and w object coordinates (if present) for the + raster position. If function prototype ends in 'v' specifies a pointer to an array of two, + three, or four elements, specifying x, y, z, and w coordinates, respectively. + @note: + If you are drawing to the 3d view with a Scriptlink of a space handler + the zoom level of the panels will scale the glRasterPos by the view matrix. + so a X of 10 will not always offset 10 pixels as you would expect. + + To work around this get the scale value of the view matrix and use it to scale your pixel values. + + Workaround:: + + import Blender + from Blender.BGL import * + xval, yval= 100, 40 + # Get the scale of the view matrix + viewMatrix = Buffer(GL_FLOAT, 16) + glGetFloatv(GL_MODELVIEW_MATRIX, viewMatrix) + f = 1/viewMatrix[0] + glRasterPos2f(xval*f, yval*f) # Instead of the usual glRasterPos2i(xval, yval) + """ + +def glReadBuffer(mode): + """ + Select a color buffer source for pixels. + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/readbuffer.html} + + @type mode: Enumerated constant + @param mode: Specifies a color buffer. + """ + +def glReadPixels(x, y, width, height, format, type, pixels): + """ + Read a block of pixels from the frame buffer + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/readpixels.html} + + @type x, y: int + @param x, y:Specify the window coordinates of the first pixel that is read + from the frame buffer. This location is the lower left corner of a rectangular + block of pixels. + @type width, height: int + @param width, height: Specify the dimensions of the pixel rectangle. width and + height of one correspond to a single pixel. + @type format: Enumerated constant + @param format: Specifies the format of the pixel data. + @type type: Enumerated constant + @param type: Specifies the data type of the pixel data. + @type pixels: Buffer object + @param pixels: Returns the pixel data. + """ + +def glRect (x1,y1,x2,y2,v1,v2): + """ + B{glRectd, glRectf, glRecti, glRects, glRectdv, glRectfv, glRectiv, glRectsv} + + Draw a rectangle + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/rect.html} + + @type x1, y1: Depends on function prototype. (for non 'v' prototypes only) + @param x1, y1: Specify one vertex of a rectangle + @type x2, y2: Depends on function prototype. (for non 'v' prototypes only) + @param x2, y2: Specify the opposite vertex of the rectangle + @type v1, v2: Depends on function prototype. (for 'v' prototypes only) + @param v1, v2: Specifies a pointer to one vertex of a rectangle and the pointer + to the opposite vertex of the rectangle + """ + +def glRenderMode(mode): + """ + Set rasterization mode + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/rendermode.html} + + @type mode: Enumerated constant + @param mode: Specifies the rasterization mode. + """ + +def glRotate (angle, x, y, z): + """ + B{glRotated, glRotatef} + + Multiply the current matrix by a rotation matrix + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/rotate.html} + + @type angle: Depends on function prototype. + @param angle: Specifies the angle of rotation in degrees. + @type x, y, z: Depends on function prototype. + @param x, y, z: Specify the x, y, and z coordinates of a vector respectively. + """ + +def glScale (x,y,z): + """ + B{glScaled, glScalef} + + Multiply the current matrix by a general scaling matrix + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/scale.html} + + @type x, y, z: Depends on function prototype. + @param x, y, z: Specify scale factors along the x, y, and z axes, respectively. + """ + +def glScissor(x,y,width,height): + """ + Define the scissor box + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/scissor.html} + + @type x, y: int + @param x, y: Specify the lower left corner of the scissor box. Initially (0, 0). + @type width, height: int + @param width height: Specify the width and height of the scissor box. When a + GL context is first attached to a window, width and height are set to the + dimensions of that window. + """ + +def glSelectBuffer(size, buffer): + """ + Establish a buffer for selection mode values + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/selectbuffer.html} + + @type size: int + @param size: Specifies the size of buffer + @type buffer: Buffer I{type GL_INT} + @param buffer: Returns the selection data + """ + +def glShadeModel(mode): + """ + Select flat or smooth shading + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/shademodel.html} + + @type mode: Enumerated constant + @param mode: Specifies a symbolic value representing a shading technique. + """ + +def glStencilFuc(func, ref, mask): + """ + Set function and reference value for stencil testing + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/stencilfunc.html} + + @type func: Enumerated constant + @param func:Specifies the test function. + @type ref: int + @param ref:Specifies the reference value for the stencil test. ref is clamped to + the range [0,2n-1], where n is the number of bitplanes in the stencil buffer. + The initial value is 0. + @type mask: unsigned int + @param mask:Specifies a mask that is ANDed with both the reference value and + the stored stencil value when the test is done. The initial value is all 1's. + """ + +def glStencilMask(mask): + """ + Control the writing of individual bits in the stencil planes + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/stencilmask.html} + + @type mask: unsigned int + @param mask: Specifies a bit mask to enable and disable writing of individual bits + in the stencil planes. Initially, the mask is all 1's. + """ + +def glStencilOp(fail, zfail, zpass): + """ + Set stencil test actions + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/stencilop.html} + + @type fail: Enumerated constant + @param fail: Specifies the action to take when the stencil test fails. + The initial value is GL_KEEP. + @type zfail: Enumerated constant + @param zfail: Specifies the stencil action when the stencil test passes, but the + depth test fails. zfail accepts the same symbolic constants as fail. + The initial value is GL_KEEP. + @type zpass: Enumerated constant + @param zpass: Specifies the stencil action when both the stencil test and the + depth test pass, or when the stencil test passes and either there is no depth + buffer or depth testing is not enabled. zpass accepts the same symbolic constants + as fail. The initial value is GL_KEEP. + """ + +def glTexCoord (s,t,r,q,v): + """ + B{glTexCoord1d, glTexCoord1f, glTexCoord1i, glTexCoord1s, glTexCoord2d, glTexCoord2f, + glTexCoord2i, glTexCoord2s, glTexCoord3d, glTexCoord3f, glTexCoord3i, glTexCoord3s, + glTexCoord4d, glTexCoord4f, glTexCoord4i, glTexCoord4s, glTexCoord1dv, glTexCoord1fv, + glTexCoord1iv, glTexCoord1sv, glTexCoord2dv, glTexCoord2fv, glTexCoord2iv, + glTexCoord2sv, glTexCoord3dv, glTexCoord3fv, glTexCoord3iv, glTexCoord3sv, + glTexCoord4dv, glTexCoord4fv, glTexCoord4iv, glTexCoord4sv} + + Set the current texture coordinates + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/texcoord.html} + + @type s, t, r, q: Depends on function prototype. (r and q for '3' and '4' prototypes only) + @param s, t, r, q: Specify s, t, r, and q texture coordinates. Not all parameters are + present in all forms of the command. + @type v: Buffer object. Depends on function prototype. (for 'v' prototypes only) + @param v: Specifies a pointer to an array of one, two, three, or four elements, + which in turn specify the s, t, r, and q texture coordinates. + """ + +def glTexEnv (target, pname, param): + """ + B{glTextEnvf, glTextEnvi, glTextEnvfv, glTextEnviv} + + Set texture environment parameters + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/texenv.html} + + @type target: Enumerated constant + @param target: Specifies a texture environment. Must be GL_TEXTURE_ENV. + @type pname: Enumerated constant + @param pname: Specifies the symbolic name of a single-valued texture environment + parameter. Must be GL_TEXTURE_ENV_MODE. + @type param: Depends on function prototype. + @param param: Specifies a single symbolic constant. If function prototype ends in 'v' + specifies a pointer to a parameter array that contains either a single symbolic + constant or an RGBA color + """ + +def glTexGen (coord, pname, param): + """ + B{glTexGend, glTexGenf, glTexGeni, glTexGendv, glTexGenfv, glTexGeniv} + + Control the generation of texture coordinates + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/texgen.html} + + @type coord: Enumerated constant + @param coord: Specifies a texture coordinate. + @type pname: Enumerated constant + @param pname: Specifies the symbolic name of the texture- coordinate generation function. + @type param: Depends on function prototype. + @param param: Specifies a single-valued texture generation parameter. + If function prototype ends in 'v' specifies a pointer to an array of texture + generation parameters. If pname is GL_TEXTURE_GEN_MODE, then the array must + contain a single symbolic constant. Otherwise, params holds the coefficients + for the texture-coordinate generation function specified by pname. + """ + +def glTexImage1D(target, level, internalformat, width, border, format, type, pixels): + """ + Specify a one-dimensional texture image + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/teximage1d.html} + + @type target: Enumerated constant + @param target: Specifies the target texture. + @type level: int + @param level: Specifies the level-of-detail number. Level 0 is the base image level. + Level n is the nth mipmap reduction image. + @type internalformat: int + @param internalformat: Specifies the number of color components in the texture. + @type width: int + @param width: Specifies the width of the texture image. Must be 2n+2(border) for + some integer n. All implementations support texture images that are at least 64 + texels wide. The height of the 1D texture image is 1. + @type border: int + @param border: Specifies the width of the border. Must be either 0 or 1. + @type format: Enumerated constant + @param format: Specifies the format of the pixel data. + @type type: Enumerated constant + @param type: Specifies the data type of the pixel data. + @type pixels: Buffer object. + @param pixels: Specifies a pointer to the image data in memory. + """ + +def glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels): + """ + Specify a two-dimensional texture image + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/teximage2d.html} + + @type target: Enumerated constant + @param target: Specifies the target texture. + @type level: int + @param level: Specifies the level-of-detail number. Level 0 is the base image level. + Level n is the nth mipmap reduction image. + @type internalformat: int + @param internalformat: Specifies the number of color components in the texture. + @type width: int + @param width: Specifies the width of the texture image. Must be 2n+2(border) for + some integer n. All implementations support texture images that are at least 64 + texels wide. + @type height: int + @param height: Specifies the height of the texture image. Must be 2m+2(border) for + some integer m. All implementations support texture images that are at least 64 + texels high. + @type border: int + @param border: Specifies the width of the border. Must be either 0 or 1. + @type format: Enumerated constant + @param format: Specifies the format of the pixel data. + @type type: Enumerated constant + @param type: Specifies the data type of the pixel data. + @type pixels: Buffer object. + @param pixels: Specifies a pointer to the image data in memory. + """ + +def glTexParameter (target, pname, param): + """ + B{glTexParameterf, glTexParameteri, glTexParameterfv, glTexParameteriv} + + Set texture parameters + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/texparameter.html} + + @type target: Enumerated constant + @param target: Specifies the target texture. + @type pname: Enumerated constant + @param pname: Specifies the symbolic name of a single-valued texture parameter. + @type param: Depends on function prototype. + @param param: Specifies the value of pname. If function prototype ends in 'v' specifies + a pointer to an array where the value or values of pname are stored. + """ + +def glTranslate (x, y, z): + """ + B{glTranslatef, glTranslated} + + Multiply the current matrix by a translation matrix + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/translate.html} + + @type x, y, z: Depends on function prototype. + @param x, y, z: Specify the x, y, and z coordinates of a translation vector. + """ + +def glVertex (x,y,z,w,v): + """ + B{glVertex2d, glVertex2f, glVertex2i, glVertex2s, glVertex3d, glVertex3f, glVertex3i, + glVertex3s, glVertex4d, glVertex4f, glVertex4i, glVertex4s, glVertex2dv, glVertex2fv, + glVertex2iv, glVertex2sv, glVertex3dv, glVertex3fv, glVertex3iv, glVertex3sv, glVertex4dv, + glVertex4fv, glVertex4iv, glVertex4sv} + + Specify a vertex + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/vertex.html} + + @type x, y, z, w: Depends on function prototype (z and w for '3' and '4' prototypes only) + @param x, y, z, w: Specify x, y, z, and w coordinates of a vertex. Not all parameters + are present in all forms of the command. + @type v: Buffer object. Depends of function prototype (for 'v' prototypes only) + @param v: Specifies a pointer to an array of two, three, or four elements. The + elements of a two-element array are x and y; of a three-element array, x, y, and z; + and of a four-element array, x, y, z, and w. + """ + +def glViewport(x,y,width,height): + """ + Set the viewport + @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/viewport.html} + + @type x, y: int + @param x, y: Specify the lower left corner of the viewport rectangle, + in pixels. The initial value is (0,0). + @type width, height: int + @param width, height: Specify the width and height of the viewport. When a GL context + is first attached to a window, width and height are set to the dimensions of that window. + """ + +def gluPerspective(fovY, aspect, zNear, zFar): + """ + Set up a perspective projection matrix. + @see: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5577288} + + @type fovY: double + @param fovY: Specifies the field of view angle, in degrees, in the y direction. + @type aspect: double + @param aspect: Specifies the aspect ratio that determines the field of view in the x direction. + The aspect ratio is the ratio of x (width) to y (height). + @type zNear: double + @param zNear: Specifies the distance from the viewer to the near clipping plane (always positive). + @type zFar: double + @param zFar: Specifies the distance from the viewer to the far clipping plane (always positive). + """ + +def gluLookAt(eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz): + """ + Define a viewing transformation + @see: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5573042} + + @type eyex, eyey, eyez: double + @param eyex, eyey, eyez: Specifies the position of the eye point. + @type centerx, centery, centerz: double + @param centerx, centery, centerz: Specifies the position of the reference point. + @type upx, upy, upz: double + @param upx, upy, upz: Specifies the direction of the up vector. + """ + +def gluOrtho2D(left, right, bottom, top): + """ + Define a 2-D orthographic projection matrix + @see: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5578074} + + @type left, right: double + @param left, right: Specify the coordinates for the left and right vertical clipping planes. + @type bottom, top: double + @param bottom, top: Specify the coordinates for the bottom and top horizontal clipping planes. + """ + +def gluPickMatrix(x, y, width, height, viewport): + """ + Define a picking region + @see: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5578074} + + @type x, y: double + @param x, y: Specify the center of a picking region in window coordinates. + @type width, height: double + @param width, height: Specify the width and height, respectively, of the picking region in window coordinates. + @type viewport: Buffer object. [int] + @param viewport: Specifies the current viewport. + """ + +def gluProject(objx, objy, objz, modelMatrix, projMatrix, viewport, winx, winy, winz): + """ + Map object coordinates to window coordinates. + @see: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5578074} + + @type objx, objy, objz: double + @param objx, objy, objz: Specify the object coordinates. + @type modelMatrix: Buffer object. [double] + @param modelMatrix: Specifies the current modelview matrix (as from a glGetDoublev call). + @type projMatrix: Buffer object. [double] + @param projMatrix: Specifies the current projection matrix (as from a glGetDoublev call). + @type viewport: Buffer object. [int] + @param viewport: Specifies the current viewport (as from a glGetIntegerv call). + @type winx, winy, winz: Buffer object. [double] + @param winx, winy, winz: Return the computed window coordinates. + """ + +def gluUnProject(winx, winy, winz, modelMatrix, projMatrix, viewport, objx, objy, objz): + """ + Map object coordinates to window + coordinates. + @see: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5582204} + + @type winx, winy, winz: double + @param winx, winy, winz: Specify the window coordinates to be mapped. + @type modelMatrix: Buffer object. [double] + @param modelMatrix: Specifies the current modelview matrix (as from a glGetDoublev call). + @type projMatrix: Buffer object. [double] + @param projMatrix: Specifies the current projection matrix (as from a glGetDoublev call). + @type viewport: Buffer object. [int] + @param viewport: Specifies the current viewport (as from a glGetIntegerv call). + @type objx, objy, objz: Buffer object. [double] + @param objx, objy, objz: Return the computed object coordinates. + """ + +class Buffer: + """ + The Buffer object is simply a block of memory that is delineated and initialized by the + user. Many OpenGL functions return data to a C-style pointer, however, because this + is not possible in python the Buffer object can be used to this end. Wherever pointer + notation is used in the OpenGL functions the Buffer object can be used in it's BGL + wrapper. In some instances the Buffer object will need to be initialized with the template + parameter, while in other instances the user will want to create just a blank buffer + which will be zeroed by default. + + Example with Buffer:: + import Blender + from Blender import BGL + myByteBuffer = BGL.Buffer(BGL.GL_BYTE, [32,32]) + BGL.glGetPolygonStipple(myByteBuffer) + print myByteBuffer.dimensions + print myByteBuffer.list + sliceBuffer = myByteBuffer[0:16] + print sliceBuffer + + @ivar list: The contents of the Buffer. + @ivar dimensions: The size of the Buffer. + """ + + def __init__(type, dimensions, template = None): + """ + This will create a new Buffer object for use with other BGL OpenGL commands. + Only the type of argument to store in the buffer and the dimensions of the buffer + are necessary. Buffers are zeroed by default unless a template is supplied, in + which case the buffer is initialized to the template. + + @type type: int + @param type: The format to store data in. The type should be one of + GL_BYTE, GL_SHORT, GL_INT, or GL_FLOAT. + @type dimensions: An int or sequence object specifying the dimensions of the buffer. + @param dimensions: If the dimensions are specified as an int a linear array will + be created for the buffer. If a sequence is passed for the dimensions, the buffer + becomes n-Dimensional, where n is equal to the number of parameters passed in the + sequence. Example: [256,2] is a two- dimensional buffer while [256,256,4] creates + a three- dimensional buffer. You can think of each additional dimension as a sub-item + of the dimension to the left. i.e. [10,2] is a 10 element array each with 2 sub-items. + [(0,0), (0,1), (1,0), (1,1), (2,0), ...] etc. + @type template: A python sequence object (optional) + @param template: A sequence of matching dimensions which will be used to initialize + the Buffer. If a template is not passed in all fields will be initialized to 0. + @rtype: Buffer object + @return: The newly created buffer as a PyObject. + """ diff --git a/source/blender/python/doc/epy/Geometry.py b/source/blender/python/doc/epy/Geometry.py new file mode 100644 index 00000000000..237cd8c3443 --- /dev/null +++ b/source/blender/python/doc/epy/Geometry.py @@ -0,0 +1,189 @@ +# Blender.Geometry module and its subtypes + +""" +The Blender.Geometry submodule. + +Geometry +======== +(when accessing it from the Game Engine use Geometry instead of Blender.Geometry) + +This new module provides access to a geometry function. +""" + +def Intersect(vec1, vec2, vec3, ray, orig, clip=1): + """ + Return the intersection between a ray and a triangle, if possible, return None otherwise. + @type vec1: Vector object. + @param vec1: A 3d vector, one corner of the triangle. + @type vec2: Vector object. + @param vec2: A 3d vector, one corner of the triangle. + @type vec3: Vector object. + @param vec3: A 3d vector, one corner of the triangle. + @type ray: Vector object. + @param ray: A 3d vector, the orientation of the ray. the length of the ray is not used, only the direction. + @type orig: Vector object. + @param orig: A 3d vector, the origin of the ray. + @type clip: integer + @param clip: if 0, don't restrict the intersection to the area of the triangle, use the infinite plane defined by the triangle. + @rtype: Vector object + @return: The intersection between a ray and a triangle, if possible, None otherwise. + """ + +def TriangleArea(vec1, vec2, vec3): + """ + Return the area size of the 2D or 3D triangle defined. + @type vec1: Vector object. + @param vec1: A 2d or 3d vector, one corner of the triangle. + @type vec2: Vector object. + @param vec2: A 2d or 3d vector, one corner of the triangle. + @type vec3: Vector object. + @param vec3: A 2d or 3d vector, one corner of the triangle. + @rtype: float + @return: The area size of the 2D or 3D triangle defined. + """ + +def TriangleNormal(vec1, vec2, vec3): + """ + Return the normal of the 3D triangle defined. + @type vec1: Vector object. + @param vec1: A 3d vector, one corner of the triangle. + @type vec2: Vector object. + @param vec2: A 3d vector, one corner of the triangle. + @type vec3: Vector object. + @param vec3: A 3d vector, one corner of the triangle. + @rtype: float + @return: The normal of the 3D triangle defined. + """ + +def QuadNormal(vec1, vec2, vec3, vec4): + """ + Return the normal of the 3D quad defined. + @type vec1: Vector object. + @param vec1: A 3d vector, the first vertex of the quad. + @type vec2: Vector object. + @param vec2: A 3d vector, the second vertex of the quad. + @type vec3: Vector object. + @param vec3: A 3d vector, the third vertex of the quad. + @type vec4: Vector object. + @param vec4: A 3d vector, the fourth vertex of the quad. + @rtype: float + @return: The normal of the 3D quad defined. + """ + +def LineIntersect(vec1, vec2, vec3, vec4): + """ + Return a tuple with the points on each line respectively closest to the other + (when both lines intersect, both vector hold the same value). + The lines are evaluated as infinite lines in space, the values returned may not be between the 2 points given for each line. + @type vec1: Vector object. + @param vec1: A 3d vector, one point on the first line. + @type vec2: Vector object. + @param vec2: A 3d vector, another point on the first line. + @type vec3: Vector object. + @param vec3: A 3d vector, one point on the second line. + @type vec4: Vector object. + @param vec4: A 3d vector, another point on the second line. + @rtype: (Vector object, Vector object) + @return: A tuple with the points on each line respectively closest to the other. + """ + +def PolyFill(polylines): + """ + Takes a list of polylines and calculates triangles that would fill in the polylines. + Multiple lines can be used to make holes inside a polyline, or fill in 2 seperate lines at once. + @type polylines: List of lists containing vectors, each representing a closed polyline. + @rtype: list + @return: a list if tuples each a tuple of 3 ints representing a triangle indexing the points given. + @note: 2D Vectors will have an assumed Z axis of zero, 4D Vectors W axis is ignored. + @note: The order of points in a polyline effect the direction returned triangles face, reverse the order of a polyline to flip the normal of returned faces. + + I{B{Example:}} + + The example below creates 2 polylines and fills them in with faces, then makes a mesh in the current scene:: + import Blender + Vector= Blender.Mathutils.Vector + + # Outline of 5 points + polyline1= [Vector(-2.0, 1.0, 1.0), Vector(-1.0, 2.0, 1.0), Vector(1.0, 2.0, 1.0), Vector(1.0, -1.0, 1.0), Vector(-1.0, -1.0, 1.0)] + polyline2= [Vector(-1, 1, 1.0), Vector(0, 1, 1.0), Vector(0, 0, 1.0), Vector(-1.0, 0.0, 1.0)] + fill= Blender.Geometry.PolyFill([polyline1, polyline2]) + + # Make a new mesh and add the truangles into it + me= Blender.Mesh.New() + me.verts.extend(polyline1) + me.verts.extend(polyline2) + me.faces.extend(fill) # Add the faces, they reference the verts in polyline 1 and 2 + + scn = Blender.Scene.GetCurrent() + ob = scn.objects.new(me) + Blender.Redraw() + """ + +def LineIntersect2D(vec1, vec2, vec3, vec4): + """ + Takes 2 lines vec1, vec2 for the 2 points of the first line and vec2, vec3 for the 2 points of the second line. + @rtype: Vector + @return: a 2D Vector for the intersection or None where there is no intersection. + """ + +def ClosestPointOnLine(pt, vec1, vec2): + """ + Takes 2 lines vec1, vec2 for the 2 points of the first line and vec2, vec3 for the 2 points of the second line. + @rtype: tuple + @return: a tuple containing a vector and a float, the vector is the closest point on the line, the float is the position on the line, between 0 and 1 the point is on the line. + """ + +def PointInTriangle2D(pt, tri_pt1, tri_pt2, tri_pt3): + """ + Takes 4 vectors (one for the test point and 3 for the triangle) + This is a 2d function so only X and Y are used, Z and W will be ignored. + @rtype: int + @return: 1 for a clockwise intersection, -1 for counter clockwise intersection, 0 when there is no intersection. + """ + +def PointInQuad2D(pt, quad_pt1, quad_pt2, quad_pt3): + """ + Takes 5 vectors (one for the test point and 5 for the quad) + This is a 2d function so only X and Y are used, Z and W will be ignored. + @rtype: int + @return: 1 for a clockwise intersection, -1 for counter clockwise intersection, 0 when there is no intersection. + """ + +def BoxPack2D(boxlist): + """ + Takes a list of 2D boxes and packs them into a square. + Each box in boxlist must be a list of at least 4 items - [x,y,w,h], after running this script, + the X and Y values in each box will be moved to packed, non overlapping locations. + + Example:: + + # Make 500 random boxes, pack them and make a mesh from it + from Blender import Geometry, Scene, Mesh + import random + boxes = [] + for i in xrange(500): + boxes.append( [0,0, random.random()+0.1, random.random()+0.1] ) + boxsize = Geometry.BoxPack2D(boxes) + print 'BoxSize', boxsize + me = Mesh.New() + for x in boxes: + me.verts.extend([(x[0],x[1], 0), (x[0],x[1]+x[3], 0), (x[0]+x[2],x[1]+x[3], 0), (x[0]+x[2],x[1], 0) ]) + v1= me.verts[-1] + v2= me.verts[-2] + v3= me.verts[-3] + v4= me.verts[-4] + me.faces.extend([(v1,v2,v3,v4)]) + scn = Scene.GetCurrent() + scn.objects.new(me) + + @note: Each boxlist item can be longer then 4, the extra items are ignored and stay untouched. + @rtype: tuple + @return: a tuple pair - (width, height) of all the packed boxes. + """ +def BezierInterp(vec_knot_1, vec_handle_1, vec_handle_2, vec_knot_2, resolution): + """ + Takes 4 vectors representing a bezier curve and returns a list of vector points. + @note: any vector size is supported, the largest dimension from the input will be used for all returned vectors/ + @rtype: list + @return: a list of vectors the size of resolution including the start and end points (vec_knot_1 and vec_knot_2) + """
\ No newline at end of file diff --git a/source/blender/python/doc/epy/IDProp.py b/source/blender/python/doc/epy/IDProp.py new file mode 100644 index 00000000000..01d5136cd70 --- /dev/null +++ b/source/blender/python/doc/epy/IDProp.py @@ -0,0 +1,132 @@ +class IDGroup: + """ + The IDGroup Type + ================ + This type supports both iteration and the [] + operator to get child ID properties. + + You can also add new properties using the [] operator. + For example:: + + group['a float!'] = 0.0 + group['an int!'] = 0 + group['a string!'] = "hi!" + group['an array!'] = [0, 0, 1.0, 0] + + group['a subgroup!] = {"float": 0.0, "an int": 1.0, "an array": [1, 2], + "another subgroup": {"a": 0.0, "str": "bleh"}} + + Note that for arrays, the array type defaults to int unless a float is found + while scanning the template list; if any floats are found, then the whole + array is float. Note that double-precision floating point numbers are used for + python-created float ID properties and arrays (though the internal C api does + support single-precision floats, and the python code will read them). + + You can also delete properties with the del operator. For example: + + del group['property'] + + To get the type of a property, use the type() operator, for example:: + + if type(group['bleh']) == str: pass + + To tell if the property is a group or array type, import the Blender.Types module and test + against IDGroupType and IDArrayType, like so:: + + from Blender.Types import IDGroupType, IDArrayType. + + if type(group['bleghr']) == IDGroupType: + (do something) + + @ivar name: The name of the property + @type name: string + """ + + def pop(item): + """ + Pop an item from the group property. + @type item: string + @param item: The item name. + @rtype: can be dict, list, int, float or string. + @return: The removed property. + """ + + def update(updatedict): + """ + Updates items in the dict, similar to normal python + dictionary method .update(). + @type updatedict: dict + @param updatedict: A dict of simple types to derive updated/new IDProperties from. + @rtype: None + @return: None + """ + + def keys(): + """ + Returns a list of the keys in this property group. + @rtype: list of strings. + @return: a list of the keys in this property group. + """ + + def values(): + """ + Returns a list of the values in this property group. + + Note that unless a value is itself a property group or an array, you + cannot change it by changing the values in this list, you must change them + in the parent property group. + + For example, + + group['some_property'] = new_value + + . . .is correct, while, + + values = group.values() + values[0] = new_value + + . . .is wrong. + + @rtype: list of strings. + @return: a list of the values in this property group. + """ + + def iteritems(): + """ + Implements the python dictionary iteritmes method. + + For example:: + + for k, v in group.iteritems(): + print "Property name: " + k + print "Property value: " + str(v) + + @rtype: an iterator that spits out items of the form [key, value] + @return: an iterator. + """ + + def convert_to_pyobject(): + """ + Converts the entire property group to a purely python form. + + @rtype: dict + @return: A python dictionary representing the property group + """ + +class IDArray: + """ + The IDArray Type + ================ + + @ivar type: returns the type of the array, can be either IDP_Int or IDP_Float + """ + + def __getitem__(index): + pass + + def __setitem__(index, value): + pass + + def __len__(): + pass +
\ No newline at end of file diff --git a/source/blender/python/doc/epy/Mathutils.py b/source/blender/python/doc/epy/Mathutils.py new file mode 100644 index 00000000000..eff3ab87dd3 --- /dev/null +++ b/source/blender/python/doc/epy/Mathutils.py @@ -0,0 +1,243 @@ +# Blender.Mathutils module and its subtypes + +""" +The Blender.Mathutils submodule. + +Mathutils +========= +(when accessing it from the Game Engine use Mathutils instead of Blender.Mathutils) + +This module provides access to matrices, eulers, quaternions and vectors. + +Example:: + import Blender + from Blender import Mathutils + from Blender.Mathutils import * + + vec = Vector([1,2,3]) + mat = RotationMatrix(90, 4, 'x') + matT = TranslationMatrix(vec) + + matTotal = mat * matT + matTotal.invert() + + mat3 = matTotal.rotationPart + quat1 = mat.to_quat() + quat2 = mat3.to_quat() + + angle = DifferenceQuats(quat1, quat2) + print angle +""" + +class Vector: + """ + The Vector object + ================= + @note: Comparison operators can be done on Vector classes: + - >, >=, <, <= test the vector magnitude + - ==, != test vector values e.g. 1,2,3 != 1,2,4 even if they are the same length + @note: Math can be performed on Vector classes + - vec + vec + - vec - vec + - vec * float/int + - vec * matrix + - vec * vec + - vec * quat + - -vec + @note: You can access a vector object like a sequence + - x = vector[0] + - vec_a[:] vec_b + - vec2d[:] vec3d[:2] + @note: Vectors support 'swizzle' operations + - vec.xyz = vec.zyx + - vec.xy = vec.zw + - vec.xxy = vec.wzz + - vec.yzyz = vec.yxyx + + See U{http://en.wikipedia.org/wiki/Swizzling_(computer_graphics)} + + @attention: Vector data can be wrapped or non-wrapped. When a object is wrapped it + means that the object will give you direct access to the data inside of blender. Modification + of this object will directly change the data inside of blender. To copy a wrapped object + you need to use the object's constructor. If you copy and object by assignment you will not get + a second copy but a second reference to the same data. Only certain functions will return + wrapped data. This will be indicated in the method description. + Example:: + wrappedObject = Object.getAttribute() #this is wrapped data + print wrappedObject.wrapped #prints 'True' + copyOfObject = wrappedObject.copy() #creates a copy of the object + secondPointer = wrappedObject #creates a second pointer to the same data + print wrappedObject.attribute #prints '5' + secondPointer.attribute = 10 + print wrappedObject.attribute #prints '10' + print copyOfObject.attribute #prints '5' + """ + + def __init__(list = None): + """ + Create a new 2d, 3d, or 4d Vector object from a list of floating point numbers. + @note: that python uses higher precission floating point numbers, so values assigned to a vector may have some rounding error. + + + Example:: + v = Vector(1,0,0) + v = Vector(myVec) + v = Vector(list) + @type list: PyList of float or int + @param list: The list of values for the Vector object. Can be a sequence or raw numbers. + Must be 2, 3, or 4 values. The list is mapped to the parameters as [x,y,z,w]. + @rtype: Vector object. + @return: It depends wheter a parameter was passed: + - (list): Vector object initialized with the given values; + - (): An empty 3 dimensional vector. + """ + +class Euler: + """ + The Euler object + ================ + This object gives access to Eulers in Blender. + @note: You can access a euler object like a sequence + - x = euler[0] + @note: Comparison operators can be done: + - ==, != test numeric values within epsilon + @attention: Euler data can be wrapped or non-wrapped. When a object is wrapped it + means that the object will give you direct access to the data inside of blender. Modification + of this object will directly change the data inside of blender. To copy a wrapped object + you need to use the object's constructor. If you copy and object by assignment you will not get + a second copy but a second reference to the same data. Only certain functions will return + wrapped data. This will be indicated in the method description. + Example:: + wrappedObject = Object.getAttribute() #this is wrapped data + print wrappedObject.wrapped #prints 'True' + copyOfObject = wrappedObject.copy() #creates a copy of the object + secondPointer = wrappedObject #creates a second pointer to the same data + print wrappedObject.attribute #prints '5' + secondPointer.attribute = 10 + print wrappedObject.attribute #prints '10' + print copyOfObject.attribute #prints '5' + """ + + def __init__(list = None): + """ + Create a new euler object. + + Example:: + euler = Euler(45,0,0) + euler = Euler(myEuler) + euler = Euler(sequence) + @type list: PyList of float/int + @param list: 3d list to initialize euler + @rtype: Euler object + @return: Euler representing heading, pitch, bank. + @note: Values are in degrees. + """ + +class Quaternion: + """ + The Quaternion object + ===================== + This object gives access to Quaternions in Blender. + @note: Comparison operators can be done: + - ==, != test numeric values within epsilon + @note: Math can be performed on Quaternion classes + - quat + quat + - quat - quat + - quat * float/int + - quat * vec + - quat * quat + @note: You can access a quaternion object like a sequence + - x = quat[0] + @attention: Quaternion data can be wrapped or non-wrapped. When a object is wrapped it + means that the object will give you direct access to the data inside of blender. Modification + of this object will directly change the data inside of blender. To copy a wrapped object + you need to use the object's constructor. If you copy and object by assignment you will not get + a second copy but a second reference to the same data. Only certain functions will return + wrapped data. This will be indicated in the method description. + Example:: + wrappedObject = Object.getAttribute() #this is wrapped data + print wrappedObject.wrapped #prints 'True' + copyOfObject = wrappedObject.copy() #creates a copy of the object + secondPointer = wrappedObject #creates a second pointer to the same data + print wrappedObject.attribute #prints '5' + secondPointer.attribute = 10 + print wrappedObject.attribute #prints '10' + print copyOfObject.attribute #prints '5' + """ + + def __init__(list, angle = None): + """ + Create a new quaternion object from initialized values. + + Example:: + quat = Quaternion(1,2,3,4) + quat = Quaternion(axis, angle) + quat = Quaternion() + quat = Quaternion(180, list) + + @type list: PyList of int/float + @param list: A 3d or 4d list to initialize quaternion. + 4d if intializing [w,x,y,z], 3d if used as an axis of rotation. + @type angle: float (optional) + @param angle: An arbitrary rotation amount around 'list'. + List is used as an axis of rotation in this case. + @rtype: New quaternion object. + @return: It depends wheter a parameter was passed: + - (list/angle): Quaternion object initialized with the given values; + - (): An identity 4 dimensional quaternion. + """ + +class Matrix: + """ + The Matrix Object + ================= + @note: Math can be performed on Matrix classes + - mat + mat + - mat - mat + - mat * float/int + - mat * vec + - mat * mat + @note: Comparison operators can be done: + - ==, != test numeric values within epsilon + @note: You can access a quaternion object like a 2d sequence + - x = matrix[0][1] + - vector = matrix[2] + @attention: Quaternion data can be wrapped or non-wrapped. When a object is wrapped it + means that the object will give you direct access to the data inside of blender. Modification + of this object will directly change the data inside of blender. To copy a wrapped object + you need to use the object's constructor. If you copy and object by assignment you will not get + a second copy but a second reference to the same data. Only certain functions will return + wrapped data. This will be indicated in the method description. + Example:: + wrappedObject = Object.getAttribute() #this is wrapped data + print wrappedObject.wrapped #prints 'True' + copyOfObject = wrappedObject.copy() #creates a copy of the object + secondPointer = wrappedObject #creates a second pointer to the same data + print wrappedObject.attribute #prints '5' + secondPointer.attribute = 10 + print wrappedObject.attribute #prints '10' + print copyOfObject.attribute #prints '5' + """ + + def __init__(list1 = None, list2 = None, list3 = None, list4 = None): + """ + Create a new matrix object from initialized values. + + Example:: + matrix = Matrix([1,1,1],[0,1,0],[1,0,0]) + matrix = Matrix(mat) + matrix = Matrix(seq1, seq2, vector) + + @type list1: PyList of int/float + @param list1: A 2d,3d or 4d list. + @type list2: PyList of int/float + @param list2: A 2d,3d or 4d list. + @type list3: PyList of int/float + @param list3: A 2d,3d or 4d list. + @type list4: PyList of int/float + @param list4: A 2d,3d or 4d list. + @rtype: New matrix object. + @return: It depends wheter a parameter was passed: + - (list1, etc.): Matrix object initialized with the given values; + - (): An empty 3 dimensional matrix. + """ diff --git a/source/blender/python/doc/epy/testbgl.py b/source/blender/python/doc/epy/testbgl.py new file mode 100644 index 00000000000..e895d01df69 --- /dev/null +++ b/source/blender/python/doc/epy/testbgl.py @@ -0,0 +1,45 @@ +# Testing the BGL module + +import Blender +from Blender.BGL import * +from Blender import Draw + +R = G = B = 0 +A = 1 + +instructions = "Hold mouse buttons to change the background color." +quitting = " Press ESC or q to quit." + +def show_win(): + glClearColor(R,G,B,A) # define color used to clear buffers + glClear(GL_COLOR_BUFFER_BIT) # use it to clear the color buffer + glColor3f(1,1,1) # change default color + glRasterPos2i(50,100) # move cursor to x = 50, y = 100 + Draw.Text("Testing BGL + Draw") # draw this text there + glRasterPos2i(350,20) # move cursor again + Draw.Text(instructions + quitting) # draw another msg + glBegin(GL_LINE_LOOP) # begin a vertex-data list + glVertex2i(46,92) + glVertex2i(120,92) + glVertex2i(120,115) + glVertex2i(46,115) + glEnd() # close this list + glColor3f(0.35,0.18,0.92) # change default color again + glBegin(GL_POLYGON) # another list, for a polygon + glVertex2i(315, 292) + glVertex2i(412, 200) + glVertex2i(264, 256) + glEnd() + Draw.Redraw(1) # make changes visible. + +def ev(evt, val): # this is a callback for Draw.Register() + global R,G,B,A # it handles input events + if evt == Draw.ESCKEY or evt == Draw.QKEY: + Draw.Exit() # this quits the script + elif evt == Draw.LEFTMOUSE: R = 1 - R + elif evt == Draw.MIDDLEMOUSE: G = 1 - G + elif evt == Draw.RIGHTMOUSE: B = 1 - B + else: + Draw.Register(show_win, ev, None) + +Draw.Register(show_win, ev, None) # start the main loop diff --git a/source/blender/python/generic/Geometry.c b/source/blender/python/generic/Geometry.c index 579c9d987cf..0dfddeee348 100644 --- a/source/blender/python/generic/Geometry.c +++ b/source/blender/python/generic/Geometry.c @@ -47,19 +47,14 @@ #define SWAP_FLOAT(a,b,tmp) tmp=a; a=b; b=tmp #define eps 0.000001 -/*-- forward declarations -- */ -static PyObject *M_Geometry_PolyFill( PyObject * self, PyObject * polyLineSeq ); -static PyObject *M_Geometry_LineIntersect2D( PyObject * self, PyObject * args ); -static PyObject *M_Geometry_ClosestPointOnLine( PyObject * self, PyObject * args ); -static PyObject *M_Geometry_PointInTriangle2D( PyObject * self, PyObject * args ); -static PyObject *M_Geometry_PointInQuad2D( PyObject * self, PyObject * args ); -static PyObject *M_Geometry_BoxPack2D( PyObject * self, PyObject * args ); -static PyObject *M_Geometry_BezierInterp( PyObject * self, PyObject * args ); -static PyObject *M_Geometry_BarycentricTransform( PyObject * self, PyObject * args ); - /*-------------------------DOC STRINGS ---------------------------*/ static char M_Geometry_doc[] = "The Blender Geometry module\n\n"; +static char M_Geometry_Intersect_doc[] = "(v1, v2, v3, ray, orig, clip=1) - returns the intersection between a ray and a triangle, if possible, returns None otherwise"; +static char M_Geometry_TriangleArea_doc[] = "(v1, v2, v3) - returns the area size of the 2D or 3D triangle defined"; +static char M_Geometry_TriangleNormal_doc[] = "(v1, v2, v3) - returns the normal of the 3D triangle defined"; +static char M_Geometry_QuadNormal_doc[] = "(v1, v2, v3, v4) - returns the normal of the 3D quad defined"; +static char M_Geometry_LineIntersect_doc[] = "(v1, v2, v3, v4) - returns a tuple with the points on each line respectively closest to the other"; static char M_Geometry_PolyFill_doc[] = "(veclist_list) - takes a list of polylines (each point a vector) and returns the point indicies for a polyline filled with triangles"; static char M_Geometry_LineIntersect2D_doc[] = "(lineA_p1, lineA_p2, lineB_p1, lineB_p2) - takes 2 lines (as 4 vectors) and returns a vector for their point of intersection or None"; static char M_Geometry_ClosestPointOnLine_doc[] = "(pt, line_p1, line_p2) - takes a point and a line and returns a (Vector, float) for the point on the line, and the bool so you can know if the point was between the 2 points"; @@ -67,40 +62,280 @@ static char M_Geometry_PointInTriangle2D_doc[] = "(pt, tri_p1, tri_p2, tri_p3) - static char M_Geometry_PointInQuad2D_doc[] = "(pt, quad_p1, quad_p2, quad_p3, quad_p4) - takes 5 vectors, one is the point and the next 4 define the quad, only the x and y are used from the vectors"; static char M_Geometry_BoxPack2D_doc[] = ""; static char M_Geometry_BezierInterp_doc[] = ""; -/*-----------------------METHOD DEFINITIONS ----------------------*/ -struct PyMethodDef M_Geometry_methods[] = { - {"PolyFill", ( PyCFunction ) M_Geometry_PolyFill, METH_O, M_Geometry_PolyFill_doc}, - {"LineIntersect2D", ( PyCFunction ) M_Geometry_LineIntersect2D, METH_VARARGS, M_Geometry_LineIntersect2D_doc}, - {"ClosestPointOnLine", ( PyCFunction ) M_Geometry_ClosestPointOnLine, METH_VARARGS, M_Geometry_ClosestPointOnLine_doc}, - {"PointInTriangle2D", ( PyCFunction ) M_Geometry_PointInTriangle2D, METH_VARARGS, M_Geometry_PointInTriangle2D_doc}, - {"PointInQuad2D", ( PyCFunction ) M_Geometry_PointInQuad2D, METH_VARARGS, M_Geometry_PointInQuad2D_doc}, - {"BoxPack2D", ( PyCFunction ) M_Geometry_BoxPack2D, METH_O, M_Geometry_BoxPack2D_doc}, - {"BezierInterp", ( PyCFunction ) M_Geometry_BezierInterp, METH_VARARGS, M_Geometry_BezierInterp_doc}, - {"BarycentricTransform", ( PyCFunction ) M_Geometry_BarycentricTransform, METH_VARARGS, NULL}, - {NULL, NULL, 0, NULL} -}; -static struct PyModuleDef M_Geometry_module_def = { - PyModuleDef_HEAD_INIT, - "Geometry", /* m_name */ - M_Geometry_doc, /* m_doc */ - 0, /* m_size */ - M_Geometry_methods, /* m_methods */ - 0, /* m_reload */ - 0, /* m_traverse */ - 0, /* m_clear */ - 0, /* m_free */ -}; +//---------------------------------INTERSECTION FUNCTIONS-------------------- +//----------------------------------Mathutils.Intersect() ------------------- +static PyObject *M_Geometry_Intersect( PyObject * self, PyObject * args ) +{ + VectorObject *ray, *ray_off, *vec1, *vec2, *vec3; + float dir[3], orig[3], v1[3], v2[3], v3[3], e1[3], e2[3], pvec[3], tvec[3], qvec[3]; + float det, inv_det, u, v, t; + int clip = 1; -/*----------------------------MODULE INIT-------------------------*/ -PyObject *Geometry_Init(void) + if(!PyArg_ParseTuple(args, "O!O!O!O!O!|i", &vector_Type, &vec1, &vector_Type, &vec2, &vector_Type, &vec3, &vector_Type, &ray, &vector_Type, &ray_off , &clip)) { + PyErr_SetString( PyExc_TypeError, "expected 5 vector types\n" ); + return NULL; + } + if(vec1->size != 3 || vec2->size != 3 || vec3->size != 3 || ray->size != 3 || ray_off->size != 3) { + PyErr_SetString( PyExc_TypeError, "only 3D vectors for all parameters\n"); + return NULL; + } + + if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2) || !BaseMath_ReadCallback(vec3) || !BaseMath_ReadCallback(ray) || !BaseMath_ReadCallback(ray_off)) + return NULL; + + VECCOPY(v1, vec1->vec); + VECCOPY(v2, vec2->vec); + VECCOPY(v3, vec3->vec); + + VECCOPY(dir, ray->vec); + normalize_v3(dir); + + VECCOPY(orig, ray_off->vec); + + /* find vectors for two edges sharing v1 */ + sub_v3_v3v3(e1, v2, v1); + sub_v3_v3v3(e2, v3, v1); + + /* begin calculating determinant - also used to calculated U parameter */ + cross_v3_v3v3(pvec, dir, e2); + + /* if determinant is near zero, ray lies in plane of triangle */ + det = dot_v3v3(e1, pvec); + + if (det > -0.000001 && det < 0.000001) { + Py_RETURN_NONE; + } + + inv_det = 1.0f / det; + + /* calculate distance from v1 to ray origin */ + sub_v3_v3v3(tvec, orig, v1); + + /* calculate U parameter and test bounds */ + u = dot_v3v3(tvec, pvec) * inv_det; + if (clip && (u < 0.0f || u > 1.0f)) { + Py_RETURN_NONE; + } + + /* prepare to test the V parameter */ + cross_v3_v3v3(qvec, tvec, e1); + + /* calculate V parameter and test bounds */ + v = dot_v3v3(dir, qvec) * inv_det; + + if (clip && (v < 0.0f || u + v > 1.0f)) { + Py_RETURN_NONE; + } + + /* calculate t, ray intersects triangle */ + t = dot_v3v3(e2, qvec) * inv_det; + + mul_v3_fl(dir, t); + add_v3_v3v3(pvec, orig, dir); + + return newVectorObject(pvec, 3, Py_NEW, NULL); +} +//----------------------------------Mathutils.LineIntersect() ------------------- +/* Line-Line intersection using algorithm from mathworld.wolfram.com */ +static PyObject *M_Geometry_LineIntersect( PyObject * self, PyObject * args ) { - PyObject *submodule; - - submodule = PyModule_Create(&M_Geometry_module_def); - PyDict_SetItemString(PySys_GetObject("modules"), M_Geometry_module_def.m_name, submodule); - - return (submodule); + PyObject * tuple; + VectorObject *vec1, *vec2, *vec3, *vec4; + float v1[3], v2[3], v3[3], v4[3], i1[3], i2[3]; + + if( !PyArg_ParseTuple( args, "O!O!O!O!", &vector_Type, &vec1, &vector_Type, &vec2, &vector_Type, &vec3, &vector_Type, &vec4 ) ) { + PyErr_SetString( PyExc_TypeError, "expected 4 vector types\n" ); + return NULL; + } + if( vec1->size != vec2->size || vec1->size != vec3->size || vec3->size != vec2->size) { + PyErr_SetString( PyExc_TypeError,"vectors must be of the same size\n" ); + return NULL; + } + + if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2) || !BaseMath_ReadCallback(vec3) || !BaseMath_ReadCallback(vec4)) + return NULL; + + if( vec1->size == 3 || vec1->size == 2) { + int result; + + if (vec1->size == 3) { + VECCOPY(v1, vec1->vec); + VECCOPY(v2, vec2->vec); + VECCOPY(v3, vec3->vec); + VECCOPY(v4, vec4->vec); + } + else { + v1[0] = vec1->vec[0]; + v1[1] = vec1->vec[1]; + v1[2] = 0.0f; + + v2[0] = vec2->vec[0]; + v2[1] = vec2->vec[1]; + v2[2] = 0.0f; + + v3[0] = vec3->vec[0]; + v3[1] = vec3->vec[1]; + v3[2] = 0.0f; + + v4[0] = vec4->vec[0]; + v4[1] = vec4->vec[1]; + v4[2] = 0.0f; + } + + result = isect_line_line_v3(v1, v2, v3, v4, i1, i2); + + if (result == 0) { + /* colinear */ + Py_RETURN_NONE; + } + else { + tuple = PyTuple_New( 2 ); + PyTuple_SetItem( tuple, 0, newVectorObject(i1, vec1->size, Py_NEW, NULL) ); + PyTuple_SetItem( tuple, 1, newVectorObject(i2, vec1->size, Py_NEW, NULL) ); + return tuple; + } + } + else { + PyErr_SetString( PyExc_TypeError, "2D/3D vectors only\n" ); + return NULL; + } +} + + + +//---------------------------------NORMALS FUNCTIONS-------------------- +//----------------------------------Mathutils.QuadNormal() ------------------- +static PyObject *M_Geometry_QuadNormal( PyObject * self, PyObject * args ) +{ + VectorObject *vec1; + VectorObject *vec2; + VectorObject *vec3; + VectorObject *vec4; + float v1[3], v2[3], v3[3], v4[3], e1[3], e2[3], n1[3], n2[3]; + + if( !PyArg_ParseTuple( args, "O!O!O!O!", &vector_Type, &vec1, &vector_Type, &vec2, &vector_Type, &vec3, &vector_Type, &vec4 ) ) { + PyErr_SetString( PyExc_TypeError, "expected 4 vector types\n" ); + return NULL; + } + if( vec1->size != vec2->size || vec1->size != vec3->size || vec1->size != vec4->size) { + PyErr_SetString( PyExc_TypeError,"vectors must be of the same size\n" ); + return NULL; + } + if( vec1->size != 3 ) { + PyErr_SetString( PyExc_TypeError, "only 3D vectors\n" ); + return NULL; + } + + if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2) || !BaseMath_ReadCallback(vec3) || !BaseMath_ReadCallback(vec4)) + return NULL; + + VECCOPY(v1, vec1->vec); + VECCOPY(v2, vec2->vec); + VECCOPY(v3, vec3->vec); + VECCOPY(v4, vec4->vec); + + /* find vectors for two edges sharing v2 */ + sub_v3_v3v3(e1, v1, v2); + sub_v3_v3v3(e2, v3, v2); + + cross_v3_v3v3(n1, e2, e1); + normalize_v3(n1); + + /* find vectors for two edges sharing v4 */ + sub_v3_v3v3(e1, v3, v4); + sub_v3_v3v3(e2, v1, v4); + + cross_v3_v3v3(n2, e2, e1); + normalize_v3(n2); + + /* adding and averaging the normals of both triangles */ + add_v3_v3v3(n1, n2, n1); + normalize_v3(n1); + + return newVectorObject(n1, 3, Py_NEW, NULL); +} + +//----------------------------Mathutils.TriangleNormal() ------------------- +static PyObject *M_Geometry_TriangleNormal( PyObject * self, PyObject * args ) +{ + VectorObject *vec1, *vec2, *vec3; + float v1[3], v2[3], v3[3], e1[3], e2[3], n[3]; + + if( !PyArg_ParseTuple( args, "O!O!O!", &vector_Type, &vec1, &vector_Type, &vec2, &vector_Type, &vec3 ) ) { + PyErr_SetString( PyExc_TypeError, "expected 3 vector types\n" ); + return NULL; + } + if( vec1->size != vec2->size || vec1->size != vec3->size ) { + PyErr_SetString( PyExc_TypeError, "vectors must be of the same size\n" ); + return NULL; + } + if( vec1->size != 3 ) { + PyErr_SetString( PyExc_TypeError, "only 3D vectors\n" ); + return NULL; + } + + if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2) || !BaseMath_ReadCallback(vec3)) + return NULL; + + VECCOPY(v1, vec1->vec); + VECCOPY(v2, vec2->vec); + VECCOPY(v3, vec3->vec); + + /* find vectors for two edges sharing v2 */ + sub_v3_v3v3(e1, v1, v2); + sub_v3_v3v3(e2, v3, v2); + + cross_v3_v3v3(n, e2, e1); + normalize_v3(n); + + return newVectorObject(n, 3, Py_NEW, NULL); +} + +//--------------------------------- AREA FUNCTIONS-------------------- +//----------------------------------Mathutils.TriangleArea() ------------------- +static PyObject *M_Geometry_TriangleArea( PyObject * self, PyObject * args ) +{ + VectorObject *vec1, *vec2, *vec3; + float v1[3], v2[3], v3[3]; + + if( !PyArg_ParseTuple + ( args, "O!O!O!", &vector_Type, &vec1, &vector_Type, &vec2 + , &vector_Type, &vec3 ) ) { + PyErr_SetString( PyExc_TypeError, "expected 3 vector types\n"); + return NULL; + } + if( vec1->size != vec2->size || vec1->size != vec3->size ) { + PyErr_SetString( PyExc_TypeError, "vectors must be of the same size\n" ); + return NULL; + } + + if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2) || !BaseMath_ReadCallback(vec3)) + return NULL; + + if (vec1->size == 3) { + VECCOPY(v1, vec1->vec); + VECCOPY(v2, vec2->vec); + VECCOPY(v3, vec3->vec); + + return PyFloat_FromDouble( area_tri_v3(v1, v2, v3) ); + } + else if (vec1->size == 2) { + v1[0] = vec1->vec[0]; + v1[1] = vec1->vec[1]; + + v2[0] = vec2->vec[0]; + v2[1] = vec2->vec[1]; + + v3[0] = vec3->vec[0]; + v3[1] = vec3->vec[1]; + + return PyFloat_FromDouble( area_tri_v2(v1, v2, v3) ); + } + else { + PyErr_SetString( PyExc_TypeError, "only 2D,3D vectors are supported\n" ); + return NULL; + } } /*----------------------------------Geometry.PolyFill() -------------------*/ @@ -569,3 +804,43 @@ static PyObject *M_Geometry_BarycentricTransform(PyObject * self, PyObject * arg return newVectorObject(vec, 3, Py_NEW, NULL); } + +struct PyMethodDef M_Geometry_methods[] = { + {"Intersect", ( PyCFunction ) M_Geometry_Intersect, METH_VARARGS, M_Geometry_Intersect_doc}, + {"TriangleArea", ( PyCFunction ) M_Geometry_TriangleArea, METH_VARARGS, M_Geometry_TriangleArea_doc}, + {"TriangleNormal", ( PyCFunction ) M_Geometry_TriangleNormal, METH_VARARGS, M_Geometry_TriangleNormal_doc}, + {"QuadNormal", ( PyCFunction ) M_Geometry_QuadNormal, METH_VARARGS, M_Geometry_QuadNormal_doc}, + {"LineIntersect", ( PyCFunction ) M_Geometry_LineIntersect, METH_VARARGS, M_Geometry_LineIntersect_doc}, + {"PolyFill", ( PyCFunction ) M_Geometry_PolyFill, METH_O, M_Geometry_PolyFill_doc}, + {"LineIntersect2D", ( PyCFunction ) M_Geometry_LineIntersect2D, METH_VARARGS, M_Geometry_LineIntersect2D_doc}, + {"ClosestPointOnLine", ( PyCFunction ) M_Geometry_ClosestPointOnLine, METH_VARARGS, M_Geometry_ClosestPointOnLine_doc}, + {"PointInTriangle2D", ( PyCFunction ) M_Geometry_PointInTriangle2D, METH_VARARGS, M_Geometry_PointInTriangle2D_doc}, + {"PointInQuad2D", ( PyCFunction ) M_Geometry_PointInQuad2D, METH_VARARGS, M_Geometry_PointInQuad2D_doc}, + {"BoxPack2D", ( PyCFunction ) M_Geometry_BoxPack2D, METH_O, M_Geometry_BoxPack2D_doc}, + {"BezierInterp", ( PyCFunction ) M_Geometry_BezierInterp, METH_VARARGS, M_Geometry_BezierInterp_doc}, + {"BarycentricTransform", ( PyCFunction ) M_Geometry_BarycentricTransform, METH_VARARGS, NULL}, + {NULL, NULL, 0, NULL} +}; + +static struct PyModuleDef M_Geometry_module_def = { + PyModuleDef_HEAD_INIT, + "Geometry", /* m_name */ + M_Geometry_doc, /* m_doc */ + 0, /* m_size */ + M_Geometry_methods, /* m_methods */ + 0, /* m_reload */ + 0, /* m_traverse */ + 0, /* m_clear */ + 0, /* m_free */ +}; + +/*----------------------------MODULE INIT-------------------------*/ +PyObject *Geometry_Init(void) +{ + PyObject *submodule; + + submodule = PyModule_Create(&M_Geometry_module_def); + PyDict_SetItemString(PySys_GetObject("modules"), M_Geometry_module_def.m_name, submodule); + + return (submodule); +} diff --git a/source/blender/python/generic/Mathutils.c b/source/blender/python/generic/Mathutils.c index b44d6450145..fa2c60813ed 100644 --- a/source/blender/python/generic/Mathutils.c +++ b/source/blender/python/generic/Mathutils.c @@ -27,114 +27,34 @@ * ***** END GPL LICENSE BLOCK ***** */ +/* Note: Changes to Mathutils since 2.4x + * use radians rather then degrees + * - Mathutils.MidpointVecs --> vector.lerp(other, fac) + * - Mathutils.AngleBetweenVecs --> vector.angle(other) + * - Mathutils.ProjectVecs --> vector.project(other) + * - Mathutils.DifferenceQuats --> quat.difference(other) + * - Mathutils.Slerp --> quat.slerp(other, fac) + * - Mathutils.Rand: removed, use pythons random module + * - Mathutils.RotationMatrix(angle, size, axis_flag, axis) --> Mathutils.RotationMatrix(angle, size, axis); merge axis & axis_flag args + * - Matrix.scalePart --> Matrix.scale_part + * - Matrix.translationPart --> Matrix.translation_part + * - Matrix.rotationPart --> Matrix.rotation_part + * - toMatrix --> to_matrix + * - toEuler --> to_euler + * - toQuat --> to_quat + * - Vector.toTrackQuat --> Vector.to_track_quat + * + * Moved to Geometry module: Intersect, TriangleArea, TriangleNormal, QuadNormal, LineIntersect + */ + #include "Mathutils.h" #include "BLI_math.h" #include "PIL_time.h" -#include "BLI_rand.h" #include "BKE_utildefines.h" //-------------------------DOC STRINGS --------------------------- -static char M_Mathutils_doc[] = "The Blender Mathutils module\n\n"; -static char M_Mathutils_Rand_doc[] = "() - return a random number"; -static char M_Mathutils_AngleBetweenVecs_doc[] = "() - returns the angle between two vectors in degrees"; -static char M_Mathutils_MidpointVecs_doc[] = "() - return the vector to the midpoint between two vectors"; -static char M_Mathutils_ProjectVecs_doc[] = "() - returns the projection vector from the projection of vecA onto vecB"; -static char M_Mathutils_RotationMatrix_doc[] = "() - construct a rotation matrix from an angle and axis of rotation"; -static char M_Mathutils_ScaleMatrix_doc[] = "() - construct a scaling matrix from a scaling factor"; -static char M_Mathutils_OrthoProjectionMatrix_doc[] = "() - construct a orthographic projection matrix from a selected plane"; -static char M_Mathutils_ShearMatrix_doc[] = "() - construct a shearing matrix from a plane of shear and a shear factor"; -static char M_Mathutils_TranslationMatrix_doc[] = "(vec) - create a translation matrix from a vector"; -static char M_Mathutils_Slerp_doc[] = "() - returns the interpolation between two quaternions"; -static char M_Mathutils_DifferenceQuats_doc[] = "() - return the angular displacment difference between two quats"; -static char M_Mathutils_Intersect_doc[] = "(v1, v2, v3, ray, orig, clip=1) - returns the intersection between a ray and a triangle, if possible, returns None otherwise"; -static char M_Mathutils_TriangleArea_doc[] = "(v1, v2, v3) - returns the area size of the 2D or 3D triangle defined"; -static char M_Mathutils_TriangleNormal_doc[] = "(v1, v2, v3) - returns the normal of the 3D triangle defined"; -static char M_Mathutils_QuadNormal_doc[] = "(v1, v2, v3, v4) - returns the normal of the 3D quad defined"; -static char M_Mathutils_LineIntersect_doc[] = "(v1, v2, v3, v4) - returns a tuple with the points on each line respectively closest to the other"; -//-----------------------METHOD DEFINITIONS ---------------------- - -static PyObject *M_Mathutils_Rand(PyObject * self, PyObject * args); -static PyObject *M_Mathutils_AngleBetweenVecs(PyObject * self, PyObject * args); -static PyObject *M_Mathutils_MidpointVecs(PyObject * self, PyObject * args); -static PyObject *M_Mathutils_ProjectVecs(PyObject * self, PyObject * args); -static PyObject *M_Mathutils_RotationMatrix(PyObject * self, PyObject * args); -static PyObject *M_Mathutils_TranslationMatrix(PyObject * self, VectorObject * value); -static PyObject *M_Mathutils_ScaleMatrix(PyObject * self, PyObject * args); -static PyObject *M_Mathutils_OrthoProjectionMatrix(PyObject * self, PyObject * args); -static PyObject *M_Mathutils_ShearMatrix(PyObject * self, PyObject * args); -static PyObject *M_Mathutils_DifferenceQuats(PyObject * self, PyObject * args); -static PyObject *M_Mathutils_Slerp(PyObject * self, PyObject * args); -static PyObject *M_Mathutils_Intersect( PyObject * self, PyObject * args ); -static PyObject *M_Mathutils_TriangleArea( PyObject * self, PyObject * args ); -static PyObject *M_Mathutils_TriangleNormal( PyObject * self, PyObject * args ); -static PyObject *M_Mathutils_QuadNormal( PyObject * self, PyObject * args ); -static PyObject *M_Mathutils_LineIntersect( PyObject * self, PyObject * args ); - -struct PyMethodDef M_Mathutils_methods[] = { - {"Rand", (PyCFunction) M_Mathutils_Rand, METH_VARARGS, M_Mathutils_Rand_doc}, - {"AngleBetweenVecs", (PyCFunction) M_Mathutils_AngleBetweenVecs, METH_VARARGS, M_Mathutils_AngleBetweenVecs_doc}, - {"MidpointVecs", (PyCFunction) M_Mathutils_MidpointVecs, METH_VARARGS, M_Mathutils_MidpointVecs_doc}, - {"ProjectVecs", (PyCFunction) M_Mathutils_ProjectVecs, METH_VARARGS, M_Mathutils_ProjectVecs_doc}, - {"RotationMatrix", (PyCFunction) M_Mathutils_RotationMatrix, METH_VARARGS, M_Mathutils_RotationMatrix_doc}, - {"ScaleMatrix", (PyCFunction) M_Mathutils_ScaleMatrix, METH_VARARGS, M_Mathutils_ScaleMatrix_doc}, - {"ShearMatrix", (PyCFunction) M_Mathutils_ShearMatrix, METH_VARARGS, M_Mathutils_ShearMatrix_doc}, - {"TranslationMatrix", (PyCFunction) M_Mathutils_TranslationMatrix, METH_O, M_Mathutils_TranslationMatrix_doc}, - {"OrthoProjectionMatrix", (PyCFunction) M_Mathutils_OrthoProjectionMatrix, METH_VARARGS, M_Mathutils_OrthoProjectionMatrix_doc}, - {"DifferenceQuats", (PyCFunction) M_Mathutils_DifferenceQuats, METH_VARARGS,M_Mathutils_DifferenceQuats_doc}, - {"Slerp", (PyCFunction) M_Mathutils_Slerp, METH_VARARGS, M_Mathutils_Slerp_doc}, - {"Intersect", ( PyCFunction ) M_Mathutils_Intersect, METH_VARARGS, M_Mathutils_Intersect_doc}, - {"TriangleArea", ( PyCFunction ) M_Mathutils_TriangleArea, METH_VARARGS, M_Mathutils_TriangleArea_doc}, - {"TriangleNormal", ( PyCFunction ) M_Mathutils_TriangleNormal, METH_VARARGS, M_Mathutils_TriangleNormal_doc}, - {"QuadNormal", ( PyCFunction ) M_Mathutils_QuadNormal, METH_VARARGS, M_Mathutils_QuadNormal_doc}, - {"LineIntersect", ( PyCFunction ) M_Mathutils_LineIntersect, METH_VARARGS, M_Mathutils_LineIntersect_doc}, - {NULL, NULL, 0, NULL} -}; - -/*----------------------------MODULE INIT-------------------------*/ -/* from can be Blender.Mathutils or GameLogic.Mathutils for the BGE */ - -static struct PyModuleDef M_Mathutils_module_def = { - PyModuleDef_HEAD_INIT, - "Mathutils", /* m_name */ - M_Mathutils_doc, /* m_doc */ - 0, /* m_size */ - M_Mathutils_methods, /* m_methods */ - 0, /* m_reload */ - 0, /* m_traverse */ - 0, /* m_clear */ - 0, /* m_free */ -}; - -PyObject *Mathutils_Init(void) -{ - PyObject *submodule; - - //seed the generator for the rand function - BLI_srand((unsigned int) (PIL_check_seconds_timer() * 0x7FFFFFFF)); - - if( PyType_Ready( &vector_Type ) < 0 ) - return NULL; - if( PyType_Ready( &matrix_Type ) < 0 ) - return NULL; - if( PyType_Ready( &euler_Type ) < 0 ) - return NULL; - if( PyType_Ready( &quaternion_Type ) < 0 ) - return NULL; - - submodule = PyModule_Create(&M_Mathutils_module_def); - PyDict_SetItemString(PySys_GetObject("modules"), M_Mathutils_module_def.m_name, submodule); - - /* each type has its own new() function */ - PyModule_AddObject( submodule, "Vector", (PyObject *)&vector_Type ); - PyModule_AddObject( submodule, "Matrix", (PyObject *)&matrix_Type ); - PyModule_AddObject( submodule, "Euler", (PyObject *)&euler_Type ); - PyModule_AddObject( submodule, "Quaternion", (PyObject *)&quaternion_Type ); - - mathutils_matrix_vector_cb_index= Mathutils_RegisterCallback(&mathutils_matrix_vector_cb); - - return (submodule); -} +static char M_Mathutils_doc[] = "This module provides access to matrices, eulers, quaternions and vectors."; //-----------------------------METHODS---------------------------- //-----------------quat_rotation (internal)----------- @@ -204,164 +124,49 @@ PyObject *quat_rotation(PyObject *arg1, PyObject *arg2) } -//----------------------------------Mathutils.Rand() -------------------- -//returns a random number between a high and low value -static PyObject *M_Mathutils_Rand(PyObject * self, PyObject * args) -{ - float high, low, range; - double drand; - //initializers - high = 1.0; - low = 0.0; - - if(!PyArg_ParseTuple(args, "|ff", &low, &high)) { - PyErr_SetString(PyExc_TypeError, "Mathutils.Rand(): expected nothing or optional (float, float)\n"); - return NULL; - } - - if((high < low) || (high < 0 && low > 0)) { - PyErr_SetString(PyExc_ValueError, "Mathutils.Rand(): high value should be larger than low value\n"); - return NULL; - } - //get the random number 0 - 1 - drand = BLI_drand(); - - //set it to range - range = high - low; - drand = drand * range; - drand = drand + low; - - return PyFloat_FromDouble(drand); -} -//----------------------------------VECTOR FUNCTIONS--------------------- -//----------------------------------Mathutils.AngleBetweenVecs() --------- -//calculates the angle between 2 vectors -static PyObject *M_Mathutils_AngleBetweenVecs(PyObject * self, PyObject * args) -{ - VectorObject *vec1 = NULL, *vec2 = NULL; - double dot = 0.0f, angleRads, test_v1 = 0.0f, test_v2 = 0.0f; - int x, size; - - if(!PyArg_ParseTuple(args, "O!O!", &vector_Type, &vec1, &vector_Type, &vec2)) - goto AttributeError1; //not vectors - if(vec1->size != vec2->size) - goto AttributeError1; //bad sizes - - if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2)) - return NULL; - - //since size is the same.... - size = vec1->size; - - for(x = 0; x < size; x++) { - test_v1 += vec1->vec[x] * vec1->vec[x]; - test_v2 += vec2->vec[x] * vec2->vec[x]; - } - if (!test_v1 || !test_v2){ - goto AttributeError2; //zero-length vector - } - - //dot product - for(x = 0; x < size; x++) { - dot += vec1->vec[x] * vec2->vec[x]; - } - dot /= (sqrt(test_v1) * sqrt(test_v2)); - - angleRads = (double)saacos(dot); - -#ifdef USE_MATHUTILS_DEG - return PyFloat_FromDouble(angleRads * (180/ Py_PI)); -#else - return PyFloat_FromDouble(angleRads); -#endif -AttributeError1: - PyErr_SetString(PyExc_AttributeError, "Mathutils.AngleBetweenVecs(): expects (2) VECTOR objects of the same size\n"); - return NULL; - -AttributeError2: - PyErr_SetString(PyExc_AttributeError, "Mathutils.AngleBetweenVecs(): zero length vectors are not acceptable arguments\n"); - return NULL; -} -//----------------------------------Mathutils.MidpointVecs() ------------- -//calculates the midpoint between 2 vectors -static PyObject *M_Mathutils_MidpointVecs(PyObject * self, PyObject * args) -{ - VectorObject *vec1 = NULL, *vec2 = NULL; - float vec[4]; - int x; - - if(!PyArg_ParseTuple(args, "O!O!", &vector_Type, &vec1, &vector_Type, &vec2)) { - PyErr_SetString(PyExc_TypeError, "Mathutils.MidpointVecs(): expects (2) vector objects of the same size\n"); - return NULL; - } - if(vec1->size != vec2->size) { - PyErr_SetString(PyExc_AttributeError, "Mathutils.MidpointVecs(): expects (2) vector objects of the same size\n"); - return NULL; - } - - if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2)) - return NULL; - - for(x = 0; x < vec1->size; x++) { - vec[x] = 0.5f * (vec1->vec[x] + vec2->vec[x]); - } - return newVectorObject(vec, vec1->size, Py_NEW, NULL); -} -//----------------------------------Mathutils.ProjectVecs() ------------- -//projects vector 1 onto vector 2 -static PyObject *M_Mathutils_ProjectVecs(PyObject * self, PyObject * args) -{ - VectorObject *vec1 = NULL, *vec2 = NULL; - float vec[4]; - double dot = 0.0f, dot2 = 0.0f; - int x, size; - - if(!PyArg_ParseTuple(args, "O!O!", &vector_Type, &vec1, &vector_Type, &vec2)) { - PyErr_SetString(PyExc_TypeError, "Mathutils.ProjectVecs(): expects (2) vector objects of the same size\n"); - return NULL; - } - if(vec1->size != vec2->size) { - PyErr_SetString(PyExc_AttributeError, "Mathutils.ProjectVecs(): expects (2) vector objects of the same size\n"); - return NULL; - } - - if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2)) - return NULL; - - - //since they are the same size... - size = vec1->size; - - //get dot products - for(x = 0; x < size; x++) { - dot += vec1->vec[x] * vec2->vec[x]; - dot2 += vec2->vec[x] * vec2->vec[x]; - } - //projection - dot /= dot2; - for(x = 0; x < size; x++) { - vec[x] = (float)(dot * vec2->vec[x]); - } - return newVectorObject(vec, size, Py_NEW, NULL); -} //----------------------------------MATRIX FUNCTIONS-------------------- //----------------------------------Mathutils.RotationMatrix() ---------- //mat is a 1D array of floats - row[0][0],row[0][1], row[1][0], etc. -//creates a rotation matrix +static char M_Mathutils_RotationMatrix_doc[] = +".. function:: RotationMatrix(angle, size, axis)\n" +"\n" +" Create a matrix representing a rotation.\n" +"\n" +" :arg angle: The angle of rotation desired.\n" +" :type angle: float\n" +" :arg size: The size of the rotation matrix to construct [2, 4].\n" +" :type size: int\n" +" :arg axis: a string in ['X', 'Y', 'Z'] or a 3D Vector Object (optional when size is 2).\n" +" :type axis: string or :class:`Vector`\n" +" :return: A new rotation matrix.\n" +" :rtype: :class:`Matrix`\n"; + static PyObject *M_Mathutils_RotationMatrix(PyObject * self, PyObject * args) { - VectorObject *vec = NULL; - char *axis = NULL; + VectorObject *vec= NULL; + char *axis= NULL; int matSize; float angle = 0.0f; float mat[16] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}; - if(!PyArg_ParseTuple(args, "fi|sO!", &angle, &matSize, &axis, &vector_Type, &vec)) { - PyErr_SetString(PyExc_TypeError, "Mathutils.RotationMatrix(): expected float int and optional string and vector\n"); + if(!PyArg_ParseTuple(args, "fi|O", &angle, &matSize, &vec)) { + PyErr_SetString(PyExc_TypeError, "Mathutils.RotationMatrix(angle, size, axis): expected float int and a string or vector\n"); return NULL; } + if(vec && !VectorObject_Check(vec)) { + axis= _PyUnicode_AsString((PyObject *)vec); + if(axis==NULL || axis[0]=='\0' || axis[1]!='\0' || axis[0] < 'X' || axis[0] > 'Z') { + PyErr_SetString(PyExc_TypeError, "Mathutils.RotationMatrix(): 3rd argument axis value must be a 3D vector or a string in 'X', 'Y', 'Z'\n"); + return NULL; + } + else { + /* use the string */ + vec= NULL; + } + } + #ifdef USE_MATHUTILS_DEG /* Clamp to -360:360 */ while (angle<-360.0f) @@ -379,23 +184,17 @@ static PyObject *M_Mathutils_RotationMatrix(PyObject * self, PyObject * args) PyErr_SetString(PyExc_AttributeError, "Mathutils.RotationMatrix(): can only return a 2x2 3x3 or 4x4 matrix\n"); return NULL; } - if(matSize == 2 && (axis != NULL || vec != NULL)) { + if(matSize == 2 && (vec != NULL)) { PyErr_SetString(PyExc_AttributeError, "Mathutils.RotationMatrix(): cannot create a 2x2 rotation matrix around arbitrary axis\n"); return NULL; } - if((matSize == 3 || matSize == 4) && axis == NULL) { + if((matSize == 3 || matSize == 4) && (axis == NULL) && (vec == NULL)) { PyErr_SetString(PyExc_AttributeError, "Mathutils.RotationMatrix(): please choose an axis of rotation for 3d and 4d matrices\n"); return NULL; } - if(axis) { - if(((strcmp(axis, "r") == 0) || (strcmp(axis, "R") == 0)) && vec == NULL) { - PyErr_SetString(PyExc_AttributeError, "Mathutils.RotationMatrix(): please define the arbitrary axis of rotation\n"); - return NULL; - } - } if(vec) { if(vec->size != 3) { - PyErr_SetString(PyExc_AttributeError, "Mathutils.RotationMatrix(): the arbitrary axis must be a 3D vector\n"); + PyErr_SetString(PyExc_AttributeError, "Mathutils.RotationMatrix(): the vector axis must be a 3D vector\n"); return NULL; } @@ -408,41 +207,44 @@ static PyObject *M_Mathutils_RotationMatrix(PyObject * self, PyObject * args) angle = angle * (float) (Py_PI / 180); #endif - if(axis == NULL && matSize == 2) { + /* check for valid vector/axis above */ + if(vec) { + axis_angle_to_mat3( (float (*)[3])mat,vec->vec, angle); + } + else if(matSize == 2) { //2D rotation matrix mat[0] = (float) cos (angle); mat[1] = (float) sin (angle); mat[2] = -((float) sin(angle)); mat[3] = (float) cos(angle); - } else if((strcmp(axis, "x") == 0) || (strcmp(axis, "X") == 0)) { + } else if(strcmp(axis, "X") == 0) { //rotation around X mat[0] = 1.0f; mat[4] = (float) cos(angle); mat[5] = (float) sin(angle); mat[7] = -((float) sin(angle)); mat[8] = (float) cos(angle); - } else if((strcmp(axis, "y") == 0) || (strcmp(axis, "Y") == 0)) { + } else if(strcmp(axis, "Y") == 0) { //rotation around Y mat[0] = (float) cos(angle); mat[2] = -((float) sin(angle)); mat[4] = 1.0f; mat[6] = (float) sin(angle); mat[8] = (float) cos(angle); - } else if((strcmp(axis, "z") == 0) || (strcmp(axis, "Z") == 0)) { + } else if(strcmp(axis, "Z") == 0) { //rotation around Z mat[0] = (float) cos(angle); mat[1] = (float) sin(angle); mat[3] = -((float) sin(angle)); mat[4] = (float) cos(angle); mat[8] = 1.0f; - } else if((strcmp(axis, "r") == 0) || (strcmp(axis, "R") == 0)) { - //arbitrary rotation - axis_angle_to_mat3( (float (*)[3])mat,vec->vec, angle); - - } else { - PyErr_SetString(PyExc_AttributeError, "Mathutils.RotationMatrix(): unrecognizable axis of rotation type - expected x,y,z or r\n"); + } + else { + /* should never get here */ + PyErr_SetString(PyExc_AttributeError, "Mathutils.RotationMatrix(): unknown error\n"); return NULL; } + if(matSize == 4) { //resize matrix mat[10] = mat[8]; @@ -457,8 +259,17 @@ static PyObject *M_Mathutils_RotationMatrix(PyObject * self, PyObject * args) //pass to matrix creation return newMatrixObject(mat, matSize, matSize, Py_NEW, NULL); } -//----------------------------------Mathutils.TranslationMatrix() ------- -//creates a translation matrix + +static char M_Mathutils_TranslationMatrix_doc[] = +".. function:: TranslationMatrix(vector)\n" +"\n" +" Create a matrix representing a translation.\n" +"\n" +" :arg vector: The translation vector.\n" +" :type vector: :class:`Vector`\n" +" :return: An identity matrix with a translation.\n" +" :rtype: :class:`Matrix`\n"; + static PyObject *M_Mathutils_TranslationMatrix(PyObject * self, VectorObject * vec) { float mat[16] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, @@ -486,7 +297,20 @@ static PyObject *M_Mathutils_TranslationMatrix(PyObject * self, VectorObject * v } //----------------------------------Mathutils.ScaleMatrix() ------------- //mat is a 1D array of floats - row[0][0],row[0][1], row[1][0], etc. -//creates a scaling matrix +static char M_Mathutils_ScaleMatrix_doc[] = +".. function:: ScaleMatrix(factor, size, axis)\n" +"\n" +" Create a matrix representing a scaling.\n" +"\n" +" :arg factor: The factor of scaling to apply.\n" +" :type factor: float\n" +" :arg size: The size of the scale matrix to construct [2, 4].\n" +" :type size: int\n" +" :arg axis: Direction to influence scale. (optional).\n" +" :type axis: :class:`Vector`\n" +" :return: A new scale matrix.\n" +" :rtype: :class:`Matrix`\n"; + static PyObject *M_Mathutils_ScaleMatrix(PyObject * self, PyObject * args) { VectorObject *vec = NULL; @@ -564,7 +388,19 @@ static PyObject *M_Mathutils_ScaleMatrix(PyObject * self, PyObject * args) } //----------------------------------Mathutils.OrthoProjectionMatrix() --- //mat is a 1D array of floats - row[0][0],row[0][1], row[1][0], etc. -//creates an ortho projection matrix +static char M_Mathutils_OrthoProjectionMatrix_doc[] = +".. function:: OrthoProjectionMatrix(plane, size, axis)\n" +"\n" +" Create a matrix to represent an orthographic projection.\n" +"\n" +" :arg plane: Can be any of the following: ['X', 'Y', 'XY', 'XZ', 'YZ', 'R'], where a single axis is for a 2D matrix and 'R' requires axis is given.\n" +" :type plane: string\n" +" :arg size: The size of the projection matrix to construct [2, 4].\n" +" :type size: int\n" +" :arg axis: Arbitrary perpendicular plane vector (optional).\n" +" :type axis: :class:`Vector`\n" +" :return: A new projection matrix.\n" +" :rtype: :class:`Matrix`\n"; static PyObject *M_Mathutils_OrthoProjectionMatrix(PyObject * self, PyObject * args) { VectorObject *vec = NULL; @@ -593,30 +429,21 @@ static PyObject *M_Mathutils_OrthoProjectionMatrix(PyObject * self, PyObject * a } if(vec == NULL) { //ortho projection onto cardinal plane - if(((strcmp(plane, "x") == 0) - || (strcmp(plane, "X") == 0)) && matSize == 2) { + if((strcmp(plane, "X") == 0) && matSize == 2) { mat[0] = 1.0f; - } else if(((strcmp(plane, "y") == 0) - || (strcmp(plane, "Y") == 0)) - && matSize == 2) { + } else if((strcmp(plane, "Y") == 0) && matSize == 2) { mat[3] = 1.0f; - } else if(((strcmp(plane, "xy") == 0) - || (strcmp(plane, "XY") == 0)) - && matSize > 2) { + } else if((strcmp(plane, "XY") == 0) && matSize > 2) { mat[0] = 1.0f; mat[4] = 1.0f; - } else if(((strcmp(plane, "xz") == 0) - || (strcmp(plane, "XZ") == 0)) - && matSize > 2) { + } else if((strcmp(plane, "XZ") == 0) && matSize > 2) { mat[0] = 1.0f; mat[8] = 1.0f; - } else if(((strcmp(plane, "yz") == 0) - || (strcmp(plane, "YZ") == 0)) - && matSize > 2) { + } else if((strcmp(plane, "YZ") == 0) && matSize > 2) { mat[4] = 1.0f; mat[8] = 1.0f; } else { - PyErr_SetString(PyExc_AttributeError, "Mathutils.OrthoProjectionMatrix(): unknown plane - expected: x, y, xy, xz, yz\n"); + PyErr_SetString(PyExc_AttributeError, "Mathutils.OrthoProjectionMatrix(): unknown plane - expected: X, Y, XY, XZ, YZ\n"); return NULL; } } else { //arbitrary plane @@ -628,15 +455,12 @@ static PyObject *M_Mathutils_OrthoProjectionMatrix(PyObject * self, PyObject * a for(x = 0; x < vec->size; x++) { vec->vec[x] /= norm; } - if(((strcmp(plane, "r") == 0) - || (strcmp(plane, "R") == 0)) && matSize == 2) { + if((strcmp(plane, "R") == 0) && matSize == 2) { mat[0] = 1 - (vec->vec[0] * vec->vec[0]); mat[1] = -(vec->vec[0] * vec->vec[1]); mat[2] = -(vec->vec[0] * vec->vec[1]); mat[3] = 1 - (vec->vec[1] * vec->vec[1]); - } else if(((strcmp(plane, "r") == 0) - || (strcmp(plane, "R") == 0)) - && matSize > 2) { + } else if((strcmp(plane, "R") == 0) && matSize > 2) { mat[0] = 1 - (vec->vec[0] * vec->vec[0]); mat[1] = -(vec->vec[0] * vec->vec[1]); mat[2] = -(vec->vec[0] * vec->vec[2]); @@ -665,8 +489,21 @@ static PyObject *M_Mathutils_OrthoProjectionMatrix(PyObject * self, PyObject * a //pass to matrix creation return newMatrixObject(mat, matSize, matSize, Py_NEW, NULL); } -//----------------------------------Mathutils.ShearMatrix() ------------- -//creates a shear matrix + +static char M_Mathutils_ShearMatrix_doc[] = +".. function:: ShearMatrix(plane, factor, size)\n" +"\n" +" Create a matrix to represent an shear transformation.\n" +"\n" +" :arg plane: Can be any of the following: ['X', 'Y', 'XY', 'XZ', 'YZ'], where a single axis is for a 2D matrix.\n" +" :type plane: string\n" +" :arg factor: The factor of shear to apply.\n" +" :type factor: float\n" +" :arg size: The size of the shear matrix to construct [2, 4].\n" +" :type size: int\n" +" :return: A new shear matrix.\n" +" :rtype: :class:`Matrix`\n"; + static PyObject *M_Mathutils_ShearMatrix(PyObject * self, PyObject * args) { int matSize; @@ -684,31 +521,27 @@ static PyObject *M_Mathutils_ShearMatrix(PyObject * self, PyObject * args) return NULL; } - if(((strcmp(plane, "x") == 0) || (strcmp(plane, "X") == 0)) + if((strcmp(plane, "X") == 0) && matSize == 2) { mat[0] = 1.0f; mat[2] = factor; mat[3] = 1.0f; - } else if(((strcmp(plane, "y") == 0) - || (strcmp(plane, "Y") == 0)) && matSize == 2) { + } else if((strcmp(plane, "Y") == 0) && matSize == 2) { mat[0] = 1.0f; mat[1] = factor; mat[3] = 1.0f; - } else if(((strcmp(plane, "xy") == 0) - || (strcmp(plane, "XY") == 0)) && matSize > 2) { + } else if((strcmp(plane, "XY") == 0) && matSize > 2) { mat[0] = 1.0f; mat[4] = 1.0f; mat[6] = factor; mat[7] = factor; - } else if(((strcmp(plane, "xz") == 0) - || (strcmp(plane, "XZ") == 0)) && matSize > 2) { + } else if((strcmp(plane, "XZ") == 0) && matSize > 2) { mat[0] = 1.0f; mat[3] = factor; mat[4] = 1.0f; mat[5] = factor; mat[8] = 1.0f; - } else if(((strcmp(plane, "yz") == 0) - || (strcmp(plane, "YZ") == 0)) && matSize > 2) { + } else if((strcmp(plane, "YZ") == 0) && matSize > 2) { mat[0] = 1.0f; mat[1] = factor; mat[2] = factor; @@ -732,375 +565,6 @@ static PyObject *M_Mathutils_ShearMatrix(PyObject * self, PyObject * args) //pass to matrix creation return newMatrixObject(mat, matSize, matSize, Py_NEW, NULL); } -//----------------------------------QUATERNION FUNCTIONS----------------- - -//----------------------------------Mathutils.DifferenceQuats() --------- -//returns the difference between 2 quaternions -static PyObject *M_Mathutils_DifferenceQuats(PyObject * self, PyObject * args) -{ - QuaternionObject *quatU = NULL, *quatV = NULL; - float quat[4], tempQuat[4]; - double dot = 0.0f; - int x; - - if(!PyArg_ParseTuple(args, "O!O!", &quaternion_Type, &quatU, &quaternion_Type, &quatV)) { - PyErr_SetString(PyExc_TypeError, "Mathutils.DifferenceQuats(): expected Quaternion types"); - return NULL; - } - - if(!BaseMath_ReadCallback(quatU) || !BaseMath_ReadCallback(quatV)) - return NULL; - - tempQuat[0] = quatU->quat[0]; - tempQuat[1] = -quatU->quat[1]; - tempQuat[2] = -quatU->quat[2]; - tempQuat[3] = -quatU->quat[3]; - - dot = sqrt(tempQuat[0] * tempQuat[0] + tempQuat[1] * tempQuat[1] + - tempQuat[2] * tempQuat[2] + tempQuat[3] * tempQuat[3]); - - for(x = 0; x < 4; x++) { - tempQuat[x] /= (float)(dot * dot); - } - mul_qt_qtqt(quat, tempQuat, quatV->quat); - return newQuaternionObject(quat, Py_NEW, NULL); -} -//----------------------------------Mathutils.Slerp() ------------------ -//attemps to interpolate 2 quaternions and return the result -static PyObject *M_Mathutils_Slerp(PyObject * self, PyObject * args) -{ - QuaternionObject *quatU = NULL, *quatV = NULL; - float quat[4], quat_u[4], quat_v[4], param; - double x, y, dot, sinT, angle, IsinT; - int z; - - if(!PyArg_ParseTuple(args, "O!O!f", &quaternion_Type, &quatU, &quaternion_Type, &quatV, ¶m)) { - PyErr_SetString(PyExc_TypeError, "Mathutils.Slerp(): expected Quaternion types and float"); - return NULL; - } - - if(!BaseMath_ReadCallback(quatU) || !BaseMath_ReadCallback(quatV)) - return NULL; - - if(param > 1.0f || param < 0.0f) { - PyErr_SetString(PyExc_AttributeError, "Mathutils.Slerp(): interpolation factor must be between 0.0 and 1.0"); - return NULL; - } - - //copy quats - for(z = 0; z < 4; z++){ - quat_u[z] = quatU->quat[z]; - quat_v[z] = quatV->quat[z]; - } - - //dot product - dot = quat_u[0] * quat_v[0] + quat_u[1] * quat_v[1] + - quat_u[2] * quat_v[2] + quat_u[3] * quat_v[3]; - - //if negative negate a quat (shortest arc) - if(dot < 0.0f) { - quat_v[0] = -quat_v[0]; - quat_v[1] = -quat_v[1]; - quat_v[2] = -quat_v[2]; - quat_v[3] = -quat_v[3]; - dot = -dot; - } - if(dot > .99999f) { //very close - x = 1.0f - param; - y = param; - } else { - //calculate sin of angle - sinT = sqrt(1.0f - (dot * dot)); - //calculate angle - angle = atan2(sinT, dot); - //caluculate inverse of sin(theta) - IsinT = 1.0f / sinT; - x = sin((1.0f - param) * angle) * IsinT; - y = sin(param * angle) * IsinT; - } - //interpolate - quat[0] = (float)(quat_u[0] * x + quat_v[0] * y); - quat[1] = (float)(quat_u[1] * x + quat_v[1] * y); - quat[2] = (float)(quat_u[2] * x + quat_v[2] * y); - quat[3] = (float)(quat_u[3] * x + quat_v[3] * y); - - return newQuaternionObject(quat, Py_NEW, NULL); -} -//----------------------------------EULER FUNCTIONS---------------------- -//---------------------------------INTERSECTION FUNCTIONS-------------------- -//----------------------------------Mathutils.Intersect() ------------------- -static PyObject *M_Mathutils_Intersect( PyObject * self, PyObject * args ) -{ - VectorObject *ray, *ray_off, *vec1, *vec2, *vec3; - float dir[3], orig[3], v1[3], v2[3], v3[3], e1[3], e2[3], pvec[3], tvec[3], qvec[3]; - float det, inv_det, u, v, t; - int clip = 1; - - if(!PyArg_ParseTuple(args, "O!O!O!O!O!|i", &vector_Type, &vec1, &vector_Type, &vec2, &vector_Type, &vec3, &vector_Type, &ray, &vector_Type, &ray_off , &clip)) { - PyErr_SetString( PyExc_TypeError, "expected 5 vector types\n" ); - return NULL; - } - if(vec1->size != 3 || vec2->size != 3 || vec3->size != 3 || ray->size != 3 || ray_off->size != 3) { - PyErr_SetString( PyExc_TypeError, "only 3D vectors for all parameters\n"); - return NULL; - } - - if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2) || !BaseMath_ReadCallback(vec3) || !BaseMath_ReadCallback(ray) || !BaseMath_ReadCallback(ray_off)) - return NULL; - - VECCOPY(v1, vec1->vec); - VECCOPY(v2, vec2->vec); - VECCOPY(v3, vec3->vec); - - VECCOPY(dir, ray->vec); - normalize_v3(dir); - - VECCOPY(orig, ray_off->vec); - - /* find vectors for two edges sharing v1 */ - sub_v3_v3v3(e1, v2, v1); - sub_v3_v3v3(e2, v3, v1); - - /* begin calculating determinant - also used to calculated U parameter */ - cross_v3_v3v3(pvec, dir, e2); - - /* if determinant is near zero, ray lies in plane of triangle */ - det = dot_v3v3(e1, pvec); - - if (det > -0.000001 && det < 0.000001) { - Py_RETURN_NONE; - } - - inv_det = 1.0f / det; - - /* calculate distance from v1 to ray origin */ - sub_v3_v3v3(tvec, orig, v1); - - /* calculate U parameter and test bounds */ - u = dot_v3v3(tvec, pvec) * inv_det; - if (clip && (u < 0.0f || u > 1.0f)) { - Py_RETURN_NONE; - } - - /* prepare to test the V parameter */ - cross_v3_v3v3(qvec, tvec, e1); - - /* calculate V parameter and test bounds */ - v = dot_v3v3(dir, qvec) * inv_det; - - if (clip && (v < 0.0f || u + v > 1.0f)) { - Py_RETURN_NONE; - } - - /* calculate t, ray intersects triangle */ - t = dot_v3v3(e2, qvec) * inv_det; - - mul_v3_fl(dir, t); - add_v3_v3v3(pvec, orig, dir); - - return newVectorObject(pvec, 3, Py_NEW, NULL); -} -//----------------------------------Mathutils.LineIntersect() ------------------- -/* Line-Line intersection using algorithm from mathworld.wolfram.com */ -static PyObject *M_Mathutils_LineIntersect( PyObject * self, PyObject * args ) -{ - PyObject * tuple; - VectorObject *vec1, *vec2, *vec3, *vec4; - float v1[3], v2[3], v3[3], v4[3], i1[3], i2[3]; - - if( !PyArg_ParseTuple( args, "O!O!O!O!", &vector_Type, &vec1, &vector_Type, &vec2, &vector_Type, &vec3, &vector_Type, &vec4 ) ) { - PyErr_SetString( PyExc_TypeError, "expected 4 vector types\n" ); - return NULL; - } - if( vec1->size != vec2->size || vec1->size != vec3->size || vec3->size != vec2->size) { - PyErr_SetString( PyExc_TypeError,"vectors must be of the same size\n" ); - return NULL; - } - - if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2) || !BaseMath_ReadCallback(vec3) || !BaseMath_ReadCallback(vec4)) - return NULL; - - if( vec1->size == 3 || vec1->size == 2) { - int result; - - if (vec1->size == 3) { - VECCOPY(v1, vec1->vec); - VECCOPY(v2, vec2->vec); - VECCOPY(v3, vec3->vec); - VECCOPY(v4, vec4->vec); - } - else { - v1[0] = vec1->vec[0]; - v1[1] = vec1->vec[1]; - v1[2] = 0.0f; - - v2[0] = vec2->vec[0]; - v2[1] = vec2->vec[1]; - v2[2] = 0.0f; - - v3[0] = vec3->vec[0]; - v3[1] = vec3->vec[1]; - v3[2] = 0.0f; - - v4[0] = vec4->vec[0]; - v4[1] = vec4->vec[1]; - v4[2] = 0.0f; - } - - result = isect_line_line_v3(v1, v2, v3, v4, i1, i2); - - if (result == 0) { - /* colinear */ - Py_RETURN_NONE; - } - else { - tuple = PyTuple_New( 2 ); - PyTuple_SetItem( tuple, 0, newVectorObject(i1, vec1->size, Py_NEW, NULL) ); - PyTuple_SetItem( tuple, 1, newVectorObject(i2, vec1->size, Py_NEW, NULL) ); - return tuple; - } - } - else { - PyErr_SetString( PyExc_TypeError, "2D/3D vectors only\n" ); - return NULL; - } -} - - - -//---------------------------------NORMALS FUNCTIONS-------------------- -//----------------------------------Mathutils.QuadNormal() ------------------- -static PyObject *M_Mathutils_QuadNormal( PyObject * self, PyObject * args ) -{ - VectorObject *vec1; - VectorObject *vec2; - VectorObject *vec3; - VectorObject *vec4; - float v1[3], v2[3], v3[3], v4[3], e1[3], e2[3], n1[3], n2[3]; - - if( !PyArg_ParseTuple( args, "O!O!O!O!", &vector_Type, &vec1, &vector_Type, &vec2, &vector_Type, &vec3, &vector_Type, &vec4 ) ) { - PyErr_SetString( PyExc_TypeError, "expected 4 vector types\n" ); - return NULL; - } - if( vec1->size != vec2->size || vec1->size != vec3->size || vec1->size != vec4->size) { - PyErr_SetString( PyExc_TypeError,"vectors must be of the same size\n" ); - return NULL; - } - if( vec1->size != 3 ) { - PyErr_SetString( PyExc_TypeError, "only 3D vectors\n" ); - return NULL; - } - - if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2) || !BaseMath_ReadCallback(vec3) || !BaseMath_ReadCallback(vec4)) - return NULL; - - VECCOPY(v1, vec1->vec); - VECCOPY(v2, vec2->vec); - VECCOPY(v3, vec3->vec); - VECCOPY(v4, vec4->vec); - - /* find vectors for two edges sharing v2 */ - sub_v3_v3v3(e1, v1, v2); - sub_v3_v3v3(e2, v3, v2); - - cross_v3_v3v3(n1, e2, e1); - normalize_v3(n1); - - /* find vectors for two edges sharing v4 */ - sub_v3_v3v3(e1, v3, v4); - sub_v3_v3v3(e2, v1, v4); - - cross_v3_v3v3(n2, e2, e1); - normalize_v3(n2); - - /* adding and averaging the normals of both triangles */ - add_v3_v3v3(n1, n2, n1); - normalize_v3(n1); - - return newVectorObject(n1, 3, Py_NEW, NULL); -} - -//----------------------------Mathutils.TriangleNormal() ------------------- -static PyObject *M_Mathutils_TriangleNormal( PyObject * self, PyObject * args ) -{ - VectorObject *vec1, *vec2, *vec3; - float v1[3], v2[3], v3[3], e1[3], e2[3], n[3]; - - if( !PyArg_ParseTuple( args, "O!O!O!", &vector_Type, &vec1, &vector_Type, &vec2, &vector_Type, &vec3 ) ) { - PyErr_SetString( PyExc_TypeError, "expected 3 vector types\n" ); - return NULL; - } - if( vec1->size != vec2->size || vec1->size != vec3->size ) { - PyErr_SetString( PyExc_TypeError, "vectors must be of the same size\n" ); - return NULL; - } - if( vec1->size != 3 ) { - PyErr_SetString( PyExc_TypeError, "only 3D vectors\n" ); - return NULL; - } - - if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2) || !BaseMath_ReadCallback(vec3)) - return NULL; - - VECCOPY(v1, vec1->vec); - VECCOPY(v2, vec2->vec); - VECCOPY(v3, vec3->vec); - - /* find vectors for two edges sharing v2 */ - sub_v3_v3v3(e1, v1, v2); - sub_v3_v3v3(e2, v3, v2); - - cross_v3_v3v3(n, e2, e1); - normalize_v3(n); - - return newVectorObject(n, 3, Py_NEW, NULL); -} - -//--------------------------------- AREA FUNCTIONS-------------------- -//----------------------------------Mathutils.TriangleArea() ------------------- -static PyObject *M_Mathutils_TriangleArea( PyObject * self, PyObject * args ) -{ - VectorObject *vec1, *vec2, *vec3; - float v1[3], v2[3], v3[3]; - - if( !PyArg_ParseTuple - ( args, "O!O!O!", &vector_Type, &vec1, &vector_Type, &vec2 - , &vector_Type, &vec3 ) ) { - PyErr_SetString( PyExc_TypeError, "expected 3 vector types\n"); - return NULL; - } - if( vec1->size != vec2->size || vec1->size != vec3->size ) { - PyErr_SetString( PyExc_TypeError, "vectors must be of the same size\n" ); - return NULL; - } - - if(!BaseMath_ReadCallback(vec1) || !BaseMath_ReadCallback(vec2) || !BaseMath_ReadCallback(vec3)) - return NULL; - - if (vec1->size == 3) { - VECCOPY(v1, vec1->vec); - VECCOPY(v2, vec2->vec); - VECCOPY(v3, vec3->vec); - - return PyFloat_FromDouble( area_tri_v3(v1, v2, v3) ); - } - else if (vec1->size == 2) { - v1[0] = vec1->vec[0]; - v1[1] = vec1->vec[1]; - - v2[0] = vec2->vec[0]; - v2[1] = vec2->vec[1]; - - v3[0] = vec3->vec[0]; - v3[1] = vec3->vec[1]; - - return PyFloat_FromDouble( area_tri_v2(v1, v2, v3) ); - } - else { - PyErr_SetString( PyExc_TypeError, "only 2D,3D vectors are supported\n" ); - return NULL; - } -} /* Utility functions */ @@ -1197,6 +661,7 @@ int _BaseMathObject_WriteIndexCallback(BaseMathObject *self, int index) } /* BaseMathObject generic functions for all mathutils types */ +char BaseMathObject_Owner_doc[] = "The item this is wrapping or None (readonly)."; PyObject *BaseMathObject_getOwner( BaseMathObject * self, void *type ) { PyObject *ret= self->cb_user ? self->cb_user : Py_None; @@ -1204,6 +669,7 @@ PyObject *BaseMathObject_getOwner( BaseMathObject * self, void *type ) return ret; } +char BaseMathObject_Wrapped_doc[] = "True when this object wraps external data (readonly). **type** boolean"; PyObject *BaseMathObject_getWrapped( BaseMathObject *self, void *type ) { return PyBool_FromLong((self->wrapped == Py_WRAP) ? 1:0); @@ -1219,3 +685,51 @@ void BaseMathObject_dealloc(BaseMathObject * self) Py_TYPE(self)->tp_free(self); // PyObject_DEL(self); // breaks subtypes } +/*----------------------------MODULE INIT-------------------------*/ +struct PyMethodDef M_Mathutils_methods[] = { + {"RotationMatrix", (PyCFunction) M_Mathutils_RotationMatrix, METH_VARARGS, M_Mathutils_RotationMatrix_doc}, + {"ScaleMatrix", (PyCFunction) M_Mathutils_ScaleMatrix, METH_VARARGS, M_Mathutils_ScaleMatrix_doc}, + {"ShearMatrix", (PyCFunction) M_Mathutils_ShearMatrix, METH_VARARGS, M_Mathutils_ShearMatrix_doc}, + {"TranslationMatrix", (PyCFunction) M_Mathutils_TranslationMatrix, METH_O, M_Mathutils_TranslationMatrix_doc}, + {"OrthoProjectionMatrix", (PyCFunction) M_Mathutils_OrthoProjectionMatrix, METH_VARARGS, M_Mathutils_OrthoProjectionMatrix_doc}, + {NULL, NULL, 0, NULL} +}; + +static struct PyModuleDef M_Mathutils_module_def = { + PyModuleDef_HEAD_INIT, + "Mathutils", /* m_name */ + M_Mathutils_doc, /* m_doc */ + 0, /* m_size */ + M_Mathutils_methods, /* m_methods */ + 0, /* m_reload */ + 0, /* m_traverse */ + 0, /* m_clear */ + 0, /* m_free */ +}; + +PyObject *Mathutils_Init(void) +{ + PyObject *submodule; + + if( PyType_Ready( &vector_Type ) < 0 ) + return NULL; + if( PyType_Ready( &matrix_Type ) < 0 ) + return NULL; + if( PyType_Ready( &euler_Type ) < 0 ) + return NULL; + if( PyType_Ready( &quaternion_Type ) < 0 ) + return NULL; + + submodule = PyModule_Create(&M_Mathutils_module_def); + PyDict_SetItemString(PySys_GetObject("modules"), M_Mathutils_module_def.m_name, submodule); + + /* each type has its own new() function */ + PyModule_AddObject( submodule, "Vector", (PyObject *)&vector_Type ); + PyModule_AddObject( submodule, "Matrix", (PyObject *)&matrix_Type ); + PyModule_AddObject( submodule, "Euler", (PyObject *)&euler_Type ); + PyModule_AddObject( submodule, "Quaternion", (PyObject *)&quaternion_Type ); + + mathutils_matrix_vector_cb_index= Mathutils_RegisterCallback(&mathutils_matrix_vector_cb); + + return (submodule); +} diff --git a/source/blender/python/generic/Mathutils.h b/source/blender/python/generic/Mathutils.h index ad67d2e511e..fdf0b5d9ce4 100644 --- a/source/blender/python/generic/Mathutils.h +++ b/source/blender/python/generic/Mathutils.h @@ -41,6 +41,9 @@ /* Can cast different mathutils types to this, use for generic funcs */ +extern char BaseMathObject_Wrapped_doc[]; +extern char BaseMathObject_Owner_doc[]; + typedef struct { PyObject_VAR_HEAD float *data; /*array of data (alias), wrapped status depends on wrapped status */ diff --git a/source/blender/python/generic/euler.c b/source/blender/python/generic/euler.c index ae7a6783358..82bd2ebe70a 100644 --- a/source/blender/python/generic/euler.c +++ b/source/blender/python/generic/euler.c @@ -33,29 +33,6 @@ #include "BLI_blenlib.h" -//-------------------------DOC STRINGS --------------------------- - -static PyObject *Euler_Zero( EulerObject * self ); -static PyObject *Euler_Unique( EulerObject * self ); -static PyObject *Euler_ToMatrix( EulerObject * self ); -static PyObject *Euler_ToQuat( EulerObject * self ); -static PyObject *Euler_Rotate( EulerObject * self, PyObject *args ); -static PyObject *Euler_MakeCompatible( EulerObject * self, EulerObject *value ); -static PyObject *Euler_copy( EulerObject * self, PyObject *args ); - -//-----------------------METHOD DEFINITIONS ---------------------- -static struct PyMethodDef Euler_methods[] = { - {"zero", (PyCFunction) Euler_Zero, METH_NOARGS, NULL}, - {"unique", (PyCFunction) Euler_Unique, METH_NOARGS, NULL}, - {"toMatrix", (PyCFunction) Euler_ToMatrix, METH_NOARGS, NULL}, - {"toQuat", (PyCFunction) Euler_ToQuat, METH_NOARGS, NULL}, - {"rotate", (PyCFunction) Euler_Rotate, METH_VARARGS, NULL}, - {"makeCompatible", (PyCFunction) Euler_MakeCompatible, METH_O, NULL}, - {"__copy__", (PyCFunction) Euler_copy, METH_VARARGS, NULL}, - {"copy", (PyCFunction) Euler_copy, METH_VARARGS, NULL}, - {NULL, NULL, 0, NULL} -}; - //----------------------------------Mathutils.Euler() ------------------- //makes a new euler for you to play with static PyObject *Euler_new(PyTypeObject * type, PyObject * args, PyObject * kwargs) @@ -108,6 +85,15 @@ static PyObject *Euler_new(PyTypeObject * type, PyObject * args, PyObject * kwar //-----------------------------METHODS---------------------------- //----------------------------Euler.toQuat()---------------------- //return a quaternion representation of the euler + +static char Euler_ToQuat_doc[] = +".. method:: to_quat()\n" +"\n" +" Return a quaternion representation of the euler.\n" +"\n" +" :return: Quaternion representation of the euler.\n" +" :rtype: :class:`Quaternion`\n"; + static PyObject *Euler_ToQuat(EulerObject * self) { float quat[4]; @@ -132,6 +118,14 @@ static PyObject *Euler_ToQuat(EulerObject * self) } //----------------------------Euler.toMatrix()--------------------- //return a matrix representation of the euler +static char Euler_ToMatrix_doc[] = +".. method:: to_matrix()\n" +"\n" +" Return a matrix representation of the euler.\n" +"\n" +" :return: A 3x3 roation matrix representation of the euler.\n" +" :rtype: :class:`Matrix`\n"; + static PyObject *Euler_ToMatrix(EulerObject * self) { float mat[9] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}; @@ -156,6 +150,15 @@ static PyObject *Euler_ToMatrix(EulerObject * self) } //----------------------------Euler.unique()----------------------- //sets the x,y,z values to a unique euler rotation + +static char Euler_Unique_doc[] = +".. method:: unique()\n" +"\n" +" Calculate a unique rotation for this euler. Avoids gimble lock.\n" +"\n" +" :return: an instance of itself\n" +" :rtype: :class:`Euler`\n"; + static PyObject *Euler_Unique(EulerObject * self) { #define PI_2 (Py_PI * 2.0) @@ -220,6 +223,14 @@ static PyObject *Euler_Unique(EulerObject * self) } //----------------------------Euler.zero()------------------------- //sets the euler to 0,0,0 +static char Euler_Zero_doc[] = +".. method:: zero()\n" +"\n" +" Set all values to zero.\n" +"\n" +" :return: an instance of itself\n" +" :rtype: :class:`Euler`\n"; + static PyObject *Euler_Zero(EulerObject * self) { self->eul[0] = 0.0; @@ -278,6 +289,16 @@ static PyObject *Euler_Rotate(EulerObject * self, PyObject *args) return (PyObject *)self; } +static char Euler_MakeCompatible_doc[] = +".. method:: make_compatible(other)\n" +"\n" +" Make this euler compatible with another, so interpolating between them works as intended.\n" +"\n" +" :arg other: make compatible with this rotation.\n" +" :type other: :class:`Euler`\n" +" :return: an instance of itself.\n" +" :rtype: :class:`Euler`\n"; + static PyObject *Euler_MakeCompatible(EulerObject * self, EulerObject *value) { #ifdef USE_MATHUTILS_DEG @@ -317,6 +338,17 @@ static PyObject *Euler_MakeCompatible(EulerObject * self, EulerObject *value) //----------------------------Euler.rotate()----------------------- // return a copy of the euler + +static char Euler_copy_doc[] = +".. function:: copy()\n" +"\n" +" Returns a copy of this euler.\n" +"\n" +" :return: A copy of the euler.\n" +" :rtype: :class:`Euler`\n" +"\n" +" .. note:: use this to get a copy of a wrapped euler with no reference to the original data.\n"; + static PyObject *Euler_copy(EulerObject * self, PyObject *args) { if(!BaseMath_ReadCallback(self)) @@ -521,7 +553,6 @@ static PySequenceMethods Euler_SeqMethods = { /* * vector axis, vector.x/y/z/w */ - static PyObject *Euler_getAxis( EulerObject * self, void *type ) { return Euler_item(self, GET_INT_FROM_POINTER(type)); @@ -536,16 +567,32 @@ static int Euler_setAxis( EulerObject * self, PyObject * value, void * type ) /* Python attributes get/set structure: */ /*****************************************************************************/ static PyGetSetDef Euler_getseters[] = { - {"x", (getter)Euler_getAxis, (setter)Euler_setAxis, "Euler X axis", (void *)0}, - {"y", (getter)Euler_getAxis, (setter)Euler_setAxis, "Euler Y axis", (void *)1}, - {"z", (getter)Euler_getAxis, (setter)Euler_setAxis, "Euler Z axis", (void *)2}, + {"x", (getter)Euler_getAxis, (setter)Euler_setAxis, "Euler X axis in radians. **type** float", (void *)0}, + {"y", (getter)Euler_getAxis, (setter)Euler_setAxis, "Euler Y axis in radians. **type** float", (void *)1}, + {"z", (getter)Euler_getAxis, (setter)Euler_setAxis, "Euler Z axis in radians. **type** float", (void *)2}, - {"wrapped", (getter)BaseMathObject_getWrapped, (setter)NULL, "True when this wraps blenders internal data", NULL}, - {"_owner", (getter)BaseMathObject_getOwner, (setter)NULL, "Read only owner for vectors that depend on another object", NULL}, + {"wrapped", (getter)BaseMathObject_getWrapped, (setter)NULL, BaseMathObject_Wrapped_doc, NULL}, + {"_owner", (getter)BaseMathObject_getOwner, (setter)NULL, BaseMathObject_Owner_doc, NULL}, {NULL,NULL,NULL,NULL,NULL} /* Sentinel */ }; + +//-----------------------METHOD DEFINITIONS ---------------------- +static struct PyMethodDef Euler_methods[] = { + {"zero", (PyCFunction) Euler_Zero, METH_NOARGS, Euler_Zero_doc}, + {"unique", (PyCFunction) Euler_Unique, METH_NOARGS, Euler_Unique_doc}, + {"to_matrix", (PyCFunction) Euler_ToMatrix, METH_NOARGS, Euler_ToMatrix_doc}, + {"to_quat", (PyCFunction) Euler_ToQuat, METH_NOARGS, Euler_ToQuat_doc}, + {"rotate", (PyCFunction) Euler_Rotate, METH_VARARGS, NULL}, + {"make_compatible", (PyCFunction) Euler_MakeCompatible, METH_O, Euler_MakeCompatible_doc}, + {"__copy__", (PyCFunction) Euler_copy, METH_VARARGS, Euler_copy_doc}, + {"copy", (PyCFunction) Euler_copy, METH_VARARGS, Euler_copy_doc}, + {NULL, NULL, 0, NULL} +}; + //------------------PY_OBECT DEFINITION-------------------------- +static char euler_doc[] = "This object gives access to Eulers in Blender."; + PyTypeObject euler_Type = { PyVarObject_HEAD_INIT(NULL, 0) "euler", //tp_name @@ -567,7 +614,7 @@ PyTypeObject euler_Type = { 0, //tp_setattro 0, //tp_as_buffer Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, //tp_flags - 0, //tp_doc + euler_doc, //tp_doc 0, //tp_traverse 0, //tp_clear (richcmpfunc)Euler_richcmpr, //tp_richcompare diff --git a/source/blender/python/generic/matrix.c b/source/blender/python/generic/matrix.c index 074a397b6d9..a61cf4a2d41 100644 --- a/source/blender/python/generic/matrix.c +++ b/source/blender/python/generic/matrix.c @@ -105,39 +105,6 @@ Mathutils_Callback mathutils_matrix_vector_cb = { }; /* matrix vector callbacks, this is so you can do matrix[i][j] = val */ -/*-------------------------DOC STRINGS ---------------------------*/ - -static PyObject *Matrix_Zero( MatrixObject * self ); -static PyObject *Matrix_Identity( MatrixObject * self ); -static PyObject *Matrix_Transpose( MatrixObject * self ); -static PyObject *Matrix_Determinant( MatrixObject * self ); -static PyObject *Matrix_Invert( MatrixObject * self ); -static PyObject *Matrix_TranslationPart( MatrixObject * self ); -static PyObject *Matrix_RotationPart( MatrixObject * self ); -static PyObject *Matrix_scalePart( MatrixObject * self ); -static PyObject *Matrix_Resize4x4( MatrixObject * self ); -static PyObject *Matrix_toEuler( MatrixObject * self, PyObject *args ); -static PyObject *Matrix_toQuat( MatrixObject * self ); -static PyObject *Matrix_copy( MatrixObject * self ); - -/*-----------------------METHOD DEFINITIONS ----------------------*/ -static struct PyMethodDef Matrix_methods[] = { - {"zero", (PyCFunction) Matrix_Zero, METH_NOARGS, NULL}, - {"identity", (PyCFunction) Matrix_Identity, METH_NOARGS, NULL}, - {"transpose", (PyCFunction) Matrix_Transpose, METH_NOARGS, NULL}, - {"determinant", (PyCFunction) Matrix_Determinant, METH_NOARGS, NULL}, - {"invert", (PyCFunction) Matrix_Invert, METH_NOARGS, NULL}, - {"translationPart", (PyCFunction) Matrix_TranslationPart, METH_NOARGS, NULL}, - {"rotationPart", (PyCFunction) Matrix_RotationPart, METH_NOARGS, NULL}, - {"scalePart", (PyCFunction) Matrix_scalePart, METH_NOARGS, NULL}, - {"resize4x4", (PyCFunction) Matrix_Resize4x4, METH_NOARGS, NULL}, - {"toEuler", (PyCFunction) Matrix_toEuler, METH_VARARGS, NULL}, - {"toQuat", (PyCFunction) Matrix_toQuat, METH_NOARGS, NULL}, - {"copy", (PyCFunction) Matrix_copy, METH_NOARGS, NULL}, - {"__copy__", (PyCFunction) Matrix_copy, METH_NOARGS, NULL}, - {NULL, NULL, 0, NULL} -}; - //----------------------------------Mathutils.Matrix() ----------------- //mat is a 1D array of floats - row[0][0],row[0][1], row[1][0], etc. //create a new matrix type @@ -214,8 +181,33 @@ static PyObject *Matrix_new(PyTypeObject *type, PyObject *args, PyObject *kwds) return newMatrixObject(matrix, argSize, seqSize, Py_NEW, NULL); } +/* assumes rowsize == colsize is checked and the read callback has run */ +static float matrix_determinant(MatrixObject * self) +{ + if(self->rowSize == 2) { + return determinant_m2(self->matrix[0][0], self->matrix[0][1], + self->matrix[1][0], self->matrix[1][1]); + } else if(self->rowSize == 3) { + return determinant_m3(self->matrix[0][0], self->matrix[0][1], + self->matrix[0][2], self->matrix[1][0], + self->matrix[1][1], self->matrix[1][2], + self->matrix[2][0], self->matrix[2][1], + self->matrix[2][2]); + } else { + return determinant_m4((float (*)[4]) *self->matrix); + } +} + + /*-----------------------------METHODS----------------------------*/ -/*---------------------------Matrix.toQuat() ---------------------*/ +static char Matrix_toQuat_doc[] = +".. method:: to_quat()\n" +"\n" +" Return a quaternion representation of the rotation matrix.\n" +"\n" +" :return: Quaternion representation of the rotation matrix.\n" +" :rtype: :class:`Quaternion`\n"; + static PyObject *Matrix_toQuat(MatrixObject * self) { float quat[4]; @@ -237,6 +229,16 @@ static PyObject *Matrix_toQuat(MatrixObject * self) return newQuaternionObject(quat, Py_NEW, NULL); } /*---------------------------Matrix.toEuler() --------------------*/ +static char Matrix_toEuler_doc[] = +".. method:: to_euler(euler_compat)\n" +"\n" +" Return an Euler representation of the rotation matrix (3x3 or 4x4 matrix only).\n" +"\n" +" :arg euler_compat: Optional euler argument the new euler will be made compatible with (no axis flipping between them). Useful for converting a series of matrices to animation curves.\n" +" :type euler_compat: :class:`Euler`\n" +" :return: Euler representation of the matrix.\n" +" :rtype: :class:`Euler`\n"; + PyObject *Matrix_toEuler(MatrixObject * self, PyObject *args) { float eul[3], eul_compatf[3]; @@ -288,6 +290,14 @@ PyObject *Matrix_toEuler(MatrixObject * self, PyObject *args) return newEulerObject(eul, Py_NEW, NULL); } /*---------------------------Matrix.resize4x4() ------------------*/ +static char Matrix_Resize4x4_doc[] = +".. method:: resize4x4()\n" +"\n" +" Resize the matrix to 4x4.\n" +"\n" +" :return: an instance of itself.\n" +" :rtype: :class:`Vector`\n"; + PyObject *Matrix_Resize4x4(MatrixObject * self) { int x, first_row_elem, curr_pos, new_pos, blank_columns, blank_rows, index; @@ -345,6 +355,16 @@ PyObject *Matrix_Resize4x4(MatrixObject * self) return (PyObject *)self; } /*---------------------------Matrix.translationPart() ------------*/ +static char Matrix_TranslationPart_doc[] = +".. method:: translation_part()\n" +"\n" +" Return a the translation part of a 4 row matrix.\n" +"\n" +" :return: Return a the translation of a matrix.\n" +" :rtype: :class:`Matrix`\n" +"\n" +" .. note:: Note that the (4,4) element of a matrix can be used for uniform scaling too.\n"; + PyObject *Matrix_TranslationPart(MatrixObject * self) { float vec[4]; @@ -364,6 +384,16 @@ PyObject *Matrix_TranslationPart(MatrixObject * self) return newVectorObject(vec, 3, Py_NEW, NULL); } /*---------------------------Matrix.rotationPart() ---------------*/ +static char Matrix_RotationPart_doc[] = +".. method:: rotation_part()\n" +"\n" +" Return the 3d submatrix corresponding to the linear term of the embedded affine transformation in 3d. This matrix represents rotation and scale.\n" +"\n" +" :return: Return the 3d matrix for rotation and scale.\n" +" :rtype: :class:`Matrix`\n" +"\n" +" .. note:: Note that the (4,4) element of a matrix can be used for uniform scaling too.\n"; + PyObject *Matrix_RotationPart(MatrixObject * self) { float mat[16] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, @@ -390,6 +420,16 @@ PyObject *Matrix_RotationPart(MatrixObject * self) return newMatrixObject(mat, 3, 3, Py_NEW, Py_TYPE(self)); } /*---------------------------Matrix.scalePart() --------------------*/ +static char Matrix_scalePart_doc[] = +".. method:: scale_part()\n" +"\n" +" Return a the scale part of a 3x3 or 4x4 matrix.\n" +"\n" +" :return: Return a the scale of a matrix.\n" +" :rtype: :class:`Vector`\n" +"\n" +" .. note:: This method does not return negative a scale on any axis because it is not possible to obtain this data from the matrix alone.\n"; + PyObject *Matrix_scalePart(MatrixObject * self) { float scale[3], rot[3]; @@ -419,12 +459,23 @@ PyObject *Matrix_scalePart(MatrixObject * self) return newVectorObject(scale, 3, Py_NEW, NULL); } /*---------------------------Matrix.invert() ---------------------*/ +static char Matrix_Invert_doc[] = +".. method:: invert()\n" +"\n" +" Set the matrix to its inverse.\n" +"\n" +" :return: an instance of itself.\n" +" :rtype: :class:`Matrix`\n" +"\n" +" .. note:: :exc:`ValueError` exception is raised.\n" +"\n" +" .. seealso:: <http://en.wikipedia.org/wiki/Inverse_matrix>\n"; + PyObject *Matrix_Invert(MatrixObject * self) { int x, y, z = 0; float det = 0.0f; - PyObject *f = NULL; float mat[16] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}; @@ -437,9 +488,7 @@ PyObject *Matrix_Invert(MatrixObject * self) } /*calculate the determinant*/ - f = Matrix_Determinant(self); - det = (float)PyFloat_AS_DOUBLE(f); /*Increfs, so we need to decref*/ - Py_DECREF(f); + det = matrix_determinant(self); if(det != 0) { /*calculate the classical adjoint*/ @@ -478,10 +527,18 @@ PyObject *Matrix_Invert(MatrixObject * self) /*---------------------------Matrix.determinant() ----------------*/ +static char Matrix_Determinant_doc[] = +".. method:: determinant()\n" +"\n" +" Return the determinant of a matrix.\n" +"\n" +" :return: Return a the determinant of a matrix.\n" +" :rtype: float\n" +"\n" +" .. seealso:: <http://en.wikipedia.org/wiki/Determinant>\n"; + PyObject *Matrix_Determinant(MatrixObject * self) { - float det = 0.0f; - if(!BaseMath_ReadCallback(self)) return NULL; @@ -490,22 +547,19 @@ PyObject *Matrix_Determinant(MatrixObject * self) return NULL; } - if(self->rowSize == 2) { - det = determinant_m2(self->matrix[0][0], self->matrix[0][1], - self->matrix[1][0], self->matrix[1][1]); - } else if(self->rowSize == 3) { - det = determinant_m3(self->matrix[0][0], self->matrix[0][1], - self->matrix[0][2], self->matrix[1][0], - self->matrix[1][1], self->matrix[1][2], - self->matrix[2][0], self->matrix[2][1], - self->matrix[2][2]); - } else { - det = determinant_m4((float (*)[4]) *self->matrix); - } - - return PyFloat_FromDouble( (double) det ); + return PyFloat_FromDouble((double)matrix_determinant(self)); } /*---------------------------Matrix.transpose() ------------------*/ +static char Matrix_Transpose_doc[] = +".. method:: transpose()\n" +"\n" +" Set the matrix to its transpose.\n" +"\n" +" :return: an instance of itself\n" +" :rtype: :class:`Matrix`\n" +"\n" +" .. seealso:: <http://en.wikipedia.org/wiki/Transpose>\n"; + PyObject *Matrix_Transpose(MatrixObject * self) { float t = 0.0f; @@ -535,6 +589,14 @@ PyObject *Matrix_Transpose(MatrixObject * self) /*---------------------------Matrix.zero() -----------------------*/ +static char Matrix_Zero_doc[] = +".. method:: zero()\n" +"\n" +" Set all the matrix values to zero.\n" +"\n" +" :return: an instance of itself\n" +" :rtype: :class:`Matrix`\n"; + PyObject *Matrix_Zero(MatrixObject * self) { int row, col; @@ -552,6 +614,18 @@ PyObject *Matrix_Zero(MatrixObject * self) return (PyObject *)self; } /*---------------------------Matrix.identity(() ------------------*/ +static char Matrix_Identity_doc[] = +".. method:: identity()\n" +"\n" +" Set the matrix to the identity matrix.\n" +"\n" +" :return: an instance of itself\n" +" :rtype: :class:`Matrix`\n" +"\n" +" .. note:: An object with zero location and rotation, a scale of one, will have an identity matrix.\n" +"\n" +" .. seealso:: <http://en.wikipedia.org/wiki/Identity_matrix>\n"; + PyObject *Matrix_Identity(MatrixObject * self) { if(!BaseMath_ReadCallback(self)) @@ -580,7 +654,15 @@ PyObject *Matrix_Identity(MatrixObject * self) return (PyObject *)self; } -/*---------------------------Matrix.inverted() ------------------*/ +/*---------------------------Matrix.copy() ------------------*/ +static char Matrix_copy_doc[] = +".. method:: copy()\n" +"\n" +" Returns a copy of this matrix.\n" +"\n" +" :return: an instance of itself\n" +" :rtype: :class:`Matrix`\n"; + PyObject *Matrix_copy(MatrixObject * self) { if(!BaseMath_ReadCallback(self)) @@ -1153,16 +1235,35 @@ static PyObject *Matrix_getMedianScale( MatrixObject * self, void *type ) /* Python attributes get/set structure: */ /*****************************************************************************/ static PyGetSetDef Matrix_getseters[] = { - {"row_size", (getter)Matrix_getRowSize, (setter)NULL, "", NULL}, - {"col_size", (getter)Matrix_getColSize, (setter)NULL, "", NULL}, - {"median_scale", (getter)Matrix_getMedianScale, (setter)NULL, "", NULL}, - {"wrapped", (getter)BaseMathObject_getWrapped, (setter)NULL, "", NULL}, - {"_owner",(getter)BaseMathObject_getOwner, (setter)NULL, "", - NULL}, + {"row_size", (getter)Matrix_getRowSize, (setter)NULL, "The row size of the matrix (readonly). **type** int", NULL}, + {"col_size", (getter)Matrix_getColSize, (setter)NULL, "The column size of the matrix (readonly). **type** int", NULL}, + {"median_scale", (getter)Matrix_getMedianScale, (setter)NULL, "The average scale applied to each axis (readonly). **type** float", NULL}, + {"wrapped", (getter)BaseMathObject_getWrapped, (setter)NULL, BaseMathObject_Wrapped_doc, NULL}, + {"_owner",(getter)BaseMathObject_getOwner, (setter)NULL, BaseMathObject_Owner_doc, NULL}, {NULL,NULL,NULL,NULL,NULL} /* Sentinel */ }; +/*-----------------------METHOD DEFINITIONS ----------------------*/ +static struct PyMethodDef Matrix_methods[] = { + {"zero", (PyCFunction) Matrix_Zero, METH_NOARGS, Matrix_Zero_doc}, + {"identity", (PyCFunction) Matrix_Identity, METH_NOARGS, Matrix_Identity_doc}, + {"transpose", (PyCFunction) Matrix_Transpose, METH_NOARGS, Matrix_Transpose_doc}, + {"determinant", (PyCFunction) Matrix_Determinant, METH_NOARGS, Matrix_Determinant_doc}, + {"invert", (PyCFunction) Matrix_Invert, METH_NOARGS, Matrix_Invert_doc}, + {"translation_part", (PyCFunction) Matrix_TranslationPart, METH_NOARGS, Matrix_TranslationPart_doc}, + {"rotation_part", (PyCFunction) Matrix_RotationPart, METH_NOARGS, Matrix_RotationPart_doc}, + {"scale_part", (PyCFunction) Matrix_scalePart, METH_NOARGS, Matrix_scalePart_doc}, + {"resize4x4", (PyCFunction) Matrix_Resize4x4, METH_NOARGS, Matrix_Resize4x4_doc}, + {"to_euler", (PyCFunction) Matrix_toEuler, METH_VARARGS, Matrix_toEuler_doc}, + {"to_quat", (PyCFunction) Matrix_toQuat, METH_NOARGS, Matrix_toQuat_doc}, + {"copy", (PyCFunction) Matrix_copy, METH_NOARGS, Matrix_copy_doc}, + {"__copy__", (PyCFunction) Matrix_copy, METH_NOARGS, Matrix_copy_doc}, + {NULL, NULL, 0, NULL} +}; + /*------------------PY_OBECT DEFINITION--------------------------*/ +static char matrix_doc[] = "This object gives access to Matrices in Blender."; + PyTypeObject matrix_Type = { PyVarObject_HEAD_INIT(NULL, 0) "matrix", /*tp_name*/ @@ -1184,7 +1285,7 @@ PyTypeObject matrix_Type = { 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ - 0, /*tp_doc*/ + matrix_doc, /*tp_doc*/ 0, /*tp_traverse*/ 0, /*tp_clear*/ (richcmpfunc)Matrix_richcmpr, /*tp_richcompare*/ diff --git a/source/blender/python/generic/quat.c b/source/blender/python/generic/quat.c index e739e1a5036..9b5016b91d7 100644 --- a/source/blender/python/generic/quat.c +++ b/source/blender/python/generic/quat.c @@ -32,137 +32,17 @@ #include "BKE_utildefines.h" #include "BLI_blenlib.h" - -//-------------------------DOC STRINGS --------------------------- - -static PyObject *Quaternion_Identity( QuaternionObject * self ); -static PyObject *Quaternion_Negate( QuaternionObject * self ); -static PyObject *Quaternion_Conjugate( QuaternionObject * self ); -static PyObject *Quaternion_Inverse( QuaternionObject * self ); -static PyObject *Quaternion_Normalize( QuaternionObject * self ); -static PyObject *Quaternion_ToEuler( QuaternionObject * self, PyObject *args ); -static PyObject *Quaternion_ToMatrix( QuaternionObject * self ); -static PyObject *Quaternion_Cross( QuaternionObject * self, QuaternionObject * value ); -static PyObject *Quaternion_Dot( QuaternionObject * self, QuaternionObject * value ); -static PyObject *Quaternion_copy( QuaternionObject * self ); - -//-----------------------METHOD DEFINITIONS ---------------------- -static struct PyMethodDef Quaternion_methods[] = { - {"identity", (PyCFunction) Quaternion_Identity, METH_NOARGS, NULL}, - {"negate", (PyCFunction) Quaternion_Negate, METH_NOARGS, NULL}, - {"conjugate", (PyCFunction) Quaternion_Conjugate, METH_NOARGS, NULL}, - {"inverse", (PyCFunction) Quaternion_Inverse, METH_NOARGS, NULL}, - {"normalize", (PyCFunction) Quaternion_Normalize, METH_NOARGS, NULL}, - {"toEuler", (PyCFunction) Quaternion_ToEuler, METH_VARARGS, NULL}, - {"toMatrix", (PyCFunction) Quaternion_ToMatrix, METH_NOARGS, NULL}, - {"cross", (PyCFunction) Quaternion_Cross, METH_O, NULL}, - {"dot", (PyCFunction) Quaternion_Dot, METH_O, NULL}, - {"__copy__", (PyCFunction) Quaternion_copy, METH_NOARGS, NULL}, - {"copy", (PyCFunction) Quaternion_copy, METH_NOARGS, NULL}, - {NULL, NULL, 0, NULL} -}; - -//----------------------------------Mathutils.Quaternion() -------------- -static PyObject *Quaternion_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{ - PyObject *listObject = NULL, *n, *q; - int size, i; - float quat[4]; - double angle = 0.0f; - - size = PyTuple_GET_SIZE(args); - if (size == 1 || size == 2) { //seq? - listObject = PyTuple_GET_ITEM(args, 0); - if (PySequence_Check(listObject)) { - size = PySequence_Length(listObject); - if ((size == 4 && PySequence_Length(args) !=1) || - (size == 3 && PySequence_Length(args) !=2) || (size >4 || size < 3)) { - // invalid args/size - PyErr_SetString(PyExc_AttributeError, "Mathutils.Quaternion(): 4d numeric sequence expected or 3d vector and number\n"); - return NULL; - } - if(size == 3){ //get angle in axis/angle - n = PySequence_GetItem(args, 1); - if(n == NULL) { // parsed item not a number or getItem fail - PyErr_SetString(PyExc_TypeError, "Mathutils.Quaternion(): 4d numeric sequence expected or 3d vector and number\n"); - return NULL; - } - - angle = PyFloat_AsDouble(n); - Py_DECREF(n); - - if (angle==-1 && PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, "Mathutils.Quaternion(): 4d numeric sequence expected or 3d vector and number\n"); - return NULL; - } - } - }else{ - listObject = PyTuple_GET_ITEM(args, 1); - if (size>1 && PySequence_Check(listObject)) { - size = PySequence_Length(listObject); - if (size != 3) { - // invalid args/size - PyErr_SetString(PyExc_AttributeError, "Mathutils.Quaternion(): 4d numeric sequence expected or 3d vector and number\n"); - return NULL; - } - angle = PyFloat_AsDouble(PyTuple_GET_ITEM(args, 0)); - - if (angle==-1 && PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, "Mathutils.Quaternion(): 4d numeric sequence expected or 3d vector and number\n"); - return NULL; - } - } else { // argument was not a sequence - PyErr_SetString(PyExc_TypeError, "Mathutils.Quaternion(): 4d numeric sequence expected or 3d vector and number\n"); - return NULL; - } - } - } else if (size == 0) { //returns a new empty quat - return newQuaternionObject(NULL, Py_NEW, NULL); - } else { - listObject = args; - } - - if (size == 3) { // invalid quat size - if(PySequence_Length(args) != 2){ - PyErr_SetString(PyExc_AttributeError, "Mathutils.Quaternion(): 4d numeric sequence expected or 3d vector and number\n"); - return NULL; - } - }else{ - if(size != 4){ - PyErr_SetString(PyExc_AttributeError, "Mathutils.Quaternion(): 4d numeric sequence expected or 3d vector and number\n"); - return NULL; - } - } - - for (i=0; i<size; i++) { //parse - q = PySequence_GetItem(listObject, i); - if (q == NULL) { // Failed to read sequence - PyErr_SetString(PyExc_RuntimeError, "Mathutils.Quaternion(): 4d numeric sequence expected or 3d vector and number\n"); - return NULL; - } - - quat[i] = PyFloat_AsDouble(q); - Py_DECREF(q); - - if (quat[i]==-1 && PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, "Mathutils.Quaternion(): 4d numeric sequence expected or 3d vector and number\n"); - return NULL; - } - } - - if(size == 3) //calculate the quat based on axis/angle -#ifdef USE_MATHUTILS_DEG - axis_angle_to_quat(quat, quat, angle * (Py_PI / 180)); -#else - axis_angle_to_quat(quat, quat, angle); -#endif - - return newQuaternionObject(quat, Py_NEW, NULL); -} - //-----------------------------METHODS------------------------------ -//----------------------------Quaternion.toEuler()------------------ -//return the quat as a euler +static char Quaternion_ToEuler_doc[] = +".. method:: to_euler(euler_compat)\n" +"\n" +" Return Euler representation of the quaternion.\n" +"\n" +" :arg euler_compat: Optional euler argument the new euler will be made compatible with (no axis flipping between them). Useful for converting a series of matrices to animation curves.\n" +" :type euler_compat: :class:`Euler`\n" +" :return: Euler representation of the quaternion.\n" +" :rtype: :class:`Euler`\n"; + static PyObject *Quaternion_ToEuler(QuaternionObject * self, PyObject *args) { float eul[3]; @@ -212,7 +92,14 @@ static PyObject *Quaternion_ToEuler(QuaternionObject * self, PyObject *args) return newEulerObject(eul, Py_NEW, NULL); } //----------------------------Quaternion.toMatrix()------------------ -//return the quat as a matrix +static char Quaternion_ToMatrix_doc[] = +".. method:: to_matrix(other)\n" +"\n" +" Return a matrix representation of the quaternion.\n" +"\n" +" :return: A 3x3 rotation matrix representation of the quaternion.\n" +" :rtype: :class:`Matrix`\n"; + static PyObject *Quaternion_ToMatrix(QuaternionObject * self) { float mat[9]; /* all values are set */ @@ -225,7 +112,16 @@ static PyObject *Quaternion_ToMatrix(QuaternionObject * self) } //----------------------------Quaternion.cross(other)------------------ -//return the cross quat +static char Quaternion_Cross_doc[] = +".. method:: cross(other)\n" +"\n" +" Return the cross product of this quaternion and another.\n" +"\n" +" :arg other: The other quaternion to perform the cross product with.\n" +" :type other: :class:`Quaternion`\n" +" :return: The cross product.\n" +" :rtype: :class:`Quaternion`\n"; + static PyObject *Quaternion_Cross(QuaternionObject * self, QuaternionObject * value) { float quat[4]; @@ -243,7 +139,16 @@ static PyObject *Quaternion_Cross(QuaternionObject * self, QuaternionObject * va } //----------------------------Quaternion.dot(other)------------------ -//return the dot quat +static char Quaternion_Dot_doc[] = +".. method:: dot(other)\n" +"\n" +" Return the dot product of this quaternion and another.\n" +"\n" +" :arg other: The other quaternion to perform the dot product with.\n" +" :type other: :class:`Quaternion`\n" +" :return: The dot product.\n" +" :rtype: :class:`Quaternion`\n"; + static PyObject *Quaternion_Dot(QuaternionObject * self, QuaternionObject * value) { if (!QuaternionObject_Check(value)) { @@ -257,8 +162,90 @@ static PyObject *Quaternion_Dot(QuaternionObject * self, QuaternionObject * valu return PyFloat_FromDouble(dot_qtqt(self->quat, value->quat)); } +static char Quaternion_Difference_doc[] = +".. function:: difference(other)\n" +"\n" +" Returns a quaternion representing the rotational difference.\n" +"\n" +" :arg other: second quaternion.\n" +" :type other: :class:`Quaternion`\n" +" :return: the rotational difference between the two quat rotations.\n" +" :rtype: :class:`Quaternion`\n"; + +static PyObject *Quaternion_Difference(QuaternionObject * self, QuaternionObject * value) +{ + float quat[4], tempQuat[4]; + double dot = 0.0f; + int x; + + if (!QuaternionObject_Check(value)) { + PyErr_SetString( PyExc_TypeError, "quat.difference(value): expected a quaternion argument" ); + return NULL; + } + + if(!BaseMath_ReadCallback(self) || !BaseMath_ReadCallback(value)) + return NULL; + + tempQuat[0] = self->quat[0]; + tempQuat[1] = - self->quat[1]; + tempQuat[2] = - self->quat[2]; + tempQuat[3] = - self->quat[3]; + + dot = sqrt(tempQuat[0] * tempQuat[0] + tempQuat[1] * tempQuat[1] + + tempQuat[2] * tempQuat[2] + tempQuat[3] * tempQuat[3]); + + for(x = 0; x < 4; x++) { + tempQuat[x] /= (float)(dot * dot); + } + mul_qt_qtqt(quat, tempQuat, value->quat); + return newQuaternionObject(quat, Py_NEW, NULL); +} + +static char Quaternion_Slerp_doc[] = +".. function:: slerp(other, factor)\n" +"\n" +" Returns the interpolation of two quaternions.\n" +"\n" +" :arg other: value to interpolate with.\n" +" :type other: :class:`Quaternion`\n" +" :arg factor: The interpolation value in [0.0, 1.0].\n" +" :type factor: float\n" +" :return: The interpolated rotation.\n" +" :rtype: :class:`Quaternion`\n"; + +static PyObject *Quaternion_Slerp(QuaternionObject *self, PyObject *args) +{ + QuaternionObject *value; + float quat[4], fac; + + if(!PyArg_ParseTuple(args, "O!f", &quaternion_Type, &value, &fac)) { + PyErr_SetString(PyExc_TypeError, "Mathutils.Slerp(): expected Quaternion types and float"); + return NULL; + } + + if(!BaseMath_ReadCallback(self) || !BaseMath_ReadCallback(value)) + return NULL; + + if(fac > 1.0f || fac < 0.0f) { + PyErr_SetString(PyExc_AttributeError, "Mathutils.Slerp(): interpolation factor must be between 0.0 and 1.0"); + return NULL; + } + + interp_qt_qtqt(quat, self->quat, value->quat, fac); + + return newQuaternionObject(quat, Py_NEW, NULL); +} + //----------------------------Quaternion.normalize()---------------- //normalize the axis of rotation of [theta,vector] +static char Quaternion_Normalize_doc[] = +".. function:: normalize()\n" +"\n" +" Normalize the quaternion.\n" +"\n" +" :return: an instance of itself.\n" +" :rtype: :class:`Quaternion`\n"; + static PyObject *Quaternion_Normalize(QuaternionObject * self) { if(!BaseMath_ReadCallback(self)) @@ -271,7 +258,14 @@ static PyObject *Quaternion_Normalize(QuaternionObject * self) return (PyObject*)self; } //----------------------------Quaternion.inverse()------------------ -//invert the quat +static char Quaternion_Inverse_doc[] = +".. function:: inverse()\n" +"\n" +" Set the quaternion to its inverse.\n" +"\n" +" :return: an instance of itself.\n" +" :rtype: :class:`Quaternion`\n"; + static PyObject *Quaternion_Inverse(QuaternionObject * self) { if(!BaseMath_ReadCallback(self)) @@ -284,7 +278,14 @@ static PyObject *Quaternion_Inverse(QuaternionObject * self) return (PyObject*)self; } //----------------------------Quaternion.identity()----------------- -//generate the identity quaternion +static char Quaternion_Identity_doc[] = +".. function:: identity()\n" +"\n" +" Set the quaternion to an identity quaternion.\n" +"\n" +" :return: an instance of itself.\n" +" :rtype: :class:`Quaternion`\n"; + static PyObject *Quaternion_Identity(QuaternionObject * self) { if(!BaseMath_ReadCallback(self)) @@ -297,7 +298,14 @@ static PyObject *Quaternion_Identity(QuaternionObject * self) return (PyObject*)self; } //----------------------------Quaternion.negate()------------------- -//negate the quat +static char Quaternion_Negate_doc[] = +".. function:: negate()\n" +"\n" +" Set the quaternion to its negative.\n" +"\n" +" :return: an instance of itself.\n" +" :rtype: :class:`Quaternion`\n"; + static PyObject *Quaternion_Negate(QuaternionObject * self) { if(!BaseMath_ReadCallback(self)) @@ -310,7 +318,14 @@ static PyObject *Quaternion_Negate(QuaternionObject * self) return (PyObject*)self; } //----------------------------Quaternion.conjugate()---------------- -//negate the vector part +static char Quaternion_Conjugate_doc[] = +".. function:: conjugate()\n" +"\n" +" Set the quaternion to its conjugate (negate x, y, z).\n" +"\n" +" :return: an instance of itself.\n" +" :rtype: :class:`Quaternion`\n"; + static PyObject *Quaternion_Conjugate(QuaternionObject * self) { if(!BaseMath_ReadCallback(self)) @@ -323,7 +338,16 @@ static PyObject *Quaternion_Conjugate(QuaternionObject * self) return (PyObject*)self; } //----------------------------Quaternion.copy()---------------- -//return a copy of the quat +static char Quaternion_copy_doc[] = +".. function:: copy()\n" +"\n" +" Returns a copy of this quaternion.\n" +"\n" +" :return: A copy of the quaternion.\n" +" :rtype: :class:`Quaternion`\n" +"\n" +" .. note:: use this to get a copy of a wrapped quaternion with no reference to the original data.\n"; + static PyObject *Quaternion_copy(QuaternionObject * self) { if(!BaseMath_ReadCallback(self)) @@ -702,53 +726,142 @@ static PyObject *Quaternion_getAxisVec( QuaternionObject * self, void *type ) return (PyObject *) newVectorObject(vec, 3, Py_NEW, NULL); } +//----------------------------------Mathutils.Quaternion() -------------- +static PyObject *Quaternion_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + PyObject *listObject = NULL, *n, *q; + int size, i; + float quat[4]; + double angle = 0.0f; + + size = PyTuple_GET_SIZE(args); + if (size == 1 || size == 2) { //seq? + listObject = PyTuple_GET_ITEM(args, 0); + if (PySequence_Check(listObject)) { + size = PySequence_Length(listObject); + if ((size == 4 && PySequence_Length(args) !=1) || + (size == 3 && PySequence_Length(args) !=2) || (size >4 || size < 3)) { + // invalid args/size + PyErr_SetString(PyExc_AttributeError, "Mathutils.Quaternion(): 4d numeric sequence expected or 3d vector and number\n"); + return NULL; + } + if(size == 3){ //get angle in axis/angle + n = PySequence_GetItem(args, 1); + if(n == NULL) { // parsed item not a number or getItem fail + PyErr_SetString(PyExc_TypeError, "Mathutils.Quaternion(): 4d numeric sequence expected or 3d vector and number\n"); + return NULL; + } + + angle = PyFloat_AsDouble(n); + Py_DECREF(n); + + if (angle==-1 && PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, "Mathutils.Quaternion(): 4d numeric sequence expected or 3d vector and number\n"); + return NULL; + } + } + }else{ + listObject = PyTuple_GET_ITEM(args, 1); + if (size>1 && PySequence_Check(listObject)) { + size = PySequence_Length(listObject); + if (size != 3) { + // invalid args/size + PyErr_SetString(PyExc_AttributeError, "Mathutils.Quaternion(): 4d numeric sequence expected or 3d vector and number\n"); + return NULL; + } + angle = PyFloat_AsDouble(PyTuple_GET_ITEM(args, 0)); + + if (angle==-1 && PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, "Mathutils.Quaternion(): 4d numeric sequence expected or 3d vector and number\n"); + return NULL; + } + } else { // argument was not a sequence + PyErr_SetString(PyExc_TypeError, "Mathutils.Quaternion(): 4d numeric sequence expected or 3d vector and number\n"); + return NULL; + } + } + } else if (size == 0) { //returns a new empty quat + return newQuaternionObject(NULL, Py_NEW, NULL); + } else { + listObject = args; + } + + if (size == 3) { // invalid quat size + if(PySequence_Length(args) != 2){ + PyErr_SetString(PyExc_AttributeError, "Mathutils.Quaternion(): 4d numeric sequence expected or 3d vector and number\n"); + return NULL; + } + }else{ + if(size != 4){ + PyErr_SetString(PyExc_AttributeError, "Mathutils.Quaternion(): 4d numeric sequence expected or 3d vector and number\n"); + return NULL; + } + } + + for (i=0; i<size; i++) { //parse + q = PySequence_GetItem(listObject, i); + if (q == NULL) { // Failed to read sequence + PyErr_SetString(PyExc_RuntimeError, "Mathutils.Quaternion(): 4d numeric sequence expected or 3d vector and number\n"); + return NULL; + } + + quat[i] = PyFloat_AsDouble(q); + Py_DECREF(q); + + if (quat[i]==-1 && PyErr_Occurred()) { + PyErr_SetString(PyExc_TypeError, "Mathutils.Quaternion(): 4d numeric sequence expected or 3d vector and number\n"); + return NULL; + } + } + + if(size == 3) //calculate the quat based on axis/angle +#ifdef USE_MATHUTILS_DEG + axis_angle_to_quat(quat, quat, angle * (Py_PI / 180)); +#else + axis_angle_to_quat(quat, quat, angle); +#endif + + return newQuaternionObject(quat, Py_NEW, NULL); +} + + +//-----------------------METHOD DEFINITIONS ---------------------- +static struct PyMethodDef Quaternion_methods[] = { + {"identity", (PyCFunction) Quaternion_Identity, METH_NOARGS, Quaternion_Identity_doc}, + {"negate", (PyCFunction) Quaternion_Negate, METH_NOARGS, Quaternion_Negate_doc}, + {"conjugate", (PyCFunction) Quaternion_Conjugate, METH_NOARGS, Quaternion_Conjugate_doc}, + {"inverse", (PyCFunction) Quaternion_Inverse, METH_NOARGS, Quaternion_Inverse_doc}, + {"normalize", (PyCFunction) Quaternion_Normalize, METH_NOARGS, Quaternion_Normalize_doc}, + {"to_euler", (PyCFunction) Quaternion_ToEuler, METH_VARARGS, Quaternion_ToEuler_doc}, + {"to_matrix", (PyCFunction) Quaternion_ToMatrix, METH_NOARGS, Quaternion_ToMatrix_doc}, + {"cross", (PyCFunction) Quaternion_Cross, METH_O, Quaternion_Cross_doc}, + {"dot", (PyCFunction) Quaternion_Dot, METH_O, Quaternion_Dot_doc}, + {"difference", (PyCFunction) Quaternion_Difference, METH_O, Quaternion_Difference_doc}, + {"slerp", (PyCFunction) Quaternion_Slerp, METH_VARARGS, Quaternion_Slerp_doc}, + {"__copy__", (PyCFunction) Quaternion_copy, METH_NOARGS, Quaternion_copy_doc}, + {"copy", (PyCFunction) Quaternion_copy, METH_NOARGS, Quaternion_copy_doc}, + {NULL, NULL, 0, NULL} +}; /*****************************************************************************/ /* Python attributes get/set structure: */ /*****************************************************************************/ static PyGetSetDef Quaternion_getseters[] = { - {"w", - (getter)Quaternion_getAxis, (setter)Quaternion_setAxis, - "Quaternion W value", - (void *)0}, - {"x", - (getter)Quaternion_getAxis, (setter)Quaternion_setAxis, - "Quaternion X axis", - (void *)1}, - {"y", - (getter)Quaternion_getAxis, (setter)Quaternion_setAxis, - "Quaternion Y axis", - (void *)2}, - {"z", - (getter)Quaternion_getAxis, (setter)Quaternion_setAxis, - "Quaternion Z axis", - (void *)3}, - {"magnitude", - (getter)Quaternion_getMagnitude, (setter)NULL, - "Size of the quaternion", - NULL}, - {"angle", - (getter)Quaternion_getAngle, (setter)NULL, - "angle of the quaternion", - NULL}, - {"axis", - (getter)Quaternion_getAxisVec, (setter)NULL, - "quaternion axis as a vector", - NULL}, - {"wrapped", - (getter)BaseMathObject_getWrapped, (setter)NULL, - "True when this wraps blenders internal data", - NULL}, - {"_owner", - (getter)BaseMathObject_getOwner, (setter)NULL, - "Read only owner for vectors that depend on another object", - NULL}, - + {"w", (getter)Quaternion_getAxis, (setter)Quaternion_setAxis, "Quaternion W value. **type** float", (void *)0}, + {"x", (getter)Quaternion_getAxis, (setter)Quaternion_setAxis, "Quaternion X axis. **type** float", (void *)1}, + {"y", (getter)Quaternion_getAxis, (setter)Quaternion_setAxis, "Quaternion Y axis. **type** float", (void *)2}, + {"z", (getter)Quaternion_getAxis, (setter)Quaternion_setAxis, "Quaternion Z axis. **type** float", (void *)3}, + {"magnitude", (getter)Quaternion_getMagnitude, (setter)NULL, "Size of the quaternion (readonly). **type** float", NULL}, + {"angle", (getter)Quaternion_getAngle, (setter)NULL, "angle of the quaternion (readonly). **type** float", NULL}, + {"axis",(getter)Quaternion_getAxisVec, (setter)NULL, "quaternion axis as a vector (readonly). **type** :class:`Vector`", NULL}, + {"wrapped", (getter)BaseMathObject_getWrapped, (setter)NULL, BaseMathObject_Wrapped_doc, NULL}, + {"_owner", (getter)BaseMathObject_getOwner, (setter)NULL, BaseMathObject_Owner_doc, NULL}, {NULL,NULL,NULL,NULL,NULL} /* Sentinel */ }; - //------------------PY_OBECT DEFINITION-------------------------- +static char quaternion_doc[] = "This object gives access to Quaternions in Blender."; + PyTypeObject quaternion_Type = { PyVarObject_HEAD_INIT(NULL, 0) "quaternion", //tp_name @@ -770,7 +883,7 @@ PyTypeObject quaternion_Type = { 0, //tp_setattro 0, //tp_as_buffer Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, //tp_flags - 0, //tp_doc + quaternion_doc, //tp_doc 0, //tp_traverse 0, //tp_clear (richcmpfunc)Quaternion_richcmpr, //tp_richcompare @@ -843,3 +956,4 @@ PyObject *newQuaternionObject_cb(PyObject *cb_user, int cb_type, int cb_subtype) return (PyObject *)self; } + diff --git a/source/blender/python/generic/vector.c b/source/blender/python/generic/vector.c index 0713d60c6c2..784ea1a153f 100644 --- a/source/blender/python/generic/vector.c +++ b/source/blender/python/generic/vector.c @@ -41,37 +41,6 @@ static PyObject *row_vector_multiplication(VectorObject* vec, MatrixObject * mat); /* utility func */ -/*-----------------------METHOD DEFINITIONS ----------------------*/ -static PyObject *Vector_Zero( VectorObject * self ); -static PyObject *Vector_Normalize( VectorObject * self ); -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 ); -static PyObject *Vector_Dot( VectorObject * self, VectorObject * value ); -static PyObject *Vector_copy( VectorObject * self ); - -static struct PyMethodDef Vector_methods[] = { - {"zero", (PyCFunction) Vector_Zero, METH_NOARGS, NULL}, - {"normalize", (PyCFunction) Vector_Normalize, METH_NOARGS, NULL}, - {"negate", (PyCFunction) Vector_Negate, METH_NOARGS, NULL}, - {"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}, - {"dot", ( PyCFunction ) Vector_Dot, METH_O, NULL}, - {"copy", (PyCFunction) Vector_copy, METH_NOARGS, NULL}, - {"__copy__", (PyCFunction) Vector_copy, METH_NOARGS, NULL}, - {NULL, NULL, 0, NULL} -}; - //----------------------------------Mathutils.Vector() ------------------ // Supports 2D, 3D, and 4D vector objects both int and float values // accepted. Mixed float and int values accepted. Ints are parsed to float @@ -124,8 +93,14 @@ static PyObject *Vector_new(PyTypeObject *type, PyObject *args, PyObject *kwds) } /*-----------------------------METHODS---------------------------- */ -/*----------------------------Vector.zero() ---------------------- - set the vector data to 0,0,0 */ +static char Vector_Zero_doc[] = +".. method:: zero()\n" +"\n" +" Set all values to zero.\n" +"\n" +" :return: an instance of itself\n" +" :rtype: :class:`Vector`\n"; + static PyObject *Vector_Zero(VectorObject * self) { int i; @@ -137,8 +112,19 @@ static PyObject *Vector_Zero(VectorObject * self) Py_INCREF(self); return (PyObject*)self; } -/*----------------------------Vector.normalize() ----------------- - normalize the vector data to a unit vector */ +/*----------------------------Vector.normalize() ----------------- */ +static char Vector_Normalize_doc[] = +".. method:: normalize()\n" +"\n" +" Normalize the vector, making the length of the vector always 1.0.\n" +"\n" +" :return: an instance of itself\n" +" :rtype: :class:`Vector`\n" +"\n" +" .. warning:: Normalizing a vector where all values are zero results in all axis having a nan value (not a number).\n" +"\n" +" .. note:: Normalize works for vectors of all sizes, however 4D Vectors w axis is left untouched.\n"; + static PyObject *Vector_Normalize(VectorObject * self) { int i; @@ -161,8 +147,15 @@ static PyObject *Vector_Normalize(VectorObject * self) } -/*----------------------------Vector.resize2D() ------------------ - resize the vector to x,y */ +/*----------------------------Vector.resize2D() ------------------ */ +static char Vector_Resize2D_doc[] = +".. method:: resize2D()\n" +"\n" +" Resize the vector to 2D (x, y).\n" +"\n" +" :return: an instance of itself\n" +" :rtype: :class:`Vector`\n"; + static PyObject *Vector_Resize2D(VectorObject * self) { if(self->wrapped==Py_WRAP) { @@ -184,8 +177,15 @@ static PyObject *Vector_Resize2D(VectorObject * self) Py_INCREF(self); return (PyObject*)self; } -/*----------------------------Vector.resize3D() ------------------ - resize the vector to x,y,z */ +/*----------------------------Vector.resize3D() ------------------ */ +static char Vector_Resize3D_doc[] = +".. method:: resize3D()\n" +"\n" +" Resize the vector to 3D (x, y, z).\n" +"\n" +" :return: an instance of itself\n" +" :rtype: :class:`Vector`\n"; + static PyObject *Vector_Resize3D(VectorObject * self) { if (self->wrapped==Py_WRAP) { @@ -210,8 +210,15 @@ static PyObject *Vector_Resize3D(VectorObject * self) Py_INCREF(self); return (PyObject*)self; } -/*----------------------------Vector.resize4D() ------------------ - resize the vector to x,y,z,w */ +/*----------------------------Vector.resize4D() ------------------ */ +static char Vector_Resize4D_doc[] = +".. method:: resize4D()\n" +"\n" +" Resize the vector to 4D (x, y, z, w).\n" +"\n" +" :return: an instance of itself\n" +" :rtype: :class:`Vector`\n"; + static PyObject *Vector_Resize4D(VectorObject * self) { if(self->wrapped==Py_WRAP) { @@ -239,8 +246,17 @@ static PyObject *Vector_Resize4D(VectorObject * self) return (PyObject*)self; } -/*----------------------------Vector.resize4D() ------------------ - resize the vector to x,y,z,w */ +/*----------------------------Vector.toTuple() ------------------ */ +static char Vector_ToTuple_doc[] = +".. method:: to_tuple(precision)\n" +"\n" +" Return this vector as a tuple with.\n" +"\n" +" :arg precision: The number to round the value to in [0, 21].\n" +" :type precision: int\n" +" :return: the values of the vector rounded by *precision*\n" +" :rtype: tuple\n"; + static PyObject *Vector_ToTuple(VectorObject * self, PyObject *value) { int ndigits= PyLong_AsSsize_t(value); @@ -265,8 +281,19 @@ static PyObject *Vector_ToTuple(VectorObject * self, PyObject *value) return ret; } -/*----------------------------Vector.toTrackQuat(track, up) ---------------------- - extract a quaternion from the vector and the track and up axis */ +/*----------------------------Vector.toTrackQuat(track, up) ---------------------- */ +static char Vector_ToTrackQuat_doc[] = +".. method:: to_track_quat(track, up)\n" +"\n" +" Return a quaternion rotation from the vector and the track and up axis.\n" +"\n" +" :arg track: Track axis in ['X', 'Y', 'Z', '-X', '-Y', '-Z'].\n" +" :type track: string\n" +" :arg up: Up axis in ['X', 'Y', 'Z'].\n" +" :type up: string\n" +" :return: rotation from the vector and the track and up axis." +" :rtype: :class:`Quaternion`\n"; + static PyObject *Vector_ToTrackQuat( VectorObject * self, PyObject * args ) { float vec[3], quat[4]; @@ -290,14 +317,11 @@ static PyObject *Vector_ToTrackQuat( VectorObject * self, PyObject * args ) if (strack[0] == '-') { switch(strack[1]) { case 'X': - case 'x': track = 3; break; case 'Y': - case 'y': track = 4; break; - case 'z': case 'Z': track = 5; break; @@ -315,14 +339,11 @@ static PyObject *Vector_ToTrackQuat( VectorObject * self, PyObject * args ) switch(strack[0]) { case '-': case 'X': - case 'x': track = 0; break; case 'Y': - case 'y': track = 1; break; - case 'z': case 'Z': track = 2; break; @@ -341,14 +362,11 @@ static PyObject *Vector_ToTrackQuat( VectorObject * self, PyObject * args ) if (strlen(sup) == 1) { switch(*sup) { case 'X': - case 'x': up = 0; break; - case 'Y': case 'y': up = 1; break; - case 'z': case 'Z': up = 2; break; @@ -385,6 +403,16 @@ static PyObject *Vector_ToTrackQuat( VectorObject * self, PyObject * args ) return a reflected vector on the mirror normal vec - ((2 * DotVecs(vec, mirror)) * mirror) */ +static char Vector_Reflect_doc[] = +".. method:: reflect(mirror)\n" +"\n" +" Return the reflection vector from the *mirror* argument.\n" +"\n" +" :arg mirror: This vector could be a normal from the reflecting surface.\n" +" :type mirror: :class:`Vector`\n" +" :return: The reflected vector matching the size of this vector.\n" +" :rtype: :class:`Vector`\n"; + static PyObject *Vector_Reflect( VectorObject * self, VectorObject * value ) { float mirror[3], vec[3]; @@ -408,11 +436,24 @@ static PyObject *Vector_Reflect( VectorObject * self, VectorObject * value ) if (self->size > 2) vec[2] = self->vec[2]; else vec[2] = 0.0; + normalize_v3(mirror); reflect_v3_v3v3(reflect, vec, mirror); return newVectorObject(reflect, self->size, Py_NEW, NULL); } +static char Vector_Cross_doc[] = +".. method:: cross(other)\n" +"\n" +" Return the cross product of this vector and another.\n" +"\n" +" :arg other: The other vector to perform the cross product with.\n" +" :type other: :class:`Vector`\n" +" :return: The cross product.\n" +" :rtype: :class:`Vector`\n" +"\n" +" .. note:: both vectors must be 3D\n"; + static PyObject *Vector_Cross( VectorObject * self, VectorObject * value ) { VectorObject *vecCross = NULL; @@ -435,13 +476,23 @@ static PyObject *Vector_Cross( VectorObject * self, VectorObject * value ) return (PyObject *)vecCross; } +static char Vector_Dot_doc[] = +".. method:: dot(other)\n" +"\n" +" Return the dot product of this vector and another.\n" +"\n" +" :arg other: The other vector to perform the dot product with.\n" +" :type other: :class:`Vector`\n" +" :return: The dot product.\n" +" :rtype: :class:`Vector`\n"; + static PyObject *Vector_Dot( VectorObject * self, VectorObject * value ) { double dot = 0.0; int x; if (!VectorObject_Check(value)) { - PyErr_SetString( PyExc_TypeError, "vec.cross(value): expected a vector argument" ); + PyErr_SetString( PyExc_TypeError, "vec.dot(value): expected a vector argument" ); return NULL; } @@ -459,8 +510,193 @@ static PyObject *Vector_Dot( VectorObject * self, VectorObject * value ) return PyFloat_FromDouble(dot); } -/*----------------------------Vector.copy() -------------------------------------- - return a copy of the vector */ +static char Vector_Angle_doc[] = +".. function:: angle(other)\n" +"\n" +" Return the angle between two vectors.\n" +"\n" +" :type other: :class:`Vector`\n" +" :return angle: angle in radians\n" +" :rtype: float\n" +"\n" +" .. note:: Zero length vectors raise an :exc:`AttributeError`.\n"; +static PyObject *Vector_Angle(VectorObject * self, VectorObject * value) +{ + double dot = 0.0f, angleRads, test_v1 = 0.0f, test_v2 = 0.0f; + int x, size; + + if (!VectorObject_Check(value)) { + PyErr_SetString( PyExc_TypeError, "vec.angle(value): expected a vector argument" ); + return NULL; + } + + if(self->size != value->size) { + PyErr_SetString(PyExc_AttributeError, "vec.angle(value): expects both vectors to have the same size\n"); + return NULL; + } + + if(!BaseMath_ReadCallback(self) || !BaseMath_ReadCallback(value)) + return NULL; + + //since size is the same.... + size = self->size; + + for(x = 0; x < size; x++) { + test_v1 += self->vec[x] * self->vec[x]; + test_v2 += value->vec[x] * value->vec[x]; + } + if (!test_v1 || !test_v2){ + PyErr_SetString(PyExc_AttributeError, "vector.angle(other): zero length vectors are not acceptable arguments\n"); + return NULL; + } + + //dot product + for(x = 0; x < size; x++) { + dot += self->vec[x] * value->vec[x]; + } + dot /= (sqrt(test_v1) * sqrt(test_v2)); + + angleRads = (double)saacos(dot); + +#ifdef USE_MATHUTILS_DEG + return PyFloat_FromDouble(angleRads * (180/ Py_PI)); +#else + return PyFloat_FromDouble(angleRads); +#endif +} + +static char Vector_Difference_doc[] = +".. function:: difference(other)\n" +"\n" +" Returns a quaternion representing the rotational difference between this vector and another.\n" +"\n" +" :arg other: second vector.\n" +" :type other: :class:`Vector`\n" +" :return: the rotational difference between the two vectors.\n" +" :rtype: :class:`Quaternion`\n" +"\n" +" .. note:: 2D vectors raise an :exc:`AttributeError`.\n";; + +static PyObject *Vector_Difference( VectorObject * self, VectorObject * value ) +{ + float quat[4], vec_a[3], vec_b[3]; + + if (!VectorObject_Check(value)) { + PyErr_SetString( PyExc_TypeError, "vec.difference(value): expected a vector argument" ); + return NULL; + } + + if(self->size < 3 || value->size < 3) { + PyErr_SetString(PyExc_AttributeError, "vec.difference(value): expects both vectors to be size 3 or 4\n"); + return NULL; + } + + if(!BaseMath_ReadCallback(self) || !BaseMath_ReadCallback(value)) + return NULL; + + normalize_v3_v3(vec_a, self->vec); + normalize_v3_v3(vec_b, value->vec); + + rotation_between_vecs_to_quat(quat, vec_a, vec_b); + + return newQuaternionObject(quat, Py_NEW, NULL); +} + +static char Vector_Project_doc[] = +".. function:: project(other)\n" +"\n" +" Return the projection of this vector onto the *other*.\n" +"\n" +" :type other: :class:`Vector`\n" +" :return projection: the parallel projection vector\n" +" :rtype: :class:`Vector`\n"; + +static PyObject *Vector_Project(VectorObject * self, VectorObject * value) +{ + float vec[4]; + double dot = 0.0f, dot2 = 0.0f; + int x, size; + + if (!VectorObject_Check(value)) { + PyErr_SetString( PyExc_TypeError, "vec.project(value): expected a vector argument" ); + return NULL; + } + + if(self->size != value->size) { + PyErr_SetString(PyExc_AttributeError, "vec.project(value): expects both vectors to have the same size\n"); + return NULL; + } + + if(!BaseMath_ReadCallback(self) || !BaseMath_ReadCallback(value)) + return NULL; + + + //since they are the same size... + size = self->size; + + //get dot products + for(x = 0; x < size; x++) { + dot += self->vec[x] * value->vec[x]; + dot2 += value->vec[x] * value->vec[x]; + } + //projection + dot /= dot2; + for(x = 0; x < size; x++) { + vec[x] = (float)(dot * value->vec[x]); + } + return newVectorObject(vec, size, Py_NEW, NULL); +} + +//----------------------------------Mathutils.MidpointVecs() ------------- +static char Vector_Lerp_doc[] = +".. function:: lerp(other, factor)\n" +"\n" +" Returns the interpolation of two vectors.\n" +"\n" +" :arg other: value to interpolate with.\n" +" :type other: :class:`Vector`\n" +" :arg factor: The interpolation value in [0.0, 1.0].\n" +" :type factor: float\n" +" :return: The interpolated rotation.\n" +" :rtype: :class:`Vector`\n"; + +static PyObject *Vector_Lerp(VectorObject * self, PyObject * args) +{ + VectorObject *vec2 = NULL; + float fac, ifac, vec[4]; + int x; + + if(!PyArg_ParseTuple(args, "O!f", &vector_Type, &vec2, &fac)) { + PyErr_SetString(PyExc_TypeError, "vector.lerp(): expects a vector of the same size and float"); + return NULL; + } + if(self->size != vec2->size) { + PyErr_SetString(PyExc_AttributeError, "Mathutils.MidpointVecs(): expects (2) vector objects of the same size"); + return NULL; + } + + if(!BaseMath_ReadCallback(self) || !BaseMath_ReadCallback(vec2)) + return NULL; + + ifac= 1.0 - fac; + + for(x = 0; x < self->size; x++) { + vec[x] = (ifac * self->vec[x]) + (fac * vec2->vec[x]); + } + return newVectorObject(vec, self->size, Py_NEW, NULL); +} + +/*----------------------------Vector.copy() -------------------------------------- */ +static char Vector_copy_doc[] = +".. function:: copy()\n" +"\n" +" Returns a copy of this vector.\n" +"\n" +" :return: A copy of the vector.\n" +" :rtype: :class:`Vector`\n" +"\n" +" .. note:: use this to get a copy of a wrapped vector with no reference to the original data.\n"; + static PyObject *Vector_copy(VectorObject * self) { if(!BaseMath_ReadCallback(self)) @@ -1287,7 +1523,7 @@ static PyObject *Vector_getSwizzle(VectorObject * self, void *closure) the destination is effectively re-ordered as defined by the swizzle. At most min(len(source), len(dest)) values will be copied. - If the value is scalar, it is copied to all axes listed in the swizzle. - - If an axis appears more than once in the swizzle, the final occurrance is + - If an axis appears more than once in the swizzle, the final occurrence is the one that determines its value. Returns 0 on success and -1 on failure. On failure, the vector will be @@ -1393,38 +1629,14 @@ static int Vector_setSwizzle(VectorObject * self, PyObject * value, void *closur /* Python attributes get/set structure: */ /*****************************************************************************/ static PyGetSetDef Vector_getseters[] = { - {"x", - (getter)Vector_getAxis, (setter)Vector_setAxis, - "Vector X axis", - (void *)0}, - {"y", - (getter)Vector_getAxis, (setter)Vector_setAxis, - "Vector Y axis", - (void *)1}, - {"z", - (getter)Vector_getAxis, (setter)Vector_setAxis, - "Vector Z axis", - (void *)2}, - {"w", - (getter)Vector_getAxis, (setter)Vector_setAxis, - "Vector Z axis", - (void *)3}, - {"length", - (getter)Vector_getLength, (setter)Vector_setLength, - "Vector Length", - NULL}, - {"magnitude", - (getter)Vector_getLength, (setter)Vector_setLength, - "Vector Length", - NULL}, - {"wrapped", - (getter)BaseMathObject_getWrapped, (setter)NULL, - "True when this wraps blenders internal data", - NULL}, - {"_owner", - (getter)BaseMathObject_getOwner, (setter)NULL, - "Read only owner for vectors that depend on another object", - NULL}, + {"x", (getter)Vector_getAxis, (setter)Vector_setAxis, "Vector X axis. **type** float", (void *)0}, + {"y", (getter)Vector_getAxis, (setter)Vector_setAxis, "Vector Y axis. **type** float", (void *)1}, + {"z", (getter)Vector_getAxis, (setter)Vector_setAxis, "Vector Z axis (3D Vectors only). **type** float", (void *)2}, + {"w", (getter)Vector_getAxis, (setter)Vector_setAxis, "Vector W axis (4D Vectors only). **type** float", (void *)3}, + {"length", (getter)Vector_getLength, (setter)Vector_setLength, "Vector Length. **type** float", NULL}, + {"magnitude", (getter)Vector_getLength, (setter)Vector_setLength, "Vector Length. **type** float", NULL}, + {"wrapped", (getter)BaseMathObject_getWrapped, (setter)NULL, BaseMathObject_Wrapped_doc, NULL}, + {"_owner", (getter)BaseMathObject_getOwner, (setter)NULL, BaseMathObject_Owner_doc, NULL}, /* autogenerated swizzle attrs, see python script below */ {"xx", (getter)Vector_getSwizzle, (setter)Vector_setSwizzle, NULL, SET_INT_IN_POINTER(((0|SWIZZLE_VALID_AXIS) | ((0|SWIZZLE_VALID_AXIS)<<SWIZZLE_BITS_PER_AXIS)))}, /* 36 */ @@ -1807,7 +2019,89 @@ if len(unique) != len(items): */ +//-----------------row_vector_multiplication (internal)----------- +//ROW VECTOR Multiplication - Vector X Matrix +//[x][y][z] * [1][4][7] +// [2][5][8] +// [3][6][9] +//vector/matrix multiplication IS NOT COMMUTATIVE!!!! +static PyObject *row_vector_multiplication(VectorObject* vec, MatrixObject * mat) +{ + float vecNew[4], vecCopy[4]; + double dot = 0.0f; + int x, y, z = 0, vec_size = vec->size; + + if(mat->colSize != vec_size){ + if(mat->colSize == 4 && vec_size != 3){ + PyErr_SetString(PyExc_AttributeError, "vector * matrix: matrix column size and the vector size must be the same"); + return NULL; + }else{ + vecCopy[3] = 1.0f; + } + } + + if(!BaseMath_ReadCallback(vec) || !BaseMath_ReadCallback(mat)) + return NULL; + + for(x = 0; x < vec_size; x++){ + vecCopy[x] = vec->vec[x]; + } + vecNew[3] = 1.0f; + //muliplication + for(x = 0; x < mat->rowSize; x++) { + for(y = 0; y < mat->colSize; y++) { + dot += mat->matrix[x][y] * vecCopy[y]; + } + vecNew[z++] = (float)dot; + dot = 0.0f; + } + return newVectorObject(vecNew, vec_size, Py_NEW, NULL); +} + +/*----------------------------Vector.negate() -------------------- */ +static char Vector_Negate_doc[] = +".. method:: negate()\n" +"\n" +" Set all values to their negative.\n" +"\n" +" :return: an instance of itself\n" +" :rtype: :class:`Vector`\n"; + +static PyObject *Vector_Negate(VectorObject * self) +{ + int i; + if(!BaseMath_ReadCallback(self)) + return NULL; + + for(i = 0; i < self->size; i++) + self->vec[i] = -(self->vec[i]); + + BaseMath_WriteCallback(self); // alredy checked for error + + Py_INCREF(self); + return (PyObject*)self; +} +static struct PyMethodDef Vector_methods[] = { + {"zero", (PyCFunction) Vector_Zero, METH_NOARGS, Vector_Zero_doc}, + {"normalize", (PyCFunction) Vector_Normalize, METH_NOARGS, Vector_Normalize_doc}, + {"negate", (PyCFunction) Vector_Negate, METH_NOARGS, Vector_Negate_doc}, + {"resize2D", (PyCFunction) Vector_Resize2D, METH_NOARGS, Vector_Resize2D_doc}, + {"resize3D", (PyCFunction) Vector_Resize3D, METH_NOARGS, Vector_Resize3D_doc}, + {"resize4D", (PyCFunction) Vector_Resize4D, METH_NOARGS, Vector_Resize4D_doc}, + {"to_tuple", (PyCFunction) Vector_ToTuple, METH_O, Vector_ToTuple_doc}, + {"to_track_quat", ( PyCFunction ) Vector_ToTrackQuat, METH_VARARGS, Vector_ToTrackQuat_doc}, + {"reflect", ( PyCFunction ) Vector_Reflect, METH_O, Vector_Reflect_doc}, + {"cross", ( PyCFunction ) Vector_Cross, METH_O, Vector_Cross_doc}, + {"dot", ( PyCFunction ) Vector_Dot, METH_O, Vector_Dot_doc}, + {"angle", ( PyCFunction ) Vector_Angle, METH_O, Vector_Angle_doc}, + {"difference", ( PyCFunction ) Vector_Difference, METH_O, Vector_Difference_doc}, + {"project", ( PyCFunction ) Vector_Project, METH_O, Vector_Project_doc}, + {"lerp", ( PyCFunction ) Vector_Lerp, METH_VARARGS, Vector_Lerp_doc}, + {"copy", (PyCFunction) Vector_copy, METH_NOARGS, Vector_copy_doc}, + {"__copy__", (PyCFunction) Vector_copy, METH_NOARGS, NULL}, + {NULL, NULL, 0, NULL} +}; /* Note @@ -1816,6 +2110,8 @@ if len(unique) != len(items): vec*mat and mat*vec both get sent to Vector_mul and it neesd to sort out the order */ +static char vector_doc[] = "This object gives access to Vectors in Blender."; + PyTypeObject vector_Type = { PyVarObject_HEAD_INIT(NULL, 0) /* For printing, in format "<module>.<name>" */ @@ -1851,7 +2147,7 @@ PyTypeObject vector_Type = { /*** Flags to define presence of optional/expanded features ***/ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, - NULL, /* char *tp_doc; Documentation string */ + vector_doc, /* char *tp_doc; Documentation string */ /*** Assigned meaning in release 2.0 ***/ /* call function for all accessible objects */ NULL, /* traverseproc tp_traverse; */ @@ -1896,7 +2192,6 @@ PyTypeObject vector_Type = { NULL }; - /*------------------------newVectorObject (internal)------------- creates a new vector object pass Py_WRAP - if vector is a WRAPPER for data allocated by BLENDER @@ -1955,59 +2250,3 @@ PyObject *newVectorObject_cb(PyObject *cb_user, int size, int cb_type, int cb_su return (PyObject *)self; } - -//-----------------row_vector_multiplication (internal)----------- -//ROW VECTOR Multiplication - Vector X Matrix -//[x][y][z] * [1][4][7] -// [2][5][8] -// [3][6][9] -//vector/matrix multiplication IS NOT COMMUTATIVE!!!! -static PyObject *row_vector_multiplication(VectorObject* vec, MatrixObject * mat) -{ - float vecNew[4], vecCopy[4]; - double dot = 0.0f; - int x, y, z = 0, vec_size = vec->size; - - if(mat->colSize != vec_size){ - if(mat->colSize == 4 && vec_size != 3){ - PyErr_SetString(PyExc_AttributeError, "vector * matrix: matrix column size and the vector size must be the same"); - return NULL; - }else{ - vecCopy[3] = 1.0f; - } - } - - if(!BaseMath_ReadCallback(vec) || !BaseMath_ReadCallback(mat)) - return NULL; - - for(x = 0; x < vec_size; x++){ - vecCopy[x] = vec->vec[x]; - } - vecNew[3] = 1.0f; - //muliplication - for(x = 0; x < mat->rowSize; x++) { - for(y = 0; y < mat->colSize; y++) { - dot += mat->matrix[x][y] * vecCopy[y]; - } - vecNew[z++] = (float)dot; - dot = 0.0f; - } - return newVectorObject(vecNew, vec_size, Py_NEW, NULL); -} - -/*----------------------------Vector.negate() -------------------- - set the vector to it's negative -x, -y, -z */ -static PyObject *Vector_Negate(VectorObject * self) -{ - int i; - if(!BaseMath_ReadCallback(self)) - return NULL; - - for(i = 0; i < self->size; i++) - self->vec[i] = -(self->vec[i]); - - BaseMath_WriteCallback(self); // alredy checked for error - - Py_INCREF(self); - return (PyObject*)self; -} diff --git a/source/blender/python/intern/bpy_array.c b/source/blender/python/intern/bpy_array.c index 5f228836b42..e401ea55e48 100644 --- a/source/blender/python/intern/bpy_array.c +++ b/source/blender/python/intern/bpy_array.c @@ -1,5 +1,5 @@ /** - * + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -242,7 +242,7 @@ static char *copy_values(PyObject *seq, PointerRNA *ptr, PropertyRNA *prop, int return data; } -static int py_to_array(PyObject *py, PointerRNA *ptr, PropertyRNA *prop, char *param_data, ItemTypeCheckFunc check_item_type, const char *item_type_str, int item_size, ItemConvertFunc convert_item, RNA_SetArrayFunc rna_set_array, const char *error_prefix) +static int py_to_array(PyObject *py, PointerRNA *ptr, PropertyRNA *prop, ParameterList *parms, char *param_data, ItemTypeCheckFunc check_item_type, const char *item_type_str, int item_size, ItemConvertFunc convert_item, RNA_SetArrayFunc rna_set_array, const char *error_prefix) { int totdim, dim_size[MAX_ARRAY_DIMENSION]; int totitem; @@ -266,6 +266,8 @@ static int py_to_array(PyObject *py, PointerRNA *ptr, PropertyRNA *prop, char *p if (RNA_property_flag(prop) & PROP_DYNAMIC) { /* not freeing allocated mem, RNA_parameter_list_free will do this */ *(char**)param_data= data; + + RNA_parameter_length_set_data(parms, prop, param_data, totitem); } } else { @@ -358,18 +360,18 @@ static void bool_set_index(PointerRNA *ptr, PropertyRNA *prop, int index, void * RNA_property_boolean_set_index(ptr, prop, index, *(int*)value); } -int pyrna_py_to_array(PointerRNA *ptr, PropertyRNA *prop, char *param_data, PyObject *py, const char *error_prefix) +int pyrna_py_to_array(PointerRNA *ptr, PropertyRNA *prop, ParameterList *parms, char *param_data, PyObject *py, const char *error_prefix) { int ret; switch (RNA_property_type(prop)) { case PROP_FLOAT: - ret= py_to_array(py, ptr, prop, param_data, py_float_check, "float", sizeof(float), py_to_float, (RNA_SetArrayFunc)RNA_property_float_set_array, error_prefix); + ret= py_to_array(py, ptr, prop, parms, param_data, py_float_check, "float", sizeof(float), py_to_float, (RNA_SetArrayFunc)RNA_property_float_set_array, error_prefix); break; case PROP_INT: - ret= py_to_array(py, ptr, prop, param_data, py_int_check, "int", sizeof(int), py_to_int, (RNA_SetArrayFunc)RNA_property_int_set_array, error_prefix); + ret= py_to_array(py, ptr, prop, parms, param_data, py_int_check, "int", sizeof(int), py_to_int, (RNA_SetArrayFunc)RNA_property_int_set_array, error_prefix); break; case PROP_BOOLEAN: - ret= py_to_array(py, ptr, prop, param_data, py_bool_check, "boolean", sizeof(int), py_to_bool, (RNA_SetArrayFunc)RNA_property_boolean_set_array, error_prefix); + ret= py_to_array(py, ptr, prop, parms, param_data, py_bool_check, "boolean", sizeof(int), py_to_bool, (RNA_SetArrayFunc)RNA_property_boolean_set_array, error_prefix); break; default: PyErr_SetString(PyExc_TypeError, "not an array type"); @@ -457,14 +459,16 @@ static PyObject *pyrna_py_from_array_internal(PointerRNA *ptr, PropertyRNA *prop } #endif -PyObject *pyrna_py_from_array_index(BPy_PropertyRNA *self, int index) +PyObject *pyrna_py_from_array_index(BPy_PropertyRNA *self, PointerRNA *ptr, PropertyRNA *prop, int index) { - int totdim, i, len; - int dimsize[MAX_ARRAY_DIMENSION]; + int totdim, arraydim, arrayoffset, dimsize[MAX_ARRAY_DIMENSION], i, len; BPy_PropertyRNA *ret= NULL; + arraydim= self ? self->arraydim : 0; + arrayoffset = self ? self->arrayoffset : 0; + /* just in case check */ - len= RNA_property_multi_array_length(&self->ptr, self->prop, self->arraydim); + len= RNA_property_multi_array_length(ptr, prop, arraydim); if (index >= len || index < 0) { /* this shouldn't happen because higher level funcs must check for invalid index */ if (G.f & G_DEBUG) printf("pyrna_py_from_array_index: invalid index %d for array with length=%d\n", index, len); @@ -473,11 +477,11 @@ PyObject *pyrna_py_from_array_index(BPy_PropertyRNA *self, int index) return NULL; } - totdim= RNA_property_array_dimension(&self->ptr, self->prop, dimsize); + totdim= RNA_property_array_dimension(ptr, prop, dimsize); - if (self->arraydim + 1 < totdim) { - ret= (BPy_PropertyRNA*)pyrna_prop_CreatePyObject(&self->ptr, self->prop); - ret->arraydim= self->arraydim + 1; + if (arraydim + 1 < totdim) { + ret= (BPy_PropertyRNA*)pyrna_prop_CreatePyObject(ptr, prop); + ret->arraydim= arraydim + 1; /* arr[3][4][5] @@ -487,14 +491,14 @@ PyObject *pyrna_py_from_array_index(BPy_PropertyRNA *self, int index) x = arr[2][3] index = offset + 3 * 5 */ - for (i= self->arraydim + 1; i < totdim; i++) + for (i= arraydim + 1; i < totdim; i++) index *= dimsize[i]; - ret->arrayoffset= self->arrayoffset + index; + ret->arrayoffset= arrayoffset + index; } else { - index = self->arrayoffset + index; - ret= (BPy_PropertyRNA*)pyrna_array_item(&self->ptr, self->prop, index); + index = arrayoffset + index; + ret= (BPy_PropertyRNA*)pyrna_array_item(ptr, prop, index); } return (PyObject*)ret; diff --git a/source/blender/python/intern/bpy_driver.c b/source/blender/python/intern/bpy_driver.c index 6f2f7a6f3b3..f80d79d9a2a 100644 --- a/source/blender/python/intern/bpy_driver.c +++ b/source/blender/python/intern/bpy_driver.c @@ -177,14 +177,29 @@ float BPY_pydriver_eval (ChannelDriver *driver) } } + if(driver->expr_comp==NULL) + driver->flag |= DRIVER_FLAG_RECOMPILE; + /* compile the expression first if it hasn't been compiled or needs to be rebuilt */ - if((driver->flag & DRIVER_FLAG_RECOMPILE) || (driver->expr_comp==NULL)) { + if(driver->flag & DRIVER_FLAG_RECOMPILE) { Py_XDECREF(driver->expr_comp); driver->expr_comp= PyTuple_New(2); expr_code= Py_CompileString(expr, "<bpy driver>", Py_eval_input); PyTuple_SET_ITEM(((PyObject *)driver->expr_comp), 0, expr_code); + driver->flag &= ~DRIVER_FLAG_RECOMPILE; + driver->flag |= DRIVER_FLAG_RENAMEVAR; /* maybe this can be removed but for now best keep until were sure */ + } + else { + expr_code= PyTuple_GET_ITEM(((PyObject *)driver->expr_comp), 0); + } + + if(driver->flag & DRIVER_FLAG_RENAMEVAR) { + /* may not be set */ + expr_vars= PyTuple_GET_ITEM(((PyObject *)driver->expr_comp), 1); + Py_XDECREF(expr_vars); + /* intern the arg names so creating the namespace for every run is faster */ expr_vars= PyTuple_New(BLI_countlist(&driver->variables)); PyTuple_SET_ITEM(((PyObject *)driver->expr_comp), 1, expr_vars); @@ -192,11 +207,8 @@ float BPY_pydriver_eval (ChannelDriver *driver) for (dvar= driver->variables.first, i=0; dvar; dvar= dvar->next) { PyTuple_SET_ITEM(expr_vars, i++, PyUnicode_InternFromString(dvar->name)); } - - driver->flag &= ~DRIVER_FLAG_RECOMPILE; } else { - expr_code= PyTuple_GET_ITEM(((PyObject *)driver->expr_comp), 0); expr_vars= PyTuple_GET_ITEM(((PyObject *)driver->expr_comp), 1); } diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index 2fcb36f6d5b..58f271a5e77 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -39,6 +39,7 @@ #include "eval.h" /* for PyEval_EvalCode */ #include "bpy_rna.h" +#include "bpy_props.h" #include "bpy_operator.h" #include "bpy_ui.h" #include "bpy_util.h" @@ -216,7 +217,9 @@ static void bpy_init_modules( void ) /* bpy context */ { bpy_context_module= ( BPy_StructRNA * ) PyObject_NEW( BPy_StructRNA, &pyrna_struct_Type ); + RNA_pointer_create(NULL, &RNA_Context, NULL, &bpy_context_module->ptr); + bpy_context_module->freeptr= 0; PyModule_AddObject(mod, "context", (PyObject *)bpy_context_module); } @@ -299,9 +302,20 @@ void BPY_start_python_path(void) \nThis may make python import function fail\n"); #endif -#if 0 - BLI_setenv("PYTHONHOME", py_path_bundle); - BLI_setenv("PYTHONPATH", py_path_bundle); +#ifdef _WIN32 + /* cmake/MSVC debug build crashes without this, why only + in this case is unknown.. */ + { + char *envpath = getenv("PYTHONPATH"); + + if(envpath && envpath[0]) { + char *newenvpath = BLI_sprintfN("%s;%s", py_path_bundle, envpath); + BLI_setenv("PYTHONPATH", newenvpath); + MEM_freeN(newenvpath); + } + else + BLI_setenv("PYTHONPATH", py_path_bundle); + } #endif { @@ -698,8 +712,13 @@ int BPY_button_eval(bContext *C, char *expr, double *value) void BPY_load_user_modules(bContext *C) { PyGILState_STATE gilstate; + Main *bmain= CTX_data_main(C); Text *text; + /* can happen on file load */ + if(bmain==NULL) + return; + bpy_context_set(C, &gilstate); for(text=CTX_data_main(C)->text.first; text; text= text->id.next) { diff --git a/source/blender/python/intern/bpy_operator.c b/source/blender/python/intern/bpy_operator.c index d5f4b2f6d08..bdd3255ccea 100644 --- a/source/blender/python/intern/bpy_operator.c +++ b/source/blender/python/intern/bpy_operator.c @@ -32,6 +32,8 @@ #include "bpy_rna.h" /* for setting arg props only - pyrna_py_to_prop() */ #include "bpy_util.h" +#include "RNA_enum_types.h" + #include "WM_api.h" #include "WM_types.h" @@ -45,6 +47,7 @@ static PyObject *pyop_call( PyObject * self, PyObject * args) wmOperatorType *ot; int error_val = 0; PointerRNA ptr; + int operator_ret= OPERATOR_CANCELLED; char *opname; PyObject *kw= NULL; /* optional args */ @@ -63,7 +66,7 @@ static PyObject *pyop_call( PyObject * self, PyObject * args) 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, "Calling operator \"bpy.ops.%s\" error, could not be found", opname); return NULL; } @@ -76,13 +79,11 @@ 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_Format( PyExc_SystemError, "_bpy.ops.call: operator %.200s.poll() function failed, context is incorrect", opname); + PyErr_Format( PyExc_SystemError, "Operator bpy.ops.%.200s.poll() failed, context is incorrect", opname); error_val= -1; } else { - /* WM_operator_properties_create(&ptr, opname); */ - /* Save another lookup */ - RNA_pointer_create(NULL, ot->srna, NULL, &ptr); + WM_operator_properties_create_ptr(&ptr, ot); if(kw && PyDict_Size(kw)) error_val= pyrna_pydict_to_props(&ptr, kw, 0, "Converting py args to operator properties: "); @@ -94,7 +95,7 @@ static PyObject *pyop_call( PyObject * self, PyObject * args) reports= MEM_mallocN(sizeof(ReportList), "wmOperatorReportList"); BKE_reports_init(reports, RPT_STORE); - WM_operator_call_py(C, ot, context, &ptr, reports); + operator_ret= WM_operator_call_py(C, ot, context, &ptr, reports); if(BPy_reports_to_error(reports)) error_val = -1; @@ -140,7 +141,9 @@ static PyObject *pyop_call( PyObject * self, PyObject * args) return NULL; } - Py_RETURN_NONE; + /* return operator_ret as a bpy enum */ + return pyrna_enum_bitfield_to_py(operator_return_items, operator_ret); + } static PyObject *pyop_as_string( PyObject * self, PyObject * args) diff --git a/source/blender/python/intern/bpy_operator_wrap.c b/source/blender/python/intern/bpy_operator_wrap.c index 11f36d5f8ec..08ccadf141d 100644 --- a/source/blender/python/intern/bpy_operator_wrap.c +++ b/source/blender/python/intern/bpy_operator_wrap.c @@ -23,24 +23,39 @@ * ***** END GPL LICENSE BLOCK ***** */ - #include "bpy_operator_wrap.h" -#include "BLI_listbase.h" #include "BKE_context.h" -#include "BKE_report.h" -#include "DNA_windowmanager_types.h" -#include "MEM_guardedalloc.h" #include "WM_api.h" #include "WM_types.h" -#include "UI_interface.h" -#include "ED_screen.h" #include "RNA_define.h" #include "bpy_rna.h" +#include "bpy_props.h" #include "bpy_util.h" -#include "../generic/bpy_internal_import.h" // our own imports +static void operator_properties_init(wmOperatorType *ot) +{ + PyObject *py_class = ot->ext.data; + PyObject *item= ((PyTypeObject*)py_class)->tp_dict; /* getattr(..., "__dict__") returns a proxy */ + + RNA_struct_blender_type_set(ot->ext.srna, ot); + + 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) { + PyErr_Print(); /* failed to register operator props */ + PyErr_Clear(); + } + } + else { + PyErr_Clear(); + } +} void operator_wrapper(wmOperatorType *ot, void *userdata) { @@ -50,32 +65,16 @@ void operator_wrapper(wmOperatorType *ot, void *userdata) *ot= *((wmOperatorType *)userdata); ot->srna= srna; /* restore */ - RNA_struct_blender_type_set(ot->ext.srna, ot); + operator_properties_init(ot); + { /* XXX - not nice, set the first enum as searchable, should have a way for python to set */ + PointerRNA ptr; + PropertyRNA *prop; - /* 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(); - } + RNA_pointer_create(NULL, ot->srna, NULL, &ptr); + prop = RNA_struct_find_property(&ptr, "type"); + if(prop) + ot->prop= prop; } } @@ -92,33 +91,7 @@ void macro_wrapper(wmOperatorType *ot, void *userdata) ot->ui = data->ui; ot->ext = data->ext; - 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(); - } - } + operator_properties_init(ot); } PyObject *PYOP_wrap_macro_define(PyObject *self, PyObject *args) diff --git a/source/blender/python/intern/bpy_props.c b/source/blender/python/intern/bpy_props.c new file mode 100644 index 00000000000..946e94c7064 --- /dev/null +++ b/source/blender/python/intern/bpy_props.c @@ -0,0 +1,505 @@ +/** + * $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): Campbell Barton + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include "bpy_props.h" +#include "bpy_rna.h" + +#include "RNA_access.h" +#include "RNA_define.h" /* for defining our own rna */ + +#include "MEM_guardedalloc.h" + +#include "float.h" /* FLT_MIN/MAX */ + +/* operators use this so it can store the args given but defer running + * it until the operator runs where these values are used to setup the + * default args for that operator instance */ +static PyObject *bpy_prop_deferred_return(void *func, PyObject *kw) +{ + PyObject *ret = PyTuple_New(2); + PyTuple_SET_ITEM(ret, 0, PyCObject_FromVoidPtr(func, NULL)); + PyTuple_SET_ITEM(ret, 1, kw); + Py_INCREF(kw); + return ret; +} + +/* Function that sets RNA, NOTE - self is NULL when called from python, but being abused from C so we can pass the srna allong + * This isnt incorrect since its a python object - but be careful */ +static char BPy_BoolProperty_doc[] = +".. function:: BoolProperty(name=\"\", description=\"\", default=False, hidden=False)\n" +"\n" +" Returns a new boolean property definition.."; + +PyObject *BPy_BoolProperty(PyObject *self, PyObject *args, PyObject *kw) +{ + StructRNA *srna; + + if (PyTuple_Size(args) > 0) { + PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. + return NULL; + } + + srna= srna_from_self(self); + if(srna==NULL && PyErr_Occurred()) { + return NULL; /* self's type was compatible but error getting the srna */ + } + else if(srna) { + static char *kwlist[] = {"attr", "name", "description", "default", "hidden", NULL}; + char *id=NULL, *name="", *description=""; + int def=0, hidden=0; + PropertyRNA *prop; + + if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssii:BoolProperty", kwlist, &id, &name, &description, &def, &hidden)) + return NULL; + + prop= RNA_def_boolean(srna, id, def, name, description); + if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_duplicate_pointers(prop); + Py_RETURN_NONE; + } + else { /* operators defer running this function */ + return bpy_prop_deferred_return((void *)BPy_BoolProperty, kw); + } +} + +static char BPy_IntProperty_doc[] = +".. function:: IntProperty(name=\"\", description=\"\", default=0, min=-sys.maxint, max=sys.maxint, soft_min=-sys.maxint, soft_max=sys.maxint, step=1, hidden=False)\n" +"\n" +" Returns a new int property definition."; +PyObject *BPy_IntProperty(PyObject *self, PyObject *args, PyObject *kw) +{ + StructRNA *srna; + + if (PyTuple_Size(args) > 0) { + PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. + return NULL; + } + + srna= srna_from_self(self); + if(srna==NULL && PyErr_Occurred()) { + return NULL; /* self's type was compatible but error getting the srna */ + } + else if(srna) { + static char *kwlist[] = {"attr", "name", "description", "default", "min", "max", "soft_min", "soft_max", "step", "hidden", NULL}; + char *id=NULL, *name="", *description=""; + int min=INT_MIN, max=INT_MAX, soft_min=INT_MIN, soft_max=INT_MAX, step=1, def=0; + int hidden=0; + PropertyRNA *prop; + + if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssiiiiiii:IntProperty", kwlist, &id, &name, &description, &def, &min, &max, &soft_min, &soft_max, &step, &hidden)) + return NULL; + + prop= RNA_def_int(srna, id, def, min, max, name, description, soft_min, soft_max); + RNA_def_property_ui_range(prop, min, max, step, 0); + if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_duplicate_pointers(prop); + Py_RETURN_NONE; + } + else { /* operators defer running this function */ + return bpy_prop_deferred_return((void *)BPy_IntProperty, kw); + } +} + +static char BPy_FloatProperty_doc[] = +".. function:: FloatProperty(name=\"\", description=\"\", default=0.0, min=sys.float_info.min, max=sys.float_info.max, soft_min=sys.float_info.min, soft_max=sys.float_info.max, step=3, precision=2, hidden=False)\n" +"\n" +" Returns a new float property definition."; +PyObject *BPy_FloatProperty(PyObject *self, PyObject *args, PyObject *kw) +{ + StructRNA *srna; + + if (PyTuple_Size(args) > 0) { + PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. + return NULL; + } + + srna= srna_from_self(self); + if(srna==NULL && PyErr_Occurred()) { + return NULL; /* self's type was compatible but error getting the srna */ + } + else if(srna) { + static char *kwlist[] = {"attr", "name", "description", "default", "min", "max", "soft_min", "soft_max", "step", "precision", "hidden", NULL}; + char *id=NULL, *name="", *description=""; + float min=-FLT_MAX, max=FLT_MAX, soft_min=-FLT_MAX, soft_max=FLT_MAX, step=3, def=0.0f; + int precision= 2, hidden=0; + PropertyRNA *prop; + + if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssffffffii:FloatProperty", kwlist, &id, &name, &description, &def, &min, &max, &soft_min, &soft_max, &step, &precision, &hidden)) + return NULL; + + prop= RNA_def_float(srna, id, def, min, max, name, description, soft_min, soft_max); + RNA_def_property_ui_range(prop, min, max, step, precision); + if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_duplicate_pointers(prop); + Py_RETURN_NONE; + } + else { /* operators defer running this function */ + return bpy_prop_deferred_return((void *)BPy_FloatProperty, kw); + } +} + +static char BPy_FloatVectorProperty_doc[] = +".. function:: FloatVectorProperty(name=\"\", description=\"\", default=(0.0, 0.0, 0.0), min=sys.float_info.min, max=sys.float_info.max, soft_min=sys.float_info.min, soft_max=sys.float_info.max, step=3, precision=2, hidden=False, size=3)\n" +"\n" +" Returns a new vector float property definition."; +PyObject *BPy_FloatVectorProperty(PyObject *self, PyObject *args, PyObject *kw) +{ + StructRNA *srna; + + if (PyTuple_Size(args) > 0) { + PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. + return NULL; + } + + srna= srna_from_self(self); + if(srna==NULL && PyErr_Occurred()) { + return NULL; /* self's type was compatible but error getting the srna */ + } + else if(srna) { + static char *kwlist[] = {"attr", "name", "description", "default", "min", "max", "soft_min", "soft_max", "step", "precision", "hidden", "size", NULL}; + char *id=NULL, *name="", *description=""; + float min=-FLT_MAX, max=FLT_MAX, soft_min=-FLT_MAX, soft_max=FLT_MAX, step=3, def[PYRNA_STACK_ARRAY]={0.0f}; + int precision= 2, hidden=0, size=3; + PropertyRNA *prop; + PyObject *pydef= NULL; + + if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssOfffffiii:FloatVectorProperty", kwlist, &id, &name, &description, &pydef, &min, &max, &soft_min, &soft_max, &step, &precision, &hidden, &size)) + return NULL; + + if(size < 0 || size > PYRNA_STACK_ARRAY) { + PyErr_Format(PyExc_TypeError, "FloatVectorProperty(): size must be between 0 and %d, given %d.", PYRNA_STACK_ARRAY, size); + return NULL; + } + + if(pydef) { + int i; + + if(!PySequence_Check(pydef)) { + PyErr_Format(PyExc_TypeError, "FloatVectorProperty(): default value is not a sequence of size: %d.", size); + return NULL; + } + + if(size != PySequence_Size(pydef)) { + PyErr_Format(PyExc_TypeError, "FloatVectorProperty(): size: %d, does not default: %d.", size, PySequence_Size(pydef)); + return NULL; + } + + for(i=0; i<size; i++) { + PyObject *item= PySequence_GetItem(pydef, i); + if(item) { + def[i]= PyFloat_AsDouble(item); + Py_DECREF(item); + } + } + + if(PyErr_Occurred()) { /* error set above */ + return NULL; + } + } + + prop= RNA_def_float_vector(srna, id, size, pydef ? def:NULL, min, max, name, description, soft_min, soft_max); + RNA_def_property_ui_range(prop, min, max, step, precision); + if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_duplicate_pointers(prop); + Py_RETURN_NONE; + } + else { /* operators defer running this function */ + return bpy_prop_deferred_return((void *)BPy_FloatVectorProperty, kw); + } +} + +static char BPy_StringProperty_doc[] = +".. function:: StringProperty(name=\"\", description=\"\", default=\"\", maxlen=0, hidden=False)\n" +"\n" +" Returns a new string property definition."; +PyObject *BPy_StringProperty(PyObject *self, PyObject *args, PyObject *kw) +{ + StructRNA *srna; + + if (PyTuple_Size(args) > 0) { + PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. + return NULL; + } + + srna= srna_from_self(self); + if(srna==NULL && PyErr_Occurred()) { + return NULL; /* self's type was compatible but error getting the srna */ + } + else if(srna) { + static char *kwlist[] = {"attr", "name", "description", "default", "maxlen", "hidden", NULL}; + char *id=NULL, *name="", *description="", *def=""; + int maxlen=0, hidden=0; + PropertyRNA *prop; + + if (!PyArg_ParseTupleAndKeywords(args, kw, "s|sssii:StringProperty", kwlist, &id, &name, &description, &def, &maxlen, &hidden)) + return NULL; + + prop= RNA_def_string(srna, id, def, maxlen, name, description); + if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_duplicate_pointers(prop); + Py_RETURN_NONE; + } + else { /* operators defer running this function */ + return bpy_prop_deferred_return((void *)BPy_StringProperty, kw); + } +} + +static EnumPropertyItem *enum_items_from_py(PyObject *value, const char *def, int *defvalue) +{ + EnumPropertyItem *items= NULL; + PyObject *item; + int seq_len, i, totitem= 0; + + if(!PySequence_Check(value)) { + PyErr_SetString(PyExc_TypeError, "expected a sequence of tuples for the enum items"); + return NULL; + } + + seq_len = PySequence_Length(value); + for(i=0; i<seq_len; i++) { + EnumPropertyItem tmp= {0, "", 0, "", ""}; + + item= PySequence_GetItem(value, i); + if(item==NULL || PyTuple_Check(item)==0) { + PyErr_SetString(PyExc_TypeError, "expected a sequence of tuples for the enum items"); + if(items) MEM_freeN(items); + Py_XDECREF(item); + return NULL; + } + + if(!PyArg_ParseTuple(item, "sss", &tmp.identifier, &tmp.name, &tmp.description)) { + PyErr_SetString(PyExc_TypeError, "expected an identifier, name and description in the tuple"); + Py_DECREF(item); + return NULL; + } + + tmp.value= i; + RNA_enum_item_add(&items, &totitem, &tmp); + + if(def[0] && strcmp(def, tmp.identifier) == 0) + *defvalue= tmp.value; + + Py_DECREF(item); + } + + if(!def[0]) + *defvalue= 0; + + RNA_enum_item_end(&items, &totitem); + + return items; +} + +static char BPy_EnumProperty_doc[] = +".. function:: EnumProperty(items, name=\"\", description=\"\", default=\"\", hidden=False)\n" +"\n" +" Returns a new enumerator property definition.\n" +"\n" +" :arg items: The items that make up this enumerator.\n" +" :type items: sequence of string triplets"; +PyObject *BPy_EnumProperty(PyObject *self, PyObject *args, PyObject *kw) +{ + StructRNA *srna; + + if (PyTuple_Size(args) > 0) { + PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. + return NULL; + } + + srna= srna_from_self(self); + if(srna==NULL && PyErr_Occurred()) { + return NULL; /* self's type was compatible but error getting the srna */ + } + else if(srna) { + static char *kwlist[] = {"attr", "items", "name", "description", "default", "hidden", NULL}; + char *id=NULL, *name="", *description="", *def=""; + int defvalue=0, hidden=0; + PyObject *items= Py_None; + EnumPropertyItem *eitems; + PropertyRNA *prop; + + if (!PyArg_ParseTupleAndKeywords(args, kw, "sO|sssi:EnumProperty", kwlist, &id, &items, &name, &description, &def, &hidden)) + return NULL; + + eitems= enum_items_from_py(items, def, &defvalue); + if(!eitems) + return NULL; + + prop= RNA_def_enum(srna, id, eitems, defvalue, name, description); + if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_duplicate_pointers(prop); + MEM_freeN(eitems); + + Py_RETURN_NONE; + } + else { /* operators defer running this function */ + return bpy_prop_deferred_return((void *)BPy_EnumProperty, kw); + } +} + +static StructRNA *pointer_type_from_py(PyObject *value) +{ + StructRNA *srna; + + srna= srna_from_self(value); + if(!srna) { + PyErr_SetString(PyExc_SystemError, "expected an RNA type derived from IDPropertyGroup"); + return NULL; + } + + if(!RNA_struct_is_a(srna, &RNA_IDPropertyGroup)) { + PyErr_SetString(PyExc_SystemError, "expected an RNA type derived from IDPropertyGroup"); + return NULL; + } + + return srna; +} + +static char BPy_PointerProperty_doc[] = +".. function:: PointerProperty(items, type=\"\", description=\"\", default=\"\", hidden=False)\n" +"\n" +" Returns a new pointer property definition.\n" +"\n" +" :arg type: Dynamic type from :mod:`bpy.types`.\n" +" :type type: class"; +PyObject *BPy_PointerProperty(PyObject *self, PyObject *args, PyObject *kw) +{ + StructRNA *srna; + + if (PyTuple_Size(args) > 0) { + PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. + return NULL; + } + + srna= srna_from_self(self); + if(srna==NULL && PyErr_Occurred()) { + return NULL; /* self's type was compatible but error getting the srna */ + } + else if(srna) { + static char *kwlist[] = {"attr", "type", "name", "description", "hidden", NULL}; + char *id=NULL, *name="", *description=""; + int hidden= 0; + PropertyRNA *prop; + StructRNA *ptype; + PyObject *type= Py_None; + + if (!PyArg_ParseTupleAndKeywords(args, kw, "sO|ssi:PointerProperty", kwlist, &id, &type, &name, &description, &hidden)) + return NULL; + + ptype= pointer_type_from_py(type); + if(!ptype) + return NULL; + + prop= RNA_def_pointer_runtime(srna, id, ptype, name, description); + if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_duplicate_pointers(prop); + Py_RETURN_NONE; + } + else { /* operators defer running this function */ + return bpy_prop_deferred_return((void *)BPy_PointerProperty, kw); + } + return NULL; +} + +static char BPy_CollectionProperty_doc[] = +".. function:: CollectionProperty(items, type=\"\", description=\"\", default=\"\", hidden=False)\n" +"\n" +" Returns a new collection property definition.\n" +"\n" +" :arg type: Dynamic type from :mod:`bpy.types`.\n" +" :type type: class"; +PyObject *BPy_CollectionProperty(PyObject *self, PyObject *args, PyObject *kw) +{ + StructRNA *srna; + + if (PyTuple_Size(args) > 0) { + PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. + return NULL; + } + + srna= srna_from_self(self); + if(srna==NULL && PyErr_Occurred()) { + return NULL; /* self's type was compatible but error getting the srna */ + } + else if(srna) { + static char *kwlist[] = {"attr", "type", "name", "description", "hidden", NULL}; + char *id=NULL, *name="", *description=""; + int hidden= 0; + PropertyRNA *prop; + StructRNA *ptype; + PyObject *type= Py_None; + + if (!PyArg_ParseTupleAndKeywords(args, kw, "sO|ssi:CollectionProperty", kwlist, &id, &type, &name, &description, &hidden)) + return NULL; + + ptype= pointer_type_from_py(type); + if(!ptype) + return NULL; + + prop= RNA_def_collection_runtime(srna, id, ptype, name, description); + if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_duplicate_pointers(prop); + Py_RETURN_NONE; + } + else { /* operators defer running this function */ + return bpy_prop_deferred_return((void *)BPy_CollectionProperty, kw); + } + return NULL; +} + +static struct PyMethodDef props_methods[] = { + {"BoolProperty", (PyCFunction)BPy_BoolProperty, METH_VARARGS|METH_KEYWORDS, BPy_BoolProperty_doc}, + {"IntProperty", (PyCFunction)BPy_IntProperty, METH_VARARGS|METH_KEYWORDS, BPy_IntProperty_doc}, + {"FloatProperty", (PyCFunction)BPy_FloatProperty, METH_VARARGS|METH_KEYWORDS, BPy_FloatProperty_doc}, + {"FloatVectorProperty", (PyCFunction)BPy_FloatVectorProperty, METH_VARARGS|METH_KEYWORDS, BPy_FloatVectorProperty_doc}, + {"StringProperty", (PyCFunction)BPy_StringProperty, METH_VARARGS|METH_KEYWORDS, BPy_StringProperty_doc}, + {"EnumProperty", (PyCFunction)BPy_EnumProperty, METH_VARARGS|METH_KEYWORDS, BPy_EnumProperty_doc}, + {"PointerProperty", (PyCFunction)BPy_PointerProperty, METH_VARARGS|METH_KEYWORDS, BPy_PointerProperty_doc}, + {"CollectionProperty", (PyCFunction)BPy_CollectionProperty, METH_VARARGS|METH_KEYWORDS, BPy_CollectionProperty_doc}, + {NULL, NULL, 0, NULL} +}; + +static struct PyModuleDef props_module = { + PyModuleDef_HEAD_INIT, + "bpy.props", + "This module defines properties to extend blenders internal data, the result of these functions" + " is used to assign properties to classes registered with blender and can't be used directly.", + -1,/* multiple "initialization" just copies the module dict. */ + props_methods, + NULL, NULL, NULL, NULL +}; + +PyObject *BPY_rna_props( void ) +{ + PyObject *submodule; + submodule= PyModule_Create(&props_module); + PyDict_SetItemString(PySys_GetObject("modules"), props_module.m_name, submodule); + + /* INCREF since its its assumed that all these functions return the + * module with a new ref like PyDict_New, since they are passed to + * PyModule_AddObject which steals a ref */ + Py_INCREF(submodule); + + return submodule; +} diff --git a/source/blender/python/intern/bpy_props.h b/source/blender/python/intern/bpy_props.h new file mode 100644 index 00000000000..23ed142d7b8 --- /dev/null +++ b/source/blender/python/intern/bpy_props.h @@ -0,0 +1,44 @@ +/** + * $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): Campbell Barton + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#ifndef BPY_PROPS_H +#define BPY_PROPS_H + +#include <Python.h> + +PyObject *BPY_rna_props( void ); + +/* functions for setting up new props - experemental */ +PyObject *BPy_BoolProperty(PyObject *self, PyObject *args, PyObject *kw); +PyObject *BPy_IntProperty(PyObject *self, PyObject *args, PyObject *kw); +PyObject *BPy_FloatProperty(PyObject *self, PyObject *args, PyObject *kw); +PyObject *BPy_FloatVectorProperty(PyObject *self, PyObject *args, PyObject *kw); +PyObject *BPy_StringProperty(PyObject *self, PyObject *args, PyObject *kw); +PyObject *BPy_EnumProperty(PyObject *self, PyObject *args, PyObject *kw); +PyObject *BPy_PointerProperty(PyObject *self, PyObject *args, PyObject *kw); +PyObject *BPy_CollectionProperty(PyObject *self, PyObject *args, PyObject *kw); + +#define PYRNA_STACK_ARRAY 32 + +#endif diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 58af86f077d..49dfa95109c 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -1,3 +1,4 @@ + /** * $Id$ * @@ -23,6 +24,7 @@ */ #include "bpy_rna.h" +#include "bpy_props.h" #include "bpy_util.h" //#include "blendef.h" #include "BLI_dynstr.h" @@ -53,7 +55,7 @@ #include "../generic/Mathutils.h" /* so we can have mathutils callbacks */ #include "../generic/IDProp.h" /* for IDprop lookups */ -static PyObject *prop_subscript_array_slice(PointerRNA *ptr, PropertyRNA *prop, int start, int stop, int length); +static PyObject *prop_subscript_array_slice(BPy_PropertyRNA *self, PointerRNA *ptr, PropertyRNA *prop, int start, int stop, int length); /* bpyrna vector/euler/quat callbacks */ static int mathutils_rna_array_cb_index= -1; /* index for our callbacks */ @@ -238,7 +240,7 @@ PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop) if(is_thick) { /* this is an array we cant reference (since its not thin wrappable) * and cannot be coerced into a mathutils type, so return as a list */ - ret = prop_subscript_array_slice(ptr, prop, 0, len, len); + ret = prop_subscript_array_slice(NULL, ptr, prop, 0, len, len); } else { ret = pyrna_prop_CreatePyObject(ptr, prop); /* owned by the Mathutils PyObject */ } @@ -369,11 +371,8 @@ static void pyrna_struct_dealloc( BPy_StructRNA *self ) { if (self->freeptr && self->ptr.data) { IDP_FreeProperty(self->ptr.data); - if (self->ptr.type != &RNA_Context) - { - MEM_freeN(self->ptr.data); - self->ptr.data= NULL; - } + MEM_freeN(self->ptr.data); + self->ptr.data= NULL; } /* Note, for subclassed PyObjects we cant just call PyObject_DEL() directly or it will crash */ @@ -422,6 +421,24 @@ static int pyrna_string_to_enum(PyObject *item, PointerRNA *ptr, PropertyRNA *pr return 1; } +PyObject *pyrna_enum_bitfield_to_py(EnumPropertyItem *items, int value) +{ + PyObject *ret= PySet_New(NULL); + const char *identifier[RNA_ENUM_BITFLAG_SIZE + 1]; + + if(RNA_enum_bitflag_identifiers(items, value, identifier)) { + PyObject *item; + int index; + for(index=0; identifier[index]; index++) { + item= PyUnicode_FromString(identifier[index]); + PySet_Add(ret, item); + Py_DECREF(item); + } + } + + return ret; +} + static PyObject *pyrna_enum_to_py(PointerRNA *ptr, PropertyRNA *prop, int val) { PyObject *item, *ret= NULL; @@ -573,7 +590,7 @@ int pyrna_pydict_to_props(PointerRNA *ptr, PyObject *kw, int all_args, const cha break; } } else { - if (pyrna_py_to_prop(ptr, prop, NULL, item, error_prefix)) { + if (pyrna_py_to_prop(ptr, prop, NULL, NULL, item, error_prefix)) { error_val= -1; break; } @@ -627,7 +644,7 @@ static 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) +int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, ParameterList *parms, void *data, PyObject *value, const char *error_prefix) { /* XXX hard limits should be checked here */ int type = RNA_property_type(prop); @@ -650,7 +667,7 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *v return -1; } /* done getting the length */ - ok= pyrna_py_to_array(ptr, prop, data, value, error_prefix); + ok= pyrna_py_to_array(ptr, prop, parms, data, value, error_prefix); if (!ok) { /* PyErr_Format(PyExc_AttributeError, "%.200s %s", error_prefix, error_str); */ @@ -668,7 +685,7 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *v /* prefer not to have an exception here * however so many poll functions return None or a valid Object. * its a hassle to convert these into a bool before returning, */ - if(RNA_property_flag(prop) & PROP_RETURN) + if(RNA_property_flag(prop) & PROP_OUTPUT) param = PyObject_IsTrue( value ); else param = PyLong_AsSsize_t( value ); @@ -765,11 +782,17 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *v StructRNA *ptype= RNA_property_pointer_type(ptr, prop); int flag = RNA_property_flag(prop); + /* if property is an OperatorProperties pointer and value is a map, forward back to pyrna_pydict_to_props */ + if (RNA_struct_is_a(ptype, &RNA_OperatorProperties) && PyDict_Check(value)) { + PointerRNA opptr = RNA_property_pointer_get(ptr, prop); + return pyrna_pydict_to_props(&opptr, value, 0, error_prefix); + } + if(!BPy_StructRNA_Check(value) && value != Py_None) { PyErr_Format(PyExc_TypeError, "%.200s expected a %.200s type", error_prefix, RNA_struct_identifier(ptype)); return -1; } else if((flag & PROP_NEVER_NULL) && value == Py_None) { - PyErr_Format(PyExc_TypeError, "%.200s does not suppory a 'None' assignment %.200s type", error_prefix, RNA_struct_identifier(ptype)); + PyErr_Format(PyExc_TypeError, "%.200s does not support a 'None' assignment %.200s type", error_prefix, RNA_struct_identifier(ptype)); return -1; } else { BPy_StructRNA *param= (BPy_StructRNA*)value; @@ -876,7 +899,7 @@ int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *v static PyObject * pyrna_prop_to_py_index(BPy_PropertyRNA *self, int index) { - return pyrna_py_from_array_index(self, index); + return pyrna_py_from_array_index(self, &self->ptr, self->prop, index); } static int pyrna_py_to_prop_index(BPy_PropertyRNA *self, int index, PyObject *value) @@ -1033,66 +1056,74 @@ static PyObject *prop_subscript_collection_slice(PointerRNA *ptr, PropertyRNA *p * note: could also use pyrna_prop_to_py_index(self, count) in a loop but its a lot slower * since at the moment it reads (and even allocates) the entire array for each index. */ -#define PYRNA_STACK_ARRAY 32 -static PyObject *prop_subscript_array_slice(PointerRNA *ptr, PropertyRNA *prop, int start, int stop, int length) +static PyObject *prop_subscript_array_slice(BPy_PropertyRNA *self, PointerRNA *ptr, PropertyRNA *prop, int start, int stop, int length) { + int count, totdim; + PyObject *list = PyList_New(stop - start); - int count; - switch (RNA_property_type(prop)) { + totdim = RNA_property_array_dimension(ptr, prop, NULL); + + if (totdim > 1) { + for (count = start; count < stop; count++) + PyList_SET_ITEM(list, count - start, pyrna_prop_to_py_index(self, count)); + } + else { + switch (RNA_property_type(prop)) { case PROP_FLOAT: - { - float values_stack[PYRNA_STACK_ARRAY]; - float *values; - if(length > PYRNA_STACK_ARRAY) { values= PyMem_MALLOC(sizeof(float) * length); } - else { values= values_stack; } - RNA_property_float_get_array(ptr, prop, values); + { + float values_stack[PYRNA_STACK_ARRAY]; + float *values; + if(length > PYRNA_STACK_ARRAY) { values= PyMem_MALLOC(sizeof(float) * length); } + else { values= values_stack; } + RNA_property_float_get_array(ptr, prop, values); - for(count=start; count<stop; count++) - PyList_SET_ITEM(list, count-start, PyFloat_FromDouble(values[count])); + for(count=start; count<stop; count++) + PyList_SET_ITEM(list, count-start, PyFloat_FromDouble(values[count])); - if(values != values_stack) { - PyMem_FREE(values); + if(values != values_stack) { + PyMem_FREE(values); + } + break; } - break; - } case PROP_BOOLEAN: - { - int values_stack[PYRNA_STACK_ARRAY]; - int *values; - if(length > PYRNA_STACK_ARRAY) { values= PyMem_MALLOC(sizeof(int) * length); } - else { values= values_stack; } + { + int values_stack[PYRNA_STACK_ARRAY]; + int *values; + if(length > PYRNA_STACK_ARRAY) { values= PyMem_MALLOC(sizeof(int) * length); } + else { values= values_stack; } - RNA_property_boolean_get_array(ptr, prop, values); - for(count=start; count<stop; count++) - PyList_SET_ITEM(list, count-start, PyBool_FromLong(values[count])); + RNA_property_boolean_get_array(ptr, prop, values); + for(count=start; count<stop; count++) + PyList_SET_ITEM(list, count-start, PyBool_FromLong(values[count])); - if(values != values_stack) { - PyMem_FREE(values); + if(values != values_stack) { + PyMem_FREE(values); + } + break; } - break; - } case PROP_INT: - { - int values_stack[PYRNA_STACK_ARRAY]; - int *values; - if(length > PYRNA_STACK_ARRAY) { values= PyMem_MALLOC(sizeof(int) * length); } - else { values= values_stack; } + { + int values_stack[PYRNA_STACK_ARRAY]; + int *values; + if(length > PYRNA_STACK_ARRAY) { values= PyMem_MALLOC(sizeof(int) * length); } + else { values= values_stack; } - RNA_property_int_get_array(ptr, prop, values); - for(count=start; count<stop; count++) - PyList_SET_ITEM(list, count-start, PyLong_FromSsize_t(values[count])); + RNA_property_int_get_array(ptr, prop, values); + for(count=start; count<stop; count++) + PyList_SET_ITEM(list, count-start, PyLong_FromSsize_t(values[count])); - if(values != values_stack) { - PyMem_FREE(values); + if(values != values_stack) { + PyMem_FREE(values); + } + break; } - break; - } default: /* probably will never happen */ PyErr_SetString(PyExc_TypeError, "not an array type"); Py_DECREF(list); list= NULL; + } } return list; } @@ -1155,7 +1186,7 @@ static PyObject *prop_subscript_array(BPy_PropertyRNA *self, PyObject *key) return PyList_New(0); } else if (step == 1) { - return prop_subscript_array_slice(&self->ptr, self->prop, start, stop, len); + return prop_subscript_array_slice(self, &self->ptr, self->prop, start, stop, len); } else { PyErr_SetString(PyExc_TypeError, "slice steps not supported with rna"); @@ -1326,6 +1357,8 @@ static int pyrna_prop_ass_subscript( BPy_PropertyRNA *self, PyObject *key, PyObj PyErr_SetString(PyExc_AttributeError, "invalid key, key must be an int"); return -1; } + + RNA_property_update(BPy_GetContext(), &self->ptr, self->prop); } @@ -1712,6 +1745,13 @@ static PyObject *pyrna_struct_path_to_id(BPy_StructRNA *self, PyObject *args) return ret; } +static PyObject *pyrna_struct_recast_type(BPy_StructRNA *self, PyObject *args) +{ + PointerRNA r_ptr; + RNA_pointer_recast(&self->ptr, &r_ptr); + return pyrna_struct_CreatePyObject(&r_ptr); +} + static PyObject *pyrna_prop_path_to_id(BPy_PropertyRNA *self) { char *path; @@ -1857,43 +1897,49 @@ static PyObject *pyrna_struct_getattro( BPy_StructRNA *self, PyObject *pyname ) ret = pyrna_func_to_py((BPy_DummyPointerRNA *)self, func); } else if (self->ptr.type == &RNA_Context) { - PointerRNA newptr; - ListBase newlb; - int done; + bContext *C = self->ptr.data; + if(C==NULL) { + PyErr_Format( PyExc_AttributeError, "StructRNA Context is 'NULL', can't get \"%.200s\" from context", name); + ret= NULL; + } + else { + PointerRNA newptr; + ListBase newlb; - done= CTX_data_get(self->ptr.data, name, &newptr, &newlb); + int done= CTX_data_get(C, name, &newptr, &newlb); - if(done==1) { /* found */ - if (newptr.data) { - ret = pyrna_struct_CreatePyObject(&newptr); - } - else if (newlb.first) { - CollectionPointerLink *link; - PyObject *linkptr; + if(done==1) { /* found */ + if (newptr.data) { + ret = pyrna_struct_CreatePyObject(&newptr); + } + else if (newlb.first) { + CollectionPointerLink *link; + PyObject *linkptr; - ret = PyList_New(0); + ret = PyList_New(0); - for(link=newlb.first; link; link=link->next) { - linkptr= pyrna_struct_CreatePyObject(&link->ptr); - PyList_Append(ret, linkptr); - Py_DECREF(linkptr); + for(link=newlb.first; link; link=link->next) { + linkptr= pyrna_struct_CreatePyObject(&link->ptr); + PyList_Append(ret, linkptr); + Py_DECREF(linkptr); + } + } + else { + ret = Py_None; + Py_INCREF(ret); } } - else { + else if (done==-1) { /* found but not set */ ret = Py_None; Py_INCREF(ret); } - } - else if (done==-1) { /* found but not set */ - ret = Py_None; - Py_INCREF(ret); - } - else { /* not found in the context */ - /* lookup the subclass. raise an error if its not found */ - ret = PyObject_GenericGetAttr((PyObject *)self, pyname); - } + else { /* not found in the context */ + /* lookup the subclass. raise an error if its not found */ + ret = PyObject_GenericGetAttr((PyObject *)self, pyname); + } - BLI_freelistN(&newlb); + BLI_freelistN(&newlb); + } } else { #if 0 @@ -1955,7 +2001,7 @@ static int pyrna_struct_setattro( BPy_StructRNA *self, PyObject *pyname, PyObjec } /* pyrna_py_to_prop sets its own exceptions */ - return pyrna_py_to_prop(&self->ptr, prop, NULL, value, "StructRNA - item.attr = val:"); + return pyrna_py_to_prop(&self->ptr, prop, NULL, NULL, value, "StructRNA - item.attr = val:"); } static PyObject *pyrna_prop_dir(BPy_PropertyRNA *self) @@ -2005,6 +2051,16 @@ static PyObject *pyrna_prop_getattro( BPy_PropertyRNA *self, PyObject *pyname ) } } } + else { + /* annoying exception, maybe we need to have different types for this... */ + if((strcmp(name, "__getitem__")==0 || strcmp(name, "__setitem__")==0) && + (RNA_property_type(self->prop) != PROP_COLLECTION) && + RNA_property_array_check(&self->ptr, self->prop)==0 + ) { + PyErr_SetString(PyExc_AttributeError, "PropertyRNA - no __getitem__ support for this type"); + return NULL; + } + } /* The error raised here will be displayed */ return PyObject_GenericGetAttr((PyObject *)self, pyname); @@ -2021,7 +2077,7 @@ static int pyrna_prop_setattro( BPy_PropertyRNA *self, PyObject *pyname, PyObjec if(RNA_property_collection_type_get(&self->ptr, self->prop, &r_ptr)) { if ((prop = RNA_struct_find_property(&r_ptr, name))) { /* pyrna_py_to_prop sets its own exceptions */ - return pyrna_py_to_prop(&r_ptr, prop, NULL, value, "BPy_PropertyRNA - Attribute (setattr):"); + return pyrna_py_to_prop(&r_ptr, prop, NULL, NULL, value, "BPy_PropertyRNA - Attribute (setattr):"); } } } @@ -2325,6 +2381,8 @@ static int foreach_compat_buffer(RawPropertyType raw_type, int attr_signed, cons return (f=='f') ? 1:0; case PROP_RAW_DOUBLE: return (f=='d') ? 1:0; + case PROP_RAW_UNSET: + return 0; } return 0; @@ -2389,6 +2447,9 @@ static PyObject *foreach_getset(BPy_PropertyRNA *self, PyObject *args, int set) case PROP_RAW_DOUBLE: ((double *)array)[i]= (double)PyFloat_AsDouble(item); break; + case PROP_RAW_UNSET: + /* should never happen */ + break; } Py_DECREF(item); @@ -2440,6 +2501,9 @@ static PyObject *foreach_getset(BPy_PropertyRNA *self, PyObject *args, int set) case PROP_RAW_DOUBLE: item= PyFloat_FromDouble( (double) ((double *)array)[i] ); break; + case PROP_RAW_UNSET: + /* should never happen */ + break; } PySequence_SetItem(seq, i, item); @@ -2485,7 +2549,7 @@ PyObject *pyrna_prop_iter(BPy_PropertyRNA *self) if(RNA_property_array_check(&self->ptr, self->prop)) { int len= pyrna_prop_array_length(self); - ret = prop_subscript_array_slice(&self->ptr, self->prop, 0, len, len); + ret = prop_subscript_array_slice(self, &self->ptr, self->prop, 0, len, len); } else if ((ret = pyrna_prop_values(self))) { /* do nothing */ @@ -2518,6 +2582,7 @@ static struct PyMethodDef pyrna_struct_methods[] = { {"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}, + {"recast_type", (PyCFunction)pyrna_struct_recast_type, METH_NOARGS, NULL}, {"__dir__", (PyCFunction)pyrna_struct_dir, METH_NOARGS, NULL}, {NULL, NULL, 0, NULL} }; @@ -2580,15 +2645,23 @@ static PyObject * pyrna_prop_new(PyTypeObject *type, PyObject *args, PyObject *k } } -PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *data) +PyObject *pyrna_param_to_py(PointerRNA *ptr, ParameterList *parms, PropertyRNA *prop, void *data) { PyObject *ret; int type = RNA_property_type(prop); - + int flag = RNA_property_flag(prop); int a; if(RNA_property_array_check(ptr, prop)) { - int len = RNA_property_array_length(ptr, prop); + int len; + + if (flag & PROP_DYNAMIC) { + len= RNA_parameter_length_get_data(parms, prop, data); + + data= *((void **)data); + } + else + len= RNA_property_array_length(ptr, prop); /* resolve the array from a new pytype */ @@ -2647,7 +2720,10 @@ PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *data) break; case PROP_STRING: { - ret = PyUnicode_FromString( *(char**)data ); + if(flag & PROP_THICK_WRAP) + ret = PyUnicode_FromString( (char*)data ); + else + ret = PyUnicode_FromString( *(char**)data ); break; } case PROP_ENUM: @@ -2659,7 +2735,6 @@ PyObject *pyrna_param_to_py(PointerRNA *ptr, PropertyRNA *prop, void *data) { PointerRNA newptr; StructRNA *type= RNA_property_pointer_type(ptr, prop); - int flag = RNA_property_flag(prop); if(flag & PROP_RNAPTR) { /* in this case we get the full ptr */ @@ -2763,7 +2838,7 @@ static PyObject * pyrna_func_call(PyObject *self, PyObject *args, PyObject *kw) flag= RNA_property_flag(parm); /* only useful for single argument returns, we'll need another list loop for multiple */ - if (flag & PROP_RETURN) { + if (flag & PROP_OUTPUT) { ret_len++; if (pret_single==NULL) { pret_single= parm; @@ -2800,7 +2875,7 @@ static PyObject * pyrna_func_call(PyObject *self, PyObject *args, PyObject *kw) continue; } - err= pyrna_py_to_prop(&funcptr, parm, iter.data, item, ""); + err= pyrna_py_to_prop(&funcptr, parm, &parms, iter.data, item, ""); if(err!=0) { /* the error generated isnt that useful, so generate it again with a useful prefix @@ -2813,7 +2888,7 @@ static PyObject * pyrna_func_call(PyObject *self, PyObject *args, PyObject *kw) else snprintf(error_prefix, sizeof(error_prefix), "%s.%s(): error with argument %d, \"%s\" - ", RNA_struct_identifier(self_ptr->type), RNA_function_identifier(self_func), i, parm_id); - pyrna_py_to_prop(&funcptr, parm, iter.data, item, error_prefix); + pyrna_py_to_prop(&funcptr, parm, &parms, iter.data, item, error_prefix); break; } @@ -2871,7 +2946,7 @@ 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) + if(RNA_property_flag(parm) & PROP_OUTPUT) continue; BLI_dynstr_appendf(good_args, first ? "%s" : ", %s", RNA_property_identifier(parm)); @@ -2918,14 +2993,14 @@ static PyObject * pyrna_func_call(PyObject *self, PyObject *args, PyObject *kw) parm= iter.parm; flag= RNA_property_flag(parm); - if (flag & PROP_RETURN) - PyTuple_SET_ITEM(ret, i++, pyrna_param_to_py(&funcptr, parm, iter.data)); + if (flag & PROP_OUTPUT) + PyTuple_SET_ITEM(ret, i++, pyrna_param_to_py(&funcptr, &parms, parm, iter.data)); } RNA_parameter_list_end(&iter); } else - ret= pyrna_param_to_py(&funcptr, pret_single, retdata_single); + ret= pyrna_param_to_py(&funcptr, &parms, pret_single, retdata_single); /* possible there is an error in conversion */ if(ret==NULL) @@ -3111,6 +3186,7 @@ static struct PyMethodDef pyrna_struct_subtype_methods[] = { {"BoolProperty", (PyCFunction)BPy_BoolProperty, METH_VARARGS|METH_KEYWORDS, ""}, {"IntProperty", (PyCFunction)BPy_IntProperty, METH_VARARGS|METH_KEYWORDS, ""}, {"FloatProperty", (PyCFunction)BPy_FloatProperty, METH_VARARGS|METH_KEYWORDS, ""}, + {"FloatVectorProperty", (PyCFunction)BPy_FloatVectorProperty, METH_VARARGS|METH_KEYWORDS, ""}, {"StringProperty", (PyCFunction)BPy_StringProperty, METH_VARARGS|METH_KEYWORDS, ""}, {"EnumProperty", (PyCFunction)BPy_EnumProperty, METH_VARARGS|METH_KEYWORDS, ""}, {"PointerProperty", (PyCFunction)BPy_PointerProperty, METH_VARARGS|METH_KEYWORDS, ""}, @@ -3433,8 +3509,13 @@ static PyObject *pyrna_basetype_getattro( BPy_BaseTypeRNA *self, PyObject *pynam { PointerRNA newptr; PyObject *ret; + char *name= _PyUnicode_AsString(pyname); - if (RNA_property_collection_lookup_string(&self->ptr, self->prop, _PyUnicode_AsString(pyname), &newptr)) { + if(strcmp(name, "register")==0) { + /* this is called so often, make an exception and save a full lookup on all types */ + ret= PyObject_GenericGetAttr((PyObject *)self, pyname); + } + else if (RNA_property_collection_lookup_string(&self->ptr, self->prop, name, &newptr)) { ret= pyrna_struct_Subtype(&newptr); if (ret==NULL) { PyErr_Format(PyExc_SystemError, "bpy.types.%.200s subtype could not be generated, this is a bug!", _PyUnicode_AsString(pyname)); @@ -3502,40 +3583,6 @@ PyObject *BPY_rna_types(void) return (PyObject *)self; } -static struct PyMethodDef props_methods[] = { - {"BoolProperty", (PyCFunction)BPy_BoolProperty, METH_VARARGS|METH_KEYWORDS, ""}, - {"IntProperty", (PyCFunction)BPy_IntProperty, METH_VARARGS|METH_KEYWORDS, ""}, - {"FloatProperty", (PyCFunction)BPy_FloatProperty, METH_VARARGS|METH_KEYWORDS, ""}, - {"StringProperty", (PyCFunction)BPy_StringProperty, METH_VARARGS|METH_KEYWORDS, ""}, - {"EnumProperty", (PyCFunction)BPy_EnumProperty, METH_VARARGS|METH_KEYWORDS, ""}, - {"PointerProperty", (PyCFunction)BPy_PointerProperty, METH_VARARGS|METH_KEYWORDS, ""}, - {"CollectionProperty", (PyCFunction)BPy_CollectionProperty, METH_VARARGS|METH_KEYWORDS, ""}, - {NULL, NULL, 0, NULL} -}; - -static struct PyModuleDef props_module = { - PyModuleDef_HEAD_INIT, - "bpy.props", - "", - -1,/* multiple "initialization" just copies the module dict. */ - props_methods, - NULL, NULL, NULL, NULL -}; - -PyObject *BPY_rna_props( void ) -{ - PyObject *submodule; - submodule= PyModule_Create(&props_module); - PyDict_SetItemString(PySys_GetObject("modules"), props_module.m_name, submodule); - - /* INCREF since its its assumed that all these functions return the - * module with a new ref like PyDict_New, since they are passed to - * PyModule_AddObject which steals a ref */ - Py_INCREF(submodule); - - return submodule; -} - StructRNA *pyrna_struct_as_srna(PyObject *self) { BPy_StructRNA *py_srna = NULL; @@ -3573,7 +3620,6 @@ StructRNA *pyrna_struct_as_srna(PyObject *self) return srna; } - /* Orphan functions, not sure where they should go */ /* get the srna for methods attached to types */ /* */ @@ -3582,7 +3628,7 @@ StructRNA *srna_from_self(PyObject *self) /* a bit sloppy but would cause a very confusing bug if * an error happened to be set here */ PyErr_Clear(); - + if(self==NULL) { return NULL; } @@ -3598,336 +3644,6 @@ StructRNA *srna_from_self(PyObject *self) return pyrna_struct_as_srna(self); } -/* operators use this so it can store the args given but defer running - * it until the operator runs where these values are used to setup the - * default args for that operator instance */ -static PyObject *bpy_prop_deferred_return(void *func, PyObject *kw) -{ - PyObject *ret = PyTuple_New(2); - PyTuple_SET_ITEM(ret, 0, PyCObject_FromVoidPtr(func, NULL)); - PyTuple_SET_ITEM(ret, 1, kw); - Py_INCREF(kw); - return ret; -} - -/* Function that sets RNA, NOTE - self is NULL when called from python, but being abused from C so we can pass the srna allong - * This isnt incorrect since its a python object - but be careful */ - -PyObject *BPy_BoolProperty(PyObject *self, PyObject *args, PyObject *kw) -{ - StructRNA *srna; - - if (PyTuple_Size(args) > 0) { - PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. - return NULL; - } - - srna= srna_from_self(self); - if(srna==NULL && PyErr_Occurred()) { - return NULL; /* self's type was compatible but error getting the srna */ - } - else if(srna) { - static char *kwlist[] = {"attr", "name", "description", "default", "hidden", NULL}; - char *id=NULL, *name="", *description=""; - int def=0, hidden=0; - PropertyRNA *prop; - - if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssii:BoolProperty", kwlist, &id, &name, &description, &def, &hidden)) - return NULL; - - prop= RNA_def_boolean(srna, id, def, name, description); - if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN); - RNA_def_property_duplicate_pointers(prop); - Py_RETURN_NONE; - } - else { /* operators defer running this function */ - return bpy_prop_deferred_return((void *)BPy_BoolProperty, kw); - } -} - -PyObject *BPy_IntProperty(PyObject *self, PyObject *args, PyObject *kw) -{ - StructRNA *srna; - - if (PyTuple_Size(args) > 0) { - PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. - return NULL; - } - - srna= srna_from_self(self); - if(srna==NULL && PyErr_Occurred()) { - return NULL; /* self's type was compatible but error getting the srna */ - } - else if(srna) { - static char *kwlist[] = {"attr", "name", "description", "default", "min", "max", "soft_min", "soft_max", "step", "hidden", NULL}; - char *id=NULL, *name="", *description=""; - int min=INT_MIN, max=INT_MAX, soft_min=INT_MIN, soft_max=INT_MAX, step=1, def=0; - int hidden=0; - PropertyRNA *prop; - - if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssiiiiiii:IntProperty", kwlist, &id, &name, &description, &def, &min, &max, &soft_min, &soft_max, &step, &hidden)) - return NULL; - - prop= RNA_def_int(srna, id, def, min, max, name, description, soft_min, soft_max); - RNA_def_property_ui_range(prop, min, max, step, 0); - if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN); - RNA_def_property_duplicate_pointers(prop); - Py_RETURN_NONE; - } - else { /* operators defer running this function */ - return bpy_prop_deferred_return((void *)BPy_IntProperty, kw); - } -} - -PyObject *BPy_FloatProperty(PyObject *self, PyObject *args, PyObject *kw) -{ - StructRNA *srna; - - if (PyTuple_Size(args) > 0) { - PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. - return NULL; - } - - srna= srna_from_self(self); - if(srna==NULL && PyErr_Occurred()) { - return NULL; /* self's type was compatible but error getting the srna */ - } - else if(srna) { - static char *kwlist[] = {"attr", "name", "description", "default", "min", "max", "soft_min", "soft_max", "step", "precision", "hidden", NULL}; - char *id=NULL, *name="", *description=""; - float min=-FLT_MAX, max=FLT_MAX, soft_min=-FLT_MAX, soft_max=FLT_MAX, step=3, def=0.0f; - int precision= 1, hidden=0; - PropertyRNA *prop; - - if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssffffffii:FloatProperty", kwlist, &id, &name, &description, &def, &min, &max, &soft_min, &soft_max, &step, &precision, &hidden)) - return NULL; - - prop= RNA_def_float(srna, id, def, min, max, name, description, soft_min, soft_max); - RNA_def_property_ui_range(prop, min, max, step, precision); - if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN); - RNA_def_property_duplicate_pointers(prop); - Py_RETURN_NONE; - } - else { /* operators defer running this function */ - return bpy_prop_deferred_return((void *)BPy_FloatProperty, kw); - } -} - -PyObject *BPy_StringProperty(PyObject *self, PyObject *args, PyObject *kw) -{ - StructRNA *srna; - - if (PyTuple_Size(args) > 0) { - PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. - return NULL; - } - - srna= srna_from_self(self); - if(srna==NULL && PyErr_Occurred()) { - return NULL; /* self's type was compatible but error getting the srna */ - } - else if(srna) { - static char *kwlist[] = {"attr", "name", "description", "default", "maxlen", "hidden", NULL}; - char *id=NULL, *name="", *description="", *def=""; - int maxlen=0, hidden=0; - PropertyRNA *prop; - - if (!PyArg_ParseTupleAndKeywords(args, kw, "s|sssii:StringProperty", kwlist, &id, &name, &description, &def, &maxlen, &hidden)) - return NULL; - - prop= RNA_def_string(srna, id, def, maxlen, name, description); - if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN); - RNA_def_property_duplicate_pointers(prop); - Py_RETURN_NONE; - } - else { /* operators defer running this function */ - return bpy_prop_deferred_return((void *)BPy_StringProperty, kw); - } -} - -static EnumPropertyItem *enum_items_from_py(PyObject *value, const char *def, int *defvalue) -{ - EnumPropertyItem *items= NULL; - PyObject *item; - int seq_len, i, totitem= 0; - - if(!PySequence_Check(value)) { - PyErr_SetString(PyExc_TypeError, "expected a sequence of tuples for the enum items"); - return NULL; - } - - seq_len = PySequence_Length(value); - for(i=0; i<seq_len; i++) { - EnumPropertyItem tmp= {0, "", 0, "", ""}; - - item= PySequence_GetItem(value, i); - if(item==NULL || PyTuple_Check(item)==0) { - PyErr_SetString(PyExc_TypeError, "expected a sequence of tuples for the enum items"); - if(items) MEM_freeN(items); - Py_XDECREF(item); - return NULL; - } - - if(!PyArg_ParseTuple(item, "sss", &tmp.identifier, &tmp.name, &tmp.description)) { - PyErr_SetString(PyExc_TypeError, "expected an identifier, name and description in the tuple"); - Py_DECREF(item); - return NULL; - } - - tmp.value= i; - RNA_enum_item_add(&items, &totitem, &tmp); - - if(def[0] && strcmp(def, tmp.identifier) == 0) - *defvalue= tmp.value; - - Py_DECREF(item); - } - - if(!def[0]) - *defvalue= 0; - - RNA_enum_item_end(&items, &totitem); - - return items; -} - -PyObject *BPy_EnumProperty(PyObject *self, PyObject *args, PyObject *kw) -{ - StructRNA *srna; - - if (PyTuple_Size(args) > 0) { - PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. - return NULL; - } - - srna= srna_from_self(self); - if(srna==NULL && PyErr_Occurred()) { - return NULL; /* self's type was compatible but error getting the srna */ - } - else if(srna) { - static char *kwlist[] = {"attr", "items", "name", "description", "default", "hidden", NULL}; - char *id=NULL, *name="", *description="", *def=""; - int defvalue=0, hidden=0; - PyObject *items= Py_None; - EnumPropertyItem *eitems; - PropertyRNA *prop; - - if (!PyArg_ParseTupleAndKeywords(args, kw, "sO|sssi:EnumProperty", kwlist, &id, &items, &name, &description, &def, &hidden)) - return NULL; - - eitems= enum_items_from_py(items, def, &defvalue); - if(!eitems) - return NULL; - - prop= RNA_def_enum(srna, id, eitems, defvalue, name, description); - if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN); - RNA_def_property_duplicate_pointers(prop); - MEM_freeN(eitems); - - Py_RETURN_NONE; - } - else { /* operators defer running this function */ - return bpy_prop_deferred_return((void *)BPy_EnumProperty, kw); - } -} - -static StructRNA *pointer_type_from_py(PyObject *value) -{ - StructRNA *srna; - - srna= srna_from_self(value); - if(!srna) { - PyErr_SetString(PyExc_SystemError, "expected an RNA type derived from IDPropertyGroup"); - return NULL; - } - - if(!RNA_struct_is_a(srna, &RNA_IDPropertyGroup)) { - PyErr_SetString(PyExc_SystemError, "expected an RNA type derived from IDPropertyGroup"); - return NULL; - } - - return srna; -} - -PyObject *BPy_PointerProperty(PyObject *self, PyObject *args, PyObject *kw) -{ - StructRNA *srna; - - if (PyTuple_Size(args) > 0) { - PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. - return NULL; - } - - srna= srna_from_self(self); - if(srna==NULL && PyErr_Occurred()) { - return NULL; /* self's type was compatible but error getting the srna */ - } - else if(srna) { - static char *kwlist[] = {"attr", "type", "name", "description", "hidden", NULL}; - char *id=NULL, *name="", *description=""; - int hidden= 0; - PropertyRNA *prop; - StructRNA *ptype; - PyObject *type= Py_None; - - if (!PyArg_ParseTupleAndKeywords(args, kw, "sO|ssi:PointerProperty", kwlist, &id, &type, &name, &description, &hidden)) - return NULL; - - ptype= pointer_type_from_py(type); - if(!ptype) - return NULL; - - prop= RNA_def_pointer_runtime(srna, id, ptype, name, description); - if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN); - RNA_def_property_duplicate_pointers(prop); - Py_RETURN_NONE; - } - else { /* operators defer running this function */ - return bpy_prop_deferred_return((void *)BPy_PointerProperty, kw); - } - return NULL; -} - -PyObject *BPy_CollectionProperty(PyObject *self, PyObject *args, PyObject *kw) -{ - StructRNA *srna; - - if (PyTuple_Size(args) > 0) { - PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. - return NULL; - } - - srna= srna_from_self(self); - if(srna==NULL && PyErr_Occurred()) { - return NULL; /* self's type was compatible but error getting the srna */ - } - else if(srna) { - static char *kwlist[] = {"attr", "type", "name", "description", "hidden", NULL}; - char *id=NULL, *name="", *description=""; - int hidden= 0; - PropertyRNA *prop; - StructRNA *ptype; - PyObject *type= Py_None; - - if (!PyArg_ParseTupleAndKeywords(args, kw, "sO|ssi:CollectionProperty", kwlist, &id, &type, &name, &description, &hidden)) - return NULL; - - ptype= pointer_type_from_py(type); - if(!ptype) - return NULL; - - prop= RNA_def_collection_runtime(srna, id, ptype, name, description); - if(hidden) RNA_def_property_flag(prop, PROP_HIDDEN); - RNA_def_property_duplicate_pointers(prop); - Py_RETURN_NONE; - } - else { /* operators defer running this function */ - return bpy_prop_deferred_return((void *)BPy_CollectionProperty, kw); - } - return NULL; -} - - static int deferred_register_prop(StructRNA *srna, PyObject *item, PyObject *key, PyObject *dummy_args) { /* We only care about results from C which @@ -3990,6 +3706,9 @@ int pyrna_deferred_register_props(StructRNA *srna, PyObject *class_dict) order= PyDict_GetItemString(class_dict, "order"); + if(order==NULL) + PyErr_Clear(); + if(order && PyList_Check(order)) { for(pos= 0; pos<PyList_GET_SIZE(order); pos++) { key= PyList_GET_ITEM(order, pos); @@ -4024,7 +3743,7 @@ static int rna_function_arg_count(FunctionRNA *func) for(link=lb->first; link; link=link->next) { parm= (PropertyRNA*)link; - if(!(RNA_property_flag(parm) & PROP_RETURN)) + if(!(RNA_property_flag(parm) & PROP_OUTPUT)) count++; } @@ -4119,31 +3838,26 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun item = PyObject_GetAttrString(py_class, identifier); if (item==NULL) { - /* Sneaky workaround to use the class name as the bl_idname */ - if(strcmp(identifier, "bl_idname") == 0) { - item= PyObject_GetAttrString(py_class, "__name__"); - if(item) { - Py_DECREF(item); /* no need to keep a ref, the class owns it */ +#define BPY_REPLACEMENT_STRING(rna_attr, py_attr) \ + if(strcmp(identifier, rna_attr) == 0) { \ + item= PyObject_GetAttrString(py_class, py_attr); \ + if(item && item != Py_None) { \ + if(pyrna_py_to_prop(dummyptr, prop, NULL, NULL, item, "validating class error:") != 0) { \ + Py_DECREF(item); \ + return -1; \ + } \ + } \ + Py_XDECREF(item); \ + } \ - if(pyrna_py_to_prop(dummyptr, prop, NULL, item, "validating class error:") != 0) - return -1; - } - } -#if 0 - if(strcmp(identifier, "bl_label") == 0) { - item= PyObject_GetAttrString(py_class, "__doc__"); + BPY_REPLACEMENT_STRING("bl_idname", "__name__"); + BPY_REPLACEMENT_STRING("bl_description", "__doc__"); - if(item) { - Py_DECREF(item); /* no need to keep a ref, the class owns it */ +#undef BPY_REPLACEMENT_STRING - 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, %.200s class to have an \"%.200s\" attribute", class_type, py_class_name, identifier); return -1; @@ -4154,7 +3868,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun else { 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) + if(pyrna_py_to_prop(dummyptr, prop, NULL, NULL, item, "validating class error:") != 0) return -1; } } @@ -4217,7 +3931,7 @@ static int bpy_class_call(PointerRNA *ptr, FunctionRNA *func, ParameterList *par flag= RNA_property_flag(parm); /* only useful for single argument returns, we'll need another list loop for multiple */ - if (flag & PROP_RETURN) { + if (flag & PROP_OUTPUT) { ret_len++; if (pret_single==NULL) { pret_single= parm; @@ -4227,7 +3941,7 @@ static int bpy_class_call(PointerRNA *ptr, FunctionRNA *func, ParameterList *par continue; } - parmitem= pyrna_param_to_py(&funcptr, parm, iter.data); + parmitem= pyrna_param_to_py(&funcptr, parms, parm, iter.data); PyTuple_SET_ITEM(args, i, parmitem); i++; } @@ -4255,7 +3969,7 @@ static int bpy_class_call(PointerRNA *ptr, FunctionRNA *func, ParameterList *par } else { if(ret_len==1) { - err= pyrna_py_to_prop(&funcptr, pret_single, retdata_single, ret, "calling class function:"); + err= pyrna_py_to_prop(&funcptr, pret_single, parms, retdata_single, ret, "calling class function:"); } else if (ret_len > 1) { @@ -4277,8 +3991,8 @@ static int bpy_class_call(PointerRNA *ptr, FunctionRNA *func, ParameterList *par flag= RNA_property_flag(parm); /* only useful for single argument returns, we'll need another list loop for multiple */ - if (flag & PROP_RETURN) { - err= pyrna_py_to_prop(&funcptr, parm, iter.data, PyTuple_GET_ITEM(ret, i++), "calling class function:"); + if (flag & PROP_OUTPUT) { + err= pyrna_py_to_prop(&funcptr, parm, parms, iter.data, PyTuple_GET_ITEM(ret, i++), "calling class function:"); if(err) break; } diff --git a/source/blender/python/intern/bpy_rna.h b/source/blender/python/intern/bpy_rna.h index 74a16b43dc1..284eef2c0e1 100644 --- a/source/blender/python/intern/bpy_rna.h +++ b/source/blender/python/intern/bpy_rna.h @@ -70,24 +70,16 @@ PyObject *BPY_rna_module( void ); void BPY_update_rna_module( void ); /*PyObject *BPY_rna_doc( void );*/ PyObject *BPY_rna_types( void ); -PyObject *BPY_rna_props( void ); PyObject *pyrna_struct_CreatePyObject( PointerRNA *ptr ); PyObject *pyrna_prop_CreatePyObject( PointerRNA *ptr, PropertyRNA *prop ); /* operators also need this to set args */ -int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyObject *value, const char *error_prefix); +int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, ParameterList *parms, void *data, PyObject *value, const char *error_prefix); int pyrna_pydict_to_props(PointerRNA *ptr, PyObject *kw, int all_args, const char *error_prefix); PyObject * pyrna_prop_to_py(PointerRNA *ptr, PropertyRNA *prop); -/* functions for setting up new props - experemental */ -PyObject *BPy_BoolProperty(PyObject *self, PyObject *args, PyObject *kw); -PyObject *BPy_IntProperty(PyObject *self, PyObject *args, PyObject *kw); -PyObject *BPy_FloatProperty(PyObject *self, PyObject *args, PyObject *kw); -PyObject *BPy_StringProperty(PyObject *self, PyObject *args, PyObject *kw); -PyObject *BPy_EnumProperty(PyObject *self, PyObject *args, PyObject *kw); -PyObject *BPy_PointerProperty(PyObject *self, PyObject *args, PyObject *kw); -PyObject *BPy_CollectionProperty(PyObject *self, PyObject *args, PyObject *kw); +PyObject *pyrna_enum_bitfield_to_py(struct EnumPropertyItem *items, int value); /* function for registering types */ PyObject *pyrna_basetype_register(PyObject *self, PyObject *args); @@ -100,11 +92,11 @@ void pyrna_alloc_types(void); void pyrna_free_types(void); /* primitive type conversion */ -int pyrna_py_to_array(PointerRNA *ptr, PropertyRNA *prop, char *param_data, PyObject *py, const char *error_prefix); +int pyrna_py_to_array(PointerRNA *ptr, PropertyRNA *prop, ParameterList *parms, char *param_data, PyObject *py, const char *error_prefix); int pyrna_py_to_array_index(PointerRNA *ptr, PropertyRNA *prop, int arraydim, int arrayoffset, int index, PyObject *py, const char *error_prefix); PyObject *pyrna_py_from_array(PointerRNA *ptr, PropertyRNA *prop); -PyObject *pyrna_py_from_array_index(BPy_PropertyRNA *self, int index); +PyObject *pyrna_py_from_array_index(BPy_PropertyRNA *self, PointerRNA *ptr, PropertyRNA *prop, int index); PyObject *pyrna_math_object_from_array(PointerRNA *ptr, PropertyRNA *prop); int pyrna_array_contains_py(PointerRNA *ptr, PropertyRNA *prop, PyObject *value); diff --git a/source/blender/python/sphinx_doc_gen.py b/source/blender/python/sphinx_doc_gen.py index df48bad980d..d7699d5d8f5 100644 --- a/source/blender/python/sphinx_doc_gen.py +++ b/source/blender/python/sphinx_doc_gen.py @@ -23,15 +23,19 @@ 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" +This will generate python files in "./source/blender/python/doc/sphinx-in" Generate html docs by running... - sphinx-build source/blender/python/doc/bpy/sphinx-in source/blender/python/doc/bpy/sphinx-out -''' + sphinx-build source/blender/python/doc/sphinx-in source/blender/python/doc/sphinx-out + -# if you dont have graphvis installed ommit the --graph arg. +For PDF generation + + sphinx-build -b latex source/blender/python/doc/sphinx-in source/blender/python/doc/sphinx-out + cd source/blender/python/doc/sphinx-out + make +''' -# GLOBALS['BASEDIR'] = './source/blender/python/doc' import os import inspect @@ -53,6 +57,152 @@ def write_indented_lines(ident, fn, text): for l in text.split("\n"): fn(ident + l.strip() + "\n") + +def pymethod2sphinx(ident, fw, identifier, py_func): + ''' + class method to sphinx + ''' + arg_str = inspect.formatargspec(*inspect.getargspec(py_func)) + if arg_str.startswith("(self, "): + arg_str = "(" + arg_str[7:] + func_type = "method" + elif arg_str.startswith("(cls, "): + arg_str = "(" + arg_str[6:] + func_type = "classmethod" + else: + func_type = "staticmethod" + + fw(ident + ".. %s:: %s%s\n\n" % (func_type, identifier, arg_str)) + if py_func.__doc__: + write_indented_lines(ident + " ", fw, py_func.__doc__) + fw("\n") + + +def pyfunc2sphinx(ident, fw, identifier, py_func, is_class=True): + ''' + function or class method to sphinx + ''' + arg_str = inspect.formatargspec(*inspect.getargspec(py_func)) + + if not is_class: + func_type = "function" + + # ther rest are class methods + elif arg_str.startswith("(self, "): + arg_str = "(" + arg_str[7:] + func_type = "method" + elif arg_str.startswith("(cls, "): + arg_str = "(" + arg_str[6:] + func_type = "classmethod" + else: + func_type = "staticmethod" + + fw(ident + ".. %s:: %s%s\n\n" % (func_type, identifier, arg_str)) + if py_func.__doc__: + write_indented_lines(ident + " ", fw, py_func.__doc__.strip()) + fw("\n") + +def py_c_func2sphinx(ident, fw, identifier, py_func, is_class=True): + ''' + c defined function to sphinx. + ''' + + # dump the docstring, assume its formatted correctly + if py_func.__doc__: + for l in py_func.__doc__.split("\n"): + fw(ident + l + "\n") + fw("\n") + else: + fw(ident + ".. function:: %s()\n\n" % identifier) + fw(ident + " Undocumented function.\n\n" % identifier) + + +def pyprop2sphinx(ident, fw, identifier, py_prop): + ''' + python property to sphinx + ''' + fw(ident + ".. attribute:: %s\n\n" % identifier) + write_indented_lines(ident + " ", fw, py_prop.__doc__) + if py_prop.fset is None: + fw(ident + " (readonly)\n\n") + + +def pymodule2sphinx(BASEPATH, module_name, module, title): + import types + # lame, python wont give some access + MethodDescriptorType = type(dict.get) + GetSetDescriptorType = type(int.real) + + + filepath = os.path.join(BASEPATH, module_name + ".rst") + + file = open(filepath, "w") + + fw = file.write + + fw(title + "\n") + fw(("=" * len(title)) + "\n\n") + + fw(".. module:: %s\n\n" % module_name) + + if module.__doc__: + # Note, may contain sphinx syntax, dont mangle! + fw(module.__doc__.strip()) + fw("\n\n") + + classes = [] + + for attribute in dir(module): + if not attribute.startswith("_"): + value = getattr(module, attribute) + + value_type = type(value) + + if value_type == types.FunctionType: + pyfunc2sphinx("", fw, attribute, value, is_class=False) + elif value_type in (types.BuiltinMethodType, types.BuiltinFunctionType): # both the same at the moment but to be future proof + # note: can't get args from these, so dump the string as is + # this means any module used like this must have fully formatted docstrings. + py_c_func2sphinx("", fw, attribute, value, is_class=False) + elif value_type == type: + classes.append((attribute, value)) + # TODO, more types... + + # write collected classes now + for (attribute, value) in classes: + # May need to be its own function + fw(".. class:: %s\n\n" % attribute) + if value.__doc__: + for l in value.__doc__.split("\n"): + fw(" %s\n" % l) + fw("\n") + + for key in sorted(value.__dict__.keys()): + if key.startswith("__"): + continue + descr = value.__dict__[key] + if type(descr) == GetSetDescriptorType: + if descr.__doc__: + fw(" .. attribute:: %s\n\n" % key) + for l in descr.__doc__.split("\n"): + fw(" %s\n" % l) + fw("\n") + + for key in sorted(value.__dict__.keys()): + if key.startswith("__"): + continue + descr = value.__dict__[key] + if type(descr) == MethodDescriptorType: # GetSetDescriptorType, GetSetDescriptorType's are not documented yet + if descr.__doc__: + for l in descr.__doc__.split("\n"): + fw(" %s\n" % l) + fw("\n") + + fw("\n\n") + + file.close() + + def rna2sphinx(BASEPATH): structs, funcs, ops, props = rna_info.BuildRNAInfo() @@ -70,8 +220,12 @@ def rna2sphinx(BASEPATH): 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") + fw("version = '%s'\n" % bpy.app.version_string) + fw("release = '%s'\n" % bpy.app.version_string) + fw("\n") + # needed for latex, pdf gen + fw("latex_documents = [ ('contents', 'contents.tex', 'Blender Index', 'Blender Foundation', 'manual'), ]\n") + fw("latex_paper_size = 'a4paper'\n") file.close() @@ -79,13 +233,70 @@ def rna2sphinx(BASEPATH): file = open(filepath, "w") fw = file.write + fw("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n") + fw(" Blender Documentation contents\n") + fw("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n") + fw("\n") + fw("This document is an API reference for Blender %s.\n" % bpy.app.version_string.split()[0]) fw("\n") + fw("An introduction to blender and python can be found at <http://wiki.blender.org/index.php/Dev:2.5/Py/API/Intro>\n") + fw("\n") + fw(".. toctree::\n") + fw(" :maxdepth: 1\n\n") + fw(" bpy.ops.rst\n\n") + fw(" bpy.types.rst\n\n") + + # py modules + fw(" bpy.utils.rst\n\n") + fw(" bpy.app.rst\n\n") + + # C modules + fw(" bpy.props.rst\n\n") + + fw(" Mathutils.rst\n\n") + + file.close() + + + + # internal modules + filepath = os.path.join(BASEPATH, "bpy.ops.rst") + file = open(filepath, "w") + fw = file.write + fw("Blender Operators (bpy.ops)\n") + fw("===========================\n\n") fw(".. toctree::\n") fw(" :glob:\n\n") fw(" bpy.ops.*\n\n") + file.close() + + filepath = os.path.join(BASEPATH, "bpy.types.rst") + file = open(filepath, "w") + fw = file.write + fw("Blender Types (bpy.types)\n") + fw("=========================\n\n") + fw(".. toctree::\n") + fw(" :glob:\n\n") fw(" bpy.types.*\n\n") file.close() + + + # python modules + from bpy import utils as module + pymodule2sphinx(BASEPATH, "bpy.utils", module, "Utilities (bpy.utils)") + from bpy import app as module + pymodule2sphinx(BASEPATH, "bpy.app", module, "Application Data (bpy.app)") + + from bpy import props as module + pymodule2sphinx(BASEPATH, "bpy.props", module, "Property Definitions (bpy.props)") + + import Mathutils as module + pymodule2sphinx(BASEPATH, "Mathutils", module, "Math Types & Utilities (Mathutils)") + del module + + + if 0: filepath = os.path.join(BASEPATH, "bpy.rst") file = open(filepath, "w") @@ -102,14 +313,18 @@ def rna2sphinx(BASEPATH): if is_return: id_name = "return" id_type = "rtype" + kwargs = {"as_ret": True, "class_fmt": ":class:`%s`"} + identifier = "" else: id_name = "arg" id_type = "type" + kwargs = {"as_arg": True, "class_fmt": ":class:`%s`"} + identifier = " %s" % prop.identifier - type_descr = prop.get_type_description(as_arg=True, class_fmt=":class:`%s`") + type_descr = prop.get_type_description(**kwargs) if prop.name or prop.description: - fw(ident + " :%s %s: %s\n" % (id_name, prop.identifier, ", ".join([val for val in (prop.name, prop.description) if val]))) - fw(ident + " :%s %s: %s\n" % (id_type, prop.identifier, type_descr)) + fw(ident + ":%s%s: %s\n" % (id_name, identifier, ", ".join([val for val in (prop.name, prop.description) if val]))) + fw(ident + ":%s%s: %s\n" % (id_type, identifier, type_descr)) def write_struct(struct): #if not struct.identifier.startswith("Sc") and not struct.identifier.startswith("I"): @@ -160,17 +375,14 @@ def rna2sphinx(BASEPATH): fw(" .. attribute:: %s\n\n" % prop.identifier) if prop.description: fw(" %s\n\n" % prop.description) - type_descr = prop.get_type_description(as_arg=False, class_fmt=":class:`%s`") + type_descr = prop.get_type_description(class_fmt=":class:`%s`") fw(" *type* %s\n\n" % type_descr) # 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") + pyprop2sphinx(" ", fw, identifier, py_prop) del py_properties, py_prop for func in struct.functions: @@ -184,14 +396,14 @@ def rna2sphinx(BASEPATH): if len(func.return_values) == 1: write_param(" ", fw, func.return_values[0], is_return=True) - else: # multiple return values - fw(" :return (%s):\n" % ", ".join([prop.identifier for prop in func.return_values])) + elif func.return_values: # multiple return values + fw(" :return (%s):\n" % ", ".join([prop.identifier for prop in func.return_values])) for prop in func.return_values: - type_descr = prop.get_type_description(as_arg=True, class_fmt=":class:`%s`") + type_descr = prop.get_type_description(as_ret=True, class_fmt=":class:`%s`") descr = prop.description if not descr: descr = prop.name - fw(" `%s`, %s, %s\n\n" % (prop.identifier, descr, type_descr)) + fw(" `%s`, %s, %s\n\n" % (prop.identifier, descr, type_descr)) fw("\n") @@ -201,20 +413,7 @@ def rna2sphinx(BASEPATH): py_func = None for identifier, py_func in py_funcs: - arg_str = inspect.formatargspec(*inspect.getargspec(py_func)) - if arg_str.startswith("(self, "): - arg_str = "(" + arg_str[7:] - func_type = "method" - elif arg_str.startswith("(cls, "): - arg_str = "(" + arg_str[6:] - func_type = "classmethod" - else: - func_type = "staticmethod" - - fw(" .. %s:: %s%s\n\n" % (func_type, identifier, arg_str)) - if py_func.__doc__: - write_indented_lines(" ", fw, py_func.__doc__) - fw("\n") + pyfunc2sphinx(" ", fw, identifier, py_func, is_class=True) del py_funcs, py_func if struct.references: @@ -257,7 +456,7 @@ def rna2sphinx(BASEPATH): if op.description: fw(" %s\n\n" % op.description) for prop in op.args: - write_param(" ", fw, prop) + write_param(" ", fw, prop) if op.args: fw("\n") @@ -274,9 +473,10 @@ if __name__ == '__main__': 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') + # os.system("rm source/blender/python/doc/sphinx-in/*.rst") + # os.system("rm -rf source/blender/python/doc/sphinx-out/*") + rna2sphinx('source/blender/python/doc/sphinx-in') + # os.system("rm source/blender/python/doc/sphinx-in/bpy.types.*.rst") import sys sys.exit() diff --git a/source/blender/quicktime/apple/qtkit_export.m b/source/blender/quicktime/apple/qtkit_export.m index 1466d3a3a09..6e9e4885def 100644 --- a/source/blender/quicktime/apple/qtkit_export.m +++ b/source/blender/quicktime/apple/qtkit_export.m @@ -153,6 +153,27 @@ void makeqtstring (RenderData *rd, char *string) { } } +void filepath_qt(char *string, RenderData *rd) { + char txt[64]; + + if (string==NULL) return; + + strcpy(string, rd->pic); + BLI_convertstringcode(string, G.sce); + + BLI_make_existing_file(string); + + if (!BLI_testextensie(string, ".mov")) { + /* if we dont have any #'s to insert numbers into, use 4 numbers by default */ + if (strchr(string, '#')==NULL) + strcat(string, "####"); /* 4 numbers */ + + BLI_convertstringframe_range(string, rd->sfra, rd->efra); + strcat(string, ".mov"); + } +} + + #pragma mark export functions int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, ReportList *reports) diff --git a/source/blender/quicktime/apple/qtkit_import.m b/source/blender/quicktime/apple/qtkit_import.m index 31a6ca71259..40d57552fb6 100644 --- a/source/blender/quicktime/apple/qtkit_import.m +++ b/source/blender/quicktime/apple/qtkit_import.m @@ -281,6 +281,8 @@ ImBuf * qtime_fetchibuf (struct anim *anim, int position) ibuf = nsImageToiBuf(frameImage,anim->x, anim->y); [pool drain]; + + ibuf->profile = IB_PROFILE_SRGB; return ibuf; } diff --git a/source/blender/quicktime/apple/quicktime_export.c b/source/blender/quicktime/apple/quicktime_export.c index 3f9a6de3c2a..bd1705db13a 100644 --- a/source/blender/quicktime/apple/quicktime_export.c +++ b/source/blender/quicktime/apple/quicktime_export.c @@ -488,7 +488,7 @@ static void QT_EndAddVideoSamplesToMedia (void) } -void makeqtstring (RenderData *rd, char *string) { +void filepath_qt(char *string, RenderData *rd) { char txt[64]; if (string==0) return; @@ -539,7 +539,7 @@ int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, R sframe = (rd->sfra); - makeqtstring(rd, name); + filepath_qt(name, rd); #ifdef __APPLE__ EnterMoviesOnThread(0); diff --git a/source/blender/quicktime/apple/quicktime_import.c b/source/blender/quicktime/apple/quicktime_import.c index 6fd72131b00..655271b5055 100644 --- a/source/blender/quicktime/apple/quicktime_import.c +++ b/source/blender/quicktime/apple/quicktime_import.c @@ -373,6 +373,8 @@ ImBuf * qtime_fetchibuf (struct anim *anim, int position) } #endif + ibuf->profile == IB_PROFILE_SRGB; + IMB_flipy(ibuf); return ibuf; } diff --git a/source/blender/quicktime/quicktime_export.h b/source/blender/quicktime/quicktime_export.h index 2ccda8eb526..33c9a85910f 100644 --- a/source/blender/quicktime/quicktime_export.h +++ b/source/blender/quicktime/quicktime_export.h @@ -50,6 +50,7 @@ struct ReportList; 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); +void filepath_qt(char *string, struct RenderData *rd); /*RNA helper functions */ void quicktime_verify_image_type(struct RenderData *rd); //used by RNA for defaults values init, if needed diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h index 76e3e002513..a90220b9c1b 100644 --- a/source/blender/render/extern/include/RE_pipeline.h +++ b/source/blender/render/extern/include/RE_pipeline.h @@ -46,6 +46,7 @@ struct RenderEngineType; struct RenderResult; struct ReportList; struct Scene; +struct SceneRenderLayer; /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ /* this include is what is exposed of render to outside world */ @@ -169,7 +170,7 @@ struct RenderLayer *RE_GetRenderLayer(struct RenderResult *rr, const char *name) float *RE_RenderLayerGetPass(struct RenderLayer *rl, int passtype); /* obligatory initialize call, disprect is optional */ -void RE_InitState (struct Render *re, struct Render *source, struct RenderData *rd, int winx, int winy, rcti *disprect); +void RE_InitState (struct Render *re, struct Render *source, struct RenderData *rd, struct SceneRenderLayer *srl, int winx, int winy, rcti *disprect); /* use this to change disprect of active render */ void RE_SetDispRect (struct Render *re, rcti *disprect); @@ -200,7 +201,7 @@ void RE_init_threadcount(Render *re); 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_BlenderFrame(struct Render *re, struct Scene *scene, struct SceneRenderLayer *srl, int frame); 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); diff --git a/source/blender/render/extern/include/RE_shader_ext.h b/source/blender/render/extern/include/RE_shader_ext.h index 28d88e1f8b4..a7c0f9511a5 100644 --- a/source/blender/render/extern/include/RE_shader_ext.h +++ b/source/blender/render/extern/include/RE_shader_ext.h @@ -49,10 +49,13 @@ typedef struct ShadeResult float combined[4]; float col[4]; float alpha, mist, z; + float emit[3]; float diff[3]; /* no ramps, shadow, etc */ float spec[3]; float shad[3]; float ao[3]; + float env[3]; + float indirect[3]; float refl[3]; float refr[3]; float nor[3]; @@ -153,7 +156,7 @@ typedef struct ShadeInput float dxstrand, dystrand; /* AO is a pre-process now */ - float ao[3], indirect[3]; + float ao[3], indirect[3], env[3]; int xs, ys; /* pixel to be rendered */ int mask; /* subsample mask */ diff --git a/source/blender/render/intern/include/rayobject.h b/source/blender/render/intern/include/rayobject.h index 5579f3896c1..309048d8efb 100644 --- a/source/blender/render/intern/include/rayobject.h +++ b/source/blender/render/intern/include/rayobject.h @@ -181,7 +181,7 @@ int RE_rayobjectcontrol_test_break(RayObjectControl *c); #include <time.h> #define BENCH(a,name) \ - do { \ + { \ double _t1, _t2; \ struct timeval _tstart, _tend; \ clock_t _clock_init = clock(); \ @@ -191,7 +191,7 @@ int RE_rayobjectcontrol_test_break(RayObjectControl *c); _t1 = ( double ) _tstart.tv_sec + ( double ) _tstart.tv_usec/ ( 1000*1000 ); \ _t2 = ( double ) _tend.tv_sec + ( double ) _tend.tv_usec/ ( 1000*1000 ); \ printf("BENCH:%s: %fs (real) %fs (cpu)\n", #name, _t2-_t1, (float)(clock()-_clock_init)/CLOCKS_PER_SEC);\ - } while(0) + } #else #define BENCH(a,name) (a) diff --git a/source/blender/render/intern/include/render_types.h b/source/blender/render/intern/include/render_types.h index d41851db5ff..ba995621a98 100644 --- a/source/blender/render/intern/include/render_types.h +++ b/source/blender/render/intern/include/render_types.h @@ -399,6 +399,7 @@ typedef struct StrandSurface { float (*co)[3]; /* for occlusion caching */ float (*ao)[3]; + float (*env)[3]; float (*indirect)[3]; /* for speedvectors */ float (*prevco)[3], (*nextco)[3]; diff --git a/source/blender/render/intern/include/rendercore.h b/source/blender/render/intern/include/rendercore.h index 250fbc000cb..e97ab1de9bb 100644 --- a/source/blender/render/intern/include/rendercore.h +++ b/source/blender/render/intern/include/rendercore.h @@ -99,7 +99,7 @@ RayObject* makeraytree_object(Render *re, ObjectInstanceRen *obi); extern void ray_shadow(ShadeInput *, LampRen *, float *); extern void ray_trace(ShadeInput *, ShadeResult *); -extern void ray_ao(ShadeInput *, float *); +extern void ray_ao(ShadeInput *, float *, float *); extern void init_jitter_plane(LampRen *lar); extern void init_ao_sphere(struct World *wrld); extern void init_render_qmcsampler(Render *re); diff --git a/source/blender/render/intern/raytrace/rayobject_vbvh.cpp b/source/blender/render/intern/raytrace/rayobject_vbvh.cpp index 4a2a56fa8ef..6185be324d6 100644 --- a/source/blender/render/intern/raytrace/rayobject_vbvh.cpp +++ b/source/blender/render/intern/raytrace/rayobject_vbvh.cpp @@ -37,6 +37,7 @@ int tot_hints = 0; #include "RE_raytrace.h" #include "BLI_memarena.h" #include "MEM_guardedalloc.h" +#include "BKE_global.h" #include "BKE_utildefines.h" #include "BLI_math.h" @@ -145,10 +146,13 @@ void bfree(VBVHTree *tree) { if(tot_pushup + tot_pushdown + tot_hints + tot_moves) { - printf("tot pushups: %d\n", tot_pushup); - printf("tot pushdowns: %d\n", tot_pushdown); - printf("tot moves: %d\n", tot_moves); - printf("tot hints created: %d\n", tot_hints); + if(G.f & G_DEBUG) { + printf("tot pushups: %d\n", tot_pushup); + printf("tot pushdowns: %d\n", tot_pushdown); + printf("tot moves: %d\n", tot_moves); + printf("tot hints created: %d\n", tot_hints); + } + tot_pushup = 0; tot_pushdown = 0; tot_hints = 0; diff --git a/source/blender/render/intern/raytrace/reorganize.h b/source/blender/render/intern/raytrace/reorganize.h index 7b14108760a..845f53605a8 100644 --- a/source/blender/render/intern/raytrace/reorganize.h +++ b/source/blender/render/intern/raytrace/reorganize.h @@ -32,6 +32,8 @@ #include <vector> #include <queue> +#include "BKE_global.h" + #ifdef _WIN32 #define INFINITY FLT_MAX // in mingw math.h: (1.0F/0.0F). This generates compile error, though. #endif @@ -515,7 +517,7 @@ struct VBVH_optimalPackSIMD if(num == 0) { num++; first = true; } calc_costs(node); - if(first) printf("expected cost = %f (%d)\n", node->cut_cost[0], node->best_cutsize ); + if((G.f & G_DEBUG) && first) printf("expected cost = %f (%d)\n", node->cut_cost[0], node->best_cutsize ); node->optimize(); } return node; diff --git a/source/blender/render/intern/raytrace/svbvh.h b/source/blender/render/intern/raytrace/svbvh.h index 80e6e2ea190..873f44d6d66 100644 --- a/source/blender/render/intern/raytrace/svbvh.h +++ b/source/blender/render/intern/raytrace/svbvh.h @@ -33,6 +33,7 @@ #include "bvh.h" #include "BLI_memarena.h" +#include "BKE_global.h" #include <stdio.h> #include <algorithm> @@ -142,10 +143,12 @@ struct Reorganize_SVBVH ~Reorganize_SVBVH() { - printf("%f childs per node\n", childs_per_node / nodes); - printf("%d childs BB are useless\n", useless_bb); - for(int i=0; i<16; i++) - printf("%i childs per node: %d/%d = %f\n", i, nodes_with_childs[i], nodes, nodes_with_childs[i]/float(nodes)); + if(G.f & G_DEBUG) { + printf("%f childs per node\n", childs_per_node / nodes); + printf("%d childs BB are useless\n", useless_bb); + for(int i=0; i<16; i++) + printf("%i childs per node: %d/%d = %f\n", i, nodes_with_childs[i], nodes, nodes_with_childs[i]/float(nodes)); + } } SVBVHNode *create_node(int nchilds) diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 899ddbe4fb4..a8afc40f04d 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -1701,7 +1701,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem if(re->r.mode & R_SPEED) dosurfacecache= 1; - else if((re->wrld.mode & WO_AMB_OCC) && (re->wrld.ao_gather_method == WO_AOGATHER_APPROX)) + else if((re->wrld.mode & (WO_AMB_OCC|WO_ENV_LIGHT|WO_INDIRECT_LIGHT)) && (re->wrld.ao_gather_method == WO_AOGATHER_APPROX)) if(ma->amb != 0.0f) dosurfacecache= 1; @@ -3811,7 +3811,7 @@ void init_render_world(Render *re) while(re->wrld.aosamp*re->wrld.aosamp < re->osa) re->wrld.aosamp++; if(!(re->r.mode & R_RAYTRACE) && (re->wrld.ao_gather_method == WO_AOGATHER_RAYTRACE)) - re->wrld.mode &= ~WO_AMB_OCC; + re->wrld.mode &= ~(WO_AMB_OCC|WO_ENV_LIGHT|WO_INDIRECT_LIGHT); } else { memset(&re->wrld, 0, sizeof(World)); @@ -4849,7 +4849,7 @@ void RE_Database_FromScene(Render *re, Scene *scene, int use_camera_view) if(re->r.mode & R_RAYTRACE) { init_render_qmcsampler(re); - if(re->wrld.mode & WO_AMB_OCC) + if(re->wrld.mode & (WO_AMB_OCC|WO_ENV_LIGHT|WO_INDIRECT_LIGHT)) if (re->wrld.ao_samp_method == WO_AOSAMP_CONSTANT) init_ao_sphere(&re->wrld); } @@ -4925,7 +4925,7 @@ void RE_Database_FromScene(Render *re, Scene *scene, int use_camera_view) project_renderdata(re, projectverto, re->r.mode & R_PANORAMA, 0, 1); /* Occlusion */ - if((re->wrld.mode & WO_AMB_OCC) && !re->test_break(re->tbh)) + if((re->wrld.mode & (WO_AMB_OCC|WO_ENV_LIGHT|WO_INDIRECT_LIGHT)) && !re->test_break(re->tbh)) if(re->wrld.ao_gather_method == WO_AOGATHER_APPROX) if(re->r.renderer==R_INTERN) if(re->r.mode & R_SHADOW) @@ -5537,7 +5537,7 @@ void RE_Database_Baking(Render *re, Scene *scene, int type, Object *actob) if(re->r.mode & R_RAYTRACE) { init_render_qmcsampler(re); - if(re->wrld.mode & WO_AMB_OCC) + if(re->wrld.mode & (WO_AMB_OCC|WO_ENV_LIGHT|WO_INDIRECT_LIGHT)) if (re->wrld.ao_samp_method == WO_AOSAMP_CONSTANT) init_ao_sphere(&re->wrld); } @@ -5569,7 +5569,7 @@ void RE_Database_Baking(Render *re, Scene *scene, int type, Object *actob) makeraytree(re); /* occlusion */ - if((re->wrld.mode & WO_AMB_OCC) && !re->test_break(re->tbh)) + if((re->wrld.mode & (WO_AMB_OCC|WO_ENV_LIGHT|WO_INDIRECT_LIGHT)) && !re->test_break(re->tbh)) if(re->wrld.ao_gather_method == WO_AOGATHER_APPROX) if(re->r.mode & R_SHADOW) make_occ_tree(re); @@ -5605,7 +5605,7 @@ void RE_make_sticky(Scene *scene, View3D *v3d) } re= RE_NewRender("_make sticky_"); - RE_InitState(re, NULL, &scene->r, scene->r.xsch, scene->r.ysch, NULL); + RE_InitState(re, NULL, &scene->r, NULL, scene->r.xsch, scene->r.ysch, NULL); /* use renderdata and camera to set viewplane */ RE_SetCamera(re, scene->camera); diff --git a/source/blender/render/intern/source/envmap.c b/source/blender/render/intern/source/envmap.c index 323eb6a9500..7ba860955b3 100644 --- a/source/blender/render/intern/source/envmap.c +++ b/source/blender/render/intern/source/envmap.c @@ -127,7 +127,7 @@ static Render *envmap_render_copy(Render *re, EnvMap *env) envre->r.size= 100; envre->r.yasp= envre->r.xasp= 1; - RE_InitState(envre, NULL, &envre->r, cuberes, cuberes, NULL); + RE_InitState(envre, NULL, &envre->r, NULL, cuberes, cuberes, NULL); envre->scene= re->scene; /* unsure about this... */ /* view stuff in env render */ diff --git a/source/blender/render/intern/source/occlusion.c b/source/blender/render/intern/source/occlusion.c index 40fcc2b399a..d06339f75cc 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], ao[3], indirect[3], intensity, dist2; + float co[3], n[3], ao[3], env[3], indirect[3], intensity, dist2; int x, y, filled; } OcclusionCacheSample; @@ -120,6 +120,7 @@ typedef struct OcclusionThread { Render *re; StrandSurface *mesh; float (*faceao)[3]; + float (*faceenv)[3]; float (*faceindirect)[3]; int begin, end; int thread; @@ -1375,19 +1376,19 @@ 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 *ao, float *indirect) +static void sample_occ_tree(Render *re, OcclusionTree *tree, OccFace *exclude, float *co, float *n, int thread, int onlyshadow, float *ao, float *env, float *indirect) { float nn[3], bn[3], fac, occ, occlusion, correction, rad[3]; - int aocolor; + int envcolor; - aocolor= re->wrld.aocolor; + envcolor= re->wrld.aocolor; if(onlyshadow) - aocolor= WO_AOPLAIN; + envcolor= WO_AOPLAIN; VECCOPY(nn, n); negate_v3(nn); - occ_lookup(tree, thread, exclude, co, nn, &occ, (tree->doindirect)? rad: NULL, (aocolor)? bn: NULL); + occ_lookup(tree, thread, exclude, co, nn, &occ, (tree->doindirect)? rad: NULL, (env && envcolor)? bn: NULL); correction= re->wrld.ao_approx_correction; @@ -1396,13 +1397,20 @@ static void sample_occ_tree(Render *re, OcclusionTree *tree, OccFace *exclude, f if(correction != 0.0f) occlusion += correction*exp(-occ); - if(aocolor) { + if(env) { /* sky shading using bent normal */ - if(ELEM(aocolor, WO_AOSKYCOL, WO_AOSKYTEX)) { + if(ELEM(envcolor, WO_AOSKYCOL, WO_AOSKYTEX)) { fac= 0.5*(1.0f+bn[0]*re->grvec[0]+ bn[1]*re->grvec[1]+ bn[2]*re->grvec[2]); - 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; + env[0]= (1.0f-fac)*re->wrld.horr + fac*re->wrld.zenr; + env[1]= (1.0f-fac)*re->wrld.horg + fac*re->wrld.zeng; + env[2]= (1.0f-fac)*re->wrld.horb + fac*re->wrld.zenb; + + mul_v3_fl(env, occlusion); + } + else { + env[0]= occlusion; + env[1]= occlusion; + env[2]= occlusion; } #if 0 else { /* WO_AOSKYTEX */ @@ -1416,10 +1424,9 @@ static void sample_occ_tree(Render *re, OcclusionTree *tree, OccFace *exclude, f shadeSkyView(ao, co, bn, dxyview); } #endif - - mul_v3_fl(ao, occlusion); } - else { + + if(ao) { ao[0]= occlusion; ao[1]= occlusion; ao[2]= occlusion; @@ -1447,7 +1454,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 *ao, float *indirect) +static int sample_occ_cache(OcclusionTree *tree, float *co, float *n, int x, int y, int thread, float *ao, float *env, float *indirect) { OcclusionCache *cache; OcclusionCacheSample *samples[4], *sample; @@ -1468,6 +1475,7 @@ static int sample_occ_cache(OcclusionTree *tree, float *co, float *n, int x, int dist2= INPR(d, d); if(dist2 < 0.5f*sample->dist2 && INPR(sample->n, n) > 0.98f) { VECCOPY(ao, sample->ao); + VECCOPY(env, sample->env); VECCOPY(indirect, sample->indirect); return 1; } @@ -1495,6 +1503,7 @@ static int sample_occ_cache(OcclusionTree *tree, float *co, float *n, int x, int /* compute weighted interpolation between samples */ zero_v3(ao); + zero_v3(env); zero_v3(indirect); totw= 0.0f; @@ -1522,12 +1531,14 @@ static int sample_occ_cache(OcclusionTree *tree, float *co, float *n, int x, int totw += w; madd_v3_v3fl(ao, samples[i]->ao, w); + madd_v3_v3fl(env, samples[i]->env, w); madd_v3_v3fl(indirect, samples[i]->indirect, w); } if(totw >= 0.9f) { totw= 1.0f/totw; mul_v3_fl(ao, totw); + mul_v3_fl(env, totw); mul_v3_fl(indirect, totw); return 1; } @@ -1553,16 +1564,21 @@ static void sample_occ_surface(ShadeInput *shi) interp_weights_face_v3(w, co1, co2, co3, co4, strand->vert->co); zero_v3(shi->ao); + zero_v3(shi->env); zero_v3(shi->indirect); madd_v3_v3fl(shi->ao, mesh->ao[face[0]], w[0]); + madd_v3_v3fl(shi->env, mesh->env[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->env, mesh->env[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->env, mesh->env[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->env, mesh->env[face[3]], w[3]); madd_v3_v3fl(shi->indirect, mesh->indirect[face[3]], w[3]); } } @@ -1570,6 +1586,7 @@ static void sample_occ_surface(ShadeInput *shi) shi->ao[0]= 1.0f; shi->ao[1]= 1.0f; shi->ao[2]= 1.0f; + zero_v3(shi->env); zero_v3(shi->indirect); } } @@ -1581,7 +1598,7 @@ static void *exec_strandsurface_sample(void *data) OcclusionThread *othread= (OcclusionThread*)data; Render *re= othread->re; StrandSurface *mesh= othread->mesh; - float ao[3], indirect[3], co[3], n[3], *co1, *co2, *co3, *co4; + float ao[3], env[3], indirect[3], co[3], n[3], *co1, *co2, *co3, *co4; int a, *face; for(a=othread->begin; a<othread->end; a++) { @@ -1602,8 +1619,9 @@ static void *exec_strandsurface_sample(void *data) } negate_v3(n); - sample_occ_tree(re, re->occlusiontree, NULL, co, n, othread->thread, 0, ao, indirect); + sample_occ_tree(re, re->occlusiontree, NULL, co, n, othread->thread, 0, ao, env, indirect); VECCOPY(othread->faceao[a], ao); + VECCOPY(othread->faceenv[a], env); VECCOPY(othread->faceindirect[a], indirect); } @@ -1616,7 +1634,7 @@ void make_occ_tree(Render *re) OcclusionTree *tree; StrandSurface *mesh; ListBase threads; - float ao[3], indirect[3], (*faceao)[3], (*faceindirect)[3]; + float ao[3], env[3], indirect[3], (*faceao)[3], (*faceenv)[3], (*faceindirect)[3]; int a, totface, totthread, *face, *count; /* ugly, needed for occ_face */ @@ -1630,7 +1648,7 @@ void make_occ_tree(Render *re) 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) + if(tree->doindirect && (re->wrld.mode & WO_INDIRECT_LIGHT)) occ_compute_bounces(re, tree, re->wrld.ao_indirect_bounces); for(mesh=re->strandsurface.first; mesh; mesh=mesh->next) { @@ -1639,6 +1657,7 @@ void make_occ_tree(Render *re) count= MEM_callocN(sizeof(int)*mesh->totvert, "OcclusionCount"); faceao= MEM_callocN(sizeof(float)*3*mesh->totface, "StrandSurfFaceAO"); + faceenv= MEM_callocN(sizeof(float)*3*mesh->totface, "StrandSurfFaceEnv"); faceindirect= MEM_callocN(sizeof(float)*3*mesh->totface, "StrandSurfFaceIndirect"); totthread= (mesh->totface > 10000)? re->r.threads: 1; @@ -1646,6 +1665,7 @@ void make_occ_tree(Render *re) for(a=0; a<totthread; a++) { othreads[a].re= re; othreads[a].faceao= faceao; + othreads[a].faceenv= faceenv; othreads[a].faceindirect= faceindirect; othreads[a].thread= a; othreads[a].mesh= mesh; @@ -1669,20 +1689,25 @@ void make_occ_tree(Render *re) face= mesh->face[a]; VECCOPY(ao, faceao[a]); + VECCOPY(env, faceenv[a]); VECCOPY(indirect, faceindirect[a]); VECADD(mesh->ao[face[0]], mesh->ao[face[0]], ao); + VECADD(mesh->env[face[0]], mesh->env[face[0]], env); VECADD(mesh->indirect[face[0]], mesh->indirect[face[0]], indirect); count[face[0]]++; VECADD(mesh->ao[face[1]], mesh->ao[face[1]], ao); + VECADD(mesh->env[face[1]], mesh->env[face[1]], env); VECADD(mesh->indirect[face[1]], mesh->indirect[face[1]], indirect); count[face[1]]++; VECADD(mesh->ao[face[2]], mesh->ao[face[2]], ao); + VECADD(mesh->env[face[2]], mesh->env[face[2]], env); VECADD(mesh->indirect[face[2]], mesh->indirect[face[2]], indirect); count[face[2]]++; if(face[3]) { VECADD(mesh->ao[face[3]], mesh->ao[face[3]], ao); + VECADD(mesh->env[face[3]], mesh->env[face[3]], env); VECADD(mesh->indirect[face[3]], mesh->indirect[face[3]], indirect); count[face[3]]++; } @@ -1691,12 +1716,14 @@ void make_occ_tree(Render *re) for(a=0; a<mesh->totvert; a++) { if(count[a]) { mul_v3_fl(mesh->ao[a], 1.0f/count[a]); + mul_v3_fl(mesh->env[a], 1.0f/count[a]); mul_v3_fl(mesh->indirect[a], 1.0f/count[a]); } } MEM_freeN(count); MEM_freeN(faceao); + MEM_freeN(faceenv); MEM_freeN(faceindirect); } } @@ -1723,12 +1750,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, shi->indirect)) { + else if(shi->depth!=0 || !sample_occ_cache(tree, shi->co, shi->vno, shi->xs, shi->ys, shi->thread, shi->ao, shi->env, 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, shi->indirect); + sample_occ_tree(re, tree, &exclude, shi->co, shi->vno, shi->thread, onlyshadow, shi->ao, shi->env, shi->indirect); /* fill result into sample, each time */ if(tree->cache) { @@ -1739,8 +1766,10 @@ void sample_occ(Render *re, ShadeInput *shi) VECCOPY(sample->co, shi->co); VECCOPY(sample->n, shi->vno); VECCOPY(sample->ao, shi->ao); + VECCOPY(sample->env, shi->env); VECCOPY(sample->indirect, shi->indirect); sample->intensity= MAX3(sample->ao[0], sample->ao[1], sample->ao[2]); + sample->intensity= MAX2(sample->intensity, MAX3(sample->env[0], sample->env[1], sample->env[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; @@ -1753,6 +1782,10 @@ void sample_occ(Render *re, ShadeInput *shi) shi->ao[1]= 1.0f; shi->ao[2]= 1.0f; + shi->env[0]= 0.0f; + shi->env[1]= 0.0f; + shi->env[2]= 0.0f; + shi->indirect[0]= 0.0f; shi->indirect[1]= 0.0f; shi->indirect[2]= 0.0f; @@ -1823,13 +1856,15 @@ 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, shi->indirect); + sample_occ_tree(re, tree, &exclude, shi->co, shi->vno, shi->thread, onlyshadow, shi->ao, shi->env, shi->indirect); VECCOPY(sample->co, shi->co); VECCOPY(sample->n, shi->vno); VECCOPY(sample->ao, shi->ao); + VECCOPY(sample->env, shi->env); VECCOPY(sample->indirect, shi->indirect); sample->intensity= MAX3(sample->ao[0], sample->ao[1], sample->ao[2]); + sample->intensity= MAX2(sample->intensity, MAX3(sample->env[0], sample->env[1], sample->env[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; diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index e2b290f655b..eaafeec3a8a 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -130,8 +130,8 @@ static void result_nothing(void *unused, RenderResult *rr) {} static void result_rcti_nothing(void *unused, RenderResult *rr, volatile struct rcti *rect) {} static void stats_nothing(void *unused, RenderStats *rs) {} static void int_nothing(void *unused, int val) {} -static int void_nothing(void *unused) {return 0;} static void print_error(void *unused, char *str) {printf("ERROR: %s\n", str);} +static int default_break(void *unused) {return G.afbreek == 1;} int RE_RenderInProgress(Render *re) { @@ -309,6 +309,12 @@ static char *get_pass_name(int passtype, int channel) if(channel==2) return "Color.B"; return "Color.A"; } + if(passtype == SCE_PASS_EMIT) { + if(channel==-1) return "Emit"; + if(channel==0) return "Emit.R"; + if(channel==1) return "Emit.G"; + return "Emit.B"; + } if(passtype == SCE_PASS_DIFFUSE) { if(channel==-1) return "Diffuse"; if(channel==0) return "Diffuse.R"; @@ -333,6 +339,18 @@ static char *get_pass_name(int passtype, int channel) if(channel==1) return "AO.G"; return "AO.B"; } + if(passtype == SCE_PASS_ENVIRONMENT) { + if(channel==-1) return "Environment"; + if(channel==0) return "Environment.R"; + if(channel==1) return "Environment.G"; + return "Environment.B"; + } + if(passtype == SCE_PASS_INDIRECT) { + if(channel==-1) return "Indirect"; + if(channel==0) return "Indirect.R"; + if(channel==1) return "Indirect.G"; + return "Indirect.B"; + } if(passtype == SCE_PASS_REFLECT) { if(channel==-1) return "Reflect"; if(channel==0) return "Reflect.R"; @@ -390,6 +408,9 @@ static int passtype_from_name(char *str) if(strcmp(str, "Color")==0) return SCE_PASS_RGBA; + if(strcmp(str, "Emit")==0) + return SCE_PASS_EMIT; + if(strcmp(str, "Diffuse")==0) return SCE_PASS_DIFFUSE; @@ -402,6 +423,12 @@ static int passtype_from_name(char *str) if(strcmp(str, "AO")==0) return SCE_PASS_AO; + if(strcmp(str, "Environment")==0) + return SCE_PASS_ENVIRONMENT; + + if(strcmp(str, "Indirect")==0) + return SCE_PASS_INDIRECT; + if(strcmp(str, "Reflect")==0) return SCE_PASS_REFLECT; @@ -572,12 +599,18 @@ static RenderResult *new_render_result(Render *re, rcti *partrct, int crop, int render_layer_add_pass(rr, rl, 3, SCE_PASS_UV); if(srl->passflag & SCE_PASS_RGBA) render_layer_add_pass(rr, rl, 4, SCE_PASS_RGBA); + if(srl->passflag & SCE_PASS_EMIT) + render_layer_add_pass(rr, rl, 3, SCE_PASS_EMIT); if(srl->passflag & SCE_PASS_DIFFUSE) render_layer_add_pass(rr, rl, 3, SCE_PASS_DIFFUSE); if(srl->passflag & SCE_PASS_SPEC) render_layer_add_pass(rr, rl, 3, SCE_PASS_SPEC); if(srl->passflag & SCE_PASS_AO) render_layer_add_pass(rr, rl, 3, SCE_PASS_AO); + if(srl->passflag & SCE_PASS_ENVIRONMENT) + render_layer_add_pass(rr, rl, 3, SCE_PASS_ENVIRONMENT); + if(srl->passflag & SCE_PASS_INDIRECT) + render_layer_add_pass(rr, rl, 3, SCE_PASS_INDIRECT); if(srl->passflag & SCE_PASS_SHADOW) render_layer_add_pass(rr, rl, 3, SCE_PASS_SHADOW); if(srl->passflag & SCE_PASS_REFLECT) @@ -1114,19 +1147,12 @@ Render *RE_NewRender(const char *name) BLI_rw_mutex_init(&re->resultmutex); } - /* prevent UI to draw old results */ - BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE); - RE_FreeRenderResult(re->result); - re->result= NULL; - re->result_ok= 0; - BLI_rw_mutex_unlock(&re->resultmutex); - /* set default empty callbacks */ re->display_init= result_nothing; re->display_clear= result_nothing; re->display_draw= result_rcti_nothing; re->timecursor= int_nothing; - re->test_break= void_nothing; + re->test_break= default_break; re->error= print_error; if(G.background) re->stats_draw= stats_background; @@ -1169,7 +1195,7 @@ void RE_FreeAllRender(void) /* what doesn't change during entire render sequence */ /* disprect is optional, if NULL it assumes full window render */ -void RE_InitState(Render *re, Render *source, RenderData *rd, int winx, int winy, rcti *disprect) +void RE_InitState(Render *re, Render *source, RenderData *rd, SceneRenderLayer *srl, int winx, int winy, rcti *disprect) { re->ok= TRUE; /* maybe flag */ @@ -1195,62 +1221,70 @@ void RE_InitState(Render *re, Render *source, RenderData *rd, int winx, int winy (re->rectx < 16 || re->recty < 16) )) { re->error(re->erh, "Image too small"); re->ok= 0; + return; } - else { + #ifdef WITH_OPENEXR - if(re->r.scemode & R_FULL_SAMPLE) - re->r.scemode |= R_EXR_TILE_FILE; /* enable automatic */ + if(re->r.scemode & R_FULL_SAMPLE) + re->r.scemode |= R_EXR_TILE_FILE; /* enable automatic */ #else - /* can't do this without openexr support */ - re->r.scemode &= ~(R_EXR_TILE_FILE|R_FULL_SAMPLE); + /* can't do this without openexr support */ + re->r.scemode &= ~(R_EXR_TILE_FILE|R_FULL_SAMPLE); #endif - - /* fullsample wants uniform osa levels */ - if(source && (re->r.scemode & R_FULL_SAMPLE)) { - /* but, if source has no full sample we disable it */ - if((source->r.scemode & R_FULL_SAMPLE)==0) - re->r.scemode &= ~R_FULL_SAMPLE; - else - re->r.osa= re->osa= source->osa; + + /* fullsample wants uniform osa levels */ + if(source && (re->r.scemode & R_FULL_SAMPLE)) { + /* but, if source has no full sample we disable it */ + if((source->r.scemode & R_FULL_SAMPLE)==0) + re->r.scemode &= ~R_FULL_SAMPLE; + else + re->r.osa= re->osa= source->osa; + } + else { + /* check state variables, osa? */ + if(re->r.mode & (R_OSA)) { + re->osa= re->r.osa; + if(re->osa>16) re->osa= 16; } - else { - /* check state variables, osa? */ - if(re->r.mode & (R_OSA)) { - re->osa= re->r.osa; - if(re->osa>16) re->osa= 16; - } - else re->osa= 0; + else re->osa= 0; + } + + if (srl) { + int index = BLI_findindex(&re->r.layers, srl); + if (index != -1) { + re->r.actlay = index; + re->r.scemode |= (R_SINGLE_LAYER|R_COMP_RERENDER); } - - /* always call, checks for gamma, gamma tables and jitter too */ - make_sample_tables(re); + } - /* if preview render, we try to keep old result */ - BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE); + /* always call, checks for gamma, gamma tables and jitter too */ + make_sample_tables(re); + + /* if preview render, we try to keep old result */ + BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE); - if(re->r.scemode & R_PREVIEWBUTS) { - if(re->result && re->result->rectx==re->rectx && re->result->recty==re->recty); - else { - RE_FreeRenderResult(re->result); - re->result= NULL; - } - } + if(re->r.scemode & R_PREVIEWBUTS) { + if(re->result && re->result->rectx==re->rectx && re->result->recty==re->recty); else { - - /* make empty render result, so display callbacks can initialize */ RE_FreeRenderResult(re->result); - re->result= MEM_callocN(sizeof(RenderResult), "new render result"); - re->result->rectx= re->rectx; - re->result->recty= re->recty; + re->result= NULL; } - - BLI_rw_mutex_unlock(&re->resultmutex); - - /* we clip faces with a minimum of 2 pixel boundary outside of image border. see zbuf.c */ - re->clipcrop= 1.0f + 2.0f/(float)(re->winx>re->winy?re->winy:re->winx); + } + else { - RE_init_threadcount(re); + /* make empty render result, so display callbacks can initialize */ + RE_FreeRenderResult(re->result); + re->result= MEM_callocN(sizeof(RenderResult), "new render result"); + re->result->rectx= re->rectx; + re->result->recty= re->recty; } + + BLI_rw_mutex_unlock(&re->resultmutex); + + /* we clip faces with a minimum of 2 pixel boundary outside of image border. see zbuf.c */ + re->clipcrop= 1.0f + 2.0f/(float)(re->winx>re->winy?re->winy:re->winx); + + RE_init_threadcount(re); } /* part of external api, not called for regular render pipeline */ @@ -2156,7 +2190,7 @@ static void render_scene(Render *re, Scene *sce, int cfra) } /* initial setup */ - RE_InitState(resc, re, &sce->r, winx, winy, &re->disprect); + RE_InitState(resc, re, &sce->r, NULL, winx, winy, &re->disprect); /* still unsure entity this... */ resc->scene= sce; @@ -2365,6 +2399,7 @@ void RE_MergeFullSample(Render *re, Scene *sce, bNodeTree *ntree) static void do_render_composite_fields_blur_3d(Render *re) { bNodeTree *ntree= re->scene->nodetree; + int update_newframe=0; /* INIT seeding, compositor can use random texture */ BLI_srandom(re->r.cfra); @@ -2374,6 +2409,9 @@ static void do_render_composite_fields_blur_3d(Render *re) ntreeFreeCache(ntree); do_render_fields_blur_3d(re); + } else { + /* scene render process already updates animsys */ + update_newframe = 1; } /* swap render result */ @@ -2402,10 +2440,14 @@ static void do_render_composite_fields_blur_3d(Render *re) R.sdh= re->sdh; R.stats_draw= re->stats_draw; + if (update_newframe) + scene_update_for_newframe(re->scene, re->scene->lay); + if(re->r.scemode & R_FULL_SAMPLE) do_merge_fullsample(re, ntree); - else + else { ntreeCompositExecTree(ntree, &re->r, G.background==0); + } ntree->stats_draw= NULL; ntree->test_break= NULL; @@ -2668,7 +2710,7 @@ static void update_physics_cache(Render *re, Scene *scene, int anim_init) BKE_ptcache_make_cache(&baker); } /* evaluating scene options for general Blender render */ -static int render_initialize_from_scene(Render *re, Scene *scene, int anim, int anim_init) +static int render_initialize_from_scene(Render *re, Scene *scene, SceneRenderLayer *srl, int anim, int anim_init) { int winx, winy; rcti disprect; @@ -2715,10 +2757,10 @@ static int render_initialize_from_scene(Render *re, Scene *scene, int anim, int update_physics_cache(re, scene, anim_init); } - if(scene->r.scemode & R_SINGLE_LAYER) + if(srl || scene->r.scemode & R_SINGLE_LAYER) push_render_result(re); - RE_InitState(re, NULL, &scene->r, winx, winy, &disprect); + RE_InitState(re, NULL, &scene->r, srl, winx, winy, &disprect); if(!re->ok) /* if an error was printed, abort */ return 0; @@ -2735,7 +2777,7 @@ static int render_initialize_from_scene(Render *re, Scene *scene, int anim, int } /* general Blender frame render call */ -void RE_BlenderFrame(Render *re, Scene *scene, int frame) +void RE_BlenderFrame(Render *re, Scene *scene, SceneRenderLayer *srl, int frame) { /* ugly global still... is to prevent preview events and signal subsurfs etc to make full resol */ G.rendering= 1; @@ -2743,7 +2785,7 @@ void RE_BlenderFrame(Render *re, Scene *scene, int frame) scene->r.cfra= frame; - if(render_initialize_from_scene(re, scene, 0, 0)) { + if(render_initialize_from_scene(re, scene, srl, 0, 0)) { do_render_all_options(re); } @@ -2776,7 +2818,7 @@ static int do_write_image_or_movie(Render *re, Scene *scene, bMovieHandle *mh, R printf("Append frame %d", scene->r.cfra); } else { - BKE_makepicstring(scene, name, scene->r.pic, scene->r.cfra, scene->r.imtype); + BKE_makepicstring(name, scene->r.pic, scene->r.cfra, scene->r.imtype, scene->r.scemode & R_EXTENSION); if(re->r.imtype==R_MULTILAYER) { if(re->result) { @@ -2794,9 +2836,9 @@ static int do_write_image_or_movie(Render *re, Scene *scene, bMovieHandle *mh, R /* float factor for random dither, imbuf takes care of it */ ibuf->dither= scene->r.dither_intensity; - /* gamma correct to sRGB color space */ + /* prepare to gamma correct to sRGB color space */ if (scene->r.color_mgt_flag & R_COLOR_MANAGEMENT) - ibuf->profile = IB_PROFILE_SRGB; + ibuf->profile = IB_PROFILE_LINEAR_RGB; ok= BKE_write_ibuf(scene, ibuf, name, scene->r.imtype, scene->r.subimtype, scene->r.quality); @@ -2809,7 +2851,7 @@ static int do_write_image_or_movie(Render *re, Scene *scene, bMovieHandle *mh, R if(ok && scene->r.imtype==R_OPENEXR && (scene->r.subimtype & R_PREVIEW_JPG)) { if(BLI_testextensie(name, ".exr")) name[strlen(name)-4]= 0; - BKE_add_image_extension(scene, name, R_JPEG90); + BKE_add_image_extension(name, R_JPEG90); ibuf->depth= 24; BKE_write_ibuf(scene, ibuf, name, R_JPEG90, scene->r.subimtype, scene->r.quality); printf("\nSaved: %s", name); @@ -2838,7 +2880,7 @@ void RE_BlenderAnim(Render *re, Scene *scene, int sfra, int efra, int tfra, Repo int nfra; /* do not fully call for each frame, it initializes & pops output window */ - if(!render_initialize_from_scene(re, scene, 0, 1)) + if(!render_initialize_from_scene(re, scene, NULL, 0, 1)) return; /* ugly global still... is to prevent renderwin events and signal subsurfs etc to make full resol */ @@ -2872,7 +2914,7 @@ void RE_BlenderAnim(Render *re, Scene *scene, int sfra, int efra, int tfra, Repo char name[FILE_MAX]; /* only border now, todo: camera lens. (ton) */ - render_initialize_from_scene(re, scene, 1, 0); + render_initialize_from_scene(re, scene, NULL, 1, 0); if(nfra!=scene->r.cfra) { /* @@ -2894,7 +2936,7 @@ void RE_BlenderAnim(Render *re, Scene *scene, int sfra, int efra, int tfra, Repo /* Touch/NoOverwrite options are only valid for image's */ if(BKE_imtype_is_movie(scene->r.imtype) == 0) { if(scene->r.mode & (R_NO_OVERWRITE | R_TOUCH)) - BKE_makepicstring(scene, name, scene->r.pic, scene->r.cfra, scene->r.imtype); + BKE_makepicstring(name, scene->r.pic, scene->r.cfra, scene->r.imtype, scene->r.scemode & R_EXTENSION); if(scene->r.mode & R_NO_OVERWRITE && BLI_exist(name)) { printf("skipping existing frame \"%s\"\n", name); @@ -2976,7 +3018,7 @@ void RE_ReadRenderResult(Scene *scene, Scene *scenode) re= RE_GetRender(scene->id.name); if(re==NULL) re= RE_NewRender(scene->id.name); - RE_InitState(re, NULL, &scene->r, winx, winy, &disprect); + RE_InitState(re, NULL, &scene->r, NULL, winx, winy, &disprect); re->scene= scene; read_render_result(re, 0); diff --git a/source/blender/render/intern/source/rayshade.c b/source/blender/render/intern/source/rayshade.c index 9fa23c73ec6..d35521e92ac 100644 --- a/source/blender/render/intern/source/rayshade.c +++ b/source/blender/render/intern/source/rayshade.c @@ -435,7 +435,12 @@ void makeraytree(Render *re) if(re->r.raytrace_structure == R_RAYSTRUCTURE_OCTREE) re->r.raytrace_options &= ~( R_RAYTRACE_USE_INSTANCES | R_RAYTRACE_USE_LOCAL_COORDS); - BENCH(makeraytree_single(re), tree_build); + if(G.f & G_DEBUG) { + BENCH(makeraytree_single(re), tree_build); + } + else + makeraytree_single(re); + if(test_break(re)) { freeraytree(re); @@ -901,7 +906,7 @@ static void jitter_plane_offset(float *jitter1, float *jitter2, int tot, float s } /* called from convertBlenderScene.c */ -/* we do this in advance to get consistant random, not alter the render seed, and be threadsafe */ +/* we do this in advance to get consistent random, not alter the render seed, and be threadsafe */ void init_jitter_plane(LampRen *lar) { float *fp; @@ -1824,7 +1829,7 @@ static float *sphere_sampler(int type, int resol, int thread, int xs, int ys) } } -static void ray_ao_qmc(ShadeInput *shi, float *shadfac) +static void ray_ao_qmc(ShadeInput *shi, float *ao, float *env) { Isect isec; RayHint point_hint; @@ -1840,8 +1845,8 @@ static void ray_ao_qmc(ShadeInput *shi, float *shadfac) int samples=0; int max_samples = R.wrld.aosamp*R.wrld.aosamp; - float dxyview[3], skyadded=0, div; - int aocolor; + float dxyview[3], skyadded=0; + int envcolor; RE_RC_INIT(isec, *shi); isec.orig.ob = shi->obi; @@ -1861,15 +1866,15 @@ static void ray_ao_qmc(ShadeInput *shi, float *shadfac) RE_rayobject_hint_bb( R.raytree, &point_hint, isec.start, isec.start ); isec.hint = &point_hint; - - shadfac[0]= shadfac[1]= shadfac[2]= 0.0f; + zero_v3(ao); + zero_v3(env); /* prevent sky colors to be added for only shadow (shadow becomes alpha) */ - aocolor= R.wrld.aocolor; + envcolor= R.wrld.aocolor; if(shi->mat->mode & MA_ONLYSHADOW) - aocolor= WO_AOPLAIN; + envcolor= WO_AOPLAIN; - if(aocolor == WO_AOSKYTEX) { + if(envcolor == WO_AOSKYTEX) { dxyview[0]= 1.0f/(float)R.wrld.aosamp; dxyview[1]= 1.0f/(float)R.wrld.aosamp; dxyview[2]= 0.0f; @@ -1922,7 +1927,7 @@ static void ray_ao_qmc(ShadeInput *shi, float *shadfac) if (R.wrld.aomode & WO_AODIST) fac+= exp(-isec.labda*R.wrld.aodistfac); else fac+= 1.0f; } - else if(aocolor!=WO_AOPLAIN) { + else if(envcolor!=WO_AOPLAIN) { float skycol[4]; float skyfac, view[3]; @@ -1931,18 +1936,18 @@ static void ray_ao_qmc(ShadeInput *shi, float *shadfac) view[2]= -dir[2]; normalize_v3(view); - if(aocolor==WO_AOSKYCOL) { + if(envcolor==WO_AOSKYCOL) { skyfac= 0.5*(1.0f+view[0]*R.grvec[0]+ view[1]*R.grvec[1]+ view[2]*R.grvec[2]); - shadfac[0]+= (1.0f-skyfac)*R.wrld.horr + skyfac*R.wrld.zenr; - shadfac[1]+= (1.0f-skyfac)*R.wrld.horg + skyfac*R.wrld.zeng; - shadfac[2]+= (1.0f-skyfac)*R.wrld.horb + skyfac*R.wrld.zenb; + env[0]+= (1.0f-skyfac)*R.wrld.horr + skyfac*R.wrld.zenr; + env[1]+= (1.0f-skyfac)*R.wrld.horg + skyfac*R.wrld.zeng; + env[2]+= (1.0f-skyfac)*R.wrld.horb + skyfac*R.wrld.zenb; } else { /* WO_AOSKYTEX */ shadeSkyView(skycol, isec.start, view, dxyview, shi->thread); shadeSunView(skycol, shi->view); - shadfac[0]+= skycol[0]; - shadfac[1]+= skycol[1]; - shadfac[2]+= skycol[2]; + env[0]+= skycol[0]; + env[1]+= skycol[1]; + env[2]+= skycol[2]; } skyadded++; } @@ -1960,29 +1965,27 @@ static void ray_ao_qmc(ShadeInput *shi, float *shadfac) } } - if(aocolor!=WO_AOPLAIN && skyadded) { - div= (1.0f - fac/(float)samples)/((float)skyadded); - - shadfac[0]*= div; // average color times distances/hits formula - shadfac[1]*= div; // average color times distances/hits formula - shadfac[2]*= div; // average color times distances/hits formula - } else { - shadfac[0]= shadfac[1]= shadfac[2]= 1.0f - fac/(float)samples; - } + /* average color times distances/hits formula */ + ao[0]= ao[1]= ao[2]= 1.0f - fac/(float)samples; + + if(envcolor!=WO_AOPLAIN && skyadded) + mul_v3_fl(env, (1.0f - fac/(float)samples)/((float)skyadded)); + else + copy_v3_v3(env, ao); if (qsa) release_thread_qmcsampler(&R, shi->thread, qsa); } /* extern call from shade_lamp_loop, ambient occlusion calculus */ -static void ray_ao_spheresamp(ShadeInput *shi, float *shadfac) +static void ray_ao_spheresamp(ShadeInput *shi, float *ao, float *env) { Isect isec; RayHint point_hint; - float *vec, *nrm, div, bias, sh=0.0f; + float *vec, *nrm, bias, sh=0.0f; float maxdist = R.wrld.aodist; float dxyview[3]; - int j= -1, tot, actual=0, skyadded=0, aocolor, resol= R.wrld.aosamp; + int j= -1, tot, actual=0, skyadded=0, envcolor, resol= R.wrld.aosamp; RE_RC_INIT(isec, *shi); isec.orig.ob = shi->obi; @@ -2002,7 +2005,8 @@ static void ray_ao_spheresamp(ShadeInput *shi, float *shadfac) RE_rayobject_hint_bb( R.raytree, &point_hint, isec.start, isec.start ); isec.hint = &point_hint; - shadfac[0]= shadfac[1]= shadfac[2]= 0.0f; + zero_v3(ao); + zero_v3(env); /* bias prevents smoothed faces to appear flat */ if(shi->vlr->flag & R_SMOOTH) { @@ -2015,9 +2019,9 @@ static void ray_ao_spheresamp(ShadeInput *shi, float *shadfac) } /* prevent sky colors to be added for only shadow (shadow becomes alpha) */ - aocolor= R.wrld.aocolor; + envcolor= R.wrld.aocolor; if(shi->mat->mode & MA_ONLYSHADOW) - aocolor= WO_AOPLAIN; + envcolor= WO_AOPLAIN; if(resol>32) resol= 32; @@ -2026,7 +2030,7 @@ static void ray_ao_spheresamp(ShadeInput *shi, float *shadfac) // warning: since we use full sphere now, and dotproduct is below, we do twice as much tot= 2*resol*resol; - if(aocolor == WO_AOSKYTEX) { + if(envcolor == WO_AOSKYTEX) { dxyview[0]= 1.0f/(float)resol; dxyview[1]= 1.0f/(float)resol; dxyview[2]= 0.0f; @@ -2058,7 +2062,7 @@ static void ray_ao_spheresamp(ShadeInput *shi, float *shadfac) if (R.wrld.aomode & WO_AODIST) sh+= exp(-isec.labda*R.wrld.aodistfac); else sh+= 1.0f; } - else if(aocolor!=WO_AOPLAIN) { + else if(envcolor!=WO_AOPLAIN) { float skycol[4]; float fac, view[3]; @@ -2067,18 +2071,18 @@ static void ray_ao_spheresamp(ShadeInput *shi, float *shadfac) view[2]= -vec[2]; normalize_v3(view); - if(aocolor==WO_AOSKYCOL) { + if(envcolor==WO_AOSKYCOL) { fac= 0.5*(1.0f+view[0]*R.grvec[0]+ view[1]*R.grvec[1]+ view[2]*R.grvec[2]); - shadfac[0]+= (1.0f-fac)*R.wrld.horr + fac*R.wrld.zenr; - shadfac[1]+= (1.0f-fac)*R.wrld.horg + fac*R.wrld.zeng; - shadfac[2]+= (1.0f-fac)*R.wrld.horb + fac*R.wrld.zenb; + env[0]+= (1.0f-fac)*R.wrld.horr + fac*R.wrld.zenr; + env[1]+= (1.0f-fac)*R.wrld.horg + fac*R.wrld.zeng; + env[2]+= (1.0f-fac)*R.wrld.horb + fac*R.wrld.zenb; } else { /* WO_AOSKYTEX */ shadeSkyView(skycol, isec.start, view, dxyview, shi->thread); shadeSunView(skycol, shi->view); - shadfac[0]+= skycol[0]; - shadfac[1]+= skycol[1]; - shadfac[2]+= skycol[2]; + env[0]+= skycol[0]; + env[1]+= skycol[1]; + env[2]+= skycol[2]; } skyadded++; } @@ -2090,28 +2094,25 @@ static void ray_ao_spheresamp(ShadeInput *shi, float *shadfac) if(actual==0) sh= 1.0f; else sh = 1.0f - sh/((float)actual); - if(aocolor!=WO_AOPLAIN && skyadded) { - div= sh/((float)skyadded); - - shadfac[0]*= div; // average color times distances/hits formula - shadfac[1]*= div; // average color times distances/hits formula - shadfac[2]*= div; // average color times distances/hits formula - } - else { - shadfac[0]= shadfac[1]= shadfac[2]= sh; - } + /* average color times distances/hits formula */ + ao[0]= ao[1]= ao[2]= sh; + + if(envcolor!=WO_AOPLAIN && skyadded) + mul_v3_fl(env, sh/((float)skyadded)); + else + copy_v3_v3(env, ao); } -void ray_ao(ShadeInput *shi, float *shadfac) +void ray_ao(ShadeInput *shi, float *ao, float *env) { /* Unfortunately, the unusual way that the sphere sampler calculates roughly twice as many * samples as are actually traced, and skips them based on bias and OSA settings makes it very difficult * to reuse code between these two functions. This is the easiest way I can think of to do it * --broken */ if (ELEM(R.wrld.ao_samp_method, WO_AOSAMP_HAMMERSLEY, WO_AOSAMP_HALTON)) - ray_ao_qmc(shi, shadfac); + ray_ao_qmc(shi, ao, env); else if (R.wrld.ao_samp_method == WO_AOSAMP_CONSTANT) - ray_ao_spheresamp(shi, shadfac); + ray_ao_spheresamp(shi, ao, env); } static void ray_shadow_jittered_coords(ShadeInput *shi, int max, float jitco[RE_MAX_OSA][3], int *totjitco) diff --git a/source/blender/render/intern/source/rendercore.c b/source/blender/render/intern/source/rendercore.c index 23875b536c9..dec826faa65 100644 --- a/source/blender/render/intern/source/rendercore.c +++ b/source/blender/render/intern/source/rendercore.c @@ -459,6 +459,9 @@ static void add_filt_passes(RenderLayer *rl, int curmask, int rectx, int offset, col= shr->col; pixsize= 4; break; + case SCE_PASS_EMIT: + col= shr->emit; + break; case SCE_PASS_DIFFUSE: col= shr->diff; break; @@ -471,6 +474,12 @@ static void add_filt_passes(RenderLayer *rl, int curmask, int rectx, int offset, case SCE_PASS_AO: col= shr->ao; break; + case SCE_PASS_ENVIRONMENT: + col= shr->env; + break; + case SCE_PASS_INDIRECT: + col= shr->indirect; + break; case SCE_PASS_REFLECT: col= shr->refl; break; @@ -557,6 +566,9 @@ static void add_passes(RenderLayer *rl, int offset, ShadeInput *shi, ShadeResult col= shr->col; pixsize= 4; break; + case SCE_PASS_EMIT: + col= shr->emit; + break; case SCE_PASS_DIFFUSE: col= shr->diff; break; @@ -569,6 +581,12 @@ static void add_passes(RenderLayer *rl, int offset, ShadeInput *shi, ShadeResult case SCE_PASS_AO: col= shr->ao; break; + case SCE_PASS_ENVIRONMENT: + col= shr->env; + break; + case SCE_PASS_INDIRECT: + col= shr->indirect; + break; case SCE_PASS_REFLECT: col= shr->refl; break; @@ -1291,7 +1309,7 @@ void zbufshade_tile(RenderPart *pa) zbuffer_solid(pa, rl, NULL, NULL); - if(!R.test_break(R.tbh)) { /* NOTE: this if() is not consistant */ + if(!R.test_break(R.tbh)) { /* NOTE: this if() is not consistent */ /* edges only for solid part, ztransp doesn't support it yet anti-aliased */ if(rl->layflag & SCE_LAY_EDGE) { @@ -2117,10 +2135,7 @@ static void bake_shade(void *handle, Object *ob, ShadeInput *shi, int quad, int if(bs->type==RE_BAKE_AO) { ambient_occlusion(shi); - if(R.r.bake_flag & R_BAKE_NORMALIZE) - VECCOPY(shr.combined, shi->ao) - else - ambient_occlusion_to_diffuse(shi, shr.combined); + VECCOPY(shr.combined, shi->ao) } else { if (bs->type==RE_BAKE_SHADOW) /* Why do shadows set the color anyhow?, ignore material color for baking */ diff --git a/source/blender/render/intern/source/shadeinput.c b/source/blender/render/intern/source/shadeinput.c index fd1e27ab28a..38241878300 100644 --- a/source/blender/render/intern/source/shadeinput.c +++ b/source/blender/render/intern/source/shadeinput.c @@ -1319,11 +1319,11 @@ void shade_samples_do_AO(ShadeSample *ssamp) if(!(R.r.mode & R_RAYTRACE) && !(R.wrld.ao_gather_method == WO_AOGATHER_APPROX)) return; - if(R.wrld.mode & WO_AMB_OCC) { + if(R.wrld.mode & (WO_AMB_OCC|WO_ENV_LIGHT|WO_INDIRECT_LIGHT)) { shi= &ssamp->shi[0]; - if(((shi->passflag & SCE_PASS_COMBINED) && (shi->combinedflag & SCE_PASS_AO)) - || (shi->passflag & SCE_PASS_AO)) + if(((shi->passflag & SCE_PASS_COMBINED) && (shi->combinedflag & (SCE_PASS_AO|SCE_PASS_ENVIRONMENT|SCE_PASS_INDIRECT))) + || (shi->passflag & (SCE_PASS_AO|SCE_PASS_ENVIRONMENT|SCE_PASS_INDIRECT))) for(sample=0, shi= ssamp->shi; sample<ssamp->tot; shi++, sample++) if(!(shi->mode & MA_SHLESS)) ambient_occlusion(shi); /* stores in shi->ao[] */ diff --git a/source/blender/render/intern/source/shadeoutput.c b/source/blender/render/intern/source/shadeoutput.c index e9386bb0d94..4192966b1fa 100644 --- a/source/blender/render/intern/source/shadeoutput.c +++ b/source/blender/render/intern/source/shadeoutput.c @@ -1013,41 +1013,69 @@ void ambient_occlusion(ShadeInput *shi) if((R.wrld.ao_gather_method == WO_AOGATHER_APPROX) && shi->mat->amb!=0.0f) sample_occ(&R, shi); else if((R.r.mode & R_RAYTRACE) && shi->mat->amb!=0.0f) - ray_ao(shi, shi->ao); + ray_ao(shi, shi->ao, shi->env); else shi->ao[0]= shi->ao[1]= shi->ao[2]= 1.0f; } /* wrld mode was checked for */ -void ambient_occlusion_to_diffuse(ShadeInput *shi, float *diff) +static void ambient_occlusion_apply(ShadeInput *shi, ShadeResult *shr) { - if((R.r.mode & R_RAYTRACE) || R.wrld.ao_gather_method == WO_AOGATHER_APPROX) { - if(shi->amb!=0.0f) { - float f= R.wrld.aoenergy*shi->amb; - - if (R.wrld.aomix==WO_AOADDSUB) { - diff[0] = 2.0f*shi->ao[0]-1.0f; - diff[1] = 2.0f*shi->ao[1]-1.0f; - diff[2] = 2.0f*shi->ao[2]-1.0f; - } - else if (R.wrld.aomix==WO_AOSUB) { - diff[0] = shi->ao[0]-1.0f; - diff[1] = shi->ao[1]-1.0f; - diff[2] = shi->ao[2]-1.0f; - } - else { - VECCOPY(diff, shi->ao); - } - - VECMUL(diff, f); - madd_v3_v3fl(diff, shi->indirect, R.wrld.ao_indirect_energy*shi->amb); + float f= R.wrld.aoenergy; + float tmp[3], tmpspec[3]; + + if(!((R.r.mode & R_RAYTRACE) || R.wrld.ao_gather_method == WO_AOGATHER_APPROX)) + return; + if(f == 0.0f) + return; + + if(R.wrld.aomix==WO_AOADD) { + shr->combined[0] += shi->ao[0]*shi->r*shi->refl*f; + shr->combined[1] += shi->ao[1]*shi->g*shi->refl*f; + shr->combined[2] += shi->ao[2]*shi->b*shi->refl*f; + } + else if(R.wrld.aomix==WO_AOMUL) { + mul_v3_v3v3(tmp, shr->combined, shi->ao); + mul_v3_v3v3(tmpspec, shr->spec, shi->ao); + + if(f == 1.0f) { + copy_v3_v3(shr->combined, tmp); + copy_v3_v3(shr->spec, tmpspec); + } + else { + interp_v3_v3v3(shr->combined, shr->combined, tmp, f); + interp_v3_v3v3(shr->spec, shr->spec, tmpspec, f); } - else - diff[0]= diff[1]= diff[2]= 0.0f; } - else - diff[0]= diff[1]= diff[2]= 0.0f; +} + +static void environment_lighting_apply(ShadeInput *shi, ShadeResult *shr) +{ + float f= R.wrld.ao_env_energy*shi->amb; + + if(!((R.r.mode & R_RAYTRACE) || R.wrld.ao_gather_method == WO_AOGATHER_APPROX)) + return; + if(f == 0.0f) + return; + + shr->combined[0] += shi->env[0]*shi->r*shi->refl*f; + shr->combined[1] += shi->env[1]*shi->g*shi->refl*f; + shr->combined[2] += shi->env[2]*shi->b*shi->refl*f; +} + +static void indirect_lighting_apply(ShadeInput *shi, ShadeResult *shr) +{ + float f= R.wrld.ao_indirect_energy; + + if(!((R.r.mode & R_RAYTRACE) || R.wrld.ao_gather_method == WO_AOGATHER_APPROX)) + return; + if(f == 0.0f) + return; + + shr->combined[0] += shi->indirect[0]*shi->r*shi->refl*f; + shr->combined[1] += shi->indirect[1]*shi->g*shi->refl*f; + shr->combined[2] += shi->indirect[2]*shi->b*shi->refl*f; } /* result written in shadfac */ @@ -1510,7 +1538,7 @@ static void shade_lamp_loop_only_shadow(ShadeInput *shi, ShadeResult *shr) } /* quite disputable this... also note it doesn't mirror-raytrace */ - if((R.wrld.mode & WO_AMB_OCC) && shi->amb!=0.0f) { + if((R.wrld.mode & (WO_AMB_OCC|WO_ENV_LIGHT|WO_INDIRECT_LIGHT)) && shi->amb!=0.0f) { float f; f= 1.0f - shi->ao[0]; @@ -1520,12 +1548,8 @@ static void shade_lamp_loop_only_shadow(ShadeInput *shi, ShadeResult *shr) shr->alpha += f; shr->alpha *= f; } - else if(R.wrld.aomix==WO_AOSUB) { - shr->alpha += f; - } - else { + else if(R.wrld.aomix==WO_AOMUL) { shr->alpha *= f; - shr->alpha += f; } } } @@ -1600,25 +1624,26 @@ void shade_lamp_loop(ShadeInput *shi, ShadeResult *shr) } if( (ma->mode & (MA_VERTEXCOL|MA_VERTEXCOLP))== MA_VERTEXCOL ) { // vertexcolor light - shr->diff[0]= shi->r*(shi->emit+shi->vcol[0]); - shr->diff[1]= shi->g*(shi->emit+shi->vcol[1]); - shr->diff[2]= shi->b*(shi->emit+shi->vcol[2]); + shr->emit[0]= shi->r*(shi->emit+shi->vcol[0]); + shr->emit[1]= shi->g*(shi->emit+shi->vcol[1]); + shr->emit[2]= shi->b*(shi->emit+shi->vcol[2]); } else { - shr->diff[0]= shi->r*shi->emit; - shr->diff[1]= shi->g*shi->emit; - shr->diff[2]= shi->b*shi->emit; + shr->emit[0]= shi->r*shi->emit; + shr->emit[1]= shi->g*shi->emit; + shr->emit[2]= shi->b*shi->emit; } - VECCOPY(shr->shad, shr->diff); /* AO pass */ - if(R.wrld.mode & WO_AMB_OCC) { - if(((passflag & SCE_PASS_COMBINED) && (shi->combinedflag & SCE_PASS_AO)) - || (passflag & SCE_PASS_AO)) { + if(R.wrld.mode & (WO_AMB_OCC|WO_ENV_LIGHT|WO_INDIRECT_LIGHT)) { + if(((passflag & SCE_PASS_COMBINED) && (shi->combinedflag & (SCE_PASS_AO|SCE_PASS_ENVIRONMENT|SCE_PASS_INDIRECT))) + || (passflag & (SCE_PASS_AO|SCE_PASS_ENVIRONMENT|SCE_PASS_INDIRECT))) { /* AO was calculated for scanline already */ if(shi->depth) ambient_occlusion(shi); VECCOPY(shr->ao, shi->ao); + VECCOPY(shr->env, shi->env); // XXX multiply + VECCOPY(shr->indirect, shi->indirect); // XXX multiply } } @@ -1727,6 +1752,19 @@ void shade_lamp_loop(ShadeInput *shi, ShadeResult *shr) /* from now stuff everything in shr->combined: ambient, AO, radio, ramps, exposure */ if(!(ma->sss_flag & MA_DIFF_SSS) || !sss_pass_done(&R, ma)) { + /* add AO in combined? */ + if(R.wrld.mode & WO_AMB_OCC) + if(shi->combinedflag & SCE_PASS_AO) + ambient_occlusion_apply(shi, shr); + + if(R.wrld.mode & WO_ENV_LIGHT) + if(shi->combinedflag & SCE_PASS_ENVIRONMENT) + environment_lighting_apply(shi, shr); + + if(R.wrld.mode & WO_INDIRECT_LIGHT) + if(shi->combinedflag & SCE_PASS_INDIRECT) + indirect_lighting_apply(shi, shr); + shr->combined[0]+= shi->ambr; shr->combined[1]+= shi->ambg; shr->combined[2]+= shi->ambb; @@ -1738,22 +1776,6 @@ void shade_lamp_loop(ShadeInput *shi, ShadeResult *shr) shr->combined[2]+= shi->b*shi->amb*shi->rad[2]; }*/ - /* add AO in combined? */ - if(R.wrld.mode & WO_AMB_OCC) { - if(shi->combinedflag & SCE_PASS_AO) { - float aodiff[3]; - ambient_occlusion_to_diffuse(shi, aodiff); - - shr->combined[0] += shi->r*aodiff[0]; - shr->combined[1] += shi->g*aodiff[1]; - shr->combined[2] += shi->b*aodiff[2]; - - if (shr->combined[0] < 0.f) shr->combined[0]= 0.f; - if (shr->combined[1] < 0.f) shr->combined[1]= 0.f; - if (shr->combined[2] < 0.f) shr->combined[2]= 0.f; - } - } - if(ma->mode & MA_RAMP_COL) ramp_diffuse_result(shr->combined, shi); } @@ -1775,10 +1797,12 @@ void shade_lamp_loop(ShadeInput *shi, ShadeResult *shr) } - /* and add spec */ + /* and add emit and spec */ + if(shi->combinedflag & SCE_PASS_EMIT) + VECADD(shr->combined, shr->combined, shr->emit); if(shi->combinedflag & SCE_PASS_SPEC) VECADD(shr->combined, shr->combined, shr->spec); - + /* modulate by the object color */ if((ma->shade_flag & MA_OBCOLOR) && shi->obr->ob) { if(!(ma->sss_flag & MA_DIFF_SSS) || !sss_pass_done(&R, ma)) { diff --git a/source/blender/render/intern/source/strand.c b/source/blender/render/intern/source/strand.c index ecea7360974..279d53d050c 100644 --- a/source/blender/render/intern/source/strand.c +++ b/source/blender/render/intern/source/strand.c @@ -222,6 +222,8 @@ void interpolate_shade_result(ShadeResult *shr1, ShadeResult *shr2, float t, Sha interpolate_vec3(shr1->nor, shr2->nor, t, negt, shr->nor); normalize_v3(shr->nor); } + if(addpassflag & SCE_PASS_EMIT) + interpolate_vec3(shr1->emit, shr2->emit, t, negt, shr->emit); if(addpassflag & SCE_PASS_DIFFUSE) interpolate_vec3(shr1->diff, shr2->diff, t, negt, shr->diff); if(addpassflag & SCE_PASS_SPEC) @@ -230,6 +232,10 @@ void interpolate_shade_result(ShadeResult *shr1, ShadeResult *shr2, float t, Sha interpolate_vec3(shr1->shad, shr2->shad, t, negt, shr->shad); if(addpassflag & SCE_PASS_AO) interpolate_vec3(shr1->ao, shr2->ao, t, negt, shr->ao); + if(addpassflag & SCE_PASS_ENVIRONMENT) + interpolate_vec3(shr1->env, shr2->env, t, negt, shr->env); + if(addpassflag & SCE_PASS_INDIRECT) + interpolate_vec3(shr1->indirect, shr2->indirect, t, negt, shr->indirect); if(addpassflag & SCE_PASS_REFLECT) interpolate_vec3(shr1->refl, shr2->refl, t, negt, shr->refl); if(addpassflag & SCE_PASS_REFRACT) @@ -270,6 +276,9 @@ void strand_shade_point(Render *re, ShadeSample *ssamp, StrandSegment *sseg, Str vlr.flag |= R_TANGENT; shi->vlr= &vlr; + shi->v1= NULL; + shi->v2= NULL; + shi->v3= NULL; shi->strand= sseg->strand; shi->obi= sseg->obi; shi->obr= sseg->obi->obr; @@ -960,6 +969,7 @@ StrandSurface *cache_strand_surface(Render *re, ObjectRen *obr, DerivedMesh *dm, mesh->totface= totface; mesh->face= MEM_callocN(sizeof(int)*4*mesh->totface, "StrandSurfFaces"); mesh->ao= MEM_callocN(sizeof(float)*3*mesh->totvert, "StrandSurfAO"); + mesh->env= MEM_callocN(sizeof(float)*3*mesh->totvert, "StrandSurfEnv"); mesh->indirect= MEM_callocN(sizeof(float)*3*mesh->totvert, "StrandSurfIndirect"); BLI_addtail(&re->strandsurface, mesh); } @@ -999,6 +1009,7 @@ void free_strand_surface(Render *re) if(mesh->prevco) MEM_freeN(mesh->prevco); if(mesh->nextco) MEM_freeN(mesh->nextco); if(mesh->ao) MEM_freeN(mesh->ao); + if(mesh->env) MEM_freeN(mesh->env); 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 7bf349705cb..1655418111a 100644 --- a/source/blender/render/intern/source/texture.c +++ b/source/blender/render/intern/source/texture.c @@ -92,7 +92,7 @@ void init_render_texture(Render *re, Tex *tex) /* imap test */ if(tex->ima && ELEM(tex->ima->source, IMA_SRC_MOVIE, IMA_SRC_SEQUENCE)) { - BKE_image_user_calc_imanr(&tex->iuser, cfra, re?re->flag & R_SEC_FIELD:0); + BKE_image_user_calc_frame(&tex->iuser, cfra, re?re->flag & R_SEC_FIELD:0); } if(tex->type==TEX_PLUGIN) { @@ -1739,7 +1739,7 @@ void do_material_tex(ShadeInput *shi) // NOTE: test for shi->obr->ob here, since vlr/obr/obi can be 'fake' when called from fastshade(), another reason to move it.. // NOTE: shi->v1 is NULL when called from displace_render_vert, assigning verts in this case is not trivial because the shi quad face side is not know. if ((mtex->texflag & MTEX_NEW_BUMP) && shi->obr && shi->obr->ob && shi->v1) { - if(mtex->mapto & (MAP_NORM|MAP_DISPLACE|MAP_WARP)) { + if(mtex->mapto & (MAP_NORM|MAP_DISPLACE|MAP_WARP) && !((tex->type==TEX_IMAGE) && (tex->imaflag & TEX_NORMALMAP))) { MTFace* tf = RE_vlakren_get_tface(shi->obr, shi->vlr, i, NULL, 0); int j1 = shi->i1, j2 = shi->i2, j3 = shi->i3; @@ -1832,11 +1832,11 @@ void do_material_tex(ShadeInput *shi) nunvdone= 1; } - if(texres.nor) { + if(texres.nor && !((tex->type==TEX_IMAGE) && (tex->imaflag & TEX_NORMALMAP))) { TexResult ttexr = {0, 0, 0, 0, 0, texres.talpha, NULL}; // temp TexResult float tco[3], texv[3], cd, ud, vd, du, dv, idu, idv; const int fromrgb = ((tex->type == TEX_IMAGE) || ((tex->flag & TEX_COLORBAND)!=0)); - const float bf = 0.04f*Tnor*mtex->norfac; + const float bf = 0.04f*Tnor*stencilTin*mtex->norfac; // disable internal bump eval float* nvec = texres.nor; texres.nor = NULL; diff --git a/source/blender/render/intern/source/voxeldata.c b/source/blender/render/intern/source/voxeldata.c index 8e71fec4db9..1a220f6e9b1 100644 --- a/source/blender/render/intern/source/voxeldata.c +++ b/source/blender/render/intern/source/voxeldata.c @@ -165,16 +165,61 @@ void init_frame_smoke(Render *re, VoxelData *vd, Tex *tex) if( (md = (ModifierData *)modifiers_findByType(ob, eModifierType_Smoke)) ) { SmokeModifierData *smd = (SmokeModifierData *)md; + if(smd->domain && smd->domain->fluid) { - if (smd->domain->flags & MOD_SMOKE_HIGHRES) { - smoke_turbulence_get_res(smd->domain->wt, vd->resol); - vd->dataset = smoke_turbulence_get_density(smd->domain->wt); - } else { + if (vd->smoked_type == TEX_VD_SMOKEHEAT) { + int totRes; + float *heat; + int i; + + VECCOPY(vd->resol, smd->domain->res); + totRes = (vd->resol[0])*(vd->resol[1])*(vd->resol[2]); + + // scaling heat values from -2.0-2.0 to 0.0-1.0 + vd->dataset = MEM_mapallocN(sizeof(float)*(totRes), "smoke data"); + + + heat = smoke_get_heat(smd->domain->fluid); + + for (i=0; i<totRes; i++) + { + vd->dataset[i] = (heat[i]+2.0f)/4.0f; + } + + //vd->dataset = smoke_get_heat(smd->domain->fluid); + } + else if (vd->smoked_type == TEX_VD_SMOKEVEL) { + int totRes; + float *xvel, *yvel, *zvel; + int i; + VECCOPY(vd->resol, smd->domain->res); - vd->dataset = smoke_get_density(smd->domain->fluid); + totRes = (vd->resol[0])*(vd->resol[1])*(vd->resol[2]); + + // scaling heat values from -2.0-2.0 to 0.0-1.0 + vd->dataset = MEM_mapallocN(sizeof(float)*(totRes), "smoke data"); + + xvel = smoke_get_velocity_x(smd->domain->fluid); + yvel = smoke_get_velocity_y(smd->domain->fluid); + zvel = smoke_get_velocity_z(smd->domain->fluid); + + for (i=0; i<totRes; i++) + { + vd->dataset[i] = sqrt(xvel[i]*xvel[i] + yvel[i]*yvel[i] + zvel[i]*zvel[i])*3.0f; + } + } + else { + if (smd->domain->flags & MOD_SMOKE_HIGHRES) { + smoke_turbulence_get_res(smd->domain->wt, vd->resol); + vd->dataset = smoke_turbulence_get_density(smd->domain->wt); + } else { + VECCOPY(vd->resol, smd->domain->res); + vd->dataset = smoke_get_density(smd->domain->fluid); + } + } // end of fluid condition } } } @@ -246,7 +291,8 @@ static void free_voxeldata_one(Render *re, Tex *tex) VoxelData *vd = tex->vd; if (vd->dataset) { - MEM_freeN(vd->dataset); + if(vd->file_format != TEX_VD_SMOKE) + MEM_freeN(vd->dataset); vd->dataset = NULL; } } diff --git a/source/blender/render/intern/source/zbuf.c b/source/blender/render/intern/source/zbuf.c index ac3474e51e5..484dbdd37a3 100644 --- a/source/blender/render/intern/source/zbuf.c +++ b/source/blender/render/intern/source/zbuf.c @@ -3516,6 +3516,9 @@ void merge_transp_passes(RenderLayer *rl, ShadeResult *shr) col= shr->col; pixsize= 4; break; + case SCE_PASS_EMIT: + col= shr->emit; + break; case SCE_PASS_DIFFUSE: col= shr->diff; break; @@ -3528,6 +3531,12 @@ void merge_transp_passes(RenderLayer *rl, ShadeResult *shr) case SCE_PASS_AO: col= shr->ao; break; + case SCE_PASS_ENVIRONMENT: + col= shr->env; + break; + case SCE_PASS_INDIRECT: + col= shr->indirect; + break; case SCE_PASS_REFLECT: col= shr->refl; break; @@ -3615,6 +3624,9 @@ void add_transp_passes(RenderLayer *rl, int offset, ShadeResult *shr, float alph fp= rpass->rect + 4*offset; addAlphaOverFloat(fp, shr->col); break; + case SCE_PASS_EMIT: + col= shr->emit; + break; case SCE_PASS_DIFFUSE: col= shr->diff; break; @@ -3627,6 +3639,12 @@ void add_transp_passes(RenderLayer *rl, int offset, ShadeResult *shr, float alph case SCE_PASS_AO: col= shr->ao; break; + case SCE_PASS_ENVIRONMENT: + col= shr->env; + break; + case SCE_PASS_INDIRECT: + col= shr->indirect; + break; case SCE_PASS_REFLECT: col= shr->refl; break; @@ -3851,6 +3869,9 @@ static int addtosamp_shr(ShadeResult *samp_shr, ShadeSample *ssamp, int addpassf if(addpassflag & SCE_PASS_NORMAL) addvecmul(samp_shr->nor, shr->nor, fac); + if(addpassflag & SCE_PASS_EMIT) + addvecmul(samp_shr->emit, shr->emit, fac); + if(addpassflag & SCE_PASS_DIFFUSE) addvecmul(samp_shr->diff, shr->diff, fac); @@ -3863,6 +3884,12 @@ static int addtosamp_shr(ShadeResult *samp_shr, ShadeSample *ssamp, int addpassf if(addpassflag & SCE_PASS_AO) addvecmul(samp_shr->ao, shr->ao, fac); + if(addpassflag & SCE_PASS_ENVIRONMENT) + addvecmul(samp_shr->env, shr->env, fac); + + if(addpassflag & SCE_PASS_INDIRECT) + addvecmul(samp_shr->indirect, shr->indirect, fac); + if(addpassflag & SCE_PASS_REFLECT) addvecmul(samp_shr->refl, shr->refl, fac); diff --git a/source/blender/windowmanager/CMakeLists.txt b/source/blender/windowmanager/CMakeLists.txt index e93b9906dac..9f57fd5efec 100644 --- a/source/blender/windowmanager/CMakeLists.txt +++ b/source/blender/windowmanager/CMakeLists.txt @@ -81,9 +81,8 @@ IF(WITH_COCOA) LIST(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/intern/wm_apple.c") ENDIF(WITH_COCOA) -# TODO buildinfo -IF(BF_BUILDINFO) +IF(WITH_BUILDINFO) ADD_DEFINITIONS(-DNAN_BUILDINFO) -ENDIF(BF_BUILDINFO) +ENDIF(WITH_BUILDINFO) BLENDERLIB_NOLIST(bf_windowmanager "${SRC}" "${INC}") diff --git a/source/blender/windowmanager/SConscript b/source/blender/windowmanager/SConscript index beae5b721cc..0a86133e614 100644 --- a/source/blender/windowmanager/SConscript +++ b/source/blender/windowmanager/SConscript @@ -32,4 +32,7 @@ if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): if env['WITH_GHOST_COCOA']: sources.remove('intern/wm_apple.c') +if env['BF_BUILDINFO']: + defs.append('NAN_BUILDINFO') + env.BlenderLib ( 'bf_windowmanager', sources, Split(incs), defs, libtype=['core'], priority=[5] ) diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index d2b67142eb5..e7521db462d 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -44,13 +44,16 @@ struct rcti; struct PointerRNA; struct EnumPropertyItem; struct MenuType; +struct wmDropBox; +struct wmDrag; +struct ImBuf; typedef struct wmJob wmJob; /* general API */ void WM_setprefsize (int stax, int stay, int sizx, int sizy); -void WM_init (struct bContext *C); +void WM_init (struct bContext *C, int argc, char **argv); void WM_exit (struct bContext *C); void WM_main (struct bContext *C); @@ -94,6 +97,8 @@ void WM_cursor_warp (struct wmWindow *win, int x, int y); /* keyconfig and keymap */ wmKeyConfig *WM_keyconfig_add (struct wmWindowManager *wm, char *idname); +wmKeyConfig *WM_keyconfig_add_user(struct wmWindowManager *wm, char *idname); +void WM_keyconfig_remove (struct wmWindowManager *wm, struct wmKeyConfig *keyconf); void WM_keyconfig_free (struct wmKeyConfig *keyconf); void WM_keyconfig_userdef(struct wmWindowManager *wm); @@ -131,7 +136,7 @@ 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); +int WM_key_event_operator_id(const struct bContext *C, const char *opname, int opcontext, struct IDProperty *properties, int hotkey, 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); /* handlers */ @@ -150,13 +155,18 @@ struct wmEventHandler *WM_event_add_ui_handler(const struct bContext *C, ListBas void WM_event_remove_ui_handler(ListBase *handlers, int (*func)(struct bContext *C, struct wmEvent *event, void *userdata), void (*remove)(struct bContext *C, void *userdata), void *userdata); +void WM_event_remove_area_handler(struct ListBase *handlers, void *area); struct wmEventHandler *WM_event_add_modal_handler(struct bContext *C, struct wmOperator *op); void WM_event_remove_handlers(struct bContext *C, ListBase *handlers); +struct wmEventHandler *WM_event_add_dropbox_handler(ListBase *handlers, ListBase *dropboxes); + + /* mouse */ void WM_event_add_mousemove(struct bContext *C); int WM_modal_tweak_exit(struct wmEvent *evt, int tweak_event); + /* notifiers */ void WM_event_add_notifier(const struct bContext *C, unsigned int type, void *reference); void WM_main_add_notifier(unsigned int type, void *reference); @@ -170,6 +180,7 @@ void WM_event_timer_sleep(struct wmWindowManager *wm, struct wmWindow *win, str /* operator api, default callbacks */ /* invoke callback, uses enum property named "type" */ int WM_menu_invoke (struct bContext *C, struct wmOperator *op, struct wmEvent *event); +int WM_enum_search_invoke(struct bContext *C, struct wmOperator *op, struct wmEvent *event); /* invoke callback, confirm menu + exec */ int WM_operator_confirm (struct bContext *C, struct wmOperator *op, struct wmEvent *event); /* invoke callback, file selector "path" unset + exec */ @@ -206,10 +217,11 @@ int WM_operator_name_call (struct bContext *C, const char *opstring, int int WM_operator_call_py(struct bContext *C, struct wmOperatorType *ot, int context, struct PointerRNA *properties, struct ReportList *reports); void WM_operator_properties_alloc(struct PointerRNA **ptr, struct IDProperty **properties, const char *opstring); /* used for keymap and macro items */ +void WM_operator_properties_sanitize(struct PointerRNA *ptr); /* make props not context sensitive */ 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_filesel(struct wmOperatorType *ot, int filter, short type, short action); void WM_operator_properties_gesture_border(struct wmOperatorType *ot, int extend); void WM_operator_properties_select_all(struct wmOperatorType *ot); @@ -246,6 +258,7 @@ void WM_OT_tweak_gesture(struct wmOperatorType *ot); /* Gesture manager API */ struct wmGesture *WM_gesture_new(struct bContext *C, struct wmEvent *event, int type); void WM_gesture_end(struct bContext *C, struct wmGesture *gesture); +void WM_gestures_remove(struct bContext *C); /* radial control operator */ int WM_radial_control_invoke(struct bContext *C, struct wmOperator *op, struct wmEvent *event); @@ -257,6 +270,14 @@ void WM_radial_control_string(struct wmOperator *op, char str[], int maxlen); void WM_event_add_fileselect(struct bContext *C, struct wmOperator *op); void WM_event_fileselect_event(struct bContext *C, void *ophandle, int eventval); + /* drag and drop */ +struct wmDrag *WM_event_start_drag(struct bContext *C, int icon, int type, void *poin, double value); +void WM_event_drag_image(struct wmDrag *, struct ImBuf *, float scale, int sx, int sy); + +struct wmDropBox *WM_dropbox_add(ListBase *lb, const char *idname, int (*poll)(struct bContext *, struct wmDrag *, struct wmEvent *event), + void (*copy)(struct wmDrag *, struct wmDropBox *)); +ListBase *WM_dropboxmap_find(char *idname, int spaceid, int regionid); + /* OpenGL wrappers, mimicking opengl syntax */ void wmSubWindowSet (struct wmWindow *win, int swinid); void wmSubWindowScissorSet (struct wmWindow *win, int swinid, struct rcti *srct); diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index 9f52cde27e1..0439fa8b8f5 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -33,9 +33,11 @@ struct wmEvent; struct wmWindowManager; struct uiLayout; struct wmOperator; +struct ImBuf; #include "RNA_types.h" #include "DNA_listBase.h" +#include "BKE_utildefines.h" /* FILE_MAX */ /* exported types for WM */ #include "wm_cursors.h" @@ -106,7 +108,7 @@ typedef struct wmNotifier { struct wmWindowManager *wm; struct wmWindow *window; - int swinid; + int swinid; /* can't rely on this, notifiers can be added without context, swinid of 0 */ unsigned int category, data, subtype, action; void *reference; @@ -157,6 +159,7 @@ typedef struct wmNotifier { #define ND_SCREENCAST (3<<16) #define ND_ANIMPLAY (4<<16) #define ND_GPENCIL (5<<16) +#define ND_EDITOR_CHANGED (6<<16) /*sent to new editors after switching to them*/ /* NC_SCENE Scene */ #define ND_SCENEBROWSE (1<<16) @@ -171,7 +174,7 @@ typedef struct wmNotifier { #define ND_RENDER_RESULT (10<<16) #define ND_COMPO_RESULT (11<<16) #define ND_KEYINGSET (12<<16) -#define ND_SCENEDELETE (13<<16) +#define ND_TOOLSETTINGS (13<<16) #define ND_LAYER (14<<16) #define ND_SEQUENCER_SELECT (15<<16) @@ -241,6 +244,7 @@ typedef struct wmNotifier { #define ND_SPACE_NLA (14<<16) #define ND_SPACE_SEQUENCER (15<<16) #define ND_SPACE_NODE_VIEW (16<<16) +#define ND_SPACE_CHANGED (17<<16) /*sent to a new editor type after it's replaced an old one*/ /* subtype, 256 entries too */ #define NOTE_SUBTYPE 0x0000FF00 @@ -286,6 +290,7 @@ typedef struct wmGesture { int type; /* gesture type define */ int swinid; /* initial subwindow id where it started */ int points; /* optional, amount of points stored */ + int size; /* optional, maximum amount of points stored */ void *customdata; /* customdata for border is a recti */ @@ -389,6 +394,10 @@ typedef struct wmOperatorType { /* rna for properties */ struct StructRNA *srna; + /* rna property to use for generic invoke functions. + * menus, enum search... etc */ + PropertyRNA *prop; + /* struct wmOperatorTypeMacro */ ListBase macro; @@ -430,7 +439,51 @@ typedef struct wmReport { char *message; } wmReport; -/* *************** migrated stuff, clean later? ******************************** */ +/* *************** Drag and drop *************** */ + +#define WM_DRAG_ID 0 +#define WM_DRAG_RNA 1 +#define WM_DRAG_PATH 2 +#define WM_DRAG_NAME 3 +#define WM_DRAG_VALUE 4 + +/* note: structs need not exported? */ + +typedef struct wmDrag { + struct wmDrag *next, *prev; + + int icon, type; /* type, see WM_DRAG defines above */ + void *poin; + char path[FILE_MAX]; + double value; + + struct ImBuf *imb; /* if no icon but imbuf should be drawn around cursor */ + float scale; + short sx, sy; + + char opname[FILE_MAX]; /* if set, draws operator name*/ +} wmDrag; + +/* dropboxes are like keymaps, part of the screen/area/region definition */ +/* allocation and free is on startup and exit */ +typedef struct wmDropBox { + struct wmDropBox *next, *prev; + + /* test if the dropbox is active, then can print optype name */ + int (*poll)(struct bContext *, struct wmDrag *, wmEvent *); + + /* before exec, this copies drag info to wmDrop properties */ + void (*copy)(struct wmDrag *, struct wmDropBox *); + + /* if poll survives, operator is called */ + wmOperatorType *ot; /* not saved in file, so can be pointer */ + + struct IDProperty *properties; /* operator properties, assigned to ptr->data and can be written to a file */ + struct PointerRNA *ptr; /* rna pointer to access properties */ + +} wmDropBox; + +/* *************** migrated stuff, clean later? ************** */ typedef struct RecentFile { struct RecentFile *next, *prev; diff --git a/source/blender/windowmanager/intern/Makefile b/source/blender/windowmanager/intern/Makefile index f4d65975d43..18085194405 100644 --- a/source/blender/windowmanager/intern/Makefile +++ b/source/blender/windowmanager/intern/Makefile @@ -74,6 +74,14 @@ ifeq ($(WITH_QUICKTIME),true) CPPFLAGS += -DWITH_QUICKTIME endif +ifeq ($(WITH_OPENCOLLADA), true) + CPPFLAGS += -DWITH_COLLADA +endif + +ifeq ($(NAN_BUILDINFO), true) + CPPFLAGS += -DNAN_BUILDINFO +endif + ifeq ($(OS),linux) ifeq ($(CPU),alpha) CPPFLAGS += -I$(NAN_MESA)/include diff --git a/source/blender/windowmanager/intern/wm.c b/source/blender/windowmanager/intern/wm.c index ee1d76020c2..bd26a94c917 100644 --- a/source/blender/windowmanager/intern/wm.c +++ b/source/blender/windowmanager/intern/wm.c @@ -190,11 +190,10 @@ void WM_keymap_init(bContext *C) /* create default key config */ wm_window_keymap(wm->defaultconf); ED_spacetypes_keymap(wm->defaultconf); + WM_keyconfig_userdef(wm); wm->initialized |= WM_INIT_KEYMAP; } - - WM_keyconfig_userdef(wm); } void WM_check(bContext *C) @@ -298,6 +297,7 @@ void wm_close_and_free(bContext *C, wmWindowManager *wm) BLI_freelistN(&wm->queue); BLI_freelistN(&wm->paintcursors); + BLI_freelistN(&wm->drags); BKE_reports_clear(&wm->reports); if(C && CTX_wm_manager(C)==wm) CTX_wm_manager_set(C, NULL); diff --git a/source/blender/windowmanager/intern/wm_cursors.c b/source/blender/windowmanager/intern/wm_cursors.c index dfcc1fcd227..f23688404b1 100644 --- a/source/blender/windowmanager/intern/wm_cursors.c +++ b/source/blender/windowmanager/intern/wm_cursors.c @@ -64,6 +64,7 @@ static GHOST_TStandardCursor convert_cursor(int curs) case CURSOR_X_MOVE: return GHOST_kStandardCursorLeftRight; case CURSOR_Y_MOVE: return GHOST_kStandardCursorUpDown; case CURSOR_PENCIL: return GHOST_kStandardCursorPencil; + case CURSOR_COPY: return GHOST_kStandardCursorCopy; } } @@ -136,9 +137,10 @@ void WM_cursor_set(wmWindow *win, int curs) void WM_cursor_modal(wmWindow *win, int val) { - if(win->lastcursor == 0) + if(win->lastcursor == 0) { win->lastcursor = win->cursor; - WM_cursor_set(win, val); + WM_cursor_set(win, val); + } } void WM_cursor_restore(wmWindow *win) diff --git a/source/blender/windowmanager/intern/wm_dragdrop.c b/source/blender/windowmanager/intern/wm_dragdrop.c new file mode 100644 index 00000000000..d976c42bb8c --- /dev/null +++ b/source/blender/windowmanager/intern/wm_dragdrop.c @@ -0,0 +1,370 @@ +/** + * $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) 2010 Blender Foundation. + * All rights reserved. + * + * + * Contributor(s): Blender Foundation + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include "string.h" + +#include "DNA_windowmanager_types.h" +#include "DNA_screen_types.h" + +#include "MEM_guardedalloc.h" + +#include "BLI_blenlib.h" + +#include "BIF_gl.h" +#include "BIF_glutil.h" + +#include "BKE_blender.h" +#include "BKE_context.h" +#include "BKE_idprop.h" +#include "BKE_library.h" +#include "BKE_main.h" +#include "BKE_screen.h" +#include "BKE_global.h" + +#include "IMB_imbuf_types.h" +#include "IMB_imbuf.h" + +#include "UI_interface.h" +#include "UI_interface_icons.h" + +#include "WM_api.h" +#include "WM_types.h" +#include "wm_event_system.h" +#include "wm.h" + +#include "RNA_types.h" + +/* ****************************************************** */ + +static ListBase dropboxes= {NULL, NULL}; + +/* drop box maps are stored global for now */ +/* these are part of blender's UI/space specs, and not like keymaps */ +/* when editors become configurable, they can add own dropbox definitions */ + +typedef struct wmDropBoxMap { + struct wmDropBoxMap *next, *prev; + + ListBase dropboxes; + short spaceid, regionid; + char idname[KMAP_MAX_NAME]; + +} wmDropBoxMap; + +ListBase *WM_dropboxmap_find(char *idname, int spaceid, int regionid) +{ + wmDropBoxMap *dm; + + for(dm= dropboxes.first; dm; dm= dm->next) + if(dm->spaceid==spaceid && dm->regionid==regionid) + if(0==strncmp(idname, dm->idname, KMAP_MAX_NAME)) + return &dm->dropboxes; + + dm= MEM_callocN(sizeof(struct wmDropBoxMap), "dropmap list"); + BLI_strncpy(dm->idname, idname, KMAP_MAX_NAME); + dm->spaceid= spaceid; + dm->regionid= regionid; + BLI_addtail(&dropboxes, dm); + + return &dm->dropboxes; +} + + + +wmDropBox *WM_dropbox_add(ListBase *lb, const char *idname, int (*poll)(bContext *, wmDrag *, wmEvent *), + void (*copy)(wmDrag *, wmDropBox *)) +{ + wmDropBox *drop= MEM_callocN(sizeof(wmDropBox), "wmDropBox"); + + drop->poll= poll; + drop->copy= copy; + drop->ot= WM_operatortype_find(idname, 0); + + if(drop->ot==NULL) { + MEM_freeN(drop); + printf("Error: dropbox with unknown operator: %s\n", idname); + return NULL; + } + WM_operator_properties_alloc(&(drop->ptr), &(drop->properties), idname); + + BLI_addtail(lb, drop); + + return drop; +} + +void wm_dropbox_free(void) +{ + wmDropBoxMap *dm; + + for(dm= dropboxes.first; dm; dm= dm->next) { + wmDropBox *drop; + + for(drop= dm->dropboxes.first; drop; drop= drop->next) { + if(drop->ptr) { + WM_operator_properties_free(drop->ptr); + MEM_freeN(drop->ptr); + } + } + BLI_freelistN(&dm->dropboxes); + } + + BLI_freelistN(&dropboxes); +} + +/* *********************************** */ + +/* note that the pointer should be valid allocated and not on stack */ +wmDrag *WM_event_start_drag(struct bContext *C, int icon, int type, void *poin, double value) +{ + wmWindowManager *wm= CTX_wm_manager(C); + wmDrag *drag= MEM_callocN(sizeof(struct wmDrag), "new drag"); + + /* keep track of future multitouch drag too, add a mousepointer id or so */ + /* if multiple drags are added, they're drawn as list */ + + BLI_addtail(&wm->drags, drag); + drag->icon= icon; + drag->type= type; + if(type==WM_DRAG_PATH) + BLI_strncpy(drag->path, poin, FILE_MAX); + else + drag->poin= poin; + drag->value= value; + + return drag; +} + +void WM_event_drag_image(wmDrag *drag, ImBuf *imb, float scale, int sx, int sy) +{ + drag->imb= imb; + drag->scale= scale; + drag->sx= sx; + drag->sy= sy; +} + + +static char *dropbox_active(bContext *C, ListBase *handlers, wmDrag *drag, wmEvent *event) +{ + wmEventHandler *handler= handlers->first; + for(; handler; handler= handler->next) { + if(handler->dropboxes) { + wmDropBox *drop= handler->dropboxes->first; + for(; drop; drop= drop->next) { + if(drop->poll(C, drag, event)) + return drop->ot->name; + } + } + } + return NULL; +} + +/* return active operator name when mouse is in box */ +static char *wm_dropbox_active(bContext *C, wmDrag *drag, wmEvent *event) +{ + wmWindow *win= CTX_wm_window(C); + ScrArea *sa= CTX_wm_area(C); + ARegion *ar= CTX_wm_region(C); + char *name; + + name= dropbox_active(C, &win->handlers, drag, event); + if(name) return name; + + name= dropbox_active(C, &sa->handlers, drag, event); + if(name) return name; + + name= dropbox_active(C, &ar->handlers, drag, event); + if(name) return name; + + return NULL; +} + + +static void wm_drop_operator_options(bContext *C, wmDrag *drag, wmEvent *event) +{ + wmWindow *win= CTX_wm_window(C); + + /* for multiwin drags, we only do this if mouse inside */ + if(event->x<0 || event->y<0 || event->x>win->sizex || event->y>win->sizey) + return; + + drag->opname[0]= 0; + + /* check buttons (XXX todo rna and value) */ + if( UI_but_active_drop_name(C) ) { + strcpy(drag->opname, "Paste name"); + } + else { + char *opname= wm_dropbox_active(C, drag, event); + + if(opname) { + BLI_strncpy(drag->opname, opname, FILE_MAX); + // WM_cursor_modal(win, CURSOR_COPY); + } + // else + // WM_cursor_restore(win); + /* unsure about cursor type, feels to be too much */ + } +} + +/* called in inner handler loop, region context */ +void wm_drags_check_ops(bContext *C, wmEvent *event) +{ + wmWindowManager *wm= CTX_wm_manager(C); + wmDrag *drag; + + for(drag= wm->drags.first; drag; drag= drag->next) { + wm_drop_operator_options(C, drag, event); + } +} + +/* ************** draw ***************** */ + +static void wm_drop_operator_draw(char *name, int x, int y) +{ + int width= UI_GetStringWidth(name); + + glColor4ub(0, 0, 0, 128); + + uiSetRoundBox(15); + uiRoundBox(x, y, x + width + 8, y + 15, 7); + + glColor4ub(255, 255, 255, 255); + UI_DrawString(x+4, y+4, name); +} + +static char *wm_drag_name(wmDrag *drag) +{ + switch(drag->type) { + case WM_DRAG_ID: + { + ID *id= (ID *)drag->poin; + return id->name+2; + } + case WM_DRAG_PATH: + return drag->path; + case WM_DRAG_NAME: + return (char *)drag->path; + } + return ""; +} + +static void drag_rect_minmax(rcti *rect, int x1, int y1, int x2, int y2) +{ + if(rect->xmin > x1) + rect->xmin= x1; + if(rect->xmax < x2) + rect->xmax= x2; + if(rect->ymin > y1) + rect->ymin= y1; + if(rect->ymax < y2) + rect->ymax= y2; +} + +/* called in wm_draw.c */ +/* if rect set, do not draw */ +void wm_drags_draw(bContext *C, wmWindow *win, rcti *rect) +{ + wmWindowManager *wm= CTX_wm_manager(C); + wmDrag *drag; + int cursorx, cursory, x, y; + + cursorx= win->eventstate->x; + cursory= win->eventstate->y; + if(rect) { + rect->xmin= rect->xmax= cursorx; + rect->ymin= rect->ymax= cursory; + } + + /* XXX todo, multiline drag draws... but maybe not, more types mixed wont work well */ + glEnable(GL_BLEND); + for(drag= wm->drags.first; drag; drag= drag->next) { + + /* image or icon */ + if(drag->imb) { + x= cursorx - drag->sx/2; + y= cursory - drag->sy/2; + + if(rect) + drag_rect_minmax(rect, x, y, x+drag->sx, y+drag->sy); + else { + glColor4f(1.0, 1.0, 1.0, 0.65); /* this blends texture */ + glaDrawPixelsTexScaled(x, y, drag->imb->x, drag->imb->y, GL_UNSIGNED_BYTE, drag->imb->rect, drag->scale, drag->scale); + } + } + else { + x= cursorx - 8; + y= cursory - 2; + + /* icons assumed to be 16 pixels */ + if(rect) + drag_rect_minmax(rect, x, y, x+16, y+16); + else + UI_icon_draw_aspect(x, y, drag->icon, 1.0, 0.8); + } + + /* item name */ + if(drag->imb) { + x= cursorx - drag->sx/2; + y= cursory - drag->sy/2 - 16; + } + else { + x= cursorx + 10; + y= cursory + 1; + } + + if(rect) { + int w= UI_GetStringWidth(wm_drag_name(drag)); + drag_rect_minmax(rect, x, y, x+w, y+16); + } + else { + glColor4ub(255, 255, 255, 255); + UI_DrawString(x, y, wm_drag_name(drag)); + } + + /* operator name with roundbox */ + if(drag->opname[0]) { + if(drag->imb) { + x= cursorx - drag->sx/2; + y= cursory + drag->sy/2 + 4; + } + else { + x= cursorx - 8; + y= cursory + 16; + } + + if(rect) { + int w= UI_GetStringWidth(wm_drag_name(drag)); + drag_rect_minmax(rect, x, y, x+w, y+16); + } + else + wm_drop_operator_draw(drag->opname, x, y); + + } + } + glDisable(GL_BLEND); +} diff --git a/source/blender/windowmanager/intern/wm_draw.c b/source/blender/windowmanager/intern/wm_draw.c index 9ee67cd4047..0d2f1043d0b 100644 --- a/source/blender/windowmanager/intern/wm_draw.c +++ b/source/blender/windowmanager/intern/wm_draw.c @@ -63,7 +63,8 @@ #define WIN_FRONT_OK 2 #define WIN_BOTH_OK 3 -/* ********************* drawing, swap ****************** */ +/* ******************* drawing, overlays *************** */ + static void wm_paintcursor_draw(bContext *C, ARegion *ar) { @@ -91,6 +92,8 @@ static void wm_paintcursor_draw(bContext *C, ARegion *ar) } } +/* ********************* drawing, swap ****************** */ + static void wm_area_mark_invalid_backbuf(ScrArea *sa) { if(sa->spacetype == SPACE_VIEW3D) @@ -179,9 +182,11 @@ static void wm_flush_regions_up(bScreen *screen, rcti *dirty) static void wm_method_draw_overlap_all(bContext *C, wmWindow *win) { + wmWindowManager *wm= CTX_wm_manager(C); bScreen *screen= win->screen; ScrArea *sa; ARegion *ar; + static rcti rect= {0, 0, 0, 0}; int exchange= (G.f & G_SWAP_EXCHANGE); /* flush overlapping regions */ @@ -203,6 +208,16 @@ static void wm_method_draw_overlap_all(bContext *C, wmWindow *win) wm_flush_regions_down(screen, &ar->winrct); } + /* flush drag item */ + if(rect.xmin!=rect.xmax) { + wm_flush_regions_down(screen, &rect); + rect.xmin= rect.xmax = 0; + } + if(wm->drags.first) { + /* doesnt draw, fills rect with boundbox */ + wm_drags_draw(C, win, &rect); + } + /* draw marked area regions */ for(sa= screen->areabase.first; sa; sa= sa->next) { CTX_wm_area_set(C, sa); @@ -273,6 +288,11 @@ static void wm_method_draw_overlap_all(bContext *C, wmWindow *win) if(screen->do_draw_gesture) wm_gesture_draw(win); + + /* needs pixel coords in screen */ + if(wm->drags.first) { + wm_drags_draw(C, win, NULL); + } } #if 0 @@ -607,6 +627,12 @@ static void wm_method_draw_triple(bContext *C, wmWindow *win) wmSubWindowSet(win, screen->mainwin); } + + /* needs pixel coords in screen */ + if(wm->drags.first) { + wm_drags_draw(C, win, NULL); + } + } /****************** main update call **********************/ @@ -625,6 +651,8 @@ static int wm_draw_update_test_window(wmWindow *win) return 1; if(win->screen->do_draw_paintcursor) return 1; + if(win->screen->do_draw_drag) + return 1; for(ar= win->screen->regionbase.first; ar; ar= ar->next) if(ar->swinid && ar->do_draw) @@ -672,6 +700,7 @@ void wm_draw_update(bContext *C) win->screen->do_draw_gesture= 0; win->screen->do_draw_paintcursor= 0; + win->screen->do_draw_drag= 0; wm_window_swap_buffers(win); diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index aff843dc1cb..43e87e2ab60 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -81,8 +81,15 @@ void wm_event_add(wmWindow *win, wmEvent *event_to_add) void wm_event_free(wmEvent *event) { - if(event->customdata && event->customdatafree) - MEM_freeN(event->customdata); + if(event->customdata) { + if(event->customdatafree) { + /* note: pointer to listbase struct elsewhere */ + if(event->custom==EVT_DATA_LISTBASE) + BLI_freelistN(event->customdata); + else + MEM_freeN(event->customdata); + } + } MEM_freeN(event); } @@ -187,19 +194,24 @@ void wm_event_do_notifiers(bContext *C) printf("screen delete %p\n", note->reference); } } - else if(note->category==NC_SCENE) { + } + + if(note->window==win || (note->window == NULL && (note->reference == NULL || note->reference == CTX_data_scene(C)))) { + if(note->category==NC_SCENE) { if(note->data==ND_SCENEBROWSE) { ED_screen_set_scene(C, note->reference); // XXX hrms, think this over! if(G.f & G_DEBUG) printf("scene set %p\n", note->reference); } - if(note->data==ND_SCENEDELETE) { + else if(note->data==ND_FRAME) + do_anim= 1; + + if(note->action == NA_REMOVED) { ED_screen_delete_scene(C, note->reference); // XXX hrms, think this over! if(G.f & G_DEBUG) printf("scene delete %p\n", note->reference); } - else if(note->data==ND_FRAME) - do_anim= 1; + } } if(ELEM4(note->category, NC_SCENE, NC_OBJECT, NC_GEOM, NC_SCENE)) { @@ -291,9 +303,37 @@ int WM_operator_poll(bContext *C, wmOperatorType *ot) return 1; } +static void wm_operator_finished(bContext *C, wmOperator *op, int repeat) +{ + wmWindowManager *wm= CTX_wm_manager(C); + + op->customdata= NULL; + + /* we don't want to do undo pushes for operators that are being + called from operators that already do an undo push. usually + this will happen for python operators that call C operators */ + if(wm->op_undo_depth == 0) + if(op->type->flag & OPTYPE_UNDO) + ED_undo_push_op(C, op); + + if(repeat==0) { + 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((wm->op_undo_depth == 0) && (op->type->flag & OPTYPE_REGISTER)) + wm_operator_register(C, op); + else + WM_operator_free(op); + } +} + /* if repeat is true, it doesn't register again, nor does it free */ static int wm_operator_exec(bContext *C, wmOperator *op, int repeat) { + wmWindowManager *wm= CTX_wm_manager(C); int retval= OPERATOR_CANCELLED; if(op==NULL || op->type==NULL) @@ -302,36 +342,26 @@ static int wm_operator_exec(bContext *C, wmOperator *op, int repeat) if(0==WM_operator_poll(C, op->type)) return retval; - if(op->type->exec) + if(op->type->exec) { + if(op->type->flag & OPTYPE_UNDO) + wm->op_undo_depth++; + retval= op->type->exec(C, op); + + if(op->type->flag & OPTYPE_UNDO) + wm->op_undo_depth--; + } if(retval & (OPERATOR_FINISHED|OPERATOR_CANCELLED)) if(op->reports->list.first) uiPupMenuReports(C, op->reports); - if(retval & OPERATOR_FINISHED) { - op->customdata= NULL; - - if(op->type->flag & OPTYPE_UNDO) - ED_undo_push_op(C, op); - - if(repeat==0) { - 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); - } - } + if(retval & OPERATOR_FINISHED) + wm_operator_finished(C, op, repeat); else if(repeat==0) WM_operator_free(op); - return retval; + return retval | OPERATOR_HANDLED; } @@ -386,15 +416,41 @@ static wmOperator *wm_operator_create(wmWindowManager *wm, wmOperatorType *ot, P motherop = op; root = 1; } + - for(otmacro= ot->macro.first; otmacro; otmacro= otmacro->next) { - wmOperatorType *otm= WM_operatortype_find(otmacro->idname, 0); - wmOperator *opm= wm_operator_create(wm, otm, otmacro->ptr, NULL); - - IDP_ReplaceGroupInGroup(opm->properties, motherop->properties); + /* if properties exist, it will contain everything needed */ + if (properties) { + otmacro= ot->macro.first; + + RNA_STRUCT_BEGIN(properties, prop) { + + if (otmacro == NULL) + break; + + /* skip invalid properties */ + if (strcmp(RNA_property_identifier(prop), otmacro->idname) == 0) + { + wmOperatorType *otm= WM_operatortype_find(otmacro->idname, 0); + PointerRNA someptr = RNA_property_pointer_get(properties, prop); + wmOperator *opm= wm_operator_create(wm, otm, &someptr, NULL); + + IDP_ReplaceGroupInGroup(opm->properties, otmacro->properties); + + BLI_addtail(&motherop->macro, opm); + opm->opm= motherop; /* pointer to mom, for modal() */ - BLI_addtail(&motherop->macro, opm); - opm->opm= motherop; /* pointer to mom, for modal() */ + otmacro= otmacro->next; + } + } + RNA_STRUCT_END; + } else { + for (otmacro = ot->macro.first; otmacro; otmacro = otmacro->next) { + wmOperatorType *otm= WM_operatortype_find(otmacro->idname, 0); + wmOperator *opm= wm_operator_create(wm, otm, otmacro->ptr, NULL); + + BLI_addtail(&motherop->macro, opm); + opm->opm= motherop; /* pointer to mom, for modal() */ + } } if (root) @@ -434,10 +490,24 @@ static int wm_operator_invoke(bContext *C, wmOperatorType *ot, wmEvent *event, P if(op->type->invoke && event) { wm_region_mouse_co(C, event); + + if(op->type->flag & OPTYPE_UNDO) + wm->op_undo_depth++; + retval= op->type->invoke(C, op, event); + + if(op->type->flag & OPTYPE_UNDO) + wm->op_undo_depth--; } - else if(op->type->exec) + else if(op->type->exec) { + if(op->type->flag & OPTYPE_UNDO) + wm->op_undo_depth++; + retval= op->type->exec(C, op); + + if(op->type->flag & OPTYPE_UNDO) + wm->op_undo_depth--; + } else printf("invalid operator call %s\n", ot->idname); /* debug, important to leave a while, should never happen */ @@ -452,22 +522,10 @@ static int wm_operator_invoke(bContext *C, wmOperatorType *ot, wmEvent *event, P wm_operator_print(op); } - if(retval & OPERATOR_FINISHED) { - op->customdata= NULL; - - if(ot->flag & OPTYPE_UNDO) - ED_undo_push_op(C, op); - - 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); + if(retval & OPERATOR_HANDLED) + ; /* do nothing, wm_operator_exec() has been called somewhere */ + else if(retval & OPERATOR_FINISHED) { + wm_operator_finished(C, op, 0); } else if(retval & OPERATOR_RUNNING_MODAL) { /* grab cursor during blocking modal ops (X11) @@ -617,8 +675,15 @@ int WM_operator_call_py(bContext *C, wmOperatorType *ot, int context, PointerRNA wmWindowManager *wm= CTX_wm_manager(C); op= wm_operator_create(wm, ot, properties, reports); - if (op->type->exec) + if (op->type->exec) { + if(op->type->flag & OPTYPE_UNDO) + wm->op_undo_depth++; + retval= op->type->exec(C, op); + + if(op->type->flag & OPTYPE_UNDO) + wm->op_undo_depth--; + } else printf("error \"%s\" operator has no exec function, python cannot call it\n", op->type->name); #endif @@ -681,6 +746,7 @@ static void wm_handler_op_context(bContext *C, wmEventHandler *handler) void WM_event_remove_handlers(bContext *C, ListBase *handlers) { wmEventHandler *handler; + wmWindowManager *wm= CTX_wm_manager(C); /* C is zero on freeing database, modal handlers then already were freed */ while((handler=handlers->first)) { @@ -693,8 +759,14 @@ void WM_event_remove_handlers(bContext *C, ListBase *handlers) wm_handler_op_context(C, handler); + if(handler->op->type->flag & OPTYPE_UNDO) + wm->op_undo_depth++; + handler->op->type->cancel(C, handler->op); + if(handler->op->type->flag & OPTYPE_UNDO) + wm->op_undo_depth--; + CTX_wm_area_set(C, area); CTX_wm_region_set(C, region); } @@ -766,47 +838,55 @@ int WM_userdef_event_map(int kmitype) return kmitype; } -static int wm_eventmatch(wmEvent *winevent, wmKeyMapItem *kmi) +static void wm_eventemulation(wmEvent *event) { - int kmitype= WM_userdef_event_map(kmi->type); - - if(kmi->flag & KMI_INACTIVE) return 0; - - /* exception for middlemouse emulation */ - if((U.flag & USER_TWOBUTTONMOUSE) && (kmi->type == MIDDLEMOUSE)) { - if(winevent->type == LEFTMOUSE && winevent->alt) { - wmKeyMapItem tmp= *kmi; - - tmp.type= winevent->type; - tmp.alt= winevent->alt; - if(wm_eventmatch(winevent, &tmp)) - return 1; + static int mmb_emulated = 0; /* this should be in a data structure somwhere */ + + /* middlemouse emulation */ + if(U.flag & USER_TWOBUTTONMOUSE) { + if(event->type == LEFTMOUSE && (event->alt || mmb_emulated == KM_PRESS)) { + event->type = MIDDLEMOUSE; + event->alt = 0; + mmb_emulated = event->val; } } - /* exception for numpad emulation */ - else if(U.flag & USER_NONUMPAD) { - wmKeyMapItem tmp= *kmi; - - switch(kmi->type) { - case PAD0: tmp.type = ZEROKEY; break; - case PAD1: tmp.type = ONEKEY; break; - case PAD2: tmp.type = TWOKEY; break; - case PAD3: tmp.type = THREEKEY; break; - case PAD4: tmp.type = FOURKEY; break; - case PAD5: tmp.type = FIVEKEY; break; - case PAD6: tmp.type = SIXKEY; break; - case PAD7: tmp.type = SEVENKEY; break; - case PAD8: tmp.type = EIGHTKEY; break; - case PAD9: tmp.type = NINEKEY; break; - case PADMINUS: tmp.type = MINUSKEY; break; - case PADPLUSKEY: tmp.type = EQUALKEY; break; - case PADSLASHKEY: tmp.type = BACKSLASHKEY; break; + +#ifdef __APPLE__ + /* rightmouse emulation */ + if(U.flag & USER_TWOBUTTONMOUSE) { + if(event->type == LEFTMOUSE && (event->oskey || mmb_emulated == KM_PRESS)) { + event->type = RIGHTMOUSE; + event->oskey = 0; + mmb_emulated = event->val; } + } +#endif - if(tmp.type != kmi->type) - if(wm_eventmatch(winevent, &tmp)) - return 1; + /* numpad emulation */ + if(U.flag & USER_NONUMPAD) { + switch(event->type) { + case ZEROKEY: event->type = PAD0; break; + case ONEKEY: event->type = PAD1; break; + case TWOKEY: event->type = PAD2; break; + case THREEKEY: event->type = PAD3; break; + case FOURKEY: event->type = PAD4; break; + case FIVEKEY: event->type = PAD5; break; + case SIXKEY: event->type = PAD6; break; + case SEVENKEY: event->type = PAD7; break; + case EIGHTKEY: event->type = PAD8; break; + case NINEKEY: event->type = PAD9; break; + case MINUSKEY: event->type = PADMINUS; break; + case EQUALKEY: event->type = PADPLUSKEY; break; + case BACKSLASHKEY: event->type = PADSLASHKEY; break; + } } +} + +static int wm_eventmatch(wmEvent *winevent, wmKeyMapItem *kmi) +{ + int kmitype= WM_userdef_event_map(kmi->type); + + if(kmi->flag & KMI_INACTIVE) return 0; /* the matching rules */ if(kmitype==KM_TEXTINPUT) @@ -878,6 +958,7 @@ static int wm_handler_operator_call(bContext *C, ListBase *handlers, wmEventHand if(ot->modal) { /* we set context to where modal handler came from */ + wmWindowManager *wm= CTX_wm_manager(C); ScrArea *area= CTX_wm_area(C); ARegion *region= CTX_wm_region(C); @@ -885,8 +966,14 @@ static int wm_handler_operator_call(bContext *C, ListBase *handlers, wmEventHand wm_region_mouse_co(C, event); wm_event_modalkeymap(C, op, event); + if(ot->flag & OPTYPE_UNDO) + wm->op_undo_depth++; + retval= ot->modal(C, op, event); + if(ot->flag & OPTYPE_UNDO) + wm->op_undo_depth--; + /* putting back screen context, reval can pass trough after modal failures! */ if((retval & OPERATOR_PASS_THROUGH) || wm_event_always_pass(event)) { CTX_wm_area_set(C, area); @@ -908,21 +995,7 @@ static int wm_handler_operator_call(bContext *C, ListBase *handlers, wmEventHand } if(retval & OPERATOR_FINISHED) { - op->customdata= NULL; - - if(ot->flag & OPTYPE_UNDO) - ED_undo_push_op(C, op); - - 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); + wm_operator_finished(C, op, 0); handler->op= NULL; } else if(retval & (OPERATOR_CANCELLED|OPERATOR_FINISHED)) { @@ -1005,6 +1078,7 @@ static int wm_handler_ui_call(bContext *C, wmEventHandler *handler, wmEvent *eve /* fileselect handlers are only in the window queue, so it's save to switch screens or area types */ static int wm_handler_fileselect_call(bContext *C, ListBase *handlers, wmEventHandler *handler, wmEvent *event) { + wmWindowManager *wm= CTX_wm_manager(C); SpaceFile *sfile; int action= WM_HANDLER_CONTINUE; @@ -1060,27 +1134,60 @@ static int wm_handler_fileselect_call(bContext *C, ListBase *handlers, wmEventHa wm_handler_op_context(C, handler); + /* needed for uiPupMenuReports */ + if(event->val==EVT_FILESELECT_EXEC) { /* a bit weak, might become arg for WM_event_fileselect? */ /* XXX also extension code in image-save doesnt work for this yet */ - if(strncmp(handler->op->type->name, "Save", 4)==0) { + if (RNA_struct_find_property(handler->op->ptr, "check_existing") && + RNA_boolean_get(handler->op->ptr, "check_existing")) { /* this gives ownership to pupmenu */ uiPupMenuSaveOver(C, handler->op, (path)? path: ""); } else { - int retval= handler->op->type->exec(C, handler->op); + int retval; + + if(handler->op->type->flag & OPTYPE_UNDO) + wm->op_undo_depth++; + + retval= handler->op->type->exec(C, handler->op); + + if(handler->op->type->flag & OPTYPE_UNDO) + wm->op_undo_depth--; if (retval & OPERATOR_FINISHED) if(G.f & G_DEBUG) wm_operator_print(handler->op); + if(handler->op->reports->list.first) { + + /* FIXME, temp setting window, this is really bad! + * only have because lib linking errors need to be seen by users :( + * it can be removed without breaking anything but then no linking errors - campbell */ + wmWindow *win_prev= CTX_wm_window(C); + if(win_prev==NULL) + CTX_wm_window_set(C, CTX_wm_manager(C)->windows.first); + + handler->op->reports->printlevel = RPT_WARNING; + uiPupMenuReports(C, handler->op->reports); + + CTX_wm_window_set(C, win_prev); + } + WM_operator_free(handler->op); } } else { - if(handler->op->type->cancel) + if(handler->op->type->cancel) { + if(handler->op->type->flag & OPTYPE_UNDO) + wm->op_undo_depth++; + handler->op->type->cancel(C, handler->op); + if(handler->op->type->flag & OPTYPE_UNDO) + wm->op_undo_depth--; + } + WM_operator_free(handler->op); } @@ -1175,6 +1282,26 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers) /* screen context changes here */ action |= wm_handler_fileselect_call(C, handlers, handler, event); } + else if(handler->dropboxes) { + if(event->type==EVT_DROP) { + wmDropBox *drop= handler->dropboxes->first; + for(; drop; drop= drop->next) { + /* other drop custom types allowed */ + if(event->custom==EVT_DATA_LISTBASE) { + ListBase *lb= (ListBase *)event->customdata; + wmDrag *drag; + for(drag= lb->first; drag; drag= drag->next) { + if(drop->poll(C, drag, event)) { + drop->copy(drag, drop); + + wm_operator_invoke(C, drop->ot, event, drop->ptr, NULL); + action |= WM_HANDLER_BREAK; + } + } + } + } + } + } else { /* modal, swallows all */ action |= wm_handler_operator_call(C, handlers, handler, event, NULL); @@ -1264,7 +1391,7 @@ static void wm_paintcursor_tag(bContext *C, wmPaintCursor *pc, ARegion *ar) { if(ar) { for(; pc; pc= pc->next) { - if(pc->poll(C)) { + if(pc->poll == NULL || pc->poll(C)) { wmWindow *win= CTX_wm_window(C); win->screen->do_draw_paintcursor= 1; @@ -1301,13 +1428,51 @@ static void wm_paintcursor_test(bContext *C, wmEvent *event) } } +static void wm_event_drag_test(wmWindowManager *wm, wmWindow *win, wmEvent *event) +{ + if(wm->drags.first==NULL) return; + + if(event->type==MOUSEMOVE) + win->screen->do_draw_drag= 1; + else if(event->type==ESCKEY) { + BLI_freelistN(&wm->drags); + win->screen->do_draw_drag= 1; + } + else if(event->type==LEFTMOUSE && event->val==KM_RELEASE) { + event->type= EVT_DROP; + + /* create customdata, first free existing */ + if(event->customdata) { + if(event->customdatafree) + MEM_freeN(event->customdata); + } + + event->custom= EVT_DATA_LISTBASE; + event->customdata= &wm->drags; + event->customdatafree= 1; + + /* clear drop icon */ + win->screen->do_draw_drag= 1; + + /* restore cursor (disabled, see wm_dragdrop.c) */ + // WM_cursor_restore(win); + } + + /* overlap fails otherwise */ + if(win->screen->do_draw_drag) + if(win->drawmethod == USER_DRAW_OVERLAP) + win->screen->do_draw= 1; + +} + /* called in main loop */ /* goes over entire hierarchy: events -> window -> screen -> area -> region */ void wm_event_do_handlers(bContext *C) { + wmWindowManager *wm= CTX_wm_manager(C); wmWindow *win; - for(win= CTX_wm_manager(C)->windows.first; win; win= win->next) { + for(win= wm->windows.first; win; win= win->next) { wmEvent *event; if( win->screen==NULL ) @@ -1316,6 +1481,8 @@ void wm_event_do_handlers(bContext *C) while( (event= win->queue.first) ) { int action = WM_HANDLER_CONTINUE; + wm_eventemulation(event); + CTX_wm_window_set(C, win); /* we let modal handlers get active area/region, also wm_paintcursor_test needs it */ @@ -1332,6 +1499,9 @@ void wm_event_do_handlers(bContext *C) if(CTX_wm_window(C)==NULL) return; + /* check dragging, creates new event or frees, adds draw tag */ + wm_event_drag_test(wm, win, event); + /* builtin tweak, if action is break it removes tweak */ wm_tweakevent_test(C, event, action); @@ -1356,8 +1526,16 @@ void wm_event_do_handlers(bContext *C) for(ar=sa->regionbase.first; ar; ar= ar->next) { if(wm_event_inside_i(event, &ar->winrct)) { CTX_wm_region_set(C, ar); + + /* does polls for drop regions and checks uibuts */ + /* need to be here to make sure region context is true */ + if(event->type==MOUSEMOVE) { + wm_region_mouse_co(C, event); + wm_drags_check_ops(C, event); + } + action |= wm_handlers_do(C, event, &ar->handlers); - + doit |= (BLI_in_rcti(&ar->winrct, event->x, event->y)); if(action & WM_HANDLER_BREAK) @@ -1603,6 +1781,46 @@ void WM_event_remove_ui_handler(ListBase *handlers, wmUIHandlerFunc func, wmUIHa } } +wmEventHandler *WM_event_add_dropbox_handler(ListBase *handlers, ListBase *dropboxes) +{ + wmEventHandler *handler; + + /* only allow same dropbox once */ + for(handler= handlers->first; handler; handler= handler->next) + if(handler->dropboxes==dropboxes) + return handler; + + handler= MEM_callocN(sizeof(wmEventHandler), "dropbox handler"); + + /* dropbox stored static, no free or copy */ + handler->dropboxes= dropboxes; + BLI_addhead(handlers, handler); + + return handler; +} + +/* XXX solution works, still better check the real cause (ton) */ +void WM_event_remove_area_handler(ListBase *handlers, void *area) +{ + wmEventHandler *handler, *nexthandler; + + for(handler = handlers->first; handler; handler= nexthandler) { + nexthandler = handler->next; + if (handler->type != WM_HANDLER_FILESELECT) { + if (handler->ui_area == area) { + BLI_remlink(handlers, handler); + wm_event_free_handler(handler); + } + } + } +} + +void WM_event_remove_handler(ListBase *handlers, wmEventHandler *handler) +{ + BLI_remlink(handlers, handler); + wm_event_free_handler(handler); +} + void WM_event_add_mousemove(bContext *C) { wmWindow *window= CTX_wm_window(C); @@ -1630,7 +1848,6 @@ int WM_modal_tweak_exit(wmEvent *evt, int tweak_event) return 0; } - /* ********************* ghost stuff *************** */ static int convert_key(GHOST_TKey key) @@ -1729,10 +1946,51 @@ static void update_tablet_data(wmWindow *win, wmEvent *event) } } +/* imperfect but probably usable... draw/enable drags to other windows */ +static wmWindow *wm_event_cursor_other_windows(wmWindowManager *wm, wmWindow *win, wmEvent *evt) +{ + short mx= evt->x, my= evt->y; + + if(wm->windows.first== wm->windows.last) + return NULL; + + /* top window bar... */ + if(mx<0 || my<0 || mx>win->sizex || my>win->sizey+30) { + wmWindow *owin; + wmEventHandler *handler; + + /* let's skip windows having modal handlers now */ + /* potential XXX ugly... I wouldn't have added a modalhandlers list (introduced in rev 23331, ton) */ + for(handler= win->modalhandlers.first; handler; handler= handler->next) + if(handler->ui_handle || handler->op) + return NULL; + + /* to desktop space */ + mx+= win->posx; + my+= win->posy; + + /* check other windows to see if it has mouse inside */ + for(owin= wm->windows.first; owin; owin= owin->next) { + + if(owin!=win) { + if(mx-owin->posx >= 0 && my-owin->posy >= 0 && + mx-owin->posx <= owin->sizex && my-owin->posy <= owin->sizey) { + evt->x= mx-owin->posx; + evt->y= my-owin->posy; + + return owin; + } + } + } + } + return NULL; +} /* windows store own event queues, no bContext here */ -void wm_event_add_ghostevent(wmWindow *win, int type, void *customdata) +/* time is in 1000s of seconds, from ghost */ +void wm_event_add_ghostevent(wmWindowManager *wm, wmWindow *win, int type, int time, void *customdata) { + wmWindow *owin; wmEvent event, *evt= win->eventstate; /* initialize and copy state (only mouse x y and modifiers) */ @@ -1743,21 +2001,79 @@ void wm_event_add_ghostevent(wmWindow *win, int type, void *customdata) case GHOST_kEventCursorMove: { if(win->active) { GHOST_TEventCursorData *cd= customdata; + #if defined(__APPLE__) && defined(GHOST_COCOA) //Cocoa already uses coordinates with y=0 at bottom, and returns inwindow coordinates on mouse moved event - event.type= MOUSEMOVE; - event.x= evt->x = cd->x; - event.y = evt->y = cd->y; + evt->x= cd->x; + evt->y= cd->y; #else int cx, cy; + GHOST_ScreenToClient(win->ghostwin, cd->x, cd->y, &cx, &cy); + evt->x= cx; + evt->y= (win->sizey-1) - cy; +#endif + + event.x= evt->x; + event.y= evt->y; + event.type= MOUSEMOVE; + + update_tablet_data(win, &event); + wm_event_add(win, &event); + + /* also add to other window if event is there, this makes overdraws disappear nicely */ + /* it remaps mousecoord to other window in event */ + owin= wm_event_cursor_other_windows(wm, win, &event); + if(owin) { + wmEvent oevent= *(owin->eventstate); + + oevent.x= event.x; + oevent.y= event.y; + oevent.type= MOUSEMOVE; + + *(owin->eventstate)= oevent; + update_tablet_data(owin, &oevent); + wm_event_add(owin, &oevent); + } + + } + break; + } + case GHOST_kEventTrackpad: { + if (win->active) { + GHOST_TEventTrackpadData * pd = customdata; + switch (pd->subtype) { + case GHOST_kTrackpadEventMagnify: + event.type = MOUSEZOOM; + break; + case GHOST_kTrackpadEventRotate: + event.type = MOUSEROTATE; + break; + case GHOST_kTrackpadEventScroll: + default: + event.type= MOUSEPAN; + break; + } +#if defined(__APPLE__) && defined(GHOST_COCOA) + //Cocoa already uses coordinates with y=0 at bottom, and returns inwindow coordinates on mouse moved event + event.x= evt->x = pd->x; + event.y = evt->y = pd->y; +#else + { + int cx, cy; + GHOST_ScreenToClient(win->ghostwin, pd->x, pd->y, &cx, &cy); event.x= evt->x= cx; event.y= evt->y= (win->sizey-1) - cy; + } #endif + // Use prevx/prevy so we can calculate the delta later + event.prevx= event.x - pd->deltaX; + event.prevy= event.y - pd->deltaY; + update_tablet_data(win, &event); wm_event_add(win, &event); - } + } break; } /* mouse button */ @@ -1777,8 +2093,23 @@ void wm_event_add_ghostevent(wmWindow *win, int type, void *customdata) else event.type= MIDDLEMOUSE; - update_tablet_data(win, &event); - wm_event_add(win, &event); + /* add to other window if event is there (not to both!) */ + owin= wm_event_cursor_other_windows(wm, win, &event); + if(owin) { + wmEvent oevent= *(owin->eventstate); + + oevent.x= event.x; + oevent.y= event.y; + oevent.type= event.type; + oevent.val= event.val; + + update_tablet_data(owin, &oevent); + wm_event_add(owin, &oevent); + } + else { + update_tablet_data(win, &event); + wm_event_add(win, &event); + } break; } @@ -1832,7 +2163,7 @@ void wm_event_add_ghostevent(wmWindow *win, int type, void *customdata) /* if test_break set, it catches this. XXX Keep global for now? */ if(event.type==ESCKEY) G.afbreek= 1; - + wm_event_add(win, &event); break; @@ -1869,6 +2200,7 @@ void wm_event_add_ghostevent(wmWindow *win, int type, void *customdata) 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 05fdb500d9e..776144a7928 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -109,11 +109,13 @@ static void writeBlog(void); static void wm_window_match_init(bContext *C, ListBase *wmlist) { wmWindowManager *wm= G.main->wm.first; - wmWindow *win; + wmWindow *win, *active_win; *wmlist= G.main->wm; G.main->wm.first= G.main->wm.last= NULL; + active_win = CTX_wm_window(C); + /* first wrap up running stuff */ /* code copied from wm_init_exit.c */ for(wm= wmlist->first; wm; wm= wm->id.next) { @@ -129,6 +131,9 @@ static void wm_window_match_init(bContext *C, ListBase *wmlist) } } + /* reset active window */ + CTX_wm_window_set(C, active_win); + ED_editors_exit(C); return; @@ -279,9 +284,10 @@ void WM_read_file(bContext *C, char *name, ReportList *reports) // refresh_interface_font(); CTX_wm_window_set(C, NULL); /* exits queues */ - +#ifndef DISABLE_PYTHON /* run any texts that were loaded in and flagged as modules */ BPY_load_user_modules(C); +#endif } else if(retval==1) BKE_write_undo(C, "Import file"); @@ -369,11 +375,11 @@ void read_Blog(void) G.recent_files.first = G.recent_files.last = NULL; /* read list of recent opend files from .Blog to memory */ - for (l= lines, num= 0; l && (num<U.recent_files); l= l->next, num++) { + for (l= lines, num= 0; l && (num<U.recent_files); l= l->next) { line = l->link; - if (!BLI_streq(line, "")) { + if (line[0] && BLI_exists(line)) { if (num==0) - strcpy(G.sce, line); + strcpy(G.sce, line); /* note: this seems highly dodgy since the file isnt actually read. please explain. - campbell */ recent = (RecentFile*)MEM_mallocN(sizeof(RecentFile),"RecentFile"); BLI_addtail(&(G.recent_files), recent); @@ -381,6 +387,7 @@ void read_Blog(void) recent->filename[0] = '\0'; strcpy(recent->filename, line); + num++; } } diff --git a/source/blender/windowmanager/intern/wm_gesture.c b/source/blender/windowmanager/intern/wm_gesture.c index b95d171c1b0..47d8c8d9831 100644 --- a/source/blender/windowmanager/intern/wm_gesture.c +++ b/source/blender/windowmanager/intern/wm_gesture.c @@ -26,9 +26,6 @@ * ***** END GPL LICENSE BLOCK ***** */ -#define _USE_MATH_DEFINES -#include <math.h> - #include "DNA_screen_types.h" #include "DNA_vec_types.h" #include "DNA_userdef_types.h" @@ -37,6 +34,9 @@ #include "MEM_guardedalloc.h" #include "BLI_blenlib.h" +#include "BLI_editVert.h" /* lasso tessellation */ +#include "BLI_math.h" +#include "BLI_scanfill.h" /* lasso tessellation */ #include "BKE_context.h" #include "BKE_utildefines.h" @@ -89,10 +89,11 @@ wmGesture *WM_gesture_new(bContext *C, wmEvent *event, int type) } else if (ELEM(type, WM_GESTURE_LINES, WM_GESTURE_LASSO)) { short *lasso; - gesture->customdata= lasso= MEM_callocN(2*sizeof(short)*WM_LASSO_MAX_POINTS, "lasso points"); + gesture->customdata= lasso= MEM_callocN(2*sizeof(short)*WM_LASSO_MIN_POINTS, "lasso points"); lasso[0] = event->x - sx; lasso[1] = event->y - sy; gesture->points= 1; + gesture->size = WM_LASSO_MIN_POINTS; } return gesture; @@ -100,11 +101,24 @@ wmGesture *WM_gesture_new(bContext *C, wmEvent *event, int type) void WM_gesture_end(bContext *C, wmGesture *gesture) { - BLI_remlink(&CTX_wm_window(C)->gesture, gesture); + wmWindow *win= CTX_wm_window(C); + + if(win->tweak==gesture) + win->tweak= NULL; + BLI_remlink(&win->gesture, gesture); MEM_freeN(gesture->customdata); MEM_freeN(gesture); } +void WM_gestures_remove(bContext *C) +{ + wmWindow *win= CTX_wm_window(C); + + while(win->gesture.first) + WM_gesture_end(C, win->gesture.first); +} + + /* tweak and line gestures */ #define TWEAK_THRESHOLD 10 int wm_gesture_evaluate(bContext *C, wmGesture *gesture) @@ -149,8 +163,18 @@ static void wm_gesture_draw_rect(wmWindow *win, wmGesture *gt) { rcti *rect= (rcti *)gt->customdata; + glEnable(GL_BLEND); + glColor4f(1.0, 1.0, 1.0, 0.05); + glBegin(GL_QUADS); + glVertex2s(rect->xmax, rect->ymin); + glVertex2s(rect->xmax, rect->ymax); + glVertex2s(rect->xmin, rect->ymax); + glVertex2s(rect->xmin, rect->ymin); + glEnd(); + glDisable(GL_BLEND); + glEnable(GL_LINE_STIPPLE); - glColor3ub(0, 0, 0); + glColor3ub(96, 96, 96); glLineStipple(1, 0xCCCC); sdrawbox(rect->xmin, rect->ymin, rect->xmax, rect->ymax); glColor3ub(255, 255, 255); @@ -164,7 +188,7 @@ static void wm_gesture_draw_line(wmWindow *win, wmGesture *gt) rcti *rect= (rcti *)gt->customdata; glEnable(GL_LINE_STIPPLE); - glColor3ub(0, 0, 0); + glColor3ub(96, 96, 96); glLineStipple(1, 0xAAAA); sdrawline(rect->xmin, rect->ymin, rect->xmax, rect->ymax); glColor3ub(255, 255, 255); @@ -181,8 +205,13 @@ static void wm_gesture_draw_circle(wmWindow *win, wmGesture *gt) glTranslatef((float)rect->xmin, (float)rect->ymin, 0.0f); + glEnable(GL_BLEND); + glColor4f(1.0, 1.0, 1.0, 0.05); + glutil_draw_filled_arc(0.0, M_PI*2.0, rect->xmax, 40); + glDisable(GL_BLEND); + glEnable(GL_LINE_STIPPLE); - glColor3ub(0, 0, 0); + glColor3ub(96, 96, 96); glLineStipple(1, 0xAAAA); glutil_draw_lined_arc(0.0, M_PI*2.0, rect->xmax, 40); glColor3ub(255, 255, 255); @@ -194,15 +223,56 @@ static void wm_gesture_draw_circle(wmWindow *win, wmGesture *gt) } +static void draw_filled_lasso(wmGesture *gt) +{ + EditVert *v=NULL, *lastv=NULL, *firstv=NULL; + EditEdge *e; + EditFace *efa; + short *lasso= (short *)gt->customdata; + int i; + + for (i=0; i<gt->points; i++, lasso+=2) { + float co[3] = {(float)lasso[0], (float)lasso[1], 0.f}; + + v = BLI_addfillvert(co); + if (lastv) + e = BLI_addfilledge(lastv, v); + lastv = v; + if (firstv==NULL) firstv = v; + } + + /* highly unlikely this will fail, but could crash if (gt->points == 0) */ + if(firstv) { + BLI_addfilledge(firstv, v); + BLI_edgefill(0, 0); + + glEnable(GL_BLEND); + glColor4f(1.0, 1.0, 1.0, 0.05); + glBegin(GL_TRIANGLES); + for (efa = fillfacebase.first; efa; efa=efa->next) { + glVertex2f(efa->v1->co[0], efa->v1->co[1]); + glVertex2f(efa->v2->co[0], efa->v2->co[1]); + glVertex2f(efa->v3->co[0], efa->v3->co[1]); + } + glEnd(); + glDisable(GL_BLEND); + + BLI_end_edgefill(); + } +} + static void wm_gesture_draw_lasso(wmWindow *win, wmGesture *gt) { short *lasso= (short *)gt->customdata; int i; + + draw_filled_lasso(gt); glEnable(GL_LINE_STIPPLE); - glColor3ub(0, 0, 0); + glColor3ub(96, 96, 96); glLineStipple(1, 0xAAAA); glBegin(GL_LINE_STRIP); + lasso= (short *)gt->customdata; for(i=0; i<gt->points; i++, lasso+=2) glVertex2sv(lasso); if(gt->type==WM_GESTURE_LASSO) @@ -228,7 +298,7 @@ static void wm_gesture_draw_cross(wmWindow *win, wmGesture *gt) rcti *rect= (rcti *)gt->customdata; glEnable(GL_LINE_STIPPLE); - glColor3ub(0, 0, 0); + glColor3ub(96, 96, 96); glLineStipple(1, 0xCCCC); sdrawline(rect->xmin - win->sizex, rect->ymin, rect->xmin + win->sizex, rect->ymin); sdrawline(rect->xmin, rect->ymin - win->sizey, rect->xmin, rect->ymin + win->sizey); @@ -281,3 +351,4 @@ void wm_gesture_tag_redraw(bContext *C) ED_region_tag_redraw(ar); } + diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c index 6997bcaf309..93612430967 100644 --- a/source/blender/windowmanager/intern/wm_init_exit.c +++ b/source/blender/windowmanager/intern/wm_init_exit.c @@ -106,9 +106,9 @@ static void wm_free_reports(bContext *C) /* only called once, for startup */ -void WM_init(bContext *C) +void WM_init(bContext *C, int argc, char **argv) { - + if (!G.background) { wm_ghost_init(C); /* note: it assigns C to ghost! */ wm_init_cursor_data(); @@ -131,7 +131,21 @@ void WM_init(bContext *C) /* get the default database, plus a wm */ WM_read_homefile(C, NULL); - + + /* note: there is a bug where python needs initializing before loading the + * .B25.blend because it may contain PyDrivers. It also needs to be after + * initializing space types and other internal data. + * + * However cant redo this at the moment. Solution is to load python + * before WM_read_homefile() or make py-drivers check if python is running. + * Will try fix when the crash can be repeated. - campbell. */ + +#ifndef DISABLE_PYTHON + BPY_set_context(C); /* necessary evil */ + BPY_start_python(argc, argv); + BPY_load_user_modules(C); +#endif + wm_init_reports(C); /* reports cant be initialized before the wm */ if (!G.background) { @@ -213,6 +227,7 @@ void WM_exit(bContext *C) } } wm_operatortype_free(); + wm_dropbox_free(); WM_menutype_free(); /* all non-screen and non-space stuff editors did, like editmode */ diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c index 447a7ecb92f..24a66883ef7 100644 --- a/source/blender/windowmanager/intern/wm_keymap.c +++ b/source/blender/windowmanager/intern/wm_keymap.c @@ -57,6 +57,12 @@ /* ********************* key config ***********************/ +static void keymap_properties_set(wmKeyMapItem *kmi) +{ + WM_operator_properties_alloc(&(kmi->ptr), &(kmi->properties), kmi->idname); + WM_operator_properties_sanitize(kmi->ptr); +} + void WM_keymap_properties_reset(wmKeyMapItem *kmi) { WM_operator_properties_free(kmi->ptr); @@ -65,12 +71,7 @@ void WM_keymap_properties_reset(wmKeyMapItem *kmi) 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); + keymap_properties_set(kmi); } wmKeyConfig *WM_keyconfig_add(wmWindowManager *wm, char *idname) @@ -84,6 +85,27 @@ wmKeyConfig *WM_keyconfig_add(wmWindowManager *wm, char *idname) return keyconf; } +wmKeyConfig *WM_keyconfig_add_user(wmWindowManager *wm, char *idname) +{ + wmKeyConfig *keyconf = WM_keyconfig_add(wm, idname); + + keyconf->flag |= KEYCONF_USER; + + return keyconf; +} + +void WM_keyconfig_remove(wmWindowManager *wm, wmKeyConfig *keyconf) +{ + if (keyconf) { + if (BLI_streq(U.keyconfigstr, keyconf->idname)) { + BLI_strncpy(U.keyconfigstr, wm->defaultconf->idname, sizeof(U.keyconfigstr)); + } + + BLI_remlink(&wm->keyconfigs, keyconf); + WM_keyconfig_free(keyconf); + } +} + void WM_keyconfig_free(wmKeyConfig *keyconf) { wmKeyMap *km; @@ -397,7 +419,7 @@ char *WM_keymap_item_to_string(wmKeyMapItem *kmi, char *str, int len) return str; } -static wmKeyMapItem *wm_keymap_item_find_handlers(const bContext *C, ListBase *handlers, const char *opname, int opcontext, IDProperty *properties, int compare_props, wmKeyMap **keymap_r) +static wmKeyMapItem *wm_keymap_item_find_handlers(const bContext *C, ListBase *handlers, const char *opname, int opcontext, IDProperty *properties, int compare_props, int hotkey, wmKeyMap **keymap_r) { wmWindowManager *wm= CTX_wm_manager(C); wmEventHandler *handler; @@ -411,6 +433,10 @@ static wmKeyMapItem *wm_keymap_item_find_handlers(const bContext *C, ListBase *h if(keymap && (!keymap->poll || keymap->poll((bContext*)C))) { for(kmi=keymap->items.first; kmi; kmi=kmi->next) { if(strcmp(kmi->idname, opname) == 0 && WM_key_event_string(kmi->type)[0]) { + if (hotkey) + if (!ISHOTKEY(kmi->type)) + continue; + if(compare_props) { if(kmi->ptr && IDP_EqualsProperties(properties, kmi->ptr->data)) { if(keymap_r) *keymap_r= keymap; @@ -426,10 +452,12 @@ static wmKeyMapItem *wm_keymap_item_find_handlers(const bContext *C, ListBase *h } } + /* ensure un-initialized keymap is never used */ + if(keymap_r) *keymap_r= NULL; return NULL; } -static wmKeyMapItem *wm_keymap_item_find_props(const bContext *C, const char *opname, int opcontext, IDProperty *properties, int compare_props, wmKeyMap **keymap_r) +static wmKeyMapItem *wm_keymap_item_find_props(const bContext *C, const char *opname, int opcontext, IDProperty *properties, int compare_props, int hotkey, wmKeyMap **keymap_r) { wmWindow *win= CTX_wm_window(C); ScrArea *sa= CTX_wm_area(C); @@ -438,11 +466,11 @@ static wmKeyMapItem *wm_keymap_item_find_props(const bContext *C, const char *op /* look into multiple handler lists to find the item */ if(win) - found= wm_keymap_item_find_handlers(C, &win->handlers, opname, opcontext, properties, compare_props, keymap_r); + found= wm_keymap_item_find_handlers(C, &win->handlers, opname, opcontext, properties, compare_props, hotkey, keymap_r); if(sa && found==NULL) - found= wm_keymap_item_find_handlers(C, &sa->handlers, opname, opcontext, properties, compare_props, keymap_r); + found= wm_keymap_item_find_handlers(C, &sa->handlers, opname, opcontext, properties, compare_props, hotkey, keymap_r); if(found==NULL) { if(ELEM(opcontext, WM_OP_EXEC_REGION_WIN, WM_OP_INVOKE_REGION_WIN)) { @@ -453,31 +481,31 @@ static wmKeyMapItem *wm_keymap_item_find_props(const bContext *C, const char *op break; if(ar) - found= wm_keymap_item_find_handlers(C, &ar->handlers, opname, opcontext, properties, compare_props, keymap_r); + found= wm_keymap_item_find_handlers(C, &ar->handlers, opname, opcontext, properties, hotkey, compare_props, keymap_r); } } else { if(ar) - found= wm_keymap_item_find_handlers(C, &ar->handlers, opname, opcontext, properties, compare_props, keymap_r); + found= wm_keymap_item_find_handlers(C, &ar->handlers, opname, opcontext, properties, hotkey, compare_props, keymap_r); } } return found; } -static wmKeyMapItem *wm_keymap_item_find(const bContext *C, const char *opname, int opcontext, IDProperty *properties, wmKeyMap **keymap_r) +static wmKeyMapItem *wm_keymap_item_find(const bContext *C, const char *opname, int opcontext, IDProperty *properties, int hotkey, wmKeyMap **keymap_r) { - wmKeyMapItem *found= wm_keymap_item_find_props(C, opname, opcontext, properties, 1, keymap_r); + wmKeyMapItem *found= wm_keymap_item_find_props(C, opname, opcontext, properties, 1, hotkey, keymap_r); if(!found) - found= wm_keymap_item_find_props(C, opname, opcontext, properties, 0, keymap_r); + found= wm_keymap_item_find_props(C, opname, opcontext, properties, 0, hotkey, keymap_r); return found; } char *WM_key_event_operator_string(const bContext *C, const char *opname, int opcontext, IDProperty *properties, char *str, int len) { - wmKeyMapItem *kmi= wm_keymap_item_find(C, opname, opcontext, properties, NULL); + wmKeyMapItem *kmi= wm_keymap_item_find(C, opname, opcontext, properties, 0, NULL); if(kmi) { WM_keymap_item_to_string(kmi, str, len); @@ -487,9 +515,9 @@ 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) +int WM_key_event_operator_id(const bContext *C, const char *opname, int opcontext, IDProperty *properties, int hotkey, wmKeyMap **keymap_r) { - wmKeyMapItem *kmi= wm_keymap_item_find(C, opname, opcontext, properties, keymap_r); + wmKeyMapItem *kmi= wm_keymap_item_find(C, opname, opcontext, properties, hotkey, keymap_r); if(kmi) return kmi->id; @@ -660,12 +688,7 @@ void WM_keymap_restore_item_to_default(bContext *C, wmKeyMap *keymap, wmKeyMapIt } if (km) { - wmKeyMapItem *orig; - - for (orig = km->items.first; orig; orig = orig->next) { - if (orig->id == kmi->id) - break; - } + wmKeyMapItem *orig = WM_keymap_item_find_id(km, kmi->id); if (orig) { if(strcmp(orig->idname, kmi->idname) != 0) { @@ -708,8 +731,9 @@ wmKeyMapItem *WM_keymap_item_find_id(wmKeyMap *keymap, int id) wmKeyMapItem *kmi; for (kmi=keymap->items.first; kmi; kmi=kmi->next) { - if (kmi->id == id) + if (kmi->id == id) { return kmi; + } } return NULL; @@ -747,6 +771,7 @@ wmKeyMap *WM_keymap_guess_opname(const bContext *C, char *opname) else if (strstr(opname, "OBJECT_OT")) { km = WM_keymap_find_all(C, "Object Mode", 0, 0); } + /* Editing Modes */ else if (strstr(opname, "MESH_OT")) { @@ -848,5 +873,34 @@ wmKeyMap *WM_keymap_guess_opname(const bContext *C, char *opname) km = WM_keymap_find_all(C, "Console", sl->spacetype, 0); } + /* Transform */ + else if (strstr(opname, "TRANSFORM_OT")) { + + /* check for relevant editor */ + switch(sl->spacetype) { + case SPACE_VIEW3D: + km = WM_keymap_find_all(C, "3D View", sl->spacetype, 0); + break; + case SPACE_IPO: + km = WM_keymap_find_all(C, "Graph Editor", sl->spacetype, 0); + break; + case SPACE_ACTION: + km = WM_keymap_find_all(C, "Dopesheet", sl->spacetype, 0); + break; + case SPACE_NLA: + km = WM_keymap_find_all(C, "NLA Editor", sl->spacetype, 0); + break; + case SPACE_IMAGE: + km = WM_keymap_find_all(C, "UV Editor", sl->spacetype, 0); + break; + case SPACE_NODE: + km = WM_keymap_find_all(C, "Node Editor", sl->spacetype, 0); + break; + case SPACE_SEQ: + km = WM_keymap_find_all(C, "Sequencer", sl->spacetype, 0); + break; + } + } + return km; } diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index e08bf22fecc..5f3f73edb0e 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -27,8 +27,6 @@ */ #include <float.h> -#define _USE_MATH_DEFINES -#include <math.h> #include <string.h> #include <ctype.h> #include <stdio.h> @@ -42,10 +40,13 @@ #include "MEM_guardedalloc.h" +#include "BLF_api.h" + #include "PIL_time.h" #include "BLI_blenlib.h" #include "BLI_dynstr.h" /*for WM_operator_pystring */ +#include "BLI_math.h" #include "BLO_readfile.h" @@ -345,8 +346,11 @@ wmOperatorType *WM_operatortype_append_macro(char *idname, char *name, int flag) ot->modal= wm_macro_modal; ot->cancel= wm_macro_cancel; ot->poll= NULL; + + if(!ot->description) + ot->description= "(undocumented operator)"; - RNA_def_struct_ui_text(ot->srna, ot->name, ot->description ? ot->description:"(undocumented operator)"); // XXX All ops should have a description but for now allow them not to. + RNA_def_struct_ui_text(ot->srna, ot->name, ot->description); // XXX All ops should have a description but for now allow them not to. RNA_def_struct_identifier(ot->srna, ot->idname); BLI_addtail(&global_ops, ot); @@ -368,9 +372,12 @@ void WM_operatortype_append_macro_ptr(void (*opfunc)(wmOperatorType*, void*), vo ot->cancel= wm_macro_cancel; ot->poll= NULL; + if(!ot->description) + ot->description= "(undocumented operator)"; + opfunc(ot, userdata); - RNA_def_struct_ui_text(ot->srna, ot->name, ot->description ? ot->description:"(undocumented operator)"); + RNA_def_struct_ui_text(ot->srna, ot->name, ot->description); RNA_def_struct_identifier(ot->srna, ot->idname); BLI_addtail(&global_ops, ot); @@ -384,8 +391,15 @@ wmOperatorTypeMacro *WM_operatortype_macro_define(wmOperatorType *ot, const char /* do this on first use, since operatordefinitions might have been not done yet */ WM_operator_properties_alloc(&(otmacro->ptr), &(otmacro->properties), idname); + WM_operator_properties_sanitize(otmacro->ptr); BLI_addtail(&ot->macro, otmacro); + + { + wmOperatorType *otsub = WM_operatortype_find(idname, 0); + RNA_def_pointer_runtime(ot->srna, otsub->idname, otsub->srna, + otsub->name, otsub->description); + } return otmacro; } @@ -579,6 +593,30 @@ void WM_operator_properties_alloc(PointerRNA **ptr, IDProperty **properties, con } +void WM_operator_properties_sanitize(PointerRNA *ptr) +{ + RNA_STRUCT_BEGIN(ptr, prop) { + switch(RNA_property_type(prop)) { + case PROP_ENUM: + RNA_def_property_flag(prop, PROP_ENUM_NO_CONTEXT); + break; + case PROP_POINTER: + { + StructRNA *ptype= RNA_property_pointer_type(ptr, prop); + + /* recurse into operator properties */ + if (RNA_struct_is_a(ptype, &RNA_OperatorProperties)) { + PointerRNA opptr = RNA_property_pointer_get(ptr, prop); + WM_operator_properties_sanitize(&opptr); + } + break; + } + default: + break; + } + } + RNA_STRUCT_END; +} void WM_operator_properties_free(PointerRNA *ptr) { @@ -595,27 +633,15 @@ void WM_operator_properties_free(PointerRNA *ptr) /* invoke callback, uses enum property named "type" */ int WM_menu_invoke(bContext *C, wmOperator *op, wmEvent *event) { - PropertyRNA *prop; + PropertyRNA *prop= op->type->prop; uiPopupMenu *pup; uiLayout *layout; - prop= RNA_struct_find_property(op->ptr, "type"); - - if(!prop) { - RNA_STRUCT_BEGIN(op->ptr, findprop) { - if(RNA_property_type(findprop) == PROP_ENUM) { - prop= findprop; - break; - } - } - RNA_STRUCT_END; - } - if(prop==NULL) { - printf("WM_menu_invoke: %s has no \"type\" enum property\n", op->type->idname); + printf("WM_menu_invoke: %s has no enum property set\n", op->type->idname); } else if (RNA_property_type(prop) != PROP_ENUM) { - printf("WM_menu_invoke: %s \"type\" is not an enum property\n", op->type->idname); + printf("WM_menu_invoke: %s \"%s\" is not an enum property\n", op->type->idname, RNA_property_identifier(prop)); } else if (RNA_property_is_set(op->ptr, RNA_property_identifier(prop))) { return op->type->exec(C, op); @@ -630,6 +656,92 @@ int WM_menu_invoke(bContext *C, wmOperator *op, wmEvent *event) return OPERATOR_CANCELLED; } + +/* generic enum search invoke popup */ +static void operator_enum_search_cb(const struct bContext *C, void *arg_ot, char *str, uiSearchItems *items) +{ + wmOperatorType *ot = (wmOperatorType *)arg_ot; + PropertyRNA *prop= ot->prop; + + if(prop==NULL) { + printf("WM_enum_search_invoke: %s has no enum property set\n", ot->idname); + } + else if (RNA_property_type(prop) != PROP_ENUM) { + printf("WM_enum_search_invoke: %s \"%s\" is not an enum property\n", ot->idname, RNA_property_identifier(prop)); + } + else { + PointerRNA ptr; + + EnumPropertyItem *item, *item_array; + int free; + + RNA_pointer_create(NULL, ot->srna, NULL, &ptr); + RNA_property_enum_items((bContext *)C, &ptr, prop, &item_array, NULL, &free); + + for(item= item_array; item->identifier; item++) { + /* note: need to give the intex rather then the dientifier because the enum can be freed */ + if(BLI_strcasestr(item->name, str)) + if(0==uiSearchItemAdd(items, item->name, SET_INT_IN_POINTER(item->value), 0)) + break; + } + + if(free) + MEM_freeN(item_array); + } +} + +static void operator_enum_call_cb(struct bContext *C, void *arg1, void *arg2) +{ + wmOperatorType *ot= arg1; + + if(ot) { + PointerRNA props_ptr; + WM_operator_properties_create_ptr(&props_ptr, ot); + RNA_property_enum_set(&props_ptr, ot->prop, GET_INT_FROM_POINTER(arg2)); + WM_operator_name_call(C, ot->idname, WM_OP_EXEC_DEFAULT, &props_ptr); + WM_operator_properties_free(&props_ptr); + } +} + +static uiBlock *wm_enum_search_menu(bContext *C, ARegion *ar, void *arg_op) +{ + static char search[256]= ""; + wmEvent event; + wmWindow *win= CTX_wm_window(C); + uiBlock *block; + uiBut *but; + wmOperator *op= (wmOperator *)arg_op; + + block= uiBeginBlock(C, ar, "_popup", UI_EMBOSS); + uiBlockSetFlag(block, UI_BLOCK_LOOP|UI_BLOCK_RET_1|UI_BLOCK_MOVEMOUSE_QUIT); + + //uiDefBut(block, LABEL, 0, op->type->name, 10, 10, 180, 19, NULL, 0.0, 0.0, 0, 0, ""); // ok, this isnt so easy... + but= uiDefSearchBut(block, search, 0, ICON_VIEWZOOM, 256, 10, 10, 180, 19, 0, 0, ""); + uiButSetSearchFunc(but, operator_enum_search_cb, op->type, operator_enum_call_cb, NULL); + + /* fake button, it holds space for search items */ + uiDefBut(block, LABEL, 0, "", 10, 10 - uiSearchBoxhHeight(), 180, uiSearchBoxhHeight(), NULL, 0, 0, 0, 0, NULL); + + uiPopupBoundsBlock(block, 6.0f, 0, -20); /* move it downwards, mouse over button */ + uiEndBlock(C, block); + + event= *(win->eventstate); /* XXX huh huh? make api call */ + event.type= EVT_BUT_OPEN; + event.val= KM_PRESS; + event.customdata= but; + event.customdatafree= FALSE; + wm_event_add(win, &event); + + return block; +} + + +int WM_enum_search_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + uiPupBlock(C, wm_enum_search_menu, op); + return OPERATOR_CANCELLED; +} + /* Can't be used as an invoke directly, needs message arg (can be NULL) */ int WM_operator_confirm_message(bContext *C, wmOperator *op, char *message) { @@ -669,7 +781,7 @@ int WM_operator_filesel(bContext *C, wmOperator *op, wmEvent *event) } /* default properties for fileselect */ -void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type) +void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type, short action) { PropertyRNA *prop; @@ -677,6 +789,11 @@ void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type) RNA_def_string_file_name(ot->srna, "filename", "", FILE_MAX, "File Name", "Name of the file."); RNA_def_string_dir_path(ot->srna, "directory", "", FILE_MAX, "Directory", "Directory of the file."); + if (action == FILE_SAVE) { + prop= RNA_def_boolean(ot->srna, "check_existing", 1, "Check Existing", "Check and warn on overwriting existing files"); + RNA_def_property_flag(prop, PROP_HIDDEN); + } + prop= RNA_def_boolean(ot->srna, "filter_blender", (filter & BLENDERFILE), "Filter .blend files", ""); RNA_def_property_flag(prop, PROP_HIDDEN); prop= RNA_def_boolean(ot->srna, "filter_image", (filter & IMAGEFILE), "Filter image files", ""); @@ -934,13 +1051,49 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *arg_unuse uiStyle *style= U.uistyles.first; struct RecentFile *recent; int i; + +#ifdef NAN_BUILDINFO + int ver_width, rev_width; + char *version_str = NULL; + char *revision_str = NULL; + char version_buf[128]; + char revision_buf[128]; + extern char * build_rev; + char *cp; + + version_str = &version_buf[0]; + revision_str = &revision_buf[0]; + + sprintf(version_str, "%d.%02d.%d", BLENDER_VERSION/100, BLENDER_VERSION%100, BLENDER_SUBVERSION); + sprintf(revision_str, "r%s", build_rev); + + /* here on my system I get ugly double quotes around the revision number. + * if so, clip it off: */ + cp = strchr(revision_str, '"'); + if (cp) { + memmove(cp, cp+1, strlen(cp+1)); + cp = strchr(revision_str, '"'); + if (cp) + *cp = 0; + } + BLF_size(style->widgetlabel.points, U.dpi); + ver_width = BLF_width(version_str)+5; + rev_width = BLF_width(revision_str)+5; +#endif //NAN_BUILDINFO + block= uiBeginBlock(C, ar, "_popup", UI_EMBOSS); uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN|UI_BLOCK_RET_1); but= uiDefBut(block, BUT_IMAGE, 0, "", 0, 10, 501, 282, NULL, 0.0, 0.0, 0, 0, ""); uiButSetFunc(but, wm_block_splash_close, block, NULL); +#ifdef NAN_BUILDINFO + uiDefBut(block, LABEL, 0, version_str, 500-ver_width, 282-24, ver_width, 20, NULL, 0, 0, 0, 0, NULL); + uiDefBut(block, LABEL, 0, revision_str, 500-rev_width, 282-36, rev_width, 20, NULL, 0, 0, 0, 0, NULL); +#endif //NAN_BUILDINFO + + uiBlockSetEmboss(block, UI_EMBOSSP); layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_MENU, 10, 10, 480, 110, style); @@ -955,7 +1108,7 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *arg_unuse 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); + uiItemL(col, "", 0); col = uiLayoutColumn(split, 0); uiItemL(col, "Recent", 0); @@ -966,7 +1119,7 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *arg_unuse uiItemStringO(col, display_name, ICON_FILE_BLEND, "WM_OT_open_mainfile", "path", recent->filename); } - uiItemS(col); + uiItemL(col, "", 0); uiCenteredBoundsBlock(block, 0.0f); uiEndBlock(C, block); @@ -1114,6 +1267,18 @@ static void WM_OT_call_menu(wmOperatorType *ot) /* ************ window / screen operator definitions ************** */ +/* this poll functions is needed in place of WM_operator_winactive + * while it crashes on full screen */ +static int wm_operator_winactive_normal(bContext *C) +{ + wmWindow *win= CTX_wm_window(C); + + if(win==NULL || win->screen==NULL || win->screen->full != SCREENNORMAL) + return 0; + + return 1; +} + static void WM_OT_window_duplicate(wmOperatorType *ot) { ot->name= "Duplicate Window"; @@ -1121,7 +1286,7 @@ static void WM_OT_window_duplicate(wmOperatorType *ot) ot->description="Duplicate the current Blender window."; ot->exec= wm_window_duplicate_op; - ot->poll= WM_operator_winactive; + ot->poll= wm_operator_winactive_normal; } static void WM_OT_save_homefile(wmOperatorType *ot) @@ -1197,7 +1362,7 @@ static void WM_OT_open_mainfile(wmOperatorType *ot) ot->exec= wm_open_mainfile_exec; ot->poll= WM_operator_winactive; - WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER); + WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER, FILE_OPEN); RNA_def_boolean(ot->srna, "load_ui", 1, "Load UI", "Load user interface setup in the .blend file."); } @@ -1225,7 +1390,7 @@ static short wm_link_append_flag(wmOperator *op) if(RNA_boolean_get(op->ptr, "active_layer")) flag |= FILE_ACTIVELAY; if(RNA_boolean_get(op->ptr, "relative_paths")) flag |= FILE_STRINGCODE; if(RNA_boolean_get(op->ptr, "link")) flag |= FILE_LINK; - + if(RNA_boolean_get(op->ptr, "instance_groups")) flag |= FILE_GROUP_INSTANCE; return flag; } @@ -1241,9 +1406,6 @@ static void wm_link_make_library_local(Main *main, const char *libname) /* make local */ if(lib) { all_local(lib, 1); - /* important we unset, otherwise these object wont - * link into other scenes from this blend file */ - flag_all_listbases_ids(LIB_APPEND_TAG, 0); } } @@ -1301,9 +1463,11 @@ static int wm_link_append_exec(bContext *C, wmOperator *op) flag = wm_link_append_flag(op); - /* tag everything, all untagged data can be made local */ - if((flag & FILE_LINK)==0) - flag_all_listbases_ids(LIB_APPEND_TAG, 1); + /* tag everything, all untagged data can be made local + * its also generally useful to know what is new + * + * take extra care flag_all_listbases_ids(LIB_LINK_TAG, 0) is called after! */ + flag_all_listbases_ids(LIB_PRE_EXISTING, 1); /* here appending/linking starts */ mainl = BLO_library_append_begin(C, &bh, libname); @@ -1326,6 +1490,10 @@ static int wm_link_append_exec(bContext *C, wmOperator *op) if((flag & FILE_LINK)==0) wm_link_make_library_local(bmain, libname); + /* important we unset, otherwise these object wont + * link into other scenes from this blend file */ + flag_all_listbases_ids(LIB_PRE_EXISTING, 0); + /* recreate dependency graph to include new objects */ DAG_scene_sort(scene); DAG_ids_flush_update(0); @@ -1352,11 +1520,12 @@ static void WM_OT_link_append(wmOperatorType *ot) ot->flag |= OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_LOADLIB); + WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_LOADLIB, FILE_OPEN); RNA_def_boolean(ot->srna, "link", 1, "Link", "Link the objects or datablocks rather than appending."); RNA_def_boolean(ot->srna, "autoselect", 1, "Select", "Select the linked objects."); RNA_def_boolean(ot->srna, "active_layer", 1, "Active Layer", "Put the linked objects on the active layer."); + RNA_def_boolean(ot->srna, "instance_groups", 1, "Instance Groups", "Create instances for each group as a DupliGroup."); RNA_def_boolean(ot->srna, "relative_paths", 1, "Relative Paths", "Store the library path as a relative path to current .blend file."); RNA_def_collection_runtime(ot->srna, "files", &RNA_OperatorFileListElement, "Files", ""); @@ -1436,7 +1605,7 @@ static void WM_OT_recover_auto_save(wmOperatorType *ot) ot->invoke= wm_recover_auto_save_invoke; ot->poll= WM_operator_winactive; - WM_operator_properties_filesel(ot, BLENDERFILE, FILE_BLENDER); + WM_operator_properties_filesel(ot, BLENDERFILE, FILE_BLENDER, FILE_OPEN); } /* *************** save file as **************** */ @@ -1496,10 +1665,10 @@ static int wm_save_as_mainfile_exec(bContext *C, wmOperator *op) fileflags= G.fileflags; /* set compression flag */ - if(RNA_boolean_get(op->ptr, "compress")) - fileflags |= G_FILE_COMPRESS; - else - fileflags &= ~G_FILE_COMPRESS; + if(RNA_boolean_get(op->ptr, "compress")) fileflags |= G_FILE_COMPRESS; + else fileflags &= ~G_FILE_COMPRESS; + if(RNA_boolean_get(op->ptr, "relative_remap")) fileflags |= G_FILE_RELATIVE_REMAP; + else fileflags &= ~G_FILE_RELATIVE_REMAP; WM_write_file(C, path, fileflags, op->reports); @@ -1518,8 +1687,9 @@ static void WM_OT_save_as_mainfile(wmOperatorType *ot) ot->exec= wm_save_as_mainfile_exec; ot->poll= WM_operator_winactive; - WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER); + WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER, FILE_SAVE); RNA_def_boolean(ot->srna, "compress", 0, "Compress", "Write compressed .blend file."); + RNA_def_boolean(ot->srna, "relative_remap", 0, "Remap Relative", "Remap relative paths when saving in a different directory."); } /* *************** save file directly ******** */ @@ -1527,7 +1697,8 @@ static void WM_OT_save_as_mainfile(wmOperatorType *ot) static int wm_save_mainfile_invoke(bContext *C, wmOperator *op, wmEvent *event) { char name[FILE_MAX]; - + int check_existing=1; + /* cancel if no active window */ if (CTX_wm_window(C) == NULL) return OPERATOR_CANCELLED; @@ -1538,10 +1709,19 @@ static int wm_save_mainfile_invoke(bContext *C, wmOperator *op, wmEvent *event) untitled(name); RNA_string_set(op->ptr, "path", name); - if (G.save_over) - uiPupMenuSaveOver(C, op, name); - else + if (RNA_struct_find_property(op->ptr, "check_existing")) + if (RNA_boolean_get(op->ptr, "check_existing")==0) + check_existing = 0; + + if (G.save_over) { + if (check_existing) + uiPupMenuSaveOver(C, op, name); + else { + WM_operator_call(C, op); + } + } else { WM_event_add_fileselect(C, op); + } return OPERATOR_RUNNING_MODAL; } @@ -1556,8 +1736,9 @@ static void WM_OT_save_mainfile(wmOperatorType *ot) ot->exec= wm_save_as_mainfile_exec; ot->poll= NULL; - WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER); + WM_operator_properties_filesel(ot, FOLDERFILE|BLENDERFILE, FILE_BLENDER, FILE_SAVE); RNA_def_boolean(ot->srna, "compress", 0, "Compress", "Write compressed .blend file."); + RNA_def_boolean(ot->srna, "relative_remap", 0, "Remap Relative", "Remap relative paths when saving in a different directory."); } @@ -1995,7 +2176,6 @@ static void tweak_gesture_modal(bContext *C, wmEvent *event) wm_event_add(window, &event); WM_gesture_end(C, gesture); /* frees gesture itself, and unregisters from window */ - window->tweak= NULL; } break; @@ -2005,7 +2185,6 @@ static void tweak_gesture_modal(bContext *C, wmEvent *event) case MIDDLEMOUSE: if(gesture->event_type==event->type) { WM_gesture_end(C, gesture); - window->tweak= NULL; /* when tweak fails we should give the other keymap entries a chance */ event->val= KM_RELEASE; @@ -2014,7 +2193,6 @@ static void tweak_gesture_modal(bContext *C, wmEvent *event) default: if(!ISTIMER(event->type)) { WM_gesture_end(C, gesture); - window->tweak= NULL; } break; } @@ -2027,16 +2205,16 @@ void wm_tweakevent_test(bContext *C, wmEvent *event, int action) if(win->tweak==NULL) { if(CTX_wm_region(C)) { - if(event->val==KM_PRESS) { // pressed + if(event->val==KM_PRESS) { if( ELEM3(event->type, LEFTMOUSE, MIDDLEMOUSE, RIGHTMOUSE) ) win->tweak= WM_gesture_new(C, event, WM_GESTURE_TWEAK); } } } else { - if(action & WM_HANDLER_BREAK) { + /* no tweaks if event was handled */ + if((action & WM_HANDLER_BREAK)) { WM_gesture_end(C, win->tweak); - win->tweak= NULL; } else tweak_gesture_modal(C, event); @@ -2111,17 +2289,23 @@ int WM_gesture_lasso_modal(bContext *C, wmOperator *op, wmEvent *event) wm_gesture_tag_redraw(C); wm_subwindow_getorigin(CTX_wm_window(C), gesture->swinid, &sx, &sy); - if(gesture->points < WM_LASSO_MAX_POINTS) { + + if(gesture->points == gesture->size) { + short *old_lasso = gesture->customdata; + gesture->customdata= MEM_callocN(2*sizeof(short)*(gesture->size + WM_LASSO_MIN_POINTS), "lasso points"); + memcpy(gesture->customdata, old_lasso, 2*sizeof(short)*gesture->size); + gesture->size = gesture->size + WM_LASSO_MIN_POINTS; + MEM_freeN(old_lasso); + printf("realloc\n"); + } + + { short *lasso= gesture->customdata; lasso += 2 * gesture->points; lasso[0] = event->x - sx; lasso[1] = event->y - sy; gesture->points++; } - else { - gesture_lasso_apply(C, op, event->type); - return OPERATOR_FINISHED; - } break; case LEFTMOUSE: @@ -2527,7 +2711,7 @@ static void WM_OT_redraw_timer(wmOperatorType *ot) ot->exec= redraw_timer_exec; ot->poll= WM_operator_winactive; - RNA_def_enum(ot->srna, "type", prop_type_items, 0, "Type", ""); + ot->prop= RNA_def_enum(ot->srna, "type", prop_type_items, 0, "Type", ""); RNA_def_int(ot->srna, "iterations", 10, 1,INT_MAX, "Iterations", "Number of times to redraw", 1,1000); } @@ -2814,9 +2998,9 @@ static EnumPropertyItem *rna_id_itemf(bContext *C, PointerRNA *ptr, int *free, I /* can add more */ EnumPropertyItem *RNA_group_itemf(bContext *C, PointerRNA *ptr, int *free) { - return rna_id_itemf(C, ptr, free, (ID *)CTX_data_main(C)->group.first); + return rna_id_itemf(C, ptr, free, C ? (ID *)CTX_data_main(C)->group.first : NULL); } EnumPropertyItem *RNA_scene_itemf(bContext *C, PointerRNA *ptr, int *free) { - return rna_id_itemf(C, ptr, free, (ID *)CTX_data_main(C)->scene.first); + return rna_id_itemf(C, ptr, free, C ? (ID *)CTX_data_main(C)->scene.first : NULL); } diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index 54f6d58ced4..ed593cb8dcd 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -307,12 +307,14 @@ static void wm_window_add_ghostwindow(wmWindowManager *wm, char *title, wmWindow inital_state += macPrefState; } #endif - + /* Disable AA for now, as GL_SELECT (used for border, lasso, ... select) + doesn't work well when AA is initialized, even if not used. */ ghostwin= GHOST_CreateWindow(g_system, title, win->posx, posy, win->sizex, win->sizey, inital_state, GHOST_kDrawingContextTypeOpenGL, - 0 /* no stereo */); + 0 /* no stereo */, + 0 /* no AA */); if (ghostwin) { @@ -485,6 +487,8 @@ int wm_window_duplicate_op(bContext *C, wmOperator *op) wm_window_copy(C, CTX_wm_window(C)); WM_check(C); + WM_event_add_notifier(C, NC_WINDOW|NA_ADDED, NULL); + return OPERATOR_FINISHED; } @@ -550,6 +554,7 @@ static int ghost_event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr private) bContext *C= private; wmWindowManager *wm= CTX_wm_manager(C); GHOST_TEventType type= GHOST_GetEventType(evt); + int time= GHOST_GetEventTime(evt); if (type == GHOST_kEventQuit) { WM_exit(C); @@ -574,7 +579,7 @@ static int ghost_event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr private) switch(type) { case GHOST_kEventWindowDeactivate: - wm_event_add_ghostevent(win, type, data); + wm_event_add_ghostevent(wm, win, type, time, data); win->active= 0; /* XXX */ break; case GHOST_kEventWindowActivate: @@ -591,19 +596,19 @@ static int ghost_event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr private) kdata.ascii= 0; if (win->eventstate->shift && !query_qual('s')) { kdata.key= GHOST_kKeyLeftShift; - wm_event_add_ghostevent(win, GHOST_kEventKeyUp, &kdata); + wm_event_add_ghostevent(wm, win, GHOST_kEventKeyUp, time, &kdata); } if (win->eventstate->ctrl && !query_qual('c')) { kdata.key= GHOST_kKeyLeftControl; - wm_event_add_ghostevent(win, GHOST_kEventKeyUp, &kdata); + wm_event_add_ghostevent(wm, win, GHOST_kEventKeyUp, time, &kdata); } if (win->eventstate->alt && !query_qual('a')) { kdata.key= GHOST_kKeyLeftAlt; - wm_event_add_ghostevent(win, GHOST_kEventKeyUp, &kdata); + wm_event_add_ghostevent(wm, win, GHOST_kEventKeyUp, time, &kdata); } if (win->eventstate->oskey && !query_qual('C')) { kdata.key= GHOST_kKeyCommand; - wm_event_add_ghostevent(win, GHOST_kEventKeyUp, &kdata); + wm_event_add_ghostevent(wm, win, GHOST_kEventKeyUp, time, &kdata); } /* keymodifier zero, it hangs on hotkeys that open windows otherwise */ win->eventstate->keymodifier= 0; @@ -621,6 +626,8 @@ static int ghost_event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr private) win->eventstate->y= (win->sizey-1) - cy; #endif + win->addmousemove= 1; /* enables highlighted buttons */ + wm_window_make_drawable(C, win); break; } @@ -675,7 +682,7 @@ static int ghost_event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr private) win->sizey= sizey; win->posx= posx; win->posy= posy; - + /* debug prints */ if(0) { state = GHOST_GetWindowState(win->ghostwin); @@ -702,12 +709,34 @@ static int ghost_event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr private) wm_window_make_drawable(C, win); wm_draw_window_clear(win); WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); + WM_event_add_notifier(C, NC_WINDOW|NA_EDITED, NULL); } } break; } + case GHOST_kEventDraggingDropDone: + { + wmEvent event= *(win->eventstate); /* copy last state, like mouse coords */ + + /* make blender drop event with custom data pointing to wm drags */ + event.type= EVT_DROP; + event.custom= EVT_DATA_LISTBASE; + event.customdata= &wm->drags; + + printf("Drop detected\n"); + + /* add drag data to wm for paths: */ + /* need icon type, some dropboxes check for that... see filesel code for this */ + // WM_event_start_drag(C, icon, WM_DRAG_PATH, void *poin, 0.0); + /* void poin should point to string, it makes a copy */ + + wm_event_add(win, &event); + + break; + } + default: - wm_event_add_ghostevent(win, type, data); + wm_event_add_ghostevent(wm, win, type, time, data); break; } diff --git a/source/blender/windowmanager/wm.h b/source/blender/windowmanager/wm.h index 9b888a0e347..14483915083 100644 --- a/source/blender/windowmanager/wm.h +++ b/source/blender/windowmanager/wm.h @@ -59,7 +59,7 @@ void wm_window_keymap(wmKeyConfig *keyconf); void wm_tweakevent_test(bContext *C, wmEvent *event, int action); /* wm_gesture.c */ -#define WM_LASSO_MAX_POINTS 1024 +#define WM_LASSO_MIN_POINTS 1024 void wm_gesture_draw(struct wmWindow *win); int wm_gesture_evaluate(bContext *C, wmGesture *gesture); void wm_gesture_tag_redraw(bContext *C); diff --git a/source/blender/windowmanager/wm_cursors.h b/source/blender/windowmanager/wm_cursors.h index 3d1b49983ed..41772ffc661 100644 --- a/source/blender/windowmanager/wm_cursors.h +++ b/source/blender/windowmanager/wm_cursors.h @@ -47,6 +47,7 @@ enum { CURSOR_STD, CURSOR_NONE, CURSOR_PENCIL, + CURSOR_COPY, }; diff --git a/source/blender/windowmanager/wm_event_system.h b/source/blender/windowmanager/wm_event_system.h index 3d7cb3fbad1..58778c5acbf 100644 --- a/source/blender/windowmanager/wm_event_system.h +++ b/source/blender/windowmanager/wm_event_system.h @@ -64,6 +64,9 @@ typedef struct wmEventHandler { /* fileselect handler re-uses modal operator data */ struct bScreen *filescreen; /* screen it started in, to validate exec */ + /* drop box handler */ + ListBase *dropboxes; + } wmEventHandler; @@ -89,12 +92,16 @@ void wm_event_free_handler (wmEventHandler *handler); /* goes over entire hierarchy: events -> window -> screen -> area -> region */ void wm_event_do_handlers (bContext *C); -void wm_event_add_ghostevent (wmWindow *win, int type, void *customdata); +void wm_event_add_ghostevent (wmWindowManager *wm, wmWindow *win, int type, int time, void *customdata); void wm_event_do_notifiers (bContext *C); /* wm_keymap.c */ +/* wm_dropbox.c */ +void wm_dropbox_free(void); +void wm_drags_check_ops(bContext *C, wmEvent *event); +void wm_drags_draw(bContext *C, wmWindow *win, rcti *rect); #endif /* WM_EVENT_SYSTEM_H */ diff --git a/source/blender/windowmanager/wm_event_types.h b/source/blender/windowmanager/wm_event_types.h index 8179154fc98..be0f5abbc47 100644 --- a/source/blender/windowmanager/wm_event_types.h +++ b/source/blender/windowmanager/wm_event_types.h @@ -39,6 +39,7 @@ #define EVT_DATA_TABLET 1 #define EVT_DATA_GESTURE 2 #define EVT_DATA_TIMER 3 +#define EVT_DATA_LISTBASE 4 /* tablet active, matches GHOST_TTabletMode */ #define EVT_TABLET_NONE 0 @@ -56,9 +57,13 @@ /* only use if you want user option switch possible */ #define ACTIONMOUSE 0x005 #define SELECTMOUSE 0x006 -/* Extra mouse buttons */ + /* Extra mouse buttons */ #define BUTTON4MOUSE 0x007 #define BUTTON5MOUSE 0x008 + /* Extra trackpad gestures */ +#define MOUSEPAN 0x00e +#define MOUSEZOOM 0x00f +#define MOUSEROTATE 0x010 /* defaults from ghost */ #define WHEELUPMOUSE 0x00a #define WHEELDOWNMOUSE 0x00b @@ -67,7 +72,7 @@ #define WHEELOUTMOUSE 0x00d -/* SYSTEM : 0x01x */ +/* SYSTEM : 0x01xx */ #define INPUTCHANGE 0x0103 /* input connected or disconnected */ #define WINDEACTIVATE 0x0104 /* window is deactivated, focus lost */ @@ -202,7 +207,7 @@ #define ISKEYBOARD(event) (event >=' ' && event <=320) /* test whether the event is a mouse button */ -#define ISMOUSE(event) (event >= LEFTMOUSE && event <= WHEELOUTMOUSE) +#define ISMOUSE(event) (event >= LEFTMOUSE && event <= MOUSEROTATE) /* test whether the event is timer event */ #define ISTIMER(event) (event >= TIMER && event <= TIMERAUTOSAVE) @@ -261,6 +266,7 @@ /* event->type */ #define EVT_BUT_OPEN 0x5021 #define EVT_MODAL_MAP 0x5022 +#define EVT_DROP 0x5023 /* NOTE: these defines are saved in keymap files, do not change values but just add new ones */ #define GESTURE_MODAL_CANCEL 1 |