diff --git a/Pixels Composer.yyp b/Pixels Composer.yyp index b351d2d0b..32031349c 100644 --- a/Pixels Composer.yyp +++ b/Pixels Composer.yyp @@ -18,11 +18,12 @@ {"id":{"name":"o_dialog_menubox","path":"objects/o_dialog_menubox/o_dialog_menubox.yy",},"order":1,}, {"id":{"name":"s_node_blend","path":"sprites/s_node_blend/s_node_blend.yy",},"order":7,}, {"id":{"name":"libdlgmodule","path":"extensions/libdlgmodule/libdlgmodule.yy",},"order":2,}, - {"id":{"name":"node_line","path":"scripts/node_line/node_line.yy",},"order":11,}, + {"id":{"name":"node_line","path":"scripts/node_line/node_line.yy",},"order":7,}, {"id":{"name":"s_node_frame","path":"sprites/s_node_frame/s_node_frame.yy",},"order":79,}, {"id":{"name":"node_2d_light","path":"scripts/node_2d_light/node_2d_light.yy",},"order":40,}, {"id":{"name":"s_node_color","path":"sprites/s_node_color/s_node_color.yy",},"order":17,}, {"id":{"name":"s_node_image_gif","path":"sprites/s_node_image_gif/s_node_image_gif.yy",},"order":69,}, + {"id":{"name":"node_VFX_effect_wind","path":"scripts/node_VFX_effect_wind/node_VFX_effect_wind.yy",},"order":7,}, {"id":{"name":"s_node_3d_obj","path":"sprites/s_node_3d_obj/s_node_3d_obj.yy",},"order":114,}, {"id":{"name":"s_node_scale","path":"sprites/s_node_scale/s_node_scale.yy",},"order":45,}, {"id":{"name":"sh_color_picker_value","path":"shaders/sh_color_picker_value/sh_color_picker_value.yy",},"order":37,}, @@ -45,7 +46,7 @@ {"id":{"name":"s_node_alpha_grey","path":"sprites/s_node_alpha_grey/s_node_alpha_grey.yy",},"order":110,}, {"id":{"name":"node_blend","path":"scripts/node_blend/node_blend.yy",},"order":13,}, {"id":{"name":"s_node_level","path":"sprites/s_node_level/s_node_level.yy",},"order":64,}, - {"id":{"name":"node_scatter","path":"scripts/node_scatter/node_scatter.yy",},"order":4,}, + {"id":{"name":"node_scatter","path":"scripts/node_scatter/node_scatter.yy",},"order":3,}, {"id":{"name":"s_node_bloom","path":"sprites/s_node_bloom/s_node_bloom.yy",},"order":104,}, {"id":{"name":"node_image","path":"scripts/node_image/node_image.yy",},"order":0,}, {"id":{"name":"sh_cell_noise","path":"shaders/sh_cell_noise/sh_cell_noise.yy",},"order":0,}, @@ -60,7 +61,7 @@ {"id":{"name":"draw_surface_blend","path":"scripts/draw_surface_blend/draw_surface_blend.yy",},"order":1,}, {"id":{"name":"blurSurface","path":"scripts/blurSurface/blurSurface.yy",},"order":0,}, {"id":{"name":"sh_cell_noise_edge","path":"shaders/sh_cell_noise_edge/sh_cell_noise_edge.yy",},"order":5,}, - {"id":{"name":"node_stripe","path":"scripts/node_stripe/node_stripe.yy",},"order":15,}, + {"id":{"name":"node_stripe","path":"scripts/node_stripe/node_stripe.yy",},"order":11,}, {"id":{"name":"sh_texture_atlas","path":"shaders/sh_texture_atlas/sh_texture_atlas.yy",},"order":0,}, {"id":{"name":"s_node_displace","path":"sprites/s_node_displace/s_node_displace.yy",},"order":83,}, {"id":{"name":"sh_polar","path":"shaders/sh_polar/sh_polar.yy",},"order":31,}, @@ -80,16 +81,19 @@ {"id":{"name":"sh_level_selector","path":"shaders/sh_level_selector/sh_level_selector.yy",},"order":28,}, {"id":{"name":"string_eval","path":"scripts/string_eval/string_eval.yy",},"order":0,}, {"id":{"name":"globals","path":"scripts/globals/globals.yy",},"order":1,}, + {"id":{"name":"s_node_vfx_repel","path":"sprites/s_node_vfx_repel/s_node_vfx_repel.yy",},"order":123,}, {"id":{"name":"s_node_noise_perlin","path":"sprites/s_node_noise_perlin/s_node_noise_perlin.yy",},"order":57,}, {"id":{"name":"s_node_dithering","path":"sprites/s_node_dithering/s_node_dithering.yy",},"order":82,}, {"id":{"name":"node_normal_light","path":"scripts/node_normal_light/node_normal_light.yy",},"order":0,}, {"id":{"name":"o_dialog_release_note","path":"objects/o_dialog_release_note/o_dialog_release_note.yy",},"order":16,}, {"id":{"name":"panel_inspector","path":"scripts/panel_inspector/panel_inspector.yy",},"order":0,}, {"id":{"name":"node_padding","path":"scripts/node_padding/node_padding.yy",},"order":10,}, + {"id":{"name":"node_VFX_group","path":"scripts/node_VFX_group/node_VFX_group.yy",},"order":6,}, {"id":{"name":"s_node_pixel_cloud","path":"sprites/s_node_pixel_cloud/s_node_pixel_cloud.yy",},"order":50,}, - {"id":{"name":"node_noise_grid","path":"scripts/node_noise_grid/node_noise_grid.yy",},"order":12,}, + {"id":{"name":"node_noise_grid","path":"scripts/node_noise_grid/node_noise_grid.yy",},"order":8,}, {"id":{"name":"s_node_compose","path":"sprites/s_node_compose/s_node_compose.yy",},"order":89,}, {"id":{"name":"s_node_crop","path":"sprites/s_node_crop/s_node_crop.yy",},"order":86,}, + {"id":{"name":"__VFX","path":"scripts/__VFX/__VFX.yy",},"order":3,}, {"id":{"name":"s_menu_black","path":"sprites/s_menu_black/s_menu_black.yy",},"order":2,}, {"id":{"name":"sh_blend_multiply","path":"shaders/sh_blend_multiply/sh_blend_multiply.yy",},"order":0,}, {"id":{"name":"node_bevel","path":"scripts/node_bevel/node_bevel.yy",},"order":3,}, @@ -113,7 +117,7 @@ {"id":{"name":"s_node_group","path":"sprites/s_node_group/s_node_group.yy",},"order":5,}, {"id":{"name":"o_dialog_splash","path":"objects/o_dialog_splash/o_dialog_splash.yy",},"order":19,}, {"id":{"name":"json_file","path":"scripts/json_file/json_file.yy",},"order":4,}, - {"id":{"name":"node_gradient","path":"scripts/node_gradient/node_gradient.yy",},"order":1,}, + {"id":{"name":"node_gradient","path":"scripts/node_gradient/node_gradient.yy",},"order":0,}, {"id":{"name":"textBox","path":"scripts/textBox/textBox.yy",},"order":17,}, {"id":{"name":"node_statistic","path":"scripts/node_statistic/node_statistic.yy",},"order":15,}, {"id":{"name":"sh_draw_surface_part_tiled","path":"shaders/sh_draw_surface_part_tiled/sh_draw_surface_part_tiled.yy",},"order":32,}, @@ -122,7 +126,7 @@ {"id":{"name":"s_node_curve","path":"sprites/s_node_curve/s_node_curve.yy",},"order":85,}, {"id":{"name":"sh_blend_normal","path":"shaders/sh_blend_normal/sh_blend_normal.yy",},"order":1,}, {"id":{"name":"sh_blur_directional","path":"shaders/sh_blur_directional/sh_blur_directional.yy",},"order":16,}, - {"id":{"name":"node_processor","path":"scripts/node_processor/node_processor.yy",},"order":1,}, + {"id":{"name":"node_processor","path":"scripts/node_processor/node_processor.yy",},"order":8,}, {"id":{"name":"animation_controller","path":"scripts/animation_controller/animation_controller.yy",},"order":1,}, {"id":{"name":"s_node_shadow","path":"sprites/s_node_shadow/s_node_shadow.yy",},"order":41,}, {"id":{"name":"sh_zigzag","path":"shaders/sh_zigzag/sh_zigzag.yy",},"order":11,}, @@ -133,6 +137,7 @@ {"id":{"name":"s_node_vec3","path":"sprites/s_node_vec3/s_node_vec3.yy",},"order":25,}, {"id":{"name":"surface_valid","path":"scripts/surface_valid/surface_valid.yy",},"order":3,}, {"id":{"name":"sh_blur_radial","path":"shaders/sh_blur_radial/sh_blur_radial.yy",},"order":18,}, + {"id":{"name":"node_VFX_renderer","path":"scripts/node_VFX_renderer/node_VFX_renderer.yy",},"order":5,}, {"id":{"name":"s_node_invert","path":"sprites/s_node_invert/s_node_invert.yy",},"order":65,}, {"id":{"name":"node_array_get","path":"scripts/node_array_get/node_array_get.yy",},"order":14,}, {"id":{"name":"sh_grid","path":"shaders/sh_grid/sh_grid.yy",},"order":14,}, @@ -145,7 +150,7 @@ {"id":{"name":"s_ui_base_white","path":"sprites/s_ui_base_white/s_ui_base_white.yy",},"order":2,}, {"id":{"name":"node_blur","path":"scripts/node_blur/node_blur.yy",},"order":16,}, {"id":{"name":"s_node_loop","path":"sprites/s_node_loop/s_node_loop.yy",},"order":4,}, - {"id":{"name":"node_zigzag","path":"scripts/node_zigzag/node_zigzag.yy",},"order":16,}, + {"id":{"name":"node_zigzag","path":"scripts/node_zigzag/node_zigzag.yy",},"order":12,}, {"id":{"name":"preset_data","path":"scripts/preset_data/preset_data.yy",},"order":7,}, {"id":{"name":"_f_h5","path":"fonts/_f_h5/_f_h5.yy",},"order":2,}, {"id":{"name":"node_color","path":"scripts/node_color/node_color.yy",},"order":0,}, @@ -171,14 +176,17 @@ {"id":{"name":"s_node_warp","path":"sprites/s_node_warp/s_node_warp.yy",},"order":23,}, {"id":{"name":"color_function","path":"scripts/color_function/color_function.yy",},"order":9,}, {"id":{"name":"node_color_data","path":"scripts/node_color_data/node_color_data.yy",},"order":4,}, - {"id":{"name":"node_noise_ani","path":"scripts/node_noise_ani/node_noise_ani.yy",},"order":7,}, + {"id":{"name":"node_noise_ani","path":"scripts/node_noise_ani/node_noise_ani.yy",},"order":5,}, + {"id":{"name":"s_node_vfx_turb","path":"sprites/s_node_vfx_turb/s_node_vfx_turb.yy",},"order":122,}, {"id":{"name":"s_node_transform","path":"sprites/s_node_transform/s_node_transform.yy",},"order":30,}, {"id":{"name":"node_canvas","path":"scripts/node_canvas/node_canvas.yy",},"order":6,}, {"id":{"name":"node_display_image","path":"scripts/node_display_image/node_display_image.yy",},"order":4,}, {"id":{"name":"node_chromatic_aberration","path":"scripts/node_chromatic_aberration/node_chromatic_aberration.yy",},"order":45,}, {"id":{"name":"node_pin","path":"scripts/node_pin/node_pin.yy",},"order":2,}, {"id":{"name":"sh_noise","path":"shaders/sh_noise/sh_noise.yy",},"order":16,}, + {"id":{"name":"node_VFX_effect_destroy","path":"scripts/node_VFX_effect_destroy/node_VFX_effect_destroy.yy",},"order":14,}, {"id":{"name":"sh_bw","path":"shaders/sh_bw/sh_bw.yy",},"order":1,}, + {"id":{"name":"s_node_vfx_attract","path":"sprites/s_node_vfx_attract/s_node_vfx_attract.yy",},"order":125,}, {"id":{"name":"real_comparison","path":"scripts/real_comparison/real_comparison.yy",},"order":1,}, {"id":{"name":"s_node_stripe","path":"sprites/s_node_stripe/s_node_stripe.yy",},"order":36,}, {"id":{"name":"sh_grey_alpha","path":"shaders/sh_grey_alpha/sh_grey_alpha.yy",},"order":11,}, @@ -193,11 +201,13 @@ {"id":{"name":"node_keyframe","path":"scripts/node_keyframe/node_keyframe.yy",},"order":4,}, {"id":{"name":"ac_flash","path":"animcurves/ac_flash/ac_flash.yy",},"order":0,}, {"id":{"name":"o_dialog_drag_folder","path":"objects/o_dialog_drag_folder/o_dialog_drag_folder.yy",},"order":2,}, + {"id":{"name":"node_VFX_effect_repel","path":"scripts/node_VFX_effect_repel/node_VFX_effect_repel.yy",},"order":11,}, {"id":{"name":"s_node_alpha_cut","path":"sprites/s_node_alpha_cut/s_node_alpha_cut.yy",},"order":111,}, + {"id":{"name":"node_VFX_effect_attract","path":"scripts/node_VFX_effect_attract/node_VFX_effect_attract.yy",},"order":10,}, {"id":{"name":"sh_blend_multiply_alpha","path":"shaders/sh_blend_multiply_alpha/sh_blend_multiply_alpha.yy",},"order":4,}, {"id":{"name":"draw_sprite_ext_override","path":"scripts/draw_sprite_ext_override/draw_sprite_ext_override.yy",},"order":9,}, - {"id":{"name":"node_noise_cell","path":"scripts/node_noise_cell/node_noise_cell.yy",},"order":3,}, - {"id":{"name":"node_noise","path":"scripts/node_noise/node_noise.yy",},"order":21,}, + {"id":{"name":"node_noise_cell","path":"scripts/node_noise_cell/node_noise_cell.yy",},"order":2,}, + {"id":{"name":"node_noise","path":"scripts/node_noise/node_noise.yy",},"order":17,}, {"id":{"name":"mtl_reader","path":"scripts/mtl_reader/mtl_reader.yy",},"order":6,}, {"id":{"name":"sh_scale2x","path":"shaders/sh_scale2x/sh_scale2x.yy",},"order":32,}, {"id":{"name":"ds_priority","path":"scripts/ds_priority/ds_priority.yy",},"order":3,}, @@ -221,7 +231,7 @@ {"id":{"name":"boneObject","path":"scripts/boneObject/boneObject.yy",},"order":0,}, {"id":{"name":"node_color_remove","path":"scripts/node_color_remove/node_color_remove.yy",},"order":38,}, {"id":{"name":"s_node_grid","path":"sprites/s_node_grid/s_node_grid.yy",},"order":73,}, - {"id":{"name":"node_perlin","path":"scripts/node_perlin/node_perlin.yy",},"order":2,}, + {"id":{"name":"node_perlin","path":"scripts/node_perlin/node_perlin.yy",},"order":1,}, {"id":{"name":"o_dialog_add_multiple_images","path":"objects/o_dialog_add_multiple_images/o_dialog_add_multiple_images.yy",},"order":0,}, {"id":{"name":"assets_data","path":"scripts/assets_data/assets_data.yy",},"order":0,}, {"id":{"name":"sh_color_adjust","path":"shaders/sh_color_adjust/sh_color_adjust.yy",},"order":2,}, @@ -234,13 +244,17 @@ {"id":{"name":"panel_animation","path":"scripts/panel_animation/panel_animation.yy",},"order":4,}, {"id":{"name":"sh_gradient","path":"shaders/sh_gradient/sh_gradient.yy",},"order":8,}, {"id":{"name":"s_node_zigzag","path":"sprites/s_node_zigzag/s_node_zigzag.yy",},"order":20,}, + {"id":{"name":"s_node_vfx_spawn","path":"sprites/s_node_vfx_spawn/s_node_vfx_spawn.yy",},"order":129,}, {"id":{"name":"sh_glow","path":"shaders/sh_glow/sh_glow.yy",},"order":21,}, {"id":{"name":"sh_posterize","path":"shaders/sh_posterize/sh_posterize.yy",},"order":23,}, {"id":{"name":"s_node_mirror","path":"sprites/s_node_mirror/s_node_mirror.yy",},"order":60,}, + {"id":{"name":"node_VFX_spawner","path":"scripts/node_VFX_spawner/node_VFX_spawner.yy",},"order":2,}, {"id":{"name":"libfilesystem","path":"extensions/libfilesystem/libfilesystem.yy",},"order":3,}, {"id":{"name":"sh_color_replace","path":"shaders/sh_color_replace/sh_color_replace.yy",},"order":4,}, {"id":{"name":"rotator","path":"scripts/rotator/rotator.yy",},"order":11,}, + {"id":{"name":"s_node_vfx_wind","path":"sprites/s_node_vfx_wind/s_node_vfx_wind.yy",},"order":120,}, {"id":{"name":"s_node_edge_detect","path":"sprites/s_node_edge_detect/s_node_edge_detect.yy",},"order":2,}, + {"id":{"name":"s_node_vfx","path":"sprites/s_node_vfx/s_node_vfx.yy",},"order":127,}, {"id":{"name":"node_blur_radial","path":"scripts/node_blur_radial/node_blur_radial.yy",},"order":29,}, {"id":{"name":"node_bloom","path":"scripts/node_bloom/node_bloom.yy",},"order":15,}, {"id":{"name":"sh_bevel","path":"shaders/sh_bevel/sh_bevel.yy",},"order":3,}, @@ -248,18 +262,18 @@ {"id":{"name":"node_sprite_stack","path":"scripts/node_sprite_stack/node_sprite_stack.yy",},"order":4,}, {"id":{"name":"sh_shape","path":"shaders/sh_shape/sh_shape.yy",},"order":3,}, {"id":{"name":"draw_line_width2","path":"scripts/draw_line_width2/draw_line_width2.yy",},"order":2,}, - {"id":{"name":"node_particle_effector","path":"scripts/node_particle_effector/node_particle_effector.yy",},"order":9,}, + {"id":{"name":"_node_VFX_effector","path":"scripts/_node_VFX_effector/_node_VFX_effector.yy",},"order":1,}, {"id":{"name":"areaBox","path":"scripts/areaBox/areaBox.yy",},"order":1,}, {"id":{"name":"o_dialog_preset","path":"objects/o_dialog_preset/o_dialog_preset.yy",},"order":1,}, {"id":{"name":"s_node_erode","path":"sprites/s_node_erode/s_node_erode.yy",},"order":81,}, - {"id":{"name":"node_particle","path":"scripts/node_particle/node_particle.yy",},"order":0,}, + {"id":{"name":"node_particle","path":"scripts/node_particle/node_particle.yy",},"order":19,}, {"id":{"name":"level_histogram","path":"scripts/level_histogram/level_histogram.yy",},"order":1,}, {"id":{"name":"o_dialog_graph_grid","path":"objects/o_dialog_graph_grid/o_dialog_graph_grid.yy",},"order":3,}, {"id":{"name":"append_function","path":"scripts/append_function/append_function.yy",},"order":1,}, {"id":{"name":"obj_reader","path":"scripts/obj_reader/obj_reader.yy",},"order":2,}, {"id":{"name":"sh_invert","path":"shaders/sh_invert/sh_invert.yy",},"order":30,}, {"id":{"name":"save_function","path":"scripts/save_function/save_function.yy",},"order":0,}, - {"id":{"name":"node_perlin_smear","path":"scripts/node_perlin_smear/node_perlin_smear.yy",},"order":10,}, + {"id":{"name":"node_perlin_smear","path":"scripts/node_perlin_smear/node_perlin_smear.yy",},"order":6,}, {"id":{"name":"node_alpha_cutoff","path":"scripts/node_alpha_cutoff/node_alpha_cutoff.yy",},"order":37,}, {"id":{"name":"sh_channel_R","path":"shaders/sh_channel_R/sh_channel_R.yy",},"order":12,}, {"id":{"name":"draw_circle_border","path":"scripts/draw_circle_border/draw_circle_border.yy",},"order":3,}, @@ -267,19 +281,20 @@ {"id":{"name":"point_rect_overlap","path":"scripts/point_rect_overlap/point_rect_overlap.yy",},"order":2,}, {"id":{"name":"s_node_bevel","path":"sprites/s_node_bevel/s_node_bevel.yy",},"order":105,}, {"id":{"name":"color_selector","path":"scripts/color_selector/color_selector.yy",},"order":4,}, + {"id":{"name":"node_VFX_effect_turbulence","path":"scripts/node_VFX_effect_turbulence/node_VFX_effect_turbulence.yy",},"order":13,}, {"id":{"name":"sh_seperate_shape_counter","path":"shaders/sh_seperate_shape_counter/sh_seperate_shape_counter.yy",},"order":1,}, {"id":{"name":"s_node_stack","path":"sprites/s_node_stack/s_node_stack.yy",},"order":37,}, {"id":{"name":"node_timeline_preview","path":"scripts/node_timeline_preview/node_timeline_preview.yy",},"order":2,}, {"id":{"name":"sh_greyscale","path":"shaders/sh_greyscale/sh_greyscale.yy",},"order":6,}, {"id":{"name":"node_global","path":"scripts/node_global/node_global.yy",},"order":3,}, {"id":{"name":"sh_outline","path":"shaders/sh_outline/sh_outline.yy",},"order":21,}, - {"id":{"name":"node_checkerboard","path":"scripts/node_checkerboard/node_checkerboard.yy",},"order":17,}, + {"id":{"name":"node_checkerboard","path":"scripts/node_checkerboard/node_checkerboard.yy",},"order":13,}, {"id":{"name":"node_gradient_output","path":"scripts/node_gradient_output/node_gradient_output.yy",},"order":3,}, {"id":{"name":"display_refresh","path":"scripts/display_refresh/display_refresh.yy",},"order":18,}, {"id":{"name":"s_node_grey_alpha","path":"sprites/s_node_grey_alpha/s_node_grey_alpha.yy",},"order":75,}, {"id":{"name":"o_dialog_color_selector","path":"objects/o_dialog_color_selector/o_dialog_color_selector.yy",},"order":0,}, {"id":{"name":"sh_bloom_pass1","path":"shaders/sh_bloom_pass1/sh_bloom_pass1.yy",},"order":0,}, - {"id":{"name":"node_seperate_shapes","path":"scripts/node_seperate_shapes/node_seperate_shapes.yy",},"order":13,}, + {"id":{"name":"node_seperate_shapes","path":"scripts/node_seperate_shapes/node_seperate_shapes.yy",},"order":9,}, {"id":{"name":"node_sequence_to_anim","path":"scripts/node_sequence_to_anim/node_sequence_to_anim.yy",},"order":3,}, {"id":{"name":"node_image_sheet","path":"scripts/node_image_sheet/node_image_sheet.yy",},"order":4,}, {"id":{"name":"sh_posterize_palette","path":"shaders/sh_posterize_palette/sh_posterize_palette.yy",},"order":8,}, @@ -289,7 +304,7 @@ {"id":{"name":"s_node_BW","path":"sprites/s_node_BW/s_node_BW.yy",},"order":100,}, {"id":{"name":"node_shadow","path":"scripts/node_shadow/node_shadow.yy",},"order":17,}, {"id":{"name":"s_node_color_data","path":"sprites/s_node_color_data/s_node_color_data.yy",},"order":96,}, - {"id":{"name":"node_simple_shape","path":"scripts/node_simple_shape/node_simple_shape.yy",},"order":5,}, + {"id":{"name":"node_simple_shape","path":"scripts/node_simple_shape/node_simple_shape.yy",},"order":4,}, {"id":{"name":"node_atlas","path":"scripts/node_atlas/node_atlas.yy",},"order":42,}, {"id":{"name":"getGradientData","path":"scripts/getGradientData/getGradientData.yy",},"order":1,}, {"id":{"name":"s_node_character","path":"sprites/s_node_character/s_node_character.yy",},"order":99,}, @@ -310,9 +325,10 @@ {"id":{"name":"area_function","path":"scripts/area_function/area_function.yy",},"order":2,}, {"id":{"name":"s_node_statistic","path":"sprites/s_node_statistic/s_node_statistic.yy",},"order":3,}, {"id":{"name":"sh_blend_alpha_addition","path":"shaders/sh_blend_alpha_addition/sh_blend_alpha_addition.yy",},"order":13,}, + {"id":{"name":"node_VFX_effect_vortex","path":"scripts/node_VFX_effect_vortex/node_VFX_effect_vortex.yy",},"order":12,}, {"id":{"name":"s_node_noise","path":"sprites/s_node_noise/s_node_noise.yy",},"order":118,}, {"id":{"name":"sh_erode","path":"shaders/sh_erode/sh_erode.yy",},"order":20,}, - {"id":{"name":"node_pixel_cloud","path":"scripts/node_pixel_cloud/node_pixel_cloud.yy",},"order":19,}, + {"id":{"name":"node_pixel_cloud","path":"scripts/node_pixel_cloud/node_pixel_cloud.yy",},"order":15,}, {"id":{"name":"sh_alpha_grey","path":"shaders/sh_alpha_grey/sh_alpha_grey.yy",},"order":9,}, {"id":{"name":"s_transparent","path":"sprites/s_transparent/s_transparent.yy",},"order":1,}, {"id":{"name":"o_dialog_animation","path":"objects/o_dialog_animation/o_dialog_animation.yy",},"order":1,}, @@ -324,7 +340,7 @@ {"id":{"name":"s_node_gradient","path":"sprites/s_node_gradient/s_node_gradient.yy",},"order":77,}, {"id":{"name":"s_node_padding","path":"sprites/s_node_padding/s_node_padding.yy",},"order":55,}, {"id":{"name":"sh_blend_add_alpha_adj","path":"shaders/sh_blend_add_alpha_adj/sh_blend_add_alpha_adj.yy",},"order":2,}, - {"id":{"name":"node_text","path":"scripts/node_text/node_text.yy",},"order":14,}, + {"id":{"name":"node_text","path":"scripts/node_text/node_text.yy",},"order":10,}, {"id":{"name":"panel_collection","path":"scripts/panel_collection/panel_collection.yy",},"order":7,}, {"id":{"name":"lerp_float","path":"scripts/lerp_float/lerp_float.yy",},"order":1,}, {"id":{"name":"vectorRangeBox","path":"scripts/vectorRangeBox/vectorRangeBox.yy",},"order":19,}, @@ -344,6 +360,7 @@ {"id":{"name":"byte_reader","path":"scripts/byte_reader/byte_reader.yy",},"order":0,}, {"id":{"name":"_p_dialog","path":"objects/_p_dialog/_p_dialog.yy",},"order":0,}, {"id":{"name":"render_data","path":"scripts/render_data/render_data.yy",},"order":2,}, + {"id":{"name":"_node_VFX","path":"scripts/_node_VFX/_node_VFX.yy",},"order":4,}, {"id":{"name":"s_node_blur_directional","path":"sprites/s_node_blur_directional/s_node_blur_directional.yy",},"order":8,}, {"id":{"name":"distance_to_line","path":"scripts/distance_to_line/distance_to_line.yy",},"order":0,}, {"id":{"name":"s_node_sprite_sheet","path":"sprites/s_node_sprite_sheet/s_node_sprite_sheet.yy",},"order":38,}, @@ -353,6 +370,7 @@ {"id":{"name":"curve_bounce_function","path":"scripts/curve_bounce_function/curve_bounce_function.yy",},"order":1,}, {"id":{"name":"s_node_number","path":"sprites/s_node_number/s_node_number.yy",},"order":12,}, {"id":{"name":"gif_reader","path":"scripts/gif_reader/gif_reader.yy",},"order":4,}, + {"id":{"name":"s_node_vfx_vortex","path":"sprites/s_node_vfx_vortex/s_node_vfx_vortex.yy",},"order":121,}, {"id":{"name":"_f_p3","path":"fonts/_f_p3/_f_p3.yy",},"order":7,}, {"id":{"name":"node_group_input","path":"scripts/node_group_input/node_group_input.yy",},"order":1,}, {"id":{"name":"draw_rect_border","path":"scripts/draw_rect_border/draw_rect_border.yy",},"order":6,}, @@ -393,8 +411,9 @@ {"id":{"name":"node_scale_algo","path":"scripts/node_scale_algo/node_scale_algo.yy",},"order":43,}, {"id":{"name":"mouse_input","path":"scripts/mouse_input/mouse_input.yy",},"order":1,}, {"id":{"name":"string_cut","path":"scripts/string_cut/string_cut.yy",},"order":4,}, + {"id":{"name":"s_node_vfx_destroy","path":"sprites/s_node_vfx_destroy/s_node_vfx_destroy.yy",},"order":124,}, {"id":{"name":"node_3d_prim_cylinder","path":"scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.yy",},"order":7,}, - {"id":{"name":"node_grid","path":"scripts/node_grid/node_grid.yy",},"order":20,}, + {"id":{"name":"node_grid","path":"scripts/node_grid/node_grid.yy",},"order":16,}, {"id":{"name":"node_edge_detect","path":"scripts/node_edge_detect/node_edge_detect.yy",},"order":44,}, {"id":{"name":"node_anim_priority","path":"scripts/node_anim_priority/node_anim_priority.yy",},"order":2,}, {"id":{"name":"s_texture_default","path":"sprites/s_texture_default/s_texture_default.yy",},"order":1,}, @@ -417,6 +436,7 @@ {"id":{"name":"s_node_normal_light","path":"sprites/s_node_normal_light/s_node_normal_light.yy",},"order":18,}, {"id":{"name":"node_transform_single","path":"scripts/node_transform_single/node_transform_single.yy",},"order":1,}, {"id":{"name":"s_node_3d_extrude","path":"sprites/s_node_3d_extrude/s_node_3d_extrude.yy",},"order":119,}, + {"id":{"name":"s_node_vfx_render","path":"sprites/s_node_vfx_render/s_node_vfx_render.yy",},"order":128,}, {"id":{"name":"buttonGradient","path":"scripts/buttonGradient/buttonGradient.yy",},"order":4,}, {"id":{"name":"s_node_texture_map","path":"sprites/s_node_texture_map/s_node_texture_map.yy",},"order":34,}, {"id":{"name":"s_node_level_selector","path":"sprites/s_node_level_selector/s_node_level_selector.yy",},"order":63,}, @@ -456,11 +476,13 @@ {"id":{"name":"node_collection","path":"scripts/node_collection/node_collection.yy",},"order":0,}, {"id":{"name":"node_value","path":"scripts/node_value/node_value.yy",},"order":6,}, {"id":{"name":"draw_line_curve","path":"scripts/draw_line_curve/draw_line_curve.yy",},"order":5,}, + {"id":{"name":"s_node_vfx_accel","path":"sprites/s_node_vfx_accel/s_node_vfx_accel.yy",},"order":126,}, {"id":{"name":"sh_blend_screen","path":"shaders/sh_blend_screen/sh_blend_screen.yy",},"order":3,}, {"id":{"name":"node_group_output","path":"scripts/node_group_output/node_group_output.yy",},"order":2,}, {"id":{"name":"s_node_scatter","path":"sprites/s_node_scatter/s_node_scatter.yy",},"order":43,}, {"id":{"name":"_f_p2","path":"fonts/_f_p2/_f_p2.yy",},"order":4,}, {"id":{"name":"button","path":"scripts/button/button.yy",},"order":2,}, + {"id":{"name":"node_VFX_effector","path":"scripts/node_VFX_effector/node_VFX_effector.yy",},"order":8,}, {"id":{"name":"sh_blur_gaussian","path":"shaders/sh_blur_gaussian/sh_blur_gaussian.yy",},"order":1,}, {"id":{"name":"s_node_3d_cylinder","path":"sprites/s_node_3d_cylinder/s_node_3d_cylinder.yy",},"order":115,}, {"id":{"name":"s_node_vec_split","path":"sprites/s_node_vec_split/s_node_vec_split.yy",},"order":27,}, @@ -476,7 +498,7 @@ {"id":{"name":"o_dialog_warning","path":"objects/o_dialog_warning/o_dialog_warning.yy",},"order":14,}, {"id":{"name":"string_scale","path":"scripts/string_scale/string_scale.yy",},"order":6,}, {"id":{"name":"s_node_image","path":"sprites/s_node_image/s_node_image.yy",},"order":71,}, - {"id":{"name":"node_value_processor","path":"scripts/node_value_processor/node_value_processor.yy",},"order":1,}, + {"id":{"name":"node_value_processor","path":"scripts/node_value_processor/node_value_processor.yy",},"order":7,}, {"id":{"name":"sample_projects","path":"scripts/sample_projects/sample_projects.yy",},"order":5,}, {"id":{"name":"load_function","path":"scripts/load_function/load_function.yy",},"order":2,}, {"id":{"name":"ds_map","path":"scripts/ds_map/ds_map.yy",},"order":0,}, @@ -488,6 +510,7 @@ {"id":{"name":"sh_displace","path":"shaders/sh_displace/sh_displace.yy",},"order":7,}, {"id":{"name":"node_group","path":"scripts/node_group/node_group.yy",},"order":0,}, {"id":{"name":"rangeBox","path":"scripts/rangeBox/rangeBox.yy",},"order":10,}, + {"id":{"name":"node_VFX_effect_accelerate","path":"scripts/node_VFX_effect_accelerate/node_VFX_effect_accelerate.yy",},"order":9,}, {"id":{"name":"node_frame","path":"scripts/node_frame/node_frame.yy",},"order":1,}, {"id":{"name":"s_node_scale_algo","path":"sprites/s_node_scale_algo/s_node_scale_algo.yy",},"order":44,}, {"id":{"name":"node_bw","path":"scripts/node_bw/node_bw.yy",},"order":20,}, @@ -508,7 +531,7 @@ {"id":{"name":"dialog_management","path":"scripts/dialog_management/dialog_management.yy",},"order":5,}, {"id":{"name":"node_channels","path":"scripts/node_channels/node_channels.yy",},"order":24,}, {"id":{"name":"execute_shell_simple_ext","path":"extensions/execute_shell_simple_ext/execute_shell_simple_ext.yy",},"order":5,}, - {"id":{"name":"node_solid","path":"scripts/node_solid/node_solid.yy",},"order":18,}, + {"id":{"name":"node_solid","path":"scripts/node_solid/node_solid.yy",},"order":14,}, {"id":{"name":"node_iteration_output","path":"scripts/node_iteration_output/node_iteration_output.yy",},"order":3,}, {"id":{"name":"debug","path":"scripts/debug/debug.yy",},"order":9,}, {"id":{"name":"o_dialog_assetbox","path":"objects/o_dialog_assetbox/o_dialog_assetbox.yy",},"order":3,}, @@ -575,19 +598,19 @@ {"resourceType":"GMFolder","resourceVersion":"1.0","name":"scritps","folderPath":"folders/main/scritps.yy","order":6,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"nodes","folderPath":"folders/nodes.yy","order":4,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"data","folderPath":"folders/nodes/data.yy","order":10,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"__base__","folderPath":"folders/nodes/data/__base__.yy","order":21,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"3D","folderPath":"folders/nodes/data/3D.yy","order":11,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"animation","folderPath":"folders/nodes/data/animation.yy","order":9,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"color","folderPath":"folders/nodes/data/color.yy","order":16,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"filter","folderPath":"folders/nodes/data/filter.yy","order":3,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"generator","folderPath":"folders/nodes/data/generator.yy","order":8,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"group","folderPath":"folders/nodes/data/group.yy","order":10,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"input","folderPath":"folders/nodes/data/input.yy","order":2,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"iterate","folderPath":"folders/nodes/data/iterate.yy","order":19,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"node","folderPath":"folders/nodes/data/node.yy","order":20,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"number","folderPath":"folders/nodes/data/number.yy","order":5,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"render","folderPath":"folders/nodes/data/render.yy","order":4,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"transform","folderPath":"folders/nodes/data/transform.yy","order":12,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"__base__","folderPath":"folders/nodes/data/__base__.yy","order":12,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"3D","folderPath":"folders/nodes/data/3D.yy","order":7,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"animation","folderPath":"folders/nodes/data/animation.yy","order":5,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"color","folderPath":"folders/nodes/data/color.yy","order":9,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"filter","folderPath":"folders/nodes/data/filter.yy","order":1,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"generator","folderPath":"folders/nodes/data/generator.yy","order":4,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"group","folderPath":"folders/nodes/data/group.yy","order":6,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"input","folderPath":"folders/nodes/data/input.yy","order":0,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"iterate","folderPath":"folders/nodes/data/iterate.yy","order":10,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"node","folderPath":"folders/nodes/data/node.yy","order":11,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"number","folderPath":"folders/nodes/data/number.yy","order":3,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"render","folderPath":"folders/nodes/data/render.yy","order":2,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"transform","folderPath":"folders/nodes/data/transform.yy","order":8,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"icons","folderPath":"folders/nodes/icons.yy","order":6,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"panels","folderPath":"folders/panels.yy","order":3,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"data","folderPath":"folders/panels/data.yy","order":9,}, @@ -605,6 +628,7 @@ {"resourceType":"GMFolder","resourceVersion":"1.0","name":"sprites","folderPath":"folders/sprites.yy","order":10,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"texture","folderPath":"folders/sprites/texture.yy","order":2,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"widgets","folderPath":"folders/widgets.yy","order":6,}, + {"resourceType":"GMFolder","resourceVersion":"1.0","name":"VFX","folderPath":"folders/nodes/data/VFX.yy","order":13,}, ], "AudioGroups": [ {"resourceType":"GMAudioGroup","resourceVersion":"1.3","name":"audiogroup_default","targets":-1,}, @@ -717,7 +741,6 @@ {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_timeline_keyframe_selecting.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/timeline",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_timeline_ease_strip4.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/timeline",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_draw_area.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, - {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_single_hover_strip12.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_draw_path.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junction_name_bg.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_bg.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, @@ -788,7 +811,6 @@ {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_button_bottom_left_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_button_bottom_right_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"colors.json","CopyToMask":-1,"filePath":"datafiles/data/themes/default",}, - {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_single_strip12.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_group_label.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_grid_setting.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_menu_white.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",}, @@ -825,7 +847,6 @@ {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_padding.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_prop_on_end_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_active.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, - {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_array_hover_strip12.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/timeline",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_timeline_keyframes_strip4.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/timeline",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_ui_scroll_bar.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",}, @@ -838,7 +859,6 @@ {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_checkbox_strip4.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_bg_name.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, - {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_array_strip12.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_area_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_cache.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, @@ -854,7 +874,6 @@ {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_refresh_16.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_noti_icon_file_save.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_noti_icon_file_load.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, - {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_state_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_dialog_bg.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",}, @@ -865,10 +884,16 @@ {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_animation_stretch.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_visible.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_junc_visible_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, - {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/tool",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_path_tools_circle.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/tool",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_path_tools_rectangle.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/tool",}, + {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_single.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, + {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_array.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, + {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_single_hover.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, + {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_array_hover.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, + {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, + {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, + {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_vfx.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"default.zip","CopyToMask":-1,"filePath":"datafiles/data/themes",}, ], "MetaData": { diff --git a/datafiles/data/themes/default.zip b/datafiles/data/themes/default.zip index 4b57a65da..95ad43f9e 100644 Binary files a/datafiles/data/themes/default.zip and b/datafiles/data/themes/default.zip differ diff --git a/datafiles/data/themes/default/graphics/graphics.json b/datafiles/data/themes/default/graphics/graphics.json index 97fa04b9d..2cb09e785 100644 --- a/datafiles/data/themes/default/graphics/graphics.json +++ b/datafiles/data/themes/default/graphics/graphics.json @@ -263,6 +263,13 @@ "yorigin": 16, "slice": null }, + "vfx": { + "path": "./icon/s_vfx.png", + "subimages": 1, + "xorigin": 16, + "yorigin": 16, + "slice": null + }, "minus": { "path": "./icon/s_minus_24.png", "subimages": 1, @@ -487,28 +494,28 @@ "slice": null }, "node_junctions_array": { - "path": "./node/s_node_junctions_array_strip12.png", + "path": "./node/s_node_junctions_array.png", "subimages": 12, "xorigin": 16, "yorigin": 16, "slice": null }, "node_junctions_array_hover": { - "path": "./node/s_node_junctions_array_hover_strip12.png", + "path": "./node/s_node_junctions_array_hover.png", "subimages": 12, "xorigin": 16, "yorigin": 16, "slice": null }, "node_junctions_single": { - "path": "./node/s_node_junctions_single_strip12.png", + "path": "./node/s_node_junctions_single.png", "subimages": 12, "xorigin": 16, "yorigin": 16, "slice": null }, "node_junctions_single_hover": { - "path": "./node/s_node_junctions_single_hover_strip12.png", + "path": "./node/s_node_junctions_single_hover.png", "subimages": 12, "xorigin": 16, "yorigin": 16, diff --git a/datafiles/data/themes/default/graphics/icon/graphics x2.ai b/datafiles/data/themes/default/graphics/icon/graphics x2.ai index e5e7a6227..427370cd8 100644 --- a/datafiles/data/themes/default/graphics/icon/graphics x2.ai +++ b/datafiles/data/themes/default/graphics/icon/graphics x2.ai @@ -23,8 +23,8 @@ Adobe Illustrator 27.0 (Windows) 2022-11-26T09:16:08+07:00 - 2022-12-10T17:41:26+07:00 - 2022-12-10T17:41:26+07:00 + 2022-12-13T14:24:52+07:00 + 2022-12-13T14:24:52+07:00 @@ -38,7 +38,7 @@ default uuid:65E6390686CF11DBA6E2D887CEACB407 xmp.did:7647d1b0-ea83-ca49-b85e-bbc9513ca4bb - uuid:b877a85b-0c5c-4b1f-80bc-487e2cc46c14 + uuid:1ca306bc-295f-4df3-bd62-7da15438e7f4 uuid:673f9e21-4d80-48ad-ba53-812ef9241a78 xmp.did:efa7ff44-b17d-d449-8cbc-4cf525bcc8d1 @@ -70,8 +70,8 @@ True False - 24.000000 - 24.000000 + 16.000000 + 16.000000 Pixels @@ -295,17 +295,17 @@ -endstream endobj 3 0 obj <> endobj 35 0 obj <> endobj 37 0 obj <> endobj 5 0 obj <>>>/Thumb 927 0 R/TrimBox[0.0 0.0 24.0 24.0]/Type/Page/PieceInfo<>>> endobj 924 0 obj <>stream -H10 ݧjqvR  Ƃ–* N3~[t-Z ZYŁzloZSP7E6H(6^\SftHfsF33Ü Y -endstream endobj 925 0 obj <> endobj 927 0 obj <>stream -8;Xp,*=;cJ$ihU'#ES~> -endstream endobj 928 0 obj <> endobj 930 0 obj <> endobj 931 0 obj <>stream +endstream endobj 3 0 obj <> endobj 35 0 obj <> endobj 37 0 obj <> endobj 5 0 obj <>>>/Thumb 946 0 R/TrimBox[0.0 0.0 16.0 16.0]/Type/Page/PieceInfo<>>> endobj 943 0 obj <>stream +H10 ݧjqvR  Ƃ–* N[t-Z ZYŁzloZSP7E6H(6^\SftHfsF33Ü Y +endstream endobj 944 0 obj <> endobj 946 0 obj <>stream +8;Xp,rVCYe!!<3,C'.`~> +endstream endobj 947 0 obj <> endobj 949 0 obj <> endobj 950 0 obj <>stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 27.0.1 %%For: (Makham) () %%Title: (graphics x2.ai) -%%CreationDate: 12/10/2022 5:41 PM +%%CreationDate: 12/13/2022 2:24 PM %%Canvassize: 16383 %%BoundingBox: -23 -168 574 0 %%HiResBoundingBox: -22.5 -168 574 0 @@ -334,9 +334,9 @@ endstream endobj 928 0 obj <>stream -%AI24_ZStandard_Data(/X\ ,m -m/a!DfI+4 Uo:r BciěAy)brwV{'o$L#;f^hh293݉$4 -9вjIh>ځT29r&f7Cb6tvDP9:=Fp:-Ixh7jK{TGRzm<3b1v"\Fyl edmfFeQQi«vX%cwCutIJ.r,)kLݫt-ok^lu:Sodh{ՙ$u 5N*GyуM#ygXwh<T2N%K* jkt/%d=gf4}dɽ00*``x,$`DP04T 7Pِh~4e4CǟZs.ߧ[FJH=%٢򸻉#Z,sDHŪ'lUzMl^H4@Pj)yԁA<)a]NeQ,4,+M09yrmr~NZF2an>uI"OF3U/*pdvTAc^%d4΃b7N6hErVJ6\8fEgwݝ'&c4l'u/chdur1tTfwWE^d'=E㲮Ԃqe!t.ehg_y?krG& GU7&aY%U^ilIe rUL)u4uAM+MhTSƭCV~6uD淞Q]n[Kn%% o'K9"Ve~#':aWD:YU.i\&m XҋdRI8G:ҕ8#F+pZN%4wA;[G7'{=I┤m}5 ' ?2c4,Fx0CCL0 <0Ad@A" 8xOajUU'f8FU @eO8( '@b40 -ڨڐnF\ּ:湡gᢔt,3ЊZvs\<(ЇŃb`hH,34\Q P*!H$2Kij>14g#dh$Q3 l24$514, QpEȒ23 -C@2* X04<\>X(  d [ LY*P2S, bSV{bCg9:) ijʌpf@C=CY!@-kcE ĂaРH(prA -C=؃a -Aa8HC$   1CC-NYCeh J\Y4*?"q6ՙ04gP&!0KXڙͬ6Q(E9+ eUE5A JPL FE!.MbjN!a0|rpn<C4Ѐà1 4@B(\A, h-D &aB  D@$L H0!0aB.XH\ -"lPTpAB"`@ABFx̒|:#M$c.r -e?EAL]Z#V\_<"dPDK'A_}tiZz֠PISfbfWd|f#qe*rU Sj@'IIŲL4Q(#F;)^oexr4I=R fA;&/)KeRXHҴIeJF8Jd(](E%c]~77$͖eM3v~=-4)bW-S-<hq妟h'1~Ք&t_N"bZF(E6iiM)Օ%ySe!M~uf0CÈĚLQ][42Yb:U*L(*wn5#q7(cohrF5u9ǬTC?mT10gx72Kv#n=˪e&t:?{I*NCAb-L%SV>LR}%䬚R%X.sANl~M29ki*U R^`5&2??ݸٱ^^ե~H%S}{󐐛guFLVZjHשQOHSKil#Z+zfy͢B4-eJ #4fژQf)mQP*an֑pjLYfu[M(̰fu2]tS)SD.Yjw]EUԼd\lJ+Lbn,4zFӫHzT")Lj1iĐ*y8ӻL/6"RAjKHw4r+kD2ˈ(y;q='oQ֦l6vuu%i4(:+I+)eY:tnY.0]b#MbGbzɔ=tC"V3՘*9ԧZ>fd*,Ckʵ8(X#"ɕ(m"3UÚg]O)uFx%U>̟;id/umɚU$LsEaި&7Q6~+6\S|W[׫D^"]yUh<4dv=Nge:/|DtgitMrr!RzϻlVZJh9<%#~Vm>e$@TGO*Yv˚]Effwv9Fx7u9/9هGv[/G1NSc/Ι庴UbW_~I^MF珳6u=XN~tV$^uԅhvd+鎞k39*V촻͕{)"G;H ӦkRХψ'}rl#Vffi' R}/-x>WnݝݥIdan"lzR M]bw7>"֥[׳haaZO/&Jt]fwNҐ]-.n)5K<<*;T6>l_+ݏZi{1˙Om -N/Qu|VN=T5|Xr:h"HJzȐ&g ()&ɰce|"2$R^%4E RzfûR;L]nW+zzoqVc*b{"jg~]n9=w5%n*+:4FrQyNyV^by'嬃y:vywӐ:^-tuW:dCIfM7YukP"M̆';N1<1"eEt&LJ5i#JD'7T8iOj6bY2O٧aq=wŽD'nT[_2XS./W6eDRĚ3fPM*>V[tNNr9X,al_V/++wUft9d~#}]=[=^ﷷKEƲh>ObN񎮰# -dmiCsY##$AiI)kNIͷGn:|i?g.>){V',%,L:pBTscc~kJ|=!S"xu _FG]riy@~U?z'>j(vc;|C"㡽*84M'3GV:jWγ) p$ebM82C7/؎ˣ~^\^ɧg̈́5Œf Ŷ:U;OJXɼ_9֓y|,*2<//H8T+p;~>qaf('*B{c ;;ph.}+Lh~SDuIޑƇνZ=Kl{ XQ_ooA4abǷ 2G͟GBeӁ#ǧ`DnSWK*qkŔS[f%ہT#{\n=%qqd"ObMɵ -FMr hv+kMyȲi*fӌX)rfOo?wﶕQHYg/A<[Ey mVA4&Z4h,3dD[k3Vk+|Ipޭ뷔8{>] QjZ_$|H*_J2@ʳekN Btmpd#˺G2xA93F-6 g븬+yf7;ikA]82<8Ss5I~SĘvf'd֩!D;ZdcɣXyvGD䅒6I"}nN$Ski(m!ڬ,cHdoL+J$ {ș"g6^"S_FeXVg/e?\ػ+RU,יu&ƃ΄q#s79IXnOH{JB#Cˡr"x޳]]k-wˤ9m%_ٔ,(=#UJKD$JMXUesQ{RW.2f^}>iJrYXhWגKhO:˖(α ]eVJ|h ->wF%ioL>D(cBw%|t6'A90omVssBd~M]XrRl_4Vf5y9|zX2&WչKUvInӯ|UDYDzwu7)aX3]Czr|&AkQ dG7C'3R'˛PL2]lЫeCc䥺WVD:h~X9Bijٹij3F Vf3SR9j9i'Ʉd3oy~s+B9հlXFԫҍ3;׻ɟD2I'YTq>CRug/C38|x?i5|uYS9o:RY{Ǫ޽Le6I[n&6e. I kwo%ʌ62"K;ՈdͲD[d^ϵ$U_V2KÖuEzvf|1$#D3IQjˆshT#e녔c$2DtZ]YXbUՑEFRԞ ag榫F;aFYڜdGf#xdW;Qe3ڬ. vvti}P.Gpe"ەLt̯ʧ04 "IjI!+CVShULLP5nz(%KN8fF8%NF%_U~N#F$ VRUL*vJ ^7aN -%JF aҎ  .h1KmJ|ve]JZgԴI<$sf4I:&IXG=:'= Q6'WV7?GmLahFk41=;U3mk3izt4$g7XriIWQl:]q7LTطk8UnfjC%qGi4\~oL&Z9td4=~VMuzbw3=}[#?0Y932M7BG鼤+ﴧuCGg.XU3LMMg!Ԕ+Yp\K0>T~Mʾ<ڮT1ֺRF ͽ,8jKjpY\;[fMN%a[ڪd⻪H9+v1,4ѝNgi;4)xQN==(|h;12 &Suۺ3wSn&&,%uJ]đAސnV%9%\mR94;q]R*ǫn{90gI*K hY_jFPF//h?&x=I5QAVͪ=xoRopWFV[(A$!lfbh*u##GaK! k b9ծr8v+WW%)T\oԞOzӪ $q<9OaMI8:W<$l5NvTGiĺ9ue>?>l68~*ً]ٍrXlZd!~$3d0e= ~dAKrFmH2qñɘdSd`쇒3G:ȷLxQ Rzʯ-ͬTx>{/|9e>4j]ZaOW,Ay9[KR9Ɣ*G| -V8YӒfx'w88IqtmWo#.{aU3rj9ɻG61{yBL#y{s|i* (<<"Hؠ@x6]I*H0p_!B<@B `/t B8PA$aBTXIՔQ\GJVY+/GGG9(GmZL$$&(ٓKJz$'7'b"p^KC["N ^[uawx$V:+tY o &RI&)T2gC9DCbb~Xeb7%v7b'v95bGWXM9%r84F_S6 8=|yƄcD˹:ՙzwTkTojWԦ\V|ָ# kFy!mM!˚ټ*롋Jjyu kI3t㩞|xy#n -rɦX*+6=xLHH4խS{"6W|ۤE)/s ^]sӄa b;8diR:OuYҡo5bIfQZTZIeeeǩMs$O$~}AtklwϑL<ۻ투Ni#^RSc Ԫ:ާId&]|W-ԓf'YE%r Z9t WU)TT(TTId2Be2LU,T/¹Xl삔%U"ʌBJQe*G*)'J#3@&kdLȨT}]//Vld.H,ct2u2c2Β19߫r$Wr!T]]O\)~ʩF*ɺ M5{b6ik]Fgb\m5M&M Xjо#9"rt㔣+PImv2&cgdRדW5,7-;'Jz&%}hukl >](x<^(tfϡpesvY5ev<s6s_cI8=S#H=J$;;JoO鍽8 S496rtgXh#<9db˕r;m3Ԓ22IBfw"J!֮%9/XBI#,QO"@qFm=r潗O: ٺ8ǒgWC҄͘]ѡ19oع^f}{vGiOwqeY& 4/$ߜ NK2x9Bku7thwxy+K6eQ}կe&bfV6kf Γ}MFlx7kC2#RhYMfQ=:96s6=x5/еYb剔G3Q}:(#~gJP=u=UM,r|>W~{{2GaJ:Wv\$ctEu,XD$ϬK?зߦNuĤ{SgWsn;O2)4X[r#2w) )GU;*:ղ攂7wEesW)S}U}ϱ3,V^Y#Ny7,oSwK:uFtHzY=[#khrI()yF+U碌WWh饻Mag U=XVg 0 "o:Xvdw7xL8)`y$$YBe$*)2I4\e,K!$CO밯; ]<a]& u8wB-#hSf_ZDv7ٰ:(sȮvQʹ:Y<5WA750_vӑ.󙫤[M]tXLH 0f;tUߑOם&٤x/@w'hN^SiYa(XlAvaѼ+5<1OcB+MYj -T6TLHT5O]^fu[eZjZJb$L2VJM\E=#[[5WHE{sDQU\}죯sT={W\ٙU%6[Y\b'k"B7sUtdE7;CTcaR١ 'sUtbۮi9ήrի;kUO2}|y zx&WDY!̩,Ifeg{XYiX{bYYe*#=UbԑOlr9$aa5vֹ*')JUn]eg!\d8G:ፓRSdX;?rȒ^;Jd/٩r,Ǭc9f397*9vco^Њf=c&a92Qo]CCB7I{2C*~JEQ>xqC4'՛+ ~!eZ~ %^Ld霵4QT\Cҝ9ҍ>;+ -Ν' T'8YDž7=z M-rSΝԆU%N&ުi왒aN-Y5:3Q&s5D) -.@PAtpp`d@A  n (@iǎ,;3 DŽ]%uCѕ*Ex򊈮YQi ȽiJ!l< ifBHs`@<Ɍ|Ĝ@F@c`Ոl?_Z4|m0.97[w i ނ3D p#R+t$1װҖX7b 8 tpҼqb:I5ÿbxܬ.+bu28.W@Ƹ}crĖa -Ը;Gl|g7Fӱ@بxP"c|<1cA72?(,D@&{}h:]l r>fp$ak-A&h'&av\S%J)3 g;+ȅYw2"S~jFcAV)Bgy2ѭ ri<2?Bc -3G@اLk)+Oh?o$ǤB#bBE^J8?髄\Sĥ8Ul7?<"&2b{\-|5׵Vl3Haֻn0㞛9j<j{|#ǩRׂQ6c| w,Tϴ.=Vmd㎿g4m;/6鰅: }۱Ɯ( 1NRW=_98l㆔`Rjv[bE%??S厳U (-c5qLyexD? r -n. Q}UcEe`YF_R>bD'FYcLEBp6 1=m+! OpB.j({QiHwc>@V6HcA2? 8M@ b.pz< hop, AÍjUgecsk 99힅:؄rd]9s(2BYЛ>B?{T -N4DF -)}="-#9qoEA><r [#F\wsjQWdj({"!cl#q3>P*2@:6$eqafVȡ*VfAV a1`Q!\{ -yj*W^ȅ S.Pb5R(DNն"e;2dr/2dVpАGozkȘZOn8LCno8!> WH.2u?_Chv jȯ -T,C.md>ؘ m0!;!"F0Hl?"<&QcD6%%2xʼnA@i*$h%+9DQofV\Hxe!dx"&!ǾO1Q{8Uq=F5j%SKfC6y279t~鰒:P$!:o:l%uj"%$*e9QN_%j8X⮧ *xD 65julwk89Qi8Tc]_DͧL.Hh5r""eF(/,U'_x־B SŔ`'uGYl> \S5D۵ jV ^A?5_a~<<42QP"*~kTPo~7Ԩ!s1CҠ -),ALE?ANoF/FJJ>0un8jJJYH|iE8헟Ш~BQ]%O -c7j] ҨTaԗ`MYS1ˣzW U_cDV_-Bhe^%o_}Xzi Zp] 8t5DS5%%s}6kgu\mƟM9?^_3L݃=H <^<u_il}H4MbWv9$Iͧ&Ud~!fgWhǡ%hmpsT9?.轴]%A}}v#[B$ Ŗbg;fm4!⠱WP@ߤ"@:NRӷ\W.W=Ý|Z9n/e]g -vyspNI-F#Y[*ݜlw ݭ!_Pxw Iv@)8]ϵФ{ܽ/Eo -l7뻃}քTFbx6 -댘+U߲ U_ 8*0"wbk1_pV. Hj ދ=BWw36=b@U`)!KRVF κd&V - M Lgd(6oo0%dњ͋.́mxx A*o<Ű|6~7.Ur8ODao"B0G\^#وZs]_ל¤O0*~S)I{P8Q1^δ 1x?*+KC!$O4mZon! 1\{!HdIsZ.r0bYh_;5o8gV - [V!%h _  |u=lCS3([KQO -"yHF|SFͪEd [n.ou +>f#,ÿP < -,siFFOѬ7h[ -oU -(ȕyw]F-otGex^ 7h" ޘ}[+7?^/{Noe=7xQlш7Eub+<3y:',kl֜D"E_Q'3o[oزQ侓/^Rܷ.c`Q7!V%*66oÆﲙO2<r溗SA@ f]+n7M ݑ]{jfN(*/=][1Ϊ'a,!q÷-Yd~h /R8oupI3+pk?~6Slwn!VuNa~$a#uܛaMq+}bJ<"d3nGI%:w/[`;Nbq쳕`ī.3ޔ fjUL90w'ג#.{n !x(a)J<DЊ M58p{ޕqgFtJqccNdZKJ>(jR'DMđuIKqLIG ()[k%iN?x Iew+8(o>x9GȅbN[a&XWܰRY}gspPy]8dSW/vtySmabO -37G!4CUsdT#A摌d``fpk9=GRJ>;rB6ٵ8|hߜ4CCt,l]={h5}[G.&0LnI(6?vS;d2өʠ"dQ׋ :ugm̀YmzrKaaԩj6YaIͳ5En ^W<.[Kud::=⽉_qron\) -hGNkjk;ssR,۽䶷Pآo:̔;D+\;÷Oo`yĺ;ڝe{3 dP@4D -z#ty%~ ob8~t<|[#M Pk#G ^<^5Kzg rF@"oaJonvvE'#Ɣ+Nc΂˷*<ʃ2/ ܼH\ϲwH|z -)/!Ezʷrx8zA>ϲ_K0h\O 0:/HғR Yz_Fsbo#OT&)*:ڃn^֠eߞ}ܟMWWUx6c? qa=g%oĉ|x`{D0H/k˫Lj'_%oؽ9VT4.__%|8eWz`v~>onYTWӬ]?eH=h߳w!DsJL}FX1~ !)AULTeI>Ͷq׼6YEoK3G*Ty{豸хɑl8a6?q%BԜB dmJG -nÅ1n Vɡc).zLR&L[NI&d -g -ibR] -Ug - x"N *J4d Y#W^ڎ"xuk6\on0H+t8 &CC_5]op1Ԭaj#S~Vd›FcV }Zc0, pd5q"[](]n1aGb ų ߺhY$콁Q -+zOF1VMCYS8į3TϽ؍\=9VW)X>& P|̸ -\`.Ȉ%qE~uI6A\@DTx0K'i^s[pQi3+b6aA^WX 4N -#Zy}%.X?d5>͆%i2܆PG95. +2ތAk[?:v2CMnJ^@:)V񬧍*)5 a d7/id/R%ĤA[,FM8k_ -?J`Bey,#gAAѧxG y]B:P>#B -0zXza>vbpJI>թ"BFYƛO~2=灁\z[ô*Eԡd߁yO 1֪ᨕ"k>przky_qĠfM+kf8e0w^v”$ĘA c>\W4XOcפƸEB L41KiX ꍩ"GyM; `Lp9 N}œc!t8/\{jh<p7-&)~=1|X89غe1bQ 2%fQF$o"i)zɲV;pqW~L󀸑z '^ǹ6uJqJC i=+ C9AfQ\`}< -`s?EdFNFYn1 ]axRXC%G';"jWU,ӣM:i1^gke]D{o@3^H07RI32iTr:myaCcT4Y|In-SAQ`5q5zv+ÍY .pHaL/m h6qٙ:21ֻ¢bUW~eB"6lj>^/qޠp[<`1l2:#QJڶ,~cDP -pK½+E󆴯RiؗOwgqȅX?݆pr:yj\j4Ѱ ܚYVXo9RϦ5%m/j !Y 1DvͽGÿ1~/p`,70>I J -^L Mb7@ʬ~983{< xW 5ʄe\Kpgg8y3EO0 5UmzIuLĂ6?%KGoT up8AG]7 lY\IPf~m0iawI_>_3-=q5UA+"Z*0X75q9M?ԂPyX&f%=x06+n+@[ b`(rCNo.$d[vrG p7۬>8H2v2[n h%,`ͯVfV^aQe,j!GӢ" :8}A6B~IuIJO11P@cV&- -ںf\BT>ؓ` @SRfa+8$iԓsqzVd@HszMX JYpe\/H_A agJhF(ș 7PN+v9@Lk͠2^狥AZѵnpFûȄA"pXS̢=;3> ]s$# -Q{#V  8zC+槰F8n~=gYOPڻߍrt -pH6 W=WEna -Hbzֈ?Gfi>j -P88$KNe/b'l8jV *bݞpHv7;egԥ,ԥb|U} Z)'mtG@m⸵Ao)uooՃPB!Dž G}=T4p -Giwfcܝ.F 0Չˬ+<՗:Xkં~C{0vBK'ԫ{D3!&xN!|[Yen4H%\^ʌ\6y[usk#gAnռLM$*c~'hsUF,AT(K/GƓyugcbd&,vY!g(s=lMRV԰Es䣙_ޖw۷H7b=HAGț>k+>s:[h̾xcGSk-)pH"A&\!_!,S t[âF=$iYc^p\ѬZhk|U7´A3xx!{?<³n ;7"Έ8Gƫ#k8^Tqy*(<5Fz6`*}d`OQH*,dIsͭD.>o]sNmdK}h*t+zCӢAi{l)NlF7ǩF_& kYH `zWHJ8kBܢip0sB;N#vh9Flg,/=8`viq?Zb -6:9HWٳ:f* +`TyG[(8lo{:zN=xO=!uE5 ʸ}VɵC -;v9GguV7ž\u0*ZZ^%i=#ə\o);ʜyd4"/xAm*l;lM]pGx6dw#ܓ[NP>'M> X{G +P)Ψ&S.С3HBخ#p7]bM@\^?" 1lpl UnrW9mc[7vjt?hkx0% -.s!N)mj>`NrsD1?eM`6V'fߎrH1X ܶN~Қ+֟Ej}HN^qE{][9&\gG9Mv k̲T^2uƔϸqCYV%%=)}?%R`TC*y`1ZrdVa\pDO̫t`­SK4m&,1;U\#\ium9Ui¤ sx:``픆;<J#;Z02}7r5KcݥZŔQd*P"n8X}6 (Ck=#r-iՔ;n=WgBiу7S:-8+YB> T]d?䑘>.!5Ar.f kŮ֑ qI\ksԽԞS!O_*M윭gJ/^nF1,mV9XhH]N-^GaW<|%5+i(ᄉ+~T6M\ 覎jC -H; ![C n)^z -S\w9$ح" djrsf+PDPY!Q{z #*dlAtj{Tàb`I3 OQEWA,{ZzjJ6cH#x{1g) __*_0L(- IVV0r_lY -~3rBD?#Pdrh;C{S9wv=bdZ, lL -hT̼g<U||J[0fexpmNik|"860ZM  -ggXU/( -T@{FYe25HxE}FDAImϦocrż@fG-%#8sV/I<0"oqp!tApup7±+[s%c"$M@,}S)e|4ux>ݠ<)GPEA֧VO/`2,@"B)q'1P;{~XurT"G h58!:Y>FZRr 4?tkM-f`G +Ø,H!׭T/e~Z3**L/ gJ8%0n01d[JQ:D逘Λ(Λ6#~:Mo>cَw nVQ C$PQh}x!ɭPLCN&r@,x]ZpD~'|"J |L0@UNn"H9AR})SЇvo&A:SWikM Gnl׀PmNJ{s-YU -ym`\PY#n4>d;!>1]Qc^O'1OWYOf@W_5Ϻw)0)xZ(ŹvSL be`Z&N9v4ݳ A/awٮ[B&\}i nG;8DMfȚ.T3ݩqȚRSX]eS:8c6 GcLc@91Os"SNJQcؕpw'BL&XJ n?|uZɟ lZl0beZtjW2nT>m 0ss`MBaM!{u\/Y!I^qlDʇLƦ~$aSfªԢHӋw,c0@߉er$+=h\K='ҥ*05ٵU.k#>{>VQzdp4_~}-ҴJ1VI_tvTAM >>®.V}_s(`Nkk B|A]GNt l#¹^ridvVrDirǢ%#ʠ_UŘ$h}r:=(Ye3ww8 -sX,SfONK(`5`l-'{9zbdcC],YΨA,p"XpV=D$`b[B ~Qܜ x-OiiĨH DN_# \\LN2IRCܤ|w-ͅѺuqc橶"0~_F8MmVsD9;ɎK70J,3A L{ZB2Pi[0#}jL}SEYgvZC w"b=ka.({5&ȨW>R*<)Egؾk=weԒm($@PCKf Dx*k$QB]AZf.N62\p@ UV[ %,Y%J jz>i>he<6xȾ;oǦɱV#Z!͔-bubxy0j"*~ xG;RNl:JQCC⺚JګQ6exhD֣m踈.gxT-ƨˁXhg0KnyKu@tpljnPf.0f"`v/ (-sF.κ>*hX4ȞB묔VQ()}vҭB'ܻ O!ٶ/_cn#ٵxz*)"BQw4DkMn{$!|L[|l_\.gb=3Vتz< _Yê$X ]CtHA8IOʫVlX6*yjzZJPPs|C.p.V)®MDbG[G ܕ9˅<.Qr!hA3Lj-I5+&(5"hxYCWY`5N66h` -1YyާIzKpOgX`D r$XzN֊cve@c_wD b|)HDzbh/7 xLĥD'8,0E\q;[t`Â( -^0hLdR'a,fȉ1;k Bgď``g̾)S$ >ޛl2Ql 43@P3u3:74^3z6ҎC'^ c$>BsհOIeMsY0/gt7lRnH:y568HF[`sa\ڦF vY5Jl HX* ZVN -qQiڌ B"N[h(Hs -ƙ 8 ?rp>Hȩ8j8 tKfc2jUTdO:Hl^[ɚs+9}ΡjІLzhT8FuFbG1r\;uM@S*CrU j㰓ݡLR.di(UUGh+^EA8z+3Ÿ 2^jqD;ǖS:~6;& yq"2{A9J"[C^9&Mn=$( 5GnNW[џN!v G`{_a Τ1$8")!Pq\ -Pq*\7>77;['U΍:eP=/LPDh*WBAI+ \e#G\Sm"wGLHu1ϳ6>ũ X ML^|&Sy>J,Wwd*[bDR*;shx*{R}GYr -8CZǠsM_x0Zp][:ެ[`Iwɓ[0c$g k'*,'̬7r -oG 'vIۿaJf+yaDE;1S׽^F56L ^tSBb}ĕeT meGvwyYheED:Bn(^*YR+^(iY 3鵫41RK`׼x1-r'7}-vqmnW(\"0}r Tlly*gP7 -Ԫ *qlB3@"o0X*aN.}74$(8[{!J6TwFe4H -!>:]Er! Fk~T¡-u,@W0B )U3eqK䫏|4wɮrQb\*;PU/wAPL3j1dU^{FI*_ $%EJ֘T p)d6{<3TƮdҀUы`\ّ'P -hG\dӑ{bSuIM&˚8h&H.)bX ]o@>=+5BO<%(r!p[IH,=]'tyU3]],ͥNjxPp|7#:(TVŲYHiWA/J@zPTaD :wH -y )S=n9sAibgM !2 k-?ե|(N]rҧrgϩPiHl"+K^RPW,*-b*D6P(%0MQ*́Gt9$$@ΤAkoؾCIv<$8GEai {Hæ B!e>6 W!(>ʘ~`GpcQy.ty~D4?TF0FA FG$B/‹/.u@ o}0Bۉ:2QZ(Iۣxyw_QM1OZZ=b^*֥KaМs%MJ0;DJ9O(2#h;eM*^Hѐ=!\TET@ʗlҘ-BT`g@ܕDUW׹Io<)1}jεs+Va.$n#t.tŋ]J4j,!Dх6}G6jzJqz6_$o3BMM,ϔ 9OUF XTzB$s P(gYr5C -i8N݊Q: (4dM8Īf @z Te#h2Ab(e< 9߬RRpF=ӸǏ -nlV鴈 -& -6Rg"@*̮ `̚\2nD(A Mp0uFZن֋dZSo AL&z -D'UvMv!lQ?pT9VG5DNRiBP ibr?i*w5;!P9vc&m`fッ;B~`jLO Jͅ7(B}G*ιQ -0ˍ%"H~/#Y 5bX_D&H!S* -(Cs7Ъ6Z|B">+,o Sa%0\!P-2"| N1dk_9Kբ!TFڠ^a x"0 (8jt=ccxeaZX W1!ʻbV:~~O@&+r=kq?NMPDkc&{;;^֟ >DDl|(>V[̐&ZnYU.'J)ª=J'{RғF?cPe⃨p$P GI"nlw- xa6*8sC0l? &'`A A[Yٳi?ǩɠ{q - P,Du@[>k1uKj@r ߚ]LK+-Nw:>Smβ'LFc0$Q-TFGC:d5<ܮAftբ)ptŷ\o桦=U i]Fi\TU~I /N(Ґvߕ"x {6O !8"* ٧7ANu(L4b.R TN{7󦲳PK=Vu-p$u e )-MP.&q,vd{Zt[թo+TO5(ENG0Q*S5rq ߲XZ>г }wUF'C65%cn0%I 1P+ 0kO-[ZK\(ɩ9:J(~ɹdÀX Ǧ;w&H /_"oi1 -zUtc(nx̣Š(㖿z)̍EerhEVw-y(ыq>BO8 "r)|}e| *J篌4 vbR0vImRɒ\N1HP߅߿:_hEE<+I5Mي]sU/--K4vM3~x%"-{IR؍ u ڑ^ª ^& M,bN!/oF ;v -VK}ʗJkbÕ;{}i85Ɣ}) YTE &/`c+?"o.`$gaNKOֵmB1U҅6 Y@XK^'EO^yryᓣo{DEn8MMϟq VgBzهeb~4Eqʂx2NM$_JB,'v,zKe> -RP PJ(rKI2#a(w8@GTeD,B#)c 'PRUݠp O0a͝fJ{?~ '\ -r&"|H 09Y=`n>R&54`)Z+4 {X$h}zq8quYRQR$3w$Mp37ǘz԰DVtD(i([6ylVj1;1tr@b?!3X74)# 243m[H ̊(cƒ''i9o5;CzVC8A8ZʜY=kek͙=R? -+pQ"6WU:lqD.Q4ݙny 9TcxjcТH?wAg}9դ1twz$Kׄ -x#Nd - "mGqtf v:# UJC'a\=c1 ړgm=g2X3?PU֍(70OW;ae=M] ׵kSPnb~幹8KqMS/|>?l}&b=<^|!F:K'G+(8X#qvOM\c-54(Z߯'/jVEBXB;F\3 t.ZWr -k;9_}buc+LP,f -3Ո*goB:J18 : *G/)(:tJ:{-n -Iz!M7Ck@ֺm^Z(Xy=D Uř apu ׿Su WUǿb`67ZRW,R@'UP{'>L7470H+!@3e_O EH!B$N$▟QcIlYo2/wJښ0`N&ZȨ ÀL`~Q"TwLe> 4LK ]I OYJ\PDm_:lO T3x!5s"x܊|xBMp_gg/*:hs1 8O_[Ig9fMLKm戗fL3zw7=[=Hl -<*ph㸉sܵuH ~Ǣd&Pq3Ƕ-_Cc]uqg~Lfش^9L>׫eYю01hr<Ͽ!m>bNtwd ͢.V_E#A -43v5{U1 džW#\fƜIA͞!D?wɇ9,H/hRQ i=$՞:tk[)^)jLx*Is5|M꟱A 9SJ`|~d4w٧5u :UʎgJ0&N/Q#yW(X6'mF$k[Q5שXW5%f3dxZX!?}J ?>R7<>A$Q]?:ZSEPqd]PT{)zA"j"\23610U:ޯ#s7P׸o@^*[ҧ/BŘίxa8ǧa|6hK>e: (G}vn&ΞٵEp[tW)/K},1XWR5b&QG -*O pƚ(V{~S~4'T* 7uI"8 -8s1;*428` sE{-tbRSYjAM"c]8}D "Z/05GKzTqgH#c gUM|c#V#ڮ%ώ~]š d %Dv4'Ws{O޳C3KU7߭{~&:9q6fX8`9p&Q+EvG\ -;#-Ā !-O4@<Ճ=63U'u@ ~Րި>P&iB7;FƭP'N>'05N'9>Iʘjly#=R}ޙdsKZ3xoW,]HbVW-<#h PnVOgBB @xGa\>5hSjoͫxF̃yHqz8kɒj`pNt:v8d<!F4Rf-^!`yyBv$t2OipY^0:5\3p6˷b+WSq -geqIQCTh}P)\ /gҶY4#~7 RCuG'BY?@4t1<<)[ @ c6j[Xx8 |ъգBjPO{㤭 -Ԭ1ț窱Q6\L.7#;QIfB+~ΝOs7PB%ܵ N0l5ušlz*A9Y\Jpz҈^!64%wu);om[_x^7 odw O^~p':nӕ_zҕ>Rp3`e%g네[m8 (g?(%M#uk@( C+}ax@ȠDžBF^זz5013YU{2fd SGձ+Dkr4NPQzS[*0~Dx]/.gbW@RPW) - L6^aX]_>$}0iO'm"]BY3q:Q;\̶w0?$pZ$En;dQoe|pv3< -dH}o܅{' '/@Yc9dGDI{2sVzXRWbݫEKlT*AsvhW ̌,q`rG|f#*m5TS)8z4x.#fc]?Sdh+=`$"*?kLZ.$T8:kR,Zv_Wf%^AI54 -N'?LO@ x1U04 ͖7re(! E]Y #UQm7}V\*_;N,TԝUUͤ@Y+;\]gă3_C4WG8xCuDža80+mV:6UHȶ?yW!2ma A~!DgԹnU= 5gݟ%.:zy.VNq\zmښ(x"5Ku,&hi6?wwqT=,jOGfKjcXRuѕȈJv-4؏LHkwֈZf%[(B  r.{Yz-kuKYJKڧ/Tz*#ɠ4%+r)T - ܁eno*F{Óu˄Wg7N#$VxtɩVV׀aWS)4`ԃc,NS -•hKѶm۶mz`0tQ3P]u>m{o?cs0>3339ݭެkwq7]ճݹ#;FY/Tȝf5_mgu{׌~GZּ_֓]n首wjk##[/FZ:=\py\"vZWnuh\{zwm[smjr[[Nsn{xkzif]WKn[mŗ^{+Ƶ{yߎ)fs^7ukKo7_N7ڋηw/VJμRk-ŝlλR)VʷZub7ݕb\ݶ^~/sZ{wNW;ݸ+Ǚq_o7k5kf};jkߝ~3Sw͸oڊ3[slK5ϙ[st7Ϝ{u:W\K~ڵ[\y}ҫ{/Zjqfy]ki8_{bmVmq^{"on1om9׮9'|syf+m[wj˵Ƙubw;޻y{qVurnUgj9׵V|sƕ[yor;θ΍޳ߊŔnq[5Ι~k5sjޜOyՙrgߵ޻w^kޝ_ڱ[oΔn3[Zi4g+8j7u޻物ŚN{:߾9޽ozo){jj7n7ֹjwTj\wkjO^\j;c\ߝ5]SW/ګ19=<ӫ93Zjm[}qZޫ7Wwyڼib;V㾷Ιۯz\_{1j7W3kM)j֚y掫-}"RMyO-buzg1X3[kƓnytwʏ읗yJ'sϜSgvsι8kŞE +endstream endobj 951 0 obj <>stream +%AI24_ZStandard_Data(/X$ ,m +m/a!DfI+4 Uo:r 7ۃR-<NHB3 YM=Fv̼ Ѩdrg"-I4jy3T;Q́UWKBE\'Gɑ53#څJi7ӑhL(C$AU[kР:zГl 춛 +6do0-F&kS53*҈J^綻UZ-Dڄ#u)Åu/fIY#'gJ>^%hyc\Kg| Vzs C3ޫ$YwRɧ7>ʋ4mɫ=úCIݠw,)w\RɜqP[{(i'c98s85S#3nN/Q@p`! D p +<tԈ"ΆE󣡟-C:,s1g>,2:V +Gz)eMQo6f#B*V=%tdjs7lgrG2z-TKɣD *IFZtD8l,cjd9le=]IL5o9g[D%Umk.ÖX˟tjԒ7(w(Kib7zQ)&#l\ +$o,!qqu4E-RZ'1+=KָLhU5>Y,4a;)gDc'+Qz5c," ^>,uc,w)@t=MuW/wg$Q^;4I(>-5q *M,gGVOze.mАgJA hZlGb6n_򳩓 2Lj?GyH$=l ``81eyucsRI1 <&`hD 2 A (Tp!B₅L@ &`h`H1p p`"$DĸNJp^U֩>bFL]Q +HL)fwCog>¤9ՌB .pP<@@̰iJ'&O&qZ'&pP<@ CN= 4+#h`Q![ky=aX8,- WTT|H,L`?!ly7h p`hx>8ILb CM Cw24aQL=p348Т +( O8(Cdh`h2|A1Cb1u +04 锪U^Xl&*lA?x./q{AtZ*#2#a24 ppV/p.rQ`hxX04( [,hA΃bPUNTOKKIXO&;H5SLeFҦf4sGi.tuso?i*mIU{ka}YK5·Gd߽fGFFCkOf|(ϡ.PtJ)hAAS-*+ân +R`r%&p_ +34<oP(p`zN'~8ch(?Yχׯ'A K\:FAgh(O,I4LX.q0px%_) +dV͹Z#L[27xe,3l2c07jiC*&[Yit^*p@DDАw+Hj +BxP, +CAP +S +pt8;ʡhr CC-l-pĢ +yP8)܇YG&mˌ& ٹHwY o(yйZjuUx2#«M&Qb`ЇyX,""H<,8wO(rX<@8"JƑGX޸GQ7*32lTX5 ^wS̓x˚X<@Tch|Axi14P갲PbQPQccZZ-a -laa6k2C ?~ - nHXhh <" pS\~xwvtN` s0!hqC/@Q  804LccǦ` 04`0h`h#A PP +(D 0Z ,.p@ D!Ѐ *p@L B$4 (D1 ,$RnP~8"o^ļzRTSsfҽN:Eh٤5TWM^4ՙM$? #k2EumќdÊٓV43$5>Ռ;*ߠҏJ9E1ЂV>R9iQHG!,9>m,>h +U&; Y݊2EN]Z2qJEcjJh`;e:7M(VU2H9{yg$<|^\;tfzyU;!lNCBn1YEk-!]VD5>!M--2Vy+hyED5 L󋷔}+1@yjcnDO#GBlUXG"Dé2eQm5)32*o9t1=WOLdItuUQEsYXF&)L3}^%feM"Q +3ISǤCL22۴Jm,!{,ʹ_K4!&VD,#TFIX"}:e)gvĖѠwXjwG~'Lc$͑\ΞU$TDmmX]))J+#Dk%GTՊ+'o"<4-TԎɐ6;5K^2'84Yx#lZ}>%I4HvL)MړҤuT9BiLRSkYfti.̛ҮuH>:/w+ov`Ɏ$W|W kΞiw=YuJZޓXVe0VqS;#y'kV0R~ExJވFٴhKrNmLDO]o]Uzt!f?WE>Ԓy\;}a7c輜;qLVi #4鋆Hu>Y)?h)Y`K?PYN.Sf #ɩin?X:,#6H̦j,\9vwv&=FMً辳IK%H7eOt6̿cʿŲՖ?g}\v|2V*Kج[ĮˊkJ]_bk4{F~+H_״~ϖzll+*-[l_{;K 6]ts>>|Ļh/Uڵ#tUDީ7ϫ'6Fifnd?sƺ]]})5M^G娨FjW%Q\~Z^*;ШobτIJݘ(Pxh/ +tӆLǑZ"lJ46ɡAXSgyt; :WiAe3{fwYg{lNÎ7S:0i2W$s*1i(' ե#(:N"O\XDxʉ +XBK +S?Z_.wGwwso*֬e~R&螤C3{=[}MhhamF̑Cg'bYt)[UJmc#"׌d6DV eWJVEc'1cUc>;X+"av1J#Yg5{U:D5<5ɌWzjXampHljz򘌙"Z&%B),Z(EDfTfSf<ݶ4 +)%gѱh3`J>DCVceh6y˿Xb} c||m%Z/qTλug֧k!J_K$;p|IAXHy6۝#lԩBAN1q vģsYbH/5u=gԨІa̘bUc%&}G8m;:GF?gj~& s<NUl:5hGBv,y+(PFs3I͉dj- %3Desy"LMtiE$a95Wk^d˨ bv0scVZVuպޖ {wEb:Xj:΄>xٙpBB6+} Zu Ig2E~9 JWcMaΨW2-4-#UѵهeLDx|o.$hu3G"Rvj{Wh,ׯ➚ 4XUMP֊3¬&98]OBW[$JY#Q:zN4)A4u/\ݿ(X6&/,+bk~ToQOd5hM1*d7#ٜfd[dyM[R4wO2X#»7Ғ,;iu Ѥ54֦%!iaDF\dITvcx':BYޔH2q ˊ~]6cuiزHΌO:dhx322Mt fUr˪#O_̕&řC㠺)rf*s Ѝeuh4lQmn׳TUaجڃ +WI_M.FG=}edROf&f R7=\x$vD1O<")2& =)_*nhGruUB˜_^IϥFhL>x|NӞʺ+Da֔$s:e(3KM\lGuIˑ8XgY# +Mf⛽8(fI&g(K2CVX-M?ܳIZM $gjlۆ$'_>I6M6J +f~(9s|MʄwJ _̪߮iO'#$c;l"1%<\4k %RcTi3V3Bq,2ؙm_i'3q?w2v󤈵*9}גL91]aU OT'§RQ'!6Ǭn lyl.SlBr^JACC,AwĈE%wxu& Qh<đDH(%%z3k4b i(Qr?5$i|"kͭtVTYm{ NS{M_gg6Î*#i!*Ɋ֎\^iaT7-_7jvTSN=O.X(4 +]dr_ Xe78x8X?R,Y2H'R$N  ga~Xݔ݈Ԉ]ae7s$N&MMj܃x›q-VgQMS龩]S^Ss]:[iX&d:$$t5t/kf󪬇.R+u-'Ѝzv:w奏^Ժ)ʅ'b22|g>D2!!M WO퉬z\m _ӧ1+zv͙Nڧf5᧕:J~vR?RgIՈ%Ei9Ri9$^~6͑I|+>M3wvЭUei>G2yl3nɊi6;%5;5YNQ}nt*ߩJf2Uwb~I=jvU^Z/ЮCHjyUUYBEBE$YH&c)T&STB".HYYiQ% (t]rr$:9# dHdʈJL'9kehFprX2F'X'3&,*{Kr%GKݕ\ʕrJ짜jdjYa\,fٜɸ&۵mt&vΕ6ٮIZӄlr +Ќ[LYJ=r#^(G7N9 +Un'c2vF&ex={UrbSI~gRwJVIӅ?{Ba)Jۜ g^6ɱaN]Sf7hP~z~ +=g35#ѱ95YZ!_#KBK Qz301Oco#GwF*)<“]&]}SVh&wJB#E5! tS],&}3쨞FeY9nJ[aSxTڬODʣׇ>jqJL3~(ۺꞪ&cV9>+=ds0r%+;.1szC"[[Tκlf,QZ"OagV累C_ou~:bg߹Hdev7^]H۫ۄu#^h`FxYZ6b&U _MehXWw,W +.Xz)3UI;$¡DhjSW̓Q!>)dwV$ l!IѤIښGaHiH9(k:do1$̼ӾcZN'̓''*$QOYI2,dY] +!zج\}qDXB 2N3gĹnd,DӝZ4j"ЎΆEvACvˌWYUauNw6V)tٝ\%5jÚeFj1s_R||4yG50&={]-θ;yGt4O;Eb[ ӵ]i7 ]yZqoRW"zy3EQ&{NmcUd9f1ɹQy̱{󪨇V43锉|#7hW -tNCiVCU*'zs9\L ,r)gJ$N笕̙ߕnYQpx~>Ix::.[hl9w6*wvhw2VOh7dϔ srh9ʬ٘2!L(Tp… +Р# +,\Fu[@A"<5M;v,`i$o=&D$*W)#EWDtJBN;]lFMS +>e|L<ifB +s`@<ɌzŜ@F@ʼnc"`Py~xʂa'5cLH؍uwlq\ 6 +99@ qOLt`㦅ۼc(bSV a>Omgw2#Y/9԰mN))0ˋYeY{MLFPmdcT]II\Y'nz!jA?lLKCnV8ZHm)٧aq`ǠܦD~MCU+UN>iV~*QǛ+BQsX=Qh~>c] ++5pO0ݷGhWMW#sf{ FYEobALߨ)ac|͙;nkM.W1qzw *⎟8[? 1年-}۱cNPwӮ'+kceRr-1S \8"=i*2/8"ck:FDKlv?έdgDOMAQ2~L#+)q1!A;ʠU{I^_a8f[OWX⠍ǵ熟oyHʇF=q5Ts ;B?&A7T6hH p<[NFY8=z7඀_- Dy'An +ᵲj~e>aTdupuE,~Ϣp^zbM a'Fs cqjf0 #Ÿ g4RA +#ZBi@ un+2 C8| Wq~UT| 9CQ 1lI 0BFݿ n++9A-aYò/vkue `N_LFj*W\GNJW.0d'Dbj2rW#2+8ѐ9=(rOX*''0GCoՐ%' '2r$?KCCkhkB5LȐ0 eش eD\ Xb0cL6#1" 3" qKTKd췽I8,ҴcȋeE%2**pg`ofj+:xbDHx>" LE~LU(&wxCj!SKk2BK5]eUKI!!ixӑ<^%_rjq,1,e5VnS&)?Y>'A)8֞|\k14֜Z?gb̑bY"4;HR(%.УςABZ\XkjI'-}8S};9X)*<,Bv./L㍚~{șy!`>-8~G[4]E>m5t_Q:ԏtfj`$5 J1Ros3YՑ:t6h2qvvBjD:_b!>XI "@! 5K]1f,W/+}#xWc`r.>؍D*%c`5<]`u$QZcF"0QO}{k#͆v1#ol=0Q1<}ɞY CR,6c/WZ7ꃨey[ QOp!<Q{?z)BԮ-탺ąZFվ1rPA$dUA-"֤&GA9 +8Bף/"ȋ#V@G2RG4n5Si ;Y=Z:()a:/jD`WQRZq& jQQt=F'95w#kX רqh\XF=kxG J,K=j!8TfWZlh%Ak')z<}:K4d\X֣hHCW $=knؐTİ g" cŖ[{%^:#{[SH F^xو̓1lRWؗ7 Č]lU</A:y*gKѕ4MQ/d>bK&6߲l͉kjaX&F +0t۵TD񶈓m"W²teǂwEā)evY$@ÙInhDcmWаdw/ǗCw'|Ri?&@gi@os-ߒw#":ŷ[u`I~8#7!ճFc2LUuN{zbՊ\x˓C:,p ,JW d\&:b'Wy~ +NR* +8q_) y 8a6+!i[M L觀'd;jOUf dxȚNmHxxEAlG+8p^clr@_49H> %x +\RJ& {e< +2 (pm\2+niEL\A᣻'^ oO/^-9ph'?+X︁A hhcPV@_w +4`R2U,cj4YğKij*)y_V+| +!c|;Ԫ!jSLGU G#0mM<&T<!؅z95bMNuJ022ϒ^ 7Cſ +VdXD؈{e1xTо%:1ƿЮo+ 6WJ{E쎄~[8fwl od~Ik4v-J#ݟ(y.AV~`cEE#|߀pA7o .XK !4{C}c˷㽄G}kMt}{bت_44Fz~T֏SQ 8 wPyhZp5;~ +3SkB ~zC >8\ IϠ~p,a.3RdD.COif &iDG vGlgh~y-Qg/H~C:Wle^j@+Y0yMG݌w5 %FҡW?ΐf2MGR>$H{N!2q^ޙG7|a,\$' +`wtg)/Dqib!kM<òsj91M*s[eM\>clWS+·58jߗPEc7nS {N#`8V04$yP(G܊U5J|BK2RH_93k7$%z5j 0>Lxx lJ1UP|@_gđ|*&qmekq%" \!ՖD#%NN +nN=Fؕ 9qF1U|>JqjHW!u)7|5!0^vUiKq@8WiXx !vmG( aNτ ʺa5rt[-a@qaʣ +j-OԗA6*1ޒ 9>,f~]Qġ}͵UFniu T._yeUzSL>'g]yZhߨt"Ѳ}PG+:gM60!y0Č %;ϱ#ҘN8k:WM{"(#O +zm;E?+^Է0k:,+,ŕQ_dS-özz&fu +>>`w)HZl׬CScHvybˮff]vﶳyn;y 2Z:aFZIe|cKwq:5`w&|w!e5kX^W='{ZixYsI4"޼ՐxZbdq$p!r`kUKg<3_qE{'|Z䓧?E'@v:9@Cw q<d{f'@i~1xopq<'O =mVxzr6YwX5yG`WESIoz~zOAd 38H{.E =$ޑ]כf)y/ '$ +_9 ]Camܷn+DJ_!ZE<<~^UeQ2 :~^ 1|^~S* _K1kV[i o(Qj,O|~jd5oD=f;iKPh֗Ю2?iP#Y(9 x$?%A%Y4$S +ĸ;@%Is~'G +uTWUG CX(ԑNMe淂dO-PB?d{_lIJKb +.OB֏W~ߴ[6.Ϋ ^!A;l=r73G@3AjbU?ȋ#A6_:.B=7EDWZ~#J;=j1!g@Qno?OP1&k8i:FR#]hIPah`Z#'%@%x_ XV2@Ha +t{\]xzWM"$[\#D pD6[(2G LIC) b2$:p@˿:` pY~Lz4@cI6+=}'E 1Ҝ!Lt&7h=eR9ۢW`i *9J:-c??iP'F3`U 1@r =ipv7 ܀wa ZaE~!H(%iq&.iIVC?q|rE ʄ63f3;sHjbYqL>u"Rv˦x$ִU!$p`+@ 'w>v"kNL@,XxZRW)j5dǯ]|K'U>; tB$^ 5f*S $' IfN m3/ӉUa*f~*٥(X\ED7֡Um\Ke$<})c6>,ʍOZ;|uoSu"6V5a^ SXfc)vjWv6Ώ=WN C- +{ې vpP,qB(cFt{! VWcWr! `?$J:5RӤ @4{U$ Vbq^ot$"EaJb#1ƌHJ/]F~jXٖaOdZyd +CzqF"tFB١ߜNҨC-I{ 6,zL@cq=VÚF5IY5:Q9RtgIgƆNHi bM +/u"_ C+_E٨b|O`i:AN =#h [υu!9"ZΜO@jͤH۫CE!M1Yr'NrVY{!:jգla-( wF+L~ou;~`א +c+sN̪w-kI + |?5f,k6x37Gn|pf<__.@Kf(}$Qs 5bV4ddpK%`1}50 {k)4r}%LvMKfa5=@L@d]3jnkݽ[N쳦V-E,C&v[;m񽽗WR|78>HGj%d=ra_<B~St K!HFo=Tyx9fdʭRpo.%@r@@XfK몶j=փy.bŚ CI#YtɨZ؎!2:,\?CynŜ-]I@`.Jmm%xO!L:ΰ_֨3~f 3A!xul|\#x+jG g̻A:38 Ƌ`%#7U +VBH9G+:sîlJvIiD͢s,F_S$c^v {`Ifc;7hy`(S yZowoMJ_P + RMVt(#oR3O R.:{K@,A!z?SƎ,7Ynu=n<]`Dzw0EQ{OwiwNUf$6֑͋RA!Fd,S_+aq +uf[3<͸0[E!8:NuxqQc2\2Ss o{ k H +('"'8Խ 'wMvӖeB u^菆DKZix)$zwM%?.b'[$2jV +ët|vϝ5B*^uEIQv$nбAnϥoho3(rܴ㋕|@CKT'0i1ΊFI_ sVN_9S +>3u=:xn!^:2wȓ%KX(^ ޘ܌[(*I#:;g,A) +nBƄx&haUFPF/0}`#Up7bB,e*̀b7KqR#h}YJ8^d֗&+pc}֑o ɘBR4?2D^w-ʞ͊l$RbL}vM]eܿ(n򉧰aֆ+" aeLӬ瀄lHySi7 oeҨ>u +r-ǔb-vC6`0=(e τ{ؚz朏vL*S(F`b 3<ҔQ|:h4x#..鲆!5͗8:A `Lv(sMp\960EfߕYL"mCVd,Xkt;zpҹ5">|(a`3x|/u+xRu ŝ +.an<"H IDIcc#:w vctc,N 0uN/82[bY.|n95T!G8yg@^O]C]'li.rXxPgfQ,¢rts:bd D;]#usZN(!65GahQZY-oͻW/IwmZkcV9;p`|C|0B^,BXSmn G!@$˚9QG@'],r6ʢ3qVD^IS,#H`FY*6'Qa괷 HV<:9)mMzKVMGSIe +$iqC.T|!A!fAJ4h7%5!|pRi4ynޒeUgSխ%ӕ%Xc* Mk77^;&fjt`'qN5288$es4Dx򂧻tOjǰ@/^FW3YTpS'Ϊ.%"d tGˁwb{ĕ̜Jo(3rL 8zh)%aE$=e0sE6; HE7\V(&|'An2¨c{)ARiT/}$gLpjR?p +*BxQS,ir ԁ +;Ah_p>ln7^ݭf+z7^6>~-cS@OaD& m ]wP=Om>mZ~EȈDb䶕uY"4k^[&+'R0Ur4uDh&?$Sca@Ơ@ribʎPH`ja<+pX>Jh\Ҵ[1Rېs \A>r}$uXe2ſ<}{PR&Q =3̊ygg$@ +,tNhܭ~*MHk?l,+\nmE5`b,>Dgd1)Q.07̩WSOn[8NCP~׃T/wMgE#1.b acߤe_kħWA1OY Rk ȯoR2a_OZ?`oe~8xX`.I?#ӷQ#Ғ? q՜/Ll\MA?y?C;&'0:SyB" +23#EWQX$ΩPÍ :\p,U8F;_,9{DusGwD?Uġ/dМs-m';ϛ=7<1Fw 9fkwtTsuio 7:AUP^pGL=;3$ T/-jDPҠ2 <2+ΊT%d-UI(&9,;axilpT +PkPicXp_FKBY/ċTW VBSw3;;ϟ<(b.zt#q3>mqz1C+o${6&cKy]XʘadbUrP&p~Z %wb g[g7NH~~:͎O;.]E|T&8=“4 7R'`1edEAkBu:&ds(鑦r8y9:>\q"IPș! UˡV.bZK[*a`lbNúpM?+ȫ}Z-⮖H6 +(7L4(CJ\#4-m9` :т "w&H+m-(:İI1wUa40R?$ +KHݙZQdMjtuEm [Q9݌ +6mJkg;k/ꅢТnT-8v|H鬈E$ܹ?#>@O@饥"֡B Kh? +G6_z7M +LΔy6HN1—6ɾsL$q7SF.gZ~%“G S +ZIg\NI ~uz"*G d'T +Sqjb9NK\Æ-fSglMd!eKk4l{s9bR_lsX>Lk +rFw>JB_cD1ղQ]z+ŐCPF?'( ).gSvb %n avu f D;h 5?GsQ7O6d}Rs |y*hPKʷh.GZ%z 8H¬a6 +gN~5|xO-L^6s[gA Y=KF~kCޤ\P4J(ytԉ0xN#JĎzER5,4ٟyȨ߄Y{sqfʫ9 +PvQ{ df޹Liߠ-gy6HL̅R]DvY3<6Ø +kbn7zVubL +k8AwK>n)-H +LHҐ$,`wbqfI>HETl aӾO! +\+|5*bV۝pF + v\=bG('vl+1z#LhAI!G$/Ic*<3 'C/czvV%4xD+b0@6 i6܌ @1.;Y$Fѫ #+]@})R2{Cg MwuI֜HۥsJ#FqNf CWOUAlͩGk+S>+ aPbPS(Df章[ 0Z=`ptCZDw5NGD{{Xٮ1P_دPf/ x&?L $I+"Z/JXVGn?My@0B4\*|9h|ak ; 77, qO5&Me&4*m3(aV|_AZde,88rLN6[s|Φ#L96ZMܐX[gj)&RurFòb25HX"KAIY:Ϧo^N m.Gqb +Abߜ#~ؿ#U9Q->jȋoD`7 + +W 4q@8@!! 8ti< z p:<W&(G{>ӱQxh*L[MQӄp8H~ Ϳ0{LeU&U'ju;!|`iά$:uI)̈́_pM-< ΀*GaS2^L+M,Vj2Ki̠N")I ܳw%2nd?d[tv%a"^}λ]k7RE`6?TcJձU!61Tk=LVR'U'KۉI u&D$!>L99}S8ÔT:G&"ر K"v#`Cp5(DɆ$wwws[+Q5S5`FE6A0(ԉ?A?1Y܀/'ȯɕ'!VptZİqHGF=Q!f(iuϘ|~rD)y6$' SWa_h(Anz9n΍w) ʴ> *_x*ttg3FRs#̂nMVDIԗ\4[-K >$,ZBe~<gJL ﺓȉLZ00\Skc@b+Q$&l8A*AfJjfiP(RBdpEX|[ + rQ Ϳy(TNCɱu5 Qyn6;2Հ|%FHr16B:t 8"7:I:L xS Si^ 6OfMi  fI_Rd$`OBi54嬊3s5!H6OF!T2 D{YaN:5JȀaE&?{KB^h? vf$K%F-B|ZQ3n.#(CdK ;ċ2[ ]=9R_Кyq# a31H:F2Dh(Qc$*pHoRF36k"Q}B  :&'mh%ZuI؃pWSQ +euvKm*(V: >j8'^]ՀrE+ѫi`%G<  ɷ+!ӴfEWG!dtZ:4%"2 +<@L5EzHh`RDp`Z(jP[BZa;dݰi;EccVaU R|ШҭąO܆L*}'c3nSxEqS $ R<4DZNoȔYfJmtO΋/Rp(\nb !Aa5@0F)YtiǫYeAݍP4ˋ*LacpY +-T4  I>JLP}Y  xH_f2.5$̒= Ud|ړ[|Qy*Wx AiL<߁ZeMdPTX"FOtjI,]bݪ<33T砚y LyN;=5-OkT}*0Y{vq':ZvBGH(2@:`SrAe\C GyLU=7GQ!I&&!DC sDv MSh{'_y'R)8`F˲tk8#p-9/`{"Vxl3 c /}!|, x6W+W-4 +YvXfcSG*6ѕXY>`Jث b{ݚ 51BTz9GQ2ppJ)J\CiWaQwk 㭸b]4P +b QiJ %%'Xg2UPY +jEx" yF.b#Xfm ԄaJeڍ,X0ʯ\I1'wxZ'P(hY~>S(6e Q fr}օSb/ZH5R@Q8X΋7>f@azOdB0UļbCc'db <c`8"2P7EAPFNUL,뗆7Il+4 ̙ow&2g^ s(rYN#04lRM;Wt!,ӷ&{^Sa^9 +6 APoؘQtU /G%㙝CFnE6P̢j +#!bps9(Q8gU36Mۊ8o9ī&\t'2q/~!Zёczܡq&'p=οe h(@|rF7S s=&kTW[s9( ^Gb:NSgxINs4]$pNU  + +,u퍤."QjE¦zhTś*0_ +#Af/Cr;ۻ$ ^ͤ>'[sZx;29:ud<]S{rcb5UNT9}@I|ّ*2^;!7kߜVmZTeE:A߱nG[F4.A& +U,th%*o=tJ BMձAiVDUsCAhi)X'$Q]K]Ee-tY p9S*#`hhs~!RǪ6}:z0cF~2t{ΏԄQgZW,>5*U'YH?Dm)CP1F"o @Z<=tJ,EVHyc*v`-׶|Upe-B ;]@7ۨ§Q nIԵBs5Ƌ~/@L ]x#hRy“5THXXÿ1lHxɮ)ozx>+ ,rǸ2YE$p +^8Ю]eZ9r|"x1,\^fsаΘO 7jY ^p`5V; N w 5K6Y2 C4]J̎\T-H^3p>@OK!bț[3&c}ߟ`8>3901:"1kՈ5 +?(𤢠T +,M??h0,]5;:svX /7Q ,G8 KEwdݕ-Ëyd!'u!XuPGAPkQQaKDy\sQ+ qp(i{b`;+XC&Pu +v eGN'N?=lHٕwax86+@_+o c^StPHpoP'YeVzWbe` *;,2B〩,}ՉR&UϯIYULq . )ut<[Ạp<\Y,U] +#Quĉ{©Jm",%J=k[΀ݽ),D"A#N><:?eO ^U.>SL}es#}8},5MI?X*M2FAF F#CQ/>.*-l!$=o)))@I!MQ2QpZDW\:Y]"ոv!ú$(5-w~(>\5hlk eA kr4r@N0d{J#Ȕs9ey!re|CznG( j4#B U +hWI?hJږڲB3^#.sT*4d,#pЅ*NK4 Uz6,\7C?!Srާ7ЅOF3LB"`j6.LJ)}`%ZgET i+O*.%Tn-0[Q73Oy:+'lHQ"+ L0H;bWcj; wn"\9ldRō/*jFdf<"0(R);,p VD-Y(NiHʕ`W rnD*Rꒁu% +KeANQf+K3FS=ߘPpHp?8MdϸӏVŴ,L|3x/L@!ޠ:7_c(>#?&bW4s`Cm ٦ҩ#= sNEV4q"8MSؤuI; ۅ5[,XdktDS2ִZM39:׻O#}u }]/j@-wǜ=Hrи/MD֘(ޘTx<+!ZӕHxF5^n̔DPʘ{! o[ӬLC}jU*VCU!J(nj2:N!%D 3|T:1xLÊbjkrC`[T@5g[k}PíjCrn$^LS/~SNpv?#Xky]cUS]֕)S6\rsleIo+`KrqEkzON.;579ZckaCdDb,rJ?q?^O!ť ̞+Veg׭O? swD#IB9E_I$B YGs7Rղr5sK$gȱH/mKqzPsˉOb1MwReb0י$^t0NLʨ5Gz ))63(dh|5*T #6 +%-X_Z2S/@&M*w4^P`!^|JȱdSC1bkCpUx82 A¨1 +;腣n.}(ڥZRⰠ:ldψ!_Pҷ34za*-f!/4'Th' +ϩ78XVo^8_8oC[%~6snYN1Y/ +WJSA 9 e8ل߸" 6)oq0fPJFrxmhjU 7E}#Z"G505-TV h%j. X/4jGC +RP:w[v@Pc:{@nvmWN77Sׄ+.9n!gScYۍ2f-UK%d_lcŦKWX\w,0ٱhzZI\I z^hcxTM)z$0R)8]E1cw7ٝ OZdOuDc1+A6Vɴ˸ ~_: H1ves4fK+*WT$H+QQ0_jBj?|fI.5,(B2c%iHfbNa6 +X`>ڽrĪ'PJ*Uó[uɬ'Z|Y9 )2QykV2ݫT5kNӤ{O @Q軦 TSHb)<ٹ286gj8~RF ҆UjxɤVT +9FEONrC}AmW_P6FB;,eV~*{SQ4HstVI}r4EuʡQDZ0N7t'q>n5Y3n^v2?T +S")Ee$%U fֳ.=Ӭ=HQY`%j\u +3}8O82b!s(E-5n_v]iy-@hz 547 Fd:Dux6I(A'rYU"2Ϟ@I?BO`xil71 e_/jH`#F='8³ˎgуIiT*-E1Yk!|9> 'cY-][ap $xlB%ἎUXҍtæ/v|X֬ct=g$8Ǹ^.g+D%x^qM <Ѣ$ "q^PKJ냫܉)+[`7i<ϒF;Fp +-a }#A"1C)1(UL$t!Ɣ潢?4~nvyeېiI@@bW" gki֙È١zW2Ͼ1:B~[CAC %,Fv*ALlR JTU+oDr(jc/𦖧zҦ() d$܏G89.3 +Ո-הY]nl(. ca??iHPWɪH(̲6ah~߇vN;/pd֌.L_,i9,FE}htb'h$ D$ۘ| +X{h GG2H1BRW8X +=/lڎ_bG*>O쌆x@)|ic}WŽ^nob4"im"6&!ȓp ,\9*1Fp,NnR5~Ivp{@Q3n"[\ᖗ.p[%P[E/j|'|Hq<ѳásbTYm$Z6"բMp0FK(³ Tb~R,V6M !hRxG,eZ`QB> %@|zФ?l# @ Z1We&U,@Hu[!/!.x}#6͆x#(jS,4?y5tuh@uc RAeCd1l\5\nX_LJ0_?+_(7'`?1bZ᧿ +z;᥂jOa>ܠhߐGEoadY?2D +ѳ"[~F ' ҹɤVKi9UghdqƸ5:@h+WWn +橡HsH/PWRZzP~bdB{|ׯ;԰tI 9Uݛ-'Vcjh&93m<gg|dLqzm'%I%!iR2aK*oU:1]bD8bs6cc +P_,FqG\Jnm9ILDݼhhIZlʩȦ;8g7xŪ"L(s]-ˊvDv7h!Dfuqm1nHL O+lE9e5JVw8t8ș TK@ӑ|4_~h5BWϝ&@B_=wCGձ<*ńWT J(iR҉Ns.IuU^\HՑLC;~/"G#yy +ļw5uyܔ{Vw{_e-n*==z;hTunrWzj._/%]2'Խr[Z4-zag2"8G_PDr,AR;KƧR{oW i-D/mP ӱbΏ^n1w[RywI9Sߧ4YGeD)+5Li$N'**q ~pKHOrP@ _1lR?s%|gjD KhPc&$S#yyqrIKwwgRu}#5E( p1m"}(s/n>*d=~}vH$[^k䨓ef\IZ썱*cBJ ?>Y.LZEȣ ց7ur%XuYpjM+W{j-)K ~GW Be3GU6tr_gi#OZ/8w*J>^<.㋩: _<꧶B!iu?W `j =-c0;WnVRNO4~ cVRIp6Tj@G~T"38xuϐIvV~#(~*SV2&?.:)p^dwө'Tj%8=A ɭ*3g -pe Rf#AUҟJP{ӂϋ@EH@iʕTy)sgT+!'Q|Dҭ"Ơ!Vy_űdŜdD}'jW_Ħ C.xUU:$J avXc,`E[S8#**9 !LŒ,Y<ꁚ=<3,84-ghHmnG +T=H#")BN00ͭ&!'α%05T';|r 'O%Ւ|[y=zPKfsЯK:3@׌_дn)bBnj 4}3󰬼R 4m@*ã`¼<Y'dz 4Ҕ#sȬpqY7pGzB=@du08p:(*g 9Y70$`>[*N#5cD|D~D|2`?N\ Fx/#/qNIi*/c]V?[z8[dz=q +j&)=% y&`e/`bhۼ͈yAbŐ~%1k?[? e28\ϕ,#XznZYmɼV=|TQoY@ +c^F`M!, đ<0;$va%vǝijcTgvl=[@''h bUל0O'xNͰ&cʧPXw,P4(0m˶P:}OTv\+(r`foGTOA7?ĝn{*e+XBL%ڞom8Fx 8! і|hvPW˜b@@N:Rg5MuXqhu> 40b3|0/F/Hj>|7Ǘ8A3| C]jv$m:Ku8nyywm,Q-WAA)+; ?ԍ^ţvdw&OPD{[ܚV߆D ~zZ?$<{^ zlro .l&GQ9HS{Ha13ݶi(:]ȼV, {j%#(M I)d.2!]+42r{?xDCc2Ih5bw-;@JUik?h׷.o>1t~ՉP4*@zmۄ K.L$4`Oh& PDv.a^>϶at} YoDD߬6sLpvo<\M8/>'.r,&z+NM[dp'+d'Ȟ|OOBbX:|q0Ql 6CXƊ{vdzji7oH=6cC2.@Y +|BJ4RoaptL̗U@.t >>EHi,D*{ԙ;9!uai9n4n(a^!zS6SB}݃_w:0Źw7+_A +K\} +Qp:ADb9422Zx9BF(Pt Jip)+(@EA' o(JDŻ]J=>\>~? ԕ:mG +Tq~g[LV-\ߙĮv|qO.ù\|:].Ew>O.\..UڱQL>Cy k ޲&f}}V5YL0|6=a.t[T4U[*O{"kήƀ㉶ߠh]Bid߱JY.;pSSk;G(ґn,)ߘ2ƪⳗ1fV$&TqwVIħ77'$/E(T~خĵ]#!g-)|˩5ˡWEen)֖GO/2޹)y pIc4A)I׵H1_c>]^_Wc ^&\ rZ>.Q/t9Ic(2//iEAhhNχM|Q⭓Ϧũ8!t1+rlv8ypC~ayp'm'Puq<1)隹XJ)&GDoSSEїdDna3!_jF/{Y#%?Z Bm +l͋m3EWؽ9Ț-I,GI:퇛W=RoY_!L W0j|% e9R)J5@=-TDoJYd?ztIY21k)0LgڲaQ5}ͮ&G#ES +•hKѶm۶mz`~otQ3P]u>m{o?cs0>333;Yۺ;[I/cz;]gcg^9捻f̫S[)Fҩy5m֓#S'׺f7[g7~ur͸㊵^9{Vl1sӻg[^)xR{V^y;w3nͻ'Ҽo\S'^wz{y/ǙwWnw닏0IgIS#w5T~^|9^\3ƶݓikGX~5[OztZ{ܩylDl kpGǞrb::*s"t랻_qo-+:4ys.Y[;[-ҹnA9[-9L7c5wK3lR|ZUo[k9[m/ߺ/ZKXۻbuzg^)ZNmRKqkΔJ+bm^1J1nq|[mky׹Z^Z^yv+͝n\ii8/7u5{jquS~SjkNq}y_ʩݻfܷU^mř׭9^\-wyޛgsV[yӊ5oݹm9{ۛsSֳ[{kŖz-Z}jWwmuWNŜZVm{kqYouӊWkεfۯzL6Ӫ7y]W5/_{ۚ/JuZmq8q׼߫)^mוjZ;kպV\ݚݷZs+r<[/bzw:[{[l=sKIXW륻Z)ּvm7}ڙ/ּf\LvcmK{ݹv[9j;f3ޙ߉-g\ޫw|kvl1^͵Z~k9k--4c1ۚ٫Ÿjg>okͺ^uߴ:qW{my/37s|[wֽ~Ƶ9֝skwmWcsRk7Wo+6[ms^yŽvN3}7z^ެw^yrjomi4^sf:+VJw9oWMwry/[JiW19+6c/ƽ՝̫׺7}5:SqcZ7w^3Ǻzkƽ^v֚qUwS|jV1gY[kqk\;ߕ[/wgkݹ-ּZiY|u}{s]v|u]|o1iVN3uӛ3b^v{Yw|f[:뫭VkiŔiיZZk7W{y9_|ݝ[nŸ"7[qXW3t_ƺfqZ58[}oj֙_)twuc]yvk֘n-.1EvZ-vl57kS3;WtWoϕvi4}5՗RƹWZu]7^jފޜ;Xwk}|jk[o\-/V{\+|Η[SZ\k[;s{Қkݷ|WJݔV^--ZozZ;8{/ǹ׋/v\{V]{ŗ;v}wMܹRջ箩3瞫+3O3Ŷ^o|R|jĺ꽵:nsvwZӜ5cjuϽykc/9wwNkKo|_ڛŻwZ7k{VsuոK16뫭_Nkۍ9ZK3LyZw-uӞf/^-z^\yVM1L1cJu:i;ݛN|+ֹju}[N5՛ی9V'5s}^[Ֆu}wN/ZM;|ouuc|sחމyջsjq8owιvLm竳ݓ|c{i^)Ϋ^3zw[rӪv)Ε|]ۍ'l)6cTWj滫zs>5'Ug1}z{{yw~ifo9S͸^niҜ㼫ݴ{zw'kj;|TS{q響ݔZX窭S}6sm}c˫[8_>g54[|⌹Sk}iνi멳L5TK:Jwώq}jq}~/ޛ9{mu{/TC:dOi41DbBiLj֒IDv_RA3MejH '|XԨF5M=iV>ŞE uy!.҇p18_Pc c R (bCYچcPi3yI>Ysf5x؍4~eٰ(MQԅ$Á܏Qe,Dv_?HnˣR$i"ֲ]_ф=Ik`y+U}!9VUeyIJ"VYS4|I7'f .oR'HaQlĬll8J[%a% 6%MWD1AqZEEς*uȠ<ׯ孔ŭ9bOcNؓ]}-'Uh*Y,!+[0A+u¢̑*4VB:gL՗*1 t BL T଼MQ m}5Gj"yҨ< &](˟ *jJۧqϸ643ќEa}:_'Q$*l'&i *溆?lW Q:dRވ R +pF8#E|p!Q})u s12hjHtU=} S4SUw֞>8CUM0A$ 0C4A}%smD'̓2s5LAc"Ȝ'/D&8`0AYyڤ"2##0IfQ -0QDduD&5L)M G(!Ɨ@̓BR@yLB5LY|1;4@&E"FD-}(!"OPH q}'M|lsF)hm˷hb6ArOeyQLq&YAtZhen'۠qbVd BǬY6ZFF q3_Gv y{e -&cSVEP 235c$yBxZ]Ӧ%##a\I- OipWCσU5$`CWxФ~VфSi|1lÄ2XEoF-# ">Ʉ`RZU#E`d-5WLB-'!?䊜!@d(m7ZNƊi2"h4PDF"?hBI4aDduDi;cU"\*Ү>kSJ6XK$BU+Ezb(gyb|=}1)EIy4ِ~+Uܕ8^M^',hҰ>!ZTYVp6 )=G_hG8mƣzNՑ,!@rUʏ,j5Ǒ)tzN9ƖoggZ>ڗG3۝zfډ/Z]-ZΣWUW{4_K5v~yϞqZmoݧRK\[mwny5;Ro1"ƴi9jKou{n̻>1|bz1齚^ޯێu{^gǽ{ڑ#u\gRRJogz:yު}n{ޱ|q{;u-]Gμs;w;}=bqgN|})[t=misܳw1n\o9oLSvn̷{5뾵v51ցN17cozgVol1Ҷcֺmc+=7œbM[;)wR)ONI1Ϯ1y~5zWϭ'ktj/wתivogm9|On-:O{-F{ڭ^l#kJ/r鵗)Vv;8:9'ϓgmnwj-ۙ}rkt⍑8b|n<ޝ=OYmƝ[{}j3N5:WkKyR/T:;fZ\Z[Io^>ݛc$uxbk's]s]mX[9Ft[or3ϗ~+ߓnzgvg{^udotbޮu{;kֶKު_^m9w~}9[9͔bK1Y:;ϸb|YoZJkgkb8UOovo̘iƔk-gשs㻳֘XcK7wrlu#YM{l1Rf9W'oҩ35۩3wlNu[gyiNn;u[)F7t潹b$:z[;{Ow{m1=;9xœo}'g;M5ޓ)}M/{ifi{w:I9sKi}V^-Vb$n1Rr>+ߔZwa_nwݝb9t3\w3sygԼunY5^w^;{Ϫ9Y{Zonn56;N9N9NݵSm+NK/rҋ:=Z9Vqw{k5jszwj٫[uX{|okc~ܻg͗{:9ou>hX~kgjU~?b=J:"bԆ5TEHBI&Jc@(!8 810JR?@_p#OtLIr0/oܰJ"" VgMH2tԗ45*"8)%L) m4VCJ 7aN+ ƈ0ԣGjDG5#(FA*U, ʰ67`Dy~pLx ʾ`|Hamئ"<2YPF X{|&,ȑ.CxZOA|&b-p?D%DEi}\ֆ8w!ؒ:"a)91+gDaSR7Veo4I;ePL*#f -. 2HںjH(%7̉2")@;Ҿ7F;*@lXJeSAr\|Pt>OW@k\E] 'eZ\H#'f`O E -mف=hSeԨ#EM:dP_2MdϚ9$`FTץt9OAOAy#9Q1@$$PӪ/Dv__',Y 2n*j u(rJIX5$5=6]MA!:/ -Z6%8dnT.U4( u {3Wpk5]F;kNd.sb'J\Fx>=Aqɰoh>cY% ,m[9DUx9!ZUiĬQ, &bCkZÝ2#E 0Oм_TᎤ@C?~PY<C<gHVH!$\>E1R0u8 u!(Ny.XeTi/GP>eKFq:`R? A)9,!;IV$A%oX"L, -t^נdh"^F}h:hO~JJg-P4_eD8cUw֢FI~>qr3?J?3+L00L@=kS&HЧJ%n<5L1b"k04抈H-|!E܍;'B`<)l?G9\܄~iGklq+q@G[!w{R(i% )j Y8)/J#'eAsXCyd% )iã(iIƆAp[%ZVID5T'6LdDl(d僐`y7OUh5D)["oΖ9cQ XHHa%)#eYF!Eyb_6F(אl6tgk2K%&JȘSwФ̔(ˣ`Ui)> '`JF|g 1"oFK|0q~p'@ m;jS#Em9?rV x$xBt](/(kL@gsl4YA*"s"-0B -` p`Gȡ;b - :?<_tW{ت)rr߰GbA3#*lϛc$ aTi#u|  %H[H2 Cy]dԀQD ̑AuZ$`B -?’6N7F"GryʮH 6q(kx yCw` /s"+S.ppGʰ6Y;eT>(.|!mk`y=jUߧ-+{а SP6YNRP2VK+ql7!hlXV]tX1 B/ [ ?2kC&oƟ6GMa3kX5;eS_Ϋ|gdĄlx%mx$lbۖ2"5N@H 2LHRR*% XGF yp`PI@bxeX"]8?$ (i.JOΆ@N>ge=k4TJfi2B%Hc$h$2"iq"d ڄ 5qU)DeI2Rä-*&x 4I1#| ѝ(gQ_:gS[֨?pVGO|*kџYX)dȠ<- Xj\ ',JP_@IDz\?G,r -{ҰD/'i+y(y -" dJ<e\a#g`#캼ZUs65TU#Cs_V9dU*!;!OZmH')Զ /Vq uJ!.JД Y압*ȆjTi1*_s$2 "m w$#w5(4WGDIV0!0='It`/@@`Ǭ"1OaB )jC%g x5%#D==mS -!cD13D}4ZB;jS"H5 X$DFQuhsʞF+#@ JH0ii?rWP^oOƎ%E5YEpY_EςY(TeJ &L0+XU$X%DhbH !&>sV%aDx^Gjقx AK$Xb(ITx$~ |uD_HKF \#w,q,a ,T-C!Y?J%Az6Z>tUA"?fѱ(l!!$0.+0pu J;Cވk#50bP`I8B˨C -)`Cg@d@ x%d $BNQX*,J  H -(7=@2%ˆD $@AHBN -AE!Z(`B̀T} " a *dK\50b FC%aZJ D/WH"jaHp7b(A P%/B -$B~`c`!F3,P@&9(&c)TXBR -㸀/$$( OLPĖ<0|"I@z!!H# .c -+؁O 9M7$0s_GBm1~cEDg 0lp'~?)1 -A28"%Y )( X[kXNF(|>=% )h% ?_q$Ex1 Ca^| aH*FYp"xj< -" _Fo -h -d Rz"V#'F#b(ŀ~%b?@`H*IA|=+x G0x 5HbpDwh"V_ +/xP$ J#<{`#9`_PD<6G -ppqㄸ',a, ea,I\f` . !{|C bGP? 1D=qdy0 T I "^|7^ao#SB5dg)C=P!{2D8%EH!i v -o -s(g?EZI)р ,7 ha*b2C/"X#X@HJ H5h@>A$.b<_&A -pu $ y%P'cG¸6[(x,JYQ:jMc,d%G}خ|x"$2EO!%]%@xJڧaB5Xb%cXaz\ M1'ARS(`!@EdID_H]DC=<j0' H. 0%%( ;qDxP0`0Ǘ1"!4 -< -o.u82n#)$㾡op"4,NwF - /̔Py }ڨ MD@ǖRH^(pF:O#}!hO!E6,'PV0D33.Y8)`:Z -_'oHB"+oh38KF|d2aDlv> w{℁N1̫PRg#'cGpBF@"$msVg$L@ L}&ol!Am6_LA  U#@"OA6\K#sD|=;jPF}8ĕ1H#?ו7F#,JVe}O |R:='@"-32Hd7V'`Ϋ#OeCIH$]??D ^7U /qZ{|B$Q5򅕵q/CX(O`"eXq8̑`G zd yɢޘREoX",WJIJ{bCx["1O *wȨ -_#72#w0 AT/Vu_kD1emps 4u­dф˸s 剐tŸ&TUADza# ھ+l ܯa["=5 YCw[q[Мg7vm};aS3QÞ4*#*cކ?ro2LA83SBYe knFQpĝ(4`U,ʼ+]R0 S0 Q u]ن$aϐ< y#,o=jTGX͓+%ixy~&gCKrpZ`C8 -s^ɖ}Y K&B)y]-q0)Ƽ>ϐ84itq#p=qTB"%_".p6@__FUЦ}0w 7JBa7jbVM@QߚG -cGVCZ9{ec,`(# ,lx+#L$!%hmg`iBT;'e;5Ĺxida" LD$/w^?W.-(Б|4P`H /a,fPDqDx\HS}.r^ٗHkE* "^9Te+11$\ e!G RF` {7}Fq +ά -c - -=!ЛUoC1)4o[ވKNM鍕5ݟ%JsȚ|ؓQ*Qu)ɠq WҸUa6-I䋄w6 ܗ`:o8!$^HO] sh4U)M4TCDD>!G vرchPl ˆ8҈a)xs$1؉< FJ/ q@(Ip~ܰhހ'PĔANcF#)Az$l4BFx!nA ''H7b R<b -QHnÒg/#)he֐ KF’cK\,qEZY[y -P7#q^Kآ *k .H - Dp)?8b -uh=A"}ڬNԸc6E+b_yÞWF "5@ Š/!aBʸcJ >bx0H(^P2< Alq`Gh"辆As\;bV *m(*?kY| |<ÖOiC+W,;ZD孤 ݐ!&kJ..̔|7Nx+ IlC!x9E {=hV;O>,rX4),J2oB#F̓E[ҾXq*2*v%]~_0ԉ.!@|,cAD\%~khK jkQ,D ~#/ 9Ph*װʀ7Pan`FzCЂk}YHkx3":xBቿ ?njd-9_NLJ/r%!O v%)pC6҈>!kysԞ6^M&aōԠ+A$E ,<"2$g6]Ys%3G^8L+ʞ4+ߓ%2G"˨Tz%d>D@z2̀>!+\FB -HPJ#'h~^m#)gJ=g`khyP#Z9omxc ܇AE$*i1 &M9D_ Y4U} B$DOeօ$^%|=ei@ "2 - n0)KX!;HBh [B ؍.p+s`BZq?t%3NBD%o4UqlnL H-LA'6tMiƔa )l%> -pC(y -p73e~ 1AJfk}c7ˠd5kp#xXDC_=R&qeT )o% -;/%2E) B0z$ +pFOɘuaHY/!0RӰd0Eyb?lW.m1 wĨNQfk#mkdirfsudc)N] iigӬt,zk=sxW3_CVpYY|PS)t+K)zDN3w}}wgs{ ?H$"pzP;R:/~[O'mx˾Y>qWnF- Np=7.G+G?,{F]?D"ؿT/'aǼ!7mQfz -pG n>a#kkz?'g~}=9LOuG/K/oЊmx#toucX=㷳;c',Pn@]%wƸݓ'};[]pAx׬VRT/ft3u:?&g$冊fELtc`Q>QAg`gt |_,%1ݛ9( nY_¬(|= -쾱1T:AY2n eE~weJy\\, K"܆S<쩤& -77CX"i }<:LM׶B֜ ͟kSbBE+# #G5!?lR"n+]{:iZqGGϟJ`xK@vٗV&<|fczկ9NO,/ܸ-v,"ү(O~P2r} E O sJ\ T)0Ǔ}{av>_)`lt2ܾX+z{u@ @C`Q׊~/&l _и,pi*/i8Qhe |z7-"̫ g-yIu25aQ0ֻǺLm]1z=QوzA`Ia>uq cA/Ha+l,zc- ;puވJLk.J -_֪i4 !A p?[Obȝ>s;`"q|r`Vx+Ky&>PѠvg8[%8BǖܣbOvb7nԎ>#}JTroJ3-Ļ{ ΫGpJ#^66 {b׎gk[L@)a$M7X@qV8fGB -op[+]O`~pZyq/S>pS˧b[\8nuO4-tHxbwjox7B!"7VH$_ -9!lR<8\mT {:.){nqfjX۔J&koN8:*&ۣf_cXrx b-͍LvP2YGm;FKswze86uat`j4,CjTjbJ.g G&wb6Oͺ w\6 6u`k}߽7p|,q-;$!cRom,w @ȹG/R=Au~Er5~6qmӛ6 !F/ˋ1ZK8C`(F"BI\&% 3T]@;"{cٗ&,Q' ML#DXHY H-\.J8 &rRez/8qE :}^L_Nu!gNDWa尠Q! -p@5I#錀àLۂ(/b&U"3 r3C^Xa69v Ezm)$8fkB|TkKo9/zP)rD`C. 056&DP3\NB|ʻJaos[ҀV&XhG yMԸoTvX h[; -_mWPrhش1!_+O)d.C"||]"nPsniIc|M." Cdu&Ll7_d -m8mK5 5x:.8YC翦T [8hrifͥ_{J0ۉq8嬙T,toLxF"+$JS $wxme#㍆Z)!HoMqT7!~.t(E.PҸ͐йo(НVy)CTuk]}aT;@ @+0A q:1UZ },E8 ޅ$ $A]# ;"J@G֢˚:c`ԡGEXWՙKew y!ǒr'GkqU>4߅XDy `M% 4AfHM͈6=t UaḪqZhq^v+uCՉ<"[⑰@pK$Z-s!ٵ1誄I_&bi}:idRݞ)jdE厀fP6 -M$w~7[܁s~s@@z6+b5t`lxԘ%@G**87/7O30}04wdFƗa&H2]0h-t@-*O'2"[qKoır aTG)?<ŠQB5YsݼIGE 옲 y 8tB(2윏W -;BC#k mا-+km cwF&hĆҜ+3Gw&+ ʚİPiCmO 4fhy:/ v;aI=TB P -!Nk$ PsZ߭a$\Dv@eEԈ]߄ށւ? yʾ™9V -K5Ԍ( HMI Y 6sS3p*;Q GXqQ1 :xj?Á,{Z#^o5>u@:t)SF ܫXCn9e*.{?*]޽xܭX?pc7p\UEu@zYs`ao֞zQwljFʓ)gݍs -D"WKޡ - -UӇĴA|s"?1 ye@vn[Me =d^SD#= )դ#4~!/p_DwFĤCk bKH9^k-p~ Zaңtkt? NS&.Gw?[8T")laR5;d^qUGҽRƌ# -_Uthk5 cWu|.ҫtBtZŕ7br~53G?ϰZQ{D(mtf@/ZlA`,>i4KOk#AeFv/Ff#3f֋2lO7j:r ;юxSX=)0FF# \)Uȸb"Γ5Q<9\w0~Yu6,)j ]-WYc)-.d]>stream -U>L~ԸNR|Gz!\U2`e֔m&@Xc_*8x_yta: -5 ;}L]I - -o(}3MyF-h:WHV[j'D(|x ηJ-UGS}yi}Y;e[^rZPT,TA83M82ToD9jIDGxRFg}!P1#@CP8eF|N7.Hԫ)x!.]td]M8 -7G8bz_l\%$DƏtpQ% ք%TDѾNpvJKՖ -*ܓOMZ2P$"yÿ]*O>ykTv&$U5Q{i]a\Z< =u%\fn)svb<UJq|]Hʒ*ing^jHAa,30_8Ń̀tݘ K4lx:*)$Nd8sk9ϖoq8'`P!P#!QeU[?d揶rB "J̧D -2*ɩxu ՚Y&FMwvAr콫տ  k-t~~"qj'B(Zρ(tVΉհXDmߐ+Ι?7}EL8oʨn!3;$Z?d:!3ŵ)KT:rU9$=뮤L%!R0ZY) ,HH3 #>W#J1)K\Ϡ>[ҴVGC,eߩ_GXM\8os' ~EBbdܒU\bb ̺`=E 0h/-ۏ,柛4QshmrWI.r12(k}-"roO{U_60!4j.~Pp@Xr/ z\}x# dFh-ph!Vu}ul}Pb)Ch8 R%^ޥ *d HwB;Ϥj1=ueՃ%}ž3me+,ѻʯ~d^={"7 3K%tXA#d< - -FuPyȎgP,U9LI[0Hbc Cr3K V,': Q Vowh,3dqi%.{As{"dJعG.VGjM"66;^SޙW\Uxդ R0Ty[ +<Ai -`fyE c>A,t~kr5'nKh.(L Nia#0R, OSMQ\3CQQQ/]GO,MV -mZYS,5z#XT[ג$w(;HQ0K?e)!XUٞ ֙/]mꌋDV-/^7kMV͑"q+NÒF: +"$r`Z1q3E&j|- :xY -S4jpd;cph*me%/n}0m"2V+UJ96VwɝLvq܎HVޘi VL;IґMyPʼCP7bC#AMn :p039:#޺B 02{%OjD0>W^Ws8"]m-jm|E3F/GʩEI=c|,#wq- N$O@mcxXj>*)&d+_2K,tE6=q[S]2?oԲ|wFgW׵!LV>{rޞJ -IPcQp8+) tNDA"M(oYVBPNˮw, -]"N!ڈ -:N>Z/P\EG2t&W_;LA:Ih!8sW<}sC5][zF w:SRcK)3.1p%S<6$^6yP u1fkw93vպ.QƭH~¹fqhB_KY.~ɡ;/X,uPG -+ȁ8ܑv[H'Y -ViMpq[Am#\LoY#=E/`vm}> L4ry?g](tM۵**E,?@6ElRzY.z}iW@(Tv_e(?~мD?$c'Ao7% Р#{<5+EJg!wU ٢qI &LtDK@$<'< 8~NZnnIGy|hްz\uVjm;N$_bA<#T+$NlWDti> .a@0doZ]^T(͇Z'Ix"eH=teoeas6;ǡGfj9kb%wGihbAʈ ɱW/iF)N)+[b72yMƈQEdP@l5O쎼.yNŦ7|>>E4saP3/o.G 6*}e7|H=RB |lz{l Z3_-;dkņؙW!%Ușw?TݳK%G5.l)葀K<3C3B`G kl|~غjI$D$8{{W)I" % JN0sI۶2 1xHFseh(WKKt qpOC f[o}@QA#$*[O1,2Ao뽞('*SdLzHqq1QʺiH3UvSPY(T%jIQ xK75,vz^-y1[񅌮%ͮ¢ u cѪkAվEVP '>T9#wk2 -nٶCG R -UoB V0}sdG8T9VzB漝dO:/vሃGQi7?(&5uXUᑃlƭbr3^]h -n/+sS#jdOdԄQx=v$,@D>"b{R$^Awڴo-lfsib -,$~~nfVA'Kyv?U `lA/869IukK'`2\sG[ s63}[0֕>-%`yRA J!ۋ1͞niy9W69U7DzhxwYj!:Gh>GC  -jЍ~7-S8uy9=1=)ΤIK!Т 昩惸]-_ПQuV x J@ ͜ch+BEwWG\r l{ɻmh#ofGA]|u͉/TsOoO0@Mj\_Eerh?/5&";D"Dž^g:>F\'>ѩ@9LEs]tCItmHUXh.2Z+M0AС&x"kXc[vHhwTˢx4{t"$)BjƥKaʡiꈍ z=R3l _ xTג`7)KRpop@OXb^G(On{gS5~$:)LݤK"7FO>[ }rğB"F4:>gʦ8%;n&(-hkֹuu}J]-95'yY UL<@ʦ{a˳S-r}rc -TY-$/#\ e9"ws N*5DuPA:9;zCtEx_CpR=HiaN= 'wRb1IJ^EBS"_+J S@}hA Dai|O8֝MBìE4 mBL2V[|4@%-NXpq!<%a 'x1u!$-P1lxN /H,GRz1O#qE G/\,&DF$~gLO#D -I߃BH04@HF$*lAj#$#O`4ЊbNe %=r1r#dh#uĝPKG,d!Eʐ#[8ۖq_Fo64C$o3Ʈ.3*5X53H"4/h'#Hct4bԚF04#Qct|jr)to?"q kL@ڶ` 7bxr;R4 4HKjclÎO#C'uy@^DIP[A4\!X6C16:Iy8C9P@![v_qa`u#z1iSgQ[*nB¿ԅH0wBǖU~Ԋh?@&v!9!j:`A.?4nwp G;!}riD{V%mJG};A p>AZԦA5zdC;pHqpߣcE{1rBhI{A(gA҃:&Pszpߔ;3)4uاDTH֝Dt0S: Q\ctL: :&h?G tjs`K9`VHt6ȄV!1D r{!/"x\$9D0&$8Bšr-r8BvLA`ʾC=hUdivYlƨqvCa=d*lă4k]3"rk! -H-]h,wYpT5P.ZB1p@w4h,RoԕbJdD '"n)׍S9WscXX7Zd=Qn.rml{nII)he$1[6P4o a#YnDe 2esDظՑ 6^y׀GI~$204FDuwNb K!yj;$FPC5)Hd(H֡,$8$: DnӸڒ\dud; IB) dv ${A]4d,(Jфd[2hx% Xg|n%w-Zg\% DLKnތ8QDf&tt4153:(Qd3fOΤ[:9/)4Iv&y[j,˸]+dMeo\)c7It&#e*N;""CFyr1Az鿙ɉ1~ 5Ljh:,D8H'ur1~1"N";bIrL e#3İN(XA|;I6m'Wuua̅{0 -I'cxt`b` '։@;|G'b79~Qcj_,)q^x03:G@E!ݼ3'pY"l;bxA]9.`Ch$vs.tх/ȶŞurqG'5,D.kVEN o|'z vǓ?'Gk1'l IR?Q-Vkk"y@Q$JP[%x"Ŝi!^\FHO,>#ʑz]u@bQb?SRȦ CSHd,H/)՝P¢*𤢥x^J¿Ɣ辂L+^r+ʟD,Ev8OA?~RPi+C%Z^Tr -HeЬD)SyʳP鯍T*Ə+ -X\ZtfVɓ*Uer4zӲxii&M,D11-"L ^N-@xJD\[b&Dː-:,1%b0h%LJl1S®EBJj@Ob9&0Y$Q$~j$` ΒӐp,GKN6:hf5yn;}\Ԟs5Yd3]_#ifwt͒F; (hmaiI>O-RւGZg`E`nE@[$I׌TȌȰ[p[f͈!\ȘZqψqҸ$3#\t2WZX.ܰ\ -ш)X6ȵ+jD-,Y6fD*C#@tU˥)H+ˈ¹,4"eXm=he\ш)V#\g%T#rIcш:3b(,Cx7a&%_ß ̕(JX"Pe.T@E ]GQy1DyX"XБEQ#_Q2"//8k8܅B\@#3m>d@/ 0'3=8BX !0eFãvA[_34;^AO1tkFI6w0'rv'0pgRZGrdt>}OCu1o$4vK jtv!t 3R 9h Jrx4q4IY=6 or-ih+mDM d X X5B\j<WsknΚ8ր [tn9 <'oyfP5j+ B.lVwf6W!ph.&5/Aq6X;h#n5WmJ/^#GNmiwk9V MyI4<͙%n>Lnғ{p F gfx4Ē&oOXޤ VGP$݈7$CKd;N1<#QPf-nj8V Za@ s=k~ 708}1j}2ϬP$Z4!l >N_^ 9!19PN^^Ʉ v]xrp1.ΜsלM(XC9ݗc.49JIy[:t-}] Pʼt^Bcs~TStm7*gS8;8 -MAKa[)4@I/O5TGau!Pם0HA -;Bػ9(xOY <POxJDǧ'<%N %sF&|?i6$"yv)hy%c5G*w<ʆtGMzY=|D,Ufng&0m5H=gLaP9⣨@g\i>GY&0Op^TxhXX%pjf(ZĽC.9~{fϡ%K8N?c\Xs?s/$'@J?*xL ?P‘It -\#@bcjH8SːJ7OX$P;(7>2T Y fRc{ՠ@xN$5 ,Wu5mY(kWZd1q~07hF`@*yx%&hF&+N?sh"i.FX!{m"R*r}f.3Ë$չ~NvV]i!'j%/r~k"8BR"`)/H%*0Epa[wh @l.x?pwAFhƂEDӮV| SD.0ԟ l)9f*'"=RR@-l*šRZI-;dmL$vc2d '>0w/:uO=,%==U]|;sK%Y̟/ÃU5RU%<uq15b -_ݭ|AW_PIt@OѨtE[ I\Hr9H&`撃07AeNԶZVY?Bxi:zj׏ <}-DPes7QSPYwĐAQô)r}zq;o? -/m0 Д6xM5Yh !? 䍫: s>9VV<2MޤJK}m8#O-i ,0 h@lU=t1A(߅hgWCBNJd@v3=77Tei5Ye4M(H\>uY(%. 2n DTX#bnFKlb KN{غ@|2^8oA'd1-F,'`ƀvՉߊ</jubLϠ T/>%tJu(<ߌs5RséצSqEXf#\_h-MW OKĀ×D蘭@d 2PrӃu@' W4#4}WYer\L'u(%kبN+]YJ$ -B]W ~RTC7rR{@*& |)y&y%`kuiuP cP$6QsJ,PPmcmgR ;AH| nhf9 p7A3C:JY;K<<9@a"j!j"]suEhgZ$`kQxZ\y+'$8st p.؈[j/3HY+Tq3#D^CC z/vQ3QA6eF^q֛@ b \@}]Q+jw?1ըt"L<֪N[[Z+*V5KYp&Hq[S&Hi1V ]Nځҡfum1eϺ)́f#y}9=`6D"=B xahlXte,]lPXPèJPXWi`樀_AXPe" <}ܮW=3༨K( #O͖ۘ<6/ϑ|k AĀߚZFF .4Wo7ʢ|_ bB=BRB - .hcw pqM2LII-03kM_7G5~X ?9QWcf@[i.ռUg:[1^) D(|(p/F^AToL6^8̂6v'γO&0j9@=,qqK1^"YIqOEڵIW7' ʯ.2 "0wEpL4?(1)l3"+ҠSSC?@C&nကu.`xV`7%("̛HC}8cI׊Z}@s#9`)p9㼄1ز 8mJD>iY)|",`6fqǁډ+1g¦a tUd쑝@5Y1B̦X[;5Xb4ƶJ~ GeGP@R+nBZh7ds R@nsr'@xQxլBYNr@m|8}4%Z p4-ЭJ) rY|'sk+0,JG)W83' mQr'GVkzӟ&jX.-$=&)㢚GȵaA;JTc"b%O0QOQ+ gUcEFqb@+XuHɷUPTE_=Otj 6PɄ?GL8?BIJ$M@V#˒O;rmegK:))hQ.yUh*ѝ/ گU.@. +|`Q|Ȥ7@fS=6TYl -^Sxf `}^"f`rӛ~;G)LZu,6K{: $3*t+JRRӲE8k;ny^T }btUֆXpQ|42þd2G)bx C 4\+gb{?#7D` [.F/ƾ1_@~N1q Y-SҾPbԱM-<&ˢ=ź=ʭkUOjK?'Iʲ`?q] -9_A%BUg@Gl){qm.g=0]Lp@4)xTz:a}_2ۣuSE|mX-4?:QgRY"(::M >RIlq_G+aظ551Z_GxǙ U"OS9p~_C+Ů]`&) Uw`rXRP?w$]]k~d;b~g;o>8n5S 5z/u=1b J.5~̕oJ!g´2d5p5?A"C` ~F^{Ai"[ rfM&d>MձCؖ+F̣~Dr8Ҏ' mX<"vC}Czog - >;=F7iߤ!:3-:Xs3_a_|0-ܹ'v%AEv}礷79~-QsX VF#'z{2h˷uّ} +!y2_?̾Ch(sTGѷf AHb&]`~><%#xa8~{hx^bfŢp=U=BXvM}D ɫĴOl|o*|1^Daձ(F4!U#.狔66\i{ Ej 4 T3?^};1{kNam$W=]~qA>%|FSKܩ77S%'^+WS.FNT>%!d7ƈu_ %6.j04DT%dIv2WszN4rd3 q/K": /S57j >3`L`ԗO X-==k{^hH]W~;~MNJwU-t'r"}gcw;B?+ LFGiѐC*{TU,} 9r1S1 }]9yᢓ `pe9ߟm`S6}U(2׾Upd鹗 ,FB\(0zr7k6?m~sޏ^Yh>y5ܠVU 2+ɔ<̣9sјUarr[ ]hMJYc,~n>_wl\ZycF/E J|*]~Et&O`CZhc-% _GY$IԄd^"oS8 į|1qڱ:,@ޘ@?@~PSǏ>LQ~x?WjWug(axaox\Jww1xy3FxzUVJUu\X|6 GM{ʬ$rexs#€+.B 2/Y(LJ)~xS :#{ȼP(e ;`]ho O$FPxTzG ހmDȊ+* h "łw"dɣE jdBơrR/}Z9" -ߣ-hxφ 3ctqw2ezw>VB_m*LwBl9.WB!}=(]߈U/밨 -/ Ysj=w% -6ͨ>A^>MiT!DG>6ҽkg ݵԭQn)m [YQZV-Uq^"r0S3hYxlkk"y:XrX):S2}'M _JD`؇εWVv6Fjܮ1Wv5bGI{D3Mo>^,8 -P(chjnHvax+gi].ѸX)B䀿h"o@<;{'kM:. ux.Я: 46_PZ(RuU`VXi=3Qi` 7E {'b.啊O/`q#q),9]MC-v=׫&Qa\1nď$կ5ϾZrYH,ZraȰ @( gHW%dI-@¹/DVw0 N!a uhKE ] [U_OF >M}?~2Mb2__0ԁZ/w*beC20ʠޜDi9iTPoTq.w t4ac Xry"zmO97x65KdPE t&#+ !DOO7{ AT }PHu=NO뾥P_)whuQpjzP4`qP]7a3KxUНb;۞k4u# - -zPovH?D6?#CTO菮Kp'i)Q>]OxfW7;Fq#R5_'9^o>B5y&xAI#~4RK* -X94+Km:nx5bz;UW"yXC0yz˛|KiٞoCJr@IPwIO+<}ҫ3)7?H!̍_0Z [5d0;{3 Ǎ罣|'g|^p`q-\4@̿1TQ \b~`> "q1 -֨.f)߆3ou] s2=."TfW/{Ռ"Θc'/{{u2EܪȜd0c~7 ٨iQ~B=*A̍쯿VxJ'߇g0b=7Is>0%왖ނ |G\`sm4~SV~sH|2hϢa>jnxcys=2U0`~>'̋1t>z\"C R=I1 g\xg8s,̻59cNY6i2sv晣?oEu UAy;%)9}`V.8̐I:˰Pz92j8B -Ce?6F10-`9jZt?~Ӄ|낮 JhIrЅѩ`,[cSYRZRbjʽD]vHyXd,c0% '\2}v+iYMqF[@|%fmtcU4J11$m3/Y9@DeX5s'8gg ǺbZ/ǾR o'ύv#͍ݗTRxHSWЇqk1 /ЅĀ -mqZҸQDu79^%-1I18!# 0BջwZ37ֆhqݽIۘxB} +Q.?ZS2}4IjF{4vwOVXrZlܫJ$N`A]x -߈N&=2D_vTBmZW -Saؽ|Kw J4s#XaPp?X BAsÅ«|B~Ӷ^HX?3OCbƁdJ*j>m ` -Wm꥝p-J '(a}o$`7F<_"#0qhha(ؽ0$! m|Dmr k~B|*-ìeJ&qY{yǸV*r +)v®CI N%BmNa ONh"M̻AbNzq&mK͡f59FQIU'iXhW/<h@;#-_*w@7LjS; W7+J#& GIbb̖fc:|esځ9^$ĸ/bǩ橗/T(eY 6:@)3)'{.(Y>%zZ&5Zh A - ᰑ?'awS'<: LNa z.qGk{K,Fuo]|HàG3׶[m+[kyaE)bgşNsDej]Р¢uE"r=vjh5\Ck}T`9d]c}ҵ`X/N"kѣ_zdXφt";XQC, k-Ӽ,bM |rv,ࡃ5?N.X2M9:g٤Z%K'\/|,+֤ :s\})iqW?FO:g9W3\XF7gZfQo#֧ذIMK*b=OFXA_caR~9Xrg(X/Ϛq#Xk&˲aܢc5f}GaUnL+X+B5eXV{f*3բs/ EQa,]] .DP?j5H񯇲eVk󯴇w''i[]9/16,+q nSRA@:VK̯|F؍*mTzjD>5u^*,u$\ Tqh+Y -}K]ɀRזsWA5N )&/EFQhz񀂆K-ՎE@R5SF^ja'4`{Fq5u+ʣRs[ܮ % vR-52$Hxe)maaJ-2iIDşSPwgX14.*<֯9n٢Eƥ:1R1ASr0Ex bL?ڳP5FjLci;yM_P6BS4g'[%_?en8 TV2. }<2M[nRr]Tֽ`zO[@È -ʢ{7ad sF*X% O*{Ke S߭)S1hPO( CX-T C?h23U!uSïP [B YJ$#+mxɒEk$nڸ`oz _s?L"[pY HY!_vhr̲N~]hZ<6K퇳KurMrVe~Ckgea@PDNŎ^ޢOIio2ȴv~]ZPS*ЮZn0$«Y 4vK퐩cV ݓ] )c HrPŸw`&v%i4NBmmXV8Afԙce!bl[J>solX)˽rH_ܽIK?uŅ8m\Jq5xQH`ϕ-7P\0lK*`v.R JRcv#A*k0۵WuHӺN8.I5gœ?|n饓M' ;^5 -/b|e'eJ%/鬴`o4^ͣzY^V^ha]~Ķ)`W}/ q7\F)ח& KÈV}K]b .Y)סկϞ}`i'z[5H`š ` ~|iE;дO Չ>s8(0';I 4L:ӈ4""=Cq+ iEɄ`RZU#E`d-5WLB-'!?䊜!@d(m7ZNƊi2"h4PDF"?hBI4aDduDi;cU"\*Ү>kSJ6XK$BU+Ezb(gyb|=}1)EIy4ِ~+Uܕ8^M^',hҰ>!ZTYVp6 )=G_hG8mƣzNՑ,!@rUʏ,j5Ǒ)tzN9ƖoggZ>ڗG3۝zfډ/Z]-ZΣWUW{4_K5v~yϞqZmoݧRK\[mwny5;Ro1"ƴi9jKou{n̻>1|bz1齚^ޯێu{^gǽ{ڑ#u\gRRJogz:yު}n{ޱ|q{;u-]Gμs;w;}=bqgN|})[t=misܳw1n\o9oLSvn̷{5뾵v51ցN17cozgVol1Ҷcֺmc+=7œbM[;)wR)ONI1Ϯ1y~5sZ/ݵjm|#ob:3w[/ߓ[KNk^v[z9Ț齜bzxrʩNz7νNz{wN+3zljlaoڹo\kԸg1|3Sy|[vm;<kb#[l_|륛G#e=v}wS{gyϽH_[_/V}gj͹˅Gvi[1͚y{u6zRw^;^Y'zb|3{clgƴON3\kl1<븽N5֘w7ߝƼf/[9c;j-޻f6k͹b>5|HN)NySgkwlmghnofDkm:htfݳ3;ZOZcz5ZWj><5j=OtZv[dyb$L1xO3u#ѩکw{꽻{o9Ɠ/|;v>;ߙo|MyozyޓoL37SNޓֹNi[Jvn餵g#qY/rc1V';[o֗_TWsֻS7^mߪrsŖ{^m]O\/8soߛmչ׌yۭsƘ/c){l1RNi[cosk~|ѷV7ġǰ懐xy*,Q/4Um>hX~kgjU~?b=J:"bԆ5TEHBI&Jc@(!8 810JRG@_p#OtLIr0/oܰJ"" VgMH2tԗ45*"8)%L) m4VCJ 7aN+ ƈ0ԣGjDG5#(FA*U, ʰ67`DynpLx ʾ`|Hamئ"<2YPF X;|C`HR!<‰ا LhDC1 t" .kCJGlx3)+}ʲ~NWԷrs¤Ɲ2C&S3_d[$iAm]5SM$YЛUD\IQ i_#[}JH 6, 9. } RF}e:`Sʫ]}5.e- +s .m3'rlr"2g j"u¦H2T&2gMRZ0A#Ra w(BN iH"yʬ|VU +eAqZ:xa9C$AqĞD ZyDQeI2M6*Q3I8҆8F8oK#?@(Ǝ-$!]pR-ȁò(.)9^PGjx$M5R;?< 0u|: 9AʈAP|/9oõ4twҢVھ# / k4YBDz]3/ +oww~OYOq6<{ڢh1=d?\X1#uT@K.@_Ш/8]OYTɂo!6\GCy]$R H ")d<<07yxaE¯qDLi.UQ+p / {#/oYYgHBn~daɘ'c# (d *hF!EDœ!{AsYe lirk` X |- kg~pe@d5YC6aG9eM#Ո34\ &1A|Ĕ3UegI;"x=(xT< 2%3MJA#O\cE,@"c0fKgI5^B2MdR@t"YiWF趼ٔÖ5 #ѓ6ZygVx2V +uy+2(O"mƞ4,i c"ڪ&d +q^ a#!eyW<aX!.VUM m)Ĉ?Uq(!rȎkSFkD&D"uʤ- Ao\C.GjHK4%#&eC{e<!@lZg\1 kHK;`OM#@$_+}Xƞē$:`pG%X1'A iChi8^Mk9;fOeO۔j"gi{L2Qڔc$h 3V?I&*}dx9Ɯj)H5D){{ڦ9E#s|9dQcMV\W$`b֣f54Ah"5L +"h t aB & 9ÆEU@tX$Qo6^G9cP"Y3DA=kWcЛ'Bu]$ +YUx=6^MœцI8$J,F}eǍhiQ0!.cVsž h4Y6 - + צ%叢}R +%c%9*w̦ -_7Q}p[G8_PcNؓ9^Q^Kt=e"=EبI'Bs6Ud50:B4rB6:bSdXEM6,hBYIwЦH#tXHʚ4+- ^Zp_ 4|9mpCv`~li y'>Zs~PVɳF5ހ-2NJI2M'DJ WSj"u֞2QdG `OP1 +q_85偍)EMFYH ZipqBHȡ<.%a7Rx'fa|ܨ~qf*pfL H?dF 2O%Ke*mePq*>ZP I1sw΢*σ6Ei)QG7]O WEȲVF8*9bMyaP~Ycj +ECy\^726+߃f}֮u[ +r +%ed\F +ͅAs\hOyE{c(Jڐ8r'JB"0(Qy(_uDZ"J&V> +$`oE#@7DUUu;gQǍʟ>kUG]}"$]eў=gUٔI"}ڬa;hQ݁yxaH 7+/ aPQ9R3}!2+j*gTiwDֿZ3MBFr4LpY_hNk519bMJi,raSc)R( (S'EH sG>oTn7,)n:4 s>װa +$`ePW9A@rYc MWg)ؓ5xAq\?n]'o[]@oY>0?#LDQsʞF6+/DtEI~-n!:RȮU'|)g$ -oF8bʚ/Z"FpR*_F +\s0GGaPQ*!$]ߨٯǰr6,EJ~ޘ_фC+aLa0,!2HYy4*vQ#(i%(i 7ߓfް +%ce &h +%cPbVc+cTY+U J5WϫLa7V y̪1(ͪBU0!*yΪHWBP2VhBQ}}IJKJ&f;]jB'UI]Q%Q]אE֒" +k;hO,dJ Cw\?卜GP΂W'&Ho|i6R#_T9 1aM{PB4@iK|!&P6鲀=`(0D@D +D`B* SBN ] xjF |  4PH@p dIұQP;H)JC#/Om|#Q,%pAܱ%GPb Hd$N( Y˯!J^7ă hUi"DB #?r? BP2FL=R#Ex#J>0![9@;ZH}d + @ +/B D @ J|K@9R)ap)^^>%V@!Db $أ(I B@!H"D@LHW0J#/P!,A a+FL~{$ BR D\=EPʸ?VD ":,F %7p@BH~DQ,|, Ha*$|$R L  +tK@ +XaR%$ ` +0gO$H0$0 t{$e@b: !gP2yWԂa Qdl/MH*k0?X/ŠGX)5@8 wB +`-o)cC@zCHJEDJ CYJ Oq 2x z(vA 8@Z= +bD$:4P87A@ @F:a؂/-EP*Y$KP>DDz!,A35yd*d8 p 7fPDq@ wB#>$#AxZb`ȁ5)d.XwЃ_qX2V#5Px7@ P\A0"*a .'I'J@ +)"eFF@ "'b?"qXad:"R7X Y" d VDdr h9`P$wN\&b>/≰ EA98bȃ+Y~F\90KD +`ipi#q+ wG +9N+y |;b +PF"zaFP R';4 )@'fp x1 9X@уPGx@(Aeې(Bn>}@<VF?2!$ZCN~88@v2$",CChQQ`mm0'rS}N (nA,ȡ cـƩ"PZ !!0IBz0+,%8ˆD*@a @X="E [w "(cyZANnqctQ#`HWf u/T_T)+cp91]8Db sZCax ]GU|G_'DbUQ#_XYw:%؁D=&)k^79 +vdaˠG7̑, %Qن%BqŭDīT'6';/B rj 5Rp#30JpAEi:_WKJSֆ.l`y+) w>G +rAs]'ܺHMȾ+l?G +r?kYIW+jBu[% 14)O60˸kpa+Ʈ̱E,Ap[35}O<5/:'i}|c?j'޶<W655I22mx#,g)(13%HUZ)Ih +J9`Lc O\¯Kݥ!/1]ץ!kHBn I#)l7֣F{Ԩ< ;X(hr6d,50煐l(ŭΰ$ih"đ%JZo̻C+ IH~CF7r( G%$R%'7¨6%#gQ QhOl/u> +t564R cP29ȕ-ІDu]Cy]C|c*|1"oD!.KqB%aGQJU#(lHِH߀-5\D;gQ^Ş/t$?DV%{ҬP"=2O6sh(Iiúɂ"oȚ""!j#DEy&41#_*EH u)!#IDJD+C:O7&R%lQmem4zRml#A8o:4>geR쉑BHٗn04,J]<-u~<8<G/!0B{[4A?0kAO QE(7ָ mx20yXԪ H\λ`VS#s@GN@m43wܢ:jR#-h~mRοxDAQ} .s=kT#QO{e_#kHBf@D ,xiX"PnV`bDwPse$T9 J%8i=b.9+)hJ*Ć@oV% ?2Q৤D"Omy#/:JJ 6_7V wƖr(!k9cOGͪDaץ$Ja\IW'ÆڴH{`$Q/P0r_ xΦxy#=Ow5z7ZPMV36UP M@b1<:cǎCSDN`'f@uX6F|hG kLk3 'N&1C C*0D ![R$zq"_jBS<8]*k-#c#TF`?H +ㅸ'  +o# ވ~FH )>D!y KVApZC"rߛ5,u K-q5}je ,o+tBu_d|čC{]",a*/7 +8 )dΡIDx`i:eRbOI5{"F\5 bJpV| A ;8RSpGBd$eay$qYy"$\J4 sVea`&߃1 y>-럈zVX2vmir[I! *nCM֔\4I+])1*oVV&A+C s$>3{Ь.<'hBOaѰ¦4W +uʠ !2OȏYKclIBx\cRPƩaBHRە3w S}P'# e8!s/!$\ƫI2DL5`&+jC9x_[*ވC bkq yB q7BadQ#m z?D fDQHu ~"+n%շZs^JC˝?K3KJS@mXYyA}CD &=m7dM4+?AV H XyEheH28m<6C7Jf4$q Wy=iV' Ke1DQ  Kze|4RCơ;?V|#&@$1FN5h1GRΔ6|ɯC "w$ +Y4Uʣ>"$cօ%"eϿr[JMÒ G]] '?$jUCvcB` agVy δ+ LЄ` 2RMDu eT7V]422T u1|DXÄ4EUV`7HBF5UeV1n\Xߐk}+]ry>cfvOxNGz>$z[#${Pm9^rBY> ǪWol(-nںj{Xv{"?ceOP^h?s5ߘQ7гT3EdG ycgߥ_r-? uFu~ZeSf-/[iDý]Lռ9Vbo/w7~AT }<ۋ/iC :0}܈Zwh @ȸXx1&ݴQZ/:rC `C {ϰ U=nI<1}Y_)cqFgc^ѦA4 8c̳~ө;ҳwPҫ9]z~ZmQCMq-X?] ܯ?ۍOSkoLEp' wS:{]Ko+?CCޑ?DoHBzë}qm=k@u^fF]iv_p3g8 +]=E]p`~<{?ti|%迄f`o5g=~Ctc\ק+}o5uXwݿ(ͱ]b?!zگK/GU/A_ló8{ۍaAM/͟쯇BL/I7랟8Z+Cfڽ~1; 1^&7{uN&)7T4+bэ"5amr%[8l΀>3}l cDb/oLjUTѴI8p[zo:('f=EY,Tg* җ'uKx(+",T?bd_r@04$9I<%4QIe, aҏI^`lX?7?B}^a}d=a)p;\ +caNbcm<=x|T"_sO;79x=|/3- |tĻIkR_h9)УFPD2m`;907e;Ge@=jF6%X9w'L:@4p)Di7wQl6smY'8p,Gݪ%&4'C/4}!he ~}exQXA>-Tn U7ɈR7+4يڅ)v^؆`҄á{1u' Q%R;֡CҮnl7&F%@U2:W̌/d +/DQM/Z+f"mTI&Sn@gl"EB?M +)t'vsh9-Bn kFUަ[hҘbPjKb4a٣B=w7>T%-h` ߮PY ,;e,KÅФƏ{E͍z Ջ(rK :F%ZMNqyT^kCSC%BPAITtaݕ۴􅻒 +$<;/(D~JИY1\iA_Nc2)3l)% eM7RY)qeDJi])SX} Jbv[iմcG ^P}| ޜdPYZ]UGҷ& +a$b\(\}fx6]2vJh +<̄&L轝d'ݷ7[Yc +oMb k 틵3̳o~f<`Z$;L] O6{-h.ґ ݆ 7Sz̵!6!HJýp< +E׹DkOptϿQv*B(E}iŹn¶E/|-M,^V a7-pқz+zZXr8NExS sz}i챯m!?^4,?܇:nmzT2H8͢- =V;Q +M !5OpV3 WSDď&eFc0Ȁ6G{14>*V܉8wHɱ# &D[q&:!+F*r'k.<î E *SP(J)>-,lc[=*:ih-~1{:oDa 潡4SAɼ@~Ϻ6*t?b^kb#+!S+ X +~ư| IM +T挂0F{}tgct$ϊ~tW612 C{+@:,$ʅ~\GX3+M/Fv Ax#r=gu(@f. SGHX'rh&m<-RI"!P愁b?jvjE(u ւdm*ZN SUmj4'~d 7itOQ/I֭ H`b(fJvXZYryZpr(vI lǥcmSb/݇e"ϲߓ aL*m1roz{-J[wᇸ.>Nz,!l3|9=53DԂ߁," h$!^X?B^iyjL}6NHj#Qkx,}q$?bA [YL+B8t|@4QT],0>kRC]Kt˛~ =D@‰1Nt51FTY135D@a@& sDATSǴmHJ]dR% 7hPeK98hc}]DG –#a#DM-U EF}uH>ac +)liL+6FƄ(w*KoשBy{)8xaKJ ma(! Wb8͕.شk-# иMƅICAo964u!cAy0Pl6H>ȧ`qߵx?{"x:TQzwu`Y΁}!/^Us͸W_BxᇾLBta,M`"KxvbFfr:kC*,"-%s?N:Z#nAEubq8Zx$6Tׯ9;10$4ւ k]vmbeFè3.a`t׆hځ;bCT' sA3&cB;oꝟ t8/6^M|u ,5&2,Co  ?̗% @*BEg2#er.6IA8Lp k~3qˠS! ȶ^ܩ70Q σ)g!Drn.hR>hj{J)1m#;lFB#,`K#G=ОGZ62kJ9,Z%؝Cj4/˰}cw4'a 6KjP&14T“Z6>~읰$=d Uz~H/}?lI~9tk:5)"P"j ow ZpkA@i!p@d_w%0F( F=R @jBRiFbIܔCacx&op@=5Ԉ׶Gt} 5]Äԇы^fx*!Nbx D:.wZ;w2g^ =I {Rݨ9]aJKqgD|Hǔ-ƹ {ϫ"o{Cf s?1enKu 1?d^SD#= )jK'tf/ p_0DqFܤCjoikKH9^ -p Zaңtk]tl[ NS&*.Gw[8T"n)7’;^d^qWGҾR !_U`&c[k$sXhҫ%BԼqUŕ1rj5[SGӞ˰Kݨ=b+mmf@lUl`QGl4LOCc2w%F f^ f ]xj:gE%юpS +##Bm z#m \6Ucdȶ"(9\0Y_[,u.RoeiՅ.,Wb)ݖV.d.*Wny@b5x& `_~Hoy[oy$>)25_9" h ٯSƯ3q &2j\OR#U!LU`@k +endstream endobj 952 0 obj <>stream +ϢmLXT_88BP[!\2#>fb]hUڂjЖ.:&T1#\@;U9QȐ+P,`/yvڂHwnq#:lUkQnhhU@'U],e CYI[ VB'X>oH(KAdžrߐvIV;r3W/twqU/bEZa1>R`wwwb'Y.)Q|U,hNsqs + ΔkJ9[ۏ=-J xN$ +IDvQ +ItL ꞹy9xz2q?A^$j ,0J`B+s[f,O>bb^Z +[3o4wfIk-FIJѶxhb^ÁH$.TY +=GZ!ZyLֶI$E]G>Q&_N:PiQaAP Pm2+A5/+LDD[vci]x36U_l[/|ZF3z.hV)['YXKqײvՆd5$! +w̽]y&Rcy}9v`*}q4Hd[ICe Oūωږi4qzr(3XE{l+E +ZJx3LWQO'tO!{ЙjtBg\l Lp'>ci(7/cJ +2fBu2~쭄uPdG7j˅UV$+2 x+"2 +ϢեJbYIBȩsHaoMu J\Bv&3H]&aprm䟬X^~t68E^U;'W]bl+4,eG,pm ys@t5 ֪ ? =ЦHE9|!1,w%0@Ab8joK,#QكԢ\pdLŤsU<ĀvHϐIX!BZ?P #hGpEes>Ge3.j ;KV8 c1<X&u(|wAjקA:!ȊY\~HŖ;{ҫ6#Ȉ&v1]+{ylP_e8N 3GDpڵX׷uN\ u"Jfv\Ps8}J*>^6mYz^q7N\ǽ?v0Œx8iE`KdmޟSMoc~8Q}b¢^d͟ +jy{LڴpgM VVF1%I*vTj`b06Xpҗ"dCTPDC,/}[7ڍv|V~_:nOcv#,kq+NKuzSUDI,T!cfA8-mn##)g)LH(/)wfp>V8T[z-T#7dFvdjn^HlGYq }߃9\6hnl@޽',F8mRf$ ہS+ZB4LT=( <ǟ mbṭ@BE`Sj_bv;̦Il"[i U{qR&a)uڬ4@!\7"L3gڼuaBi8$gevc>ƈmyyVhW^/_EG2t&W_;.IH!sS8gxsC5|]SzD w:S $c*0n:cpJS<$v6yP> 1fcw1ozQFD~9f+Sh:B_#~M?/wXrPQW8<ZH] ?DU +iOpx[ym#\Oǘfo:#=/(sm|> L64ryxʾκ(uLۭ*UD(?Иl +lRz\сzdRW- v_6(?8nмfD?$jc'!o( Р#~<6+EZg!yU I &LHDI@$<'< 8~NZnnnyGy|hްz\uVjm;N*SD>E4soP3/.G γ6-}eV)|HRB &@lz +Wd 3_-2dkņW%Ușw?ݳKG.ͬ5,o)葀K,31B`G [,|~غjI$Dd8ayÛ;{Wծ)I"̵% JNsIf2 9xHFsO4΂*+RtqpOC [_~Qy#$*O1,2Ao뽚(')OdLzAH0q)1QʪiH3UevSs(DjS Hn5Yv)9l(o*N0};[\Hc\^$ |Tgc  +ߔXPc{PX6L+?;R~{o9+QmӃh]&L}Rxep P>}w\]1[q +OaRPEAǢS؅*4h=.J>TFS85gٶBG2 V[pIAlRn +UBtL׿y 0d cx*. JZ@=@ sN[`Sا}pϣ4vTa:,8*A6W S٬.}Jf +sS#jdOdԄ +Qx=t-@D"b{R$^fCwڴo-la3iib +L ~~nfVACyv?U׈8`l@F69IukK'`2\GY6#}[0ԕ-n%`uRuE Jۋ)͞niyW6B57hwY!:G}>GC m䭶j oSnC18"u8=dzΧgIKMz\_Eerh?/5&";D"̅^7:*F\ۓmy>@9TUsuCIt/ H2wpbJTZh.2Z+8M26AС&p"kc[vHwtʢx4l"$QBjƥKu!ʡiꪍ+z͠HCi)U@xeI%Kpo.8QOG(nvPDvV79~'+KYԾKu7F>[ {sğC"F8:>gʖ8;n&,HрT!u }J_-95='gyY UL4@*{agzrx9Yb4AQ&?]o+ +La%8_kq|bkUd_)@[Ou[:fP hb9!IpL*wHCpfޯ#N +|%fd\p+zI]n蹻La$Q +wao 㿐8n!] uU_@N>#pAkh:g7u:w7=uFfWY+KUD3dh(\w…f둃Xhb9vA!w9w0ށt2Nڍc FM=NbtBy"3 M'sg~(b@ +5A bsADdN 9BJt"q9ij Zh '5!"RVDQ 1a `#z'!/RǦy8# V^2&܇Dnbq85HbfnNIn2 MmI&]hC((U⛢J,x5Ԥ_L&ă2R249\4QMr&^4(DLjfʞ qɉ\:m2~D& AeLn{"b'j(ͅ}c! B<01%)Pbm,(oIIv 0:P䒾X +9aDpau[rE\K9ERZB(9K,)VbpLE,!*Rxѱ +%AnbVsVZ%+W,J*Ud+H%O~EYP6%ŷxHJ6"CfSDI7Y J Q~nhA P~Ob۝Mj^Nr&A"4 -l!L2-@j2@,FPOI ͓ M]$A]0 ]| jz$Ŕ#zq3"/HVs"J`# sLI"XHCH8Oy q$ #**,A*J7H]p=Ps12,=sf2#:Kd8#sdI2#V 8ax#_FH}4C#ɘn3^H / ZëH?c9y:`F8i4ovXa1^MYA4٨1E?56xa[U!Y5HqE^MtaYؐ& H 1kc~)nFېAnHD78QW!oa"7' 1 +JjiD6a8,AG"C-H@ w@ȱC19W^`<!T9fZAjPCFG4r 561,:!^:~ΐXy2)2 1;rx!x[ȂގYH +ޑ*d8ߑ1 + M0㽄 t<$bz<!桿yyiT>b7HrkM\`6"_>ћ|$;Ǥd|@>e+ݣ{=B[Ch:DiYrF<c-3oI:.3p%bg_rf4ٌ&60\ZL$ɤE"3֘Ir6s&҉ș\#I84mTEY횬\fu*xJ+Ise7A -Kq9xd@2ʓ 2֣MNT- E39ɀKɋ0[k >HwF'i uq\n"݌.;|.6|3:\]g&rY2.ŕu\N`;I[; =)0'(_#>f[0'Y-rlOF_怶Em CP2(a$4-H E~gQE7hچVaĞZ0%XP}EBJ+cT#E^~IqSRm“-?8R4Dg^ +ؔXQ<*>8 %lk<=So +L[* +vQɋV0@*C6> JdƘT]EW*|mEV1zXUDlU*(КJTQ%*+8^z,& cX++ E'J^V4kק躭,k|N1NDh-])9K!L]kEKAb ڿR& ,h^` +ȋ&KF"Y/ +j/zp|IC|}ɴ];Yr'^:) /g2DXuZGV!P+ +F`7ڤ@9IDB0y0 +S?0ľ$ ` lF1N軇 f@IwELlx#)ؼ< У! h_ @z1c~ 6ؘ +#a0 %1cU=&F~*C~ C 0*玎da9d̀Erdp @ef+2xE'ex26ml:̌8P|yhffRaJf(nZ3'L2AowsWt&vʝ2;0^yj=uL9աǀ˧ؖ&؅Ax#0bH9&UH9<(M$Ui6e4\)k8PG 5A-R8`kjDoT3:8cLqq^ G_͝ohuyZ:kZC`7oM޹\7ކ/m@@ &m[ݗ٠]alPlac#5llvоl$*`c HFհ(m>y649@ 䦡չ6XfT46FF,7CBChXa1zlf ZK +>)Ct#dXoΒ 7/aN8is#8;GpFC3 +R1k݇1# - ^PBH8 5<wӄ؆/8~k_x1L #^xd HC9yy7ʄYwy^`0:s`\s6iޣ`ïs /_P|x A'maId@`tt- C)Z8U eZx:NHgԑY:dXX8]łCI:PaGq8vB(WD*:j';@slOVic+TaU`b/W!0U?UPL +NJܨ> +;JO\+4ɏ/ oЄfRu'G +{g'tO@=)#:xt C +]$ϛ0xلyk[{#&8Mgǚ@>GaMc}4ф78}$ dK}&υLQt3*?=?P^;`O`p'K?ٳ +G+aU bJDN'Rd*Ώ$\V| GS T$`!WHhG@~En ~E9-8oG^({@wbG٭`ea9Fx+i4]_#"փaFC 5:WeWE+1E35!]NEb: &ʻvz1s"(h/R3C ^ylsEkLyyZU"֭!*/./Nx"F*U)NS>^i`WPHvh@E *"@GȻ'x}r|hN$v- X@ +AR|Te뇍vH)ȉS<QR0mS씂m ERhxC!y뢭d@̀:3_W*9JK2F0E.J*zuDh,U)Zj<9p?\@Q@"Dl# ,Ex'[r yv q 'SyL4"TU8 "O-p92fҗIU8z곁 "< :sq| ̭O#B +>fF̮)du._b_T1/|BXtfӣRޖR5-Qf2Aw˴E}߀tL| + ]6G ɤY'/ VKΗDz WM@*fZe(_ +NH( 0:Nk,T|qÿ` L8 +ȭ @xԄ +Բc}AD"P)ÖA̾Q|{AI[RoQϩdȂR-n^vЃɣ PБjD7 12<8`j`ϩ8.=;@YbހgMPv ;8F@n]l3om0+>nh}@k .y [r8Hl)Vc*GOpp.C&Wsj5l?0$*k%9<="7jv9JnTO8j獗aG] p+'5Kn)`D%`:Qlk$:a'jE*/[RMM7y% PRƻ 0۠&~0 h\w)팇Vj(XѵVnww#n THsur \'|fIJFq] ҍ._Zf.*)6(zH8< %sf \a907l`00ztq@!0`] "wb-C$< UZ~1&3= h⾋d){]p*JN7\ `?o\TG=~}>3|x[i hDn%0K@т?',-Xv7]|,``0EhZ_uV4DQ  0R l؀Xte$.NlBuK(ЈPXP̀JP#j`3i`X/AXS N0ܮʫ2=%3`%m#Oۘᖁ><n5IĀzFF 4Ww7ʢ /f ]!B .hԃv qMHVZ\\w8/a7' )m'{jQYe'"?Z"9MGdE0ٜ4EЬ\ (^5^5@Pӣ9aFs}%\9t +tcl3x \ + '`ʃ/ 0C[ ɑgI D I (v +'c&r!bbX᝹`!;(S[ @.,TfS Dxc&63uQg +V]1\R q#r(O;4P-uڳ,YfyҢ/,|jCӬ%] dr$p(`Y'h"I3pcrA,nd;nln[}oMٕec+(aWx]hxqhtP~4%ݫ?R{l +6X5$ ΩmӚ6W)<3u6YN 0:>KΏQ +=t()?;~r5 #֞d? +[C$dx)ɬ}IpE[.u@6AeCA| ],57UE' ,te+\[FkNuz20cdBM,ʁK*e0V-FjĘH1!Jo/ Ran@ܘY_ZKY9uZLX7r*`u3e@z] S.z)9k2EP^HJh?x؍>Mfi&MWB/&iCJ&lWPFH.8صGKI(I +0;҂G/Xz C}~:R&t~5?KJ靫pa5fgbE(?ن[#ɺY1 4Ro}7CKRgOtaڂ̌W<s XU\M:\9<^Qʡ}?xH{27M"|=:!Og +da6]}UyTyaU +TBgh~WFx]2Xek!l˕OQx[I!NMQVu9V9ٽk6 aHdZOK}P^!w%Q=;)"ioR|}? krݭ/ONsDG;Ua_|~2-'v%AE}}礷79~ QX UF'z{2i˷uE} &y2_̾# +h0sTguXf߁񰢈 AлHb=QScư>`~&aձv<߅!UX]b<6.m՛,(]i{`ͧA‹eͷ.hf~ b֜H̯3{F4ǡm+dܦ,LSc*~ +#(K F=̧ QeJB] Cob#J&lGLAcА2elF +9hWfyuu:`#?_FX9m_ [rCyFR T._ nC54H`&:enu&kSE?烘7aލ5- ln!6ʸ)h_Ȯ򋘠Vz=s#WB\ϰzma4, N>/v҈Se}E>6owq9OAg̗I14/%_cWH>}izCLRꫥQ6ejB~rg$Hn1ޑ婁ti1޺v%Tn"4J+}tHDѦ;mJQZި$w8%)XF=C0PPeYy֝zTRmG~Yjl:%܏I1n± ܵ|yfJE*]MH*%0;Iف|܂^_DX&Q];y_Vn/,QI"W(8TF/QBCi=b0P:^tRa{ #Pِz,9nN& RFZybC08j Gл-BUB]ǻ0u=ѢՅQ(~q溻vUV v?k.B)GC?y3'SwʪFh阏E`HwyTG|p('=55Veg?Rv\*w Gg=[R +RA_qڨ;㒰YwX !k~/el :5wD+vx:@ &mG\۝y2F֞F +v֮CHvr&Oi'% Eyt4γ;xk*q}쬓%tzfqeO{E #BXLY1OVsЋ ƾ)Z/{q)-|za3֌}{a9̑Nzfq|6_ٴ^5O6!fu8t} j'%=W͔ÿ?fu +$—yB8f[8 t`IW||z(QB~PV$BDaurJ VPTD,Pݘ@ȱ]AKoZԷq'cЌ-&J,8zH%AO^z- +܁, iNT}AvH{.AFmZxA2O|OGZIv~0%nO02ז+!3[{[ĝ@GinP?R/ niMNNYٿtԩAy(ԨZ7˃nY +yrvxP%KVOuu5wP 頾[S,FyKYpP7îATb%dw8Nt8z +wR=yS=냺o,<58pa$LxMSwhy_n2.o(ibh7&c3tj/LG.B#h x{uv GyQ!st%9~_Y3B0sl?zK<'|EHͷp,|ZJaw J6'.Rꭹ9ۚЬ`*U՘jvXj|n9<М*_iH9rM%wxNedvtѠU%l!a34C c+TZ=GQV 4f_w3J g$f:{˯:[/. 0Y/ȿ\tT`p˗a kԹƿN/˴|F5 Ou{i/V 嵴#a"';r>4SBBߋc/gA;Z ~dsWjhR Z Nr6~fqw$@{ \qp6Em 1ɿYC =*KbyCXZ%b.4@5"S>+| +?QsGp |ݠLQh(cՋ^>c>|)2Iy>r]܌y72'Ϙ;C62+G`^fȤ~em( [I5!]R2_-GL埏yA#uADKZABTD#q-G,+-)"4D]"[O>=ύmz3̍򛽗 %x5HU_h+ԅ̀-zm+e{qzSi\( u8OE3 18,!B# ^\C;M]<שՆthqݹ1xB},+Q.?(S}$IzF!e{ώ4V<:nR?VޛXRZLkysK$N`A]x +߈N&=D_ֈUBuZW + н|Kc)bwΈiu^á_p?KX B 憋¯D(ę +B~SÏ%_HgCŒŔǝU<"|'@.pK;h [N Pn{1Inx¹.D@/az")xNt4˴q̼x)ͿM* +Gjⷎm>]]q}࿍cGa筧gEsd(% GtF >@ec}+ +Aiwf4-~Ri0Y*cp7iP*QuފB(a8:H6Zt*UTʚ߈^~'94MB"R_ъ0,ς2za7ut7H^n2"Sd=E{!ؤtxM +^F∭'/qY`w!1 >cՈ뭂4ׂm:\NvT[2&놨>t@rgJ_r4QXa?OW2W[[5Gh4\y]ծiƺk:nSXŮ3LoUʅu}nTOa&r<5v?jDp\݃Xb)\c4 |C5>ꗞUjkG(MzU--k=,,wZ#b.TCM.1&tg虵SǾZ-(PX!C'\iz!)XEmi5H%z2;$*.xb {d!Xsh%gAHxh!px毑% =XsRh,Ӝx:iL:uZB:pN"Xʢ`M +qSIP10b믞K+Z3:smRweZUqFe6xN?b} '5Ti/"#k$7K15֢X"L-: X,7J ֿll{Cu-L2X `q +;ȩjk(Z[z +ݿG'GdEQ,9SOըh tEE_aֲPu22k>A)V۩VtJRj xJ{˰ yz54=rtecTuw)Ⴔ!?շ*hU+>(nj&Ԩf/zarX+ NY~5fIVA4u*)S45GOa=--%ǵr.*a{!DشQ VtT/PR(Hf( -l^o.|÷Dy_!h Ce}L2)@ ) 6-,x^&a;3aJq=1ʮJ)k"[h)qHLTvLLeϰ,i`ښ:Әja^+MwY9VSAΣ8C|!f yt$aOvӖ?m*Lu/"1lEܽ0arACVGmp„ +UIAƓʞRYgw`5ƍT TS) +VUh2O>)LŎAsHT#6**f4aO:"#`VY}+kjopJAc/+VzKq@+FfI+*lVGkkeH~K$[1!m[-@/u26 aH9ǣ4W]0Ϡk2"S8\OcZ4@^ᲀ}\2s -r`3snF=z6RR\gВfYcp,w2-;}ѮNo/j'0NG"6#jf^-g-h@[VyC@Uq1̌-}ɉH= זUZRjm* +̦P-H ݲ7 Pՙ{oerY<pCzn5O^}Hpą@+-. hA/Nj=GlRN悹ƨc\RsvUBV]]{Шˉ +;,vjMJ[L|v18_Cv'^F?!9^ Wb^BOgK +V6/?A)%eJ7]QGh{!Cej}4_ljtݝ9Iҗb~=S쉍 ƺQ}Jƿ^; l<޲VD L[0S~bMck `J3LI#b+ғTbV`o;<-8JxNNC@+jL.E];Bqp}^8Kood{K)R{fqT'%kf{A)/SJ=4-#?ÎϏP ?e~/0+L2vp *aCa5頻:fr(vN fS)%O-dSBf|3ӧ=  ~G{x>x{+|'X5ƅ/R|P@R@U3VI5&;r;P:tǦ;|qaDhIԗP4?rw#OG.7A7R1|.ͷ2uTjЊN̟+%eBu[]AID_#;r9v OIBKs 8Ύk%d[.tCK"P9=LG*%|/6?B Ηlr>t+ 2;_W(]PD7@K2.RvD$,mY/wiD5zP7#t0A̪-P╸ʄtd% MfBs/Gnr'kh9.5(E|+7@|c~J1wPj,JWIZ_j,;V1YS4/#Y̑{@M3tŹTF8uu/G˾g4&i4IH"wԃb@''^+?g|[~K_a71~XR_%)z)gBr| @@ -707,56 +752,59 @@ e EeZlM <[lFƨD^m  W0Yk k X;WIَ`pXsFjoDZ&<% 2G&a%z"7ړV Ly79k4iAhaEne57Y|[#Gps $u_Ѯ򋩵_u< ͎j]z~?)鬣 ɖ˖pU[qvHX_V5uVAČq O[`JEVANZ4U%< %8!&!.C"MtEKxE&I-V@j -鵒)o${O*kϖxӡևeC [-+ KIC@|+yQNjX ~Ђ pQ6Ǫ#-ե {)+mgۀޙ%xd7 XbR5l=6>6iS45M$ΰ8̰n}pDZq6\UmȎ mQڵ-\ɉ6m LVۚеnC]%nքޡ T_f-\BBu[K(ǦfW}mK M@l5k%7} FDn:$\jn큃51'5hnd0ќmY7Yxm\l =Gpqn:tq7E5Z,p,k֚nAWB@SC:o[c`OwVtߪ կ|d-og%+|ÐM/ӟh- -A*N2?uX,wg`I<< ZΖAV9wJ^_aul m2 4"8Ү "DVpu%aQK17v6Pd U$jikOa+vrU]+A@)I\dn LBRpص؎sgpV9m EKE]i#3n Z&09 VCwGXQOF -:aQؿnsRIB|H5޽cwl rK}B"zeI7\U)v+\R; ڨ~c8lu"r|h> D L8.<!.; -۩1g  .@kWԗn90EA . ]%u M Cg(Neَ@ϣ_XAQ@0"N/71m.ߚQVUM0T}O9`})& ǚ1}S[?\4eaԚЗ\[aU+Rtu/J|`w썧Ctdl-$ypXvn#FK4ior.6vL! Dba3n|/+ 8=FMunӬ%շlC.xm58I)48䄒zD!t=R -FjthT = = <(,HF"mw'!x;nILx;vMaX}j_D*mFUe:/QOXlPхcV! K1!p/ZQ:c^^au2]z P NF+scw3-q`.}kHԯ) [iO=i0n7/0&#(GȝuTyz]x;@ۏ\mghLPKG| EP,B*W/r\8yԒ8T^7XZW~W)4p:Ea*p\z%= F2T]01 ſg08 zD@!LRīXW82ʥET" ę؅`+oUΩ = +#cJ58R?I+ H0(,R"+AU+Q Wt ^;wvQ DLt%k.um"TF@ ^k+f{zO=AѥÌ ػ++!WqO.\phT鉧W.WCB+OɒQ7/fXQvZ="z֔idãPTJ5 r-1@>Xoh6^ -NSnS BNv됅tF1 oai@lJ8g= .| ߇AY[G,s <&>1aݯ:_߮𿲬VȲ*W{ܬWrU;:l+} -$.6_Ag@WK -Ǡ$ `"xǹP$ -!!@/;:7P 缨 w*4 *h evXz«jq  -V -+'敬Ǵ?YXTS{ X$\a, l `9zπ1"(n4ӂ?aăi]1eTul^Ms7[-Z@P.EM\ + |C9W[ ݅$Eas87skԷa ޷r)abKt -2CVl1}o>*L:Aˬo fRN/ H3cnaASl֬Rmrۻg 16tkMX˪\"װ~r(rqqc=Yo金7*V,v?@ ]x0oU^N*jkV&(||>G@ X)5 -xڊ(Hv:ܫ~މC5p&c lJbi{z 2L)!:L{?X?5{tԁt /:ݿaʜ gEw"e7壏T<>u!)xjIc_٬͢ XU=lՂT*viBuԻiЂ{K0A `h -\ZA]\TXN TV=e mݪ>Bi6FeGFu,7S}*1BX!Cl<>uɧF$eK7HQl}[ߤ _Uz :'dƦrh^XлepG *3&9 C ?B+6_gh˼|,$G jh׊GHX9謇s3 γZ"c@IК"9ws%[Q=) }ḘcRJ3!|- ϵon|>d!} /_Ijː ?>LJ=/,,)%A *SZ'dHf͡Wu -3`,w3ky#$@A^xNh*79BPBZG$=+"M2hI s%O:@?CϿ)| -;>i;| vD| to̟-MBC\}Ut^؇< N4fsNAI6u!9հpTLxVUO?Z!&q)DU8$|*:G_>IAc|) 3:?({q2忬t#9#tEC6%lG;W"z<`@q$"g 8Yц#cCk=S+/V['^![D!!e>ؑпpr~#xC/;c-8?"^ _~JL242GȼUӳlٰcc$@4ebOQ3\OŠ4#Щ K}74d)e(& :!+/:L7r?]?c~e~O#`:)8,XO"-Mu8ڞXq)Vm%RW%ǧ.$TY:\cTHE:5MRso~U4^C6o3[ -^F%-")$:?rw3+tmr}7'tm>͟k@VoT3/&mM\KU[XGʾ?΀4de GL(QF}S .S -1oxEHe_lxTlt~ocR>̧6wWf@TK>zJxI(ZP RCqa/Gߍ 2xc\*r #lUDb`.o E< lkݬZ@嬵^?.V0jRiZm^X9F.ls8B(y +鵒)o${O*kϖxӡևeC [-+ KIC@|+yQNjX ~Ђ pQ6Ǫ#-ե {)+X I<]B۪ M{ 9o[OK/.!Ux jc9n6N#iQDR{ m+p^ GgU?یqаm5xH]ےȵadU ]6݅[kMzHeB%$Tyllva߷)ܶ4DVZ"zGN`Ddy=|솪C…68XS[R*M6S)ޖၛ%q5ņs$-nqn < fC'qOZY8AؿfKo~%D>5?Fx(F{gEPg~Avq\ +1HLzIh-wKmVFZ`_&ڕ|yDkWRitab;L L:w b\]ιWb} +f{_hy`%vm0E'+ Z(i:8 k"TO;\{]#] JOIBH:'pךZW~A}<.| zCQr{El!t_υ/T,H 7- (_I9e̛ՕRx,5UNluZǵ`#^zߝqԳP/.n(%5GjX&h:ĮC +O@|gî%vC-z2 +$,U@ UuJ;DX$y,˼gs/7iX#,KBiO: +}M[f@F% ù `C)H0}' +O(dq6pyGPy'9wIVNHx>, @E^ԮpZzԭtˉ- +J@pIX@@.NxlzN?}vϥ_@Da ه\ݹ'p8Z'|0lɹ)L?1>=Z('b?q,v4 +2q}ཁos֔Տl߀+=xVOU?K1a;YBaoҠaO,(քV + +lս]Yh+v~P co<50$`ky_%Àò+v1\yL{+3EDݠtae +l!k` ߞAvSGxY!.1zl-0vf=mo,ewkIO1E}!'%& +)`|zV0pT3sUDۦj^Q]aX@ dIMF2iȸ;ۉv Nb۱Ch + #o Mddž : ;Ϧ_é *pa6Va[l27f-4pUVW)la])mb[,c6-!YX= Okla; WZ*VBJE" УR+tr1]jR)!-r D.yj;ue6Jz-嗪mkB%q"@t\o;dEą5[[Бi,ina7|pe6|rc)bׇd40bm}JÆI8:/=wC3"?B9~ )US_jUVzr}vX/Y/| zª%gӏ2.G{iX ( }H < +y5Ts__p6ZX/˿]]is;u_C~pOiLKTI+e- py60@9zE Ջq~LxjC?;Ec:\>D )bxhRz!‰̫(J*׺FJɨ ه#,ԇȰs[T.ht㒞ЂVq Nq#R}*._3\VRb=?"n{N]~C)gp h,+R"*LB0ؕٷU WuC⏪Ԅ^EUGUFQJ +1LA%|[苟$t|T +$[tr)p*ŕ̨rc}Ņ+FȉY;"x&Ď5a:6ztDz*#W@XG=Ra{ ݕp8'EO.Tue8`kW+ҫWG@n}cd}D(}S3,ZH;@]P=kJ4sQopɖWx7~Ep]|v/y'xĩp7[MR'vuBB:g#04 6v%3EQхCT `߬#9zf ^WoKq_YV+{dY +PB=nV+*hL>ņm~փ/ 3+%FcPcJ0\o(ZR q Hׅs^yi;|JMDNAI u2t;,UxUZ8օ?ƿSyWJVc,,a * FMV=MS0RIC a@\eH=g@|BI7}i}RhOQAߴ.߲l*^h K6s9Bb-oMrN(&?݅`BƇİ9[қt˹z[h0ĂJ[0%Wig8Ck;dw*Vڶ>_T3zgYK + +xbws|?'zt{&XO 34PsOGxwTl~^D?lxg`=ayO1nCBvͭj-|mA7Wh6uԅmktbЫW+W=j +,1K.36.!WouU3X"A,NQA*AgF  } \=+  JȤBBiEX @?)3- *b#` +<E߰$3+BO,G߱bzEqSY?X#KZK_RC/fumu=0l`%#\@'Ge/~VRtJh>WWͪ[uEXd}޵o F} 7^J__"F38BIZ˰tBHUNBm/%+tC+zͣގd~T):OQ] P^[O= -B"OyPB_~AgQנ{#W{E~5쑋?esi9TodjBB?\dȲ{'zQ:f!M+6֘>7}&OeV~˷3jIυAHyJ1ky0M ) w6qkV)¶9ճ{@5_Y,eU.kX?99|ZM𱞀poַwR@`n_?p.dMKz?ACCH'L5 _v5_J]| +>># {Zn~] +B ,ɔ\ll[mltR$O;UuJ`!Lvb1r~`es6%4X{\~UKWAB9}-N +p?Rg\IT UΩ\JbM|*#?`|4 ~?{r~MG@F$O]=^Z6Å8[9b:iUOz%dpFx^PF, \n߯Xz"SI ?PBfY%cX b+}=BJ( %28>zPF= @E&|=|wZF:@M:~_`eNS~Rj";|Ҳޛw*Z<1G/lf}jAO*C4ԏp:]DŴVhQG% K0Kz.؋.S .I,G*+Dz6nUGA|ⲣrs:қ}RWf[Tg!xF!I6uQ#OGIUƲc $`Oton`Яa=@LS ncMnO4/,]h2ch8Ї`#n|buTnce^^t>M [#`LtkExףg$,ٜzrtùFYTv-REP k$h;\e> TOߢ 1)%ƙ?Uw Z7 7>?l> /ƤQ5eH +`& F)Cσj2$3Ыep +brlHF [/ϴvr;_"VB>Tgm7_&!֪g:rvsHf'z@r3^\NQU'rؠ$a jX8*[FL}+TRߪ۸rCWb*_t>գ|VKᤠExNӽ8|_Vu"xdb衉G+H=0 8xHqZQ¬hÑ[!JЗ+-Qv-?@Ր2BH_ 89 GEtqͿ1k@EB/͏/?E%` &{ +#dުR6l؃L1Cg 2\1 Yx񧨙O~'bпxb%G~>Tпv|GE2~ϐnx~&.Ο12{|_w{fx,S?&:pZm{{{S|,c1jCHHst7R@/ta!L|-/ +ozχxr~j;ݙӕ6@ +J>ݛߓby6ߵrC+h̷zvնsv&k%ߪYoy#e_g@2̈2Ά@z&[()Ř7b"$2p/ 6<ɀ? b |6: WyXr~ͷ1)e|?]KC+3 %WL=X%g$zJ(x)8ٰq#FJ@<̈1.9YQȊHz"S1|7?csuη} E< lkݬZ@嬵^?.V0jRiZm^X9F.ls8B(y J=fiӽ|-k"_ 4́,Z6&9|![1+%c72N0܀!n|B+paM$9 e?=eyL4px8Mb}i;W/N#-$Uqs!1tceq9_d.xiyXo:ijZ= 2&1#/ ȯzQXNIV vQoa`߀  b;cjH9Dw[rY+AÐp 1~I&;c% 1f8s8O[Hs07"3ᠼV1M|x9ƗtHUD@ZMg+ka0N\δ_^(tؗϬ./ ̝X+mYO*7I;e\ -ov0Zf]U$L+(' Hw#9 c~Aun2Y@5fNdWv=Z4Q60L-" u4}%vka-pg1?_w.Va{!8s3nUU.|jDRϙK냱ma b۽c+Z{7X \UWIIXKn^9s#N$_.3}ZikG=pn.\(w(m50/J>#T,jen~TYꮇ˅Vv?T~%`v[-Nt9dSk\DFP<4&ULi#~Q?J'(T?4w+(OکGX q2;#~Iw~ir3Sp9·ȽiQ?>hqi|a~ixJWF- RV^a`B7gROǁW앸1EpƁc5:ŃӛvT8{ kb{yLw5}&nщWHŴp9va7̷;;; NஃYP#.0|- Aۇ:H‹ۧ/!|it7]Cu0W7͋I{{U언2m197[{תk`Ӟ1כwVp<*mDW:m% O?Hߴ!:RF$$o:}C5+pb6N"/d'1S_e.Na`[.{9ZN:!U u!# 5_3~ 3q9gn\RBj,hdl3( iF" 5mHwx7t$gHD%sǻL5O1vm/0"m J@-1vUCBM6f̩ݠ{ %Q`+A`[PP7tt`L>[CZiրēΐk I,y#.pw"P(!+ -=Ț7v_\Qw ~Cv^KY;.vf^9D '^vU̾l|卌o7s;=.D}utL .73 D$FJ-QIFO~;M _]:Ua -zaqΏXlP44^]010&GEJ.jߜݍ2*@}) -OOI՜C4=}_3^WTӓ/5 @ZUI>o_)\`xy45tx]'FX7vTG̭*lb t1[}2p9` -2| NTԓJBGVuܥYоϢ?:H7W*rm-T(si{SV4 0VNDmPE˵^I`T͆ȿrka\FM~JG&I(LE:$ -B$K5(m)JjyWqƩLB]b< ĜQXZBjZaR2''' aMĎƚƘȜ&$MH0& lBX#% cMGNNeJGHLHbGNȖƚ˜$L ɭ@  M $)e5QXд$$AYR1&0 bIGIeNNGIIKJGHbŽČޠ$ YA Yb%H:K 6́}֬<5-IXBBZ4a鈂X22#2%% Gc`IcM`#T,jen~TYꮇ˅Vv?T~%`v[-Nt9dSk\DFP<4&ULi#~Q?J'(T?4w+(OکGX q27tLᇛ-g;, :8!|ہy&y69ƷF.}}e?B,ui5JXU!ty&tH|En^_nH;&NYS<A>iG)&v xw[g- o)xTLgh!|az|?:9uQ E>B3nWpD}Sp?:K(!h}*7PN{U:_suӼD\En+ p39|ûeX̾h/ F<C8Y+pgSЦMta{ qc݆X4qM"Î/˱nD1_@YW>]3'f$B~9>ŃFh{w]}/Ji Wƾ_KoZ.^7o(>C!Io \o$H̝v\Re]$9i-93zld6sfy,8e;CFx8FA܅OF!np 1 o#w'9:xWx?Aq'83rzK\\Ǽ01k0"f8:tIQNGՍPfR'/ƅP,@7%M.|/4#`&KLCQ)V%x'W˺-F-!p[SU;Z\0V9* +0,raEU h&)w&uz(!οO%yWy J@~9 +s2p`Rwvw ٧G`]+rb׻~U/Z0* +" uY/  +!c]0Y]7"o0Y[YY0㷼Z>#yj9UKHk+% HǒI66 n$c^$0P ÎAP, =kȈD}PwSY6őaۙv34.'[*gXw=`2l1n61ikKrcλqrm|XA~&t]H܈btfBY;VP+$!lU˚F.O1 y"v+ l +q}HMޢGV$*BVӿW\QT(c,I9Ԑ$JUP< F L]53:`=g劸T)ɽ{(cWu4pDPbZ1Wkȋ|H {g _[XŴrq$wNJ"R@'پ@ 1o0&X/ +G<<ŃW% L@O xwD9xϿr'$ice}W]3'm tR3NY vxpoE&q5U4ZNzDFy8T3mՄDD=A%I@q-o$༶kOZBBњf`POyKzJP^T0@IO) UIHb8>|:M^- ͆#Qg0SS4 gs/O0/a[:ocv˜ ]21,~ FYuCIG'P18vm H< I8kȹr:" 7j  +z'rO`.\݃~#qaG9gMW;l-#n"1P ⾪ş^7 uQC[rFPZ'ԙcbgEΌρ/a;(M@q"앹nW[͆kW6x> Ӄ BJWWO'z\Zy3H QODQJBi2dT@(ӏd qЧ Z0>d|*%u}JC-|{s ՝xhG-b/!xLM O.0^e ķ;ȳ0*ISJ q=@ߙBs}\ k Ci]5]^ ;*v_͕&C(k' j֑uO0Q C -afP#nPxlp?6\֩Ïb8TLHk%#l 4߭S޻6Aġ^ZHy b6< E>CʝjGf(!owci, U?j/ +𙐜XҾ2m +]e1 +H8r9Vi*лrKJ;.C6cҞzZW=\GH|mbaE\58 +5ĽJ"5'E_mEio)ܘ5׷ +XB/}lnYGyﭫw]}+aʲ6lI,DL?ї`۪9ρ5 [HWŽ2 a]d"z|PJB(o=6z&ή@ @@4a 8m\5q[OIHG3" 4Wl$Ž[†*IOnEQŲݝ#W+0ahpoڅO^pR2zO!!XBP]zPn2Գild{s}'SUu;\.j` ѿ&ua ɁڸIVԴwdmdb*Js[Y[rYCh÷`l1[99VQ $G1o t{ s½uU:_/EafE@ӟi yob>NT"9(c_ϡԗp[PjT=2XX30xKh q T(L;A ][Xَa) N^Hw;XW~xmJȉ5{cGu$ܚ&ء/xl͠_`Mge`ߗq-W֯@!÷OE=ĉ,tdX],qt|3pѩ"VLuRo8ƽ*;eJ#lD +%)n_^\%p +Mu@/8Ɋl+ƕqqm$*$!~dL4NήYoL DTҖ d?k wg*ڞ=oLB]b< ĜQXZBjZaRӑ$&$ aMʎ$599)!1!9I [Jk +T$!BXSQXӄ IƘ$L ɭ@  M $)e5QXд$% +HȂ/%/ ^FB6XYZx% KHHK&,QPk:@FtD$h ,i l0;kS"3[RJ"cCPGb&aL) LXQRQRҒ؄#10$%1#!50$9H sxJJn)da<5r6C*o#a 9 qx&t#(u 2*g\IF=aF"1WI8MaƑZ8h;{ōN#! >{ENω˅4v9 ȩ0d6]/gnQi}*!@^N$`Ģ"rwP"/A l˃2vA1C'n7a e1l Zkpbq>z2?PCg(L:y @@ -769,420 +817,392 @@ E 7& 5Jbi+Uwy&u"AHT'Ah&2 afqƏP8 D 0=gYOrI_i#p}hD0k={=㖸2_ZŃWANtP01A}'.̠D\h3p)+%:SgĺpݒntPO3x0H0q"OCGOO`+ovyd: !AD^:Ì{l8!Шt'x<(s+B ?p3A? -ϥUnZu`XUg3i?ԋ MrQF}qoyEԬK(-4q;WvÐǺNJN(F"ƻ˿pG] b&@ AE"_)D ;f B^Ȼ ղf:!hBsȹFQ֙B2mA{aUwr/J؛ctNL'wHivL0"`RkiCW̾-{e6 -'ԟb?*%vu Bz/BQTgrO\/M&y-([|ڂ*29Ӆ4`! ԥ-qh/5"A<0{(cvuș,qe?c'r, 0C y#::嘅,OY^y-rlaļpS0<F`6- ]6~닷R{xuQ7Jzb54lz5m"qPy`bv,E''[ϚK4rT6 `ܙ^|mlL5&$/|mN#8QH|XNLo#].xfavdazLwj닷~2t7`SY)/1zvmZλ=q. D9 g?~Qn0ݘ ӷ~{6tySG}(߾6F|\(aVW6qy]Mb3xK=.mb?B;vrZ*, /d6'́83m{ G&_mT慃.6lw;MEZs ?j8rzGթ×lHJm8A$q. mic݈kżh9*!,}5sW; U{ˋD #(c8[lL ه0*90іZ"{ -#,7cXSg!ntPc.R!x#>` -H>zJfIֳrħ~xWV릗kfx w]Z0Cxac^zQbB~; ^U0饏Q -|1o%FPr:MO:t0!Kw"(>w }+sb`5EmnQiuY1A ٝVː?A}R2Ygdcadc t A ``| bH DAQ -J -AFTg0;i1⤅`يȎEfkz-3lzv8&sIM7ݲ}E./6'/+JC0X[N"F99*\: j`QqL&CZH)V9Қ\Z UQԳrf+bv,d}D8g+ߜ !UnTb_yX>bMI҈ZCY)yݺ:B'aaȯnY*;"qI=*x!ELW!Ě;G?NG/l:^czQ`u{3Kd?A}30gC%](0 ԏT/V|Wt -o_@8א{X)1"Dt^R2sdi7+ҥ ~;; %]狿%BnQYge>~pNMKG.XydžgF{k97fPM&_=߈/i& epQMoqGFwʂ^GK[>3KV³+,r l>'8wI4X쌆YgGa3| p<'%z<5g(\$Vp=oxߓ?k۟.gv7Q\ԟ7e/^r>wzyb43d߁:$g d}u˷m8;/f՝6f[Xx`?6Ns5l0be'"Gv]AgB9 d_n1|ZoPmS,D<3\YQ>| KGC}x&vY7~w\Yg%Ɏy,7NgܫoПs_ /ëqJyլ?ky-Iͯ3+[ݜ}fd҃6pIYNɟ*M)k>_OhornO@1/ }a# ̋Dn%'K[Z4֝_Q]!{__{+edv$X􆮎9ZRyAvC/4!tIs0:K^fq8e^jRi}" :%|7uHq>=YI3Mu4s4T:>⠂6Н=@o lG}^Ox3]7xQMgdPҢ-\lo|}DU4"W{ C .\6O6o_;elVq/?:O)_z1~]pOra+!}4!Qq%XoA6?Ðsu[5}IwB"ܨn_~z&\merUjrV!Z-T%336d1063-e4b3-4c2c-bf11-1cab41a000d99172551d9-9ef3-4ed2-bbc1-3f2ea79f1f84 670.25284f846b4-97b6-42d5-897a-4f6e51d87d6483fe3bec4-4b95-4332-9b12-a4179f8af2da5546125237-dd9630ac-5672-464b-bdb9-a8e30fa3deb5e287865f-b4ad-42d4-ac77-1898149a59c43.ml10SVGFilter +t 4.)>! ԥ-qh/5"A<0{(cvuș,qe?c'r, 0C y#::嘅,OY^y-rlaļpS0<F`6- ]6~닷R{xuQ7Jzb54lz+fMW:}đp8;y +Xy,%ӹ^k40O Wy+,ܕb$e\(a_!7* ܹTH>>{<d^8G1oobKFfF&1.f`ZfsdZtú]QOS JpeHQę*kbEnL7('d }+qb?'OiUJ<ÏN=U3MgU¸o2PS )wk(劙.vl͢\^tb0dIs*@e`Q ƝEo@8y ɱ0.f Tc2Oזر4s9%k;W>8ݥ-g&`Gvwx'sOGp(|0i,B9BL'iٖQo(s@c}ʚX܍0}k; gO7*7xԇB+nc4ʗͅVoumܥݴ.:3'y[v!(3.QA!l-KL"p Bf{|| S +d@Bʏkіx<֍Y;ҙ[ɂЧ\3w%REHP?b2jV:S 7V|-yd Ysl4vwzO a.Nwo ^VSĒ_ @A}4@0uV7}s)&4?{y E|g%իhARB88ć@?1CRؾ[|F*!uNYօe<|H" OW rp4|'/oSp B "A1k{ +2'9\P\16Q'`% _itБ)ia UrY +gdcadS +W: A`t 2#H (%>czAv-,<̚8i4 yɒ%0Oey^UʈdhӰ#wwhۜ.26'aw@'L 1rr2\b:CI _"䯆, + sV;BZ'H t/R M=܌0"e8&G9[$D_ZǦŞ v?Yvoʛ/y0D%1[> zM;ǘERyG/)zF?RDB^s{$.gep3/0]絗8gyW4lֺu-95y}^69 J-y:07uvrx{#:a87WOtǝI= +-xdz/)j +Eu pg}r򓇹̟ѿ}O;f;:K ޏeԃFv!̂d:qN> :zݬYlmRN[a;nՈ +'=pY ԕVi(L\^`7}w =>7N'3-]V?'}mQo>/6qT.?q=`6۲.X>7n#U~ؐS.~sY*o+b?+|d ]Uz\YDk +ss pK~ư'9j%\/Ǒ7/ŁqgMj$X?kyl-IgQJح9>x8w4}ѯlُò"*}J} y]3<~BqX}e= ;׆R ɏ#r/.En1,>nkIytֶӨ\w6yE?BFxEe<ƭ|d\HMc 8ӟ;OR ]<(m|ϋ]-"}b:1gC.z'ywøt|?:Ncq׼PM[IޗڧIEӈ0i6DWf%Q,$kN 'i"Az~ݔ=l씶|[q|2:?*~>?]̤Yg](loZy$PYצ5KB3:T3-$ KFZ=8yq?p =FnyIR2qfg]}[ Zĝ JVZHk +Ό*s + gzzJvhD"50T:z¾GE,jF*;gsa9'fN" Qɚ[4;.8U+8hV%O -%172551d9-9ef3-4ed2-bbc1-3f2ea79f1f84336d1063-e4b3-4c2c-bf11-1cab41a000d99 670.2523fe3bec4-4b95-4332-9b12-a4179f8af2da84f846b4-97b6-42d5-897a-4f6e51d87d6485546125237-e287865f-b4ad-42d4-ac77-1898149a59cdd9630ac-5672-464b-bdb9-a8e30fa3deb543.ml10SVGFilter / : -/XMLNode(fxmlnode-nodenam/ArrayeTurbulence;childrenstitchTilesattribute2nodetype(noSvalu; ,numOctav2baseFrequency0.05tresult,1feCompositoperator2(inSourceGraphicinin2object0%xw10wid)AI_Alpha_yheigh/Def ;4fractalNois4GaussianBlustdDevib1feOffseodddSpecularLightfePointL-5000-yz2zspecOustyll-color:whsExponent2(1Constaurface5arithmetlitPai-$ɰs&v@p@`D2 @ #`"$)Br+a N&9d{Y8R'LVecL]@ӣʊk=Sp-E%ِ"E% Z -B`<AH dρN@Un2c -a-Ne&'S;Lިe?<}}$"->|Ea -ps[lv#0~/tJ 4@_Pz=Vα̈́"vSޕ.G *?*5(pZBgK=T‚ CccC藅m[1MX-r7 $ &| p8 -l9P+H[92XQ'B.q}GPK<&ڡvaYElU>ԉ+S^ %֊T>^+@ȼ 3] 1|V>ʰL\@>LT|m-x/C5l=bBp }/e#dW{)ǯ1"Qvb#Q1B_-ƈ[|3j4?&%ڨA$ `BǸ#,A6mjN a'y^dqi&1T)|ym' q)SA"$JdϾK 'j?7skh*.PhijYbEzuuzWw|$MVHDz˗OR'([<{S&%tz;ɟwBSpd. X==UVZ ڣ:'i3030332Ffwm1+o_omb)ɔ2!"cž{ݚƫ d2YUu [c bӕ(F>+;9~>}]@GTQM>‚D#tg2`HSA<@*j Ht3AtFp&HÃT Bj䂍4yZH(G4*<%=CQRD=ӺE< dɑm{@մ;e>P%=#Z*$Qф=SAA$AH1(bBcv"tr$IS=ShRTT\lEUh\EP -rWA!QB{8:q8ں1QqP5=i"A=$" RS5 rPT=HRPM#CEI"H H45,",XcHô^S` -j@P@DE9D 4)C9 e^]6MXX %*N_w:$`{}pw&DP`Da8Rv*/mn?{\>S*r~g$UsY2Cg/=./\^_Zxm@`2& -$ -z< tU ( <$ʶew7£""dk2 8cecx֖+sMF{-]c}iajL,,,,,,,,,,,`fDy$`b.?We3d;m,k+QX^ʫwqKt9]-l+Q53 c.Q筬۹&xyM[1v-~lھ{Xfmx7Z5M5dDa4c{/;KvoWymkj} c -G웾WNB^wx3˿S[aPL"j Ԡ訨 @OE9PeDY.gJno}cf - ꉠ*f5۩ӅΥ
xKn:<9s7sv̝(o i&Y77YweVe\fg]:ߟ/| ;…m->^[O[^ka+BBKϧK=rc:ݮk?5@_C|`$ -cxUu]\E߅+QTU ƧM٩r\S\ }%ʢ۟Y?X:mXj]f{fdXYDYqgִcV,3Pn-Ek+ؿ{;zd3&*H BY Eh`fafa -fa@2ADD$-F#1qNyF{˛l?<`D $4 q'kirttaf` -(`Me^b2.f4faYRf&LcD0@w'vnNg5ޗ ;13hֹY? Wljbxm PG)Be0o3ÿYvQI/BX`[LΝf9kֹ9"/,6dh$V5͂N{%ڗZ2Y/IHY@մtwdIM -WܒdBZysH5£Ql ZxŚۏH`/ u]P^_YX)f3si 2SH%H9.(0FE|{Ģ0PdQ$| -*E'䄗B'bOd Uy TM4d[ {t[kax Ol㩈5ō41P {OA|1! -4仏lh0j ,{ ܼ^<!D(a^o#QU6e4;S#ȰtjCgǎt|'{ &O_Q1f Ae (KLgܼ>W>ښTQbiwQVy+qGH65\& _fbĮ X2Ƭҵ-LYyh y,TҸ175y L-DDL:Rɢ@M).s e] -?*+eƁPG؎GMs'L\tSLN͆>vCX*}#6 -vVF#G@CQ[Q ˅@U6K+.rB@n{R( -pc-Z@?t{ f4uF+8^cUUG+nΤQv}S5-|lhmY~Dv+w)qT~vŸXS P>*E FcEP ?|1TgoLvD -RD\T^Z/^-?]0'>%0_e6_`~GkB9sʒHa[6H^I" @} )ۖxqа^u'3 R~̏>gy3au2A'Qet@8>?Uf+gXso3PR#Epxʃ~oM/GX|wC,tJ\JȧzM*'TM-nZp/|k_xQlY}O@jЋ-dǰw/Qg߄r&l9w@ -uNj`Y蹞(,p@qL1fxU@=kCiG@S D7um=e F=e`{H_D%C -hCkD -Z༞Mfn)GЇ-D82yl~N3wYצN;:9Đ#rCGqT ^)7HN ޳"(Dr@mݟK?Ss!佁3Ƌ#G:>غT>V.U,5#"tt$J略B#K%>eD+K eʕU*h0Ae72Qb/U¹$o2!XtyW4퟈C;έ]0 Qq U_1yxAkxM]oEs{ZNAM061 ꭯DA S gϰpZX>,+](}HrHqu>nW+fXoE - Y2~\*WiHb2QoII $x2W8{Iy8$=nd|W?ejǭuт8 s'Ck!mJf'}]4J)WDR&EH%Al; f?X>{:BJ#F,)Lq|;j.ÒZ[B%LS`n;G9q C;3)c3=Oڙ]am";R֤R.BP,Ptj¢Ұ%I_s^mI쿟6P -UYKW[2a wޚ~ҝ6ij"Ute2 M|KٛpVSm -ԺMEHjo[-NGU_ؙtWM;)Ȉ2Gv0>HGЩS r_ Q8LL$al}QUf~0ȧ^Χ4Lٮ]&wUooYb\4/5>#ag7'6.k -TakE"i.8U(zɾ;SպU*ռRa~&U7BJ>MmHmoB5 "ZDrpd~xM,N fF7Prl˿ذU(ڋK)eX+x9R3ʧ$`. -Hjx~Lş{>L,]0 -㢁``y -񕚑U/h(yGcJ*\W]yv^H\-#LӮn7v]d)Xadm.-WlO#K_Ցk.I8+,A(7}t!Y)4FMl/w%`hAI!A'{3Hu5w!g+d;>95?; -^C?z"Uqsףxknmj2g#:ę kڠOו B8qV3ʇ52,:EݫFHDd !4QιK-$xIRuz6@ʹ/ssa 9:dGiϜbI 1T 2v0u/2u!RpuȨ-s~6>zSKudHRy/t;>23;xg&;-nqc@<ԁvLVd'4 8 \M;gs K,(rKҶmJ۳.}J -.VQ'Oj6~U&}kH*/έ,TGRqLŨO"QeZ0@+G,k4w[;tUquee/̋,*$O4(XMrASS@T$ V5d6=-M p5dDXGaC@z_tg>f -L+*.AT~&5.wgލL{I-nMo)K pHFYjFLlz68E]vO˧}n~X4|j^ݚ*\ie)-^ksKG#'KJCMU=S4R^ WlYhBm 8 F801r8~%H.&;HOvm@UbK_3q~t YnCh^Ji7^WrӅUqS~u~s -</nS -?G,-*dIGb -; l"RPIn@4{Z7ԟPzj) MS6`YDD;A@̳eUVD uէ$qTy$6N%Ǝ48u; %ttļ{@d,ϤY4V%0n3?\`l WSLJb;AaZNBrŒds't)t8Iϐp~(q$~iX{=6Ӗ}&t]ŧ4ʢB ?)Oɼҫ _!Jo`iyJ߆Cg[gӕyMPi0iir肬LG@#ԾQBJ,TPԘħ͈hF2υ)~ 61Ϥnݘ7^4]Kd:B0%6w \j~..Eq^_6bwwꪫ.?0|s9PooX*8$8$bqM[`*=F>4ic*LFwvG'X&NsBh.k¶ǃٴiB\he":/vګ1 | -e /vڛOömDcㅸVсY'jtbOGO{qsZlS:zy^bn4eHm9"^WO哟Pv:'gѭ8sz}h>Ph|GIwpyYo?t'~*bO6}<C ?\f|q.ct WOQlkYbztP/[+|cvG2bx3F]7oןfgU4C ǭqq#~+[Hsp5c973z|?_%stj3qVhqWڊE4; m} LJ>Zj}4I[c}>}OOks~5_ފepGS?N9..ujmק;x5w'|yY=NrvZG>*);ngo(4mzoN9N)ߘ_W MFqzGJÇeӏژef5mu֩zίNh#Z[k0$$OS+{fjt{W^OevIpks 7bNN?6V~U?;|5?T>)C\+?MEy?oSވ'?_T6eit<+b>wY;@Oώ>ϓ0g~}×ayg_—mysV,öcs]xh3T~pbޏ}Y,7GUOP?Xr2 p8#|8ϔ.|8 t."rZ,3P0cɫJN3̾)J0t|>}>~r>1ϋiÙ#Oh}16SRSW]WANseEu;c -Ω0e̸rz'jK3ܒհMӆSj]>Y땴pt'6WR[K[Fv+r_ U~k[Rc\IޥNڍ:C=Y u^'&_Se\q6JRR(p5;gWuX6vKrRnΕªn ,IS>%PB- -%2 t]6qRsi+|1PW!ŔvS: -f]̢(yT5MԧWjjS)}+Jұ=eTY[:IΗ$(M!L%ef~VuEiVᶓ45vstԕU9Sۭz5)PWO VrR.D%Pk!O!% g4e+Mt)KVV8c*Ot+o5**jz{:մl@F, eW66OSSRZjR(3尺ReݡIO7\~~+cKaBk$L}W?,PӚVҜtݫ[-=AȶMcZTQ(a\Aiv):Y{d"yP[7iiRvyL _vep[ \z>Sfik`Dga#]?C7 -*8ٗ5dY`.36Iwlq=ld -tYOe eUAmItхNQƹ`ރκ`VXDc!lӶ Ӻjs ͙/-pbƬe˦`SXƶumN?\tٲ\\)Y:,tF![0 :ǾPMc!Z&/Ȭvl]u:eؘ<(Š 7Mqmw;cY'{{YT=yY!4I:@@yŝuYllZ`6?y(C2 e_۝2΢֍:^=Nރ ۛ8Lon]ڞGm:MqO]^ymcFyO4q=U#ʺ.X`s}`T fQ%u;d rQq%M7qDp%r;m/M u;d_6@wa@Jh@L?cs`ONg֛'8?jqճ>q;^K4issfIWwo:{;An9,%}|U;e_kK˛of/?/Q>4WzZZJz)rbio^ӱGłrTޙ%Vf{sk7G!,&@`p9-L^*B"6I\\$ňR$N!Y l[$0*(u"CC~\!dU -84! J2ScʀKł1:1-L~2h9&@0P˘b](Xx`Hm*ny&medXA;-e۴q- @mDֱ[m)2-2]@o7 " tltP6aiLB"ƶ/퍲F^X`q˪ f5v({;Խ鷹||_H}=\ZWauܶ +/XMLNode; (xmlnode-attribute/Arrachildre(wnodenam2typ(100%valu; ,idAI_Alpha_idheightyyxxfobject,resulturbturbulencbaseFrequenc.05numOctaves2stitchTilnoSfeT1in2inSourceGraphicoperatorComposit1/Def ;4fractalNois44BevelShadow4-2x2(blustdDeviGaussianB1dxddyoffsetfeO1styllighting-color:whspecOuurface5specularExponen10Consta--5xz2zfePointL1feS1operato2Q&$I!fc&v 8A!@"p!(P +!'We @/׿̩Ѝq#uxhRkz؅68ITB+QDRA{;EH2Mªax'?(\-'D!>s +D RJʶO + ip %ToW;!&q߳qu; -8{6dP6!6X`VgQ{($ MұlzkF`B8#Y($oۣVhB:(Lo3Ҕ!5Ti*W+ݗ;UMjIcX)Ia%'U_IR>{뾒tW/) (vPZ~7fWiUI=O\IP -2P -q8jI muSX',!*}+]YWJ[kXQ֝Xm4(T$adzK --6jiY"' -r.k:J%ΔZR2e%|gVo9*k ':e+8+-ss|ʶ>VV*3Jʯh֥q Q+/B\Q~I秺'ж;lObJ*aH蘿_aOW -ʯ++Yib%vIOTl۶9q7ŒB8C( -yK*O0 t͔{?7̓OwӜ+^;MӗT-V W -+V|ܫg9eX_%}{RVZ -k 坞9b,)jԮ0S CJQTƕlI甩 C)Y -%k-ď%x5eN2iO÷C -;խ*$ҥtwTvtSsj q~ -zݵt v>EY]9+;#H_zţ bNa:{{2, +]!^nAΖ6**el,K7DX\B20 2~3e!m?؂nv!k:;3b&dz҂ A32Iye4Kv&6 O#UE$¯ !EEEY!3 +waUI91T9k4-=oRtKQh8 fnShE=yqYMpvSp:&kNxVl>Z7tWkŝ}~5{N:QMseDfS)[JO睮,\&LOפtʵqιΙ2psU++N,:,9pi )NlI%{zPUZ!DPߙ)ɔ2E2*tT +۾g٭yaK-]Ug5֫X.|.lMW<}NUWƟws}("U!h!!Q&h1`YHXĩ@"B$:@(hj8 'URC9@E1-$ÁRT R!lfL(EM TDǑPA5(W;DQ tk²r" ZYAQ9EU+)zIRD%AP $")DSCEB4E)bF<DrDDJXID4ILl@= +U![Q!s1sZ1WAQ1 +gz0EQq" po<ϣ~y<$Dirx&*RD xPUu]ؽ/v]"!8 Ifż*:..t_JBE)cSv꺜0Ե9lnޏ9M-{1}IϬok,Y},5.mN)YDaqgִ-د( =sKZձe0[]̶5w[&K|d/hBM4HHE(BB, ,,Zc,um^BBSÙ"U H͢7"q\iӍ +$rOÁF{˝l; %4,L@LKLe|`9,NYiD(!bq;ikbims\˅VsӥKe]o~ڵ~*7>ٶvk{-=lO5wn95go2yXWPd,ar U`{P%Zd!$վkw=,EljHTo ji/68*cWg'Vʶ V 8)'=LjlATQMPX"\zdJZ?d E%ݍ= zgz[7ge8|Nq+kܦ9u4ːN|":';"49'}Kz0>I,tX,KJ;zVx |L4)giU*נ%Pp֟`I7Ĕ̾P w-/y<o~@hRHK `դ1#`үwLKTH$9h_J,uG g߈L!ҦJ  ey~ETbOZ㰬+=0u{7Uu@JŖu1`_BavbRK+E>{TP\b!4ڟ92.[dKQMWEo`Heenkl|}n8OWm6-!Y)L>K WkJ/LaVPwLu/#%k9MjpTH3.飦sm0pޝj6^vwG{fkzQ X4LN&!r7<Н)bo!|~.#E5!uQ@nݠ KQ`*g)U!یCl \g$1_>ÍkSly4vQ,*6H8ȽN#' l5 GqBTuCLP RC Tx݇Va<+8GO,p^06 2φeYȼ@67It Ƽ]~Iw=j4`Iɑﮑ bX$gw `Pz.cF;P7&*ZohAaKv#3-A7[9uI&V*W3c(sU$9U)@¸2ط2b&֨KZݧ:y뾧*L8dqdag|Ȏɫ`鸆\Qyr똶3NbFJ.]I\r ` +&r +X&ZTf[)h@ 7/m W:(,ְGu2 aR֓!Pl#Ȳ[K*pA-8!RaL{$T&Z$.gPcsmE{л-4M +GI64sgu!WyՂlNtxNqrʱ O +` R}8zDs 'fd-]7j8O oRMMZv:kxS]JZ= 7TwH"i3"j!ƞq`mѺ> qz/~Ԏs$}9 5`m%jB }k2}i/`s9/ӽ/:ckL$RXMYrPZco:'e}RQ!8-df%?fcVۇPj ;{a-!woɯĽ};wvӏ +eɗ$bF;,AQ3t5϶J 1iߌOYaRr_Ad߳V/lw$-j`YMB(UO|P! +%2j5H@-H<#@eOCŽi'Tt<<ɱǎ_1u?B6`GCD{Ӆ&gmlM59 t +E:$CQ3䰇J4axmGf6<~TZƃ3JYh̕[8+G'"zJnc Y*^'1hM]%=0-bU$V<  mW.jxxu9x .X[l b]@dN'Z=$,tZܹ5+p J>Z_B~+&?|v825ҏ`n VuoE8G>=CsΎORy/?9<XDtԆUCC#k`Nv 08CJ؜*[r}%0/> 6kDV4Vٻ%J7gxHrF?HM/ \*82%p4KzI ^W]o1V.3j$ U֟ ϳ)+f 8+j[B#TYd.[RvH@.ÍkYG6ًv@T0=*}hZћ jT'3".R?Z&d׏pl>8~ +B|دۤ 9wfV֌P~1hs:*^|\Hd_opt8 2<(D9Q"xYE!oPQd \м21]J6e9BLQ #q1ªi62a1OjWI+}D휂~ 1!+K1Q@&Mͼ .0LY+/SXk[p2+m3\2%߂Bya4C[@j)IHjUS }!#`a8nII:4.U#nv$`b`S 2cfJ$U8=HjIB͝KvPf_IWU/)5]|ĸђ $)?]|l[x2(P\E 0 Tx<׵=SH[⟤\^Vw$>5~^w +~/z݉Nॊo8ʝed\0&$q/U8 .2w3zQqC!(z.z}9EO;+`bE'G@KHƢ|l@S K $zaCDeQ)匦o[{rڃ6Ěrg5d( _'FMHlNiG& $"4+@`6&$ +8c"#!V!C7;q&Ig:QPD.o+6~pH#g`Z)(g1}7'sW>t;e,Tug~>K1 @JQ{`lyEGo"4d|Jn3;^l3-ۯc VuG*ςIjSZ¤k o30""RcI( +Ċ!H/1xDKyR@(ⱁf.jn B= +s~qf< +.4'MAԁ1鬙Rͦ ).6gde&.T~NAoW-KK+x*_-GnyCUe(VP[e#VXe{(RO"4iR˿;a,ܨP38x:KShWNls"@C\v%FAyk5[ZAsMaƩJ0#<%s0jN )^ۏv2Fpzsd|v{Z:0 @|p#iq鶋C;dEr>zPB?Z^FHmW{C-}g 3#21jY՘>"n'YN6~gP3G8ggl`{Z ٳuxm=@>^lGc{j/qzq6:~+ɤz~&SaNzԇ$[G3$)&i/iB] >`Az@zgnwhUx%%waS=F̨?w͞@,ClG܏vU'Ñ %ZE06 ק#kbq75S2جv֪eEWɁ@LL;5~̓/!]NW&9LhNMce]PM<)Gc%=EVnn篛goӲO:*<0D +D8:1(*<3n[Kζ(ڮfE8, +,O}Y Ҹ)Gҽh$h),fZ,ELPMbj?(N=<ڠ"܃г@ (C]ڡ[^iqzPБݠO(2Ğ,ǞBsIwO괥UNnw`y,F`OH.tf)<$ǙxZ&\Fq2`B NE4*Ѽ5ԐߴC'9<4\ i_E7pe +|: 2T/ "&+Y !}8S.hrA[(9 +oO' =6&*P˰.6\&j HLffeq%s \`ʃ#DPeI76 +vĖ&Hd4) CHE8ZC0%6w \j~.. E Ǒ_jwVW]uIw6Fht{=mM +" \$uEw,讑EidWmu̿ZV9?gZqeٟ:|O&xr?4޲j[< +gⱹ~0i-ز5q#ci.iڸdӲ{QNu:%:A_\J/6_Ӝe&X6Hȶ-Qm,;M' @`9Tbe-ʶ)TQ>zϔZ+m4ie9OyO[gQ(ثKWΌo4jb['rJt^ފG.}MeM'қQeu#-< & q"\"22L8?Nm۲ͻ'…nq,{]Uo?>/yŽXaՍ #CP*/ 06W@{ h>7z'CuY85lm#(&.Rymm]dqd]%Y5yND,P(XݤP*o4{4E4JEaȰ 2'󫝾8U) YjaӒWYȣy(ߜQ(}BPh|GIwpyYo?t'~*RO6}<C ?\f|q.ct WOQlkYRztP/[+|cvG2bx3F]7ozןfgU4ƭ1q#~)[Hsvp5c973z|?_%stj3qVhqWZJE49m} LJ>Zj}4I[c}>}OOks~5_^Jeq ~w \ שf7^}ֈߝ]*gS8i#85wдk9:}38]n~c~>Z'1Ï(QgFKpuc㿌^'37iv峓FǓq‡g)U~O?vb3kc~:qNо͚"N:S mQkk䉳o*rx _nVT?Nೡ?NBxm>!F)G +OJv?~F'[9ʇ#tkY߾ic\c(OX~jQ狪 +hGuZ/yV|%#|#u>?;v< |g}]a _嗟}f_f>K^ێetmL{zxS‰Kx?g|Uy??GC>co)2g,L)7 |> d|>dY0> dQTv6O80*LrZ,3P0cɫJ>b|߂g|> >O|~74Q:n 54U.ySpڏkgeij?MiuUWb(‰&HYZ\˪Ϲ&Tb+m3^/7%yu:|DD9w岢:Ý1X TM2nf\9%njXPi)KJZ8Q:CBC{ݥ-[a;e +C/K*Y1ᬤz +((Q)jbֵEVw+NU%V)xZhNj{u$PawRZ'iU,:o +/NR)28Sr +R %))~zs띳+:,@V%\QYj9)XpJaU7wz tοIWn(kDUW[VOull +NSՐbJQK.P fQ̕d\MXrܞMm*ìU$ KJaD?: XR[+>*9|e)mWš)2OJ]3=Mee-3WV,IgT'ծs{_l#ICuܿ+_c8IiJxNT0YҔS4 +Sӭt,QX][㌩<љkcא$WJIIWӲmd4Ж]ٜIeޟv6f](tFjHi!C@% .,.+d@XH*@/K"[ \z>܅g晲Ng\;&@(k,H n:}qF9\֍:ܗvGY[ɋ0a{{٣٤W׍2)LQΤn/{4 qe;$A"ooZv`QCGfjAwjDYe#Xhs @u;!Dx @BuhrI[~%EaM?k5\@dɀ,g},<.u<Ͷ<ęcqW+''ekTYx:)Ź`FZgkkuRڌxkR?1~9cK;߫QyVOKt.1a~+c;O[+o[IgSN/_~ZXRyNKm+3Kzؾ{s1F[ ukf)K-)|,ZK_Zl]|?ߟvf/?/Q>\Vki}+TʉQzi2O&WLYle7'9$`h, :Q I7'KcD݀Q x+&B2 .Hh"rhrQ)0 2t` 3G&x2BdJ + Hx&/ EJ +Y]h &\]Xt"scJ|ρم*0LFf +mP)0*E&DyR lw2=d!h!.=q=/i^Y.^Q}9K"itBeu& Q}i&mS:EN)jkӥIlHm҈VM~EN+&lTE ¤eQi(py;̊Me"JlZ/K82٦ xuo875T2QhUEj6f]զuil[[oIq&]EV4-qӴP4m 6IQ\IKmdu-j:}U"a;0khMK[I LӲj.*vXmɦEޗŔ]ln*h"*Ѵl.rEMYM̦ik!IMlQ,4aZ[~ViͥnvEK>^ fev!5x4&QFꗋkhBNklùe,vH]ޛF˶h>ᗲ9,Az5So5ݫIJRa\ɇRVr*9MXKW׸49ݧ{L74eHiM$UnJeuNUӽsVJRXaWԭ/i[$m,|IiXDaJ0NSN%yJRoW8PQkNJOhଛ:a oOUY%\ͺPZÊ((UͿlɭE鯤z% k%3[R(laT/_M,yv]80䥍bb9!F O6pN^BpRt@ P a3&ܖ D + Yx(^BφW`0F`DH,X.AP`0,6IJE#DLh B`&2C$cA +_ءb2 [#‚AAp 0"A'SЖң@'S8xP`.: HRXƀafJ"B !4c=GX C'B "q8 + U0' D4hcWg:@30ܶ@ ; + 4aY",!"T9:  +04 2 ό l耀t0G&X\&:B3R Fbņ#̀ ɭlWlf2>6“L82 4gbJz2  ItW? +dI&%7p4ɨ⦂dԉ2J<0|*^aKOM5,uca@1}XI9` , H\(0,6ňWXT@B+ia ++ !gHBD!}L^`nXPa؄9w;`, YdЈ?H2*Ղ" vD%hd[m1$H0p+B@GP*1E$8?$ +,АqR4PhEh$ ȏ C).hY(Jb !0dLe[&"xq $V* 1X`FّBt +Ј& N6FRH >B!%A;cCB(,f,0 2HR`q-Jh` H +endstream endobj 953 0 obj <>stream + MF 8 ^D# ldB2FF0khƇǀ3B`W Y i=XD cD.3d[iHt_ehHl)Phff3{$HPJ3 ` rUPS5WN,~H@0*"8aaqaBLahXWtv<S{%7,0̑߫K,1I=F%o[]>Z[|HkW. F(;r¾jl|gUK,[X0חY!JחlP )t`l,b +<8 +|A&8F:~-όh*(G V 8 ܇~cH88vNPZlEZ8bo~"vdTᰶ +rۜ8Yݪ~_r8 6RvԜ AX:xU\>لI%a-v>'+<X4Fb184$ڇaQ!}FG##&_qumKzӸL|׸ 페VX5J!LvIō{92i[ +ǜ}`-A8`gS$C<n`^US%fc%ոN)=V Wϓ4$g/+wVMpOsNUO 5Bh4ptX <#X+MW԰t]D-9lj &.Zid#S[S:b6c0DDz' 8'atȪ(`>/6z |9 [eu>C^u!ϷlT.? +ʫ0)B4 /:2G"|DK,?"5Sa&+DȖ m'JBږlar/._ݡ҇6|Ԯ%V)@wFpEOI:vn:]c-5MŅu Yy͕*1!"9ze,Uzy]~u4I.!K" ZRF^H᰿Kd[8B| hur_7?.`lkx_7>ѸRqNmXZ$+-/|Mn B]Wȣ7Q6}zj/T? 05zݵ ~uwUk֣ 4D@!,|tcՁ%{lܮҬ(mK4yQ@^XwpQ/~\Եl +sQe4FG͏IET>TkڗRr!Ǽ7 6\U9E1gTӠv^yM،7l !'KB=U1bNxυO9(P  1_0ܛT8;5dc}K8ywfM4Ƞ k믜a1Qڬ%|F#u@gZ6(bw/܌L(uYtG TGvтUQtNF?2TZ0g*#@yJXtEݳ +ȷdhPR\M6 '1 ÷$s䳗54|LV(}q w JZNB=[=2u#il}|T0C.I^mtN1!ǭ +2~[ԥ/}݊xXUq9I1.s3g7jDΗL= Y( kyAXҹPJFPG(M©W|l&ߴ9*xl<)rml9-EաVK'-'n3kanb@k4C|֯ռBC-!cI%Q?FvJѩ|(S=s %Si`pPٸ]BO#j俠!.̖tP_H f3JxEi ˧ZZƴ /z7Vg>^8AXuKjv(_DS ^yl̕JvgNݩC^#-I=r1g/9 ~NuqrC*qXYsL/!蔝4Pݲ Gn3Ԇuă7jp@%DH]AICҀk+FAVJa%G$B L]}*&`. +]te +{'GW F"Y2P7˒X@G_s&u.@GN{{qA6݆KP +!JE:W\~ʾ ށouR,n 2Ä,s%V *=)>d;Բ<0|`^y5u4Ξxsȶm sôm(hɡ&v`3fB;(y;> !Ȣya#bmx_fqlWa6"m!5 ?} Hz:nm:Z'z0Va̍DyHNrMR\'0HtީL7?E>Dm;3ъE~`*NQcixL Cșg4aUN)v94o;_sp8G'e3\_2ӳ$7ֵ `IeG4kOʑA%y2,jIv2LԊ&n#k뱡RvώJu -A!2]U-`Ҷ: ( 9\+ԙo}5X<Uu!su_j7 Ӧϻ†A;!Z"ͽ|X+Hn03$C# +ɛMMxN +>B1wWR*Bp0ZbƁa +=RU˾`#8IZw6g.LGѐ,:HJM#%Fs].Q4o}WɵFjzHy!Gʋ^wE\AdlbHNC;,|e_ץyDP3Tz'W)p^BY`w8 o#U!e,.io(^/ xWLOwPiߓT*Q빛s)(%G/}&P+/8 V䈥t8r!_,]9F&_(\.th{1q69J!YZ4‡="4H2}IC=}6؎YYfDO50je켨_jsڃHY iap :K5t;:9y1 Mkrl^Sԭ] "nǖ@yY~TAJk J_kjɡQAZ#a2(tLJ?HR$±42Y$C㝹k?/=́IK>MK- o-J]@IJ7 QֶCix~ Jx^RnO@[b{ 8W.mϜ\ $@ߣ*w{H{x% E|s Į4+tLGF밥[KI[ŭ:%y6ҍɕFU2~.h'xOL&ǜMՐU*G6?xƴL1^&u@ƜUǬUꖎwgT&yG2,_7k1kb@`,* ngJbqiE5s/,OR܂€Pۜ R!O;:Ҳ R g5r!uȫVg~6 "4J,BxRB]&BMV6=f9G0pa!'K!"ͣtX0j[D]RĴz\55jn2̚W4 +aTBeo#r;_pn+54UFNףX,L硈.CcvU8BV-̍Df$/!8jfUbWjyu:-6hXTSj h̺6@wٗjH(#%X(Xm.\*|h@!&r5Οri14Y9ECxS`}KRD:vTZt`{Q֚$=ȧ+Y /:HWU!>J6"?n>w>T&w$6jB6"0`Nie2fC/1ͧRPOxKI(Z<@Mor D\L?ڶeP"2jDrƠӥT$&p<I"mبIq +0FQB_cS@rV|x@q$ۅKTD!Nk?/zs>G8l;k/@[bYinyKn9ęGm-7Em. E/ ̒ZQMx@`ёDT"ԥ}^8CQ ;np391A+>EGftIvbY>n83 ..ȽʋݫG`}Z*R0ث&Ce؏΢tlU,9!ziisf̟g矄bcqH1 W5=.k}uTn)rF8$4}_> l8R5' 7 g ryGxEz.^(I^,wNl7-͆D1IlM/bAv͔E`Q], +?6KWE@F(PR:@RH[si{t/!Ot?IBao +Q37HDB` +pҍt(Ny^v7@ YdtE#k$(&z|; +_]1ڕsw?ß:]7t0 ^ᠠHK"Z=E JA|Ƭc;&A%3p@ifD#(`@pDQW<,MÖisr"znh[5ptlã|$4c `)(wmzNA5MjI*Xu-+oAEJLaL\dj7ts:s"dj* 8ѦnBQK@jA"g24Py|gʼn^Î$ _f9ءJTBK3D}*WdVB)02@e8W_&<ݖKpN&Ei=\f0eXњܮhڛ=ʶ9ҿ/&8>)QsVk3dhۢ53V´\wb&&866چ**/A RD!KqjH0δ$/#C KLy JFRG M&_t:Xs<ױNlN`x.ٙ0O p[mY~Ӏ9B6E|Qx'd2H2eQבfSVWtӗ)R7+aDD0%ffkw=bҫ4 +إRT*GIF e)_OK` +6u33,5X)+De.[RdQdCLJ!Y͢EH""jM㰠xˤ!1D\F\,wcdE/mZ`.ۂYwiKTt>Ăp%igc$˼컚IO%7  ftI@`!l ks Sf&g?Q8D$ÓP4Og RϜ^}y')\15qXrXn`㹻%Ǘ<?UR9Q?y"ԄLdAEݐ +sp_(C/ҭmj{7MCg¸ٗ1% +K08nAA ^Orn0-xD'+x]'(=%6i)dG`Hz0;Fqe骊UM^Sl5Y-li@nMͥnq\!d @/Bba2D$|كp(i"nJ`\b8^p6ař$155&y12zd G_ ȝ ˒[ng\e 50.x&@`:ۡ؀:[1ktNM:vI/C.e1]jEY 0(Lgax0W\02~¶sۆr4|Qc>el'&7^RzR g;J5)oA3TKiZJkY^EW)}?{Q*}!aӾ}!.#_*-e˥+TKlp Jס~&$Ƥc잾O.`Do,aܪTBHi[I#nG(;614jɲ3WI![Ee!_RY3n *NKw&#V%r| s+t5)듛caM?AF5ϝp#Nݪ1C 8(.|UD5IQ[KruBI|oL4re0UQ=(|i q:ZrS,Ah{H$gf"݄sM+ȗ+&$6ZuKjNhU:--eucP_S-8V= gP$Ի\żјD~77Y%9Hl:1]=K\+e!Y!V7ona_PgQ +LyƾlA8mPsIB03M7 =7xHw/F3"l8P囓h)ᐶl4(1zVtY *Ĵ_Qg.Nk_|F"j.ԴÖQ,C=s!NhX Y謰R;v9+b9X#ɻԽY'4qEei gp<ǏY^ag̺l +tش<,]9gVMwG̢[>;ofgYGR]Vm+)4ea'FRP t +8vJ*m/y<&e4bD0IӘKہ1¡fGgPH$ =<֙h!I_eXFPU12XIQ+YRɚTE C_ + dD>ZYx`w{:+Rdmb#*t[ _th&Ђm支т‰@U%5QNlǓPCD$g0LB HhU!60|XeVpd!FeR&\<QM_ڂ=ۿެQEjpG7X.rsFLX;EF{a2RQ95B܉SoFu72E)#Yyi7Ra*$TcQ9`=g[B ~X)Dh>b-Y)CCny}&nY% *P.NBe.sYia|'S*wM)5Z9[A%'>jc;ҁ* +Կn}h#ڇ¤Q 3T^~pK7j @0[>+&Cj_MDF6pՙʸqCLV4r)TcmO͂,Ai2nAu2:'VoWŢqr'ˁ(2|/(W 柤!':Oq3Y?ݶ='=\#,/: |H|\EѾ\NM +wgAv8Zz.p:rHil<,ch& ,jWA~zG&%3iȍ4(,%L)&>D\Y#I3Ԏ>˒1Y+x.r3ۃ|9~ԓ g +˴2eJәXAa>#*3[_m%21c[>1.I_nq7EFv}X9o0Fx2 Ao"&GQ=7m-hJE5?<[iSXdmY0y镃6 +gL`ULF&:]e{5Ӵ^^6h,$!fj14V4 8=5k58!O-6CRfIO"C S!Kn(``*$_ݾ 4)"w[nX9eG$)01 + 6-w%+MəpԶ#E߫f8;MO?ܹz8OВwxvxzNP+bLG/-1XG~*_gC@ +<[STJ=uuFy.lx#jFFBEeh0o_|lUnLO-Enh,T6r"i[sU,o{rV^DT1-3YF6w1XΩߺ@cGṮ,YC{f)Q;}/h:O"P}EUԄ V m~2ձaH]_@b3hv|Cjp;XL7$!P(d+ ]oI5/jE_ <]1>u(zL8CfQCUn= "JlLQ+P>Dc1֤L|q?)_ڭoBTs'oےk$(7|7B/yWVԏ{`AO-a}0M.͜x2 *8ƽRapB[Kp^64cFxgm^F]\uAIYDE'%0^G_Rne>?F- +Icb+b +CRXUT* 'A_!nIS>Hq%)ҚtD"K>R+tJvdXd(#$6D&r&ɓ +&Kp&c}QrokbJ֜o//$j:]. 8ϻ;Db{+[ 9y`G.Hy]o֭ Rٻ:ӏ̕s941lTf^CԖF̰g@?-r UͰ~9YB粳?Z)8[vj0/f=W;6miW`808qE渻GJ-.\ĥݓT$Ene{\\zZ@yqƒFSqv˭ +NSu8 ' I'y{H"Һ#v,?{=O!U.Mi86Ԉ7"$Yg~84ռ@]yUj@ Y77**^V!OX(x5{Av1y2"ogY߬*u V.H윏PsE?я.!xR|_0&o{aY/ɳ6iGdKVw,PL$K06OZ2a$d'SnPoBv!zTs|@װ}6X='Tw^novX]INV`w_ѕI}/ї YJ u&/GEee8tچX[gsY[®L~E%$X(ŶmC`_?0?- 1#pq^C%G\hc&z3=b#L6-Y7wƯe [ކ#=Yz@6 x2~Ui.&6IjXlÐGEN&2jݵcQHOty* U"z3*s?ՉyuYanT ׂ)Hr5 +`o9;PPN8=|7Q yGo-\ ʆt Obs(\,bMf(Ȟ,4@d}>-n\ht;6=qwdZ#DDKG8 m}OיⲖRʯ/9gЦ# "s%Lh~zwaˆAN Lp+&FE \@{M nYq.IB{]s1]>g 5i_"$ +Ѱ>@o0N:)`U'AW=W;KoN:r$1.0ix &OړWWA;"m4r^6s +,Z4Q +, QxCd`&zix@MDjۗi]6su}OwD_⭹oCA/.N*0""0?d`-I,RIЕtlTw`ޥebG@(kX sv&'ϩ|/}Rҗ/(Om[q AT(*PrE\Aݦ3ge36Hx| E>5:CS4;],X +ѢwT$$z +=Taz9zz NEJ(} i!m\$B8MLyCX4HbsDM >oHJ-h+SXvNP`u_HxfΊg*Q!!80T 7 puj H%iL&[f Țǀ׉mfIi}YFb~  -D$ }h[G*xrnS``d(؏ -P%&4CpyUI"=4|񁹋̓;H,G36*  ibT!T#:lh*8)Vp: . Xt X\ - 8Ŷq6`C^.&2Gœ`h@@R`CXD$xhH# ^I+3S*n$ƐCz -, 0F6(!1 [0 -'rlf0 (XN,6>,!`TN#2 #Ղ" vGEE!hd{m- D,p)lDNwX"A pw8 ( E'!KŲ `d -hD<,S]hT,)  $@XCd]LeSM;DHCU%#A -@dǁK%x@$ :# mK|BN6F¥bIpHx@ΐ1$B@l \*CZ(P(Wj>Rh56Fƒ  - G @KBm&6C#5C(N"{I sGЎ(Bu"|D )R 6Kł@30@P(εzJ4ֆ -(%:0M0K! -\H_ 2aE#E@BH&6lAبKq2IƄ*h">"p܆AplXփ9MT, -z>p$pfa@KryDD -=G<  d@< P](י.,CEN!0`9<D84@vE y$c>J7怆̐ @4 -ttfJ$HO!D#  h ʄQP[5XN,~DB.,#8a`a`B AWt<{]1yPQ#|mʌۅ -$ >J}.k3./NRKD9\_6$fw[&ZoK -endstream endobj 934 0 obj <>stream -zvGծE +< w$UV|?a5t.cv2xgsyF`UC}С&pvoC $hA<'\W(V| KNk*nu &ڍ`0*Y\4w=Ȳ0 Fuź -!zW}cq٬P nu\5A$&B߅,?sWF΢ƒj:MBR@NM;4x0kY*L:&ngե']rlR(xɨmolmNQj>Ǖ$%htu|# '-E؆Ek@ws-\Yҭ}k*dvRy4l,Y-(TJyy`դoJ1OkE3ܩN?N9HgVy&c9*1u% ~sw&d&"!R`-BJ;oJ$Nw۝|ZN\́u0,,)U6UP{0_{DEfcDyp`y̩?wT$^uenhshOSb7R-1!z\"%ڍA9jE(Ns_Ƌai] `x,̠:\MK T64lŨbh>Bʝee <% \\Mu7*<>y軑S\=h~TcǤ6%UKhwH' ]`U+f^S ]],gVD}jу AP|3+$?s\vQl jdF,hxV_Cc>p邨ލ*٢)d]dO;D [jS8\LwM*5+'F1%m-B GYޣKD h$FTc,I_:UvL urI] AF!E(Y)w -nq9$Zr& IFP&Ji'f.4$J;a$B;JM#3žRQcBΘI37N/gee+(Rlؗ'2ł0ֱZSeo=E2Bkq7/IMxkٻ 8C tiQ\3yhIFݘ;h+!TJG喚u r:*)ad*R։q;L-^!q2ϤK u[˅7,DjOZ4f5-M^j{>7?\!4JTI3|v'!9#NܶIS,Ds' X(-o*5- +鶭XUÜWj`J&wHm AVX/p(8g6 %lEכxLXt'![U*KBg)gQ"Ɂf1͢F4_ 0c23s19;;?wjRװV4y%Gݥ -owI)vwwk6ew$zm>^Q%&/B'_rL#'F3Q(&0&3ǩާο/9Ұz䊓\ @j]z|MN&#-HД7$qHnC26J0>̡:p&a,Ы* X_"nRj$bl`DP6ǀY@EEV[j2/HѬ30m-{"Q[8y|MGlgt9gS`y 0[\Oڈj7j=̆@vLOƠ2Ǐ$zU kf,ԡNA z@0>n.v0'5*3=2^3ʕZ! ڃ-ygu?!}[Hf+̽7Oo-h ߅5ƽCj{qۅ[Bv*ܠX'张d䝚Zh%@Aҙ#.EF8Ċ MwIpӒ|~w+^[td앖"xIͰғC!jf -:ut4'z`1`kȴŢ -H#\Z@Gm#0K e_eXҿ|] V9q*HA% ;UE`챉 ]C.3ρЧ`O̐ |5X9ɑm:"u7^'9l!Em2 K(%MPx{/F@x3ߢf%-JGv>)bQ6Y'/ؼUcLSV"q|\61p͕nI@T3؞+`A=Ǟ=# 9;x+"RJ<^sT;(" &#Q&:/ S %3) iiHbtݱw@ -AxJA*\.I)P@3MP<[ -}[f6傾`e@i54MD`F意u55E\&\U {+dFʕ8YqTY $OS&e[g fp 5|PZt[f1تb}eM|W¬ 8GF$'A3j0~:=8}l+grR ~5ȈcJ,7IHCw8khvB -~`/-`B~6gF̷R1Rļ2?>*gw/Hӆ/XƎ3x""Ffc"Bg[~25.a5q_et{+բJ4v R^5 XɊn0۟ԣbJ'"XIbP%y4Ƙ4Bg?IwEDC22L M EmP!ϟq/ .ٶ-<,:ur6m6U]R@5JV5 -O 1/@,zsB ɆI Zv_k &]2CHF+V[L=% hHJK;tBq]Yp{]֧BdISmsJ>(lDw˿' Mb?j&|˜tQ"̭ 5}f__qo{ԋ -0_p c`pӲ>(3"=Ӟ=m#|ZZ{x= zK&hM< \]ًl͏-滴޻|FAvil?`:RМmFًqB~ͻfDB)Guh;>0ҽ¯IE9+PwItKYH5I'~ 5&W}2"1ez"DBs:U<. aPa ] bYxYL ~x4Ld0:(vU-Wx$m2S@셓MUp pYwg7 qUX5ǒtAPDjբ 2wҨs w,19V=2#4vǥʚ 5pATI: ~W*Twْdՙ?S.WeXԕ*rqI~H+A0aC )2:j ߴL-JCS1UZ5*Щ.n&nºK -@!X٭V j5P?'6 -9 .h{KFX;+--e=;6.&fK#>:Jx!G4tUp;YdsOlY(#͇ǡ5pY ;Rtg9k:9k #t]K\(àXeQQ ;цBeg̔MؔMٹsb͛B5mJ}ܢռODdB§Her%>=\MaW^V%\,Rx67 -)]NDGD.Zh"ZHpһ=$>`7Q$V7h.d^l$6uuyPa/ 5Ů;tmOڎO$ - uLVp,ßlJr4@Scu{ N9dZ::G bX`@AX)ZfĂwK2xpcU]$tO d9FS(HOȣpE}0B3":띢&WC/xV/9b#CPC,"V28rDlq'ء޶uM} RZni߬=VU4+HZ@g{#yu&jTt3LG N/ ,ɰ(6bFAdLk"X&`\65DtvZNfQݪT>vR`48>fi攊07j_"aKi7\єF]ؽ22Sta\1ہtzz]m(Zk5o*qΧfz5ѩ)-4JTi Sy`L=K X= b'1Q[NZ|D}MmXHg`c}hu;?_)Bd'>f veLF`U"hɜdeƚJ,ː-*N(g۫+`Ħ4puTjZ8 vRqc8KM)rZH9$,AaR1`WP_"lP95 GiTTwP`v3.VHWU_p\ZL <#a;o8^TR~Āe @@[놃+&ZC2Yx33Bt($36>0S8jAyli͐y \Q[+bQ]ܢqPzG-(!kA%jA:F5~:jLlob ոm p$n<CyC -g*iBhi'=]InGݳzp3On+Frxljr*3#WR[5~euA!z\]O"kΒ҇m[s1n4pz"?[+۷mX۟|Rҙ7_',ŵc*a&nWpVS/omBW(X!; 0ILPm)=P=* -q `@ȡ0CoqB{^7Fv|Yģ8qF%2S&BsSnFv.E5Fuwd Z_[BE.!=TL_Za&d҃p- m$A#2 6V* {l{m.7@|#kt\采ތ. `(wVLm3סUQ1#b${.@-Y1G ՙT4$/IQah5PF 8BP xE*MɌbo4!^;$u9Þی"n=ZK%iXH; è?Ylm@k(t7:"/5ݭ n V0jhOjat\y$0=sK-%{zJưdK޻Ȑ0v"B fn"W2竱 BP8J!|sÓ7X ;x ͋>AcbXy4_ #OUpqOp .1g4U!m!|dk&17( '{igKWi@U -^^[BɃУm|9R(*P%/ qH;0' G'Gf*KbíFKTj]Q@:p2&?"NDw׭4B늂`&YgL{vބ8=+ -Sq)2-"R;X}H0 n0'+gtTs28,[ig z"b(B bCxPz(y[i wxqmf{qq Y '=q?v=ðhI bw -WHQ:Styزiߚ"?dz&bBFsxR) U kZ:.,M!|yk -rr}AQϘwOȾ5dǴTN2uΆ(@һ%ß+Zoz+q|g[ʅ\;@\s>ۉ,w>Iuk~F*I.`z|ղ>J&g7 #/wDǶG*JL,\$Y4 USltఄ0' X*;HC'UrWhs:+bf~R]jק&;'庈JbӠ$v@ѣF;nAS=MNV˯xOXK2`DkնNʛ_) }iER(@*I)Ӻw7/dABݐƛH~0}_{ 苡t[`DYle6tͣq_Kh&hq6̉gWh:E.fVht{1!uVrDbl BW~cT?<5@L> ]0=!a4؞юlL9A*xB'9fw#BNs-=U*tVp;Ĭw+2ZbID20|߃Tϟc  s\6}n>%i/[J(ӔmĎ1^صib]8 qY.\┡OqOfb/UJ?)xʥ'o+*5hxon(fJD18#r3':1ÍR gKG\qA) Bfr@-bWręY"ΕmgRrm Rܣ?䉎B1lpf2Qܩp,i uWo mД⠚sqfbZLiĘ\ijx 0I =9 jvW!|4Q {Hn"F i ewK;yKB'PAҧ-G/hMx5ˁ˧9d-L3p\ ݇:C;EwGBo+ӹsf1p_jۊ@e:߻h( {|F4 - -!LrOt 3ex3p͜0D'Ae %ܨ 6>+ȥZZ=i=^pdEKy:%:mh%Em\Qʤ D'+Y:x-!IS%ժX[5P#=BW+Ե֒G=YxI$E`衪4[^SBk I2!DtEa AsyF?t573ZLS9n?8Sy虝kߦ73n7K^ jeFryXвE%6,3X*GTfq޶uPVLxc+^XS{"S1\Y6z+L)W|xK^AJ6B qH`ل#~$dj&6\ة -UHCf%40M$% 9H MM$!oa`煘Dҳ#eH ]ua켛+FQQصY#RZT7FH<a iC:#Sꄊ nhφjmPsgCH\9;Gq` -ix -1DY(%CRaSsV KV$A9VԱ58T^P.XYYPJ?sUB:7L[^L.(r7<̰}3UxW oJ_l "6BE.[_}پJ[[u$K iJ3R0I;RN(TUxwm*F0+a,T/cSBa~I6,NAe*Z^MxF63^`d0\)#CUyhIQ@\Dw o8SΦ@&'u1X -Зv^il S%.@F/ -dG~$hCrA%*f67C]D j`睱)ʓ"۸1k6 T HO}1 hGS0"CB| &"ˀ9W?jטe U#9ltQ`N7ҧ]J v@ hptspsW~\5T0ebkP.wɽfr,D.  u_3B4~`RC8!PTb2#OWą#$Pg<&~JP Vs#J:\)0h 2.U k&f&$E7hյ*P( -LWQm2 PT@ᴀW7$.RUED&Zb>ZnPP݌H .E$\0TzaBB=7m&PZ Na\\CWb??*aҺQlJEBǭSfVV>)R>B~Zs!6*xSo3Hsi(EntSM:9q$!KFkUbu+$AxP~T꒯' Ju-4zZfYXМâ-42WXE!Wb7Xh* -~}Y]JSW&P Aph"qh}3' e -(:`(2#H"8REf)E(C=`LB"')kqM(R,+}U, ]|UH:?C׉`[^J$NMRD =;N9hq;̵$dQTC8` چ>S) -A_Ŧ -E~eJH#~&lX`q\fd r`tꍆi-)J59?#'ɤMWMW -`ӕ(L!hlE#+#h"&*FjFZbu?GTd $(릺c)eB^JuM(hBnl3Ċ3q3 -y{c E# /x,oma/%~9 )dsvNK@SΈGPIO$Cb  !kͰ3LJ4,H)|EY4-]tsZ7kLa̒@)s8* DzA@͜c|E#a9d&(s 90ɍ!kuJ`3ybD; VQBC< #A6g&AB Oi͉&D<@^ghfCrHm}&m]߉ -c렑\S)2B"~Nhu x<9l`灝w; xVg̜ :{`*..x'gChhкL2dBhj@oL[;ЈR&MD ;3|;ofns#Fф0gS[uRP-"C B$CJ -G29 U*r9B B -1zDZ8\"!P_ 0`/ͽFi4$h\m@j*o8U\KBQ d"ZCd8)4͈ Hijo.Ţ&QSqV~3 )\eFl(Yd4sxVy -"E&I -v^ &;\f,O IZ}R% -%"hJ -W(PP2$)|]hj0켻ڀJE vއș֘;/S -yj5`)&G"lBD;o5THiB%&7|  ő'GbZeʩq`3!.,4Yr1dH䜶bĴ$8A͠C!aFXGeMk3_w뚘1;3I@֪L켚V Зc2QG"`ڙtMF(ML@("bsZ!`>k?3 Ԕ!1es`jafH;#LGXm9y ꂝg& 7dAoY,^_۾w"K(:gS uIE@dh``@j5 -) ‡SX*0'/[Pjώ1%|,r/K"pN͚zP)2)Sx1- Y<XB۫i˝JƵA5m)Tx&%E U,}Qpɢ0 N -7L9켛J ;ЙT/bȆfY@F!{5'|,J1`@K40pСL"ml.21]BDJ=@16aln -Yxe L{g<+͚ 7C 5y+$>TS6C$ F Yi^LOh$6G]Zb3^7b剕4{qs4 <PRU@9~,FŁ0иDLsD!bt)uH` ɐQLjb2/`4:$@r=%vR< Y94&a$jT]CyTlVda`Q9}kq9A^gFÐ p[#AGEsꮁvSWyGgEﻱU, -RvЛ; )'%y1CPw\+ʠϪisV-Y์6#d!9©9)B. U <h~^cW;".C0d: %p)m_$C'[ = -6$G#-6BJ}30hc7#Xațϗ.ڼ~)3Y@fy% 2 aL."Fpus !D q)HM:a0> -v $E^7r;OG@-TNࠅb ;p"0Xa j3C CZ0s#eh;&&yF *J0A " v '1P5 C3^l'0$%jHmΐ - $ `Ϋ^fih5;xh &~Y]J¯4 COVCEiP}3 Y -]pAV[ Y'So!yț8}'l SG (p¯ )52 Nj'A,AI!4mD%3R]a?LQGJ*y[^c%'fB-\ܗyjs!-˅jE!4G & 6j``"#k"-sy0d.:Яk0>"~W Cy`M}I\RlYynK;}Y]~ɷBk-"G1E'D$ܲ,9?qO+?qEiͧ|s+Qaܴ)ƱWIm$I7$y!yER;Od,\l`djnYĢR(8;ϊb(4:A" $kǬ>RAvr#:p`Ie"3̆8mdPJC^tq3Ԧ~BLbJ,= -"5s&.6A7 +&PТȑ! #.qд0l.s<]p3$ p3mi3|ۘ)]? ʗD,`I^$IZxz4Ӓ|9nԨйAtjr=p0d[Y"׿ۀVƽ"ngĮVsFQ$/Hco>Rϥh}TygWpH͡lX[b\/5X^ Ux*Ol D*CAQ&Lt7Ր*rt "iSE<8[灱wrNj;֤yHQ3רБB^0S7򟪳mC-[O%oz&2X6FhֲFO;ыvEr`g=I(9x٪ȓ,tHĶOeK<|IRlQ8V U^վ@u3 Y_mg.}L6F - PUox.~fmɆomzp(=١)'J'b<=P̫B2Tgbxh47>?} .*+jPХA)ZLu@J>PZ6g!y]1q;5EXd;e ? 1IʅTn,z!MUퟗ1DUJP1KkIpG5<1U:* Jircj])6iN,jDV &׵ -s *\-{twӟqU4_UR}p{Anę_yNe4}t3,Z:ە/m$i֫|H bjz2JUнr*)jGzh 40e#1 y$&4{ˤH!MY(7f95F.k>N)Rk_&CVmm -< 1W/BQPF `x5>DrKʅ}y-1gRQ708l;e[:9M\0ȳgS_.\[)Ƣ5q?1=#MZ XG n|/'R]HAkwEF}QAޒEYkŁ۽hipVu:^ցbKAhu#~pH{g]'vyx Ј\Vv_EjZ`)S#y_ -_zY TtTGpGJHQU nGDZӪN3Me` |톇mBlAT˼L%ɹzC|4fQn{'=r,QQ*>3 }!]aGm )5BaNBM*)*v%T6]CڰrI2XmXҠZʌD2rƊOtiKQgcǽGL(S=> W,H,B,&$`CHnwbcR81]U-; - `EE -_lEЫM|~;y7x^;}1a5p,NHļ5TC wBD"8xR͎iHֿ:t:g`3Gn1>7gO棟V:I>sG -Hv -{8 -ϬTojZcLW37.e@i lT%G~T'~o"(l>(~@{-ݴA:9 x~c0pg?P#˃opȝGeNvAOn;i'\mwϙ1( 0BP/ldcm"$Ւ(R3pI:_[/~n`*HV{_]nV3aBC)ET,IWֲ6ZY.İ8x=u[Ō@1 -ʲϭnY!ln -kjSRO(e - }BnFO1}ő'5IU%`֊k̀_4Kns92s+`ky~xcŠGҸzL4Y/B -c!w a'2_,$+LY]C?:ߊ=w(i#еw/K0Z#C Gv&!O -0HcGK#~r2IT4Y̷>rHnabczm >^C>.')ypUbgB,%jiLDz@eeV{%)mi$jeҮ=1ŵ=g~H۞Jq+;w>tḡxYՌaM)ⱓn(xq3x[: `BF~wJ-y5g  [fh: KS+J1>)Zv<{A q7!?r? - "|Jt]7ko}xTy 7IJ?o,QR%,<ȉG&!ќMlF^<[⌎pfӭ(tRweopMNb -(o -v#1J=F^ѧ2wcEdfly.% 9ƌ#pM lNu¿B<T 6!?6!Ŕw+Ap\?cXD$'tWf&ev:bh=qXQn(-&Cxw}sG9о㤋0u] ^MӤ/fYwrMo0G> -ys)ӡ .M}VrLK䣴U^A.Ny,1hP5bZseF[yբxee?!l̃ q1%Ue&ڈiy%}k!뒬] F>2mN}G<cjDdiՀr)xrDpN}/Z]`P0E442Z*!qW7״!3b* *"펧UB*%8G̺fiD<¤SOn{ry7vU>k2ܟwPI 7jT^I\ MԗKC؎kVK?4ZBQ#/vBUN޻6mF 5 a*Yقx}44;gCD͇;Mg -GYUvĪc:kT*zFU-p6dэrJhcUϋ?^˔];%ͯvW60x{}]̱/nΩ1ġ P&ђW7j$]%`34"!`f&{sD$TpڊJՍlU;cE\T"* xP) ׇM` :Szq9o.ϩat!k銳nEQOeCҚ"=紎4:<[}^Kn -ЅxiP2:9 ..=&mܱ o,XiO$T#O]<,VI(mcft3Z3;~%yQ8mNpqH:cSK -Sw3}@unAh)}h.u?.e3AS ^M=L v g-MUen Dpz!cI]PʧLQǞ]5ny>[c\ۚ޾zNsE^=BooBja@(3M=Q$5PCXc9Q^ql!1j?Ecb)Ʋ5&VִEty{d ,B +і@uF^^]⠯RYZ֣E(G2 W`E,[P-Cm{;E*AeOPˆ^OajݐR_ܰ˔"-eOwT́3<z_/ U-*D#"3"TU&:)/-J$F> _RU -|><JBᄡ -슀0Ejj1}#S]eY'Q:u4ꏇyD!HWEﬨs UD䢏%w*T0LgJ*9*d?c-SdDodKheN:5= -p#sL1PM(Ljenƈ[d`E,egDۆddOނj@/Y9Ѓf4^ 9!qOEipIF>pCJ3`6KW'}M:]Н߻%Z*EnxtPzph2:MEQٖQZ$TĀBKCD=z65q-ܡuBĄ% jfB1$ܭgqU!"_*K캤%QsSЀ^[h \ \uosbYЉIBi5BfBak)k$tg$^ov(.KqC}sE+["ļ|r4o$<Cg Q=Kw"!}>bߋџXǤNL:UGx^26w>9S}-s3:| CE:%>w^tfVov%JZvZBT"eI6#ǥayk~K;oE`m,^E*ޝMឰm!ܻ_y˱?jyEgTn\i2u5xUKMcLV~]l㭥[!<: ?h,Q6C yݼ_6jʖ -8ǒ2Wrt ` -,O-OJ54wېe" lK_rvE˘Q#Y{|֠K8d@>{?觖#*5#Dɓ}COgcgZA5J+/7954vgyG|E. -% r)ٵﺕ'KU`8@rI}6i3~ﺹ~*T>0 ( },r-qetec5𷅫Z*i .L;柏3}SC=X*ۇP5pB*?9\]}! >`; i|;iTb}OiiϡMh Zei{lhXɬC[)R=unS0WMP`C5I7n&;R>QXYd~}l]t#B|@˺E&w W.?ް0za)1KOdwaB.Ies[q/ej-- K  ;*qznS3IrS]^I>L>-pDcU=IJ -"tAEF~CDe24 q.FSEL$ǡ5TLF0Іm$I4_#KlWYQH%+R##Q Gy5D88*|܁$**BĬs{TFU/#;``:ئ܀Q6=kX -)Zp ܀ʲ)3v3NeY>`53{Ma`>0hQ L6`k 76w N}mE d_B% -Zw֡7B kAt6FՖ@aԍO/p^yT@ʼO5VӦdB>˝OBWs2po_ ?pl_-냩`Hyy!so+gaBcբ.n\&őH_.o3Gu>nER52b*p݉g9 [&B}!f'ئ<ؗtW,2L$%Tby>$AYgR!XSWr!I@0,9X*jm=$moF"%OaUv+pD+BX)o`=VPG]]MnNAv -XZ1ZC)Y9 @QIŒIwA&lԱ|[R}J+JbnѼ/.TT]CH$s'm1mDy Ӏ4+ #2D' h[壚4j pۖ3wQ=!k -@FT4G\0`.}s GIFԋ7ޝm>}]RJOA\$V -3bzQd&m$g_'ؗ!OYiZ.?vQH?D9V:U~ CBOtZ~f //I݊i7hM%Y~'u!KSuY ]⥡Os_}83TŽU+[xuZ1lgB"9|Z Wrs6"[y"0.[fJ8+@}nrF3 ~|-&VRBP[ + ܼҍX?0?|'Aq!VI =\! Oe ꠩i1mkL4fp+LҍցM HFiN|v S\) 0 3z1` wpjUKRʅԫII_V W cXZ}\jG /]䄇CG3e +BɀDY$X }: +1E.wKe nv/X=)x0т 0Qnr["g|"$A5x +F*HX,1 LT0eS#꺆52PD"bHNتV ( A AC!n+x<8Nh,86 +{aO(1 JvUMK+Ķ*5 ikU4%GtKɰ8lvHo´!b3^Clb3;AgȎbzXi=WȺ(nU|a^ *Q ~'*] +T;%1kBM`Q@0;[q1@'$# ^xK7[@ccjf=`%zVcdF;=v=6z^4v ] % +V# dYBtlXu{pϣ4B_*+jj +@q} +W0q5Zd 9,dHd(fbzgP!:X'rrԯ.Z +s> pS"3$0|nh$ +LdBW& +X3(_6kfJ^[(K.-A/PvP' 㺲R>vm + y)="6m΍ش`U\ȍ0M#ܐ!g;ChNEDNx.fjRӡƑ|,w +o3KyB2dʱόj!'r!?/h3@ +٤. cއj^Qpyy1 oR qf"q\)dj 5J-4Gp +ҏBQ5~p[8DJ> &:VEsJQ, a5UO<%','~\ t2١,8b{v Ihq[gJPLˆfգV@-kAI:Hq*f4GO EVtN$ +;%b~l)O$pL4\HQXu8Τ:q;qdž“[+:?SD}&q]kԄCn +c!l#Q`Jt[lw6\4@ .iP +1fY+SjϡpIW#σ,Mc٤f o7 fE}\iM, {W^$qli@8o t"JV#Q|4"'b 0bhx2ُ}qmJqHB#fbߦm-T9l*cHKyH.d-7 a򠶁-: gܙac¦?ݾM6Z"g0ŖLu5i$fAdGt +ҕ+d?@WS-2 HIAQN0_CKMkփb@QP>ѣУЫ$ѫf7`H,.-z{ +opM<쒞@:z$}Ȭ iUƬ'퐕UN?Cuq +8¯a8>KPSsS8aJZ^) OJ\p@ \GC TIu 0!ʏDOvD~Hc'o41rs51pT4'mP3<[+A}A1!qH՟nc<<5uOʝ?=E[`)ntXJ* 5 /mCrhQLʷ)Ɯ;g8:i'gDmmխ"WYsr C P3&E.e2B=aieSXu2A ~\7>nbzpJ- b\w@, +%%af!u5WY&Lhu2h}\=:F#QLt[#W h ~\'A #FY Rq5-BHu1qcRS5W_D Xj؊XM308G6=$Q4KQCy]; YTr6 I}\[k!i}H(y'h#hC4IQGP`0&%x}:8ZYr=ĖD|J~PFK6vB!h`qݫ!D$34l.-<0q,Uҭ &$SAC 6ű@Wb0m`ʰǖ| KBn- yHt8!a#Fh> +E`;P[TuJ +Im/M 05M{/{;ץV4+GQzo&3¦$q(ׅ$I:qf3v0xRD +5-f0)t\wE1X +,>-o)7Z?3V#6S(@ M;?Ame P>`" #j~e_S醩Xd#B 7&CQ$kb!6b Wՠ"i!{!Xq +uԐe`VHB#4V,8(o"(ϐd"pH +N0Jj)ʑ!BB=I,LY8E`yeŜ\:]2D}Xxy( +J6R?ë&Nʼ杗w^ry]w_'Xd#@2͚rwsI2w|s/?f;}mrMu'5[}wi^6}6ܹʾf_wyqϱs.fu*6^߽;{{W{Gz_M~}@} ػ=ש_>lq44Mޯ\^s5=k3,u>M楾}s<}u9?~u?j3rܯ/u@:O_?|k¥.ΥY߽M/;f2{y]ٷ֥%.X1޸mvc1ey5ם&zԗo}o6qGsuc__Oߎלov]ޮ5ם1k?%ǷԷ\:_oǥٽ5.Zg.K͙^47~cyߟ3םnݹ,7tsi^;9-[tX^~}=םzYkܯsd=Ͽ:s/ow̷f~[_s2|{rk̵%k;m]3򒛦e>lsc@&םwm^7ם͛go]~W1@ks} eٹN՞k؛Wc@UWtc\=9eGU܏θ{We.2cG^˭{.Gru|u9^חi~׿;_ukVsg_o/myij3~=6//7ΘgMs[-}y967/ޙN:c?W_Sg͛͝ͱ]_3;1Ux98;߼3|k_7c;Ϸ:ro*%uLoz.mYo&w\bYolbK%%^^5gwoz޿{޽]^{_]/3Ɯ^{~\sn;wke&i{nnl~4ZkyM9ʝKq7o%svymYǜ^eM{&杬ߕ[.:`VTT0T@|M  +ƪ] إ7qz s+o_}=眆r%L-"Κ`i\& }mXhb`d(`LIo%TRLj`Ls{k1.޻7{/nf.;ηܜ^,Ϲ]wz7^DŹ$s( lڲM8*P8@(." PB0 #1P fR δ$)B+'7 #bNV~ iai+(^sA"Toe.67F9m sijb/ds&d-a1Fk^X|QT0>3E4]N; +LˠYK99v@${Y/4kM؇K5#KXJCE{(P[0jkX[|i :$4!fW%"u&` "n[`C=c Tā^fL$+ L-9Z-@It4fPS2i1ɴuzP'.wE%qb䁵uunjȨI .HK|2}2-24gbCp@\Mhmw;pء_h!k*^xI sjo/xtCWłvҐ]dԐ/AT(<ٜ/'#;S*rъn3'ۥ[̵n-rݶedg* O/VZpWZ[\a( VqdS $aٱfDT#s:B<7`d"rRf#Y/%xȘfZL0/a{)lg+Jf$q}\[_WRe7^Tjn0unZD'_-Qڷɟw%ְP&cCANĊSẌ8fRz]rԇMA[q=9b d:e 1}cL^@c*!ilIZ4J%(|uJ!YMyW6O9CZZTȒ wk.,?wFkYdo3,bG"es$ZFl}D%#/Rda# a믹r Q!P9t!tKt`E.66xxjq!h8Ooa}{T!oY +n^6}m@өBеϬ1l<+v⹡!WvӃ}ђ0a4yyBpU?ȊBx<.ʄ ASx#ifը1mxK_fQ\ˢ_%TG ]rm3n:\!xS0Tu.7nFэs}-a.Jks!姕9,AgyBJ?K +I&?3}QBL^zb61/3L%=MĚvXfcw̯a ] m,f=23Ҕ9RC:x^4Bq'HtL"IC3svbwHa 𸸎_EKB>`&ȢĜYҖ%`6/C@cQxy:h?S=B h5c{Wst.5vd8Bg~І$7b&͎KYS[dʙ~x'$w;l=DToL: K9)R$pXg:)[Qt\ܠ["c_eGJ9,Vdg2Iфv^#\6Zp\agV];'s(!3ۚ1I·0?)?EC1,s~&|9e K%];.zr/ٶ'Y.N(?qzopÁ oJ7CEҹl Lw $yuۢg*Ӄ3\k3cX(p:L{&@Yօ#5[M5Y[;+/I{rON̟a|75KtgQ3>Y$"HRXYEoJ'Fif~0b"}o52t4O;}\/LY`K2 'm~fDv5>ڽ\FAό:R# @PU<2 і9;zws#$&>$wਞ4^bP8QйJ=| ]J\TI$wnEO nӆ`UsƯj6ۥ +u> 1"Wx^2lrIn)OQ'֠}"LQgMf`J\ubMԇo[UN)z'Z?@HL@ΆnZ3!_4Q%X'pXX/g`tUM4eMEҧ)eVfo3G6vɃmTy,ϚOdN"N>q' $ L-YR(3Mǀ~UsY2ڐ|a"%u VQeιD%~2}~,#Q4G`5PL- +k;E}:* kቛK@I:3Pr>SP$'P0;߫ +Hř'Z`%WgЭ^e\d9%XrCNVK^4L +`sVo,~25l4kax+Rb)%Ut6j,7-&LUGG~(2eϒ<4kI"2H=f ' wKuADw6(6{!t1FP)O4P#Z|HǾ6lK"Y \~WM\_QvT4xs^t8  )չ=: b%[0|=M%C$n^n HnF'&΂^1UjqWߛJ?, |TYPаQWFW״;9"R͢BAdFE=)%Tnm)P >eVt\r@.@m!&JbɨhtgqSU|2\1k''ပ&ovؠk"ZTژJ 19>+vp¹ +"ÁG(J򦖷yS[7asul;Sbe$u'-${RFAM9M O ]vKec\'kMJn0/QˁR.\5nn +U^be&Ul;[P9v RP|oܭV +)VYg9HF2~i+;A}82܃a҅g~kUcB.Ci~N}OOD_V]@"Ӱd{,Ǟ1N- s8*je&ՈMj%W"9| +@ܷ75[މȡ,|õFDhuW *SGg |>J|W$7Kὥz\"jd]27!w? mJ!%[]+d3YjcU0.aI6SHx$ӕ?5>RJi_Mhw5w:CH8Qڗ-~BM\~>-[gOF, " {*]:+0tOCMbJ'.ǻ8d" sQ@ו]&R}Qq%{QfڠK@>k>"tSK',5󈃣$V@PWD,x ?;WKʴay+"W|%K&ͩ:NvƓ%~uZ6QM=F6o +ߥ0kh5}`{?mC%"qvv FyJCS~<[_VV@^v~qAbڽԁ46b!Wʑf(O k_ݗ@H^+8mcuVЏ27S%S5"eCXhh=4b'`N3+c̟,pH̛#B\W璼+E,26sBPiAumBivJ3y8]vc}Ib=+OT_g[]BtLF\rh6la@ +6%Ecv7҃j?~w%FIqɌ\*$QsJTQFQM +-\Ղਐ~@uUWc`Xy05#f00sg:`2lyżSYI5p\؈wIj5 ,*q l6fL!$þٗxSe6FȖ& ##L_cEF"OOCXfGaA#)i9Q9ҮO!+Mթbֺ7 P} YZ.-!xT"?g tQ.6xI%c4l+kr!>z-r :S=I +sLJf +Fn\JZ=rey+4@ 3E`L@`dq.DIYYPI~ƤDRF;6!':IoRf?1ʡ'/+=SnIEi ,.wS_iFVrn-XxA݌T{ HR;O> D(CK- ԀHp|gc+XcfۢxtYXb3z+g<8y +د-C7a}ɸdP=d#BF]yk\.B&?:)-ȡDu -[\s9kd _n]pn&!A%0nާT\&~(H.psZJA{q.Y "ך-n[͠cȷEX["JH -iV\[DVe>_. p!P8}N.gDH:<}ba!А>QeƝxYd6" =>멢(-H;AH< e-JCz&!0sC\xvVRI>!Sxt _igKr;+[+DX ê*"?|ct [xO(=vX6qDq4~7 j z3LLM3ƉSԉ聊MمOR 7whVb'N#b~K)#!po\"8ؼ[MK뽾`oko%;y?@}c(jIB2Ч&@E_`EYj$:*ft@ݴI'$cg(I => -Z`Od`SO3,3/p¹̀0n ݽR"),U0yH嬞;^vVcLZ*ktbwE|H̢-bXjX!hYHť%,5*ˤJ HnO{B(Y;4qz,-d3zJNcƲ7/h nDaesZn%m{^ -n|T6Ε;?"V 9]͎F1zbTz(jGSaH~&j"/'OM?8Y%aU -65_Rd)} -25V&|XZ$A} >0hIH[={2 ǤtĦ߬@3!bɐь/Hj*BSdvR*oz^ .ưjIFNzqm`~y dΈۣ j?E"0L{Ոz["xMRQk$KK^D$imm@$ɵ}j0 -go+%1$lBJ1f*Mm]RΪA,of>UuX7 -u-Ezzu}:h7GPL8*hXE6 vc"Ԅ˚}H&o, 硰{ 3&sLIM(dcHT?h!RR`Y6JǑ5\RubE@HHW`n$PӀ#M˖e4[Q,@x@[I6Vu赮S䮖G#G7uxw3Cwϭ5;r]wUAީuq(ȭd `j;5Nnu[sHr\eڮD]i`mp&DR;jT̳ -m=$QiGd/G}λveƹ xR 0l$ޛ鯈OCLh)iBHȸBA`Tc} q;ƨ0x%VתBy=kEfk[NiN U2;O He foU*R|~puf?!ZM&qvD-jz;# )8mKo#( -v %j -Gͽ|E듐!12 ڊı(vJRRI )*)tJuZѩ-kRju >-[Ѹ>wU,EҭU+a؏`eF2 owt>bEgTSuקrꤰJ^ ZZeܿB w2>n8On'%ci5C\[NnJ}H3;:7ֳe3 m̊8=MXhl>-7nrERrNZito=Q.=cxTss -(? Z -2NK\Ccc\Tc`8$)˾GE\ixq[dw/$YR3¶rc'XR5_R)3 7_R5\]FbF~4xp^40jwH~ -MGd -5~?ӱM%⌮="l{?{|fȟPpdѧ/K[XNG:9a E; -LN:| _cZl -SD3W#r$>|^QD1~.iBϖcI{R|O7>xꃑsw/@_$=KS"7#\M珁iKj<"NӳP5PjG 󌕀!&v 5 8Ǔ ȿKDw뵟Ӥ'ǡ!W0(fhR|h՞cNLjDZ5b6C Cm)*1/VqNS00MX<H<&N -]&&\PE*o e=QEyYnW!I`7*$:DO}"2PҮM;Jtj,ao -lD;$W:"WMFY`$ -ܳLeE &1t -ІX3k[xo[(A]cKvBwyp tI{qrrs?+La6}a8Q;dܷk;d̕v0H"Te`XE0!}Bw ) -8MQa^jio(°7"OTX(xIPI0vd!"8\qC}J`]-pij Q{SMg& S&eȗ@aHǐްˬ=Li|΄^ N͔EjN\.h.c;$ *J7F'H+$N0ʓeqA=ry˷0ypD!Q{Ssj6k((oC F[%YIݱACBtIb5RlK݅ ve?4E~CPyޠj; Z4Itv/ br-xa8^Ik!^wiqȶѝb#5;1.2*2Uu񃣀P6i!z<$!>b'-Zҽ%tۗn%p=Bٻ|ׄi a\7uANn)S^ư -!XK 7-οSͼlYQBqbVi심J y vŒߎ˅@\32E&vegYo\P͜j?p7ĔyR $ljL'˚8f4W?z/&稝#K{)0 $Y S^LybT,I$mO -nj3U8wKITJw%Up*xϛaW< :KcygT?4I :e&raH]yȠT_C@B - @to ddY2ѓ3ߌ6L';7%y6TeŽI>pd IV`Jf¦61A&ʼSQqD0z@9 Sk Ñ`+KH~U -(.-.SO Ra;Pd r^ɿ #w;ɖF'C,X^RHN}͏uuML}k0Α7;N4a +rT.yz00E␨NcVy쿎irtc[Bi8uOű?+e"V.!T)c/RW'KB?Uo 1 \WIl.O7˒g~yZJJmu$v+'=_wR%B"lt!N]i+ϖopr@U+hgogDy ;!k: L٪K +$Qhp!Yg薐UmnNl +@y놃]~GHH+jIDbPv%2C. _Wol+*amY+R3^Y\pyzNMbm @LXҜ!tGXuUI WCPw!!ߢr;vxläd#=t6}SE+wAhʞ[I(@tsm! ++qss5sS!>axƬX~elxxt_%iXz-B jCΪ(b| "e]N^;(ႨV: 5IZS63L|R3՛% `qYg +,8 4 'zWN,HL뺄.(\)8R[DMb4?WLUЈܱB@BOm\h? E!>H pT-pwwN$Կm&V !hxThù@Mڟfppv@Z'6Jx0v)^vCRdcS'a3ҝ@S5h-v>LtT+Qc,%0HG];-ĎAAP!*YA{z$aϫً5튽$ZR$Iu Lb2NH|<>av(В`j@IɽBMYߤԃ*o5cTތ_.g{ 4=| xbɾmbU[n?b`P՛ o 0孒0Vf> +- +Ѭ+1mf ?՚Bs@V;sGMp቉WwN{2&TsShrTlt)bT:h)Y\s#( +woe$ GN`SeaeӘ5N"mh< +q6L%Zr)+RY+g՟m$؉9^/&DM|.siwD\#UnCr W*WEj+ʅϸG q)<`u@4S]Ԡ+o;ܽMA$w D] +}vxWjUCLEf)Vnl47:B +>9{n)FZ^FWKN3*qgqjcBqRtJdChDr/H%*)5Pe{)gE2!y?܀AI@DoZ dޤ a3MoQ÷bǶ@pM$.A.KHQ8):FVep`Dո,23em++<%',7;c"o<سb="]*| -ꭃ_?UFE*D3h^]ؗ5* m]Y L;Ĺ\6mʭ"YS+BSPB>&TP^/h}V| +gXkZ3qeKh)jM bn܀E7!7ܱu*k4tqzB7]3 +ޠ9Ҭ *:mWRn(Q YcT8xŚ +(|& [ee4\ 18-Ѡe8ԍ}hEzTx!x/)Sph,vSa0,)e/)`{!ř]^R\T#b>l;+3 mѐ'7\w:'%GҼc)"gО@R}H]cp*7)}hPQ(P|2[O~9$SBz6!WǑE2r!\@MD5޽&҉BdKQ;UbvSԀ+MT42M99ĉI!LV(;EVC70$-e1z^8&-4  Q;3g"AƤƥxShRM)RXxE>l׳,#6#ceJ4\PJZNg=އ+*_@ɫz' %}HyI~4d$1^E1!yҬCgV fCõC`ڠOyfC>?2xe$Ƴot=¾.nSY㙥P#1C4g +o18G%!|Ka-#+j6X0f.Q\x:01HV.ofxJ-Z#j;+`nwV`x۵Au-%^u3Po2!YCd^9pP%7Tirz}̆|AaaAUR L"n4&cp)KKt\#&-F񬵒vXLzM b,RGT /iazÎY90#!~iv*Ԝ/O. +;'3.H'/.1L,~G+;A(˓|py5oQ~sg+]GN: "maK2'JvWGCds?ПnP} /: 1ϻJU`Z7GSFB9zΩ3vlVH/#&lVSe#-+y+o6B^Y| bXx}\lfDl~:So~o[񍎠#^Ce8F\qգl3i?eC,5=1I89N)֓8D)#2ذ G!BuQl@V/Aq:۬f {Ù!T䣢űq7\(B81+3Ю !68H?8s„xӾ,#ȁe>2l;x]>i v=?=>btC8%l5Bm@q! A>fF-6._NXRkec ^;yK]vtZ8ꗔ t7sPpOdLqmd2 %.ԬUdڕA[] g]j;BG'֋lu6jT'N%BY#!9JNZbK +-7:晧FJm6F_5mBߢe F`CCs) lٍV,EQԵYVEq[!O 9PteGj͢O^05s۞MB m|P@OuM_o'3omEX>ZZTUZ]-@5cdOk*p:V!jG^6YgނH B1Q,H:f8ctaZP|aAV,Ac&=7vl>؉4<Yc:X~h9Vya:S h894I<֝!rB]5z꠴S[#]@woCo롓6ˬoUw(}."y&wö`G$ AudpHGTz5Ajla3H6 EQ)MOFD`P3@~) | kM^ϑ+KĤ (x9/ci82zhf 0wɴ˧ѸX!^9ć5sIpt8[ > ~RpvЮ!YaW+haŌ#y}{M!ҏN)]4FM**[bCr BT<\}M䏸!ob6iZgc^7mS7~Tو2<2o0~21\p{^̘ 6DP96x?FJ$F(-G5`X!D hhOR ,!l^"؆~6Xud 6 + ns6V+l|Y)[;Cl*d/űX (EF6g65?[go9-l`idut.zHQʬ㈀4r{gOߍ''J+R<qc;ԉFsYXk3Z$2-f 2x?~)@\=GO? +Rݦ:.lse-:I3`s1++_i#H5Z ipWA00} +sFBGǃ2Su^FwEC4K?R8Ԕ.Z!/X'Knyԥb2Z8&! `x +'%y羆vί`i=F toh~{>/:lxW2­iiiG[.7_飕cGN) +YA6?!`d;YZSG]Tj$`R؉kF^]UHk t0hD7 + aVU͞UJ\+H! }[Za 7\*+~۬K$Kv;b"6 ^3*sE9)MBo!(<>/myGG +8&eN)L!يJ1 IٮJEKxHK'[ZoŇ ^V;W!<+U(=#թ"4L1IWӨ$bfOwXRY3u& o]` $`4P¸\y +Q+R`X0Yv"ُ&s/r )6t).JVJ@eUfZόѻ! _X2"qHG*iM- h_aflQ!Z`"h ,"j YD`p!{55C|Vb_d ,JF8-)Leops& Ѳ(C֥`\,M:$ O NϠmwA(fWvNYJ?@ ^S7S DTD+{s:o%YfuDkna{R%^Mm&KL#э&Eٿ,UnTZ`$]7jT֧gÛ/ͰgCz9gdDyx'ة-.:d!MէԕFX mQVi_ZвM0]sJXF4ټ.Ξkf%ބsgBHA|mr^eJ“>ł%i*c^;C4Gj 9¡!rZTm#0ntu_VF1soap4,73A˖0lBir.s'ȫ|uGa f(]2VG*kIy<V<ՀPPx:ϙN65d"!j *Z 4"\\3F`$  0 +D (p @ ݊DseAN8w|PkzǛwc4Y[cug{lx#H{@@Po%hء` +ZYHV0Jd4(Ih_ ]Bg. PA )YC͕ddt*$.Q*@d,5DZ _#)阙*ɜS:@ M5|: BܑR\L (4La:+&S PpoC *[Ea0<j7 PucyOlԙղ$6 0/FgAMQh@h@($QY!f+Gwo,rK'5 +w(eTf@iLa8vK{cĮRި3IѴO:2&:xK4Q NHYȓ\oCn3= \m6( q"gr:XutHDOE!:Bs;,/ȥ 3 Od 5Ԁ0M Vr%XBq[P-XYOIeq3զNlv0@p̖EÁgqx xs*ͤIEX3Xb*eqx˴/켑!`iT499Df9Df:p+CZTTLJJJ"[YCbC$Ȧ0@rUaXva8 T½ U_ +&+{YD7Tӝ( +GFX7SL%ANgRZܹsZ  a7%7PJbC.WĦ)ERCSP V"܌4jrjZ/1K0La*S’jt>:`<&$UH" If%N4đPq{7GA7e2geцAngmp$!Rbo`&6 'Y-RSޑdm{WBaeEcRD.SXUX t!WʏĘؤ4^QLFv{] w+s +NDQ@#Ba}#'&,0\Ґd2Ti]N9wHBLV$ّ(Ē.ƼK}6Z%J'IJnd&iB\^Yfd.*+`7fÀP٘w07ȭ ܍L l* 4CQ0b1 G i1 +<.( MC]zI Ld\ L%G怅bՖ,A[ !C_s~A +S934qNMWc3RdbWl{u:`ԶmԔLQáΗFaj_TE2"":(Gx +RBɪUL%jʑ9.#G9r%gA?[ C %p8!v3tG|9,DDX +_"A5^: 2uL" UM2, v#;w2-Q;kն5R*QnpKx0UA~+z=c]oC ,Bge? ; WۑEf$; p0nrv$o~*IـP-{@(2wR}P +z;K/]Y2F!"Gb[Pv_RƲpZ>I*u'y^O +*z37gU~CD>k}w "(dC=heHt*Kn%X=Gl'1=5F35JT&'Kdcry@(Tը$[%MYdoWH&IDVقhy' p2QY>I= Nr~]?%udKːg>zbl)1E2?D̬"dq[ AiTUAڞ@:ќ.5.PZ]*QܙEVI+IYY> $Q'Ub]Pb_N,jQ4Y"ZMƢ̓L?s</NL_}v"cz7)$!4JBЮTE:,'"c2"AS$ƣhh]!ɞw6F*2 "UTG4 `ґSO>" ѝUݕʙsePA֔,k:+Di-KQ*#3̓B`*0m)F*s}WʶKb8$U6e*3Rݝ̰TL!~xv(W̲8ͷ]VW4?|BTZ!(L  XUwD#CUT"3tK!r9*~[պzSNS0CBIBqHJL:5ԀP 3  +C%M9uwC,̡PyeELm|; ɿ".\^ȼ0Lgb&E A34%!^sgP71ő҆!%hןcY݇(IC&׉'d*ʌI->=8)GH^*ĨT&6ذV;"RǶmɞwWG` +̈@ꘙ)9k$2q64!qQ)"Z7BBp@H@yd& + + ~uTV5%ۜt83q LP*$zECj(?̫P IT''H٥Ѥ٢t*tUW`';t8ih%sDf6J׮vxxFYf /fTba^QeK)JvT̟/{Nf=ذ{p$o^́v#4H;Ttv7X=xcc@h,ޔ92Dt,2bnKl#Y'q\8foRI;kE-T4#@4$á0 Uf4F866K!9LR +!D (TP"tn>4"'绞YgH:68QFXNTPN{(3``n͖s,hJhZsэkBk$눖%rll7#GrTSt“^:5Y%&y 죸~2ϥ=2!9 @˚뽀7^;K#hɭET2w !pV֊b%!#l1/BI'4BK\q +ڷz/&T4&(A<[C"}.5 9wTaiyW',9n}8ЃPǗ_~O(`5vT QP%V6AE@Ŏmȕr;nQ(Gok[M )ލڃn]y.阐 EOd8~h_s)땶t:Y]=lS =SaY^=}6}oV50N .:mɋԷi,&bb%3or֐؜^h_;(㦡8j +=Z2ɢ(CT{ÑZ:MLϐQD~įY0xhBHAcP +Rc +`btʠkitP6#t͘m$Q37 o4szzX&X&ibsbn4?F&&gh2t/q&Fg2$\̱┿:f w:7{9 CZ m3>zPz}Ș޽m4zX_aj$U0TɩpB:Sq_?b!î±$QTCq#(n!$(uqk9 | T< +$N9t /&#E$s{/ e(%|#`e6+! +_fЋ^ s$lZ)7&y]ڔO$Qz=,Hdb7|=~t3g?숧B +MQžd>nTjWHBG$֡[\TKA0(wp$6ӐFoJqCv[-}iuTpS4iq4SPӗ?}Y"`NEXG{;XQmHGϢ2bfe 29N +5Ȧ-"xu\`4Z,08 +%2mgiTbbWч0a'>N +O#3UN&Xq^+ksf5E;{6}{_湛fkro*ޟ!s^LYwοJ8B0Zo&[BmbD<) K[ܸN; h_"`Y(|Min:Ә/hxiI FD_]S*iE`2*yN.Z_wԔ3c΍>IT7B< 0]CxYwJPCCwԚ 0~:{^|kq]A=%N9[yًE4aD"% @jdւ1a7Μ:DMA_qRKXO>{Bؒ&(BD=76?t¸o 5I5(]b5ZLGePE䫚Pȼ5o?na4^@Lg&ΩZD M';U'1F3o-L=)CI}Jj8Bi Fadi1/0dŠV<+]*hMSqt#[CL+d5駡,a ELVQr/2?2"pHfhZ,Z=15+Y PqhI+}840UoFM#ai w} ;8ozjZ\{qL`ӡHi 2<鶓ς,芬-Z'aP][GY'J3}ΝҒJ+9ovmۺ}'XcsDL7vV.fqN GF.٬!$6sJhh;!Pa-I2x=VG7WU=g +4TɊZΒ:Wsu^<}qȃGܪ6[1OϽcNzyvH h xHflƧug"j"qGY,ނ#y#dT8_"DLlwGMeXV}HNE40~+C%7bfeA z?-冃egKkx11VNiȜLvj%aKh? aEM "$ԅMV% +';~\GB,~~n~Дr*, dlb-l>nƅ㩧'q0#O`݁/.٘NdoxiRpº7gBE9[g^z6jjq ӐTJ4A` `J0aj2WIyb 9IaPpA/yKp9Dzs + C`V'jNWۛdƼj 3R P{5qsmdxCm?U^S@?Q9L.) -AU.9{&D'qٮxf:FXm!Qc%{ΒUY9@NR7Al0!X'S[o (0K^ ;C*ꁚc_XuQ-bEC~VΈm&spakfP:0b]&^zF"'r53eo'pKAyWH %o_~(Q2Z-xUU⏕KPHG=@6ˀ/Q',Tӆ W9qblH%4ٸ+'UG/}_1{Gʊgՠ OUy%ԓ5YKg-{jB;f}JYUhĹ=kFf\RMq# ڹ`("Oé"Jm\}"08x| ዋ.Kҁ:0mbfBg]O|#_y}0";x#SsR( 001U#lun L2J."d@[ŃŊYzRanJu%K1VLS:Z`l}SA9[lhߎ?eM+d;~¡ڪ'!Jh)LC߽{(0L[S -эĐ\ -q8Z( QGQ. uS`8qEHq7Ҳ=z?tK? ? -˿]=.}S 5J9 ,5(&z%ΡT$05# +>xزÐ" }OF:{!}i.DwG}),JҗY0n6ɯyI-ެwQBWMpUJ]Cpµar -fnJdr6V~Rj!dDa-OLn -i@!<&Ҕ-|&l>&_UEF88  ԕ3jh,4zMRm|]Іk/U¢45vv\k4ݯLw/&;f`f{h5ZًjzcIZDʘMbnC|phnVd鬺9եGl/{]ݗ$%9Esvg%cX.!6*$"3KLвe%L: -2M: yedyUњNH\6X^^WZA+L؍l?P]OXTAg:mԐTև̶nwrD \3mL@D`= `` @ -0˂dY?q:s+&ġ69V?7iי79yi;̷*.[/H{@(@d74P0g,]$W+Q d4(Ih_ ]Bg. P ɔ!JD2zտvDPbkomu|ȨhSaKdk"} /ّYVtJSdf) @ > -BxЄa!HHfkkH^).b&0ʃHTK)舄p@(GU8 PL݀@@n@rԍ=QgV˒؀Pü]c6Ea(Gd ҇[1 RcIJ wӞ~aHdb ; Xű[s%vFI}rvב[lqJh7F6wv&Yȓ\o Ls[1s= -\m6( q"grvx, ~*@dzp9I CARЗCRpdžs`PpP}j@Ħ+းʬ~t̤i8fL7`j9ֲfu@x fÁ(8D!,ޜʩE3ie0=EDG(!et:D2ևzٝ ^/~<;:odXh&sr"s̤k AEʤ$)@8$:dIbj`bN\UaXva8yW=MWdN_^Vʓk+edl:oSNwz(<aLu3:YCK5jr -W̕skE@B3Ė@* U\I MB5.Zr3:Ҩɩi,1'0L Kj iLB]OT!ZOs2$ٚ8ɲKG*li\^qPCLqYYk/`7)0;tÁ(I BA E -{x;O۽H[t+ZXqfUʲ1)m"PqBI^ $P+yG!I)8ѨMJXjAX9iTl' U݀@pwX<D,OU 4r@(և:"~r@(lr12P% L&khN~[sO+.h -ZKbYXK,|b̻4 -W ^nCe^pԪ٨Ffh6 u@ 襝l6A梲2# 6z(i6 za(]y -sʐ@F/%C*ug}.T·`>JpH@q4A|^hRГLLTM`Xg('Kvgied:.92,-wwxe z|JDtUJ=F9#E&vB:0Nj66%srph);4 -TsL*щHD9BP NVUU"ud*ȔTTS̑w99rȑŴ(9 YIb();aq "␦8R(/2gǬ =9d9&EL;d"YfF}wd%Zv֪mkTܺ.vy  V(zbH`&ec/; WۑEf3yu8%yANBm1ݔ; Wh<QoXzgʒ1 1t4$YT=۲de2_ӳoi4GL<$C֝Tŀ DoSћA9"N=C4dffffffffffffffFwfVUfvW֯N.*g~ϕMBYSVTʮLk3m¶,EI0OE`FS Tm -8$U6e*3Rݝ̰TL!~xv(W̲8ͷ]VW4?|BTZf0)PU$"Rl2\Nʟ߶VST;LP0*PҀp-AҩN 35 .6 BPIfS_diNbPk; 's(Ty*6YC3-Ez,$*rl j[syQ"0務uifhCKBH̡oc)# CK,ƿ? cY݇(IC&'׉'d*ʌI->=8)GH^*ĨT&6qJ) hs..ul쉈xwu۸ {͌( cT͸SM(ODDSL|!8 BB2quF~tUBBB*FmdD]kFF/2IBI媢 0/*3".O5'H٥Ѥ٢t*tUW`';t8ih%sD%kWKht<#F{{ۗc3}*m(2NM%fD;* ϗsW='3PSl=yY8y7d/@Xxi|nNf_b*:,1F1 $K7tb.-;ĊKl8F.N{7'ƛ F-T4#@4&á,df2F884K!=MR -!C B$)/6<~|c3R!ѱBE#X!Dp,1wF"`Pt{_Ʀ5di=F s4_W7Hy)T1loA fWz霒 I>њd#GFOX*Jr-躞P $oʽjZsgNДV@# -Xx6r}/K7&0D""U@PI,<л -U>܊K/!BԈMPZ%ԃ~?q'=tASR&wp.e fR֋_+)VSA[8XXUVդxNy-4Ƭ--QJ8EL7.$'n[4"]"9qi3&A7Bí~r7f#G>LIq nkxChdNTtqFMY]v' Y.ֹ]m"&4&Yd͙`S -G P%,:9I3;Q~Kvq9gEruN~8BC6& vġ? {?[ #͙?eh[;_ d#`MyL3;]|4}4hLInÔ}<}B#5̩gq:yR3ʥY0M ,Yi[A6jk _\rt;.%%VI)H!P cqh2%jU%i9逸2YЇ.VbnGPf;sT^C@,yt`(hJ@$;Q/#k#)eti! 27`7܋ hHySϥ7{$Ezn43kɴ~G`2p4j`|e^k#ЊnD&h[xD^ [}MU2DxVϮRo֛Kߡ#X @1 -v}.pI78TG4Z0RvUn˺u`3% @űFb*DojP~+O$RL;$ kf -FddaH?Y\ 'L/f7%#_J7Wpdr@cJUNIϘ:i2ְO. #v=F -lLkZd%Aa2}h|g  `YoyBrUG} x}[+lz):b:"Zxۍ|%}0DP#\ [l⟐/ls KDΣ3scqLLT -3 -tx,J/ƫS֡AA fzw{![jΗa](k扛"gLT c6--+PVpA6h`p͛za:K!"]8 XxqQ\wbJvT-e_uzSWp=lIRUYF_iW]g"ېPο L++n R`@5u&!s7Bn+rsO^)╙/]O[kx#&1,>yq>o -rep6 .\Qly^}/|مz!̗>U^Z,S(F5$=l;m/cu,=,E#0v -E(b ;IHbUwxTiղ4[`y3M<%n c3`.AdFsX - RĂaK|6!&bU*2.gwnߏin謝KSG33/JTdڞv1I,H:[8CS5- TpF9,I#+J_h>u[_y:Sj|v[Lɸ8"+㩅HNعCkE7uI֏k -_RGIavį6vOQs0EԹ1+ "T}"$36%7!G"D~GpK?WG6ik -?dmkXAk128`Xs[Q:&z|/zw>34\[2fGpŰ1-NznkID-!j>wL2IĖrQtAϥdlzԃ_zL &PSRҖޝ:RZ*1|-QKBa[ٌ$K ,+#rǬxeKt̗P"Z!$ B՘KFܽ,-5(p: 5iciLer5ZwरЌq:tbhXIdsݯ *Uh.35G{ [< Dи/3 ]y%4i7о}x~ \"}GXI*;˄.$99qX8o\hVo16M'!b|qeqe`CaJh)+B۞7`0vG7:A-x:EYEx韻Xrkk?bfw)](Kx[ITjUS:4`huW$FE&g1S|f׽!c72=Z(}A%qVdm(8l404C/L!:=x-2ڈOZvut 0ǫ\&Y5G|'Cf]'KU0eAPhoonT@?M07RŠq%!=` 퀠f|EjŰ! [r̸3w'x_3Tl9]QSk3ZG#_BDRZLzX+F2;I?LQGcיc #(}1o'Z1MΪ\R9+7K,DZ2Ř<&MI_I&/$-nSnkc{wobKO8Qkǖ-BT!aH/ſoUpXr`ix#'ԃ|r0O$e3[tPXojWnql5]bc{t?zy8r-j N:͟$+&v7>!o5$Eݖʪ* --sH†z N5<k@M Ns 8FGy>A@:2z;cC/Ԕ3LN{L}EZ6N7MM:wS2ۉAs?nB -Œg"CGlnC`|hIϑ+ذԀnl?HaSJE?~F<ߧ֭k A5;*JE nX6pXNLRi+`3-]TFd|h@aLx/uF-֫ }N=&4lW1(ȭ*.5 ۔s!<QE=X#jUcRv/4{B7ݪᥗb:wL41tuzLyy4`RK.3ԼVu7Q^_4I+_ܹ@ fRrp8UKᡒ{I+zHcO6ǡ;V|3o["{>1+6OSjq Z{܀1C^i韴A`zh`M]-V󯉘=j ii-gധ-xZw?ͮc*Uz低W喐3Yz`}`(F@U:ڠ{jz +J

?Byb3.<ھ/GE0{٬Vdru!f.0RLA/#5 |.e-EʐAw(֐AhRo[uK껡f.ʿKl{-V~e}R" =L5N=UOpr4bS4i6AM7_kU2d4W5#}K8Kk gj9~<)MDѨ3b#QI]Z /

% U}ΑBz³Cxհ{c8+3DZ+8<[E#[=q.z!:`xnkr̋wBsUAUWdhQN +1᷇9uX{^jbBƸRz^7̸)*6SK%+4qh9 -A*QE2s4ӝ)LBϺnGFrmnV1M#ZsizbG"fc=`"2?xYQ/qbf{l3,31^6$g`||> )<"|2Sr<.gT8Ty9zEtQlR@R0AACaK2uھ`?[(URW@'+hb1bjd?ΓDiy((1xT$fG[։ -bl'. yo*7C)Rĥ,1/8o G-Ks*ʘ-^ -yx$t6-2P g+S/,|;Su_3 ֞zb9v^X!0SN@r&X6ҏ -tF' d* h9W8E3b iŽIA+J;r6bxO#U - aF`a8rL[!A,~%4i~<ܨpYzGMeLWIu<٫ei&vmLIX;VLch$Ea`Y -.Nlm' -, LZ##3M3zt{BF$`!A@dZ%9@9! <N_ AC"߳$]{aIdiE*oq1>7tnk󌿁T43]פ%[tѱ9 ~V*Bm*~6u~xAb@պ\Thva23Ѐ ,e{[-f *'@*(5A-GtEsPTwp#LiϬ[EɓLB.Ɣ(,O8pfTQ+,#ew5ȒisV@Ђs\CvIׇ@+238A!!<&{XTWpu@h^F0Ѥ\V 鷆EJ]Z!5w`e]qe4mhhZ!Țl8FG)1fi8Z)trp9Ud*`̠Ev35#4, -nM@Pb8{eR5zi-ȆvA => "ɌڞlBQiȏhjc`ԫAv~;6̔Pj](hc-$SK -ʬ@+|TUeg\ x xb8l:о˕%vWQh6W]1mGGLJfG"ֲȀ.|)y}\#/FL<ӿSCy{MbEňkI]#)3v&1zp~2@( 4AGWtFrq -~U^B ܶ[Gl"v8@i|r.Ċ,hʛُ]cv_9DFUQ=IGRPNB|1%j< d%$ GgvyގUfKt-A-k`eG@,KꑤF{X2{AK.NOhUiae H3!vko Inz{tCen)E(1Y5׵v'l='NIдsHWs2YxŖW@e@0d{RC-/ g(I!){,—GX*'? -fMh~юAq)pP7XǶ@ =Q?v{.on17xU-`W2Zx2'$^!!OPE)x:Nv8gNO0gl[NV+2ɧ2&h܋,\R3Oqۤ-~dW| 9 \;A[UF8@)|{b[>ZovuuCa,l);7Z9sd#{@آzIoiavDNużAH444aX&K>g~%\Ps@m;due>: oHRc#1d+dq~)?po=]Q0pf(>$R;!|Ǔx)S衪5C> -9|]"Ke>'"$pUB""d, Rj=lҋc`Buc;vhWK&_ vӨ71HgQ!A|mL-O|BYo9p>Q"T@iD z)˒Iv<pЧQFxYrd6hv8CE,["ml;WR[ăluّ@~Вu ¼g%V_[eZAt 5^_U~qɀ xjA`4f ./ozxBʳ#\u#S tRmv|JЄEb璻1TRlIJ)CD[=V Nfӌȕ0bx'ј|˗~W,fEv}bG#gYO,ʒc:x,-^+H_R*^FO -.W|~j/au-A>SPa!$J#.!,LWl4a嫶;GB;ׄ w-gԔ8&22 @8$"IGӍ!,.eD4Ұ28.l@&0ᅮYk@Z-6Rif5B f-D$~ -nK:,=$/. 󸉣Hm ?IW mQ#<8+. _bq -*-9FS2r^¼^:D詀2Pao-Cs;݅<~=.=XXSOq֣@J6II#sHʖbGoBԢl:+Tq`~G;4E͛uX/l+iq=W|* P7 +ۆJD~LPwޜ?λ1`QMZ.v[ ´Dd"<<, Doe\,>\1N>' i5WlIiwh6 K-āwQJ8+2rs\ L7!g,dⓘ*?w&;&+J§\#52xJ垏,ĸ/u -xY}!1W̸8R֢3y-\Pcүڡ(PX$Ycۜi5x 9bTqo8EJLĆń9,ߺJ& 8g/!׬(@0}7c_EuU?.,T*|k%MhG -_| RuӪUZߪ޺sq]\ 79NY E]RGø ?rHE/jbF1  LiO@P:w,27p]$%>a4C|l:qm!ݠGt)rtR%/jR/} '%~'"۰cƃI0裕{A6b\vdFl7o.1qml+&gR:$2Z *k@1p_쓉8{a! I"kO/#oϘ3megӟ{\F_)U&YCsa*Lʣ7s -iC )ah(ۯ^Q7@xZZ~qkCJ+&[H8b(3\Opk4fE:_8:ӀnUC1;CRljYVx\|:$o_ Ʒ 1B )ȣ&hjz'B23LHS][؝vsĎ 9Ѡ$]Q)H/} -P|(k΃e|=q+'-H?G!M:aicN8JDc!xK1m+ d]B.כ"Y1}N 3Qtײ?;ﯤzsD vJscT։Bғy9ޥLM%sXS|=D8/dQapvBb< T=T (E|EAAu!=jFit8l(E:"mQ`1kwt}+i{sBJ}M1UI ]`w'k6չ,Ȕ]b@s|@K |+XgMX0$F΍e|%|TdF}HB)u'9.U1 -RϤ,w2YBqh?!S&R0z|Jɠ9M\(>\Ⱦf߾R14lΡ!Y)\N r`L.d,PڞT -4qZF%^sC;Qm((T4VwOKTV_xt\X !`bXyR -45$)L)W:z֠`nןy\Y0E#6)vy -2)y{,}bw )BTRh L:ߛvBXgkiyI|B$`C.JMDkI= hCehqR1͚=d\f^.# %fDv&')x4rM4NANN0$7y,!@ bz\z Pӵ+růŔ s?b@+lbvg0?40qP\:⻾>?D[}.΂D: I텺#r|(գ h5{qyM$12}$JovِDrͶA"ȅq >r K& d,w%:)E6}]krD4b2`Ie\x st [ oig?ɣ32?Q 42p1x MI-d%߆,KVNw;[0R`%#ٹ  ~EwF'MHFeݸ25YaV_n,1PPie]!MB+HsJqI<8Z)#ɖ-Qp{%9%&VMLWgn'6хàlWɠ00G\(zs×KM7AzL5a9E Ḥ$Xہiv_`DĭRUeiwV%:x(K=THoFǼѮgngki%*9ƣ=DԩX3Cl%.DnG(X$6\gt -kfvOdD{3g7H\<ȮCUurJ ߆S|p~J6ѳ8%.-t+BE gl&tB!\q1] vE:= bҀ JaGȎ)s4fDWjji0* -4iy0x.lWuOu6Brt)rLo|v)H23kqW.eȭ*M4M9y@mD܋d!`*8ςr(`#"U(?頚98?@~(=Za!ߐ-!>UbPpT+ · Xf/+̲xrOS2GX J|,)TEZeNSAÙ4*Մ\1nu|APHms5]I g6$:}V˕>RNDvQ2"s_C x ,;]] prwwG_x:Xt)ZPvË5ʈaVʉc=b+Aubsc6P0UtT0? 0b<s``؉!/$V\C?u]5:$Ex`T Eڋ5Cjғۧڇhlt2Խ+칟Cu$Hw'p#0 JxSTgVBBPK 5 '=j \+Q(YxZEʩfwlH ZET -2 ܜ:YC}l+h~c㎯2ZhE2r>?*]i.&ӕu&Y}ǁ z -|ı]ae R6k^$_M 0HcA'`"a/#@<H^ߣ|d̬:n`r *kۃo+#m9' -qثջÐ%kW.]`JwR[ -=BH(Xr=ZZ8?ʅ XÍ{g%l1R= CdU(\(yI4h=UQ@!pé)\ts.~E2>:.!c-7A4)pE -I.KP;KWzлd@=Ϳ.STXӜUldR/jx -`i<1Vp,TCu$8eP ZY0Wp(bm]NFFˍga*aTydW7З;#8.%SCL@>V#DdB$0ˑ%d/!|A@NF=*õN#q:6M6h#Έ".yr] u a.S^ylcO"1 rJ,z=4l/{cرZuf L/Y^C-Tlbr%aKl j԰ Wpvau2XkCeNxɃܩ{۫ptD MiRAaP~@$s078$B/niYB GF9Cn -F*[ -V)t}Z(i=ف&-hrAZ qԏ !y}@c.%cTFR,:Dyq2P@*pn2`R @֮̆k3)}AȲO_`g:o2p*P-/ۓ!6:stѭ]FhK|G'VL39Ǝm۝q-\pqsW I.2xqmOAg[VAx(I0ǘZqS!}Zಠ_ר-` Va$ !ةaKXa7„[1Jw9sXQr}2F4qAh\&C!W|rrh:Bl-'A 1t.:߹' ~K=Y -߁XPij"#uiEq|>j_ -@Q9rSڳ*9Z'I}Œȿ+|'cmh|`mPER*Μ{@v²Ɲ["UhTXsjvر^`eŅ}4dE - @TKPQiaT\v R? VBNBWh;U1QĽnjn7϶VQ͈,31C`;AZONp=E^-KGB YkkPMe +%0q#,:!E?PD!Ttkj\ x+wĖ U3-izZ˰W2m,UxTa(V-8ۓW' 3.Q'چ`.)⣩3݉ Ph{똖IsJ@ij?π\GZ*GO5ϷD_BˀRʭTiP9o͑V!H1*%b@W [9{+44\Ly -oU Ґ/z,$8HQJ P}}"3~\k̏RH 淚.F%Ɣtpt)^Q0y `ȕx#t+lf6Fe} - vnhD~韕};~~!/׫.IREv]T7zx헂Lma`qe>h&m"d!Z*yӥI -/Lfv 4=!k%UŘRμIrKtWI~+WzjBs#GL$889c<6wMIp z -]'Dۖxa,V};2fN,x3(sX׭$@En{Y!uWb6pL P^9 iSGaښFH]GF-?uH> wk o5FM=Pjg҉x˷$ŗ5fV/cL0!w =t5@bq]Q&k7P 0wUG2 -5K?Ybf=*(L#ۍ]W+Iڭl ~ -0!V=GR?1X9FHdFOO BM!wz922v+X8^*kKoL1[LOЄviTbۃ27\t;Sdžbvɼ 0W tV -eJ5#-6:q -B؊7(w͜q65OMzmz''QK((n9foÎ X~Ϟ@+@<=%)1$/6~kyF 30@7% .n5%,a!}آm&LL"cJ͡„@Րa.'jd7r+^F)zo -] ߰xr6;2e - %иWo^pٻ^Ba P|Ps嶥?ܡ#Iwx'6_Tveprz N{gQCPE9Š(M~gx`Sc\z⎥z0?uoDQV/xACuyt37'~9[q2vHVqRxf@ ]wvʼ7幚Lv) -v,_ %Os)UK@^2,Y]e+9pQu ;Ph#" YkZ)jKtsO\'.`#zg޲/9`h&\) 4Ap -sS:kL7&+r،zA.ܪD,V*\Y`ܮSӰ2qsAX74A" -l0:-MVNX^xwj1#7J5 }t9/>Zܾ;>&Nե( D#C 9 9eɍ+=)82H/L%Pիm;:Đ]6XQ*OqF*ýltOL]:ԕ--x?N\ο9P6Ĩ <\u߉7@AY8gE/>U{5w更ߋ9g QQRr~*\Ssifۃ`~cMƥ^=S8Zr"ɊmS/&2}? nd?k) *a2 cGBd+zHdEl5J!7@)d{R`*HL e0ތ3ٌ ${8>v>97gHxmDx$0m2rIx25sN"i `P^EI:SHM Mk8$$tJM$xD"`&%11J įWD)Τgg7 -ՕC:+x-SAFF-EXK:G_⿓#w#WE)m_#TB~W>|=xl۶ɏZVSS *!DКYFvݸ ;{MXWŨV;Bqka6Oyv"qp+ѡ!muBYkFS9e2aqnHNuySLO1q{t.y u4Ϯ>Od;um`{jfDa|T/?< p)_ Q(PpXh $Xx,*4<%zAcd -D`fXFtOX9 BX?SE C|&$J_?H{jpL!ݲDI7h_E8= -woނ9)!F_L~)V\k^eH;k⊊ Fώz|>^Z][&\29xlrs+r`zO?~ vf7'45^ԋTŐPP٨7Cb UBGqP^81O$an)(9g 9cm%Axdn(] 0Q YXqLd:JAv1t̋xǍya~6wX5Fe;M dzo{W+d8wky3[!t=D3Qdю1&<,ԓ093L$ַtm[8-PY}ar-HR|bXcQDΑ<\fY|\܎^k KV̌= :@_O_O89_vY`kC7sk  XM\h,╜յwœPފ !umbRڡn,*@[h^A0&KZL| -S XZ*`3. jŶ - *mljS1p'E2cp.)^PP2x|a90Y;ezOGJ[Y/8khxVh}6V,F 1+~@xRk«VRbGeCvs*'F*qbc#|X\{Eաb\h #zC"9v'Œ~M|6G.'Vk|GкBz]\ADz>lfU?p}k98ca(f+HDyNBCB|+q/P:* H'BԿ.#n^7it:U_B p2nbrRN`ڃh1;^Otݢ4f*@ue(_StՁD^a.s*U"X3TCB0e2xpu4_v>zICs2)c&$upֻA.sE$\|;ًN1 =3$K-ZXSOv/;Sn -oNL鋩m֕g - Ž⾙Im -"#z)ݭ%4jfz 75]:? |=҈߫EU8c"-^?Dn6p㫺s2rC,f Lܒ;X]XXpEՒdpM:˲^Z ݤkPʲ|qC&cmW]ɕiayρ) e^\Լ+*^<[If9zu͌33@ꃌQPKuaHc1\Jd輢&ju& -x -fԂ1 sClyNz'Q%iE" + ~~'nr 'NwB%b;#K΃kCl8>'%9(uj<Sn< -kԶ)+R஠E=#x;&@4 #Hsv92sD"p*粁ɄQdzId$el0B%` &C_ 5l+98k_ݨ&7zL} oK --$`z$kwGi{1IW^6|DjK:'_={w?!}ے e@# -Bxc"wěF>]ͣ -4>d":ѨiYI~메I*=0u9#F>V%k\>Na#z7Lkk}06m2&_$rכ'ea@]{ji\v+,i`m>GT/ sY1{eႯ-+d <ҡ8l7H8Ol\la[uD\j)0f1 -!=&&RVB33Tc(soiWHI7B |{\egVlj8N7'9=贵 %~ \hGjXw&^H4yw?vn%ah, 4ӌy㫠ׁ݅kAXns_nWNyD7 R|_ϗ@:u^FK#~Uk/0qГaAZZᾘɋ}eunzC9U@~ >oI-Rؽl@ O;T_( ZR`CO %rCБqYDcFÙQwHղCn&^gCdmܱC85Y.wFazcz%,D2oJcZr%amڳcNNי|ic!K09RHAz߹`~@btL=\QMX0r~ۭh8XQUTQWKB4^mo<>SvnF*Gm:rUhSbW/>iRVa\^5!|8e^,*W x&Pd=}ozzL̆B\ZQDSuCO&vtݖˬŽsfH'3(DrryKHt2H~j0v<lv/a)6CSG_*Q[pT6Kܭ5HO| ;^A3YV.]40v=>t7"E&ZN RI` F?'aKڙ|LؤW"H}٫b"do%GZ(C\y*$ @ FOg/b39BRٍ]`[A:Ӝ4ʈ5} [ -IL#;>J%]C-H݃w(r -Z&Q݁=.`sV&݇֗HV>LB`-7|D~`ؾN{;֝]XCg@ꍍ-VQk Lq~ -tenQrV8I`x!T4 -d5uڻJvy30Hk0|3rroU?Cv$T @~:gC0 -aMrp@Љg/]t#;Ah{-HՊC;[q -B #ʂ#E+(:ulgK5Iz$ 8|Q(Z><%XQz\+V.]Xk\9hmMTNp]ƺ9iB̺b9eN7–Ʃx7CFP˭ +[R&KK-t 6h FX?#I$4@蛺_Ljn,;`= 9J ťJf̅m<#9)9D}\G0Ux':^VT -i@2.\Y(#gC)'OZlIGE۹ -piָ͝t=(ءkb& S$d& {I ~$z<*Aqjif =3e¿n HIzԺWAfZxX#Òz' s\Qνn7;@M-!ǀ?}6l2ʬ+^g*d,sE ר)熒~Hϛީ**[&M -3#X`7I-v}n|9{Iz -9^祢y$<}gS>>;e>6\,t xE y£XwNFb8?dԆ_tH\b h / -endstream endobj 935 0 obj <>stream -g) 5 wԱ3 YwY@ VAԬ|m8Io񲓨6-"ʃrzbq|pa#Wjt5LdT|<^ya',Hv$p?D*mDsvŒJUgPⒹ/;p9I L D"T*=3F6`rF1 @sEX󳯮RiQHIp]׺#yD2Zڍ j g(:'ŢVJЯʅM9 ʄmKaOoG@ -+v8-ɩ]{kc21uo>s'zAͪnzI -efѹ(D~XG8k He V%Q6/%Xh*}fcwP ξdtsCхCxyD X*֔ghuTBt!:8mK 5wEc*E0j/m܂T0"wݨck'(û1lV㋠*j,. ?cp$hQtJ53=h!LB'ELFӓKOSOYϤ}Rgg]jZu@Ias1̾˨:x 8(Wgsbiɛ=$s R2rKN -U]u]bV߄9@;2u@`PUJi=:+23jPf @J)>q&(!I.O ~ `ReJjQula1΁TKU5Ff߭@' X L%h/5mIrsPAХV*"&Hazuڎ3b7b/kͅǐ^ffmS@|~y 2Ph]iܩ@bO쀈Zb/屿pv֬`5.^cB[8tiCl-G*\GD8m -Ȧ7['b%BӎsN0B  kz"P9|*>%Q|z䞅sl`6Y/0PJ^,G.*fHCinz9^G{Р-F1w $Wѥ >٭R *nDxJkGSԅ(/5tP|Zm(b_?gr:+дO1ë|qǿh4⴫2b -x픖ݕt':#,ⷴ U.\:E8zḲE22}ןC`w+Uveh$y~_i=~;brrZ*=S&}4qg<.=7HAV {{8щG\l+$T4iteJR66c8'Cx@#.C[ ;F4T1cd݁#\l.n%)ouE`Y7AS O^%+ERz:Ao=LIA$ BQ,H cޛBv3TNwӥ[v dQ^ Ee/Pe$mJgDTnɇnWk1 w-9zWYW -}۹&(%AAQOdhpOqkO0L(j>Ώ!, ZALKG#o0VwB՜hs:pwՀ&: Nt/p$3=&.XXL)TAJQFP244x ,yʿ\5B;(c^aj"^ObhIE3bUlVJlg­"KS:vU@纄a zh -*ho4>ka b#AC*13dS ^)7ϣ -\_]ٹl~ڎoI:dA\ҡ_y+?'uSEkbPHrØHPd-$Pp -\[$?a_hᬹi%q G w P՗0^'1zg6g-oZV߶K4N%䧯AgLÍ1MCGKC?rku"M50`MIEO&,(m54ƾ1 ?P$H³>DHڸN `!Hpvq"-ʒ"pJ68| Lx1!@c6~^q݆Ϭ'}oPJ;f2¸wlu/qԅ0_، -dĦlJՖ`rQ - Ogi8!TXܸ1oM6{[W Z - {`̐ڶSɽei6)qb"f֒6VԲP'uDy2V}8dL:A6%+yZ*_"PK3 POU7=S #o,;j(#pFaB]c)ȹ(1H~hINN̜c]az2neY? iM آ-"%33@ ۭ[QztNTܺ?ݺU|O\Y3bOB 78Fpw RTʹQ&Er)y;e>1"-8 -mk*B]h{0vSG%B'mLwOढvOMIK+kQ 9.HtJd< $@K|7>v n5Cc|Y'a߰hO"f1 :eӥX1|)3hXs p<`\f$b@rv2?)a;whS*ԑ7ئ/?`9v/T[eqD~jCL"NrpJ*'\J_zCPksu~S=uO1__=`G1"C4aW0K5NwX9\ y>Lr]%PT`־b;=IźߵΔt^4.4]wwO UZ -*HɷWX\<Zu@n+4s*54vgt05yK+^rXffڄ4ZYAG#=Fa0ޡ⦘93L̋@D^ 6:Taviw$ܔפ`#pR[4AFTӦk|2>3C8k *oP_"wP#X0lpS0/ D-|Jsc¿ ^aC e0"kE ǎCTCDYy饜Vu3dXJ͔/}&}]Wʃ+[X#Fo -IikX%s̔mV8zuJ@ՓWsOf|.^?`*|lhǢW& =E|NWd7ˆM?' h FvF4*8Kk͠B =.齙<;-PiQ`u}qU׭FG6e/$_D:/)6 _mc10p[l0iR7z }XNpYpo|9}t$b<>stream +jcLs`g3~ʁ/RG _RT|&cױﺞM\ 811aw0i Zef+15{ɾuбۖ_6uDq0cU- ~bߐd1ϮѶS2×38r"'Ā $ Zo`iSD_GvJl FlAl6EI=.IXBu} +!K /89P yd擳v7@j?;5{p%Rmbk\^])+|XpvaM@\ݻaPf&P45󿴒gFk'yfmi`F¡w~Ԭr%$yS9^M+wX1.;s^I  SNo]i(⣤K?uȚy Xs÷mWA3="YɠPgZbS+Y]rw#d?kUr$L)\*Y$EV6On'd :1XA|5أz@!| O/p:͡"YIa{aߥ ;Z=1y>/+.Qv@R!u^<Ċ]`7<3;kW3%WWp*\QW&!p'= ^R(U3d6{P!ʡ}#f\* +0J?om5Ȉ,ŭԶV3S'9=tlC7{a{jP[_] @PrA ُn]ƥ+g~D3q%$Xwwi%`lS{%UcTg߰K ר1B餉#R8J>nD,Nk\u\,hե76 +ʹWL,ȔO$w#Yݛ>wm?a~}s%~d[jə:-LM6Ƅi{A/kB/\$ d^UAa𑔫) eL9u@"t֎g0я4C6D$H/-'p`)pεv085+nNE6.M"ד4l݆*|e=dcۧ~j~3 {_\s632`Tmٞj e3%dw#:RE +dsP el;EH۔fղ6īh6F;?({mnM].ޛ!SW)6#lr!ېX _`igToʼ+Sf{G».a j.3ڻiDYY:'(!obqs4D~ Nla{"MtբN +2| c&A);Q:2-ѵ;b vj1J+y{&'8zyBgEs6bզ`n(Ԥ4ߗ +34 +DZ T?( +ܕDYTbOGO[XN)/KcjԲ5yBK5N((ZGZH"p .j->ܝ) h qURq @N+vC~tG;04W !Jʅ!XX:uWh@V:.\"Έ lMQg"r_jTu_>|,@V p|J^zi؁q4= dksu >ۺo +VC[Ez2$ЊN УN"bh_Od@(Px*6o"{/E$:26薜b8ĥֽ!?0cyck(fCagtk2>c7m~VBzx&?YΩ +/Q]}G HzKpPNlc%"ti3:8=,C wxe5$"@jKSwbAa`M\TXI)B,dèheNέD>4 BbG4RP\?ۧ1|<;ƳM2d4 }҅N_f)qLmUOl+ G~Z|/% w; ֣/3$f|+P5P)@v +фK8I[Y K)U>i_P#@7/gd}*98]~v)?Lwp̰wt'IZ'[Z%Ҏ#un4T *k+jU.bcl4kЦdq܂ozZ5;jhDqay =#aT˒MX%~,XbM`dR8^$mZ "_T{>"t34IG&p-gur}\Mfo] 5&j]Qv9C9ϕ }czq|?ߘ4@V$#u +b&D"aSg @g?.%T4*Jdi=)<n37-kQ6[KCX߫Wb +,)$8¼9`"ٔ|Ler,|eF D# +J/s!᳌Q+GWykuֳG8DmpCvu 9z@)7@mBPCsg6B + 匆 ̴E Pe8dsLs:n{J2Qe*R.@tS@Π0ZD 7N"*L*á{ +SNkA]$$w{>:yk,9g n"8L,l&h LWDBJB6Hp2ڏuJNMPxG!Z$u$V)DΠ<)|,&lԈxL}]^-#ME~005OhD4!`Qx|Gč nQUj@E5PQ,dy^dM-P) +jEӰ-56'Ig1|?(!N~!2} bk TFL=ɿgG_@ x8Zvd˘lGPX*?`tRG^ge)|Y-֨A_S_yyX*<2~~c (sE4s4qiholC7WQRn6*^6ћܛN;pHZz|rfEۏ)6x91jW'tIBd.N^ק2PICE(כ^⟷sɽ_ AgKa_/Z!ЋwUv:9_m~ޞÛsll$Gp P7UPY"?ijS?̓i'~+WJ!ܨ`,}:f(`I'*#m퇒 퍏&L1~Mcfikd}`"n`ml.uF4ȴ`3 TX.sgtyVTO/Wu`^j4|kV`(z!]J4ܕti2< a·C[RA9Ѣ,.9djX&lc8 lxzEˡsJ1rǦȕDpjM )P(AΞ*RȂM&_.=x (m;hi0q'p(B%D +X3a&Fl8z{ړoPHJƶ`L6 Sf8[=yO-"k+oWh%̡󿈈ҡ.p; 乘tN[im_ # +_>5CU =p +IyՈ[$aH>O} W 6FU|PC@/1(>3.ZCB(kH~\ǚʭ=wߋ,op?bWܭ`UbAߗי tJ+H+I;tFE3 X(}bW3O%p+KH0ɮ{Jk=Q$BbE>ދɢ5pY^4*%q62 PXTk-( e죳ހ$`-eu\# jص838 3 l3aUHX7f*W}Y|o،X+lo8v#:H(}ڣ!j4[ PM^a34"@.%Nk0Q:a5*OJCK9%ޱ'F1[6cG w> :R(@ݓ7;F%sm$8]?Aͦ&c +E @TF5E:Yht3wf:L9 +Qc.(R4t1 0o!!mcއKKG~!Jہ J"׽(6Zm)J9w5$;5b1Q?p3BxSk,pxJaߦ-鎁fHp4_&^VǭbYO|l*vp\Zn D3dfSP<_Kө hqLڢd|sɨ7nM+*vZC'Z1eiw=|g[f,EIabd3Z $l 0Vh|GlVف̛l{~Qnݻh_b~cPH^(*z34霋w;Tn [۳3TYG ߓ+P +Biօ0.tK |f`ɺ[ xc+ԣsﳤ Vǭ>poc401>>'Qpb/fFAXnW[LoNʓ,2m6-CM̓oǵ(#JfBswf[}3tq \VJB\:Y2)^nGҊ`WKT݃UC z( +l5@=T%3l`́R$z~UbF#;R$jtSAP b#J@$P\UsWlܰ饪A uh 89ƍ-)-arY[*xE$=Ǎ spqCB 9fa `Cty}[J&ŽuV;LAXpIˎ>Ư8b<y$Agh[O @L?|,V,$-S3/S2&dD'G qxf '؁Hی;yb$* x=gbWH/xo^)d̪}u1#[.xGk%T T~\VMM_B[fdY]ŏKu"R='Is JcKlȂ(e5s N-}dIeD\dG,\(`x.%)Hˊ=5;e?"s(-v~67(#h{o gX[R6.?¨ +!9px3] q+2B酕J~h\Ic O]|b[ j@aˇ¥`9 !#ЂZo (3A CH(T'I35H/B5ւđ6,}-o!fV**3= }(Aࠇ 7M%LcdR>7zM@gR$Ѵ8ΗFOHLIv n# ~[L$ 6WJWA4:E~: eLip3 m.2@:mA@%hD9ɦԅteW~O1): +8Q< d?P,B5@ip)T]aqvQmfKJb_Oa4|D+:s:^IWVSXTO#{2?zeR>Sd=ZʎvۘFN-qK&﹫|9=@f9sA/IJ@c"{h<4~nB(5*n9Zg4%==**,C*][up@'"b}+F_v RfОY,S/CRRb?$Բ6bafozZy]1j@ݫP²Q2S;ĪwV,I 2Mul<%IW RHĄlqpA{D $ e /eK쨍8}Kupsρ?PlX}j|2S!Q" $@Iv@tH^7dL21l M}~Ax*1DXoR@a=>K->N4K= _|QZ)I\TZ/E\l /ꐝzu>eVZVIC:IV1~/b\f^G xoxk-"RcRZ1][Ƌ|eG@t5b2]zwOlE-lRjCDeCFRtW7= +̖F|e2%0^ʒanb%jX*3Ʊ E%Y8)@$ vP1>̤QW0|0.?"_c!t+o'ƻW!Σ|t&6?RxIs˝-({tlQ"`6P@l\X\Ch 9Op$5xujGo\fiʳYT]c[=2`t*NBs>PZt<^:P be$AiØKٙ@`\6Z !p:4~];cu&t E5(.\i糦/m{h/{Aj⓻bkD08ۣk`XL +BNՙU\@1?Z!gV!OKȱH%$EÊ \o'ـ=-E3 +f|Հi墬"w 87sLfn)2H~}[Mm;+>fxOWtby^#|^8e-ӍZ=Zu ΁ + +~DaeQ)(frq$hLCMP|MH y[H{-ٶiO/q0H>*Bc{FPXQM3Dzꬿj:'/ *bϿS)#I"~d ph 0 :C\X@O0XXQxSR\g|]V)]`t+XNƓn +0*p)8PLxܣ@Kij;&~cC, vnGO7] +$_FRwV Cp{S]wx#t2V_>/puΞs=tݵVv}:v,F, P9.g܆ <Dz—KsR[7/j;U`EK(`zXU;v{yE`^ wx5\;6][;[(: h)R_IRv(-2H7"6PlI<'DqF"U!$2"S`:u7y{h\+v2%{[f7c pM^gK?TY}A Tjpiv O켮>|QP3A '1*d +6\8;^nl!1pYaaZ;ݙ5d{>)KN\dhY`(z, +%(p=HG{YQ5=>E%]tli䌾]+Ѓk#w.vJfRIX'"Az7Jaaъ1?f7>`>8e a%_h .PBWJ]Kʽllyo:Z@s`ߛ ^h٬qpt6(!֍ +E==:NqT㪭*Tfpe.9j""6Fd-kyaEL#-?.{ZL=3iww6)!QXZDtguBhg۽ z) %-!jAnrMBS yi|(Zz)_:[+U4)uBk_<%tDpNV_:Dl4tq7K-L?, ڎEP[8W-):Mpa5#8A vnctᨮ8OB.F=-Dfƪ@{I^6o񔝧JnJ[;7'JWu\ qsa;/lTDk\bTBEtwvgnMzы75gؕLBkhXb' MJiF-!?}]FQCK8|_GBX9E< xza@^ Un7Dg]aX>,{K+h~ j}tBǯ,,eac?u"I2BHi^ ]DiDp@(*xþF.Kkd@WG˛CE ϋl-⻓JG|^OdKu0λ :R[iXX~n +XjΝE?"dV5we%AXm3՝jx5U5IsM۩1Im6f b2BFO2yޙw|"*L@ iA}sX,U9*v!?7!balVг[4;yqDC;I%}keiӡekGa72ٽg 1 O4 )j˫i FNnniWC]20C1$? 7z!CE"NJmW)aigát{_(/^qИiUT:q^ʙ3G/d] dA_X3ssb*?*.*W?.C? $;fUgO]y"7|%_8ɬWdQ&dc~5,륱Pp bguY><31(D,M-$: V%FfS᷈MCr¢W +N۔d\€ .ZP¨)^CoS,]ctXN:@rugO y⟇ jzi Ϟ`W|C)<(ʢ>ON&FCb%-1lJzR.66DjkN^*w+eF·5 N(: +5{\qR`%>EZǘф|BېO1LnkXd-:fW얏xdx"׮J+wL1VNW4ylJ=H-,X1Fk3 z3tKs l nF%ZM屘n8 .)U=|/,(mXgԿ#O4+  +sI5^YJXM+w٢%Z +cr[̾ a`wg8P_գjƖED!'qhP _QλQ4e<ą5f}ۙE}\ S3+Z1%Gi6*+(^.`&^hA_FdaCw&pdg1I =w6C00Ցc[=+Zsa0,5 ۗ]ד=آ\-Λf]/HO(zD#DTN(RhbvLS^v"DiAt.>BΣFT|A' ,n.<3U+ZjOD0.pJ(d\vmZ:|lw7d]h[JjlEYH"}NIfѧPfdVE\QajkpmY ̩y,o|o*TɇVh}=8M!H&wN %VơVztcr̡ +MLcHh</ycLIgl`mZɭKL@, +O2A/$=Pڨ($0m2̀^wH0ﲲ}w0- ҫ`QSEdzC=pvS!Ӣi Ľ:NDO0̤43-}`x*t8jԹ١5^Q=㐎-sAFFG-^3tn_⿗+w+WE)m_+Tzw+s|ϛ}}+DݝmvVkӊ*}*s +A Z3þ+%gG5 ч8{ÊZ%WVKcDdZE{۬{XpPX3CdT5%zn"U QAUB%F-H{t/pgZ!n;jhQ< +kɪ,u+(/1C-$DG%#1Ct(QcWʭͪhFrYWdf]8!3סkbQzϨ9% J]e3boe(RyoQT~Mߧ{믿=,tN9%=m<ƲP~XGVwJ+UR}㟈 N9<Ǹ:0Y&kY ٜqKsry؄L2dVڬpwéþX^+fC҅Uܢq!rwVZ+Sk8K]1Іr,d*h-1᠀BؚoKۋ,沐" :y+)DMLB,lWBe1o]ubC$choTlL paZA(PpXh@ +@@ < B"P(  h`8@Xp(X`fD!{mΈ3CGg6swg!!@C'YuwQ*ҠMIRT41?@6V!"2;\C`2ШRO;ޘD6s̙:&KihX!ٹg5 l }y65/*-ބ&ʋvyz=IhƆ=\Cǚ}ݫZYaa]ZeC#^cTCCe&!)**4JE:SR>5VuUu[Xh!"Ye$l"@D #$Tgd(2>NEr1CQFRzX >Dh{ Lf7ޛ [9x\žz3wNmO$A>=.\[o*Bo$PRgށT- gD{:&`~l2z_YQFe~DNUJQ:Qû@k9WMsNа~ +XxZͺ@Hb +2=!K +-ևś8@}@w:Yja =z||5bf9ܒI(򡉘y7.֒ԕeNq6; +auNtA87ЃAvtYo xiU em,qgWY16ȱRp\NcZe01Ww4A{-0Jh+eeW$PBM}oxtdqlRNٚ#nnӼ,}MJH]q/QAյWٍMΑp&@gܜ[̶e¥V> +%Zm1zpdN!A,lk SU2A͘kje$]ȝ5U:QG2w;-E?J2:ݛ8lXR4mҎ ܕd]ME(y3%*rawփflE|p5"oeO-c1K7OxC ךODMt-k`@%a7(XBqH~-Ő0H!ŠZPǼ Cdl$x+ތ2ig~㽊\e-p> XpR$C0e!G̗]~G%c{,`oKԏ#դn{>.PK΃M}U$D`om+Q %W&^-^t:f ݵ!EC;@OZPPRܢODv h9gL꺀[\.S"gE L#ljWD,P>d%HOMO UCS(X) +2\+(JE$ o`*Й L]W`P ]O*2)8?zSgʨǧba2y/hMhj/>F#r [eH5*tsYh8CY4yXGç0;tT HiWzXϵP*kBaqX]^>o r-)JRnC'1!C"fRrmfD/+j8h=in>]@T<d8CFiÈL%KbDffY\R񮅡;hN]m`1gT[_puM19ӡE Ő/It̻ +0`޵h^D:.yz ւrV5JSm0څPt2Y8%}ݿl#am%\-Q#xiwS*m;BR 6oG7~t˗;BeHB/zhS6dUD4,%A4~:RԃXZRrEURunD 7*>v%CFýqzgcV=^gr7nYFNMȎcr(Vrr:uO + )r""7*^8?OF l%PZr7M}4 +?d"oY/8y,ӬʴB:9:r! %J.,uEz om1*L0n/XnEbh(uďĖLPHkM:5o;ضqD^e>7TqR.`Y.T?J^>M=^,h4 a f`w[dd7:AlM5E,u+CA-+Om5;{S 1!4y:l3\`7]-v`C@lȃ޶t`U̚ |tmW&i;k:zl{,{m"ꡔRE'}+6\^!3xH>XG2Ϲum߃Id!ZZFXg|uJu^+q0}A; +d +,pIEXr&PE3uRX;F +J([o4bqT@0U^w[55q' Bă (j4:'OšDA\"מwF}sێ l3O$ +E6dP.%#!d9f*N~Ғ0UsL2v5ٝ-6C~Rn6F_"U"HO} oB3Yż,vh#-h|rAM 6"E}㒃)deeV r 1Mˀc|*%9!N6"|bk`U>8 HTg$#*C* -5y${/bJ9|Rٽ^|E0ӏ8BGO[\},BYHI&} z%9k- \wږ׬Uwr:aڶl|{@/!TLK&a(DSd3%`#avuL/ӜyNuWd}eJV*lRhf*m;1tPao%ܣ" 6eγV N-ʤ܊5Q +eeELkz=%pda=[ +jD+W$byUm +D1X"r3%iesUԘۑP0h%fMɏnW`PoXXFA  +endstream endobj 954 0 obj <>stream +d3an :ZՊԷ +29pJzQ  2Hw$'<.C _;εnjR3"%EnM0J ~)h?c7-"?/`Kxr*fkzކ쿛f˨,BF>2\#bo.Q H-n1bes,8 GxQPkH'a5Gk'30dywg\մ@E/ƥk +_zVI.i y9)aō$\L?$n],rb螮P9,c¢daqP@䟷9Oӯd޺*$΀f6Gb?تd}s/L6n(DV}U5 +KspH:L ^_(uj0PR/.PVvTvpNYlQ=:'p· VWxdw@2!uO~:O{ԄR,eYx1]œ# D&& jD FGqJUPaλe*&<%gEމl*û(u+5("$5Nn{<܀5XHwDM9.E9Tq{^ΕZsav5R( ؽ֜y)&9` h5+,דyuu@DFL,aþH^B4S_c3G:ÄIV0Ib D~JlC! +wN-(1 "wY#kVrmVS>I K! LeIGV_=Dj)O<0##̐FWEPJ3!WU{ྰpiuBK?^`Fh rI~l}.s~VJ*U5Z0Ժ }њ) jhMTqL@ⴍMpwa:bҫq֞5څ#El*y:spTh\aM[+ ?#H=Ѫ䄇t^,Ь=ğwDN,#fsGp35WHdtؔd)s Ra$VIgÆpD Zg *7)?nԎo #K"}XG7RjEnqJxLu%olqkx z (طs#!J%rwF2xvUf9<G <ۆ8 WWHg|| Tg=يO։Yݗ2u o۩ֿ݂֜cxv3w'Ui +#+QSC{Ц.P%H~Fۅ9>/ Qt -|Y2&.LqLu% +XF?cA,Jh|ď"eH0W1+:ĥxloE)+MKt?|l`#t=ÙdK4g:z' ݵH<._7H]T-$)x6ɯ; pbͅ:AqvTBzXva\lB(l'M?fg X%5֜TS"N6@FN4enڴPyh|V¤i\]e$|{+eKQnNxYBms7O0J`"x$S;3ʨtrqJt[t|I qz?tG=ֵൣԩ"p/q7$UZ",ke䏟֊ +J2+O5;Y'[-T+5p2:a9f%Fd'Ō萡[q3Ȱf3)Vjɏ[Qz~h v5!Okzi8L;ղ#;w"ʢLz]G#inm[ X?2 Ũ9oğ _W.9&b.H"Ylw'_Wuo}6P3GRra$=Yi:J*T$nwc֢xDqѪ'v HL 3=܊rIZgԎ?,ZE mD42 Of0#ڮ?i%~W#JmTQEbQTpOްnZ*_aR<3(en&[~Uj }Ҫb ,~GT0Ri/-7Pw` 61b̗h8|~ҷ +U>Ll,jqf4F߭rh[6DZ o OVfs[LYG{6t66O1˛Q4`=hZZ-Kj]154F[݅lhHY{d\rXfi+L&>.4zlկ惹}\8'l, +B*k#'BiU`ݦi`@lo9T(SH2!ƌWp+0oZ/hرt0K"~ _:R*K6T_SLAs",Q3虔'@޾ h8&K@$NJON{QˀEO4zQadW]izc?==+n`qUD9(9\J.#Nr3p +V+dž"Od>;-F+,yN\)tЋ\Ӌ_uB F>TlAZ3gw @~j# ֿKqb%b_9#% +*xa;w,C6/wdB<( +Νz0aĭŊq xW"U؀>\|ZqZ| +.Qӎf *^ 45}yV#l1"U!ѵpi|V.Mw.q٠ҍ +~x/SNxN[% XtW?y4tD3HS0O Y°2iݫr :-W E'I $.7{>KWO2Wk%m:J 0PQB}SCɪHM$˂aWѢBpX2!Uz +̘ES UG=.)owW39 +~^$1_!elJJX9oχTQ-e9ku"e|6 DQ]aJ=/fR +ی]FN~2[p/oi +endstream endobj 948 0 obj [/Indexed/DeviceRGB 255 955 0 R] endobj 955 0 obj <>stream 8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn @@ -1190,7 +1210,7 @@ E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> -endstream endobj 926 0 obj <>/Font<>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream +endstream endobj 945 0 obj <>/Font<>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream BT 0 0 0 rg /GS0 gs @@ -1217,21 +1237,12 @@ BT [(S)-3 (a)8 (v)10 (e A)6.1 (s c)5.9 (ommand)10.1 (.)]TJ ET -endstream endobj 923 0 obj <> endobj 938 0 obj <> endobj 939 0 obj <> endobj 940 0 obj <>stream -H|TiTY -S)ZSUTFeFt WDq $vHB@ Q<: -4( - *!.C(+ا>T?k;{};DVS6[q7vi"ʵo׫K"4r? /N߹=bq\p?\vuX1,w={u)BU]Z*F+_(t*/:Z>kTZFo*yVЩUBHG5*\Q(U1 -M<ΒpG,yPl% - Z"V9K@c Ki"TZYvūsJN Å'+æ#}a0w[da$v`/ -[N`X >߆OVV"x$Z J ɉF2Nb'&).I2V} v "[g$!ݣ/[-,!(m_$$@[ٸ(^֚B?9C eIx@ V]ОQ5 ;K+9 -=[EvҤ|t'R&RF<$xl~ ҷ.|䒵<<vbcq2"څW!3uq#:ް?ε繒qncTAX(xX{"vJ}M<7k22\Ê!Fqkdm#׿>x"-C+f8Q9y,[^'`]?܃Ý0蠬 NRD?4P0+H=WAW\D "SWlnNŢ:k @$z/F}xkʊjSvtOAN'Ijcz/~COceha"X0& [azpDARĢ|i S`G CE6SҬ3̫grEכdw~V{0K6dSptމjCWZdJOww f9Ok:[p{1u\B˛eW+4%dK;ą1! ޹u=X)M[\׬/.UTF~Îv t(HJolCvP-*@Jj2Λ.`d8rZ.%!-^'>Yqx0.]8D62i?5TTesIj{M{԰fw~0qccJCTҤ~`>q.N|;}ǁcx'P͙h@ôɾ -xn̻sذpttڐcx ;=!7@A/JVqvM r049w-7 OqTC},WBـwLbbH9:!99M˷ϲfѩYii~ Z=?z׏o <s FeJoЌW>tNjd -+$h18fUp54S#U`krC{Y…?u`ٜ!3oÎOvMH?ՎxQ:mtImysY\4P06[x-#x)ꃘ>t 08x=~yRˡ+} )-gxQ¡}P-5+F%ƲId!DՇ\Z߶ck<_&>+-ij² 9DWL5 v˖Xxmm~XöulfZLoHM9w;3L36PٔVD`iY iV~K;(^qW3B9?#gnr~Cb8\b|)~yH en))Ⲹ=">z:cN; 1b⨻Mli#q76 DBix+_P.7LcC=3acΒ@B"c'ŧoa2o!*ۺ7\x >(R}e^iq_Ŭ0$'MK$ɽZፇg~1^}: f`=_;1eʈ[-(, `'2QrǍ@?@p;AVj?_Ϟ7 #yYW=3!zd# +Nk}'+~A߀i|4eH* օv. Y@9N瞟#}\(-hosNC:) L-vcxM$yZL< cZ!b֐(g㭶ve7Ւu KJ>4b;ƦFnH0TdEZ;yӡC -o ^ddwj;]}n;kkVOU>17 -endstream endobj 937 0 obj <> endobj 33 0 obj <> endobj 115 0 obj [/View/Design] endobj 116 0 obj <>>> endobj 34 0 obj [33 0 R] endobj 941 0 obj <> endobj xref -0 942 +endstream endobj 942 0 obj <> endobj 957 0 obj <> endobj 958 0 obj <> endobj 959 0 obj <>stream +H|TiPYA2횩jAEgTNQaEWZninnFW4t@EF@DXV<׉ٙ,|L̟"22_}{8&2pcj߬ۯ PlTG}YHr8?C5FPϟ}: ~^ qQ}{CVFE UZ"WW{ 8i]l .rETR_UFh^AQ(uV{'!4rRT&6J+C*Z $CjBU(0yD}J)~!V" IH:D[eRXP0\Xa20l6`sı:Kb0(b밍,V3=x5`nrdp#DDQrq29JI,%{$~f.f1f}S4R\t:q<,tFpB oI$GiƏK=>#!&FzCj(c5A;d?ۓ>A& D/2QWĹWgVDc7Rh;j/A:q 鵐& `79rbJ/8/ԁ:_Y[/eJ,40,"ߜ#d'c&=]u5LdٽԋF^/T~ Zl ª|溤.qvk ZX(T(7{"Nz|7M<Ϥ4>dZ[ևe#`"\ MlF4IVnЛ>v,!CkZ!aٱ,u@^7h{` ܃hNR(P77sssP H;WA_ -J" +6+lE{ދƜ]Q9)ͳt=5u(vDNl3IzC x˯|COc5haB?LG,xr@9B>ѿ0S8"Cߺ!)bWn@l 3a6GuBɄlG#iWo)pbVmI9 gK*vۭ"59*9ٍ7A0Q}Ttŷ1b珛YUn7iK*by;r=􅣛mf0QpU>vo\P`B?!-Q|:~HJgh Az PmCJ]-S.e% ߔl՝e>Z%KІ kod&֯j"EJ׋ -?dLN=&0{<::ޭ,zbH9YwEst'MTWx@oi e_C}&+'$$aל[/^ݒOOQ[;y&xAzp}zˆB]}z GσmrsqTK;&*!i=o3FF b39epfdޯs*v~x6J)62;?~|si.ː7(cr;,kV%zE3y&_6GEssϔVqb8̍\F+rj07P.7K ̞ =~v>Hi6]|$XaR>~OKGk5|!vh1 ́+j/r~$v-ڰ# ]#(~.jBei̫BTJ Go?AtD^>=N8QB?Kz{0DXA-qX{3]_%^n*,64ܬ٫W2_;]J ,uhS#yWthLV}LSWMӽ[P,<վυe3( sMtk‡-S0m)) !8)9 ʹ:srcߛsw=ffm)ҲӬ,qxD$<ʈl;[׈-g+8?(x.n Ki-uL]pCcDԷG'".3F=ibP}vPu(fsF24{bqR~ q (SSeq{D|3uƜw,>cr QwF9>nol|r.#V[\_o`{KgGtEMe%e^хESNO|eB"Uuoh9Q<|P˼‿Ya +INb(I{y`.Lt~za{^2R _ǔZ܉CMՌ2 ̔Q'R*-7#]m04t 9jg6="k<.+= =Uci5 _J** ^? |/8>b +suz vb=ʔ[/QY37Nd亏 י~@;T7*Fv~j=o jG`zfB7F$AVl?@[_:;*OV8¿Lai`TUM3TH \ <sp=?GPF[X juRZƠtjINx5yZŭǴCDeŬ!Qv l[mDˠo%@!HH36ޕ>|%Kciņ;{wl/M܈S `X`͋uwC=:M88(Fkɪ"X.qw5w(K$[׬\_ Uki_0 +endstream endobj 956 0 obj <> endobj 33 0 obj <> endobj 115 0 obj [/View/Design] endobj 116 0 obj <>>> endobj 34 0 obj [33 0 R] endobj 960 0 obj <> endobj xref +0 961 0000000004 65535 f 0000000016 00000 n 0000000147 00000 n @@ -1265,8 +1276,8 @@ endstream endobj 937 0 obj <<22AFA28E1386164F97422C0F946A26CB>]>> +<<23876126750708489608107379E388E9>]>> startxref -232344 +233108 %%EOF diff --git a/datafiles/data/themes/default/graphics/icon/s_vfx.png b/datafiles/data/themes/default/graphics/icon/s_vfx.png new file mode 100644 index 000000000..0cdbecc72 Binary files /dev/null and b/datafiles/data/themes/default/graphics/icon/s_vfx.png differ diff --git a/datafiles/data/themes/default/graphics/node/graphic x2.ai b/datafiles/data/themes/default/graphics/node/graphic x2.ai index 4208c7d95..645d05708 100644 --- a/datafiles/data/themes/default/graphics/node/graphic x2.ai +++ b/datafiles/data/themes/default/graphics/node/graphic x2.ai @@ -1,5 +1,5 @@ %PDF-1.6 % -1 0 obj <>/OCGs[27 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream +1 0 obj <>/OCGs[27 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream @@ -23,23 +23,23 @@ Adobe Illustrator 27.0 (Windows) - 2022-11-26T11:37:51+08:00 - 2022-11-26T11:37:52+07:00 - 2022-11-26T11:37:52+07:00 + 2022-12-12T20:25:48+08:00 + 2022-12-12T20:25:48+07:00 + 2022-12-12T20:25:48+07:00 256 84 JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAVAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FVK5urW1j9S5mSC OtOcjBFr82IyMpAczTKEJSNAW62vLS6jMlrPHPGDQvEyuK9aVUnGMgeRtM8compAhTn1PTbeT0ri 7hhk/kkkVW39icjLLCJokD4tRnEcyiQQQCDUHcEZYydirsVdirsVdirsVdirsVdirsVdirsVdirs VdirsVdirsVdirsVWvNEjojuqvISI1JALECpCjvthESRfcgyA2XYEuxV2KuxV2KuxV2KvnX81pbv zJ5+u9JvZp/0bpkZ9LTYGCtIVQPy+KgPqHZfkdxtXDy5jC5CrurPT8cz8Hb6bTiYEd6qyBzJ/Gw+ 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 ENSaPLp+t5Jrvk28sdbhtJ7b17nl/oUqKT6gJoCv9O2dng1eLLDxO7n5PHZcGXFLw/532vU/Jfku DRIBc3IEmqSD4m6iIH9hP4nOb7R7ROY8MdoD7Xe6DQDCLP1/cnuoaVa34T1uQZK8WQgGh7bg5q3Y oi3git4UhiFI0FFGKvBPzK/Ly+ttRu3+ryT6VdSNNDPECfTLHlxagPErWgr1GKoDyH+XF/f3cUEV tLFp3qB7u7lBUcQdwpoKtQUAGKvo7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYqpyfV/Vi9Th61T6PKnKtPi4136daZIXRrl1YmrF81TIsnYq7FXYq7FX/2Q== + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAVAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +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 proof:pdf uuid:65E6390686CF11DBA6E2D887CEACB407 xmp.did:d3d91ae8-195e-664a-851f-75f87268d4c1 - uuid:021d68fd-32ad-4df4-bb04-21ab33f3eb0b + uuid:ca0f5bd2-a06b-4c11-b8e6-7f02e9dbfb58 uuid:0fb11350-206f-4d80-8593-26b2d224d1a9 xmp.did:c1802fea-7d35-5e49-9388-cfc06b3c9f83 @@ -64,8 +64,8 @@ False False - 24.000000 - 12.000000 + 192.000000 + 16.000000 Pixels @@ -599,17 +599,17 @@ -endstream endobj 3 0 obj <> endobj 5 0 obj <>/ExtGState<>/Properties<>>>/TrimBox[0.0 0.0 24.0 12.0]/Type/Page/PieceInfo<>>> endobj 22 0 obj <>/ExtGState<>/Properties<>>>/TrimBox[0.0 0.0 192.0 16.0]/Type/Page/PieceInfo<>>> endobj 23 0 obj <>/ExtGState<>/Properties<>>>/TrimBox[0.0 0.0 192.0 16.0]/Type/Page/PieceInfo<>>> endobj 24 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/TrimBox[0.0 0.0 192.0 16.0]/Type/Page/PieceInfo<>>> endobj 25 0 obj <>/ExtGState<>/Properties<>>>/TrimBox[0.0 0.0 192.0 16.0]/Type/Page/PieceInfo<>>> endobj 26 0 obj <>/ExtGState<>/Properties<>>>/TrimBox[0.0 0.0 20.0 20.0]/Type/Page/PieceInfo<>>> endobj 29 0 obj <>/ExtGState<>/Properties<>>>/TrimBox[0.0 0.0 20.0 20.0]/Type/Page/PieceInfo<>>> endobj 39 0 obj <>stream +endstream endobj 3 0 obj <> endobj 5 0 obj <>/ExtGState<>/Properties<>>>/TrimBox[0.0 0.0 24.0 12.0]/Type/Page/PieceInfo<>>> endobj 22 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/TrimBox[0.0 0.0 192.0 16.0]/Type/Page/PieceInfo<>>> endobj 23 0 obj <>/ExtGState<>/Properties<>>>/TrimBox[0.0 0.0 192.0 16.0]/Type/Page/PieceInfo<>>> endobj 24 0 obj <>/ExtGState<>/Properties<>>>/TrimBox[0.0 0.0 192.0 16.0]/Type/Page/PieceInfo<>>> endobj 25 0 obj <>/ExtGState<>/Properties<>>>/TrimBox[0.0 0.0 192.0 16.0]/Type/Page/PieceInfo<>>> endobj 26 0 obj <>/ExtGState<>/Properties<>>>/TrimBox[0.0 0.0 20.0 20.0]/Type/Page/PieceInfo<>>> endobj 29 0 obj <>/ExtGState<>/Properties<>>>/TrimBox[0.0 0.0 20.0 20.0]/Type/Page/PieceInfo<>>> endobj 39 0 obj <>stream HlRJ1+tr5 2DGPG$k-稜 }: Չ #}Czź-\DPʜ}HǓ'XS6P$&n!~/X{wHm)ʙP$|ĬSG38"$ݭ]3iuQ4ZJE9 E(r ٲ)FS4^Vݘ]sa,:ے7@!8 ~a?܏hs -endstream endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <>stream +endstream endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <>stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 27.0.1 %%For: (Makham) () %%Title: (graphic x2.ai) -%%CreationDate: 11/26/2022 11:37 AM +%%CreationDate: 12/12/2022 8:25 PM %%Canvassize: 16383 %%BoundingBox: -144 -101 89 -27 %%HiResBoundingBox: -144 -101 89 -27.51953125 @@ -619,9 +619,9 @@ endstream endobj 8 0 obj < %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) -%AI3_Cropmarks: -128 -46 -104 -34 +%AI3_Cropmarks: -102 -84 90 -68 %AI3_TemplateBox: 8.5 -8.5 8.5 -8.5 -%AI3_TileBox: -512 -346 280 266 +%AI3_TileBox: -402 -382 390 230 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 6 @@ -631,9 +631,9 @@ endstream endobj 8 0 obj < %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 -%AI10_OpenToVie: -177.35294117647 9.82352941176487 8.5 0 8075.17647058824 8228.41176470588 1190 924 18 0 0 314 121 0 0 0 1 1 1 1 1 0 1 +%AI10_OpenToVie: -102.724137931036 6.39655172413313 5.8 0 8181.65517241379 8257.55172413794 1184 924 18 0 0 319 121 0 0 0 1 1 1 1 1 0 1 %AI17_Alternate_Content -%AI9_OpenToView: -177.35294117647 9.82352941176487 8.5 1190 924 18 0 0 314 121 0 0 0 1 1 1 1 1 0 1 +%AI9_OpenToView: -102.724137931036 6.39655172413313 5.8 1184 924 18 0 0 319 121 0 0 0 1 1 1 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 @@ -646,457 +646,420 @@ endstream endobj 8 0 obj < %%EndComments endstream endobj 11 0 obj <>stream -%AI24_ZStandard_Data(/X -l mbN@"73r){" -[E GBP,P8'‚X0P4 - +%AI24_ZStandard_Data(/X ,l mdLju'QG|[SdwL_  焢qRXB= FBxB!4Lphn0mhgLtnhH~3gfʐs'3xr.r + NQfXo"BW+M1u͍/4RH%+ΦV`KutT q4,Rx$ذ60F1X8P$0 gɄ7X;wPkxX +)& W:+49l.jRp&h8e1f(F|u׸ &sxԂy0 +_ i>7h& Aj~8ΛLiVUeV ڗ5!K~ͽW3z(fVXQʐUYJ%o|){ws;;ˉW 7`8 09n7~jXByo"GFV ENs7,-(Ƙ > oe9Hi <*ߔxiK(~M9ᄂ eI( +tE + 4F2ܣڼhy򳧹^SYuVtǻ5F7k#QO39ƣAI( +:(;̄h<J }xa~xNEH(yN( ώ? +in*,ǸE)#=G5jP\n{tP8Pp4 +GBX{GqL( YG L(V@+h!1+)s=dcW+'{-,gw2mywwNyr9 =:^'U 9 ]窎211"MgO軗I(8H(.`$cz&;L(1.80  Tvbh8M( ݂  E`8Wj0n4ڣX, +,֊:GB`0QM(cqv asdBqf+S ±PX<5ְ)6-t9bGP+rqU-PSH++t"C +  gDL!+PT:]hL4c" I(M(\p JFB`8 +將#Pp_[BAC P8.Qݲ%#d,'hBa*h$i< E#< +Xǃ9̋;UZ)=Za>p裆XЯiTaGCh8?hP +pD-l6긶efaVPDTdtP$Ġ9A +4rQUY]aeŨF9Q +5Vư9a +P|tuvwxy1q{ 2|N6 Esl#ާw|_\ ZE.X,±x, 00013 p0 4pհlp4 Ɛ8:tܱp0 p(8ч=|pBl + BCTv l$Ѩ#0b| Rc< GB15= +;/ EPxL ++S + 1 +BCPX(, +p +` +`*(<h<?>azчh8;ҁsU8Fh,6Q J(ژp0d  FPX<EcX0-jA.fguzBd": <&" +1nqó +sXYYMF-jQYXVUT9A :%!BBPǛ6j2 )< /H(^8h"X4zVuBZafp1b1ab?NNq&1 cq'PW.}фhE'&׫ՊCa +yci c&"w$ <`$% ,xpyhx" LxhpxaPÄ DL@88@ƒ `‚"@" .y &8d@LX +@@B AApÄP bÃyh0aaC"$<<"D@|"AA8,XQ" @ȃ8D@L`h@ +<, "`A$ 1 <@@&b mЀH<8<`xxPC $TH(L04H(2hA 4 @04hׄ"b !@0<4DDdРa   4V AB 4@HhP b!Bà @p<44Bp ń4@*yD4@  "( .рA4@@ "@ ,Xx ^9 G:hWGBqFύ/ڸ**C"&;hUkU+CeM /jq+, 1aBᦤ G,FDjΨ-#gZ*Cʬ7@.cF_ESr8`8ADYutц少Lc!6/Zu^iTV]j|gdZHGL(ϑ GBQE#d#MeL6+EmK+O*922ćYΰUW_ױ[ f(0K(p$TvGBPK( -4c3F1?)CAA!C!@y䃒h ±™ Eɽj0. -LBڠ¨fBP<18+rB$ L( F/P`dMBH(@GBȡ^2@BLB!H?κ6 BBAPaB_8P8S'eP4B)/:/éh # E0p0G!MEH#{F-Wˍ[BqN -' -FBxBH(ch0 08+(c ъh% d 񔹞|YO1+;e]R춼; egid¼ZJU؞ne/VsUNrUڍ&3'C$`$GBAe_01Q&GPPbj*|B`4& EBaynAp0 +57p, kE#x`0ƨ&űQBH;0928)BBX`(,kЁ |\w:ߜBY1j@ѣH( -`8ҪEڂ](\)㉕V@jq*@! $Q"G:S2F$U&hNW:MH+&C - - 8`#ˏ( 3f!*3RhDĹSV-?QU(i - 24G,J̟; 9pʆKLc<[KkFzː9^˕]i1rĊƃ  - 0L@|BHp$92ēPhH( xbh<z0 F`,H(81Qfx_-na𢋄 -7XW~xfBAI \1 qk<fe _Y%UT.7A' BBH`,PP,8 P8#X< -<#W!Px8'> -F&i8PTZ>"CJJ: -1RV ǣFF EYY.a9kYނq p3Ǽ E2x+.AH( Sp$ -`K(h(t< -%[Vd$Ea$M(LeP1#hqP8u$g\x yQr -C 2RG~8Z+Pևn}p0 1*cXy(8 JPr͞FC6l> 7 -*ӂ =HZ.*+ע(G=Jj6230=L/85qS1@6ЁTɦ3|.t#r3޸+|]xAZcX8"Ff82qƂ`4ƃFnP7ƣr@GB;p8<=?QMpPh(8Әʮ_0u$P/xBQ -uH(GBa#h8 -iBaSa*\!pQ?Pp< qG:qsBh4E#5A EP`<F` d(c -±h, b"E-h,xNO(B>ґ\ҲٜT@6DBcqP8-nqyxvu\B`kXvC;+##)ԣըE-* ˪5 1A$"RH(^xFVM! VP4f]ϪN(\+Lq0P,f1Y9$5FC `,De>P8m`tĄzZ;}(LB0q1aL8$VNBQ"`R $ b x`kX $@ &D,@   8 $HA""LX$@(h` @hD $@" <8t 1 H !B"@`ƒ""H0`  D@Lp  &,8L`h@BD4GhpP@""(PB   -&04x J1H( : 68D" ` Lԁ < \A l a`@BA $AB lC @@8H( `0 E H D4\! 8(@ -8@B p@8LAp< -8`# p<bpP,%:a "6A0HXBb!B  Pl 0,44D`0ACDH6xp@4pP\"a!""<4` 0p0!K2hhA^<4|"JH $8 $4D48@[ &@@p!AB񁈅  ,DLp!Ä ` aC "l \PL@CL@C\"bA <,H  8ACdCp $$h!B <8D@D考 * ] IC $4LN  - 6 "@D@ 21 Pfx "(,I"sS<8\  00a!aB%Uʒɼ%6%$Lb8IYNۺ -b+ 48Tb <-p<à   .h`)]ou'{z_3Vݭ2Uu{j脗xx& -'dY~.efe{כRT*N ZY'oadYϖw^w -Q|CZzHWp''QKmM)zrtngfO)2Wږ2-2˻ǥTr*yJFwy QI ޕZ nge.TWfuղҺ=gZb3nzdjexZ:ND]w=oYƓ>W6zٷb݌Ynb&DƄ3ěBc>VS*!rXbn*ê&ƙ2͙}|GӜj!z9Uzde9]YHse,Ǧ~RK\.3݆-јI 槴J]i*NvWb[*_iklNk4gVkK6%birog,?s* |62:ϙ>vgwyKX)J EY'7ϣ'6=37e\s?z;:Yj$8VY5'^dNzd:TM:dZj[&7n|t^a }RL穊v*`ƷO[J|T{Y- ;dUľudw&ɜ%$srJ*}e!1 -Z)ܽKQ)-~5yo%wK<R3DoVlJ)>E_ykʼ -Xs{{EtޯЊVʗ}NHTu+HRUsN5S\M VSjbѝl.U!Y*VYFy}ogJSY,;3*ûEw>’`MR"g{Z!Ur҅iiKڧܔإy9r-zE&*+'_ҋ\:i짜P͉h+r&װ)J^VٳTz&RU;Y|B K^XuB52Sr6}qDY^MM)9&D82l%F~syST%&+35[v+Ri,%x3;-%}ow5R`z2G]lI&"KS&ώ/h ]I9J,~Fbdݪ&"$B띎Tl%Vv&e ^Y?YzD+9ߕzkJeU&Z_wKf2Wk#Wf}xL,vV/)HdGʺӁަ?t-wi* KWfKMS^cT^ W}I$h8eV:-XJEeor4 f5+3V<;2WAMmu|A3nV&$XI:.&2ⓖʝ$U9 MnKK\)MR_9I]~TlJ\jOՋ|jRFlSFuW!Vγ&`VM{YfkfeҌGսZJjN S*8"ҽTb̒9<גSR1wgv -R\K\Xw.A7xKS􆤃ˋFs/'a)+5yf{_Z{.rdcXz4S;*H&t"X<}Ҧ$\ZZ9MؕFw Vgrb/F}rV3عhUH%QiڊIaY"?=$,Ϝĥ,,* - 5KyuLl˯]3&ҭU*gżW!šIIMrD* N}.TZ.M.ˋg*P|슍GK3bYEN*&{A#,_xWzϯݩɬO`ލU%m99I4I.fLHx+v4#=kW;dsX'tmH&WlQ)T$":kh7Ut1Wؙ+jH;gs-ٳ 笼䭹5%K:}tZhT׫%*YR]i{/+-[3)*Yվ*c܈aة^}UnfOM]XMrG*fb,Y"7=J,թ 8UK2Nf$BFS,"&iO44 K3b[]Q˘f -N7cNK'K;EL4,SVZE]]}GC^eê啛E2J{z/*2/J:=XF,+RGn~&G+ab"ey?*V9|ÿC83X4{U5-V_2&ɴީ ^7{.'莥iGGFԺU݄}ktvT{Y.Z5vIؘs7*-V9oj˷4~ uzHM3e~Mb󏼄G2\iL6>_]ٔ""rao9|V\r4 -)v5Mv4;=Ч2m.˙PxteIKx})"R31uV49-R%zQԷUYQ,e+5ᆵJM1s=mô!N1])$O*+FkVו"'fY^U S3%5/Y>MBG| {Qy%驼7sT*řCCbLڝ# K9BYW|TvGs44%b;Xuhx"݂N"EM1a גGnZtY7HiGo%,Ab|SArHfs3v;I̪j -i$Qa[V{ZU/uU/;bDn\&oS/ϸ2jTZOOW-'W7IV`K[vqɓ f&3aɂYی9[`od,9wNYm*eӲJ.-X.,_kTXP -ѽ(`](IҘcd;$JRınjHIS*7͢k+Ő8b-hVgSꄙvF5WNpkrsf1{ygRʬ97g1/! -x@"84 x5v'$ &40 ,`4hHx0ᡁ!2pp,4D#A0@0!&8@xLxHR '+^1 RΧǬ˧3F( ]y&<ħ;U6xX~K2mv1 ^>6BDV.wBHg*R]NzuwjzN6DEs(ɮ -Sɼ";#Vk记lҌrI+iS]ՈV9Er""ϡJ[P9H+֣ҷ^s?B+uf~}j}q@Dj.c"UAMi.U2f7xL& &m,]6gR1MTvgLĨ&:bJ̎KFB#<+Vyw+܍bV*cT@K-Yek]ɮZeeW6k !9]YY1RFsD'i:]MaJ)1йˮ,/ϑ$E?_FcYu݈X7"$4ȅXD1:.>bi9i6vfuRb}ܫ% -UO+g'K;sbI3N-*V&ʞhlWߕeWX]] ]޻O+8xf吲sWnjD]U}Q&֍fœ[rT&[X9.2tOYp25=@8LX 6``X0 <8DLB*@ljΙvXrKJ7~ͦrFTF"ZvTVUXlY ^͔{ӜVC2s|zlͲqelLxfbvl?_H3.zVflUT1̴,:;VT6Oș~TXZ - gk _kf.c7BybĉHe3CyVV˶",E8hYa N#Z_ gYaaf*Uݤ>s Ϩbl̳*YWМ:4Fc%aцu)XjU%?*EyYmeaIl -Ѫ9e|C}V2}%ȉ./b6E2"9S --KTRgNS}&m#pn-Et%#ݑ 6IFg_ҙ5׺Uq8FeMN]gI"WWf1Y1L?W:25v;T9+mV@N)DF.h{ Y*:eⶈnVȊ>fW;tvBm/lӐTVc!>}iS_ TU'y>UsWDƣ2%,#-Ӫe6&_>oщF}]t3G#̛eV-5aet>'byNGY{ZgH2&5sV<ۡRt+z0m><_v&MjY/tEY+i,tb+i$OyADvґwn)33$hLH\/Cue+_V\6Ce\.SƉcU/+~Tdԩ$ֲxC1!^M Gxq9x5%V -"!էsžPً'>5+ѫs8c2yRre=9YU3C P{4ث\-뮏U<1%zy[ގ.<#cdTv7uf?sWƒaaMR\ϻ 3.~/TK7׵X38xrXeѠiyXK,Tﴊ}9ִiR޽+2V]iĻb`Ӱ5TVc͍K [w/%/kʐ+m»}FܲjR7'UB%Y7i?Nˌ -k貰TzΌ]I^Xx3u*^I[Pa}.+eLRS)J 8< EAٴN~FX>F9Grc@&mqL+!`s0㸕TF2Acm5\@ӡ}=,V}NQ6 l/|(Cŏ\aoŭ; *B/fs‘8#-!==i?DJ?(C^tի`LNO'51iug'*IOǺ{2@9 ҷ-6}ADRIр찚FY'Y 7HIOZ -fN[xfE.Jľn#8j xGM%VsH6ݯz6l>u/ |[k*l IN`1d@{n/G¿ǔ]cXRXa|`W|і+&D7e,/b/T݁Xym1x5dm޳ODC/p^1V?{)f7 %gAqrl/1jiiU"x 5HG 9XpRyȐ!eZshtYay =%. -IJOP*ap$쒭w=lQ'WdXC\^`-kPrrhfD~9(!CTRx`bpi5#Lq 9,-h~_խ~p?X8 p/i,Zî3 -! -Uko]4<͊q AFRY9m=AGq 3XDj\Ylux_##fp"j16?qW:AuӮ+ pVA!mXj\' 2buCTݯ:gp}Oa" l# #k!×j}?r ZzAH)P'v[q\y}bHn`6,ip@0Zg`T>hۏz-FEbD.랅)נ4H!o{5xMG9 WR*ߒ+9dߊ)et0c4 %qvW3 Ah~Pus`[ -xis(Re̶[ bi$z#dWUzCzRx8x@7z.rߓޞR x`!e6n-+y_.[pG( ˱[5:X/J&y9" o1Hg-,l})wW3 ~*SxK)e~pSJ -K T]O8&b/I_#tݕ7FA)M1Ct&ӉSş,(8 lq\b(tqf6fT,_c6ȟC9faBȆ&K B Y RUK5&v5 !;؎"jNH}NksjNs᪋w|E)oWWZ"(1Òi~qp0#>!t몲L"<~FH<[iT݀dks=\ԉ}jw4u0 ${Lx";b7Bw iB=VR,Q##cくdՀT!rq/G⪡Wl2naW/[u`c -no'|0G\K3᪲#-m-83֠)ЗUe2C:D%\Xs{- vSG;z Pޭ V.h&|hna΍!bPNgsAWGhyIWЗhQqrxl#)uj͉ZXQy1ud:i`arDuԌ;ZbiZ3: cͿY+xzmV>`aFEM? ݞe5cͤY>gMS5bGO*al,KtI=J(rJԓ~vJ ᚇ 7̳V}j'A\pٱY q^+u,[zp'_ZU'2 i bu"l-5#.c"U娠o7cQ 8] k/ ٟM .lW// r7Jt&}%>( - fP=//g'\/V=ֶ09>XktSD^ĦGZPl|VbԦepVxcey˅)B)g|鐌K ",xZeYjԍג}`X`Xc7^dK~I? E;vUOO6%L9V@Oxn#!0L˰ a;{ɘa#a?Gcr`{ߑ 937FB5Z`P]1$c\8V 3Yw]DZB4"1Q?G~xB4k+ Qz (܂8$?H `xXH;(tEF^ - WE>7Zu2X;ܐ6[o:m",ȞެG8ʌ*:R0ǦBW5Q6(9]L?QHmliAep)G飺z>an8"i*r{ielKXi6 jcM8hs˗ Lu%|όINAi'$!IߓWXoP_zRs#L耾@I{,ªReiس@nt -(wfb'I\V,sܬ0eA\>EqGZC`|"ڙPP\IòMS M)a`\ѧ3ɣp s @ϸv-dQ=ݾC/X[R ;ͩ2rHw?^zN6\7GTO ޼Ff¸+T椑~+~-8ҁռK<[0-8(S@Vi6mfdWZ]9PЩcK!.Ic"8xdR.?K]t*NHANG`)ɫx4ӺO2B.Y6Dnԍ,?`E!L)AHu飍|Wy )1rRM[ǰم;ޕH5R"5E^Vboc+R J|Y=(IZbA]vS +C)B Op靂>wl9ը pܬVYI[N]Iҫi؟G0(SK{cOvzs؟H-kq͐Yb~wgIbFpe[AOq.q>bb e*.bwpʉ|izzD"=$_a.!,T{)C*ٖ tlox F_olah_CaX`0Ú*j<EkMsU~k$;N;3$9 %ˢ2٨:.$Oyd2<$Z$W/_b-K^;nBVgF'8hٺxۮ" cj@rdpfyIOJS SmsЉf#_ܸ!C\Kڙb)yl{ho"͉(DN~dQ67_dr nCЙx/Pr!m"MNd25P"3Ce'o",z#[ܛq77).1`͟fzzd3GpTdxW|@c-CwSFEؿ=hS='  gH*tȰ@"JgI4/3v{zBL_YQP* j :iF, H}r5Rd.rЈ魙anLo](xXb:VB$>$A1FJyS!C"J\d|ǕA~W~ުp^Խ[\El&0 $6c:LBV6+k 1*uTB$4' -4 Oo}Py(PS^%цIB3ڻ=U2}} D?FƨO'$$|)2N ),὿Mv| _rgdžqdpIPN(P;Dbdec qVm6q k+8 Zs -mP{ .4'YcIo=gDP\\u8 GU. ʐn(-;lKh͵X-tkbyrڠGr1~ht@do_3i -Omׇ UJ/j'y|[&;4F 5?Pb$hG'dXRoi|>>>X:kVGf6֚q-+TEu82lP;V2ؿ?i4m^ Ѫ@@}vǕT[!%1ܱ][?nt1JWWORBMYoahw& Aڤ,Uu :0#\̘cv1OG+~TCQ'éCלOd _ȋҩ0Cd2e9f' iջ<4Be-^rl5(q0*1Ø6"wGK^0~EvXc!y>^r -4c{8.G1hljv.hխLLS](r:H`5ʐ^(n]Vr7ZtVƯH9>GJ -$8`Z>!,EY&_C6ER*9g  F7Qw')Um)&:c];o}ZEt';v_բcFd-?'h*aRNeJRC$D́ ]TH-|tɎ1ǐ~nR4kY{f#??^w0hnye{MQ\[VQ#re?~YU%qEOz>SC=wK<[oh\%8Ma;rU=Qz19fEGhqKx5ͫ">I@|KpHm~{& B(sUUٕ6@yXscIψl9 B \lUH>-9^|jXQ\ n:sJqR"7 -yΩ%Ƭ (Ejv=Q0FY[y"[iva8F$L\w7VoM^Rgljx-攉U43u]c1ħ3 -T·[eo )U.p)6 -[M&}'J6b=S0$Kef~b,qڐ '*Y7s030MmepYz_;DJp9xt;y^rr) du^#HzF0ѫ\4K*YY@>zmo 5: I>񽉞ie _UcmBzA:._ $EVYW󶒆d=ߨ.o -/\DaRaccfoj4F톱7]OC_':Q}_tˬ:5|/VQpRP[#F5;Tmax\qEuEqALJ %4.\Xm50dv6&qɤtqjm. Wց 80BMƩ-fh:i\j2q* @+Z.' uAN -+L( Zv9l 1n0CEI"=ikN7*HE(WXB LYD)HU7R0 NcPJh_R{UPeŒ{B|0AoҕJޔTf'RS2U@8)qy%XRIFi#4U$¬~tU2,>\ -,r5l"dX;Sư9teޒlҚɿҨ9L^RlEK.H3lkIAV4mD&X0a]Ĉቱ0,fJֈ11K:FGnDO$p9(#vjN)Qp ݐ[]I34I5gxg34?OC)!i&T4,:9"Bʚ),wy!`#! 8#-ű*c;~2 &hhaZG0lP`dd`qvbz}9aTq1iWDjAq 8%ftbyIdNz~-CFjRX#;!ON^˱ 69=keWBsDTѸ{t#=ԡ+D:R 6(vuv7pkإ-NetO@~rUA jsio3" '*羬nsRo7x֙.jA/B,.n0IO}[{7mQ۴+GG`s۲D@^D(Nv͡$rzp z⛸Tta3\sUںIMmu߱0DR~__mT!O |6dwD`o|PԺ,SQܬ H:LœhY x, -퐡'5X ֠E20φwO}∘7qHCڣߏp&%ujֻ˞\|" +}"1Έ"KlLn.#1mſ&P!M^UPoBy{1W y_*0Y-gS7{>MidɣuM62 {k[dJl04rvi< ~%p [ɼAR3i -`,v9AA=\5NiWѹNq -9 -dNOKfa[d qfb뿔55{ɗ; 6x/ZJ,)R Ce3=Y*{Bd-^ -;Eplbڧ.ْ<]ͭ[_.2҇63JgV]rjԜma`i7<tE)A>g?0]nw9Ut ~Lk,*efFj [͒q֜r!w6:%N5+hWR|JM>jC _K?Ayd9(sU]YT”xW)1tӶP=Uƻ3$M1d%އVM^Andg*P2H(rC`j#q - REz+@v32)lg!N<ɬkؽH& ThV4&aŰ{U|D *--?p<`c@#Ɂc鞇AZbX3RdUbS'Kt -UJ35$+rJ籑rnԱ9,PJL9ĿJ0VlRov^QôCUT,sē[WtIUX0/ A T%ew(g`x!I,ȑ] F*=L$ ÇXT,Z*A4s@r? ,ݘF4>YCi Ş1vgFg(S:.r]Y;P.DɮSH$*Na7vUf4D-|T7j5Ew{ &n5%Oa -Oꉳ`](xr7E,]6/3ۢZu,4$ՅȔψw2E4|j%۬BM_fBt8)`Z@7jhB,p4:[JJ=!B1Q%Zϒ, XN_P̌N/ daÂ̷ (02)4NFM!LNttb VPqV>I3LZ[ˈ(OIxJ3H|m&D \! `#a]Ai?g=A>nch.w@߽1-Kq0 -cjoQȃW(x ś> -gJs1M5Z3IKQ;қ,7B#5b2)Z2n*k@_4B?^tzF*ȠtL59ʱF…Sn‹]SZ Ll1}5M_UЦa]58OӸ5p" uHSUx@ iMM(A9#|i,O+?k,AʠĩKv=d+mTn~$1W9;YTȃƮ)n.R, PHfI};91:"s}J}TC?M r`^ch9͛2>4n -\dxmNMVGJt*1=kJX,P -3zSR_R|rƑV-y*4N/ krVqܗ=U;P<ӆ^Sݵ/ixA-fcBIK8D0n~`WUTanu2?axw-qg*a8Y*u`! -K>̫AU$Ǫa1&ߘvtŗ\QXWS:P~2 fߌA3!, aI(g:ՐxA26=,& mAnlHb!?DȡST9ʆ%TbbwE!fԙw=R-Vj6ZWPHV$lzAhv1i<G )=xE\ H7; -%D1ϖ9h5tGILL1? ^"4{nl}]|诺B, r;AmxCߓ5OZ +$dWM-{7!)=~ԏ~oG_(Xc@91% - &>4bMjEbSjř|q%tgDcZN¸Qs"4CsœjsB~1C#ܥ6VKaqD+%q@iV /{x zbeJמQ'dR̂@:Q2pTU'S(.׻di -%B! _N޷B;z41g/LAV"~9Q9df4j3S?L0)U!XKT%w 3[&Wmq$Un!)/}hP!ru~]aD*Po۷]E!?aZ/ Ii"<7P4>3P'?>Y+msrTGVwɃs`"P?5('X5Vv$Rݐ3 ^)Aqq~(uGn;~<.uq -E~QGsїA6%k9%(.&V4hG͊Txu+ -'T+W+{37qL;eҁՖ,)JnM\\)̛*p/@489ncBPh4pTafơDGC쒺4MN׿z]Vy]uL*s.+ 뒂}vc~*a![P)/S )e y޸LX0ٺǐ~͐c,QRh5[\Vɾ*rRwuFP]#M͊.3{w)TS+?HkMy '^Q'+U:5N$!4e- ]$8B;KԶ ճ,t㤯Bjp;'%[(d%4=)]f ~k阓sW;rE_rJ^ -'65~M\fŅHVNݱ,f=sc'5x|_''y͗pYH'T;޺v uisԇ!['ƷKz!ĸt&xL68G"8zy2䀃hFz4-BKuD ? e2KPvE?9`lQ" 9yȀFM~7J/@X0@Y5`JNBO(Vi vkFY8!E[ &) 9e%t}ZX8C‚?c*; I1ms3I9abFtwo} -D+YSO=r9FѦpO^ qnS@c|pL'UkI:;BPTd61wS?Jdp/k_h>d Ay2@p7E -:Tm>. oš -nA#l8%yqXiQr0k݅e2+ Rv|R/KN``Xr0Z,vO)yjѿ@uJ,*ƍ7^SĶ}5 Rt%Pn -z>e8Ȍ"9_7A}]+Ƭ:t*xcUkB{!R͟D3:LF&NMBh0NeSֹg&j1ocQM5 w$[EfiF&."j4XӺ©<?54Q"[@{!c{ Lhq sž ǀqe2ʰq2& -v_@Oz'zQНD'*~e kXy>OLۼgo,G0uo>-\P}C+^e6)CҎ,l+w1Ǟ?mƀQJoq/ya0&Up6ןCfq )#3²s\p2ԤMUZwގ+A7IΔˋ#WIY؀JU`kxDƶ)AU6v4s+6 M4q5'qq;`W6E L9г6ڪ!iBS~*F{zQ/vȎI@u6wLM_^ӧ|@Qp󅞈rHJj*]ݮdhsꖱ!e׋i"KCm$܌|H1(NUa3 5sfRF?c>ӡ\}]+|j1 -<}*b.0in8 -tȓK:-3Ԋa6+^R[,Gc}EnH<3N&y/ EHJ<~UlJ:[l/wz_ -̉;֧sM;'Ucy9>]Y̓FAA82)fӼOrzȸo17;nc52*/_J e -+8__-F zZN"u•+ ԻTwrQr -ܜ(pPNEX܆ A aE|ʴ&%Uo|Gs k̃Ie7* ='SyIct :c>˒Zuetu[+y`O*N2YVd'57Tu( -0!'Gs(q@<慡12hQk>桀Av@()KwTC2Pv0j#- -Ydn %61 .j2?"lp&5 -M:o>_y!.YOb}]wf- -MSV\hsw/σ\m}ȥ݆*D- %سǎ\SrתYdxpHo ˒'~ADWx7 e' 4f.e#{_vvwŧ@B"T$. t驞Nux@ҋ{ؿwuEӠrםZ.קL"aǼF!r͒O$PͻN;mu/K:,=EtD>tՅ V!4@O-b;yR.k5DBl߉\R!viJXrKn`);AsݐI+2s'K:b- X}BZ7Tzu_͕&Ͳ\m>RZ 2-((vq0["9Elܾ< x{Do5W{幅;E6[HeZ-DrZ/4"<j( Di׉J]@h {`ެO3m>9+l9U.mڂbi0>ˇtx?Pf(2vmU4\z@LC_zo`16hbVFl~`Gn0186 y^4buMo8sB yX1B:.z?V|ĜB`[Ő -r73dR&9/CeNX ʃc)WJj#yg=,/ ]}b> cS=bDLqsWZ^clRғeMx -AQvVeesN4-v͙Vw }A?} a^ !|XWew|v[FLQ teJ9cz//1$3# $<:Ҥ)G+R@AQOwhsV x5PP sq4wJֹ l8{_0-+ %Li*S-e@1xE 5^j/5YD8хǖZ[9+i{,Q݀1%tj-c ͉P6Wb馣Vqo8ǿ5ƠZ;TISn7BT'`ZzRr2{,hEtSk7R<-ɤ&M<^j%7nÔW,iq$o^ekBC?*rr )e% Y@du n91h Ժ.`VtZ b#y̥cAozR_>6`K bam4^5d+8Bq 5QktL`%a3O0;xrklyO LT^=IfT.km1*RQ#ƞL014TdV.ys&nn3x4\ӹpm6Wΰ7gpzdI-GyS/\+J?t\@urҏE:[a$oE`KN^Z^ EyJUc^YS?I&P+l9I#:W:5;T{ T!ɑ,*╫:x*ZpXWV ^ℚŽ{= <rľu!'ZKmkrfoհL6YY!0哝%j q^氾W_=w'U2Le VqwHɛ6 uLgᠸ?A=^9#mK^O%R\._p&F3 \#gFC}ѩ׶݉x^21 {$OT`aLaMq=3wt;YH^O^3mWj/?uEʲՊ4 T*0dBA!5\X@e+H v%,NHesnl~Ne]Kl/pʸ€7hne \z؉uZuo'6}zÌ|IZΰޡ , S!g@6ԡtCuP;_/G g&w$HJwA~N?(";nj&|`gÌB|+|%;&s:_d#30u^ݏV@AH8v[4~e=d9n$`AZ@iuk{68qYp▱nP1ݸS_?qewaLZfl[^B (@AR1~!oGOc5$(q!_T3%Y.-~&GmEA3hof73DPՔ/_zPUP8{Њ\.qѬ~H'/]e/"y'ZW6-9lv9"c'`5$!#":"ز)Iah8w&ZV43bii05+$2·!.¼npoXܟ@ʁO]M1zl]aJǪU7(mXg.R=]W\0(Z.?#s\P8#Wq6.p:ɾ=TA[ ~gT3Jk~}@M"[a ^q2&}D@e-y G!;,^s0hP.11SgVD 5FmpjhaXAwh'iLNyȻUfSQ:aN !G7򼒏p6 -2W͈BNӏ{%<[V԰ly -nb7z`ɕ{ڵ)r ύܫ!;.Ufx&&{Wi$"2.$2PM4;`Эu֐㿣gN/u) qp؈K&y2`ybRʟ,4HEwlv[ŖZBnna'c38k\]Y*VJr/[CQ[XH"'7)M"X"^ΐo8!nY*S݁`.=3 $+ *)Hj`ʿw7` Bpa2o`̓K>C>zTDLJ́mW [+zW\h-+hy_cY YIAHLHD ;o  8SM| !A<) c, ݞ`"[s]BHsS q2..UP,Xr?q63r6Ae` + -] S;H=d`>.}V!@^P n J@#>DOg-$oGʩߠ:9`gu} A46{,\22Up[/[ߚSr`y0 9qsiTsZ ʴ܀rNnΙe%f yx7<Ǜ,S8oMNuKQgOuC묠Q@oT?>+Tvzǹ)CfN2^P!I'h"knR*]EFj%kR 0kAg*-1"LIkSڹ3q}k4+*돪HsЯaGˠn!/80k!DUyя 9a -PR~2->$dwXKkH]VaȽ)]%iZѲ-Go ߟ(\Yꤚ}JiF c/Ӿ.B3j~<]\g#p%a *iEt=^aʪI 30dDׄv U0Or\#$Ir O6+jMu?HUsŜJR ŗGyث?xqd/h/+|U^䮹ofN9׸:v -E8]UK$%DFdQ) 8k$j/U@Bvq}N߽f:'uk!Qx^N*`M -U@(Q,d, )fH C񽐙Iltn$׫fvVegCsvMߏ4_3QoYk7-A>@(J 5!Qק -āauėt ;6'0_q͊ hyr=-]E;sB 2Q^·> dbNJؒ:O,u>ݝht z5`QV!axz Q4q%$|Tqwбoee=jX1DOoh2w+j5eց -__| ­&eAHA -%([0X"`^v4@qӰVlys]piF׹5n"Zu 7}4hIp̠ !V,ixO=ܬ"^[<>f-sYHTg6ic,6O?퐾\*`!626c{ne+$ +΍x)(qN4 -%B&31ת/dZot }oe>QڀbjV -;&%Y>#@Wuu̺Aux.}H<=h`}oo}nϽLh -3S_z>8􃝿IEvFz.zq߼FudЁ?X;!)Ӥ  ֺmluae YEz5XȈWS0_9./L`Y|n" J8{jrQC+=bwXꍜ29wbo@r{ ̽mʬar[OP1s`i:K4V4sw.vbqQK$x pXŮwNK$5 -^v;= -ʃBfDSz8bP\}1R X靟l4B[;>22!(>q7MtgMIȝsh\yOIO6>Bm0͌;=A8 z# gvdX~-S,B)dm'>ρ䗉8z~& <=4SbT.닏aDݗkLA &U(Ka7"08*R}myYC.ǼC_FZap(8#G[I|佾97.^ |NXL8@kjGøil*V`KB fshG8)LI&ֱ\`T7LLeAf 5'#]e / 5U[P2zZ9L U!$bx6;l,^{Di)ŽUAPm(c%cq+vE{VuxϛB.-JJP6BxOvUrD&bU\R`*B)0D@áM9bCyd&o6aGfZо}UF>J A$%=h܇ ;hܚ, ЙС\hEQH`QŴzЃtFef5U{l^^«L!P&9'/,2^KxN2C9LsNIG4nn!d%pȦx GCC~J8OX^l!pu< ƿ<"+q6bTŻE:[b̘|+%-+ U 5 5AJCAjJ:T T -!UT^5FՂ \zŽUFjSQ鈊-^ɬ"5Bj5C-HGɧ8(5Y=#Syg#@2)z{[ + QP(b 9(I1E`:PJ58Pp |9V $0LS2B B0DCHR9VSPB0TP!QN_&D4IBg0 -1"Lm #a蠃%pFgD,ą]!$DDI5*Pvԡ !lv9 6Hm^@5Ц)Ц fM#+B bp#]HhN &TC-1E d|GP OBw RvxńY^/^TTz`: 1#JpѾ%: 㡊ErǸJd]ٷl`PA( i=ZV*AV?:LN^Dk ~. bS)ܕ/9 R)AWT`[?Pge(~ Ų^0!0 C`50'lڔ܋X\QڬqF٣w'&y pr13&1j6Dsٱw"glfːHsP鉱ܬYk"9Uf"!UBkj[GV*!ODBHQnEeP}TO5e(Zj<1СZ#ղ8jQ}SzձHWNFX*ȹXY9quy,LFB#m`T q,N(ȟY e$ Y^VCzQK!CoL +<< &,@Pp5?~;Y8D$PO4X  +  <RAD"d2`8p(!B[AÃD,@ "B"LR  +!`X $AdaC   &h +$D@@hH!  2`pP@ABa.kEB@ I:-jH%`X!$t%4A<,<@\A{m +&,8 P\p TaC( @",\T@ E4ABDPPL)L "&HRAĄ$d +@Aeu=#-vEB˹+;"jfY~Urrb!N獬Vly%?$ۓZ!C#N n#3ժz&xMWmD3"rjLwsv8evx[lbvRUN+URW;ЎdWj&/},[bΠ 񇅓3_Q4WJjXu^ɶ5sbYֽz!T;^ikp|iWOٝiHTceVetNUC,յ]KfS66U'vW;T7TO4*fюtiUN&>)]ou'{z_3Vݭ2Uu{j脗xx& +'dY~.efe[=Ma)*YrMz,IGxg;Ow;Y>!ue-W=zaإ6CDuצ =9SHv:x3']HX:%)'_YY`S]%˾ ΂m(KFžJI齱+B;fȕ`ov&͞S/5p^6DU$t4r.yfͫKymK}OUy_TR*9DiN^fqi^]]e=rݮ,M cdKe%tX^tnh~ؤ[SڋxԴS]kDُ-{lϱ^ꔾF{fޫʽfxdS-N+vr3bm bng)coyxwԉ4PQ͞%xy»K~.cϙ{hY+6W9]Y<^>)K;f?崗]hlND;^ 3NV0'Ȟ/%Xғ7j﯊'nX%R'$i앙sWK'2jjXN1q&U_q`K.6f/1[˫힢,1Y1ٲ[Jg-ۘn9,{Skvʯӓy?W2gCdwL2Yʰ6yv|D^JIGUbmC4#$V6!Xtb+3-Kp<"BW(tR%]䝍|Lu֛_[U*{L6\:&6cŌ_\×ɿ2XcRfc*|IeN9lF";T֝6,ȐkKSְgX2[%hbvb K"A)МdTMձmдTtU/*{ŔcI_U7,H_YȝZّ4 +hjSc ڤuK6i͸UL &J֩u1MV$NhWus_r\WG?gNiRdYlL +#ZefSjLLR#~ڬ^+V̔2b2[ +ٕe>GXrM62o2[C4C( f<ϭu2U*Vkw^hU\%4RIIŤBUg|ob͵S=K;WJ|Z2]t I[ʧ7$$=X^4i\NVWks捻BVri*s*mwcɺq^zġ2=>^N1 d p` @"4LXha$,(H(,0W]Pu5zJVD0祐\],[RBH6T+dUlkʜ.=T|"*s#Xfg79e.Wneɦ+5ҕ|m$fH=IJ}u19|Lr~9W^\:9TD/CVH厜OJIگԑbgNӲ!I׹ J9ailԑ>,F&/W)KITIJU92#{9= LX]3 2%Swѕ#2%ԣQA26%cߤ]it罐`UZ)z-'nԗ++No;OnVZňTIxo+RsoKr"YL\z"͢2ΪPTW˶jʉe/=Өl"ϻ,jL^r&XzR) +IIMrD* N}.TZ.M.ˋg*P|슍GK3bYEN*&{A#,_xWzϯݩɬO`ލU%m99I4I.fLHx+v4#=kW;dsX'tmH&WlQ)T$":kh7Ut1Wؙ+jH;gs-ٳ 笼䭹5%K:}tZhT׫%*YR]i{/+-[3)*Yվ*c܈aة^}UnfOM]XMrG*fb,Y"7=J,թ 8UK2Nf$BFS,"&iO44 K3b[]Q˘f +N7cNK~S]~D2eE^Tjw4%]:Z^Y$ӟ<2>߮UҙH%i,O#|͕k#E7?£0T ?iX!B,RѽR5-V_2&ɴީ ^7{.'莥iGGFԺU݄}ktvT{Y.Z5vIؘs7*-V9oj˷4~ uzHM3e~Mb󏼄G2\iL6>_]ٔ""rao9|V\r4 +)v5Mv4;=Ч2m.˙PxteIKx})"R31uV49-R%zQԷUYQ,e+5ᆵJM1s=mCC+Ieh*CtWR,˫!uj$߱%tާSC}}"*$9>=fV8shHLIr$x#?aI0g](o*Nha"D,wGkn W$][)XI5#&Z^M. =\>HO{lfbX6cБl5.tKO:ñKv =XCvk9$wcZjuJ|.ˏO3~ʧ2HNU>WlPtng6YUM! Dr5t?*,gXJbYYϪX eus'.I ~Kr'y}~;*wbUcQűer'XlȭmW]f\-xbZ咕W& +,si"Xn5.8y1adf3,Y0kÒ3gZ^,2㍌%T9xӉ7MeUQlZv^iхǖXUn[1bUif +f_+c3cigWk^!*)ʴpfowe̚WآҎVڌS;BVmv fXhJjiDoe{}j^ԳW_Ok8gjZ{3UgX*f]6&>v{s7Yjе˅"c RJ\A" %Is~lDI8 =iJY]z w`Q]~b']ŐjulQ0ΨiaMNz.,:f/,CU5,!%h<< &0ᡁ!A"88084(x5v' &e)Mt籥Œ +歔Ō S>ł2RRrD ,`Wʘ=BMc}_%3%1 aU#[1Q|fV(^JZYn#tI˱HV&48KN{3 mM* T%<6%k^XYf]: A:BBf]riq\ 4hd DV%,ّQ.oo*YVKzyNO+Ʋ,;34N?^3+C%<;&T&TWtܯLXƒcJL9Řifrj(sZUKUʽr:{*KUҋ1ڍJΆ5%&7e~Sh~f94s琁>>KTi桺$2o>ʺҡhr/Z1_ÂjՏ\e7j!Mu׻2KndZyO/g,ɲ[:N~ZW6&Y>ZeJO/;[f3%NkXjS#YLi.sh{#[dUeJD۝%$?h^9F{T۴?Z0iW;+EXf#V6D#H7ģu!TYԔ2cNHu]oL~4dRid} Z_~;C6ZqbyhS$wλTa-w˴4x=ب +yJZ5/G?At: !YH%we*:ݵ΂7wdz;vϩ$*OI$X²K3"w%%VNI#wU#ZRʉJ=yg"W6;ս V;;\;*ﰃY,Xl!KΘCFY/l̫r.o?uyFc5}I]EUC:lqTt3M4O24+_"s\zRx;S>)#ryjxJ!;w*sO0d'Ԕ~:Ɵ$DވfhȖDT줎K#ZȨ59"2ұi >SW0MuhFC+sDRV:*f%:JbӉB󕦨W2Iќ{B˼Cc O mb&ƘCIU4IUd]"%f弦ޛ,D5$*(ĬBb,bGT4FFSD&{,)adեX7WSs(фlY5qWWѬ~Ϙ}*j"J2S"q +LYqhʮdԐvejEʬETHZuulN}z64vř*CVg(i3EX+ly6U{*(j .%Rf5S_,36-%[ۖ4!tҕTϪcѪl +ZUMhhuL[!VM/R0ӲZQɷ<"gQ!byk~+T7DWB,D]d쟏 Ɋ'" AYYrJ/2rw1eR58eSt.k})r./D|ef!R+E +WYjؒWuvg:hGtHg34?3Ϫf]yG+.BseGֱ6R#bU,R$e6%+D-EZo"'2Ksd시dsOe*,U/SI);YNqyheùa +VQkwG.33$'Ig\nvVuc3939s79C$kot%\]1 +di0Ż^=v۵VR6pƶYvT9mQt&9,4dE$"MZ#++" f^{ ,6jOC:RZU'[N=o|-SUx4x>wGd<*S²_<"_2XjkchiTI7s4¼ٙ\fRsvZF{as~M,ֻ!t轧q+cR,8gų=.E jgҔ:BWB'fzLDOd' & OH"_1h\?KNiYʄ2t]][eXe3Tf_">j8V^GEIJb-KyW?,>մЊWY3WSbul,R}:WKxªSZX53Tp +GMcղ\c_r\|0s:2ZHVHej}}Sg3;{?m,+UPq>Bĺ 1z|]/u<'ΜaY ƚBU9N kMYY6H-eݛR*CYlޕXK{!V) 6 [Ce5ܸuRbq Ҧ)g-&{sm\J.^~̨f. KթؕNˈW8Srt 潆.+eLRc)J 8< EAٴN~FX>F9Gjc@&%{\ + !`0=^ 櫠ct@!s9QzS _a4 6]TBqDfSBc?4HqB=I*+35_,?ѯHgΫԙ Mw51+WLtOƺh{|~Q9dH U3'' EL\0byº-s-MrCOT׃ݯS'Nv|J˪4p^epHˁs0?dA!5w(记]6Բ*nMzףx`Pކ8P쿧U9pηLCSs-E@ +̎Q}$-6kAzFhM|'Y7zIO +>x&B.*¾n3>jGK+i9@k$)CmM^4l7Qv7]́5laM2ZKNgiA\/Gÿc4,eVX2>W\є&Xbuoށtmk*C٧Da/w%8^1J,({fo.JgplE31T|i[sIj=r0"gOX IGspaXy^Иqs jmtYa. +JOPx꟟0Qx$t=SQH C\^ i`)jP$$d<'()3T{`RpiXG7p "9YT$h~_UZ,~م}pQ*î )}m*iodNպ(< +{ĝCFY9n=AG5Xj(m.b_#3XJj1Vf?A鼻PpK + pRl1UT\g2j&ŴrC<A\j™-!mn͢sَ\Y/ ziMW}_7uzsvp`V\`Ozz\XupvmQ˴Ҋ;'M95/2py-'uI&޵&?O@.kh˽8eYJX4 Jۣ +a7O)кeр-@[-}'pV;ѿ@ e?ri^gXʙJ<77ݜEϗP#1n 48c4իsS5?.nhwD+^+^oy .+F+SJfy3bDͅVQ hT +/% ݐcw054E=CN$!@9LrMA J거ݴyB$W/R<$9P+;O^^tHNza'[eBf6= ̽j'KٹDH(j ‰|3Gѥb1Aqp6*7 @ǀ|˛T- y J)IdCz'ui#ubN<%'U~Sc ^7DKs<D(ł 7&aw:wѻӆ$j(}lu")KaD捅ٍ'`ۮvq")(O` .j_|H/ҫYݨzop}$r& l; #$2o!xЗa,rlZzUAPWPD@LZɱ<.{B8\(sڂY7+ntHy⎒\;>eQ"Kndmxi+8 0QoMɛGӡT>M7ZZvt%bD]Bv6{Qco{5uX&櫌 +zO)v,nLrK)et@e4עqN4W( k|4Pusx.h/(Rg|ۈEO4$ju]I*l1!?)kX38l~^!2%q|ݞd +auC+!ȰC92A<"[LIsȂk] 1eZa5X:44y={,0aˎ7(x 3Hx>گ"ȋr:qmybaRQGzu7C*dR;sDf5~c.D|:אo\f͠)F/ِX@+έtAQշzCӝIib/{krAZk^98 NbULI&8j $ЊR^st]H_ݵ_h[Kh9sqnac268frr؞mmdRj)ݵE`sO )aѤԴoZyv>/{Bv[U!/DV9cV=I$Lls\:ԃy َ_t}Q6;e W@t(B!b/WYco}Tgz؇c8UuӰFObr}IC3W6D6WmOՈ9adQ2کjiCvFoՀEӧ&ƸyRgàXȄ!#,&sN:a;G[(!0@5df5ёpnj(o58,>U]5t&H<,s^ u2C6꺔%-F6&m mtsH5ϋpi'\EvTӹCV;e'=s_8?%#L&5TV'Y k7{%$1!7sʞT{u{#GN zuuZ%]5'-1R㔟 SS +s;-c4%zym$qr/V-Q^ j/5*0}~9N,Lʨ5G`L Wkr8"kF[Ⱥ,+7 uٕ2ƢH5qܐm6o:ImN\M R MAHL38(qvMdQ=SAѽC,ĶRA7;S x sHhw-zNn[E#o.YC 3 +޼]fB+2uU&FBI)ewLNmmfi˅$'6P^ZH. 7]TVx:7FxYI'ZVmwuk( tKJ^]tRк3ᅐsc]@8ح*φU)tK% ZD/13ĔtTS#C+Q6{bR'F.E'4 iQ{)_.e(JmlUi9]-K#C+*R`G82܄sL;e:4P)#-HeQʝ{X>%V㏻i0V7D7Dj }+Vڄd psHW;h%Qy-@K,~ \ɕ\2'94S/ihB$2c 2"*!՘{2aZ=YQ]ΙA?/+Yf6~VKkd)|e֭lt.QEM]n~'\F2fݳǀ֝7Cie09PǪa\LFc˃tZӛ䪃J2OekMӯ蹃f:-t 8GM *֟ǐdmx]a&42]Or6_$U,%džg=Q=MuЈ(í=p :lp憁x8mZ 8 )6W>B²MTI K,4 |)>?ʤE;$q77K%{s?nSĤe,Hd %,*m{)@8+tԡШ(Wixdz*IH{ cJփ3QO|Y/fPR] FJۼ5Ӕal[,"AF2zi⤐Dڋ^ +ORwG8 +A&DR,4U'1hjd#]F8?q+,(ae&(9Dʹ!(0I"&×P)_UPg",[ =d6w~-t)"0[$53u#要"MmkMU`eѮ?!F`S`h;JBs“d=^1o)l"e9%1UbW Ya"C^{FDaĥq@Qяǒ=3 0os%m$؟~h@xo"aH9(A`o\cơd 4ilCθvE.UZ2h٥VlD@ +A=,Gڵ8H2 ]|3gqPTU5j noFkO]J,u^6謔Vp L~~Z[A!놴eC^YIߒw#{"@  {|[헙gKu!:шڛbP&qZ@vR!ZST2z?YSF'E4u{.4d@mׁtM0]0Zi)`(UAm6L,`4eܟsgBgf1r̖55h(!8}0* +%d8vb1Wt"/%9=ǜ'I!'mwz-]V%MMQ#FE3L() eʚ2VVd5D8S`- :Gq<@t{ Ǧ*.!Z6n|E:W%0Fe((%ZN* +K +lQ\猭1q)Tt1 Y9tSp֊jkEOB"ʆ>\$]qeƷ9>7CJ$(evC$KT [-)53y|Nhj{pb]֔U:m.:G~?OyϪJg*K;#i6z w "ӭs\pd͊c) f?Ji {{ﻻRU1;=&q" +pә N \H L.M7rq\tT՞s^{24o󟑀9LJJ+,aF81G,j.ҢZ죋=C[u  +ײּŕhPZ<$a?`WTbpm+?">eM?YCor*~ *ʙluu{]|ڂ=KD9$nq85ޯȪL @B#( Ǹ>9L, +G/עtԸ27ϊ: .AkK-#z8`4/ [.%&=#iِJ!1?P_7yÂdmy.)2y!; Ԅw bjELDL`wZ&:\NϿ45z_(2K4~iX0ik$=W#LBJ5Z(-Jp\?֓ AlKRNؗ\|u)!n})w|hJ!-+Q\Sfk +BUsL!u3qʛ Xdzm0n YZij7͆ tiL Tf}I!hO`ʼYn-V>M1Ҕ*ҎZ' 05sD**6c4QW(}(9}zpJ,Up^QgGGkoJwTi 3h,^:z›CA4*C'hC͐+0_PЋ$.E[kJi?8*]: ĺ9MjmQ{NtJQsZ gn@CΩ-YYeU0u=zا&][y#[x8F$T\Ls7Mmĕf89SM>>B-Nă`N:߮#EH -$CڭȲo )a7p)ZM&{}x'JaR;:)0w%^23ʼ;1,qic*73+LUe\򁺙T;HKQ~ֹ\^2RauJ +!$'1D('/K/Qvɸ@X67r 5Dr>B _UemB*A:.N +9SNs1UYsvt>G)5zƣGga:aiџ@|֑%Nto#bGStv] TJ~;W@ W[P+u1 F>+BuK9f1&v1Q.cRl 9pQܞƍR@zw'+'4TP EZ +qt[<,g{8 ju)BduzizK"h2p߄%^Ƅg5G9KW MZֽ.hS`-.,!,|{F2hk!QO8z^f?D%E"2!GO:[Ѥ ꔲ3 3mD\^d->G%@͹}11STvF6s=@A |ЋF[Gi_F~d0tyP.{JfINPP]`uFXf,C0qWDH)5|א+=4ZފXZgX@Z tWP}%cKn1˄'Z[.u$بøYا +ϛoZV_f-|?h$o;;d*1)ڽ#>$@vNq:JKuai9ɓFי-7n3!pHuZ*X\N¹$9PUUbجH ]Iϥpf&Xj~ZHoy͎D-kBb6Iv!v7: +Ψa"`PkJO[Q0k|kBj24 +p5S+6DǨv)O#UЍ9,ȅOqatNMGe|+%x1-A/3ghDDR@-lMW!Rñ6Ȱp Җ@f Vn(&ΡJت%$%Nt0tUǻz0œ%+>c*x)aPL3 =1w"u0U)%UK!Ly6iZY +K0' q%ѤJE$JU+NI78Jh_;GQg9͡:P*9 I𭁓GtIUYvr;3I8!I,H #&CF,g~P/H]Fj@2?@ ñ(.C(z4GSy٢ZLxJ[wFxϨE=H!" +EE?{ "k4E?#؉*L!IR"{t/5@."I0Z%Gsbw>hY1>I:ZՐi@O?fgjC(S ++[r}YP|SήH69+ w-3]44'w" /zP-ZPeT.91]\.yW2U-? +҅Xȫ)L 2MJ~6C+mr(a! =)`{ +mjN!9 ervBdv`(OR1mDgIn6'0'-ft=_ Jeqv2iؘAr&͹LZa3(S%:6W1+C8 +E=m_ϱV}B,Př]Jd m2++)9^oߊ^ N,)CC4-tEWP_H'(Y8$At/FJf R3̅˜:Z.qJ>0ÙLm\pcLK3`i}=w)bE|0JC~9Ԋ3]ɻ,Cy:tt F3_MEBKNn#ud 4.G? 768>$)[QrNyqw՛YěIU.U͔Z7l5 M/-*HdTw:sn7@vߣ'p35ng4[ ,TH6uGb&ѣNbR,~pc]uJFWԑqM2ʈ<HaMUcw Bg&?T9 "WǩPBƗLAF +rxЫ;QRO|*vE Ed?p''*4"prÃY' UI;0us0N9gN:B hp?(U1F_{&CC:(z=z:'?͕^"T7hlBoU P +v"Ԗ? .}+wVI^wZfݳt5ι|Ɩ-˽ h:Ǿ ʏy6z1Pbȓsec1ϦI5L@ ^Гnb1H^-%h:HNbP}x!o\w+s訵XJ%qF41A@`!.2qJϨ%)A`t;h_*>.qwةW`ֻdi/G%BT뤾_NBs# z3/LAP";"ja4jN[70)NU/DO %d8&lBWm9a%_8R +C,?8IԡUd >$ybKP߆v} ;10xuYP@@iOιN}s3"  mBRY$Mj0΁?/~U&CjUԠcPX0)V"I{Cnত!ZvyVQtЊ`5o-fUCLrJ^`Cmi$Ԏ%Зv"XpU [HS/dnD:vO +LR2ݚ8R7 [/^C40 L8sRϬ/M_h6D¢;7/UK X%u#d0^b@48Tp⨐@#~taas(W^ qie RyָHX٪/E~ѨMc*둗RQx5[4\XI5*x@bRIFlsEKpgmP,(B{(2$&?m'-MOFrHSdY>M´pZ )M8} ePF +~Ydˤ!=T:0D HxbaCv='3T kTA0 jx@S$:r\e$_ 3SDnD [!r,գ#)C%no&D_2I:'0%Ev^&I OcC_ LGGk Ǟ(p-a1N(C5ˏ 0GF .o3&@Ȳ0OC; <z0"o @muDc_d"\^A \1-4 +NV'jPH34\]gn + ɑ)#,&`u=Vfa{ + T[("'O\c%fs͖Z%qa ugz aLK77a8. c3_ BMc"!ZA9Ҙґl4hLWĩӡ3g,9"i9@U{?̌G9zuQL+slc##.Nߴ~~MfNV/pzrf7`y0O*Zd1WhLZ?¦&(9,>j?s_yP$ yV&Es&ff͖XQ83s*>PeJfl`aEqW& %H)tShJTJLk-$9=OVxtX%jHCRn>'"|;m <ю&'ս,{㤫Bj l/+Jk%NJt2s@sdNkH-~_R_Sܱΐ=R6%rGh2&bX"b]л`3}O2;&u_dd!PzԑkY'pJ B*sLqS=Ydrt[գ)d:J7#$ 4 ?eXq0OMNHd cFm0,$L\1dn85 +a' Co6&0 P#-3ņ+SoXMȽ+~X|9ks!g0Q"]O].IOh[$/8Yu 2Ci|&l}-KՅV``ٵWrJ!]f)[ 3_UhUTZU`?#+_o{ɧ./  l졪ϊiU*H{ 5orEs>oV ~Cu2t5R!'DO"f5';gpSٚV7u.}iYY{)AX1&# 0I!I8IE򹱽<3%YWh'&O]51M,t +XS- …qhhA4:Do}/0LFX9UdBmH)Z7qW0;ti-RySWBU7@PZīf<%3+b˷rpc'109CB|4l¤0 +琯F]qcdd@\W0P n?iJK;mʡСͯb`SzqU;BVyd0P1z?ޠVJP|́ŕ| +8zF<\vb}~J¦Jؚp($z֦"[2 >:"6-^vʏpBhg~0 .vVv1 NfAgaI^wzԀo(;nQڕ2#AIMg@+լm42>z1MdIup܉liM6SR3g-n= -Ӛ9F{z|qRݪ2%]m뱍R VdS[-5t[HlVS0O/ev90eq2-F+` T'Dq񯦭>b=AD&(|<C'>uԩm{ZLGn$/⠓6 L+4貍w\y*PW4tv1L8}giil45X$]Uadqe gBNg%87җ%@I=YXaQU yZ˵X`]dL8`eWVSbo?ѕ'Z|jq{~d$*?Rn/ }p&QA(*tK(;ՁR4JТ匫!X}\I~l˽M,}!3MiDzˣ”o ?SRChMd)BF?Iл0}ơN{`a =9%$ۨDt@ca2W NQ_z`DBw.e6\JnxH &`M-I.PV7[):|3;Z/+~\w< +(/(u0XiX<9M:ޢ7&uL'>+˧\[LwqsRQ3ɲ(';!D1'}-NW*GGc~tYԄ5K91%>NbFٕФ-~F[IS54;zqΌ)A36Vb̭,dn^CivrqY~i4HXC*wd3<6DPco@KdskG왼*4項*~典f=cuݾߙ۶+7MR[ai΅ޙ.rS +3UFޢ + &pϚ;rMfO)=N ,K*z388 +2:]E2d7<O;1O-!hRj˞3~ٽ =6oO' %PDI>M95dzZ*PI/qV[UJu]SA EWp+X~ + {MY3;,T--l'^IdGL,:+IF8T!Qx躀+[ܥw.Ͼy~-i!/DQ[Jmӡ6] bV)tEP#ߥQ#&hbhDc] +_=+ݎ(h2,v + uuc:\~c Ty&;iUҲz?L4"K"o(Lf#"?Q 9(܂FbC2FӺ;[.{ d}A#;m)8-\ǝ~ǎAHB 8o%fi|~w!,^nsXjl|UuOh4:vA\jB"$C%#̐N׺g&2֦܌~w&JǵhtOK]Dg=p2Wier6L +"7L^ زL*ʋp~#Rȧ'nd^~Br99'e2e%|@#v qs)6R2nFf-5jzm8$ly7n(@6CI9#v*1a` 1w{YˈDKȴ25J$em;EmS96z{ÝmH݉ÊC) @ +Kpa[1ϧ"ta/*ƈgU+w#7Ye X*膳YxnӹxO^AW3^%dYB%#M?e|*(1IN6}b6άMҲr=.`..H :w 7MF 﫾e)=,B0Fb=⮨?:P}4u'7 W0 ]pliXt+itN p)N 9 e7[{JtU$୊#xWԉc?UOPj \xʫ"ٍ\zc|jAI0V +ZN sf^QԪ R}~24Kq q㊭83k=neMhcGKoSyN;Bb< X!! 7'&CZ\fnIAk0ϖwb4ibq,VTKɆl*BU,˿p tC(\3j & 9<=y ',hbx'W0f- B#9mɌ{ zC'"Oe;B!l9ΤK#CVDf7.:'ƶhyEcUo;pPgu \qu|Br-ߘR5s2\QE']יX';h:'y+uEBQi._:wY^ᳰ\*OQj+˚[7* wӑT>jhnrJ>N10ɋbW]@\/U6Oe@p +lBVPsxo{߻S g#Rq6&h}b]p䴜E]7}Т4ta$b5KrG!)Ӝk=aw]{In}~^@hOn#9P|J!>ㅓZclUވ,d)%2#z=X#Oobik! lW3Nʝh0g`GS]Q?~G ϰ7e3ӕ)mjRf#;}lZqw+&;YȢWi[Sғ\d ,ZP@Q-РFl)JQ`Glo -|#B, |&,G!;QgKZGf"Ro7LK_ + m=`Fb1}f:r P?SzR[J#D"ɭVI-]/Neǭ}$`_9"pՊ ɞ·\,?4BvB?f}1eU xd a EƊ=Mۯ3yk3b, 2$su1gZr~,qG>Bl+s?TqK+ D:#.vKүwEQw`\edX~&߷lrPj +J?VwK Z\GHW-]9"6 iK+IbT[FU.a^:-cT77~ /0i{(fxǛr!R[Y=6wDžG;,ܔUBC>)_VE>i6*d\7^m?CW2[7" $b+#ͨf<)LyX0<'(j!O3oN-dL{b1pja*(p>mϙ,NtQ-|FMtyYCn]~&uͦӵWis9عo.;2WNK $re^_\#qW#?kxN:[^Q aɋ/{\ΚA:>,҇(<[R..&vfa4#a uz.3pT mt&Vt _˃{fHLD_7-apJ*y#)'op#?A4:_:Q'+oq?Kx^;q˗O[N\]K&@H9.nXB~QYdO+pYHE."J D,\{i1GX'9{ 8b jdbO)Û*W'͆ɰH|t9jM}fYlIV[VRR[^;Fด3.<+KJiRxb(\udQDD&2X"$! &ZfIck85R%0_Hb?@rDMbsIL9zw# "/$O@9 а0X*#v _]Rcɥ#xG(rˤt9󞑴a>rR{,-k,k~$#*ٔDXZ|嘁׻yo €qRD8*$nG)1SAiR]d5zn25$.ӇnlI/|pdd>R7RQӕGL5W'kϭ`*r&1̕i-*8m2G?MV(a>nf-Y9,0oMNuKe^Ou]A:XނN[~;'VEW>9i9sG"\dȻI'$_E֕%TKHצ%:v!k΂ Tn-bD׮s`Jqk3޽h=V,UUMq6ү&B8zIo!am,^ł(-h ({If=%73Q\nHq`pfG&r3|([@RPdj,??x$I$ %kHqS!`1!wSJ?Ҵ[@=.R&,I5Ҍ NJLf8]f2}~qEx9a:o/< jHaap!*>6+փG1`˯r땍1~^!z&5l'`VV +j 3/V=&8 }+p‹/%DV/BWueG +lv< %OQ^)%W8/ʜ +%h3!cA8Jm +~6FЖ>ȸ8Vat]H(^߫uO얣{:{i0tN܇CFeq<!y(WHzBFX!3tO0{Ef$.X^Zo ղ%X'&i-m}Z€T]\eԇ(/BE<; +(_g͓^͒m;_L(=Ǭ8 B&~UҖTon%Dc`Ѓ" + ;(7Es+9A0:@d2>hsS}0m`5.+TSh6@[VKU7|6I7k4X+\7p +j|@[*@QRjH7}tIe 7M^ ;.NRa{[C!bUr/>^lŪ dѣUıUc6^2*;wP8$F>}xVocsʝ)(\ѵf bg -O<78v^I `ٻ +b$ɏ}j$t +$d:Ze_͟.o'J]5Y!bg(פ$}oPJݧdwϼd7^K,)mmCs?w=&M?[|SfîYOU ^_1*0QX4Ɏ[ersWh\C:4yGXD|C8_ }-7ۨ!nn !2ԓ'ØI,M$A)rGQuGqj;Rs}[&'~㍈V]{:dakl[Vpeu4PaL׎9j4]VktZ^d.ON,.jsHpVi@頷f~tr"`f5pUs ]T&Kv~xA-~#j)y0m 3=f$0ǂ'V$T9v7% KuyMS%!R7G4x74=xd@Pz0D@+c6: +˞ tL!|"V=&?9rzʾv_)@[=2ϥy&MC"Dt=?peSS"V3$^uc]ޗ5L,L J) )wyDƷUrJW·ߋzh=MV 3A8 <(j!qx5S [3/ǂ𢙭L d97\ >&O-\M}55aݿ)T#jV`KB fshG8)LI&g +-`T8LLeAf 5'>0*|I8 rg3Haj0W\bC4fxM4&oTB\CMyܯ Z)&?o +ls(գ*cHXB IB>)W%UIrId +hJ A$%=h܇ ;hܚ, ЙС\hEQH`QŴzЃtFef5U{l^^«L!P&9'/,2^KxN2C9LsNIG4nn!d%pȦx GCC~J8OX^l!pu< ~y/nEV2+7fmĨw{_3+!#uĘ1VK["W|E6k=ci|݉d5C2fi 1 e̽ \v!2$:#.Trzb,gnU&"Ze&qPU(F Eqy+Kj"D$4Z$EVTէH%mT;]9p9ϱxQ¬64 hKTÂZpwTG^u,p6y.U{ +r.gV} >" 5R2(3} + **F\ۈ T q,NȟY e$ Y^VCzQK!CoL 2"i"I ! Q d9=[&r)-M}XjdYEE9+cS/Cr8R$lݧD,R<%DAV;wB$N]xu؈w^6Jr2瑡0^4%O7OLTG#u,Y] WhB ]ip}Zg+E mJ>١Ld6 yTujV] 7#x*#35 -]d Q @i#҅dT*x355D6#2VL̉.Qpf&vhLl8ՋBfQ&4Sފk$$6w)M}mTY|Z<?vXQ6q&opMƐl *9pgQE=5|Cd ӝ/f -LGΉ.$6jC}K&R_$Q%ݒ;!Ƣ6}Tj:"rW+1:嗊[A0AV||1hW/i hݎ3R%B_'Œ$2m$9dHf }҅ F$-H?NicHp>ӪPJTRјf>FB6ktuhDbD Pe˲lLKtuxCEq_3h|(В"‹h"""C41|O_a +]d Q @i#҅dT*x355D6#2VL̉.Qpf&vhLl8ՋBfQ&4Sފk$$6/ +vS|۫'U1O#V"8M\1"nJrNc#YTQfy 43tgY?s0 PDITIdbGNMU쳎\U;rN1AbV=L5FƠi^1Hlqw;H垖}3tFʴeC!M rKښgJ#p;-M"%NB)QGKGcw蛩#) LMZ 54D@E +R ,˲13.gf 9~%D (В"‹h"""C41|O_a qV -_leUQM`-#,NaC0i"M&?@ "PZ5hû/x%4CCYá04ðHiHI, k/-H )K.\bN X%=NJ -fSfݗB]ℙjw˜4ĐDCc1RyVaښP" "&ZayADDB`jM( ѽay!p8xn0 fgmrF&C -x)(swN|6ڪe)G#hxZ| x3>2'd$oX21b #cy3abE=Xg Zªp7V@2]Lx\6'fVuUsO9ueTǐ?(T-j󬵓EXu4>]!9 xJmL{3^S2\jjՌ!Q&4EQ\&+ _)j>6ZJQ"Ph!bi..Zh᜝)yU4 -Vsϡ(ck0J۷EUwpz,rǤZ>&ZUSSucC~{d̩ 7MzS!3DixB}JI½Q,(EC* ?qU cՌ1yX$*BYYdc_QfJ$0H,2(XXbnZt -g0ZTe1łIEQgԾhZV J5i|Q+ޅkTSs YL5h}H5Wh8ڸ盨qš2(]%lbUqO&26>scSi؛P i H4لIV *Hgݰ'~X(R?ϹŸ}gXjfvDT]Ռ9FBcraR/ƋpU-&:D5Uv8opfF?n̏!b 59$Nbbu!.?[PUM]5|Wҡ+ţcR5@ҬY)QWūiX2 %ݛ$- 9Q/(H^̒9""ҒHB#/R+-!:*ܶu˹Rӡƶ8dpTզ兎(txI\.dT<$3(Eݮpk޴iE%A.sv9t5"bDk-&'HmHxj]yBAلu%x5tkօ,gKL[Q'aƑV$HJkNzI09 HqY"ctTWTHX())V%K85S%!k-YTVZ9ꨨ ']rp:M';h0K3.6}BB_8y>}!oǂ/G6$TCDiL !Sg% -wt&|js !*f@Y"3YavOG D y0)+<\X㝸tzޘWSO>e u[_ԇx,п&lu@vю^hϞ£$!: G4(*eBM+U2щ@B2$>t5a8B#&HYdVXJVFp)'@Y  -;8IB‰ -P[HY,x] !EF (F$7΢I͒`R*)$OBTD@B$5FBhѡGl5:+D1_cd o -r@A=Ն -y -y0k -4C0-.-u@q(B/=ZeŢ>&!0 "2O)FP/ͰHB"PQBK" /! -Q86'o-DX@r(nDPdIiu jHkzPaP"8@Ҹ0$)@yN bm7T ŚCZNJ(\>!-͂B!: Ewq5q_]T @5 -ŹxK(:Q&_D@[ @H@c\ᡉ@0THZ5Ye!@JbI<2em@qGmYߩj%0]1~+ۿBDhʍC Q_Y8JMG=Ȕ-^'P¡hQw=z?tdoÇN,,볺 V&9ba7{joMZzi)CPڨ%YH;Z -`bW\}>^Jufhej^":Y@u+sPwVYnq'5X .^}H:Lp! =3u|U>SExUBEwJqur$\vMrE<숺̣Άż3&%&ͦ QXL`j\ЌH1 4Fҿ_|8<ŐJuõb;ߗ;g u&CUŰ/t6NHy -h ARQE-Ո 7XZ|+{j!jlZcw#G;yaYkfptnIذ;fhj -dg;yK=t4T::xNnDr"4?o;sAw;4>`xUPCL)UdWC)v -Cn~$ -/v;pRc=R7(Ehe70Җi\=9?hRIb\1W%o>Ùw`sC3hp.C2nN[VFZ%~~>G6Ծ*HkOR-$VK9]AL[_wN}r&S)DO薐q0:pb pua-Gnt@ХIu)澺B}A• z~XVbg?$rx[y$>yr17M+xhą7kIt -_Za$ѡV5{v&ވqg6ˢʵf4GJdU{-Rm;J܉~W |{T>0x`ÛʔQ] -ڻߐr5a$agN^{|K#t,#;j\No%jBe,,^:LlҘ9g˷)#9kSJmU?Nq4>9SY1\Iy?s#JaFpE2iFpvXoh5O+%E3r;:rՅhEn P/z_`ςCPNyoB!$#ᚤ?UInK,*hm1gtPFy" -zwԳcO%vP$.KA^%Enj2撤9M/I~}GƝwieGw\~ srR)Wuq纇eǟ4{iƉ3faZd9G̺nZj_I0$,鈪 -t| 8]et>I"d_?uDEieฃlgMHr4먤v%A}V9;~)եlb^> +Ix= -1Tf Ƙ0Gdh f+TDDSv|GAxbJ튦=JO i0c>"W;vT=CQŎ^#kS0رk95o8'b,q/|t҆=`mNkI> w`IGT`ヨt5oWF\v򌇂uNpA6"k<ēx(.b*ՠ۹V1BN|d0pJVkd YOL!Oi+h1BU-fYPtZo1pi4 q\B#h -oPDK -ԍ;bje;8Hžǥ~aOGyOH ^;.Ɓ.c˙ %~9ءb'0WJ up2a20_P-V'wK>aߕzYͪaONYtoh%92y` -o_ie ]-ȂNJ`8O>HPUrRg8ւFehA M -8e䨨fd{AfV0 13 &]X9;6 @8Tnj:wHߌ)3+bЋw+{-ֳ^s*s5@9vmmgƝՋ/×&+f{̚;XaQ0C5<Eir{ xE\;W?[̭^U*69噕˾jޏ}0lZ<$9b0?jU Լ!틪{zռK -~IR}XUM CքrELj[2z$mƥ e?V!!Z(H§%0}ot|-I;}V - _3t7kI8w#nk"+n& 7L˵ -uvܒ6>7Oi|ΉGKV~ J:p؏MU_Ao @z8%%-)C8,ZwcL[툰&g $䓇Z;P(Vc/5hA#R >- 2! P -1RXA W r1f_5m4]#ő@oTF+|fV1c:fn}7Ow$ -V"u1L֜b\O5hʉ'Gذg4Ofu#Iszv|U agѹa;p p"6{ 89)P*)`3U#Mo;8!@\:tF蹥b'!ÛߘA1Bjs `;pRߝ/ƒY#9$sC=t NA`N!?UAΪ4h+=h(1+evh,]fKQ{$!Jr(Myđ+xèfaO˙6G;)3C@HH -N7WJ -$<ΆrVT$ᜌ&D,cr!Q(E-? z2!+XyP-R&6O8)ψr@.\>cۻ*U 5sٔE4{4<_M$ZstEU|J,1Ew#cTK4{"LM)0'_%omxmq<e.ǰlti⸖/Q0miy1 Aq?&dƂFR~+x;4qBǻ-0D$(α)Q!jQȏlOlDW!1.pp<' '`R3>=DPH,Y<]]67Ku=S5[{dܕ#"{Fr4f{U- N(3$ |0\*@xAHb8̨/2sM6uAw3 ͼg/f޷.= 2}ve<XK/\9/FX:iRW}Bl$$ -l:$,q_8){Wh)i{ ݁77#k BJ3E2ePxH͌v9QjvȾ+\ {B(0kdos4fZisUfb0i#fD' S ,W(m_%+Ԋ d^s@_öWP#I:S&B"רĐMNQh yB,3U,@|̨־T)1H׸8\08%uz81x} |',+mAb]lĐ+rdtïZb}pچȋ= j@9K%^kɈ{C@ -Jrnl1Vdp׉ng{U&E^E!!8CX_vAqm#BrQL}/AQH̩L_C#7_ȿCWʒvgzsBX|Ͽ=i2;T8iA)>-C\?-{AP3We?g># sk$֓@E~Z@V'.:)è]Ҟ;`81 KڏY-er`a53ݭ[^/I B5 ckZY-lcfܲ41du>ДLIYK][|/"-lb>i< J xd㽺 2`0џHA2.jhkl3# -o -]yf3}y+ӃԲXR2 p;5ϕʒGA"wX]ZcuݢGFrA g䉂j|Mv&.x8/2UzV|6F> @;Oƛ,'aF(:V4"# Y99!=6)\\7:fM(a9t}yChn[K/rv8öS{(3]g.B 3MSQ:wd{l%A9x2'_`+:(UBv Z-c#ED+u.WMДIͅf-8>O}V+X"byi%|XMvf׈d[F泎> -27[[7"I^x0 A2&B;srAfYZ'R%{.$N"4Md "vbjaTrȹ{"h2oT冮~jQA%%bY'?Ie!(AeR C;vN3<̰w7$%<(NC$IV= v o>ȠI!o:18P6az_H큐LDpH2Ik^ -!!:o!^عsBsbɖ5 "L~E/NYZ$EcЈD*!zu(#d'=?p [:0 &\$xSg LBm$ehP[a*!6EJjRD "0qe2IDq$h$4LHz&D4&pęD?4$LL׫HLTH'&dn';&IԞ8SL(gBCC )L_:؅0d޿Q Ȣ@ͼ[rC]D CRr5"0ja0Ż-BSZQgS%#Y>*Ē U<Az*BJ-VYYI[pbJyE_ ٦ȴL/W1╸EUީ~kw‘?`7 Pb^Z'Ji;I ZN&Uւ4O&YW[ana-&Xpصt.WOt*.u!$'3]N'3Ht=y#yH1BD?/(_8!w"F$ QN" -I8Ȟ0N #poGT #GsAlŠ#ҍ&3x9 )#V"c/T9GMFrɑ')#8Ҷl8(BfF*xddی5BMe/ :FT҈!"4NH8Pj44baFaD4#QԸË@\$ָ",\0xٳ]y`CT*bl|aic.EnO E=э@/ݨ\0i'?G4"c8Ȋ)8C$C!"wIe"8Շ*Ǎ=x!LczvȢAG.:$PEQj!k \:~XCࠎѐ3r uCv|9j[oGYݹbq*1qf - -.<̛Bx'!pYG"!A!="qi=!=v{CbqOmE42H6^ Ę R>)k dU̿dF& Ab="$D1포4?""^ -A N  U7 ;H@VmVfvdCS4r\q>LAf1AG|4C  >>VV{Õ%H `.GDkXA=+aJ=FN~Qp80J:y$pf3S$@A6D:8d&Cd=d8J82"HS* ոؘ8V(^G÷ȑ`ȏphxۑHc%c@aP7wod#JDJThDFOnE¯S$.sW΍j"ʍ2n4"Ș؋0pWH6DcFۨZF eg`QO#c62mˍ3K_flg ru#X0tQ5%?NtDLbBj|RU#jD"gj.)s#I5vIN? 9IHI.mm[EALr6 EJé'i$_ t(n4(l ,XB%id2U%ʌldh╠3"/Y2[z:K K8cl_f|&J a\͘G3feL ϙ Kg3e&]ܖ̲ k6A2ηIX)M"HNxPFo(N;{]EFn6 - 樛J&'xc-G㞜8'pH:91H݌WʋN$2U1ҖvrvrQbSP0m'+ st b5`N  q(g`Y'2b$R|Za1:_w/¬/ -&b`A.N* 3:{b8""W޼dNtEhE:r"wDw!ܡ]t=N.`n:y.z ]4NOYs;EzL )qUC\X'}o!}'z 2'L={k!Ol ~[,b[ "Z8!(Q -;j/BaH uY2E~gQr9|b [YQrzj=j:-tEGR6)u9Zs(庰U$/krIrDҊO40K2;+EjDrα\vҜFTC#_1#1#:fR 1шȣ%1XX1F% X2#J$bP"FtB+vRLx2`bLq۷e"]m. -yYj"yyX"F/̑#%qW%9"{@_b!˵)~3_Fc/dh 3t,RUB `VU0ݘB(KM3Q$!" sA0o6 A0  0$*8C] *Lb%y(&E*O |xz1\Ƙ@=cؘls6ǜ>?cN@G~V1Ƕ)AS/dև(2~ԛ1&KfɈvJB$þ{ɐѯ oeL9emKv?Gf8uLefJfntf(;lیpCoFw,j3o%̵ځ-wPo噛)UY!9#CR4Oм[:p aC@4|Ğy9>F4/OrYLs[RgPN^qX\4:G)HqVS/QMa)&HOF70jc mwY75!vI:7k!f5w(y6$[|klxWA6a߱95XlA||elc AkAnj(Wڼ&M8qj5Pnd6av ?6qQ&4(7iqcv;CຉۍDޤ ;ɛO|[ VeIH ݈77 I"x" pe m1?[Lk GA 089b*7:q&d E5)tB - 6C΢@ȹ 094p('pʄx. `10]X8s΅ 9yۣ Cs\Ņ/@s6|ݡ3[`tRw-$CZ@YU Niat"C :zfaeu' :8 ]G׉Xv{ɱtW^v -SQ -Й`5M w`p@20U*x -Y -厨BZѨ0j*w~z -rS  qϪ''ф47&'`^YXD4a\!j%fy>Hv0sgW~z~uLP`?ig%?\²I%\RB^ 5*L ?Py$@ Fn+~ 1񑠸+H.!$G( Vܫ@ľuN d@4#/\Xuɵհ: qNPtvS9_#iloݩ`.c,,q.F`Ȫj@UY#D^Q_Kh6#ة ݕ+tY*ב=4b!m.0=+")>/E+U?g‹ph<2"0iMEK~ZY$p5k^f΋p7RWT悼wM]\EX^p+.B'bĦ6EuVS][^94BCcڍ@n"0Eb'R $a-V* Ƥ"E8>VmbRR9AšSRA^EafV8Ji*1U@ACj0Q@ OGl)$WqB { 0~BBheXpF\s^8 ‡&[yǒ &yuT?y8cjA⬘ z#n6.teiuu BX  O5X6,Ga OxZLC L4MһGSrHu @A >fZwŚpv7R ;Asč tV @ ws@Tt9ɝd2ʌ#UIN!][щY} -& -h:2s$(74[W)4t7XZJC0 fXB9"7XHTm#3ipi;nBMlbQ R=H~$NYZ Ps?I @ 4Xƅ?N๰hh٦Bz(S^ /fq,bnW#ka I++VvQwv)"JL\ j^ޙLy(,6è>&t@mY{Y\+!YaP.o_g0Q絮1bb90#_y iWȝVX 2{8r|A1`PμNH6tJu.(Y 5sTbySo ->/@i Piګ?3`LKd'r*.}zҺ |,8Snq 2|^_AZrmIP~I+vT8mWb2sK*}22gMO`\ -Sl_ד"A֬2(GJR+('h$@5+~m8KELwd~'O [9AAYM0Cu$.OzLKx&̳Na .}|qks Dpo K:%xt,T$$h* #$! +EA@:Sj[dЖ1A&Gg\8{FوsA2X/T֊߹GYX"H߫ƄܜntGAL), &x &l oUg -ۊ`1G8hH\D/XA` L -7warF#ao;P`;}@il-8mm՘0@.@aoHp;Pi2&ҡou m֧æot́ 399e=FT8 Ѩx 0=8F"&tCE..s*;`dDJZWkT -E &W" 4М q -7.sxՠ̸%XBiSRS {>${ rԏbO/'+t?+GV*cͷI)~UrW -< CgIbb{'(m -$%.K;eAFQh&<"0,ˤ1P$8Wgnm \q6JCMHx&[cFL d@E@f+5~Kʉnf԰wv(b#BW!ؙZfRy__LjTS*>(0>i45uFNB+;m7g~0r9G1+X\\QlFD@!&˷m/iSC`<: `;Non/(F `OW #YH%'.oW8Ӱ3~+6N6Ffye8نlr5&)HV qxnqeN@A:~Y(B*+ag>w\)4mb8s0Ah0aTs;7 pE^v -x9,9UHvFSJTOQw%ن{J˱Ic^9<xD%3iR)uBPױXX-ZC'QK{Ϗ9I Κ-qŚyTWUs[PĂ6Ϫ uhL*Kr@Gs*QZU!LQ#tcL-tC￉ZCֱ`ӮYnSԔCVsӗm(x^5VPK?ڔؿ?# -~Ho_TO'֭^>N=8_ƮLzu | 2$.G/8k7⤈,gZ.KL~:G~lEK^LfdnZ P~_Y}92tWG~8?}V/C5nkT&U]8;{IԈ'.W-"0Ude>dyciI[27% 亚Tìb=;v/ۏO{ukdS@dҿ.?{_U^\u>uOTw`ڎ%CIR6=0\~G7|J -vi]g,ERZYQv04q@EE`H_hT/h$~vbM<"o:# vtpD7ʋ/#ݧ.akX .`W3-BqXO -Ao_VÍCHo4Z - ci~ -  2|+uSwV268~4]r}GE['swSgr]M(aQ 8+1?[RUfKcLK}QE_sxy -v롮z=_130ð(l~t_ mGΉEDC莕Y`C - ^2П+Ř[6z4?+-›ٴlA`QX < "}[u;KWs+Ta |#AG/8$ItY>SYvH[6- r3;դGjRb#(Az7F6{OP*ƚ]׆iQ%'kg)F/{.ɮfT5u5c#_ NyeUO4 -E); ּ]Kcnp xд_?asJb$G FSwG8`%Wz(LeOhSPD+ԬRdOՓUs3UuLwS B ^5Jl9GvWЛD@h P`Ę27)WAfmBπtƬLW۫*UR𖈓CF:=S͛@bR-ŮzRI0|s2Uu;4cMV9q#KuP >Ms-%m"8kUΕ{H2zB8oKQ7r!$|cԋoG3o!ݫ?|iQcCsdDl ga=Sb\3c -??E|Qr4wyZG4NꍱVTsY2cH$7R݄Y"lS8,Nń{de8߱* oLj ?5PJ_VýA~TlL>wJV[㊫l8bk;l/I=mz{`7lÎ,R5ES;hڏhΡxJ*9Ǘ^}:J} ؁_nU^,xx΢.KjEf/귮Sa^aw0֣)'*gWn]GSS0Upַ*GDM,zH6"P pzG:{CB1^)B+n8z6b] 1h6J],8+uR&(YKa,&/ -{[Z֚pԓϞzڥu5xAںO<20h$j^riP7^ iY;'ulJi7TɡQF/;0[ʃ:P,m%A05(+g;JA}B3C CEpjޅɽ83ʫz-/ULb12mz/fA݂]nO%=DPN:V(wabz:ݯOa;^bF|΅TR8gӽY}$pcQ (dD`/ VҥY5^8J?GB(]x>q_R4_$i -=+H:%;-Co|.rGAJVs1J9C1>ձϭ{$n~KB ٞS6JcTJWPk+s{g Gpc#~ؾU)< -̶oÌV("v8{N6Ht<ؚgh3Њtz?!E46Hhs*|O4_)p^S6Y22Wj42?W}>juH@3昐rd(d( J?ݘw מȢUbdOV+2/lPR+}I|ǗѿB̗axͯ b=vb$}G \ʉFyT@̣18ź0g@boa6='9.zU|}Ϙ{'|2I)ީv]Čy[Wɘof_VXzcb~Ϟ5O_9] -Mg0Nmww ǔma\aBkMA"yS5ݴ-`\>̇ |iCȘt0^Yav&l(v8Z=59`!Xd0g9纇7Xc\ k/,I:!+ãN0O b.C(02.I9 516i -/T Bx žë >(Vm0^¤x2k(^NiIzCڴx`yUƲx7\QuFŏؠאָꚌqJ%QL򺎘Ulm0*DHTTS.N;dj-y*JO z\ɫWiǬyh7(5vfW OXV*eMr$9K~j[q yraF~[h/,{m7pIЮH$rصݐ*j؍ LK|)(ES2>nRKk7`+"H`%K͍E^Dv-T*S:N UrޢrA,pk’n&LtsK*ݷTg*ɚ+8bĂ#f.z2,q-;ͫ]<~+Ն{8û?qYOn4l!ŊW_4)N>,F񫲺ěG[a*17KR,qP[SKF.OF7Փ|Yv; Oez!$slI-QR,LsSXg ~<)oV:PĹoT5 -qC booQ;p)KpHpq4v`٪ -} WOkp"x|MJws I@^wƄ +_leUQMBCTB0 7)-p #a68DL8(Ej0w% 6 ^%4CCYá04ðHiHI, k/-H )K.\bN X%=NJ +fSfݗB]ℙjw˜4ĐDCc1RyVaښP" "&ZayADDB`jM( ѽay!p8xn0 fgmrF&C -x)(swN|6ڪe)G#hxZ| x3>2'd$oX21b #cy3abE=Xg Zªp7V@2]Lx\6'fVuUsO9ueTǐ?(T-j󬵓EXu4>]!9 <%6f{O)q.RD55jƉ(HE"Ds(.Y蕃F턯Rhcňu}R-MUK%(V +Uc4}E14OE^BQryQpҔ<*[UUUSP~Xۢƪ;Zf8=}BcRKN^!fn=]ԄzB=^h`4H|3{yG5{3Kfs;Hcs*jƇ#B0YJEp8˪toVdIϚ*GX`7y}8C3D7I +ِ\1XL11 ʺ錟-.`ܕ1)z Ri֬+Ս4,Mʒ- 9Q/(H^̒9""ҒHB#/R+-!:*ܶu˹Rӡƶ8dpTզ兎(txI\.dT<$3(Eݮpk޴iE%A.sv9t5"bDk-&'HmHxj]yBAلu%x5tkօ,gRejBE\BpjԚSE#Ѫ{ Zᚚ ',mr9\/?eLG(LYgڊ:3'@RZsC&HIHM/E +&Z"DJGIH/(Y©*YkɢvpzQUGEՄE\8ӄ!|"  1xi%aFO:=C 0ާᅲ?Xhۆw\j?44~ +Yi}a:>5C9EÐMa x^,B,_PEdr0~xL'r"<\aS?._jN\T:Q o+S u[_ԇx,п&|\ +=GIBth4PT*%rVddH&|fk$pFM=Ȭ:`)Y9DBDeR(@=lšLʰNPP4B BbZ)2E1"tUNph$RH wJ$HA $$MR9PcHatHi.DQxdVCB:FVƨ wI! +OP%OB5ᔔbRfÅVP8J(jKF"Vb+‡t2L'R#ˆHͰHB"PQBK" (QFZ(r׊JI a  ݄V\-(ܠ4dtJ5+LiJ;e*ʩ0hzJ-{$8hfSIaB˜4,&܁XpfbSSgfB,§-M9CM̰%Դ* BM @4B%<;R@ }فs0v/SQ/izyPt<!zT⠨?x!("FTFQ'b40z>^#`bd C0$]8 =ͫIUbBQI*i|"ްWad=pFDNnpE)jL)*ajaxNrI$Ok(*:PWTkH&T*JU,H`r/Etm!yX"B"30"&0"P5U"4\A!-͂B!: Ewq5q_]T @5 +ŹxK(:Q&_D頭 @H@c\ᡉd*VMbnY#-yзtdOA*H>ށpҁ:`A ހ(F +"\P xYAG$OĀCyPTT%N`@ Crr4F!qPXZ  62uD6_d8WNjg. +닸Zα4֣ZńOc‚0h0&Z'D曘)+aȯ:&Tz$4N6 vR1H@n>I<25m@zmيiKk%0}1_LB tMƥph<#D^dJҖ_UpPCq ;UC=yShCc6FY]Y+v+$CqdJ5OWm$f-X\g(TQm@IN4x0wa+ў@Oo%*3Ga2cw _/wH|Z9zcqIKۼs\#Iy|,+ۊr.6M|#md +Jp]p%jffͳ| m-P$*P9$~NZgE> Q+o:c3Xa/:iXiyd?CEÁr[&}0c_@f/"݄\1f.&A35%L=kKg-gwJO6ʚWO+.bL!!@Tp弨 \pv$Y.$kO}6(1E22,,TU_qGn'B= J(_d7Ʉ"'ict6t;O] `EZХN;Ij- +u!"ϟpe$V|*G\/֌n s\ Aod;qaZT8d@S):Rf~96y3,͢V!QU7z^M<wя WC79''L4?ymxSe>x2€r̾຤&3#lD4옫s$RM5L>xȆC|([P偅WƟR4vY-18gڔR[]V;P݁qToV9:.X8)#g}D!RUb"VB3j|9($b԰BTGob>BnUsG.PC}Ta\{ Y`(<j=;؉< 79Ę$c<\G#>m E 1&܀qjvN8ORQd۶XAz|bm7ȫDM-TQ\9 +W%߯{ϸ"mU0Lh\wNw똻5W)@P:7%.\$pܓf3qL0^~Y@u+ nH¢/(QA!aL`J+gn0M/NTw-~ImRbJJY_Ki`cR=jΦYū=a3q% gB9kpи suo-aLBED:zfwzt @UGi {:-R=*#ķv gj-IP@ 1!{TRm# `PSu0P\"@.-N<XFc|%4R }qRT}|AzHڸ+=Ak_Q$+q\jt$Mro)]W-s܉-PQ'&% %Bhur?ds1 դO7Fj˳5B$+12 xf,Y'2 +_Z$ԡeC,oBhލIvjۛמ;L.m!h3X׎vʙ>v"tq+]`f')PlV"فйlKΙ߫3\lsCW?GL=tWO !NNƳ\43>8 Y'x#sȣWiPAR p$HWtmt"tH [N)(wο#L&g2<\b-$ϐޒ&|I1\,Zj 30rl0EsƗ{qUVc4܀*]Fʾ8}%{ͼRk5T߯Ϥ1]/ygc*2qJEL)k`Yu]je#a$x2y v:#(We4j'hDGS Jh^gzll&.GE7$۫8 7*o0 ̥ !rRS>DfL1Y{^\ٻG\m~hX|U {a ӴKhk6?/5$^|d74YߦdּYce@4i(L;ʐۃ`@+߹zBn]TR1u[?)Ϝ\G(~ܿd &!ll+\iTpK*hOT5 Oԫ]R9OZwZz&Dϖz1YTLI +4 9Oo36XY/c MD +-+aCTgyR0~w"$$`X1>*n֡qK:hnkJv&/-f +hphg Tc97l/w[ǴɄxyA2$k8朞dHk8j;h)3m;#u7jdbOjIXF@@X!͗~1ǣЦmBn0:8n×7$x1C)1UHq2bi ^KØnT8Os,`"6i E,GES $Y4*GBՆ;<]*ԯǐH5uPFZ[sAq=A*'uVu<:u}M:aU-|F&eTCǓ3R"')X8~$qɏ@WVŮ4=U[MqRt M 疊hP o~siP4 Uk. 3MwH]w4< H옓(E{˛r hBt%腍D&xbD4Ȥ;]rǞAOVxQB,u!Nxʾý.ŵdDNmTɌ͍)'ސඞP炄^ XؐՉC|υd6!T}dEY49YLp&XnlC;CZ$~@j>ɨCH(hC%Z[@l~HG4<#a g]fp)#' +{Z÷ī,jɆo)haib>h稊47މ +M%8Е,Yb;$Gv4WӖTA0A&뷤,tN|};Klzo,?cny|$4};DF" U_EQVx}KLQ[j|KV;*>O|\?a+ 62"-v2{!y!-_&`xے8NQ3Jc.vM̌IV3i⒅Nw)/[: 7`0IXwcS ;&coC;ԣ_:8K繇nJb6]&yNM@NLf|zDѭe Y/x 1ջ\!Plg{kȴ+GEƎhnKd[Ppg<a"tTՕĐ Q/dZm.남ftʼL5_ʼo!\A{l8,Iy7Η ޸D|sn_Dv>2"Z{B$HuxI X8;pRx)6<4Rx'A4i0<ge0֐K F oՑ}|>I ;1;Q<&T[?昅͒}<+c)Vo >E3 jMBpұgjG`VMS_S5f-l;HGB o4 6 $o +7ԕ%i縰"W[`f,d9a҂< +6S;}ZErׂxf`,>*}8@Ip'u'.4l\tS>Q=wkNcZ#i_# *gBrS%^@k8дo3[بǔ͸ei1b-s&A+Pc7(^0AZ6Fi}Җ19yf{uW9e`УdԘ0lGwN߮ں׾չf:LWn9edECc4`vkʒE4'ڱֻ::;Fai A*)xK͔L\Hp!#_d!m~Ù9 6MEv75XNŒPth@F6rbR/ylB2ӹ *^]p>ta~oϋ +GdҾJ$--R{o՛XjfppA9J4KMJe + D) !{|p1J 1e,_ooGՍs*4ai#tЉwTJ6q7TǡwTFU%*Ӏb)H-U ;SAlg9L.wRO;9:\l:Bdh'j׉ab·tIRՉmt9{P10M'#ĀX+=2 ^H"sR!8 qK!D'--;wNhXC's5!bT$1+I+B^ dļpr Xe8BHyG`Ną}tqK7 $soJmBI\MB9l]Jࡥ&lJ\VX_M~DRj2u&`N`L"(49IMJM4 4E q&$I<zI+Ddۉێ ?y.c'N %ębh&AJ?ӗ L2b$ G";X1F~Kn,l(5L.2VxnKǵ4Ж$fŔDfJG=$ bCD(ޅ +A8`drVdkEV\*+Ty^B*+?%qB);,-%ӋŕDx%nFICCbP0ϮB`!$2'3 i{ $ F-%\;s12)=`# < nG%KG d#sLr䙔$meGd[F"pex#o#@f$m!09cC1U#=4F#g$h0#4dyv,ذxVM_|IiԸj"Vi.5nL-J"FtX쮈1pm"(m"GȍܞLt#nTj"gyq4I$#~p 0|Ed qdEDG!D!;Ȓar!p{9g 61a=B;d#ht"(ߐՆ|.!pPhHTB)qL:! ;bC̎^H|C-D#, +18\83T 曐c} !v<y,ty?B#v Bܑ1j={{!n8agmW2_q$q c/dÂ[)+Ij+AGrFPM 1=C1$GPl{?P@|_y N *[ ț$E Km,!vHad;H<3)6A&+Ș $}y:HPLD`ȎBK 3vl;STHw?S&R*q݄%SpYJ'RBDGove`Տ!`Xшy\~h;KG<~AއP+q|`VfvdC[4r\p>LAf9AG|tC  >>VV{Õ!H`.GD?XA%=z+aK=FGNB`r0*Hpf3s$/) y +Lw6N,ŏ?6ie 00 щ~!Nh_-A Fp):Wa \֋>7s %//rhQE1' aqr]cN.W`t.\袑u}G')X.1\`LYƅ`.k';[O/ =fjt_ I|2g[Z-0bľZH AdPQ| +Ӵ4DZ%-?݈Ys}-(9SQi v,> +XHa˾t՚B)Ŭ*%yMK XR4 +)W('JN,E mti2Wӷ +V*ՊuQVDJ1Z1T͊?rGc*_EBrU0Ty5U AI̲K]0ƳQ`H.wETwR6zaDY/k/I-ߋBg_.;p2C4D&CD`/yNO˲!BƜBIjB"!$&1,œNxyAd0 4 '1t&Al 1!AE <b/({@F1 +=§Uyb+ ^-0Ƅ*3Sd?LvssbLt2As}Hdz!j}A9s̎L|5@^2{H;>H2dVĐ,3$ni`N=Xb=+=e>Aay3d/030ytG3p,l34}6CHM̰#y3o`AjeP.ъ qa~(ɐ(̂Ǻ1C1(Ypsx5w0@ rzĉ=DI CG#a8Lbn52OPԷb3_}Bپ`kY4k{6&R/  L(!g9;*搦 3'ݹp5'I= +b(~:ǭ嘁 }Ύ'0:f NjBj(^ h*jauadA]X|b: _a| 9vwα\!9*:1=Ybp'Г# HB +sް +vSoU!+STH)MB_OAZ!Y<;݄'19< q뜐xŲy5p$['Z1fM+γ<ѣJ院 '`b`xD =1{tȄtx3?#>H54ٔci `>s듈&>gp}b!_&9~N==-Ϟ:h *'gpA{ `KX.Rg OWBU%XS:? Q[~} +0lB~$( 0$k 7 1H{(7WTY{*wu f.qrG5 H 8 +{eN[i[lk.X-8K3 j$*[#s\ԗp| MjBwʖ.+bujM"$bgE^CJ)$7exeJuL";Oq̶ uRSRyR^$/K_&,aYyNFR)/m`(WǶy +PDB-v]eׇAw a yv#]D,hLQsB\*R&MEXնK) ĘeG"xժ%*TRSj_"pqP*/E,BH3px.@plL*PdZB&~l(-U\G{^!oxBa<!D"ܦ$!ɖ|Y"iA]x2/WeLC' 8+DÆٹIAѕԉ\mzzozXZo `/(5 څ`n_dG`)S!`%dԨ%c.fj 4}){1f`&kA(Ǵ6.^7A+<p0ANZeu3>?zҺDb+Ձp%H^FYELGQ@HrX< jh- tZvG=nlYp$\pb>TD| +)Jx-{l!}i% &Ro_`]yqFuHۜdV9|UL wP߁ BbQweIMP=|_w,Fs̓FY8*­65j9&dPTPEO7E,x@Y&`lRTx]} E4 Aw>o d; t&H +G ?5~Ѽ6+ع0\A n~wK6 +H_`3EYdk 7~t)d5oDY`0PFSx_/*IP4?Qx 9{}D.ae ' .&R{ŝnzu$qe3z0b+n+ba搢; w`P`O=0 + ejl_e +UcfZ0S[!\V$#u@y%oHVՁY:^ƾ+3,2̄(Z-4qSpn(F.D70,l Ẹ8&;P*:͠J5zg_4@s/@*&d8U#=f _J63mL )Up}ʰ&11[h_+Qsu F ] @Z wq~ tH6h1\@*t `qrMSxq`X:+R̓ 9̡~e=\FAPls6%P=6͌ߴER윊n׏ G*W߰}nc4ϽR"tBKl? Mİ)B3篋R!@z#'10A,Y~qPY~V3WFnVg] 5ݯՑA2O P?[n5 -AT_Ύx^5_ɰEK98=?x"yX&G}Rֆ~'&]0PO& +=Ӟk>˟Wf{sP7C]y!jPM}n8W?Mэ>?$#4ĩpQZ|RCR m@J=bsu4m[CnX0@#͂5 V + +]Xb~69XБ8(@SOܔu^:7R0a#&d h%ȧN5)<Ģ78ڔ. g䍑j(sJf׵ahZTI*Ze n~Er] H /,(P:<|YfӍtDj_y +N!q5o'DsҘ; > [m_9©~1g^ V5=r{P!M4(c>(7*큱_EAޣ'y?c9o d%_y?%t A {Y.7^v'GXr]DOۧb$8)HpUh`Xk4j,>< o-6OؚX=];!aJXh2ە +'#Pj Q5+S$(9pdo`?ȲdBW;/2z<}&[cΑ',]?f8r={Zm(Xz71LZ>9M||РfY㠟3!1+ӕ\gFy#$%$d}:TuXKd,L~R7L%n?X#UNo؈Rq4=F OcZqw#lt|/RmXg8of_snrΛłSP[~_sp_|}kg\/_lCUy^Xhm)#`g= 0P+SnqrҾp3ȅSiqR>/Efj?3g}n}d9Qdɣx\na)ᗌGrx@q O 9ۋr"tO$3M(&#JDcx"1m)nMQ';f#s(_2JqW禎Bv b0[ծ Z#h2zG e7/mj#frr~BEr>AǦ]'-:ʀGoQO,DE|WIYgJh*8&'s_ũ.P5 X Nc}y z^=Zlŏu g'Foį{}8,+(faV})%a(vl +sGl@dW2}~f9+bo!Iv}BÊyAOhlӼQsgQ'PI;}Yfjdfܳت{aD'a\坸$Gah=vNVs1J9 CR1>ձϭ{$n>Kb ݞS6JCTHWQj[s{g :G뒴c#ؾ)<̶oÎV(v:{N6Hlv<ܚgh3Xъd>?!͗46Hhs*OT_)p^SvY22Wj42?W>*uH@昜rd d( Jؘ!w אȢUb4bO+2/l7|_Is2r+wE/gM%䤮+˾\iyUBjs˭6BosՊT.NƎ0$hitM00R9h)0wTZLu}9GMS身a =3n\t4z9Y8]!0W]1;bQ $澣bʉZ9xk!rbn<|f݆3 )So10p^yHƜe*c>OxMg Re.b<ŭF+Iḋ/S,1?gz'/ϮQxa~WQɦ3_NOsbJHt0 !̯mZm0W. +X`z!dNb:HB~O,4g0s6c?;|Ԃڌ\c gQRl2~ҳsݣ31ۅ + U£.I1!y3s褜YĚ14c7ۤq8o.B iJގnTNJ0+f0bRlg3F/$^=&"mZa<[SYr "*K)$vGb Dy=<%O\.}U+iGR<TGdr}Yj`{# °Fiˏ}K2,qm-qV%h'RG|A{# Dq,; 'cn֌BGnI-)S)f9^)O3?÷/+\(BPxz5K 37mq |`8v8Rv~YŌ+xW> ynMt§%>stream -s:#L Y܆yD\M!&xG*ץ0>= nݲQCpuf2xbCAo{N]Ev07u/0[EULPގAT3'iHʿ{mhR - GvBNnV˓^!~7֬yω'~ "&R_Y7 -,әԽ|:'ǷGjg]xo"'Gl!{] P{Mek<}nbdXGs*M wd۳?^yxd{1HMGvs]L 0z燷3>o>n P$)[&Qn=%: -WE%8dݔC"ͨvo029vc(a{ڪq`ЁL uW?QJ؛] ,шU1Iw0 A8D;w1e:L7EA.4\^VFg,m܊g r ͞In߫T1G U^HLpqw'gW -|-!'qwWl="A=&ER`Hrnu쾍_b{[/ykڊzZ(wەH.t{NG&FST(Ňn-sbx-HCXI¸ 31e/U6z fFHS;$F*=4{U ͐MWX6,2t %w6{UM֞؃>Jhel ،Y~IXW,ڻJ-A-c9`A"WvHo5JpR(U._h7Jp4>(#^7KC7ڥ IYU@ svNLv&8Pf" 8|}[×ެ^V٪7 u uC]I ±l-A|+\x]Qϓ2F{:B{%3lh:g b-V 26Ԩf>76YD& ?D2ό&6Č-4N|bWbcÄe -b$w}7%y*8l_gѰ>6 R(a^pq]p3"9>K`rm4n|bmy76:>Dq-+ϗ}[0+l'B_ c}.ȡф s˚u uiXuԮ=c]#jn &1ALpF0pji; gB[u^_uխ -aIb+府b7Dǟaux75>4HKDq.U5~- 2fiKGXkrU@WԆ}5 4Hz)*'@od^p!֔BtςN f0D98ZKo:zezN9/'胵LWK膺%_,|,V)C"yU,E9FWFӜ^#u^66uE6CכSX_Y!iͯ~=ʬS8*Hga$l\[r-GS -I/$8uyshZS.(wQ+jT(բ[WE9BRct5A^ -QMoD49 Ay4_{T!2#3E(Pڰ-,2i5vR;qJ! k:S#`pRлAK#ĥ_☰Le08+PghӴfyMPs2B)V[ O-(of -y8t>E^v J^SU=Pyz#o@|W,#jmEnxFG-p‰:FII״,0/oSmѧf!Vc;h*7;CoT}OcT B)¶UaI t6Vmi֌ 2 Aba9a,Ъ)CcGZ?ckj\"%Gۆ, -jpOe8Ǻ;d^\daĔeE-rգ9fNN?&&p6Pg$5n>! Z`{,N|_\Hki])n2-;N6ﴵSk%ܫpGh_ ?}}LSːv1%arAF ,ԈDzJcTL=/x$E@s0< - .>>Ps–yp\ըi [/_Ć`X2$-F|򠭍Yh"$1\jj&/ؒ7k:xj޼ʽT[|&KīN Pfs&[41B6 -r;)0bƑD@OR>#Y>a~{O)peuoS|k3A{~%{c^`dzuHePskm|j V$1Uĕ:mYNTlX9\'_CX hϒՃF(ȨnXy`,tư -r4hT;7m1'qA ucRd d9"^J @B6FSU 9NuaتI˺ -ٙ-Pì]I2yd%'kXn-r"U -բBUN_9eN\t!'l@j,PF -)4C$ -QhѲ,Ԑ[4d?9 ,֐57ӐwǨN.jYiȦ? OАԖO!8ʐf쁍4!ŀ&" s]%k}Dn|L[.f۫8˾D6L(Bu%c+sS5"TgV3"xewj"_Z=ҿZ_f#[DWODWlY -RtȾ%^Wm*'rtky->nF|$6J-%-{ ޘ,ZYdW+:9>mr;C'1ߞ)%ܚf43ie8gFW<+pv Q;3(MFC. 8H*#x_4U^ ?KZÀ4>нV؍A(/WDUhn)C}pወF1j?}'?iM޶X[;dOUэ '!s+6ՎHOxjOiSz+a1fϥaetN >C O`v > 8R=F~t@}"m dCP(caV ,d'5Е*V{)r'tI6/%Yq "԰?~"@2*$5ӭ)ˌ\mE,fu#8dnˡLbR,]RsH- o:(VCp)SV3;]R>iFRPAC_pFDU*I?!(tWѸ -gz(lj%]6,`W%"{XaQPJ}s.u5= 5fY[4jH6}fs" !1־T KN= ey9’PUUs4Vkl۠L],9h+SWOlGA m}*]fs$ZOW[Ht#;\WjkCY dz_ߘ,ClT EA+6U46 #GQlWQ]6%j^Fdhmmq"Z|X"a=*n -DjߣZʵA?EE¿ƕjάL{atG}^Nߏ$Ohp}ogt"v]ݟNlP~+NkC/7/J_ƆF# JtqsEd05r߆k9aV|Z5.oeg+j:mכbl}Z_}CR }X[{Qᯔ6pā9K7Y臓(N}[_@-ߵ{Iu|6v4}Ϫymi7i &hN!/ќ -E/6 xǀKB0jp\ R܌w8?WRx#-\dx5bOrMg*gfӍFn6|=᎘@\Ec[?RiEKKfqQLL\dzm{^ħ3A4q,?JcR:(.qQ4qB3߆d7Rg8{HEg&\pl3q$:7A_E{kgd8BL\K2:DDbB(Vt_OjƲ%U@M<Əmm4 -W\oULN -9[h{"M)1dzxUCk&| -#\+;N/<_yqrGDŜ6Fx$׈YrTذ&;A}[]}l}̞UU|\@3>G-NS+!O>ùɳ'O؛_rd }=O1ox O: ^v+c? -ڏ{OyA<'~y01~CTmIωRXG*4l7] 职ud[f6 c59± sq}Ʋ-̜_j̭ D` a~pGB?Ol\PN)!B?5ջЏ~<{~02oe7n]O>o55U,uC\EL)PYgI[3g3Nk-MK_"Wp#=Ak@i@MnQQ /(] 0K@OF* B?) ׉[/T PV"SA6@/~ճDPHu VwEDZ-Sb{SJP/,b6`@U|!|0eN~@>K  %!C`g"P{L=Ir%L 1$xS~SW#&'yVY*\ ByVHJ<$$f!5<H\G++t7E ) v4F`V(MD;pWM3xdUc(ښ^z)[P$+>ʪ)Rpbz#,qj>)f"X-0 fgg!]7!%)_l/*Jj<ۍ?upcD(0.Lt;iq1K5rnq -I+&`6);3h*tm'QGoc|}H.Ap|8"vPx_y4seY#>oGdUi0dD&DS ; )٨aH+ ̢YYMa}Sr)(^֦c#u}.˛nX-MiniLdOՒ5wC!#.530ylw%޼^*mKK@(z*1) IjF7 *cW.(3ZSix}ޗX /Dج_ -wNN}@aaS{3h!֬dȀ4Sn,Y|>avp[)~HM)[v,,FH0OJ=0n$DmrDGVztSafx՝=+$n8 -d$XKdxU1'ظlr8UJfx[I ft0-8YUcPZB,w^,JCeRǠA+6ӏM߮uI\OkKHu ۾/h 31FR {zccxy͞_c&] DNT4vc(6q~.!Щ4 -/JU^@CΉa T0bKL.q13bfTHV+3 d^"?bq^pOhΙ{!)%)9C TDE -!#m#<NgАe7Zo_\81vI#˾Ͳ̟y(WGO;~L` 64oGQ´m뾍] JH SVE>Iثh\^RLi -TL'89#}UŎCrUJ2yl540ug3LYchg³Pѥrw|Q&$9w^\5X&7AE6aAԳqw]o[}"hb9CyP>|{ׄ*dp NLE:vM }?$*x No(śIKbk5X{ J@9{:G|'g|_ێ8YԳ?2~J^$cԺټu; 87̧CB:GEv ~JݢB{  -BH=Ϣ-çF9boYe -E91|jt}2~l4 v 9ysVs9ҶcMdixUl'+& OYǮdzhY}O@e(ÓV!G}hZ''2Y} 7V_!l2l4P^k;&v, mý_7eAPqeD8$q2_L[uylA651٭\hIT{mvDaϣA Izh#Xq|8g"+@ٝ@(vO`\uE#7)hBچp uC+˾-mNp_7ão"+?)cQ38AyO$_4m>!y}=Ǒ堟d/v9&M4qߛ ؛P6*ؾ Y8y}e8v3KŐ@4v#;AG,Wi/Kj_8RL7iR1ٯXdv%QYSCw L](+VQC($s"u#3~4} _[-F NB,2LflJ^5'~9CwO#QC<6˔V݂-2a~e79о12~l3_bAIO`R:ŞvAFg5( Y#_ $zh;2)4 N -ڀ*"N-φzel'XH&T1D?:vq~q?qQԳk -K=}9M[ވ:THK(wZɎ/!ɕ8X]Q^pϦsjUN6PM_j ~͎: oǼ1}s(ikzQoZQ_`Ov-ۡY<,$T]i(P&a_BI3h!Y_ȤmzO?l3? -K ţm~ ܯ9޺^hĨEU[U(r@bT@"kجjxW10kP 8ο؝qaOpb[@2+ P>om~7⹺(+(AIsXmNwZUL^Ƀ7yq݇K :w4uls6@h6c&Tg꘼'g/u֎ϙ Eo:M -B@"}:h' ٟ\}E}Ǽ3t9J&u_H>zwѥdx3"FOc޳""L{R>$&a0zj\@4氭|۸5s4g:w^hDĽsg!'$Z;Mx7[#clͅ;k οu0viܠK@/gHK)E~NAo3mWOX?}Mu¹)wj?7z/a?r0Ɛș/rfsL`Z gFإ6rF?5bNS0$@+~Je=EUĻ~F (%gФP#M㍛}&TŮ;!L". -@]IYSRJ/P}$: ^\ㅣL=S+b=Gh\2 &RuDi?R!!PTz?*DBQ޿9>{)FUD0zVF :xSȒ$sz~FǑy=FnBۀ*CC}4I{];y'ROB}fm۬Mbw $)`am1B*+=N᝽@ R' yB:4hGh -F8D;xQ&ᝨw0tf3]w1\6؝mwj,(i ELeoϺ}-n^\]Miر` Bf!Qwp򁾊Ix󾏣wReY22{֌̮D -F7)>{vƮ;3}puL lc旹/}9vkp,fMdkj]MSVݲ/f[2ns^l)dgh!N@@^s_޺[q6^mlZۘ3noy AJ_)0DyoWv=ӈ4 m&U4ZhLyȼs{"ffFڨK38GНqiMAD0~ \sh@fЭ(}#OCdu.skZc͸1;=57PQٝZ;8: >{0A>h"mIܵ2{oF0!]=Qaml»;ү "uGvѥ8x'<9&oMV6*;V Mz1v{L7(3Ш7&]PF_ZC R*Q8;JFGD'Mw> l4pg(rgƅCѸe5ze> |in4 -mvkt6YWNqԫkj5.] #F5quby@(3P1p5su̞Ӹ<Q7'Wgl9gs]ܺ6;woa>59lvA\27.#I7;'RYz]='75r4A#Ϋ}8_;g&"P8Zm)e9-7'1&,H_g0{h:vuӪYyݯ3~n _[ū!v *yo2MFvP7޺4 ei:i8o#(kM Dea]9(puޛ$C6ҧmz \aY7:׉8 7.6Dy&S?ؑB3pQ9?`"*;("*?6y1!&aIr{>|OԳqv`[nosfZ79g69;׷.o5Y7n."-Dk#6 k"º5@,JHtwFU;Jg`Y1yiK,]/luiDzq֥.;h8E<_I,}_l[ㅣos=|qu'a -~P8Zύq\vGt9X4użnS8k<[a̫D ?}6YM).nUsx^G{$j$Rp4F@mvȿ> '$6fg*EZ;tRq8_;oS8ch$g#V:vG/"(Y=|_G|sv1QDߧ|oA:x$JA/d96?R_MᯠģwZU?vߜͣg;*+5v#ߟk/ogVN]Aq@>|yyϭ& Mbt*S)&^ /r˻1IòG@Z+`؉@ -TDY980*.T H?dx|NbC?tIZ}u$?9oHm~wH;y'1/qhB#/4H`W2j4MaW0yGuz_sw>GW0MA*LžΫkjE<(laѶI+ ٗLI=z>۟^TGt*Dq"Pen²VpGpQ!}juz ʿP!MI6?f74J`47N}N#A;y_r3"M"AХGh2L~ye;4|}"~O㞯!m::i$E3&N❗si!t -&OwI@UN(x:N{)ӫO=N_{]~jI_ -HDz& TMI&c ,uxO}#O4x?*~VFH<~Ӹ2 K@o^у8u6ާ1wmM aFvF{ʄgP~Je|?kyNm |drU`.?0@~N8y@9G>4:ϲ} -6_7[gglg1ɽӈeho8b'W@uD;/.|O _CW2ltv.ܱ3. ƕ[i -̟[Sn77vscfsyC>k萍0vh4rcm_#ΫB } [=qnʿcHa>~xz!B?t9Bо6s5NIA(77XkFzCo#X@ .(zh/?L;CwRM4WX(?~GA8ߺ={dDg$EOtI@ mvSkMxC:V<|=yQ;zϖk2xn5YPD;jAVD6  o%OĻʅݠ'$BvPfߟ鋣gj=Iַ.lō.sY`\HG3k5L^7 wom_˻2ڼckꗺ.[01:df+uY9}Z{m ,'AG=f̝8t#4~qg/~oqm:'yzo_{aGnlk8}QB6F(a6v!LH!!GI:b;sy<㞧2zoMHMxk -۾/$8 C6a^ms(k|Lg6u嘻59FSuz;[th -.MĻig.kzwд: Ayh -2~ps\A̻#O[(28 m&}$ZhUl\u8.d9@]#KC3EsHwxl6a̶Y8/`r&1 e[eY#{(dD]ҴX -w{S+ԫqor]K\\ڸc9K,6p4NvIےqx'}[@9OBٷNƹ¸ ց\d\_-=s,MKV621z,ve>Y/rf3ηD<[oyܫ:Ұ'<z#C i -vûb}hn4%`={"mj؛XҨ{no5o(S~b]>5.Nw$mhgj%o]θlWG|g=9fsefF=C_demv+>8/V3|lF.Ϊ}٥;s]L o -h=g :⺮^{(OIh/~KcxkM!6t^g3~o*vQMm~A0xi3x&>7(kYh+}~Ng;zw3~puaWv$A7ηΖl]z/z7wЍκ2Šoŷ4 ̬, L;fmqufڰ@18 N~C+cfn26p2 x^aqŲx]1Yw W&[qe -۸3m!卫? k/`>LKX214y,;dhM沶x _ޠfCmåUmBWS[DdĥUtSI1Q1Q1})wvMN)AMN۞6ˁWVםSZݗM̅eŵ5UEյue5uEušnk*j+J Kk*j ˊjj -Jʊk -KK˪CWVVUVVWWU֕VWTTWVUUU-)+6.-+...,*YAUVVVVTWWUUU]¢⚲Ⲣꢲ꺺¢Ң¢¢’ҢҢҺҪښꪚ꺺Ҳ꺲ªⲪҒښҢʢʢºڪʪڢʚښ²ʚʪ겐ue5UŵEՅ5Յ5Օ - k +늊몫 -Kj˪˪jkʪ+kʪj+Jp_8 3܆p^ax 0<] 5&L@lr"94Ӌ7G=`l"X,QCG D47P7uJY.J[JoY!\1'@a!iKN^.$lj0q >s6Ã`?@d7`rpZ -PH<We! <1 2q؁G5x06Vrhx%_$F!AdO0q($Cč<\%^ď8R!8xAfP?5F4 -g?܈p$.ė΄0 dj؂)Z$~b,栒J\X4=}DyJʤ3NU0d~@m4 `W 0CG3xIUQ*r P$>rHs'"Q E GM4s$RLI{: cdb79&H@N$@O$@,o 28 c Yf)(Agx9)WO eUb@c>bK. Ųh [53 "Qh-LP4Y`Q!mʕ:PVF(NV6c\I,Mԕikl&l[ -a1t\\bքQE2+N$yI:7nwnz6$bH"˙dZ`)[!W Y[K@%;2 I4,"sp K@%8,`< Q;SLiSdID*OI,[ øX-ZRHXn")HTdSēv\ke -= -$S܃Ӓ2H1#'HRE؀J||#?l'7""]X(>M1=`|z{$2#EfDB` = D,*-!DJ.mmr7>=":+șZeؙ=uڸ'sKE!WV-@rNlxNN5xO!D&1r%0ދ[f{ƺr=IPr,I[ʉ;- -k9Ư?.v]!AJ9@R9CN7?RdaxĆe JrX.a eDLpTzf6 A 79rs0emicRJ#:Ur3(0 -NiRkrv#K -ъ2,8ʔdrI'jzʫӚ̀W&WV[Hc[< 5]PQ4Wb扪vr ˚iǏ!A.VR hDvP-="RRLH_ܕ2 q -zxq N31̸ѴPeAX+uz&l#1fXh桐F\5DX;`v6&a4Tm GT'H1%}[DRPq- {䖷J堔V@+͊ (FbFdYG,Ah{RzsM>| 79ӦaU\-XOjGe_gВZ9Ia%@do(lӃP%z+E:QG>9O:A퉂Jۨ)QJ#aF#a!AN?Y V6!6'ĺ]Q eE>)k2}P0s"s£\:)=H"SMUL4DZG"Npdj|P *Iqqyq!Uʅ~@eaיX6PsƔH&Yl!YnOO6SParw2 H0T -+j9/ol14Q]'GDA=]!.ȸ7Y쇮'F>5fJR%f2!y{$1].5u 't4!Ia786f`d״ -HzQ-;KwҐ C -$#h6UrGe)R_TIeY`Z^ QL%VԳ`HB;#\-u -fN>KqMNTNW2uT9agXhЀF`&c-s6PSF?8-%.s!o#PɌާZV(!Ai᜸ȰmMfN܍OXhDJA5SRf{DF/ 6%+ 0>ZG64*i*u :/z2s6K"܎JxBp |f[FqBG.b72PDt+P*&yݰ/_ 2}Bu@E̬ 7M'DD6&eF[bþ;q1o93$s1 ړ=.aT^>I!gwKdhm۶Ԩ!cܒMؚ>}F@)Bʛ"LP L4]QjXԌX?F9KbK8"pVSL-#ܤUB[+&!Kj‚J_:gJ5aeP\qaq# ,pGnhr-߁[+\/ni-.0Fep$Ѣ/H[@TKmdpl[<>+&@sS7afRC@663N*bcb;5IRޠ=̍rbWb̶uMEEmk1IRERQQIlAwȘg*,-DD`@  !f'0<6 ]Fe]7!值q&EwI UsZw%':Z -ۆRNI~U9“RyWkȐ侣F;5SF3:+>j*?j,9hlqOnt5(ݽb=Y^XPKDwD?Mak3HQ/(4)tH3!#иEVd_I!, |͈v(+V[䄍׃it@T!ѽyJftiAĘ EeC@6: Y )bv n1Yaw7ӦoVhۀsNw 1w0@A ,-]@B *]CVBj텄F^bJXWa -k DcJSr:kऩjT^TReGLgCV|2֌m&'o¢oi(%zs!j1Ǵ)(S}dtƠu|mOdx7$/~7I,Kz -BUځYҙ+'%c֪Xf>zgEQ3?cxBg$geLVm -NHk/*/.B@ $[kDVĄݑݹ$1l; kqA] atsXpt<+BhԌQxj ۴)pF@V`- YP2*WD:KP',* j'-sJv\T/uhD*GHT9*i Pي0[rlRǒiěthr+4)Z!Ϛ[DNP BD)>5P$k/' VXiو{^2«Qqq)* jxT<,s=E?[NL>ƒfFJ^ -_;k'(j7&0l:)9^߬ -'\ WPrWk[<>g.!2""2"s$r&4%~,ke+ĢZ>8/.'=A_'(@utC/9_PX r+)K=~IQ'0AD`t`t‚ZYq9Di_SPpdvEHgU /Hh \ò5QGŽϯ=E h3׮% -ƤG@# I+~%7t'E<<{*-E]Rѿhx{t6f3hbH>W0MDZ8\BW:8)"k! " I dobEb!6_J= ~ >ziGh :yѹC>A@:cĊ<(5*s)Ę&lu 3݂+.R3~k◊!YcȤxO!i- Nzj%%*XVE$Tq9Wᨤv|r -LHM%\ RXxO?I4jm -LpT`vOZ |59_ɸ!Kޮ%ୣhÓtNAr4#ؠSjr]rI?1:{1np NDŮ ĺh+~H 5<0 pdv)vԫwZE /PE6Ұّ'Dy+&="*^i؅( G;fl. <9Xo餭lXIߎed@7ưNc_̶1l\;83_[mp]&pmN7a9UŎ@O>F(SG?/vNm]FFX86$>~І -EgrR+({R*'"EؙTU3$}Q+,"3Ҫ*[h*_hJk褗NO03@1ٳppX10{ 5yzjhY88gމu4 ,TIa Dio j>UbOEKR($}ˏ23l8J`6ՊJģ__?4X;=Dg5#g|`A`MP mJŤãMI}Z;+W&U_BFHZaA`ܝhZxzPz nf,/{;,<یTjH7G|缠[68#CEՌˡzsIg[84ddv&_~re G"w/TIF0A?{q*x?Z3@(|Mhם\dpY3<%=>cS*=dYB6ΕÓ~ -؁2zH?h~S&.T)RQYO<4~$OMIW@" -DĢĺTzT^Jdw $lIꗰT/tg>mЦ m#b!0 gM9)\!F==՚ˇ'quO$?}I^\DHF' |~.l^2{!)Z;1HYb=x -PLeS?J_B1 'XF5btR#*pU ?+u$pW@"30!H$HfqN L`˅tnb/hp[9>(9b:a -ɿny&%֍>AI)U$zJ_mN/͠[\1yk2:0Ǎ3+b[e'UFSP_r U5E7#}$j轆vjxҏ#~E6O"',^5o0lɿTşãĺ4 w"_AI{/P<4|(=fG5qOكwwݛ:vIZ~s8 `| 2[hrJsFdɗTn"~B]<]%OD[ D0U-2U:Jd? -8ƻQ-GQi5;> -mY]gl,u(>fmc,]rVܩmsh<ǒ =7ZwZIAP7:o+)H[) `=k YPu `LP)k*$2ďDj\& HH2|n5鷻ewP_u'U7J?f.淬}y3n(/#[G|a,f:q϶jqDTI7^=sf1wk>C EeaJ+Jj@TfBMG^OI$n``MtO^{ mbn2 2xn5ms4: "tӪ1^a`}e\S7\7t2ҪaIXM7w04m6͠[GT*.Ҩ߀8\G]~L@Gw8= -JNg RZ#BwPDTr:UYF$CQ!ǫkGgI;*~Jlܟ_h6/V̔>wda'gEJөm4n -M^$}*$UobL, v GB4VZ ±Q05$T Ejo~'SF[hks(y%2X^?6~TE)4LDYhՂZaJ(rC}XfpV/0;%Nb?f|ChqO'Wܵԩ/qhLZMmOc-tץ!||i04mW0uj3Ŭ]jm hx,"T..k]Dm)~ fzeHU;27?~BVoaɿ`c-c/u6¸UO.fb XP^YX vҢ6)Qwp3Hy=$U L“TG&ԊXC`rZ0V -|Dzo䗼m\2<#'Pos]+3E25B=36=}Q,ovs͠XyX/i?:R[TC5LI؝F$v KA'La~9OȜ\Z+[m, zkZ:S>D MTi&5#%WypnR,0Tpή_fFf aup RDz. ;P&㷖jaܴ6w3qj[1封kxpw1 T<+3B=j`?k疅qD,pVʭɭuKA-R*"so;Dj4 Wnܣo}Ó[f"{+I׆͈Aq]?JR,,r9y3 l㥛uR:dJ^"P;B7;)5콘bOV,,i\ة7`z1ةq20 | N^;m4\b6 .p+7$ũ\q4 >~ sPUKCtQ")kVز*{ii"0IqwgLLґEuRG=dG)d񠕊ɅkV9AQ1{MY~UqǢä+01! 8 '5s2uW *=ucVj J_Soe.paS7F1dc5mkXvtKSi19QIAoNNeNDYr*#EbpE~T~DTzq9m;y8ndu;[!7 Pb5t`Lr%0Vl#Lϓws(a5\-ݙOA,.^2 LTүY[Y8ālp)(9g 58 X\eso{@F$+X9X֠B*&$&i3b$eD60/"{10OءmI*=TY{"*$ TViHR>3\6m+!a)yU/.{S5pfYm켌ڜmCxh=s5qZ. VMS+iyGbrp!mIؘCRWdІ>`A␼7 :'~32&N ڟŌ#,*d7(6ٕMKLBe\EHnplr4ɿF"O"&גUPC9DŴ6=FA K}.6LFm;9X ( -:|2 -YHTpcOmlLvh -%&k JHCمL}DWTeY![0u䁱 P60e)ܯVI ;퉊_CSdٹ_f`DL!KJ,D:ȝq)wՄ9iJ`qޭXץ.f}cY(@ 2,$dJ8rL(lD -D+%=&6n -XDm:\ -rVųP![;6'=3l#]"Of ^hNg:yh/j-+@b0d<!b@o¸}li_n1~ec& qpJBj[$bisAdY?>E_K3*r:kDzBuxhM)|tZX@0{i; cgF8޼Zombc`|k_R3l{K+{Su`zA!l,c{gyp0Na%=8K8h!x06AaL -X,!Z Z<(9e5u\%S -@WO<cRD<@I\ T\ kϒg)9Hg./poE>^ |`Q. (MK7Lӹ -U vpy31 -<6pSlR6ԍ  @8.Q]S3fl녀e@bE4XS/,gFB -RPg""K@DIvHԏc#bR΂B4疕, |;0"՞M[Y/t'3&g/.9}ܘ2 C21z\C@рzl8׋QE!DÙr"Z`7}c@SFkˇ-_AB`⊼3hyJuShRܟ-\ajrXxX7DV7>U8Ddzo&:Ș::uuiD&YidYke*Xfs/Ï0(+_Wc$md0Aj\ÐJ/4,eOX`g,(ޥ@T|imA{jĐ0 lkL7Om+c%Jf@n @LJfDEwl R,B~ ,& -b=A%` fmXd(fW3h#+nԀSԯLB^˾(ƸH%I6a!ȢEFˆZRpÌ970o\/n]>?'x`XO뻒fۂcKX -dž-P9d\/)>Tk 8`7Wv)/8$4>OoU@GNnԴŵĤVD?:=)X gP.-{&w~-[  1l`D2?¡66@[ٰ`|Œ;.@'1&G 3rS0U:m()|ݑg?rti$f`?;꣭T؉@YE<[,&h Y\e+\&Įm#,C\aj,o^ok` -"m-* ^rĮ۲@CfS@-n{Җ)C c̄Q -&aq /*\"\_!_x^8y|@nn-SC@I(d<⾗̹ea/yfO?yHp˰k(0f `AJʩؘ1I5æ `c!c`-̜*~6X5\AQw'ƫx -\= fDWq,qycʺc(\ؑaػ8N% hqջ@a#,-sZˀقVK\ Z\`}sLvt'2:], O1Ṑ`1i\;|% ` J% -,KxTprIٍ m>q ^ /RS En0HlaL/S: C15D06F`<ĂD@ ¸#bnvh4,!#ޤÓhx86z ;& 9#UQ7!Yo /l!hS\Iwm*~QA KoaAk@u:"eJHeOc_+Xh6bU9K*!&zIaC͍ pI:}p@ܱ0bwэ KCBƄ'fXg9 q q9dV f$†ZM"tZg3-*|\*FRU40i -KPe.̟[_8וWVLxE( " -؄SѢc0hȰ5NA@FgNj" -y$mL_*_Wc ^Ʊ`lpX n6X -(] pdec$`D0@j]3-\"e-p QQ>c-p8k|B - hZuvP[Lh051ai!B01߄Ç`~8LO:77C'GC<ƢaS#2PJA @N3|7{XA}lAHu ]&)kH.E0qKbˍUG0aĥ G 7,IOqI)?U41M_)#.sħ|x%\m=q@ -x[tqnt##c ` aXJ(=m12qci n9kؑh# JL+ 2A;6jQP!([8abYE*7NqW2iI|0%qEH\k-"E$',q KESĽx#:|p17٠BPS*H(-DrQC"L:;|tohx#rc뒶9lk,j,dBAʬrV\,sϨ8!e4#^S)J90"n!iWz*p o71Y/WeE2:x@"Q2 LC8ƈMIEc@X(X00!VvDkbNU5)&&+ !7~7 q,?A/q0Cg D0?<7(*z8À šI$ &!,%|@(57bp~mHM4"+`\fK;Aſ%ı+jF3Q|K ~% Kkቃ18q@ P\ ,q BG마7 -pxTGm8F$3ć^d\xhXWfhNoB|iӰ,WG C+69lzwȔ񈉙C\Yj ;!H/Ԫ8需RVhwZIʈ9q/"U$ĭ8 ~`ew8QV/e} OzGnË>0 "Xty0C"OP @1=4r%f!lMo$E>2 -؄,1q -QzPvX` 8]>Ϣ$q?CO -R=B49bl" SQ'P/9:7otnN<n0A!n&kH|CS:dNE|{H_OG\RBX?G|ƈ=N@D?pqc7GO/?s tƉ5xqzD>Ȟ,nŽ/ q+ .U( Ï<܇p~wxL1C9|q -2FaaE 01=4r%;$*U1+`PTo0I pɈCt31 NGD$G,iK{j׬U6@*LJO3@*g!S+"D3sb .Y"~=m@L&GBd2,c3cuSu3Gfxia8X5Uc&eh15 dɈS+WL7;A D/: f?,?>p!ĉ\z 2܆p+ ư`#itj"Hݜp33f"/`z{"" -D#8c2P6FCҘ5˨}($\MˇCeL 1?9APuq*pF!#^9bE;zw !hFC,O4aWJC`u)VGF-/$$$çe'pF;!8n*i$yՉ&k9$YTA3aCM=SL'9pNa^ 2Yg wD\kAV h֘1bXL/lM &6BX9Lv:RzZ -k:۠щ8#G'N/.<mx)Aq(%A Tv%? S\̀4#9w,=M sc,d},CXdB R:{(hbӻ N19>7qr&`DAÓ科?NM2 h69JWъ6"`+#>'a 4܆]%kx ᜻p~Ãp8WH58/Ѝ0eI(%M7[m&(y&XPJ .}N -_Yc&"ͰVL bE2bh[d |-k3!A dÀvN54 #c_*bg+n8;{`a1 MF1f_?IIPR]f㊘23;$|z3f: fc$޸ew^bc 6XI«Ae[cܓs +M+قD(dE.kKp9'^v1+Ի: 2!Rf4!!.LOAq5*b|_F,SF')Va~h8&qYJG! #0삕O6ȱ'\ +ch Atcp lۥ80MPm__|~=/r|Xa;ZӸ-/{]w}5G6&<[F6+-6XDN{~vSTsN\6 C`3J/הKTKqppMrTǕ񭵌4,/-3n֎P]0/k!: ;ùaTAZx0&ʴgpϬKulSn 0;oC]NE&.vJ2 [ui¤^ E +(FBךY V:b=g8XpX:]'3X`L݉`=Y?}j `1Ŋ`=uHPWŷ?(h:k#Q1u5]>A~E>b= B}vj4nF*ƺ&F]~`+Hc]K;ǸCڕɲi C9U䘘`C 3(h.T_F 쁮GѻÓ| n˲f ++Kr}Տ|bʚ2:@}Dz^mFVGwz=+̞rX@+9mtUZQMM/Fށ˸_6m *z +~Lո&wBha-~4ЛX4Rn=6_JZ7v{*4QrEi_G3>^n]A:@R^-s42.RGE -lLI%FP\s')?ȡ`ϰ*4[X4D\j@ otY1giL "-;ǘ0T۔kr 8f,=}]YmHùHg%Y = +$ܠ7~ iQClS,wûlT~h%>jN1JOH auLoo#j>0+aI,T)?QRL}4㥎nZ0oY%U%W  :V{ +r]^,}p `ȧ{bs2__?sH"_iNͯNejSpf X , | caVM;Bz[U)9>6KMeQP{*9!C2ڟMn&cZT`6s(e1ur4l6Abu >Yfc=< +IqNtZ +=aJKKi5!Ӓw\\g-(BLuvjWkYK4J1۠0|&'o+y,}&ڂ:7ZMWb6 8 rۘ:gO1ĦF@qqoDAlڱ%=cނ˃6\XI\Rrz2' +_ǫr?[j-k +ls%"$CtŇtIiI+GI$~Vײ5SԘ뺯)y =i4!KcYl 5w!Ms]O0L5t^c6) )Wr_ NG]&4?2[׵7%?{=Kn?vu+K!_N2V|qFPW?d_yqb~+^-"1%Mk쿡@Ag8TVG1W?ͅ=F%xX(9K7 +V:"94|#9x2^uNC&N;uQ4,c3thَ%2'@Cwx']ރW(&;)%*%s"cVD|qs-('w| pE'Dŗ20"VBcܥ415 ! j9**a!aq|HE㯙Rw{07FBj*IIǘϱ a*W5J4JR?F,G|3/Mlb3SUXl"㱇EB4M%|kuHj}l ar<9<5r ^!d xj?g) KM'AV#yMX)Q#eY[7Oe):` 2f)r27; H7d`P4kKGL,+,OOjlfʣpw,#SE$AxLBE*sKU2+?WUS/q+#cL&l",{elYQt.[ű+]*Wqܯe:!0OqbA.OLb3+< #oŠֱÆ3c1og<\|ʍj^3ݺ٬t,6%o"j?!g$}lwt涚Yg83[y +]Nuۙ{6DϠ؂6y>rϛͻ0L"}Z?q$,yZd@Za7@\PѺ ]N$Ce/"ĨlVWm(FWD6 +xcm팣?U`#ڭFz:44/f[)?>R*>,=!@#\\p1a_uNMW~s9\a:k= R4vaѴħ#Bj4o ԛ[| B\ iӊDl(p"[]R%ko_-Hjsr|T+.wR)/I#yǢ-T v(s"1eՑ--b6RgCE5Rܔ%B $ݒ\ +l98@fI=ĭb5$:e5%u>$! +4uoJ/]␨3oNq ;z0ըc{KX5j|4"(6˜7rNGh\#PcƈHW`Wd:=R#)ʀziIkR3P ̓ .Tir"jO%G@4@ԮV(#왬 )-1} +jQ }h.8"Əp)$*C -G^Ϡ7/}uJJ-5I (W`RHgG1bDNjԼ~jE2AZ Qhra7lnTY LMSQ]WXU+\Y5KcWVZcv2šz=~Va}d\֧"DkGtuDzlc;2Sue9Pv0YYnIX`=FJ {8Cn^bk_Ecd=rh~vqE%+iZ?6)} e>;~M(&)yi#vzi-iI6S 6m jl~w-۵5ԐmISG9m1xmF-qRp"wE+r-u@ws&EEF^ Ov}'bK K ݘfC6Ԅ/o)Лzov'ED۞|YwL 8 q˰@XIKp6˿?j;^(Xp?ba(Zɿ1ѳ\!C"Iq6}lh^g~H`PRpԪ1A&$)ɵ-2ƎnZiD +8e)\و1_(5(/jІ'u#H Vʦxd݀a#`)k-x.݂ԁ'W1ʁEQs#9p3z@2EtrJ9& +{s +|(wk +|G52\G٢} +| Fre\i8Pa{j-1+nDr6  0$|%E%+L=Z;JhJ+)kV{|l/M +C|ʴA ̍ Bڐ.*EJ +8 e!_=Aex8H7 IeR&'sfv*Ň/߁ᆠ@ϡ=m\KjT!+l\VkȼFwem\At[ J"6.+뉜Y巺?v{DW{e̶޿(kS~o +70T}3_;okB9ķVz)| !]oe=f|q& ѥln D{ml!D}R:ؐ}i~8,Q1U._@=-7mpAEUs߽i/oBi RINY'ќJ/ 3np\ Xܔ73?ۄWRx,#-\mdxmb/r @4gf3F66|7?᎘&@\Ec[?J I,ΙE@XF1!5yC_fs8 +~Tݥ&M;¤āYl:*@\f TLRFEıINB~;G3r9^Ceup4Q<չ;侖1eCțxF'g7 +]<8<81o+lEqgYE0]l&xJ[BHpepUfUL,T_1YI<ƭZDO dxJ̬tSK{{%7;w+y^8`Xvk LF|Î1g8b#F%SsbM^ĿvLT@D++$. oUs%Ŝx +#Kqcx2@aP Em-?!ER<S[co W;M]BH9W^;'qro| >ơ?psr _PaŚu -'kOGV_bsUky^.nreu0 s#FW8 XsȈEfiZ$!ܭmuE9c:Z]+ĽvjzwUN7VG]խyc ԇ"NT7ӚlfyO:zK1Q6d -b[uw/} j:K֒>u${uim+^s8^v]hjvzCem矂gp)"*/Wr|S۝Ağlp*>/11/p!./.g|J[ŝ竜"_y}(yqӷj+9ו0+ψD|+A`RwV1+O'7k ]PC<*S@ 'WV>oCڌ%KUF MO^A܀\8I6K⣇PG];%IſO(~S7^}ӧ+J/+ϾIWއ]q1{UX{+*돁K/NF<~VQ,E>up>WK(|wߛJ Or>UbϷ߆>{Cx%oX˄o: _v󔡐c +oJ?SP˼AS?~u<2`1~! *kͤω) *Y@F;nrNz F49XǮ9q}c/Xn2Uf|p {(0?@#BdOlpfH-g#П~5 C?!\<2ǥen^Vo>5UcCd_OPQgI[O(M 2[p,(q n`SmM.8] @]e Og: F?H ։[D V!-8n @$vXE}d$u WoE| +D--RRb{)b `g~&d`C&pU>0eZP=ˠ$@x!M=R=$&B +(to(C!I)xVY2\Ba Tn+"{,U $ g@fPi@+l R^G3\ E +Pƺ 4^TV(Mr7@QQd~ch Sz)-PM$>MT )Rp؍8jV>*Ǻt}3\[3̳[ +UKf/6AAd϶G<|eB0wd#^k*I4%?\g{¶4 ~+v$}0 +upz]Ȩ17_A]"q$ Xb N+<5oMy[{qᲤÈY4Yu"RǔMGz2jl_ں!HsYVV>|>1L +* +M߅Um cF`ѣceS h>S}pwBF%5M IQ XvOFGa9$x'0;zxOZ[Pr q5GR/[y"?bq^pOhΙ{!)%)9C TDE +!#m#t Y_vu fA8˥)mjz81,ru\`W0xi3M\My!LF9_0euQC%%Ŕ@TzQ}"S1'PU<4~(W{+V!LnOc Sw68vN., sXmPًG(Dz-,\@~B@)P,2|j4#F]P.#çFgۗ,Fml ܜ7g<_`.m۱?6c^-)hW i +K^#8cz.#mWyUυt11h4R_+ ٩VXz[ID\v^b +:oxJ6%7$ T\~\>SibȲ95s_fo!]AHC:)S(Խu\Ϧ1yk!]ʅfj@U'~aI<-0H6u·> I}~&R bG +o]Y?}vή)m`]1][:LIu<<*"h32v\ LN;GQDUAfpy>ۧܳ}XH +Y@bםc\MCG? Ul3pٷ^h73~T  +DcG0#pĢIŞ$#4|3&~)EfW}<@ AH-5U?dx}4؅!ZA>_r/`i!<4~ ?B;:W bZG0B:301J2j \-Ēz/#Ka ̿Xý?T9x49<4cc8Li-*#y~?&Y|㝳@ C/6]u)&WiwdtY#?_g}%Qyw]M7S)mYx4<=;(2.$(NgPyFƕDi̷[S8G#~{+sW  +Ly}V qy)JEW߄h\!<}sg>..o "g60{ft]mc(iXS.Nԋ>C ہ*)/(!TXS$,=QI7nYho^B@M 504޸gnJUZ;@T,2AtוTk!5(G5^8T3"S+({T%pO`+~?a^IF? ؁*y +E7pB4)jC;g/mTŏ@je 9ữ8,IB;g|~ كm>Ox6, " >4 >4L47堽{" ԋ.9gld/vg KBVؖ3 Ҩ;{'ump)AvTƯ`MtIgeމz7L Cg6ugõӘk zV޾[Ig) +QTg NR,4Vx Q +4quϣ_:GB:@e,,,o[hR&4G^{IN +=I'D}cHgE< ?['qu;bųgڼ [9?Rix3"P7>+uǻnٶͦ,ݽyK޽|'RoFmaī:4s FPnK?u?8I:Q i74 H8z MV2')5֌Kû#X}ݩMy쳇. 0>dY쳁&lJ@(2q|]-i:;>ߓmF!(I.R}yh]acyMscdInecФwjq2: Skbet%\0,5"2㽃dTpD~d8GQ6OCoqvb{/wf\=4[]^~Yv7:F f6KgqeG0[ܵ0rh4 ޙ\sW(Ǽt׍B =] _c8W={suzsxu͖q6ŭksFόScf4yl.sq}H ]>&P6rpy8=OIh ]E>[gA9I?)h#}?߆F=E~;z+z KA2~lsOg2)'~?&"SkcM AQhR}D> G@QwT}I=GlWY66ym֮|sKn#s}Vqs"H6=0Kzh&,\} Ģ@~~aQ%tZ +FEVԙq_lKݭl\Z6{,Wk]#YE?q_ζ5^8;sw\}"G +z0ehǻ~UlGpAN]Y6suƼI3P1ٗH \ke9h]^;x>uyGF"O#k${ar@}"M_ hizR3@AI7`I/8!Y/~o?6s>Fk@6iU Q +?>lGxR+""l_yE;uw?'ly~MI}~ξD*Nb޿0BhS#݄ +J}^'18=}>|sy5Nb$9Ἲ0Q?|?&Pm}lLĻNGpKbOI؏>?'a/%Q&-,k' {7QgHbXDhSiz#Oï +N>z?4yD;,=)Tx,D<è6 NmYh@}Ǽhk;&Rv&gF@[,0o]!;x6/ (l]B~f7,< f8 m$O]TixE}E=!G?$'TFȓk0vh =7Yzm@~_]yCkքF0A~?ʄGP/~?b&4pѯ&,EGκukAzf~sxg,-gygFء6qFvA.z;FY6&7[Cqw'4¹FЮs&N^Y?g$y?7&P Mn)x7`AٝTTԺ2?|QR1Y?*$C4>7ѥg:  ̮Dg`HD?h2-@$P#OTguAPM~(WE;F@k8w>  {#NC;l ,2 ޙluu~vΖy ;x^揍Ⱦ#qx]AB4y0];_n˽1;{u!-#Fg2 {;б/qh\u:5:vsm77&Omk_,9(й3}n7tf~8ߺq:0,C?)>]mc8WĻd)2 j;.~u;o$P96u> +"Hҩh 4>4~'DH~zO߉+ $D<9޼߳g@AvOQD6h'h?&DwO11xk5M\ͳsMyE% x0M|hVPQo%ODh ??VD\H ZHz"M/ he8zfqܳ ļϣolC:i؅ZmB8z!JnC8ef?.$ kB:2oqΌκۗ;{#4ruI㎹m^n094m+e,\/yK޽̾^So}\25 f˵8tt sHw<HOy@چ|6Jqٷ[D<'iv kf?Lv# yE/ hC*O_ik+mF=oShWyM{ʄ_ {Ŀ#cj:q0y.Fy ?[>:w "L;T9h6r&ԩ/pf[W[ch;5Yo!˻sEfL($*0MF;x6M\2xnoIX., MG-7ļ>$"oHf2G6PuYB 544Q8t7Ζkanl .g2^eٹ_8brHy@%Mہe}|bޭ#y7;.iLKO/p_@a0 YIX PE!@N1 }⨡Qa=V1 }<т3xGf8M MED=EDRV[xH*W~e,fh ebHS3 lgqA/Lk 8 "$ 8O0`YH*`L<$ÄLvQ aa*4!b)^bI$I_%+XH5_\IdTqGM:HE+ FaTD Bi L:0 up!~mc3`CC +,OHc!S?L3q,zE#i^+TOF .ę7? %.c3!-?&X:4*)@B K%0, +Ial'c?tn~xDT2t4 g'oB9Z?[yJY쌼a)Ɓh榸FN^( H0$8@W /CyӢx,*e+tiq 8X.no#d.ܽeء,0. OY9uʸ9d/ d_K9$;<r7^L;nkHĖGvL02pȏM0ea<^|B +y\aE sMS:TQ 33%U)"ԞOF1|O@2LAG5 YPiM3#L"^RU%yJ!H $$R>\"u1ȦfQM9d^+9MI,((LmC=Xq0{lxJ4EPiD,^b:Epʕ HYUliؒ H,Z4m 1{L%_qQcHdt 6^sS"SH!Gj ̨ٞ,-\%:~f(h;{8cVrNˢZNx6K2?q@3r"'bRN0TNMD`XaĆ%KhX*qxdf!"M;EPq-Aͳ*l;ܜLY[mewژ$,gD܌>bsFn|9 + y;SԚC]}G rmy$-2+6'c}R`=j&3էIaV6(fHdMT h4y*tòfª$2pHKA"ETq9(ǥ ~K`-,(jXU ʏnJJSF5V X%ˢ:a,XXp0½C+@T:W&wLB=0c8޲}\b/cLLt8%0l"9;%39%0n4-vY~b+Vz ++iI8Dn>| ¸"y($WM/ND%IM-5ydA{f>< &R:*yDL*y$qttI_&3E#Q$nhTDaDy -/>4R9(=2E +a9ag0u9K"\$fr_vMN)*~Xz SQpgNRc -[l1[`A$.t*kNON/$p{6jdoHXH$hX'bO&tqՆmM( .-dWET2 E!lbZ+k_$T7p*0dh5;NJ:Ȕ{G$SlD%M<&+f. 푈n@)")pR\{F^iH`r!PfXu0V Ԣ1e-IrHST(aܝL8>R7?Ll~z.DBŠZeTaDeb 3чdEO'sKt:%2dM }Gl럙nH^|IFW4KM]G: ' )jjHRM!X5^cbh 4u'j:mQk`JTk Uzh`YV;WzBy,)uWleK]iC%yG@G2DSƕLUξEt<'>4د(XD ŔNFKDAqHl['"ns2)*jrJjPZ|8'.:$2l;%7~[S!w5fjDPt͔ل 2ìMI +:֑̀͹JJǥj?)GhX(d+*g(Qb2sT2"'*;MW'qZl1-5#G%xG*Q?ؒ>\!@w(7i +IoȒڿbMX}cGsFb؃?lsH5 ܑGܤaKwV'K[Z F`7LrDl1 dh 㾥A+UR4h;*~,yI:h3&T0. xٮԨ$P2hLJؘ>)N|Mk7hba!s-E]SQQZbyR{QvT|zR*<:l],2 + y %,?;PB@ M?!;H@QAMHx9 /z=d as-HaÜ]ɉ¶贔u_8@UTްŕZ)AE)&2;r7>1fp1 ʏ-Kuܓ] JcaAwxOrn472)qbS&$ RTk0' +*A*-Œm4n.YkvKB"|ED3;p2JU9a`hcFhgFHt&%~]$=*6|jж1!HnQO4L9L" ʟD $N5[nXXjv dG•jq pFP Uە%땀BSzC%g J0>f DI#0؅8-;X.V1At{vz("ެ.`f_ru"d>4'LJ4 GB;,ȘVTz-f{:oZw`Zwx8Ap{ĐfN#B@ +nn"biLV$*DMF)*6 ܫӮ,-1H 1sBB@%+}am+(rPyB,鬡 +jP{:c0Z{!!׮V?oZ9QZ>8iu$2*TS.(ِ_5#*nɉ[*&hJ^\f@Z %1-&z +~bkr$1hig(~ ɋFMR$E/Dvt`tIgجj`'ְYem@@OYUҚʹKBi E$Q1aFwEw.I Z\mWbxC#BlD ](;ϊ&5c*0'86>m +ܠC1s 5>AV̀DyNjD5ԉ:G& +'CIKp\?8R@~=)yh-' ',) +xQ)?UJTi"%ֆ0sf* +MJkE{2v0V!ѽQkgd +D ? I+wVZ6ភjETrF`} +zZ.%2˹\OAϖ%$WND ڍ NJe7ưI(WԭD할Z&"j0+t(3(ϙˇ'` 절 !I\)A ubY +s(NK bOPW J(hsŐ FN;&*yB,ܠe +:ozbO_RT LP!#!#!+<)aV\kQZ-Bҙ|K8ZC(2:WŰE @|៰kaO i?+ڌkai1`H@J?tIyy ]tϞjmKaQ-a!qžTF/-Z^EfLXRpa+%L=|gN9A@pgHC3H1ٛXXHzM@#Rm '2&SFZ 謥ZA A謡 ++-քw p\U8*3&\(ub=a*W$+O '!Z\7@g**EfÓ9_षx|W2.kB@&(R+d x(e%1|\2MF46ha\\d|^GL5?jA+'}%ò;.J%RyEoB a~"LB-]JţV` T4~Qjx4lvIx>Q-t +IO,,GhJFegb}v!JQ;{_ζ: g&u[@:i+uj6Y&M1e;mN-Ό+VDu/\ \MX)4m@U#~?eO0&} ("]wS{$|Q*4M:xϣ_?-B0z+"}(aܫ2 +Ct~0TIGzQF8v&Uq IDT +:KLᾴ*tZ5:S? PL,3V ^%GG^!%sΙjwb]2"MB ˾?boX#}CgCXbQe(u# +I_cL Nŷ(A+M+(׳׏< įxQ` HG8`:9X?yPX=D[*R1i+ha~>FIUD {|Pd}3X2w !z#kg䬛6 ^δ9x99n;#6#79/V:wH/@y5rs4&fdY72M,4W\sv?'lH URu%OG +@8n P@>_S8G4u'*r 9AG ؔhYzP%#sB,vLh7mO!"˺)|TTS*,%$=ki20!h#h?.&~&UR1 yo Mʝ`DR? +L,5׍ͮã $n˿sWP#~]٣&|TG@c Si>h3&~&g;4 R)"kQm~"'4O"}O(s(>sFԡ0th!|89u ̀[%,14 7m)H[ȤXH hpNJ@kCdDI@}o?*-S0$4 eG5@$v&$5>-p >Hz($= j /^HJGfz{ RVXS&Ԫ~ CF >Dk(VGQrM@<ԈJ5\ՂOJb;I4 LH'5Ymt3+orKb,%V9 +dخCGi?AƯu#OPRJIW38i'$bۨK39CLޚmbqNJVIG}hT*0;kwxgCfMn&Ègz!$]c`aH߿ Edf͓0 mW;}@2~ᛯ);a<[h{U'h?."MD=ׅ4{Pf`oR T<("=8: J@ywM`ܟᓫe]ΆC]Ҿ1 \6DQ/ sz)`=%fcAFmGlDĿpC}X$YK`_ÒΰSRLHQZ,~MAvtI԰+pXwH0TX^_FNאubaTg2>|wdnpZ,8G(WGZ(ŢWPc GPIK: +%)ɪ<+ac`rڳxx X`B|u!]}ED~IvhbYk +JNg.2XU/fD`M֒qpr.kDbF> ~"jس|dV];v7_M3֑:6ˮ4*7`z0A_(݁q&0'qVH`UV(5Ц`T*f~N/3Z;;3]$Y C'tx0MB; Gߠ:I[g7 黷F]‘к'cֲ*Cp@~5Ls 1HQǠ[%!ɔ}E.a WO)Uf + QZऩVXPm NtIj6yCp1wm1ujK,ӷVyAg ]ui:8pMaF7L;u1icƸ^9f&2ڀbW"%QD[ +¡١^=@UN2|kuok"gF[;G#X ytХ`8k;H@Oº2CsrQY7x9'y]r(T ڧ3~s4kaYkݺZnq0p-.5bq[4z8?xb؜'`IJr*d=~[+#Z(ذEW K([he)(qݎQQuKp|K!^W\XurqYG}`M\k +FLi JPeܤ* X``Akn ۝]&͌" \@vL9o-+imf]cf-b\abAxVfz8o1^~f1- s:X+$ອ[C[!떂[TD.vpZ5(5h'0,(Gʇ'J I o'DFV¯ Qq~rXXv)!sf9K78;yR*U:)GpJ kVCXLV3߄fG9&L}^G FB2Y)[sEzLcSN*G $miW!PAzTa9c0% 44 i%pj]T=k +ً0+]6o>U.$m @A +&鄣 E"R +ɭeUE`)$nU+#Sa궛ʏzɎ>Sa!SA+# !֔;vDr2b:E QIAW`bJ?B*/H1H qO$/#Γkd%0-Tz$Ztޜ\豙öro6J-y*f/}c|NcȐjs$װ쀉閦bfsrFBfQ!s˜`;&UF:$5j DY3B;(SuULK,h|(PdXHLp"g#QDF9)\ +WJ{Ll ʼntU=4 H*gNC^vmH 4O^{gFDHќNt^Ժc[.W2`y~!Bŀ@!5q [Ӿb&&LATxĆ$`hc)bic(bxH88(b&WJT-+u@9ڂZCBʍ$Ӑ%*]YL]! $C(4O"e \)*kT{0ۀdJ1s +ZNkxwKfRMɔxbO>5w\emU(|q0 B_1mm= ;)2ظ}(abp "k8Ȣ +`@(]LL,$A<8!r5qa;H}*H,r)1f?ȸ~|r8tfZU#4)1u8v h#T#SD贰ށܛaҴ/v6ΌqyVgbVr&&CXX(  axK{0q 70`?pB] val XVԱ5.YBHx9hA?Pr k!RJH@[rxj1(K?!ǤxPj3 ABQ!%ibSrD]/^^aڋ}ƽ*+'.~o\@Q09opspAI,( fgicx;7V50& AG:JŤ)#i-+[YvapE= Ʒ0/ +^-Nb gM2 +^\rs1}oe@d^ce+,3 +؅qM7B\3qE5 E21nƀ2 ז["6nof5yqg:'F?AQ[*g^nnn|npxn@,ZEmNy0-o!F1H'}0HgLt:('1u`u ӈLȲ2U^a PVN(2H a\#Ը!#^.iXXPK*+Qaڂ:"RKS[k!!aט<8nLVPK*8C̀~D͈3YȅB@-XLl`-"Ć{JDhp-P.gGGV܈B_}Qq%JFEœlEB\E/xG)lkgr^1o`\߸^Rݺ|~4N 62w% Ͷ [)y;>"u a[rJ[ɸ1P1_RJ}T F/FqaroѹR^qHh|,2ߪ% #'ܨik9I~tz(SΠ\ZLL[Ʒ43b 888gc#d~LCkk#ml=aąw]nAO#cxM Ef 6ǧ|aJuPR#1;`HZ ~v(G[4rxrXLV6 xVbs[ق&eRV>BD; hR5aiѽhh e н3M^&dQ~Dj*a -Оaj<~8JЁF@␿K+V#$tT˘4~cdr ̀+SN5Ŀ8!5 eyL\1n)f &,o|@ȅc^=A#дRsEAJ! `|+j cC ,`b]q xXSL1>|(Ƈp$ unn8O yEæGe,@fn&[XLS:[]`█J_ko0ba8јKoXbS< &N3hc89S>G\O$K6Wz'~3J/=FFHA2D'Pz8f ce`r"pű#5FI5W<1dwlL%GBPp`IJUV[nʝ(ge$Na(K0:VQ":[DEHOX"8"{)18G'ub:06nA3#)!UH PZ +i)DtzwߠтsF(&%msXXȄ%Y/%䬸dYN`Q q MCh9q1GRⷕs2aNEBP!T@܇p^ob_J2?HG )d%tDdxk# 'Mq4,)Q%ƀrӍQ+``Pj~oڰXIibDFW̴,wgK0vAaljcWVՌgjJcp.X8Oop3!;8

<4 B aXN>Vlzs)3_+tvB*!d_Uq9 87ﴒs*^HE\H[ q8A'p_ Ï?Ňe}`3#^$#{;Yev8;.<[ulS#U#Z>d,GM5>iEC4\# 0D%O-X6"a+!ީmȈ %".C +ކeq!@t("N ;604< d) +p<1cpGMo#>|hzsDABjRMqONE_-6stn:ܜy#`BN2L u4ɜ@';Ŀ"%ı~ԍ73{8O 3ƫ >8?<1旇o^<>l"3>kTj:T|=Y.݊{1,?_@"V8@\3Q0A|)ey<>Ùbr5/;Z >=dŠabzhJwHU0+bWN<&`ᄓfb 6>-WIX725plY9q/!#~#īl8U f8U[AC마;2W:Df]:/D{xL3 eYfXxf"T/6qjMb kiɈsǧ#Wz owA3^tKY~}B.;<%~e 0/Va*GPY D9)q33ffCD_*>8 + 5ED|C'b 2Fp: em@1kQQH87;|pc~r=o T! ӫEWNC FD>bKsĊ~w$@CцS%v:4;SYh8•3"Rxj^x 9nm8;%Xy,a)}Z^Ir)H$HׇO aMO:7vBpT 2HTM&s=&3;e%95dT`/1 |ch9Ű^ALl~r2ttQ AqFN ^(@;\x"pS\ QJ|@5|KiF(sY{x c lXX +1ؙ@tPBӫŦw +M/b)67V9s|n&HLډH'O#eDmr)mEL8WG +|NEi 1܅dK;.9w40qjp^`,/ +P%K#o>LQ"0 M@-]XA"4!njMDa866\??4df~c-Z!"ZgCăxp>{\fx4d9,s9眻p.k 8<,3pÍxTQ3 6iĆ% M@vLw9VǦw +o%24Zd~oވhĦf"TNF<:7otj:܄,S3Rfx`LBr~Oqx[Le69u69MۜVVVSUVUV[WWUVTږ[וՕVZ[UWTWWTVT[WVM֔.-:+,E_0"Ҷ!9w];.5u=B8z&R0pi4e\6sF DDyG%TDuDLߛGwx_ "CF0ot0pcOpV*MX6:e-rTʙ)5u~ѨqRȤtLb/&1B5zgQozU*44cg2MD~HSUMRDy6ENE&ͥcTJY+6 @ mRjc)&oB 3*."8uŐ-Wk,U7bI,} ʮ}"^GLi=F0 i⏱YPM&F o) #OCɾN94 2  IUwb 7v~GgZy(!]=Va&$ӫ @@ -1132,338 +1095,373 @@ E SLiH:.%^ a1MJ|W@X>? ]6fo_9'WC`F`rE`"rxEUMDjH1 @0B)G4#`08 Ģl~<@\!C e$G2R{gסg8շ8;fIyk!)"Nڏ&t&T/jD<'~yl]ZZs!9_sڜە0 -vӛJ@gK#'"sEs9"4vk#A_Ur7^Kn8۪E$\44_6>=W1Bf˂3^'We v.%xX[EgyO_|{rEo+me6Koߑ|ID{<}'?K2ߊ-͖۪gLLYu@d1먜' -z٤:Q1<9l0zOf/oZSB8Q)*DE}M?+eA2~TVV2];µi?Y.d1qB U~>1ёg=dʨf,^dr'g-v+ oW?CV?>B9?+?c0 ? -?lY%6&;0{a*^>0o`ӃC𷢉?+;H xD -'Scm7༸)Oڟm=]@]ua!>AXN o0;],qdj?0j#I__hAq㾯_qVf=?g;"mnϓ0%OD$h~V&vȰ뿪ƻw^Y썃T~VonYYPKryg#̢éB4{K82bD׬d2cefKb7N -_ug|2mІlkfѴ]ivi.#r%m9qHğtmnJV=7cfe>=A{{d6atGdy[d,]ZizyEj~)OuGHqڭ=N?;O[!>Xz':>AOky=y-hĿӉyw]9I\aL=˘;;l׼P[ u}{т)ɭ>)d3CusG&?>H9 MKwGv^&/lǝRW=?=5!9U%s ސS+~kArpk )J%KC.;5Z 8HKZMplCCyؖ b֓v5~@D6vBf2'3Hbb._zv5"f쿖rsylm.찺_I"GɷZ.ܫY}>t\gKjrJZm#x?D?nʛBF$[BKvE3}imPZÌw[My~Ș7Gz^:H믥y7]5q(h{,eQF9L o|!Nr+&5vb,X6tf֜RslnGo#)n|_r Y5if9~O1 +-}6ʇKz2;མ_vs[!D]20L}}\q_+?zt<~z$q޺-#*wp-O^3y6\;+6wŐvEa=XuU< _p8P6[(B7IG>=}yz;gJy!imf~b>~9? deg9z3{߽s߀y+w -lR5;|)-ȞXcroϸjwcJؤk9nY 4=ܟ!K~eCuM3Pl"=T.}U;p7-wm~ $ޕf|q -1"Qe?pNI5M,A?PNx0gfFɐ 眽+ y[я㦀zk9j!sd|^}gOF&ܦR[_p>޶ -pT~oU6x{Gf>eVqZ? `/3ң?![~㠥(^LgVoXP_;H{.J厺Bo?=웏 5PTrk4yA@3n -]OՂ>1HOr^ì:ݘ)>,9e#ԝ e3 .@cOtqJ$\F,??i$y֚J_ q\mT/X7BQ'J@K-!GYAKnZX*IYn -^jP}sh(>zVX4ڽ|veIDH|Og呴xY -ч\ZwYx5g\FV0ά:4,3xαq"U-[:J:Z+~جKZpIØ0wɝρ@6@2:yza6P;303> #VJXcf-*Y ^J㍎uK@(8Ƴ1Na6 |ʚ)w3/}82q)] !l @QK3 Y%r5|xb{.lHT-hHz$ZRKG)epge"xMq:\!x7&aeTE>ЋKX*Icޓ@[1x=] n{z.|B'rWXd5H,qMj5U՞&Vp'<"z}!]*ҹN[rXpbT^m836'$%c/,G 9Px%qmZM }Z lzFKe[^h67-m4h]EeVv+LiwKexQsz|yzu -SOZ{˺sOW`NR5zc$,C3_s5ޠjJr!18hv񛁑^Ln =3VՑ4J4e0'!/Dn2}i&t -ASܞ$Kvav>":ܓz:A J!i֊cfKbg?%y$mV@WFR[eeMt`ͮ0(Qp+Y&*IC&ʖ8vZO+jjzMt⼟4H wi2c4yUB<N!Yp<~{/͎F>Bo Vz0~X4%NjzPsAX,_¾tYuh⠎D -2YDV=7E\iAUJ˴W%$T:XS-Gy&V:ߟ+m_P|ӟܨιW ݃ap7s=T?kFRgj2ZÞ.y*1AChtVIBDt+DK]bэ|*дm4'U 9?)::!1h ;I@* tUך1 ;DhGOME˽:&LK;_}ǓL}qΞ)Rޑ(M"쇂"4-10$0q -_xEHBdk|.P{Wlz8]QbWKu#Brd4x!^M‰m5ݿh<:4DisC -'5")=0R^H˗=ȤʽDnh#+  -v<.#A1k.M.X5jA#.2#Q,j2~/AiR^ -,rLU }^iN@H)u4VO('< -&v(BJ>ޭIL [6?jP^dN0m7 H&>_~)zqx*NsY? ]6fo_9'WC`F`rE`"rxEUMDrjH1 @0B)G4#`08 Ģp|<@[!C AAju3R(gC!rp*5qZWv.Wʒ\׌[&@̴連pD4NY@w|yܺ*s*Ml_2&ڜ+aT64qQ) ;IDE*g#2u:<t5t(זZfp}-̦0m 0 ƊmW%~X֤IB7 `W s}G` tϧD=']WaIk~k:n.XY*ł;2K +lG~Hu?!\9  M=^? fjשq*o>2_Fcݮ=d[re^8@(0ŚOPEӵ}yFN.k{9,X;#{@}U2з R՜_p+ķ'?\ҾC{wKt\woآnnzJ>θ՟g +N|ʩI׽@(M +Wy+&<ؿHFel{|sGD*tuh΃Ry]-l{r-[ſӉkwړxøz|Fɮy-4{(# :2l?>)ډMtI C7EFn(y83n 9YkR?imk&/v??C>sKYϥ{CMGdayඨ%[|k[B.O\Kph5 57ZMV3ֿ! C&yx߉qbC;_ /GKw+;}Ndf%3H⿚ ּ⒵n^t`D̝Yn-!5os3m\auEǙo\WG}y=}$Xa $Еz"F4É  6A>H%'DlN"<ʵf3J{W_-Y\n%11oy"u]Վ] +wP0 BGȭĦ-X<$ArJW =Hw_ݎt$|Q"d]eӐu;~`ͽ[wʇK q| /ٽ&ڷpe|'yp'>?~.e<~3L>bnu[#Uz]Og  ku1VpɕA]sq3ΐ W2+}{Fks,D5|QZ=p=08~ D-7ιqc3IFstY  l{J?C㇋ +n+]f7 hODsww}ǩT-"bKҺǞ;:6qh؍bTh?*=_5!}Y-\t;"&0?xQ)=EE٘O-En*7<@ERس>2AP"w z[ώ| x1J.W +KA);4EUZc2BXo{hlH}X G3(#jgAޝ1zbrfq-o獘^ӛUQ%Fr1HD"6f`E>i+ +pq't*֬ĉ]I l\Ga#>K6*Y?ɻ%=REBc<3+xykI0 TewX>6fZ^ Bg&s\VI--sű7 ?,:D}}>En٥Zs N qe]lUs5X#+k=$)(pGɊ誴¶AC+p (9/_5PYֲ∣r)NyX)C3w|)ɡMu?UA:2Ttr'Rz({WI0U {dfV jmJjkNpPbP0zX.vE@7Y::i$9@ԶaV\5Qxԧ ._&NKRvLEB\E6ܵ~fXw,=(nך:Yy9 % Mq#s%=L ]a]`сC0B(P MoxsRdFb7RlIpޜ;'™p3&v[_$F>ro^> oD( 88.k+ 2 WtG6;" EXWA&!8<Hcꗤ49<=gJ;6ƌ^+ۼ$cvMlUnR@vao=d_umLcMGё}-ab))k{c3v07bڲ2ORr%Jaq d +f336d1063-e4b3-4c2c-bf11-1cab41a000d9172551d9-9ef3-4ed2-bbc1-3f2ea79f1f849 670.25284f846b4-97b6-42d5-897a-4f6e51d87d643fe3bec4-4b95-4332-9b12-a4179f8af2da85546125237-- ! !#Hd|RB|)x*NsY<'kIg7"~c,*йwMbI9IH[Uح0߭( &{/NKMf-qn$[?SGsˆHBNB~IJZ:7 -`=ؒ`7_^rC0Eܤtx+"K RƆA4pLX. Nuf΄`/+ږm(o )NRUueA湢t*{}v%z! V ' qmw pR%BCg;*+̤4Ĵ͓ZP)qp ze~ Ć` -Ƚϲp構UT-Y3w D,2,к$Lg`Krc'0<<.$pݛLQEǚ`qM[&a!) ك~ ǟ^`Y9@[¹t)e-‘f.< шُW YRe0䆎+Qity!TKVXDت -[ ڐ,Io@[Nlor>˺_v8}+$VŎhBs 2)'"XE]p?@W!,PK^'<|J/>`Qp;r Wcar =mb@LH aZc`UjxԤeqQDb/h$,|/bUV>XO !% -6tɭ phM 'Qݽt' ;tx<$/F.w/wdIh'}O ^Mڶ3,r]Dac{38=hBd,<9G9XwąiEH>q%z -1osEN.ۣv+G} -GuIk ,]|^Pdg2͜)pLd廣 h6'>q>j?3#inA{;e9#w*:K"n" -Po0歷ٺxnq[l); ,P۽`X+RG[ AzK NJ1¾Xն R(1Tr. - ٔzߨX!&qX 5 1󔡳##Y^.lLQ#S!OQPz #(z۽c4tfzCI%r 8~v>˗F 2ǢH#tYœdY%An'!%$2./Aqو -d}I g,r _OOA9gTƉǣλ$Y^ʀL+()twQ})n/3Ay9-ht7'gcRYXoWMDVI4=Pɢ&(zdFPڪ$}ˠr;chD\8!IiPpOŮ`_-!ơ,n_% IڷbxIFoLķAv cj#FPMSJ"GUڒ<bIYcK TF fȌhE`?ϗafie^hs1U0 `]ʷ+ 5CWeLmN~ S,1(֢w)MIkBAWPC5e%}fi]3uu@S(ǘځ;c]'1)%$ -(qG0x,Ϣ~Fq})PgҾeKzф?YT) -6w\[rg/)/Ċo+W CpMtLA3z:uo_'TϽܖT Uݖ#U0CiQM6ՔJa|{־<*S3&fM>\jf"ώuRg%;Jj+9y=ZG{!7E2LAHy,oɋqSA-YZ{#nݥ1w] @NT5^/TV}T[v )tP1ſ3v8s:Lnk9Qy"2.s3a W+xQfqS 10V|l0׭ʳB0/DlFVa 51?!o ;b& f -A8EҮLPy3uD ~g疉[%RаA -;4"X@,2蔖Vˢ^c( gjBCbq9zt.3&J\LRE)ǀL'y-;l);L+fdq,Z Q5,J{q-m[a`)#r'XkYg#ZL4,bCYƑgR?7bQ -RtI?W4B¹y6Lf[gR/A_>*%JBF YaG(rAW5*B"mafm}XFYh;M@ȡ6" X X9cKmuQRWk`$rŁ")SֲD2 7jERx+y㏧m"0p5)s@gK0]TCo~ mT\44,$~|JGX2jsQnN:0D3rwTQ+V{+1rJBEvO? z]VqQe-Fq#c#B7$pa;u!.' g<(<3 { \ >rjgV/肫2Pg5qS2mEP%jSZ9AW/ z| (OԨ` -J$Lm^`0̬o+1LBנhx q 8oX -4Q#KlGqR|P$-.`;CᗈLY)|׉ pG2ͥAgh#=_HdvC"w5 ;ʜ~0珕rI ~Y0W!̾HI.xDrvFrE 5)5,x'l2j#d -]SwI%O@b -]]9@PEPih4&f1#Lc+y{l.VK)$Sdd[C0_]ffy +GsUD`Xl4O8Dh2& 7L4 bYА@Y+prXA5NaD#A oURGA: Oׯ=}̪ʋ*7+7\n/2~<}MUDKKUDlRQ9/YWuW_QieZ쬒UURi)XJ.kkKw\T UZ^X[V[%fnǺk-mK]vߙ;P*M%_rH==)3SjfT)_U Cy.9D iSP4䘎FgVRJْ!CK#$17UK=d<{u@/t:TsUBUUl?=&6!SJox~iRUJU~@<'#ݡptd"Lfxh2( -r@\$T4Jbyr3g ō=|[:7Dޖ}g4Nо&O @BD=G#zD=G#zD=Gsуg!]:_ۭm݅oVKK,Lͨy 灤*Tt9FoRɵj*vI-e]#9ULSy[۶'~o+UOū 灤nvt]S:dZ5wh5rLenj4Q~.U&"۫mb.;\UZ*D"Dd4s^حAT4HDL 8%sqP !ɘd2 :P4 #B>Y籬uWi 91KZkȗ:יzYQ(Tr6z%q6J*%bcJV̕ 1;  A,!:tuc<rHzKTF}z飶۶3otD[ܝz&!Jiy.\,eQu n%n߮ڥu_mO[U ܷGj-S3gKC=s O} BGoup`lqLHp4MBd6ЦBG@Rq!@Hf$\Hd0!.Ļ3my]< O P0 $u>!'e\ܷuZf@C)Qp ~M].rv>^wiPD Pﵻ[Ǿu Yzm\{ݽ:G؈頀b!6(}݅ :Y ttd$D\۬؞}|u_g6JoT[x\=O%'(Xתw+Mzͼpv;z&.n$)\6AC°00l`&6 FBH - P,t@TC1 B #@$"A̓rf2P:Pq 0 0 1HazHfL]B2hďB-xAHNC^'>s,k܈JAQZq@XihAEs-l~щd cȭ.uIfff9sH">Gv5b E# ߳oG@gC =00V>!.nnrbw .Š /V &4޸+MC)Px{E/ xI޵ -w{bUc -y3U?_n=eϒ " ]:U<=< FS+ JBs)m\,d29 ginwO$P6t;Yʪ Y#bYi,0bϢeԘv/[%' r2~DEcX_[‹@TG :ڲ%RQq;3%z"PmHe=:ivPjs -7b!(uT3^p廇%ky=_E6`)JQf*|âteR!{[a-jN\ n_wi7e8r嚂K*Dz&k砽}>umaw*51<%ჾ9^EY=6V`&41DU/1uH(q΃{$UhGKV]֋Uvӟ?h$47ljd́sbV>z'յk^̙;i -aH3fLqT4gYm[ΫmcVF~=HG)ѓ1p sAڦdža WlB&)ALtƅf<⤱eVWc69a ,|N+ߜtBzJfyKS\"pqJ,Mj+ %v3WVMaOE+-+k(U@9FQt_>> 4\lxD}y^:i*z>xR 8ck MTPj&\U,𒗨T-. <LnIC϶ '309Iҝ|/^./!.)^CW` r5)>ǣun^bq?Px׀%؜PW~SDbh^)z;h- -&ݽHHo3{ `MѸqD:V5,|Y!I?}w8ᇁZN"!+@pZ߀JL"ad5WЙt\)?>.%=/EX X(eԒИlD#ˀ*W -t$x+&fChm`* u_ȫB!Q쑳O˥ rCOݙ$vj*Ҋ;)#^}xպtl.-foU2囤 !u:{zR?~a0[N؉~ :N%* |yny7{rFu3;Br&wtmKLϸ,[eLF K0.KbM Ocl1l5( +/}H;h,gK4~_Gc\+%Kq锡m ^NE\E֝"!PX='PjX SQ='R>J^Rp~[cnA k%8a&(8HL <˞>QOԕߑyp#Zlj.@RuI*\P[v*jxyX\%Cu}pG4cEQ3T clDwj* I zltgY -ԐWG- 2DN[X"W1+ TMX*4 ~_2SP-)u) -WnbJIBśNtkcEfa-~ -aC']O~a&qO*)2er; q>umm2N3&,DEE™ UM@֮9.aECe~㇙%^R:\YnM*C+Ξۭ|.\(Уwq:yjxՌ1Q9D bAx#qO, ǓBn6f/*+$r0/ρ0]/w2v!|X"q wb[ pa,R_w@ LK) }geE͇-GFXVDˉ%}.3=)DXV<\jRyBPl옢IsQptD@cդOU nΒyƟOI =͆b]Ls0:Y\D{]-cp/ 6vLpI8۔k@rmUNkt' No FL@0bm&/r4+>I=i+ I9.?ܥ  Vzrh-!dyvHCPBN (HséC [8ecې\Ya)(x:u?C E5INBu\ijtLodkIe`,sЩn1> KD'obw.1I -B8D>@לiTFv7A#"r')A3-Gnq Lƴ - -|)*xJq Ta . yrYn'1]ŶG_iY"Iq$܋zG`&R']}pH*!Cw<훱Dt"WYIzſ!; U~㛠+)Ҙf_c⺁w` 1."dN6?dIgzu(b@98W+osl V ;`>MKM@o}._CkM$@YzH >5`X^Π&:|?J<F㶦U'lOc*%i5踱Ub%~pa/I@u1)RMn1$κ|Ur 2K #tiR6dCM|S)-z? -YA?"ed!{WD! Ld8-ωz`(pH%W?be8cR=kh7Z!&,o3x@χ60>O겁x:L[IQX,|Nv/玢Iֱl R -Fב~|= ")%q{{?g88F[QMF3X;/KxcVqְ:gr(5FL d@JYwUi)x.0nkK3fiqL݅,1N/zZЪ 01lŋ yi~1LszZHcy5<#pit8ͦ?GI*C LZ^`;Fڙѵ.8fqo84jJevq5QnT2e0J'TmRJ*oĚGnl*wL8-l[љGr^zWZ#xI{ .Vw -?9 2Ǔi$Ir'r 5q66\1;n]ї!FE٬璫Ŭ|^P-B(v>4K"]O)KZvzU=:jB -y|+ Ò!%4|DNןcMS9MZUVIL -endstream endobj 13 0 obj <>stream -F U p|J/N Qz{lN~HX5=jv23tCrk"8A4@:lT7rT " >9N1O$s9m&X 5jC]s\DO+Yr8C]IEP> B`cKȲKlgg+%NRHPy& s|n7-iWnh:}ȼV0AX9*4r@R D\F>&j -KLӤqv\叾р.NUPֆi1LEK{W>p@Dq{cth{o2/{ 8Gy@K?rtU$GfGq<{з)f֢*v=@> 뒑ȴHwGe--" Bc*wv#lG~!]Uːg9@ATF^a \¼*I˪$\]~6 (k~e)!f)'Ipd/T6Z/ė:&r0■ -vUGQ] -ԙL6NDB-|Tȋ ǀ=K…:Lr¹Ţ:*JA!MZ)@xTx .wJ:DGj ymae|&=%v"m A[4*nb[i#FE4ϱ,n:7FKsgKU ~> f-3SPCEdqFiU

d];q'[D ^/b4~jg Ne*r AR):Z -VO"!rx{\ Ekcʭ(N}x x1?wŸytB -O&[gy&sWTRx"=>uMhHMԘ*!ɤjϚ>, HA8u΋=Bs?MŚs#^Ry/g 6}7( >|cܸCozQNдuc@GB[ehSk(뙛KVw5fF!.: jkzYLn03j?g #? ~rehnP`dZYꙓ]&(f*V8":^=auT{iF>Iz#; 3oM\TxO4.F0r#k6 q!鸒U~Ȝ s-$eDD'[ ߻]I 1lTvH/؅<~Qk>aqGesbb?0 Z[1 !y:پe(vk9IXֈހ94zlUÔiZVP_L O rD`GSHMkai.W?:ENO@b D'#jSqe,hWԂ;:GY'T+B~yLЉ!2;Su#1kȨb . wrci`IА-W.XJJ0)P֊$T*=>1|ctˀ~ F cžg>`#Gdq[7< g£y­_7vmb:G/xsqWؿlUH!Ұ2檥q8;qESZqQSU%On|ZM&<,I߆.ҺN>:xu{GgƸ`:}/#-1>J&`Ipr f)dS?Zvjn/AwYdy ئPe9(WO -*z_exbR=n7C >CS "U- |eB=c'f~iK]'H?[0sr%[Pc@(Z-=ppDj V%KϽ56>575jv g'8p]ł_"P&or7KafXK h,U !AYkRj*$-)R U-L[;]-@滼*H%Μ9ax@y=8FE=u^Ų{TY!j1E"d?N|B'Cx6<.wg;E2:·9%F BDA{5/k,>Hux!@[r8Ri?@佁h6ʤ}ֵ*(wXV?:n#]t?$ɹ)!YzO$&hM^1 `[WڬRAB<&=t2ɨˉ!f4M$fI -,L-ća.Ν -&L{_(}@~֊\VŒΎH?]sMu<. xrZ&QB<#90oo}C( Mx: @S'̉_jWr}aHv"BΡLO c27Z dFdWQHIIo%^R)HWwήֱ8*Œ۳--?UwU -,r>^B a g,wD -ګ$C-!mʝ_2~M{SNP3BA7MdfjoZrC: sQ`^[OŹLjYB 4&%gFf.(c+A >x1q=:ܒBѧ>8@Q?e L\"b(DD `i,a֪3ՉB5DZ!6]ٯ(  - -iec]E^m.Wm;R1s[uWmE "Yn\uj7r -14W ڷŵ5ƴ7y>ͽ945gbИٚq,g?L")\-xKd) lÆoy"ɐ}ز4͑,d%I&GF7'*v~u-N^Vv3lblW~V ۱ƫ ayr#,$IcEfŖa#|[--˹ ˺K/XK/VMlZaYM3یCv_rKWG.Ϻl& BkfV=4Ƈ .t86W\ӫfkzվbxE[ -W hG9pm`vɷq\4K7Gv z)RZ7 qaOuKhXGrnm*Z.pXoyIEЏߗ=rC#Yy/M>yG3f8ob\ivR ő$Xp$AINFVݗ7Cї| r|E_~dI9ӌ?,C,In!I E#/P>yQ$>bi_fG\}(~,Mn$Kv_")%7}/Œq4YX|$G4I9YRc^>0,{/G9/aY~ M,Gah=rbY9o,K9'ɑE.PCI9Mo%%< I}d/Ib8M,{$~>rP{$q~Cnh#7a{9c9{3$GR#)rG҇"'Gs X /Kia)~qbǒѓ<ː\/{dH{\I{Cr4{dx9(7͑?!.R,Ϲzh!E,;}7p^,Dz,M1r#?3AO&9qEO&)8b$Ȱ&HvKIX Ks~sAnFVnc7M#)Wʑߋfi{.aI{&ȹNd rEGs.3d#DKMO/Io~$N,pc9}͑K=}Mo܋H$_,({9)^/%/zo^O\B 'Eq6ĥk(؁3 LTAںn_++zh~o,U |-s"@7OQ;/H(&ߛf(9vnfz(~sd\ fҍҷeeḺln1 .~[ܖvamʽ`VP.dzޛ!9?a1\ód5+R$ؽ<,MNdh#74/AnP$E/a/P,IЛHwIS$DZ{$;$EO\XfmkooJIc@;k0i8L2!& UgsrH@F[OkjL<6Y` -].=G}(&s\s}+}?18ƃ{0iLL>hq}ƙ7 6-x@.D -yRA`З혦V'FLv)Aӊ<R5s51ĮN\ހP;+Z̭OUj}>!H XgB&XW]b:La0LUDW`ۣ*l"Qڈ@Tсv[(QPQΖU}MR#d#{\v ujR4C c.r+ H: (U *Xs8Q%d4@)HIkAjȓx|FQ9P -J -9V:DR8R}Ib` o@Ŗt6Vի %| -øuUb%Pt -@2Y:8%8=9YAIYRlNsԮA16)"МmIIFWhLy5g)(Ԍػ]ΊtBј2+>qyʆFҵe!ڎŔ9 z6j nXi=ÒUT6RAГQ鎇T_7A--%S"ʹ(/: >,5U35i2MX UAj2l/! >N11Yy +ld$5wN hH+ހ@rV'f霩9g8#CiqNDZI҈`6d0.GQ&b!8[CdRGJ !1@A܇,kOUe<x0JLZ) LtH͏x -lq$(Ô)Ep%z"_$͟%ҤQ7 X^ -CԂ%R>K(ll/ ?(Vk|s{Lɘ9tBEwo@$0^580?X>u[XQih"[!" 0*C"pq.7C,JG+j8~sp/$ 6%p QҀހ@ʲ #)H?n Y58(VR#ƀ6ƃl|hFpjg:1 -p-tQ73*2XrfGw78߫2:ԯ] *.)_*)@okjӂEk-H655. -pTo!M *4;f)(E? -Z -VIfC*>šp)Bi:1Ml+bQAq&Y$1a2a`bGND$ZXa65waB w!9QK X"PJ!h}@ (8‡B -"8D8Mi\ހ@ɡHGv q>\0V3otg/F{UN$E"x2lD0z#}h=z0 -qMt!rl\kpY4LÁ - -)9P"4#d>Ua˚`[LCEL٪ 1 -aIm`Spѥt,4) ,b<^Fa* -2Ix(fQWIL\u<.V[EuQ&u0 u!<Ԧ{1)LjTNQ:it,P%TP@Ó$ۓ9M"j Uؗbϙ{^ur -qgI u}j|Gܘc+-p*.JvobǢb^AD{Ho>oQ؏ԡۇ{eLAO10e;cmbw{:#ٛ2WԽgWk.Ga7 89TLFט;|%d&B Cf@L10A-O|NF-F(pҠ7oU<zA ?Au#UU#~\ -TKGL bh"sKS{ ɪ4HX*!PgLjv)0޿CP{o -"Vo@E{oS޻K*QE0x$ Ū {o-U{-;$]n o,E {Ȕ`]8SDuሿAo@Ț!6!ȊI5$y5υG|o@?ɗo.Ke8৵$O钟y躇L ՄĆZ#S2KVWcfB ө -xql5}ïLB@ Sh* wh_~.[*Smg}~dCJӯ0 Z!c~}%ZױM l__6Eh\l!))0naD8?6ߢxSR&#n+I;?ͷ tk=ZwT|2*{Ь_f WTg= - -<ИKJ Ua< -f -8_Efb%s0 ie@Eܺ7 0*cT.A)]4W9ҩJW V4ށujVux牙> -߯eNbto@|QHC{~"ܠBȃ(N< 6 )ۗF}ѧumA>nA&:wldR~{spxqv,zJGxNaLx\ |7t+ZQ6,|3EG+ -v_8(tpY$ߧq L)^;&@@,ꉔ,Dx]2ϔvuh4{KWHǞ_i`Po@p2bsh[rX0}؈Z3x"t~jԗhS cE*j`;ZLң0Xi]q#6& \ru۸-++Y/Q̇4u2ѣU/GQ.<<օJ:]D>bՁtK 1靉[t9bٰ4:̐ MՔހDό-+ -X.bz9rxqluc%q"("WlËW2Ss+tڟț #~izjx/QxyIR ժrrTd{ -U)qo@X Z,L%PtڋNFV7 (@,CO?|4]]xB:8AG4dec(g C4鼐#r- d " RpһqHH™bހEO-!zr$v8F|ZZ4( -rяf:NEuᵌx~ 'Q'QxA/@UZ x&s hl4tXrý,pdd$q;\0#*0L ūj5vL][*/+hu!A) ހp)dRW`ZN`Z*5><,vLD% -6+{Sꆀ-Zh޻iqԲTt2|L2#G#,dֿ`[lD:B dS2 صWG(-*J5h 'Nw=e2Lw= DP"5x¼ ԎFTD&VVNJSN񂚜OA$׿L}3lJO+qq*kI$:x滞-pQ{o@owB҄ZV.*FOZ {(PU.S>[|yyFVeє&mu܇١=(n[yLBd`lsm hlclbѱxNA׷Mb{X+f"N8ѤNOk.5#8it56x~7 | !ƽTuGIқ't,^YH7 |i iU7 n 6RA(#tRe<&x~%GOQ`]8$q'Lb+-SA gK<7 KT!P8DuA! 撰Þa-IXQ3ejIM>ViK+./{ /潁L\OboJY"lBI 4U\__8x>.Amem}b%#](6>Eۙ׊-I}Heњ LfZyg*3)Cd:7 `h_,$ɟ=C;[>TQAL93`D,dfJ "3ptvg'7 $(o؈`DǨ:u![P\4b٠‡f;,+hf7Dz T`W7 LjKVge?ZF# amnB@5ZzsDavG2/4|Lacfv.m j?u(tD%fHgGegPgVfR7 xV+H (5-*%$^r1#n~cچ: ooUY;f -i; i;!:db؇>@ь@호PSV®Ǿ>_T|f&fހPAugl=,M&[Ϗ!08-4@ - L<`&dW<05l(jؾN: -***z.l%.}4U/YŽrxXWXIdbug 5$C?kx=L-c3 ? tɗјY)dL&$n/>K̳Tʳn/S/'zJǩ'GT ":~|c,n3Ax*^tХ$(ѰXj' -G@c k[ I(d| ?b A"(_>!P9 n&Ex*>zKng}/v~ [؅t*]fΊJ*U`,Ԃm(T$nZdTQ -#\̶"(vHMvaedES' GX(lur2P}Y:SX 6WC{9PB*cg@׷'3cf2>ƮV}+c@pchn\)k,PieYJˍDx[Fs['-;ye0MAxsT_|O;*AU:!`N]Kk\ZO۠N-S4$B}h'*L WlWlX-}Vo-6!Ml[K26 B%?St.Mç3]"BFdtcf -!Q̬`/Y{)I}}3¢u`I+#Ϙ%m}} k:|QQ**eƩk*<+Uހ3Nj6 L.z.:踴zB\L .?8FIP4u +LJ@  EѶvN6$P@@5Yiܖam0$,Qh FW=H 94BXJ=Bqp xFQ%/'DI..2P۳S$rZ4@`UeEˡ= z Mg\lADsC<a.%p|PzDjrRY߭})!Pp:?˼pWǹ"x! + %f(e]{0;diRILbqhh17 -: ߈PKi2>*q Ovim( aw%AUk/ų|g <ŧ"J  I>-&(:pݿ-p"&VC|4ՁFL#}pi){ɪnz&(F])m@|J\$/=_nVg!ȀD GT=Lx>M'ϲIK$D%:ZBmCa$ӤOg -OvlwnhR8(}dǤd|:]M:(V]6m(Ӷ b2Ƥ4BM*rÄ|PI zŤSTzcФ(fmHM[DC\OQ!\U^V[fQZk%a:#peC$'ىo4O˦Yr+SP_(d3;^%1",cp)hg2yhXs,sNwu  JZ (X0/g3`+8UiX,̳c\/0v̶ -n#t\d؂Iv4܊1WJv!Aj8YiG ]KaFCqK F78nH^20zm&rD~+?U=ʼ.ToXct9>"1;a' 鈹 -vXTLL7Ad.ƤGT@U@KGHHF^\9^S ɉj"JqGb/8Mq C|6')tq@j;OgyT+Q&5,*X8rMD~`N8w?ēX:4AhL5N$W}> ݋<]s.IlK }H틆[ҞA u\(i+8q=PB|b|OY-6/\JI]`Eg킎e!'o3*8΋TWc>vj.,h`9%Uo&I(;M2l&4Hh'T.w!IM])_,mtg;vݯZC@zX?_?+TwĞQQܰ 6Ɵ޼36?zaŨDua#Ym앉\Pv ˣ<nz!$\"0 ʰX=zK"qMp5 ֔e@}fv\rɏhWaRL(X煮t" Gх܉AXީ/[X`[gkӈ& * -6ᯡѬf(B 2Co - -QQ1xhfĖs&wkA"f58= `iRiM:W C>|3cѪ"|ڴrG> B;g/V)?"t.9Y\q Ij -إ=$ꊺFyڠI NcbDkwMZdԆe>oΩy%3 <wJb{c$0*2$) jֳDYjQgTuKtyF?Cm uXH4# OY/=h7hui afC9}2Y4fP=Obl3?>|K>E`l {+ANދ}n(G =?MS(8[Q1k@g\ެ˗Wӄٰ {Bko! y`f4q6:zS4v])gU$C)˕DJp`j ;1!}j7( SS+MeQD Y R R`m" Tbd}`yNrlp'G ӳ h#o#9Z} ~+d6=0@7WN/o6Dop!AFdW{l0|y ֦ vT }ߕc?e P؜\slmj hBT]idHI-zlOJkk0Du,L{$0h\xI7yAC.#V0J_R=n̘OL1BZfFA0?Σ+<'+VT@:QY@po[,LyI[t4 -ీgNyakC"$NFt( sG9 !K|[MT겷: p -`WD8 -C,H0'0M%XS]ՅR75ċ/yU{Ɋat;:(O ]|F Ϣt;@t|XϺK?=4\] xSxVz>D^ؔ0d - piۉqM~Jq=C<6T ycL<@?e Hy5`U8[Qæ307S<|M٠Oo~4@Yy -ʜ,ze^*vRD B໾JժseeLkϡY02{X@q8o:g̱d*V DZDA 8:nt=/~ #8߶mMDh Rrp |EЩI7RlN*5O{Xrn~ ̪|7gN+@N>*_/^0fV`MO 0aHI.#I<",^[mبu:`dm@y"CT)*h5/a8_[kz*duH,va|'Xo}3S$0j(Yd% [rQz*Kͅ~o1!#g_ފ:YC6_6.;bm<<>>fyGckk܀G La RxL~6z0O's.X-g@uM{ ]|Y&`4 _T ~dnq6T ,۝xnuɖIbQ5ri8'eva|EF5Ө2-bF™8/SB"pqB.n'EF}"ɹ܋Ӑ}х[ [](AЗ{4pSkG ]YxcRV1kª0r$-*Qm1ԶÛ5ZbF)/ LTl;鷦8tȕʲ ea;Z"tXK -?di6}o`n¯.I75=={.^4 ]?$CۗIʮoʼn -]B%]Vr__ݛ% ^,r}Qi;oNv^_`'f& -XδMwe\uQ5 7Bi\J6r1iUFfËpd ] p6~G7PDpd֮8H %۵[@8KtaM.3-A`b"c&;&z`i@d@o$WpfHZEOH0Ss}<2Ac;g -(&AEkW sgh-fjg:%P!nB;^q*Fh09f@Rc6[{>KT-ACRxǗ!bNSMҙӬ(4$f+^Ɓ6 (5b -9wM8C5fZɅ;jj.M^!?N\x u{ ?=Inm"a0E/D8+5@-t,>.g˜|^tϭyʊٮ.^ҽoGd=$䟶E#߰@-xM -VdGmp $hm锄%;} +ͺ¯~ fn -2(MR٬{rpP!$ 8Ə]gc&e] -3Mpr y,;4-eWY%:VY7)qWFK,( -P:lELb_RGF_:8 

X7\#QެK1#rkŁ9gB<Q;ure߉GvMth1 䘦X**MeKDOÙ?fQ%~w)6Ed3V_G Y=bwchQ t!UN0Ow$H?Y\ ipV9L3Z¸'ED3}QaRYߺXY2LuvBܦfW.by -_}lup~Ҫ<w$]ssl=:А/%C6 BK7SC3^Op'2hm_QRXm2yġ9SpX:TLX8䆳 2J]xfk-p ?egY9<;AS -a)9W2=gOu@ʂ?KI؞X!J!r`ٛ%5g Yi~381H-wַ֚O|\p7n^Hr\L]=^@vOU0 -:œ>A` OM9_@ ,_=;>T`47#)6~r (ߝ\(u6qj`Smylb" vKPOHEA ϴ3U>ƀln32=Q\Y =D u++Xw7A595`- -ԭi'X,=> eF8~ -!03c[58pfeh4 4A !|̓?K45v߷εΥ63j2ۖZ]# -H -TДZ٤}N]Η`t#:H/ۃyR pCn?\&5@Q{GI:wV! A{ Rkɧk>(ώ & .56Y@0Ur8v67 -wrh·:jSj/@c J ܕzcnP.oB$T )Lc%\Vv9f9Sw9Ź9fxIT؝-lXH`";f;to]4W3.LC|w~v`-{];Ϝ~@jV"5-Q3/W3Z|418u&bkF<5|1C~L󵾈.mm1ӗŨTշ +wMQ0ph:CPOJ6 VIT岉̨ D<3}` K3.cxb/(cP~ w'sg ƬhMexcfh>fYr ?}fj9?[ifйQ6yT:K%Po AT"w@ZfRV"Z E "APT-1Աj"[YFQ8B'9muWnzfufu0M )<'jTH)ja\BB@0p4'd 9;4|[y9;6LIo:&f}=FNm$d&$>p;ɋP'D>?pVE7̀y߄w~ǟc\a#0ѨvF2 -b+y߾~NkPFsfESBr8y|D?;rAԩ M!רס{O7)9rF1/1j~ړ20ߍjbyWHZB5iz<в2LXza~Y9ab^.(i+;H -䬛[rR-KWy[1W,~n[7YXt@pղ^<nPp%Z10Xsw?7HHX˭pvzr/E<)挝x~r -_H=a)ZR*it**F葹,|[uUC';DU2&)$HpOĶIF5IZ%˅ -x8W}DmLC+؈Hv {\'1ԛ1(]EA6>jnO -|~mn'7mTZ@Y.ؒUV$s8W"Ո_rT/秕>RVF|;X+7{Vx\k -C|W HOS(әʓe‘wލLSy/#6 z@Bn+9* -H<~9H9lmoRWj܄>u$[PK,-A;e TR jh!uʂZ)Om?hk, ea< eМ/sc0 H1ۮ "LeT`;ߩc"y {!֜TĄȆhRW5K܄R_W6˂wr-9Q) DDӥ*T4(]a,,PDr!q{sb\B9)fCʌeúJ?4x3%O2|*a93Կ' ReSQfv6'چ7fN,dM+)H+]kj_Y'YWDpW1FؘԴ IudzVQTq8@-6AaS))Ygl(!Op)$f3ftg6Җtsk1)QfNN:sFMwW26:}"$`52g]JN?! iod@Bkڷ;. ;%G1n){cn5aŒv B+twdXDz!ƿtlHuٌЫQjY}ìY( &*JPaYbwNmM"ML'\+~`:bkJsd6TZ?Ⱥm2GAHFzX$:=ѯ,-4Vf9u`6PI -3AR]k/Fdߙ~ʕl _Jzkv/MЉi. >z އψ-׮d+ G @+!`{c&<̨ vɼ D2FhRʟzGC}8GFjyuY8P[z0#,_2UZ.XF --y;U\Mq;j'{uc9GIBLU8};"<@Cfg=aSl;(Z? cߐ@ЋI #6kŚ=^T v=Mɩٵgs.6V8=odJl _Ok ٬:ItA0H=26*H> a<ˍy6Yw| )oi՞z0^E#1vD-@}%b &90N8@ے wb [ie,Ɖ `Ddl|m:d&3{g97 !6(VA;tw9s>^ %!@+0@lY6x)Pid-EzzBav4E!UWe +23f#F.gPT6 >?!],wgg:% -n$]#8߹*xޜXׯ8,0iN:2⮙{HbTx^AG-v{ =:a;Fc'yp{!%%W (pޘ`ZK ;zu` -9--nLKv5c]]/v mx]m|i.kS -"4?0B(Ө*w7yWQ܏E<2Q$ -QEr)`AiPgk"䛣߃܊E'-fChnQ`^*;-_}vʾ_Y|eԤH]W{u3iA״ڬp*g)~Y:ĚE]})OSΦ#'u(V/dEc]vMYZP9k I8ɱT3iǫ!;7vKXu‰kqxY5:kk5SNawWDFL~5_2 C)N}R%^-)e 5!hg9}`.& ^mb,}}k]{+ gmix۷S+JUcHZ$0D?,JL ()!~3\7IS{ʎ,+_)F\!'؍zY*FQ{hHg g,ILcG! -8?3"9ZI` b"L]mH >JK3`- 0yS%p7[0BxY] B{@AAQKkdG-4y0H`)Q!WyH+q;va_3*) -XZ eS16\ʄ,d0/&f5Y~D,%!DN۱d/bܦRRX`pX,P?poFTAOc\#M.(6X0 9Fs(̔U-|D"d:F@6}&j|/@0}gdW7DkxH 3{7jZ6҂d*n}$Q2(o=B<ȩ 7** DGv{ˆb*e4W^Q $-b7h}7f%h73zeŨ>/["M0?!'jy|,{ulNRtĖ#@17-P꺒9ۜi)}..}8 HxvmTO[A:~cД2"2WJi)$=(Oe|Dfz?mv>wtu):8r]D }*;i1kmPGo湊r7m2 2E"XE+qD3/EH\UpbhB6Lh;hfVG*Z}c#O2 qrxA& -LO\ ) -Nn^SV-kfD؇J(7siK=+؝AI=϶sX!:r^rq>x|+$CRK'i(Y /uRHa 9wS>i`^|<<\0 ðP8v CmWi({ڲ 't|EqW5B׾yMp-VJ@#L,n#H>ł^`0j! W=!&&*y R-EKOh6&ZfxI/H`WqRM] ~!hP/ .`O 4|uwy7*R>E?ZkOCV]C]nF}W\A5hg:61+Z,u i[@[S[! -7=pTk,(|Z -63f=WWB,"DYm﹯PJ~lL|sSDo/ۦ ,E6ERdR>Eٽy/ ܀Yh}]݉ 1Zhx԰bo7mDZ7JB1J\Yc()tL@9#>8FPA'TW(8#=!LA2^X-9_j/J /fw~e폙]r7!-p{rIIVq^dPڍn*ʇD+ F30p-KRtDbLM _&ۈ>S$5b< 5EGM͋N$DҍnNtX)S꾽~!Odu1DlSAQzw+ >/WeNҖ T>x^D H3 ,LP-h,lq -P^X9.UȤ-V%[gN]`SJ|59ie9DTږ6A#/BLe!:j'I#z:&zƞX(N8hE6,k͋3;ܸ3T+1CV[TZtJMa;I=&W%8>9g#?gel2@$OBll=59W@tɴiǡ";zhCu\,zEvbLe -R*5~[4>vxSC=}+X;Qޞ0kP+TD #}z"k+$i% @e AHT c( ",nUF(F\Y 1ݜ6" X~&zm0DŽl -OAaS %?<ƠV Кo5ބ/l8m"^pW0=\l`uV16H:mZ"jɿx'JD Tlaia|[AJH\ φWfTyd\]|hA97} y:yD&-8ǽ=3κY%NI_dW+7@<%jSef󺖷5rWKOc`-u+MHqb< $. (li<-" Gcހ CFЉJ9I\G .[I WWrYM r, --< L/BD^ܜpN T6Sө "ШE-`eQ8lW0):%r~ %P +|M}ɤmaH^ArUg>uӷŋ0Q_+8pu91 -` -jC A0MM*CXvجQRL$&$Z~,> Z`dTٽ ÎE| X7B0's ђĂU iWj/ 1} -`hWȍPj|`09[QjKen$*U Xg1_%OW$Qˋޒv\ip޾t"2nTNF'U6!J - FQ54pyKe iͿ[UjrypZ慷HYtyr5Dh.Pi:F0p8琚V s=7W:1 Suh,DžNH1'' p@ys# 'lmAP-IzbLb/<^|Y-Cp5|#*/-Pa0TLm2-5:’tK2~fc;V2־'r);Æ K=(+o|U*LJ(“fUf9Ӄ/o@% ыUΠniR -b}\" \Ezq5Eui᏶>;GjRyfR- [BJ #±^GiF9;LӃ_ehc%ݙp> FcD>P$I@cdReͥB\jhs@vxh9#mZ 潪5HC K^ZJEA'Px%*Y26fk20Y`VQU]+(,ýt#Z6 -$]ڨ4C%28εK<9/qK./q^%^ru%5֤ -Qԡ\(7ƥFCEQ\%Q Z|0}fݤ ɱ+DQX -8h<.vaaئEg] _#6{4`@OOZx0[d <F,UU@Gj%Z6a`i ,jnRMDxE( ~-6`Pe$6TbGGi kMh5ÓQ4D3,O?8\wC+JC^|6B4 *lۜzٛ+Y1zIvD$0[Uv8pmsJsc92J 5shkL>TPTZGdyYM"m=DKF#%׼ً),%gKѨd ;xIw{{)'&҃QdY T^ -No jmDťF@EEBfLl@zڵ\+[xQdVYyq+A^ B8+C$MA\Bn7ًI`-\bA x ::+*bp`ptVgnvVP)l{Ɍɋ2D A&>B٪2@`cw}3>h`f]sRDrwO0& -"*pa_ -9[mQ5KHHӎitrk5g+RX` {rHI-(Fb A vCW0tÎtL7HNI!T+bdS42b/ŌR(Lp[ޚHw5Zp];  IN/9hYj -M(ؙЀhM(TiI)Mכ+e؋i*P ll\ߚ -`$\jad3Kpdl&rboe:_V]0ʋ??tHE଺`H$%ND T7;r-rBr D. Ogkq0\WTgzczjY9[_:M"'RBh;i` no;lQ6ʔS:؋IVݟxcyASAkeFNx^́ EI`SnH["Z ы+_/$+uW6&`A9C{ujq;ּ Uy^<2y'U 6O7"gy| JMY^"_磆Y0c@o:Q1:#.tIgEq5 ]vj1G;\|!(:at,أΥI"čeE3 qPv"_ͤXNѠ4\ IX#fd:iM W-O Kd,f2Ii)QEE*u* $BUi)WgES.I.0봪&s>:[6ҾB%@ͮC|H"7&9 ] z v,Tk P L:c9iaǥmHv:NIQߋ(p">vT2Vr*AC ^o75 % -L,0i0k X[, -`p?ue31à4lBPesj6±Q;Fgv`P}<#j"*f탠rVi[6@1IW0$@tlHӦ1YY8QIEpr NpJN7x+l!/u\'~%})h[eUF6Uf`Jg-I>MrtayYӚv7R~bj|/Ym$~<-" > 7k6AA2r^(ȉ&!ND"\Hv*qm@qHۋL.6/*L#)B,6~\MqYeYiH'gm,#Ɇ N8#kHʝn+cL+@G.\?!L*_`هR248oWL|rBlؕ_4BtstIFYYr3 yEЀ[`@O -]p%|-r<<7|5Pfd6Neޤyzk޹w^\[y9;%/k9oQtCGf9藯:5yw|ݽ{9sͮw~viS5」6M̝7xxx(ђ䝣{>J<,rC]7{SkZZ~]kfT?ԍy$8Ͳ;cZslk,Y}QfXk|( FHZgSi%+}]$"Wyr5\j[ 0&> 0d@<B0 # ( @ r: -{\KhR- [PetSEq|$vy<Y$"cO&d۲v;W/\DGӭ~i,4Xk,ΰz$Zƚ7̝9*[.*ݳB4,`3 酲!(@:p{H=œ(]GjSCLt6 -Y30&%! -N4geCn9|O1. {u=ئRrW*5IvyikejlU>جK&&d-1טGie>;Xj>X.P+-Z5 >Z}lrqX,z<YeP%烲4ݴ7[}mCLuuRKT"S5&==J:RoJ|4뉊<=uJfπw -$3l;-ȺtpS”'}js@hC`!-&%^5%`~#DE -*EzEuИ&ឤݺqgGhÕ|3Raɰ5INˬ|nN) R5pͳS'YeW'ǃ%)]P$zuğ W5<IdN"24!3:uw;!h}^X'3_)M96TbO`_'J,cP#Ji0g}$gw=*#A5Wi7LJ?! ވ2E3gb>y -u\ RRV֎ Z"0 -F"4o+:$̥r_;`osJrKwӣľ>;9aJ)c({)Y/~ zşRZAZDt杇zJiq|a?H -tdIа2g=ߔEG;OJ2m#M>JtQ",'gͧxxPS0oRVj̔QG4G6`/II诪ڭL4oJ"}I!9D]49QHv/% 98uT: WaWnH -v*)jd&kQmzmyQS+Ц{&45MP[È+3/>rPI8|QRXqP֚ dVqKt PWQdEj!ʜm[*Bd'm]86iF܇B{d7i7NA(G>$J&d@ѿjM"JSLE~" IpJm)u8CE6%,XgDh hH~ j'\AG zn"eUIXDW%ݕHsMOj4-H!4&p>K^!2WB#j&Rh -(sګMg!h.0g-\mA͵1 Oep mwmb<8K|pB+!?㋕d?&e[yFRԦMX\5.Ugly1R4`'ho'i_IԺ.=FCnں8c`b]iXaݬQ.t *qaڌIe(Z _+ UZVe0zJjr|e!誄}-8n 9663@7Wh>I -†C̓FLń/ YW3^9U23`oРTL^θvx'aU-@i)ݻ<2~=Q\TjFZ+6` @D~%̑F޿0.b AQV|) ZdI)AHQ z ފgyܔ9ɣ}daㇽVwZ鮹dQ} h:>ʝ+4}ds *H u^Y0ζF\YKP9?(Ʊ,}lSw1 Yɉ]v@ukT)L!JznXϙm!Gd ե\ZxJHF$2O1/uReÒHeLvSiC~ZL[r53Kerdž~k.Zن m1>\UYGN{+&3O=hQ9wK 3ʼt/vF=DA"P{1yqM:Ls]5_ɏP?@)]VڨP9;ӭt]z|@vlM.y"VkCD3BF#:r[D]3FFV:Ŝ V&¢BRI󄄕P8{<#)>ОC=9t:O$B}\{ 5ova3Pг|÷&6_h]3o#gG@.I6HWmd0u{NI|&]hg/z|}xy9,yR?k`>bq{ Vj ʴtuqqۀ.W<?$BıDv7g;E{گNSYD;{tk I蜊^SM(  pp5CB;'i_6{?t -1n1 TDF^%Yi _a,qtCνt83Veֲǖhr["r`n{I - -"_XϮy&6C^> I(ITU2O\pv|8&AwEq6Ux7]bQJ)H\ wّӶ#!:eYrUE E6B Kݯ>}Y_ho18WDi$lGr'O3>:t 2 \ƀُ܋ bPh`z5Q_$s ܷYfSyvVt6I{W'SD$2A 3agj-˞b:6umw3y.j= X -,4z{˭ѱK s9GAXr^&8C9͋8:)nyUME?r/K}e)#VBRBǭiWΈiyu&e [")$Ɇ⬜FXckL$40 2dQ:_Dތ=: 5PwWq/G*;vFOIxzyNܵp'Wfn Qɟ+͑2طp)"ϔ$͠XBǴ$CbU@u?uVOaIGt A:Q9 ϴ{t?_Yv19WB،4'8Cv3!xoID/U~_ -$`tLD'p82]N&#߶"`8^%J:Gxbۈ?BEȱ0MQI̞~1\5@Aߵ(6A[Bm#RƤ3q:/rМ!u{]h!x}RЈ&H71EVPbl<:}*z̫ U<Ɂmse$`3YeEͬTY -%+ڬt}Q4J$80Y.IՠQNoV8L}ߘ]ojF' -^]nt$hl6σo%|w~?adѦpeXK2Ŕ2ٓOն\Pa0+ ;16 H}+QV7 0|N=oO0܀ Ǔ6=_ΣYXrE`JKKi'8Q v#/JNj.30}'"?1' r=݄+gi%LUJd{[Ymj6Pc4\de9Zta˦L>f8Qt-yupҟWcL]OMpnl*\)3WutRHߋc|DzR-?6͗-5ZTH,f\ºI8EdXKЖI5%d絙5uD#]Kv~5t =m/`잛Y] uR7:@gU}⫠ȐM} 屁J şpfH=ս5JkyJq;bүeu!ؽFk. {!,q6_B/ʑyC};*_މ1=.4UmajEb6 9[rG{!`_BH,lxƏ Y -6bڟ)b$t͕<@-rvFcj|sb]̷ોW6!փv"b2K]nDzvpbP C.fy~ ;xYi,^Zm<.4KJ.E5Lְ  -柊Xl.gٍ%=@sEL>@z5&0*t^. MAZKs+{>OC?'GHy!wbc{ 铋 SBcwjnANMx2I(:}+Etz<:XO-Tp_xTqޞJ.=M+E=d^oF*A=U,>(-)Ubnf4?sr9̱$aƪYK*g %҆*P(@M9btKA&:īHdl ̕H[!"f]׍'4-'=a"1%,5 UU+6-;EBXxM{ UrnBww O>JW;B -c[d1}8N/;"1CrєG\A=+%5Vo+(|owFj GMHM #QP%9WEKoJzUG<7s!TrTM^ef 7DY]G >*5F'^mK78[˻yZIvr -p"r3"#nX!2XAjA'1N-Ѧvbޕ77\`T_ TǣX,';h -xTzw8 p͉RV뒳(o5q!.ҭ(Qan*i-nF:l%\:H:QjxC (Qئ (W56+3u( ?{\ PБM)p3ȨŞ1ooZ %sZQɾ֘puuE-=V@YrQV! PW2!fW"=,4W&|a\YGHq=d?sCj=.>Fbly5}ZmNY _N0g<0hȝrѣ!XV_,W֯:W!~jPUY|u32r6/&PJ)5( gټ^@L#0 H?%OV0V89͍LҦ?9c!LV"['N] ., -Ff ( $P\{3X]I]2whÒiO Q\^&̼Ւ,[IB, ~5k8%B{ۆ B cfUEB&R # *ȦA@MYjVٞăW(Ig:Oc E$Z!,gq|VuIfD<lB]. (_Z -34;x1i 1DӧZkAz6 ϻ!,ivHb -hl,/xAYz%O}GPjp=źSYhmpqyjh[[ t04a2 A~*'hig f,ͱ!h`\DT?!AS;IZ?(`jf26oIflF~Zۚ}sӐ]5] -ͯ^qPP#fOΦg(tFb_WpE{C89TM25aYMK 9p7 =z`VDqq`KB9W=+zn 1uIU1SCH]ʿPb.,&mFXI`HKp i'7ImK iLB{Ri_ıZ*}Nr!ͤn\ċD5]щ+NrʊC'4_&ɾ٪TaEp}G֬ؓ uE {5F]SXMŪh/ӆ֮ڼ9nVLq3s GC&XbpkU(Y;kC_ <86ED)J[hWNEdaO8d-_h]SL51@U}rnR3W](Df;b]z>TO)|JX܁T9S-"o187;@hm(Gt -/^/iبh|e -ޱoo3O: =׀2ȋDԖ?8w6PF:vьa~9ucz]R(}#-ڇKPWGwf4UT"HΖHװA+R A[m)btfZZcƳ bQ4)J^|N3H -Cn"t忂#rFE+3nWJǐyG_4a8ʯ9( _!3=`螥=FmFgd-  `qc4(݉Lvo^]yj)Ķ)فjvpERDTB "hoT"|P0, 6-~f AS5ZOLXIߙș aHS -fW`>-V8N] --9-%ٮ5[iD<\*m!10&dC ^XK~ -hɴ rM`żmr"A^nAnenmrC҃ʴVbr6oCsb ]~ʭ;ocBr+M6ߗix$ʍ#5 -{r\oͼ4r_rM}5m8ѶTްxJLV6od h 3eC9ںJ=eKm08dj7-58y]EZm+}F,. -!=e#2P6N"h ZvUJDm](hΨ)-;ER;l -$\ P|p. -q2&qeIZ/6_{KB{xpe̗ - f|kC3Xpw8SY5Gz\hv[Ia޶{7//N6󶳒鱱d]%$/d~DkUjs~+d: H:feu:]#*ʰ,#w:[n Z̧E}@-hXw6Z [r?$ǙͪJ ?%RFGmPZ[Xa8ҨD:`Jze/n,7hd)N} /0C -Zd>>' 㱆N Q>"h9ɊpJET"3^H@FwZc_[SZrD{4EDX) T&q,$4$0ȷZ -8xY"+,Dڰ>*_Nl)e_ \VƉBz1Ci\ƘHYN&| ^pJħ#pFM3xqk.D0 8ŝG]~ ,*^1a*c!L(t{حgs]TtYX¹@H&]Nۡuk$589Ԇ!!3[;BFF_ۺ@mƤF -8EoF]8(7Eo |Z.gU`ej˦1b휙|"C䃉#*u:ʹqB5t@>v@ -#P!id4e N TC]DAZ]Uhf0֨ 5h`Rrxf#Ú`7J.=JcPbՑѪƍ@e B&zϮk&`YBW):̙Fft|>_'boR}GĖ88ΜGqqy{VG3@\68lS1T$ O\=*r~lTC%+ʹuvMRM~6+xW5R+|})YnQ&B& f_lb+V#m>[> F<*9Y%  *m6W*Hv?5r!c3⸍;4oid1ਂ°3L&QBq\$VhZG ϋx_A.JT -\okk*>m'4leI$&꽽c@y=D@i T@" ".T +_)` \]ƚs3%EmhlN k -M42ͨ~Y"tmtGuywte\%Yv - r -Ef` 8M,ețB|=]"d!{eSg\g^zL/43">+7}dJA~+u )Z"Er+rӮ@5N4FOe^3Io?hJ8c& oxbғ η>aa+$sJCO_ӈ++>W<84)giREPaw>pPmI?ac?ik@K 7"VO.C*鵁.xvV I_ʾڍ|60`ך8ʼnTȊDmJ -~E΅o {)ΉgiqHϢ8jY, -5 z LDshڴ=kSV$G~/9I>],p5ܻl,ǀt#c;˨l+qv+iIW$c}4*B*DUȍAC nk<6E'j. ocPD?;!oPA (`sO|Z{ -N'!HB#\I$.,#5">Cb~iVKiaCNۙ)@Vrl|Q{ 4iOj*OG C"e_Լx|r˓^09~Bam~q*`T =mxvۈev#p `F9$mk9'$A$CRxd1ˊ<&!ӗiU@ (>w~M2W J0|'Cq-jz) o¯ > jq! S6?<ͪ0H wȔ)?TtT5Uue3ՆkNfqv{9 t9q\uC*W|fvg;"#BD>feDD'*uai͘9|cϜf:"*"#Wu0g|*+3+[UUkljfE$;l67Wg+Df^xŒo\>w=l{Lz>6!1rFRIE/q .AЋdgÈJ"l$Wp1rIh`$Y#hd.$E&f[qXh/|jE@|B(6+J& EJj,{_F )HE^B).e)ktQUe HY7ZU҄Tڤ0k\r+,v1HYaH<0$X,,a`)R~TF4`Q2\ذ#Qp`q!Ѐpgl<{5a`9Owq @ߢtG"" -E"1x ;Fԋd))4dŐE!iR,HMi#y1bE@ڳmz=kXT:cwZG;2̶wW4a"Z[j}vm jzxx}aXVGo?~L?=l]ѷ3mH`@FC 4 6h`dp0" @ - G4uM!}l]3&D0}ˬ<1&rx&E"B'p#搈"RZ/q6J4Zst|^Ƨw,mva!lzeݚ@v'Of:C~:΍4L#J&E%i#Uy'[| Ϧ[r H @yx shP0H¸ji!>)$ áА !^Q}]BeNm!K9G@n:zV%}O~_h.ָ -9OѯNKm$𤑱qQ@O+`Dc~ʓH_=Āl)ݴOKGԁ͙OhΞtKvY2@:cUJD?mzo[ܞ*"qH&|dgt+/w*op<'׻l;W*7wB'rht&mKI<>5^-EFK疖{cf/IP 03}=[>]aȪljݷcj:/l+Opީj5bn+`٬89ԚW% !׀zNDL2W2ō[si@|tv9{8KשGK++()h}D -0Ju7_DQTv=PY/붼t"._來@kWMh7%b#2{ӼP -omi{o:ubmGwM*PX,!1]>Y/Vz;rw"v L\18EahH1ߴ stbKGtGN"cRpݍ^Wpepa+?6S^I " ]H.>d43b[` HG#"Za(xLذ'H7KeQM?W4->x 4DAR -鐴ijC -rNhݎw1K=湦gFJI G1Clp|EP9 6hIďCbЈ-WCZ?hDuӛzgGUvm_q'<' tc%[8LG7߅OW]B*(E>]AqAI\:Q5^̪m} -^BO'-.=S9f -g29}arlpM1J `|- -e#H 0ɵ\F`P1 S![G;g PO1`Z琄 17sru:K)$ぅ$j.&ASɩ`ﯓaý1#*Mt$ 8[ Zǯ;wWIx# ZW`P:i{ dֵ-ԅ A"``"sY„L H/`c6X7u!<@wWC%?X3T8LsRxKIdPd6DUon3 EE5=jAeSUfc!¨)\EHzG L;3$kV څ!1e?%W|&F -P6>Hx%~bVzUヨ. pmӈy4 -'3cS@b٨Q+69̒'xQwG:]#=.pH y¨vAOiB5Ri -8Pu>L6=0)E~0x:5aaB5zFЫRA$zMBDN#>D$w0Q:F21gF}]q3]eR+F<5d9E NdHG}x4)Cvb:hӕ0pn :l481cݸL:t *.!O`05)m-Eڱt$ $ԦZ4FtҎd\0h[.q(F鈨 jrV5s5rv|D.451lтg:#Yk<,Zd97 ib@#r94G;vsȦɉ|zFGY"3?w&>ӤNďL$JmHkIY=~l՛8Υl*k3>g8ƓM'hXd7 WK$Bxh" Rl`40# - mM"'CqHě& #ޑ3$Hv$0{@$Y#f@#QNyN_qˡ$wǩ{VVLx{K.q T]Չ)ܳNϫ%w:xRFHOHַYWxs4 M!mVC M1FU{؇o1! XoO<,5wm~:6@4Z ջNxUŎz!bS]ZP\ .Pct89b0lSBA^ȭ%" >>ܚdQ?:8T}/p`{74("_}(@2t' jYI*;+ZI߃eb*Bîo7h]7d,=U>| F*Q79KH#A;N –g;aO4x9+,1$@rJ3L1f#!BSrX(Dz4$ iGdR͏@8I˪`[ z-hcؼ4J?8qaṸ, aUVd6`+IP.[HsL:Ct0:q:ld=R\B,>,_r2 G8e. 31,GBD^9]]y@iZIHiD1jܙILP"⁢KGy/;dY- I"\FBh,,q!ɴq[0POxNgb /MoGb'QI$)Bȅ$tWgvR  熑* QC^iIȮ ^sakHIhfjν5(ID{od*"%8; I^P8Ϗ -ټ[HxF#QZGf;N@|?Hb`*Z q"BnEmLȠt^Nлne dR!QY.r>WJl5[0-Ayx y,Q֘01٦JCh’'laV#7WǙ0aHoBD,0V -dO̻~/D>Vs#^:*A+݆He -B0M-ZJ~ L"lrSTYmhMJ ztQe If(zFMڳ Dr|gfMD&f>%-k440mn_R)H -脚I~Dms ʛ7GMr%N-H&I( H IX6D".S8ojB[6;'tt O5[m\nA[Py^$ rY.boGpʞd٫ +],iԘ*GǝrFo:.5$"9ZGBWȇ8deUb[fN*H6֔D,?MDKYJUZBZUsDÉeꀃr{Y1]ꗛZ'ye$>j0c @ d; +LWIPʟlA+?Q 2Lplx>{=! }J4%}&#Dxj6YYz?yRӛyu~eA!0b70ml%-I[TtR(,LX-8~L+U7Xllʊ0 |RYA:KH^_AlF&ْO .;:؎%-. 64),kN%MCZΞxd&'Bc##"}3g76rXZyT}h +x8VS.!slZ +EU4>OV]MWH(;OkaPm(]aȶy1DRl+VXSzr~:)DW-P~Y!LWF#IBLwk7yv. gml<{|"ypǩZC5XA^.   dcb{55c,C8JqƦ hOMG3 BRI% wH&:Z03 '~Xf9Gİ^#L$ݣIov&5,r@qo*,CLiak'28g©fP>!J+Gc"f֢.x7pWb#a:_Ic.:rHm(p @$uSm9 $s +}~ijqrqqCZrT?(3ldHjP@$`TS.`)I-ɟR [Za$*"[J(, ͼl (tcͲLPL`4{(\hs0p#o@a4ƫ]1즖?s>0Ec;I.+l-iMECjIzf6e<^BL++ėR"}d$ʡ''h'K~I] iPtvrX$~dy&VXYW/(0%cI$+[ x5˧CjXlu\okDE!zU:)*D&7 KNۂadb<$(+W*/t^D>]ǗZpM~[뽝Me^6:ARs g*,4&\5ηq {kCH"o9UVԘUF8ށf! &:۴˿Ǚc&~Eh0M v(Lʘa{N5ZmF=O9mdٞ +վ9ĠU~ #Mm8JA-^v@r."s{1QYv^{3a i6\,_UY{A1x3DD>+Y֧G̹G !{c*d(8mDrwQhO4I +ێ=Qw2>+h +ni|3~T(TJuVca_g&IPk7<²u'뒓dQJگq_})X r advI&WiіT?fK%Ĉ$љezFZ i^;@@ +3F %/-sWG9LzH !7.|M~Sd +K.3y- ꝕ~J*l'ۋ +K =~U-HڻSqԾv5fԆ}端vW(F ĠB1&@I,q*&FhRSW*숚]:P"PUv'7FOH?@~|`ʚ'{b[7rGc,QV 5ǭ!xhP \VE2^'dCLBm:igeƕg!Bx)жi?ZzlsTKuj>!<ڌDMo?vgBM|`LX6418 +zT_[eo$:FSg2m.k"BA yқB@Z:6{"sR3.kȾ |{W ]W;v}Fd+Q\!p`F* :-h;bƵ5O[)L_=^`'/W%%E3zfyUP01s CδAd@7SF +FuO)$0v:CH<+>d~ )Giʧ:Z̸ x{'UxV9x2~?g k2 n}pqrf$.zH ۨ`/PЬOIyޢ>naJpͶy2сh 4=&fν=|e*T2*^~@9*ͦp2 tbkYԧ1+j^9@PEP1j2߾UN0ͰXe,L)0 #[f!z hMdBh2 +&Ӡ$~?=6z2Mósy X'=T<crCYLNur.O'貊 9 X 3hFd0C\Zxjts̬xrr:2//WoLk"j^r^"jf'KUDd]݇VaɶҖ!;'dY5YqjOd.Wd︘ -o2Na`u2d̩u3[闺g2BDP6r(==Z}efgLUUS=™Mbʄ9ڱ-FgNv)Ôl5[0Lpu`< yL e&S<vŃ@l)d<j՜,[;;tC5S9/)_d/Sr`:JG&d6FRT|p\֙3FѸ@T8P, ƁEq+D^t}gTlо&q0`<=G#zD=G#zD=Gy.#zL&AT_*Sue{y ͷ59<Ԅ6S1N@rdU;yQ-ڲ.F瑜&@;Vj%u>9YZ?W-^9$uWfWKW GõylLW۵+Qlu.S&"O\꒹&[h \",w/VlʦtD"l2q0<”&*8ke@H E$yWTQAꏐu˪V!7"tUP:A9RHRj~CxWq6d1-Yse'&[婈?t*˔仞,uM}_&CLa+?hV)eO#FZT_R*Zr/1B XSͭQ'<}Y'OsO*d돹LX,pL0Fq`3014@3aIfS!lD,H" +Ee"y` D2  G848Or4h +"f fAl|eln"=;4m"϶aD,*Ų٨h" S[uٲ3<NMyphg gg m 9@%B0 %c@ Lm`dlph&Cq`,DɀXCF#aDhpd& 5P& P0"^f"+/c-mHpIɄhH + DD + d  ` +h,` С@R9*L*Phabhq顉V`mxY%2}~s8bLWe[(~ˮXtj_:E Ri `LlvnJBMYZw[9вW{ njÙ0ƅ^vM;_"Qy q4|]y靈=y{*:`$AyIˋυ. 1[k͒)f_\?b vӢ_zkzjWȱ!;MR%XuL!QzCY.Q16{[)JjcW) F2.<@'*F,rRL2*oEiwn"L_`upNthWƷ-5YK"'l)lԒ<_#PxMš^=b{'53IO7&20|q3xvQc԰P@!ݑ2xyVi6p5jn_T8|"7<7yUk){a @H]Y kDe*5 6 <nڄet)0hct ;9h "@e-KZvKq;ъkp#{%d)@-R/fZBV/_-?c"tR D(IFE9sEx<~`4yv:+![Ai9a¸p-$Իc@HEAno} .3 ]kk]T{r>a}Z.)8{V :oN: eZ"øF)Cd"Ӛ($AtonzB0LғҺVSz`3^iART9u9 >2@8aMm.OZot8`q=UF?JF?J-B6Þ"?jaυvZ/Ԃ%7\]r nu/JZҪ +4@!*̯HFx-@=w`nFSQډ 4Ƽ]4ŨHK9%܍x mѸu儢͏> pŰ e .q2c zSv[Omd}("jc@#DUQ(b/w ʰNKJ#XLoi}SW&bʕ)KBFfdh'{}%M^#D3JB@%[!Ԭ;n?@C4[nyF6嘀e2 r;T=Z ez=ΙF%jtVk4,u})f񶠙xn[8 !/& ȪbqzVS\0W &PTP}s-n!Il>dl%G'p9~qᶌCc, e/VG42D`>f`{şҟ渲hYcB3W虜 xI܏3Dgx3o,3BaK*-)EEޛeJ cb7R4KGVN ~#Qa_"*T>1zv}-DmӏZW H"#Nq];ߦ9S |J +jW)mK[uV 1vVS#^W-r<0Zb5ݚo=x~DᇀZWl0pY8_C3 ؁K|JnЕuCl;Ѭ2g9t$Qqî?(>zuډӸty" %^۫} t}$B@?cGbŰ8%ܷؖQ-0/ ]~4MFpPf%C29C޲F ]^4_xnF6V why~J-O÷KIpt<2 H`m4#W~ֆ 7fąZb IKdty {Goč۶FM-$2pGˍw.ZOɜV#:Lq=^ +VdZu(Il ŕj 0 +,$k̆Byjl[ ʪhb9U [ifˡ8&OfL$aUI uFZ'ُsPߒ:xwH]x2Ǒ\_| (|ʃ.aiAEDWјGw!,;LJ}&`)(Qb=BUBE'/qyif¢akRc9BoI_G<Lъ_cxq +?皃`pp]"K]IN/}`0A6l<);;cá3kF6[ʕ8#w":zY"9X^p %RV~u vpOx U](Gq8/Ӈ)p5dIzpWeUj<| ^Gg"'4/BpJXܵUYA/R_{<9 +9a eE\#C䏜y/wx%6c^~%hťg8W!&` CUqJS 2{S>s\h +SydBV3VKoƝR 'D9GRV9Mw [4 bOZӣz&v2#|#,%&C Uт.{3~Z GPٖBs'v[c A]Ym~~dEpkuickWm.Q֦CoLq 'iL9۞7GQW#3%>_yAR=?}roLZ]t#ׇM0XL1\ʽ`Db3 ʍgQCpR#Z0<+mLQ =<$),"Tz ÇAE",,6L xшLhZ:xq C\_ 4iS ]7Jc֨'{\#>- 0WyǝeNArGޘǔ#Iǧ1Tȗ+! X1QhzSDC:kjnP8^y*'yB1 N|΁U|+L5puo}9!p4g+0u ~:8mH% W=c 7s3^YjgiѢ" A\AĞ+;7 "*z*j()ĥ%@ fǣ)z+r$e:Hoa$uT=w9wFxA;GNq# W gCBiIJnz23@FH(Es0{I=S#QP:x)E: 6&B} lJ12ƽ:EvIv̾\lcVgĬ! +Ĥ +@e誟9;@^N A x[*-SawNmʤj| +v{I~f> >stream +T_Z!҂td)O>Da9!E-ۓ|3yЇPIVIzTdE|N&!GKxt`IGRc(zAKI+#9ڶΊ>Y&C/O2Y18@[F~49!#0쓡 :X5v,P#P_) %U`@w + EצGz *I8#z)s ڍ[5augM5[K +nM/'n =~)! TGYnL#Tډ.mhEoRɏT) ?rb!/+JfJ~8;,@7V3C>#r(/А;=Sz E(;bm=?yǥP/3$ a51`P?D3lRF~{kSxF4tkkᛐu#A=0Ţ^&@8 *r>yh-G/`A%B+ƚ`EnU(SVB7-WPCa'N5pBi[nGe@F S}x/7LjsHF3Z/0$Di1H04I$ː_]6r҈#?,e*My ήKwlm/%%B_0ml!LoaOX뀠(ԽʔLmǜoRGg}=#qV3> _CG +rwL%w:UQ沩?{bRkZ=ȩ2@ NHgM$"郅"4d.$ d8CAWlCCu(FPCOgQAHhY<]z.fz67Cu%!.b_'{BAk(OBsr;07:wWd0AK#fP{Bar"눣s/pc*</|jzD/h#? +gn/0[<,Z*1* 5z8{h`vmEK[A#(O_,*6 ŧE3Ac=|^% 8ňXB&d;,]#AL#a_4q z бb`[G#TIxF@t Zcmķ q]$It(qE!~!ۓCh)imcy.A]~ s<|~6sD)mHIR VO㊕'۞"ZًEݟXB/O*Q#%*vPF/M*m7Q +P"٬Ay@ '| 2y7L᫬<= Z{xM_/ +d^}XD|MQ@ϮKVgPԍym lDzҟIT (ְH<1R8E[ l_IMCX9Z[ZZV y:`N_ce7Lsb cϣEMn8~c HO tN`U*.,0'E^Fv#^3ĦUJ$ Qӳ9 o^KUYDCB +zjM#p&S%Ɛ,6jpBAZ.+zc\j YKAE/\wj>U6ry1D?@*2bӍ2+~<'* A#qP7V⏛|G +>% p5bmg*,ԣnW9V:&N?ĬnX;2\o-=ׄTeFVSvN0݉xw1kc.Mh,_Wn&#T+]jfH'9`.ckU~J+ۯ\τqMEVMs -eնM#J=ۄCW(n%!1X D1c@ @" Kbñ<9,la׻mN1L r`<}qr.4?-I=n>츾"| 'QN8+ۈbZ K†A"'UWSiLL;E.:}]!ٹ}/JSIC++'^~ю YyYWe1"6jBr eW]^d( ru4f MmbBbIAe%|ȿ |tY($9baޫ?StD+?;KEA_n,գoة9379Hj[dQnu̎и☴s9Tȳٕkl0"@}} V`ȝ3j4iJPĝ[2oܗ{_mmh.7㭖H"޶7-"}+"Q$p%瓐b_=C`8Do!㛟:gI ^a_Z"#o $s̬7hA sV~l;c +Ac[R_σcNL?LfO/| ԁQiC +} ħ8HxKRƥl#B}Wudr+1w R @#- Vb$[ X`#o1*w8uGy$YƐ v?,/ +Kr$^-JXvJI +l cS5 Ԅ8/XP_cIO!n+68 ?`}_(H#e:Dq8,. qjֹl7QYK!Ɨ0cpo}'Qo ]>,gL kࣇA%S'!A.t +PwSph>ފ})"]2Bj wDr\-=AJqFV&APe.p4{I{;wi8m_ٯZ,/qn9˧-8cyWw [Bɴ)R)9C&DZB>Mz׮aň;rv +Q[1Q+ޮPz}_Xs~,̻g?D˦ 􃠻 I6(a45 IKMadďҬ_fYӒ-cj>}ڰŐۼKJ- ](DD `i,a֪3ՉB5DZ!6]ٯ(  + + /  Or_:lͪ+XQk +𽻭V4+~}݊ڷź3C Cߚ_/nk}ʫE{`P9ݔ䛈#;Ŕm)vs_<ZQ-t;˵n9+b'ZvY1rʵbQ?d)4,0;v *sR-ݚ t&Z/b-ְvkXi_ϟW۪U`PZb-aJ-MbU##$ɱ% }*R/]0-.@cqXY ZCBor-jX6ز '_d$C]lpbÖie}Es_Ų?,?C2$E}a}=;'$E]%Ib{'IS$#)G#H(!FRP"rؿK{zsG}99ѓ`$xuNQDG8}9ݏe'9v'DZOMŒ$E^4?ɱb=𛿇^=KRyyaHGKM#!)pHvGVn{q$K9G /Ho Q쑕+N/8d/?CS#)=f(򗝏aC.O,#)g8z>eh=M2$/v\(r߇"A>GS,KH+C߽OMdC_wK܃_$ŲX>fː(f7#)#+W=byfe917ͲI/Hʉ!7XHO"y(!y&7Òs͒q ʍayEn|$>$Mhvf7Ͳ쑔HuGB R쑔3q IIb"i _a=88z͐IQ\ȹI|1c)~{K/2,9]ő},CKGOp,C2r쑕#sq$nq 1r#+ %8(7͑?!.R,Ϲzh!E,;}7p^,Dz,M1r#?3AO&9qEO&)8b$Ȱ&HvKIX Ks~sAnFVnc7M#)Wʑߋfi{.aI{&ȹNd rEGs.3d#DKMO/Io~$N,pc9}͑K=}Mo܋H$_,({9)^/%/zo^OH8W5H $\a@`R +u\YCS{caZP˜+7SzrK/a8ciٹ`xiznK\;ǰ6^0+ pcO7OKf_rʹ6s,sx]ޛ!9?kxVӰy5Y~,Eݛ!dHf9r M39~!1ܚ}muUna[U7l)S$8=8X3~CMKF6=i~>@@B5 DEx3^1@xi@ \X#3B9I&@%3D@,$gk"3lRB#TbY)!$~57 eJcwtr@))C2d)ѴOM4nفeR4|ND[/\D4KacZiWh9RxarH.6.QqDBYŎ0zAD6ڰ6,La2vހ=]X6?1I'Dg)"U͓Wpa'EJ|um/}.p)=:.S"ݡ +§p +J8@\M$xK9DPeH_?<FqWhB tμaA$JHY6a9rح! gj|XjİWux VQ,R'Fvy0 +xFZX%ހ@Kfg{UFq [ťR1+X (m-Tm|Zh ¦E.>-)A2:]f,%cRhGAU*lH86E(:MZ'Fy%\, +8QT?NTu9$9&L& LȉHxdB+̦N# T9 $'x<DkR + T)DmEvTP CrZA0:4);9 !!ڇ &{jh3ɛSD4OS%ʰ>Cf 141 J1lYsl+ihi [U!Fa 03]QBpf?+D0fPNFd6* ԧ l +.0݁Mc-q歲^UPR܊0+.WElieQ?f7r1̙h]cy~V<Zh|.8pΞlclgY~kj_sqrKV;+d|kY 庥AZ&mc\1PPu+ܚgPf60X +],niPYYP`}epYY^-Zvu82, p \A`t `+@Z-@Z+AZgY].cؾ,5@Ze]4]-VXðe6 -s}]o/9em `,Hϯu(쾔xl Q}*#}*9 Ai}QέaàuƽA> ހAb\VCڟ[Fq~ +%_P[S[#ؘ*V:Ujj&;.CZ9?3Њo@<13@!I / +i}oӏQTy0)ÆS1:eh[Y:nPC5vm6D'𮐍^Oz./n6֎r\WA/) 5>Tҕ]tE+: +[`o#(xeRR .4Bq)k@=KҮ.{o63+c NF^xNJ+ +_E)@8eѠ5 EBFE$E/CagmV Q vy3OSZ "ꙁTyCE lGiZzt2-ң0~$ӆ$R^ZyZ^be%+%N4zH3w؅v]ǺpYAH;G:.b[>bqw)AC>f"3q3[<0|V'2钱@X:}虱0zEڅԑCLހ0G/nn3},X|$N_V6{qxJ#5]SfjnNysa/MOMu/%O3o@" c,/YY 4B(.ϯ$*C2ѐހ VZ $/EJAdc.X~m!rnG ׀~y,?~iހ袳Et)RL&zh$Ԧ:bހ`8 H֎ pVqN˷"wn:n6|:.:^"jr{Բ%Q<^rF -a)v\DT$օ:l2*h\]!.jc"B@qo@|`pX䴈#v4a + OfrȞ*$"-HW#UadCF"Z$ 0SB\ڮuTUk +4lA`$ك沛SRO\ZI|,uM6t^I0@o@Eb`V9JS)J, HMAJ*\ R VF3чHVxTVȱH!ʐ:QBKBHy0=.,A^}n( S`eUlƭ+xR= (ZS:bِt.iġ) +JE6ހUdsĦv 2ɶ!MIElKLJ6eB{f:̫9P\$L@1fErVd mYVKހuUU65x앮=- v,гT[tHŢL+ypTD +Jw< jim(Q΍G))ހf9-*Ik7hT"f(l 6N +Tid{ ItX=ʳDeXXg#{$sJhFCr]C:1 ML9kVŌJKv"Wĺ |iqno@2)+d0-X0-||ԇ^;&@IuC@v-OI ݴM8jY*N:UY>&T£qtFE2_\-l E]OP"ހ !Z2zeA{#YW4O2vLxxAQһz +UVWRIQaHjd#J*~W++faxA'xAM' cyg_>I`駕8eIb5$`chc<E] 7 7;N!Dir b+ހ@X'B-oc=F*ހ@N)-><<#GʂhJDsI:XHR<&c2Q0av~{p4F1@X_WU.b]"Akؖ$A>2johM N}&3 + B3Џ!2t0/Ϟ!Gʝ-g ٨ B&F0"n +{ g~%׆@i:3“lLElD0S "cT:GȂ-E(dlP ZgC4^FWX"=~*+&5%+g3z^{0Yy!f- B0ΣUR>&1Ti3;6::x\o3$Fѳ23(aqxC+3T<]+$OQ[h/7?Ge1XmW̆7L7nl*HcƬJ4wBϴE  +EGÇ~FhhFvLY( )wH+qba׎c`~/*>3JiA|o@(3A&GVtR &0d2+x6 5Phul_ultM EUQiOi=6>*ht^M9W+V$2L1ȺpJjFMA|!I5I~tI|hh,2 VQO%Y*]Y)Q=Zԓ#*ńOJ?>`qwD [H +/i:eR@hXW,z#pt-$2q>ڋRb` /Ri(`f"<PJ:$jw"˂2}O+xHITQ-GJ4uod3I˚OT1ha8hkA1_NSBoPҭn(h^+jmtFmSc;ņZQk+J%ҿ C8vZI.:nit4?.!`Bb[X-ȢGAQh$IAkd-3̷[gja2Ðe cf+S/\ 6SMMI%>חI;-BEU:WQ.3NgEUTTWTUTʼntZ@jR EU 7K- 2clTf[{Pf;j&0~ҁ22" +cXCѩB#|R RN:V~(,), u+ݡi(!3ۓG3cLcWLc>UW c_@ +  + +{5r견]X%QF"M|#xH9@ +ӭHL +Ӽ2Gx㦊 <9I>'ԝPN*0^Hǥ5.'mEt) ri>XDۄu++mؖ>&6-%iހptI钟e:MȦә.etJ!S2:13␨S fU0`N }ڔz>qK>\aѺzgY钶>L[Y̨U25NjƉto@'\tcȅs&B58x-#muwӵi4:ѻyu9`,-@ ] =?ʶJ 1tIY8Y)L`BTy]Žv*Ϙ6TF)h!C+!ͫ w|$Jހ@V}S$bl!;DثFmLؤ! =:m nYT>8o@Z+tНR )'SdJ})S)c1Z "&Cx眎9tla6 mӱ[;#g0%ST2AU:ņ ހHnyeAAit\Z!.HBD=ԵPR@EٶvJ6$N/zgcǧ2Yc r1V=?qJ +Kz v@5H?m` }4Zv 7ÈT*IoMy ]K60)ͺIe2ܶ0"Jgx!Wu! ++Ra9*e9dRF{Íkȿm:җ&z'>$u{'Є)??/INkK*(8j,)SO.7P~6%QK;E`8LaLK F+"LQņw٫;gZk@Z8"`4`g1Ll"N׶TdM4 ˯tb10ȿQ(`IM,\8$ON0aV%JlB^|&;|d⩲گ ,o9I՝Bx`% :]l0N#9WPD?~Op]n +h[Af8K +fի~YzK5#}e)ZRVq|h&8wL)kI }q䨽6=mJƑXNY@Y)7*Ӌ"LjKd0ZN86 +b1 +jӤNmFšl7m9hR:x8rY-ǾIǤoںQAVCP"bdcR(tqL]00{f]cho^ct1))phR:.R¢-Zন,#*-+Ijr> ʶG}(T43 +vƒ6,\괈 xEśl@pQic `"?C5`$aYϱRDNBm;yAW +|3vm{;QvėBW'yS +ztD$^ΟYFB|g9~s*+?L}*}Ű)ro# e6 լ')WLUcfޚΏ- $V -Vc'5}i%fE~[Fa'C-n3og9nCEkrTo'zC^O(dæ, +( J6Jz.nސ=a.p }=JOD '_sI&QVwX3 FIx,4nԓ _ +Sxx ;@|pSGީ$Q͙jŨ1T˅ +GH\= %ZJ #D䞠Tʓ}5oq!>f_e~(6y JD{cFbSDC1oaԃB&uwrP5'J4+:7آMпqyAvMl~hh_:W>q Z$i1TFuk/`>~QFQcN(6$3tJt)ԛѬ#Jj_SDevϹT4dG LW)ϱxRܢI-/>xRIr;p#ĝsC]B|S8T6MЍX?IC jN +`N1O.ص( !ݢ'" !@k"fG8$!!nL]qP<ʈ0 &2܇8Gyq㊮~dSE^'U qm rB=^~sŨu$,YE b +%m'bG$yCKVlCE0ԝpU\PTBlBYNءPp:}[>/k +FhIgfbek'Tև,f ŕ?ׅm.팒o'h;BT+6Hoi @ss+[.6B9aI5^+JBV"/ U +l\fjZJqm6(X _sx +O_"tfdS`L갩EMYqHjvԥ%WZej1 fK$ +LxmʵGXA'Pzx!sD3RCF-cT +\V ӑh5#%3D5-;GTK +G?C2z ؈D`̷c@ Q9bpJVo50*vbgZ ܷkFW(5H@T ПDsOW G, xp1 AM`KRJk\*:M(55RHAL.jښ,'/6閙HSw*|^'aJl Q{6؇xT16@׊|f6@E.#xcR7G0/368oI@acmkh(Ee|Aހͫ(1~`ɜ'0It3݀h#;\ ? +w Ql}&<.Aֽd~Ny5af._ꄖ&l Lb -!Gg/IB!BuO I^Sѵ$;$X. =0HC*FUҸECG~Yc1^H7i -(LUJx,iAo 2ogl a+vrtou"Y-X@6x Q>!rRV1Ǘ"78wAPrCܭ˧au 嬿{-vz7}ұd~Y|7C'K ^h6F``Su힕@lsqgБuPoI[,AAaHiy Go&_aƈWW>t@|bRI&r|+|\ċFY( + >VbWR-k#=gS\;&xh=%soOV@\&ЎXWNy Dv8 +"0Z0yJWD 7+Iu) V.D0|y&<ـ>Rx䬫nQ +eu 4f֊G=EI4 ŦdZqU?B05 ?mJn:vx&A(p; VX8)h´V;=yQô̤f le5- .N)\ +C*ql\X>hB᧥\=FFu͂!4p EдX  p%MT9h" jt H%B&Øi'flQW~lYfH!}AtSQ$}\dpmA/}Q^I_ +aP8icjoV}EX!!іegsrz OWZp0?ȢǿjP9cdJd2\G-[qBW4$ktreBBK4 %LӞ4jSD]# L 1N.d W$ꪋ4>|IJ^^,KB\Ә% qfSXCtQ`-M`L|؅yUBlX od*l;!+~J^ ymhJ]L@ +eB}=JCðb?&8R C8!G:8@lӪ ap$X|d IW !҄wXzs믕0ꙻc|5,I% +6r7qodFSe2Zf),ls$< +&{':8 $Pl:`Cax0Rc65[ήhi ]]lw W0!y>%> E[V5@8qh9 +Nd?p hkLϯ]GjgүkĦn I BG[rLȋdj&;']t +D2{.W\[p \C~rm%e/kB&OdBLbsvrqYuDB˵]a3#Wi4N_Ȁ]"SgglLFmvYl@x.p`U>X1%*(~_cʷ m55peL\չnh7Rx7>k:kUҭ;k*;,@R~qkx4.S|$4?e*xԆձAK38o^w-e6ðO.Dt~**Ut̟Ufm +c0΋)yqA^P/X`yX%1!, 2%R\`^ۉso*,hɠavn_uXZ4#䨌¿V‰e!eg(BӘb3p2L *0A@:$1W^jpj6j +gzP56XYk#7bfAXL4n5E0Y e5?C%kq֫"![zqIF j-dRс䜜IE2Y sllҧ h;rxILGG7*H:ڤ `Hp.8j,Ԫ Mh_8;x$f4'n +'X\N K8z%W0vϮRUXvt!x$F o 4Un:5d0c)^VEIIR!|[e9sܹ^Yw|Q._4(Y5(c#L/dl\&D?D9y&m +Qf1?' Ʌc^N'`PZMm@ԌS_)02Ty4ciRK'y/?) Y +iT>MFy&Z],…ƲO*Bi?H2dgMV?ZCyiZ ة*:r*y̤ ңGWs\A N" wo퐾\UÀOMvj-<|Q$a$@+X =`!XH+ \ydz|CIəF֫Pzob< $Ntr~3t§. +T+ղo3U +;G%<[jpڇ)^Z=32\c劬FtvXzpuKNJ>+nd5S GSʏMf0Yxa=8řMztwk1'@ |YuĺFKc4x,|N$|0I+F >QʭB-ڈʁ|}Iۓi8J?@HS3$:/Vq@_}< F&5sT}>"NTΌNJ-{ Cyv+O0?Jx$ ^- ɑ?gو+:_=WSrH zDMZck+2Z텁YBVwT]6`45MN5k Sʞ2]ͩ +'kG`mY]Zڂ휽)ΟЬ;$%ʐCqZx3`Y6‹~ˏ:9fSzG h&M8īԣyrK,.ᶧZP+jrFt8|_D(t,BM&rJ$Д4d+\ ;rOM31 / ]Xr|a{.Duv++^A$Iٰ^g0D#HY!&U%I2>,_eNa#+Au†fm-8AQ,2VoDutc秷Wޙ5pWU'Gh'yĮ7"O!< +`wDE5.hwqR.7As>nnI\e)+U:osZ +LB,RMlN"M~E&^/K+knjr𢍑J'>ysxvEhqON~5|lqP?  q"7G +èarت{`<Ҫ%@ v{b!IѴDҗG4kFÄC* zAm)h tkZ$[(gF]) 6wr)=O5$I,gЉ̰Cjtz-aʜuC:x* zIL v& +,^FX*L:x Ipߚnb-1CMwEZ@m .P#>M݉Ӿ dmE {TX$PaDEݙؓebۂۛ#V"RjE, +l66Aslrw +#VB4 |Q%O1T+zLkĒ`<+V}oy0(3!I)YZ tHlb5MS#h홼xwn‚V;)L3*#1c?+BE~jiq{R|§P St`:Ar 9)6w;Փ ;iU Tp(H*>%Ν;&% ̡CbZ!j^9rQfjuZֺ .7K7C Tt&B>TuQےm0UvYR 5{F&Pv'>FPe +@@t}UЭ5W| ئʊ޶0`Y jIR+}Q,vF$(AגiڽicoWL7Q֝o _5ȟ)قRT*ÍTtG7e82'k y&%ZfhԤ? +;aέJnXYV[`IBG3&T,$$ς O鍤8T(LޜcUsuy~2}ɶ׏z,[U)o{׉U寷+D {1׫6 f6CB-o"U-4! v@˄>CL(K$]M)'JRy7zsOw/򅉂['DPӇ2p>.[;f$ -0 )~+uӲU L c5G"迊̓wґ#uߐ> />ȓ3_P +," U9 ns}׀F#$nyG }+Tr"P2d9VU$(S,iNͮ|(vPmș!Pg%CB~Q!-)2;Fǁ:hHm$5F)U#̺nj1 CJ:e6ac#B#EA#YZYp/E:$Ay1'\S<۱V rŨn[ uzųp[~8O5C~ +R ]˓4{[P7ÿ^W)nڞA:F/p71q*4m⩻MFNL4N& +N![]"r)g8}ջ|yDdH]Z.EܶOR[4+4su [ʙA|&5Bd"!}Q=QV(T[4O{pUXv4CkҠćǫŽ1-$O" r)TrHk +SZ[t#Nr-p\;jKS`r7cWyU.e Y9gNCR!nY!iLWPG63ɟVN0D-]gNk "4%2IS1[Bg4J@l*@g$@Fz_˶uѼDNnP%y\ȭ_wm'ET}زifoli0nx&HPѱJR=>R_[ʂH. ]?Li&tgAs֌[j}\f(sy7|NwwmE@#mW?YFkW逺kȽn헣94jk4Cp_DjIos D%[F5b)w`G;ÒזQ9}Zeae4 B#<"LA;LO U4Z}#qN)DsPY ^E,A^>]# KrX@J@ 31"C2H匕/*WdNrn? J|茠18O?yWvɊpF׬Uu+|Œ.aI(ĖS̅$ak%aQK\5/ŪKB,O(VאuS.WvcyO%^FMqRݲ*)RihbۧHq-P"2<p|Rt(ճ]]xCz\ddE끗^f\h0*e!ۢ-^fԡ+P%Qf4Օ6t hG/;2P +Asz#t/{4I?Ғd% T|DyR"oWzDݠ]*F"7+`jF;"ɉR*@GY( ˢA.W +A?"Zd*5hU Z2܄{o+ BG)ihPإ&/KUM0_xBD[KJKB.~R1#!䝵}kzpVNi@^IArP r%XƵIZPl?`f-"CaB(Oo_Bެ-| !L]֜k\e fY,]+U}X ;;+J6@b [")}J#m^+wT +R;"+U n1n{vT+GCE]YɀܗX.mRa۬nf&b2'lDc$]_C) TRQz +9&gQQ012KqtS{%9eBՆn8_}JzF)!lʣJ^*k0|8y]t~nb6g2 4A}d0mgqmtT /RI]vm"]@2 /KޞEn.ьCkԐN[KȢ5y3n+Djf8˴dz!,ѶDSɓ#s Dh+a]27k؂LhICZ"j?I hl>( +"[KT%VbL f`qzEװl  +GH|3'e@ Z^I`xIr0U5Q[+,b.k9NoUEr0tޓDSvIWY-_iIAZ\/-iFjn~5Zw{hFny7j>Pæxi:Hx`w=䡡(=$L L\u$#}qǨj;[_l< :*yswH.chh׿@ IXcAͯS/4 @h~3@&5L [0?D脀ׂI-!ن +_ J7|ZJ~XO̠"ۅ + RU} w4f> Cy5<(KqtJxzPVKi^U{Ӟ(?#Z^#l7zY` vh4 '/U5exāx&XNA0s$T"[n Nb4K_O~ny$)v&F/o +O8즸zwn[VFD8yL AWfo"IwB-f żz4-Xs_{6T\wR{s<@H:y6͹C{GfAb;Ja }R p]Q}jv{7tkwcC01ɢqUּԜ^5uCJ#s틾hhljm1 +լ{ck_+c'&ӉUՇ YerpO~=z?h%4Qmq~y9}N6jv6ƣ uz5UO<틞5uEEqSiZMNiٻim_|p3hfJaQsN9~R}׊Ppt+?,r (y#c qZlOwT@P涂 Kb=^}PnB2Dv+r/İ*&^=L`[K1vȿ 7ՋJv>sX|058Q y{Ah+VP=-I׆x__ `H^bP ܲ&/L?DJ$vk+$i% @e AHT c( ",k|ra"=t2Fɜ4ʚOyTA3W5ѓl9&dSh} m ڍ`(0j|};)&4xao񂻂+%@ -( ^S™'PN]NftyA#W6RT>EG:`cЬmݏGqo!Pcl7L;ʌI*'P'Pd51 d]u>` @ ÖM%08O|65Bu#8@ P/ҕM ?ܘl44 ^$X|DɌTlawoooW:رA -ZBVcB/L}+Z/ً//HA+Xq{V/\ q*kp$GӚ]+QXWjUH| rN5*β "*M%7sRL\  Q"b {6O cE +T +FjH~62$#C ȹ]@yE΃p r7h< q/tJ"&zF^1.q583|90~X# 5=kH&ydp "g>2865!g1-88 %(pM/u ۢ2Xd9OS`YJ$In3[@ʃZ#+Th)m7Ee\ +ԋuq4B!$h I5LfZxo`k=>83ljp+Y\$ {s%74G8lW0XlE[JdgVY.5>18%h zԟ 2Ԛ$AH]w$r]pJ ϑ@hB)0"Gf$0!XX*@dYǚ ޔJW}5κ]W`0= +λ ֈ +M)]D +.*|T +I9cA"LoB>@| 84B5 3Pi4PhnRD5'tD> (L8%ϱ#,֧_mi6q_~4C$_h-(?AtGfҾ M{W..\ 1,@gC' m٧WXȲmIzQ^Ѽ201b+j@̀ a7?dvia %dSe6VԫӔӐTulX-yFth( 7ʓ*wCГ +7tCrDnte +:NIH tC +_`p_2i[W\DOnm"L/AxT +)i5\`N+H@iSŻ֧w] e 99UyUp@ TA!&q82E& jPrsHzɴ8.v[*/Toupg!؋+-qVKn/\ _4Ȳ F &T {dfzKN?$ݒ6f쎵*/ `a\uRDi +G3[8/0j +`mʴdoo`Y @IwCcGF3dAZԥX|)i6BGѡ^$yzMiрz|Zm OTqTKCaDHpl~.iFQe W,XIwf&OqOIP>&TYsP("Z8]ss؅&iY4׈Ģ+F)ӦLp EzZɡMrD+DaB08lZT}0= ++x_x<#TY" ؑFFZǁ5@ĸuZ4Z$g6]b!O^]x:5/hF~u.hIy H$BDSWaq5"@Tt A#]B@\ {@DZW;jNj;;() s)gRH+q#`Ya Hܮ,+T]ȗc3)j8#a@is4( Ws@=p5|ƈz+@!N{ppKFk}*Yx8L|FZDJTQ#h +kJPDZrE%Y ŔKң˃3L:Iq甸^+!YڗL\i}԰ TtIWF>7 zi! c:+`BP^kZ`%O ;.oC#uJ-^DI#v}F*S `Ho_z;@a(EPx`d/vIw\4b4vW0t,%ج+a{*S 1UvxX>?H k'@ xPiW1k唳O۲1Ia$iHZcCX6m&ѼRƉN/§+}tU"p]=PtSM ]`y):A(e+9KA*22U:ÅhI4ib+0˳fzX .WC~"L}\mc%qhQMaDYi +CtBDN4y<qxܬu r I44 @+T PoʌFz^dr?~Q|uPgJIb)%jS*C̀LDGjH= 8kei!H6@lĤ^pi_@jVt;%]ecZYj=raD aVq>\!0yb[`wƮ,&:2ʒOȣ(:ԇ%ZP%Zrf9lr,Ԧr<{?s̛4RCw;]^kT}k59{%;Qs>~(,9G5[瞵:oΛoty/9\su7u4n<}k{Gsmf;oP%/y;G}zC?穵~߻ͨ_0$uy#/>sϜ>sz8I>eC7MC??·GOR7ZQ6އ㡿ι::kM[}'{[oeY\rϒIkuG;y?xQ'jr9snr^vGy曧y35!w36yi=wyIy|tY捎Eù;:==[k4ϛD͹mZl,⁑ kY6_> Γ}94UPpmZ/`sݓ fT?JGM{ԥΆ4{;?/^Rh(XYI[Yn9K?5zjɭͽ:OR벗F$&zjg9t=ɬܹx(uFhyyS,y75Z& ?*GH^)MSZ,blVfL7Բ`V\MeiZW$M[&Tw3^sifTPn37oy3w&w.se秉`0G9k}\wI 43y,|פ6Gff댒>˞&,~3yѾI?I+NIS dI"]W0`R Y;R؀(n<83+`6 ԣ=(PPâQ%.cm ]AM&!Ѭ՘4PQ$cD0d8tU4,5~*kǒՊ(8#,c4G⋡E|E^GdiTG3GM -m$ ++/-/l A)+ns \Uv@, \Bi- {z$ +pt\@]dj(oQ$i%c^d°X{'4kmƺ_3(DA^0BҲ,$`p$qV>,ٙK +sjH3j/AwXJ)@,(y$Ŕ:ڨf +!s0(\S SH6R>B0 # FaEQDAp 1ߒF&!xBeLlS8m&?҆.RAPBb-ч^) n[h>>T +\=4a̓Ɠ66c}ܐWoc^<者Mh6SbOS{ee⺯bhOS3a3+ EN0埖6?,yRhbS|H܃]Q$|Sj^CoZr*oԑbGBtjdhk&C|h%E4J%ֱׂm\ bE |ᚮ$-VU`n UiGR.d8)Q'9z+@LKݳ$Z}=0uu4Fz5cXAN:Ў '}%P$cASV*܀31'/A_FQ.3TxfJzg3HpTTV9OWύFJB}Ȑ +Ѓ`5]eZ^{A=u;5%4iHRoXeB+wUxv;8ju_/uh90q{/pV1tM6h8`cI)8x,-N*PlЗkh &pf)yPJ56gE1LUFسtV]P:(wDasdWwf1pOkd'f6 Ɣ]AGCo̮CoR055;AKR؟f2GyH1dgAx)6.ȝU\R5tN83Q_[媵lsΗܐeCHCۀ\ @[*A_Uձg$@Ζ+P>]t9]$!`k`*3[МrS)B/{_Lh.m`RC(IF%CdU{$'GJXHL<nfdӚ2OnCq{f2Ii~;QM]L$ew(8nGQ 1)=ҡdYz0B_)A=k92MpÐcU.!b+' +̈́O:1ƞ+큠I4}5 dӢ$ɵd{ -UOBŦ4m +r.6B4k7&8Gʀ8K]w!ݱ t?N`kk2W{0̛n(6Z/ǘ + 3cI/\P+# +eKSvCs0pˣ6JŏKK%}*YzGrʴ ^f!H&crӨgw.+ׄ +#oJ)OYB8zı*Iŭ0 VFpKΥ;yd *eg4|Lgb"_N7T.0 v[+ WlK!gV(]߳ +U|!a 1m$Hy3d.^Hkk~]Pf:ɌZ T!4.ב bGR1d 1c$ kX'܁g6x*l?V4Fͅdvk=23fjGǯցj]@ʄQBt8m#+(G)By5-x<VYAD-#t|Q47 K@n1lxX_~&gI=:N+6xLO +|u?OldB81vOP m:hl"%K$KI.~Elhma)@؃C:F^d+R=emgoBXs+ [o\`17Vi?(n$49 yqޤkIX@%/&O9sS H$DqZ0 +q7~Y} +ZZ6 +PrVaiQniٷ\ILL6[7Йp `E&u3CMn5lAJa1MwI.p`OYޞ]_޷ .}>m fOs)(׊2B*_dRRpf;PE杭N)9# C&\E2Mh _zzH '_w] UX)5;>cF+/ \&f̉ %I"=_򀨮665JB\:cȈ9F` L<Zqḅt5%GCU $.?+vc >` 6捻s:XhZBR!WBS8;PE<=5Bw.Hso6/SO=ij&uNO~w)nO(Bo%T:]!/ YTYyzMt{3 APsQߌIϝ)Ŭ/Re<}:>QXcH򟸃2L\%[IOQG'b?7)(.i$G&GuuPE?ʤ(Ad:Q oU-?jrß}Pc rԅޱ&kLͰRډءqƧjD ɲs:u e,4\ZB^(4Fp ~b li-"tW(cOγբx[wL%k-!ܱKB/uYDq T6ƀVݵc0&ek,@qo`}[\Fbs%C8 !<^ oʀ&WnFqbf0 8LL*rE^A KZ{fwEm7r 󛐵`D}J)$ALUAtf%7t_+j+͆ +$Epaۆ.PQ8Gza Gnrx=\([W%Nrۇ+%cګOE7n~yu{_ _MݦOiMA%__[6LDv'oAG0] +CUr +sT[8)Sl6Ư b +*m^BW{|nҠJc +go,꜕ޠ0LF+Kt&Ȃsz'6 +W-T3AG^ +OyMn?† ♅&PEXV)f*$*! + .DCMhJg!aEQQ,D+bJ%U]nD3/BJ0a8{qڂ}d@ieB_W ^3*ӳ.RZDGjI*D +AVSW*!a]BPD7-EQl4VN&׼$Ih풨:z5C˂&#v o)/CXA/̸,@LupyɅ\}[v`PTiAyvavDwQc}95.E9#[Ϋ)L`SI #"=j +Z~6eduF2bX4TӤ L)U-p`;WFGBν0z̭'ie+$U2!DXҵR3EOD], 5VRYn :0`88.6RD(CvB + F+Nr?/q +$HXO) +1bK%i2 <o4}]̄T丰c7."9堓NY +=}aP1w#Vq~Cm#n7}ox9>ID?8KD5M5lSւ&aACiF-$>^ۂ + Ұرs4 ;ø%vFWfLWF4 ;e7ES( ;Y5aB0|T׆(n-]'Rgv35(3vް,:H{R agAކha]PU 1pxLxcU@.Ӣ:JاߧA؆ZOKb,.bafY˄JlicqEь +(=YW;K&@@HS}mfO/b؞ eLJPLPPK;CK ~‹3JޗEFD"D{z+%t6m,g0P)wG ~LvoSs%_U 9Kb0y'2ؿЯ7F_O 0s*\o{xN)*lfpr.9XϪaKY3 ( F*quM2oxK21),ՏR !cg붸?b?Hڇş9ۑ +Lx H3bIKL2"2Y(s[Yr;CwX8q<ٴz?Kk| +e@ANXSD-p=ܵzQ Jr[&npw["pNT^gfTES3 HnJ;B${UyK7(Iz *-W]L5" ! +`;D%\s?# +a\ v켮KzFq.&ôEd30]ndV;"pSesV1Mad%uPV#߬ݺC/%J,N1W&0 \Y#jRC<>_cд"my~0SUl+E'g0<0GCXB MB$ pҫ80d>ڇBqrk2SL=0 H?%O,V8͍L79+әw"4'N/Z 4Ke%/R +~s{`]Ɓ0J+H n@yu/ &]3 $ tu1XN# •S%Zґ*l}.F^mw;4NDG=)tM2CNRTORJ2+ +o'Z*T~CD4ss/lѲVC 8\U@%5Y$5a5j +AI#Jo@.q E?^@@Evc'>Ė=4|Ri1݆h4}7D[@w^#/jZfQxhU" +2eCuiޘ?p5.hWŭrLbOaX(%{H<ߘ>pGfP $3!K-J] +hW’~ӐJfQlhޖ~bh]&fjI-$ ލpa52osVj/j"aA,BDsR$Jc \bEEqZ`& 'z4bCE$>.Dn2E +0>jHuUD 6r zuB >2niJ3`3#QB-,a!|X3ThDf]RdH`kI{XDF A&J1@q +|@48m_flʻέ Nc:g{E|g3s<[L,!mGS3- +g?dya]8Éq !^ ^8ldp +AkRUF42]Q̀Ѐơ!haa:G"@Zù$z@s5f] 6p[fh2hKM̾L4.in .ng|ӈ)^ *%<_}Ih/B@!}\TM/YL[՛N肖4+k=݈" 3`,rq؅-Cڄf_ 6Tc:! w);msK9Ҋ4tz89C`ڜ!mieH˘c'JH`#p @M7"j.ڍ +ѻ+tv!ʲν@(WyHZ"+_VH:0 j*\zcqMĵ,rx?_V\$ ~M\5P#6MYfPz1V1àm׆?Q6gkL=!=a=@nUyf]:=ᒷ|HuN1ڮOԿt"Hg{M1\d[a >?h5$}ky +ğ =)9iBIx;cpn{Ibc}iù)Ky'$(¾I$^rc#88h>ž 5gu( @_  2-r~p=9)6PFGsaE9/rZ'`czK'p磥 +1=-Kգe4THNjjkT r*ze)f{hig+(o"̣W"-K.Hn ! +sǒ;z"e6h|*E"iׇ(D_ Аu4AF~w&#lQrVԽ\]*jm!g᪣ R!ChCT"v'MyIzm@K#qO'# Gڒ 9H- : *3Id>hܨE.Q0< f&x~',tY6pVh 8au$5W%g&6t38ezЦ"2e'ʝӬgX% +c0Vmf@Dv ̓ kOm8D!U[꧙[+XYDn۶-KrhiiPܤۀ`gRn[mu+m#ZnH y; m߶<#&q;mVXn nD5r0߭|B|5wH=蛏xiC[G9]NWFg#[c@sS6ц, z-l=m2ClqvրCr`^/lVnhSeC"苞UZ4$צlx.5J@p-.@@’r f2VB +lwM d=+h(Wr{0pNXA$.Bk&H'5p>5w?!^Jl1uGp>۰5{.L`W?BR d(ߦ뽛ΗhIp'|[Z]HtX 2j NL5=TJ^ J ?i"*=|I!֘ P3sxOC:eRwK֟ +YZ]C-k;3G> Թ ԴE|WtK.QhKU % m}`NgmF^w M +O# ]k]CVm,ũEfHAבg0n}Q^W<[0)N0GaW(~'kx^]XRLUg||^ 3]?EpxWUJ0g@<0ч/C$@Z,jPaOP8Pfҟroz>f%@=,5j^P>DLHCQbeaHdT0(#߂e:Ds6 iacd֯|w9U|A4js@$ u,1avM|' ą*2@7M42Xc X?BljiMT^^ղ>%dL*CPȩL`ש\S4b= g6+&l=C3T[6ښY +=:ᴩ,_;Ŕ`S<(EJx6 +A>mG4dh@PgN}E^c-p*5ƚi鄤sGC1X `dz(<"hg4=-ub -t:BX汪ͩa[QBޅUЏ?rpM0 +Ǹ5a7z]zl*McP(@1 =zÆģkvkM BU)r#U#t>|4_T.R.}G-pfc ዸ Dz< b ncl6F,{1p8I:#TX%R=6+u싦TR:Ne Q8~P~Xa/|*2[Bja% +YB@TmN΋U,%!cSFwҦr8+h\Ňޙ4MBBj"V4ڗR̋__V- &'vjm'FhX˒&{{!@yYcMyjH GHN> +HۂcW?m.G, +WSod*6\ϤOB~︭9kO=%MZa?3.8|'g@*YebFE_WQ ^PkM܅N R Հ\( Db~h*& +)` O{3Ͽ + !Ͷso6'k %Q*)2aTY*eA[d#e;zte/|ÂVdZ<" +3QJ&}V͎IC>l쏈iZ.6?QЕ|Lvٙ3S.m~bFU޲UMHG`GJ ?J]{q-ѭ_uT*؊,0#*|~c"gdX5RY%ź׉B+2үDv\:{t*!x2o\K0U7ŵp±"̈ڌ|Bx +#Y jZ\ J @$>Xo{x&aZ"f^o^R(qx \Z +MU+NNK qڊgfʷ +}"-sf$ X ph|\=S/s(H@v$9lAi'霑x <κ'6F}%:7$[ة8`~}<n8Nz5}.EAϰ2Y@g;і(F !}GPqýY,ϵ%'85vM3r%^T]e(gÄ)&ģTX-ۂJUqQD>԰)x->TCk4]?P3! |ng,Ogbi;ꤝ*8-ӂ͹UK'r3-,t( (&N\BϬ_ZI\r[ d[N",p7y +Q^؃7dѨ߼տ ̮$r1*ɯ*BsûN \Go Ɵ6OѣblA`Y3x!pT:.Brww?\NJ:]סFU1Ar^86z}{ݑZpoQzރYEBmP%R6)L,)Q*C2P|$?qdW]U6=:~@A0ɠgs̙)+mrr/Ek)i")p54] *ȄApe坔EM#!hh.{"߭5J1tY"fvEMlwUqٟ.!_~j!_I5D7%U _XIoGCoHπ_tĒ0^PLv +Lf}mz\F(Ԟ<͔&Ӹ#>@ʛ /Of`/pn6@?iJ]qP+B6dGd;Pml]0{53I +5МvBd7[ r)\EZb`m`JR*Х(H ˫]A H<&]i5J&û =zj~W8o[z?0_hxix94"8K%9Q[dx50(3[RJԱۧ++_aUnwhv=9Zu%FXKLNL[Zx똩vXpݸU&׮ƒ^}HkT} +Ue +z A^Bӹ16 h|k<"|RqbԼ^4PRw=o{ҿ &T H&&&*cThPUgi'p! S6?wYk"maZ-^/jz㰽;>C뷝B< $0 @  + .Hp$.lАdp$ #DEIG4uM!}l]3&D0}ˬ<1&rx&E"B'p#搈"RZ/q6J4Zt|^{7XgΜ%ʸ.,YTL֡[Hߎ5$S'UF4d\T?R'q2lz-` "('{xRDbhP0DRX45j"=*# ÑЎ0)C,|ͰLM^pKqhoPhT wnocȝ8zΌjUķ~dzpI@Ec\i]+ڪ +Kl"IҽmuLJ#@VM hޣ'2&G:~$"nu~w?0Cb@hR̷1Z_/(de)q}zjsM^&y*{ Qhw Mҙq 1V7RWKδHp2Ë8JU [Mo"9YnK)?ym6\A6sA|!I^)MWSiHZ,OeJ6LH=؊DfW`U>,+dY]xVA| h2`2ҫ\IUgY)6Ć{;̒ñqmH 6I$I_Fϐ1Ҷ&z՘s_] %}ijPly,\*?^^9Pp6'&>*/"Ps2KO߳d (dh0/&[U⡣s%"ռu袎HWz9v,Yn͢&R7SmoaV+20i䉕ûAApK;R?Qv||"9y3/^m6EH! ]g5~IkWM^?EUORRL2b>xǾ#!“)NU;Hd +,9؆EGʲwvvPŮc*/xƀƮnaS:C k?bS-,*;(*(~ ŕc󫗥:J0p/{eR7櫹o0'Ua\N9Ҹ-f>pgN,v1-]5ʡjNxM,r31~Mpb⁝]f‘Űn'({I7&ӱyI)5̸x_Y޶y xRttf0LYy|¬APTiM//SP[zRRQE:,!*\WW8IeS "$(hG!:I2b +H$ :/fZ(N4ĜDsTZHsS薉:2LHmNkd3pbO*^>fr)g!׬˔jDcqJ3^p{LF5bR辘53 +vݝ(](yYOQ{!"Esej!")߄ PuB"C{d:"Bũ$*Y zu23 ( +GYH0D>d/}K L":쳖 ( y*Eٮ FxzتFMӅn]-yӞ *$OVH1boh@C;C-;GqKC"*lzn53LL1,8~탩3S9pD0`=C?B"D4`PE!(QZMr :2+{" P, W~Bу6&*ŧ A{K&v6k4B]d#sRTt7uǔ"(o0*yrYkI(5S'kɊ"{X6[eX(iy0f(U5% ڃH1vGZ.yKi' '|&$K\U\¡j-,)4BSEOGWQlԻUY,'+BGFvBOKxxHI.J^-Bm l+=9YT+F6Rh!!B>,EzÐ]ADZH6[n`C,zlȼ0vcN6AN R?Ke5H[ DAR7H +T0-5Vȿ`Bj,H +` m$x 0 +D;t+>.EYIPߘC.ڬqL2zm'8RÉNQ&~g*\lEӳ6Q@#5c#$aR5j!2ʨ!c!8%|iOO1pۨ#q>> í-VF0#qc:Pg\r3 F_V8p9Pa06n>X-ڤwmFBF7vY$ԽLG"MԹnѡ.5 m/[2]  KIǎ}U_F#!ak1X6 W(%rtSPKov첰\#ĉ%؂#5LݧJҜ%:`0w(#iD` +$p~9=IRc[`x&53RoM`s8!DA 7%{."2'ʷ} S)]ŠN_͑.J@&M)J_w 3uK + 2ˆWx"_RAw' (ǭ}̱vus1䴏ƒ,al򝭸Pb+A/M p=[ K#j9&( N?>]0L<0S.y9C20 &Y0DgwNr}! 9xإa3czg^~;4yd&c9~NF ?A0*@qm£i3!xoOFu> +(+0 ).L$SZ'iQzI{}> CڮPW"EXYǒ.5I.3u0(JGq{C =Jd o1MQ7jT.X浳|bZwLKLBp GZŪQ{hq yr$/ gy=L)³&[M&] p$FiDg'E$"&be&!V*%%V)@ߖODp)_KxGI <lem*y)$9r@ +@TPtq3'$)AqE8t`EW716M>?!ZzĤOPY [F%c^/qPP!ݺ)|X4^%c{` .טae^nM$01#ZTk7&^9{M7ٝx +{pJE*C0QP91f+ADJ}fC͈IK gX F]z!'B iʼ~ĝ)/ݒZW)fiݫd 'nOPyQs Ou<;N +~DJf?bj}<[!6.eܽ{[Xx<=KXpdlOyGI E/% KPCJypvr#ujcoe +:RH#B|ʓxR:;d S +̱7tGLkHюH\ nnk^ U 8I@ endstream endobj 27 0 obj <> endobj 40 0 obj [/View/Design] endobj 41 0 obj <>>> endobj 32 0 obj <> endobj 31 0 obj [/ICCBased 42 0 R] endobj 42 0 obj <>stream HyTSwoɞc [5laQIBHADED2mtFOE.c}08׎8GNg9w߽'0 ֠Jb  2y.-;!KZ ^i"L0- @8(r;q7Ly&Qq4j|9 @@ -1478,53 +1476,56 @@ endstream endobj 38 0 obj <>stream HA @ E9ſ@gq(Yx7P?(II^~BI;elw W+1)G+ݞ$-*0DQlfX2P. ,a Xj\,^ulgh]YV\+lu {z 0]A -endstream endobj 37 0 obj <>stream -HWKn s?nUTU]V,Ji/u0 4d2n?IxxA8?nz0_@ -mTFzˌϸuagel -00MNk\!wf][YCEc|H>+#<Ώ(mtE+0F  k26^ɸrfʪ w…#*ᝥ![i@f q/kx~.Ƴ/xcTCҚm`g-TN'ʈ&/ˣm H5 u8I>ޤ$!NRYM>h:?|BAQk =ޖ -V%^,Hg.RA`!u-0:%BAY4t Rk)6x%\ L:%[=` %oG3_v9u1*Ml<=ЂCu43#z_|Z -endstream endobj 35 0 obj <>stream -HWKo0 Wh-ڬ0a+Mi&ߏ%'^=PÁ$)1'oprpjIPTcYf'-HZ#=Ekٲi|TgrϸA܃V42(JJ1Z=k>/HOn;Fx9a{LX'0*c(알ŕ%Ml R٩%av -5z"@C -m :ʒF>)>dLJvՇ$1ةjK5g&h+M&6$& $"H1& !$"1:6+)|BAZ5 -sWD 7%7Wo$qx%J;(~XFe ZlDWP*3-jzn٢z\wKY1:Bdvˢi|Q -jR mwldk-;'}Bnj~VZ'X>(x!ϱ]1 U,MȵwSIoc -EK ֋oPݯ0ʻ# -endstream endobj 36 0 obj <> endobj 43 0 obj <> endobj 44 0 obj <> endobj 45 0 obj <>stream -H|TkTSW%PWf`n޸h+> *HThW& D-&@Ci^B|(((h- -ĪUruì57خ5^gセo}6!2{HdREZ ILI}a1I+^b ]6mCK/^CS 0}k ce}nO3Lс> sx6ӳvL$vdeȩhmӅ.}6 "H-»7lzqrSsemh.%0%ˑ%dpGT>cÆ@Aqpޅg} <5}hihU[RLTzvff 9:@ ėOP"UI;P9}T}ZWB 2&#q8m"d 7*ZZEld<3&f/\O^%R8Ve칚iTF72VI>[`'Vn-/S]m_spϸ@o _,ޕ l"YHW;c6p>8!hN.x5xAW-6 v']_snԁY21 qPa4^U X_BIQ41k5vh/erlŪY= {0ِK) 2YJu jy\XϱKZNjfn. 3 ]TN6Owr<@2Gb գſ4͑^fԚj ~B#nrhka!: VRY~Bu"~?a  6g0 fА]ak?a/umF֣|c 5LeNu~ͽ;FJ^-/L+g[#y3s@m EBNpGʩ3>QPCf2t\=\eWٝ:;? Yޅfpﰅgܼ -endstream endobj 34 0 obj <>stream -HW͎ ~!MVUC fWڝH2Jrir@1lsHSh2`I+Ї5M7*XHm̾'hzj@oșf9G~xd*.Ro,9$"қ' -j5w7nr]jrDOh#oѣ;5r|½ -U`&.)t#niuKPEnW9ϋ^ۄgn 3S>[Dۆo `ܪoy$4W -endstream endobj 33 0 obj <>stream -HWN0 +ނX!Xp% VE'mħvAÿħ`"bAb"8 O h -o,Je;}O02!CHi #XNQ`SxiU':a?kQ*DV1b/09FhY<hnZxDI'Z8[lW\8V@zeMæXK޿\YMyr6$gۼVuŲs돠!O4$&LiMF'H'H./r )r$%OBꍤ6S$MjIL Mw8G8ՋNٖt"gdAV1u0̛"H4mތ=PP=0qsTRk=M kgEB8wԌȵKN`4MT$S<~v҉,▨f*v=9l X-π3ÐvR!Nfw<+ͷwz +endstream endobj 37 0 obj <>stream +HW͎ ~!MVUC fWڝH2Jrir@#6|s9ym$)4Hf$~C\ߚio,s6af_o i er4  iU + ]*wMM*SMcl$Q fyAMEXXULXLT`[ZtӒƳ&$/Z3\V׮`鱣Q1x;l&Q/I.je!]XOn43 l@+~H[xh%!YR z#ɺ_DW#!@R,1IIɳ/lH +Ԓ0=q!Xھ/p}9[=/rY j^'” WeEC%9D$]z3BSMΑSKMn]^#iMo%|'' +vc8ݱSR*.'<@YhjO>+>(VePVy8My?9y<0EmHбϭj |u#' +endstream endobj 36 0 obj <>stream +HWN0 +ނX!Xp% VEԑ6s;Aÿħ`"bAb"8 O h +o,Je;}O01!CHi #XNQ`SxiU':a?gQ*DV1b/09FhY<hnZxDI/Z8[lW\8V@zeMæXK޿\>YMyr6$gۼVuŲs돠!O4$&I +&쇴&$AaRo$Yq@H9' !FR )&${D {;z#KŀV +lˁ3L Q+}: g*&Ro,9M$brۤ7c( +endstream endobj 35 0 obj <>stream +HVKN0s; +! hJ/1c;NM6Xƿ<ϫ3sxp$<<Lz ǟ0Io 6H#=mg<+6t``0Z\"S@ m M  &!F^qGi{,݁1`X#qJŕ%M#wflX>stream +HWKO0W19ʂ*UBUH=Ua)E˦;cM7U9l<̞YB->ގ;JIۄh{ v;AM eCcx ɻ H3I8|IBH3I}j't|FAZ5[W+#JY"k.^qJ: 33N9x+&м,N=j>Sƥx4-Dux&8PAx_As>_KnX?x&2'S-(75j|&t%j%%-* [dBAѭh`4> 7Kn$73HR^]vP(kQC*>n#iUrUgG_Tez&!hNtLe8ahc7+0˪0gTTXiAs~(.S:~VZ'4ox q\1  xHwÑv;wȭVyE.HvoPKW~|~0, +endstream endobj 34 0 obj <> endobj 43 0 obj <> endobj 44 0 obj <> endobj 45 0 obj <>stream +H|U{Tgf'eLqx"{7ʓX|LJU=lvŬ.+%h0R%=db"IRI%KJB*ԶqJ4N+U˘8J*EDz J nR dBKKgBUlP)I,,byL*.PTR(p\g88 ;N=' Aq8.샲d[fw\/n*=b?/PG45/1oL]b~=n覃gtȇ?|I +؜B 9{~1E@r &ɶB}j&NlYSNy;D +EUV}UM>jou|.`@2n(}G]CL ro`{Hvtn㷍}}tgNAרk#rsûDmcA' -^y4ܺnK0P|vN jOgV9mз 7oߑ,v5K;t6\ljh&!pK>[CEgŁd T! +8㖂h>pz 8y +ůC74vW"7V̌)h$JMƓ@Eh;- 7ҟ ;4eܞZE|fx 3YtԤ(@\_/ji~D *nf+naܦ ئ5_O9n@CgZSFkȳ LˢpHKLzy_WN_-tϾ> (2@M(@p7p"+g>4#^ $-l'_^GaL"#c\x-=ZBiId̄x:Zm@Ό7W/ [vNPrD]*lA>6|ix +Zy`kd*)=%%C׼0>ˑzq EV|x;3^3ptL *e5gէ)>,=i,nxRf Y[CT)ԪXX瀧 ׉xUVh8_]geM`Y6-6!lmjٞ ʌeŔVVV9+hծ-kB##;sX&Ug \|g_%o#}/yiZ/"޶HZ{[v@&5dC'djc܈1_"SykCbchGk1c1l`,0STr wחKwjh}T"?=k~g˄;bVtD:.$MEy"/y{[ScnֽDHCx/̾m} rk+$xZV"`>y^u'+ ']|wKo+TQ񁄀gZ#S$3E@u? +^HѾdJYݐJ6֟(:mNE5Р8 @'@Ѷst+(T va&7h5iP/DԽ/77Z>kS[gJH<3 02l C5{3Znltx:xo n fu8: \my'߅˯@&mTQhdt>P._[d2hGr#r┩)#5]j +ڛzGj^,b&م_~Ka@ zweԿMoU6ai R:R ++#x/eؑb_ + ~ = endstream endobj 30 0 obj <>stream HUK1 @qRm)zJ ,f^p}l'vA4KW8NwW0 X~~5_9g gGZv1@CʨۋcBM$.6lylTB#d> endobj xref +endstream endobj 28 0 obj [27 0 R] endobj 46 0 obj <> endobj xref 0 47 0000000004 65535 f 0000000016 00000 n 0000000147 00000 n -0000048068 00000 n +0000048871 00000 n 0000000000 00000 f -0000048161 00000 n +0000048964 00000 n 0000000000 00000 f 0000000000 00000 f -0000051080 00000 n -0000051152 00000 n -0000051347 00000 n -0000052835 00000 n -0000118424 00000 n -0000184013 00000 n +0000051883 00000 n +0000051955 00000 n +0000052150 00000 n +0000053637 00000 n +0000119226 00000 n +0000184815 00000 n 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f @@ -1533,33 +1534,33 @@ endstream endobj 28 0 obj [27 0 R] endobj 46 0 obj <]>> +<<74539DF1DFC12E428EEDC2D71DF78A04>]>> startxref -251030 +252028 %%EOF diff --git a/datafiles/data/themes/default/graphics/node/s_node_junctions_array.png b/datafiles/data/themes/default/graphics/node/s_node_junctions_array.png new file mode 100644 index 000000000..bfb229f78 Binary files /dev/null and b/datafiles/data/themes/default/graphics/node/s_node_junctions_array.png differ diff --git a/datafiles/data/themes/default/graphics/node/s_node_junctions_array_hover.png b/datafiles/data/themes/default/graphics/node/s_node_junctions_array_hover.png new file mode 100644 index 000000000..f1bf1b4b8 Binary files /dev/null and b/datafiles/data/themes/default/graphics/node/s_node_junctions_array_hover.png differ diff --git a/datafiles/data/themes/default/graphics/node/s_node_junctions_array_hover_strip12.png b/datafiles/data/themes/default/graphics/node/s_node_junctions_array_hover_strip12.png deleted file mode 100644 index 5e8176024..000000000 Binary files a/datafiles/data/themes/default/graphics/node/s_node_junctions_array_hover_strip12.png and /dev/null differ diff --git a/datafiles/data/themes/default/graphics/node/s_node_junctions_array_strip12.png b/datafiles/data/themes/default/graphics/node/s_node_junctions_array_strip12.png deleted file mode 100644 index 82a85e766..000000000 Binary files a/datafiles/data/themes/default/graphics/node/s_node_junctions_array_strip12.png and /dev/null differ diff --git a/datafiles/data/themes/default/graphics/node/s_node_junctions_single.png b/datafiles/data/themes/default/graphics/node/s_node_junctions_single.png new file mode 100644 index 000000000..67ad6370e Binary files /dev/null and b/datafiles/data/themes/default/graphics/node/s_node_junctions_single.png differ diff --git a/datafiles/data/themes/default/graphics/node/s_node_junctions_single_hover.png b/datafiles/data/themes/default/graphics/node/s_node_junctions_single_hover.png new file mode 100644 index 000000000..813394eff Binary files /dev/null and b/datafiles/data/themes/default/graphics/node/s_node_junctions_single_hover.png differ diff --git a/datafiles/data/themes/default/graphics/node/s_node_junctions_single_hover_strip12.png b/datafiles/data/themes/default/graphics/node/s_node_junctions_single_hover_strip12.png deleted file mode 100644 index 0b48d6f4e..000000000 Binary files a/datafiles/data/themes/default/graphics/node/s_node_junctions_single_hover_strip12.png and /dev/null differ diff --git a/datafiles/data/themes/default/graphics/node/s_node_junctions_single_strip12.png b/datafiles/data/themes/default/graphics/node/s_node_junctions_single_strip12.png deleted file mode 100644 index 12b64d053..000000000 Binary files a/datafiles/data/themes/default/graphics/node/s_node_junctions_single_strip12.png and /dev/null differ diff --git a/objects/o_dialog_add_node/Create_0.gml b/objects/o_dialog_add_node/Create_0.gml index fbb5cf155..b5bc9a7d2 100644 --- a/objects/o_dialog_add_node/Create_0.gml +++ b/objects/o_dialog_add_node/Create_0.gml @@ -24,7 +24,7 @@ event_inherited(); anchor = ANCHOR.left | ANCHOR.top; - page_key = ADD_NODE_PAGE == ""? NODE_CATAGORY[| 2] : ADD_NODE_PAGE; + page_key = ADD_NODE_PAGE == ""? NODE_CATAGORY[| 3] : ADD_NODE_PAGE; page = ALL_NODES[? page_key]; function buildNode(_node, _param = "") { @@ -119,6 +119,10 @@ event_inherited(); if(context != "Node_Iterate") continue; draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text_accent); break; + case "VFX" : + if(context != "Node_VFX_Group") continue; + draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text_accent); + break; } if(key == page_key) { diff --git a/objects/o_dialog_palette/Create_0.gml b/objects/o_dialog_palette/Create_0.gml index a79acd8e9..f8d82b5c3 100644 --- a/objects/o_dialog_palette/Create_0.gml +++ b/objects/o_dialog_palette/Create_0.gml @@ -81,25 +81,41 @@ event_inherited(); #endregion #region tools - function sortPalette() { - array_sort(palette, function(c1, c2) { - var h1 = color_get_hue(c1); - var h2 = color_get_hue(c2); + function __sortBright(c1, c2) { + var r1 = color_get_red(c1); + var g1 = color_get_green(c1); + var b1 = color_get_blue(c1); + var l1 = 0.299 * r1 + 0.587 * g1 + 0.114 * b1; - if(h1 != h2) return h1 - h2; + var r2 = color_get_red(c2); + var g2 = color_get_green(c2); + var b2 = color_get_blue(c2); + var l2 = 0.299 * r2 + 0.587 * g2 + 0.224 * b2; - var r1 = color_get_red(c1); - var g1 = color_get_green(c1); - var b1 = color_get_blue(c1); - var l1 = 0.299 * r1 + 0.587 * g1 + 0.114 * b1; + return l2 - l1; + } + + function __sortDark(c1, c2) { + return -__sortBright(c1, c2); + } + + function __sortHue(c1, c2) { + var h1 = color_get_hue(c1); + var s1 = color_get_saturation(c1); + var v1 = color_get_value(c1); + var l1 = 0.8 * h1 + 0.1 * s1 + 0.1 * v1; - var r2 = color_get_red(c2); - var g2 = color_get_green(c2); - var b2 = color_get_blue(c2); - var l2 = 0.299 * r2 + 0.587 * g2 + 0.224 * b2; + var h2 = color_get_hue(c2); + var s2 = color_get_saturation(c2); + var v2 = color_get_value(c2); + var l2 = 0.8 * h2 + 0.1 * s2 + 0.1 * v2; - return l2 - l1; - }); + return l2 - l1; + } + + function sortPalette(sortFunc) { + array_sort(palette, sortFunc); + onApply(palette); } #endregion diff --git a/objects/o_dialog_palette/Draw_64.gml b/objects/o_dialog_palette/Draw_64.gml index fcf05cc8e..8e2b696c7 100644 --- a/objects/o_dialog_palette/Draw_64.gml +++ b/objects/o_dialog_palette/Draw_64.gml @@ -91,8 +91,12 @@ if palette == 0 exit; var by = dialog_y + ui(16); if(buttonInstant(THEME.button_hide, bx, by, ui(28), ui(28), mouse_ui, sFOCUS, sHOVER, "Sort color", THEME.sort) == 2) { - sortPalette(); - onApply(palette); + var dia = dialogCall(o_dialog_menubox, bx + ui(32), by); + dia.setMenu([ + [ "Brighter", function() { sortPalette(__sortBright); } ], + [ "Darker", function() { sortPalette(__sortDark); } ], + [ "Hue", function() { sortPalette(__sortHue); } ], + ]); } bx -= ui(32); diff --git a/objects/o_main/Create_0.gml b/objects/o_main/Create_0.gml index 0431d02ac..e90014310 100644 --- a/objects/o_main/Create_0.gml +++ b/objects/o_main/Create_0.gml @@ -19,8 +19,6 @@ room_height = WIN_H; draw_set_circle_precision(64); - globalvar CURSOR, UPDATE, TOOLTIP, DIALOG_DEPTH_HOVER; - globalvar RENDER_STACK, KEYBOARD_STRING; DIALOG_DEPTH_HOVER = 0; UPDATE = RENDER_TYPE.none; CURSOR = cr_default; diff --git a/scripts/__VFX/__VFX.gml b/scripts/__VFX/__VFX.gml new file mode 100644 index 000000000..6011fe620 --- /dev/null +++ b/scripts/__VFX/__VFX.gml @@ -0,0 +1,186 @@ +enum ANIM_END_ACTION { + loop, + pingpong, + destroy, +} + +enum PARTICLE_BLEND_MODE { + normal, + additive +} + +function __part() constructor { + seed = irandom(99999); + active = false; + surf = noone; + x = 0; + y = 0; + sx = 0; + sy = 0; + ac = 0; + g = 0; + wig = 0; + + boundary_data = -1; + + fx = 0; + fy = 0; + + gy = 0; + + scx = 1; + scy = 1; + scx_s = 1; + scy_s = 1; + + rot = 0; + follow = false; + rot_s = 0; + + col = -1; + alp = 1; + alp_draw = alp; + alp_fade = 0; + + life = 0; + life_total = 0; + + anim_speed = 1; + anim_end = ANIM_END_ACTION.loop; + + function create(_surf, _x, _y, _life) { + active = true; + surf = _surf; + x = _x; + y = _y; + gy = 0; + + life = _life; + life_total = life; + } + + function setPhysic(_sx, _sy, _ac, _g, _wig) { + sx = _sx; + sy = _sy; + ac = _ac; + g = _g; + + wig = _wig; + } + function setTransform(_scx, _scy, _scxs, _scys, _rot, _rots, _follow) { + scx = _scx; + scy = _scy; + scx_s = _scxs; + scy_s = _scys; + rot = _rot; + rot_s = _rots; + follow = _follow; + } + function setDraw(_col, _alp, _fade) { + col = _col; + alp = _alp; + alp_draw = _alp; + alp_fade = _fade; + } + + function kill() { + active = false; + } + + static step = function() { + if(!active) return; + var xp = x, yp = y; + x += sx; + y += sy; + + var dirr = point_direction(0, 0, sx, sy); + var diss = point_distance(0, 0, sx, sy); + if(diss > 0) { + diss += ac; + dirr += random_range(-wig, wig); + sx = lengthdir_x(diss, dirr); + sy = lengthdir_y(diss, dirr); + } + + gy += g; + y += gy; + + if(scx_s < 0) scx = max(scx + scx_s, 0); + else scx = scx + scx_s; + if(scy_s < 0) scy = max(scy + scy_s, 0); + else scy = scy + scy_s; + + if(follow) + rot = point_direction(xp, yp, x, y); + else + rot += rot_s; + alp_draw = alp * eval_bezier_cubic(1 - life / life_total, alp_fade[0], alp_fade[1], alp_fade[2], alp_fade[3]); + + if(life-- < 0) kill(); + } + + function draw(exact) { + if(!active) return; + var ss = surf; + if(is_array(surf)) { + var ind = abs(round((life_total - life) * anim_speed)); + var len = array_length(surf); + + switch(anim_end) { + case ANIM_END_ACTION.loop: + ss = surf[safe_mod(ind, len)]; + break; + case ANIM_END_ACTION.pingpong: + var ping = safe_mod(ind, (len - 1) * 2 + 1); + ss = surf[ping >= len? (len - 1) * 2 - ping : ping]; + break; + case ANIM_END_ACTION.destroy: + if(ind >= len) return; + else ss = surf[ind]; + break; + } + } + if(!is_surface(ss)) return; + + var cc = (col == -1)? c_white : gradient_eval(col, 1 - life / life_total); + var _xx, _yy; + var s_w = surface_get_width(ss) * scx; + var s_h = surface_get_height(ss) * scy; + + if(boundary_data == -1) { + var _pp = point_rotate(-s_w / 2, -s_h / 2, 0, 0, rot); + _xx = x + _pp[0]; + _yy = y + _pp[1]; + } else { + var ww = boundary_data[2] + boundary_data[0]; + var hh = boundary_data[3] + boundary_data[1]; + + var cx = (boundary_data[0] + boundary_data[2]) / 2; + var cy = (boundary_data[1] + boundary_data[3]) / 2; + + var _pp = point_rotate(-cx, -cy, 0, 0, rot); + + _xx = x + cx + _pp[0] * scx; + _yy = y + cy + _pp[1] * scy; + } + + if(exact) { + _xx = round(_xx); + _yy = round(_yy); + } + + draw_surface_ext_safe(ss, _xx, _yy, scx, scy, rot, cc, alp_draw); + } + + function getPivot() { + if(boundary_data == -1) + return [x, y]; + + var ww = (boundary_data[2] - boundary_data[0]) * scx; + var hh = (boundary_data[3] - boundary_data[1]) * scy; + var cx = x + boundary_data[0] + ww / 2; + var cy = y + boundary_data[1] + hh / 2; + + return [cx, cy]; + } +} diff --git a/scripts/node_particle_effector/node_particle_effector.yy b/scripts/__VFX/__VFX.yy similarity index 53% rename from scripts/node_particle_effector/node_particle_effector.yy rename to scripts/__VFX/__VFX.yy index a613a0044..e32709251 100644 --- a/scripts/node_particle_effector/node_particle_effector.yy +++ b/scripts/__VFX/__VFX.yy @@ -1,11 +1,11 @@ { "resourceType": "GMScript", "resourceVersion": "1.0", - "name": "node_particle_effector", + "name": "__VFX", "isDnD": false, "isCompatibility": false, "parent": { - "name": "generator", - "path": "folders/nodes/data/generator.yy", + "name": "VFX", + "path": "folders/nodes/data/VFX.yy", }, } \ No newline at end of file diff --git a/scripts/_node_VFX/_node_VFX.gml b/scripts/_node_VFX/_node_VFX.gml new file mode 100644 index 000000000..9b1f23e5c --- /dev/null +++ b/scripts/_node_VFX/_node_VFX.gml @@ -0,0 +1,375 @@ +/* Backup +function Node_create_VFX(_x, _y) { + var node = new Node_VFX(_x, _y); + //ds_list_add(PANEL_GRAPH.nodes_list, node); + return node; +} + +function Node_VFX(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { + name = "VFX"; + auto_update = false; + use_cache = true; + + inputs[| 0] = nodeValue(0, "Particle sprite", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0) + .setDisplay(noone, "particles"); + + inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + .setDisplay(VALUE_DISPLAY.vector); + + inputs[| 2] = nodeValue(2, "Spawn delay", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4); + inputs[| 3] = nodeValue(3, "Spawn amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 2); + inputs[| 4] = nodeValue(4, "Spawn area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, AREA_SHAPE.rectangle ]) + .setDisplay(VALUE_DISPLAY.area, function() { return inputs[| 1].getValue(); }); + + inputs[| 5] = nodeValue(5, "Spawn distribution", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + .setDisplay(VALUE_DISPLAY.enum_button, [ "Area", "Border" ]); + + inputs[| 6] = nodeValue(6, "Lifespan", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 20, 30 ]) + .setDisplay(VALUE_DISPLAY.range); + + inputs[| 7] = nodeValue(7, "Spawn direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 45, 135 ]) + .setDisplay(VALUE_DISPLAY.rotation_range); + inputs[| 8] = nodeValue(8, "Acceleration", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) + .setDisplay(VALUE_DISPLAY.range); + + inputs[| 9] = nodeValue(9, "Orientation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [0, 0]) + .setDisplay(VALUE_DISPLAY.rotation_range); + + inputs[| 10] = nodeValue(10, "Rotational speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) + .setDisplay(VALUE_DISPLAY.range); + + inputs[| 11] = nodeValue(11, "Spawn scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1, 1 ] ) + .setDisplay(VALUE_DISPLAY.vector_range); + inputs[| 12] = nodeValue(12, "Scaling speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] ) + .setDisplay(VALUE_DISPLAY.vector); + + inputs[| 13] = nodeValue(13, "Color over lifetime", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white) + .setDisplay(VALUE_DISPLAY.gradient); + inputs[| 14] = nodeValue(14, "Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ]) + .setDisplay(VALUE_DISPLAY.range); + inputs[| 15] = nodeValue(15, "Alpha over time", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, [1, 1, 1, 1]); + + inputs[| 16] = nodeValue(16, "Rotate by direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); + + inputs[| 17] = nodeValue(17, "Spawn type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + .setDisplay(VALUE_DISPLAY.enum_button, [ "Stream", "Burst" ]); + + inputs[| 18] = nodeValue(18, "Spawn size", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ] ) + .setDisplay(VALUE_DISPLAY.range); + + inputs[| 19] = nodeValue(19, "Draw exact", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true ); + + inputs[| 20] = nodeValue(20, "Spawn velocity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [1, 2] ) + .setDisplay(VALUE_DISPLAY.range); + + inputs[| 21] = nodeValue(21, "Gravity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 ); + inputs[| 22] = nodeValue(22, "Wiggle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 ); + + inputs[| 23] = nodeValue(23, "Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true ); + + inputs[| 24] = nodeValue(24, "Blend mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Normal", "Additive" ]); + + inputs[| 25] = nodeValue(25, "Surface array", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Random", "Order", "Animation" ]) + .setVisible(false); + + inputs[| 26] = nodeValue(26, "Animation speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 ) + .setVisible(false); + + inputs[| 27] = nodeValue(27, "Scatter", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1) + .setDisplay(VALUE_DISPLAY.enum_button, [ "Uniform", "Random", "Data" ]); + + inputs[| 28] = nodeValue(28, "Boundary data", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, []) + .setVisible(false, true); + + inputs[| 29] = nodeValue(29, "On animation end", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, ANIM_END_ACTION.loop) + .setDisplay(VALUE_DISPLAY.enum_button, [ "Loop", "Ping pong", "Destroy" ]) + .setVisible(false); + + input_display_list = [ + ["Output", true], 1, + ["Sprite", false], 0, 25, 26, 29, + ["Spawn", true], 17, 2, 3, 4, 5, 27, 28, 6, + ["Movement", true], 7, 20, 8, + ["Physics", true], 21, 22, + ["Rotation", true], 16, 9, 10, + ["Scale", true], 11, 18, 12, + ["Color", true], 13, 14, 15, + ["Render", true], 24, 19, 23 + ]; + + outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); + + seed_origin = irandom(9999999); + seed = seed_origin; + def_surface = -1; + + parts = ds_list_create(); + for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) + ds_list_add(parts, new __part()); + + outputs[| 1] = nodeValue(1, "Particle data", self, JUNCTION_CONNECT.output, VALUE_TYPE.object, parts ); + + static spawn = function(_time = ANIMATOR.current_frame) { + random_set_seed(seed++); + + var _inSurf = inputs[| 0].getValue(_time); + + if(_inSurf == 0) { + if(def_surface == -1 || !surface_exists(def_surface)) { + def_surface = PIXEL_SURFACE; + surface_set_target(def_surface); + draw_clear(c_white); + surface_reset_target(); + } + _inSurf = def_surface; + } + + var _spawn_amount = inputs[| 3].getValue(_time); + var _amo = _spawn_amount; + + var _spawn_area = inputs[| 4].getValue(_time); + var _distrib = inputs[| 5].getValue(_time); + var _scatter = inputs[| 27].getValue(_time); + + var _life = inputs[| 6].getValue(_time); + var _direction = inputs[| 7].getValue(_time); + var _velocity = inputs[| 20].getValue(_time); + + var _accel = inputs[| 8].getValue(_time); + var _grav = inputs[| 21].getValue(_time); + var _wigg = inputs[| 22].getValue(_time); + + var _follow = inputs[| 16].getValue(_time); + var _rotation = inputs[| 9].getValue(_time); + var _rotation_speed = inputs[| 10].getValue(_time); + var _scale = inputs[| 11].getValue(_time); + var _size = inputs[| 18].getValue(_time); + var _scale_speed = inputs[| 12].getValue(_time); + + var _loop = inputs[| 23].getValue(_time); + + var _color = inputs[| 13].getValue(_time); + var _alpha = inputs[| 14].getValue(_time); + var _fade = inputs[| 15].getValue(_time); + + var _arr_type = inputs[| 25].getValue(_time); + var _anim_speed = inputs[| 26].getValue(_time); + var _anim_end = inputs[| 29].getValue(_time); + + if(_rotation[1] < _rotation[0]) _rotation[1] += 360; + + for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) { + if(!parts[| i].active) { + var _spr = _inSurf, _index = 0; + if(is_array(_inSurf)) { + if(_arr_type == 0) { + _index = irandom(array_length(_inSurf) - 1); + _spr = _inSurf[_index]; + } else if(_arr_type == 1) { + _index = safe_mod(spawn_index, array_length(_inSurf)); + _spr = _inSurf[_index]; + } else if(_arr_type == 2) + _spr = _inSurf; + } + var xx = 0; + var yy = 0; + + if(_scatter == 2) { + var _b_data = inputs[| 28].getValue(_time); + if(!is_array(_b_data) || array_length(_b_data) <= 0) return; + var _b = _b_data[safe_mod(_index, array_length(_b_data))]; + if(!is_array(_b) || array_length(_b) != 4) return; + + xx = array_safe_get(_spawn_area, 0) - array_safe_get(_spawn_area, 2); + yy = array_safe_get(_spawn_area, 1) - array_safe_get(_spawn_area, 3); + + parts[| i].boundary_data = _b; + } else { + var sp = area_get_random_point(_spawn_area, _distrib, _scatter, spawn_index, _spawn_amount); + xx = sp[0]; + yy = sp[1]; + + parts[| i].boundary_data = -1; + } + + var _lif = random_range(_life[0], _life[1]); + + var _rot = random_range(_rotation[0], _rotation[1]); + var _rot_spd = random_range(_rotation_speed[0], _rotation_speed[1]); + + var _dirr = random_range(_direction[0], _direction[1]); + + var _velo = random_range(_velocity[0], _velocity[1]); + var _vx = lengthdir_x(_velo, _dirr); + var _vy = lengthdir_y(_velo, _dirr); + var _acc = random_range(_accel[0], _accel[1]); + + var _ss = random_range(_size[0], _size[1]); + var _scx = random_range(_scale[0], _scale[1]) * _ss; + var _scy = random_range(_scale[2], _scale[3]) * _ss; + + var _alp = random_range(_alpha[0], _alpha[1]); + + parts[| i].create(_spr, xx, yy, _lif); + parts[| i].anim_speed = _anim_speed; + parts[| i].anim_end = _anim_end; + + parts[| i].setPhysic(_vx, _vy, _acc, _grav, _wigg); + parts[| i].setTransform(_scx, _scy, _scale_speed[0], _scale_speed[1], _rot, _rot_spd, _follow); + parts[| i].setDraw(_color, _alp, _fade); + spawn_index = safe_mod(spawn_index + 1, PREF_MAP[? "part_max_amount"]); + + if(--_amo <= 0) + return; + } + } + } + + function reset() { + spawn_index = 0; + for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) { + parts[| i].kill(); + } + render(); + seed = seed_origin; + + var _loop = inputs[| 23].getValue(); + if(!_loop) return; + + for(var i = 0; i < ANIMATOR.frames_total; i++) + runFrame(i); + + seed = seed_origin; + } + + function updateParticle(_time = ANIMATOR.current_frame) { + var jun = outputs[| 1]; + for(var j = 0; j < ds_list_size(jun.value_to); j++) { + if(jun.value_to[| j].value_from == jun) + jun.value_to[| j].node.doUpdate(); + } + + render(_time); + } + + function checkPartPool() { + var _part_amo = PREF_MAP[? "part_max_amount"]; + var _curr_amo = ds_list_size(parts); + + if(_part_amo > _curr_amo) { + repeat(_part_amo - _curr_amo) + ds_list_add(parts, new __part()); + } else if(_part_amo < _curr_amo) { + repeat(_curr_amo - _part_amo) + ds_list_delete(parts, 0); + } + } + + static runFrame = function(_time = ANIMATOR.current_frame) { + var _spawn_delay = inputs[| 2].getValue(_time); + var _spawn_type = inputs[| 17].getValue(_time); + + switch(_spawn_type) { + case 0 : + if(safe_mod(_time, _spawn_delay) == 0) + spawn(_time); + break; + case 1 : + if(_time == _spawn_delay) + spawn(_time); + break; + } + + for(var i = 0; i < ds_list_size(parts); i++) + parts[| i].step(); + updateParticle(_time); + triggerRender(); + } + + static step = function() { + var _inSurf = inputs[| 0].getValue(); + var _scatt = inputs[| 27].getValue(); + var _loop = inputs[| 23].getValue(); + + inputs[| 25].setVisible(false); + inputs[| 26].setVisible(false); + inputs[| 28].setVisible(_scatt == 2); + + if(is_array(_inSurf)) { + inputs[| 25].setVisible(true); + var _type = inputs[| 25].getValue(); + if(_type == 2) { + inputs[| 26].setVisible(true); + inputs[| 29].setVisible(true); + } + } + + checkPartPool(); + var _spawn_type = inputs[| 17].getValue(); + if(_spawn_type == 0) inputs[| 2].name = "Spawn delay"; + else inputs[| 2].name = "Spawn frame"; + + if(ANIMATOR.frame_progress) { + if(recoverCache()) { + triggerRender(); + return; + } + + if(!ANIMATOR.is_playing) return; + + if(ANIMATOR.current_frame == 0) { + reset(); + runFrame(ANIMATOR.current_frame); + } else if(cached_output[ANIMATOR.current_frame - 1] != 0) { + runFrame(ANIMATOR.current_frame); + } + } + } + + static drawOverlay = function(active, _x, _y, _s, _mx, _my) { + inputs[| 4].drawOverlay(active, _x, _y, _s, _mx, _my); + if(onDrawOverlay != -1) + onDrawOverlay(active, _x, _y, _s, _mx, _my); + } + + static onDrawOverlay = -1; + + function render(_time = ANIMATOR.current_frame) { + var _dim = inputs[| 1].getValue(_time); + var _exact = inputs[| 19].getValue(_time); + var _blend = inputs[| 24].getValue(_time); + + var _outSurf = outputs[| 0].getValue(); + + if(is_surface(_outSurf)) + surface_size_to(_outSurf, _dim[0], _dim[1]); + else { + _outSurf = surface_create_valid(_dim[0], _dim[1]); + outputs[| 0].setValue(_outSurf); + } + + surface_set_target(_outSurf); + draw_clear_alpha(c_white, 0); + + switch(_blend) { + case PARTICLE_BLEND_MODE.normal : gpu_set_blendmode(bm_normal); break; + case PARTICLE_BLEND_MODE.additive : gpu_set_blendmode(bm_add); break; + } + + for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) + parts[| i].draw(_exact); + + gpu_set_blendmode(bm_normal); + surface_reset_target(); + + cacheCurrentFrame(_outSurf); + } + + static update = function() { + reset(); + } + doUpdate(); + render(); +} \ No newline at end of file diff --git a/scripts/_node_VFX/_node_VFX.yy b/scripts/_node_VFX/_node_VFX.yy new file mode 100644 index 000000000..5d4647a39 --- /dev/null +++ b/scripts/_node_VFX/_node_VFX.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "_node_VFX", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "VFX", + "path": "folders/nodes/data/VFX.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_particle_effector/node_particle_effector.gml b/scripts/_node_VFX_effector/_node_VFX_effector.gml similarity index 97% rename from scripts/node_particle_effector/node_particle_effector.gml rename to scripts/_node_VFX_effector/_node_VFX_effector.gml index c79de9ebc..c621a43b2 100644 --- a/scripts/node_particle_effector/node_particle_effector.gml +++ b/scripts/_node_VFX_effector/_node_VFX_effector.gml @@ -1,9 +1,3 @@ -function Node_create_Particle_Effector(_x, _y) { - var node = new Node_Particle_Effector(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - enum FORCE_TYPE { Wind, Accelerate, @@ -14,7 +8,7 @@ enum FORCE_TYPE { Destroy } -function Node_Particle_Effector(_x, _y) : Node(_x, _y) constructor { +function Node_Particle_Effector(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Effector"; previewable = false; diff --git a/scripts/_node_VFX_effector/_node_VFX_effector.yy b/scripts/_node_VFX_effector/_node_VFX_effector.yy new file mode 100644 index 000000000..69e7c217b --- /dev/null +++ b/scripts/_node_VFX_effector/_node_VFX_effector.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "_node_VFX_effector", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "VFX", + "path": "folders/nodes/data/VFX.yy", + }, +} \ No newline at end of file diff --git a/scripts/color_function/color_function.gml b/scripts/color_function/color_function.gml index 3bf3f3f82..043de3f18 100644 --- a/scripts/color_function/color_function.gml +++ b/scripts/color_function/color_function.gml @@ -7,4 +7,11 @@ function colorFromRGBArray(arr) { function colorArrayFromReal(clr) { return [color_get_red(clr) / 255, color_get_green(clr) / 255, color_get_blue(clr) / 255 ]; +} + +function colorBrightness(clr) { + var r2 = color_get_red(clr) / 255; + var g2 = color_get_green(clr) / 255; + var b2 = color_get_blue(clr) / 255; + return 0.299 * r2 + 0.587 * g2 + 0.224 * b2; } \ No newline at end of file diff --git a/scripts/globals/globals.gml b/scripts/globals/globals.gml index 6dcfa770a..7011b39c5 100644 --- a/scripts/globals/globals.gml +++ b/scripts/globals/globals.gml @@ -1,5 +1,5 @@ #region save - globalvar LOADING, APPENDING, MODIFIED, CURRENT_PATH, READONLY, CONNECTION_CONFLICT, GLOBAL_SEED; + globalvar LOADING, APPENDING, MODIFIED, CURRENT_PATH, READONLY, CONNECTION_CONFLICT, GLOBAL_SEED, ALWAYS_FULL; LOADING = false; APPENDING = false; READONLY = false; @@ -10,6 +10,7 @@ randomize(); GLOBAL_SEED = irandom(9999999999); + ALWAYS_FULL = false; #endregion #region main @@ -33,6 +34,9 @@ HOTKEY_CONTEXT = ds_list_create(); HOTKEY_CONTEXT[| 0] = ""; + globalvar CURSOR, TOOLTIP, DIALOG_DEPTH_HOVER, KEYBOARD_STRING; + globalvar UPDATE, RENDER_STACK; + enum ANIMATOR_END { loop, stop @@ -110,6 +114,11 @@ #macro PIXEL_SURFACE surface_create_valid(1, 1) #macro print show_debug_message #macro printlog if(log) show_debug_message + + function printIf(cond, log) { + if(!cond) return; + show_debug_message(log); + } #endregion #region presets diff --git a/scripts/load_function/load_function.gml b/scripts/load_function/load_function.gml index 7b7abb6f2..f5fa219bf 100644 --- a/scripts/load_function/load_function.gml +++ b/scripts/load_function/load_function.gml @@ -31,6 +31,7 @@ function LOAD_PATH(path, readonly = false) { if(file_exists(temp_path)) file_delete(temp_path); file_copy(path, temp_path); + ALWAYS_FULL = false; LOADING = true; READONLY = readonly; SET_PATH(path); diff --git a/scripts/node_2d_light/node_2d_light.gml b/scripts/node_2d_light/node_2d_light.gml index 6dd12cfd7..035a7fa29 100644 --- a/scripts/node_2d_light/node_2d_light.gml +++ b/scripts/node_2d_light/node_2d_light.gml @@ -1,9 +1,3 @@ -function Node_create_2D_light(_x, _y) { - var node = new Node_2D_light(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - enum LIGHT_SHAPE_2D { point, line, @@ -11,7 +5,7 @@ enum LIGHT_SHAPE_2D { spot } -function Node_2D_light(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_2D_light(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "2D light"; uniform_colr = shader_get_uniform(sh_2d_light, "color"); diff --git a/scripts/node_3D_obj/node_3D_obj.gml b/scripts/node_3D_obj/node_3D_obj.gml index 9672e5c30..18811b7dc 100644 --- a/scripts/node_3D_obj/node_3D_obj.gml +++ b/scripts/node_3D_obj/node_3D_obj.gml @@ -1,22 +1,16 @@ -function Node_create_3D_Obj(_x, _y) { - var node = new Node_3D_Obj(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_create_3D_Obj_path(_x, _y, path) { +function Node_create_3D_Obj_path(_x, _y, _group = 1, path) { if(!file_exists(path)) return noone; - var node = new Node_3D_Obj(_x, _y); + var node = new Node_3D_Obj(_x, _y, _group); node.inputs[| 0].setValue(path); node.updateObj(); node.doUpdate(); - ds_list_add(PANEL_GRAPH.nodes_list, node); + //ds_list_add(PANEL_GRAPH.nodes_list, node); return node; } -function Node_3D_Obj(_x, _y) : Node(_x, _y) constructor { +function Node_3D_Obj(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "3D Obj"; uniVertex_lightFor = shader_get_uniform(sh_vertex_pnt_light, "u_LightForward"); @@ -93,7 +87,7 @@ function Node_3D_Obj(_x, _y) : Node(_x, _y) constructor { inputs[| index].setFrom(sol.outputs[| 0]); } else { - var sol = nodeBuild("Solid", x - (w + 64), matY + m_index * (128 + 32)); + var sol = nodeBuild("Node_Solid", x - (w + 64), matY + m_index * (128 + 32)); sol.name = mat.name + " texture"; sol.inputs[| 1].setValue(mat.diff); diff --git a/scripts/node_3d_extrude/node_3d_extrude.gml b/scripts/node_3d_extrude/node_3d_extrude.gml index 26eaeea55..41207ccb5 100644 --- a/scripts/node_3d_extrude/node_3d_extrude.gml +++ b/scripts/node_3d_extrude/node_3d_extrude.gml @@ -1,10 +1,4 @@ -function Node_create_3D_Extrude(_x, _y) { - var node = new Node_3D_Extrude(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_3D_Extrude(_x, _y) : Node(_x, _y) constructor { +function Node_3D_Extrude(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "3D Extrude"; uniVertex_lightFor = shader_get_uniform(sh_vertex_pnt_light, "u_LightForward"); @@ -46,8 +40,10 @@ function Node_3D_Extrude(_x, _y) : Node(_x, _y) constructor { inputs[| 10] = nodeValue(10, "Light color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white); inputs[| 11] = nodeValue(11, "Ambient color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_grey); - input_display_list = [1, - ["Geometry", false], 0, 6, + inputs[| 12] = nodeValue(12, "Height map", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone); + + input_display_list = [1, + ["Geometry", false], 0, 12, 6, ["Transform", false], 2, 3, 4, 5, ["Light", false], 7, 8, 9, 10, 11 ]; @@ -59,12 +55,13 @@ function Node_3D_Extrude(_x, _y) : Node(_x, _y) constructor { vertex_end(VB); static onValueUpdate = function(index) { - if(index == 0) + if(index == 0 || index == 12) generateMesh(); } static generateMesh = function() { var _ins = inputs[| 0].getValue(); + var _hei = inputs[| 12].getValue(); if(!is_surface(_ins)) return; var ww = surface_get_width(_ins); @@ -73,6 +70,24 @@ function Node_3D_Extrude(_x, _y) : Node(_x, _y) constructor { var th = 1 / hh; var sw = -ww / 2 * tw; var sh = -hh / 2 * th; + var useH = is_surface(_hei); + + if(useH) { + var height_buffer = buffer_create(ww * hh * 4, buffer_fixed, 2); + buffer_get_surface(height_buffer, _hei, 0); + buffer_seek(height_buffer, buffer_seek_start, 0); + + var hei = array_create(ww, hh); + + for( var j = 0; j < hh; j++ ) + for( var i = 0; i < ww; i++ ) { + var cc = buffer_read(height_buffer, buffer_u32); + var _b = colorBrightness(cc & ~0b11111111); + hei[i][j] = _b; + } + + buffer_delete(height_buffer); + } var surface_buffer = buffer_create(ww * hh * 4, buffer_fixed, 2); buffer_get_surface(surface_buffer, _ins, 0); @@ -88,6 +103,8 @@ function Node_3D_Extrude(_x, _y) : Node(_x, _y) constructor { ap[i][j] = _a; } + buffer_delete(surface_buffer); + for( var i = 0; i < ww; i++ ) for( var j = 0; j < hh; j++ ) { if(ap[i][j] == 0) continue; @@ -97,60 +114,62 @@ function Node_3D_Extrude(_x, _y) : Node(_x, _y) constructor { var tx0 = tw * i, tx1 = tx0 + tw; var ty0 = th * j, ty1 = ty0 + th; - vertex_add_pnt(VB, [i1, j0, -0.5], [0, 0, -1], [tx1, ty0]); - vertex_add_pnt(VB, [i0, j0, -0.5], [0, 0, -1], [tx0, ty0]); - vertex_add_pnt(VB, [i1, j1, -0.5], [0, 0, -1], [tx1, ty1]); + var dep = (useH? hei[i][j] : 1) * 0.5; + + vertex_add_pnt(VB, [i1, j0, -dep], [0, 0, -1], [tx1, ty0]); + vertex_add_pnt(VB, [i0, j0, -dep], [0, 0, -1], [tx0, ty0]); + vertex_add_pnt(VB, [i1, j1, -dep], [0, 0, -1], [tx1, ty1]); - vertex_add_pnt(VB, [i1, j1, -0.5], [0, 0, -1], [tx1, ty1]); - vertex_add_pnt(VB, [i0, j0, -0.5], [0, 0, -1], [tx0, ty0]); - vertex_add_pnt(VB, [i0, j1, -0.5], [0, 0, -1], [tx0, ty1]); + vertex_add_pnt(VB, [i1, j1, -dep], [0, 0, -1], [tx1, ty1]); + vertex_add_pnt(VB, [i0, j0, -dep], [0, 0, -1], [tx0, ty0]); + vertex_add_pnt(VB, [i0, j1, -dep], [0, 0, -1], [tx0, ty1]); - vertex_add_pnt(VB, [i1, j0, 0.5], [0, 0, 1], [tx1, ty0]); - vertex_add_pnt(VB, [i0, j0, 0.5], [0, 0, 1], [tx0, ty0]); - vertex_add_pnt(VB, [i1, j1, 0.5], [0, 0, 1], [tx1, ty1]); + vertex_add_pnt(VB, [i1, j0, dep], [0, 0, 1], [tx1, ty0]); + vertex_add_pnt(VB, [i0, j0, dep], [0, 0, 1], [tx0, ty0]); + vertex_add_pnt(VB, [i1, j1, dep], [0, 0, 1], [tx1, ty1]); - vertex_add_pnt(VB, [i1, j1, 0.5], [0, 0, 1], [tx1, ty1]); - vertex_add_pnt(VB, [i0, j0, 0.5], [0, 0, 1], [tx0, ty0]); - vertex_add_pnt(VB, [i0, j1, 0.5], [0, 0, 1], [tx0, ty1]); + vertex_add_pnt(VB, [i1, j1, dep], [0, 0, 1], [tx1, ty1]); + vertex_add_pnt(VB, [i0, j0, dep], [0, 0, 1], [tx0, ty0]); + vertex_add_pnt(VB, [i0, j1, dep], [0, 0, 1], [tx0, ty1]); - if(j == 0 || ap[i][j - 1] == 0) { - vertex_add_pnt(VB, [i0, j0, 0.5], [0, -1, 0], [tx1, ty0]); - vertex_add_pnt(VB, [i0, j0, -0.5], [0, -1, 0], [tx0, ty0]); - vertex_add_pnt(VB, [i1, j0, 0.5], [0, -1, 0], [tx1, ty1]); + if((useH && dep > hei[i][j - 1]) || (j == 0 || ap[i][j - 1] == 0)) { + vertex_add_pnt(VB, [i0, j0, dep], [0, -1, 0], [tx1, ty0]); + vertex_add_pnt(VB, [i0, j0, -dep], [0, -1, 0], [tx0, ty0]); + vertex_add_pnt(VB, [i1, j0, dep], [0, -1, 0], [tx1, ty1]); - vertex_add_pnt(VB, [i0, j0, -0.5], [0, -1, 0], [tx1, ty1]); - vertex_add_pnt(VB, [i1, j0, -0.5], [0, -1, 0], [tx0, ty0]); - vertex_add_pnt(VB, [i1, j0, 0.5], [0, -1, 0], [tx0, ty1]); + vertex_add_pnt(VB, [i0, j0, -dep], [0, -1, 0], [tx1, ty1]); + vertex_add_pnt(VB, [i1, j0, -dep], [0, -1, 0], [tx0, ty0]); + vertex_add_pnt(VB, [i1, j0, dep], [0, -1, 0], [tx0, ty1]); } - if(j == hh - 1 || ap[i][j + 1] == 0) { - vertex_add_pnt(VB, [i0, j1, 0.5], [0, 1, 0], [tx1, ty0]); - vertex_add_pnt(VB, [i0, j1, -0.5], [0, 1, 0], [tx0, ty0]); - vertex_add_pnt(VB, [i1, j1, 0.5], [0, 1, 0], [tx1, ty1]); + if((useH && dep > hei[i][j + 1]) || (j == hh - 1 || ap[i][j + 1] == 0)) { + vertex_add_pnt(VB, [i0, j1, dep], [0, 1, 0], [tx1, ty0]); + vertex_add_pnt(VB, [i0, j1, -dep], [0, 1, 0], [tx0, ty0]); + vertex_add_pnt(VB, [i1, j1, dep], [0, 1, 0], [tx1, ty1]); - vertex_add_pnt(VB, [i0, j1, -0.5], [0, 1, 0], [tx1, ty1]); - vertex_add_pnt(VB, [i1, j1, -0.5], [0, 1, 0], [tx0, ty0]); - vertex_add_pnt(VB, [i1, j1, 0.5], [0, 1, 0], [tx0, ty1]); + vertex_add_pnt(VB, [i0, j1, -dep], [0, 1, 0], [tx1, ty1]); + vertex_add_pnt(VB, [i1, j1, -dep], [0, 1, 0], [tx0, ty0]); + vertex_add_pnt(VB, [i1, j1, dep], [0, 1, 0], [tx0, ty1]); } - if(i == 0 || ap[i - 1][j] == 0) { - vertex_add_pnt(VB, [i0, j0, 0.5], [1, 0, 0], [tx1, ty0]); - vertex_add_pnt(VB, [i0, j0, -0.5], [1, 0, 0], [tx0, ty0]); - vertex_add_pnt(VB, [i0, j1, 0.5], [1, 0, 0], [tx1, ty1]); + if((useH && dep > hei[i - 1][j]) || (i == 0 || ap[i - 1][j] == 0)) { + vertex_add_pnt(VB, [i0, j0, dep], [1, 0, 0], [tx1, ty0]); + vertex_add_pnt(VB, [i0, j0, -dep], [1, 0, 0], [tx0, ty0]); + vertex_add_pnt(VB, [i0, j1, dep], [1, 0, 0], [tx1, ty1]); - vertex_add_pnt(VB, [i0, j0, -0.5], [1, 0, 0], [tx1, ty1]); - vertex_add_pnt(VB, [i0, j1, -0.5], [1, 0, 0], [tx0, ty0]); - vertex_add_pnt(VB, [i0, j1, 0.5], [1, 0, 0], [tx0, ty1]); + vertex_add_pnt(VB, [i0, j0, -dep], [1, 0, 0], [tx1, ty1]); + vertex_add_pnt(VB, [i0, j1, -dep], [1, 0, 0], [tx0, ty0]); + vertex_add_pnt(VB, [i0, j1, dep], [1, 0, 0], [tx0, ty1]); } - if(i == ww - 1 || ap[i + 1][j] == 0) { - vertex_add_pnt(VB, [i1, j0, 0.5], [-1, 0, 0], [tx1, ty0]); - vertex_add_pnt(VB, [i1, j0, -0.5], [-1, 0, 0], [tx0, ty0]); - vertex_add_pnt(VB, [i1, j1, 0.5], [-1, 0, 0], [tx1, ty1]); + if((useH && dep > hei[i + 1][j]) || (i == ww - 1 || ap[i + 1][j] == 0)) { + vertex_add_pnt(VB, [i1, j0, dep], [-1, 0, 0], [tx1, ty0]); + vertex_add_pnt(VB, [i1, j0, -dep], [-1, 0, 0], [tx0, ty0]); + vertex_add_pnt(VB, [i1, j1, dep], [-1, 0, 0], [tx1, ty1]); - vertex_add_pnt(VB, [i1, j0, -0.5], [-1, 0, 0], [tx1, ty1]); - vertex_add_pnt(VB, [i1, j1, -0.5], [-1, 0, 0], [tx0, ty0]); - vertex_add_pnt(VB, [i1, j1, 0.5], [-1, 0, 0], [tx0, ty1]); + vertex_add_pnt(VB, [i1, j0, -dep], [-1, 0, 0], [tx1, ty1]); + vertex_add_pnt(VB, [i1, j1, -dep], [-1, 0, 0], [tx0, ty0]); + vertex_add_pnt(VB, [i1, j1, dep], [-1, 0, 0], [tx0, ty1]); } } vertex_end(VB); diff --git a/scripts/node_3d_prim_cube/node_3d_prim_cube.gml b/scripts/node_3d_prim_cube/node_3d_prim_cube.gml index 6d5978f00..18d0e298c 100644 --- a/scripts/node_3d_prim_cube/node_3d_prim_cube.gml +++ b/scripts/node_3d_prim_cube/node_3d_prim_cube.gml @@ -1,10 +1,4 @@ -function Node_create_3D_Cube(_x, _y) { - var node = new Node_3D_Cube(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_3D_Cube(_x, _y) : Node(_x, _y) constructor { +function Node_3D_Cube(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "3D Cube"; uniVertex_lightFor = shader_get_uniform(sh_vertex_pnt_light, "u_LightForward"); diff --git a/scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.gml b/scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.gml index bd584eda5..826bef055 100644 --- a/scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.gml +++ b/scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.gml @@ -1,10 +1,4 @@ -function Node_create_3D_Cylinder(_x, _y) { - var node = new Node_3D_Cylinder(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_3D_Cylinder(_x, _y) : Node(_x, _y) constructor { +function Node_3D_Cylinder(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "3D Cylinder"; uniVertex_lightFor = shader_get_uniform(sh_vertex_pnt_light, "u_LightForward"); diff --git a/scripts/node_3d_transform/node_3d_transform.gml b/scripts/node_3d_transform/node_3d_transform.gml index 907b25ee7..bc4ea0298 100644 --- a/scripts/node_3d_transform/node_3d_transform.gml +++ b/scripts/node_3d_transform/node_3d_transform.gml @@ -1,10 +1,4 @@ -function Node_create_3D_Transform(_x, _y) { - var node = new Node_3D_Transform(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_3D_Transform(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_3D_Transform(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "3D Transform"; inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); diff --git a/scripts/node_9slice/node_9slice.gml b/scripts/node_9slice/node_9slice.gml index ebd3964af..a74a70292 100644 --- a/scripts/node_9slice/node_9slice.gml +++ b/scripts/node_9slice/node_9slice.gml @@ -1,10 +1,4 @@ -function Node_create_9Slice(_x, _y) { - var node = new Node_9Slice(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_9Slice(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_9Slice(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Nine slice"; inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); diff --git a/scripts/node_VFX_effect_accelerate/node_VFX_effect_accelerate.gml b/scripts/node_VFX_effect_accelerate/node_VFX_effect_accelerate.gml new file mode 100644 index 000000000..fdda5bcce --- /dev/null +++ b/scripts/node_VFX_effect_accelerate/node_VFX_effect_accelerate.gml @@ -0,0 +1,24 @@ +function Node_VFX_Accelerate(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group) constructor { + name = "Accelerate"; + + function onAffect(part, str) { + var _vect = current_data[4]; + var _sten = current_data[5]; + var _rot_range = current_data[6]; + var _sca_range = current_data[7]; + var _rot = random_range(_rot_range[0], _rot_range[1]); + var _sca = [ random_range(_sca_range[0], _sca_range[1]), random_range(_sca_range[2], _sca_range[3]) ]; + + part.sx = part.sx + _vect[0] * _sten * str; + part.sy = part.sy + _vect[1] * _sten * str; + + part.rot += _rot * str; + + var scx_s = _sca[0] * str; + var scy_s = _sca[1] * str; + if(scx_s < 0) part.scx = lerp_linear(part.scx, 0, abs(scx_s)); + else part.scx += sign(part.scx) * scx_s; + if(scy_s < 0) part.scy = lerp_linear(part.scy, 0, abs(scy_s)); + else part.scy += sign(part.scy) * scy_s; + } +} \ No newline at end of file diff --git a/scripts/node_VFX_effect_accelerate/node_VFX_effect_accelerate.yy b/scripts/node_VFX_effect_accelerate/node_VFX_effect_accelerate.yy new file mode 100644 index 000000000..0c5fe7cf3 --- /dev/null +++ b/scripts/node_VFX_effect_accelerate/node_VFX_effect_accelerate.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_VFX_effect_accelerate", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "VFX", + "path": "folders/nodes/data/VFX.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_VFX_effect_attract/node_VFX_effect_attract.gml b/scripts/node_VFX_effect_attract/node_VFX_effect_attract.gml new file mode 100644 index 000000000..abfa93333 --- /dev/null +++ b/scripts/node_VFX_effect_attract/node_VFX_effect_attract.gml @@ -0,0 +1,30 @@ +function Node_VFX_Attract(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group) constructor { + name = "Attract"; + + function onAffect(part, str) { + var _area = current_data[1]; + var _area_x = _area[0]; + var _area_y = _area[1]; + + var _vect = current_data[4]; + var _sten = current_data[5]; + var _rot_range = current_data[6]; + var _sca_range = current_data[7]; + var _rot = random_range(_rot_range[0], _rot_range[1]); + var _sca = [ random_range(_sca_range[0], _sca_range[1]), random_range(_sca_range[2], _sca_range[3]) ]; + + var pv = part.getPivot(); + var dirr = point_direction(pv[0], pv[1], _area_x, _area_y); + part.x = part.x + lengthdir_x(_sten * str, dirr); + part.y = part.y + lengthdir_y(_sten * str, dirr); + + part.rot += _rot * str; + + var scx_s = _sca[0] * str; + var scy_s = _sca[1] * str; + if(scx_s < 0) part.scx = lerp_linear(part.scx, 0, abs(scx_s)); + else part.scx += sign(part.scx) * scx_s; + if(scy_s < 0) part.scy = lerp_linear(part.scy, 0, abs(scy_s)); + else part.scy += sign(part.scy) * scy_s; + } +} \ No newline at end of file diff --git a/scripts/node_VFX_effect_attract/node_VFX_effect_attract.yy b/scripts/node_VFX_effect_attract/node_VFX_effect_attract.yy new file mode 100644 index 000000000..735931bb7 --- /dev/null +++ b/scripts/node_VFX_effect_attract/node_VFX_effect_attract.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_VFX_effect_attract", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "VFX", + "path": "folders/nodes/data/VFX.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_VFX_effect_destroy/node_VFX_effect_destroy.gml b/scripts/node_VFX_effect_destroy/node_VFX_effect_destroy.gml new file mode 100644 index 000000000..ca7658ce8 --- /dev/null +++ b/scripts/node_VFX_effect_destroy/node_VFX_effect_destroy.gml @@ -0,0 +1,10 @@ +function Node_VFX_Destroy(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group) constructor { + name = "Destroy"; + + function onAffect(part, str) { + var _sten = current_data[5]; + + if(random(1) < str * _sten) + part.kill(); + } +} \ No newline at end of file diff --git a/scripts/node_VFX_effect_destroy/node_VFX_effect_destroy.yy b/scripts/node_VFX_effect_destroy/node_VFX_effect_destroy.yy new file mode 100644 index 000000000..772f7cb49 --- /dev/null +++ b/scripts/node_VFX_effect_destroy/node_VFX_effect_destroy.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_VFX_effect_destroy", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "VFX", + "path": "folders/nodes/data/VFX.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_VFX_effect_repel/node_VFX_effect_repel.gml b/scripts/node_VFX_effect_repel/node_VFX_effect_repel.gml new file mode 100644 index 000000000..f5d675ba3 --- /dev/null +++ b/scripts/node_VFX_effect_repel/node_VFX_effect_repel.gml @@ -0,0 +1,30 @@ +function Node_VFX_Repel(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group) constructor { + name = "Repel"; + + function onAffect(part, str) { + var _area = current_data[1]; + var _area_x = _area[0]; + var _area_y = _area[1]; + + var _vect = current_data[4]; + var _sten = current_data[5]; + var _rot_range = current_data[6]; + var _sca_range = current_data[7]; + var _rot = random_range(_rot_range[0], _rot_range[1]); + var _sca = [ random_range(_sca_range[0], _sca_range[1]), random_range(_sca_range[2], _sca_range[3]) ]; + + var pv = part.getPivot(); + var dirr = point_direction(_area_x, _area_y, pv[0], pv[1]); + part.x = part.x + lengthdir_x(_sten * str, dirr); + part.y = part.y + lengthdir_y(_sten * str, dirr); + + part.rot += _rot * str; + + var scx_s = _sca[0] * str; + var scy_s = _sca[1] * str; + if(scx_s < 0) part.scx = lerp_linear(part.scx, 0, abs(scx_s)); + else part.scx += sign(part.scx) * scx_s; + if(scy_s < 0) part.scy = lerp_linear(part.scy, 0, abs(scy_s)); + else part.scy += sign(part.scy) * scy_s; + } +} \ No newline at end of file diff --git a/scripts/node_VFX_effect_repel/node_VFX_effect_repel.yy b/scripts/node_VFX_effect_repel/node_VFX_effect_repel.yy new file mode 100644 index 000000000..6b8189757 --- /dev/null +++ b/scripts/node_VFX_effect_repel/node_VFX_effect_repel.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_VFX_effect_repel", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "VFX", + "path": "folders/nodes/data/VFX.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_VFX_effect_turbulence/node_VFX_effect_turbulence.gml b/scripts/node_VFX_effect_turbulence/node_VFX_effect_turbulence.gml new file mode 100644 index 000000000..1f2805575 --- /dev/null +++ b/scripts/node_VFX_effect_turbulence/node_VFX_effect_turbulence.gml @@ -0,0 +1,30 @@ +function Node_VFX_Turbulence(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group) constructor { + name = "Turbulence"; + + function onAffect(part, str) { + var _vect = current_data[4]; + var _sten = current_data[5]; + var _rot_range = current_data[6]; + var _sca_range = current_data[7]; + var _rot = random_range(_rot_range[0], _rot_range[1]); + var _sca = [ random_range(_sca_range[0], _sca_range[1]), random_range(_sca_range[2], _sca_range[3]) ]; + + var pv = part.getPivot(); + + var t_scale = current_data[10]; + var per = (perlin_noise(pv[0] / t_scale, pv[1] / t_scale, 4, part.seed) - 0.5) * 2; + per *= str; + + part.x = part.x + _vect[0] * per; + part.y = part.y + _vect[1] * per; + + part.rot += _rot * per; + + var scx_s = _sca[0] * str; + var scy_s = _sca[1] * str; + if(scx_s < 0) part.scx = lerp_linear(part.scx, 0, abs(scx_s)); + else part.scx += sign(part.scx) * scx_s; + if(scy_s < 0) part.scy = lerp_linear(part.scy, 0, abs(scy_s)); + else part.scy += sign(part.scy) * scy_s; + } +} \ No newline at end of file diff --git a/scripts/node_VFX_effect_turbulence/node_VFX_effect_turbulence.yy b/scripts/node_VFX_effect_turbulence/node_VFX_effect_turbulence.yy new file mode 100644 index 000000000..94c63e2b8 --- /dev/null +++ b/scripts/node_VFX_effect_turbulence/node_VFX_effect_turbulence.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_VFX_effect_turbulence", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "VFX", + "path": "folders/nodes/data/VFX.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_VFX_effect_vortex/node_VFX_effect_vortex.gml b/scripts/node_VFX_effect_vortex/node_VFX_effect_vortex.gml new file mode 100644 index 000000000..f075648db --- /dev/null +++ b/scripts/node_VFX_effect_vortex/node_VFX_effect_vortex.gml @@ -0,0 +1,31 @@ +function Node_VFX_Vortex(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group) constructor { + name = "Vortex"; + + function onAffect(part, str) { + var _area = current_data[1]; + var _area_x = _area[0]; + var _area_y = _area[1]; + + var _vect = current_data[4]; + var _sten = current_data[5]; + var _rot_range = current_data[6]; + var _sca_range = current_data[7]; + var _rot = random_range(_rot_range[0], _rot_range[1]); + var _sca = [ random_range(_sca_range[0], _sca_range[1]), random_range(_sca_range[2], _sca_range[3]) ]; + + var pv = part.getPivot(); + var dirr = point_direction(_area_x, _area_y, pv[0], pv[1]) + 90; + + part.x = part.x + lengthdir_x(_sten * str, dirr); + part.y = part.y + lengthdir_y(_sten * str, dirr); + + part.rot += _rot * str; + + var scx_s = _sca[0] * str; + var scy_s = _sca[1] * str; + if(scx_s < 0) part.scx = lerp_linear(part.scx, 0, abs(scx_s)); + else part.scx += sign(part.scx) * scx_s; + if(scy_s < 0) part.scy = lerp_linear(part.scy, 0, abs(scy_s)); + else part.scy += sign(part.scy) * scy_s; + } +} \ No newline at end of file diff --git a/scripts/node_VFX_effect_vortex/node_VFX_effect_vortex.yy b/scripts/node_VFX_effect_vortex/node_VFX_effect_vortex.yy new file mode 100644 index 000000000..2aa271d22 --- /dev/null +++ b/scripts/node_VFX_effect_vortex/node_VFX_effect_vortex.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_VFX_effect_vortex", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "VFX", + "path": "folders/nodes/data/VFX.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_VFX_effect_wind/node_VFX_effect_wind.gml b/scripts/node_VFX_effect_wind/node_VFX_effect_wind.gml new file mode 100644 index 000000000..cbda1e465 --- /dev/null +++ b/scripts/node_VFX_effect_wind/node_VFX_effect_wind.gml @@ -0,0 +1,24 @@ +function Node_VFX_Wind(_x, _y, _group = -1) : Node_VFX_effector(_x, _y, _group) constructor { + name = "Wind"; + + function onAffect(part, str) { + var _vect = current_data[4]; + var _sten = current_data[5]; + var _rot_range = current_data[6]; + var _sca_range = current_data[7]; + var _rot = random_range(_rot_range[0], _rot_range[1]); + var _sca = [ random_range(_sca_range[0], _sca_range[1]), random_range(_sca_range[2], _sca_range[3]) ]; + + part.x = part.x + _vect[0] * _sten * str; + part.y = part.y + _vect[1] * _sten * str; + + part.rot += _rot * str; + + var scx_s = _sca[0] * str; + var scy_s = _sca[1] * str; + if(scx_s < 0) part.scx = lerp_linear(part.scx, 0, abs(scx_s)); + else part.scx += sign(part.scx) * scx_s; + if(scy_s < 0) part.scy = lerp_linear(part.scy, 0, abs(scy_s)); + else part.scy += sign(part.scy) * scy_s; + } +} \ No newline at end of file diff --git a/scripts/node_VFX_effect_wind/node_VFX_effect_wind.yy b/scripts/node_VFX_effect_wind/node_VFX_effect_wind.yy new file mode 100644 index 000000000..f5dec9197 --- /dev/null +++ b/scripts/node_VFX_effect_wind/node_VFX_effect_wind.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_VFX_effect_wind", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "VFX", + "path": "folders/nodes/data/VFX.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_VFX_effector/node_VFX_effector.gml b/scripts/node_VFX_effector/node_VFX_effector.gml new file mode 100644 index 000000000..fd96a9c7a --- /dev/null +++ b/scripts/node_VFX_effector/node_VFX_effector.gml @@ -0,0 +1,109 @@ +function Node_VFX_effector(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { + name = "Effector"; + previewable = false; + + w = 64; + h = 64; + min_h = h; + + inputs[| 0] = nodeValue(0, "Particles", self, JUNCTION_CONNECT.input, VALUE_TYPE.object, -1 ) + .setVisible(true, true); + + inputs[| 1] = nodeValue(1, "Area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 16, 16, 4, 4, AREA_SHAPE.rectangle ]) + .setDisplay(VALUE_DISPLAY.area); + + inputs[| 2] = nodeValue(2, "Falloff", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, [0, 0, 1, 1] ) + .setDisplay(VALUE_DISPLAY.curve); + + inputs[| 3] = nodeValue(3, "Falloff distance", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 4 ); + + inputs[| 4] = nodeValue(4, "Effect Vector", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ -1, 0 ] ) + .setDisplay(VALUE_DISPLAY.vector); + + inputs[| 5] = nodeValue(5, "Strength", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 ); + + inputs[| 6] = nodeValue(6, "Rotate particle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] ) + .setDisplay(VALUE_DISPLAY.rotation_range); + + inputs[| 7] = nodeValue(7, "Scale particle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0, 0 ] ) + .setDisplay(VALUE_DISPLAY.vector_range); + + inputs[| 8] = nodeValue(8, "Turbulence scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 ); + + input_display_list = [ 0, + ["Area", false], 1, 2, 3, + ["Effect", false], 4, 5, 6, 7, + ]; + + outputs[| 0] = nodeValue(0, "Particles", self, JUNCTION_CONNECT.output, VALUE_TYPE.object, -1 ); + + current_data = []; + + static drawOverlay = function(active, _x, _y, _s, _mx, _my) { + inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my); + } + + function onAffect(part, str) {} + + function affect(part) { + if(!part.active) return; + + var _area = current_data[1]; + var _fall = current_data[2]; + var _fads = current_data[3]; + + var _area_x = _area[0]; + var _area_y = _area[1]; + var _area_w = _area[2]; + var _area_h = _area[3]; + var _area_t = _area[4]; + + var _area_x0 = _area_x - _area_w; + var _area_x1 = _area_x + _area_w; + var _area_y0 = _area_y - _area_h; + var _area_y1 = _area_y + _area_h; + + random_set_seed(part.seed); + + var str = 0; + var pv = part.getPivot(); + + if(_area_t == AREA_SHAPE.rectangle) { + if(point_in_rectangle(pv[0], pv[1], _area_x0, _area_y0, _area_x1, _area_y1)) { + var _dst = min( distance_to_line(pv[0], pv[1], _area_x0, _area_y0, _area_x1, _area_y0), + distance_to_line(pv[0], pv[1], _area_x0, _area_y1, _area_x1, _area_y1), + distance_to_line(pv[0], pv[1], _area_x0, _area_y0, _area_x0, _area_y1), + distance_to_line(pv[0], pv[1], _area_x1, _area_y0, _area_x1, _area_y1)); + str = eval_curve_bezier_cubic(_fall, clamp(_dst / _fads, 0., 1.)); + } + } else if(_area_t == AREA_SHAPE.elipse) { + if(point_in_circle(pv[0], pv[1], _area_x, _area_y, min(_area_w, _area_h))) { + var _dst = point_distance(pv[0], pv[1], _area_x, _area_y); + str = eval_curve_bezier_cubic(_fall, clamp(_dst / _fads, 0., 1.)); + } + } + + if(str == 0) return; + + onAffect(part, str); + } + + static update = function() { + var val = inputs[| 0].getValue(); + outputs[| 0].setValue(val); + if(val == -1) return; + + for( var i = 0; i < ds_list_size(inputs); i++ ) { + current_data[i] = inputs[| i].getValue(); + } + + for( var i = 0; i < ds_list_size(val); i++ ) + affect(val[| i]); + + var jun = outputs[| 0]; + for(var j = 0; j < ds_list_size(jun.value_to); j++) { + if(jun.value_to[| j].value_from == jun) + jun.value_to[| j].node.doUpdate(); + } + } +} \ No newline at end of file diff --git a/scripts/node_VFX_effector/node_VFX_effector.yy b/scripts/node_VFX_effector/node_VFX_effector.yy new file mode 100644 index 000000000..2fa226e80 --- /dev/null +++ b/scripts/node_VFX_effector/node_VFX_effector.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_VFX_effector", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "VFX", + "path": "folders/nodes/data/VFX.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_VFX_group/node_VFX_group.gml b/scripts/node_VFX_group/node_VFX_group.gml new file mode 100644 index 000000000..a01f67c8e --- /dev/null +++ b/scripts/node_VFX_group/node_VFX_group.gml @@ -0,0 +1,14 @@ +function Node_VFX_Group(_x, _y, _group = -1) : Node_Collection(_x, _y, _group) constructor { + name = "VFX"; + color = COLORS.node_blend_collection; + ungroupable = false; + + if(!LOADING && !APPENDING) { + var input = nodeBuild("Node_VFX_Spawner", -256, -32, self); + var renderer = nodeBuild("Node_VFX_Renderer", 256, -32, self); + var output = nodeBuild("Node_Group_Output", 256 + 32 * 5, -32, self); + + renderer.inputs[| 0].setFrom(input.outputs[| 0]); + output.inputs[| 0].setFrom(renderer.outputs[| 0]); + } +} \ No newline at end of file diff --git a/scripts/node_VFX_group/node_VFX_group.yy b/scripts/node_VFX_group/node_VFX_group.yy new file mode 100644 index 000000000..33ed2a165 --- /dev/null +++ b/scripts/node_VFX_group/node_VFX_group.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_VFX_group", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "VFX", + "path": "folders/nodes/data/VFX.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_VFX_renderer/node_VFX_renderer.gml b/scripts/node_VFX_renderer/node_VFX_renderer.gml new file mode 100644 index 000000000..c7156d5ca --- /dev/null +++ b/scripts/node_VFX_renderer/node_VFX_renderer.gml @@ -0,0 +1,48 @@ +function Node_VFX_Renderer(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { + name = "Renderer"; + + inputs[| 0] = nodeValue(0, "Particles", self, JUNCTION_CONNECT.input, VALUE_TYPE.object, noone ) + .setVisible(true, true); + + inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + .setDisplay(VALUE_DISPLAY.vector); + + inputs[| 2] = nodeValue(2, "Round position", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true ); + + inputs[| 3] = nodeValue(3, "Blend mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Normal", "Additive" ]); + + outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); + + function update(_time = ANIMATOR.current_frame) { + var parts = inputs[| 0].getValue(_time); + var _dim = inputs[| 1].getValue(_time); + var _exact = inputs[| 2].getValue(_time); + var _blend = inputs[| 3].getValue(_time); + + var _outSurf = outputs[| 0].getValue(); + + if(is_surface(_outSurf)) + surface_size_to(_outSurf, _dim[0], _dim[1]); + else { + _outSurf = surface_create_valid(_dim[0], _dim[1]); + outputs[| 0].setValue(_outSurf); + } + + surface_set_target(_outSurf); + draw_clear_alpha(c_white, 0); + + switch(_blend) { + case PARTICLE_BLEND_MODE.normal : gpu_set_blendmode(bm_normal); break; + case PARTICLE_BLEND_MODE.additive : gpu_set_blendmode(bm_add); break; + } + + for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) + parts[| i].draw(_exact); + + gpu_set_blendmode(bm_normal); + surface_reset_target(); + + cacheCurrentFrame(_outSurf); + } +} \ No newline at end of file diff --git a/scripts/node_VFX_renderer/node_VFX_renderer.yy b/scripts/node_VFX_renderer/node_VFX_renderer.yy new file mode 100644 index 000000000..ebb81ac34 --- /dev/null +++ b/scripts/node_VFX_renderer/node_VFX_renderer.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_VFX_renderer", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "VFX", + "path": "folders/nodes/data/VFX.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_VFX_spawner/node_VFX_spawner.gml b/scripts/node_VFX_spawner/node_VFX_spawner.gml new file mode 100644 index 000000000..baf602b62 --- /dev/null +++ b/scripts/node_VFX_spawner/node_VFX_spawner.gml @@ -0,0 +1,305 @@ +function Node_VFX_Spawner(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { + name = "Spawner"; + + inputs[| 0] = nodeValue(0, "Particle sprite", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0) + .setDisplay(noone, "particles"); + + inputs[| 1] = nodeValue(1, "Spawn delay", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4); + inputs[| 2] = nodeValue(2, "Spawn amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 2); + inputs[| 3] = nodeValue(3, "Spawn area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, AREA_SHAPE.rectangle ]) + .setDisplay(VALUE_DISPLAY.area, function() { return inputs[| 1].getValue(); }); + + inputs[| 4] = nodeValue(4, "Spawn distribution", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + .setDisplay(VALUE_DISPLAY.enum_button, [ "Area", "Border" ]); + + inputs[| 5] = nodeValue(5, "Lifespan", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 20, 30 ]) + .setDisplay(VALUE_DISPLAY.range); + + inputs[| 6] = nodeValue(6, "Spawn direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 45, 135 ]) + .setDisplay(VALUE_DISPLAY.rotation_range); + inputs[| 7] = nodeValue(7, "Acceleration", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) + .setDisplay(VALUE_DISPLAY.range); + + inputs[| 8] = nodeValue(8, "Orientation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [0, 0]) + .setDisplay(VALUE_DISPLAY.rotation_range); + + inputs[| 9] = nodeValue(9, "Rotational speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) + .setDisplay(VALUE_DISPLAY.range); + + inputs[| 10] = nodeValue(10, "Spawn scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1, 1 ] ) + .setDisplay(VALUE_DISPLAY.vector_range); + inputs[| 11] = nodeValue(11, "Scaling speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] ) + .setDisplay(VALUE_DISPLAY.vector); + + inputs[| 12] = nodeValue(12, "Color over lifetime", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white) + .setDisplay(VALUE_DISPLAY.gradient); + inputs[| 13] = nodeValue(13, "Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ]) + .setDisplay(VALUE_DISPLAY.range); + inputs[| 14] = nodeValue(14, "Alpha over time", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, [1, 1, 1, 1]); + + inputs[| 15] = nodeValue(15, "Rotate by direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); + + inputs[| 16] = nodeValue(16, "Spawn type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + .setDisplay(VALUE_DISPLAY.enum_button, [ "Stream", "Burst" ]); + + inputs[| 17] = nodeValue(17, "Spawn size", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ] ) + .setDisplay(VALUE_DISPLAY.range); + + inputs[| 18] = nodeValue(18, "Spawn velocity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [1, 2] ) + .setDisplay(VALUE_DISPLAY.range); + + inputs[| 19] = nodeValue(19, "Gravity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 ); + inputs[| 20] = nodeValue(20, "Wiggle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 ); + + inputs[| 21] = nodeValue(21, "Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true ); + + inputs[| 22] = nodeValue(22, "Surface array", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Random", "Order", "Animation" ]) + .setVisible(false); + + inputs[| 23] = nodeValue(23, "Animation speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 ) + .setVisible(false); + + inputs[| 24] = nodeValue(24, "Scatter", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1) + .setDisplay(VALUE_DISPLAY.enum_button, [ "Uniform", "Random", "Data" ]); + + inputs[| 25] = nodeValue(25, "Boundary data", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, []) + .setVisible(false, true); + + inputs[| 26] = nodeValue(26, "On animation end", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, ANIM_END_ACTION.loop) + .setDisplay(VALUE_DISPLAY.enum_button, [ "Loop", "Ping pong", "Destroy" ]) + .setVisible(false); + + input_display_list = [ + ["Sprite", false], 0, 22, 23, 26, + ["Spawn", true], 16, 1, 2, 3, 4, 24, 25, 5, + ["Movement", true], 6, 18, 7, + ["Physics", true], 19, 20, + ["Rotation", true], 15, 8, 9, + ["Scale", true], 10, 17, 11, + ["Color", true], 12, 13, 14, + ["Render", true], 21 + ]; + + parts = ds_list_create(); + outputs[| 0] = nodeValue(0, "Particles", self, JUNCTION_CONNECT.output, VALUE_TYPE.object, parts ); + + seed_origin = irandom(9999999); + seed = seed_origin; + spawn_index = 0; + def_surface = -1; + + for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) + ds_list_add(parts, new __part()); + + static spawn = function(_time = ANIMATOR.current_frame) { + random_set_seed(seed++); + + var _inSurf = inputs[| 0].getValue(_time); + + if(_inSurf == 0) { + if(def_surface == -1 || !surface_exists(def_surface)) { + def_surface = PIXEL_SURFACE; + surface_set_target(def_surface); + draw_clear(c_white); + surface_reset_target(); + } + _inSurf = def_surface; + } + + var _spawn_amount = inputs[| 2].getValue(_time); + var _amo = _spawn_amount; + + var _spawn_area = inputs[| 3].getValue(_time); + var _distrib = inputs[| 4].getValue(_time); + var _scatter = inputs[| 24].getValue(_time); + + var _life = inputs[| 5].getValue(_time); + var _direction = inputs[| 6].getValue(_time); + var _velocity = inputs[| 18].getValue(_time); + + var _accel = inputs[| 7].getValue(_time); + var _grav = inputs[| 19].getValue(_time); + var _wigg = inputs[| 20].getValue(_time); + + var _follow = inputs[| 15].getValue(_time); + var _rotation = inputs[| 8].getValue(_time); + var _rotation_speed = inputs[| 9].getValue(_time); + var _scale = inputs[| 10].getValue(_time); + var _size = inputs[| 17].getValue(_time); + var _scale_speed = inputs[| 11].getValue(_time); + + var _color = inputs[| 12].getValue(_time); + var _alpha = inputs[| 13].getValue(_time); + var _fade = inputs[| 14].getValue(_time); + + var _arr_type = inputs[| 22].getValue(_time); + var _anim_speed = inputs[| 23].getValue(_time); + var _anim_end = inputs[| 26].getValue(_time); + + if(_rotation[1] < _rotation[0]) _rotation[1] += 360; + + for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) { + if(!parts[| i].active) { + var _spr = _inSurf, _index = 0; + if(is_array(_inSurf)) { + if(_arr_type == 0) { + _index = irandom(array_length(_inSurf) - 1); + _spr = _inSurf[_index]; + } else if(_arr_type == 1) { + _index = safe_mod(spawn_index, array_length(_inSurf)); + _spr = _inSurf[_index]; + } else if(_arr_type == 2) + _spr = _inSurf; + } + var xx = 0; + var yy = 0; + + if(_scatter == 2) { + var _b_data = inputs[| 25].getValue(_time); + if(!is_array(_b_data) || array_length(_b_data) <= 0) return; + var _b = _b_data[safe_mod(_index, array_length(_b_data))]; + if(!is_array(_b) || array_length(_b) != 4) return; + + xx = array_safe_get(_spawn_area, 0) - array_safe_get(_spawn_area, 2); + yy = array_safe_get(_spawn_area, 1) - array_safe_get(_spawn_area, 3); + + parts[| i].boundary_data = _b; + } else { + var sp = area_get_random_point(_spawn_area, _distrib, _scatter, spawn_index, _spawn_amount); + xx = sp[0]; + yy = sp[1]; + + parts[| i].boundary_data = -1; + } + + var _lif = random_range(_life[0], _life[1]); + + var _rot = random_range(_rotation[0], _rotation[1]); + var _rot_spd = random_range(_rotation_speed[0], _rotation_speed[1]); + + var _dirr = random_range(_direction[0], _direction[1]); + + var _velo = random_range(_velocity[0], _velocity[1]); + var _vx = lengthdir_x(_velo, _dirr); + var _vy = lengthdir_y(_velo, _dirr); + var _acc = random_range(_accel[0], _accel[1]); + + var _ss = random_range(_size[0], _size[1]); + var _scx = random_range(_scale[0], _scale[1]) * _ss; + var _scy = random_range(_scale[2], _scale[3]) * _ss; + + var _alp = random_range(_alpha[0], _alpha[1]); + + parts[| i].create(_spr, xx, yy, _lif); + parts[| i].anim_speed = _anim_speed; + parts[| i].anim_end = _anim_end; + + parts[| i].setPhysic(_vx, _vy, _acc, _grav, _wigg); + parts[| i].setTransform(_scx, _scy, _scale_speed[0], _scale_speed[1], _rot, _rot_spd, _follow); + parts[| i].setDraw(_color, _alp, _fade); + spawn_index = safe_mod(spawn_index + 1, PREF_MAP[? "part_max_amount"]); + + if(--_amo <= 0) + return; + } + } + } + + function reset() { + spawn_index = 0; + for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) { + parts[| i].kill(); + } + render(); + seed = seed_origin; + + var _loop = inputs[| 21].getValue(); + if(!_loop) return; + + for(var i = 0; i < ANIMATOR.frames_total; i++) + runFrame(i); + + seed = seed_origin; + } + + function checkPartPool() { + var _part_amo = PREF_MAP[? "part_max_amount"]; + var _curr_amo = ds_list_size(parts); + + if(_part_amo > _curr_amo) { + repeat(_part_amo - _curr_amo) + ds_list_add(parts, new __part()); + } else if(_part_amo < _curr_amo) { + repeat(_curr_amo - _part_amo) + ds_list_delete(parts, 0); + } + } + + static runFrame = function(_time = ANIMATOR.current_frame) { + var _spawn_delay = inputs[| 1].getValue(_time); + var _spawn_type = inputs[| 16].getValue(_time); + + switch(_spawn_type) { + case 0 : + if(safe_mod(_time, _spawn_delay) == 0) + spawn(_time); + break; + case 1 : + if(_time == _spawn_delay) + spawn(_time); + break; + } + + for(var i = 0; i < ds_list_size(parts); i++) + parts[| i].step(); + triggerRender(); + render(_time); + } + + static step = function() { + var _inSurf = inputs[| 0].getValue(); + var _scatt = inputs[| 24].getValue(); + var _loop = inputs[| 21].getValue(); + + inputs[| 22].setVisible(false); + inputs[| 23].setVisible(false); + inputs[| 25].setVisible(_scatt == 2); + + if(is_array(_inSurf)) { + inputs[| 22].setVisible(true); + var _type = inputs[| 22].getValue(); + if(_type == 2) { + inputs[| 23].setVisible(true); + inputs[| 26].setVisible(true); + } + } + + checkPartPool(); + var _spawn_type = inputs[| 16].getValue(); + if(_spawn_type == 0) inputs[| 1].name = "Spawn delay"; + else inputs[| 1].name = "Spawn frame"; + + onStep(); + } + + static onStep = function() { + if(!ANIMATOR.frame_progress) return; + if(!ANIMATOR.is_playing) return; + + if(ANIMATOR.current_frame == 0) + reset(); + runFrame(ANIMATOR.current_frame); + } + + static drawOverlay = function(active, _x, _y, _s, _mx, _my) { + inputs[| 3].drawOverlay(active, _x, _y, _s, _mx, _my); + if(onDrawOverlay != -1) + onDrawOverlay(active, _x, _y, _s, _mx, _my); + } + + static onDrawOverlay = -1; + + static update = function() {} + static render = function() {} +} \ No newline at end of file diff --git a/scripts/node_VFX_spawner/node_VFX_spawner.yy b/scripts/node_VFX_spawner/node_VFX_spawner.yy new file mode 100644 index 000000000..3a7ad3471 --- /dev/null +++ b/scripts/node_VFX_spawner/node_VFX_spawner.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_VFX_spawner", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "VFX", + "path": "folders/nodes/data/VFX.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_alpha_cutoff/node_alpha_cutoff.gml b/scripts/node_alpha_cutoff/node_alpha_cutoff.gml index 6a2116a48..7abce8874 100644 --- a/scripts/node_alpha_cutoff/node_alpha_cutoff.gml +++ b/scripts/node_alpha_cutoff/node_alpha_cutoff.gml @@ -1,10 +1,4 @@ -function Node_create_Alpha_Cutoff(_x, _y) { - var node = new Node_Alpha_Cutoff(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Alpha_Cutoff(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Alpha_Cutoff(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Alpha cutoff"; inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); diff --git a/scripts/node_alpha_to_grey/node_alpha_to_grey.gml b/scripts/node_alpha_to_grey/node_alpha_to_grey.gml index ea35a940f..aea7f3a36 100644 --- a/scripts/node_alpha_to_grey/node_alpha_to_grey.gml +++ b/scripts/node_alpha_to_grey/node_alpha_to_grey.gml @@ -1,10 +1,4 @@ -function Node_create_Alpha_Grey(_x, _y) { - var node = new Node_Alpha_Grey(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Alpha_Grey(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Alpha_Grey(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Alpha to grey"; inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); diff --git a/scripts/node_animate_curve/node_animate_curve.gml b/scripts/node_animate_curve/node_animate_curve.gml index 00ed02562..1f601920d 100644 --- a/scripts/node_animate_curve/node_animate_curve.gml +++ b/scripts/node_animate_curve/node_animate_curve.gml @@ -1,9 +1,3 @@ -function Node_create_Anim_Curve(_x, _y) { - var node = new Node_Anim_Curve(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - function Node_Anim_Curve(_x, _y) : Node_Value_Processor(_x, _y) constructor { name = "Anim Curve"; update_on_frame = true; diff --git a/scripts/node_area/node_area.gml b/scripts/node_area/node_area.gml index ab42cc399..3fab14ac0 100644 --- a/scripts/node_area/node_area.gml +++ b/scripts/node_area/node_area.gml @@ -1,9 +1,3 @@ -function Node_create_Area(_x, _y) { - var node = new Node_Area(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - function Node_Area(_x, _y) : Node_Value_Processor(_x, _y) constructor { name = "Area"; color = COLORS.node_blend_number; diff --git a/scripts/node_array/node_array.gml b/scripts/node_array/node_array.gml index d74e33e98..b69d9946c 100644 --- a/scripts/node_array/node_array.gml +++ b/scripts/node_array/node_array.gml @@ -1,10 +1,4 @@ -function Node_create_Array(_x, _y) { - var node = new Node_Array(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Array(_x, _y) : Node(_x, _y) constructor { +function Node_Array(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Array"; previewable = false; diff --git a/scripts/node_array_get/node_array_get.gml b/scripts/node_array_get/node_array_get.gml index add27cce6..85d3cb446 100644 --- a/scripts/node_array_get/node_array_get.gml +++ b/scripts/node_array_get/node_array_get.gml @@ -1,10 +1,4 @@ -function Node_create_Array_Get(_x, _y) { - var node = new Node_Array_Get(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Array_Get(_x, _y) : Node(_x, _y) constructor { +function Node_Array_Get(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Array Get"; previewable = false; diff --git a/scripts/node_array_length/node_array_length.gml b/scripts/node_array_length/node_array_length.gml index b39b11d9b..fc74ebe8b 100644 --- a/scripts/node_array_length/node_array_length.gml +++ b/scripts/node_array_length/node_array_length.gml @@ -1,10 +1,4 @@ -function Node_create_Array_Length(_x, _y) { - var node = new Node_Array_Length(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Array_Length(_x, _y) : Node(_x, _y) constructor { +function Node_Array_Length(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Array Length"; previewable = false; diff --git a/scripts/node_atlas/node_atlas.gml b/scripts/node_atlas/node_atlas.gml index 1a4c61ec7..2351ec2a1 100644 --- a/scripts/node_atlas/node_atlas.gml +++ b/scripts/node_atlas/node_atlas.gml @@ -1,10 +1,4 @@ -function Node_create_Atlas(_x, _y) { - var node = new Node_Atlas(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Atlas(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Atlas(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Atlas"; uniform_dim = shader_get_uniform(sh_atlas, "dimension"); diff --git a/scripts/node_bevel/node_bevel.gml b/scripts/node_bevel/node_bevel.gml index 11e2f5cdf..1f7b10c61 100644 --- a/scripts/node_bevel/node_bevel.gml +++ b/scripts/node_bevel/node_bevel.gml @@ -1,10 +1,4 @@ -function Node_create_Bevel(_x, _y) { - var node = new Node_Bevel(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Bevel(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Bevel(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Bevel"; uniform_dim = shader_get_uniform(sh_bevel, "dimension"); diff --git a/scripts/node_blend/node_blend.gml b/scripts/node_blend/node_blend.gml index 46eea5cff..57a91de0f 100644 --- a/scripts/node_blend/node_blend.gml +++ b/scripts/node_blend/node_blend.gml @@ -1,6 +1,5 @@ -function Node_create_Blend(_x, _y, _param = "") { - var node = new Node_Blend(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); +function Node_create_Blend(_x, _y, _group = 1, _param = "") { + var node = new Node_Blend(_x, _y, _group); switch(_param) { case "normal" : node.inputs[| 2].setValue(BLEND_MODE.normal) break; @@ -14,7 +13,7 @@ function Node_create_Blend(_x, _y, _param = "") { return node; } -function Node_Blend(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Blend(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Blend"; inputs[| 0] = nodeValue(0, "Background", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, DEF_SURFACE); diff --git a/scripts/node_bloom/node_bloom.gml b/scripts/node_bloom/node_bloom.gml index d8ab42b63..91e017bd7 100644 --- a/scripts/node_bloom/node_bloom.gml +++ b/scripts/node_bloom/node_bloom.gml @@ -1,10 +1,4 @@ -function Node_create_Bloom(_x, _y) { - var node = new Node_Bloom(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Bloom(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Bloom(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Bloom"; uniform_size = shader_get_uniform(sh_bloom_pass1, "size"); diff --git a/scripts/node_blur/node_blur.gml b/scripts/node_blur/node_blur.gml index d1522cd0f..f8ed24d83 100644 --- a/scripts/node_blur/node_blur.gml +++ b/scripts/node_blur/node_blur.gml @@ -1,10 +1,4 @@ -function Node_create_Blur(_x, _y) { - var node = new Node_Blur(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Blur(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Blur(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Blur"; inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); diff --git a/scripts/node_blur_contrast/node_blur_contrast.gml b/scripts/node_blur_contrast/node_blur_contrast.gml index 217045324..cc32a8674 100644 --- a/scripts/node_blur_contrast/node_blur_contrast.gml +++ b/scripts/node_blur_contrast/node_blur_contrast.gml @@ -1,10 +1,4 @@ -function Node_create_Blur_Contrast(_x, _y) { - var node = new Node_Blur_Contrast(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Blur_Contrast(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Blur_Contrast(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Blur contrast"; uniform_dim = shader_get_uniform(sh_blur_box_contrast, "dimension"); diff --git a/scripts/node_blur_directional/node_blur_directional.gml b/scripts/node_blur_directional/node_blur_directional.gml index c57c04008..9a0ac6874 100644 --- a/scripts/node_blur_directional/node_blur_directional.gml +++ b/scripts/node_blur_directional/node_blur_directional.gml @@ -1,10 +1,4 @@ -function Node_create_Blur_Directional(_x, _y) { - var node = new Node_Blur_Directional(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Blur_Directional(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Blur_Directional(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Directional blur"; uniform_str = shader_get_uniform(sh_blur_directional, "strength"); diff --git a/scripts/node_blur_radial/node_blur_radial.gml b/scripts/node_blur_radial/node_blur_radial.gml index f033ff21c..1880270bb 100644 --- a/scripts/node_blur_radial/node_blur_radial.gml +++ b/scripts/node_blur_radial/node_blur_radial.gml @@ -1,10 +1,4 @@ -function Node_create_Blur_Radial(_x, _y) { - var node = new Node_Blur_Radial(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Blur_Radial(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Blur_Radial(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Blur_Radial"; uniform_str = shader_get_uniform(sh_blur_radial, "strength"); diff --git a/scripts/node_bw/node_bw.gml b/scripts/node_bw/node_bw.gml index 23cffc9a0..deab8eef8 100644 --- a/scripts/node_bw/node_bw.gml +++ b/scripts/node_bw/node_bw.gml @@ -1,10 +1,4 @@ -function Node_create_BW(_x, _y) { - var node = new Node_BW(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_BW(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_BW(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "BW"; uniform_exp = shader_get_uniform(sh_bw, "brightness"); diff --git a/scripts/node_canvas/node_canvas.gml b/scripts/node_canvas/node_canvas.gml index 331ffeec2..e17be3ce4 100644 --- a/scripts/node_canvas/node_canvas.gml +++ b/scripts/node_canvas/node_canvas.gml @@ -1,10 +1,4 @@ -function Node_create_Canvas(_x, _y) { - var node = new Node_Canvas(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Canvas(_x, _y) : Node(_x, _y) constructor { +function Node_Canvas(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Canvas"; color = COLORS.node_blend_canvas; diff --git a/scripts/node_channels/node_channels.gml b/scripts/node_channels/node_channels.gml index ad1d218f0..28716325d 100644 --- a/scripts/node_channels/node_channels.gml +++ b/scripts/node_channels/node_channels.gml @@ -1,10 +1,4 @@ -function Node_create_RGB_Channel(_x, _y) { - var node = new Node_RGB_Channel(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_RGB_Channel(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_RGB_Channel(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "RGB Channel"; inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); diff --git a/scripts/node_character/node_character.gml b/scripts/node_character/node_character.gml index 139382125..8fa56c765 100644 --- a/scripts/node_character/node_character.gml +++ b/scripts/node_character/node_character.gml @@ -1,9 +1,3 @@ -function Node_create_Unicode(_x, _y) { - var node = new Node_Unicode(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - function Node_Unicode(_x, _y) : Node_Value_Processor(_x, _y) constructor { name = "Unicode"; color = COLORS.node_blend_number; diff --git a/scripts/node_checkerboard/node_checkerboard.gml b/scripts/node_checkerboard/node_checkerboard.gml index 43c6700d8..2aa34232d 100644 --- a/scripts/node_checkerboard/node_checkerboard.gml +++ b/scripts/node_checkerboard/node_checkerboard.gml @@ -1,10 +1,4 @@ -function Node_create_Checker(_x, _y) { - var node = new Node_Checker(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Checker(_x, _y) : Node(_x, _y) constructor { +function Node_Checker(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Checker"; shader = sh_checkerboard; diff --git a/scripts/node_chromatic_aberration/node_chromatic_aberration.gml b/scripts/node_chromatic_aberration/node_chromatic_aberration.gml index 62f538a3a..506628927 100644 --- a/scripts/node_chromatic_aberration/node_chromatic_aberration.gml +++ b/scripts/node_chromatic_aberration/node_chromatic_aberration.gml @@ -1,10 +1,4 @@ -function Node_create_Chromatic_Aberration(_x, _y) { - var node = new Node_Chromatic_Aberration(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Chromatic_Aberration(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Chromatic_Aberration(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Chromatic aberration"; shader = sh_chromatic_aberration; diff --git a/scripts/node_collection/node_collection.gml b/scripts/node_collection/node_collection.gml index 9ba498df4..ba008ab65 100644 --- a/scripts/node_collection/node_collection.gml +++ b/scripts/node_collection/node_collection.gml @@ -3,8 +3,9 @@ enum COLLECTION_TAG { loop = 2 } -function Node_Collection(_x, _y) : Node(_x, _y) constructor { +function Node_Collection(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { nodes = ds_list_create(); + ungroupable = true; custom_input_index = 0; custom_output_index = 0; @@ -25,11 +26,8 @@ function Node_Collection(_x, _y) : Node(_x, _y) constructor { if(!result && group != -1) group.setRenderStatus(result); - postSetRenderStatus(result); } - static postSetRenderStatus = function(result) {} - function add(_node) { ds_list_add(nodes, _node); var list = _node.group == -1? PANEL_GRAPH.nodes_list : _node.group.nodes; @@ -101,9 +99,9 @@ function Node_Collection(_x, _y) : Node(_x, _y) constructor { } static doUpdate = function() { - for(var i = 0; i < ds_list_size(nodes); i++) { - nodes[| i].doUpdate(); - } + //for(var i = 0; i < ds_list_size(nodes); i++) { + // nodes[| i].doUpdate(); + //} } static step = function() { @@ -183,11 +181,11 @@ function Node_Collection(_x, _y) : Node(_x, _y) constructor { } } - static resetRenderStatus = function() { + static resetAllRenderStatus = function() { for( var i = 0; i < ds_list_size(nodes); i++ ) { - nodes[| i].setUpdate(); + nodes[| i].setRenderStatus(false); if(variable_struct_exists(nodes[| i], "nodes")) - nodes[| i].resetRenderStatus(); + nodes[| i].resetAllRenderStatus(); } } } \ No newline at end of file diff --git a/scripts/node_color/node_color.gml b/scripts/node_color/node_color.gml index 1e32da20b..561920fef 100644 --- a/scripts/node_color/node_color.gml +++ b/scripts/node_color/node_color.gml @@ -1,10 +1,4 @@ -function Node_create_Color(_x, _y) { - var node = new Node_Color(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Color(_x, _y) : Node(_x, _y) constructor { +function Node_Color(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Color"; previewable = false; diff --git a/scripts/node_color_adjustment/node_color_adjustment.gml b/scripts/node_color_adjustment/node_color_adjustment.gml index 137eefe51..d3f67333c 100644 --- a/scripts/node_color_adjustment/node_color_adjustment.gml +++ b/scripts/node_color_adjustment/node_color_adjustment.gml @@ -1,10 +1,4 @@ -function Node_create_Color_adjust(_x, _y) { - var node = new Node_Color_adjust(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Color_adjust(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Color_adjust(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Color adjust"; uniform_bri = shader_get_uniform(sh_color_adjust, "brightness"); diff --git a/scripts/node_color_data/node_color_data.gml b/scripts/node_color_data/node_color_data.gml index 4bdf2a622..bacc2d38b 100644 --- a/scripts/node_color_data/node_color_data.gml +++ b/scripts/node_color_data/node_color_data.gml @@ -1,9 +1,3 @@ -function Node_create_Color_Data(_x, _y) { - var node = new Node_Color_Data(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - function Node_Color_Data(_x, _y) : Node_Value_Processor(_x, _y) constructor { name = "Color data"; previewable = false; diff --git a/scripts/node_color_from_hsv/node_color_from_hsv.gml b/scripts/node_color_from_hsv/node_color_from_hsv.gml index 5b75b39cd..95427ae01 100644 --- a/scripts/node_color_from_hsv/node_color_from_hsv.gml +++ b/scripts/node_color_from_hsv/node_color_from_hsv.gml @@ -1,10 +1,4 @@ -function Node_create_Color_HSV(_x, _y) { - var node = new Node_Color_HSV(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Color_HSV(_x, _y) : Node(_x, _y) constructor { +function Node_Color_HSV(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "HSV Color"; previewable = false; diff --git a/scripts/node_color_from_rgb/node_color_from_rgb.gml b/scripts/node_color_from_rgb/node_color_from_rgb.gml index 456bbc200..5d8755fac 100644 --- a/scripts/node_color_from_rgb/node_color_from_rgb.gml +++ b/scripts/node_color_from_rgb/node_color_from_rgb.gml @@ -1,10 +1,4 @@ -function Node_create_Color_RGB(_x, _y) { - var node = new Node_Color_RGB(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Color_RGB(_x, _y) : Node(_x, _y) constructor { +function Node_Color_RGB(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "RGB Color"; previewable = false; diff --git a/scripts/node_color_remove/node_color_remove.gml b/scripts/node_color_remove/node_color_remove.gml index 3879fc701..ed36f3ae9 100644 --- a/scripts/node_color_remove/node_color_remove.gml +++ b/scripts/node_color_remove/node_color_remove.gml @@ -1,10 +1,4 @@ -function Node_create_Color_Remove(_x, _y) { - var node = new Node_Color_Remove(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Color_Remove(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Color_Remove(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Color Remove"; uniform_from = shader_get_uniform(sh_color_remove, "colorFrom"); diff --git a/scripts/node_color_replacement/node_color_replacement.gml b/scripts/node_color_replacement/node_color_replacement.gml index 39636fe9e..ad80663db 100644 --- a/scripts/node_color_replacement/node_color_replacement.gml +++ b/scripts/node_color_replacement/node_color_replacement.gml @@ -1,10 +1,4 @@ -function Node_create_Color_replace(_x, _y) { - var node = new Node_Color_replace(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Color_replace(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Color_replace(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Color replace"; uniform_from = shader_get_uniform(sh_color_replace, "colorFrom"); diff --git a/scripts/node_color_sampler/node_color_sampler.gml b/scripts/node_color_sampler/node_color_sampler.gml index 324faf7ad..fa333582b 100644 --- a/scripts/node_color_sampler/node_color_sampler.gml +++ b/scripts/node_color_sampler/node_color_sampler.gml @@ -1,10 +1,4 @@ -function Node_create_Sampler(_x, _y) { - var node = new Node_Sampler(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Sampler(_x, _y) : Node(_x, _y) constructor { +function Node_Sampler(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Sampler"; inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); diff --git a/scripts/node_colorize/node_colorize.gml b/scripts/node_colorize/node_colorize.gml index 5463cb24d..43c03560a 100644 --- a/scripts/node_colorize/node_colorize.gml +++ b/scripts/node_colorize/node_colorize.gml @@ -1,10 +1,4 @@ -function Node_create_Colorize(_x, _y) { - var node = new Node_Colorize(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Colorize(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Colorize(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Colorize"; uniform_grad_blend = shader_get_uniform(sh_colorize, "gradient_blend"); diff --git a/scripts/node_composite/node_composite.gml b/scripts/node_composite/node_composite.gml index d58f2768a..752a22903 100644 --- a/scripts/node_composite/node_composite.gml +++ b/scripts/node_composite/node_composite.gml @@ -1,16 +1,10 @@ -function Node_create_Composite(_x, _y) { - var node = new Node_Composite(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - enum COMPOSE_OUTPUT_SCALING { first, largest, constant } -function Node_Composite(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Composite(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Composite"; uniform_dim = shader_get_uniform(sh_blend_normal_dim, "dimension"); diff --git a/scripts/node_condition/node_condition.gml b/scripts/node_condition/node_condition.gml index 061746aa9..293bffde3 100644 --- a/scripts/node_condition/node_condition.gml +++ b/scripts/node_condition/node_condition.gml @@ -1,56 +1,72 @@ -function Node_create_Condition(_x, _y) { - var node = new Node_Condition(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Condition(_x, _y) : Node(_x, _y) constructor { +function Node_Condition(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Condition"; previewable = false; w = 96; min_h = 0; - inputs[| 0] = nodeValue( 0, "Check", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 ) + inputs[| 0] = nodeValue( 0, "Check value", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 ) .setVisible(true, true); - inputs[| 1] = nodeValue( 1, "If", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + inputs[| 1] = nodeValue( 1, "Condition", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) .setDisplay(VALUE_DISPLAY.enum_scroll, ["Equal", "Not equal", "Less", "Less or equal", "Greater", "Greater or equal"]); - inputs[| 2] = nodeValue( 2, "To / Than", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 ); + inputs[| 2] = nodeValue( 2, "Compare to", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 ); inputs[| 3] = nodeValue( 3, "True", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, -1 ) .setVisible(true, true); inputs[| 4] = nodeValue( 4, "False", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, -1 ) .setVisible(true, true); - input_display_list = [ - ["Condition", false], 0, 1, 2, - ["Result", false], 3, 4 + inputs[| 5] = nodeValue( 5, "Eval mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + .setDisplay(VALUE_DISPLAY.enum_scroll, ["Boolean", "Comparison"]); + + inputs[| 6] = nodeValue( 6, "Boolean", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false ) + .setVisible(true, true); + + input_display_list = [ 5, + ["Condition", false], 0, 1, 2, 6, + ["Result", true], 3, 4 ] outputs[| 0] = nodeValue(0, "Result", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, []); + outputs[| 1] = nodeValue(1, "Bool", self, JUNCTION_CONNECT.output, VALUE_TYPE.boolean, false); + + static step = function() { + var _mode = inputs[| 5].getValue(); + + inputs[| 0].setVisible(_mode); + inputs[| 1].setVisible(_mode); + inputs[| 2].setVisible(_mode); + inputs[| 6].setVisible(!_mode); + } static update = function() { + var _true = inputs[| 3].getValue(); + var _fals = inputs[| 4].getValue(); + + var _mode = inputs[| 5].getValue(); + var _chck = inputs[| 0].getValue(); var _cond = inputs[| 1].getValue(); var _valu = inputs[| 2].getValue(); - - var _true = inputs[| 3].getValue(); - var _fals = inputs[| 4].getValue(); + var _bool = inputs[| 6].getValue(); inputs[| 3].type = inputs[| 3].value_from == noone? VALUE_TYPE.any : inputs[| 3].value_from.type; inputs[| 4].type = inputs[| 4].value_from == noone? VALUE_TYPE.any : inputs[| 4].value_from.type; var res = false; - switch(_cond) { - case 0 : res = _chck == _valu; break; - case 1 : res = _chck != _valu; break; - case 2 : res = _chck < _valu; break; - case 3 : res = _chck <= _valu; break; - case 4 : res = _chck > _valu; break; - case 5 : res = _chck >= _valu; break; - } + if(_mode) { + switch(_cond) { + case 0 : res = _chck == _valu; break; + case 1 : res = _chck != _valu; break; + case 2 : res = _chck < _valu; break; + case 3 : res = _chck <= _valu; break; + case 4 : res = _chck > _valu; break; + case 5 : res = _chck >= _valu; break; + } + } else + res = _bool; if(res) { outputs[| 0].setValue(_true); @@ -59,5 +75,19 @@ function Node_Condition(_x, _y) : Node(_x, _y) constructor { outputs[| 0].setValue(_fals); outputs[| 0].type = inputs[| 4].type; } + + outputs[| 1].setValue(res); + } + + function onDrawNode(xx, yy, _mx, _my, _s) { + var val = outputs[| 1].getValue(); + var frm = val? inputs[| 3] : inputs[| 4]; + var to = outputs[| 0]; + var c0 = value_color(frm.type); + + draw_set_color(c0); + draw_set_alpha(0.5); + draw_line_width(frm.x, frm.y, to.x, to.y, _s * 4); + draw_set_alpha(1); } } \ No newline at end of file diff --git a/scripts/node_corner/node_corner.gml b/scripts/node_corner/node_corner.gml index bfe2b1d93..6902cd7da 100644 --- a/scripts/node_corner/node_corner.gml +++ b/scripts/node_corner/node_corner.gml @@ -1,10 +1,4 @@ -function Node_create_Corner(_x, _y) { - var node = new Node_Corner(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Corner(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Corner(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Round corner"; uniform_er_dim = shader_get_uniform(sh_erode, "dimension"); diff --git a/scripts/node_counter/node_counter.gml b/scripts/node_counter/node_counter.gml index f8dbd970f..d1899bc91 100644 --- a/scripts/node_counter/node_counter.gml +++ b/scripts/node_counter/node_counter.gml @@ -1,9 +1,3 @@ -function Node_create_Counter(_x, _y) { - var node = new Node_Counter(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - function Node_Counter(_x, _y) : Node_Value_Processor(_x, _y) constructor { name = "Counter"; update_on_frame = true; diff --git a/scripts/node_crop/node_crop.gml b/scripts/node_crop/node_crop.gml index b8632ff2d..97c4da72a 100644 --- a/scripts/node_crop/node_crop.gml +++ b/scripts/node_crop/node_crop.gml @@ -1,10 +1,4 @@ -function Node_create_Crop(_x, _y) { - var node = new Node_Crop(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Crop(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Crop(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Crop"; inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); diff --git a/scripts/node_data/node_data.gml b/scripts/node_data/node_data.gml index 30b699190..763ebba5d 100644 --- a/scripts/node_data/node_data.gml +++ b/scripts/node_data/node_data.gml @@ -1,7 +1,9 @@ -function Node(_x, _y) constructor { +function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor { active = true; node_id = generateUUID(); - group = -1; + group = _group; + ds_list_add(PANEL_GRAPH.getNodeList(_group), self); + color = c_white; icon = noone; bg_spr = THEME.node_bg; @@ -11,7 +13,6 @@ function Node(_x, _y) constructor { if(!LOADING && !APPENDING) { recordAction(ACTION_TYPE.node_added, self); NODE_MAP[? node_id] = self; - group = PANEL_GRAPH.getCurrentContext(); } name = ""; @@ -24,6 +25,7 @@ function Node(_x, _y) constructor { auto_height = true; input_display_list = -1; + output_display_list = -1; inspector_display_list = -1; is_dynamic_output = false; inputs = ds_list_create(); @@ -72,6 +74,12 @@ function Node(_x, _y) constructor { return jun_list_arr; } + static getOutputJunctionIndex = function(index) { + if(output_display_list == -1) + return index; + return output_display_list[index]; + } + static setHeight = function() { var _hi = ui(32); var _ho = ui(32); @@ -201,12 +209,12 @@ function Node(_x, _y) constructor { static preDraw = function(_x, _y, _s) { var xx = x * _s + _x; var yy = y * _s + _y; - var jun; - var amo = input_display_list == -1? ds_list_size(inputs) : array_length(input_display_list); + + var inamo = input_display_list == -1? ds_list_size(inputs) : array_length(input_display_list); var _in = yy + ui(32) * _s; - for(var i = 0; i < amo; i++) { + for(var i = 0; i < inamo; i++) { var idx = getInputJunctionIndex(i); if(idx == noone) continue; @@ -217,10 +225,13 @@ function Node(_x, _y) constructor { _in += 24 * _s * jun.isVisible(); } + var outamo = output_display_list == -1? ds_list_size(outputs) : array_length(output_display_list); + xx = xx + w * _s; _in = yy + ui(32) * _s; - for(var i = 0; i < ds_list_size(outputs); i++) { - jun = outputs[| i]; + for(var i = 0; i < outamo; i++) { + var idx = getOutputJunctionIndex(i); + jun = outputs[| idx]; jun.x = xx; jun.y = _in; @@ -314,7 +325,7 @@ function Node(_x, _y) constructor { } } - static drawConnections = function(_x, _y, mx, my, _s) { + static drawConnections = function(_x, _y, _s, mx, my, active) { var hovering = noone; for(var i = 0; i < ds_list_size(inputs); i++) { var jun = inputs[| i]; @@ -345,9 +356,9 @@ function Node(_x, _y) constructor { break; } - if(hover) + if(active && hover) hovering = jun; - if(PANEL_GRAPH.junction_hovering == jun) + if(PANEL_GRAPH.junction_hovering == jun || (instance_exists(o_dialog_add_node) && o_dialog_add_node.junction_hovering == jun)) th *= 2; var ty = LINE_STYLE.solid; @@ -626,6 +637,7 @@ function Node(_x, _y) constructor { var _data = serialize(); _node.deserialize(ds_map_clone(_data)); _node.node_id = generateUUID(); + NODE_MAP[? _node.node_id] = _node; return _node; } diff --git a/scripts/node_de_corner/node_de_corner.gml b/scripts/node_de_corner/node_de_corner.gml index 47b8c10cd..5130ef09e 100644 --- a/scripts/node_de_corner/node_de_corner.gml +++ b/scripts/node_de_corner/node_de_corner.gml @@ -1,10 +1,4 @@ -function Node_create_De_Corner(_x, _y) { - var node = new Node_De_Corner(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_De_Corner(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_De_Corner(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "De-Corner"; uniform_dim = shader_get_uniform(sh_de_corner, "dimension"); diff --git a/scripts/node_de_stray/node_de_stray.gml b/scripts/node_de_stray/node_de_stray.gml index 94aa2a40f..4d40be08d 100644 --- a/scripts/node_de_stray/node_de_stray.gml +++ b/scripts/node_de_stray/node_de_stray.gml @@ -1,10 +1,4 @@ -function Node_create_De_Stray(_x, _y) { - var node = new Node_De_Stray(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_De_Stray(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_De_Stray(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "De-Stray"; uniform_dim = shader_get_uniform(sh_de_stray, "dimension"); diff --git a/scripts/node_dilate/node_dilate.gml b/scripts/node_dilate/node_dilate.gml index 2c4b696e7..26ace55cf 100644 --- a/scripts/node_dilate/node_dilate.gml +++ b/scripts/node_dilate/node_dilate.gml @@ -1,10 +1,4 @@ -function Node_create_Dilate(_x, _y) { - var node = new Node_Dilate(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Dilate(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Dilate(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Dilate"; uniform_dim = shader_get_uniform(sh_dilate, "dimension"); diff --git a/scripts/node_displacement/node_displacement.gml b/scripts/node_displacement/node_displacement.gml index 788a87b6a..57c73070f 100644 --- a/scripts/node_displacement/node_displacement.gml +++ b/scripts/node_displacement/node_displacement.gml @@ -1,10 +1,4 @@ -function Node_create_Displace(_x, _y) { - var node = new Node_Displace(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Displace(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Displace(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Displace"; shader = sh_displace; diff --git a/scripts/node_display_image/node_display_image.gml b/scripts/node_display_image/node_display_image.gml index ffe352c12..11aa4f38a 100644 --- a/scripts/node_display_image/node_display_image.gml +++ b/scripts/node_display_image/node_display_image.gml @@ -1,15 +1,15 @@ -function Node_create_Display_Image(_x, _y) { +function Node_create_Display_Image(_x, _y, _group = -1) { var path = ""; if(!LOADING && !APPENDING) { path = get_open_filename(".png", ""); if(path == "") return noone; } - var node = new Node_Display_Image(_x, _y); + var node = new Node_Display_Image(_x, _y, _group); node.inputs[| 0].setValue(path); node.doUpdate(); - ds_list_add(PANEL_GRAPH.nodes_list, node); + //ds_list_add(PANEL_GRAPH.nodes_list, node); return node; } @@ -20,11 +20,11 @@ function Node_create_Display_Image_path(_x, _y, path) { node.inputs[| 0].setValue(path); node.doUpdate(); - ds_list_add(PANEL_GRAPH.nodes_list, node); + //ds_list_add(PANEL_GRAPH.nodes_list, node); return node; } -function Node_Display_Image(_x, _y) : Node(_x, _y) constructor { +function Node_Display_Image(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = ""; always_output = true; auto_height = false; diff --git a/scripts/node_display_text/node_display_text.gml b/scripts/node_display_text/node_display_text.gml index 6273cbc43..cb4c24356 100644 --- a/scripts/node_display_text/node_display_text.gml +++ b/scripts/node_display_text/node_display_text.gml @@ -1,10 +1,4 @@ -function Node_create_Display_Text(_x, _y) { - var node = new Node_Display_Text(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Display_Text(_x, _y) : Node(_x, _y) constructor { +function Node_Display_Text(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Display text"; w = 240; h = 160; diff --git a/scripts/node_dither/node_dither.gml b/scripts/node_dither/node_dither.gml index 045e2fa4b..f23aec5a0 100644 --- a/scripts/node_dither/node_dither.gml +++ b/scripts/node_dither/node_dither.gml @@ -1,10 +1,4 @@ -function Node_create_Dither(_x, _y) { - var node = new Node_Dither(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Dither(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Dither(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { static dither2 = [ 0, 2, 3, 1 ]; static dither4 = [ 0, 8, 2, 10, diff --git a/scripts/node_edge_detect/node_edge_detect.gml b/scripts/node_edge_detect/node_edge_detect.gml index e02d472d3..6d3e26c47 100644 --- a/scripts/node_edge_detect/node_edge_detect.gml +++ b/scripts/node_edge_detect/node_edge_detect.gml @@ -1,10 +1,4 @@ -function Node_create_Edge_Detect(_x, _y) { - var node = new Node_Edge_Detect(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Edge_Detect(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Edge_Detect(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Edge detect"; uniform_dim = shader_get_uniform(sh_edge_detect, "dimension"); diff --git a/scripts/node_erode/node_erode.gml b/scripts/node_erode/node_erode.gml index 80ab4c212..c91a2cb04 100644 --- a/scripts/node_erode/node_erode.gml +++ b/scripts/node_erode/node_erode.gml @@ -1,10 +1,4 @@ -function Node_create_Erode(_x, _y) { - var node = new Node_Erode(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Erode(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Erode(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Erode"; uniform_dim = shader_get_uniform(sh_erode, "dimension"); diff --git a/scripts/node_export/node_export.gml b/scripts/node_export/node_export.gml index cb8601355..3838bf195 100644 --- a/scripts/node_export/node_export.gml +++ b/scripts/node_export/node_export.gml @@ -1,17 +1,17 @@ -function Node_create_Export(_x, _y) { +function Node_create_Export(_x, _y, _group = -1) { var path = ""; if(!LOADING && !APPENDING) { path = get_save_filename(".png", "export"); } - var node = new Node_Export(_x, _y); + var node = new Node_Export(_x, _y, _group); node.inputs[| 1].setValue(path); - ds_list_add(PANEL_GRAPH.nodes_list, node); + //ds_list_add(PANEL_GRAPH.nodes_list, node); return node; } -function Node_Export(_x, _y) : Node(_x, _y) constructor { +function Node_Export(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Export"; auto_update = false; diff --git a/scripts/node_frame/node_frame.gml b/scripts/node_frame/node_frame.gml index c7992e594..07631737c 100644 --- a/scripts/node_frame/node_frame.gml +++ b/scripts/node_frame/node_frame.gml @@ -1,10 +1,4 @@ -function Node_create_Frame(_x, _y) { - var node = new Node_Frame(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Frame(_x, _y) : Node(_x, _y) constructor { +function Node_Frame(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Empty frame"; w = 240; h = 160; diff --git a/scripts/node_glow/node_glow.gml b/scripts/node_glow/node_glow.gml index 185273dcc..ea76ffd1a 100644 --- a/scripts/node_glow/node_glow.gml +++ b/scripts/node_glow/node_glow.gml @@ -1,10 +1,4 @@ -function Node_create_Glow(_x, _y) { - var node = new Node_Glow(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Glow(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Glow(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Glow"; uniform_dim = shader_get_uniform(sh_outline_only, "dimension"); diff --git a/scripts/node_gradient/node_gradient.gml b/scripts/node_gradient/node_gradient.gml index 641e14aa7..6b5fa6d8f 100644 --- a/scripts/node_gradient/node_gradient.gml +++ b/scripts/node_gradient/node_gradient.gml @@ -1,10 +1,4 @@ -function Node_create_Gradient(_x, _y) { - var node = new Node_Gradient(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Gradient(_x, _y) : Node(_x, _y) constructor { +function Node_Gradient(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Gradient"; uniform_grad_blend = shader_get_uniform(sh_gradient, "gradient_blend"); diff --git a/scripts/node_gradient_output/node_gradient_output.gml b/scripts/node_gradient_output/node_gradient_output.gml index 7d6c68322..47fde585b 100644 --- a/scripts/node_gradient_output/node_gradient_output.gml +++ b/scripts/node_gradient_output/node_gradient_output.gml @@ -1,10 +1,4 @@ -function Node_create_Gradient_Out(_x, _y) { - var node = new Node_Gradient_Out(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Gradient_Out(_x, _y) : Node(_x, _y) constructor { +function Node_Gradient_Out(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Gradient"; previewable = false; diff --git a/scripts/node_grey_to_alpha/node_grey_to_alpha.gml b/scripts/node_grey_to_alpha/node_grey_to_alpha.gml index 4379b2def..261cfedd8 100644 --- a/scripts/node_grey_to_alpha/node_grey_to_alpha.gml +++ b/scripts/node_grey_to_alpha/node_grey_to_alpha.gml @@ -1,10 +1,4 @@ -function Node_create_Grey_Alpha(_x, _y) { - var node = new Node_Grey_Alpha(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Grey_Alpha(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Grey_Alpha(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Grey to alpha"; shader = sh_grey_alpha; diff --git a/scripts/node_greyscale/node_greyscale.gml b/scripts/node_greyscale/node_greyscale.gml index e6e36b6ab..ceed2aebd 100644 --- a/scripts/node_greyscale/node_greyscale.gml +++ b/scripts/node_greyscale/node_greyscale.gml @@ -1,10 +1,4 @@ -function Node_create_Greyscale(_x, _y) { - var node = new Node_Greyscale(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Greyscale(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Greyscale(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Greyscale"; uniform_exp = shader_get_uniform(sh_greyscale, "brightness"); diff --git a/scripts/node_grid/node_grid.gml b/scripts/node_grid/node_grid.gml index c4330557b..4f0b26494 100644 --- a/scripts/node_grid/node_grid.gml +++ b/scripts/node_grid/node_grid.gml @@ -1,10 +1,4 @@ -function Node_create_Grid(_x, _y) { - var node = new Node_Grid(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Grid(_x, _y) : Node(_x, _y) constructor { +function Node_Grid(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Grid"; shader = sh_grid; @@ -15,6 +9,7 @@ function Node_Grid(_x, _y) : Node(_x, _y) constructor { uniform_ang = shader_get_uniform(shader, "angle"); uniform_shf = shader_get_uniform(shader, "shift"); uniform_shx = shader_get_uniform(shader, "shiftAxis"); + uniform_hgt = shader_get_uniform(shader, "height"); uniform_col1 = shader_get_uniform(shader, "col1"); uniform_col2 = shader_get_uniform(shader, "col2"); @@ -45,11 +40,13 @@ function Node_Grid(_x, _y) : Node(_x, _y) constructor { inputs[| 9] = nodeValue(9, "Shift axis", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) .setDisplay(VALUE_DISPLAY.enum_button, ["X", "Y"]); + + inputs[| 10] = nodeValue(10, "Height", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); input_display_list = [ ["Output", false], 0, ["Pattern", false], 1, 4, 2, 3, 9, 8, - ["Render", false], 5, 6, 7, + ["Render", false], 5, 6, 7, 10 ]; outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); @@ -67,6 +64,7 @@ function Node_Grid(_x, _y) : Node(_x, _y) constructor { var _sam = inputs[| 7].getValue(); var _shf = inputs[| 8].getValue(); var _shx = inputs[| 9].getValue(); + var _hgt = inputs[| 10].getValue(); var _col1 = inputs[| 5].getValue(); var _col2 = inputs[| 6].getValue(); @@ -89,6 +87,7 @@ function Node_Grid(_x, _y) : Node(_x, _y) constructor { shader_set_uniform_f(uniform_sam, is_surface(_sam)); shader_set_uniform_f(uniform_shf, _shf); shader_set_uniform_i(uniform_shx, _shx); + shader_set_uniform_i(uniform_hgt, _hgt); shader_set_uniform_f_array(uniform_col1, colToVec4(_col1)); shader_set_uniform_f_array(uniform_col2, colToVec4(_col2)); diff --git a/scripts/node_group/node_group.gml b/scripts/node_group/node_group.gml index 135d87865..e0bf7a9dd 100644 --- a/scripts/node_group/node_group.gml +++ b/scripts/node_group/node_group.gml @@ -1,9 +1,3 @@ -function Node_create_Group(_x, _y) { - var node = new Node_Group(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - function Node_Group(_x, _y) : Node_Collection(_x, _y) constructor { name = "Group"; color = COLORS.node_blend_collection; diff --git a/scripts/node_group_input/node_group_input.gml b/scripts/node_group_input/node_group_input.gml index da24b0b25..86929a68b 100644 --- a/scripts/node_group_input/node_group_input.gml +++ b/scripts/node_group_input/node_group_input.gml @@ -1,11 +1,4 @@ -function Node_create_Group_Input(_x, _y) { - if(!LOADING && !APPENDING && PANEL_GRAPH.getCurrentContext() == -1) return; - var node = new Node_Group_Input(_x, _y, PANEL_GRAPH.getCurrentContext()); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Group_Input(_x, _y, _group) : Node(_x, _y) constructor { +function Node_Group_Input(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Input"; color = COLORS.node_blend_collection; previewable = false; diff --git a/scripts/node_group_output/node_group_output.gml b/scripts/node_group_output/node_group_output.gml index f89681f84..748cb3a91 100644 --- a/scripts/node_group_output/node_group_output.gml +++ b/scripts/node_group_output/node_group_output.gml @@ -1,11 +1,4 @@ -function Node_create_Group_Output(_x, _y) { - if(!LOADING && !APPENDING && PANEL_GRAPH.getCurrentContext() == -1) return; - var node = new Node_Group_Output(_x, _y, PANEL_GRAPH.getCurrentContext()); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Group_Output(_x, _y, _group) : Node(_x, _y) constructor { +function Node_Group_Output(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Output"; color = COLORS.node_blend_collection; previewable = false; diff --git a/scripts/node_image/node_image.gml b/scripts/node_image/node_image.gml index 4ef2777b8..75f502466 100644 --- a/scripts/node_image/node_image.gml +++ b/scripts/node_image/node_image.gml @@ -1,15 +1,15 @@ -function Node_create_Image(_x, _y) { +function Node_create_Image(_x, _y, _group = -1) { var path = ""; if(!LOADING && !APPENDING) { path = get_open_filename(".png", ""); if(path == "") return noone; } - var node = new Node_Image(_x, _y); + var node = new Node_Image(_x, _y, _group); node.inputs[| 0].setValue(path); node.doUpdate(); - ds_list_add(PANEL_GRAPH.nodes_list, node); + //ds_list_add(PANEL_GRAPH.nodes_list, node); return node; } @@ -20,11 +20,11 @@ function Node_create_Image_path(_x, _y, path) { node.inputs[| 0].setValue(path); node.doUpdate(); - ds_list_add(PANEL_GRAPH.nodes_list, node); + //ds_list_add(PANEL_GRAPH.nodes_list, node); return node; } -function Node_Image(_x, _y) : Node(_x, _y) constructor { +function Node_Image(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = ""; color = COLORS.node_blend_input; always_output = true; @@ -121,7 +121,7 @@ function Node_Image(_x, _y) : Node(_x, _y) constructor { var ww = sprite_get_width(spr) / amo; var hh = sprite_get_height(spr); - var _splice = nodeBuild("Splice spritesheet", x + w + 64, y); + var _splice = nodeBuild("Node_Image_Sheet", x + w + 64, y); _splice.inputs[| 0].setFrom(outputs[| 0], false); _splice.inputs[| 1].setValue([ww, hh]); _splice.inputs[| 2].setValue(amo); diff --git a/scripts/node_image_animated/node_image_animated.gml b/scripts/node_image_animated/node_image_animated.gml index 90bc3572c..247781497 100644 --- a/scripts/node_image_animated/node_image_animated.gml +++ b/scripts/node_image_animated/node_image_animated.gml @@ -1,16 +1,16 @@ -function Node_create_Image_Animated(_x, _y) { +function Node_create_Image_Animated(_x, _y, _group = -1) { var path = ""; if(!LOADING && !APPENDING) { path = get_open_filenames(".png", ""); if(path == "") return noone; } - var node = new Node_Image_Animated(_x, _y); + var node = new Node_Image_Animated(_x, _y, _group); var paths = paths_to_array(path); node.inputs[| 0].setValue(paths); node.doUpdate(); - ds_list_add(PANEL_GRAPH.nodes_list, node); + //ds_list_add(PANEL_GRAPH.nodes_list, node); return node; } @@ -20,7 +20,7 @@ function Node_create_Image_Animated_path(_x, _y, _path) { node.inputs[| 0].setValue(_path); node.doUpdate(); - ds_list_add(PANEL_GRAPH.nodes_list, node); + //ds_list_add(PANEL_GRAPH.nodes_list, node); return node; } @@ -31,7 +31,7 @@ enum ANIMATION_END { hide } -function Node_Image_Animated(_x, _y) : Node(_x, _y) constructor { +function Node_Image_Animated(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = ""; spr = []; color = COLORS.node_blend_input; diff --git a/scripts/node_image_gif/node_image_gif.gml b/scripts/node_image_gif/node_image_gif.gml index 746f2b94a..ff8613cbb 100644 --- a/scripts/node_image_gif/node_image_gif.gml +++ b/scripts/node_image_gif/node_image_gif.gml @@ -1,15 +1,15 @@ -function Node_create_Image_gif(_x, _y) { +function Node_create_Image_gif(_x, _y, _group = -1) { var path = ""; if(!LOADING && !APPENDING) { path = get_open_filename(".gif", ""); if(path == "") return noone; } - var node = new Node_Image_gif(_x, _y); + var node = new Node_Image_gif(_x, _y, _group); node.inputs[| 0].setValue(path); node.doUpdate(); - ds_list_add(PANEL_GRAPH.nodes_list, node); + //ds_list_add(PANEL_GRAPH.nodes_list, node); return node; } @@ -20,11 +20,11 @@ function Node_create_Image_gif_path(_x, _y, path) { node.inputs[| 0].setValue(path); node.doUpdate(); - ds_list_add(PANEL_GRAPH.nodes_list, node); + //ds_list_add(PANEL_GRAPH.nodes_list, node); return node; } -function Node_Image_gif(_x, _y) : Node(_x, _y) constructor { +function Node_Image_gif(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = ""; color = COLORS.node_blend_input; update_on_frame = true; diff --git a/scripts/node_image_sequence/node_image_sequence.gml b/scripts/node_image_sequence/node_image_sequence.gml index 80cec7841..509103773 100644 --- a/scripts/node_image_sequence/node_image_sequence.gml +++ b/scripts/node_image_sequence/node_image_sequence.gml @@ -1,16 +1,16 @@ -function Node_create_Image_Sequence(_x, _y) { +function Node_create_Image_Sequence(_x, _y, _group = -1) { var path = ""; if(!LOADING && !APPENDING) { path = get_open_filenames(".png", ""); if(path == "") return noone; } - var node = new Node_Image_Sequence(_x, _y); + var node = new Node_Image_Sequence(_x, _y, _group); var paths = paths_to_array(path); node.inputs[| 0].setValue(paths); node.doUpdate(); - ds_list_add(PANEL_GRAPH.nodes_list, node); + //ds_list_add(PANEL_GRAPH.nodes_list, node); return node; } @@ -19,7 +19,7 @@ function Node_create_Image_Sequence_path(_x, _y, _path) { node.inputs[| 0].setValue(_path); node.doUpdate(); - ds_list_add(PANEL_GRAPH.nodes_list, node); + //ds_list_add(PANEL_GRAPH.nodes_list, node); return node; } @@ -34,7 +34,7 @@ enum CANVAS_SIZING { scale } -function Node_Image_Sequence(_x, _y) : Node(_x, _y) constructor { +function Node_Image_Sequence(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = ""; spr = []; color = COLORS.node_blend_input; diff --git a/scripts/node_image_sheet/node_image_sheet.gml b/scripts/node_image_sheet/node_image_sheet.gml index 56d181fcc..e83333690 100644 --- a/scripts/node_image_sheet/node_image_sheet.gml +++ b/scripts/node_image_sheet/node_image_sheet.gml @@ -1,10 +1,4 @@ -function Node_create_Image_Sheet(_x, _y) { - var node = new Node_Image_Sheet(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Image_Sheet(_x, _y) : Node(_x, _y) constructor { +function Node_Image_Sheet(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Splice sprite"; always_output = true; diff --git a/scripts/node_invert/node_invert.gml b/scripts/node_invert/node_invert.gml index 3d60a4508..7e8ed23da 100644 --- a/scripts/node_invert/node_invert.gml +++ b/scripts/node_invert/node_invert.gml @@ -1,10 +1,4 @@ -function Node_create_Invert(_x, _y) { - var node = new Node_Invert(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Invert(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Invert(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Invert"; inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); diff --git a/scripts/node_iterate/node_iterate.gml b/scripts/node_iterate/node_iterate.gml index 0b0d2a71a..d8c3e305a 100644 --- a/scripts/node_iterate/node_iterate.gml +++ b/scripts/node_iterate/node_iterate.gml @@ -4,12 +4,6 @@ enum ITERATION_STATUS { complete, } -function Node_create_Iterate(_x, _y) { - var node = new Node_Iterate(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - function Node_Iterate(_x, _y) : Node_Collection(_x, _y) constructor { name = "Loop"; color = COLORS.node_blend_loop; @@ -21,18 +15,32 @@ function Node_Iterate(_x, _y) : Node_Collection(_x, _y) constructor { custom_input_index = 1; loop_start_time = 0; + ALWAYS_FULL = true; - static postSetRenderStatus = function(result) { - if(rendered) return; + if(!LOADING && !APPENDING) { + var input = nodeBuild("Node_Iterator_Input", -256, -32, self); + var output = nodeBuild("Node_Iterator_Output", 256, -32, self); + output.inputs[| 2].setFrom(input.outputs[| 1]); + } + + static initLoop = function() { iterated = 0; loop_start_time = get_timer(); + + for( var i = 0; i < ds_list_size(nodes); i++ ) { + var n = nodes[| i]; + if(variable_struct_exists(n, "initLoop")) + n.initLoop(); + } + + printIf(global.RENDER_LOG, "LOOP INIT"); } static iterationStatus = function() { var iter = true; for( var i = 0; i < ds_list_size(outputs); i++ ) { - var _out = outputs[| i].node; + var _out = outputs[| i].from; iter &= _out.rendered; } @@ -43,7 +51,7 @@ function Node_Iterate(_x, _y) : Node_Collection(_x, _y) constructor { } else if(iterated > inputs[| 0].getValue()) return ITERATION_STATUS.complete; - resetRenderStatus(); + resetAllRenderStatus(); return ITERATION_STATUS.loop; } diff --git a/scripts/node_iteration_index/node_iteration_index.gml b/scripts/node_iteration_index/node_iteration_index.gml index 2b5b2da6f..4ce71dba3 100644 --- a/scripts/node_iteration_index/node_iteration_index.gml +++ b/scripts/node_iteration_index/node_iteration_index.gml @@ -1,10 +1,4 @@ -function Node_create_Iterator_Index(_x, _y) { - var node = new Node_Iterator_Index(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Iterator_Index(_x, _y) : Node(_x, _y) constructor { +function Node_Iterator_Index(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Index"; color = COLORS.node_blend_number; previewable = false; diff --git a/scripts/node_iteration_input/node_iteration_input.gml b/scripts/node_iteration_input/node_iteration_input.gml index fe8f78713..b26a52606 100644 --- a/scripts/node_iteration_input/node_iteration_input.gml +++ b/scripts/node_iteration_input/node_iteration_input.gml @@ -1,18 +1,10 @@ -function Node_create_Iterator_Input(_x, _y) { - if(!LOADING && !APPENDING && PANEL_GRAPH.getCurrentContext() == -1) return; - var node = new Node_Iterator_Input(_x, _y, PANEL_GRAPH.getCurrentContext()); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Iterator_Input(_x, _y, _group) : Node(_x, _y) constructor { +function Node_Iterator_Input(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Input"; color = COLORS.node_blend_collection; previewable = false; auto_height = false; input_index = -1; - group = _group; inParent = undefined; local_output = noone; @@ -46,29 +38,30 @@ function Node_Iterator_Input(_x, _y, _group) : Node(_x, _y) constructor { ]; outputs[| 0] = nodeValue(0, "Value", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, 0); - outputs[| 0].getValueDefault = method(outputs[| 0], outputs[| 0].getValueRecursive); + outputs[| 0].getValueDefault = method(outputs[| 0], outputs[| 0].getValueRecursive); //Get value from outside loop outputs[| 0].getValueRecursive = function() { //show_debug_message("iteration " + string(group.iterated)); if(!variable_struct_exists(group, "iterated")) return outputs[| 0].getValueDefault(); - var _local_output = noone; + var _node_output = noone; for( var i = 0; i < ds_list_size(outputs[| 1].value_to); i++ ) { var vt = outputs[| 1].value_to[| i]; if(vt.value_from == outputs[| 1]) - _local_output = vt; + _node_output = vt; } - if(_local_output == noone || group.iterated == 0) { - //show_debug_message("get default value"); + if(_node_output == noone || group.iterated == 0) return outputs[| 0].getValueDefault(); - } - //show_debug_message("get local output"); - return [ _local_output.node.cache_value, inputs[| 2].getValue() ]; + return [ _node_output.node.cache_value, inputs[| 2].getValue() ]; } - outputs[| 1] = nodeValue(1, "Index", self, JUNCTION_CONNECT.output, VALUE_TYPE.node, 0); + outputs[| 1] = nodeValue(1, "Loop entrance", self, JUNCTION_CONNECT.output, VALUE_TYPE.node, 0); + + output_display_list = [ + 1, 0 + ] static onValueUpdate = function(index) { if(is_undefined(inParent)) return; diff --git a/scripts/node_iteration_output/node_iteration_output.gml b/scripts/node_iteration_output/node_iteration_output.gml index 4f93ea864..99f943378 100644 --- a/scripts/node_iteration_output/node_iteration_output.gml +++ b/scripts/node_iteration_output/node_iteration_output.gml @@ -1,11 +1,4 @@ -function Node_create_Iterator_Output(_x, _y) { - if(!LOADING && !APPENDING && PANEL_GRAPH.getCurrentContext() == -1) return; - var node = new Node_Iterator_Output(_x, _y, PANEL_GRAPH.getCurrentContext()); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Iterator_Output(_x, _y, _group) : Node(_x, _y) constructor { +function Node_Iterator_Output(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Output"; color = COLORS.node_blend_collection; previewable = false; @@ -22,9 +15,13 @@ function Node_Iterator_Output(_x, _y, _group) : Node(_x, _y) constructor { inputs[| 1] = nodeValue(1, "Order", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0); - inputs[| 2] = nodeValue(2, "Loop input", self, JUNCTION_CONNECT.input, VALUE_TYPE.node, -1) + inputs[| 2] = nodeValue(2, "Loop exit", self, JUNCTION_CONNECT.input, VALUE_TYPE.node, -1) .setVisible(true, true); + input_display_list = [ + 2, 0, 1 + ] + cache_value = -1; outParent = undefined; output_index = -1; @@ -34,6 +31,10 @@ function Node_Iterator_Output(_x, _y, _group) : Node(_x, _y) constructor { group.sortIO(); } + static initLoop = function() { + cache_value = noone; + } + static createOutput = function(override_order = true) { if(group && is_struct(group)) { if(override_order) { @@ -83,8 +84,9 @@ function Node_Iterator_Output(_x, _y, _group) : Node(_x, _y) constructor { case VALUE_TYPE.surface : if(is_surface(cache_value)) surface_free(cache_value); - if(is_surface(_val_get)) + if(is_surface(_val_get)) cache_value = surface_clone(_val_get); + printIf(global.RENDER_LOG, "LOOP cache result"); break; default : cache_value = _val_get; diff --git a/scripts/node_lerp/node_lerp.gml b/scripts/node_lerp/node_lerp.gml index 8a57c2fab..58b18ec26 100644 --- a/scripts/node_lerp/node_lerp.gml +++ b/scripts/node_lerp/node_lerp.gml @@ -1,9 +1,3 @@ -function Node_create_Lerp(_x, _y) { - var node = new Node_Lerp(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - function Node_Lerp(_x, _y) : Node_Value_Processor(_x, _y) constructor { name = "Lerp"; color = COLORS.node_blend_number; diff --git a/scripts/node_level/node_level.gml b/scripts/node_level/node_level.gml index 5c26c9911..4334f4be8 100644 --- a/scripts/node_level/node_level.gml +++ b/scripts/node_level/node_level.gml @@ -1,10 +1,4 @@ -function Node_create_Level(_x, _y) { - var node = new Node_Level(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Level(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Level(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Level"; uniform_black = shader_get_uniform(sh_level, "black"); diff --git a/scripts/node_level_selector/node_level_selector.gml b/scripts/node_level_selector/node_level_selector.gml index 3b92713ea..94dce2358 100644 --- a/scripts/node_level_selector/node_level_selector.gml +++ b/scripts/node_level_selector/node_level_selector.gml @@ -1,10 +1,4 @@ -function Node_create_Level_Selector(_x, _y) { - var node = new Node_Level_Selector(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Level_Selector(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Level_Selector(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Level Selector"; uniform_middle = shader_get_uniform(sh_level_selector, "middle"); diff --git a/scripts/node_line/node_line.gml b/scripts/node_line/node_line.gml index 2ccc3d9b1..539edab12 100644 --- a/scripts/node_line/node_line.gml +++ b/scripts/node_line/node_line.gml @@ -1,11 +1,4 @@ -function Node_create_Line(_x, _y) { - var node = new Node_Line(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Line(_x, _y) : Node(_x, _y) constructor { - +function Node_Line(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Line"; inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) diff --git a/scripts/node_math/node_math.gml b/scripts/node_math/node_math.gml index f0090aadc..83c311e00 100644 --- a/scripts/node_math/node_math.gml +++ b/scripts/node_math/node_math.gml @@ -17,8 +17,8 @@ enum MATH_OPERATOR { round, } -function Node_create_Math(_x, _y, _param = "") { - var node = new Node_Math(_x, _y); +function Node_create_Math(_x, _y, _group = 1, _param = "") { + var node = new Node_Math(_x, _y, _group); switch(_param) { case "add" : node.inputs[| 0].setValue(MATH_OPERATOR.add); break; @@ -39,11 +39,11 @@ function Node_create_Math(_x, _y, _param = "") { case "round" : node.inputs[| 0].setValue(MATH_OPERATOR.round); break; } - ds_list_add(PANEL_GRAPH.nodes_list, node); + //ds_list_add(PANEL_GRAPH.nodes_list, node); return node; } -function Node_Math(_x, _y) : Node(_x, _y) constructor { +function Node_Math(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Math"; color = COLORS.node_blend_number; previewable = false; diff --git a/scripts/node_mirror/node_mirror.gml b/scripts/node_mirror/node_mirror.gml index 957986467..fc926fede 100644 --- a/scripts/node_mirror/node_mirror.gml +++ b/scripts/node_mirror/node_mirror.gml @@ -1,10 +1,4 @@ -function Node_create_Mirror(_x, _y) { - var node = new Node_Mirror(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Mirror(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Mirror(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Mirror"; uniform_dim = shader_get_uniform(sh_mirror, "dimension"); diff --git a/scripts/node_noise/node_noise.gml b/scripts/node_noise/node_noise.gml index f4574c7ae..ae45c56a7 100644 --- a/scripts/node_noise/node_noise.gml +++ b/scripts/node_noise/node_noise.gml @@ -1,10 +1,4 @@ -function Node_create_Noise(_x, _y) { - var node = new Node_Noise(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Noise(_x, _y) : Node(_x, _y) constructor { +function Node_Noise(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Noise"; shader = sh_noise; diff --git a/scripts/node_noise_ani/node_noise_ani.gml b/scripts/node_noise_ani/node_noise_ani.gml index 093982ef2..494c0a267 100644 --- a/scripts/node_noise_ani/node_noise_ani.gml +++ b/scripts/node_noise_ani/node_noise_ani.gml @@ -1,16 +1,11 @@ -function Node_create_Noise_Aniso(_x, _y) { - var node = new Node_Noise_Aniso(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Noise_Aniso(_x, _y) : Node(_x, _y) constructor { +function Node_Noise_Aniso(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Noise Anisotropic"; shader = sh_ani_noise; uniform_noi = shader_get_uniform(shader, "noiseAmount"); uniform_sed = shader_get_uniform(shader, "seed"); uniform_pos = shader_get_uniform(shader, "position"); + uniform_ang = shader_get_uniform(shader, "angle"); inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) .setDisplay(VALUE_DISPLAY.vector); @@ -23,9 +18,12 @@ function Node_Noise_Aniso(_x, _y) : Node(_x, _y) constructor { inputs[| 3] = nodeValue(3, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) .setDisplay(VALUE_DISPLAY.vector); + inputs[| 4] = nodeValue(4, "Rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) + .setDisplay(VALUE_DISPLAY.rotation); + input_display_list = [ ["Output", false], 0, - ["Noise", false], 2, 1, 3 + ["Noise", false], 2, 1, 3, 4 ]; outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); @@ -39,6 +37,7 @@ function Node_Noise_Aniso(_x, _y) : Node(_x, _y) constructor { var _amo = inputs[| 1].getValue(); var _sed = inputs[| 2].getValue(); var _pos = inputs[| 3].getValue(); + var _ang = inputs[| 4].getValue(); var _outSurf = outputs[| 0].getValue(); if(!is_surface(_outSurf)) { @@ -52,6 +51,7 @@ function Node_Noise_Aniso(_x, _y) : Node(_x, _y) constructor { shader_set_uniform_f_array(uniform_noi, _amo); shader_set_uniform_f(uniform_pos, _pos[0] / _dim[0], _pos[1] / _dim[1]); shader_set_uniform_f(uniform_sed, _sed); + shader_set_uniform_f(uniform_ang, degtorad(_ang)); draw_sprite_ext(s_fx_pixel, 0, 0, 0, _dim[0], _dim[1], 0, c_white, 1); shader_reset(); diff --git a/scripts/node_noise_cell/node_noise_cell.gml b/scripts/node_noise_cell/node_noise_cell.gml index d708dd372..dee6101df 100644 --- a/scripts/node_noise_cell/node_noise_cell.gml +++ b/scripts/node_noise_cell/node_noise_cell.gml @@ -1,10 +1,4 @@ -function Node_create_Cellular(_x, _y) { - var node = new Node_Cellular(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Cellular(_x, _y) : Node(_x, _y) constructor { +function Node_Cellular(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Cellular"; inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) @@ -49,14 +43,14 @@ function Node_Cellular(_x, _y) : Node(_x, _y) constructor { } static update = function() { - var _dim = inputs[| 0].getValue(); - var _pos = inputs[| 1].getValue(); - var _sca = inputs[| 2].getValue(); - var _tim = inputs[| 3].getValue(); + var _dim = inputs[| 0].getValue(); + var _pos = inputs[| 1].getValue(); + var _sca = inputs[| 2].getValue(); + var _tim = inputs[| 3].getValue(); var _type = inputs[| 4].getValue(); - var _con = inputs[| 5].getValue(); - var _pat = inputs[| 6].getValue(); - var _mid = inputs[| 7].getValue(); + var _con = inputs[| 5].getValue(); + var _pat = inputs[| 6].getValue(); + var _mid = inputs[| 7].getValue(); inputs[| 8].setVisible(_pat == 1); inputs[| 9].setVisible(_pat == 1); diff --git a/scripts/node_noise_grid/node_noise_grid.gml b/scripts/node_noise_grid/node_noise_grid.gml index 8d3af1cc1..2ca0ea58e 100644 --- a/scripts/node_noise_grid/node_noise_grid.gml +++ b/scripts/node_noise_grid/node_noise_grid.gml @@ -1,10 +1,4 @@ -function Node_create_Grid_Noise(_x, _y) { - var node = new Node_Grid_Noise(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Grid_Noise(_x, _y) : Node(_x, _y) constructor { +function Node_Grid_Noise(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Grid noise"; shader = sh_grid_noise; diff --git a/scripts/node_normal/node_normal.gml b/scripts/node_normal/node_normal.gml index 0df215e43..ca70a9374 100644 --- a/scripts/node_normal/node_normal.gml +++ b/scripts/node_normal/node_normal.gml @@ -1,10 +1,4 @@ -function Node_create_Normal(_x, _y) { - var node = new Node_Normal(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Normal(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Normal(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Normal"; uniform_dim = shader_get_uniform(sh_normal, "dimension"); diff --git a/scripts/node_normal_light/node_normal_light.gml b/scripts/node_normal_light/node_normal_light.gml index c5ba963ad..1f5722674 100644 --- a/scripts/node_normal_light/node_normal_light.gml +++ b/scripts/node_normal_light/node_normal_light.gml @@ -1,10 +1,4 @@ -function Node_create_Normal_Light(_x, _y) { - var node = new Node_Normal_Light(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Normal_Light(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Normal_Light(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Normal Light"; uniform_map = shader_get_sampler_index(sh_normal_light, "normalMap"); diff --git a/scripts/node_outline/node_outline.gml b/scripts/node_outline/node_outline.gml index 0d9219811..7bbce50aa 100644 --- a/scripts/node_outline/node_outline.gml +++ b/scripts/node_outline/node_outline.gml @@ -1,10 +1,4 @@ -function Node_create_Outline(_x, _y) { - var node = new Node_Outline(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Outline(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Outline(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Outline"; uniform_dim = shader_get_uniform(sh_outline, "dimension"); diff --git a/scripts/node_padding/node_padding.gml b/scripts/node_padding/node_padding.gml index c028c6a4d..1504098bf 100644 --- a/scripts/node_padding/node_padding.gml +++ b/scripts/node_padding/node_padding.gml @@ -1,10 +1,4 @@ -function Node_create_Padding(_x, _y) { - var node = new Node_Padding(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Padding(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Padding(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Padding"; inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); diff --git a/scripts/node_palette/node_palette.gml b/scripts/node_palette/node_palette.gml index 8b1bb94c9..e6be281a5 100644 --- a/scripts/node_palette/node_palette.gml +++ b/scripts/node_palette/node_palette.gml @@ -1,10 +1,4 @@ -function Node_create_Palette(_x, _y) { - var node = new Node_Palette(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Palette(_x, _y) : Node(_x, _y) constructor { +function Node_Palette(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Palette"; previewable = false; diff --git a/scripts/node_particle/node_particle.gml b/scripts/node_particle/node_particle.gml index b2088ffa8..6cb5d8981 100644 --- a/scripts/node_particle/node_particle.gml +++ b/scripts/node_particle/node_particle.gml @@ -1,531 +1,46 @@ -function Node_create_Particle(_x, _y) { - var node = new Node_Particle(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -enum ANIM_END_ACTION { - loop, - pingpong, - destroy, -} - -function __part() constructor { - seed = irandom(99999); - active = false; - surf = noone; - x = 0; - y = 0; - sx = 0; - sy = 0; - ac = 0; - g = 0; - wig = 0; - - boundary_data = -1; - - fx = 0; - fy = 0; - - gy = 0; - - scx = 1; - scy = 1; - scx_s = 1; - scy_s = 1; - - rot = 0; - follow = false; - rot_s = 0; - - col = -1; - alp = 1; - alp_draw = alp; - alp_fade = 0; - - life = 0; - life_total = 0; - - anim_speed = 1; - anim_end = ANIM_END_ACTION.loop; - - function create(_surf, _x, _y, _life) { - active = true; - surf = _surf; - x = _x; - y = _y; - gy = 0; - - life = _life; - life_total = life; - } - - function setPhysic(_sx, _sy, _ac, _g, _wig) { - sx = _sx; - sy = _sy; - ac = _ac; - g = _g; - - wig = _wig; - } - function setTransform(_scx, _scy, _scxs, _scys, _rot, _rots, _follow) { - scx = _scx; - scy = _scy; - scx_s = _scxs; - scy_s = _scys; - rot = _rot; - rot_s = _rots; - follow = _follow; - } - function setDraw(_col, _alp, _fade) { - col = _col; - alp = _alp; - alp_draw = _alp; - alp_fade = _fade; - } - - function kill() { - active = false; - } - - static step = function() { - if(!active) return; - var xp = x, yp = y; - x += sx; - y += sy; - - var dirr = point_direction(0, 0, sx, sy); - var diss = point_distance(0, 0, sx, sy); - if(diss > 0) { - diss += ac; - dirr += random_range(-wig, wig); - sx = lengthdir_x(diss, dirr); - sy = lengthdir_y(diss, dirr); - } - - gy += g; - y += gy; - - if(scx_s < 0) scx = max(scx + scx_s, 0); - else scx = scx + scx_s; - if(scy_s < 0) scy = max(scy + scy_s, 0); - else scy = scy + scy_s; - - if(follow) - rot = point_direction(xp, yp, x, y); - else - rot += rot_s; - alp_draw = alp * eval_bezier_cubic(1 - life / life_total, alp_fade[0], alp_fade[1], alp_fade[2], alp_fade[3]); - - if(life-- < 0) kill(); - } - - function draw(exact) { - if(!active) return; - var ss = surf; - if(is_array(surf)) { - var ind = abs(round((life_total - life) * anim_speed)); - var len = array_length(surf); - - switch(anim_end) { - case ANIM_END_ACTION.loop: - ss = surf[safe_mod(ind, len)]; - break; - case ANIM_END_ACTION.pingpong: - var ping = safe_mod(ind, (len - 1) * 2 + 1); - ss = surf[ping >= len? (len - 1) * 2 - ping : ping]; - break; - case ANIM_END_ACTION.destroy: - if(ind >= len) return; - else ss = surf[ind]; - break; - } - } - if(!is_surface(ss)) return; - - var cc = (col == -1)? c_white : gradient_eval(col, 1 - life / life_total); - var _xx, _yy; - var s_w = surface_get_width(ss) * scx; - var s_h = surface_get_height(ss) * scy; - - if(boundary_data == -1) { - var _pp = point_rotate(-s_w / 2, -s_h / 2, 0, 0, rot); - _xx = x + _pp[0]; - _yy = y + _pp[1]; - } else { - var ww = boundary_data[2] + boundary_data[0]; - var hh = boundary_data[3] + boundary_data[1]; - - var cx = (boundary_data[0] + boundary_data[2]) / 2; - var cy = (boundary_data[1] + boundary_data[3]) / 2; - - var _pp = point_rotate(-cx, -cy, 0, 0, rot); - - _xx = x + cx + _pp[0] * scx; - _yy = y + cy + _pp[1] * scy; - } - - if(exact) { - _xx = round(_xx); - _yy = round(_yy); - } - - draw_surface_ext_safe(ss, _xx, _yy, scx, scy, rot, cc, alp_draw); - } - - function getPivot() { - if(boundary_data == -1) - return [x, y]; - - var ww = (boundary_data[2] - boundary_data[0]) * scx; - var hh = (boundary_data[3] - boundary_data[1]) * scy; - var cx = x + boundary_data[0] + ww / 2; - var cy = y + boundary_data[1] + hh / 2; - - return [cx, cy]; - } -} - -enum PARTICLE_BLEND_MODE { - normal, - additive -} - -function Node_Particle(_x, _y) : Node(_x, _y) constructor { +function Node_Particle(_x, _y, _group = -1) : Node_VFX_Spawner(_x, _y, _group) constructor { name = "Particle"; auto_update = false; use_cache = true; - inputs[| 0] = nodeValue(0, "Particle sprite", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0) - .setDisplay(noone, "particles"); - - inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) + input_len = ds_list_size(inputs); + inputs[| input_len + 0] = nodeValue(input_len + 0, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) .setDisplay(VALUE_DISPLAY.vector); - - inputs[| 2] = nodeValue(2, "Spawn delay", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4); - inputs[| 3] = nodeValue(3, "Spawn amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 2); - inputs[| 4] = nodeValue(4, "Spawn area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, AREA_SHAPE.rectangle ]) - .setDisplay(VALUE_DISPLAY.area, function() { return inputs[| 1].getValue(); }); - - inputs[| 5] = nodeValue(5, "Spawn distribution", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) - .setDisplay(VALUE_DISPLAY.enum_button, [ "Area", "Border" ]); - - inputs[| 6] = nodeValue(6, "Lifespan", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 20, 30 ]) - .setDisplay(VALUE_DISPLAY.range); - - inputs[| 7] = nodeValue(7, "Spawn direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 45, 135 ]) - .setDisplay(VALUE_DISPLAY.rotation_range); - inputs[| 8] = nodeValue(8, "Acceleration", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) - .setDisplay(VALUE_DISPLAY.range); - - inputs[| 9] = nodeValue(9, "Orientation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [0, 0]) - .setDisplay(VALUE_DISPLAY.rotation_range); - inputs[| 10] = nodeValue(10, "Rotational speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) - .setDisplay(VALUE_DISPLAY.range); + inputs[| input_len + 1] = nodeValue(input_len + 1, "Round position", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true ); - inputs[| 11] = nodeValue(11, "Spawn scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1, 1 ] ) - .setDisplay(VALUE_DISPLAY.vector_range); - inputs[| 12] = nodeValue(12, "Scaling speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] ) - .setDisplay(VALUE_DISPLAY.vector); - - inputs[| 13] = nodeValue(13, "Color over lifetime", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white) - .setDisplay(VALUE_DISPLAY.gradient); - inputs[| 14] = nodeValue(14, "Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ]) - .setDisplay(VALUE_DISPLAY.range); - inputs[| 15] = nodeValue(15, "Alpha over time", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, [1, 1, 1, 1]); - - inputs[| 16] = nodeValue(16, "Rotate by direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); - - inputs[| 17] = nodeValue(17, "Spawn type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) - .setDisplay(VALUE_DISPLAY.enum_button, [ "Stream", "Burst" ]); - - inputs[| 18] = nodeValue(18, "Spawn size", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ] ) - .setDisplay(VALUE_DISPLAY.range); - - inputs[| 19] = nodeValue(19, "Draw exact", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true ); - - inputs[| 20] = nodeValue(20, "Spawn velocity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [1, 2] ) - .setDisplay(VALUE_DISPLAY.range); - - inputs[| 21] = nodeValue(21, "Gravity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 ); - inputs[| 22] = nodeValue(22, "Wiggle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 ); - - inputs[| 23] = nodeValue(23, "Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true ); - - inputs[| 24] = nodeValue(24, "Blend mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + inputs[| input_len + 2] = nodeValue(input_len + 2, "Blend mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Normal", "Additive" ]); - inputs[| 25] = nodeValue(25, "Surface array", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) - .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Random", "Order", "Animation" ]) - .setVisible(false); - - inputs[| 26] = nodeValue(26, "Animation speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 ) - .setVisible(false); - - inputs[| 27] = nodeValue(27, "Scatter", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1) - .setDisplay(VALUE_DISPLAY.enum_button, [ "Uniform", "Random", "Data" ]); - - inputs[| 28] = nodeValue(28, "Boundary data", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, []) - .setVisible(false, true); - - inputs[| 29] = nodeValue(29, "On animation end", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, ANIM_END_ACTION.loop) - .setDisplay(VALUE_DISPLAY.enum_button, [ "Loop", "Ping pong", "Destroy" ]) - .setVisible(false); - - input_display_list = [ - ["Output", true], 1, - ["Sprite", false], 0, 25, 26, 29, - ["Spawn", true], 17, 2, 3, 4, 5, 27, 28, 6, - ["Movement", true], 7, 20, 8, - ["Physics", true], 21, 22, - ["Rotation", true], 16, 9, 10, - ["Scale", true], 11, 18, 12, - ["Color", true], 13, 14, 15, - ["Render", true], 24, 19, 23 - ]; - outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); - seed_origin = irandom(9999999); - seed = seed_origin; + array_insert(input_display_list, 0, ["Output", true], input_len + 0); + array_push(input_display_list, input_len + 1, input_len + 2); + def_surface = -1; - parts = ds_list_create(); - for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) - ds_list_add(parts, new __part()); - - outputs[| 1] = nodeValue(1, "Particle data", self, JUNCTION_CONNECT.output, VALUE_TYPE.object, parts ); - - static spawn = function(_time = ANIMATOR.current_frame) { - random_set_seed(seed++); + static onStep = function() { + if(!ANIMATOR.frame_progress) return; - var _inSurf = inputs[| 0].getValue(_time); - - if(_inSurf == 0) { - if(def_surface == -1 || !surface_exists(def_surface)) { - def_surface = PIXEL_SURFACE; - surface_set_target(def_surface); - draw_clear(c_white); - surface_reset_target(); - } - _inSurf = def_surface; + if(recoverCache()) { + triggerRender(); + return; } - var _spawn_amount = inputs[| 3].getValue(_time); - var _amo = _spawn_amount; - - var _spawn_area = inputs[| 4].getValue(_time); - var _distrib = inputs[| 5].getValue(_time); - var _scatter = inputs[| 27].getValue(_time); - - var _life = inputs[| 6].getValue(_time); - var _direction = inputs[| 7].getValue(_time); - var _velocity = inputs[| 20].getValue(_time); - - var _accel = inputs[| 8].getValue(_time); - var _grav = inputs[| 21].getValue(_time); - var _wigg = inputs[| 22].getValue(_time); - - var _follow = inputs[| 16].getValue(_time); - var _rotation = inputs[| 9].getValue(_time); - var _rotation_speed = inputs[| 10].getValue(_time); - var _scale = inputs[| 11].getValue(_time); - var _size = inputs[| 18].getValue(_time); - var _scale_speed = inputs[| 12].getValue(_time); - - var _loop = inputs[| 23].getValue(_time); - - var _color = inputs[| 13].getValue(_time); - var _alpha = inputs[| 14].getValue(_time); - var _fade = inputs[| 15].getValue(_time); - - var _arr_type = inputs[| 25].getValue(_time); - var _anim_speed = inputs[| 26].getValue(_time); - var _anim_end = inputs[| 29].getValue(_time); - - if(_rotation[1] < _rotation[0]) _rotation[1] += 360; - - for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) { - if(!parts[| i].active) { - var _spr = _inSurf, _index = 0; - if(is_array(_inSurf)) { - if(_arr_type == 0) { - _index = irandom(array_length(_inSurf) - 1); - _spr = _inSurf[_index]; - } else if(_arr_type == 1) { - _index = safe_mod(spawn_index, array_length(_inSurf)); - _spr = _inSurf[_index]; - } else if(_arr_type == 2) - _spr = _inSurf; - } - var xx = 0; - var yy = 0; - - if(_scatter == 2) { - var _b_data = inputs[| 28].getValue(_time); - if(!is_array(_b_data) || array_length(_b_data) <= 0) return; - var _b = _b_data[safe_mod(_index, array_length(_b_data))]; - if(!is_array(_b) || array_length(_b) != 4) return; - - xx = array_safe_get(_spawn_area, 0) - array_safe_get(_spawn_area, 2); - yy = array_safe_get(_spawn_area, 1) - array_safe_get(_spawn_area, 3); - - parts[| i].boundary_data = _b; - } else { - var sp = area_get_random_point(_spawn_area, _distrib, _scatter, spawn_index, _spawn_amount); - xx = sp[0]; - yy = sp[1]; - - parts[| i].boundary_data = -1; - } - - var _lif = random_range(_life[0], _life[1]); - - var _rot = random_range(_rotation[0], _rotation[1]); - var _rot_spd = random_range(_rotation_speed[0], _rotation_speed[1]); - - var _dirr = random_range(_direction[0], _direction[1]); - - var _velo = random_range(_velocity[0], _velocity[1]); - var _vx = lengthdir_x(_velo, _dirr); - var _vy = lengthdir_y(_velo, _dirr); - var _acc = random_range(_accel[0], _accel[1]); - - var _ss = random_range(_size[0], _size[1]); - var _scx = random_range(_scale[0], _scale[1]) * _ss; - var _scy = random_range(_scale[2], _scale[3]) * _ss; - - var _alp = random_range(_alpha[0], _alpha[1]); - - parts[| i].create(_spr, xx, yy, _lif); - parts[| i].anim_speed = _anim_speed; - parts[| i].anim_end = _anim_end; - - parts[| i].setPhysic(_vx, _vy, _acc, _grav, _wigg); - parts[| i].setTransform(_scx, _scy, _scale_speed[0], _scale_speed[1], _rot, _rot_spd, _follow); - parts[| i].setDraw(_color, _alp, _fade); - spawn_index = safe_mod(spawn_index + 1, PREF_MAP[? "part_max_amount"]); - - if(--_amo <= 0) - return; - } - } - } - - function reset() { - spawn_index = 0; - for(var i = 0; i < PREF_MAP[? "part_max_amount"]; i++) { - parts[| i].kill(); - } - render(); - seed = seed_origin; - - var _loop = inputs[| 23].getValue(); - if(!_loop) return; - - for(var i = 0; i < ANIMATOR.frames_total; i++) - runFrame(i); - - seed = seed_origin; - } - - function updateParticle(_time = ANIMATOR.current_frame) { - var jun = outputs[| 1]; - for(var j = 0; j < ds_list_size(jun.value_to); j++) { - if(jun.value_to[| j].value_from == jun) - jun.value_to[| j].node.doUpdate(); - } - - render(_time); - } - - function checkPartPool() { - var _part_amo = PREF_MAP[? "part_max_amount"]; - var _curr_amo = ds_list_size(parts); - - if(_part_amo > _curr_amo) { - repeat(_part_amo - _curr_amo) - ds_list_add(parts, new __part()); - } else if(_part_amo < _curr_amo) { - repeat(_curr_amo - _part_amo) - ds_list_delete(parts, 0); - } - } - - static runFrame = function(_time = ANIMATOR.current_frame) { - var _spawn_delay = inputs[| 2].getValue(_time); - var _spawn_type = inputs[| 17].getValue(_time); - - switch(_spawn_type) { - case 0 : - if(safe_mod(_time, _spawn_delay) == 0) - spawn(_time); - break; - case 1 : - if(_time == _spawn_delay) - spawn(_time); - break; - } + if(!ANIMATOR.is_playing) return; - for(var i = 0; i < ds_list_size(parts); i++) - parts[| i].step(); - updateParticle(_time); - triggerRender(); - } - - static step = function() { - var _inSurf = inputs[| 0].getValue(); - var _scatt = inputs[| 27].getValue(); - var _loop = inputs[| 23].getValue(); - - inputs[| 25].setVisible(false); - inputs[| 26].setVisible(false); - inputs[| 28].setVisible(_scatt == 2); - - if(is_array(_inSurf)) { - inputs[| 25].setVisible(true); - var _type = inputs[| 25].getValue(); - if(_type == 2) { - inputs[| 26].setVisible(true); - inputs[| 29].setVisible(true); - } - } - - checkPartPool(); - var _spawn_type = inputs[| 17].getValue(); - if(_spawn_type == 0) inputs[| 2].name = "Spawn delay"; - else inputs[| 2].name = "Spawn frame"; - - if(ANIMATOR.frame_progress) { - if(recoverCache()) { - triggerRender(); - return; - } - - if(!ANIMATOR.is_playing) return; - - if(ANIMATOR.current_frame == 0) { - reset(); - runFrame(ANIMATOR.current_frame); - } else if(cached_output[ANIMATOR.current_frame - 1] != 0) { - runFrame(ANIMATOR.current_frame); - } + if(ANIMATOR.current_frame == 0) { + reset(); + runFrame(ANIMATOR.current_frame); + } else if(cached_output[ANIMATOR.current_frame - 1] != 0) { + runFrame(ANIMATOR.current_frame); } } - static drawOverlay = function(active, _x, _y, _s, _mx, _my) { - inputs[| 4].drawOverlay(active, _x, _y, _s, _mx, _my); - if(onDrawOverlay != -1) - onDrawOverlay(active, _x, _y, _s, _mx, _my); - } - - static onDrawOverlay = -1; - function render(_time = ANIMATOR.current_frame) { - var _dim = inputs[| 1].getValue(_time); - var _exact = inputs[| 19].getValue(_time); - var _blend = inputs[| 24].getValue(_time); + var _dim = inputs[| input_len + 0].getValue(_time); + var _exact = inputs[| input_len + 1].getValue(_time); + var _blend = inputs[| input_len + 2].getValue(_time); var _outSurf = outputs[| 0].getValue(); @@ -552,10 +67,4 @@ function Node_Particle(_x, _y) : Node(_x, _y) constructor { cacheCurrentFrame(_outSurf); } - - static update = function() { - reset(); - } - doUpdate(); - render(); } \ No newline at end of file diff --git a/scripts/node_path/node_path.gml b/scripts/node_path/node_path.gml index 4c80718ff..f64c58ed8 100644 --- a/scripts/node_path/node_path.gml +++ b/scripts/node_path/node_path.gml @@ -1,10 +1,4 @@ -function Node_create_Path(_x, _y) { - var node = new Node_Path(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Path(_x, _y) : Node(_x, _y) constructor { +function Node_Path(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Path"; previewable = false; diff --git a/scripts/node_perlin/node_perlin.gml b/scripts/node_perlin/node_perlin.gml index a61786065..80ee1e21f 100644 --- a/scripts/node_perlin/node_perlin.gml +++ b/scripts/node_perlin/node_perlin.gml @@ -1,10 +1,4 @@ -function Node_create_Perlin(_x, _y) { - var node = new Node_Perlin(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Perlin(_x, _y) : Node(_x, _y) constructor { +function Node_Perlin(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Perlin"; shader = sh_perlin_tiled; diff --git a/scripts/node_perlin_smear/node_perlin_smear.gml b/scripts/node_perlin_smear/node_perlin_smear.gml index fe46f598b..4760b4e7d 100644 --- a/scripts/node_perlin_smear/node_perlin_smear.gml +++ b/scripts/node_perlin_smear/node_perlin_smear.gml @@ -1,10 +1,4 @@ -function Node_create_Perlin_Smear(_x, _y) { - var node = new Node_Perlin_Smear(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Perlin_Smear(_x, _y) : Node(_x, _y) constructor { +function Node_Perlin_Smear(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Smear noise"; shader = sh_perlin_smear; diff --git a/scripts/node_pin/node_pin.gml b/scripts/node_pin/node_pin.gml index bcc9066f1..905125c35 100644 --- a/scripts/node_pin/node_pin.gml +++ b/scripts/node_pin/node_pin.gml @@ -1,10 +1,4 @@ -function Node_create_Pin(_x, _y) { - var node = new Node_Pin(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Pin(_x, _y) : Node(_x, _y) constructor { +function Node_Pin(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = ""; w = 32; h = 32; diff --git a/scripts/node_pixel_cloud/node_pixel_cloud.gml b/scripts/node_pixel_cloud/node_pixel_cloud.gml index ff0758c27..468981c8f 100644 --- a/scripts/node_pixel_cloud/node_pixel_cloud.gml +++ b/scripts/node_pixel_cloud/node_pixel_cloud.gml @@ -1,10 +1,4 @@ -function Node_create_Pixel_Cloud(_x, _y) { - var node = new Node_Pixel_Cloud(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Pixel_Cloud(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Pixel_Cloud(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Pixel Cloud"; uniform_sed = shader_get_uniform(sh_pixel_cloud, "seed"); diff --git a/scripts/node_polar/node_polar.gml b/scripts/node_polar/node_polar.gml index 7c81717eb..6af7abf2e 100644 --- a/scripts/node_polar/node_polar.gml +++ b/scripts/node_polar/node_polar.gml @@ -1,10 +1,4 @@ -function Node_create_Polar(_x, _y) { - var node = new Node_Polar(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Polar(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Polar(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Polar"; inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); diff --git a/scripts/node_posterize/node_posterize.gml b/scripts/node_posterize/node_posterize.gml index d68031134..6aa015247 100644 --- a/scripts/node_posterize/node_posterize.gml +++ b/scripts/node_posterize/node_posterize.gml @@ -1,10 +1,4 @@ -function Node_create_Posterize(_x, _y) { - var node = new Node_Posterize(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Posterize(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Posterize(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Posterize"; uniform_colors = shader_get_uniform(sh_posterize, "colors"); diff --git a/scripts/node_processor/node_processor.gml b/scripts/node_processor/node_processor.gml index 73c48e57a..211d76178 100644 --- a/scripts/node_processor/node_processor.gml +++ b/scripts/node_processor/node_processor.gml @@ -3,7 +3,7 @@ enum ARRAY_PROCESS { hold } -function Node_Processor(_x, _y) : Node(_x, _y) constructor { +function Node_Processor(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { array_process = ARRAY_PROCESS.loop; current_data = []; diff --git a/scripts/node_processor/node_processor.yy b/scripts/node_processor/node_processor.yy index d68206625..d0ce8298c 100644 --- a/scripts/node_processor/node_processor.yy +++ b/scripts/node_processor/node_processor.yy @@ -5,7 +5,7 @@ "isDnD": false, "isCompatibility": false, "parent": { - "name": "filter", - "path": "folders/nodes/data/filter.yy", + "name": "__base__", + "path": "folders/nodes/data/__base__.yy", }, } \ No newline at end of file diff --git a/scripts/node_registry/node_registry.gml b/scripts/node_registry/node_registry.gml index f948bb66f..a5afbf9f6 100644 --- a/scripts/node_registry/node_registry.gml +++ b/scripts/node_registry/node_registry.gml @@ -6,7 +6,8 @@ function NodeObject(_name, _spr, _create, tags = []) constructor { self.tags = tags; function build(_x, _y, _param = "") { - var _node = createNode(_x, _y, _param); + var group = PANEL_GRAPH.getCurrentContext(); + var _node = createNode[0]? new createNode[1](_x, _y, group, _param) : createNode[1](_x, _y, group, _param); return _node; } } @@ -40,173 +41,188 @@ function NodeObject(_name, _spr, _create, tags = []) constructor { return noone; } - function nodeBuild(_name, _x, _y) { - var _node = nodeFind(_name).build(_x, _y); + function nodeBuild(_name, _x, _y, _group = PANEL_GRAPH.getCurrentContext()) { + var funs = NODE_CREATE_FUCTION[? _name]; + var _node = funs[0]? new funs[1](_x, _y, _group) : funs[1](_x, _y, _group); if(!_node) return noone; - PANEL_GRAPH.node_focus = _node; + //PANEL_GRAPH.node_focus = _node; return _node; } var group = ds_list_create(); addNodeCatagory("Group", group); - addNodeObject(group, "Input", s_node_input, "Node_Group_Input", Node_create_Group_Input); - addNodeObject(group, "Output", s_node_output, "Node_Group_Output", Node_create_Group_Output); + addNodeObject(group, "Input", s_node_input, "Node_Group_Input", [1, Node_Group_Input]); + addNodeObject(group, "Output", s_node_output, "Node_Group_Output", [1, Node_Group_Output]); var iter = ds_list_create(); addNodeCatagory("Loop", iter); - addNodeObject(iter, "Index", s_node_iterator_index, "Node_Iterator_Index", Node_create_Iterator_Index); - addNodeObject(iter, "Input", s_node_input, "Node_Iterator_Input", Node_create_Iterator_Input); - addNodeObject(iter, "Output", s_node_output, "Node_Iterator_Output", Node_create_Iterator_Output); + addNodeObject(iter, "Index", s_node_iterator_index, "Node_Iterator_Index", [1, Node_Iterator_Index]); + addNodeObject(iter, "Input", s_node_input, "Node_Iterator_Input", [1, Node_Iterator_Input]); + addNodeObject(iter, "Output", s_node_output, "Node_Iterator_Output", [1, Node_Iterator_Output]); + + var vfx = ds_list_create(); + addNodeCatagory("VFX", vfx); + addNodeObject(vfx, "Input", s_node_input, "Node_Group_Input", [1, Node_Group_Input]); + addNodeObject(vfx, "Spawner", s_node_vfx_spawn, "Node_VFX_Spawner", [1, Node_VFX_Spawner]); + addNodeObject(vfx, "Renderer", s_node_vfx_render, "Node_VFX_Renderer", [1, Node_VFX_Renderer]); + addNodeObject(vfx, "Accelerate", s_node_vfx_accel, "Node_VFX_Accelerate", [1, Node_VFX_Accelerate]); + addNodeObject(vfx, "Destroy", s_node_vfx_destroy, "Node_VFX_Destroy", [1, Node_VFX_Destroy]); + addNodeObject(vfx, "Attract", s_node_vfx_attract, "Node_VFX_Attract", [1, Node_VFX_Attract]); + addNodeObject(vfx, "Wind", s_node_vfx_wind, "Node_VFX_Wind", [1, Node_VFX_Wind]); + addNodeObject(vfx, "Vortex", s_node_vfx_vortex, "Node_VFX_Vortex", [1, Node_VFX_Vortex]); + addNodeObject(vfx, "Turbulence", s_node_vfx_turb, "Node_VFX_Turbulence", [1, Node_VFX_Turbulence]); + addNodeObject(vfx, "Repel", s_node_vfx_repel, "Node_VFX_Repel", [1, Node_VFX_Repel]); var input = ds_list_create(); addNodeCatagory("Input", input); - addNodeObject(input, "Canvas", s_node_canvas, "Node_Canvas", Node_create_Canvas, ["draw"]); - addNodeObject(input, "Image", s_node_image, "Node_Image", Node_create_Image); - addNodeObject(input, "Image gif", s_node_image_gif, "Node_Image_gif", Node_create_Image_gif); - addNodeObject(input, "Splice spritesheet", s_node_image_sheet, "Node_Image_Sheet", Node_create_Image_Sheet); - addNodeObject(input, "Image array", s_node_image_sequence, "Node_Image_Sequence", Node_create_Image_Sequence); - addNodeObject(input, "Animation", s_node_image_animation, "Node_Image_Animated", Node_create_Image_Animated); - addNodeObject(input, "Array to anim", s_node_image_sequence_to_anim, "Node_Sequence_Anim", Node_create_Sequence_Anim); + addNodeObject(input, "Canvas", s_node_canvas, "Node_Canvas", [1, Node_Canvas], ["draw"]); + addNodeObject(input, "Image", s_node_image, "Node_Image", [0, Node_create_Image]); + addNodeObject(input, "Image gif", s_node_image_gif, "Node_Image_gif", [0, Node_create_Image_gif]); + addNodeObject(input, "Splice spritesheet", s_node_image_sheet, "Node_Image_Sheet", [1, Node_Image_Sheet]); + addNodeObject(input, "Image array", s_node_image_sequence, "Node_Image_Sequence", [0, Node_create_Image_Sequence]); + addNodeObject(input, "Animation", s_node_image_animation, "Node_Image_Animated", [0, Node_create_Image_Animated]); + addNodeObject(input, "Array to anim", s_node_image_sequence_to_anim, "Node_Sequence_Anim", [1, Node_Sequence_Anim]); var transform = ds_list_create(); addNodeCatagory("Transform", transform); - addNodeObject(transform, "Transform", s_node_transform, "Node_Transform", Node_create_Transform); - addNodeObject(transform, "Scale", s_node_scale, "Node_Scale", Node_create_Scale, ["resize"]); - addNodeObject(transform, "Crop", s_node_crop, "Node_Crop", Node_create_Crop); - addNodeObject(transform, "Mirror", s_node_mirror, "Node_Mirror", Node_create_Mirror); - addNodeObject(transform, "Warp", s_node_warp, "Node_Warp", Node_create_Warp, ["wrap"]); - addNodeObject(transform, "Mesh warp", s_node_warp_mesh, "Node_Mesh_Warp", Node_create_Mesh_Warp, ["mesh wrap"]); - addNodeObject(transform, "Compose", s_node_compose, "Node_Composite", Node_create_Composite, ["merge"]); - addNodeObject(transform, "Polar", s_node_polar, "Node_Polar", Node_create_Polar); - addNodeObject(transform, "Nine slice", s_node_9patch, "Node_9Slice", Node_create_9Slice, ["9", "splice"]); - addNodeObject(transform, "Padding", s_node_padding, "Node_Padding", Node_create_Padding); - addNodeObject(transform, "Area wrap", s_node_padding, "Node_Wrap_Area", Node_create_Wrap_Area); + addNodeObject(transform, "Transform", s_node_transform, "Node_Transform", [1, Node_Transform]); + addNodeObject(transform, "Scale", s_node_scale, "Node_Scale", [1, Node_Scale], ["resize"]); + addNodeObject(transform, "Crop", s_node_crop, "Node_Crop", [1, Node_Crop]); + addNodeObject(transform, "Mirror", s_node_mirror, "Node_Mirror", [1, Node_Mirror]); + addNodeObject(transform, "Warp", s_node_warp, "Node_Warp", [1, Node_Warp], ["wrap"]); + addNodeObject(transform, "Mesh warp", s_node_warp_mesh, "Node_Mesh_Warp", [1, Node_Mesh_Warp], ["mesh wrap"]); + addNodeObject(transform, "Compose", s_node_compose, "Node_Composite", [1, Node_Composite], ["merge"]); + addNodeObject(transform, "Polar", s_node_polar, "Node_Polar", [1, Node_Polar]); + addNodeObject(transform, "Nine slice", s_node_9patch, "Node_9Slice", [1, Node_9Slice], ["9", "splice"]); + addNodeObject(transform, "Padding", s_node_padding, "Node_Padding", [1, Node_Padding]); + addNodeObject(transform, "Area wrap", s_node_padding, "Node_Wrap_Area", [1, Node_Wrap_Area]); var filter = ds_list_create(); addNodeCatagory("Filter", filter); - addNodeObject(filter, "Blend", s_node_blend, "Node_Blend", Node_create_Blend, ["normal", "add", "subtract", "multiply", "screen", "maxx", "minn"]); - addNodeObject(filter, "Outline", s_node_border, "Node_Outline", Node_create_Outline, ["border"]); - addNodeObject(filter, "Erode", s_node_erode, "Node_Erode", Node_create_Erode); - addNodeObject(filter, "Trail", s_node_trail, "Node_Trail", Node_create_Trail); - addNodeObject(filter, "Blur", s_node_blur, "Node_Blur", Node_create_Blur, ["gaussian"]); - addNodeObject(filter, "Directional Blur", s_node_blur_directional,"Node_Blur_Directional",Node_create_Blur_Directional); - addNodeObject(filter, "Radial Blur", s_node_blur, "Node_Blur_Radial", Node_create_Blur_Radial); - addNodeObject(filter, "Contrast Blur", s_node_blur_contrast, "Node_Blur_Contrast", Node_create_Blur_Contrast); - addNodeObject(filter, "Twirl", s_node_twirl, "Node_Twirl", Node_create_Twirl, ["twist"]); - addNodeObject(filter, "Dilate", s_node_dilate, "Node_Dilate", Node_create_Dilate, ["inflate"]); - addNodeObject(filter, "Glow", s_node_glow, "Node_Glow", Node_create_Glow); - addNodeObject(filter, "Shadow", s_node_shadow, "Node_Shadow", Node_create_Shadow); - addNodeObject(filter, "Bloom", s_node_bloom, "Node_Bloom", Node_create_Bloom); - addNodeObject(filter, "Replace color", s_node_color_replace, "Node_Color_replace", Node_create_Color_replace, ["isolate color", "select color"]); - addNodeObject(filter, "Remove color", s_node_color_remove, "Node_Color_Remove", Node_create_Color_Remove, ["delete color"]); - addNodeObject(filter, "Colorize", s_node_colorize, "Node_Colorize", Node_create_Colorize, ["recolor"]); - addNodeObject(filter, "Posterize", s_node_posterize, "Node_Posterize", Node_create_Posterize); - addNodeObject(filter, "Dither", s_node_dithering, "Node_Dither", Node_create_Dither); - addNodeObject(filter, "Adjust color", s_node_color_adjust, "Node_Color_adjust", Node_create_Color_adjust, ["brightness", "contrast", "hue", "saturation", "value", "color blend", "alpha"]); - addNodeObject(filter, "BW", s_node_BW, "Node_BW", Node_create_BW, ["black and white"]); - addNodeObject(filter, "Greyscale", s_node_greyscale, "Node_Greyscale", Node_create_Greyscale); - addNodeObject(filter, "Invert", s_node_invert, "Node_Invert", Node_create_Invert, ["negate"]); - addNodeObject(filter, "RGB Channels", s_node_RGB, "Node_RGB_Channel", Node_create_RGB_Channel, ["channel extract"]); - addNodeObject(filter, "Level", s_node_level, "Node_Level", Node_create_Level); - addNodeObject(filter, "Level selector", s_node_level_selector, "Node_Level_Selector", Node_create_Level_Selector); - addNodeObject(filter, "Displace", s_node_displace, "Node_Displace", Node_create_Displace); - addNodeObject(filter, "Alpha to grey", s_node_alpha_grey, "Node_Alpha_Grey", Node_create_Alpha_Grey); - addNodeObject(filter, "Alpha cutoff", s_node_alpha_cut, "Node_Alpha_Cutoff", Node_create_Alpha_Cutoff, ["remove alpha"]); - addNodeObject(filter, "Grey to alpha", s_node_grey_alpha, "Node_Grey_Alpha", Node_create_Grey_Alpha); - addNodeObject(filter, "De-corner", s_node_decorner, "Node_De_Corner", Node_create_De_Corner, ["decorner"]); - addNodeObject(filter, "De-stray", s_node_destray, "Node_De_Stray", Node_create_De_Stray, ["destray"]); - addNodeObject(filter, "Texture remap", s_node_texture_map, "Node_Texture_Remap", Node_create_Texture_Remap); - addNodeObject(filter, "Time remap", s_node_time_map, "Node_Time_Remap", Node_create_Time_Remap); - addNodeObject(filter, "2D light", s_node_2d_light, "Node_2D_light", Node_create_2D_light); - addNodeObject(filter, "Atlas", s_node_atlas, "Node_Atlas", Node_create_Atlas); - addNodeObject(filter, "Scale algorithm", s_node_scale_algo, "Node_Scale_Algo", Node_create_Scale_Algo, ["scale2x", "scale3x"]); - addNodeObject(filter, "Pixel cloud", s_node_pixel_cloud, "Node_Pixel_Cloud", Node_create_Pixel_Cloud); - addNodeObject(filter, "Edge detect", s_node_edge_detect, "Node_Edge_Detect", Node_create_Edge_Detect); - addNodeObject(filter, "Chromatic aberration", s_node_chromatic_abarration, "Node_Chromatic_Aberration", Node_create_Chromatic_Aberration); - //addNodeObject(filter, "Corner", s_node_corner, "Node_Corner", Node_create_Corner); + addNodeObject(filter, "Blend", s_node_blend, "Node_Blend", [0, Node_create_Blend], ["normal", "add", "subtract", "multiply", "screen", "maxx", "minn"]); + addNodeObject(filter, "Outline", s_node_border, "Node_Outline", [1, Node_Outline], ["border"]); + addNodeObject(filter, "Erode", s_node_erode, "Node_Erode", [1, Node_Erode]); + addNodeObject(filter, "Trail", s_node_trail, "Node_Trail", [1, Node_Trail]); + addNodeObject(filter, "Blur", s_node_blur, "Node_Blur", [1, Node_Blur], ["gaussian"]); + addNodeObject(filter, "Directional Blur", s_node_blur_directional,"Node_Blur_Directional",[1, Node_Blur_Directional]); + addNodeObject(filter, "Radial Blur", s_node_blur, "Node_Blur_Radial", [1, Node_Blur_Radial]); + addNodeObject(filter, "Contrast Blur", s_node_blur_contrast, "Node_Blur_Contrast", [1, Node_Blur_Contrast]); + addNodeObject(filter, "Twirl", s_node_twirl, "Node_Twirl", [1, Node_Twirl], ["twist"]); + addNodeObject(filter, "Dilate", s_node_dilate, "Node_Dilate", [1, Node_Dilate], ["inflate"]); + addNodeObject(filter, "Glow", s_node_glow, "Node_Glow", [1, Node_Glow]); + addNodeObject(filter, "Shadow", s_node_shadow, "Node_Shadow", [1, Node_Shadow]); + addNodeObject(filter, "Bloom", s_node_bloom, "Node_Bloom", [1, Node_Bloom]); + addNodeObject(filter, "Replace color", s_node_color_replace, "Node_Color_replace", [1, Node_Color_replace], ["isolate color", "select color"]); + addNodeObject(filter, "Remove color", s_node_color_remove, "Node_Color_Remove", [1, Node_Color_Remove], ["delete color"]); + addNodeObject(filter, "Colorize", s_node_colorize, "Node_Colorize", [1, Node_Colorize], ["recolor"]); + addNodeObject(filter, "Posterize", s_node_posterize, "Node_Posterize", [1, Node_Posterize]); + addNodeObject(filter, "Dither", s_node_dithering, "Node_Dither", [1, Node_Dither]); + addNodeObject(filter, "Adjust color", s_node_color_adjust, "Node_Color_adjust", [1, Node_Color_adjust], ["brightness", "contrast", "hue", "saturation", "value", "color blend", "alpha"]); + addNodeObject(filter, "BW", s_node_BW, "Node_BW", [1, Node_BW], ["black and white"]); + addNodeObject(filter, "Greyscale", s_node_greyscale, "Node_Greyscale", [1, Node_Greyscale]); + addNodeObject(filter, "Invert", s_node_invert, "Node_Invert", [1, Node_Invert], ["negate"]); + addNodeObject(filter, "RGB Channels", s_node_RGB, "Node_RGB_Channel", [1, Node_RGB_Channel], ["channel extract"]); + addNodeObject(filter, "Level", s_node_level, "Node_Level", [1, Node_Level]); + addNodeObject(filter, "Level selector", s_node_level_selector, "Node_Level_Selector", [1, Node_Level_Selector]); + addNodeObject(filter, "Displace", s_node_displace, "Node_Displace", [1, Node_Displace]); + addNodeObject(filter, "Alpha to grey", s_node_alpha_grey, "Node_Alpha_Grey", [1, Node_Alpha_Grey]); + addNodeObject(filter, "Alpha cutoff", s_node_alpha_cut, "Node_Alpha_Cutoff", [1, Node_Alpha_Cutoff], ["remove alpha"]); + addNodeObject(filter, "Grey to alpha", s_node_grey_alpha, "Node_Grey_Alpha", [1, Node_Grey_Alpha]); + addNodeObject(filter, "De-corner", s_node_decorner, "Node_De_Corner", [1, Node_De_Corner], ["decorner"]); + addNodeObject(filter, "De-stray", s_node_destray, "Node_De_Stray", [1, Node_De_Stray], ["destray"]); + addNodeObject(filter, "Texture remap", s_node_texture_map, "Node_Texture_Remap", [1, Node_Texture_Remap]); + addNodeObject(filter, "Time remap", s_node_time_map, "Node_Time_Remap", [1, Node_Time_Remap]); + addNodeObject(filter, "2D light", s_node_2d_light, "Node_2D_light", [1, Node_2D_light]); + addNodeObject(filter, "Atlas", s_node_atlas, "Node_Atlas", [1, Node_Atlas]); + addNodeObject(filter, "Scale algorithm", s_node_scale_algo, "Node_Scale_Algo", [0, Node_create_Scale_Algo], ["scale2x", "scale3x"]); + addNodeObject(filter, "Pixel cloud", s_node_pixel_cloud, "Node_Pixel_Cloud", [1, Node_Pixel_Cloud]); + addNodeObject(filter, "Edge detect", s_node_edge_detect, "Node_Edge_Detect", [1, Node_Edge_Detect]); + addNodeObject(filter, "Chromatic aberration", s_node_chromatic_abarration, "Node_Chromatic_Aberration", [1, Node_Chromatic_Aberration]); + //addNodeObject(filter, "Corner", s_node_corner, "Node_Corner", [1, Node_create_Corner]); var threeD = ds_list_create(); addNodeCatagory("3D", threeD); - addNodeObject(threeD, "3D Transform", s_node_3d_transform, "Node_3D_Transform", Node_create_3D_Transform); - addNodeObject(threeD, "Normal", s_node_normal, "Node_Normal", Node_create_Normal); - addNodeObject(threeD, "Normal light", s_node_normal_light, "Node_Normal_Light", Node_create_Normal_Light); - addNodeObject(threeD, "Bevel", s_node_bevel, "Node_Bevel", Node_create_Bevel); - addNodeObject(threeD, "Sprite stack", s_node_stack, "Node_Sprite_Stack", Node_create_Sprite_Stack); - addNodeObject(threeD, "3D Obj", s_node_3d_obj, "Node_3D_Obj", Node_create_3D_Obj); - addNodeObject(threeD, "3D Cube", s_node_3d_cube, "Node_3D_Cube", Node_create_3D_Cube); - addNodeObject(threeD, "3D Cylinder", s_node_3d_cylinder, "Node_3D_Cylinder", Node_create_3D_Cylinder); - addNodeObject(threeD, "3D Extrude", s_node_3d_extrude, "Node_3D_Extrude", Node_create_3D_Extrude); + addNodeObject(threeD, "3D Transform", s_node_3d_transform, "Node_3D_Transform", [1, Node_3D_Transform]); + addNodeObject(threeD, "Normal", s_node_normal, "Node_Normal", [1, Node_Normal]); + addNodeObject(threeD, "Normal light", s_node_normal_light, "Node_Normal_Light", [1, Node_Normal_Light]); + addNodeObject(threeD, "Bevel", s_node_bevel, "Node_Bevel", [1, Node_Bevel]); + addNodeObject(threeD, "Sprite stack", s_node_stack, "Node_Sprite_Stack", [1, Node_Sprite_Stack]); + addNodeObject(threeD, "3D Obj", s_node_3d_obj, "Node_3D_Obj", [1, Node_3D_Obj]); + addNodeObject(threeD, "3D Cube", s_node_3d_cube, "Node_3D_Cube", [1, Node_3D_Cube]); + addNodeObject(threeD, "3D Cylinder", s_node_3d_cylinder, "Node_3D_Cylinder", [1, Node_3D_Cylinder]); + addNodeObject(threeD, "3D Extrude", s_node_3d_extrude, "Node_3D_Extrude", [1, Node_3D_Extrude]); var number = ds_list_create(); addNodeCatagory("Number", number); - addNodeObject(number, "Math", s_node_math, "Node_Math", Node_create_Math, ["add", "subtract", "multiply", "divide", "power", "modulo", "round", "ceiling", "floor", "sin", "cos", "tan"]); - addNodeObject(number, "Statistic", s_node_statistic, "Node_Statistic", Node_create_Statistic, ["sum", "average", "mean", "median", "min", "max"]); - addNodeObject(number, "Array", s_node_array, "Node_Array", Node_create_Array); - addNodeObject(number, "Array length", s_node_array_length, "Node_Array_Length", Node_create_Array_Length); - addNodeObject(number, "Array get", s_node_array_get, "Node_Array_Get", Node_create_Array_Get); - addNodeObject(number, "Number", s_node_number, "Node_Number", Node_create_Number); - addNodeObject(number, "Vector2", s_node_vec2, "Node_Vector2", Node_create_Vector2); - addNodeObject(number, "Vector3", s_node_vec3, "Node_Vector3", Node_create_Vector3); - addNodeObject(number, "Vector4", s_node_vec4, "Node_Vector4", Node_create_Vector4); - addNodeObject(number, "Vector split", s_node_vec_split, "Node_Vector_Split", Node_create_Vector_Split); - addNodeObject(number, "Unicode", s_node_unicode, "Node_Unicode", Node_create_Unicode); - addNodeObject(number, "Path", s_node_path, "Node_Path", Node_create_Path); - addNodeObject(number, "Area", s_node_area, "Node_Area", Node_create_Area); - //addNodeObject(number, "Surface data", s_node_surface_data, "Node_Surface_data", Node_create_Surface_data); + addNodeObject(number, "Math", s_node_math, "Node_Math", [0, Node_create_Math], ["add", "subtract", "multiply", "divide", "power", "modulo", "round", "ceiling", "floor", "sin", "cos", "tan"]); + addNodeObject(number, "Statistic", s_node_statistic, "Node_Statistic", [0, Node_create_Statistic], ["sum", "average", "mean", "median", "min", "max"]); + addNodeObject(number, "Array", s_node_array, "Node_Array", [1, Node_Array]); + addNodeObject(number, "Array length", s_node_array_length, "Node_Array_Length", [1, Node_Array_Length]); + addNodeObject(number, "Array get", s_node_array_get, "Node_Array_Get", [1, Node_Array_Get]); + addNodeObject(number, "Number", s_node_number, "Node_Number", [1, Node_Number]); + addNodeObject(number, "Vector2", s_node_vec2, "Node_Vector2", [1, Node_Vector2]); + addNodeObject(number, "Vector3", s_node_vec3, "Node_Vector3", [1, Node_Vector3]); + addNodeObject(number, "Vector4", s_node_vec4, "Node_Vector4", [1, Node_Vector4]); + addNodeObject(number, "Vector split", s_node_vec_split, "Node_Vector_Split", [1, Node_Vector_Split]); + addNodeObject(number, "Unicode", s_node_unicode, "Node_Unicode", [1, Node_Unicode]); + addNodeObject(number, "Path", s_node_path, "Node_Path", [1, Node_Path]); + addNodeObject(number, "Area", s_node_area, "Node_Area", [1, Node_Area]); + //addNodeObject(number, "Surface data", s_node_surface_data, "Node_Surface_data", [1, Node_Surface_data]); var color = ds_list_create(); addNodeCatagory("Color", color); - addNodeObject(color, "Color", s_node_color_out, "Node_Color", Node_create_Color); - addNodeObject(color, "RGB Color", s_node_color_from_rgb, "Node_Color_RGB", Node_create_Color_RGB); - addNodeObject(color, "HSV Color", s_node_color_from_hsv, "Node_Color_HSV", Node_create_Color_HSV); - addNodeObject(color, "Palette", s_node_palette, "Node_Palette", Node_create_Palette); - addNodeObject(color, "Gradient", s_node_gradient_out, "Node_Gradient_Out", Node_create_Gradient_Out); - addNodeObject(color, "Sampler", s_node_sampler, "Node_Sampler", Node_create_Sampler); - addNodeObject(color, "Color data", s_node_color_data, "Node_Color_Data", Node_create_Color_Data); + addNodeObject(color, "Color", s_node_color_out, "Node_Color", [1, Node_Color]); + addNodeObject(color, "RGB Color", s_node_color_from_rgb, "Node_Color_RGB", [1, Node_Color_RGB]); + addNodeObject(color, "HSV Color", s_node_color_from_hsv, "Node_Color_HSV", [1, Node_Color_HSV]); + addNodeObject(color, "Palette", s_node_palette, "Node_Palette", [1, Node_Palette]); + addNodeObject(color, "Gradient", s_node_gradient_out, "Node_Gradient_Out", [1, Node_Gradient_Out]); + addNodeObject(color, "Sampler", s_node_sampler, "Node_Sampler", [1, Node_Sampler]); + addNodeObject(color, "Color data", s_node_color_data, "Node_Color_Data", [1, Node_Color_Data]); var animation = ds_list_create(); addNodeCatagory("Animation", animation); - addNodeObject(animation, "Counter", s_node_counter, "Node_Counter", Node_create_Counter); - addNodeObject(animation, "Wiggler", s_node_wiggler, "Node_Wiggler", Node_create_Wiggler); - addNodeObject(animation, "Curve", s_node_curve, "Node_Anim_Curve", Node_create_Anim_Curve); + addNodeObject(animation, "Counter", s_node_counter, "Node_Counter", [1, Node_Counter]); + addNodeObject(animation, "Wiggler", s_node_wiggler, "Node_Wiggler", [1, Node_Wiggler]); + addNodeObject(animation, "Curve", s_node_curve, "Node_Anim_Curve", [1, Node_Anim_Curve]); var generator = ds_list_create(); addNodeCatagory("Generate", generator); - addNodeObject(generator, "Solid", s_node_solid, "Node_Solid", Node_create_Solid); - addNodeObject(generator, "Gradient", s_node_gradient, "Node_Gradient", Node_create_Gradient); - addNodeObject(generator, "Line", s_node_line, "Node_Line", Node_create_Line); - addNodeObject(generator, "Stripe", s_node_stripe, "Node_Stripe", Node_create_Stripe); - addNodeObject(generator, "Zigzag", s_node_zigzag, "Node_Zigzag", Node_create_Zigzag); - addNodeObject(generator, "Checker", s_node_checker, "Node_Checker", Node_create_Checker); - addNodeObject(generator, "Shape", s_node_shape, "Node_Shape", Node_create_Shape); - addNodeObject(generator, "Particle", s_node_particle, "Node_Particle", Node_create_Particle); - addNodeObject(generator, "Particle Effector", s_node_particle_effector, "Node_Particle_Effector", Node_create_Particle_Effector, ["affector"]); - addNodeObject(generator, "Scatter", s_node_scatter, "Node_Scatter", Node_create_Scatter); - addNodeObject(generator, "Noise", s_node_noise, "Node_Noise", Node_create_Noise); - addNodeObject(generator, "Perlin noise", s_node_noise_perlin, "Node_Perlin", Node_create_Perlin); - addNodeObject(generator, "Cellular noise", s_node_noise_cell, "Node_Cellular", Node_create_Cellular); - addNodeObject(generator, "Grid noise", s_node_grid_noise, "Node_Grid_Noise", Node_create_Grid_Noise); - addNodeObject(generator, "Grid", s_node_grid, "Node_Grid", Node_create_Grid, ["tile"]); - addNodeObject(generator, "Anisotropic noise", s_node_noise_aniso, "Node_Noise_Aniso", Node_create_Noise_Aniso); - addNodeObject(generator, "Seperate shape", s_node_sepearte_shape, "Node_Seperate_Shape", Node_create_Seperate_Shape); - addNodeObject(generator, "Text", s_node_text, "Node_Text", Node_create_Text); + addNodeObject(generator, "Solid", s_node_solid, "Node_Solid", [1, Node_Solid]); + addNodeObject(generator, "Gradient", s_node_gradient, "Node_Gradient", [1, Node_Gradient]); + addNodeObject(generator, "Line", s_node_line, "Node_Line", [1, Node_Line]); + addNodeObject(generator, "Stripe", s_node_stripe, "Node_Stripe", [1, Node_Stripe]); + addNodeObject(generator, "Zigzag", s_node_zigzag, "Node_Zigzag", [1, Node_Zigzag]); + addNodeObject(generator, "Checker", s_node_checker, "Node_Checker", [1, Node_Checker]); + addNodeObject(generator, "Shape", s_node_shape, "Node_Shape", [1, Node_Shape]); + addNodeObject(generator, "Particle", s_node_particle, "Node_Particle", [1, Node_Particle]); + addNodeObject(generator, "VFX", s_node_vfx, "Node_VFX_Group", [1, Node_VFX_Group]); + //addNodeObject(generator, "Particle Effector", s_node_particle_effector, "Node_Particle_Effector", [1, Node_Particle_Effector], ["affector"]); + addNodeObject(generator, "Scatter", s_node_scatter, "Node_Scatter", [1, Node_Scatter]); + addNodeObject(generator, "Noise", s_node_noise, "Node_Noise", [1, Node_Noise]); + addNodeObject(generator, "Perlin noise", s_node_noise_perlin, "Node_Perlin", [1, Node_Perlin]); + addNodeObject(generator, "Cellular noise", s_node_noise_cell, "Node_Cellular", [1, Node_Cellular], ["Voronoi", "Worley"]); + addNodeObject(generator, "Grid noise", s_node_grid_noise, "Node_Grid_Noise", [1, Node_Grid_Noise]); + addNodeObject(generator, "Grid", s_node_grid, "Node_Grid", [1, Node_Grid], ["tile"]); + addNodeObject(generator, "Anisotropic noise", s_node_noise_aniso, "Node_Noise_Aniso", [1, Node_Noise_Aniso]); + addNodeObject(generator, "Seperate shape", s_node_sepearte_shape, "Node_Seperate_Shape", [1, Node_Seperate_Shape]); + addNodeObject(generator, "Text", s_node_text, "Node_Text", [1, Node_Text]); var renderNode = ds_list_create(); addNodeCatagory("Render", renderNode); - addNodeObject(renderNode, "Render sprite sheet", s_node_sprite_sheet, "Node_Render_Sprite_Sheet", Node_create_Render_Sprite_Sheet); - addNodeObject(renderNode, "Export", s_node_export, "Node_Export", Node_create_Export); - //addNodeObject(renderNode, "Preview timeline", s_node_timeline_preview,"Node_Timeline_Preview", Node_create_Timeline_Preview); + addNodeObject(renderNode, "Render sprite sheet", s_node_sprite_sheet, "Node_Render_Sprite_Sheet", [1, Node_Render_Sprite_Sheet]); + addNodeObject(renderNode, "Export", s_node_export, "Node_Export", [0, Node_create_Export]); + //addNodeObject(renderNode, "Preview timeline", s_node_timeline_preview,"Node_Timeline_Preview", [1, Node_create_Timeline_Preview]); var node = ds_list_create(); addNodeCatagory("Node", node); - addNodeObject(node, "Group", s_node_group, "Node_Group", Node_create_Group); - addNodeObject(node, "Loop", s_node_loop, "Node_Iterate", Node_create_Iterate); - addNodeObject(node, "Pin", s_node_pin, "Node_Pin", Node_create_Pin); - addNodeObject(node, "Frame", s_node_frame, "Node_Frame", Node_create_Frame); - addNodeObject(node, "Display text", s_node_text, "Node_Display_Text", Node_create_Display_Text); - addNodeObject(node, "Display image", s_node_image, "Node_Display_Image", Node_create_Display_Image); - addNodeObject(node, "Condition", s_node_condition, "Node_Condition", Node_create_Condition); + addNodeObject(node, "Group", s_node_group, "Node_Group", [1, Node_Group]); + addNodeObject(node, "Loop", s_node_loop, "Node_Iterate", [1, Node_Iterate]); + addNodeObject(node, "Pin", s_node_pin, "Nodee_Pin", [1, Node_Pin]); + addNodeObject(node, "Frame", s_node_frame, "Node_Frame", [1, Node_Frame]); + addNodeObject(node, "Display text", s_node_text, "Node_Display_Text", [1, Node_Display_Text]); + addNodeObject(node, "Display image", s_node_image, "Node_Display_Image", [0, Node_create_Display_Image]); + addNodeObject(node, "Condition", s_node_condition, "Node_Condition", [1, Node_Condition]); #endregion #region node function @@ -222,7 +238,8 @@ function NodeObject(_name, _spr, _create, tags = []) constructor { return noone; } - var _node = NODE_CREATE_FUCTION[? _type](_x, _y); + var funs = NODE_CREATE_FUCTION[? _type]; + var _node = funs[0]? new funs[1](_x, _y) : funs[1](_x, _y); if(_node) { var map = ds_map_clone(_data); diff --git a/scripts/node_scale/node_scale.gml b/scripts/node_scale/node_scale.gml index b64121a1a..512c7a92b 100644 --- a/scripts/node_scale/node_scale.gml +++ b/scripts/node_scale/node_scale.gml @@ -1,10 +1,4 @@ -function Node_create_Scale(_x, _y) { - var node = new Node_Scale(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Scale(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Scale(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Scale"; inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); diff --git a/scripts/node_scale_algo/node_scale_algo.gml b/scripts/node_scale_algo/node_scale_algo.gml index 38c87adec..b55d121ce 100644 --- a/scripts/node_scale_algo/node_scale_algo.gml +++ b/scripts/node_scale_algo/node_scale_algo.gml @@ -1,6 +1,6 @@ -function Node_create_Scale_Algo(_x, _y, _param = "") { - var node = new Node_Scale_Algo(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); +function Node_create_Scale_Algo(_x, _y, _group = -1, _param = "") { + var node = new Node_Scale_Algo(_x, _y, _group); + //ds_list_add(PANEL_GRAPH.nodes_list, node); switch(_param) { case "scale2x" : node.inputs[| 1].setValue(0); break; @@ -10,7 +10,7 @@ function Node_create_Scale_Algo(_x, _y, _param = "") { return node; } -function Node_Scale_Algo(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Scale_Algo(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Scale Algo"; uniform_dim = shader_get_uniform(sh_scale2x, "dimension"); diff --git a/scripts/node_scatter/node_scatter.gml b/scripts/node_scatter/node_scatter.gml index f7d0e67ff..1615a195b 100644 --- a/scripts/node_scatter/node_scatter.gml +++ b/scripts/node_scatter/node_scatter.gml @@ -1,10 +1,4 @@ -function Node_create_Scatter(_x, _y) { - var node = new Node_Scatter(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Scatter(_x, _y) : Node(_x, _y) constructor { +function Node_Scatter(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Scatter"; uniform_dim = shader_get_uniform(sh_blend_normal_dim, "dimension"); diff --git a/scripts/node_seperate_shapes/node_seperate_shapes.gml b/scripts/node_seperate_shapes/node_seperate_shapes.gml index ec8581dd3..097bef77c 100644 --- a/scripts/node_seperate_shapes/node_seperate_shapes.gml +++ b/scripts/node_seperate_shapes/node_seperate_shapes.gml @@ -1,10 +1,4 @@ -function Node_create_Seperate_Shape(_x, _y) { - var node = new Node_Seperate_Shape(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Seperate_Shape(_x, _y) : Node(_x, _y) constructor { +function Node_Seperate_Shape(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Separate shape"; auto_update = false; diff --git a/scripts/node_sequence_to_anim/node_sequence_to_anim.gml b/scripts/node_sequence_to_anim/node_sequence_to_anim.gml index 5be49be5f..ccf59a45f 100644 --- a/scripts/node_sequence_to_anim/node_sequence_to_anim.gml +++ b/scripts/node_sequence_to_anim/node_sequence_to_anim.gml @@ -1,10 +1,4 @@ -function Node_create_Sequence_Anim(_x, _y) { - var node = new Node_Sequence_Anim(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Sequence_Anim(_x, _y) : Node(_x, _y) constructor { +function Node_Sequence_Anim(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Sequence to Anim"; update_on_frame = true; diff --git a/scripts/node_shadow/node_shadow.gml b/scripts/node_shadow/node_shadow.gml index 443debfc9..ac7c8a718 100644 --- a/scripts/node_shadow/node_shadow.gml +++ b/scripts/node_shadow/node_shadow.gml @@ -1,10 +1,4 @@ -function Node_create_Shadow(_x, _y) { - var node = new Node_Shadow(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Shadow(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Shadow(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Shadow"; uniform_dim = shader_get_uniform(sh_outline_only, "dimension"); diff --git a/scripts/node_simple_shape/node_simple_shape.gml b/scripts/node_simple_shape/node_simple_shape.gml index 4367f9539..55dcd03ef 100644 --- a/scripts/node_simple_shape/node_simple_shape.gml +++ b/scripts/node_simple_shape/node_simple_shape.gml @@ -1,9 +1,3 @@ -function Node_create_Shape(_x, _y) { - var node = new Node_Shape(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - enum NODE_SHAPE_TYPE { rectangle, elipse, @@ -13,7 +7,7 @@ enum NODE_SHAPE_TYPE { capsule } -function Node_Shape(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Shape(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Shape"; shader = sh_shape; @@ -63,7 +57,7 @@ function Node_Shape(_x, _y) : Node_Processor(_x, _y) constructor { inputs[| 11] = nodeValue(11, "Background color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_black); - inputs[| 12] = nodeValue(12, "Distance field", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); + inputs[| 12] = nodeValue(12, "Height", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); diff --git a/scripts/node_solid/node_solid.gml b/scripts/node_solid/node_solid.gml index a50adc170..2e32be226 100644 --- a/scripts/node_solid/node_solid.gml +++ b/scripts/node_solid/node_solid.gml @@ -1,10 +1,4 @@ -function Node_create_Solid(_x, _y) { - var node = new Node_Solid(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Solid(_x, _y) : Node(_x, _y) constructor { +function Node_Solid(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Solid"; inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) diff --git a/scripts/node_sprite_sheet/node_sprite_sheet.gml b/scripts/node_sprite_sheet/node_sprite_sheet.gml index 37eea40f0..6583873a6 100644 --- a/scripts/node_sprite_sheet/node_sprite_sheet.gml +++ b/scripts/node_sprite_sheet/node_sprite_sheet.gml @@ -1,9 +1,3 @@ -function Node_create_Render_Sprite_Sheet(_x, _y) { - var node = new Node_Render_Sprite_Sheet(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - enum SPRITE_STACK { horizontal, vertical, @@ -15,7 +9,7 @@ enum SPRITE_ANIM_GROUP { all_sprites } -function Node_Render_Sprite_Sheet(_x, _y) : Node(_x, _y) constructor { +function Node_Render_Sprite_Sheet(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Sheet"; auto_update = false; diff --git a/scripts/node_sprite_stack/node_sprite_stack.gml b/scripts/node_sprite_stack/node_sprite_stack.gml index 39d5ef9ba..6980c4cd4 100644 --- a/scripts/node_sprite_stack/node_sprite_stack.gml +++ b/scripts/node_sprite_stack/node_sprite_stack.gml @@ -1,10 +1,4 @@ -function Node_create_Sprite_Stack(_x, _y) { - var node = new Node_Sprite_Stack(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Sprite_Stack(_x, _y) : Node(_x, _y) constructor { +function Node_Sprite_Stack(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Sprite Stack"; inputs[| 0] = nodeValue(0, "Base shape", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, PIXEL_SURFACE); diff --git a/scripts/node_statistic/node_statistic.gml b/scripts/node_statistic/node_statistic.gml index ba223e9bd..5bf6a7174 100644 --- a/scripts/node_statistic/node_statistic.gml +++ b/scripts/node_statistic/node_statistic.gml @@ -6,9 +6,9 @@ enum STAT_OPERATOR { _min } -function Node_create_Statistic(_x, _y, _param = "") { - var node = new Node_Statistic(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); +function Node_create_Statistic(_x, _y, _group = -1, _param = "") { + var node = new Node_Statistic(_x, _y, _group); + //ds_list_add(PANEL_GRAPH.nodes_list, node); switch(_param) { case "sum" : node.inputs[| 0].setValue(STAT_OPERATOR._sum); break; @@ -22,7 +22,7 @@ function Node_create_Statistic(_x, _y, _param = "") { return node; } -function Node_Statistic(_x, _y) : Node(_x, _y) constructor { +function Node_Statistic(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Statistic"; previewable = false; diff --git a/scripts/node_stripe/node_stripe.gml b/scripts/node_stripe/node_stripe.gml index f5abbecbd..8c3fafbd1 100644 --- a/scripts/node_stripe/node_stripe.gml +++ b/scripts/node_stripe/node_stripe.gml @@ -1,10 +1,4 @@ -function Node_create_Stripe(_x, _y) { - var node = new Node_Stripe(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Stripe(_x, _y) : Node(_x, _y) constructor { +function Node_Stripe(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Stripe"; uniform_grad_use = shader_get_uniform(sh_stripe, "gradient_use"); diff --git a/scripts/node_surface_data/node_surface_data.gml b/scripts/node_surface_data/node_surface_data.gml index a87aa8738..5e331e36e 100644 --- a/scripts/node_surface_data/node_surface_data.gml +++ b/scripts/node_surface_data/node_surface_data.gml @@ -1,10 +1,4 @@ -function Node_create_Surface_data(_x, _y) { - var node = new Node_Surface_data(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Surface_data(_x, _y) : Node(_x, _y) constructor { +function Node_Surface_data(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Surface data"; color = COLORS.node_blend_number; previewable = false; diff --git a/scripts/node_text/node_text.gml b/scripts/node_text/node_text.gml index d5b7b59ae..f45554956 100644 --- a/scripts/node_text/node_text.gml +++ b/scripts/node_text/node_text.gml @@ -1,10 +1,4 @@ -function Node_create_Text(_x, _y) { - var node = new Node_Text(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Text(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Text(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Text"; font = f_p0; diff --git a/scripts/node_texture_remap/node_texture_remap.gml b/scripts/node_texture_remap/node_texture_remap.gml index 36207b9e8..ba8410f8e 100644 --- a/scripts/node_texture_remap/node_texture_remap.gml +++ b/scripts/node_texture_remap/node_texture_remap.gml @@ -1,10 +1,4 @@ -function Node_create_Texture_Remap(_x, _y) { - var node = new Node_Texture_Remap(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Texture_Remap(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Texture_Remap(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Texture remap"; uniform_map = shader_get_sampler_index(sh_texture_remap, "map"); diff --git a/scripts/node_time_remap/node_time_remap.gml b/scripts/node_time_remap/node_time_remap.gml index 1faf0bde4..1af3d6d9b 100644 --- a/scripts/node_time_remap/node_time_remap.gml +++ b/scripts/node_time_remap/node_time_remap.gml @@ -1,10 +1,4 @@ -function Node_create_Time_Remap(_x, _y) { - var node = new Node_Time_Remap(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Time_Remap(_x, _y) : Node(_x, _y) constructor { +function Node_Time_Remap(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Time remap"; use_cache = true; diff --git a/scripts/node_timeline_preview/node_timeline_preview.gml b/scripts/node_timeline_preview/node_timeline_preview.gml index ff0d93cd8..f8ed16e30 100644 --- a/scripts/node_timeline_preview/node_timeline_preview.gml +++ b/scripts/node_timeline_preview/node_timeline_preview.gml @@ -1,10 +1,4 @@ -function Node_create_Timeline_Preview(_x, _y) { - var node = new Node_Timeline_Preview(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Timeline_Preview(_x, _y) : Node(_x, _y) constructor { +function Node_Timeline_Preview(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Timeline"; use_cache = true; color = COLORS.node_blend_number; diff --git a/scripts/node_trail/node_trail.gml b/scripts/node_trail/node_trail.gml index e27796133..efcc54549 100644 --- a/scripts/node_trail/node_trail.gml +++ b/scripts/node_trail/node_trail.gml @@ -1,10 +1,4 @@ -function Node_create_Trail(_x, _y) { - var node = new Node_Trail(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Trail(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Trail(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Trail"; use_cache = true; diff --git a/scripts/node_transform/node_transform.gml b/scripts/node_transform/node_transform.gml index fa5b2e342..cf486f43a 100644 --- a/scripts/node_transform/node_transform.gml +++ b/scripts/node_transform/node_transform.gml @@ -1,16 +1,10 @@ -function Node_create_Transform(_x, _y) { - var node = new Node_Transform(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - enum OUTPUT_SCALING { same_as_input, constant, relative } -function Node_Transform(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Transform(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Transform"; inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone); diff --git a/scripts/node_transform_single/node_transform_single.gml b/scripts/node_transform_single/node_transform_single.gml index d8d6754d6..4d51136f7 100644 --- a/scripts/node_transform_single/node_transform_single.gml +++ b/scripts/node_transform_single/node_transform_single.gml @@ -1,10 +1,4 @@ -function Node_create_Transform_Single(_x, _y) { - var node = new Node_Transform_Single(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Transform_Single(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Transform_Single(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Transform single"; inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); diff --git a/scripts/node_twirl/node_twirl.gml b/scripts/node_twirl/node_twirl.gml index d0c24a79d..d7d0cb840 100644 --- a/scripts/node_twirl/node_twirl.gml +++ b/scripts/node_twirl/node_twirl.gml @@ -1,10 +1,4 @@ -function Node_create_Twirl(_x, _y) { - var node = new Node_Twirl(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Twirl(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Twirl(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Twirl"; uniform_dim = shader_get_uniform(sh_twirl, "dimension"); diff --git a/scripts/node_value/node_value.gml b/scripts/node_value/node_value.gml index 0b8930772..516c5fa53 100644 --- a/scripts/node_value/node_value.gml +++ b/scripts/node_value/node_value.gml @@ -15,6 +15,7 @@ enum VALUE_TYPE { text = 7, object = 8, node = 9, + d3object = 10, any = 11, } diff --git a/scripts/node_value_processor/node_value_processor.gml b/scripts/node_value_processor/node_value_processor.gml index aa0625507..ca5d44c05 100644 --- a/scripts/node_value_processor/node_value_processor.gml +++ b/scripts/node_value_processor/node_value_processor.gml @@ -1,4 +1,4 @@ -function Node_Value_Processor(_x, _y) : Node(_x, _y) constructor { +function Node_Value_Processor(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { array_process = ARRAY_PROCESS.loop; function process_value(_outindex) { diff --git a/scripts/node_value_processor/node_value_processor.yy b/scripts/node_value_processor/node_value_processor.yy index 27a4d111b..8e0f21ffe 100644 --- a/scripts/node_value_processor/node_value_processor.yy +++ b/scripts/node_value_processor/node_value_processor.yy @@ -5,7 +5,7 @@ "isDnD": false, "isCompatibility": false, "parent": { - "name": "number", - "path": "folders/nodes/data/number.yy", + "name": "__base__", + "path": "folders/nodes/data/__base__.yy", }, } \ No newline at end of file diff --git a/scripts/node_vector/node_vector.gml b/scripts/node_vector/node_vector.gml index db9aaa1ab..aaf58e75e 100644 --- a/scripts/node_vector/node_vector.gml +++ b/scripts/node_vector/node_vector.gml @@ -1,9 +1,3 @@ -function Node_create_Number(_x, _y) { - var node = new Node_Number(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - function Node_Number(_x, _y) : Node_Value_Processor(_x, _y) constructor { name = "Number"; color = COLORS.node_blend_number; @@ -31,12 +25,6 @@ function Node_Number(_x, _y) : Node_Value_Processor(_x, _y) constructor { } } -function Node_create_Vector2(_x, _y) { - var node = new Node_Vector2(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - function Node_Vector2(_x, _y) : Node_Value_Processor(_x, _y) constructor { name = "Vector2"; color = COLORS.node_blend_number; @@ -67,12 +55,6 @@ function Node_Vector2(_x, _y) : Node_Value_Processor(_x, _y) constructor { } } -function Node_create_Vector3(_x, _y) { - var node = new Node_Vector3(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - function Node_Vector3(_x, _y) : Node_Value_Processor(_x, _y) constructor { name = "Vector3"; color = COLORS.node_blend_number; @@ -106,12 +88,6 @@ function Node_Vector3(_x, _y) : Node_Value_Processor(_x, _y) constructor { } } -function Node_create_Vector4(_x, _y) { - var node = new Node_Vector4(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - function Node_Vector4(_x, _y) : Node_Value_Processor(_x, _y) constructor { name = "Vector4"; color = COLORS.node_blend_number; @@ -148,12 +124,6 @@ function Node_Vector4(_x, _y) : Node_Value_Processor(_x, _y) constructor { } } -function Node_create_Vector_Split(_x, _y) { - var node = new Node_Vector_Split(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - function Node_Vector_Split(_x, _y) : Node_Value_Processor(_x, _y) constructor { name = "Vector split"; color = COLORS.node_blend_number; diff --git a/scripts/node_wiggler/node_wiggler.gml b/scripts/node_wiggler/node_wiggler.gml index 679c66e2a..15639de85 100644 --- a/scripts/node_wiggler/node_wiggler.gml +++ b/scripts/node_wiggler/node_wiggler.gml @@ -1,9 +1,3 @@ -function Node_create_Wiggler(_x, _y) { - var node = new Node_Wiggler(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - function Node_Wiggler(_x, _y) : Node_Value_Processor(_x, _y) constructor { name = "Wiggler"; update_on_frame = true; diff --git a/scripts/node_wrap/node_wrap.gml b/scripts/node_wrap/node_wrap.gml index b465ef6c7..17bffb0ca 100644 --- a/scripts/node_wrap/node_wrap.gml +++ b/scripts/node_wrap/node_wrap.gml @@ -1,10 +1,4 @@ -function Node_create_Warp(_x, _y) { - var node = new Node_Warp(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Warp(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Warp(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Warp"; inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); diff --git a/scripts/node_wrap_area/node_wrap_area.gml b/scripts/node_wrap_area/node_wrap_area.gml index 46b049adc..0eb4ad9f1 100644 --- a/scripts/node_wrap_area/node_wrap_area.gml +++ b/scripts/node_wrap_area/node_wrap_area.gml @@ -1,10 +1,4 @@ -function Node_create_Wrap_Area(_x, _y) { - var node = new Node_Wrap_Area(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Wrap_Area(_x, _y) : Node_Processor(_x, _y) constructor { +function Node_Wrap_Area(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Area wrap"; inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); diff --git a/scripts/node_wrap_mesh/node_wrap_mesh.gml b/scripts/node_wrap_mesh/node_wrap_mesh.gml index 81a1c65bb..9c3b5ba0b 100644 --- a/scripts/node_wrap_mesh/node_wrap_mesh.gml +++ b/scripts/node_wrap_mesh/node_wrap_mesh.gml @@ -1,10 +1,4 @@ -function Node_create_Mesh_Warp(_x, _y) { - var node = new Node_Mesh_Warp(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Mesh_Warp(_x, _y) : Node(_x, _y) constructor { +function Node_Mesh_Warp(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Mesh warp"; data = { diff --git a/scripts/node_zigzag/node_zigzag.gml b/scripts/node_zigzag/node_zigzag.gml index d1058b9b0..5b542257c 100644 --- a/scripts/node_zigzag/node_zigzag.gml +++ b/scripts/node_zigzag/node_zigzag.gml @@ -1,10 +1,4 @@ -function Node_create_Zigzag(_x, _y) { - var node = new Node_Zigzag(_x, _y); - ds_list_add(PANEL_GRAPH.nodes_list, node); - return node; -} - -function Node_Zigzag(_x, _y) : Node(_x, _y) constructor { +function Node_Zigzag(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Zigzag"; shader = sh_zigzag; diff --git a/scripts/panel_graph/panel_graph.gml b/scripts/panel_graph/panel_graph.gml index 2663eaddc..3da806aef 100644 --- a/scripts/panel_graph/panel_graph.gml +++ b/scripts/panel_graph/panel_graph.gml @@ -115,19 +115,19 @@ function Panel_Graph() : PanelContent() constructor { addHotkey("Graph", "Add node", "A", MOD_KEY.none, function() { callAddDialog(); }); addHotkey("Graph", "Focus content", "F", MOD_KEY.none, function() { fullView(); }); addHotkey("Graph", "Preview focusing node", "P", MOD_KEY.none, function() { setCurrentPreview(); }); - addHotkey("Graph", "Import image", "I", MOD_KEY.none, function() { nodeBuild("Image", mouse_grid_x, mouse_grid_y); }); - addHotkey("Graph", "Import image array", "I", MOD_KEY.shift, function() { nodeBuild("Image array", mouse_grid_x, mouse_grid_y); }); - addHotkey("Graph", "Add number", "1", MOD_KEY.none, function() { nodeBuild("Number", mouse_grid_x, mouse_grid_y); }); - addHotkey("Graph", "Add vector2", "2", MOD_KEY.none, function() { nodeBuild("Vector2", mouse_grid_x, mouse_grid_y); }); - addHotkey("Graph", "Add vector3", "3", MOD_KEY.none, function() { nodeBuild("Vector3", mouse_grid_x, mouse_grid_y); }); - addHotkey("Graph", "Add vector4", "4", MOD_KEY.none, function() { nodeBuild("Vector4", mouse_grid_x, mouse_grid_y); }); + addHotkey("Graph", "Import image", "I", MOD_KEY.none, function() { nodeBuild("Node_Image", mouse_grid_x, mouse_grid_y); }); + addHotkey("Graph", "Import image array", "I", MOD_KEY.shift, function() { nodeBuild("Node_Image_Sequence", mouse_grid_x, mouse_grid_y); }); + addHotkey("Graph", "Add number", "1", MOD_KEY.none, function() { nodeBuild("Node_Number", mouse_grid_x, mouse_grid_y); }); + addHotkey("Graph", "Add vector2", "2", MOD_KEY.none, function() { nodeBuild("Node_Vector2", mouse_grid_x, mouse_grid_y); }); + addHotkey("Graph", "Add vector3", "3", MOD_KEY.none, function() { nodeBuild("Node_Vector3", mouse_grid_x, mouse_grid_y); }); + addHotkey("Graph", "Add vector4", "4", MOD_KEY.none, function() { nodeBuild("Node_Vector4", mouse_grid_x, mouse_grid_y); }); static addNodeTransform = function() { if(ds_list_empty(nodes_select_list)) { if(node_focus != noone && !ds_list_empty(node_focus.outputs)) { var _o = node_focus.outputs[| 0]; if(_o.type == VALUE_TYPE.surface) { - var tr = nodeBuild("Transform", node_focus.x + node_focus.w + 64, node_focus.y); + var tr = nodeBuild("Node_Transform", node_focus.x + node_focus.w + 64, node_focus.y); tr.inputs[| 0].setFrom(_o); } } @@ -138,7 +138,7 @@ function Panel_Graph() : PanelContent() constructor { var _o = node.outputs[| 0]; if(_o.type == VALUE_TYPE.surface) { - var tr = nodeBuild("Transform", node.x + node.w + 64, node.y); + var tr = nodeBuild("Node_Transform", node.x + node.w + 64, node.y); tr.inputs[| 0].setFrom(_o); } } @@ -465,8 +465,9 @@ function Panel_Graph() : PanelContent() constructor { } var hov = noone; + var hoverable = !bool(node_dragging); for(var i = 0; i < ds_list_size(nodes_list); i++) { - var _hov = nodes_list[| i].drawConnections(gr_x, gr_y, mx, my, graph_s); + var _hov = nodes_list[| i].drawConnections(gr_x, gr_y, graph_s, mx, my, hoverable); if(_hov != noone) hov = _hov; } junction_hovering = hov; @@ -488,6 +489,8 @@ function Panel_Graph() : PanelContent() constructor { #endregion #region dragging + if(mouse_release(mb_left) || mouse_press(mb_left)) + node_dragging = noone; if(node_dragging) { node_focus = node_dragging; @@ -574,10 +577,6 @@ function Panel_Graph() : PanelContent() constructor { node_drag_oy = ny; } } - - if(mouse_release(mb_left)) { - node_dragging = noone; - } } #endregion @@ -599,7 +598,7 @@ function Panel_Graph() : PanelContent() constructor { var _mx = round(mouse_graph_x / graph_line_s) * graph_line_s; var _my = round(mouse_graph_y / graph_line_s) * graph_line_s; - var _pin = Node_create_Pin(_mx, _my); + var _pin = new Node_Pin(_mx, _my); _pin.inputs[| 0].setFrom(junction_hovering.value_from); junction_hovering.setFrom(_pin.outputs[| 0]); } @@ -680,10 +679,10 @@ function Panel_Graph() : PanelContent() constructor { nodes_select_list = dups; node_dragging = nodes_select_list[| 0]; - node_drag_mx = node_dragging.x; - node_drag_my = node_dragging.y; - node_drag_sx = node_dragging.x; - node_drag_sy = node_dragging.y; + node_drag_mx = 0; + node_drag_my = 0; + node_drag_sx = 0; + node_drag_sy = 0; } function doBlend() { @@ -700,7 +699,7 @@ function Panel_Graph() : PanelContent() constructor { cx = cx + 160; cy = round(cy / ds_list_size(nodes_select_list) / 32) * 32; - var _blend = Node_create_Blend(cx, cy); + var _blend = new Node_Blend(cx, cy); var index = 0; for( var i = 0; i < ds_list_size(nodes_select_list); i++ ) { var _node = nodes_select_list[| i]; @@ -728,7 +727,7 @@ function Panel_Graph() : PanelContent() constructor { cx = cx + 160; cy = round(cy / ds_list_size(nodes_select_list) / 32) * 32; - var _compose = Node_create_Composite(cx, cy); + var _compose = new Node_Composite(cx, cy); for( var i = 0; i < ds_list_size(nodes_select_list); i++ ) { var _node = nodes_select_list[| i]; @@ -746,63 +745,65 @@ function Panel_Graph() : PanelContent() constructor { ds_list_add(nodes_select_list, node_focus); node_focus = noone; - if(!ds_list_empty(nodes_select_list)) { - var cx = 0; - var cy = 0; - for(var i = 0; i < ds_list_size(nodes_select_list); i++) { - var _node = nodes_select_list[| i]; - cx += _node.x; - cy += _node.y; - } - cx = round(cx / ds_list_size(nodes_select_list) / 32) * 32; - cy = round(cy / ds_list_size(nodes_select_list) / 32) * 32; - - var _group = Node_create_Group(cx, cy); - for(var i = 0; i < ds_list_size(nodes_select_list); i++) { - _group.add(nodes_select_list[| i]); - } - for(var i = 0; i < ds_list_size(nodes_select_list); i++) { - nodes_select_list[| i].checkConnectGroup(); - } - - ds_list_clear(nodes_select_list); + if(ds_list_empty(nodes_select_list)) return; + + var cx = 0; + var cy = 0; + for(var i = 0; i < ds_list_size(nodes_select_list); i++) { + var _node = nodes_select_list[| i]; + cx += _node.x; + cy += _node.y; } + cx = round(cx / ds_list_size(nodes_select_list) / 32) * 32; + cy = round(cy / ds_list_size(nodes_select_list) / 32) * 32; + + var _group = new Node_Group(cx, cy); + for(var i = 0; i < ds_list_size(nodes_select_list); i++) { + _group.add(nodes_select_list[| i]); + } + for(var i = 0; i < ds_list_size(nodes_select_list); i++) { + nodes_select_list[| i].checkConnectGroup(); + } + + ds_list_clear(nodes_select_list); } function doUngroup() { - if(node_focus && variable_struct_exists(node_focus, "nodes")) { - while(!ds_list_empty(node_focus.nodes)) { - node_focus.remove(node_focus.nodes[| 0]); - } - nodeDelete(node_focus); + if(node_focus == noone) return; + if(!variable_struct_exists(node_focus, "nodes")) return; + if(!node_focus.ungroupable) return; + + while(!ds_list_empty(node_focus.nodes)) { + node_focus.remove(node_focus.nodes[| 0]); } + nodeDelete(node_focus); } function doLoop() { if(ds_list_empty(nodes_select_list) && node_focus != noone) ds_list_add(nodes_select_list, node_focus); - if(!ds_list_empty(nodes_select_list)) { - var cx = 0; - var cy = 0; - for(var i = 0; i < ds_list_size(nodes_select_list); i++) { - var _node = nodes_select_list[| i]; - cx += _node.x; - cy += _node.y; - } - cx = round(cx / ds_list_size(nodes_select_list) / 32) * 32; - cy = round(cy / ds_list_size(nodes_select_list) / 32) * 32; - - var _group = Node_create_Iterate(cx, cy); - for(var i = 0; i < ds_list_size(nodes_select_list); i++) { - _group.add(nodes_select_list[| i]); - } - for(var i = 0; i < ds_list_size(nodes_select_list); i++) { - nodes_select_list[| i].checkConnectGroup("loop"); - } - - ds_list_clear(nodes_select_list); + if(ds_list_empty(nodes_select_list)) return; + + var cx = 0; + var cy = 0; + for(var i = 0; i < ds_list_size(nodes_select_list); i++) { + var _node = nodes_select_list[| i]; + cx += _node.x; + cy += _node.y; } + cx = round(cx / ds_list_size(nodes_select_list) / 32) * 32; + cy = round(cy / ds_list_size(nodes_select_list) / 32) * 32; + + var _group = new Node_Iterate(cx, cy); + for(var i = 0; i < ds_list_size(nodes_select_list); i++) { + _group.add(nodes_select_list[| i]); + } + for(var i = 0; i < ds_list_size(nodes_select_list); i++) { + nodes_select_list[| i].checkConnectGroup("loop"); + } + + ds_list_clear(nodes_select_list); } function doFrame() { @@ -831,7 +832,7 @@ function Panel_Graph() : PanelContent() constructor { x1 += 64; y1 += 64; - var f = Node_create_Frame(x0, y0); + var f = new Node_Frame(x0, y0); f.inputs[| 0].setValue([x1 - x0, y1 - y0]); } @@ -868,7 +869,7 @@ function Panel_Graph() : PanelContent() constructor { var _export; if(_path == -1) - _export = nodeBuild("Export", _node.x + _node.w + 64, _node.y); + _export = nodeBuild("Node_Export", _node.x + _node.w + 64, _node.y); else { _export = new Node_Export(_node.x + _node.w + 64, _node.y); _export.inputs[| 1].setFrom(_path); @@ -899,7 +900,7 @@ function Panel_Graph() : PanelContent() constructor { if(_outp == -1) return; - var _canvas = nodeBuild("Canvas", _node.x + _node.w + 64, _node.y); + var _canvas = nodeBuild("Node_Canvas", _node.x + _node.w + 64, _node.y); _canvas.inputs[| 0].setValue([surface_get_width(surf), surface_get_height(surf)]); var _surf = surface_clone(surf); @@ -928,13 +929,13 @@ function Panel_Graph() : PanelContent() constructor { if(_outp == -1) return; - var _canvas = nodeBuild("Canvas", _node.x, _node.y + _node.h + 64); + var _canvas = nodeBuild("Node_Canvas", _node.x, _node.y + _node.h + 64); _canvas.inputs[| 0].setValue([surface_get_width(surf), surface_get_height(surf)]); _canvas.inputs[| 5].setValue(true); _canvas.surface_update(); - var _blend = Node_create_Blend(_node.x + _node.w + 64, _node.y); + var _blend = new Node_Blend(_node.x + _node.w + 64, _node.y); _blend.inputs[| 0].setFrom(_outp); _blend.inputs[| 1].setFrom(_canvas.outputs[| 0]); } @@ -1200,6 +1201,10 @@ function Panel_Graph() : PanelContent() constructor { return node_context[| ds_list_size(node_context) - 1]; } + function getNodeList(cont = getCurrentContext()) { + return cont == -1? NODES : cont.nodes; + } + function dropFile(path) { if(node_hovering && node_hovering.on_dragdrop_file != -1) return node_hovering.on_dragdrop_file(path); diff --git a/scripts/panel_menu/panel_menu.gml b/scripts/panel_menu/panel_menu.gml index df8517a01..be7b7aa0c 100644 --- a/scripts/panel_menu/panel_menu.gml +++ b/scripts/panel_menu/panel_menu.gml @@ -13,7 +13,6 @@ function Panel_Menu() : PanelContent() constructor { NEW(); }, ["", "New file"] ], [ "Open...", function() { LOAD(); }, ["", "Open"] ], - [ "Open...", function() { LOAD(); }, ["", "Open"] ], [ "Save", function() { SAVE(); }, ["", "Save"] ], [ "Save as...", function() { SAVE_AS(); }, ["", "Save as"] ], [ "Recent files", function(_x, _y, _depth) { diff --git a/scripts/render_data/render_data.gml b/scripts/render_data/render_data.gml index 31799c033..373ab2965 100644 --- a/scripts/render_data/render_data.gml +++ b/scripts/render_data/render_data.gml @@ -4,20 +4,24 @@ enum RENDER_TYPE { full = 2 } +global.RENDER_LOG = false; + function __nodeLeafList(_list, _stack) { for( var i = 0; i < ds_list_size(_list); i++ ) { var _node = _list[| i]; - if(_node.active && !is_undefined(_node) && is_struct(_node)) { - var _startNode = true; - for(var j = 0; j < ds_list_size(_node.inputs); j++) { - var _in = _node.inputs[| j]; - _node.triggerRender(); + if(!_node.active) continue; + + var _startNode = true; + for(var j = 0; j < ds_list_size(_node.inputs); j++) { + var _in = _node.inputs[| j]; + _node.triggerRender(); - if(_in.value_from != noone) - _startNode = false; - } - if(_startNode) - ds_stack_push(_stack, _node); + if(_in.value_from != noone && !_in.value_from.node.rendered) + _startNode = false; + } + if(_startNode) { + ds_stack_push(_stack, _node); + printIf(global.RENDER_LOG, "Push node " + _node.name + " to stack"); } } } @@ -25,14 +29,15 @@ function __nodeLeafList(_list, _stack) { function Render(partial = false) { var rendering = noone; var error = 0; + printIf(global.RENDER_LOG, "=== RENDER START ==="); - if(!partial) { + if(!partial || ALWAYS_FULL) { var _key = ds_map_find_first(NODE_MAP); var amo = ds_map_size(NODE_MAP); repeat(amo) { var _node = NODE_MAP[? _key]; - _node.triggerRender(); + _node.setRenderStatus(false); _key = ds_map_find_next(NODE_MAP, _key); } } @@ -50,30 +55,32 @@ function Render(partial = false) { if(instanceof(_node) == "Node_Group_Input") continue; if(instanceof(_node) == "Node_Iterator_Input") continue; - if(_node.active && !_node.rendered) { - var _startNode = true; - for(var j = 0; j < ds_list_size(_node.inputs); j++) { - var _in = _node.inputs[| j]; - if(_in.value_from != noone && !_in.value_from.node.rendered) - _startNode = false; - } - if(_startNode) - ds_stack_push(RENDER_STACK, _node); + if(!_node.active) continue; + if(_node.rendered) continue; + + var _startNode = true; + for(var j = 0; j < ds_list_size(_node.inputs); j++) { + var _in = _node.inputs[| j]; + if(_in.value_from != noone && !_in.value_from.node.rendered) + _startNode = false; + } + if(_startNode) { + ds_stack_push(RENDER_STACK, _node); + printIf(global.RENDER_LOG, " > Push " + _node.name + " node to stack"); } } - var log = false; - printlog("=== RENDER START ==="); // render forward while(!ds_stack_empty(RENDER_STACK)) { rendering = ds_stack_pop(RENDER_STACK); + var txt = rendering.rendered? " [Skip]" : " [Update]"; if(!rendering.rendered) { if(LOADING || APPENDING || rendering.auto_update) rendering.doUpdate(); rendering.setRenderStatus(true); } - printlog("Rendered " + rendering.name); + printIf(global.RENDER_LOG, "Rendered " + rendering.name + " [" + string(instanceof(rendering)) + "]" + txt); if(instanceof(rendering) == "Node_Group") { //Put each input node in group to stack //if(!rendering.isUpdateReady()) continue; @@ -81,49 +88,57 @@ function Render(partial = false) { var _in = rendering.inputs[| i].from; ds_stack_push(RENDER_STACK, _in); - printlog("Push group input " + _in.name + " to stack"); + printIf(global.RENDER_LOG, "Push group input " + _in.name + " to stack"); } } else if(instanceof(rendering) == "Node_Group_Output") { //Group output in-junction connect automatically to parent out-junction rendering.group.setRenderStatus(true); var _ot = rendering.outParent; - printlog("Value to amount " + string(ds_list_size(_ot.value_to))); + printIf(global.RENDER_LOG, "Value to amount " + string(ds_list_size(_ot.value_to))); for(var j = 0; j < ds_list_size(_ot.value_to); j++) { var _to = _ot.value_to[| j]; - printlog("Value to " + _to.name); + printIf(global.RENDER_LOG, "Value to " + _to.name); if(!_to.node.active || _to.value_from == noone) { - printlog("no value from"); + printIf(global.RENDER_LOG, "no value from"); continue; } if(_to.value_from.node != rendering.group) { - printlog("value from not equal group"); + printIf(global.RENDER_LOG, "value from not equal group"); continue; } - printlog("Group output ready " + string(_to.node.isUpdateReady())); + printIf(global.RENDER_LOG, "Group output ready " + string(_to.node.isUpdateReady())); //_to.node.triggerRender(); if(_to.node.isUpdateReady()) { ds_stack_push(RENDER_STACK, _to.node); + printIf(global.RENDER_LOG, "Push node " + _to.node + " to stack"); } } } else if(instanceof(rendering) == "Node_Iterate") { //Put each input node in group to stack + var allReady = true; for(var i = rendering.custom_input_index; i < ds_list_size(rendering.inputs); i++) { var _in = rendering.inputs[| i].from; - if(_in.isUpdateReady()) ds_stack_push(RENDER_STACK, _in); + allReady &= _in.isUpdateReady() + } + + if(allReady) { + for(var i = rendering.custom_input_index; i < ds_list_size(rendering.inputs); i++) { + var _in = rendering.inputs[| i].from; + ds_stack_push(RENDER_STACK, _in); + printIf(global.RENDER_LOG, " > Push " + _in.name + " node to stack"); + } + rendering.initLoop(); } } else if(instanceof(rendering) == "Node_Iterator_Output") { //Check iteration result var _node_it = rendering.group; var _ren = _node_it.iterationStatus(); if(_ren == ITERATION_STATUS.loop) { //Go back to the beginning of the loop, reset render status for leaf node inside? - //show_debug_message("iteration restart"); - var _ot = rendering.group.inputs; - for(var j = rendering.group.custom_input_index; j < ds_list_size(_ot); j++) { - if(_ot[| j].from.isUpdateReady()) ds_stack_push(RENDER_STACK, _ot[| j].from); - } - + printIf(global.RENDER_LOG, " > Loop restart: iteration " + string(rendering.group.iterated)); __nodeLeafList(rendering.group.nodes, RENDER_STACK); + var loopEnt = rendering.inputs[| 2].value_from.node; + ds_stack_push(RENDER_STACK, loopEnt); } else if(_ren == ITERATION_STATUS.complete) { //Go out of loop - //show_debug_message("iteration completed"); + printIf(global.RENDER_LOG, " > Loop completed"); rendering.group.setRenderStatus(true); var _ot = rendering.outParent; for(var j = 0; j < ds_list_size(_ot.value_to); j++) { @@ -134,10 +149,12 @@ function Render(partial = false) { if(_to.node.isUpdateReady()) ds_stack_push(RENDER_STACK, _to.node); } } - } + } else + printIf(global.RENDER_LOG, " > Loop not ready"); } else { //push next node for(var i = 0; i < ds_list_size(rendering.outputs); i++) { var _ot = rendering.outputs[| i]; + if(_ot.type == VALUE_TYPE.node) continue; for(var j = 0; j < ds_list_size(_ot.value_to); j++) { var _to = _ot.value_to[| j]; @@ -147,9 +164,9 @@ function Render(partial = false) { _to.node.triggerRender(); if(_to.node.isUpdateReady()) { ds_stack_push(RENDER_STACK, _to.node); - printlog("Push " + _to.node.name + " node to stack"); + printIf(global.RENDER_LOG, " > Push " + _to.node.name + " node to stack"); } else - printlog(" > Node " + _to.node.name + " not ready"); + printIf(global.RENDER_LOG, " > Node " + _to.node.name + " not ready"); } } } @@ -157,7 +174,7 @@ function Render(partial = false) { //show_debug_message(txt); } - printlog("=== RENDER COMPLETE ==="); + printIf(global.RENDER_LOG, "=== RENDER COMPLETE ===\n"); } /* function renderNodeBackward(_node) { //unused diff --git a/shaders/sh_ani_noise/sh_ani_noise.fsh b/shaders/sh_ani_noise/sh_ani_noise.fsh index bf52a8d5e..e7ee108fe 100644 --- a/shaders/sh_ani_noise/sh_ani_noise.fsh +++ b/shaders/sh_ani_noise/sh_ani_noise.fsh @@ -6,6 +6,7 @@ varying vec4 v_vColour; uniform vec2 noiseAmount; uniform vec2 position; +uniform float angle; uniform float seed; float random (in vec2 st) { @@ -13,7 +14,10 @@ float random (in vec2 st) { } void main() { - vec2 _pos = v_vTexcoord - position; + vec2 pos = v_vTexcoord - position, _pos; + _pos.x = pos.x * cos(angle) - pos.y * sin(angle); + _pos.y = pos.x * sin(angle) + pos.y * cos(angle); + float yy = floor(_pos.y * noiseAmount.y); float xx = (_pos.x + random(vec2(yy))) * noiseAmount.x; float x0 = floor(xx); diff --git a/shaders/sh_grid/sh_grid.fsh b/shaders/sh_grid/sh_grid.fsh index 257b18354..8f1d60e71 100644 --- a/shaders/sh_grid/sh_grid.fsh +++ b/shaders/sh_grid/sh_grid.fsh @@ -11,6 +11,7 @@ uniform float angle; uniform float width; uniform float shift; uniform int shiftAxis; +uniform int height; uniform vec4 col1, col2; uniform int useSampler; @@ -33,14 +34,21 @@ void main() { _pos.y += shiftY; } - vec2 dist = _pos - floor(_pos * scale) / scale; + vec2 sqSt = floor(_pos * scale) / scale; + vec2 dist = _pos - sqSt; float ww = width / 2.; if(useSampler == 0) { - if(dist == clamp(dist, vec2(ww), vec2(1. / scale - ww))) + gl_FragColor = vec4(col2.rgb, 1.); + if(dist == clamp(dist, vec2(ww), vec2(1. / scale - ww))) { gl_FragColor = vec4(col1.rgb, 1.); - else - gl_FragColor = vec4(col2.rgb, 1.); + if(height == 1) { + vec2 nPos = abs(dist * scale - vec2(0.5)) * 2.; + float d = max(nPos.x, nPos.y); + + gl_FragColor = vec4(mix(col1.rgb, col2.rgb, d), 1.); + } + } } else { vec2 uv = fract(_pos * scale); gl_FragColor = texture2D( gm_BaseTexture, uv ); diff --git a/shaders/sh_shape/sh_shape.fsh b/shaders/sh_shape/sh_shape.fsh index 932f6312e..5bf6fe84e 100644 --- a/shaders/sh_shape/sh_shape.fsh +++ b/shaders/sh_shape/sh_shape.fsh @@ -86,8 +86,7 @@ void main() { float d; if(shape == 0) { - vec2 cen = v_vTexcoord - center; - vec2 edgeDist = abs(cen) - scale; + vec2 edgeDist = abs(cen) - 1.; float odist = length(max(edgeDist, 0.)); float idist = min(max(edgeDist.x, edgeDist.y), 0.); d = odist + idist; @@ -107,9 +106,9 @@ void main() { d -= corner; } - d = max(0., min(1., d)); + //d = d; if(drawDF == 1) - color = 1. - d; + color = -d; else if(aa == 0) color = step(d, 0.0); else diff --git a/sprites/s_node_vfx/f3b845f2-652d-40dc-b937-db0717dd9856.png b/sprites/s_node_vfx/f3b845f2-652d-40dc-b937-db0717dd9856.png new file mode 100644 index 000000000..6175f6f44 Binary files /dev/null and b/sprites/s_node_vfx/f3b845f2-652d-40dc-b937-db0717dd9856.png differ diff --git a/sprites/s_node_vfx/layers/f3b845f2-652d-40dc-b937-db0717dd9856/31aa5be2-346b-47f1-8df5-efa8e2db6367.png b/sprites/s_node_vfx/layers/f3b845f2-652d-40dc-b937-db0717dd9856/31aa5be2-346b-47f1-8df5-efa8e2db6367.png new file mode 100644 index 000000000..6175f6f44 Binary files /dev/null and b/sprites/s_node_vfx/layers/f3b845f2-652d-40dc-b937-db0717dd9856/31aa5be2-346b-47f1-8df5-efa8e2db6367.png differ diff --git a/sprites/s_node_vfx/s_node_vfx.yy b/sprites/s_node_vfx/s_node_vfx.yy new file mode 100644 index 000000000..61dfc6b76 --- /dev/null +++ b/sprites/s_node_vfx/s_node_vfx.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_vfx", + "bboxMode": 0, + "collisionKind": 1, + "type": 0, + "origin": 4, + "preMultiplyAlpha": false, + "edgeFiltering": false, + "collisionTolerance": 0, + "swfPrecision": 2.525, + "bbox_left": 1, + "bbox_right": 62, + "bbox_top": 1, + "bbox_bottom": 62, + "HTile": false, + "VTile": false, + "For3D": false, + "DynamicTexturePage": false, + "width": 64, + "height": 64, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "swatchColours": null, + "gridX": 0, + "gridY": 0, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"f3b845f2-652d-40dc-b937-db0717dd9856",}, + ], + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_vfx", + "timeUnits": 1, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "autoRecord": true, + "volume": 1.0, + "length": 1.0, + "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"3f3469b4-a14c-44d2-86ba-2ec82f91c6ff","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"f3b845f2-652d-40dc-b937-db0717dd9856","path":"sprites/s_node_vfx/s_node_vfx.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + ], + "visibleRange": null, + "lockOrigin": false, + "showBackdrop": true, + "showBackdropImage": false, + "backdropImagePath": "", + "backdropImageOpacity": 0.5, + "backdropWidth": 1366, + "backdropHeight": 768, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "xorigin": 32, + "yorigin": 32, + "eventToFunction": {}, + "eventStubScript": null, + }, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"31aa5be2-346b-47f1-8df5-efa8e2db6367","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, + ], + "nineSlice": null, + "parent": { + "name": "icons", + "path": "folders/nodes/icons.yy", + }, +} \ No newline at end of file diff --git a/sprites/s_node_vfx_accel/9fd274a7-436c-40d3-8a13-9e466e7b9e50.png b/sprites/s_node_vfx_accel/9fd274a7-436c-40d3-8a13-9e466e7b9e50.png new file mode 100644 index 000000000..a0dcb012c Binary files /dev/null and b/sprites/s_node_vfx_accel/9fd274a7-436c-40d3-8a13-9e466e7b9e50.png differ diff --git a/sprites/s_node_vfx_accel/layers/9fd274a7-436c-40d3-8a13-9e466e7b9e50/c576db3e-8328-4358-b440-fa7ee3f8b023.png b/sprites/s_node_vfx_accel/layers/9fd274a7-436c-40d3-8a13-9e466e7b9e50/c576db3e-8328-4358-b440-fa7ee3f8b023.png new file mode 100644 index 000000000..a0dcb012c Binary files /dev/null and b/sprites/s_node_vfx_accel/layers/9fd274a7-436c-40d3-8a13-9e466e7b9e50/c576db3e-8328-4358-b440-fa7ee3f8b023.png differ diff --git a/sprites/s_node_vfx_accel/s_node_vfx_accel.yy b/sprites/s_node_vfx_accel/s_node_vfx_accel.yy new file mode 100644 index 000000000..b30581838 --- /dev/null +++ b/sprites/s_node_vfx_accel/s_node_vfx_accel.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_vfx_accel", + "bboxMode": 0, + "collisionKind": 1, + "type": 0, + "origin": 4, + "preMultiplyAlpha": false, + "edgeFiltering": false, + "collisionTolerance": 0, + "swfPrecision": 2.525, + "bbox_left": 4, + "bbox_right": 61, + "bbox_top": 19, + "bbox_bottom": 44, + "HTile": false, + "VTile": false, + "For3D": false, + "DynamicTexturePage": false, + "width": 64, + "height": 64, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "swatchColours": null, + "gridX": 0, + "gridY": 0, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"9fd274a7-436c-40d3-8a13-9e466e7b9e50",}, + ], + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_vfx_accel", + "timeUnits": 1, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "autoRecord": true, + "volume": 1.0, + "length": 1.0, + "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"a6a68c31-3ff0-4263-a48b-60f40450b203","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"9fd274a7-436c-40d3-8a13-9e466e7b9e50","path":"sprites/s_node_vfx_accel/s_node_vfx_accel.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + ], + "visibleRange": null, + "lockOrigin": false, + "showBackdrop": true, + "showBackdropImage": false, + "backdropImagePath": "", + "backdropImageOpacity": 0.5, + "backdropWidth": 1366, + "backdropHeight": 768, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "xorigin": 32, + "yorigin": 32, + "eventToFunction": {}, + "eventStubScript": null, + }, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"c576db3e-8328-4358-b440-fa7ee3f8b023","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, + ], + "nineSlice": null, + "parent": { + "name": "icons", + "path": "folders/nodes/icons.yy", + }, +} \ No newline at end of file diff --git a/sprites/s_node_vfx_attract/39f1843e-51a8-4577-8ba7-0bdf9890b5c0.png b/sprites/s_node_vfx_attract/39f1843e-51a8-4577-8ba7-0bdf9890b5c0.png new file mode 100644 index 000000000..1d70d4abc Binary files /dev/null and b/sprites/s_node_vfx_attract/39f1843e-51a8-4577-8ba7-0bdf9890b5c0.png differ diff --git a/sprites/s_node_vfx_attract/layers/39f1843e-51a8-4577-8ba7-0bdf9890b5c0/11818079-1d14-417f-8bdc-48a97187ef83.png b/sprites/s_node_vfx_attract/layers/39f1843e-51a8-4577-8ba7-0bdf9890b5c0/11818079-1d14-417f-8bdc-48a97187ef83.png new file mode 100644 index 000000000..1d70d4abc Binary files /dev/null and b/sprites/s_node_vfx_attract/layers/39f1843e-51a8-4577-8ba7-0bdf9890b5c0/11818079-1d14-417f-8bdc-48a97187ef83.png differ diff --git a/sprites/s_node_vfx_attract/s_node_vfx_attract.yy b/sprites/s_node_vfx_attract/s_node_vfx_attract.yy new file mode 100644 index 000000000..0c9b0be33 --- /dev/null +++ b/sprites/s_node_vfx_attract/s_node_vfx_attract.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_vfx_attract", + "bboxMode": 0, + "collisionKind": 1, + "type": 0, + "origin": 4, + "preMultiplyAlpha": false, + "edgeFiltering": false, + "collisionTolerance": 0, + "swfPrecision": 2.525, + "bbox_left": 5, + "bbox_right": 57, + "bbox_top": 6, + "bbox_bottom": 62, + "HTile": false, + "VTile": false, + "For3D": false, + "DynamicTexturePage": false, + "width": 64, + "height": 64, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "swatchColours": null, + "gridX": 0, + "gridY": 0, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"39f1843e-51a8-4577-8ba7-0bdf9890b5c0",}, + ], + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_vfx_attract", + "timeUnits": 1, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "autoRecord": true, + "volume": 1.0, + "length": 1.0, + "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"c25fa5f9-3fcc-409e-b73d-2dc107f8b4f5","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"39f1843e-51a8-4577-8ba7-0bdf9890b5c0","path":"sprites/s_node_vfx_attract/s_node_vfx_attract.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + ], + "visibleRange": null, + "lockOrigin": false, + "showBackdrop": true, + "showBackdropImage": false, + "backdropImagePath": "", + "backdropImageOpacity": 0.5, + "backdropWidth": 1366, + "backdropHeight": 768, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "xorigin": 32, + "yorigin": 32, + "eventToFunction": {}, + "eventStubScript": null, + }, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"11818079-1d14-417f-8bdc-48a97187ef83","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, + ], + "nineSlice": null, + "parent": { + "name": "icons", + "path": "folders/nodes/icons.yy", + }, +} \ No newline at end of file diff --git a/sprites/s_node_vfx_destroy/44012381-d674-472c-9711-c6ce75f61bd4.png b/sprites/s_node_vfx_destroy/44012381-d674-472c-9711-c6ce75f61bd4.png new file mode 100644 index 000000000..d1d5d3bf3 Binary files /dev/null and b/sprites/s_node_vfx_destroy/44012381-d674-472c-9711-c6ce75f61bd4.png differ diff --git a/sprites/s_node_vfx_destroy/layers/44012381-d674-472c-9711-c6ce75f61bd4/ebc61f29-d84b-4897-a75a-3f36ccdf01a3.png b/sprites/s_node_vfx_destroy/layers/44012381-d674-472c-9711-c6ce75f61bd4/ebc61f29-d84b-4897-a75a-3f36ccdf01a3.png new file mode 100644 index 000000000..d1d5d3bf3 Binary files /dev/null and b/sprites/s_node_vfx_destroy/layers/44012381-d674-472c-9711-c6ce75f61bd4/ebc61f29-d84b-4897-a75a-3f36ccdf01a3.png differ diff --git a/sprites/s_node_vfx_destroy/s_node_vfx_destroy.yy b/sprites/s_node_vfx_destroy/s_node_vfx_destroy.yy new file mode 100644 index 000000000..0825ff491 --- /dev/null +++ b/sprites/s_node_vfx_destroy/s_node_vfx_destroy.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_vfx_destroy", + "bboxMode": 0, + "collisionKind": 1, + "type": 0, + "origin": 4, + "preMultiplyAlpha": false, + "edgeFiltering": false, + "collisionTolerance": 0, + "swfPrecision": 2.525, + "bbox_left": 11, + "bbox_right": 52, + "bbox_top": 11, + "bbox_bottom": 55, + "HTile": false, + "VTile": false, + "For3D": false, + "DynamicTexturePage": false, + "width": 65, + "height": 64, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "swatchColours": null, + "gridX": 0, + "gridY": 0, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"44012381-d674-472c-9711-c6ce75f61bd4",}, + ], + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_vfx_destroy", + "timeUnits": 1, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "autoRecord": true, + "volume": 1.0, + "length": 1.0, + "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"58e8ea9b-dc54-474a-9a98-f36a319c24ce","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"44012381-d674-472c-9711-c6ce75f61bd4","path":"sprites/s_node_vfx_destroy/s_node_vfx_destroy.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + ], + "visibleRange": null, + "lockOrigin": false, + "showBackdrop": true, + "showBackdropImage": false, + "backdropImagePath": "", + "backdropImageOpacity": 0.5, + "backdropWidth": 1366, + "backdropHeight": 768, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "xorigin": 32, + "yorigin": 32, + "eventToFunction": {}, + "eventStubScript": null, + }, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"ebc61f29-d84b-4897-a75a-3f36ccdf01a3","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, + ], + "nineSlice": null, + "parent": { + "name": "icons", + "path": "folders/nodes/icons.yy", + }, +} \ No newline at end of file diff --git a/sprites/s_node_vfx_render/a36c88ce-d937-4ffe-972a-29b1ea9ed525.png b/sprites/s_node_vfx_render/a36c88ce-d937-4ffe-972a-29b1ea9ed525.png new file mode 100644 index 000000000..07c3b2b51 Binary files /dev/null and b/sprites/s_node_vfx_render/a36c88ce-d937-4ffe-972a-29b1ea9ed525.png differ diff --git a/sprites/s_node_vfx_render/layers/a36c88ce-d937-4ffe-972a-29b1ea9ed525/c08e90bf-b38f-48fa-81b4-cbe10ea801f2.png b/sprites/s_node_vfx_render/layers/a36c88ce-d937-4ffe-972a-29b1ea9ed525/c08e90bf-b38f-48fa-81b4-cbe10ea801f2.png new file mode 100644 index 000000000..07c3b2b51 Binary files /dev/null and b/sprites/s_node_vfx_render/layers/a36c88ce-d937-4ffe-972a-29b1ea9ed525/c08e90bf-b38f-48fa-81b4-cbe10ea801f2.png differ diff --git a/sprites/s_node_vfx_render/s_node_vfx_render.yy b/sprites/s_node_vfx_render/s_node_vfx_render.yy new file mode 100644 index 000000000..df48c1083 --- /dev/null +++ b/sprites/s_node_vfx_render/s_node_vfx_render.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_vfx_render", + "bboxMode": 0, + "collisionKind": 1, + "type": 0, + "origin": 4, + "preMultiplyAlpha": false, + "edgeFiltering": false, + "collisionTolerance": 0, + "swfPrecision": 2.525, + "bbox_left": 8, + "bbox_right": 54, + "bbox_top": 5, + "bbox_bottom": 59, + "HTile": false, + "VTile": false, + "For3D": false, + "DynamicTexturePage": false, + "width": 64, + "height": 64, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "swatchColours": null, + "gridX": 0, + "gridY": 0, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"a36c88ce-d937-4ffe-972a-29b1ea9ed525",}, + ], + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_vfx_render", + "timeUnits": 1, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "autoRecord": true, + "volume": 1.0, + "length": 1.0, + "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"d1f2c2d3-05eb-4560-bc66-cc4c34915cd6","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"a36c88ce-d937-4ffe-972a-29b1ea9ed525","path":"sprites/s_node_vfx_render/s_node_vfx_render.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + ], + "visibleRange": null, + "lockOrigin": false, + "showBackdrop": true, + "showBackdropImage": false, + "backdropImagePath": "", + "backdropImageOpacity": 0.5, + "backdropWidth": 1366, + "backdropHeight": 768, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "xorigin": 32, + "yorigin": 32, + "eventToFunction": {}, + "eventStubScript": null, + }, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"c08e90bf-b38f-48fa-81b4-cbe10ea801f2","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, + ], + "nineSlice": null, + "parent": { + "name": "icons", + "path": "folders/nodes/icons.yy", + }, +} \ No newline at end of file diff --git a/sprites/s_node_vfx_repel/628f50c8-f033-45f4-8032-d1a5495fc412.png b/sprites/s_node_vfx_repel/628f50c8-f033-45f4-8032-d1a5495fc412.png new file mode 100644 index 000000000..8cc5c3147 Binary files /dev/null and b/sprites/s_node_vfx_repel/628f50c8-f033-45f4-8032-d1a5495fc412.png differ diff --git a/sprites/s_node_vfx_repel/layers/628f50c8-f033-45f4-8032-d1a5495fc412/7cf398fa-21e1-4bd9-9b7a-a57652fc84ad.png b/sprites/s_node_vfx_repel/layers/628f50c8-f033-45f4-8032-d1a5495fc412/7cf398fa-21e1-4bd9-9b7a-a57652fc84ad.png new file mode 100644 index 000000000..8cc5c3147 Binary files /dev/null and b/sprites/s_node_vfx_repel/layers/628f50c8-f033-45f4-8032-d1a5495fc412/7cf398fa-21e1-4bd9-9b7a-a57652fc84ad.png differ diff --git a/sprites/s_node_vfx_repel/s_node_vfx_repel.yy b/sprites/s_node_vfx_repel/s_node_vfx_repel.yy new file mode 100644 index 000000000..0e8a59cf4 --- /dev/null +++ b/sprites/s_node_vfx_repel/s_node_vfx_repel.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_vfx_repel", + "bboxMode": 0, + "collisionKind": 1, + "type": 0, + "origin": 4, + "preMultiplyAlpha": false, + "edgeFiltering": false, + "collisionTolerance": 0, + "swfPrecision": 2.525, + "bbox_left": 5, + "bbox_right": 56, + "bbox_top": 4, + "bbox_bottom": 61, + "HTile": false, + "VTile": false, + "For3D": false, + "DynamicTexturePage": false, + "width": 64, + "height": 64, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "swatchColours": null, + "gridX": 0, + "gridY": 0, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"628f50c8-f033-45f4-8032-d1a5495fc412",}, + ], + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_vfx_repel", + "timeUnits": 1, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "autoRecord": true, + "volume": 1.0, + "length": 1.0, + "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"8d19ee0b-7b71-47a0-acd6-c9ef1124191a","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"628f50c8-f033-45f4-8032-d1a5495fc412","path":"sprites/s_node_vfx_repel/s_node_vfx_repel.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + ], + "visibleRange": null, + "lockOrigin": false, + "showBackdrop": true, + "showBackdropImage": false, + "backdropImagePath": "", + "backdropImageOpacity": 0.5, + "backdropWidth": 1366, + "backdropHeight": 768, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "xorigin": 32, + "yorigin": 32, + "eventToFunction": {}, + "eventStubScript": null, + }, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"7cf398fa-21e1-4bd9-9b7a-a57652fc84ad","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, + ], + "nineSlice": null, + "parent": { + "name": "icons", + "path": "folders/nodes/icons.yy", + }, +} \ No newline at end of file diff --git a/sprites/s_node_vfx_spawn/614b2ce4-365f-421b-8095-fd97b441301e.png b/sprites/s_node_vfx_spawn/614b2ce4-365f-421b-8095-fd97b441301e.png new file mode 100644 index 000000000..034eb4538 Binary files /dev/null and b/sprites/s_node_vfx_spawn/614b2ce4-365f-421b-8095-fd97b441301e.png differ diff --git a/sprites/s_node_vfx_spawn/layers/614b2ce4-365f-421b-8095-fd97b441301e/2dae1529-7365-41f7-bc42-a4bafdbec7d2.png b/sprites/s_node_vfx_spawn/layers/614b2ce4-365f-421b-8095-fd97b441301e/2dae1529-7365-41f7-bc42-a4bafdbec7d2.png new file mode 100644 index 000000000..034eb4538 Binary files /dev/null and b/sprites/s_node_vfx_spawn/layers/614b2ce4-365f-421b-8095-fd97b441301e/2dae1529-7365-41f7-bc42-a4bafdbec7d2.png differ diff --git a/sprites/s_node_vfx_spawn/s_node_vfx_spawn.yy b/sprites/s_node_vfx_spawn/s_node_vfx_spawn.yy new file mode 100644 index 000000000..156b42008 --- /dev/null +++ b/sprites/s_node_vfx_spawn/s_node_vfx_spawn.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_vfx_spawn", + "bboxMode": 0, + "collisionKind": 1, + "type": 0, + "origin": 4, + "preMultiplyAlpha": false, + "edgeFiltering": false, + "collisionTolerance": 0, + "swfPrecision": 2.525, + "bbox_left": 14, + "bbox_right": 50, + "bbox_top": 4, + "bbox_bottom": 60, + "HTile": false, + "VTile": false, + "For3D": false, + "DynamicTexturePage": false, + "width": 64, + "height": 64, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "swatchColours": null, + "gridX": 0, + "gridY": 0, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"614b2ce4-365f-421b-8095-fd97b441301e",}, + ], + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_vfx_spawn", + "timeUnits": 1, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "autoRecord": true, + "volume": 1.0, + "length": 1.0, + "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"530d12bb-cbaf-4a6f-9835-b81a269c1082","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"614b2ce4-365f-421b-8095-fd97b441301e","path":"sprites/s_node_vfx_spawn/s_node_vfx_spawn.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + ], + "visibleRange": null, + "lockOrigin": false, + "showBackdrop": true, + "showBackdropImage": false, + "backdropImagePath": "", + "backdropImageOpacity": 0.5, + "backdropWidth": 1366, + "backdropHeight": 768, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "xorigin": 32, + "yorigin": 32, + "eventToFunction": {}, + "eventStubScript": null, + }, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"2dae1529-7365-41f7-bc42-a4bafdbec7d2","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, + ], + "nineSlice": null, + "parent": { + "name": "icons", + "path": "folders/nodes/icons.yy", + }, +} \ No newline at end of file diff --git a/sprites/s_node_vfx_turb/551c12fc-ee5e-46b1-a349-cd6760cd64f0.png b/sprites/s_node_vfx_turb/551c12fc-ee5e-46b1-a349-cd6760cd64f0.png new file mode 100644 index 000000000..0b1d17d48 Binary files /dev/null and b/sprites/s_node_vfx_turb/551c12fc-ee5e-46b1-a349-cd6760cd64f0.png differ diff --git a/sprites/s_node_vfx_turb/layers/551c12fc-ee5e-46b1-a349-cd6760cd64f0/38ffbc13-493f-461f-b24c-e3e2251644d4.png b/sprites/s_node_vfx_turb/layers/551c12fc-ee5e-46b1-a349-cd6760cd64f0/38ffbc13-493f-461f-b24c-e3e2251644d4.png new file mode 100644 index 000000000..0b1d17d48 Binary files /dev/null and b/sprites/s_node_vfx_turb/layers/551c12fc-ee5e-46b1-a349-cd6760cd64f0/38ffbc13-493f-461f-b24c-e3e2251644d4.png differ diff --git a/sprites/s_node_vfx_turb/s_node_vfx_turb.yy b/sprites/s_node_vfx_turb/s_node_vfx_turb.yy new file mode 100644 index 000000000..43e3713da --- /dev/null +++ b/sprites/s_node_vfx_turb/s_node_vfx_turb.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_vfx_turb", + "bboxMode": 0, + "collisionKind": 1, + "type": 0, + "origin": 4, + "preMultiplyAlpha": false, + "edgeFiltering": false, + "collisionTolerance": 0, + "swfPrecision": 2.525, + "bbox_left": 13, + "bbox_right": 56, + "bbox_top": 9, + "bbox_bottom": 52, + "HTile": false, + "VTile": false, + "For3D": false, + "DynamicTexturePage": false, + "width": 65, + "height": 64, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "swatchColours": null, + "gridX": 0, + "gridY": 0, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"551c12fc-ee5e-46b1-a349-cd6760cd64f0",}, + ], + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_vfx_turb", + "timeUnits": 1, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "autoRecord": true, + "volume": 1.0, + "length": 1.0, + "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"6ceadd97-7fb3-4ee0-96f0-0c6afe918565","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"551c12fc-ee5e-46b1-a349-cd6760cd64f0","path":"sprites/s_node_vfx_turb/s_node_vfx_turb.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + ], + "visibleRange": null, + "lockOrigin": false, + "showBackdrop": true, + "showBackdropImage": false, + "backdropImagePath": "", + "backdropImageOpacity": 0.5, + "backdropWidth": 1366, + "backdropHeight": 768, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "xorigin": 32, + "yorigin": 32, + "eventToFunction": {}, + "eventStubScript": null, + }, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"38ffbc13-493f-461f-b24c-e3e2251644d4","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, + ], + "nineSlice": null, + "parent": { + "name": "icons", + "path": "folders/nodes/icons.yy", + }, +} \ No newline at end of file diff --git a/sprites/s_node_vfx_vortex/cada2b1a-96c9-48a1-8a0a-25dd1da45c0f.png b/sprites/s_node_vfx_vortex/cada2b1a-96c9-48a1-8a0a-25dd1da45c0f.png new file mode 100644 index 000000000..ac0caea51 Binary files /dev/null and b/sprites/s_node_vfx_vortex/cada2b1a-96c9-48a1-8a0a-25dd1da45c0f.png differ diff --git a/sprites/s_node_vfx_vortex/layers/cada2b1a-96c9-48a1-8a0a-25dd1da45c0f/ccde3f97-f951-47b5-8691-8666c369bac6.png b/sprites/s_node_vfx_vortex/layers/cada2b1a-96c9-48a1-8a0a-25dd1da45c0f/ccde3f97-f951-47b5-8691-8666c369bac6.png new file mode 100644 index 000000000..ac0caea51 Binary files /dev/null and b/sprites/s_node_vfx_vortex/layers/cada2b1a-96c9-48a1-8a0a-25dd1da45c0f/ccde3f97-f951-47b5-8691-8666c369bac6.png differ diff --git a/sprites/s_node_vfx_vortex/s_node_vfx_vortex.yy b/sprites/s_node_vfx_vortex/s_node_vfx_vortex.yy new file mode 100644 index 000000000..54b6ce76a --- /dev/null +++ b/sprites/s_node_vfx_vortex/s_node_vfx_vortex.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_vfx_vortex", + "bboxMode": 0, + "collisionKind": 1, + "type": 0, + "origin": 4, + "preMultiplyAlpha": false, + "edgeFiltering": false, + "collisionTolerance": 0, + "swfPrecision": 2.525, + "bbox_left": 11, + "bbox_right": 53, + "bbox_top": 4, + "bbox_bottom": 59, + "HTile": false, + "VTile": false, + "For3D": false, + "DynamicTexturePage": false, + "width": 64, + "height": 64, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "swatchColours": null, + "gridX": 0, + "gridY": 0, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"cada2b1a-96c9-48a1-8a0a-25dd1da45c0f",}, + ], + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_vfx_vortex", + "timeUnits": 1, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "autoRecord": true, + "volume": 1.0, + "length": 1.0, + "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"e424f436-cd0f-492d-933a-d709b5ce8ed6","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"cada2b1a-96c9-48a1-8a0a-25dd1da45c0f","path":"sprites/s_node_vfx_vortex/s_node_vfx_vortex.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + ], + "visibleRange": null, + "lockOrigin": false, + "showBackdrop": true, + "showBackdropImage": false, + "backdropImagePath": "", + "backdropImageOpacity": 0.5, + "backdropWidth": 1366, + "backdropHeight": 768, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "xorigin": 32, + "yorigin": 32, + "eventToFunction": {}, + "eventStubScript": null, + }, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"ccde3f97-f951-47b5-8691-8666c369bac6","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, + ], + "nineSlice": null, + "parent": { + "name": "icons", + "path": "folders/nodes/icons.yy", + }, +} \ No newline at end of file diff --git a/sprites/s_node_vfx_wind/37418650-4652-4d81-9692-a04c8aac0d9d.png b/sprites/s_node_vfx_wind/37418650-4652-4d81-9692-a04c8aac0d9d.png new file mode 100644 index 000000000..1d4332e62 Binary files /dev/null and b/sprites/s_node_vfx_wind/37418650-4652-4d81-9692-a04c8aac0d9d.png differ diff --git a/sprites/s_node_vfx_wind/layers/37418650-4652-4d81-9692-a04c8aac0d9d/1827712d-ce48-485f-b503-aa2826ed5ab7.png b/sprites/s_node_vfx_wind/layers/37418650-4652-4d81-9692-a04c8aac0d9d/1827712d-ce48-485f-b503-aa2826ed5ab7.png new file mode 100644 index 000000000..1d4332e62 Binary files /dev/null and b/sprites/s_node_vfx_wind/layers/37418650-4652-4d81-9692-a04c8aac0d9d/1827712d-ce48-485f-b503-aa2826ed5ab7.png differ diff --git a/sprites/s_node_vfx_wind/s_node_vfx_wind.yy b/sprites/s_node_vfx_wind/s_node_vfx_wind.yy new file mode 100644 index 000000000..8f584768d --- /dev/null +++ b/sprites/s_node_vfx_wind/s_node_vfx_wind.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_vfx_wind", + "bboxMode": 0, + "collisionKind": 1, + "type": 0, + "origin": 4, + "preMultiplyAlpha": false, + "edgeFiltering": false, + "collisionTolerance": 0, + "swfPrecision": 2.525, + "bbox_left": 5, + "bbox_right": 55, + "bbox_top": 6, + "bbox_bottom": 59, + "HTile": false, + "VTile": false, + "For3D": false, + "DynamicTexturePage": false, + "width": 65, + "height": 64, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "swatchColours": null, + "gridX": 0, + "gridY": 0, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"37418650-4652-4d81-9692-a04c8aac0d9d",}, + ], + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_vfx_wind", + "timeUnits": 1, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "autoRecord": true, + "volume": 1.0, + "length": 1.0, + "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"97fcfe95-badb-4bd8-9fd4-d36c8502e001","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"37418650-4652-4d81-9692-a04c8aac0d9d","path":"sprites/s_node_vfx_wind/s_node_vfx_wind.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],}, + ], + "visibleRange": null, + "lockOrigin": false, + "showBackdrop": true, + "showBackdropImage": false, + "backdropImagePath": "", + "backdropImageOpacity": 0.5, + "backdropWidth": 1366, + "backdropHeight": 768, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "xorigin": 32, + "yorigin": 32, + "eventToFunction": {}, + "eventStubScript": null, + }, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"1827712d-ce48-485f-b503-aa2826ed5ab7","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",}, + ], + "nineSlice": null, + "parent": { + "name": "icons", + "path": "folders/nodes/icons.yy", + }, +} \ No newline at end of file