pax_global_header00006660000000000000000000000064135422656170014525gustar00rootroot0000000000000052 comment=19f54ea37ae2422b818c4e28d67268e76316f021 surgescript-0.5.4/000077500000000000000000000000001354226561700141055ustar00rootroot00000000000000surgescript-0.5.4/.gitignore000066400000000000000000000006751354226561700161050ustar00rootroot00000000000000# Specifies intentionally untracked files to ignore when using Git # http://git-scm.com/docs/gitignore # vscode .vscode .vscode/* !.vscode/settings.json !.vscode/tasks.json !.vscode/launch.json !.vscode/extensions.json # vim # swap [._]*.s[a-v][a-z] [._]*.sw[a-p] [._]s[a-v][a-z] [._]sw[a-p] # session Session.vim # temporary .netrwhist *~ # mine *.o *.a libsurgescript.a surgescript.exe surgescript site/ build/ private/ CMakeFiles/ !src/** surgescript-0.5.4/CHANGES.md000066400000000000000000000027061354226561700155040ustar00rootroot00000000000000# 0.5.4 - September 23rd, 2019 * Performance optimizations * Improved the built-in pseudo-random number generator * Introduced the @Package annotation * Trailing commas are now accepted when declaring Arrays & Dictionaries * Added tree traversal routines: Object.findObjects() and similar others * Added Object.__arity(), Math.signum(), Time.now * New option flags for the parser * Updated the documentation * Bugfixes and general improvements # 0.5.3 - March 20th, 2019 * Introduced the remainder operator (%) * Introduced the 'caller' keyword * Introduced the 'readonly' keyword * Improved the 'timeout' feature * Added the 'assert' feature * Added Object.__file, Math.NaN * Added utility functions for Arrays and Strings * Removed Transform2D from the core lib * The parser now accepts option flags * Bugfixes and performance optimizations * Updated documentation * General improvements # 0.5.2 - May 31st, 2018 * Introduced the Plugin system * Introduced the Date object for date and time routines * Now representing numbers as 64-bit floating point values * Performance optimizations * Added Object.__invoke() * Updated the naming convention of getters/setters * Bugfixes and general improvements # 0.5.1 - May 5th, 2018 * SurgeScript now compiles as a static library * Introduced the header for ease of use * Improved compiling-related data * Improved documentation * Small improvements to the language # 0.5.0 - April 15th, 2018 * Initial releasesurgescript-0.5.4/CMakeLists.txt000066400000000000000000000077131354226561700166550ustar00rootroot00000000000000# ------------------------------------------------------------------------------ # SurgeScript # A scripting language for games # Copyright 2016-2019 Alexandre Martins # ------------------------------------------------------------------------------ # Project info cmake_minimum_required(VERSION 3.0.2) project(surgescript LANGUAGES C) set(CMAKE_C_STANDARD 99) # Sources set( SURGESCRIPT_SOURCES src/surgescript/compiler/asm.c src/surgescript/compiler/lexer.c src/surgescript/compiler/parser.c src/surgescript/compiler/symtable.c src/surgescript/compiler/token.c src/surgescript/runtime/heap.c src/surgescript/runtime/object.c src/surgescript/runtime/object_manager.c src/surgescript/runtime/program.c src/surgescript/runtime/program_pool.c src/surgescript/runtime/renv.c src/surgescript/runtime/sslib/application.c src/surgescript/runtime/sslib/arguments.c src/surgescript/runtime/sslib/array.c src/surgescript/runtime/sslib/boolean.c src/surgescript/runtime/sslib/console.c src/surgescript/runtime/sslib/date.c src/surgescript/runtime/sslib/dictionary.c src/surgescript/runtime/sslib/gc.c src/surgescript/runtime/sslib/math.c src/surgescript/runtime/sslib/number.c src/surgescript/runtime/sslib/object.c src/surgescript/runtime/sslib/plugin.c src/surgescript/runtime/sslib/string.c src/surgescript/runtime/sslib/surgescript.c src/surgescript/runtime/sslib/system.c src/surgescript/runtime/sslib/tags.c src/surgescript/runtime/sslib/temp.c src/surgescript/runtime/sslib/time.c src/surgescript/runtime/stack.c src/surgescript/runtime/tag_system.c src/surgescript/runtime/variable.c src/surgescript/runtime/vm.c src/surgescript/util/transform.c src/surgescript/util/utf8.c src/surgescript/util/util.c src/surgescript/util/xoroshiro128plus.c ) # Headers set( SURGESCRIPT_HEADERS src/surgescript/compiler/asm.h src/surgescript/compiler/lexer.h src/surgescript/compiler/nodecontext.h src/surgescript/compiler/parser.h src/surgescript/compiler/symtable.h src/surgescript/compiler/token.h src/surgescript/runtime/heap.h src/surgescript/runtime/object.h src/surgescript/runtime/object_manager.h src/surgescript/runtime/program.h src/surgescript/runtime/program_operators.h src/surgescript/runtime/program_pool.h src/surgescript/runtime/renv.h src/surgescript/runtime/sslib/sslib.h src/surgescript/runtime/stack.h src/surgescript/runtime/tag_system.h src/surgescript/runtime/variable.h src/surgescript/runtime/vm.h src/surgescript/util/fasthash.h src/surgescript/util/ssarray.h src/surgescript/util/transform.h src/surgescript/util/utf8.h src/surgescript/util/uthash.h src/surgescript/util/util.h src/surgescript.h ) # Output folder set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}) set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}) set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}) # Library add_library(surgescript STATIC ${SURGESCRIPT_SOURCES} ${SURGESCRIPT_HEADERS}) target_link_libraries(surgescript m) # Executable add_executable(surgescript.bin src/main.c) target_link_libraries(surgescript.bin surgescript) target_include_directories(surgescript.bin PRIVATE src) set_target_properties(surgescript.bin PROPERTIES OUTPUT_NAME surgescript) # Windows icon if(WIN32 AND MINGW) if(NOT CMAKE_RC_COMPILER) set(CMAKE_RC_COMPILER windres) endif() execute_process(COMMAND "${CMAKE_RC_COMPILER}" -O coff -o "${CMAKE_CURRENT_BINARY_DIR}/iconwin.res" -i "${CMAKE_SOURCE_DIR}/src/surgescript/resources/iconwin.rc" -I "${CMAKE_SOURCE_DIR}") set_target_properties(surgescript.bin PROPERTIES LINK_FLAGS "-static-libgcc \"${CMAKE_CURRENT_BINARY_DIR}/iconwin.res\"") endif() # Installation rules install(DIRECTORY src/ DESTINATION include FILES_MATCHING PATTERN "*.h") install(TARGETS surgescript DESTINATION lib) install(TARGETS surgescript.bin DESTINATION bin) surgescript-0.5.4/LICENSE000066400000000000000000000261361354226561700151220ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. surgescript-0.5.4/README.md000066400000000000000000000104771354226561700153750ustar00rootroot00000000000000SurgeScript: a scripting language for games =========================================== Surge Unleash your creativity! ------------------------ SurgeScript is a scripting language for games. It empowers you to unleash your creativity and build your own amazing interactive content! It's such a joy to use SurgeScript! You will love it! **First time here?**
Go to the [Welcome page](https://alemart.github.io/surgescript). **Where to get it?**
Get it on the [Download page](https://alemart.github.io/surgescript/download). **Need help?**
Feel free to [contact the developer](https://github.com/alemart). The 15-second example --------------------- The following script prints a message to the screen: ``` // My first application object "Application" { state "main" { Console.print("Hello, world!"); Application.exit(); } } ``` To test this script, save it to *hello.ss* and run: ``` surgescript hello.ss ``` You'll see: ``` Hello, world! ``` FAQ --- ##### What is SurgeScript? SurgeScript is a scripting language for games. It lets you unleash your creativity and build your own amazing interactive content! ##### How do I learn SurgeScript? Go to the [SurgeScript Crash Course](https://alemart.github.io/surgescript/)! Also take a look on the [video tutorials](https://youtube.com/alemart88) and on the [examples](examples). ##### Who created SurgeScript? SurgeScript has been created by [Alexandre Martins](https://github.com/alemart), a computer scientist from Brazil. He has also created the [Open Surge game engine](http://opensurge2d.org), hence the name SurgeScript. ##### Why use SurgeScript? Unlike other programming languages, SurgeScript has been designed with the specific needs of games in mind. Its features include: - The state-machine pattern: objects are state machines - The composition approach: you may design complex objects and behaviors by means of composition - The hierarchy system: objects have a parent and may have children, in a tree-like structure - The game loop: it's defined implicitly Other benefits include: - Small footprint, easy to integrate - C-like syntax, including plenty of features - Automatic garbage collection - Easy to extend via Plugins - It's free and open source software These features come from the experience of the developer dealing with game engines, applications related to computer graphics and so on. Some of the best practices have been incorporated into the language itself, making things really easy for developers and modders. ##### How do I compile SurgeScript? If you're using [Open Surge](http://opensurge2d.org), you don't need to compile SurgeScript. It's compiled for you. If you want to compile SurgeScript by yourself, you'll need a C compiler and [CMake](https://cmake.org). First of all, please download the source code: ``` git clone https://github.com/alemart/surgescript.git cd surgescript ``` You may compile SurgeScript as follows: ``` mkdir build && cd build cmake .. make ``` A **surgescript** executable will be available on the project folder for testing scripts. Additionally, SurgeScript will also be compiled as a static library. To perform a system-wide install, run: ``` sudo make install ``` **Linux users:** the installation folder defaults to */usr/local*. If you want to change it (optional), call `cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/install` before running make. ##### How do I build the documentation? You'll need [mkdocs](http://www.mkdocs.org). After you get the sources, go to the project folder and run: ``` mkdocs build ``` The documentation will be available in the *site/* subdirectory. ##### How do I embed SurgeScript into my project? SurgeScript is available as a library. If you're a C developer, you may embed SurgeScript into your project by studying the *main.c* file (located in the *src/* folder). The steps are: 1. Create a SurgeScript Virtual Machine (VM). 2. Insert the scripts you want into the VM (let it compile the scripts). 3. Launch the VM. 4. In your game loop, update the VM. 5. Once you're done, release the VM. You'll need to `#include ` in your code and link your project with *-lsurgescript -lm*. Additionally, you may call C code from SurgeScript via *binding*. See *src/surgescript/runtime/sslib/* for more information. surgescript-0.5.4/cmake/000077500000000000000000000000001354226561700151655ustar00rootroot00000000000000surgescript-0.5.4/cmake/toolchain-mingw.cmake000066400000000000000000000037461354226561700213000ustar00rootroot00000000000000# -------------------------- # Cross-compiling with MinGW # -------------------------- # Use the commands below to build the Windows version of SurgeScript with MinGW: # # mkdir build && cd build # cmake .. \ # -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain-mingw.cmake # make && sudo make install # # This is for cross-compiling only. # Set the system name set(CMAKE_SYSTEM_NAME Windows) # Set the location of the C compiler and of the target environment (MINGDIR) # The paths below are taken from the Allegro 5 build system; if MinGW isn't # found automatically in your system, please adjust the paths manually: if(EXISTS /usr/i586-mingw32msvc) set(CMAKE_C_COMPILER i586-mingw32msvc-gcc) set(CMAKE_CXX_COMPILER i586-mingw32msvc-g++) set(CMAKE_RC_COMPILER i586-mingw32msvc-windres) set(CMAKE_FIND_ROOT_PATH /usr/i586-mingw32msvc) elseif(EXISTS /usr/i686-w64-mingw32) set(CMAKE_C_COMPILER i686-w64-mingw32-gcc) set(CMAKE_CXX_COMPILER i686-w64-mingw32-g++) set(CMAKE_RC_COMPILER i686-w64-mingw32-windres) set(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32) set(CMAKE_AR:FILEPATH /usr/bin/i686-w64-mingw32-ar) elseif(EXISTS /opt/mingw) set(CMAKE_C_COMPILER /opt/mingw/usr/bin/i686-pc-mingw32-gcc) set(CMAKE_CXX_COMPILER /opt/mingw/usr/bin/i686-pc-mingw32-g++) set(CMAKE_RC_COMPILER /opt/mingw/usr/bin/i686-pc-mingw32-windres) set(CMAKE_FIND_ROOT_PATH /opt/mingw/usr/i686-pc-mingw32) else() set(CMAKE_C_COMPILER /usr/local/cross-tools/bin/i386-mingw32-gcc) set(CMAKE_CXX_COMPILER /usr/local/cross-tools/bin/i386-mingw32-g++) set(CMAKE_RC_COMPILER /usr/local/cross-tools/bin/i386-mingw32-windres) set(CMAKE_FIND_ROOT_PATH /usr/local/cross-tools) endif() # Install prefix set(CMAKE_INSTALL_PREFIX "${CMAKE_FIND_ROOT_PATH}" CACHE PATH "Install path prefix, prepended onto install directories.") # Other settings set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) surgescript-0.5.4/docs/000077500000000000000000000000001354226561700150355ustar00rootroot00000000000000surgescript-0.5.4/docs/download.md000066400000000000000000000021731354226561700171710ustar00rootroot00000000000000Download SurgeScript ==================== There are two ways to get SurgeScript: - The first is to [get Open Surge](#open-surge). This is recommended for most users. - The second is to [get the standalone version](#standalone-version) of the language. Open Surge ---------- To get Open Surge, visit [opensurge2d.org](http://opensurge2d.org) and follow the instructions there. When you get Open Surge, you also get a full game engine featuring SurgeScript. This allows you to create your own scripts and games with plenty of interactivity and ease. Once you download Open Surge, the next step is to [create your first script](/tutorials/hello). Standalone version ------------------ To get the standalone version, go to the [SurgeScript page on GitHub](https://github.com/alemart/surgescript). There you'll find instructions on how to compile SurgeScript. When you compile SurgeScript, you'll end up with a text-only program. There are no graphics and no game engine is attached to it. You can try your scripts using the command line. Once you get the standalone version, the next step is to [create your first script](/tutorials/hello). surgescript-0.5.4/docs/engine/000077500000000000000000000000001354226561700163025ustar00rootroot00000000000000surgescript-0.5.4/docs/engine/actor.md000066400000000000000000000033211354226561700177330ustar00rootroot00000000000000Actor ===== The Actor component is used to associate a sprite to a target object. The target object is required to be an [entity](/engine/entity). It's recommended to use only one actor per entity. Factory ------- #### Actor `Actor(sprite)` Spawns a new Actor component with the given sprite name. *Arguments* * `sprite`: string. The name of the sprite (defined in the *sprites/* folder). *Returns* An Actor component. *Example* ``` using SurgeEngine.Actor; object "SurgeTest" is "entity" { // spawns an Actor with the SurgeTest sprite actor = Actor("SurgeTest"); state "main" { } } ``` Properties ---------- #### anim `anim`: number. A shortcut to `animation.id`: an integer corresponding to the animation number. Defaults to 0. #### animation `animation`: [Animation](/engine/animation) object, read-only. Reference to the Animation object of the Actor. #### alpha `alpha`: number. Opacity value, ranging from zero (0% opaque) to one (100% opaque). Defaults to 1.0. #### entity `entity`: object, read-only. The entity associated with this component. #### offset `offset`: [Vector2](/engine/vector2) object. A *(x,y)* offset relative to the parent object. Defaults to zero. #### hflip `hflip`: boolean. Should the actor be flipped horizontally? Defaults to `false`. #### vflip `vflip`: boolean. Should the actor be flipped vertically? Defaults to `false`. #### visible `visible`: boolean. Should the actor be rendered? Defaults to `true`. #### width `width`: number, read-only. The width of the actor. #### height `height`: number, read-only. The height of the actor. #### zindex `zindex`: number. Objects with greater zindex are rendered in front of others. Defaults to 0.5. surgescript-0.5.4/docs/engine/animation.md000066400000000000000000000035241354226561700206070ustar00rootroot00000000000000Animation ========= Animation objects are used to gather data about specific animations. Although you can't spawn Animation objects directly, you can access them via other objects such as [Actor](/engine/actor) and [Player](/engine/player). *Example* ``` using SurgeEngine.Actor; object "MyExplosion" is "entity", "disposable", "private" { actor = Actor("MyExplosion"); state "main" { if(actor.animation.finished) destroy(); } } ``` Properties ---------- #### id `id`: number. The number of the current animation, defined in a .spr file. #### sprite `sprite`: string, read-only. The name of the sprite, defined in a .spr file. #### finished `finished`: boolean, read-only. Will be true if the current animation has finished playing. #### hotspot `hotspot`: [Vector2](/engine/vector2) object, read-only. The position of the hot spot of the current animation. #### fps `fps`: number, read-only. Frames per second of the current animation. #### repeats `repeats`: boolean, read-only. Does the current animation repeat itself? #### frameCount `frameCount`: number, read-only. The number of frames of the current animation. #### frame `frame`: number. The current frame of the animation: an integer between `0` and `frameCount - 1`, inclusive. #### speedFactor `speedFactor`: number. While the [FPS](#fps) rate controls the speed of the animation, the speed factor gives you an additional degree of control. This is a multiplier that defaults to 1.0, meaning that the animation will run using its normal speed. If it's set to 2.0, it will run using twice that speed. A value of 0.5 means half the speed, and so on. #### sync `sync`: boolean. Is the current animation is synchronized? A synchronized animation is a repeating animation that displays the same frame across multiple sprites. Defaults to `false`. surgescript-0.5.4/docs/engine/behavior.md000066400000000000000000000037221354226561700204270ustar00rootroot00000000000000Behavior ======== A behavior is an object that, when spawned as a child of an [entity](/engine/entity), adds a specific behavior to that entity. Example: you can add a behavior to give a [Directional Movement](/engine/directional_movement) to an entity, so you don't need to code that movement yourself. Although the use of behaviors is not mandatory, they greatly simplify the development of your entities. An important aspect of using behaviors is that you can create your own. You can also reuse them in many of your entities and share them with others. Behavior objects should be built in a generic way, so that they can be reused throughout multiple entities. Behavior objects must be tagged *behavior* and are supposed to be spawned as direct children of entities. They should also implement the protocol (properties, methods) described below. The engine provides a few behaviors by default, and they have been documented in this manual. *Example* ``` // // The example below shows an entity with 2 behaviors: // // - Enemy: it makes the entity behave like an enemy // (it can hit the player, or be defeated) // // - DirectionalMovement: it makes the entity move // in a certain direction, with a certain speed // using SurgeEngine.Actor; using SurgeEngine.Vector2; using SurgeEngine.Behaviors.Enemy; using SurgeEngine.Behaviors.DirectionalMovement; // Mosquito is a flying baddie object "Mosquito" is "entity", "enemy" { actor = Actor("Mosquito"); enemy = Enemy(); movement = DirectionalMovement(); state "main" { actor.hflip = true; // flip the sprite horizontally movement.direction = Vector2.left; movement.speed = 60; } } ``` Properties ---------- #### entity `entity`: object, read-only. The [entity](/engine/entity) associated with this behavior. This is a convenient alias to the parent object. #### enabled `enabled`: boolean. Is the behavior enabled? The default value is `true`, i.e., behaviors are enabled by default. surgescript-0.5.4/docs/engine/brick.md000066400000000000000000000040361354226561700177210ustar00rootroot00000000000000Brick ===== The Brick component is used to create brick-like objects, or bricks endowed with scripting capabilities. This allows you to create elevators, conditional barriers (e.g., doors), movable platforms with custom trajectories, and much more. The Brick component only affects collisions. The object that uses it is required to be an [entity](/engine/entity). **This component won't do any rendering.** Therefore, it's typically used in conjunction with the [Actor](/engine/actor) component. *Example* ``` using SurgeEngine.Actor; using SurgeEngine.Brick; object "On/Off Platform" is "entity" { actor = Actor("On/Off Platform"); // for rendering brick = Brick("On/Off Platform"); // for collision state "main" { if(timeout(2.0)) { brick.enabled = false; actor.visible = false; state = "disabled"; } } state "disabled" { if(timeout(2.0)) { brick.enabled = true; actor.visible = true; state = "main"; } } } ``` Factory ------- #### Brick `Brick(spriteName)` Spawns a new Brick component. Just like regular bricks, a Brick component has a collision mask associated with it. By default, the collision mask will be computed according to the animation 0 of the sprite named `spriteName`. *Arguments* * `spriteName`: string. The name of a sprite. *Returns* A new Brick component. Properties ---------- #### enabled `enabled`: boolean. Whether the Brick component should affect collisions or not. Defaults to `true`. #### type `type`: string. The type of the Brick component specifies how it affects collisions. This value must be either *"solid"* or *"cloud"*. Defaults to *"solid"*. #### layer `layer`: string. Should the Brick component be tied to a specific layer? If so, which layer? This value must be one of the following: *"green"*, *"yellow"*, *"default"*. Defaults to *"default"*. #### offset `offset`: [Vector2](/engine/vector2) object. A *(x,y)* offset relative to the parent object. Defaults to zero. surgescript-0.5.4/docs/engine/camera.md000066400000000000000000000030771354226561700200630ustar00rootroot00000000000000Camera ====== The Camera object can be used to control what content (in world space) is rendered to the screen. The Camera is represented by a 2-dimensional point in world space that is mapped to the center of the screen. > **HUD elements** > > Objects tagged as *"detached"* do not follow the camera. They are not in world space, but in screen space. This is useful for creating HUD elements. *Example* ``` // Import the Camera object using SurgeEngine.Camera; // Reading the Camera status // This app prints the position of the camera at every second object "Application" { state "main" { if(timeout(1)) state = "print"; } state "print" { Console.print(Camera.position); state = "main"; } } ``` Properties ---------- #### position `position`: [Vector2](/engine/vector2) object. The position of the camera in world space. #### locked `locked`: boolean, read-only. Is the camera locked to a certain area in space? Defaults to `false`. Functions --------- #### lock `lock(left, top, right, bottom)` Locks the camera to a certain rectangular area in space. All coordinates are given in pixels and represent the boundaries of the rectangular area. They are such that `left` <= `right` and `top` <= `bottom`. *Arguments* * `left`: number. A x-coordinate in world space. * `top`: number. A y-coordinate in world space. * `right`: number. A x-coordinate in world space. * `bottom`: number. A y-coordinate in world space. #### unlock `unlock()` Unlocks the camera. If unlocked, the camera moves freely throughout the space. surgescript-0.5.4/docs/engine/circular_movement.md000066400000000000000000000042241354226561700223440ustar00rootroot00000000000000Circular Movement ================= The Circular Movement [behavior](/engine/behavior) makes the associated [entity](/engine/entity) perform a circular orbit on the 2D plane. Its basic parameters are: * A radius, given in pixels * A movement rate, given in cycles per second Other parameters include: a movement scale in both X and Y axes (making it an elliptic orbit), a flag telling whether the movement should be clockwise or not, and so on. *Example* ``` // // The example below shows how to make an entity move along // a circle of 128 pixels of radius at a rate of 0.25 cycles // per second (i.e., it takes one second to complete 25% of // a cycle, or 4 seconds to complete a cycle) // using SurgeEngine.Actor; using SurgeEngine.Vector2; using SurgeEngine.Behaviors.CircularMovement; object "Simple Ball" is "entity" { actor = Actor("Simple Ball"); movement = CircularMovement(); state "main" { movement.radius = 128; movement.rate = 0.25; //movement.scale = Vector2.up; // uncomment to move along the y-axis only } } ``` Factory ------- #### Behaviors.CircularMovement `CircularMovement()` Spawns a CircularMovement. *Returns* A CircularMovement object. Properties ---------- #### radius `radius`: number. The radius of the movement, in pixels. #### rate `rate`: number. The rate of the movement, given in cycles per second. #### clockwise `clockwise`: boolean. Indicates whether the movement is clockwise (`true`) or counterclockwise (`false`). Defaults to `false`. #### scale `scale`: [Vector2](/engine/vector2) object. Specifies the scale of the movement in both X and Y axes. It is used to distort the circle. `Vector2(1, 1)` means no distortion (default). #### center `center`: [Vector2](/engine/vector2) object | null. If not null, forces the center of the movement to be at a particular position in world space. Defaults to `null`. #### phaseOffset `phaseOffset`: number. A value in degrees that offsets the current [phase](#phase). Defaults to zero (180 means opposite phase relative to zero). #### phase `phase`: number, read-only. A value in degrees that indicates the current phase of the movement. surgescript-0.5.4/docs/engine/collider.md000066400000000000000000000076531354226561700204340ustar00rootroot00000000000000Collider ======== A collider, or collision object, is used to detect collisions. There are different types of colliders, each with a different shape. They are usually centered on the hot spot of sprites, but that can be changed by altering their *anchor*. Colliders must be spawned as children of [entities](/engine/entity). To detect collisions, you may implement function `onCollision()` on the entity (see the example below), or use the colliders directly. Additionally, a single entity may have multiple colliders attached to it. This allows users to work with more complex shapes than simple primitives. A collider is an abstract concept, and hence can't be spawned directly. Rather, you can spawn colliders of specific shapes, such as [CollisionBox](/engine/collisionbox) and [CollisionBall](/engine/collisionball). All Colliders share some functionalities (detailed in this page), but there are functionalities tied to specific shapes. *Example* ``` using SurgeEngine.Actor; using SurgeEngine.Player; using SurgeEngine.Collisions.CollisionBall; object "CollisionDoll" is "entity" { actor = Actor("CollisionDoll"); collider = CollisionBall(25); // ball with radius = 25px // The player has a built-in collider // Let's make it visible for debugging state "main" { player = Player.active; player.collider.visible = true; collider.visible = true; } // Detect collisions between a collider that is a child // of this object and any other collider in the game fun onCollision(otherCollider) { // A collision has occurred. Console.print("Collided with something"); // Collided with a player? if(otherCollider.entity.hasTag("player")) { player = otherCollider.entity; Console.print("Touched " + player.name); } } // While onCollision() catches the moment a collision // first occurs, onOverlap() is called every frame // this collider collides with other collider fun onOverlap(otherCollider) { // This function is optional. } } ``` Properties ---------- #### entity `entity`: object, read-only. The [Entity](/engine/entity) associated with this collider. #### enabled `enabled`: boolean. Is the collider enabled? A collider that is not enabled will not notify the parent object if a collision occurs. The default value is `true`, i.e., colliders are enabled by default. #### visible `visible`: boolean. Is the collider visible? This is useful for debugging. The default value is `false`. Functions --------- #### collidesWith `collidesWith(collider)` Checks if this collider is colliding with some other collider. *Arguments* * `collider`: [Collider](/engine/collider) object. The other collider. *Returns* Returns `true` if there is a collision (the colliders overlap), or `false` otherwise. #### contains `contains(point)` Checks if the collider contains the given point, given in world coordinates. *Arguments* * `point`: [Vector2](/engine/vector2) object. The point to be tested. *Returns* Returns `true` if the point is contained in the collider, or `false` otherwise. #### setAnchor `setAnchor(x, y)` Defines the anchor of the collider to be (`x`, `y`), where these values are (usually) numbers between 0.0 and 1.0. Imagine a bounding box of the collider. Point (0.5, 0.5) is the default, representing its center. Point (0.0, 0.0) is the top-left and (1,0, 1.0), the bottom-right. The anchor of the collider will be aligned to the hot spot of the sprite of the entity. *Arguments* * `x`: number. Usually a value between 0.0 and 1.0. * `y`: number. Usually a value between 0.0 and 1.0. *Returns* Returns the collider itself. *Example* ``` // ... using SurgeEngine.Collisions.CollisionBox; object "CollisionTestObject" is "entity" { // see that the following collision box // has its anchor on pixel (16, 64) collider = CollisionBox(32, 64).setAnchor(0.5, 1.0); // ... } ``` surgescript-0.5.4/docs/engine/collisionball.md000066400000000000000000000021751354226561700214570ustar00rootroot00000000000000CollisionBall ============= A CollisionBall is a special type of [Collider](/engine/collider) that takes the shape of a ball. In 2D space, this is a circle with a specific radius. All functions and properties of [Collider](/engine/collider) apply to this. *Example* ``` using SurgeEngine.Actor; using SurgeEngine.Collisions.CollisionBall; object "CollisionDoll" is "entity" { actor = Actor("CollisionDoll"); collider = CollisionBall(25); // radius = 25px state "main" { collider.visible = true; // useful for debugging } fun onCollision(otherCollider) { Console.print("A collision has occurred."); } } ``` Factory ------- #### Collisions.CollisionBall `Collisions.CollisionBall(radius)` Spawns a new CollisionBall with the specified radius, in pixels. *Arguments* * `radius`: number. The radius of the CollisionBall. *Returns* A new CollisionBall with the specified radius. Properties ---------- #### center `center`: [Vector2](/engine/vector2), read-only. The center of the CollisionBall, in world space. #### radius `radius`: number. The radius of the CollisionBall, in pixels. surgescript-0.5.4/docs/engine/collisionbox.md000066400000000000000000000033431354226561700213330ustar00rootroot00000000000000CollisionBox ============ A CollisionBox is a special type of [Collider](/engine/collider) that takes the shape of a box. In 2D space, this is a rectangle with a specific width and height. All functions and properties of [Collider](/engine/collider) apply to this. *Example* ``` using SurgeEngine.Actor; using SurgeEngine.Collisions.CollisionBox; object "CollisionDoll" is "entity" { actor = Actor("CollisionDoll"); collider = CollisionBox(32, 64); // width = 32px, height = 64px state "main" { collider.visible = true; // useful for debugging } fun onCollision(otherCollider) { Console.print("A collision has occurred."); } } ``` Factory ------- #### Collisions.CollisionBox `Collisions.CollisionBox(width, height)` Spawns a new CollisionBox with the specified dimensions, in pixels. *Arguments* * `width`: number. The width of the CollisionBox. * `height`: number. The height of the CollisionBox. *Returns* A new CollisionBox with the specified dimensions. Properties ---------- #### width `width`: number. The width of the CollisionBox, in pixels. #### height `height`: number. The height of the CollisionBox, in pixels. #### center `center`: [Vector2](/engine/vector2), read-only. The center of the CollisionBox, in world space. #### top `top`: number, read-only. The y-coordinate of the top border of the CollisionBox, in world space. #### right `right`: number, read-only. The x-coordinate of the right border of the CollisionBox, in world space. #### bottom `bottom`: number, read-only. The y-coordinate of the bottom border of the CollisionBox, in world space. #### left `left`: number, read-only. The x-coordinate of the left border of the CollisionBox, in world space. surgescript-0.5.4/docs/engine/delayedevent.md000066400000000000000000000027771354226561700213120ustar00rootroot00000000000000DelayedEvent ============ A DelayedEvent is an [event](/engine/event) that, when triggered, triggers another event after a specified time has passed. Factory ------- #### Events.DelayedEvent `Events.DelayedEvent(event)` Spawns a DelayedEvent. *Arguments* * `event`: [event](/engine/event) object. The event to be delayed. *Returns* A new DelayedEvent that, when triggered, will trigger the specified event after a delay. *Example* ``` // This is a level setup object. Make sure to link it in your .lev file! using SurgeEngine.Level; using SurgeEngine.Events.EventList; using SurgeEngine.Events.DelayedEvent; using SurgeEngine.Events.FunctionEvent; object "My Level Setup" { fun constructor() { Level.setup({ "Event Trigger 1": { "onTrigger": EventList([ FunctionEvent("Print").withArgument("Hello!"), DelayedEvent( FunctionEvent("Print").withArgument("This is...") ).willWait(2.0), // wait 2 seconds before triggering this DelayedEvent( FunctionEvent("Print").withArgument("SurgeScript!") ).willWait(4.0) // wait 4 seconds before triggering this ]) } }); } } ``` Functions --------- #### willWait `willWait(seconds)` Set the delay to trigger the event. *Arguments* `seconds`: number. The delay, in seconds. *Returns* The DelayedEvent object. #### call `call()` Triggers the event.surgescript-0.5.4/docs/engine/directional_movement.md000066400000000000000000000032631354226561700230370ustar00rootroot00000000000000Directional Movement ==================== The Directional Movement [behavior](/engine/behavior) makes the associated [entity](/engine/entity) perform a directional movement on the 2D plane. It features: * A direction [vector](/engine/vector2) that specifies the direction of the movement * A movement speed, a scalar value given in pixels per second You may control the direction of the movement using the [direction vector](#direction) or an [angle](#angle) given in degrees. Additionally, you may control the [speed](#speed) of the movement simply by changing its value. Directional Movement is very versatile. You can use it to implement many things: different types of baddies, flying objects, racing cars viewed from a top-down view, simple projectiles, and much more. *Example* ``` // // The example below shows how to make an entity move to the // right of the screen at a rate of 60 pixels per second // using SurgeEngine.Actor; using SurgeEngine.Vector2; using SurgeEngine.Behaviors.DirectionalMovement; object "Simple Ball" is "entity" { actor = Actor("Simple Ball"); movement = DirectionalMovement(); state "main" { movement.direction = Vector2.right; movement.speed = 60; } } ``` Factory ------- #### Behaviors.DirectionalMovement `DirectionalMovement()` Spawns a DirectionalMovement. *Returns* A DirectionalMovement object. Properties ---------- #### speed `speed`: number. The speed of the movement, in pixels per second. #### direction `direction`: [Vector2](/engine/vector2) object. The direction of the movement. #### angle `angle`: number. The counterclockwise angle of the direction vector, in degrees. 0 means right, 90 means up, etc. surgescript-0.5.4/docs/engine/enemy.md000066400000000000000000000050261354226561700177440ustar00rootroot00000000000000Enemy ===== The Enemy [behavior](/engine/behavior) makes the associated [entity](/engine/entity) behave like an enemy. It will hit the player if touched, unless the player is attacking (jumping, rolling, etc.) In this case the enemy will be destroyed with an explosion, giving the player a certain score. Although the Enemy object generates the described behavior, it is not a concrete enemy itself. You may use it to script your own baddies. *Example* ``` // // HOW TO SCRIPT A BADDIE: // // 0. Make sure you have the graphics and the sprite file (.spr) ready, // before you begin with SurgeScript // 1. Your object should be tagged (at least): "entity", "enemy" // 2. Spawn an Actor for the graphics and an Enemy object for the behavior. // using SurgeEngine.Actor; using SurgeEngine.Behaviors.Enemy; using SurgeEngine.Behaviors.Platformer; object "My Baddie" is "entity", "enemy" { actor = Actor("My Baddie"); // handles the graphics enemy = Enemy(); // handles the behavior platformer = Platformer().walk(); // make it walk state "main" { enemy.score = 100; } } ``` Optionally, you may define functions `onEnemyAttack(player)` and `onEnemyDestroy(player)` on your entity if you want to catch the events: the enemy has attacked a player and the enemy has been destroyed by the player, respectively. Factory ------- #### Behaviors.Enemy `Enemy()` Spawns an Enemy behavior. *Returns* An Enemy behavior object. Properties ---------- #### score `score`: number. The score given to the player when the enemy is defeated. #### invincible `invincible`: boolean. Is the enemy invincible? An invincible enemy hits the player even when jumping, rolling, etc. - except if the player is also invincible. Defaults to `false`. #### collider `collider`: [Collider](/engine/collider) object, read-only. A collider associated with the enemy. Functions --------- #### getDestroyed `getDestroyed(player)` Destroys the enemy with an explosion, giving score to `player`. *Arguments* * `player`: [Player](/engine/player) object. The player who defeats the enemy. #### setBounds `setBounds(left, top, right, bottom)` Set the boundaries of the collider. All coordinates, given in pixels, are relative to the hot spot of the entity. These boundaries are computed automatically, but you may use this function if you need to adjust them. *Arguments* * `left`: number. Given in pixels. * `top`: number. Given in pixels. * `right`: number. Given in pixels. * `down`: number. Given in pixels. *Returns* Returns the Enemy behavior itself. surgescript-0.5.4/docs/engine/entity.md000066400000000000000000000057311354226561700201460ustar00rootroot00000000000000Entity ====== Entity is not an object per-se. Rather, it's a class of objects. An entity is an object that is present in world space (for example: an item, a NPC, a baddie, and so on). Abstract objects or components are **not** entities. **In Open Surge, all objects that are tagged *"entity"* are considered to be entities.** Entites have special treatment in Open Surge. They are deactivated automatically if they get too far off camera. Behavior can be changed by adding different tags to your entities. Additionally, entities can have components associated to it, so they can be fully customized. > **Tip** > > During level design, entities may be placed in world space using the editor palette. The icon of the entity will be the first animation (animation 0) of the sprite that has the name of the entity. Tags ---- #### entity Tells Open Surge that the object is an entity and should be treated as such. ``` // In the example below, MyExplosion (entity) has an Actor component // that gives it a visible form (a sprite) in world space. using SurgeEngine.Actor; object "MyExplosion" is "entity", "private", "disposable" { actor = Actor("MyExplosion"); state "main" { if(actor.animation.finished) destroy(); } } ``` #### awake Tells Open Surge to **not** disable the object if it gets too far off camera. #### detached The object will **not** follow the camera - it will be rendered in screen space. #### disposable Will destroy the object automatically if it gets too far off camera. #### private Private entities cannot be spawned via the level editor (they will be hidden). Functions --------- #### onReset `onReset()` If an entity\* that has been placed in the level via the editor gets too far off camera, it will be deactivated and repositioned back to its spawn point (i.e., the place where it was originally). Whenever that happens, the engine will call this function if it's available in your entity. You may want to use this to reset the entity back to its initial state. **Note\*:** entities tagged as awake or detached are not affected. *Example* ``` using SurgeEngine.UI.Text; // The object below is a simple counter that gets // reseted whenever it gets too far off camera. object "My Test Counter" is "entity" { label = Text("default"); counter = 0; state "main" { Console.print("Starting the counter..."); state = "wait"; } state "wait" { label.text = counter; if(timeout(1.0)) state = "increment"; } state "increment" { counter++; state = "wait"; } // Without implementing function onReset() below, // the counter would retain its state. fun onReset() { counter = 0; state = "main"; } } ``` #### onLeaveEditor `onLeaveEditor()` If declared, function `onLeaveEditor()` will be called whenever the player leaves the level editor and returns to the game. This might be useful to reconfigure your objects. surgescript-0.5.4/docs/engine/entityevent.md000066400000000000000000000025561354226561700212120ustar00rootroot00000000000000EntityEvent =========== An EntityEvent is an [event](/engine/event) that calls a function of an [entity](/engine/entity) when triggered. Factory ------- #### Events.EntityEvent `Events.EntityEvent` Spawns an EntityEvent. *Arguments* * `entityID`: string. The ID of an entity. *Returns* A new EntityEvent linked to the specified entity. *Example* ``` // This is a level setup object. Make sure to link it in your .lev file! using SurgeEngine.Level; using SurgeEngine.Events.EntityEvent; object "My Level Setup" { fun constructor() { Level.setup({ "Event Trigger 1": { "onTrigger": EntityEvent("aeb587eed1057a5e").willCall("open") } }); } } ``` Functions --------- #### willCall `willCall(functionName)` Specifies the name of the function that will be called. *Arguments* `functionName`: string. The name of the function that will be called when the event is triggered. *Returns* The EntityEvent object. #### withArgument `withArgument(data)` Adds an argument to the EntityEvent. Arguments added to the EntityEvent will be passed to the entity when the event is triggered - in the order they have been added. To add multiple arguments, call this function multiple times. *Arguments* `data`: any. The argument to be added. *Returns* The EntityEvent object. #### call `call()` Triggers the event.surgescript-0.5.4/docs/engine/event.md000066400000000000000000000053331354226561700177510ustar00rootroot00000000000000Event ===== An event is a [function object](/tutorials/advanced_features/#function-objects) that is tagged *"event"*. Events are used to run code when triggered. Events let you seamlessly connect [entities](/engine/entity) and write cause and effect relationships. Suppose you have an on/off switch in a level. Whenever that switch is pressed by the player, you want something to happen: raise the water level, open a door, make it rain, teleport the player, and so on. Events are important because they let you decouple the source of the happening (the pressing of the switch) from the results that are experienced (e.g., the raising of the water). Events let you reuse your entities in multiple ways and for multiple purposes. You may design an entity and make it trigger an event, but you do not need to specify in advance what the event actually is. Rather, the concrete event (what must happen) will be configured in your [level setup](/engine/level/#setup). There are multiple types of events. In practice, you'll use specialized events such as [EntityEvent](/engine/entityevent) and [FunctionEvent](/engine/functionevent) when configuring your entities. *Event* is an empty event that does nothing when triggered, but it should be used when designing your entities, as in the example below. *Example* ``` // ----------------------------------------------------------------------------- // Using Events // // Note that cause and effect are split into different scripts! // ----------------------------------------------------------------------------- // This script contains an object that will trigger an event whenever a certain // button is pressed (e.g., the jump button). using SurgeEngine.Player; using SurgeEngine.Events.Event; object "Button Detector" is "awake", "entity" { public onButtonPress = Event(); public button = "fire1"; state "main" { input = Player.active.input; if(input.buttonPressed(button)) onButtonPress(); } } // ----------------------------------------------------------------------------- // The code below is a different script containing a level setup object. // Make sure to link it in your .lev file! using SurgeEngine.Level; using SurgeEngine.Events.FunctionEvent; object "My Level Setup" { fun constructor() { Level.setup({ "Button Detector": { "button": "fire1", // "fire1" is the jump button "onButtonPress": FunctionEvent("Print").withArgument("You pressed the button!") } }); } } ``` Factory ------- #### Events.Event `Events.Event()` Spawns an empty Event. *Returns* A new Event. Functions --------- #### call `call()` Triggers the event. All event types implement this function.surgescript-0.5.4/docs/engine/eventchain.md000066400000000000000000000032611354226561700207520ustar00rootroot00000000000000EventChain ========== An EventChain is an [event](/engine/event) that triggers other events, sequentially, as in a chain of events. Factory ------- #### Events.EventChain `Events.EventChain(chain)` Spawns an EventChain. *Arguments* * `chain`: [Array](/reference/array) object. A list containing zero or more events. *Returns* A new EventChain that triggers the specified events, one at a time. The first time the EventChain is triggered, the first event of the `chain` will be triggered. The second time the EventChain is triggered, the second event of the `chain` will be triggered, and so on. **Note:** if the EventChain ever triggers its last event, from that moment onwards it will always trigger its last event (unless you make it loop). *Example* ``` // This is a level setup object. Make sure to link it in your .lev file! using SurgeEngine.Level; using SurgeEngine.Events.EventChain; using SurgeEngine.Events.FunctionEvent; object "My Level Setup" { fun constructor() { Level.setup({ "Switch": { "sticky": false, "onActivate": EventChain([ FunctionEvent("Print").withArgument("First time"), FunctionEvent("Print").withArgument("Second time"), FunctionEvent("Print").withArgument("Third time"), FunctionEvent("Print").withArgument("Enough!") ]) } }); } } ``` Functions --------- #### willLoop `willLoop()` Make the EventChain loop. When the last event of the chain is triggered, the next event to be triggered will be the first one. *Returns* The EventChain object. #### call `call()` Triggers the event.surgescript-0.5.4/docs/engine/eventlist.md000066400000000000000000000021041354226561700206360ustar00rootroot00000000000000EventList ========= An EventList is an [event](/engine/event) that triggers multiple events when triggered. Factory ------- #### Events.EventList `Events.EventList(list)` Spawns an EventList. *Arguments* * `list`: [Array](/reference/array) object. A list containing zero or more events. *Returns* A new EventList that triggers the specified events at once, in the order they have been listed. *Example* ``` // This is a level setup object. Make sure to link it in your .lev file! using SurgeEngine.Level; using SurgeEngine.Events.EventList; using SurgeEngine.Events.FunctionEvent; object "My Level Setup" { fun constructor() { Level.setup({ "Event Trigger 1": { "onTrigger": EventList([ FunctionEvent("Print").withArgument("We're triggering"), FunctionEvent("Print").withArgument("multiple events"), FunctionEvent("Print").withArgument("at the same time!") ]) } }); } } ``` Functions --------- #### call `call()` Triggers the event.surgescript-0.5.4/docs/engine/functionevent.md000066400000000000000000000030171354226561700215140ustar00rootroot00000000000000FunctionEvent ============= A FunctionEvent is an [event](/engine/event) that calls a [function object](/tutorials/advanced_features/#function-objects) when triggered. Factory ------- #### Events.FunctionEvent `Events.FunctionEvent(objectName)` Spawns a FunctionEvent. *Arguments* * `objectName`: string. The name of a function object. *Returns* A new FunctionEvent that, when triggered, calls the specified function object. *Example* ``` // This is a level setup object. Make // sure to link it in your .lev file! using SurgeEngine.Level; using SurgeEngine.Events.FunctionEvent; object "My Level Setup" { fun constructor() { Level.setup({ "Event Trigger 1": { "onTrigger": FunctionEvent("Give 1up") } }); } } // ----------------------------------------- // This is a function object that // gives the player one extra life. using SurgeEngine.Player; using SurgeEngine.Audio.Music; object "Give 1up" { jingle = Music("samples/1up.ogg"); fun call() { Player.active.lives += 1; jingle.play(); } } ``` Functions --------- #### withArgument `withArgument(data)` Adds an argument to the FunctionEvent. Arguments added to the FunctionEvent will be passed to the function object when the event is triggered - in the order they have been added. To add multiple arguments, call this function multiple times. *Arguments* `data`: any. The argument to be added. *Returns* The FunctionEvent object. #### call `call()` Triggers the event.surgescript-0.5.4/docs/engine/input.md000066400000000000000000000047551354226561700177760ustar00rootroot00000000000000Input ===== The Input object is used to read input from the user. *Example* ``` using SurgeEngine.Player; object "Application" { player = Player.active; state "main" { if(player.input.buttonDown("right")) Console.print("User is holding right"); } } ``` Factory ------- #### Input `Input(inputMap)` Spawns a new Input component with the given input map. **Note:** to read input from a specific character, prefer using [Player.input](/engine/player#input) instead. *Arguments* * `inputMap`: string. The name of the input map. If set to `null`, a default input map will be used. *Returns* An Input component. *Example* ``` using SurgeEngine.Player; using SurgeEngine.Input; object "Application" { input = Player.active.input; // this form is preferred (used in most cases) //input = Input("custom input map"); // unless you need to read a custom input map state "main" { if(input.buttonDown("right")) Console.print("User is holding right"); } } ``` Properties ---------- #### enabled `enabled`: boolean. Whether the input object is enabled or not. A disabled object does not receive user input. The default value of this property is `true`. Functions --------- #### buttonDown `buttonDown(buttonName)` Checks if a button of the input map is currently being held down. *Arguments* * `buttonName`: string. One of the following: *"up", "down", "left", "right", "fire1", "fire2", ..., "fire8"*. *Returns* Returns `true` if the specified button is being held down. #### buttonPressed `buttonPressed(buttonName)` Checks if a button has just been pressed. *Arguments* * `buttonName`: string. One of the following: *"up", "down", "left", "right", "fire1", "fire2", ..., "fire8"*. *Returns* Returns `true` if the specified button has just been pressed. #### buttonReleased `buttonReleased(buttonName)` Checks if a button has just been released. *Arguments* * `buttonName`: string. One of the following: *"up", "down", "left", "right", "fire1", "fire2", ..., "fire8"*. *Returns* Returns `true` if the specified button has just been released. #### simulateButton `simulateButton(buttonName, down)` Changes the input object so that `buttonName` will be identified as being held down, or not being held down, in the current frame. *Arguments* * `buttonName`: string. One of the following: *"up", "down", "left", "right", "fire1", "fire2", ..., "fire8"*. * `down`: boolean. Should the button be considered as being held down? surgescript-0.5.4/docs/engine/lang.md000066400000000000000000000013241354226561700175450ustar00rootroot00000000000000Lang ==== Lang is a SurgeEngine element used to read translation-specific strings, as defined in the language files (.lng). *Example* ``` using SurgeEngine.Lang; // Display the current language object "Application" { state "main" { currentLanguage = Lang["LANG_LANGUAGE"]; Console.print("The current language is " + currentLanguage); state = "done"; } state "done" { } } ``` Functions --------- #### get `get(key)` Gets the value of the specified key. Instead of calling `get()` directly, you may equivalently use the `[ ]` operator. *Arguments* * `key`: string. The key must always be a string. *Returns* The translation string associated with the specified key. surgescript-0.5.4/docs/engine/level.md000066400000000000000000000216331354226561700177400ustar00rootroot00000000000000Level ===== Level routines. A level is a scene in the game, represented by a .lev file in the *levels/* folder. Whenever you spawn an object in SurgeScript, you should keep a reference to it, otherwise it will be automatically deleted by the [Garbage Collector](/reference/gc). Sometimes, you may want to spawn [entities](/engine/entity) in your level, but keeping references to all of them may be inconvenient. If this is your case, you can [spawn them as children of the Level object](#spawn). It will keep references of the entities for you; therefore, they won't be garbage collected. *Example* ``` using SurgeEngine.Actor; using SurgeEngine.Level; using SurgeEngine.Vector2; object "Application" { state "main" { createExplosionAt(100, 200); state = "wait"; } state "wait" { if(timeout(1.0)) state = "main"; } fun createExplosionAt(x, y) { position = Vector2(x, y); return Level.spawnEntity("MyExplosion", position); // no need to keep references } } object "MyExplosion" is "entity", "disposable", "private" { actor = Actor("MyExplosion"); state "main" { if(actor.animation.finished) destroy() } } ``` Properties ---------- #### name `name`: string, read-only. The name of the level. *Example* ``` using SurgeEngine.Level; // Will display the name of the level object "Application" { state "main" { Console.print(Level.name); state = "done"; } state "done" { } } ``` #### act `act`: number, read-only. The act number (1, 2, 3...) of the current level. #### cleared `cleared`: boolean, read-only. Checks if the current level has been cleared by the player. If this is `true`, a *level cleared* animation should be played. Although the engine provides a default animation, you may use this property to design your own. See also: [clear()](#clear). #### file `file`: string, read-only. The relative path of the .lev file of the current level. #### version `version`: string, read-only. The version of the level, defined in the .lev file. #### author `author`: string, read-only. The author of the level, defined in the .lev file. #### license `license`: string, read-only. The license of the level, defined in the .lev file. #### music `music`: [Music](/engine/music) object, read-only. The music of the level. #### bgtheme `bgtheme`: string, read-only. The path to the original background file (.bg), as declared in the .lev file. #### background `background`: string. The path to the background file (.bg) currently in use. Use this property to change the background of the level. #### waterlevel `waterlevel`: number. The y-coordinate, in world space, of the level water. Pixels not above this value are underwater. #### spawnpoint `spawnpoint`: [Vector2](/engine/vector2) object. The position where the player is placed when the level starts. #### gravity `gravity`: number, read-only. A default value for the level gravity, in pixels per second squared. #### time `time`: number, read-only. Elapsed time in the level, given in seconds. #### next `next`: number. The number of the next level in the current quest: 1 means the first level of the quest, 2 means the second, and so on. #### onUnload `onUnload`: object | null. Used to specify a [function object](/tutorials/advanced_features/#function-objects) to be called when the level is unloaded. Functions --------- #### spawn `spawn(objectName)` Spawns an object as a child of Level. Such objects won't be garbage collected. *Arguments* * `objectName`: string. The name of the object to be spawned. *Returns* The spawned object. #### spawnEntity `spawnEntity(objectName, position)` Spawns an [entity](/engine/entity) named `objectName` at a certain `position`. This works like [spawn](#spawn), but lets you position the entity as well. *Arguments* * `objectName`: string. The name of the entity to be spawned. * `position`: [Vector2](/engine/vector2) object. A position in world coordinates. *Returns* The spawned entity. #### entity `entity(id)` [Entities](/engine/entity) placed on the level via the editor are automatically assigned an ID, a hexadecimal identification code. The purpose of the ID is to uniquely identify the entity in the level. This function returns the entity whose ID is `id`. It's recommended to cache the return value of this function. Do not call it every frame (better performance). *Arguments* * `id`: string. The ID of the entity to be retrieved. *Returns* The desired entity ([object](/reference/object)), or `null` if there is no entity associated with the given ID. *Example* ``` using SurgeEngine.Level; // // Level.entity() is very useful when creating setup objects, i.e., // objects spawned when the level is initialized. You can use it to // tune the parameters of specific entities, call their functions, etc. // // The example below can be added to the startup list in the .lev file. // object "My Setup Object" { state "main" { // setup the entity item = Level.entity("ab65d8fe1ebd68de"); // first, we get the entity if(item != null) { Console.print(item.__name); // then we print the object name //item.score = 100; // we can also change a property } else Console.print("Entity not found"); // change the state state = "done"; } state "done" { } } ``` #### setup `setup(config)` Sets up the properties of a collection of level objects. This is a handy function typically used in a startup object of your level. Its purpose is to configure the properties of level objects. You may set the properties of groups of objects (given their names) and of individual entities alone (given their IDs). The target properties and their respective values should be specified in the `config` [Dictionary](/reference/dictionary), passed as a parameter. Each key of `config` should be either an object name or an entity ID. Each value of the dictionary should be another dictionary specifying the properties to be set and their respective values. If an object name is specified in a key of `config`, all level objects with that name will be affected. If an entity ID is provided, only that specific entity will be affected, if it exists. This function will search for all the specified objects in the level, so it's not supposed to be used in a loop (or in a repeating state). Furthermore, if one or more objects or properties do not exist, this function will fail silently. Therefore, make sure you type everything correctly. *Arguments* * `config`: [Dictionary](/reference/dictionary) object. The configuration as described. *Example* ``` using SurgeEngine.Level; // // This is supposed to be a startup object, // listed in the startup list of a .lev file // object "My Level Setup" { // setup properties fun constructor() { Level.setup({ "Elevator": { "anim": 2 }, "Background Exchanger": { "background": "themes/template.bg" }, "5640353a6efd2901": { "someProperty": 123, "someOtherProperty": "hello" }, "770ae26584229af2": { "title": "Super!!", "message": "Hey there! Feeling good today?", "buttons": [ "Yes", "No" ] } }); } } ``` #### restart `restart()` Restarts the current level. #### quit `quit()` Prompts the user to see if he/she wants to quit the current level. #### abort `abort()` Quits the current level/quest without prompting the user. #### pause `pause()` Pauses the game. #### load `load(filepath)` Loads the specified level/quest. * If you pass the path to a level (a .lev file in the *levels/* folder), the specified level will be loaded. The state of the current level (position of the [entities](/engine/entity) and so on) will be lost. * If you pass the path to a quest (a .qst file in the *quests/* folder), the specified quest will be loaded and, when it's completed, the engine will redirect the user back to the level he/she was before. This might be useful for creating bonuses, configuration screens, and so on. *Arguments* * `filepath`: string. Relative path of the level or quest to be loaded. *Example* ``` using SurgeEngine.Level; object "My Level Loader" { fun load(id) { if(id == "beach") Level.load("levels/my_beach_level.lev"); else if(id == "forest") Level.load("levels/my_forest_level.lev"); else Console.print("Unrecognized level: " + id); } } ``` #### loadNext `loadNext()` Loads the next level in the current quest. This is the usual procedure after [clearing the level](#clear). See also: [next](#next). #### clear `clear()` Clears the level without actually changing it. Once the level is cleared, a *level cleared* animation is played. See also: [cleared](#cleared). surgescript-0.5.4/docs/engine/mouse.md000066400000000000000000000032201354226561700177510ustar00rootroot00000000000000Mouse ===== The Mouse object is used to read input from the mouse. *Example* ``` // This example shows how to use the Collectible // sprite as a mouse cursor. Since MyCursor is // tagged as "detached", it will be rendered in // screen space (not world space). using SurgeEngine.Actor; using SurgeEngine.Transform; using SurgeEngine.Input.Mouse; object "MyCursor" is "entity", "detached" { actor = Actor("MyCursor"); transform = Transform(); state "main" { transform.position = Mouse.position; if(Mouse.buttonPressed("left")) Console.print("left click"); } fun constructor() { actor.zindex = 1.0; } } ``` Properties ---------- #### position `position`: [Vector2](/engine/vector2) object, read-only. The position of the mouse cursor, in screen space. Functions --------- #### buttonDown `buttonDown(buttonName)` Checks if a mouse button is currently being held down. *Arguments* * `buttonName`: string. One of the following: *"left"*, *"right"*, *"middle"*. *Returns* Returns `true` if the specified button is being held down. #### buttonPressed `buttonPressed(buttonName)` Checks if a mouse button has just been pressed. *Arguments* * `buttonName`: string. One of the following: *"left"*, *"right"*, *"middle"*. *Returns* Returns `true` if the specified button has just been pressed (i.e., a click has just occurred). #### buttonReleased `buttonReleased(buttonName)` Checks if a mouse button has just been released. *Arguments* * `buttonName`: string. One of the following: *"left"*, *"right"*, *"middle"*. *Returns* Returns `true` if the specified button has just been released. surgescript-0.5.4/docs/engine/music.md000066400000000000000000000037731354226561700177560ustar00rootroot00000000000000Music ===== The Music object lets you play music. This is meant to handle background music; therefore, only one music can be played at a time. Unlike regular [sounds](/engine/sound), musics are streamed, (i.e., not loaded completely in memory). Given the longer nature of musics, this improves memory usage and helps with the loading times. *Example* ``` using SurgeEngine.Level; // Fades the music in a linear fashion ;) object "MyMusicFader" { public music = Level.music; prevVolume = music.volume; fadeTime = 1.0; // given in seconds state "main" { } state "fadeout" { music.volume -= Time.delta / fadeTime; if(music.volume <= 0.0) { music.pause(); music.volume = prevVolume; state = "main"; } } // call fadeOut() to make the // music fade smoothly fun fadeOut(seconds) { if(state == "main") prevVolume = music.volume; fadeTime = seconds; state = "fadeout"; } } ``` Factory ------- #### Music `Audio.Music(path)` Creates a Music object associated with a certain file. *Arguments* * `path`: string. The path of the music - usually a file in the *musics/* folder. *Returns* A Music object. *Example* ``` using SurgeEngine.Audio.Music; object "MusicTest" { music = Music("musics/options.ogg"); state "main" { // loop music if(!music.playing) music.play(); } } ``` Properties ---------- #### playing `playing`: boolean, read-only. Will be `true` if the music is playing. #### volume `volume`: number. The volume of the music, a value between 0.0 and 1.0, inclusive (zero means silence). Functions --------- #### play `play()` Plays the music (once). To make it loop, play it whenever `music.playing` is `false`. #### stop `stop()` Stops the music. Once the music is stopped, it can only be played again from the beginning. #### pause `pause()` Pauses the music. A paused music can be resumed later with `play()`. surgescript-0.5.4/docs/engine/platformer.md000066400000000000000000000104201354226561700207740ustar00rootroot00000000000000Platformer ========== The Platformer [behavior](/engine/behavior) makes the associated [entity](/engine/entity) perform a simple platform movement (with gravity, etc). Used mostly by NPCs and baddies, this behavior is supposed to be lightweight for the CPU and is not designed to support 360°-physics. **Important:** for best results, the hot spot of the entity should be placed on its feet. *Example* ``` // // In the example below, we create a dummy that // walks around the level (left and right) // using SurgeEngine.Actor; using SurgeEngine.Behaviors.Enemy; using SurgeEngine.Behaviors.Platformer; object "My Baddie" is "entity", "enemy" { actor = Actor("My Baddie"); // give it graphics enemy = Enemy(); // make it behave like a baddie platformer = Platformer(); // give it a platform movement state "main" { platformer.speed = 60; // 60 pixels per second platformer.walk(); // make it walk } } ``` Factory ------- #### Behaviors.Platformer `Platformer()` Spawns a Platformer. *Returns* The behavior object. Properties ---------- #### speed `speed`: number. Walking speed, in pixels per second. #### jumpSpeed `jumpSpeed`: number. Jump speed, in pixels per second. The higher the value, the more intense the jump. #### direction `direction`: number, read-only. Direction will be +1 if the platformer is facing right or -1 is it's facing left. #### walking `walking`: boolean, read-only. Is the platformer walking? #### walkingLeft `walkingLeft`: boolean, read-only. Is the platformer walking to the left? #### walkingRight `walkingRight`: boolean, read-only. Is the platformer walking to the right? #### midair `midair`: boolean, read-only. Is the platformer midair? #### falling `falling`: boolean, read-only. Is the platformer falling down? #### leftWall `leftWall`: boolean, read-only. Is the platformer touching a wall on its left side? #### rightWall `rightWall`: boolean, read-only. Is the platformer touching a wall on its right side? #### leftLedge `leftLedge`: boolean, read-only. Is the platformer standing on a ledge located on its left side? #### rightLedge `rightLedge`: boolean, read-only. Is the platformer standing on a ledge located on its right side? Functions --------- #### walk `walk()` Enables automatic walking. The platformer will walk left and right automatically. *Returns* Returns the platformer itself. #### walkLeft `walkLeft()` Makes the platformer walk to the left. *Returns* Returns the platformer itself. #### walkRight `walkRight()` Makes the platformer walk to the right. *Returns* Returns the platformer itself. #### stop `stop()` Makes the platformer stop walking. *Returns* Returns the platformer itself. #### jump `jump()` Makes the platformer jump. It will only jump if it's touching the ground. *Returns* Returns the platformer itself. *Example* ``` // // In the example below, we create a jumping // dummy that walks left and right // using SurgeEngine.Actor; using SurgeEngine.Behaviors.Enemy; using SurgeEngine.Behaviors.Platformer; object "My Jumping Baddie" is "entity", "enemy" { actor = Actor("My Jumping Baddie"); // handles the graphics enemy = Enemy(); // make it behave like a baddie platformer = Platformer().walk(); // make it walk state "main" { platformer.speed = 60; // 60 pixels per second if(timeout(3.0)) // jump every 3 seconds state = "jump"; } state "jump" { platformer.jump(); state = "main"; } } ``` #### forceJump `forceJump()` Makes the platformer jump, regardless if it's touching the ground or not. *Returns* Returns the platformer itself. #### setSensorBox `setSensorBox(width, height)` The platformer spawns invisible [sensors](/engine/sensor) to detect collisions. Together, these sensors are thought to form a box which size is related to the size of the individual sensors. This function sets the size of this box. That size should be compatible with the size of the sprite and a size too small may break the platformer. The size of the sensor box is computed automatically, so normally you don't need to modify it. *Arguments* * `width`: number. The width of the box, in pixels. * `height`: number. The height of the box, in pixels. *Returns* Returns the platformer itself. surgescript-0.5.4/docs/engine/player.md000066400000000000000000000252041354226561700201230ustar00rootroot00000000000000Player ====== The Player object is used to control a specific player/character. Player objects are tagged *player*. That might be useful when dealing with collisions. **Note:** in Open Surge, companion objects can be used to give new abilities to players. Companion objects must be indicated in the character definition files (.chr) and are implemented as regular scripts. The engine will automatically spawn the user-defined companion objects as children of the correct Player objects. *Example* ``` using SurgeEngine.Audio.Sound; // // This is a dash move that should be configured as a // companion object in a character definition file (.chr) // // When you are stopped, hold up and press jump to charge. // Release up after 0.5 second and you'll gain a nice boost! // object "Super Peel Out" { charge = Sound("samples/charge.wav"); release = Sound("samples/release.wav"); player = parent; // since this object is configured as a // companion, parent is the reference // to the correct Player object speed = 720; // dash speed, in pixels/second // capture the event state "main" { if(player.lookingUp) { if(player.input.buttonPressed("fire1")) { charge.play(); state = "charging"; } } } // charging the dash state "charging" { player.anim = 2; // running animation player.animation.speedFactor = 1.85; player.frozen = true; // disable physics (temporarily) // ready to go? if(player.input.buttonReleased("up")) { if(timeout(0.5)) { player.gsp = speed * player.direction; // dash!!! release.play(); } player.frozen = false; // enable physics state = "main"; } else if(player.input.buttonPressed("fire1")) charge.play(); } } ``` Factory ------- #### Player `Player(playerName | playerId)` Gets the Player object associated with a certain character. *Arguments* * `playerName`: string. The name of the character (defined in the *characters/* folder). * `playerId`: number. The ID of the character (as defined in the *.lev* file), an integer between `0` and `Player.count - 1`, inclusive. *Returns* A Player object. *Example* ``` using SurgeEngine.Player; // Gives Surge 1 collectible each second // Just place it in your level object "CollectibleGiver" is "entity", "awake" { player = Player("Surge"); state "main" { if(timeout(1)) state = "give collectible"; } state "give collectible" { player.collectibles = player.collectibles + 1; state = "main"; } } ``` #### Player.active `Player.active` The active player, i.e., the one currently in focus. *Returns* A Player object. *Example* ``` using SurgeEngine.Player; // Tells the name of the active player // Just place it in the level object "Who am I" is "entity", "awake" { state "main" { Console.print("I am " + Player.active.name); destroy(); } } ``` #### Player.count `Player.count` Player count. *Returns* The number of players in the level. #### Player.initialLives `Player.initialLives` The initial number of lives set by the engine. *Returns* The initial number of lives. Properties ---------- #### name `name`: string, read-only. The name of the character. #### input `input`: [Input](/engine/input) object, read-only. Reference to the Input object of the Player. *Example* ``` using SurgeEngine.Player; object "Application" { state "main" { if(Player.active.input.buttonDown("right")) Console.print("Player is holding right"); } } ``` #### anim `anim`: number. A shortcut to `animation.id`: an integer corresponding to the animation number. #### animation `animation`: [Animation](/engine/animation) object, read-only. Reference to the Animation object of the Player. #### attacking `attacking`: boolean, read-only. Is the player attacking? (jumping, rolling, and so on) #### midair `midair`: boolean, read-only. Is the player midair? #### stopped `stopped`: boolean, read-only. Is the player stopped? #### walking `walking`: boolean, read-only. Is the player walking? #### running `running`: boolean, read-only. Is the player running? #### jumping `jumping`: boolean, read-only. Is the player jumping? #### springing `springing`: boolean, read-only. Is the player playing the "springing" animation, displayed just after hitting a spring? #### braking `braking`: boolean, read-only. Is the player braking? #### balancing `balancing`: boolean, read-only. Is the player balancing on a ledge? #### waiting `waiting`: boolean, read-only. Is the player waiting? (happens after remaining stopped for a few seconds) #### rolling `rolling`: boolean, read-only. Is the player rolling? #### charging `charging`: boolean, read-only. Is the player charging a rolling movement? #### pushing `pushing`: boolean, read-only. Is the player pushing a wall? #### hit `hit`: boolean, read-only. Is the player getting hit (i.e., losing collectibles or a shield)? #### blinking `blinking`: boolean, read-only. Is the player blinking? (happens just after getting hit) #### dying `dying`: boolean, read-only. Is the player dying or drowning? #### drowning `drowning`: boolean, read-only. Is the player drowning (i.e., dying underwater)? #### breathing `breathing`: boolean, read-only. Is the player breathing an air bubble underwater? #### crouchingDown `crouchingDown`: boolean, read-only. Is the player crouching down? #### lookingUp `lookingUp`: boolean, read-only. Is the player looking up? #### winning `winning`: boolean, read-only. Is the player displaying the "winning" animation (after clearing a level)? #### secondsToDrown `secondsToDrown`: number, read-only. The number of seconds to drown, if underwater. #### topspeed `topspeed`: number, read-only. The maximum speed the player can reach without items (i.e., running naturally), in pixels per second. #### direction `direction`: number, read-only. Direction will be +1 if the player is facing right, -1 if facing left. #### transform `transform`: [Transform](/engine/transform) object, read-only. The transform of the Player. #### collider `collider`: [Collider](/engine/collider) object, read-only. A collider associated with this Player. #### shield `shield`: string. One of the following: *"shield"*, *"fire"*, *"thunder"*, *"water"*, *"acid"*, *"wind"* or `null` (if there is no shield). #### invincible `invincible`: boolean. Used to make the player invincible. Defaults to `false`. #### turbo `turbo`: boolean. Turbo mode (increases player speed). Defaults to `false`. #### frozen `frozen`: boolean. Disable/enable player movement. Defaults to `false`. #### underwater `underwater`: boolean. Get underwater / out of water. Defaults to `false`. #### breathTime `breathTime`: number. The maximum number of seconds the player can remain underwater without breathing. #### layer `layer`: string. The current layer of the player. One of the following: *"green"*, *"yellow"*, *"default"*. This property tells you which bricks will be sensed, depending on their layer. #### visible `visible`: boolean. Should the player sprite be rendered? Defaults to `true`. #### collectibles `collectibles`: number. The number of collectibles, an integer shared between all player objects. #### lives `lives`: number. The number of lives, an integer shared between all player objects. #### score `score`: number. The score of the player, an integer value shared between all player objects. #### speed `speed`: number. The speed of the player, in pixels per second. This will be mapped automatically to [gsp](#gsp) or [xsp](#xsp), depending on whether the player is touching the ground or not. #### gsp `gsp`: number. Ground speed, in pixels per second. Prefer using [speed](#speed) instead, since `gsp` is only meaningful if the player is touching the ground. #### xsp `xsp`: number. Horizontal speed, in pixels per second (useful while midair). Prefer using [speed](#speed) instead. #### ysp `ysp`: number. Vertical speed, in pixels per second. #### angle `angle`: number. The angle of the player, in degrees. The same as `transform.angle`. #### width `width`: number, read-only. The width of the player sprite, in pixels. #### height `height`: number, read-only. The height of the player sprite, in pixels. Functions --------- #### bounce `bounce(hazard | null)` Makes the player bounce after smashing a hazard. The trajectory of the movement will be computed according to the position of the hazard. If no hazard is present, you may pass `null` as the argument. *Arguments* * `hazard`: [Actor](/engine/actor) object. The hazard. *Example* ``` using SurgeEngine.Player; using SurgeEngine.Actor; using SurgeEngine.Collisions.CollisionBox; object "ShieldBox" is "entity" { actor = Actor("ShieldBox"); shieldCollider = CollisionBox(32,32); state "main" { player = Player.active; if(player.attacking) { if(player.collider.collidesWith(shieldCollider)) { if(player.midair) player.bounce(actor); player.shield = "fire"; destroy(); } } } } ``` #### bounceBack `bounceBack(hazard)` Makes the player bounce after smashing a hazard. If the player comes at the hazard from below, the player is thrown downwards. If not, the player is thrown upwards. The `hazard` parameter is mandatory. *Arguments* * `hazard`: [Actor](/engine/actor) object. The hazard. #### getHit `getHit(hazard | null)` Makes the player get hit. Call it whenever the player gets hit by a hazard. The hit movement will be calculated according to the position of the hazard. If no hazard is present, you may pass `null` as the argument. *Arguments* * `hazard`: [Actor](/engine/actor) object. The hazard. #### kill `kill()` Kills the player. #### breathe `breathe()` Makes the player breathe (underwater only). #### springify `springify()` Activates the "springing" activity. #### roll `roll()` Makes the player roll. #### hlock `hlock(seconds)` Locks the horizontal controls of the player for a few `seconds` (left and right input will be ignored during that time). *Arguments* * `seconds`: number. Specify how long the horizontal controls of the player will stay locked. #### focus `focus()` Focuses on the player. The focused player is controlled by the user. Only one player can have focus at any given time. #### hasFocus `hasFocus()` Does the player have focus? *Returns* Returns `true` if the player has focus, `false` otherwise. surgescript-0.5.4/docs/engine/prefs.md000066400000000000000000000034631354226561700177510ustar00rootroot00000000000000Prefs ===== Prefs is a SurgeEngine component used to save/load data to/from the disk (permanent storage). Prefs is a (key, value) storage that works like a Dictionary, but its data can be persisted between game sessions. *Example* ``` using SurgeEngine.Prefs; // Run the Application multiple times and see // how the counter increments object "Application" { state "main" { Prefs["counter"] += 1; Console.print("counter: " + Prefs["counter"]); } fun constructor() { if(!Prefs.has("counter")) Prefs["counter"] = 0; } } ``` Functions --------- #### get `get(key)` Gets the value of the specified key. Instead of calling `get()` directly, you may equivalently use the `[ ]` operator. *Arguments* * `key`: string. The key must always be a string. *Returns* Returns the value associated with the specified key, or `null` if there is no such value. #### set `set(key, value)` Sets the value of the specified key. Instead of calling `set()` directly, you may equivalently use the `[ ]` operator. *Arguments* * `key`: string. The key must always be a string. * `value`: any type. The value you want to store. #### clear `clear()` Removes all entries from Prefs. Use this very carefully, because data will be lost. #### delete `delete(key)` Deletes the entry having the specified key. *Arguments* * `key`: string. The key of the entry to be removed. #### has `has(key)` Checks if a specific entry exists. *Arguments* * `key`: string. The key of the entry. *Returns* Returns `true` if the specified entry exists, `false` otherwise. #### save `save()` Writes the data to secondary storage. The data isn't saved immediately after you set an entry, but it is saved on key moments. Since the data is persisted automatically, normally you don't need to call this.surgescript-0.5.4/docs/engine/screen.md000066400000000000000000000007741354226561700201130ustar00rootroot00000000000000Screen ====== Screen settings. *Example* ``` // display the size of the screen using SurgeEngine.Video.Screen; object "Application" { width = Screen.width; height = Screen.height; state "main" { Console.print(width + "x" + height); state = "done"; } state "done" { } } ``` Properties ---------- #### width `width`: number, read-only. The width of the screen, in pixels. #### height `height`: number, read-only. The height of the screen, in pixels. surgescript-0.5.4/docs/engine/sensor.md000066400000000000000000000035021354226561700201350ustar00rootroot00000000000000Sensor ====== A Sensor is used to detect collisions with bricks. Due to performance optimizations, passable bricks (or bricks that are too far off camera) can't be sensed. *Example* ``` using SurgeEngine.Actor; using SurgeEngine.Collisions.Sensor; object "SensorToy" is "entity" { actor = Actor("SensorToy"); sensor = Sensor(0, -25, 1, 50); // a vertical sensor state "main" { if(sensor.status != null) Console.print("Got a brick of type " + sensor.status); } fun constructor() { sensor.visible = true; } } ``` Factory ------- #### Sensor `Collisions.Sensor(x, y, width, height)` Spawns a new Sensor with the specified dimensions and having its top-left corner located at position (*x*, *y*) relative to the parent object. A Sensor is either a vertical or a horizontal bar that is 1-pixel thin. Both *width* and *height* must be positive integers, and at least one of them must be equal to 1. *Arguments* * `x`: number. The x-position of the top-left corner of the sensor, relative to the parent object. * `y`: number. The y-position of the top-left corner of the sensor, relative to the parent object. * `width`: number. The width of the sensor, in pixels. Must be a positive integer. * `height`: number. The height of the sensor, in pixels. Must be a positive integer. *Returns* A Sensor with the specified parameters. Properties ---------- #### status `status`: string | null, read-only. The type of the brick colliding with the sensor (either *"solid"* or *"cloud"*). If the sensor isn't colliding with a brick, or if it's disabled, its status will be `null`. #### visible `visible`: boolean. Should the sensor be rendered? Useful for debugging. Defaults to `false`. #### enabled `enabled`: boolean. Indicates whether the sensor is enabled or not. Defaults to `true`. surgescript-0.5.4/docs/engine/sound.md000066400000000000000000000022321354226561700177530ustar00rootroot00000000000000Sound ===== The Sound object lets you play samples, which are short sounds like: jump, brake, select, hit, etc. Sounds are loaded entirely in the memory; therefore, this object is meant to be used only with samples. If you need to play longer things like music, consider using [Music](/engine/music) instead. *Example* ``` using SurgeEngine.Audio.Sound; // will play a sound every 5 seconds object "SoundTest" { sound = Sound("samples/jump.wav"); state "main" { sound.play(); state = "wait"; } state "wait" { if(timeout(5.0)) state = "main"; } } ``` Factory ------- #### Sound `Audio.Sound(path)` Creates a Sound object associated with a certain file. *Arguments* * `path`: string. The path of the sound - usually a file in the *samples/* folder. *Returns* A Sound object. Properties ---------- #### playing `playing`: boolean, read-only. Will be `true` if the sound is playing. #### volume `volume`: number. The volume of the sound, a value between 0.0 and 1.0, inclusive (zero means silence). Functions --------- #### play `play()` Plays the sound. #### stop `stop()` Stops the sound. surgescript-0.5.4/docs/engine/surgeengine.md000066400000000000000000000006711354226561700211430ustar00rootroot00000000000000SurgeEngine =========== The SurgeEngine plugin is the interface between SurgeScript (scripting language) and Open Surge (game engine). *Example* ``` using SurgeEngine; // Open Surge version object "Application" { state "main" { Console.print(SurgeEngine.version); state = "blank"; } state "blank" { } } ``` Properties ---------- #### version `version`: string, read-only. Open Surge version. surgescript-0.5.4/docs/engine/text.md000066400000000000000000000033251354226561700176130ustar00rootroot00000000000000Text ==== The Text object allows you to display custom texts in the game. The parent object is required to be an [entity](/engine/entity). Factory ------- #### Text `UI.Text(font)` Spawns a new Text object with the given font name. If `null` is provided as the font name, then a default font will be used. *Arguments* * `font`: string. The name of a font (defined in the *fonts/* folder). *Returns* A Text object. *Example* ``` using SurgeEngine.UI.Text; using SurgeEngine.Transform; using SurgeEngine.Player; // Place this on your level to display // the name of the player object "PlayerName" is "entity", "awake" { text = Text("GoodNeighbors"); transform = Transform(); state "main" { // position the text player = Player.active; transform.position = player.transform.position; transform.move(0, -50); // configure the text text.align = "center"; text.text = player.name; } } ``` Properties ---------- #### text `text`: string. The text to be displayed. #### font `font`: string, read-only. The name of the font in use. #### align `align`: string. The alignment of the text. One of the following: *"left"*, *"center"*, *"right"*. #### visible `visible`: boolean. Is the Text object visible? #### maxlength `maxlength`: number. The maximum number of characters to be displayed, ignoring ** tags and spaces. #### maxWidth `maxWidth`: number. The maximum width of the text, in pixels. Setting this value will enable wordwrap. #### zindex `zindex`: number. The zindex of the Text object. Defaults to 0.5. #### offset `offset`: [Vector2](/engine/vector2) object. An *(x,y)* offset relative to the parent object. Defaults to zero. surgescript-0.5.4/docs/engine/transform.md000066400000000000000000000110171354226561700206370ustar00rootroot00000000000000Transform ========= Transform encapsulates a 2D Transform. It comes with functions for translating, rotating and scaling things - and it's very useful for games! Whenever you spawn a Transform on your object, you gain power to command its position, rotation and scale. The Transform component can only be spawned on [entities](/engine/entity). If an entity with a Transform component has any children, the transform of the children will be affected by the transform of their parent. Example: if you move an object, its children will be moved by the same amount. Factory ------- #### Transform `Transform()` Spawns a Transform on the object. The object is required to be an [entity](/engine/entity). *Returns* A Transform object. *Example* ``` using SurgeEngine.Actor; using SurgeEngine.Transform; object "MyLevelObject" is "entity" { public transform = Transform(); actor = Actor("MyLevelObject"); state "main" { // prints the position of this entity Console.print(transform.position); } } ``` Properties ---------- #### position `position`: [Vector2](/engine/vector2) object. The position of the object in world coordinates. Only use this property if you need to read the position of the object or to set it to a fixed value. If you need to move the entity, use [move](#move) instead. *Example* ``` using SurgeEngine.Actor; using SurgeEngine.Player; using SurgeEngine.Transform; object "MyLevelObject" is "entity" { public transform = Transform(); actor = Actor("MyLevelObject"); state "main" { // this will show the distance between // this entity and the active player player = Player.active; Console.print(distanceTo(player)); } fun distanceTo(obj) { return transform.position.distanceTo(obj.transform.position); } } ``` #### angle `angle`: number. The angle, in degrees, specifying the rotation of the object. Unless you need to read or to set the angle of the object to a pre-determined value, consider using [rotate](#rotate) instead. #### localPosition `localPosition`: [Vector2](/engine/Vector2) object. The position of the object relative to the parent object. Only use this property if you need to read the position of the object or to set it to a fixed value. If you need to move the entity, use [move](#move) instead. #### localAngle `localAngle`: number. The angle, in degrees, relative to the angle of the parent object. Unless you need to read or to set the angle of the object to a pre-determined value, consider using [rotate](#rotate) instead. #### localScale `localScale`: [Vector2](/engine/vector2) object. The local scale of the entity. Functions --------- #### move `move(dx, dy)` Moves the object by (`dx`, `dy`). *Arguments* * `dx`: number. The amount to move the object in the x-axis. * `dy`: number. The amount to move the object in the y-axis. *Example* ``` using SurgeEngine.Actor; using SurgeEngine.Transform; object "MyLevelObject" is "entity" { public transform = Transform(); actor = Actor("MyLevelObject"); state "main" { // move the entity at a speed of // 50 pixels/second, to the right transform.move(50 * Time.delta, 0); // the command below would move it // at a speed of 30 pixels per FRAME //transform.move(30, 0); // don't do this // since the framerate may vary across // different systems, it's advisable // to multiply the value by Time.delta // to make the behavior consistent. } } ``` #### translate `translate(delta)` Translates the object by a `delta` vector. *Arguments* * `delta`: [Vector2](/engine/vector2) object. #### rotate `rotate(deg)` Rotates the object by `deg` degrees. *Arguments* * `deg`: number. *Example* ``` using SurgeEngine.Actor; using SurgeEngine.Transform; object "MyLevelObject" is "entity" { public transform = Transform(); actor = Actor("MyLevelObject"); state "main" { // rotate the entity at a speed of // 45 degrees per second transform.rotate(45 * Time.delta); } } ``` #### lookAt `lookAt(transform)` Use this function to make your object look at some point in space. *Arguments* * `transform`: Transform object. *Example* ``` using SurgeEngine.Actor; using SurgeEngine.Player; using SurgeEngine.Transform; object "MyLevelObject" is "entity" { public transform = Transform(); actor = Actor("MyLevelObject"); state "main" { player = Player.active; transform.lookAt(player.transform); } } ``` surgescript-0.5.4/docs/engine/vector2.md000066400000000000000000000134041354226561700202120ustar00rootroot00000000000000Vector2 ======= Vector2 is a vector in 2D space. A vector is a mathematical object that has direction and length, usually represented by an arrow. A Vector2 can also be represented by a pair of *(x,y)* coordinates. In SurgeScript, vectors are immutable. Once created, you can't change their coordinates directly. In order to bring about change (say, in the position of an [entity](/engine/entity)), you need to create a new vector. Vector2 objects have been designed in such a way that their functions make them chainable. You can compose different vector operations using english-based terms, as in the example below: *Example* ``` using SurgeEngine.Player; using SurgeEngine.Vector2; ... player = Player.active; ... l = Vector2(6, 8).scaledBy(0.5).length; // number five u = Vector2.right.rotatedBy(45).scaledBy(2); // a vector v = player.transform.position.translatedBy(5,0); // a vector ... ``` Factory ------- #### Vector2 `Vector2(x, y)` Spawns a 2D vector with the given coordinates. *Arguments* * `x`: number. The x-coordinate of the vector. * `y`: number. The y-coordinate of the vector. *Returns* A Vector2 object. *Example* ``` using SurgeEngine.Vector2; using SurgeEngine.Player; // This entity will lock the player on position (100, 100) object "PlayerLocker" is "entity", "awake" { pos = Vector2(100, 100); state "main" { player = Player.active; player.transform.position = pos; } } ``` #### Vector2.up `Vector2.up` The unit up vector. *Returns* Returns the unit up vector. #### Vector2.right `Vector2.right` The unit right vector. *Returns* Returns the unit right vector. #### Vector2.down `Vector2.down` The unit down vector. *Returns* Returns the unit down vector. #### Vector2.left `Vector2.left` The unit left vector. *Returns* Returns the unit left vector. #### Vector2.zero `Vector2.zero` The (0,0) vector. *Returns* Returns the (0,0) vector. Properties ---------- #### x `x`: number, read-only. The x-coordinate of the vector. #### y `y`: number, read-only. The y-coordinate of the vector. #### length `length`: number, read-only. The length of the vector. #### angle `angle`: number, read-only. The angle, in degrees, between the vector and the positive x-axis (as in polar coordinates). Functions --------- #### plus `plus(v)` Returns a Vector2 corresponding to the addition between `this` and `v`. *Arguments* * `v`: Vector2 object. *Returns* Returns a Vector2 object corresponding to the result of the operation. *Example* ``` a = Vector2(3, 1); b = Vector2(2, 1); c = a.plus(b); // c = (5,2) ``` #### minus `minus(v)` Returns a Vector2 corresponding to the subtraction between `this` and `v`. *Arguments* * `v`: Vector2 object. *Returns* Returns a Vector2 object corresponding to the result of the operation. *Example* ``` v = Vector2(5, 5); zero = v.minus(v); // zero = (0,0) ``` #### dot `dot(v)` Returns the dot product between `this` and `v`. *Arguments* * `v`: Vector2 object. *Returns* Returns a number: the dot product between `this` and `v`. #### normalized `normalized()` Returns a normalized copy of `this`: the new vector will have length one. *Returns* Returns a Vector2 object corresponding to the result of the operation. #### directionTo `directionTo(v)` Returns a unit vector pointing to `v` (from `this`). *Arguments* * `v`: Vector2 object. *Returns* Returns a Vector2 of length one corresponding to the result of the operation. #### distanceTo `distanceTo(v)` Considering `this` and `v` as points in space, this function returns the distance between them. *Arguments* * `v`: Vector2 object. *Returns* Returns a number corresponding to the specified distance. *Example* ``` using SurgeEngine.Transform; using SurgeEngine.Player; // This entity will show the distance between // itself and the active player object "DistanceDebugger" is "entity", "awake" { transform = Transform(); state "main" { player = Player.active; playerpos = player.transform.position; distance = transform.position.distanceTo(playerpos); Console.print(distance); } } ``` #### translatedBy `translatedBy(dx,dy)` Returns a copy of `this` translated by `(dx,dy)`. *Arguments* * `dx`: number. The offset to be added to the x-coordinate. * `dy`: number. The offset to be added to the y-coordinate. *Returns* Returns a Vector2 object corresponding to the result of the operation. *Example* ``` using SurgeEngine.Vector2; ... one = Vector2(1,1); v = one.translatedBy(4,5); // (5,6) ``` #### rotatedBy `rotatedBy(deg)` Returns a copy of `this` rotated by `deg` degrees. *Arguments* * `deg`: number. The amount of degrees used on the rotation. *Returns* Returns a Vector2 object corresponding to the result of the operation. *Example* ``` using SurgeEngine.Vector2; ... // A unit vector with an angle of 45 degrees // (relative to the positive x-axis) v = Vector2.right.rotatedBy(45); ``` #### scaledBy `scaledBy(s)` Returns a copy of `this` scaled by `s`. The length of the resulting vector will be the length of `this` multiplied by `s`. *Arguments* * `s`: number. The multiplier. *Returns* Returns a Vector2 object corresponding to the result of the operation. *Example* ``` using SurgeEngine.Vector2; ... one = Vector2(1,1); two = one.scaledBy(2); // (2,2) half = one.scaledBy(0.5); // (0.5,0.5) ``` #### projectedOn `projectedOn(v)` Returns a copy of `this` projected on nonzero vector `v`. *Arguments* * `v`: Vector2 object. *Returns* Returns a Vector2 object corresponding to the result of the operation. #### toString `toString()` Converts the vector to a string. *Returns* Returns a string containing the coordinates of `this`. *Example* ``` using SurgeEngine.Vector2; ... one = Vector2(1,1); Console.print(one); // using toString() implicitly ``` surgescript-0.5.4/docs/engine/web.md000066400000000000000000000010671354226561700174050ustar00rootroot00000000000000Web === Web routines. Functions --------- #### launchURL `launchURL(url)` Launches a URL using the default web browser. It's mandatory to specify a protocol. The following protocols are currently supported: *http://*, *https://*, *mailto:* *Arguments* * `url`: string. The URL to be launched. *Example* ``` using SurgeEngine.Web; object "Application" { // Remember to change the state // after calling launchURL state "main" { Web.launchURL("http://opensurge2d.org"); state = "done"; } state "done" { } } ``` surgescript-0.5.4/docs/img/000077500000000000000000000000001354226561700156115ustar00rootroot00000000000000surgescript-0.5.4/docs/img/download.png000066400000000000000000000025141354226561700201300ustar00rootroot00000000000000‰PNG  IHDR”<€s“W pHYs  šœtIMEâ$“°ÆûëIDATxÚíÝoHgÇñ_î’‹1a$ÆZ[%h«s“¾ÐSh¥›R°/Ú7â(7d ¥ލ/º¾Ø›2X#”`·!´ ÅínŒtм1“ÖaÕÖ†èü×(©1×Ëån/4guþ…nå÷r‰I8¿>ÏsAr&]×uí»€ö’9{CjÀʾ&“É´îõš t]‡¦iÆ%™LB×uEk‚2™LE‚ —TXFPš¦AUUüöǾÿé &¦âÜ{´¡¢B>|ÿÞ;Z³Ù QW×P©ÑIUUܸ5ƘhSSqܸ5UU¡iš1“ é#”,˘œ–¹·hK&§eȲ MÓ2òt]G2™„,3&ÚY–õvÆ¥ë:TUå¢mQU5ãÀÍ¡xDG;‘Ý?ؤ=Å ˆAƒ"EÄ ˆAƒ"bPÄ ˆAƒ"bPôßdþÿ¾u Í_œÀ…ŠM6Æ¥‹ƒ"íÕ8Yl´r—{‰ÈLA=}Ó%–Ÿ·áò»¸Z+`È÷;Î÷Å×ü V;ޝ­òùq¾/¶îË–µÔáz“þÎ_p徆²–ã¸ÞäØäÍFÑÓî‡wœA½FaôÏ Æ/ÚS]ˆ2û‚þDRÑÌ?G$ÀbAžË)…ÿA»…¥y8ùÁ>4Ô=Å•ÏþB`IAÿÍ1œ­~ •§¡êÞ#i/ë<€³u¹ÀÌ3xïŶünOã®?jÄì(Ùšb 40ÑÔÓ(q -p„zETo"hܶ£­³eQÜù&ˆþÄ?6?‹îkÃ56ØÐpù(®Ö–¢­)ŒÀ/€ñ¼~¾j(Fký\ú9¾::)G=€o$3´ML†ñe s”«)‚½ƒèz¤q õúˆ£ÿö$Bÿn£Kë†á؇Žj£½C¸3ËhTºð>þdù(/ïX¾ýô ‹/ÚCá—@µ¡‰‹ájc‘ûÑuo Ri :ZœÆgDÄ vHEà‡AÜ™ái<‚Ö£0¨ÝZŠÀë cJzÍyàa j·#èH@:r­5fî]0麮'“IÄãqÌÍÍ¡µ}ˆ{…¶¬»«ùùù°ÙlË_BÆ]BœòˆAƒ"bPÄ ˆA1(bPÄ ˆA1(bPÄ ˆ¶TêhD;‘Þ¾Q¸ùf´5nsÆÉ3F(Qa±Xpú„ n'G+úwn§ §O¸`±X ŠâÚ3z ‚I’pì7*Ju,,,@–eã¤0œ)%''N§ùùnH’AX]Лӧ;«Õ ‡cùë"l6[Æ©«јͰÛíp8°Z­ÓžI_)&uFEQ ( ‰DƉõˆ²—G’$A’¤Œ)Ï*%u3ûš(}¦Ê¾6î×Y í!~°I{ê”=Þ8"&>`IEND®B`‚surgescript-0.5.4/docs/img/opensurge.png000066400000000000000000000164201354226561700203310ustar00rootroot00000000000000‰PNG  IHDR€€Ã>aËbKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEâ 1Ð}›:IDATxÚíwtTÕÚÆûLzH ½†& M.(UDD? (X.–Kñ‚RTDQ/zQT”"¢) JU.5ôÐ BzÏœýý±ÏL IfN&̳Ö,2ÌÌ)û}ÎÞoßàxàxàxàä@MÀÇ3 ·&BóÀU`&ðàå–[ó™çuø¸°x†èæE/›Ðßz¥ŠìÕ­œôóÕò’! øèÏÝ<(\dÿGCeÖÉ–2ëdK™x¨…\6£žìÓ=Dúx‹¼d8 |v£‘ÁÃÚüñ#зJEoö®½Ðr×.ûq V~þ5ŽÅ«bY·)Ì,™óã3À2`°ÅC€ ý€ïO­EÏnå ýÁÕ¸,VmˆgñªXÖþ‘@–5N+€yÀ.Ü€@Å=`ö;º¤_%Eª˜Ø,VoŒgþÒ«lÜž€®çú8˜‡=p?,zW­~€`õŸÒ» z`8X|‹u°s3Xº&ŽÅ«cÙ¾+ )ó%ÃwÀ1ÌCU 9ÐG9rª å.¯S'ˆ6Æ¢¡°ê3x°]Þ‘ÒЪ!ý*:tQg.d°l­"öIy?¶‘aé!@ñt:íêÎì…ÞðÍ[.}CÐkpÜpê\+ÖÇ1ÿ§vïOÉûñ.à[Cò Ü<<4ÉûaXˆMúS·¦/5«ûP½²åC½(â…·—À×Wž®æãØ„,þýÁ9öF¤R« ì[Á…œ]óE®‹´ø;}#¦²he,?®ŒåèÉ´œYMÀê¸å àk}°akÛÑ ŽÝ:Ó¾UZ·(CµÊÞE>謮ð¨Ó¿~ï,êÈièe‘>!¦Ýàžƒ)¼;9ŠŸ³ý× ã~K 7‚_;x ø§±ŽЬ‘??ÊcÝC¨îëÐÏ\È`Ä„sü³o1„ u´ÄHô€ªHÿ*æ˜ aÞìÜ—l{»r+/À0ãU \°…gû„1 oyš6tnú•pŒu›¨]UMýe<–%ô§TÒÒuî}â(ïM¸ÜiüË­6à)`¢¡½Sµ’7ÃWâù~å 4'þòõüˬ۔€¦Áìw>€H½„&%z` ‡ñÊØ36á§=]!|w$@]`Ð ¤¬…QCªðϧ+àï§™v’“gÓyë£óü«?ÜóX›мZ&M»ÄœE1 b Ïߊfà‹À§@€¦Á OVàaU)b.Guîò(›þJ¤A-øßð÷5ñøAuŠ¥®ßœÀÃcUîã‰À[®tw˜Ê³QáWšÖƒé㼸«yÒû2d"½Ê€0g˜2'šM%¢i0c¬¹ÂÐ’Nc-ë¿B¿{ôdý_‰´ -0¶4ÖÛÒD`)P_0âiÿøú\{™ÒË¼Ê ½ÞA ?K+òL:-Œ 9EgÔ˜øJÉÜ”ô D/ÛðºßIL¶Ò¾×a"Ž¥Zñ·º‹àòåàûàþ»Šñk‹/Òˆô .!t:÷;–¿“hTv~%˜é§—©…ô-_àµô|œUâb á—J< ´–€§€Y€w³ú°âS¨U\ÝÉšŽ°¦#2®„ðCz!½ BäqÕ~2ý"[þNÂËsß-Yáh)°ú†åûŒþø¼Møº1¥ * ü˜h]ÛÀ¢Šàz-!ÒÖ4DÚe˜Ê‚w0‡NkŒŸ¬Üêo=wÞî‚»Ô3q×(„KÖÄ2iÚEÛÛ1ÀêÒ¶¹]‰çPîMñHGøñÃüÖ{s‘e…öÏ v4¿ vÌo×ܬô)‡T×þ~ÏÁ:ö=BJª=I`ÐH.-h.<×ÿÓÑÿX:©ä…ðáØq@âí3ǺNø"3;ì{éJ&½Ÿ %U§n-_¼½@;Cò¾Ù p7*¯^ëÚæ¼œ9"ÞŸ©þ7Z6rñèÊ,гÈÌ’ôÉÙ¨ *Wðæ·…·±`J,*”ýuiÀyíu€ß€ »Ú)àç[ò'ͲÂCÿ‚³— EבîøWdȘó,[‡Ÿ¯Æê¹õiTÏŸFõü(daí - ðÏ›À: vxUØð5” rͽ;®UËÌš)P¥|阥Öúœðó]óáö:®~R ´{ö‡Ú5|Ù¾¼a¡A­õ›èþì1[æð“ÆlpÃ.Ÿ•+‡ÁÔQ%s‚e¿CãÇáå‰vá'£ÒºuP~þÒ¾”ðÜx%ü @å3ê)¢Ùåî`^zª‚í퇨Äu·’ @T"#ŸÈέ7 1ñÐçßÐk?küû@} ! µo¯ö+uÿío`ѯ iðígu¸ý¶¢g.½ÿïj¶|ÆJÀ{…̰nIa°Wti w1÷àî‡;úÃ’ öÿú•!<4ô/=“ï§0Áð;Œ^‡ï+[¬ß—±0q¤=µì% Y_õwW<´ñ²ÀäáæøÇõÐéE8 Àã\O¡R§Ú¯|üÔ«ázáï= OSK@ïneùre‡ŽÓÿÑPîº#Ð6ÍO(i¹i&?ýï<ó¹ëïÌåÐ4¤g°h üœÃ×0°t¾^îãzáÇÄCï7 9î¸ æIÄ’z¤^üA0qd5ÛÛ‡Qɡ׸¹Ü‘Ý€æÞ^0fyó3¼ð¾Ý´[ tÌã,ù¨¨ÌMáâðVfô ‘ç¡|9ãôÓ©QXâ"2âŠ}Ì{ÚÑåî`ÛC52Ÿ¯¤»#†ô¹jW5ç€k¶Áà vá/z“;rv/Fîü'CÈ)0¯O‚;Õß-@xÎkÐ3ÐO %ž=³XÇ}ãEûÒåNÏ Ó¢‡f™€I€˜9ªUtþ€Çϯ@ªâú:à1 ç(¢bé¡]ZçÃ\ÿôÏ^c§f[€‘ç~¾ÐáŽ<Óº5 -ý h^àU´üóð¾üôKÑ1YšqßëÝy ˆ–à®Ææ8xžxâU45èdäùÚ§@ݲe`f)Lý[÷ÂKío¿°é?c§ªÏ®uXÑ’N«Ù@.?!ÈéxUç–Ž ‹¡ó‚IÌñÓa·jŸ‚*MÌó•û1jæ>jTr­ðÏ\TJ_†š¶Ëß{À¯YVxf¤¤ ØŒ8,qˆŒÂó?ŸìJ`€ªqEww%À½@Eoè{¿ó‹ˆ„çÙߎæùJYTnèÑQY®Dj:<öoˆV©ˆ§ ½$å|ˆ<¯H\ ôL´Äãh)çÉÛ5"¯_àáûìÑÃÇÝ•½Aeôšáõú©Ò¬íÀWù|e2P3¬,LíZáK Ͻ ;#H2|—s|%ʦµÿwœ8WÈ4Ÿz-ñØuÄ>ÝCrš„>îH€n=:: -{`J‰¨¢Ð¼†ôÃnæ/FBå0×àƒÙ°pýúžöåóµYÀ¾ŒÌl¯àuI™ˆ%þ0ššïç]:ãë#ʧ,ÞP¨ Э­ó“cê_ƵÙ1倩ÞýººVø¿lƒ·³·ÞEuðÈVŒò®ïÖ¨ü„B¡g ÅÉW/( ÑáN{ÍîF€Ž \¯áNÚþ‘çaUvG½óùÊD zÅP˜>ƵˆTV‰UÍG?ã ùÉjà@f|½¤¨ë‹-ñ„JkσNmí¸ÛÝÐàîÎ_Ȭåv‡ÏòÏ« ðz?¨â:á_M€G‡C‚r½ì7=Y˜8o@å+X‹ì–hÉg©¹[µki/œh‰‰ 3ð€¶M¿cmÕ ©@øû¹NøVžc;_Eeê$ñçß™.ÃæÿS()”…` U³@[±áts Ø/¦Y}ç.âÐÉ\óbÜ#&+w´áyë œ(ÆÏcPIž¬Ü\üs‹Ô‹vh9Ûà4vÔ±™%ŒümÈn‡‹³b ·«aòûÛÑóÜ_±I RUY³Fö™¿™÷éLm`-Pë±3íU¶ï·ÿ¹Ñ„ÿç~œ3øÒÁCmØwLå :2NZÊyta¡v ßœž[ÌÕÁœÜÞ£ö?w—¶ð£®@Ÿ‘®|3ÛP™9Žb?aÕáÀ '„”|†ðÊVÛÛpw!@€JNæúK™ký?RšÂOË€žÃí¶ûcÝw&öž…ÑúÕP$F¥À˜\ãî•á .ÇÚC¾'K“C>„*ò`f§®H°§²9Œòeí¶d˜»  @ “ViÔ•\¶óåÒþ¤o•ÍŽùº¢A¥9ƒãè.ððv²ÅDbv¯ä4r'|¸ k·Ã¨)ö·anQFäšåBŽ,gÜ$)Ô 9™ˆ‘ÃKf-Ê÷ÿØ¥¼sf*}ýÞÊuY¨DS³ö§ãƒm1Íz3 Ê°W.f_W]XþÜÖ ¾Zäü¹AU /üÕ¶ÿ×Ôný1§tÎ7Ï}:ö Xs-•™î@€43˜Z6®·¾=k¼.ÅÄàévOSx ­êüÍ[v¥¶°ø p6ÎY ¸ŒsÉ1Îi‹p âb»€j¹šëytÔŽõPáØôç ûkÐc¨Š&:/‹Ú,âÈRx­ŸzÊÉߊ ý:ZnR ¢“¬ãlj/AgpàJ¬sP&²g¢Tò'ï ¶„YÊ×Þ¨JÑNp2a:4XÕ4îÿº©mc„á8dœ·¸á¨ºà¼Ã,‡ã.¸×–e;‚UDÅiàv •'×8‘ Ÿ/„†Á´¥äÝ­«Øhk>W= ëT³›_oGQ!ᢠ£ãyÃ!äH,‰rœ¶ ÝI§Evx£?ÿÕcçEàJÔxñh= €ôìb¢GG8´XÕ:ý ksQÁ¡f…ü¼ ‚œ¯W~O£b#ó1eèÚÆyAíÉŽ’r€‘q ’S1±Ž.4îiikFk‡C¨låG€ÈÔtøp®òLž/¸«‘–ßêvØ»9ø5׆8ƒDTÕ@c 5Ÿ†“€ y=ESù V«šÒÓÕ+Íxed²²D¾Õ\Aеµ ucÁ¡Sê^@ÝŸÜÙØñ¸ÉðÉ*lŽÊ4þÓ†*V¨Y%L= öÇΪž)~~E› šÖ³ûøÃ ?CIlžtµEÍA uz&e·í—¬Ù.©QI^Å9÷õŠ‚~]5+ v‘\‡_¶ÃŠ?”/ ¼˜¡3atvBÚPcpTî‹Küß×^Zš 1ICÕ¶õzD Pf¥‘FÝ•WR­Ô# Ó1 h›ˆ×Š-’]G Y=A¨uŽB@£pÁ÷)…bßq¸pYu;ÙuH™…!El™;çgE Ãügö ˜A€‹À«1ñн–ïÀé:¤¤ 5¤TË‚¥€3·nßýñI ŠAQrÈD¥nÏCí,Þìì%¥Ä&Bˆ©öò¾>о™à¡öç.Á©(8zFé:WâT# ßBŽ?ì¿pNy[§¡šn»®=€ªþ¾Ð¡yÁ¸”š&”¢•"ÐuB`±dÏ >ÞÊ »à».…ÚQ»$‘€*ùÚ´Ð%•öƒ¥¿KB‚ j §P„)+©I]Áþ’˜x¥ÔÍ[¥‚DMëå?39­úxÕxØÜŽ :}t׊äõ²Z•†˜(ˆ‹ÓHJQ WF&„W$$Ãߪ »‹Áüs”ü†JÛ. á ¼l¦ð7ì”tý—• ³u’R¡zEµoáöÙŠùaêb{3Õ§Do&ê¡1^Ÿ¼ªñhGó /|¨s Òά…Àk˜SK`ºðOœ‡÷çèlÚ£®7ÀÞxF>{ýýŠc ~/{ÐJx?a³÷ ºŠju~מc’~÷k¦mÓè½: ®ÆÃ•ÑĘ b½8ž()PͨL~\üç;‘_霊RJdßûaù'гSáuo~aï<…ÊLθ‘*ð289 ÿ”4¸§…y³€—:·Ü^[°#B’œF€áƒè¤¢Ü»V„ÿ’³Â·ZáÇ ’—?Öùó òy4©#øf”ư§ Bj(w6ú"+*¡d\á%ºØ0˜® øa‚F‹ÛÌ?MR*|µDgîji«äÅXæ¢*{v»JøÛöK&Ì‘=£$W1^{\ãñû„=äí ’€©b#ù(ŠmØdþÊ8’7**g®SJðó,”ñ/™]Œé+tmy»sFù7*´|Ê2Kø§/¤:k¶K»éúdWÁÐ~ÚuïWÓÀÇGâå¥~#„äÝðÙB ªù¨X7*@Õ±ïÊöè øïë%»…GR*,ß,YµU²ë°¼^c¦xùäë¨ðSÓaúr¯—I[»X:·Œ¨9Ô¶vË>ÉstÛÔ? µë 7:0Öæ£ŸÕø°k::Ç'Ãöý’íû%û#áø¹kf¾”°l“äãù:—xÝjê8ïpìÞÎ]†ž#­Ä©ÂU†N#o€JïzÍbi#5S•Âb™' ðî,U[¥CÂß{\òÞlÉž£J6åÊÀ+}5ž~@Ù, ‰)Ðo¬Î¥;œZ–7¼QÍ’:úÂw4×q- ¤„·gè,XW|á_ºªÌºå›•sËb¾÷ †?©9¦_wpÐD­û$†§¯æ¥Á¹@UÈlš„Ã÷ã-Ô­æ:á›®óýúâ ?-æ®–|¹D·/íš Æ ÜVÓ¹aÓ% ¬³JÎtÔfËJcftå£lªW-óÆYŠå*áoØ)?Kçœác ¯Ãûk<ØÖùá²êðæT¥¿KŒµþeŒ®¢7;@íñ÷P¹bÌ£9ý4™)üˆ“’÷æHþŽÈvßê!x©—9ÍÌ,>EÏ2w©Æï•浨èS†9®A_oŠ}ó+%¿Møq‰0e±Îü_”ù¨ •Á3êòe͹¦¸$2I篃ö'%èqW€ê1¸hêícj<ÙU˜&üQ_©)¶0ágYaþZÉg?èö^EÍë Æ 4¯oÞÐ=#yù?:§U„/ˆ‹6‡vW€Úúe FeŸ{o?¯]7Rf¦ð·îSîÛcgÕt\9L­ó=; S7 Z¾Y2vš]‘ŒEí°ò;nQÊç÷Buå ˆZ•aÒ«ŽÅŠ*ü“QðÁÝž´âï Ï<(ò˜F€‰Èã’à:+·Ú×û}†ðOàFnr¡òðB5Ou ﯹaQ„Ÿ ß,Ó™µR’™¥<ÝÚF=­åmSã4ÖlWVÄåìMC§£N§àfnt-ÕQûítQþ¤F¯{ÄuKª ¾.aù&ɇßêö6+MêÆ ´jhîí;+yŽdË>ûSê5ün á†×3µ i(¨ ›¡O:·ÅþŽå¾=tªà0­8{ ¾X¬³l³´µs“¨DÎa˜ÜÓçf'€ ¡¨†L/¡\ÉÜ^[0èA÷¶ª"÷z¿£Â´6÷­—þïÂôÅÅáÓ’é+T2GφN³Âͯ¯žA„þ ¬C w'AäyX·#·ðmaÚiË%iF"Uç–‚15jš´»hJ¬ýKòï’‡sí"Pµ{Kqa4ïf'€ õQ  0šTCvH÷Ù¿ü©Öùó†ûÖÙ0mN\ŽƒÍ{$vI~ßM. ‡ÎJÌ-g÷ ßÁ ­Mø­Â{³U€Ÿ/ôê(x¡§F v1OJ…ãg%GΨðî#’×îðz ø˜É={<(ÔžÁÏ /<*ˆOR ô&\_oÕ‰´b¨*÷Pv¿Í¯Ÿ¤¢~qIªZ÷ÜeiKÌÈ'QaíŨx†•›âþlTG.*‡©dŠäìÝVCykwwàÜÆ Æš¾ÆÞ‚ê7tÓAÜ ÂŸEþÝ9¡š&å×C Š¡DÖAõë Cõ•hKK7Lµ+ÆS‰òÖeâ[®¡Uç|%Ö¯gˆn-á[QÝ<*y†çæþ¼<Âß„ê ìÁ-öäŸ5Öáš[Cøß‚OFUÆú{†åÖ{òÆØšÖƒ[Kø»€»=Ãqë ÿST›w‹g8n=4GŽxàxàxàxàxP‚øTÖ…lÿ™IEND®B`‚surgescript-0.5.4/docs/img/state-machine.png000066400000000000000000000317341354226561700210510ustar00rootroot00000000000000‰PNG  IHDRBû• IDATx^í´EöÆ V–5`\æœuóš˜sv¨èÊ^ƒÕUלE1îêŠq•ÕÕUŒˆ9'L˜0±Ad•ÐÿóÕØŒóÞ›™73¯{úÞsæ¼y3ÝÕU_ÕýæVÕ­{L CÀÈ9AÎÛoÍ7 C#B†€!{Œs? CÀ0"´1`¹GÀˆ0÷CÀÈ#QÈj@× ä©z¶? ù%0 X1y+ ™Ø$ùkáwõ¬—a=Ѷg)A y8;¹¾žUŠBæN.B¾ŽB.:!~WÏzÖm{–!¢·€?Ô› ›…\Ì-"lOhŒÛ}{¶!ÐD!ûG_ë-´Ï 8‰ˆS»Ã€aÀ>À"ÀçÀùAȺ/ y€›™A_VÞ¢ÇCxÜ0XØ}00hâïÉé/°'Ðäê1ž€uf›6Ÿ@gº¹:ìt&â˜`(û)õWÀ!¾þšb?©ÿƒÏÊ…Õˆ°\ÄìzC ãD!s¯p.×[§Ñ=CþL!`s"ޤûð 3Ø•ˆ?Бe‚Á|àˆzÛoë!+GÃX•Ì`'`g °>ðeIaº1ƒgŠáKÜ*bõ¡sÃIá1AÈ*åv‘a¹ˆÙõ†@ tŸ™55†Ÿˆ°‰¯éÀà É­áI¦ò;MÜë§ÆE‰XIk{AÈùž :ïp6‘³æ’~„I÷™YÖ"s1‘øØògSã™8O6À@´&í‰@ò¸ sÁŽ6K~"ÂwÀ]ÓŸŽ,Àt7Þ\ÞùY÷'ˆܺÞÁàv¨×n¥›0ÃYI"Ôó7Ž7-O~w5°!8”îós€å`¦3¸a{Ž {¶!ÐD¡ÛÉý08ögD8Œß0ƒË<ñh#e$cƒS[²ÝÔx(¿#r)¿>†!#Šœ,Ñ&‹6;d5Šä~"“èBWÎv·Ûü p\òIÂ}Æ¦Æ 0­ †€!l0`U0 öEÀˆ°}ñ·§†@ 0"LA'X C }0"l_üíé†@&ˆBv&`õ ‰¡™l@A¥¡­ †@ˆ†:?¾+‰è„n'7óbD˜ù.´õC 98è[ï ®µl¥a-ѵ² B QPƒcè@ß`/7PÓ,‹]#u¦µÅ¨þì±›e ºóÈ$f6RoZ[  …üÁE’™ƒ¾Á©î(^ÉaÃu©5ȨQÈŬè7FþS½’ÓU’aºúÃjc¤(d0¯Ó/¸é©©X *bDXP­HC ëD!¦!{g½-¥Ô߈°”ìC 'ø°ú£ˆø<]§\ˆa.ºÙi´Ž@4œîüàr–¼„.>`nĈ07]m 5šG Y  >¨xƒyÃʈ0o=ní5 ˆNgy¦s'7M Ï#@F„yìuk³!àˆ³6ÑšàyÁP.Ê+0F„yíykwîˆBú0 4¹¬p¹#ÂÜv½5<ÏDCنȑàAAÈŸóŒ…ÚnD˜÷Ðrûµ€> Øøð ÌbJú3#ž]ßó”Ù@ ÙÕe• è§ÔœÙ¨umkiDX[|³\ú’ÀSÀÂÀ4à[`Aß e7;Úˆ0{Ý åàBdN)7MÌ"´1в¶÷.Ržÿ;€›Nuzz 12‹0ã( 9 œkŒ"È<›Z×§–fÖç¬=e`"0èü+Ñ€c|Bð€…D8'¸ðíû*çu`0p¿/c!g‘À¦>I·‰‡À]þûÎÀùÀ€Ê’ÕÒø0k ¦©¾Q'p¨%¨>1I `Dhá[ ¾¹F+¡ÞEb_o¿:Û÷æÎ.ÔûL"=˜Ç'÷Ž× •|ü1OÆý< ®ä‰Ùz¬L¢Ðý0íè-AûA)‚Ÿa™ƒ*'—ïüxèS® ¼| ¬â-ɽ€[€qÀºÀ[ÀRÀ~ÞJ\Ñ/шtçïî ­}®_‘Ê 5)(tø­Çœô Ná«2nÍÕ¥F„¹êî’»0xX½à.MWL|–´®ñÖž,=‰¬ÁÿùuEÝ{šŸ ë;M½E¶W‹v²0¦™Zê쫦Ô&%"…\NÀR~cäûoËåeF„¹ìöV½ˆ·êDx…k„O*<ð;àÍ‚5ƒÀŰӴ·9"Ô½}Á…wÚÌ»å¨BÊŒ¦éôÃÀÓàòc$å#o-¶Zy»¢€.Aˆ¬{“V0"´!ÒZ#ÔZ¡v‰ô»ÆGr‘u!·E,NZ„ZO|±™©ñ3žø´ñ1p²ŸÎô¾‰šÆMð»ÐrßÑsô|Ïñ»ÔÖc­ …ÜLBö7°JCÀˆ°4œòxÕr€¬?9JËð;à—ˆä4µp³ä>`;oÝi=pCOx¿õ;Àš ë³{€WÁ9÷.ïïÑÎòmÀn~£FßËRüXÁO±óØ%µ9 ™Ç™‹ø Ñ–I‰Ô£Õä.Qj.Ôh(»ñxòe‰m±Ëª€65δf8·ßÖ©’›*$B¹¿ÈFS_9`kñ¿ ­ÛD¬gû]änÀû~Cäz_¦6Ldj·XÏ”S·\väfcÒ ÑY,À.ŒÖ3AÈITyÔ“µžtvøfkI¦ºõ¢¥‚ÐüÇÊëR»:oD!ZF Þ„4å­ýÕho=‰PÓ¤?”D„!rº•…a5zÙÊhX¢a¬Ì î$âš`¨[G5©ªaºÂ~!ý-ÞçïQÈ£Àƾ~×!‡FÃèÅ 7E’o™\,ž¤‡§ñQºøXö BnІr‘›b‰$_¢‚!Œ­ Ív‹!ÐD¡ÓY‚g¡ÛÄ2©ªa4ŒU™ÁÓnmO' t: ?ß±0]¿Ø«œKÄu~íGîzX€.ªÉsAÈÁÑ,Á4>¤#+0w ØŠÈ… R2™èKÄ`Å ä“ Ûn·™E ÙÌÇ<.hbdf’’ŠWCw„çF:²n0˜·}6¬ùš1ÁÅü…îD›û5ÀCøŒ?W9’$Ê@ïøÙ;*˜G!ÿÔ‘« t‹ðN¢Ð×Ò°­‰¤d0Y5êƒ@4”|,Á½‚Ð2i#Õ#ÂèL7w°~ïKv/×C냈k¶5Âh ݘ‡½‰Üɳ’™ÿz²N"ÔÆ‰\7äÆË\:„è—‰! ¢=ÝLjf,A;rX¥^¯:²S ×aôa;:X/÷ˆõƒw ,Â…™êΞjzü7·æ°6;%Â&¾&à,ï{öSÓç`rpªÛT11·N.×£ˆ~AØìQĆǡ ¬ºü°NºJ²;9±€³ƒ&.Bw˹ÏD¡ó ÓÆÇbA83Òq4s±·w²v¡ûL:ÇÞׂÐëré9ã‚&n­0V¦!&¢&úp"ÓéœÎóiª[#Ô¥zDØÄ†.vÜÁàv‰5Õ½•l áé(ä9™Dβr®¾–ü–9xÙ™ˆË÷‚U¢®îHWÀ:rÓYÈ…?–ŽŒfš;y qƒ`f¹&†@Ã" eûÑ‘¾Zo؆¶cêF„ÎJÊWû¯ý±¨áAèáË‚Ó.²N%Œæuöde.ö$¢û…»Ý}ÿ= çðß(tQLö%à÷Aûèº*[tÊà´ tÇ´L †E ÝYkOTTió¨QOW•kTG+ÖÈ%QÈ.0î\ô 1)— Ô©ÑF„uÚc”ƒ@r5 û‘düÇrбkKDÀˆ°D ì²²Pè}½€!~ßÚgRö|Ð×Rþ¶tbfV¢ÐEôî„.åIHFCi š\^“ô  È/:Ψ¸ƒÅþv/ ¹$éµw+”qOnUÅ^Ÿ%>O&¥jï:íFGVvñ¿Ñ «v¯PŽ*" ‰‚Ð’Í×iÜ)Èisä–$<]K"·§ØŠ+f%?+å{9Èë¥pþ…ï‹}–¼¶ð{]/E¦e’$E¢ãý«”²ÚtM2¯%øfrl› ³›ËFÀˆ°lÈ2uƒ"F¯é3Ñé¯^rMjMD\Ú¡T´hý-ö>͉€t I±•N´ØßÂÏZ"Nf’ËŠ<’õþ›Ö€,åûèLtÀ@Á Bþ¯”{ìšê"`DX]<Û«4­¿ÅD—$¾bý›u’«Æ [Œ4•‰O™ùt´˜ˆEˆ…)ÒLm¶ÎQÈ2.‚LÀmA§×¢qVfë¶ŽQÚ®5[z1ù)¬~1‘B*B´BÞë¯^ŠmR²Eˆñ+&Èe[(FÓjá®üÌ:`ðRáµÑ0Vw±á’øDVyÕ²««…€aµ¬]9Êç¡$J›ûÓ:‹y”,“B“*¦IíÐÚd’ õ^$©…¢¢ˆñ)U$88]:S“vDÀˆ°ÁoæÑJŸߦà°'¥á)¡ºIzÐR…Hqpgð”X™ûœü¶'ܹ'ÑàGxáü§]œMÖËüÛ©Û øÄcµû)âéIizTéCpá–¥G/“l" óõJ`ßçÌÍÙvܧt½Ké~YŒO$HQĨt©&u@Àˆ° yÄú±Rø¿ÊÜ–M¡ôÄ' ФñXK!ê¼Õ(‹±pÉãkà.àn@)RMjˆ€a Á-(Zs¶ñV_Ï‚ïdõ‰üöägçJë×/iy’¢5ÅĨ¿‹'*öZ‚-ÚR z̈° &ŠTRòÝ}Âr-¢Z}"¿x½¶5±Ò³†ÀöÀ€þ*âR,ÿðV¢¬E‹FS¥^5"¬ÅôM`GÿµK8Ú“Ÿ¬@C 5äŸ$Åx廄•(R,Éo±µ‡åõ{#Âêõ¼ccëO~~±< îü¨HP¾e&†@¥èd’ã1ï%HQ.&e"`DX&`E.×ô%&@íK4eñé¥ |&†@µÐoLŠ›% —gRãj“ŤDŒKªà29ÌjóC¸vâ;MQbTC h"RT´x<*Ý­¢¼[ºÏzÀˆ°—¬ ìïCPé«<ùiúûFyÅÙÕ†@Õ8\¶» }ÉòD!ÊqÛ¤ŒK²ö$¨¸{òñŠ×ý´ùab¤ å?VLÃ-}Åt´O„xSÚ*š†ú¶Ü p P$¨%:Ó«l{z)v‰!v”c\¢Ö²%J+B¼>í¯gýŒ‹£­³¢"?½–&'Т·Ôs„Ú³ª…ÀVÞBÔº¶äY¿©"R̽þ|ÈÔK‡æ•û"¶mý/÷êÒè<»,D­sK4eVD­%æVŒêz Y€:ê$Ñ/¥HP›!&†@£! q~$ ÍÉpOˆJ_;1"„]¼ûbÝè PŽÐ&†@£# "lòáÞ4]–u˜» y&Bù^iÈ÷Jr»'@s€ntÕ·ö" ˜—Ò…Ø:Tbyâ·y*¯Dx¼ïx%ù¹× bþ™yF i*¹ÈPBÃKÞˆ0iêú©À9 ßËÖ@C t ­Ã+=!6tô<aÒ ÔÁt‘à˜ÒLJ]iä ¤u¨ ²ohTò@„…kçz´ü:ª­]ÕB Ð:ü0 Z…§©œF'¤¨ ²u4ÎÄ0JG@ÖáÅ€b#Þ´E]š©x›J„…V Ž‰íX\éƒß®4’l.í¨r9ódørˆä…!"ÔÎsf¤‰0i*8‚ÐòÆffHZESŒ€ROhóD§S&z2”×ERdt¬¬™âvü¬jD„Ý€k™é -‘S¨HвÀeiDZ]ÓŽÀ¯€Ë€=|E.MTZiI¥‹ŠØ”™éq£áÒže¾KD€g¥}DYý # ©ïq¾þrAè'(0±ä„,MufR– ²Ä} Ü“áfU7²‚À „Á¡À¯?øÊ¿”¥éqÖ‰p[`¤¨è0ÚÍz*+£Èêi4 þª©²òõ(ZSœµQMËÌô8ËD¸_ÂÁSŽÑ²ßm€eM0²„€v‰µN¸)gՋ럙éqV‰PŸïÑ–_“HP‹´&†€!P{D~Š|­¿:¯ßœdfzœE"üƒ_˜øWø˜jµïz{‚!`ùŠåd-7™Ö$Óã¬áu‰PAgƒ[ëûÞ0j†@)¤˜‰éqVˆP~IÚ•ÚÚw©¶í/ªY÷ZÁ†€!P.Í‘b&¦Çi#B­7È'p1@äD€z¯Ô„  #®t„r–þP"%[,wÈÚõ†@mˆõw-` `#`ïO¨ Òß_¦MÛ“;ù¦ß\º{ý7”9nÑ úGqÒtæQ番P¦kÐÄ0j‡À,ýzùõÂÌêo½‰P¿»ú«Ûs$û©K—.ôìÙ“Å_œ=zн{w:wîL§NøôÓO™wÞy™4i'Nd„ Œ?žÉ“•is6™ (Ú´Î@þÕ,ÆÚi‚•œ;*ÖßiÓ¦1eÊ”Ôêo½ˆpK¿É±wrèôêÕ‹>}úлwoÖZk-G‚åŠÈð…^`ìØ±Œ3†qãdÎ&·ødÖ•[¶]o†×ßZ¡ˆïX`½x@m½õÖôë×í·ßž…^¸êãìóÏ?ç¾ûîcÔ¨QŒ=:Yþ3>¦šˆÑÄ0ZG 7ú[+"ì œ¬#¬]tQ;ì08à–\R›Kõ‘?ü‘#GrõÕW»©µ—çüùÈøpx}*cO1²ƒ@îô·ÚD¸¢'—"sÙe—eÀ€qÄí>®¸â Î?ÿ|Þ}wÖ)<¡¢Ô¼Ù é@ ·ú[M"<P>·©ÑÔÔäH0m"2:t(ÿùÏ⪜—¶zZ} :#ký­ÊOHGÝvPÇ|ðÁ >œ”`:åË/¿dРAŒ1"® v˜e¶Z(ÿtv™Õªv˜þm%Bí&éØÛ¢ -´]t»í¶[íº¬Ê%ß~ûíôïߟ/¾øB%kñ Àv—«Œ³—ZL}×´…ñåj•£à«®ºª&»ÀµBÚe>üðÃÝN³Å4¼¦Öϵò vFÀô7Ñ•áÉÀÙ*çÄOäÜsÝÒ`¦å¤“Nâ¼óf-*ì¸Â›ˆ€éoA¯VB„Šø2Låˆ8Ò¸!RéÈÕFŠˆÝËàôJ˲û ”"`ú[¤cÊ%ÂY¿$š Ë7°ÑD>‡š*{1˰Ñ:8ßí1ým¦ÿË!ÂYk J‚1Fdhk†ù&Fi½éo =Y*jwéÁFœ7‡MÁ4ù·¶›Ü(|Ëv˜þ¶â R ÊÏèY¹È4ÊÆH©ªØ@‘kÒ†šŸa©àÙuiAÀôw¦k\‹ú[ *Gðr‘¹÷^ùçKvØa‡ØµFß1_­·Ö6¦¿3]ãZÔßֈл‘³´B]Õ"ZLÚšü "Ì;]Ûq¼´w˜Õ/‰€éo‰úÛê¶’¦sÛm·eêÄHµuA'Pvß}÷¸Ø•,PCµ¶òj€€é¯µým‰G}uvøÚk¯­A?e«ÈC9$>›|—pÉVí­¶9DÀô7Ñé­éosD(E¥(2 [•æ õà Ô °b>jM?ÀâÖ |{N¹˜þ Öšþ6G„Šw¿N£)w4^Ÿp©QpW%¬11Òˆ€éo‘^iI‹¡Âsß,ëçwÞIc'·k–[n¹8¸ë>€…ýo×Þ°‡AÀô·…aÑœþ#§•cäòË/OEdé´ uEº>òÈ#U-å@Y?mõ³úäÓ߆@sú[H„Î]9F>ùDùÓMŠ!°Øb‹Å9Pìĉ ‘4!`ú[BoÓßB"¼Ø; Cjߤ8 õ/ŒüÔXSdC ˜þ–Ð Åô7I„JÞûì³\ž).Cw©Î /²ˆ{0˜˜Vnv½!P%L˲Pc"t»M½zõâÙgqˤÖ]w]Æ“ï*¶{\ `vM­0ý­Ù¤þÆD¨-Ц¼Å¬»ÙnIÄ+ ¸mdC 0ý­ô¤þÆDø7`Û¼G™)ËDT‹ûíʽ߮7ª„€éo@&õ7&ByO/úÞ{ïѳgÏ ŠÌç-ãÇg™e–Qãw±|¢`­N¦¿tBRE„Îÿ¨K—.|÷Ýw—ï[ºvíÊäÉ“‚ùæ{(´WëMÛ€|¬¿"µ€çW[m5^~ù劊ÔV´ÜnÞxã :tèÀk¬Á 'œ@¿~ŠV•^yôÑGÙtÓMÙc=øóŸÿ\QEW_}u^yåÝ»6ðBE…ØM†@å´YãGO™2…³Ï>››o¾™?þ˜ù矟wÞ™3Ï<“_þR| ›l² =ö¯¾ú*«¬²JåµnÃAУG8j|J‚XE„ÊÃq÷vÛmçæ(«àÄ‚#¿øÅ/˜1cFl!1lØ0V>étJ5ˆP¹\þö7-Ñ8_BùšõD MúWtêÔ©l±ÅŒ3Æ}$¢ùꫯœ>¯¹æš<óÌ3Ì9çœ G„±þŠGz%‘¨Ÿzê)6ÜpCæ˜c®»î:öÚk/¢(âú믟•ü]¹Nĺi”ja"ò­0Ic'7~*Öß$4Š=*£f…VpIÚ´ö­ Ì›m¶™ À"ý>ðÀŽcýº/•¸Î˜‘#GrôÑGsÉ%—Ì6äöÙgn¹åŽ?þxþô§?±Î:ëðÒK/qçwºÏäиãŽ;º)µ"aKÞÿ}W–JÖ¥ò„üñ¤sçÎüãÿ`Ë-·tßkMîŽ;î`¾ùæãØceÀ€î~™özÿ—¿ü…üÑuâE]4ëÜ´G;ì0Dàêð}÷Ý—ßÿþ÷mš',bKìÔø¤“ÆV¬¿ÉƬºêª¼öÚkÜÿýèøY,÷ÝwŸ#Âm·Ý–_ÿú×E‰P$)"Õf«uÔQˆO4…>}:§œr ·Þz+Š­p‡z(§žzê¬g\xá…î~}¯zhz.Ý•|ÿý÷sÌ1h‡·[·nnš.Þ©ÖÔ8Ö_áiÀé§v§Ÿ~zY-“YävÏ=÷ ´—I1bbÛ7ÞØ›ˆðù矧{÷î‘Ñ“O>ÉþûïïÈtÚ´ihRÁ`µ¶(³\÷ÅßÇDرcGG ZŸ>|¸Z¿\ÚíÉ]sÍ5î™jÔ¨Q޵vÙ©S'Ö^{m^|ñEW—Å_œ»ï¾Û™þmY#ÔÔÿŒ3ÎPÓµàÞ˜uD býë(£aî¹çv³¹I“&ÍZ,Ö†Â5Â8¾ß<óÌCïÞ½~ýë_ÿrä'ÒÉÉðQ Ø‹ÞÛo¿Í 7ÜÀ~ûíçÖ#e(`êlà¸D†ŽxEÆŠîUÒWéµ¾WºŒja¬¿"BÅÛ + ½¥,Šä õý’ˆµq“ˆð¦›nBÖâÿþ÷?–Xb ¾þúk÷K Ø]vÙÅýšè×A¢2Ebß~û-cÇŽu¡"gÇĶçž{:ëO¿I¿6+­´Ò¬Ó1bûK/½ÔýÊi±W@¯¼òÊnSH„Ú¿.¾øâ6a"¤œZåXmbÔŠõ7®ä7ß|ã6F$2,´áÙœ$‰pÅWD±ý&NœÈÓO?íôU³:é˜ ¥À4hW^y%2´¤Û?üðƒ»F)r¥“2~d‰N˜0ÁÍðDt2LN>ùdgèhWWF’fs"C7â‰ja¬¿m²Õíiº«Ý¥¤È2“…Vh „8„UBDúàƒ2dÈ¢øë×A¢ˆPÏÑó$škJ.r•ÙÞ§OŸ¢÷_pÁdý%§ñ²UžY„õÔ[{V•h³E(£DËOšµ%­Em’Ä™/’—IDAT’$BÝ£µÄå—_ž·ÞzkÖ5Útyøá‡yä‘G!nµÕVŽ`%⌽÷Þ›ãŽ;Îí-È’”EZ(ÒK)"?«ÈRòïÿÛhµˆ0iV¼Æ b iª+š¤hz¯Æk„²Õ 5L¦óÍZ ÕÔ\D%S9)Z7Ð/Žˆ0IZ±Ù|ã7ºµ‰Í7ßœõ×_%iIŠ,OuŠÊÕzƒ–h·W»Fm!B[#¬²Z[qå"P±þ&$2Ó²”tBë±hŠ++LÖYß¾}g[#”ïñÒK/ý3"”JßþùϺëŸ{î9—xôèÑn)‘‘tÙe—1×\s¹Ýh]›‘±¬AYœZ“Á%Ñ´YŸW‹“k„ï:‰õEfZSŽ“ƒ:È­3h:*?B‰¦ÅÚ5Ž×eŠÊòÓ/,C5LScY„ÚuV'¨3´¯)´ÖøÎ:ë,·^ØjqU¿²ü¶~i´ «çÈÌÖ_ÕA/¯rÕÉêà¶¡í—«·v}•¨X“õÐzž¦¯É]cé‰HM-´F¯÷I‹P×.´ÐBN· §Æ*[Sã»îºË-kiéMiŸxâ 6Úh#ç’#•¡5C=Kkˆòç•þkCD:-ëOÓimØhú.ž…Y-"Lî·ÉIœ˜]"ò‘),S[“žÞÇD¨µ9ªÆôÑGŽ<µ±¢ÆÊÌVƒåÓ¨`ýªÄ$o–4gÊÚÓ.³Ö E¼²"µ«)³Ìv-kêüøã»µKý’i¡WÏm ša•ÕÚŠ+6éoü0鬖±âèS2(´v(‘%(/ …›%çž{®ó¼î¯·ÞzŽÜ´Yï9ˆ\E²Ú+®hLº,ãD»ÃâqˆUz©Íé¾ê!=ާ®z¯ûµä¦e²X *ÕI?Â6{¦kû\á믿î€S£5mÝm·ÝfujL„jˆ¦ÊJ°ÓN;¹…T¹ÊHDŽZ;Y‰¸ÔÚ1’ ^ j7I¦®Lyu¬6G´†¨)‰HV¿Ú˜Ñg²Zå?Ù"´“%åê­]_eÚ¬¿q}dùÉB®.ÚÑ K³²ÎZC,v²DËbÒSyoh*«MHé±D†‘ftâˆO?ýÔžôM‡-4-–œsÎ9ŽeAÊBÔ,-váÑú¡¸DË_rŸQ]´™*ýÖõm•äÉ’ºœUŒ‰°Ñò¡ØYã¶E»¿ÔEÛXÇÔÞž£6Ö<žY#¡Å#lDõÈd›j®¿™D¥•J‹Ghn+èi‹P]hvK-0ý­Õbª-çA@ZÎ’ @³[j€éo¨ËYbY°ÊҲؕ ˜]^KLËD·¹,v*Æò¢–¦å5.,»´˜þ–rsyU„óPW”ˆx Œ"óyi|NZ§…€kò‰‚µ:E˜þ–Ñ…ú'oRÎIoÍׯ |JºTGøâÀ–«¤$Èì¢Ú#`ú["ÆÅô7I„*æf`ïJBr•X‡†¸,zë`Ÿ†h”5¢0ý-¡‹éo!ºÝ§E]ÔG3)Ž€Žé¸ð[à!ÃÉH ¦¿%tD1ý-$Bó4°žÎqÄ%›¯K∼À3Àúùj½µ6˜þ¶ÐIÍéo1"Ü[SdE‚V|2“ÙP°.÷SbMM 4!`úÛBo4§¿ÅˆPÅŒSä,Eyˆ#¥©§Û«. øª¤4Às@¯öª‡=×hÓß"µ¤¿Ía_`”²ËÉúQ@ż‹‚ÇÊJV¨/@™ëgæ 01Ò‡€éoAŸ´¦¿Í¡Š‘¢ï\I¾ãô‹¶×(‰Z¸ˆM 4#`ú›èÖô·%"\xCe)jl2Èjš{¿uKD©Pñ+oÖâ9V¦!PEL=˜¥èoKD¨b\bE•Un¥ËÌ›èL¢Rúh¸–Ä=o Ûí5ý-Q[#B ƒ{€Û_™æò&Ê£ Í€¯ü&†@–0ý-AK!ÂE€gÁZ;¦JÖ’IÄ+“÷ôºÀgyi»µ³a0ý…Võ·"Ôˆpëz“—šÄV»šm'H†rÙÓßVN€•J„=.º…Þ\uÕU.As£J"DšhÑeµ£óÕ.Óßú»"T1'g72à@eÌ—¾XkÓßf:·\"T1ƒa8M.˜No`¥°¦åÓß"ý^ Îf6ÊJbcDí3K0Ÿ$‘—Vϲ Mgvy¥D8Ûš¡\k´n˜E?Cù ~øá±‹Œ­ æ… ¬³Ö MÛF„JÚºN®5rº¾è¢‹2uEçýû÷¥µÅ~Å4†È¦¿¾³ÛbÆãE~JWÈéZèlòðáÃS¨A° Ĉ#â6ÈYZÁÍO0G,`Mu˜þ¶qj\8ŽÜq}¨¨5MMM© ᥠ…êöQdT];6gŒ`øã´yÕßjX„ÉA¤ƒÞg äÂV)ža"]+2­HÐUUõîN± ƆÀ,r«¿Õ&ÂQ¡Hf} (rÀ>à€XrÉ%ë6î”­jäÈ‘È7ÐçѳTõ,‹'X·n°eÜéo­ˆ0îz… ?V9Pâ”7¹_¿~h§ª»ÌÚV„Q£F1zôèäTŽ‘‹ ¯Ÿ=Å´·¹ÑßZaÜ}Ú:P©B“ýÙ«W/úôéCïÞ½]¨«ž={–ÝÝãÇw!ÂÆŽ˘1c7NQÊgßõ¶\6´vƒ!ý­Æ€* õ®~‡y`ŽäXëÒ¥‹#ÃÅ_œ=zн{w:wîL§N˜6mS¦LaÒ¤ILœ8‘ & œ5ú›6"l©Ÿ>–H\ ÿå3x©Ælņ@é \â/Ø=íK–ˆðà¸fúÂH±ôAjWµD  ý´Q¹O-V­²³D„k/–Ðp#Å@²K  ÷´c|¹2\N¨Á3jRd–ˆPN AÑúƒ¦Ëñ«& Y¡†€!0Z¼ÒOõÅ©þÐBf`Ê›ÏõÎÒ"@CÀ¨Ë({‡÷ÑSSzÔ¯ mRÖˆ°pz,7mãÿàO°¸œ*&†€!Ptbì`eïÑqˆŸÕåáÕ|HÖˆ°pz¬cµaЅםæè°² æPŽors{  >•UÀ²H„É鱇k:œÜ©º Ðö½‰!`ÔTQ”)ÉŸáòÝÚ<ª>¥f‘ãé±6F´H‹Î2+Z¶äàwÀ7õÑžbäÕ<nŸÐ3…üÏü1Ö,¡ú@»ÇÚ ù%EÁ`AQwuÜN ·oäbˆZ# Ú" ]’8¿'¾¡€fg !Y%Bu€ˆ°Ø.ñJ~+C`¼OЮóÇ&†€!P>2*D€±Ñ! 6Ôi®¬¡¦Ç-u„¦ÌÊ£²ðßQ–¥hb¥#ÐÏ“à h&aÈ*–Ú•çüÅ"Bý’iZmbÍ#0§'@åó‘4¤˜'"T[åZ3ã§HPdhÖ¡Ñ€!P>žµ´¤M†Z l®ÓÝ"ŒÛ­8‡"Cí$KÌ:40~ŽÀÉžuH¡á­À¼Y„Éöîæ qU³ Y(Zü‘>r|n¬À<¡Úþ+O†Ç›uhTs!^(!kyŸk¿œB5]^׬ÜÓAþš¿¾'@E–<èD–"äRò²FØ\ç* €ÈpPÂ:¼x6—£ÁÝè¬å P§A$ç—74zÃ[k_Þ‰0ÆgsOˆû40®õç([Ãо7ÒŽ€h ¬WGàuoÊ 4ñ‘[ ˆŸÐ/åa~º¬OoF7 " Dh1v>ò ¬Àï3ØžšUÙ,ÂâÐê8‘HQ©F%÷z ñîšõ„lT‹‹ p>àkO€²•AΤ#–‡Ä¾žã)³2rÉBTjBC ml (4ŽÆ)8Â?–øAÚ*›¦ú–Ö{zBÔZ¢ä o!Ú •Òð³«j‡€ÖÿD|"@m†H4íÕ:·,ÀWk÷èÆ)Ùˆ°¼¾ÜÕâVþ¶ç½¾Î7T4Žò`±«ëŒÀ/<ñ‰üvN<[ãQëÚ·›X^–‡W|õN~Se»ÄíòÅÒZ¢Hñ½Êе» ´ÈO¯Åü•Ê×#âjü™T€€a %nÑÁt‘¢~•ÔA¢¬z"Ø¿hÛ#ìîœ#Ð3±î'GèX4‰ Ð~xÛ8HŒÛ ¿]‡ÔE†1)võŸÿ§€ÑÄh ÅÍ–õ§°X’é ò»³µBìûÒ0",«R¯Ô”%&Å-7}V@Š¥–g×åÞ>7°P)'’òZ‚•1ΤÊVЂâÖIX‰«$¾ûxÆ¿Æú]èÚÖÄJOÝÄ'Ë/^Z‰ëùŽ£= ¦­þ U#Âúu§‚<ÄSgùx%Eëˆ11>æßׯfö¤z! ÷²öD|z%EY姪¤crÏz®^•²çÌLŽnR_æ´è½žÿ«÷ú,): bTÎX%ž2¥¨oUói1é³úþá‰Oä÷c5le•Ž€aéXÕêʹ…Gß bœHiDвthÞΊ֪G*+WQÐðW¹õŠß'KÓîîƒÞòñéÏ$¦ ŠTa#@/d1‹Q·èÈ”ÑEŠÉ—YµíÓ¹›!<é-”O}¨+‘Ÿ^ï×¶jVz¥VŠ\}ïÓ¦‹HQ/mºÈ·¬9y×c!IʿѤ<½¥ÐÂ[®™"´¹ñbâ%?? pPÞívµa»AߦËoQ ¹¼%ß³Lô°7ù•WÒäß¼MÓä¯'w'½Š½×²E¡DžìDtIâ³¥Š6 éö½Ùˆ°}ñ¯ÅÓE„…¥´9‘ÅXH²hŠ‘¦>W’Ÿ´J¥$WØ9ÀÇdŸ)Ok¯·¡^F„m/ƒ·jJ­×‰—b×%ÿWú‚RDÄ©õHuÕ+~_ì³R¾—õ¥—NQ¾/öYòÚÂï;´Òm>Éeésÿ7ù>þL¿-»&ûf¿«Ý‚_¶@’IÂT”öMGõRܽø½þ]’ÜDzÿkïŠÛóÓ…€aºú#KµQî‹bVYK]ü]±¿…dVŒà ?Ë^V×#`D˜â᪆@}0"¬ÎöCÀH1F„)!`Ô#ÂúàlO1 #`D˜â᪆@}0"¬ÎöCÀH1F„)!`Ô#ÂúàlO1 #`D˜â᪆@}0"¬ÎöCÀH1F„)!`Ô#ÂúàlO1 #`D˜â᪆@}0"¬ÎY}ÊR@èSP*à«BXÝ ³0ôYíR«w1Œm\4‡À’>¨Páé©zAñÇ>ëž’™™GÀˆ0ó]X³Œ¶ò)D÷&JYy»Ï¬7 Ø¥fO·‚ :"`DXG°3ô¨%€}þe€OuW>”7üÿóSÿÇWC½5©ËNôVå«À@à_ŽrüþØ8Ý'RR‚ûC2„›U5£f´ãj\퀻€€µ‹ç¬ó³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $p³d!sý#ø~<<+"À¾xÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽB¦@F€˜&S `ËcbãP-`'æÓ€ø™{[”! ‘ eˆDh;¬ÏVŠEX0fKÄ9Ø-0IWfH°·ÀÎ ² 0Qˆ…){`È##x„™FòW<ñ+®ç*x™²<¹$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóýxήÎÎ6޶_-ê¿ÿ"bbãþåÏ«p@át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ éÚWópø~<ß5°j>{‘-¨]cöK'XtÀâ÷ò»oÁÔ(€hƒáÏwÿï?ýG %€fI’q^D$.Tʳ?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼ AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È2‚ü†¼G1”²Q=Ô µC¹¨7„F¢ Ðdt1š ›Ðr´=Œ6¡çЫhÚ>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱwEÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö/{ˆCÄ7$‰C2'¹I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ääÃä3ää!ò[ b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT©^S}®FU3Sã© Ô–«UªPëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§¦½E»YûAÇJ'\'GgÎçSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕFFŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)ÄiS›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCOgµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿѧ€%g‰A[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA‚­‚åÁ­!hÈì­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕXXIlK9.*®6nl¾ßüíó‡ââ ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©¼L LÝ›:žšv m2=:½1ƒ’‘qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ7œïŸÿíÂá’¶¥†KW-X潬j9²‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TRÖ+ëGǾþïw- 6 UœÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ499â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-Û cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFòIDATxÚìÝ?oIºàêƒ";òd„9p²‚™ÄÁ…A#)ûœ20ü”ê†ÓÝHÁ€pàäÞ`%œÊ8°#§ˆäPÿœÓ]ÕýVÕóÄî½;"«ûT‘êßüÞ)眀v–âì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>D°ì€@û Á>äK?›¦éîÿ™ç~šÛO³E"ØË¥þü  °ð$£x`]9- ÓØwÜiÖËk}-Í}À]ûàgy¥¯!ÑüD°6v§% MÆ|0²ëP]„¿$ûs°¿³€¡iì`tÙë"ì`XGàæ›×e`FñнišnÚúrZ¡­oÿáeÊç¯J|ª|óú€qÅ @÷–Žà=¤¥ï§¯ù—_¿ÿçÛùn¿ŸÝÓØO˜êK)¥üåÛ÷ÿ,ØÜŒA°€Qä^¿±¼Ð?Á>º!—Ï_iî6åìïè×u°ïè¿›;‚÷‡¯ý—_þÿ½ýÇâO›RJþ^ú¥±*É_¾ýüÿ[ÞÜ'Ñì w›´õ=ù‚ Œå¦)Ęa ¼_,=ê<ô–ÓõH^ ?û`¥Fòjí€þöÀFJ…û€¾öг£ƒoû/×}ËÃ}@gûèN¤ñ´ùË·çÿ™eá¾l/ôE°€^S 4I°®­=†÷®¥#yµö@?ûèQ¨¶¾CÆñ¦´(ܧ:"Ø@Wæ6×mÙÖw×Òæ>¨}ÎNÓ”g|X<€#öÀ m퀈®})Ío‰Õ. pÁ>†·V[_呼ڨâÎù’—~gÀa~±ô@PªÊ?‡CàûÚZm}kp ‚¢ct5÷€‡ öЋfB}‡¶ö¥4+Ü—$hälÕÜðÁ>š×bí˜ptN(àÁ>†µÿð²ÛïM@Ú%ØÁÍÇkÕXbƒ€¸Ö>€;ûR„¶¾Úãx$XrLY€íöЃîÃZûá<JøN°€¦Í ìή¬’`ôKkGÛ8®µ öð£ÍƒáÓ4i†&ØÈç¯fý1+@kGžó `­óàœñ]ì`Hû/-Ümü­q¼À¨û !3ÇñÀÁGM°³Jk0$Á>Š@(C°€¢ü–ì uÓhß°°-œO¥Î«išÒ4MÊ/–€ ÷Moÿqô§I)¥iš¦œ³E† Ø ˜‚€ÕÓΗÏ_Í=×r°©“`Ía,Ÿ@k=éº!€íì,k:¦á`D‚}4éN[_³­BÓ_~}ú×ÖCì 9=„ú èùzôÙ:·}OkÀãûhÊP‡¯™$4D°€å´°­owveàçóuÝ/xdkŸ€?0 Á>šQòaþþÃËm¿—¿üºöÚií 8ãtêì 5ÃÔJ‡%„ûèáxÔÚŒ@°€&ôÔÖ·ñ: ÷@p‚}´dq(-J¨/ù¶Ùמ¦)ß|¸¥ØüL<¾¡VkÐ=Á>»~xßM¨ï¥Çñ>°¶Â} s®´B°€ÐzõmÙÚ÷ÀÀÑçj©³lNkŸ«ôL°€îEn:$Q»µZ$˜ôL°€°J´õõ2&0Ÿ¿ªð›¦éö¶8[çœsÎ- W‚}t«•P_€‘¼ù·€­œc·ç@oûii[_kM}ùË·ƒÇòV͛ӖDXóµ@ûˆj˜P߬ũîK)¥¬¹€ƒÛgY@oûgɃùÖC}Ç#V÷@•3¬ô—¶ú@oûeäPßCÇò¦”ÖË{Û‚¤ €êgàüsM¸èŠ`4npthl;’×y ‚}„qý >§a²^Úúî 4–7Ͻ.pô¡³ìLËé:àÐ2Á>š×c¨ïF pý;( ·;»J—û"güîe ˆàN[÷î«ÝÞgÌ!ÕϾç™ó h™`4 ù©I #spÁ[ûŒš&ØÀæ–´éô<†÷!‡%Œå`Î1sìx*Ü×ÃÏ[ì Š£Ã£…únêÀö¾ÊcyoGò L´ëβݮÀ9–ï}ŸMì`S´ÏwLÀ¯ÖKHÆtq¤X€Xûˆ@ `Éâ8ž·&í}D<Ÿüœ´J°€Í•ó\x¢öXÞ$4Ðìrì8?=Y÷:¿Ð€–ö°µY°ý‡—VîþB0š·b¸ïöZ N´aÎ^ýP¨ïâr_ÿŒ[~~ ¡Mì€Îl<úPh SO5õ=î+y& §gás ‚}lI¬ÖÂ>¤¨<–÷öºÞ4÷ Pó ˆN°€Õ-y˜¾ÿðÒÞË+¸ ü¨hîjísé€èûØÊÑÕúf,ò¶cyg]gêš°j ïÇÆñ?XêÓBì€Îm<–7¥”²±¼”T ì;6 "Á>¶ Åmíßv,¯kÄ ›}ùç5C°€Uyx¾CÂ}•~B$AŽ„HçÏ\¥Zû"ì€ä/ß¶nïûa,¯ 'Àzæî¹ç§'a¿§á>€ûXÛ¬vî _„JíIGÜ7~ œÃ‘-üAk’`«ÞŠå©ö¾ÆòÞ~©t'à@õ=w³3§¦¥ÿ€3ˆF°€ð´õÕõTØbÅ€lvZ Á>àÙ&¥Â}ÆòT4go=?=Iç§'ÍœY‚è@OûX…°V|µÇ$òÜ/ΙY?güå×Å/ï&\î "ì`MGº3†wå ´ýX^ã »ªµ¿Flê{9«JœAÂ}ÀÖû€DË+\ÀS ´õýtlíKóìήžüß[nÌ_¾=”¸ ÷MoÿQí%\ÿç”ÒŸÍI9Ë[#Z8ú¹ó%ÊËü¾t®óX›Æ>ÖÒÕñçB}‡þ3¡/Ø3Í})­ÖÞ'MÐÀüæuýÇN÷C… MÎ`S‚}T×Û(Õc{»³«Û ÷¥toªê)|U*”×âhÞCÛ•V ÷iï¨`ÎÞ°gWáÖ>€5 ö°ÄGºØë„ûRJ)ß4÷iïøQô}qq¼…Ï$?Ë«ì m}}9&„‘Ï_iïØxÛ>öÌië{óz›GM[Œá$Ö$Ø@Xû/-B0Ç6,iïXŸ}°ÚY$H¬F°€Úš^«­¯ÕÀÈá¾›ûMÈpööwžŒD°€Fiëk9ÜwìhÞ5_^Òª jÍ@óVcxg Zû€ÆöP“¶¾Þ/ð¿•Ã}]ÜǸõÍÚûÎOO, @ ‚}„3J[߃DŽûÖnï3–ÁÚ{\©¶>ãx&Ø@BTã >š`ˆ­xÎ¥­¯T¸ÜÏ8Àû(nÉï(m}»³«U›ôFù»E¸O{Ðñ¹+Ä ÐÁ>¸gÄ])ÁG* ½Ýn¿Î€¾öÀµ%-}ŸÞ½/òõ{pìH^cy¶3g ï›×m?^*pödͯ@m‚}Ôrt€jË1¼KBu%B}Ãß,Žå À9 µà‚}Pˆ€ßŸæ4VnïÓÜÐÁÙÐ+Á>Šiµ­äÜ¥á¾^Æñ¦ô= 17à·ÖK¼{ßjïZ={çš3†·'Æñ‘ ö0´ž‚tQoïËI{Ш-‚eo^{´°¿}PĽpÁÑA©ý‡—Í}ÏŸÞ½°¡¯DkßÍG/æŽWÜ¢½ µ-¶«oÆ8^€”’`åi?KËÃ}7z øÍº¡ÖkïK) ÷8cÿãF¹µöPÒ¡¾Çšúúç¸ssÄoaJœ»¸@‚},6RSÍVa½^šû–„ûVjí3’ào^¯óXÉ8^Á>Ê™ÝX³ÿð²ÛEÑÚWø&[q,¯ñŠ@dK÷§óÓ“£þùµB}[ž/Kþ¸3(M°€aÛ€77¤w3º·DÈoôÖ¾µ^b2ZÀYqüÙPŒ`‹ŒÒN£y¯¬¥5Çòôvö¶ÒÖg$/02Á>J€:Ö¾‚7ÝJcyoÆ+±8{û?W–~ gPŠ`³iëc‰Fš˜Œåº:{[ië߯`eZûþT"Üg,/0‚{Í¡ÃìIÆñ£ì`©Eá‚ý‡—›¼hãlÝ@…Â}kŽå Ó3iùy’@ ‚}ÌÒòë¡>­}?*ÕÈT9ܧµ±e®õ…ŒáØŽßÈXBÐiá¾{7“pÀƒJà=?=ú|ðóÐÁ>6³Õ^âj$ÜgÄ"°Éi V\ì•F¼Î,°„`s ñÀºÄ¸\fÜ\Ç.j]p.´F°€£”jë3†÷GZû~–¿| ä0ŽXsK´-¼`8°Á>èDá¾’ ‡3„l€U»vÀ˜û˜£ÉPSôà›±¿Ül…ÇòŒæüôÄyÐÁ>V×ÊÞƒv½¶ö ÷åiš42]zóÚ#¤»çÆÌ³#;#€¹üVÀ±Œ ­¨D˜ÐHÞnâ‚á>« ”v. 륭ïvÓÕÚ B°°e[ŸpßÃJ‡9JŽåÕÜÔÜþ,AÝó ò¹áú³ö@@¥Â}½ü‚65å$¸0„9á¾’ ŒÀ8ûXÕþÃËð¯q˶¾¯Ãh^€f »ŽÀ ûB«á¶(!Ã^•Ç›RÊÚ˜€¥îì#‹Ã`ç§'ýîß1\Šì€àJŽå½ûÑ*a6=‡æ…ÂsJÉ8^à`‚}¬¦…1¼#i=à•ÐP€Ñ­®+08Á>2M“ÀÒ†ŒäýQÉÖ¾Òãx] uo^·ñøhË×%g‡Ÿ§€CöÀàZmî îX´%•ø$ç§'V2ðõîž#ØÀ¡rZ6he oäf<­}Ü”¶5=õ²4\ô…5 öнÛèS3Ü×Ó:Ía$/°µRàÑÚú‚†¼Ÿ=#„À€§ö@c„ûêѾŒîÍkŽÖ:r,ð¿P]+cx[òéÝûj¿ÖÂ}¥›š †û²&&`mKÚú„ú6=3~à74ž%œ4Í}¯„5€¡´êkpoJZû€'ö@ÃŒåý®V £D¸oš&áXà ½" z5iáY‘ÀCû¨jë1¼#4ÏËû]ж¦œuF>fìà‚I ¨ð3–×H^  ç§'³þ\ëcxسä:!Ø×j޵õ}¬#p #³<·OX‚†/ž8P˜`š¦)- #ûÒá¾ÑGò lÑÍmëëÑV!ï…g…8ðÁ>èÔÈá¾J„û„6{ÃJ{v›#yÿK@?û õ;¾öÓ»÷E¿·VÂ}AÆlUhëëÆí9!àöPÅÖcxùQé€ó jö„~hwÍî %Á>ž§e¬#%Â}#·ö•l,µ´­ïÍë~µ:Ž×Y¤$ØÀ#®b€F8o{º˜ËCàî @°€òŒáC á¾Z­} CÙhE ¥åcV—¶õ áÖ>`p‚}tI£ÜÓJ´öµ²ÎB@ômjÎê‹}”lí€1 öP”¶¾v÷ŒíÍk‰ªž=eÂ}À üÆÀc²%è_©pßoãx–ìÚúÆûyÌ™ã솠µˆ¸5Yg€ûxˆ`?™Û c o›J´öíήšÉ[š1‹Àšç,cŸÓ4¹w` ‚}ü —ÆB†4 iÀxgìÒ÷¼1¼ 6]­}@Cû€"­}-¨êXØÆ$¨cÊ[¿ÿß¼óÑá>í®À‚}@JÉH^€è´õ•‘¿|kµ½O"ØÀCšp|L¸l”¶:kq}sÇ sÉ »yßy g x”lísfÀû€:¯@`CÐXͨcxÜ|W÷9/€CùÍ €û<0fq¸/ú8ÞFG0¹×ª–—œ±Æðös&”lïú%ØT±;» ð &­À!ç…%€þ öC*ÝФ xj‹°c kœÂàÐ7Á>ny@Ì]KÇñÞÐÚw” hÌ0îâ÷oé¶>lÆq[û€N ö›ˆî3’€ÍΠç…†Wè`sOïÞWiî‹ðË_¾EËk$/´GÛf5ðèv÷ôG°€³ï?¼´z)î ÷F¸ø ú lÀ@ÎOOŒá |F¬A°Ø\¤æ¾’Œã…! â²Ùy¡áú!Ø­Vk_ᾂnGò m@LÑß›o^{,Td3Ž=’è„ßàHɃ`f%Ü·4À‘Ï_•lîËÞ¯íŸ ¥Î phŸ`N£yå…~•jÒ”<¬&´G°hÒîìjÓ€_ép_É—æî€úJŒá]«­ïÍkƒ?€ùM€” õ<*Ö7ú&4–€Î?ëÀ˜û€jÖ÷mÙܹµÏH^¨§Ä{k­¶>Ú?„¾`L‚}@¶ øÉ ÃòùTó‹%jºiíûëßÿf1€æ-mëÓÔG„û7g?ˆNcÃYc<,Û­ûÍ}%Û™ \4’*½í[y¡o^{´É R¸µÏ8^ßæ˜mÿá¥E ¬-Æò¥– ÑÖÇQ›oÜ‘¼@û€Õ|z÷~ÕÆÄ5Ã}¥[û´3AX²¸€êû€Õõî+­`¸ïv$¯±¼° m}:€öÝÛ]­ð >v1'MMPâ}t´­B}o^{ Ð*¿Ñ›X³µïÆ¿Òá>cyÚUãL(ñi\ˆO°€®ì?¼´ Ù"Ü—RÛãy è€hëëxö€!ø­ °#yK9¦iÊÓ4¹Ppø{&MÓ$K˜3¡Ä9àÊ@l‚}À¦>½{¿ÙXÞš"9îîƒ>ië‹'âHÞëÀª‹AùÍ¡Çp_iùüUÉæ>mMàý@P‚}ÌÖZ(Šø¶jï™¶&xü½Q¢ÑìüôÄb•À*ö‹%Û’ÀÂþÃK H÷Ã}ýûߪ}­›€jûùfôâô—_Ë~ÞóWizû"Ÿ*¥$ÙÏ¿Oša oàéË·âçA©Ÿs–ñ€hüv„wÓäW³Íoà±¼¹D+ð3m}Ô>J|+ 1 öM1®÷G‚P÷-6÷ õñà uÝäì ì`cxéQ­Ö¾üå[ñ0G ZûÀ{qïy÷=Ä"Ø4©Vk_k#yS*6–WkzOhëãÉ+^ÐÛþ öàa.Íî+Ok´ëÍk}zá7< i-…ûÉ›“°/ƒ»¶jëc4ö~F°hÞ§wï«üvgWMµ÷Ç{KsÀx{?‡`ÀÊj6÷ xÜ67 ÷Ô9"²ç@‚}óð–Þ´4–7¥ÔB¸ÏhFF<Ý÷4§t¨Øž`Ãùëßÿf:Vk,okJåžw~zb8|Ÿ.î6’ú"Øp€ÖZûRÒàÇ`…ï{þ4MÞ€`Ð¥–ZûZ÷ z0ˆfƒ¬o^{äÓä WqÿÚæ·<€±iâ¢k¥Ã}µZûRj"Ü‘“€<Ê^Jì +5ƒWЪ|þªTs_JÁtè:¬êÞf›=:^°Û{캦µïÎç/îîÐÖGöyè‡`нOïÞ øµÜ Y(ôa$/sq¹·”Üç€ öÌP+Üp$ã£/Õ]@–ŽáÕÖG§{Þ€m öÃhe,ï#yo>–ÒÜÖ>hŸ`0”Òá¾Á夹†ië *Á>†#Ø*Ôêdd#ÀÒ´p[kýÝÞì†S2ÜÙê8^ÝÒÀR´¶¾7¯=òá³ÄH^h–ßò€!µîkÍ4MI»1JšX7d…P÷þÃK 쪱־|ý!ÜGxîQ†ºßÿò뢽]h¶!Ø@W´Òp #yah³Ûú¢á¥³3^kŸfKØ€`C)äÂ=Ñ‹|þªè§KÉX^€hüËÐÁ>†!ÀEm5[ûË @ Çñ¦t=’X`0¼Fò¦Tw,oáÖ¾”î4÷AOŒáe µö{­}ÐÁ>f©^‚-´î«)Ÿ¿ª2–¢¸3"ڽɰ„û  ‚} Yc$oépŸÖ>¨ëÍk{ì÷Ï»;Žwf¸Ï~+ò›À5#y§ÃËÚ†û€•öÜa$ïw5Zû4=F° AùË·êÍ}¥Ã}®QÞ>–€‘-líÔ€•öÜS²µÜB„BhMÔ1¼o^{ÔÐ#¿í ªçPP‘ÔÇ»Fk_áæ>ØòÜÓÖGsjïó@L‚}(­î[CÁpŸ`͉ÚÖs-Çk >Á>€Ô ÷­Õ椹 wÃ}@<‚}ãêºmÅ8^ÜG•6Ž2ᾜÒ÷Ѩ='Ž%÷™¶>6ù]6gmÙ#š¦iñ_ ÍÝVÝý¿¹¸õ׿ÿ­èç«ù¾Y³}izû"Ÿ&¥”ü=5+œy7ÿõ¨›­…Pß›×:†¹+íñùË·¹­²ž3@E¿XhË¿ýþäÿþßþåŸ-RAŸÞ½/î6!@3ük\ÐçB}7ÿÌ!ÿÛ˜ÙŠtüåÛjßGÉ‘¼P“qÏ´H°0'¬'àWΧwï›y­-†û¯Xãvíñ›2†w°›¸Òþ¾ pž§iž€JŒâ`–ý‡—¡¢’¼ûŸË¨ÞyJŽäÝ]uóÊç¯Òôö‹?ÏM0$g%~-)%É>¨À¿ÊÁÔnÙÓä׿5[ûJ½ä›ÿ¢ù‰(ÎOO,öw`3‚}0(¿ãÉûÈ×*4’×F­[Ô@Ý÷˜‘¼Pž`²EÐN¸ï8ŸÞ½/ðÛ]uµ.%Ã}Â!”Òó½ôæµG<£ ÚÚ'@ …ù­‚Ø2`'ÜG …Â}°9cxØš`R2š÷X-´ömuzöe§ô½iÍhG€¶öo{6”#ØD Ô ø±DÉ‘¼°ÄÜ€‘¶>šØk ·µ­@L‚}°±¨!:¿çií«ûÒÝa¸öæµÇ;½ó›l¨…àœp_}½…û ¶? ÷¬°·—Ü·ã€2û`#-æ„û8–ÑŽlI°€Ö öÀÊZq+Ü÷°ãxS2’÷)Ó4 j1ë¶?öœŸž4ñ]\î]]ŠïíÙ‹`p0ᾺŒä}øÓ$#y9ÂuÔ=ÛÉÙ°œ`¬¨‡`œpßÏJµö¥ô=ÜW;à½Zêk¥­j*ØÚ'\ öÔK¸¯dHDûÀ›cãÖ€Ç öÀJzjºÓÚ÷³’­}5å/ß„@xüœ(ÈÊ€yû`=á„ûêÓÚë0†—æ÷Ù¸m#y`&Á>€Bj´öõî+ä¶ýI ÷¹è‰`TÖs³Ö¾ŸÉûÈ×+8Ú1i€bpo^{¼ÃÃûzÀ=;¥ëP6p¿ù‹÷Õ§µïAÂ}¤”ÒýöÆ£ï cxˆH°*%ô&Ü÷£VZûRZ·¹¯pTJwFó2¦{×^ØbïÙÀû*(î«ÝÚ×r¸ÏÝ6<㙡÷)pÁ>¨d´;­}JsÀ°û5p Á> ˜?~ûýöƒ¶Fò¦´^k”pä\Ôv~zb!éKå ¶=¼ÿí_þy¸u¸ ÷ýõï[ü¹vgWiÿáeÕ×›¿|KÓ_~­¾.ùüUšÞþ£è§L)MÓ4¥œM|Ú¦±€MÔÉkUûWjì²¶>Øl¯ Ø…ië³6ii,oþòíö"ߪ–~Þ¿€>ö«|\fwvÕÕ÷S£µï¦Ñ­D«}ÒÖ@t‚}PКuzJ©Ö¾5Ã}k´?Uɫͭo®/¬ù†+°O [Àqû€MŒî+ðî;Œ I—„úèž`¢­Ïš±L¥æ>€±öÒJaìZlàa‚}̲f[}3–· k´öÁs40BÓ²÷0N° Ð „Ã}­µö­¥ppÄ8^~p~zbO°`@š«ÊÒ6g-·´ÅXìÇò ÷Ø )‚}@(Â}mXc,oé—l$o·ž%€ß„ÆñÀ*ûèÊüÿ²ê×Bc©ãx·hí«Mp™`ŽÀ$•h{(±™._kN€ÃöÀLÂgÖ·”–[ûjŽä­ÔÚ—…J€Þ­1*]³*Ô%Ø0¦®[«ÖÇK=Â}Ž#ìBÓŒx¸­ZûàšSà‚}@x£„ûZní«=’·ps_ž¦) –Q öÀ Zä`}Æò±gV [ëì Kÿñ?ü‹EèŒ0åavgW›Žäm(H’Ý-ÛíÁZSài‚}@3F÷µ<Ž÷Fí±¼%?ÝÍH^£yÖß“í»ð8Á>€mÙÚW[épŸ»¥ %@ç§'mç–'ØG2Öú×Vªµ¯çp_aÂ%@Ÿ›[;ãÑ€{û¨¢¡‘¼)]‡ûŒäXu?Îö\x˜`A[_œëÐûµÐÚ÷¼Zá>€­ ötnëpŸQ”º•,ôIküL°¤­Ï5Y[©Ö¾jåÍç¯J7÷ý0’WØèaÿ­þ5Žãu•àg‚}èy$oB&ÁX0Á>8€¶¾Ø×Æõ9LÏá¾Â­}) ÷¬º ðÀûëioJõFò¦T/Üg,oÎOO,Íì`–ý‡—ÔûHÞJá>í}@Û{c¥@5P`À˜ÔNÑžÇñöÖÚ—RsÍ}) ÷m~ËXèÿ}®þ$ØÏè90F;z ÷ÕT)Üg,ï¬5#ìº!„y˜Hãxi,/° Á>x‚ ‘”líÛ]… øÕË[«µ/ ÷±±‹Ë½E`Ö^ÛÂËt¥à;Á>x„PŸëFû*†ûŒåªì“6hTÉÖ¾”bå­¶áÕ ÷ËëÌ‚öÞL ´ö KÀw‚}ð­o®ë«8©=–W{_Öóao^{¼C¼½¶fC*ŒÈo~pP˜ë]éÖ¾QT÷i• ìüô¤«ïçârï¢tN°îês=G4Â8Þ•¥„ûì¥P„`@ƒzmí«9Ž÷ökTi$/0*ãx Á> kZû©µ¯ñpŸ¦©`ëÙÛÞ”RzóÚãâî³Â}P†ßüàš­éµµRJZŸpq¹·ôþþÏÚO`нžC›%Ã}ZûÊ}ꔌä(±—À¨û iësÛÖksßZá¾J¿œ„R€™û˜%R³J¸¯½÷vþòm•€Àhjî­ÓYó)£ì`xÚúèE¯á¾”ê·÷Unîc£µ;?=±Š4I°€.ý÷ÿùï,ê=ÈùéÝ{£y—| á¾išn?!ØÀO¢ŽÛnt,¯Ö>`8%ÇñZMF$Ø g„ñË%ZûF ÷É lM°€Yö^†~}ßþÏ¿:èŸ!à¯V¸ÏX^à‚}ƒ&ï´öf䑼šûÚv~zb £Ÿ_ý Àhû–¶>8Œp_ùOë®FÙG€yû˜%jÐçPB}Œr”hí‹l­p_…€_Ö@õ8ëÀèû€¡ yfwv5ts3öçr¡hM§ G°`<ŒÂ=½‡ûzoíK©Ù±¼öcàA‚}té×ýýß4´1¢Rá¾Ñ›ûŒämÇÛÏ_-Ù;€ã öЭûoþ·Eà`ŸÇî£ö2[èäÍ\p¯4#ì Kÿôïÿ—EàhFòG¸¯Ü§óîîì`(ZÙý%Ü× #y€[‚},1Üg$/@œ=Ó8^8ž`À=Zûú`$ïØÎOO,Íì`ÆðŸŒä K¸ƒ\\î-@Çû z<#y˘¦)5 ôÆ8^8Ž`À jŒäî+óéÜ@{%p8Á>fkiô¦ö5Ü7î+ø5 7÷ãìÏ0³Ëþéßÿ¯ôÇo¿ õ±ˆû§…ûŒš°G00Á>fÛxiBïá¾QZûR2jrç§'€¦ öP%ÜUíp_É‘¼Ó4%­T@/û#p8Á>€Á䜇ú~w/>ºèa$ïŒ÷_ÐÖ¾”š ÷ewÐÕÏ¡ƒÏéz¯ð3½ì8‘¼£d¸Ox…‡\\î-Ãoµ–€^ öAsßq"·ö­¡p;0Á>ªŠî«=Ž÷öë,÷i¤:Âùé‰E€À{c…ÀsÖh @ûŽÔskßhãx× ÷C°`LjM€UÉ[¦µO+ŒA°`­}«ÂøIî1†ÆÝbŸè`³ÞÀ=‡ûFÚ3Ç;DkŸpØÁ>€!åœ-Òk¸o´Ö¾µB,¥Fò‹˽E ½=Wƒ)5b¸¯‘Ö¾œRÒÚpoo´/Ð Á>€Bzlí«awve$o¡—Ùáí¡­ì…@ì`¡èá`9#yë)0в› œ–-°ì`»-«èµµ¯F¸O0 ¾[ûŒã  ‚}…É{¸Èá¾µÂ,«Xêâroh–=&ØPAá>#y¨A¸~&ØÀÁŒä§£‘“ÙÕ„q÷ÙOhž`À¸Š%A„ràa½Žä©¹/ù¶ÊHÞ|þjI¨E€¨¾ëì€ÆuÔÚ$Á>€ª´öFóçbZû€º›Lc­}Ï´N°`P9Ë€ÀZz ÷ µg®hY0ŽWˆh~/\²@oûVÐc¸¯tkß-¶äÆÃ}’‰ \\î-ëìQ5÷@«ûÁ8^ÒÌpßù鉕ƒ5îËšLh™`ÀØ<í„õÚÚ7Js_þò­…‘¼‚,ÓÚÇÚ{b°ýº"ØÀbÆò²TÎ9åœ-´ô¾5–ªì #4á0=¶öÙKÂÉÓ4%Í}ZLh—`žva­‘¼ÆQÃî³ö?왑‡@IÆñÆÚâSJIs´I°`e=ã-îkeo­}ÒÛÆñÐ(Á>Š-Ü·FÀoÉKL)iíšc/£ì\©q¼û/-&¡çÖ> ïÓËÃ-šû 1‚}1’÷i­´öµ¢çÖ¾·Ÿ¿ºÀ×..÷~&à @sûkwvÕDÀ¯öH^­}ÀˆŒã`d‚} c÷â£E€•híãO%.Ñ[ûzn¶ß_ì1´D°`C=ã-ÉXÞï†û´ö@#û¨f´Ö¾Ú#ySZîÓZÕ¿‹Ë½E Ÿ}µÜ8^áfš"ذ1­}¬¬»pËù鉫 D°€VöÐs¸o´Ö¾5h°ÊAÃ-³B‡o?uSÕöØ‚`@šûž¶;»jæµÖÇ 0’‚ãx ‚} e÷â£E€ hí+¯DkŸUì×ÅåÞ"4L°€”RZ<±¥&-á>"3’€–4ØP*Ô @û ‚ü囑¼À,‚}ܘFúfµö™Ö¾'Þ» µƒ6±ñO“Eì}`@@=‡û–j-ÜW³µ/Ÿ¿rCð¨‹Ë½Eh”`)çœr΋?&-(«×pßÒÖ¾&÷Ù¸cyó4MÚ«€Å{\õ¯!È À`û¸K²Xňá¾ZJ…]„û Á>†µ{ñÑ"ž‘¼}©ÕÜ·0Ü—¯?†ÙŽ…™ˆN° 8#yÖúèï¨cy·üâB6u\\î-ÝìkÆñ0Á>€hîã9%/‡ë´À5Á>n弎S`¯Yã„&ØÀ}rtb¤Ö>è‰`CÒÖG/zjí3Ž÷›zcxc/ö3h‹`Å‹ Øwº¡µ6 ØиžZû(oá8Þ4MÓímÓÚÐÁ>ÂX2Ž·‡Ö¾ ã+µö!÷³¥ÁeˆL°€P–„ûx˜ð °ÉÞ3¬ Mìà>ÍLÐ ãxyvs_îs6tÂ8^ø“ãD&Øh¸Xg»µD&ØÀv/>ZºÓSkŸq¼}V€yû:2úHÞÝÙ•›à KÇñ[ÙãxÁ¾@|‚}t¥‡pŸ†+€÷ËeeK°€ûŠÔ–hÍ‚íôÒÚg/@„•àx‚}}$/+1Ž×èÊöÇ ›`ÃÚ½øh€°j6\- ÷¹:@¨ýR`€ öðƒœËå5Œã…mýñÛïÍ7÷ÍÇkÿçiícÕŸ1cãX Á>¢² €ÀA˜¬Ý èhO€pû:7jk_/jaŽ®ˆµW.ßÓ´öŠ`CÛ½øh ×÷·q¼ÕMÓ”4÷Q,ÐÁ>.èøJíVP‰`?ÉYVzc/î÷Ú­ni  Á>h€Ö>j¸¸Ü[úÚ+—–íi„!ØÀcT–@gZoí›cwvÕÕ÷S#ÜW¢µOË”%Ø0Ã}ÆÒê8ÞOïÞÏwÖÚWƒÑ•) )…`4Æ8^è›`À€Zmí#´œRÒtÕ(ãxáǽ ¶&Ø0¨Ã}ÆñÖU`¯@ ÐÅvh Øš`O)R»$LPžq¼”¦µîüî+ÑÚ' ô°—YE¶$Ø0¸Ã}@ZûbìàQ9—+*Ñ’”´¤µ¯«}Ú8^€ªÛ¬%`+‚}p‡q¼ŒJk…ÇÛ0­}t³-Ç ›ìà9’@HZû8@„ûûÌ"Ø@JiœÖ¾ÝÙUWãÁã5²aZûèfÔÚ@£û q‘Ã}Ú®€ÖÙÇØ‚`OÊ9§d/ £µÖ>ãx¨ýã°%` ‚}pÏîÅG‹#¼×;Ç›RÙ־£+µöÀ‘ûøAk­}ÔQ8ÜÐô–(  ÀÚûxÖõ8^€–Œãí­µ/òQb €”ʶ‹@ÏûXÅþÃ˦^¯q¼ŒNk_›"f¦iºýXuoÔ@ @ƒû8Ô¢$†V,hOKá>­}MÐÚט‹Ë½E{ì  KÂ}<¬BË•` `/@°€GÉÛÀ^õÀ×3Ž€ÆöpœsJ ÇñÔ6·µÏ8Þu”izð8qÆ¡=²w@‚}ᾇi¹ÛÅåÞ"l@°€ÕÍk˜ÛÚדÆñfÍW@‹Û«%`-‚}l´q¼»]t€»µïíç¯.°šišŒä`‚}Á>Ve/°†¹ãxíQëÒzÕá>¸%… À*û8ŠF%×(­}Â}OœGò¬ÉH^jìà`FòRZ‰`ÌÛÏ_-$4(ùÖìKwõ¨M°€£ŒÖL²{ñÑE‡FÍÇ›R­}µ3…[û„c€õöE­£4D°€9̃iíƒ1]\î-ÀJûXÕþÃK‹¬fôÖ¾ZJ·öÖ Üٌ〠ö0‡™0¸QZûZ÷Õ Ìi ´°W@«û8Ö¢P_‹!™Ý‹®:4lIkÏÃ}Zû€Öö-{5 ö0‹Ö> Ò Ø»àÁ>º7rk_í—Û¯dàš`«Ó~ýh©µoI¸Ï¾PWíò_Ë8^ Øؽøh #7÷A —{‹?Ò6 @‚}K% ðƒ–ZûFµf°œ`Hkhß§wï‡Û»R2Ž—r..÷ 2Á>8‚‘¼3Ž|ßÒÚ@Q‚}p$­}uh€ïû8ÚèãxÇýñÛï!òþ]90£µha¯€öÅ÷áâro*ì`8ŸÞ½·#–`³Ç €zû€PÖ!—6MSš¦ÉÅ Á>˜a÷â£E€ÆÇ[—Ö>À~ó ö0Ûõ8^€ŸÇ|ÿn° F"Ø3iíƒöiíƒe..÷þäßz Á>–š,0ª–[ûÖ`¼%°hÑ. ÀÀûØœ` ôi„q¼-˜€¸û`ãxbxûù«Ef+Ù0:M ­XN°€ErÎ)Ç <¢…Ö¾OïÞ»P5Ï ãx»wq¹·pgÛ³” Ø@ÆñB¿„ûâ2ްO@L‚}ÀðŒã Á>»Ç;¬Ý‹nèÀÜÖ>£œÆñƒm{–€¥ûC8úÕÂ8Þ”ÆÉÛӘ˷Ÿ¿z³mäâro°O@A‚}”bÞÒÚ,ÚC„ûŒ`@*B6Ž€Eû €Ý‹žao\Æñ@,‚}‘sN©À8ÞÝÙ•Å€]\î-uÞ4Ž€öŽp`ßà!k„ûJã¦É`6Á>VÓÊ8Þ9Z÷i€8û(¦Ô8Þ”Ú Èì^|tVÕÂ8ÞOïÞymŒã(»­Zæì ¨ëq¼ðð9a/À8Þ¸Œãe©‹Ë½E ý°Lè:kf쀂vgWáÆñ‹öÆÈÓ4¹hM°1jk°-Á>ŠËyì‰cÆñÂaZÇ;ì>n/lJ°èÎùé‰EØÐÅåÞ"Ð…B£Ã³•àX‚}Ô2-ý»³+«lÎ8Þ6½ýüÕ"@ÇÖl-ö@ÆñÂazÇÛC0Ù8^ØŽ`°: XÀH¦i²E°€*rÎ)Ç Ð*ãÄ€¹û ãxá0½Žãíq¼,qq¹·Ø£`&Á>BÓxDðéÝ{‹Pq¼À@ûU¶ŠC°€jŒãÕBkŸp°Á>¨È8^8\#y{h5ê’%ŒãÅóöžq¼@£¶öÕ ÎÔÇûöóW7-أ˜&EÖN°€ª®Çñ.Ör¸OkŒM88–`kPOÐ8ã.™Ë8^¸óC±Ö>$ØÀZ<ÅàA5ÇñDÚî,‡ì€#|z÷Þ"T Ü×7­}TßC´ŠÐÁ>ªË9§œsJ·öí^|t#Àþøíw‹y?o08óöóW.á>šßX‘`k3’Îî쪛ï%ù¦‹Ù„ûÀ8^#ØÀj®[ûfë)ðÁ>8Ò§wï‡_­}€} êì`U×­}³Çñ¶ÜÚ·{ñÑ ea!ÜGkû¬I°fúôîýÑFã(É8^ž!ØÀ&´öÑ*í¢Ô&Ø Ìiíãi3@‘½Ä8^&ØÙ½øhà üö{¿ïãxá–Ö>ZU „œ§iJFòðÁ>š%Ð/­}ŒL°€­¨&IZûÖòöóW‹ª=ŽW€Zû«•q¼ŸÞ½w±`ãxX¶6s=Žwx»-6¥µèŧwï-Bs¢Â8^#yˆN°€æíήÚÿŒã…ƒhíƒ1Ç ŒN°X¤æxKÆ%ÜÇ€ûUž¦ÉE ¥$Ø@ ž`Cê¡q 5µÂ}¥G‡06Á>º ýÑÚŒJ°€¦üñÛï"ÜGK´öPŠ`›Ë9§d/0¨^Gk¶¬åíç¯n¾†÷1ÒÆÓäÇbûèHëá˜Ý‹."I¸Á>šc/Ð3Á>B0ŽxŠq¼4ósíù+‹Àb‚}t¥õq¼-Ë_¾Õù¼B2\îc”íÔ Ø@w„û` Æñ½ì ãxSÚ½øèF€'híF Ø@—´ö°•#Äó4M``‚}Dä)&phãx?½{?ü5É_¾¹1©NkÐ;Á>¢6Üg/´M¸¯o?µ„$Ø@(9ç”s¶@Ó„û >­}Œð£±%—`M‹6ŽwŽÝÙ• Üì [‚2ÛÈ_¾YV¡µè•`‘M£~ã»]}8B­}7û (á>8ŽpŒIkQåóW€Ùû)ç\äóÇ låÓ»÷cïãÆñÀl‚}D7üÍkíƒãhíãXo?µÐÚDZZ OÓäb J°€°´ö4¾kí€Yûhªà`Zû`LZû€žöÐ á>€åóWrû³cì ´œs‘‘¼-ãݽøèF€°òÏ™+Œ J`.Á>ºc/Çxûù«E Á>†¡µÆ"Ü´J°€–L–àG¿ü—ÿ|ûÄò׿ÿÍ"ÀÊ..÷£Ç @T‚}Јû­}÷Ã|Â}ð3­}0á>"îàX‚}4!ç|ó_‡ní3’hnÿ.؆%À(ûhF‰pßîìÊBÂ`Zjí³GAZûù³¬p2ðÿÙû—I²5Oì;æu7ä†è*‘â¢_«Zä¢ïB A¨E1FUMv\4/GVÍF€&§%h#‘w²€ÔBPºU Bõ ÷ªoUŽLI‰Ý\ˆ d®4‚ `)±¥ÌjV¬rÓÂaîáánvŽÙ9Ç~¿ÛÑù¨Èsóó0ûû÷Àû(J'Ü×[-Á™ïöìÖßiÇ +Â}@Éû(Î:Ü7Û–¼ÚñBþäþÐAH1$ªxuõâ­ƒ ä8†5ŽÀ< ö0K5WíÈMûúƒgì d*˜ª}0Oc‡SU .‚}iÝŽwZªö÷ûÉïüØA¨iŠáD/_- H‚}P ÅþÝ£ÿíò‹§L°€Ò jÇ[kÕ>á>¸MÕ¾º¤ªÚ§o}Tíã¤1eäv¼g-v›&4MãI˜Á>Š£oÉîªÚ6f¸ï§¿ü…žzÐ’ˆ9¦Œî;cüj=3ó$Ø@ f]µïûŸ=;ø÷ªöÁt„úʦj_}TíJ#ءޖ¼ÀmZòÖ£¹úÎA¢Ê¹%/ó"Ø@Ñ´ãÕŽ(d¼–abªöQðx¥/À öP‹f®?¸–»p>Uû¸v¼@jíõ#€£û(ÞºjŸJ&ýÔ±ämšÆQ˜Á>X[¨œv¼°K¸BiÇ 0#‚}T¡mÛ(w9µ¶…yIÙŽ·å󇞔Œ\½xë 0 Á>ØSc¸OÕ> Fíõ#H3¾¼~ç 0)Á>(˜ê^@IeöÆÅóÊÚñÌ„`ÕˆÕŽ˜—TíxÿäþÐÁ­€v¼õzùjé Ùì *±Â}5¶ãÆõÓ_þÂA(y]©Ê(ì :Â}À¹RUíò¦j¥.w€ú ö£Q `o\¼~ä p‹`URµ8—ª}”¢i r‚}pá>€y»zñÖA`T‚}T+VÕ¾Z\~ñÔA€{¨ÚWàX¯…%½|µt€ìö@á–Ïn?î#ÜPíxê&Ø@ÕbUíÓŽ`Þ´ã’®Yϯ>Ú:juì€ ÷Á<ÄjÇû'ð‡Æ™‘hÇ @mû¨^¬ª}@^¾Z:@Vû`f.¿xê “j_¿sÈŽp%§@½û˜…XUû´ÉRì`6æî[>xÒç©ÚP¾¦iBÓ4@…û`¦„û€š´×’«ohF!ØÀ¬ÄªÚÔí'¿óc!õxüúƒ@v^¾Z:7œ:uì`vb„ûrnÇ{Uû€Z4Wß9D!ÜG‰Ë[‡ >‚}ÌRÍá¾åó‡ž`ÈÄŸüÁ:•ÑŽf¶fT]€‰öÀÌ©Úy¹t˜«¶m›¦i´.˜j~ý.4¼çk]?­ïÕ‹·áúñO GjçûчêmNÓ4¡m-kj"Ø„Ë/ž†ïöÌ€ž…ùîûïÂ~eˆB€SÙ-À‹'o²|\Ëç=90ÐO~çÇÌÔ}!½îçm>R~¦×¾~ç 0*Á>f­mÛÆQà\W/Þ:3+”'ÜWк1ïpŸ>¼•ì€J©Úýݸ‹ÆRõz´×¶û` \ÛñÓûé/á @eRð„û€ Á>f/F;Þ\Ã}ªöÁt„úê§oýºA»±ªê ÷!ö@4¥Wî»üâ©'&&Œ[á¾úMÑ&W¸o¾†´ãmšÆ¨ˆ`TNPúûÉïüØAH¬}ýÎA€=‚}‘ª}Åê]êJÕ>RPµæM°V¢õ.+=ÜLÇøÀ­CPÁ>˜sÚñªÚq|ÿ³g0ÈËWK•û`¦ûà†ª}æ€r±Æ0P Á>!´müÎe%‡ûTíÌç¹zñÖA$Uûf6]?rì€=QËœ¨ÜåûÉïüØA&'Üó"؉åî[>xÖç_~ñTå>`Žô±&§j‚}°ÖiÃ(Ô0Óy`HK^íxIMÕ>NÊ€:ö@Ç@Ç]J­ÚBPµF&Ø#É%Üׇp03*·’-UûæC;^€yì€Ã„:ö÷ÜO;^Æ Üõì€ã¢‡ûJ®ÚJûúƒkÛx @ û`OÛ¶Uÿ|Ëç{ÿ[Uûî§jcPµê&ØtÂ}UVíî˜ÑYîãØ0æ”O°fªo¸OÕ>`&ô²¤Â}À´ã(ž`ܯʪ}9i_¿«jœ€!ûàˆÔ­KnÉ«jxÌDïÀßÕ‹·Ž£Qµê#ا©¶šSßpá¾:µ×zÿSG l‚}p‡9Tí A¸`ìñRî€zöÀé‡ Óúê»ÞÿöXˆoý÷Úñ0:Á>¸‡ª}‡]~ñÔÉ¿˜ÁZ´;^ &ØçQµÀØÙÒŽ—íÀÕºJ&Ø'hÛ6y徨Úp”„ PÜÖ!(—`œ/z¸#—v¼Æô]s vSUû |‚}ÐOµ•›TíˆçêÅ[€³ ö@&TíöºTKÕ>B¡i s¥ì€3ìµd¬¶%¯ª}0ÌOù ¡Âñ¿ï¸¯jSî€r ö@s÷Ìa,ïŒç Á>à UûàÆO~çÇ'®j}ýµ¯ß9™ª}†V‡ L‚}0œª}@A¨Ï˜œv¼LI¸¯|íõ#`fû §9´pTµ`w܇R ÷@Yû Ž$UûTîƒr¨Öa ýàýªÇ|Uû˜šp”C°ˆJÕ>èçÜ ™}¼|µð€ö@ˆ¯ª;ŸÚƒ«mšfûVGû|0²K‡âiÛ6IE“Å“7Eì.¿x¾ÿÙ3'ÀÚÕ‹·áúñ‚l¼|µ }¨H.´ÜM¾Ìí±Æ=å´ç|ý Ù±×Ý*p9±J€4Tí[»ü⩳jüäw~œÝk `(-y'^4^}·ý¨LŒJ€;Ÿß­>8°áÁÇ1¤U±öÅ@l*ö@:MˆØº¬Ôª}ÆwÈŸÊ}# õøj{LoB8­¢ *À1VçV5¥:„ â¸zñÖA€¹-ë­ÊÇaƒ«ö@dmÛn?b[*öÀ8T탊ýô—¿pŒëP UûNTæc\w¶íUÕê£b$´©œ±¾ÁÖ„ÃÕ7z)©jßåOC!|ÿ³gN «a:Lлzñ6\?~à [/_-ÃGªÒ]w­¼q0ÈmÛ'Ùµ¬AU7Úú 7?cú*ÜäkñäÍö Ò6MÓýPÍJ]:^Û¶Ûê}1•x£Y¸vio=ÌT-0Së“—¯–³lË;ç0_{ýhçƒ:žÖ·D+^_-y—Ϫ`0–¼‡¹¯iŽ…øýýTjâ<Õ;Ïån¸oûÁuȃ`ÀD޼#òœ+&.´°5U¸¯¯Ë/ž†ïöÌG‘~ò;?ÿþþu èîÏmÌ©ÚËWËðчõ4›Cˆ/eµ½˜_[H0¯Ófû¼t.^»ö ÓìQ„0ßÁ×ûÂ.ºd½< ATíƒ~úË_8@õ6-yKøå¼fÙ¼A£ùàýã‹Ç!¸ÒÛ媘ïS³}>„ü`2‚}‰Eó³ÿõGþÞçá®ç`ç“]°¢.ÜÖk‹õú$zKÞBQ•û tB}tö‘½Çsíx!­\}íõ£Ð¾~·Dîôu?ëåD?§À`ÿ§d{ ]duí’ìHd¤@ß1mØ»Î2× ,gúö?G@eÉ ¯Ü§j0ÙšAH£ØÖ’—Y(¥-oÎa¾qì„@iŽ}-óÐØ‡qoš¦î€Dû":æ aš û;á´Íc›ËE–ž¾ƒÿ¦SMçæ?¸X ]¬%®ÜWBÕ¾Ë/ž†ïöÌÉ@±Tëæ*×p_)a>*ZÓŸðÜVþÛ^žÛµg‹`@Wç»O»ûPwkM[?G£ V@¬åL(¸ÒSߪ}Â}ÌÖÙYŒ½YŒåÚñB?Â|äîйPYØo'àçZ)DÜ`šXz.¤òªÎwöÃß>ØB׃wÿ1ŸUü€Øk›¨ Š)C}n® öQªË/žù:Íz<<³%e„`D´û$1ÆrÁ>J4få¾\C|Û¿0ãÎaÙþhÛׄë¥0ˆŠ}q´…>ÞMå¹Cõ2ºø’aeÄývÇw=–ìŽ'¥¦ÐõåVŸÊ}ªöŽå6ÌÆËWËBš€_ÎA>!>Æ>‡ ÞjÑ‚ë¢Ð‡`@{³’¯H´'ü·&£cë1oÏøœÆ+¸µPèÜäZ¯¢„BOÞ¨‰¨ÖWÇö>fÈ`óµî©0œ¸†ÉvÝ&ÐGç^!!?×C` Á>€3Tè;çg¾uf¬wWÖx¼Tõk¼c8´F(u ¤jÌÏËWË^Uûro¯»!ÐG®çc!¿6÷@/‚}'˜c ï€¶s<’†üfx¼ÛÔÇ(haжQ«=mn–« yñš4ŽCÎ ÷•è棈yçÈyšYàÏõOèAe€»K™Ì2¼9ÐzŒµ­u;Ì~=:x10Eˆ¨ï {•ûÈÝÐ6¼B}wŒ{¼Þç-´m›lƒ½¿Ï»¯?pP…»Â}9úø¨znͯ¢ŸŒœHÅ>€bÞ@íëØÅÍßgð»Õ¦÷Ðã:ö³ù\Õ¹}ºohò;÷\rá Ê´xòF˜Å¡Ê}¹ú„ù˜‹ +úíTïÛù®;Àî|mr8°Hš Ø×w]–y{ŸæÐϦ2_Üãá €6Ö†¾¤@_÷ßgîkÃ^µ¹½ÿÆÀãyîùsà¹8÷yh×_C«`i­s­§jÀÍö¨¤ñJsõâm/2YO óÁY¯“‰B~ƒ¯{@•W"}qÿ…ës ÍÈÁ¾äß,ÅÏSÀ ƒ¦çóÏiÇ5Lt|½› [§ªÚýŨÖ7Õë°˜ñ}ƒɯ54MÓû¨ÚG©®^¼ÍâqóA¤¹lšŸë°¦bp÷zXX,ÖλÝ/ù{S?V(.åňÍ×μz_>æÀsQh5…6ƒïïÝ´PUû`Z^@Mr ò… Ì©^W„û\o€5Á>àÜ õÔß{Õt½©¼¡Oòó}Ñ¡€€ß´'ñÏGEa¿)Ç ÒiB¡Õ—ÏöªÚwùÅSUû€Ñ÷†9Ø„¥Tî#÷st’ׯßôcèëwi»gTmeü×ÜÈ¿ƒ÷J˜Ã &Á>àÜt.#JÀ/Uh+‡‹ ~qž“¶mÃ3Y÷í´.´@¼µLÌ5‰ª}@É&j Øë¡†BÙ°/‡Ê|}#ëDÁ½\¿ï½ƒ¹ÀáÎkp¢€ßöéhšÆ5GfC°8h¿óm†q'à—ËÏ—ã…îcšc@-Æs"Ü7îë¸{) ®ÚB8»rŸª}äâò‹§³·!•ùJ”k8®¦c:÷ ßDíy·ß>„Ý>½B~ÔL°Øq ¼”û®¸íîãïÛÄÏ)Ðw×ã¬%¤6æqW±ßas‘ â®GÖSk”È&`§r0C6vp¾Ö†|EûZBUïÛy›C:´«d½y5Á;‹ƒü+õ}èwmÞSÿ\%®©J ¨år¬üì= –õúÁ¾s«öm¨ÜÇ”bU즽gœ;!ð!D0êþ¤išAßìúñ'£š*Ô'ÐwÂ1æ›å¼WÄÏ1]Ào’¹Æ¢b°Úõ–W©ïÐãmš¦¹+ø%з÷ØK §åÞâøÄ×ÔÜ©Þ× 1׋'oF-Ÿ?ì õ¹›"Ô'ÐwÏñæ›Õó[jÐ/ƒ ~·öH®?PÁ>àà>¼àÇÝܵ™úÍ*¸0s{ÙÒ¯Ö½wŽ- Ä¥%oI.¿xªjPâ~sÐx}õâ­ª}$7f OïÈqàc}”\ů½~4U¸¯Ý›wƒ½Ô@°(¹ýî± |sǦ~دô"À¡ŸK ͱMyXTï€xËùë]Uûò&ÜGÊsk´‹}«ã Àljçˆê}ýBg¯Eìmx‹&4édPq.ù±ù9Üv~^!?ª§ /C ÷ó\õÀL}|Ä8‡J¯ÞÂä¿Få>J&Ø3VY¥¾[ö R_ÒŸ]à/ý1ŸÑ1noN«ÆE68½0«ª}—_< !-y¢ÆìuªÀf‡Iè›se>a>RœS%‡ûºc„-zµæ X‚}À¸»è;6Í‘CLvç>—‰žÓÙã1Žãˆ¯Íû^·ÞE ýŒó즫ú“Uûè{ÞŒ²©¯<Ð'´Gç^éü& ÷m¡kµ6aÀ ·C:Q}×9†À¬•F;믗ØÇôé×߆/?ûd´Ñyg¯ ¢LœS´ =·j߆ª}ŒiS-²”×U±cÚ=…€¶mG¿±«£ŒÓ‚}œ*u o•ù„ù(yÎÌú±OÔ—“  ‡f/j»Ú!›áœ6ÒCN;¾Ý⣩Žé³O?và oÊ%C"CB}+7û´Xß{¬êkpô|¾~4‹ê|B}”pž–<ŽLý𦠛È•`ÌÈMêàäOì`ÖÔ!/!3J3vH²mÛðùWߌò£·€»×°ƒ'ξÕó†è[ÍLØ ( É]½x›$*ÐÎÙcÊ„ãJö®Aº @nû`Æ{þÁ_ a€hì€@œîÙ§õz9xqÍ6¸—É2¢ /)ÆiUû >>œ¿>þL~Á>˜‰•ú€y¹zŸA*_£/Ÿ?ì€RµÔœcÆÊ˜ß;f…ÕTUÙ(—J}=>Uúp.çó3L;ÖlÞ`ÜøðÆc&!Ø3Üß;ƒ¡R òìÓÇ ÷¿à<ƒî4MÑŽw£o¸Oø (…ës®VèÛ úp~{ö¿ýßý€Q\:P¿Î»ÇŠ«Ô·ù~ÞùzöéÇ!„U¸ïËÏ>{\›dl€ShÃypõƒÄ®ÒWsu¾´Üe^6ç{óÁûå=öëGæ~fOÅ>àôôÄíj€üP½Ï»càt³ªÚ‚–©@Úq1êÆfuû$vë]-w!8ÿs{ÜùŽK·Zô@ *ö@åbUë«5X×4Ð D¶ ÷T½¯ n†À­u{gÐ Ù ,ž¼QqŒY¥›`×õãÆÌžóhë‡ÊÃ|Ài¯‰œ«úmÆ© +øµ}D'ØÜ¿3Í$ø–ª-o÷ë ùA?Ï>ý8<ýúÛ¿ëVïKòk›½Ákkøµó pßT–ÏNZ5bœÃ1Å®ÎWýzH¨½fr úåðë^Ÿtm€X´â€Jí•kÌqšò1)›iŒØ¢ˆ¬´p kÀÑMCf×8b·ã]Å|Än¹[ýk]Ë]ˆúZÊñõ”i‹^×'ˆN°8¾ Íø]emÛ&øq}þÕ7cü„tàÀwÈ?ž*ܧâDÞ4ç†þse@‚Z^cœ±ùZ_›t}€¡û`{î^ÿ¨Rñª÷A>ž}úñIŸ§zŒ»^޵fÖN'”ÊTTuóœÎj#Ì“¼æ²zL*÷P¹K‡f¡ 3¹ÁtùÅÓðýÏžyÆ|Qݘ¶mC³zW¡;búj©Ò'Äù¼›ÞÏç1­Ç¸æê»¬U›i¾œb äEÅ>¨|Ýë¶ÁÔ–òqNÕ¾1*÷yý@\ªö1CB}ªõÑS´Í‹ oe»zñÖsxl“/ÔÜ7NäWÁOš€Aû Bë Ëì6ŒÞñå!ÜìmJ{À}CRª­Ñ—s‡†±‘i›ÊÓ¿v»ýë“û•C@_Zñ»;ÌÂÃqë6žHHdñäŠd@qr¾Þ±ylZòΛֻÇ.(ŽfsjËÛ3jÍÛ6Šp*û "MÓµÙCq·åm°Z#wÖɪöÌ€ª}åœ/„ŒÍ›7úHñX…ûæEË]Àkùî1râqr{ïæÀüiÅ ¬v”•…ú:ml<¹Àv<`Àº¿¶F.©%ïåOÃ÷?{æ 9mªóþæ|} v¸ïúñƒƒ_óúñgÚ„ÏK‘/L!>˜Åk<×6½]#·ìÝ\ tó€{ ö@e{å^ÿ¨â ‹€Ð p£ ªÚŽî[>XT¥@Ê£ZœæX íØß ü~¬zoxµ˜2¶âÍ-è·GG÷…àz%'Њ 7´\û\ªWµm»ýpŒ _ Ûñ3'´EêóCµ>8ìêÅÛí*õi¹ ä:L’Ö–€»¨Ø•ì…‚3VÄöc@Y/ÿ¦ia]ØRµ(gÀ¿Š tCms¬äW{¥>a=`ȸ‘C%¿ *÷iË ÀÝ{a7µ ðÉ|PÓ‚wØñs| ²§_;èßùÙ'ö@0Î:8ÚÄ8V¸oh°ïûŸ=s°Cµ¾ÌƧ#7õûæ­–`­Á>> õ:`ôÇ1ͺÃuKLPÕD>ðfœuÒpŸ`Œ¶—轟8¤„pŸ`]±Z4 öEŸû8AiA¿š+õ õc®F} ã¯=nnø¸~ ÀÚÂ!€âÙáÕùü«o’™MÓhÇ €M„EìêÅÛíÇìæp¡>`cÝëw“1Œ·6iÜré)<ûôãÁ-y€Q4!ÒM¤Å“7*—1;Îy˜Ö]ᾩ+ûÅ  ôs´o¦ªà×{Gªà׆Nå>P± 5´Ú” @îRVíÛŒ£*÷0gmÛ&Ù i“{ª!AªX­Wa蹤WCe¿öúQ6¡¾*h3Ý»ÌlìqÝ€ û ðý¬CÐ{ütu Ù„ûr =]~ñ4|ÿ³gž¨™òÌÏTÕx˜‡M¸oŒ*~1‚„9Uè A•> Ÿqhêê}#TîsÝ€-Á>˜ãXµ> ŸõMøò³O’ ‡ÁE2€YŠêS­Ê´º‹ô+¹2à›g¡> ³1iÊ7´×„ûMãÆ>6yß”_ï5‰›û1=ýúÛÁ_#a°Ï¾"ì1î“2ü4´í¯ª}ó$Ô—ñxtä&ý7Ï'7F¹ZÃg9<µUêèJ];ŒöýÓ®Qv‚}®_Ì“Š}P&;8`6W훋¶Ý„ûš{Å“7BPGŒè;ö=ýn;·m¯Ö»ÓUWïÛìÍT…C¤òìÓ£|Ï¿úÆÁ€qÌê¦QŒÊmÌ j‚çƒ÷'¯¸3…)B}ÇÇæƒ]§öj F õƬ3¾ÿõ£Ôáì6„U¥õÍó¡bdè†M©v€ÃÃc³`“Ìv2\Ïs¼I´ ÷iË;¯çÆPbPnÌ u5Ðz ¯ñ«òê}}3Ô¸qMÜëÜIïŸy˜ÀÓ¯¿öµ¶äì€{Ž»¤ªr¶xò&Ê×웇¡Á>Õú=wÜ„Oxƒ< Uï+=xèyõ3 öŒ·®åû§]»¸† 03ZñÅHØ’×Õ0¸1ËJ*¹ÁDN%-xµ²u|ÎÞ„¦oÝ0ÏñµîÖ¼;my¨ŸV¼0—ͬwpÜ;T6M£ª9$²xòFµ3&¥Z±¨Å9v¥VñÓ† íëw“¿y ak^myfDÅ>(l?ês—°jp#É¢Xms»„­€1l*Î õ wõâíìÃq9VêÓ†ò£bBYu TÏ>ý8<ýúÛ¨_óó¯¾ _~ö‰ƒ ‘u+×6«MȬÞ\´©èöýÏž9 ‰ªÜÜKx/¾‚|5‡…ú€ZǶګöuïéBP龨…LÚ« ÚÙ·¹ÈAì`ßF¢p_cü€þ{S¤¨²» p_]†¶áMuÞŽÞp;Ô'Ì—ŽÖµ·Ç‘©ƒ&}ÀÜ×£}ÿ´ë×2*¦bP,•û ¹bªöuCW1B~—_<î«DŒP‰˜ o² ò1Õ•>`n¦®Þ—°r_Xï×´|¨uß,¹ LØ7åÔU슔ªbßF‚pŸ½„tUûÆ8Ĭà'àW6Õú2cF¬Ö'È7 ÕúS…Kúª­Þ·ìs]  ‡Ša'ëÙ§7ævBÕ0wÑ'ÅØmsáÕú¸~ü@¨Éì‡úšÞŸ$PÒ¾~'ÔÐ'ýþ×’|Ùà@•´âŠ÷ùWß„‚¶¼YÛ¶¡Ô°ûòùÃhBmy!¾1ÂMsô}ôáxu^¾Z:¡ÌASœó;s¸ Àcd¥­yÛBÓÝéÞP6Á>¨ysjÃÌÌ&à‚DÖ„È OÞÕÞT¸o¾´áy°Is“{6Æ ôúž¹†üÎ yÆn! ôMU©O˜ ͺd”ïöM ò …S±`€;Â|C¯šyw-ÙM{!Q¸˜Ù`2áÍóÒ•èËÑ&´w(à»BŸs ,SVïKØ–w5­¯] øº6€@vŠ}æx GcVì !JÕ¾æÐ˜š0Ì×ëñ÷i_’l®KY-Eµ(Uûò§Z_æãÉÕúB¨£b_éA¾œ*ö:7búöÇŠ±Â!*õŒ·NIþ}Ó…û^ß =•CÔ*«6„U¡ûqàs6£ÿˆÇ〶Àp—$LÊàGŠ`V¬Ðyêc }¸Øùð:JãêÅÛ¢C}íëwB} ÇØI¾ïõ£d_:„àš!@¡û Æ§w^DVïùÈõ1º`@ô}Æz¯Ñ„¿\«:#ÜýhMz[MA¾Cæ’m>x?éù½ ó ôŒ°÷™h¼Mî <—P³¶mçlë^°kApæ2·.Ÿ?L¼üâ©¶¼ŠºT­/±C}W/ÞfÙŽ·Öß)¯©ÒBܧüL©ÏkA>€ ÷>¯ßÕô¦„6$ªÀ@:*öÔ/×Jƒ”­¨ª}©‚Z*÷åÅóQð€rõ]Õ?_íUù΋7ܳ‰S ›ñxÔï—®j_® GÅ> jÚÐÕvËø©ÞÀY“ÈzÞXÏ%Q'‘Å“7É©*÷×ì‡úæä»oLÞŒû%>îTœ„ù2Üÿ¬Ç汪÷mÂ}‰ÖHmÓ4keì€2D¿YP³/?ûdý«cq¶3Ï€ýJOZòÖE%±DE=mìN"Ð×ÿ5WBÐ/Åù,п±~I粦ñF_€Ækƒ5”±Á gÜ(3¿¹zúõ·É¾ö&ÌGÿéÆ<Àû•S¤V¥ ÷M+F^¡¾„cő੫õ]?~0êÏ)ÐWÖ¸}îø Ð@ß5Oﯗn­$+Pû€b óE¥z³‘ª%¯Ê}Ÿ«oG ÷ õ¥·÷öKÙzW¨ >íëwQ猄myÛfý.­í_údG°JضmØÛ_Ì–0_úi§90鸰À=û•âÚñ¦ ÷… z_‰Të£/¾i_³cü„ú˜|ßuý(I¸/x“/@Öû€ì ón?˜±“õò µÅ“7£„¬ºß#‡6ô7´ ¯Pß4R·áeRVóÛTIŠºÙè¨Þf¬ Oî AÀ KÞFdëËÏ>êËCÛù€cо$Øõºzñ6Ù×V­³6VB}d6Öíx£~ͱªöuÅlÏ«%ïxTëöçÁóšJ}äº÷JSµ€L ö“æ»íXh.ƒwζ7E{^nOU!b…×)Â}”eh¨‘†mèj¸!­Z_~´U 'íëwÑÛñ†p@OÑ–wsÁϵ>€Lö80–gŸ~¼óg­vwµm»ý8åsö?Æ~¸A{^öæ¨5-y;Ï )Ûñ’‡X•úRTë`Æû¤„[Í[®õdDÅ>¨m“è]T@¦2¨4Wý˜»ÿxÆ<æMÓ˜ƒH¢ô–¼!¬Â}ZòæIEHúR­/¿¹bÐ^*q˜O^’Î3ñÛó¶ÍÞ…E×ý&Úë8@lMÓÜú(Y&òz=î±¾U÷y`¾j©Ú‚ÀW TCœ'¯MöåØ~·}ýnç ×~Ç!b©)ØUR€ï”ŸcŒoµùÌSŠy'ÇÐÆ¹„ÐO:û†že††úbµãU­¯¢9+r CA>¦š´åU¢ vŸÀ`5Vå«Íˆá¾Í¨Ú·G­îç—;‰‚Näx^ ô`~»÷Ë9¢ÓìzË=Ðw¬…n‰muc1¾Ý怦ªÚ'ü•ŸIÏkyryÎTëãÖÆG €Ü榸Õû„û&ÔÌå?i7ÍI“¶¹ylÊúñ³xîÏÀìç™h“À”ÁžØÁÂïö̉ÒC¬ª‡‚} ¼­ ï×äõã½þP_~úœ±+õ@Ÿ5Ѩ߯çúkÿËlç?×ùÆÛó8PÙ†Pe$`æãÍܪðÅ8NŽ©æ™Ø¦ªÚ‚¶¼5ê›plè‚òœíŒêÓz€9N£Àøû BÂ}@Êñ%—ö»sn©›ú˜Æþ²Ž,µî›–ãEÊ×ã}TëËϹaï¡>>b{.Ñ– à}Cœ"—а_‘ÚœB¡Œ;oÇ6eÕ¾„û¦â8Í×]¯¹±Â}B}ù™b.è ö¼2æÜ3ÜçúÀˆ{‡¸ÏÔkTä«âx{òf¼”ˆý…ûèû¼ié 3Üß\?fê –91֗꾉WÐ Á>àN.ÌÌ[ŠpŸ ~Ä0u¸/6á>dž~R‡5Uë+{üÕ~j#ð¾ùRÁyÒï Wªôåó<ÄürŽ(±LîSùmB}óæuÆÔã¾PµÎ5«÷rä¹è¶€èËó¹‰õåBP  Vsjɤ%o9Ï“€XðZd~{˜…öõ;¡>Ì•'~G Á>¨”°³ýŸ _yÏ]Œ/åhÔ·éìCÚ½d¦nÉ+Üå¼^Ï¥ o¹çOß ‚@s«rßÞØ0É>È!Rà«ó9`~ö«ñíUæ%È—#á¾4R¼¯?8éó„úò2V¨¦0õ!ÜçB!@"›1PȤÝ4gOÚæy Òøcì!ÚùqèK8oŠ÷³¼shÅ™¢Ù÷?{6Ûó-F°O‹Ö¼œó‰ýܽ|µ<ùs…úÊ–ÏžÔS&Ù_êÎÁ¥C@FÚ¦sÕO° îp[Óϵ ÔXíëò‹§ÕWî`¤Ö×/iÎ =ˆ¯½~£j_Ö•ûèO+^(iân­x(a¾ŠòeÌe£×U¶S„RT¬9ܧ o½Îy-xêhÉëÚÀÀ½´Coú”9`‘.ØiÙ~¯PEûÝûLÝž7E@©Öªvªõ@>ÚëGQöž®ïô§/”¥ 3¸ñ@ùÚ¶uÑ ×MÅM¨o6öÃ}cW[>8yÀp.Tz€llö.ô¤ô)”4q÷h•e® “¹«÷—0§D— ¨cÁ´å=.Vµ>Á¾|iÅ ÐsWAKÞ\Ûèµ—vȘ+~htÜâɛѪé +9¾0C­})@?*ö@I·Š}”= ú2æ5€AãoòtH¨*—6µcÃTí»Mµ¾y8õÜ÷<ìíí&®ØB”ª}Û/åú€AêžÀ›F°€’æ­(_ƼÐkÜM:p¦ àLö+íg+5Ü'Ô7‚}÷zå·ä AFÀ  ÕOà‚}”5oEûRæ6€“ÇÝb}ÇŒôKý3¦úyJ øÅ õMuN’æ¼÷\ÙëÕS¹Ï5>€SLƒ%8G öݶ°N âÜå˘ŸNk“ –Sn„ûΓsÈO¨ožûìù´ä˜ßØo°€'ð3‚}!@œ²°V ÒÜe 0Î[e oߘ¿1~ö”?Onᾘ¾ÏMH¾œ0à'Ø0ò¸k°€'ðÁ¾SÖ Dš»ìcÒŽ±ÕµÞ=ÅØüR‹9Tî‹èËù¼€¤{À‰+÷Å ÷…à>À¥A œÀϼq7$ØgS@äùk°¶mG`ž•úŽ©!à7æÏ0EÐO¥>ˆ¸¬#Ü'Øpß@i€'pÁ>Ê¿ìe⎧³ôuMî‹}¬¦øR‡üRTê+õ€hûBUûæ1Þ  À \°€²ç0{Y€÷ç¨!,Uzõ¾©Š!Ä ù¥ ôÕrž@”ýa%•û\ë0@@]“xÓœ5‰ïÏù‚}L8‡ÙË ?£„5¥Æ ȕܖ÷>§†ýRùj>O`Ð>qâ`_Úò$c ŒPè$>0Ø·þ½ÿ- ˜Ã ó0ãñ3Úà7·Tê°\Íá¾\öÀÞ>±ž`_ò+F¨f1Øwìß@Ï9,Ê—1?37|sG–«¥-oŽûàÀž1ƒp_Q~ò+{. Ô†u¸`fcìÃRç6_3Fmùü¡p0›=o³)U/àBx€r'ñ‘+öÙHy³§8o¬T©/¡*ùÍ=àçü€#{Çz*öm¿”k~D({?3ØÂí`ž`Îcöµ§“B}#Ižîs@²}dE-yCpO ­x˜@Û¶1Ã}UéŒQîbD¬r ÐuŸË¹„üœ¿0;íjkÜ÷³§²”:‰¯nöÞŽ÷®¯=æ2ûZ€ãã£`ßÄR…çb='µ‡ûœ»pæ~²®¶¼*÷Æuƒ :‰Oì³™ Ò\fo 0pŒPT<±t1Ÿ›ZÃ}Î_°·Ì à+Üçº0gZñÀÌ i…¨ :SÍA5C¿€@T|‡Ži.ºåó‡Õ„ûœ»À>÷¢€Y@(z3söD®j™Íeö¶!nû]á¨qõ Õñ•ösÎ@ä=fe-y]ûf;ž à‰\;^ê˜ËkÛVé?`vkûC¤òr,\7ÖóTB¸Ï9 Ôæå«e6壞¹ï5'øE ö¹öÌww3 žÈ3öûšpæ|6t.rq˜Õºþ!)N1eàÏ9 ”*§ÀÞÂ~3Ûo ö”=Ž»Oä=oîÏÿ‚}d0Ÿ ‹\ÜJUêcR)‚~ÎI`,CwÇBnµ„ø†*ØofÐ’W¸`ÀêF<>™G¨Ú'Ø@&óٹȅ= ä±O°N4·Ð]‰3Û{Vîsý˜£K‡f¸‰[ß@ŒÈkšF¸ú´è`N„úÊ}ž„ýà|*ö@é“ù€*›u@¤ˆž bÌg}ç!ïØJóz-¤ú˜ a¾ºøM°Í b_ªöô¡b®mÛÞaˆ¾î×î€Ó—ò&ÌWÿs+à7âæóõ»lÂ}œGÅ>¨aBPµoó%B„‹ÖDšÏúÌAÞ­ ”6ΩÔÂ|„ ð—l?ªj@‘Tì€ ©Ú·ùQ6dªöÀѵr̵7”HxXçˆ s bÔ2©¯nN>±[[0p.ë;ÿx§.0‹õºŠ}”J¨Ô„ýîÙ—VRµÏu@`Vc·›ïPɤ.Ø@=ó™ý-`­~€P¥â#Â~½i&Á¾„ûN¥/w3¦/$·xò&«Ç#t0o‚|”tn ûP   † ý¦ºQ»õ‘æµsçïÔª\«ï‡ær õõý9(›0µ˜SÐOÕ>€ÂÆm7Þ ‚ =“6¼Í”'€s›=.`­nq¥úŽý<”G˜ÚÍ!äWK¸O°˜­x ô Xcßµ®Ók ÁmŠ~åècnçºv½ä@5(uß½Q˜Õ„n}@äyîœ9HâÈmëµ8®¥ýnŸŸ€<óÁJm!¿œ*ö…0¨jŸ¼ P=”:‰¼Q˜š5çºsæÁ> —1Ì‚¸!?€é ôÁa5ü„û ¯ rPè$¾ ;d;‘[ci®;wþìrÃ,ˆðŸ@œ®ô_EÁ>ת ö@©“¸`ó˜ëÎ\ÈrÃ,ˆ#ðHO â()ì'ØPÈxí¦;8gêël¦×š ö@i“÷MÀA°€9Í{§Î=.äS[Á ø 'Ôy+ø'Ø?Á>(iâ.(Ô×ÙPyâˆ1÷:ï¸X«WN¸à|Â|P¦”!¿šÚñÙ R7(iâx³°;Âz€sß©sŽ`0åx•åÂwèØ¸7gñ3 ÷ÜO˜ê‘"à—[°/„aá>×]:Pœ(7Òî Ûü€’åêK°whŽì¼› Â|é\½x{Òç]?~ík•ê”cÀ°×vŒ _ûú]–á¾{sÅ&€ª¨ØåmJzOÞçÌû±ƒ}Ö ˜ûΙo$Ó)ƪÜ»Íëð1Û«Øp›PßýjÔÍáÊ_eíx7û`×jö@ v¤JçÎû1Ã}ÖD˜O™o\¸¦«&_ìN1þMY±O°àÆœ}‚yrýøÁÑscNá¿>¿ÚÚñn¾„{R@- hP„¡òEŸ9_Õ>2šOkû€)ƪIºSycVèÛ'ØÌ])a>A×jö@Îõí0èÁ¾#!Œý0ž1׸hL1V¥ZèNÒR÷Žq8›½`0g%„úú(MA¿9‡û\#jqé@Fôuÿ}ìÊ}À&ôÅÚWn¡>>jqß¹\bð¯;^ôiÓ ÀôTì€'è *õÝóx&{,Ìz>>ˆ/·àßG.û2%Ø9NÐn¢¥˜ãc„û¬=H8ïØãă“ª}·åèæƒñMöûÝ?úµBÿÌ?w‘Ͼt@°/¸NTÂ`¹MΑ*cäìKõبzN´Ç˜fì:¨ ò&ÌÜgŒà_ná>Á>ƒä79 ö¥žÛUí`‚9ñÔùE‹ €8co’»`ÀmS†ú„ù |±›pß¾)Â~ƒ}®Uì€\&åH•1Ƙۇ†û¬?H1߸Xmܲ`ä8N H)fào?ì7fÈoH¸ÏµB ‚}ˤœq ÞsÖ€âçÆSç놻Ñê‚}‡ õÕ·”îþ¡{í;AEì[÷÷‡|͵”Øoò!O1Â~c·ëÕŽ˜ý"Ã@™LÊ6ÎSÌë}Ã}Ö Äžcû¢Œ·ƒê}Çêâ;}IB¹×¬O öqÍäÀuœöرî<®Qö(Ü6$ä7f¸O°˜ý"Å@ål¾ïÙ˜Où¸‹zÌ3/ž;¯öL°Ùè8n¬@ߌÃ|E‡ó8yß²á‰Nè”ÐßXíyûB‰JŸÿ bPþftÊù\°€\æÁ>€Aãí Å¹PÀqB}§/O]3fª= ‡òKîìæîÒ!€lØYö"•#ÐWY…¾¶Ù”“ÄáÔ“ææ\ÙyçÀ߈cÌ™ãP{ýhôqŘ”ÊSOÆ7—9ÌåªöÁÜb 0ò^$„i+õ-ž¼Iò¸}] €s¥ õÍ Ý®=>1÷;ƒ÷=¤sJÈOÕ>`Öó™ ²Ø\öžKöåò3åüh ñ^$„qowùÆ"àÜ'U /·0ß¡öœ£=>Síºœ„#º+à!Øg\Š¥/ä±Aì·Ñ©dÒ4p·æ¸sæKóÀxû‘1Âm9„øÎ+Ô—kE¾Ca¾ýÿé±kÉèœoÍû*'+IXÀp¤ _NóøÓ¯¿ _~öI¨ág Ëùò¾y¤qÄÎ_³k¿[J˜OÕ>à˜•úr öÝæKøøÝǦäýÖ†“8#®%R±ÊÝ€T·Ùu¡Ò¯»ûŠh+½_Œ›ö}¸p2@Ej¬Ô×'Ð×ý·1~׌)Ñæœ]コ0'3g쀉÷xÜ«m=yìC´ÖÝÕ½ù/äõÌë}åèæK´fuq€r7]ZûªæÀ¹û`d[-xcïÀÌóž Èg®éêS­O˜ï4›0€€”;Ÿ«–Ê|÷}Ýœ~NÈÁ‘j~.òpTãfŒ<ùVì{úõ·áËÏ>‰²±˜á¼`Ìì\ìmN[{ ˜çûjô¥®d#àù+5Ð7EE¾?³=?sاm8ÙjÛVP ¼yÂB&Ù¤U[­/FëDë`FóA´1óé×ß&}¼Ï>ý8çãco pú¸zö€)Ô·kŒâÂ}·û‚}¹Uª[>¥ep_‡=?sÞ¿õÚÃq˜`P"­xŠà;&u ïØ÷;è@ÉnÍ¥íîUn€¼”êÛ¼AcÊP_ MÓx38óÚ¸ížïM÷µ0Æþ€|ö@¹›¹,}þÕ7ƒÛñºPÔ u Ïq+k~(uN:¥ZŸ*}ñ½|µTµ “[•¾cë´)Þ¨pýøÁãÓ†N° æLà`~”.€±'ß­xK™·µãŒóãùü«o&ýycWîëìs ÑäP°Ou¾qö@~U¾Ë1ЗãºG;^Èn¸1›—kˆ@‰Tì€i6J}6%mŽÿ¼ªösçKµiÑ#à§Ê!@žóSÆA¾æœ½Ò€#À¾}û?Ë&àwèg›øMmÓ4Â}ëu¤òß‘=¤À„,€`¬I÷f3Tuµ¾§_;¸%¯u PØø>‰©+öíðë{,½ÛàÞ±µ†…õY!¾ÇbêŠ}!¨Ú9ÙTë«)Ð×Gß5R„ãæ¾6L³ŸÜ(þè"P"û`ä}ƒC@ÍbVð ¿¡o,ÊéGq˜ZÆŒG·Ð;5èwýøÁàpŸ./0®»*ûíí;kØ{ä¹u ¸ÍS´dj×4q*òñìûO=€z¦ƒ¶m÷?bÎ3Åm¬6•€éõÝmÄ †BCù~Î!H0¸zWŒ4é6MïI·ÔùZ;^ ¢1<«Ç“[ûÝcÎ y ö™+âî?Æ~¨cŒã}‚}9´âÝÐ’¦!Ôw¾»ÖPÚñBõûÐý¿Êê«/P"­x`ü̹Ù?k€RÇð¡J ðMxœ]Œ(pØsŸÓwŽÉ)ÔLC¨¯ŸnxoMµ|þpèqm›¦îƒLxm6GöfíÍuD H‚}@ööoƹpŒ=¶ ßÓ¯¿Òšýó@YÓëÄã¶I8™P_w…ü€yéî›Û_í׎ì’Y…9¾ÜŽwßfÏ'Ф[Û]¨`.3¹ÅêKãêÅÛ^8ÀñÊ~ë½l›àûÙ“å®MgŸisSœ”•šÈßÓ¯¿uæ©Ù|´m;ÉÞ¦p<뛫&µÖ›2a{IÂô-0 þɶizO¶µÌÓ©/´XÏ¥ŒW§¨­o×±°wßãîݶñ÷ 1¾}.kô¾Õr ö}ô¡÷gÀXJ«Ø×^?:mmtõ]UK^ׄaV{Ü^{;×hÅ é7³×¶mÒcÑ4p¥ëÇV­fÎðågŸTî ÞíÏfíÀm§ðR~ÿÊÂ}À ÷œáî€ßMÙv{S ‚})›Ž3wtÂ}ÀÀ1$'_~öI¡¾ê}O¿þ6Z‹v︘|NS%¨cýôÁû{3¬bßÔ¾S›€P’½½§k‚À¬ö£m¼RßdîúŒ)ÄjáWkÀ€´KïÔÓgAs¼ÍÜÿ`–[\´`Ü ôkƒp0ÞY )'Ú7“j£Ç¨ b}L5& ôÛŽ÷šÂ}ûUûú<*öÛR.†‹i·Ûw/+œÓG.œØjÍp«Zßúïï ºå\•oÐñ(+àWÌÚ /û -¡¾ ¨Üœ:VÄr_àúñƒÁá¾/?ûDå>&›6KÚ«ŒØŽ(ys$ÔwŸZC}Ç~¶ŒÃ~íjéw³ösM¨nÍj 'ÚžÕ2jžŸÇ¼Éf¤Ωê£j_õTîëVí;÷¹P­ þ䨗+qm]Sµ¾Tì€dk†žÁ¾Ù¯|~E®YNáª0ª1/®¨Ôä4>Ä |ùÙ'ž R®×›ÎGØ|”2§Ô6¯õ@¢uƒPßùëÄëG¹V+l7›õ`ëB`ž\€ÌxWa\.â)\?~Ð+¨3ÜW[À€É÷!ЍܻnÌ»qÛùòŠwéckÛvô‹)MÓMÛñ ¯ÜZômÂ}µ´ç ÎTÎhC[i˜Ï åb«î˸EowMØt¯¹N ”¢±p€„íêbÁY“íœææ)Þ)iíÆå¾b‡ú®^¼þó•ð{öéÇ}ŸûX€HûÚB}9¥×D‘[€_^H¼vÐŽ7îñÌ7à·ó0×ë`OPÆËÂL°»!…sªeÌù8Êf?6Ÿ,åMþ9‡ûû’Ïyí=ëáfŽ?÷ó}B}0ÂÚA°/ݱÍ;ä×ì­‹=a@¶\!fiÊP!PÎk>õMþ_Óž·ÖçÅw€ÓÆÊ¶m›»>*ë«™$^¾Z:‘ õšéõ;!Õ±½~´Ó®7·‡×ùMÓl?r#ØiId̘Ïk=g×Dø}ùÙ'Eü`깘'á¾ÄÇ7ï€_€@Ž.`*mÛf¸Ù<U €®nòwÃ}¥´è€¾ëyòÔ^?ʽ=ï¦zŸ6½@Vû ñŦSÒþMðêÅ[OÜO©CÀ‘¹¾×þ+× ÿGj´c9Vµ¯ùà}'æqîTîË8ä×î­5ý€I¹BLÊÅ •¾¡¾­qÏýþ)hÍ §k_¿Óª7Õ±]·èͼMoZõkÜL€È“kÏŠsŸ“s¨ªe]Æ”ò©Ü“²r_myŸ}úñÙÏSÛ¶*ö°?ç÷^ÄçZ­/û º5‹êwŸ¼Ûônf÷®%£,@,: òäº )œ=Á öõÏjl*C«QYÁ¼Ç“\oî×ðë3f öp`Þì8uíTHÀ°€ Ÿ0΢ÃB"O®‚}C]/1Â}ž˜÷82Ç`_wüSß±Z°€{¯œ}‚}À(ë©‚~‡ünZ÷¸® $â ÄÜÉ7òCĸ’C{I ¼18çü×ì|Ä6´Úé˜O±³€Íœß7ÔÀöõ»íG¶ñúÑö#·‡v`} •`$ÜПü¼£/ê±øü«ozüž~ý­' äâépc†ûz~/O0ƒ÷]!”Q­`’ÅU'ä—kÐ/ÓpßNÀ &­x æÄª oÌãx¶»Â|‡‚$÷…ÿž}ú±'*3B(ûæ~н©«žÚ»0xßUÒܯ/ÍÚ+ãv½¶éuý°¸€l'VÁ¾ØÇò,))Â}PßXÑUzÕžá¾TãéÀª€ö®tçÿê«õ öY®Ã„üNz(›ß¸– å Äe§>¡­$µç…zÕЊ/ÕÏ0fkÞ“&WÂXëê/mÞùjéɲ£Mïieýš¦ÑžD°(Ò\[ð–ø³äúË9Ü—YÀ/„ àô'Ø‘ؘǥ:ÀéR„û¾üì“\y&Xí¹j ôä"×p_7¿ B~mçàl‚}Àl<ûôc*1äÆ~­7÷—φåó‡Ñ¿îp_Fá@êqÖMQ¡>€„ ³ukÞB~9P8—`P•ûB$Â}@>úðfk—"à×'œ)ÐçŠ7« ÁMP€¬uC~9ý2ø©Úœ­Ñæ"Mª«M½&Vóñ½ÇõlŸõÍÑÿ¶ ÷=ýúÛ{¿Ž Ô3.ÔZ±§êÛ·xò&ú÷»k|íŠìkÛVŠ€Aû­Rçÿ»æw€âÖr¼Ÿïc»únôo‚{À‰ ‹ˆ4©6MïIÕ||çqíýo…OöÃzÇ~B}PטPc°ï”›þ)Â}w±!D«Ö'ØÀþÜ?›6¼‚}@µë»LC~#üÜ£,`ÔIU°/ÕqôïOö`~ãAm¡¾snö§ öí±±Â|{ó£`€ù?„ž•Ñû2]ã ÷…°®Ü‚ûÀq®@Œx#wë8;çP_!,Ÿ? Ëç“<–a>˜ûü/ÔÔ®}ý.´¯ßå÷¸®m?ÆøvÎà>®YKñnÅc­w< Oßr£?e¸OÀ€”[‡ Ò…^†á¾íc'à׆àÚpÜ¥CÔ¨¦J}±*÷,Ÿ?LÚš72WµfjèMÕúÊÑ ÷娢·îë>Ö‚®¯s¥È^Šª}s•ªrŸ±€:¡¾6¨Ö0+¹¶èÝ®UÓ·UûTîö ö@ÄÍ7 pÛ y'S­ïnËç‹ øÀ\Öªõ¬äîÛˆ|mÅ…oà W‹ Þ‰w:á>0>õ/û€™/3¯Þ—j ìZÐ%ØÌÒÓ¯¿u Rªõ.ת}mÛºŠ 03C[]?~PÕ€•ÜÂ}ûíxuERìŠÓ¶møü«o¨ØÐ›û5˜k;>¡>Ë}ó>; ÄùTîSµØqé@š¦Ñfö Ï>ý8„ ÜÜP¥§ŸÍ»ÊOÞ8L¶Zëµ!²¨_ûúÝ­jy9q}HÁ[A o¡›À*ÜT7 zWò$U{rh£ZpL •û"\[ÙVís ìŠ&Ü„PW¥­ø˜ÕúÌýç˜S¸ Ñò"L¨«›Qƒ'Uóò0O¿þöì#YާgsS?¾±[ǨÖ0û¹_°€óÖ’¶æ½/`éºÊêÆƒû0[®@ŒMüjc-07ôÓ˜º-/õê«P@SVï)TØî­›€™qå2bƒ>Œê{@‰r¾¡?V¸Oµ>ú(=Ü/Ô0\ûúÝd¿æƒ÷ü¼aˆÁÕ#ˆ¼—*÷Œâúñ7ôGàB4I6NªõÑ”ÕûމtMe[µOa˜Á>ˆ¤mÛíÓQµÊ5·‹“%Uéi¯…öúQ²§ÞÙÀ¹„ûÈÅ]myc†û€ùq íå{ÿCﺸ—›ù•MšÞu0»qÍ J¢©¼-o»·–fÀÝ$ :ªöAyætQ²äP_¢ª}mì˜Í|#Ô'àÀ]joË Ì‡«H€v¼eÆVÃü„-yUî˜Ñ–É! é‚s¢ê}wµåö=\;€Ùì€ Ù˜w_hO¨Œyô§rÔ;7MÓî}80ÄžïõªõpŽ«÷ ý‘<«0®$@:î‚NìXxO¨2({FJ¿¡_¢CÁVîk7•ûŠ`ü—û‘×dë5IÂs ªr¬j_¤v¼ÀœÖZ@¢IvuãsÐDkžf0Nž­Ô`_ézŽ]”n®¾³g…zÆåÖk“Äs¾j}L·.¡Mîvá{¤RàâÉ›(?Š=̃«I@1„ú¦sì‚t{ýHõ>˜-zéuÞ8Lº ±-¯ª}@ ‚}HŒw̹a @VsÛÀS†û‚0d9$X«2æžFµ>¢ld^¿5à—r?fOõsE Ò²³ˆDµ¾?Të …1ª÷ ÷ÅxøžA¨Ÿ«Jк¯»34ç›øÚò¼^òÂ}Ò9/ŒÛ佩™ 5¯ª}À)û€Ñ)½ROmN¹à¸-¯ê}Ù°àõH*ªõ0ʦ&aõ>Uû€¾\Y€ÔZ{k€®9?æpÿÔpŸê}0Ÿe¯CÀ¹~Ðy!ÔÀè› ª÷EZ{ºt€œ•vSN7ñ]ìNøNôÃßo}[˜¦šõ Ò둹Íÿs^p¿Íµ’Ò‚ƒÀ´\aˆÄMü•ýö5#Tî2¼.ç-Vµ>˜lS3RønùüaX>è€G©Øãh€Ó¨zÔ1j2+íëw;ÕûÚëG¡¹ú.É·Z^*÷ANã½×"}•^­¨ÇËWËíï?úp±óç®îý}Ž7²Ý+}ð~ôà ýT¼v0ÉÀîº#Ù¯aÎ*ÏRÊÍ}éïxÞ´æMðkÌ0íšuï5(Í=ß9¾÷yTK¨ÏºÊu,¼g=2Ã5îëÑöKpßâÉ›ÁÕ5¨“Œx`Ð?Vå ˜!{êpèè‰Zój 9-~›Æ€¢ÔêÛü,5ý­y!5ëöµèu8ŸÓhÈ?èR:T­¨ª5·ßN˜|l®“ĺ•®Lî0âÄ«%/`<ùsKº¹ïÂø‰Ïÿ-lµæµï…óÇéÖë©ö:5û¬ }ÚœÖþ†k•3׺ [òî|Ÿá×Fì½ ¶µ¬CŒAåRR¶°¹ëÛj Ó¿ü7¯C¯ÅºŸç¾ÿðúñ¡> ‰>¡¾B¸zñ¶êã¢Mï™ Ýi®göÀ¨Vï–t7ÓÍPŠž \ o¯m[ó¦ø¶æP˜þåïÔI`ÈUßP߯Ջ·~Œ»iº~´Óºïú¨hM멹¨H×]ïtOî,‚‰_þûjks§Zäch@jCÀV×2ƨÜ7°í¯=T¦YWÆž„›fÐ$l óÎúü’nò»ßóœ8áBusõ½0L3^§~x :gŠœó­  \C«÷վޱ®9cý;,xwú÷éMÄ~ jZÇ:ý¸ÐÝß)ïrOX½OëH˜xð¬ëùìûk¾äeùüa´ ~5WñÛTðSÅïÀâw„ª}îB@¡Üjå&ÿ|Lx1\[^8ö⯲CüŠß yîÌ÷ÀR„ûæÒ¦WȯœmCõPЦš„#´93w'+åF¿j}Ï‘{ÚØ$lÉB9nÛS¼ \£*w~ïõÄÕì³6€2¤hË[û:ÇèÀzx„–¼}¯‡´mëÝSPËšÃES˜hŽì[oÒL „ñî$%]üvó>òy2q¸Ï| ;ã¶`I÷3B}@.R‡üj]ûX­×ĉÃ}®…Ø_@%.˜vï¿þÕ.  nÞÇ×¾~wçñöúÑjâLðk›¦qÑ›þ º{Ìs8·–Ͻ)êuXàÐíÖ±÷ë¶ê­9ä·ßª×µ€á¬¨`"±nZžÛâ€a\˜N87¾~wÿç¬~)4Mc^eÐ)|Ç'C¯Ã2 yŽTër³|þ0,Ÿ?å{uC~µ{ùjy+ìWÝæõ»“®eôþú ¯eðNh˜z2Þ½)Ö{b6§Œq÷*áf¿›÷#œ7'´²IØš×>™>c][ÓyÕ§ïæFh¤j'^‡eÌïÚðZ@µÆhÑ;‡µÒœÖM©Úòö½þѶ­wL@ k J`âÉ8R°¯³awP\Ǹ;•rñÚ üΛ/†§ ÷™S9sœ;åd)æLŸ`_ñÃ}^‡õí]„ú€’Lî«uí4—uT쀟`ÌÛ¥CÓjÛ¶{ƒ¬ Úµ0÷¹ñõ»“.„·×R…ûÚõœ §ž/t,Ÿ?ŒqÔëÐ90ùº6„é~‡ÚöÖöÛ´è­1àwê5 €Sö@e6!AÕMâS™g<9„ûšM)6s*Ï)ç“cVú>£š«ÍõÛüB˜¾Š_ma¿—¯–Â} ×ïöRP>G §‰ùæfY” Ú<d2¦$÷ ÑB}Gg\OðkÌ«Ü3Ösbqfh+ÞX-y½ö²š×{=5û¬ €ˆkÞhJ^wÕ¸¾Šîp­Ã^ jXO˜Ð £‰9r°/! ‹1í^%\xv¢ó¨ÇEð?•û¸k¬;÷ÄÈþZLß`_Â}ö)eÎñÖ@ ¹…üJ\“Õ¶Æì¯LèÑ:I›ó‰Ç´; öqç¹ÔóBx䀟Ê}ëÎ>!Ú¶mjû™6öƒ}!D¹ÁéúÕôóyï'@µ>`Nr÷•´V«i½54Ü7äÚFî{Oà„µ€ £ÑÄœ0Ø·ÞÈ;ÈÀTcÚ´áåÎsiÀEðá>ó){c][Û¹;ØBœpŸuíds¹PŸuЃŸu×v]=Ñu Á>¨`áB(d8A'hÉÛÙÌ;ÀÀØcÙ½û¸÷|Ê£j_*÷q{¬ë}"äz“%E°o#VÀÏ믌=‰j}Q×£ÉmWÃl¢pŸ,”¾†0™@†´Ê}@}cÙQÚðrÒù”OÕ¾‹Ø놜Y^—ø3îSyb¼y¼×¹Pk¥>k –RB~9­ëJ_‡ ö½Öä§mÛ¤asªhgÈbn|ý®ÿ¿½~ÚëGQŽóœ˜çÒÜÜü;užñL7‡;¶ù¯‰Çpõâm¸zñ6‹ÇòòÕòÖGQ›¿×5€ù’Ò€œ'ê„-y·_ØZH;~ÝKÅ>Î:·¼Ã=„èÕû´åepu»îy”˹ág:éF¥Ê}YÏáÚïZ#Ò¦wk´)ªöÙ3@áëD‡òÕ©Üׄ½›¾±¨Æp77ð3›¾Ã=Eå>põ£r_~Kk ÜµñX6Uür©äB(¦zŸª}À¹\€²÷0{9†û„‹ Ÿ70Û d}˜íûk¯Özm\RÀ/„¼B~%¶ç¸` S¹/aÀxBQsc¦•ûœÿ 8‡Tî8÷xý™¿jYw?J‘SÀ/ëÍ_Ï둯c…ì€òhË !»6*†QÓzlðƒXúÐ{¡Š8ç>x¿ÿ¿½úÎ>›c^[Û9Ô4ÍàÑçæã¹ÀCÝzvüýÅB}Ö@n"¬“Ëe˜ÛZ®ïuŒ>×0Ú¶õn~(yÍç@y6­yÛ¶mÖó¨›s•û(j^P¹/E+-Aqõ§rß´ÃiŸ¤RÀtkçÜ«ùmÚóN]ÅoÎü\Ÿ€Âçrï`€ª6çQ'vë`à˜tûˆvî©ÜÇtã^Š'{ÒshªŠ}]*4Ö³gÏ×½Ô\‚}Ö@‰r¬ê—ÃúqêµÝÈ×/\Ÿ€‚™È ¦‰=~+87C¾cÑÉûˆvî ¸0Bôp_c>µþŠqMuîÄ + ÷ÅjËë5˜æÜS¥>ë &¹„ý¦^O–î쀙­Ý¨Nô¶¼ÊõP‚!-yCˆÞ–· Z‚ÎæÔ+ìë#R[^¯CØ[gçܾw,3jÏkOì€:5!AÀr74Üä%Ö GoV9¸¶W­ïªõ5¯µ§ ø]½x®^¼õDÜÁ•)¨HÛ¶ÛÜ bÓ†—$óá€p_äª}!¬ƒ3æPúž?Ò²9iUëí¹üfTµ(T“êÆ?0ñ$s8údoýœ8þÜK°¤çâïû÷WßE}8æÐjǼ“žÔåó‡añäMïo3ŹsêÏvÊÏ>Ô€cwëu8÷×âÐ}‚j}õ‹´þîmª5çØë¿¾×-ν^Ѷ­w@©ë2‡êÔ¹Y}Ó®êEÌ…ÛòF®Þ·­Üg¥ïúk‚󧦪}›×a;÷ó¨;&À±õ÷”•üTðXì€yHîL w™…û˜¹7Æ& ¤­ß(2xÁ·xò&JŘ7g¾Ží}.Í©Z»û˜±C~s÷ ½fÔO°*Ö¶mÒÊ}!øPÀ|˜Ï…òm8Ëü9/SU¹ˆµž Uî‹øZœÝëpèÏ:·PŸ6¼ÓïmTîæÎ*˜NÀ¯ ~Ìq.îKPµO Ì™p3¬ès'VÕ¾Ømyç°ŽÕ‚€˜û™1~S†ûü€© öÀ<%»s)àœJ;?Æ64Ü9à§rŬ·r¬ÚñFbõ¿¡¡¾ëÇÌÙ\“ð»zñVõ>`–û`FÆhÍ»ýâB @Á´ß«x.̧-o*gÍÚÀª}Î4¯Ç¶òŸ3¸ púÞf¬ßT¿ÜÖ†ç¾ñеz(—»U0oÉZó†à‚ÌrPñº§9¶åU¹ožcÞÐ_s?oÝ8lk:®ëŸ£w¨O¥>Î]£Ù¦—Ó÷9”I°A¸`Kµ¾yh_¿ëðKÔ–WÀÞçÍ(߬ó­OÞ”rlË^ÜK¨Ø•ûRUí«³€ý”É+˜¡MKÞ±Zóºh@¶sâÀ€_쇼‹¾¸ShèˆQÑBÕ¾<ŸÛLÎOÕú˜d^ckÞœZò&¸&dH°èJîS9€\eî ¡²V ¤?}‚tëWú«±-oŠpßXUû€òö£UîÛ~7Èq>̧5oZóVå”ö³ªöõ§j_üÇ®Z_}è²)@æëõ­9Wî›ÉþfË*à&$ø *£!ï’ך—)Oݹ€T7 ›¦iKZ³Z_ëz}¬ö¼c)4ÜF°¸Ë(?ÈÉÐp_Š€Ÿù²|cUíS¹/Ͱ°9¶…_ÕúR­ Èuû¨UûÆà*°µiɻך7Õû€™p#ŸhsjüpŸùr&Üä£Âc”ð”ãÇ/‡ãc|PåÓZ æ}ϽÆlËûòÕ²¨Ê}®)@y\©NÞ÷'ÿ.,Àl¨Dî†TíÛ~¸á>mygº>ò3Ÿ/u{¯ZC¶×˜Ÿ¨fÝ>¦Ò~@9û€£Tð%Ü'à@ó`~á¾V-A7æÌJ ¼ÁUD4õ¯1*÷eöúþ`n{Ÿ;iË ÔàÒ!ÎÔ„n6M³ß¶ž~ýíÁ¿öéÇ0'›pѪÿ¦ysü' m³ WnSìsbóõbþÌ›p_Šö§Ëç“¶ý­iͪRSÙ„ûšÞ_ýzõ]±?ËËWË${›ƒ{‘~Ç© ó¬<ÅR±8}׿[¹Oõ>&q,Ôw߃Sh›Â­¹/Ϫ}·¾…gª>s¨Ú·?þ¦ƒÇ¨ÜG=ƺ À8j®Ú7µ *öClRwnj2ŠnpïËÏ>9òYߨÜÇ )«GQ¦M¸oS= ××X_p/¹òw®‡r\ µMÓ4*9ŽsœC˜®jæÐ7¨Ö@V ìÈûç«oG]óŽYµ¨ŸUCÒ²zªö±ïx¨ïîÿçP½¾£¾Uév¢ç4a˜+Bµ¹Tnð‰v¬rFaUûRg˜õþ9Özì ]ªŠä‡ŽP7Á>àl›–¼Ö¼!Ü´çM’(Ø„æëœ6»Î“i8îT?ÿEhËBÚpŸg©>#„ÒÇH¯¿±×ªï×ûµ¯Zs°xòf’ïëM£ÀàuŒC u ä—”€çœ'ΕñŽw\€åÖœ÷ú]”€_ÌÊû_ÚØÇÆç>–ϦøµŽy¹´KÈtiï|õâíÑÊáYüœ=¯5¨ÚusÅ H!Yå¾oâ¦)΀CTî«ÌÀ0ZôóaýfŽd“kêPuâ€ßØá¾^ÏïõãªõÀ¼iB°ˆj¯zß(á>¡-N=W `98ßåß–×Y™[òN]-#aÀ¯MýÚ‚ŠÚƒG¬z?Eå>×–€¾û€ÔTï#Ÿ“ÑyD”y[Þ6ýdgñäÍ ß7„VbÈsÌ_‰~Û×`¢cßûõ­RÅîà n;+Üô!Ø$£z©|þÕ7£rñ•QæÍD7(Ìué@KՎױ=ñØÇZ§®¿ŽÐnd}è)ÀÜL]Aüàæ!Rw ®ZcR½^ž~ýí­¿ëîs~±Å¼ðž¨rŸ±Bh÷KîÛ¼>ƒ*õ©Ö@ñ›ˆûæ±Ûòzã(p.Á>`Ê}!¨ÞG$*÷1&_¹sž‹Ô–7á>Òžª›5R.çCŽU2¶æòÜ7æ¾ëKªö]‚}À¨öÂ}£üýÊu¨Z_WŸpŸs¾„û¸wžQìÀÐYâ…ÌœP=½×b>´á`ì7¹¾œÊ•+`t›ê}ëߨw5üH>ÏEªÞ×^?ŠðS1Œ¢ÖESßìJÔ–wûZ<çØ[ÃÀí=sL¹To>xß“ l ö³äæh]TícLÞUÍ©bVï‹yØà¹nOÏL.ž¼‰ò=#„ÎbUî«úd#ÜwÆë±÷óuýøêªõÐuõâíh¿X×—š«ïƒK¥µºJîóºLD^jÞ§uq% ÈYVi:?bh_¿Ë±-¯y®"~Ù…Êr LÇ SÆ¢ZßqB}ôqõâíh¿úO~pÀ€-W³€ì´m»ý«p_v?ò¤j9QµÒ¦ß°ÛÔIlñäMö±Ç¹ôÄÉy\Í%à'ÔwœP%ø‹¿ÿ`Ë- k{¿l<@sja"ÜÇs\‚ª}‘ÚòjZ‰a³IÎ…Òçˆ)Ã}B}Ç õPÒ~EÕ>`ÃU- $ZóÎÄÓ¯¿u€YHÑ–×<ÇØçÂ^µå¤JLçÖšwî„úˆi̶¼®l¥É²5¯àCÁ'”çŽÄTíclªö… r_UÍÎ=O¬5Ü$³5ïõãªõ@eþé?ùAå>@°(C·LŽ­yCËÅç_}ã á>îç2­Ú·™ßÌqXëô“:Ü'Ðw7ÕúØßÖÄúB)ßôÿ‡¿øûÿ8„¿-¯}”ÅÕ- dY†û\)ðDòœ1á>î³-o{ý(zå>ceÙ"TSÁqÀ±OE 0˜Nê¶¼›p0_‚}@é²kÍÂ*üðôëo=;=8nÔL¸SĬÞ)Ü‚pß9ë’ºÀÓÎ'ÊžÔá>?˜nß–zM®%/Ì—`P¤NKÞìn ùÙ'Û ~O¿þV`mäór%ÜÇIãXÆá>f=ÿ´ŽA©Ûò ø07ÍÕw}÷lż)AK^›6(i½ã‚+PÅ¢æ¦zLÖ‹›Ï¿úæàß?ûôãÙ?‡1ƒÏ>ýøìªRÖÅQ_‡'¹~ü`ÖÇ룽ϊ^W¼ïkyÃãØ—1nÞ;ž|`R½î²xò&Ù9°ž ÷Í¥¡Ž¿yÖ< `ÿÛsŸÛ¶m3Æuäkñßý£_ ÿÌ?we¯ß¶­*ëPˆK‡¨Ìæ¢D–iƒ/?ûä`¸o?Ô6§ ŸJ†ÌÕËWK¡îÕ¾~-Ü×^?ŠîÛ̯ۛ!~ó;-÷Ö\w­ÉœGlB)~W/ÞÎ>Ü@b¾©íœo»·ÇÉÞ?ý'? ÷¯“\€ªXÔ¯–íbçXõ¾Cj úæûò³OÎú|ë⤯Ä V„û8éõù&G¤ê}!¨àwh,<é@LY­/„(²æ®ç=uÕ¾ZÆN•û̯ôßóö©Ø··gÙùϹ¯Ã÷«öõÝÛ«Ø­“\xª\äì^˜©"Ü—«c¡Ã©+ñì A(%òëî^‚}7„8é5–o¸/׺caÁ¾â„û´ãÍây0ïš[f¹ßì;°¼‡I½ÿÝ?úµB؆ûû`ë$Þ€ª; /ÊÄTCÀ/7‚}“¿æî%Ø·K“^cWî3†îŒƒ÷ŒZ‚}ÇæÏXk°9Tí‹ô\˜{Í©³ÛçÎ-ØÂnÕ¾ž{zûw(ˆ«\À\4¡Ó.07}Bh@]^¾Z:Ü«}ý.Û‡Ö4ÍÙ•;«|Ž ºA!\؆°º ¶ÿÜ»Q4úsq’«ol8.ú5äkðúO~ðLÀ\'.´³XôÜhÏ;ç&­“¼ÖŽR±ï0U†8ùõ±z_̶¼ZúœÖŽ7‡Š}‘ªÅݺÆ£êÅ\Úñ&~nf7›Kæ±·U±/ö>&õüwÿè×Â?û×þËh{7 _®r³Ð¶íö#wª÷0úx?ßÍM!o êæŠ0kª÷9îãäù,b[Þˆ•û¶“«€ßm‹'oª>%cVíÓŽ÷°Tá¾S9ÌL´7†ÇXo_?~à€ìØ•må¾nª÷ ùæó¯¾9ÿ<äܬàÀý„û8ùõ±-ȯTqceñäMV¿”A1Ê{ÎJš£Uë Ù¦¶óÆðõu/€Ñ¸ê°VÚ?’΋qªöí|ÉUî+ö‡ŒÛ>ßÐ÷ ª}%·‰-ä9;zÜ »M×ÕwE?~kmà‚}Çe]½oC¸Ü¨ÚŸª}œõ̯jßÎÃó Ý–[[ޘᾱÇÊ¹Ž—ËçUï€ñ¨ÚŒB°à€ÕûŠhÑ ÔK¸³æ±Há¾UûBXWr«}Áîó=æ1™óx™2à×­š˜SÐO^JÞïy pW¾îQR‹Þ/?û$<ûôcOTJ¸šÌ¨-o‘Vü¤Ÿrãkîãeê ~›çaê›B}L¹­ åUî³ €Â¸úp¾¬/Ú4M#àGq¼;ùtÂ}œ*fÕ¾•ûÚ -ïŽÜÚñ†·%¯gñÏás¸y€s5¼_î~ûæMà!Ë)×LÚÃô\H­nPW±˜úü«oª}žú´(¶FŽöú8ËõãÜT)âä×cÄ›%ÍÕwIbãnÓ4gÿPc„°úŠ<ìNƒžôSç ce²çròùÜs 0ï½jýi²½g¬ëÄ笥{¾¹F6 sé ²¹A]ô‘cá·©§„ñŽ=¶>A>âkÛV‹ÍÄ^¾Z 5PÏdº/Ü`È×òùð6Dªfqõâ­@x¦67=?ÝNP­Ï~Ó1€"×M&p€‹ªÛ¦êY1B¹†ð¬‘“½.î%Ѐ÷¾#ß4Q¹ï¤1°×3ƒª}!Dzc„ª}Ù=¯£ÍížS{Ôs÷¥mÛ&{jÌÎ.§®ŸûTìKy €Dë 7-"/°fò«‘ur’×ÂÉüútàÎ×dþ-yC¨è:Eß;9ûBˆî%Øg|ý¹M:·{.aÜ×|îóóÜŸöÙ“¦µî쀙¬›Ü°H´Ð:-à7ø¦6iX''{œEÀï|ÜùšŒîKì«eîŒgý 3 ö ^;GG~£ÏížCÈëµ.ôÀT{ÓÚƒ}ËçÃËWË;?G°f²nrÃ`¢…ØnàÉ¢,3ÖÉIÎóÞüÎ#øÀ¯ËüÃ}!ÔU¹OÕ¾„Tí+÷ùÌ„úÇpÁ?RíK3öm¿]êõ²`ÌdÝä†%ÀÄ ²ž}HË:9úùßi ¸óµYH¸¯†ñ¸Æ`_å†ûŒù=¿÷=ž/¨oìø Æ`_gBâ`_ŸPߘLj¸—w²Ñ„N Bà°¾/çæå«å½m[˜¯öõ;AJeË™×…ú N‹'o¶PÝ~{õæ´Á×x]ÿBP± ¿š ~Y°NŽ~>'£‚ßý#8úÍ¿r_Sú¸\kž\B}æcc~Ïïþóè9‚úÆëçBÆÝ‹öÜŽzOkå$çqRÂ}÷”ààëTå¾Ôã`ÕÁ¾ò¨ÚWßó,ÈõŒÑÆbí?Köuö‚!D¼¦Û^?²ï– €÷ô@¾Ú¶íšÎ#3F}[‘ÌÉËWKÛóÍëwÙ?ÄÒ§”s>¹ÖF®c¢qñtËçG Òx-€×Ñ}?ÛæjÙì,$$ó [À©â7*ëå$çí(Tï»›*UÜzFªÚBúÊ}ªöåiê`ÅÐq߸˜çs¯"”=6OÁ¸P÷Þ³Ç~sòûá±+÷Íi/ ³ß×;eÙTñ[_ˆQÅޏzñV¿;¨PÅ­ù%ÿª}[MÓ¨ªš¡©ƒCÇ|ã"@TñÈx/7M^(wýd1PÉÂN%¿[‡äÀßõ:.ÖÌÑÏÏÑ©Þw7UªØy½ªÜ—r<ù—\m¨äÊ}ÆÃüÎ •· Üñ8Æ€ºö›=ƒ}“¿+¬s]lªM¬L”º~2‰T¸È«$äóÂÛ–ÖÌÑÏÉÉø'ÌÂÎk6R¸/a°/„ÂÂ}s ö… ÜÇñóBÈæ1çÊPö^³Ô`_Ÿ=á\÷ÎÀÞDn˜Ñâ/¿ÀßîJ¸6ìËîü›ŒpßqÂ,ÜzÝæð+-ÜwÖ­!|0U°$ÆXoLŒ¿uò(oYA°/„ñ¯ÉÊ@Éû{‡`>Ú¶í~4›° Fl>RÙ~Î÷ÞyL¹Ê%6GŸõMô¯yõâm¸zñÖÁ=àå«¥ƒÀî¼ñú]œ¯sý(´×’€üö”%·áÝÛnÞß/Çcœ±vpƒ€Ù,~¾#ÖÚ9Úsp’SÚð ø¥%Ì­×pÞá¾2¿Îqn°/„úƒ©Ã'1Çtc"`l?€|ö’µû:ûÃF÷ ö@á{|‡€¹X‡=\̪Èç_}sRðW/Þ†«oÜÂËWËðòÕÒàf}ý.þ×¼~õë5MsvÛFs<7%ê‹<S Þ#Úƒ@éûR‡KªJZ±Ã}!øu ø±ó:Nî‹ùðÂH팈cùüaòjHÂ} µ ø ùœ/Eå÷*öÖmëMÈÀýûQ‡¨AŠp_A¸¯CÀØá¾ØUûBȾrßÉæ ()ÜÀ¼ øC`(A“ªbd»^=z-„­Ÿ£ÿ{ ê}ùÙ'Ñ÷õãž¼Ž>ô>1ÒT^h®¾‹úår¿›¦9û¤½å&eX"ÖXn æ6~bŽ˜rߨgŸØ¶m1Á¾!×*ïûÒ®e@á{}‡NWCõ§9К7=•û(„Ö¼Ú´çM–ˆ5ŽA‹^"m\µäê€òIé0¿EðM8oÐbØZzðñ¿S¬pžê}é©\5ó×tþUûBȨrŸŠ}ýÅ M¨Ü'Iż ÏX{žõ^1„ˆoL+íçެÜŒ`– áˬ¥û;¥¨¸;à'Üw›€ËŒ_×e„ûBÈ à×'Ø‚@—€@Ú±±»Oñ&™90oÄÝ/Î(ØB¤pŸ`T²ßwΧ5ïmZSÎWûú]ü¯yý(ÅMñZóº¹2Pª6½Æ?€Û>ÿê›í§Óž`½ùIð&°j÷Õß|&Ô­§T`– aíxs8öGqãP¿tT®šùk<ò›öõ»7Æ›©Æð!cUÿ¹-ƹsü6þ%‡}Öâ*ú™¿Rï {Vs/òøÞ5³^?€PT¶¦r#€Ù.†µãò¸ßiÌŠ ~i ¹Ìð5ž "CÊpßc¹v¼ñ 9?bÛÆ= ¤10öZ\ÐÏ<{o8‡6¼Gö!œyÝR¨*\S¹ Àlêöåpìo™¢ÍWŠ~· »Ìè5ž¨ÝRÏJ ÷~Ù±ÇsÁ¾tú„[Rׯ< ç±ï.}×ãB}ær€Ø{¾{Àšn§^¿ê€J×UnB0ÛŰ`ßdž~ýmv)ÕH¿]‚.3c„ûû¶_~¬q½oÅXa€óÝvcŒ6îSu§ú›¾ëéå?ûííïÿô¿ý¯þù2Ÿöƒé÷€Bn@-.æªmÛ“ÚÂÞ§iá>Žºzñ6„ àQÆíëG«q7MÀ¯½Ö›í<‘“Å“7ÂgZ>^¾ZnÇâ)¼|µîªó 2Ý_uýÌçÉ õÕì`ÖÖá¾& ¬ÚGù>ÿꛤíÃüV^¾Z†T°šÅøúú]²–¼©úú×d7ƒÌ=ãúèÃE¸Ó޽Â}@ ká±í‡ø k@µ>¨†`@IC}]~+B.ó*Ü—¸rßöÛlJ÷¹1T¾>\lƒÅìêK½†>'üWRu?Uû€šú/€, öÀÊ ÊIÚñ–k¬@· ÷Q€6$ªÜ«<§ëŽ7B~@-OÞ8kÝ` !?á>€$l²€º7n>@Ø„+-Ž­­O÷ôëo³y,Sûæ^¹/myg1Æ&®Ø¸r_hÛ6ÉÍ¡¦izMBqò3Ö±Åõõ­Ö7d ½ à5 ²mgKWJ?ó:`ïoŸ—jï0ÙÞß!€­AÿT^*j}yP9«~íëwB‚y‡8>úp±ý˜›gŸ~<΄×47ëÿ¥™X;ÿ[¿Ü©º`ptÏèÀNµ=gàËÏ>É&Ôwõâíöc΄ûf0Î& ÷µ×B{ý(Ù×Ï- Žp0Gç†ûNYGïù:sè¿ò¿=úÏwì±äÄÜÀ!—ÄÓ4–¼ôvõâí¬[ó¾|µª©\ûú]ò¶¼E¶ Í*a`âÈÈf8æd?Ü÷ôëo{í…zî¢b̪½g.û·Å“7Úò°C°Ö67t†VqîËW ­w7•ûæðî›ÁX›0Ü·©Ú×\}ýK¯†÷fg¾ n}¸îf±ÿ9äX¿ý½Ò9{§Õ禪˜×ôÞ—u†©çxá>€jOP$wK \[ôÍøî¦ÿ¼ ø 5X,géºþêŸÿvø«þÛ½Ây§ì»ö?~ñßù‡g=¾¾Ÿgž éþÐ!jVBûÝû÷Q£1Â}©+÷ź᯵o9úü„ú€Øb„¾bÏ=ÇæÄS|M¤s¿÷]ÿíóŸÿjçóJ}žJ¤ /@goèÀAªöqÒ9Ò¶mTîKJk^2Ô†½€ßÜðŸÎ)?m|š,‹£ûýyp?0÷Wÿü··‹çã¼á±¾¿9Ú;%ä×õùϵ øåP­€ù¹t`צzE³ºs3¸”EÓ4ª1M`ŒJ}›çuýëú” Éžì«oÃõã³}N_¾Z ÉÔ6Þ¾~šÞOÿ}®¥ªúІxÁÞ(sã2&sp(Ôw,wèïš[ÓÝ¡IpØtÚy,mÛî<®Î^ïÖßû>ÿù¯Â—ó÷'ÙÛ-ž¼ Ëç„@ÆØÛÌ`Œ {c‰tFj»{ô®ãúÆaÒpΦrß\~Â}õ©%Ügœ ˜¹÷Œ¹j?ÔwJ o[©ï?ý­ƒËçC!¾ÁÕðÚÛ_ïP¨ï®ßæÏ«Ó†78VcÏùÂ}'SZ¨Ž`Ü-jHKð#‘}[ž¿imÚò øÕ£¦Ê}}Çù1‚Á0ts×ßí·½½i‘ÛÜóµÎ«â׆ca»Õßÿâ¿ûï vC~‡ªøu¾p!l[òn*÷m>ß¾€¤ûqO8²X¾¹±“dÑ<çµøÓ¯¿òuF ô5ç>w©Ûòn̹5oÂ}Õ»#µnJîë=^ 7Tð˜ŸÅ“7£íC‹Å¾ý?o«õý_~ûÈçw>÷¤&½÷ü,{þå‡ÿpçç»ï÷û÷·þWvôkw«÷u~cìíÌ÷À\öröjÍã1Àè׸W’VƒÛMÍØ—Ÿ}2I•¾Íǟ߄ĭ`®^¼Ý¶ç£Mõ>êо~WÅz†zÝ„à>CC}縸¸¸Ú;öçÍï}¬–ÃMhÂ"4ëÿ-Ö±¾Íéþ)„&4ÍâèG¸õ/;_¡i¶aÄs>BáoýüÏvVî·òMs«‚Ÿ½)iÅ GÜÙ’)’¹¶ozöéÇgWí;Èù˜ÍœS¸+ÔwhŸÒýøƒÿø·nUçÛ„ù¶Ÿ· òÝøVÿæ¦zßæß/ŽüoS±ïæã"¼øøÿµ óuC}Ç~ûa¿ý}×ÙÕûÖÿöPõ>€šeІ j—ôÒ„«/Eùf›L5>ž}úq6ÁÅ‰ëæ HóD¶ ÷}ô¡÷µ•¬}ýn”F«ï‘´Å]Ût=>rr_¥¾c¿ï¶ÃÝ,mWmx›îŸV¿ëüÝίÛï»û÷G'Ôí²yõëb±ØÎ­›ùµû†CMÓ„¶mÃÿðñ„Ю¾âæq¬þûf¾^mý¶ÀÎNpgSØ4!ìÍí›ïÓâÉ›lÞŒÅ~Ѿ ¨˜;p¦©/ÖRÁ/“j„“·ÄÝ»Áýñ¨Ü·¢z'¿&Ó·æ=µ-¯þ}Œº95Ô·ßÎöæsšÝ }ëª{MXìTò[„›J{Ûpá2,ÂE¸Ø«ÞwÑþ»î¿¹¼¼ Ûý*}‡>n~ŽÎÏvðXÜlN©Ü·ß–WK^€6?ýÛðd€º×IÞÅ=Ò»7g&_T縮/äV¶{¢õñ‹þà®?˜ýëWõ¾‚ÇÞ‘Û< ¸¹tò·¸košæä1@å€ú-ž «*{׺÷òòòÖ:þ®ê|ûÿòËß:X¡oSÅ廬_³WÁ¯—kTð»ûgÙTîûøÿ¼·BßþÇÿàþï‡Ð®¾F»^y¯~mwá7o¶í`»û×ó÷“ïÙÌÿ@-û³!Á>÷º€ª¯8p¾î ¡AÕ·c7ئüþkrxΦ¢‚Ÿê}E½¯ßûýò©Þƒ×ëç|^ŸP_·Bßb]a¯Y‡ûnªòíVÞ[ýù",šËmU¾U5¾ÅÍçßú¸©âw±®øwq±ªÚ×ýèVð;TÍïzµ­Ö·Ø„ ï¨Þ×tÊõZ¹€´Ó›CÔN°ê¶Qí´RÍââbì ÝÔÂ!½û¼ì3s>¯’KÂ}Â}œøZLî€{ ­ÖwêZ¿»æ¿ký¿ic»mÉ»Žõí´Üí¶ÙÝi£{¹ òmZê®~Ùùoïmÿ|ûã½°Ø~Þêë ò ø-‹íïCáoÿôêVÀoý!D÷:¾¥Lx=À!€¸ö*ùe㜠^Á¾#æ»ã|Jðîîã4#´¹k‡Žµnìp×Ú~¹<¾î¹¼¼<+Ô× ô-‹N•¾Õïo*ôݮ̷©Æ· òuÃy7á¾›j|—‹ËíßïÞ^µ¾n¨ïPèo±Ø½5² ø…&ìTïëî»ï¹¨bn‰Ø†·ïC(ñÀ¹û`†îk§UøùM-zSü6­yçòî+ðµ0r;ÞV7­Æ÷myH°î¿KŸP_7Ü÷/ý‡¿¹S¥¯Y‡øn‚~ëêz‹ue¾Ýj}Ý@ß&äw٩η߆÷¢[¥o[Ùï½ðÞ{«c¡¾Cá¾C¶ÕûÖ¡½mkÞ½ãyW¸¯9ãøBsõ]¯k$s ØÔd'øæBïyæðîã¤Áeî!à·?¦LÕ>Îqyyy3áth§„ú¶á¾æbÝvwq íîŶŠßÅÊ|‹½ße§ÕîEsy«Zßnå¾÷¶Áÿóßx» óí‡ûöC~›ßÿ£ôŽ—¿ÝiÍÛ¬gã¾á¾¿õó_Ý ÷Åû™ÿê%Ø‰äØŽ·"MÛ¶‡>Šm¹{Îy•ª5ï†pÙ¿&¨ÚÂM»©Äá¾¶¢ê©DÐ7¸uÊ\rJ ïh¨o±X‡úVúVUúšÐ¬[íîWØ»h.¶UùaUqoÑl‚z·«õmªñ]6?Ú~lþnó¹—Í{Û@_÷ãPÈï¾j}]«p_-Ü×ç¹ÈUmxæsMÀ!(–p_DÂ}e©=ÜnÚòªÚÀ Ëåá5Ρ¶»û¾+Ô÷û/Ömx7mw×UúV¾‹mž›@ßMµ¾ËÅeX¬Ûé.Â* · ÷-.ÃåbÞ{¯ô»ùóåâ½íçüèG?ºè;V¹oóqŠ¿ý¯þ‹ëÖ¼«Øâýá¾ã“vê Ÿù(ö¢F6¼s"Ø ©Ú—„ãB·*a²ê}slÍ+ÜWØë îp_7á>8o®º'H¶ ·k{Wå¾mµ¾u¨o|[ùÂMKÞ›–»·Â}Ý0_7Äw¹xoõk7Ä×¼·ý¸ùó*è÷Ÿýþ«ðÞ{ïmÃ}Ýß~¿sƒ}üÓ«°ÎõÝî»ð³%/õì€Ä„û¢iÇÃç—€_\Â}…½„ûàüyìž¼ûß ô-‹ðÉ·¿yS©/\t*÷]vªôu~›÷¶UùöÛï®~·Ã|›ê|7¡¿›ýèG'…úºá¾SZñîÛTîÛæ÷î÷kÉ{ßó0”ª}À˜û Æ!Ø#X‡¯„ÒÎ×t>¶!¶u½s,5á>²=ÿë÷@4ǪõmþîPÞ[¿u¨¯Ù†û6mx;Uú6á½EØù.öÚîòÝæëüýþ?þÿêÛüúÝwýÚ>vÃ}Í^¸ïÐ&fß¡ª}%êŸ`Œ¨mÛfðsGç8a¾8Ç/ á>²_3÷m>¦¦bÀ̃ðØr¹¼ó¿ßW©ïvûÝ&|ò«ß\ܺá¾U¨oÓŽw·Jßn…¾ÕÇM»ÝM`ï¦ïnýšãÕú}ÜÕŽwˆ?þéUhÖUùVúšcz_K^kÎÚç90¾N?¿a¾xçÕþ1N¸l_…ûö©à@ö‹ï½Êq‡Úñ ømB}Í‘Pßb]±oÖ¿n[ò^vZíÞTëÛ ùh·{¬zß]A¾c•üþüÏÿ|ð±ûãmî[ÿßý-y;UíSÅ(bÞHP­¯¹úθoÍäFL¸ ß½‰Sóâ|÷µóüJv°¯?˜Í±üèCï‹+漟¸=T7\8uÕC€òõ™K6{ŒCÕúÞ{ï½íçk»Ûýu±X„‹‹‹í¯ÿÙo®ZïnC|‡B}ëv¼Ûÿ~±óù«Ö½¡Y·ð]ýÚlƒ‚MèT<k×ËÛÿÛßýÿ„¶mÃr¹¼õñÃ?lÝ||ûí·ÑŸŸ?þ_ÿ‡¡mCíêQmö9«_Ú›…x»»áûò³OBªý‘ù(eŸ5$Ø·~³,@ýטN·2ݦMï¡°[Ñ.ç‹—Í‘Uø¦N¢»zñv6ÕûTî+h\¸j_óÁû“‡ ˜ñÂï„êoǪõu¿ß~wûkÓ¬ƒyë_›æh¨oÓvwÑ\v*öu«öi¿{ jß{ÚóÞÕ†÷P¿þοöWîlÉ{ìÙøü«oÎ~ÞN¥/0“ë³ ØØ †{ÂcØ îuG8öÁtçMjÂ}dwîgÐ’·ùà}sÈV·RßþŸUòûøÏ~£SQo±­¼×­Ä× õmªõ]4árqèë~¬B|—B}?Z…ù7¡¾Ý?ÿ(üøßzxg¸oóñ§ú§á—¿üe²cùwþú_¹#Öìü'ì€J$ªüwR€üÏ8ø)ÜGvç}&á¾)©Ø@×±ªuw…ûv*ö­Ûæ6aÝJwè»Ø ùí†úºUú.Ö!¾Ëݪ|‹•úÖ¿¯Ù­Ô·ýóbõq,Ø×ýÃßùë%üOÿûÿ½½ã¹Z‚ŸZµÏÈUnÉ]‡fµ³ø˜ÙFpu—1ÉfðúñƒYÃ>ô>¹¢Îù‰oD5WßMúýU(×¹­M¨l¹¼ýf„÷Þ{ïΪ|›ßÅÅÅöÏáââ"|òg¿Ùi¹» í-vZî^tZïÞ„úÛ¿¿Ø¶ãÝVöÛ„7aÁfl:•×?WhB»^¾¶mXÿ¾]ý¯]†ÿâù—a¹\†~øaûëßû{o’çìòïý·¡“Õ/íÍ»Ýù%|ùÙ';ÿ6æýó?ó~jÈiýÆU€y¬Åûf¶Lì A¸ Ïù *LLîsc \çûî õ…p<Ø× õmÂ|ûÁ¾ÿ¿¹ó]tBz«pßne¾Õß]î„ún>çæß­}ÿê¿ðù?Ó/ß~½Sñ®Ýþº ô­¢}˰l×a–íáþ…kÒçíh¸o/ØÚ6|ù7ÿæç‹|¿ÆÈu/5`äÞ60¯ëÀ,%kÍ«-/¹É¡-o{ýÈÀdµáí†ûöÿÜ ü-›jz›Jz{-x·¿v«ùõ]..·_¨/„þàÁ§á_^ì´êÝiÝ»jÏû^ç¿Oí¶nË{p¾û$„Ïþ+'(0¯‹W4(‰`ÀÌ´mÛ­’$àwõâíl~rÞ ÷0sûÁ½cÿmÿÏ¿÷‹_!4¡iaÑ4;!¿›ÿ]t>ÛÊ|Ýj~—‹Ë°«ß÷©¨÷ñ?ÿ×Ã'ÿÍÕÇ­pßú×÷«üÛÿúïíã#¿OéÜVÎ;ãVf-xæèÒ!˜§M¸o}ws1jO›M¸¯Öö¼/_-µäå¼×Ýõ£Ñof-ž¼ÑŠ`Æ.//où6µæ½õ±®Ó·©Ö·ªØ·nÝ»S¹oÑ©Ôw±ö[ýyîûÉëßü3ýÞ?ÿGÅÿ¦ ¡m›;—ÙŸÿüWáË¿ùû¡iš Å$Àñ!Õ!æÆÝ€™ÛTð[ßDlB‚*~5WïÓ’· s=ƒª}!¨Ü@|Ç‚{÷ý›»*÷5Mÿò×CÓ,BX×è»ùߪ*ßöO~‹æ¦j_ÌP_Iö«ö…¶ãÈn^IP­/Ê^Jø˜Á>¶öÚôF%ÜGç¸p3s(ô×ý»»«õ-BÂ:¬·iÇ»©ÖwàÛiÉ»ø]lÃ}« ~s õ|.Žü «±*ÓPÀ öpŒÊ}TI¸€¹¸¼¼\-êÖA¾n•¾CÕúºŸÓmÅ»Y.¶¿.:Õú¡Y,šý€ßM¿¹ú·ÿõß[å»{YýùÏå„ê¾Àpõƒp&Á>nI]¹¯Æ€Ÿª}…ã3 ÷-ž¼ñ¤¦Ïؽ\_«Ü·öë¶áÝúÖú6¿ïùº­yoªøu~—ᢹœõsy°%ïŸÿüW½Ú*[s¹N0»k÷ˆ^¹¯V/_-ü ’K¸RØTë;¸¸»'ä·úïͶ o³ ø-Ö¿­×· õ­[õ.¶¾Ø ø5nEü;ã÷vW×»ß ä±ùOÔ†7Bµ>%0KvÓ¥r_?Â}ã„ûTí`ˆ¾Þµç !„Ç¿úõð{¿üõmtoýÙ7á¾NÞf]Éoèë¶ãÝ ø… OÔöHþ½5·ös'R¹*åî+àÀÌtßþï›fØëþ·¦ë[ÿÿîçnÿn±­à× ø­Úø ö…¿ó7ßû9ŸÿüWPÏœsõj}öp¯½Ê}Q~µVîSµ¯°s<“¶¼©Ã}*öÌÃÅÅyAºýªû•ú¶­y·¿MÞMÕ¾u¤o'зX·ñ]t¾¹JÕ†€þû8YÊÖ¼5î+ìüžI¸€:-—·×·{ö»‡þîão~}7Ô׬Â|7Ÿ×ìü/Üú7ÿvþÛüX9¥jßÓ¯¾‰þ}…û±E¨Ô6“‹ëÀ\ÙMЗÊ}'î+KûúÝöcÒÇ!ÜÀEZÓœô9Ç‚Ý%ÞMÞfúk´ãmš¦S©¯ÓÒwÝž—?;!Ü0ê¼¹Z_¤PŸ7³g7 ÀÙ´æ=ÏËWK¿Ïsá>fä“¿±óçMœ/„p´•n7Ôw¨‚ßÍw|à\‚}ôæÝóTŽWîÓŠ€}»•ûŽ¥ðv«ö…#­x»a¿Ðù•]?û7ï? ;ü?²8Ç' ÷5¼–ÏF ø¹±P—år¹ýýÅÅEì™èüq$àÇm·*÷íQ¹`¾ûˆM¿µ#^¾Zn?(ÏÔá>æ!¿ðu;ð_¯þýô—ÿ[Oî÷žp@){ˆmx]S‚}D´W¹/ê…x•ûÈâýn²€ß¦rä°æ»õwàþoCºêÎs j03MÊ®%ì º”àk ø©ÚWø9>q¸OÀ€nÞ3Û‘ßï~N{ð¿íú6ŸÓý|j±Zk‚}¤¤-ï„ûÊ6Uõ¾X­²òkõÀèsYۆ߿þÃÿ-„ÞÍß·;Ÿ±ûûN¨¯]…¶Ý†üþOù8èGŒÕŽ×ü¤Ø[õ$ÚÃ9¤p -oôÖ¼5xùj)àÇÙ´åà‹‹‹í:씵Úñ¿Ûòµ·*ðu{»¿_†°÷oºÿãþî§ýoÚñsÙêhÁ pC°€¤ö~QÕÒ–7Õû8_¬êÔµî:åÏC}·ªó­ym÷ß¶»ÿ;î[n~߆½ÿ¾ ÿñÿ÷O=Q5íKTëHF°€1iÍ{á¾2MÑŽwû½¯ ú÷‹'o´äàV%½pßN[ݰ èm«òµË[á¾›8ßrýßWËvõÁqªö£mνQ {‚}ŒBå¾Ó÷qökëúÑà¶¼Â}å[,N»Üß]ýK/cw­:•ön…ô:myÛvÒÛüÍ:ì· ÷-;!¾M¸o¹.ƒµÎ}„û€™Ò†`¯ï0$•ûj ÷Qž)«ö…°ª¶±|þpûчê}3›»:myw+öí·äÝüi·ïêßÞTã[…ý~ËðÃê×v–a~XÿºªØ÷ChU웜ùˆ¶ц ©K‡€1í½¿iš|ßà·ç_½x®?(ú½|µ }è½xÅÛ¯ßMÚΪùàýɆ”³Û[ƒí-Ãnêó-ÛeX4‹B»þýMå½Å¦Õn³\ÿyÝŽ·¹iû ú-Â2,BaÙ,Ãô—ÿ»ð/þ7þš'âÏ>ý8<ýú[ˆâp ÷îo{ýȘzç0¥-zkhÍûòÕR[ÞÏçL‚uCZóªâPžSÚðZou«ïmÿܶ;ÍwW¾U¨oóû¶]ú6õú¶^v*ö­ª÷µª}ËðCø¡ý>,ÛÂË¿üß{âîñìHK^íxS×õCªr7WßY‘O^€Tì '›Ò1Q®èoÂ}%WðS½¯mxFXó9ä Eå¾Ò+ø©ÜWàùüÐþ~h×ÿÕÿÆ“~‚c•û€ùÍC«ðõÞ_¤ ñIz[:d¨ .î ÷1¦©Ã}‡ªjœJ;^€ÂæœoŽ8üoÚƒíxÛö&¸×nÚñ†åºïæ¿ÿÐiû¼ùßoC~›@ßí÷a¾î;ƒpÌ×A¾1÷þ)ßäPüZÐ! '{õ“„ûJ ø½|µð+í|Ö€|×Yá¦_{ó§N¨¯mÃ6Ì·ªÞ·®Ò×þ° ö­*ömªö-Ãm§Zß¶Rßë¿_…ù–á‡ðýò&ÜÇiºá¾Ï¿úfð×ä‡üåú:Õ†`¤õ C@ŽR†ûBP½Ïå Ã}ªöÔ¯išSÖS·~¼ïæóÚºxÛöhÕ¾å¦bß6Ô· úm*õ}¿ýûÚÿzê[…û~h¿÷$ì­Ã+¯ÒÀ©kC‡€$ ÷•\½r¨ÜÀ¨óÎ^KÃC-ÿà?ù­N„o¯j_h×Õøº-x—·ªöÝ õmÿwS¯[Áï¦ï÷ÛPßí~õÿþ÷UBò'mû~÷ñU%ÞWœUç;ûYµjßt©j_1ñ•_M—‚|óv¼Å›ñæ"ÔW½½oV~ö÷ù?7Sw$ÜÃdì À¹1¢I@O¤¦žX[^ÚÒE¸ï˜v¼.0d=8JÖµãýCÿøwET«ôgÕúbñÕ¼ýn¥jß¼ o¥bߥŠ}ËÕùf_¿9÷ÝYªÚWúÞX„üîoÆ ·>a¦¶Ì~òX­‹¬+šä®RY&™ç ÷õlyÖ–€–ÆOÛ¾_Ü?ÿ5ä7é¢z_TÂ|±¨Ú7÷Uªö-µä-¦ó0ß›•ê}o,ªó½¹ô;~c:»½Y¼?sëïšy;Pµ†¡/¾c?,´Ë~ €5ãE“€ži$Ü×çª}³pŸ€_÷ÐÙ>h©ÝîjÕ¾Ju¿2¶W¶Ý-bQµoZLãÎ"È7ßgVÝ/Î*ö­Vè[mËûfñF¼9-ƒ~³àßÓ7â§^ûÛñÓ¯ýŸÌ¬æ%Ð_}­Ò—N?Ÿíq=ÀàÆŒ&}Ñtå¾Ók··¾ðëÑòÜb¸O;^€ñŒ•¶Ý¿KÕ¾2ôWÌ«óÍ~oº¨ÚWýz¹J_¥ïR¸ï΢rߺP_Ù†wöý‹ ~ooħ^ýOãù×þS3ãkv7šôT£ŸðB?ò×§Ê}.>äµMéâ¡ÐæŠnÛ«ö•¨ß¢bߢ=ïtú[´ájõ¾;+á¾³Š}³¯g•ùÞœV}•Pßòûâx³øíxsú†…õö¾óc–úÛðªÖ°£K&=V^h¤Yî»þè=½œ8e¸ïá‡|®Ù¹šÚfÐÇý@QDJikÕ¾4ð¥ùã#Ý7-¦)E)"îÌFaE9 +¿¿s~¤V,¿JELŠ"NÒIQÄIœÌcƒ)&1ÿïß¼“ÉdqK)Åýß›Í×cL.¿Ó+÷š˜Ð‚¾XÆñ@Ëã¯ÍŸØ€Øž]Èlü·¯¿á¾ì—ã÷ßÝÎëÔp!Î…€fÔö¨½Ö}ýGþé÷•÷ÌþK)"RLböoJ)RLb’&óGT¾N“˜ÄILÒ$&é$&1û÷dñýÉüûÊ¿óûξŸÄIº´xŽÏýÕ_‰“““˜L&‹ËP_ùïßú[ËB²Ãü¶‡áoãÛ´Z­¯¦`ŸëÓ»Ž#Mú¬(Ê6rÍ·ó9½v«·-zµæÍ|9n©%om´èÁXiõëÍ zgÿ/[òVÛð–_GÙ–·l¿eûÝòû;‹v¼³Ö»g-y§K­yÏZðþöoÿö…·?÷çþœ™ ôRß«ôÕL^€=hÅ À ”á¾”Rãýïk‹Þ7§*÷õкª]ô´ëèǸh·*n³¨^ó.»³=Ï…-y')bZDLRDQ¤˜®¶ÜýbDœÌ_ãÒü·‹˜Óye¿"þ??ñzœœœÄÉÉIܹsgñﺊ}uT¥3¿.ÆÎ½Ý¶4S­/TëØca=vm¨ê6‹ò¥JÞbö}E‘ÒÙϧ1IiÓb‘"&ÅILÓ˜Q©Ü7¯Î'qöÝÉÊ¿“xã7b:Æd2YªÔ·®bÍR‘Øå¸€v ö0Heå¾6[ó–roÑ[VíÓ–7_M_8+®?àâÀðÇBqåÏf½ù}Q¬mÉ;k½;Yü;{Ütm¸/ÍÛöF¥*`ELÒÉ¢5oê+âd)Ø·-Ô§/Ð'C¨Ô×À‡’¼ûì`ÐÚ ø•N¯ÝÊ>Ü1 ø ÷e¶¼¾|;ÒûïÞû÷¶…ôš¨æW^¬TÙ ûqÐR n]د¬ÎWFüfY÷QDŠX„ûf\÷¥b“1Wô+ŠY ï¬Åïdþ*Ó(â$þßæK1™LÖûÖ…úûö›×@û†Úz·†Ù8:Æ4 ƒ2à×–Õ*~¹*«÷‘ѲúòíZŸoÓ…¸âúZød¤í°ôùÊIż)oTÂx³{ŠbZ~Óù×E‹ûg÷McZ”·;•ïÄÅí͘Ƹþ§^‰7ß|3Þ|óÍxã7–n¿ýÛ¿½øwõkz{€Æ&c×v¸¯¬Ü—»7§~#N?“˯]Irˆ77æ‰bí½•1Ѻ{Ï‚{E«á¾Y oð›³qÃtþý à ‹PßEá¾u·ŸÿùŸ7Óö×ÚŸCÚ¬Ô×uûݺ1,%5=MP½oá¾n´QµoUÎm¢lûkóî;ûùºpßìþi1=«Þ·%ÔW ÷•¿ê}_øÂ,@ÃÒšÛvM„úrô­VëK§ÇUKU­ ‚}PÑV¸ïôÚ­ÞTî‹îƒr™<&ܧÊ@OÆ;5‡ûfý¦‹Ö¼ï‡fÕúªá¾ê÷›~eȣƳGý¾ý9Ñ.¸íþ;'?þÚhÖ#C}>,P#Á>X¡zßzÂ}íë¢jß±á>z2Þ©-Ü7=_½¯(–‚|Û*ö­»ýÒ/ý’`¿ê{»:ùñY /¥tîvŒ\Zï®Vë«áxÚ¢PÁ>Ø pŸÊ}äè˜eR•€Þ€ªc¡u÷žý7ñU«÷ýÌC³J}åÏ6ýÖÝÊ`ݳ?§š òU•¡¾ï ¦_g[üzC}>P³K&lV ÷¥””ˆY¸ïá‡|V°-Ó+÷º¸ÀÑþÈý}çÇ9QDZ›Ã(¢ÌgE±¬TøýÙc"~ú÷a)ÜRþny[ý¾†)¿þÊW¾bfÕ3†ímж;p¹>`}¸ôã¯îùËÛ¿Mr¨ÒQ¥¾‹þnöç,<ì¨É½*÷1$7nN-#j» ûú–¼³ŸTÆ@‹°F±øIµR_?ýû¾p®Bßjµ¾M-z«_¬·GU¾”Îß}ÕÛïöµ’_:ýü13€š©Ø{*Š"5U½ïôÚ­¸þè=½˜*÷µ§ yô­r_d>¶Ù¡rß| ´¶zßÏü¾±¨Ê·2n:ûù×ÕÊ}åïED|ík_33€Š=‚|u>_D\úñ¹ååÒ¹íÜö·7ÛîåR©/b}µ¾cC}ªõÔÏYU8@S•û"úU½Oe66-Ã«Ë Ýú©ßó…íc›ùë~²Z½oñœ?ð…ø©X®Ô·éV­Ø·®ŠŸP_#ãU»àpëÂj|iÍm7ßö¯®­Ô·©úÞ.ÕùRJG•´{î©ÇmoFH°ÔdkÞˆþühÞôʽ­·h´ŒŒl|³gkÞòûêý»ÞÊpß׿þu>C}«ÌP\ÂÛæÛ!Ä·®EïÊíÛŸ~íâ€Þ– ߺûŸþ»?OÿÝŸ]¼Ë,§úáÕú„ú¤/© ÷5Õž·/´]e—eÄòЃ±Í­yúÎ*V[ð®kÇ[3-µâˆøæ7¿i‚7;NÝR‚¼\èÛõñ.óßþ¯.m×6­SË/•6Þÿ÷g#ÖlSe‹ÚÉv¡Ò†÷˜@Ís&jÒTõ¾>Uî‹P™ Ë@®.jÇ»4®Ù±5ï| ´ôõ®ü¾õ­o™)@ìTeï¢Ç_Øšw»ï˜WêÛv›½ÌúŠ}[ñnyO½Óg?üØâÖÈT¯'Ô'9 Ð Á>¨‘Ö¼3Â[ÍêC;Þm˪å Gc›5ᾟú½_8Wj]{ÞÕ€_õëßüÍß4q8*ÐwQ˜o‡Ö»‘R|çGn]ê»(èwö’é¬Zßê{ÙðׯûISa>z6ZÞT8※…¶¼×½'ûé íjs&—_íÅûܶœZ>ºÙÆÿ‘ÿúûöÛDŠŸú½_Ø4î¹ð¾ê÷o¼ñ†™Üî¸ôàßíÇ èí’¹m¡ÝþØ´ë曆Vޏë#¯EDÄE×K×…™×}ýãç…åÇ­²õ¯1ÿwS¨¯®¶ÚÅõê¨Öç3@çL¨_“•ûúDe6,ûË1Lõüïùo6_V«õ­»¯Ú‚—þèË è›}«ômûy¬Tî›ßÒdMu¾ÉÒí­ÏœUê›L&K·Õê|ëî[[µoµ¨àº¿vC@¯É¶»ôtäì Z8o°‚ŸÊ}ãÕ‡‹í».Ÿ–€v·ñûTíû©ßó…ÕqÍEãž÷¿ùæ›fnûãУ~_Õ>j^"7-¨›—.ú´æqÛÿmϼ¶´nl .¯û~õßËûïEYsoé7е_–Oß!Ì—Sµ>bhñÜ€IÍ+Š"5uäôÚ­8½v+ë¿_e¶fôáBû®Ë¦e ??õ{¾p.Ô7×l­¼·éç kíê;Wo[µ¾ÉÙý1‰ˆI¼ã÷Ëç*ðmªØ·©‚ߺÊ}åë,Ué«|³®rßÇ[¬ÐW\À²Ð3—LhOQ©Éê}9»qsª*–€L¬ ìU«ø­ûùšqMDl®$U ò¥”âÎ;&|7ãÏÚª}Áq6„ôÖ=&m{lÚò}:ÿZ•çú®¿x+&“ÉÎëLu;WÞ_ý÷òßþ™•¶ãåkóÿWÞNË÷í:Õj\­Ö@Ë#hŸ€ŽÊ øåÞšWp«~CjÉk9ŽU|èJ}ûê.Û¶ï7¶Ùø³éTeÖ\çÍE´â¥¦¥pÝ‚¹þ1«÷o ô­þlé¾óÏñ®¿ôËïG–‚zÅÆ‹¢ˆÿÍòSç~göýâ«ÊÿϾøëæÑVÖß&f¤kË_0žƒs?Ž4Ä`ŸåØE!¾ûéŽÂ}} ö­Œo_ õå5?ö!ÔGMK຅rýc¶…ú6úÖüîJàï_ùË¿¼óº°â+¿^ õý¯ÿãç#Šb©ßùê}Õpß_ÿ÷mmýmjfº¶ `ðã;HaÀOh«>u@¦Wîm$LrìrhYJm„ùÖî§[øõ=Ø·˜_®Aä2Î_ÝËœå2Û_ õu5Nhõµ„=€Zœ«ÄwQ¨oröuõ69‰H)NNN6Þ.]º´ôuy[}ÜŸýkÿYLæaÀIŠYÈ/¥Å})Íâ}³·—â/ýÛ?ùO6<™v?Ì=ÀŽc@ÞÐÓƒúª÷åØšW%¶ãÕÕ’·Žçjc¹³Ì@7„ùšsrÿ“Û§ýÊyþ&[òº¦Ðë±ãÑãØaI[]ðÎÿì\ ÞÊýe5¾­¡¾8 ó­Tì»ÿÙ/Ïx“ÉÚŠ}Ûªö•Û·?ýÑ¿}ÖZ7Ê sDÌ[ðqn."â/üñjn?™ì½ ®±Ú¶ëÈ]® È ÇöÂ}ì(÷p_ÝËžeÚ!Ì׎®ƒ}®# fÜxôvXÒV¼ó?[ì[úwrö˜4Ùê[„û"Þ÷ñ/Çd2YúVƒ}e@n]¸¯º+Š"þÝ¿ôÇ<Ç7ÿ·¨„ùf-x‹"âé?úÁf·ý''ç¶¿mk õE¸Ž ÐýèÚ€ z~p/ÜÇ길Wó…ÂÆ—?Ë 4C˜¯}ûû*c„Ãç³kC3µÿ‡—´Õoùþ C}+Õú–*ó­i¿;¯Ø÷»ž;«ÔW ø­ ùmZþÔ_ø?.ù¢ ñÍîZjA~ùɇšßöŸœ¬ÝoÚ>×=V/Š"Yžºåì&ô\\N¯ÝÊîï¼qsjf¡Î‹òÓ+÷6z‘ÿôÚ­Z–Á7§–¨só¡+B}ý#,Ýêz,ÀzÛªõíúû+¡¾XiÅ»!Ô7™LâäääÜíÒ¥K[ï«~=™¤˜¤´ø7•ßGŠIŠÙ×)µê»téÒA¿×ôph×%“ú¯(ŠTwå¾Ók·²¬ÜGw&—_íeÕž2ܧ‚ì¹oââxÁDùü¯»M3ìf×j}±Ráo¥Šßâ¾õ¡¾jµ¾u-y×µãˆø?ñ7¢¨¼j1EÙŠ7E¤ù×?öÄï7;ho$í@t _s¸/×`Ÿ€ÖᎭâ±.Ø×de&–AËl'З§míxçg±b-û~ذ„­.pË÷o öUÛíV[ðNÖTëKédk¨o[À¯\þøåg—·¥óÛ¹V¼EEñçÿж6%/]º´´mßôuu=­{L®/@#lü0°ƒýšÃ}yü„³SÇ¿Mø›ø5µìY~`=¡¾n×ß÷£&ûŒkÛïÚ%¬º°¿µ*_5Ì·÷ÅšßäÜíw=÷+çB}›~«Á¾r=øcÿÛ¿>Û÷-v‚óæÁ¾bþõÿâö{[Ÿ’e+Þò:îêõÜ6®ï ödpÌoÀ°E‘ê¾szíVœ^»•ÕßY¶We?u\œo²B_[ËžåVöº"ÔÀÒöûÏ…JÓæÇ¥‹[ð–a½ÕPßÉÉÉN·?~ùãg-zËÛ¤lÙ;ÿ>¢“Pß·}Û·å6¬m+K×ê¶|ÿ¦6¼eX/Ò†–»å×'‹¼ß÷7~e)Ä·ì[­Þ·®bß“?ö“ËûÄê×óÖ»æ±ÿI'SòÛ¾íÛÎUêk³bŸJ}²û`àÿ#iÍ! µ&[òÖùm/ƒ–!Æ@ o Ûuá>vÖº¿‡ù’µº -ß¿KÞj/V¾ŸœD¤IüëÏ~y©òÞj•¾‹Zòþè},Òâ=UwŽÅìQDÄ¿÷È¿ÙÉTüöoÿöy°°³`ŸkÇ9ë›0lMT\ȱ5o„öªûh£%ïôʽ…šZþnÜœ.n0È}‚P»¨-oywµ-ïìq«•÷ÖøªíyÏþª­wË[œ}æmx³›b-½'¡>€ÌÆh0’“ Tî+åVÁOÕµÝ[UoŸà^üš^ö,K ‰PßH¶ë*÷qñ˜°±}=£]ªV²ó?[ªØ·R©okÞY¥¾ßùñåJ}›n«-zËÛþ/ÿʬR_š¿£Õõ (¢ˆˆ?uú?îtJnªØ·íë:g¤ëÆ™´ Ð`\ÆðÈÚM-y›xÍ.–;Ë}%Ð7Âm»pÛÇ‚îçåRµº-ß_]æªÁ¾E¨o>ÆZ ö-·à}ߎÁ¾M-yŸøó]úÖ­ò‡ÿΧâw|ÇwlmÃÛd;Þ&ª¼PÃñ½IãREjêÂMNíyµRÝMë›lÑk™‚ÊöþCW„úƺmÿâ§L sk€©Rɯ¼/"¾÷¯½¾Ô~w×V¼e¥¾'þüGÏ~gñRËÏ9ìjuzíV6?A¬v4Ñb÷e®åÎ2E_ô!ÜG-Ë‘j}Ô)­©àiëcÿµ¿º9Ô·í6™LæA¾y˜/V}³ïÿÄÈ?ñðF?g,œ™Ô´â€ñK[Þu´U]vl8ï˜ ÿM›^þ,?äL¨ÅöUK^ÖÿZÙ¿3ª¥ju![¾)ЗVþœµåM)",¾¿÷¯~yÑR·¼]ºtië÷åíþ¿ú#¥ˆI¥"_蛽³ì‡þGÙLÁïüÎï\´ám»¯6¼×›0^M¶åÍÊkËŽ½pL8¯‰Ö¼MWð³üív]¨€ÞH[¾¯†ñηÌMç{+K³ð^,Ù†ú`Á>`´„³òÒÇ€äD¨sÛUíx¶¥z>3tÏOþò†§?ð[õ?ýëÿæü‡K¿9ÿ¿Pý!Ø4Ò~©/ª7§~s]Ví«ó}PÙ¦ ÷q~Üg"0ë*øý¾ÿèÞH‘â«ïþ•ŸÍþýã?ô¡>zE°ˆˆæÚò øõK.á>`Ïm¸j}lÛ¶ ÷=òßû+¿|Ðïý¾ÿd6Žý­·Üšµá퉻îºËL`­K&À™7§ñðCãþ,äôʽGô&—_=: ¸í÷…a™PCñ¯~ôVL&ûÅ—+QQDQùYÄŸüᘸôŽŠ}À’±Wî‹P½¯M†ï¦WîÕ®Êm¶P»n;¿ø)•û¨Ž÷L²s÷_¾µ×²[ÅâûÿÎ•åzþíŸüáÃÄ —û€H)z+6Ü"¥dÂBÏ5ðë“1‡ûúœîcôÛi¡>Ùv ÷ÍDôkïúK·VE¶§,~þÁÿì_‹ÿî½³}E«ÿýÛB}ô˜`ŒØJ¯8à¶I~0u‡ûúT¹/"TîË\Wá¾±·k&ƒm³PÇl;çÕû„üìCsÜÇ2ª½YDD|×_¼µë­úª÷¯>f)È·òõo}ç­xý¾ÿs<ûßüÙ¬§À[ßúÖƒ*hªº 0ÉÀF|@°êËê­E8Q ™n7j[1¯?zO¯þö±¹Žm©›K( Î€¦Pmâ£ñmýû~ÔDÛvåÿð;Lê>„¯4,ß_ýÀ_J³ûÓdþõ$ÞùoÅd2Yºœœ,þÝt;ý¿ýΘ¤“˜¤ILâdéë”R¤˜Ìî‹Ùk>ýßÿ;YMµ·½ímQEL§Ó­áÅÅz»á룷#¯Ò³K&ŒÓ<Ô—kr®¨¼ÇˆÊUa?޲j__~7nNGèš^¹÷èp_ÖÍ»CÂ~B}À ·õóÊ}~@ÛÞþ^Éäüøj©*ߦ[ļB_D‘fÕú¦Å4"¥˜“H©ˆ¢˜Æ4M"ezúc×sÎ…Œ“`ŒÈJ[Ü>.*ùO’;Á -®ŒójuVî등†ûŽ1¹üj¶­ü~h²W¸Ï¼§“í®j} so{æÖâ<ÅÖ_å6N#¥§ÿå÷FÓy¨oÛ+Š)DQLãÿØkKSJñÏ&GJ)~ög6—c+‹[iÅ cø÷7ÐwáŸád8t¼}Ñšw$†Ò’w›u!?a>º"ÐGgÛ{Uû†¿}ц—æÏ˃„ó÷§ê¿)"¥xë3·¡»j¯lÃ[mË[mÍûȧî_j¿›"-µáý¯þÜkKÏQ>Jiéöâ‹/v6µÊ6¼ÕÀâj•ÂêùŽÕóZñŒd”íŒ`àvR}¨ZõBwÛ—ZW:á¾¼!Ü9ê£óí½pß°·1‚}4{X^(,ß¿ì»k^­¯º«†ùVƒ}å¿þôý‘b“t'iöï$&‘A¿IüãÿàµsÏQ}ùqL|æ3Ÿélj•Á¾2ÐW½UÏmöŒüøÜ$ ˆá†!æ‹@§×nÅéµ[½ùû÷iã }1ýâ§L„¡ŽÝ„úèþ"¾óéW—‚i«•êÖÝ~äg~güŸúÞ(‡ÿEL‹"¦Å4¦QDQL£ˆéìûéòíÎ;‹«·Ž£6†ó6…ùVÀð öÀxŒâÌïJÛa KQ¤±üÆâØŠ{“˯.nd¾Íîš?ŽX[™nÝ-¢ˆ"fÕí¦1 ôÍ¿Šbî›w¢ˆó¾M·.¼ã½ím{O'ÆI°Æ¡ÓßY¶óú¯?Uû#Ü3Úð’‘é?%à7¤í‹j}tw˜¾ý„ûùû³J}EQÄ4!¿²j_ÜY„ûþÑ¿ó‹Yû.0À™d#ø§4ÖŠðévÒ6çú£÷dûw?üÐx>?Yg(ïØ*€0$B}ôf?ð¾5ú¶}ꣽCðò àüý)Åw<ýZy̰¸M&“¥¯Ëï˯ÿàgþõ˜¤I¤˜¬ü›b’Næß§øýÉ'''ç~¿úÜåkGDü“òOZ:ïxÇ;b:nm9\=‡±©%oÝç8ꮾ@Çß& Sõ$ùˆQT§…é-¬x ´æíƒ1Uîƃ¶B}ôi? ’_¿¶/B}tsP°éXaí}›*Ù=ví}g÷Çüþ˜Î[ñQÌ[òþÃ?ú‹1žµá­~]ÞÞ|óÍN+öm«Ö·î1»N?†ë’Iƒç¬ï†i°îSÝê^ñæá¾:+ø^»•uÕ¾7§£ªÜÀ¸UÃ}ªøå;o¢N/\6qèè<Å·ýø¿\:¯§”6Tª+bZLc’&Å4¦)bRL"Ò4¦³§TqçÎsa¹ò9×}Èïç~îçº8>Ú;°çÀ¸9Ó ÃÖèà‹NJoúzÆÓªPÑÙVŒª‚ßX*÷ÕUµ¯Î¶¾ÐÛí¤j} a¿ ‚_o¶7å š9¬^ïÛ~âÕ­çÖCøƒ×ïiL#¢8û¯˜Æ4¦ç*÷M§ÓÅmµJ_Y©¯úuÛÞþö·oü;«Ó ú/öÀpµv&x×_Ÿ~1 ù úA†N¯ÝŠÓk·²~Â}ûîÈ~A‹ÞlæÃN>~4²`¯ó ›î;k¹;û/f‘¾¥pßjÛÝmmxß|óÍ&EqtU¾¦Î§8߯äS0ÐÁ~­/KM?d~2Ùñdºmʹ5oièíyëæÕ„¾ªaÐûíy[Wg°RÛ^\rVâÒ¿ºtÌ_ýwÝíßzéw;ŽI¤˜ßóï_§Hi“˜DDŠø‡ÿ1™Ì~^þ»îV¾îÏÿüÏ·6EÞö¶·­ý@dµBߺj}ëª66Q…u€>¹d¹Øt’:“À_‘Ö¼a?Ø{=Oóõº¶•§¬Þ—sÀïÆÍéàÃ}Ç*Ã~Ã1ýâ§„ûZœÖµÛV‚Ç‚~ì¸äĹpßçþ­›¿+"ŠY±¿4ˆIå)§Åäìé‹iLSDŠÓ鬂_Jiñï¦P_Ç@¶ß€uTœ€¡ö¨ŠUêê8"£Š~©ëi¶Qç©Ü×­:Ûé ÷1ªõ1VÂ~õÉ¡õ±ÀßñÛôáMóc÷“uéX~[Õ¾ˆˆ?ô¿o^oö<“4«È·\¹oV­¯üúÚüÅ +õ­¾î¿øÿ¢•)QVë+ƒ‡åy„uUúºªÖ7~û2¤bÐå‰ì ~åõTVö^ŸSÝá¾Ók·²÷©Üga4¿ã§aãº=m]…ØrSo{o}ýüø«[ïËcûò˜úÿWß7?àž•èKQDE¤ò ¼Z °˜F1þM§Ó­•úº¬Ø·®BŸsì|üdðìÏNV®j_åoËb2ç2M çÛ«ÑUïj¸OÕ>Øc,¥Z\¼_ü[Þ7fæ£ãñsÂ~'?þÚÆãøuUû"fÁ¾Ù×Õš}³ÿ¯V˜Ä$^|ä‹[Ã|ë^ë—~é—Z™o}ë[7¶áÍ©Zßü5TìÈŠ}@ïäX¹Ï\€zm ²!ð'ÄÇÖÑy8<×€ßäò«çŽ×W+ôU+ìÿYTjöE¤(bZL¡¿(f-w_8ýç†ùr¨Ö·®jߺW¿û`Èþ†«öEäqÒ9“ ~)§i=ÝfÕºò¨Ú× Uû`‡ñ“j}Ðí¾êÀ`àô‹Ÿj$T(ÄÇÑãèŒ~Õ±àê±úºª}Õ¯ÿð?ù¾³J}eˆ/–ë÷¥T~—âgø•½C}¯¿þz+Óá®»îZ[¥ï¢0_Õúæ¯ã‹R±†/EÃá¾®eRÁ¯˜Oë¥J›Ü¸9d¸ozåÞZÃ}Pû¾êˆ YèJ–Õûª•øV¿_ÿuqV©o^¹oV¯ï¬~_1?òN1N/ öUÑåW~¥Õ¿½/¡>ò¥bŒaàßpå¾ÜŽ+TðƒÞo³TÂ}ªö14ªõÐØ8ú…Ë÷3mÿVÇ€ëŽÏ7Uîû#ÿôû‡ÓË•ûÎî«üfüýzå }Õoß¾ÝÚ¼øÎïüΣB}mŸKP± O“8V&Aº…ê'ã«'ÐÛ~óÛÒÅ€U7nNMŽ?Ýo#X¾îƒÖ–¾®|µøoñóòžòq³ŸM§ÓÅqÿt:ÝzkKê[Wµï¢i°í>ÆG°F`~B8}tðv^_S#N¯ÝÊþob¸¯®J{Úú2¨í›j}Œp?tѱø¦pßìÿÕpÜYàïgúç‹P_Ü«ýVÖf°o]˜¯éPŸ*×Ã$ØÔ¢/é:üÔ{¡r06Â}™èJAóÕcó‹Â}g)âg~ÿÖVêßê+¿n÷û·ê€*Á>‰6ªöõ)Ü×aõ>­ya÷uUÕ¾îÈp¬]sÀÚ.•é6‡û–[óêëºbß¶¯/šNm·È`P«>…Ö: ø-Zó øÁNëimmyO¯ÝÊ>à7Ôp  /ÃÝ?íúŒCÂ}ÛZó^ò«~ýo|£µó ëÎ74ê`Øû`|$Éò àû¬05ür7ÄpŸª}µ[ Ÿo ÷­ß6UïûéüÂÒcv¹ýÆoüF«ßÖ¿¥æPŸj}Ã&Ø#Òf…:•ûvùðƒ}Ö×£W’>´å"á>F½íR­ûª¥cð͇ÇëW­Þ·K˜¯Zµ/—ó *õ°/Á>¡6+_õ)¨–[ÀOÐ6oÃŽ}-yûmrùU?€ºÇÙ‡û~ê÷~!Ö…ûÊÇþô|a)¼·úóu¿ßüÍßìü¼Â¶s ÇœƒP­`øû`ÄÆÔÚrÏé’CÀ¯ZX³ýúߨ%ïņî+C‹Õ@kãìÂ}‡Žñ¶Wî»8·-Ô·ýù›sçÎþÆcÏ;õŒCRÞH)5~`Ð×cL*楡LOÈqûuýÑ{²ýû~h˜ŸÉ¬;¬6„ ›»LpûI^z9Î~ár«ã½òØûü³ï[{HüÓ?ð…×ËûßxãN¦ÝÉÉÉÖcöcç7 cûÐ'@ž.™@y·€_§M̧M§ocå{'Ü¡²ý:vÛU¶åÍ1àwãætá¾é•{k ÷M.¿:ŠÐÛXþN ƒqöš`ú±a¿‹Ž½7wk¾éx½ëÂݹs'þÑã÷®û#ǰ Á>`¡É€_J©×Uæªï=ƒ*~Eª¼ Õû°íªgÛ•kÀ¯lÉ;Ôê}ìW]eõ±‚~@kãîyد©€_QQDiÃgÙv ò¥”âÍ7ßìl:m õ•ÇÇ„ûŒýÆÅa€=e¤+æ·H)åÒ2º^7kYN¯Ýʲ’FðŠº/JÖÝÞ·/&—_íßt4îÞ¡Íü1c½b¥hýOýÞ/œ;&/o³—ofê+5`W‚}À9EQ¤º2UC Ÿm»ˆÐö[ ?XÚ~Õõ\9ü†îƒÁo“v>€}ܺÝÙ«¡¾MÇæÕcô;wît2MþÑã÷žUë[ ôÕAµ>€ñì6îÛi­½ÐÅ[™ßÀ¶«mWN†îSµ¯¾÷¬jÐú¸»…û¾ÇÚ]“ïèÓ‚€} ö[ ÷4Í: ø••ûTðö«¹¶æ á>†,½pÙD`Øãî]i­Bm¨[ë=öÞ +ô9žà‚}À…šjÍ;‚éÖÕ‡"TðƒÚƒÉ9ü†Ö’W¸Ïß=ØíV¼Øçì§~Ï.<Þ^=îžN§fƒ!ØtbL•ä2hÑ £ÕD0Y¸¯Â}õýÝ~ÀÇýwÿ£ÇÞ›ÅñƒñÀ0 ö;«;3¶6±]]hЖêøåR½O¸o»1_àtqh}Ì]cÕ¾mÕú¶sÀö{î«e®mÔäKÎo~؆5ðëšp›÷u¼½Ñ†û¿Ak«ZŸñ1Àx ö{î«}z¶öR!àµoÇriÍ;$u^¼{kZá> õ±ö‘ᾡTësœÀ±û€ƒ÷Õ>=Û¬âw.à'è‡íØqº¾h7´ª}ÚòúÛ{¾}Q­í¢j}uUêS­`Üû2Ôr‹ÞEÐF¸®Õîë2à'Üw1á>€–ÆÙ†Ü‡P­O¥>ê"ØCÕ¾µT½oé%Uïc¤ëZ­ ¼p_½„ûúéÎ+ŸäßuQµ¾ÇÀô“`p°Ü>?äéÜâ´V½±®gÂ} Þäò«‚mlO´á€V—s¢ZuºdÇ(Ã0)¥ZΦ—•â„×Në6+éiÍ‹™/ }{V×¶¬këÂ}?ÔßÏwN¯Ü[k mrùUUPØ›j}´I° GÚ÷­|¯?/cXÇj ÷U«u\ô73c÷•!I€>ÀÐiÅ Ô¢î6–lÖK·6_:¥å lÏv—CK®¾·èm"„¦--»R­€¶ öµ©3 #8–ïlžßüÃö¬¼ÕB¸ïxÂ}þv _î¼òÉ&Æê&,£ ØÔM¸¯e]ÔXü`ÈëÖ|ýîËȘÃ}Tjeßyô¡+& Ð.ÕúŽëO¯Ü«Zçö @‡aB“‘¨5Ü×uÀoᾺ/|޵zÝäò«*÷Ž{·h£/¬#ØÔªîêVÚ½î?ý»¸ÐQÎ'ó‹o×jݶEtðë{¸/"FîSµè“&Úñ¶¥éPŸJ}l#Ø0@-üŠ• yJQsÀ¯KÂ}ç5ܧràøvÙ?ù¶ÛuEn†I°èUàS^i;è§zìNå>ݪÜôÅ¡Uûºï¼ñ“o‹›?÷]fìjWw;Þ’Xm󦕗šßüÜ:4ÄÊ}PR¹hʾá¾.?ÄÐF¨O ^."Ø4Iè%Cµé…!oçjÙÖ©Úw¸1_Uµè“]Ã}]µÞ-o}Ç×4žtî S—L  åIø4+ÕVÛù”’Có¨ÅJzEz2Ìm\­Ï[^¼þè=­ÿM7nNãá‡|4bVµnìTʪ}*Éu+Ã}“÷ýhgïaúÅO»ïäÿqç¿üÓí¼~&c,¡>€¼9[ ô޶®õ)«÷µQÅOK^†¼Å@Zóö¹r_ÝGûÔ’Vàèåøí‹ŸZ°ëÒÉÿ/âOÞ¿óãs¨Ö×—1+ŒõL Ò\=Ñp8DòvÔ÷v^]Cu¹M馶ß.áæ¿\B~¿xò?ŘUµ>€üiÅ 4JKÞ^ϳFž~¾,˜ n½™/ÚµmëN¯Ýê¬%oDô¶-ïôʽµ†ÑªÏ•{p°åëõåæá¾ºÛô6ôaš–\HZ9ø˜g¹ê~^Ç4­Í»ÚŸÖtÅD€ºÇJ{†üŽ ñ]þ¥¥ïOþé§×>î˜P_ÝcªCǽ*öäOÅ> MµVí£×Êå ©¾È ìª”vU¹/¢ÿÕûêÖ‡ê}ªöAÿœÜÿäÖŸßyå“&0jÓ/~jc¸¯ÎJ|«¡¾ˆˆ;?ðØÙözCÈo¯¿%“Pý bÐÎÁGU¬O踦Íù×ÈÓ›Øæ]¬ËÊ}¥¾üš¼ÐÙåEÙ‹¶—ªöuGÅ>vqQoá>€f­ õ­Ý†ÏÃ}‡VìS­€½Æ{&І¢(Ê Bí'U&joþUæc­O_ÎGóۼ͎i÷U—²‚__ 5„vѶ²É ´ª0pœCB}åïú»l·k¨/bVÁ/—Pç/Ð-y{®VEeÙÛ¼ ºlË[ºqsÚ«Ê}Ó+÷6F›\~uë¼èziÉ y©+”W> ~ýÒD¨Ï.†OÅ> UMUî^èf^6ñ´eå>óÛ¼õTîÛ_SÕQ¶Í‹}§Qﱡ*«."ÞTÚ!Ø † Ø`Õyj¾ÂyÂ}ûëC¸¯O&—_ðƒ4êÓšÀ8ôàî¢p Ђ}@—œLªöEÌÂ}Ú53¨ue~Må¾uqQõÆÍi#ÓiŸÐsY¹oõ4Kð ןi¯Ç?òÌÕ,Þ·XŒƒ`0(ª»µ¯á€Ha¾ÂfÂ}ý™CN.*C·Tî€áì:Q ‚ÕžØë|ž6B[^†²ž ±r_ŸtÑ’·”[¸OÕ>hް@þö­Ö—ËØÓ+ÆC°È´Ö@4Ñ–2×T»Ù¦äîë¢Up\\® h^¸l"ÐI¨Oå>€æåÒ†€ñì:Ód¥ •ݺ¯ üTîcHj«Ü—KÕ>á¾þUîk¸:ŒŽpPÁ>`°„¿ºÕd¸†°~Ô½Žœ^»•EÀO¸¯Ÿmy¥jäA°`7m´áÍ”%="Øtªnqry ó·‰§ÜdPj«Ü— á¾vÂ}unëØ^ ÷1v¹„ê´å åct"Ø šðW÷´y„v×\*÷õÉôʽüTî†Gž¹zг©±ëœ èÁ> 'œdîËCÍá%IA†º ÌëÆÍéàBk‡Ø7Ü×Ôà]·Ó‚Ø5¬È/\6F(Ç yªöÐà19-ì 5u_HH)-nÐ÷uc¨•û´åÝ=ÜwÈ´Êqû§j³ëÏ¿ÔÛqå1ÏïØ û€Ü¨Ú7p5˜ŠP¹ánµÑR¹/vYæ0­TÜyå“qç•Oš,øAŠ""Š”RyöÈ}Üg9X 8«Ì^‹IÀ@ÕðË¡j_DÂ}MVWÉ¥Šâ>ûæCM.¿ªr£±kË[á<2<–v< 1Á> WÂ}×D[^ÂzQ½ Ê}¶Õ0v‡„ûÊà ` ÀñÚhà uì²Òdå>Á¯<çw]O³–BZ 1DGWîË©Rœp_ôªjß±ÛjUû€¾{䙫{=¾É ÐM ÷Ìe€< ö¹“иš«A-Z ø1”õc%ì<ˆ€_îá¾6.Æö-ÜÇžƒ—.›#qHÞc*ïÝyå“*÷ŒœNŒhìg9j²rãX„L¼M•û6»þè={=¾ó1Ë ‹ÏŒ]A<á>>Á> /jI-¨à–§†K*÷1äí¡Ê} Sµ¯Þíõäò«~P±o0o]eÀ‹ª÷ ÿ o i<0.‚}@Ö†X¥ŠÍ󺉧 Õû°MÜH¸o;á> Ê€ßê €ö ÞPëøÒ$zDÙµk2Ä©rÝ&½P –m×F¸oLÛê1]ìN/\¶°µáÐ$ú@Õ>óúا5e±žlÖu¸/çª}͇ûÖMÿëÞ3Øå×EiÆBå<€¼\þ¥½ç‘g®šptF°蛣«S©Ü–?á>hw»!Üw‘6Â}Ç̃¶÷kǶ…îc(Ž îíû»'÷?i‚´(§PŸ±À8]2 €JQCH+¥¤ Ð[åö«Î@×éµ[ƒ®w¬2Ü×Ö…ÕëÞ£Urß,/\ŽâCWLˆS• ‡T뀮©ØŒšê}ùjªjŸùÍP7gQcå¾®Âd¹Wí+5Y½¯Ëéßö¶Zå À˜ €-cA“苲íß«-À¢Š[žš¬ÚW½ÁÀÖ™Z«÷uA¸/TíèÈ#Ï\Gž¹jBйK&ÐGEQÔÈJ)5$#³yE¨úÈð¥ù²~”Ók·âú£÷´þæ7…û~ÈçTéÙŠøÂå(>tÅ„ 6'÷?©…/ÀH´ô!ÇÆ¹ŽM çj=­z[žšªÜgÊ2Ôõ¥²Îôºrß:¹Uó›^¹wqë|‡Øá>le¹Û˪ö¥.Û8±‘ëÆG* ØôVSÕõ„ûòß**Âa›µ¡ýA}iÕ K+¢p´îúó/™ô–`0µ‡V„ûF£0¿ìÂ]s徜ªöEWmk\îv¦" 0uTqn{\ätùìz­ÉÐÂ^ã›ç0pƒ ÷åXµ¯‰¶¼•À:'÷?i"\àj}󽎧3Eº¥B ìGÕ>jà¤@Æû€!qBšc÷1ìü¬rß ¶•¹Vík¢-ïN;ÂŒéªö­™?/\6 ‡´áë1ùì¡Î6“«TíëÅ|öXoŠ¢8jÖS;^†erùU•û`ªöÀp öì@¸/_M´äM)™çŒbÓvÌ/Ÿ^»•MÀ/ת}`ì£åjÏz2'Ø ÆPÛL²Û¼Æ-çp_Û-y‡LrÕ>íx Y}oÃÛÖ¸Ñq4@þûv¤‚[Þ*ÁΣŸÊÔd,ëLÔ„Ω-oî•ûZ®ÀôÌW>yÐïiÇ PGž¹:¦?× €¸dCS†UæA¼ZCZ)%ŸjÉb.t`{ÙK7nNãá‡|–5·åìpüäò«ÂÀ(]4:¦ºqQŽuzÂYNEðvð¾Ók·TîÛQÛmy~Qµ #ªÖ'ÔÐ#‚}ÀÐ¥¨ùĵ–¼#ZxR2¿…J ö¨>·€_ÎÆðº^Ù¿¼pÙD vÂ}ןiðã‘Õú,$}û™ÀPEÑØIka¯üç}OiM {®7ƒØÀå\µ¯jL¿CöËÇ\¸†¾:´jÃwäØÈ‰ €¾ÿL`$j¯Ü04uVîËA_Â}ìôÐa”Tí®c?ð Z@Ç€&0tMUîšÈ¾×õTZòb›Ù_} ÷]ôÛç TícŒŽ©Ú'ÜÀhzH°›ZOf {Fa~Ã~N¯Ýʦr_îÊðáõGïUÀoô’.›l%ܰŸëÏ¿4Ø¿Mµ>€qìFÉló§7§£nË;ªö1VÇ„ûØÍ#Ï\úŸèj=%ØŒ‘ª}#RgK^óÛÊýåT¹olmysÞ^ ^CóTíè¿ÉåWUëóxÐ$ÆÄ móýا25ÓzSEŠ~9[¸€vL¯Ü[ëóÕT±Ø'ÓzL°«ÚÂ*C6ÆÖ²ÍÌ)Üׇ€_á¾!Uíb;ÞôÂe.¤/m·ÈË%“›òÄva‡”’æ=˜ï5Íó"UžÈ|Çv³¿ÊpßÃåûÙ×j¸/—`$Ð'÷?)#[竬ÿý¥Z*öÔv¢;¥4¸ÐËÐÔÜ’·(ç;Øfî.Çpšö¼ƒØ.÷w¥RµçY õmºÑû&ã,€þìFËInóèÆéµ[Ùüúî»!¶ã…]îìq³ åxǧφ264 ê=é­‚Û¨¨ÚǸø¢ˆ¢(R ôb¡p_? 1ܧjMC¸ïúó/ô{ ÷±Uû†ëÆÍ©êÄ,ì˜‘ÄØÑЃX*÷åÏEoØ€oÞcÏÇŸÎm ˆ`0zóÖ’ZòŽn¾×ùt)¥(o0"ÚòbÕ¹B©ÚGƒNîR° ³±Lu€e>á>2M„ûTíc¤ëÊ}9ïܺ]Rµ1ºóÊ'M€<òÌÕZžgzåÞÇ-ëÆ.u…úÁ>€¹&N„ x#sTå¾\iË›ï~øôÚ-ó‡Qª#ܧr0ן)ëqä¦@\D°à¼ZÓxÂ}ùÓ’Ž_‡´å%Ãíq"ªö@£êªÖ·mì¸ËøQµ>¶ì¨pBܼ¯ëéLQƺÍ×%my÷ððC휢rÐ\ð’1ª«%¯Ê}‡[׆·Åq‰O œ`@ Tíë‡:Ã})%ó¤rŸmñ¾ËK9oÌƦ®pÐo¹yŒ÷‹9ÞM+U³ Á>€NŒ›ÿu=•©ÉÈ×£Á&[»]ô YÆó§.Úñ²+•û€1»þüK;ö óÕð!Ÿ  Á>€õœ(è˜Ê}ãulÈZõ>8œ€ {ý¦>û|Ø¢Æq­J}#"ØÐmYû£Æ %…–¼Œ|=J¡r_#®?zÊ}c;¨ÚÇŽ´äØÝ#Ï\5èÁ>€Í¤±¨ƒR Œ{¨¡-o®Uûr Ü·}Q¹1©;ܧrôƒõ´¿ã”8G02—Lú`Mµ«1eôjå°C«iÕ²ÿ´J³‰mÂt¬¼ *Èvü˜j¨ãÓk·6.e¸ïá‡|ÎƬíj}u@Åy€qq& €ì”m++·"fÁªêm oJié¶fzl»m›¶Z„v°|Ó£•°æ–¼0öM` °Êˆjpy¹èâyç—v¼ìãÎ+ŸT¹FĺÙ]>lRs¨Ï%À öЙu¾‡øštaèOàïâÅÕ$ùJ¤*½UÖ£Áüº‹©b¸ÿüê[ÀO¸}ÕîòsH¨oìÛ†6«õÕê«ñCgôˆ`­ZàëÖοÑN 'Îjݦ»]­»Y]Tîëß>Ø<ƒý¨Üy­D\þ¥n^÷‚Uä:^ ûhÄà„ùò§ªßšÅºÎõƒ®ÇL Õ0¡žíêéµ[Y^0ëŸ>UïSµ}5Ñ–è÷6aÌÚªÖ×À5ùÀ!Àx öP› a/­uûoôUýš8‰.Ü5ÚeÁ6bØÕP…ûºwÈuó!«;Ì£rtËú·¿:C}Uë«ûÔ¹0n‚}ìm‡ÊmB|ã u/G+âÈÊ}9«q°q`t¨á>Uû8”Ê}`ÀñºhÁ«ZÀ¸ ö°“=ªñ9ã8NƒùÍO¦§º×+z»,õB°0[—ê¸P©-/æìF°úOµ¾ýõ´ïQ~`8ûX­¼W¬¹­þŠÛ¨ä·çúGòzZòÚŽBes¼x¹OHìá‡Ú;M7–}O®žªöq„:Ã}ZòÂøÖûœ\þ¥ SW¨ïú£÷l­Ö×T¥>Õúì¹Ê…Ým!ù8Ô—I<€:w5VîË‘ põ,#æÙÊ`D¸#Ôò)~B~Ð ëØaÚªÔ×ÄnÞÜ $Ø0"ë*ó…°í)V—ÃÞý  Tí÷z¡¢%,oùå¡VhÃ2±veîãMUð<‚¼Ö©±Vëk³ýnSÕú B°`V#‚|ti(-z%°¨ób‹í2Ô¸NåäRµ/«m.0'ÜyêëÞE-xk–¹V‰NŠ x°·–2ð#ÛEuõŽÜSæëV­oÒ±Ù ¶³ŽÑ!£±K‹awöðCÆöÐà¾Æ>noŽÙæ²<ì2¿rP|èŠGk*Œ'XÝ­“ªõù:[Æ }Äñ ç¨Ø00+дÚÙ…ë>ÜÆ<‹zºœ¦º×]ú¹}©óé,X§ •ûÈj~õažiÉKÎNîR?è`k¨¶­¼uïÊC¥>6 }ú çºó!¼wõ³ƒR楪}4´Î%Ë,­Wƒ«Ú±½œŠ}ÍmoYúP½Oå>êÐtO?Ú¶©ºÛéôº7Æj}u‡úÖšøàHQB}l¤b@OUªòEŒ¼2Ÿêwƒ›}Z–€§±å_õ>ƾ/«CŽUû"úS Žåy–ý Då>jpç•O ß1ןik¬üùEm]ÉkžnÒF¨¯ñnêà"*öôið¶òý@ÎX¶öe*Ë·˜óêÒdõ>áAšvH`¯‹*~M¬gc«Ö§RCæ"@®µÍ-G7€3fí|™Ëâíå¸\ÔÕ*Ò2oýÙ²,¸Øƒõkàmy#–ƒbmûúº¿©{{{èr!ÜǘøÑ7ÇTák+Üg½ªgž¶U©¯æ`_rÜÀ΃GG€Lj †rflšý²˜Í[Êiyî£áu%Y. ¾ ©}÷ öµ¿½5B* ùQÛv½¦öºM†üTê;~~Öê[7&h RŸë²ìebt/¥tî6EQ,n˜G»¾¥§4´¡õ:,†LÇ>AmÔêrh ïùħ·1;t¹èbžíµÂ¼pÙVƒÚ´:¹ÿÉV„°«ëÏ¿T[H°éå|lÁØ6B} Œc…úØ i ÐÑ@ld­v;Gµ ·örZ¾êª&e±~8†‡æ·³9Wî;Æ!µ§¯¾¸øúÙ?6Úmì±ËDÎÕûTî£NmïTðãàmzÍa¼sûÛ+ùi¿[ß¼l:ØW÷‡AŠ¢HÖLá¢@Û°õ"…ùârÝÊKç²ÜÕì³Y'ÃÃÆõJ¸oƒcƒ}Â}ÇÈ5Ü'ØGݺ¬ª'ìÇNÛó†ƒ}‹ýî?m¬ëŸ—M†úªîì8ƒI€¬]#ªÎg|iYïòå»^Uí£…õ!Y>°^Õ·Z¸O°¯ûåB¸1É¥m®°k·å-…ûÖi"x6Æu`u69]ûÈ•Á$@“ƒ­‘Tç3¦d‡å¾µ—ïr¹죅õA°ëTã)UûfúØŽ·éqÇÐÂ}‚}4)‡€Ÿpç¶ã-ûÚñe¹o«R_åøª©ƒ«Î?€@¿]2 ZÕë3yND²ïrÒAȯˆ5íyÛüÛÓì®ee)§Ÿu\–qÈeS×¶¶ Á 1à7¦e¢ãœsãæ4»p_zá²p)ÃE]ü.zmÁ¿ñ)ÛäîZõí3j§ÇѬMÌçG“ÛB}?¨4 hh µ|±Wƒ.cDZX'¹®–麫öY'-û›–oËÖ«úÇXCø­b_ScŒº–…Ü~Â}´%—6½ëùÏõç_TPo,­wK=œwŽ×¨opi` Pó«'>ã@2YG¹.–÷”Ra¥áå^K^ˆfÂÔc ÷Uƒ}ý ÷5±½îƒzù‘ƒ!„ûÆÖz7¢Ÿ¡>Çg`ä<Àjàs]ŒýÈl=ìqOSÛë°å¾út– ¬SÍTí[§Oa¿c+öEö51ï…û»œÃ}%!¿qèkÀoèËç®-“s†8> öA¦&@ͬ̂}Æ{ô`}iå¥Ú\'ûhiywáëÔ|óØÆëõ%Üwlµ¾Á¾¦æ½pœQÅË ep±Ÿ­„úú`e°i  PÓÀªå‹Ë›ßÑãu§ñ—j{Ñ’—†—w°µ8îj°/Bž6çNá>Á>rЇJ~UB–CËVÍû×~‡úÐü Ó€ ¦U‡•úŒéØz4˜c Á>ZXÆ×3æu¨õ…¿á¾:‚}ý ÷5=–ZÀO¸\ô-àWô³Z†ŽÜ¯Îƒ}= õ ôÐÞàÓÀ`ÏTÇ”/lÇ8Ö±&ÖÔâß"ØGÓ˸ãzƸþt¾Ðçð{°¯±D]Ë‚pœ§‚C\-'ö¡= õ9þ M—L€ÝåÐn× D†®(ŠF/ÈWŸ»ëSJÉv€µË´å‚±ì&rx§×neî»þè=…û8|Y(§û¾nÜœfÕšrpQª¯•ýÖrXm»vßðÄMÄ‹Æ+LÃ\½Ì9Ú&ذ¿Ö/( k0º•¬Ùp_¹B¥þŽÔDÕ>á>Ë÷Êòì£Ðf¶]è‚’pìGð,Æ‚{µéIµ>­w茳F*Šbéc_šz‰”Rõå­æ¿C芵ËwO,¿Ûª“ã›ju¼|âÓ¶±--7nN­ÝP“;¯|réä§'-xSÌÚî&çæè’`À~šK òÁÖõ£¥õ»7+ —åÆ$÷mÞéµ[‹ãuÌ2Ðe¸/½pÙÌ ™‡úRœú¯­x:æD!ì¾®´ì(Rå…êXG›jÉ‹åºúT¡%/Ôdz½œ^»uÐüï²-ozárºbæ18›ªöiÙ íË8Ô§Õ.ÙJª{ žjæ‹ÁÁëbšöÙ†X¦WŸÆrÁ€×Þ.Ø]ü©÷ôÕÏÝ÷ì‡3Vè`Þwîì ±}bž¡>ÇOdO+^€i¥ ‡iñÄ{‘RŠòfBî«F¹\äºÌÂEÛ´•[Ù"ýèþõGïQAïùħŽÐ·¶¼ZòЄ C}eË]¡>²§/@ÇRJN$ÂÚlÍ[®®¦:=Xžµäe«D]O”C˜o]¸KÈppc… çÿ¾ó¼«¶¼e¸Oõ>j‹eÚ~×y8úBÅ>€ý4rePU%8LŸNÆEaûAk‹›I€åw½\*÷^»up57hå Gõ>Žwe\©ú"ùT Àƒ§Y€¦Ñ”ñ¼n¶òRǬ«ó¶’¶´±,k-E—ùÎ*õu²k"l¸ïßôôÕ×Þÿ쇳]íh>wQ±ïÜCå>trÿ“Ù ;ÐW*öì¡(вêVcWUß‚ƒ×ÍV^*TC£'«…} =[^;ݶv]Å/çê}ùħ-¡¹qszî}Q¨oq¾@¨€>ì8\£á>a È|`=¥.6ÁxuÝž÷¹§·]í¶ƒ~Zò°¯Ì*õ9h ×ûPù¤o£'…†ààu³ñ— ÕûèÁ*a£2=çXN{@Õ¾| ÷“LB})"’*} `ÀÚ ÷ øÁAëf+v]?ç³2“Õò ].êÑP¨ïжºü^#Ûô®+÷±Þôʽ1½ro–ï­ê}Â}ô€@ƒ#Øp¤ù Cí= Ïu3«÷–Æj UúЧ¯¾O_}±‘'îËk›:¹üjDð;4pº¦Ûô ÷°ÉÉýOvY­O €Áì¨Wc?•ûà0åÉýOò)¥bõ3Ù>ÐêŽÉ²AF›äh0ÔwýÑ{Z Oµé˜ê}C›¹™^¹w”ÓX¸€U·ßè`Ðûj²r"±Ñ€PÛºZëS—¿•ÊTë^ÛŠLk‹¼I»;4¨Õd很³€Ÿ*~ÇíÿëöðC“EÀoÓ²Óeà´©ö¼Â}”º®Òg0t—L€z• › à•ÏíÉpܺÚÐzZ®˜­_dH)Ù.ÙXÙÆ6ºqê*8õÜS/úʯŸ{êq À÷ý“˯®mÃûðC³ÏNOº·±0]vë÷ —£øÐ ÀHuè[ì×`èûš•¢Á ÙB}õÅÆÂ}Õª}mþýùħãÙ?f‰¾@òÛdHÁ?á>€qê(Ô'ÐÀ(iŠжN4®k÷ ìîÙ?ÖdûÄbÓö¡©–¼¶lX]ý¢ÕqÉ|[4ŠP_—Õù´æmŒ>¹üêQ¿Qð¯wë¼¶¼£qrÿ“]„ú-w+ÇÑ0*ö4h^m©LÙ8û#Ý„Ê}·1!È^›mw#ò­ÔWÕV[ÞÓk·j›«­…W©ÚW‡šô¦rŸŠ|D´_¥¯( A‚}+C<óT¶¼¡YH¡ÑF Tç³=Ï~¤¦p_‘RJ– š^d›zâœÃ|ÛqM¶å¥›íêäò«1½rïQï!×–½‚|¬ê¨õ.Nè´9øj¡-]DôÀ>ò‰OGD£Õ•Ru=m²Â•íÀ ÷Îûò9ˆÖ»‡¶·Ý¥­{Ó¿ÕitÈß²Ëß1„ª}ulW ÷í☀߮m…ùXG•>螊}ík¼í¦j]pœj¨¡æÆRå¾êzZwUOÛaÑ’òwQÛ6ÔÑ–7‡¿£/ÛÕÉåW#¢Ù€ßºpÞ¶°Ÿ0Çj1ÐçCGpÁ>€­´å]ÜÝÄkU_‰RÈkSPÝ ¬¬ŸÂ}l݇Ôî+ʅϲAÛ¶Æä܆we`®ÉÊ}ÕpßõGï9¸¡íj¾v ï­ý›{蛼ïG_O¿ø) 1@ú ?“ }EQ,nQ©ÞÕ””’JOp †ªë¶ M­ÿpÑòœi#DØtE¼¦Ã|eëú¡ŒËUVîËþoíq¨oò¾] õUï[÷3²%Ô{ì˜{öí½ÿé«/6Â(bV=m5|+‰ôBeÛÕØÕÙëÞ3˜j}-í[Z#Ü׳¿±§¡¾}B{B~‡k©ZŸPDôpPÖðEñUÆ€°ÝEa…†Z(®ú ë=[öµ-s– Ž\Ù‚÷˜Šw‡„õªÁò:+­–Óoß¿g׿aS ~ŒÛÖé•{³û›úÞv7"Ž éÒªwÛëM¿ø)­€Á耼]2 ºWE¤ÙÕÄVÎt¦”9àO_}±‰p_ó M´ÏµÞnŸQÛ2gŠ’«¾Vê{î©Ç{]‰Ï¶õ0“˯fîëK¨o] äÎ+ŸœMÓ#+ïíòû«a½}žOÈè»B}Ž5àHZñä%EK'>WZ»T j*´¡%/í eyìPDÃ-xǤZ)¶(ŠÅíX‡Vl¨2möŽæ“˯vÿ7|èJ/B}'÷?¹1PÒRõ¨Ù<«©moµ °VÀ@´µ­­kLc%؉•‹¸­ü€ó: ÷Ñ`XÆú>¬}F]Oe¹àÀmUcÆê+]ÔþPÇ´¦G+eO}»:¹ÿÉE˜xÛ-WB~@ÎÛ×–*õ9È€ödh%à×8Õû`½.+÷•«gë;@ŽÛŽëÞ3ÚPß¶1!ýšæmWíZ oˆÇ1~@Ú ôE‘ê¬> c'ØÀ‚Àœ÷쇻0à×·pÃàBC2´@_­l]ïßöµpߨ}ëŽcúðòÚ¤BôÛ%“ {)ny·ôbó b. òg?üØÖ6‰O_}±Ö ÇÊz_ëv ¥dgiYK)%ËÛÆ¶MµP¥oǵ(Z .=÷ÔãM×Ùwä̧î›~ñSfP‹|k7½å8h`Àm° ù€íìnë7cE8o[¸/"ê÷-6uo¬ßƒÜO8?@ÓËרB}§×nýûãvißf¸o—÷¿Ë{ë¶uzåÞÃ÷Óñ5>Â>MàÈmÛêÚ§/iÍ çuÔ–·˜ß¬”@kc€1‡úºrQxœötTCe¾;¯|²ímXïhÝ ì¢lµÛQµ> a‚}ý‘¢ƒPpœ×Q¸/¢æv¼ CMá“Â2A›„ú:_çk#Œ¸Ùäò«ûÍÛ]U»Ý¦Ã}åx§zëí²$ä¬È ̧Z´qNÀ$È[QK·è(Ü7„ªP§Ã}­E¢æj}} õ RG`a—pߨ}Um„ûÖ×ô™'‡ ­ó&@/uvU¸Îìîk0àwtOëóp¨–A_öõÂrŒqûº-Ü7Ö@_Û¹!Œƒ„ü`œ:¬Ô—b^©Ïñ´47øèÙîìT§9ãH˜Ù§ásO=ÞÈfáØíõypû‡c–%Ëå²4Ê*}«N¯Ý:ê÷ w_¯i¯õoØå=xûÓ+÷žßÿ õ­ÕU`ehû¿é?µø›~ñS.èmAÝÉŽ #—L€Þ::ÌsÔ‹§ä¤.Ä,ȰO¸¯VDf BQ{±¯mµ .¸`<æ*}Ï=õ¸Ö춯1«ÚW†ûú¶+Ûó¶ðÛ4ûz̳Úøƒ<ÖѶÇg»¾tŸ·ƒ0*öômwþ„®Ê}}Ã} Uï³.ÛGý–ËPc‹¾‡úŽ­ØqXÕ¾}ªß5}±Ÿ÷¯jßŦWîìÛS‡-'•V—_!@8ZO}Ž *öôLõÄêü$oç•ûVߌQ•ûŽ^—­ÇÃØGt|oê4æ*}À°·“c/m $iý û­3mŽËy æäA°`Ê“®ZóB‡úîcŽ ÷)%Õ9F¼ø˜Ë®?zO-Uûš^ç˱Ùn[9BW­y·÷T×=fvmý»J¡¯ »nS2¡õ.dF°`X:¯Þç0c·k¸¯ÚÚ0—¶¼Öaéà¡Æ Ê*õÁv“˯Æ™‡(~ן)yæjVÛNc¨׉BPÂôq¹msüUÇ&Í\€L?L€þ*Šbé–•L`îÛG5ägÚZ×Ë[Ì> ‘2€qaö Ÿ½jm]Ó8—Ês4·]­l_©Áä}?ºö]-;æJ9ž[*v2¸[>9Üù@ÏX“±;$àCõ>ëî ÷ {ÿºå`ËDm3yè•úŽiÇ{hx{ßx ë}mÃ!ï}DÛ×…j:Øî<ÿRDDç•ûŒ¯ò¦Ú‡h"8šiØWë]ÈœV¼R=›fg;=;«­'ì¯ Otð³îEJI¸z:T)¬ùélçã3*"òø]´ÌØç6£ÉÊ~ÕÐ`õu„ -=Ø ô@Oö4äÙ?6ø¶„@þš¬Ô1üj}Õ¿ñ˜Ê}°êäþ'Uí;Âé\Tí‹èOÀï¢mµ Ml …íln>L¿ø©ÎÚ5÷!Ðôè˜Ç$´Ÿ¸UÍ„±;´á¡­¡TC0 ° æ¢aXÿÉgŸÜÿ¤‰y„Ó'>xî¾Ï|ü©Eȯ—p)-Ý®Éû~tíý¦ß¦ŸuµÞæºi)Š"EÕЃc“`˜VNÖº":&Ü×UÀÏ…d, ƒœµWêCµ¾Õ¿yŒºlYîÚv|ÝáøÛm+ïööÂù è5­xÆ£<™ëcÙÐcÚò>}õE¡ ºRDDJ)©ê1ŒyI|äŸ>8qVQN(Zòoµ-ï(î6¬Ûö×ÃU ³­¶ñBðï¢ÖĹý}i¹k›ý&Ø0>)Z¾¸/3Ç„ûàEQÔqѱ•>ú¹Ã?›÷µWêjÛÆF„plû7.·ôß+øõéoÊ=Ôg=€+™£Ôz;-£`æØ¶¼m¶æµÎRQØŽCOWÞš.îïS9vL!ö:Ã'÷?i=±-yËöâÕÛ íÏáàõ&óõGÛ] Á>€(Šbí-:8éë"ÄQ­á}@]OejöGÕú†tÛv¯!%Èf=Éù-–·•s=À@öÐ:à¸p_Û•û ¢°ýß>V o+® ýOߺœÜÿ¤Ê}G8¶jßX·ƒ«ÕȽñTóo-„ù`TûЮ:¢rm©ùbŸ+‡=šõÇ>@UÏ=õø^-y9œpßñ>óñ§jÎ1´ê=êÀR,¿9¾½X ò óÀ8öŒ˜¶¼Ð=á>úÈ…ù^Ì“£®ö ­Ô'§ \›A€|âÓ£W“‡C«ö^»uð¶Ràï°}–Ê€ä´,æøöbæK‚|0^‚}Tµ^½ÏÅ8<Ü×FK^ëçp4PµÏÕÅŒg·I½ßΪÚWƒ&ªöíBÀ¯cH¡?Ž]fr|«!ÌTöª÷A×Tî£l»ó˜uVê‹Ð~w,ã¾cìZ…plUûš Üw˜jÕ¾}Â}‡Tí»h{ºO%?Ûßúö‹ªÿ™ç=šÏÂ|ÀF—L6(Ï~·vV¹<áîD6ì§Zµ/§–ä§(Šº/nÑAœ­óã`%»O§ºÃ?ØÎ2žíǾ±½iç´ºÓÏy×Ç?Á\."ØÀ9Õ‹iv¶¼Õ«)%T¥g?ü˜êF´²¯óB¨Pv7ÖÌC3€ƒÆ{Bhùog˪}w^ù¤‰»‡Ó'>ן©÷Ǧ0 À_;û×mã›é?µñg“÷ý¨‰Yï8gp¢±3àà€ãŒ5·÷Û—ñ*ctl¸¯‰ª}ÖÅAoÛëZF¤ƒz¼V­o?ûjª•U÷ÑF›öC·ûüMcm7ßT0EÀom[%Ø÷È3Wm#â‡zk¤ËÿÜÂqä:¸­Mö®ëèÃÂâO"ÇWÀ>Tì`«®«÷Ð̶½î ¯ª­¶C¥>àäþ'…ûTw‡ðê«g<æçgž<èõ»o î>ér˜@ÿLLr–Rrñ€Ñke#z¯°½nš×ñ$ªõ|!:0`ÐDuXÓvw»‡(}æãOÅg>þÔèþîÓk·–n 繎۾ÏÇþ³+æ³ÊÀ>ûØWŠÊ§Í[{Q™cÂ}O_}ñà¶ŒGSm¯›ÛÖÝ~7B¨/wǶf'mmSÛÛ“ûŸð»Àéïß.ȇq[g“5fa¾$ÌK°€C¥h9äç¢@öŠÐ¶ö}_íw¯?zP_‹ž{êñAV¸Sµ/~TýðCo胆l!Ì4à’IÀ®Öœn;l—Rr’œÑxöéÖDãÛu¡é~Ͳ:žD ¶·ùħGßf¾ííÉýOÆW>i¾Àg>þT<òÌÕÁý]‹0ßµîß˺ÊÑ‚À P*·ïMì )Z¬Ð$Üǘî«^Tu1•Vw ¶ÓµMÇ ¡>zM¸¯½p_IÈoør¬Ì·.Ô·íþmŒ_ÉmhfmÓŠ€º´z’[…)Æ¤Ž Ä!S‡¦x¶ÓõΦ:žD¨.¶tG‹Þa:½vkqËÉÓW_¬}¼iüJǪíu-vWoMR±€£TOd§YŠCå>h€¶¼ôm÷PnªMŠÃöok¦åQ„úØg\'˜Ûì4n{ú޽EïéŒëÏ¿Ôï¿¡G•ùÚ|ýhj(f¹P±€º©Ü 9¶rŸª'l"$=lB}äB@ýl›ÛövWå¾eŸùøS½xŸ9Væ3¦¤çRõV©Æ·±2@—Tì  *÷ACTîƒï<χÕÞ¹ õåå¹§ïE ¦‹ªr4¯îs¿¾è»x{Zç¾1ÇéM­û5;5 —û¨ÍJû6á>ÈÐÓW_Ô¶ŒÛðºƒ<¶ÍÇÍ’cŸ@¨Æ·Ýe½uíx?óñ§â‘g®æõ>…ùvRw¨ï}¦ `6ÛQQ`Ðû¨]å"¥p4àØª}Â}´¹Kˆ–[´÷‘J}0îqó†í@£NîRÕ¾ØÜ’÷;ÒxóŸüƒVÞC®±Ü}¹]wÝÏ îµ=4fX‘\ø ‘æòÅÉVƸŒÅ±-y÷¹@j½íö»–§´ü´»ÏêkÇ¡a}Ã2Ï~ø±¬·‡„ºú›F¸ýÝÉX~«û¶ùŽtgéû&B~}ÍŒYû²|ø¡ÉN›\~uðë¦@Àf*öЈ5my#Zøõ¬ÇŒo¾×.Qµo ÓX¨ï?4‰7§­½ÞõGïi<˜ÓeN›ØñLsÕûÎû­âdñõjÈï9WoË1Ð×Äv;—ýÕ®¦WîÝ<–xÿÝg_Ÿ~¾ÃÇûì Q+([iÍ[¾ž‹ ]-ya‡mw-ÛeÛä퓼Ž'Q©¯ž{êqÛ_¶n«ãÙ¶œÜÿäâk!¿z©Ìwü6“¶×Ø>Ë$øWݶ\L°€ÆuuÆ ¬ætl[^X·í¶Ýn~2×õDcõíSýˆýÇpUö7ÃW†ü†ð;}âƒ{µã­å53 õ gU¼|{©jßÖÇ^ ‡p_u§b °Á>ÚÖJÕ¾•û²Úø«Úס>¡>†gu{©Eo¿äèëk˜¯Îj}9ì+›Ø_/ßžm#vøeî[¼TÙ°#¬çÌ']ðé|¨YY¹êTãEVWkË`Je@Gû]F»¿Qõï°íqÁ—“ûŸ\jÓËÅr õ=}õÅÅî5B/^¾½ùm}Üõ·6m– €íûhMW$+! :4æmqû"¡>Õú -Â};½v+‹P_WÇ\uJµ¾‡š´º¯Ú%Ü—ÛiÇì›9û @Wœµ‡Œ©HIÕ¾f&ë±O Ô'Ô×÷}„ª}‡o“» m©Þw^æË¥J_uÙxöÃõv<7¤P_'ËÁŽá¾+÷•?A?€ùqÒ>½@Ï¡Ë'è[ÿ2tu%„úØaÛ}ðÓŒi[¼aš õÕ`SXâÆÍi«ïã˜0Ï.í1s߻ϱ¿é|›|°;¯|²—Óíúó/íý;ß‘îÄ›ÿäÔ¶îw}¬ÓÕXq××ê«q;ñþ»÷{üéç³Ø¼9~8sÉ$ måÉyŸÀß. Æ]±U¨¯9Uê»þè=Ù|úà#Ÿø´p_OÇÓeå¾¾ü•óú¾kª\çö øõq=µ¿œUîÛ'ÜWVïë8àW.ÈN„Š}t9=»Ùú Ô8˜!;¦‹€;n·zš±l‡ëÞÏ )Ì\ìëKÕ¾!Tì;vŸc¿“Ýö¹VM„þêlü™?µÓãyæjÖó¾ûÓ¶«õu½¿Ì)€¾oÕ¾ÅïeV½Ïñ;0V*öƒ„ûèÄ(ªö õ5#·Pd³aͰ"v!¼&”½jÀ/÷ßêüîƒ:Zÿöi™S¨/bÿª}‹ß»þ@á>Õû€Ñ›˜t¥(ŠÅ-Z>Y¯ 0ÀaÛmÛá½þ6¡õí–È-P1ÇVÜk;ô3–ñ5»{䙫‹[ާ®j}¹ï§:Yv^¾ÅË·÷ÿ½ë,Úóæ0¶*ocâl'9q–:¤"-l꤉PŸj}yöÌŸã ÷5°‘ðÔ|ìë¼´ng¶<õ7àWTn£"Ø@nZ ÷ùÄ?Ì<ûáÇ„ú ¦ýÊœPß‘~h²tËÝõGïuÀ¯Ž}ˆP3†^åÍ<Ë×>ë´j}-/cGürxûª÷crÉ$ Õ Wéì ½+p€g?üØNS…ù8t{]Ó…Ô"R©uezõéØpÄÃMâÆÍ©•èå±ýÚoö¹|îKï¿{÷ß™‡ûÒéç;}ëåÌR Š}ŒžOú3D…ö„ú ‘}ˆPß‘ê Hô9hQÕ§*vªöåOå>óĶ‹µËáü2©Þ§r0x*ö³Ö*÷¥”\èdp„÷hJUûú½“Òz·VC ãqœ|âÓö_-lÃW¶aPë:¼«¾·àÚ~kß ~ÅõTîh˜3¦d§«Ê.n°ëþB¨¯^B}à ×Ï1··Ð…¾‡ú½mØ£‚_qýª÷åØÌ1=04Κ­ÊEFgçòÝFÊJ ¯–‰pýÑ{„úzô¼l'Üg›ÎxíZ­¯‰Pߘ÷£møuò«m\g8è‹-ü|Â`wc ‚4±{Aøn˜„ûú»MðãP]†úì¿Þ6ìð‹ˆ®+ø©Þ г§dmM‹°VÂ}.°ºo(wMQc¥¾1ê6á¾þ¿i~:Å®¡¾&Œ½êm«ËlZô–c5!? ÷œA 7*• 5*õÕO¨o„û†1öòc›}B}uWëèëhÛ°gõ¾ŽÛôjÑ ôš³¨ô•¶¼QàÃ…ášõ±0 mý¦åP¦g—¡>:^Ž÷÷åò–UïúÈ™TúL[^zµ{Ë@¡¾ñÔŽ1Vï«V-¬ë6]Wêër_j_6_?÷uØž7B‹^ ‡Ð;+Æœ‰è©”R‘éûª^èU©¯?4é$!|ÍŽÅûXS¯ncn¿k¿²²½|{ï€_Çá>ã; W…0*÷thÀá‡Úþ°1Wê‚XoL•ìTíϾàÐ@\•ñ„öš¡ý.k×áþµæ]¼uÕû€œ9³ {p² öíj‘Ñ{Y­ÔW‹1úrõõ=X¸Oˆ&g»„û‡c×íÑ>ûÒ1·²ïÅz¿G¸¯¸þ@.•ûÊ1Ÿ %Á>z­‹–¼Â}âõnýTécg?üØÆðžPßðÇëªæKÕúr ôÙ·í°¾÷³-ïâí¨Þäæ’IÀ€¤h)Œ‘Rr1 ¢(Šƒ/‚¦”Š¢(r¸‚jÃ^Á."ÄýÓUµ>¡¾Ž _¾éýwïþøy¸/~>‹·_OÍI ŽF•û8„P_ ¨³Z=TíY¹€õœm`VZz ÷°×n¤©'Î¥ÒyR¹èƒ]«õ=÷ÔãZðr6¸: -oF­y}àÈ‚V¼ •¶¼lÝv7iŒ>Á€áт׾­mÕp_—íy˱¢c} KŽJ *÷ôR*²Ô"÷àƒ`Àþö õ©ÔÇÚÖ‘-y;®àgŒtNÅ>§üD}š¥íZ;¯r`û[dtV©¯~‚óK¨¯Î0_ŽûÑ7§öquŒ_¾éýwþû×è²r_‘*ƒGÇû@Ûû:á>€>l¬S*Š¢h3XëÆzŒ¾¡>€!ê"Ô—ë~ôÆÍ©}^ƒ®ž‡ûÊáª9 ´Í‘(cÐê ø”’Ö¼¹í–·ÍB}5pž®*õõA5äGû:nË1«Þçxh•3° VQ‹[tðéz'û±n{s²æâkmoðú£÷õ0*Co¿{á¾#ƈ/ß>þ92÷E‹´â`LZmË¡5/@FTé«I_C}?4ÈØ`—J}Ì”û!÷Žtݶå]¼T-í˜hˆ`c#Ü0” ú–íkSUú"„ú0>Æg¬íw·ðÛ_Yµ/½ÿîãžg^¹¯ã€_¹WªhŒ`cÔI¸/Â'ùÚÜæÎÙðÀÛªõ5èRHþÆÍ©p_Gr ø©Þ4E°€Q¨ž\ŸŸso=ÜW¾¶ý·‘EQ;W=)ŠbÛvµöí˜+õE £"‘v¼gºô •ê}{Ÿ¿|ûèª}KÏ×}{^Õû€Föµ*wm½Öº»ë~¡>A…&¤”âé«/š@çÚ ò yŸ*à·Çnxá>€Ú ö0fUí‹Ð¢`Ã6r¯ª}›¶±ÔC0`xª•úÚ®Ì7– ¼ö¼ÝÈ 5¯¶¼@­ûòäz—-yË×w¢ ÞíjÝÛô1WêH&mvÛ!ܷñyÍUûÏÛmõ>my€Ú8ª€O¸§”T—©éàr¹ý¬ÜŠè(¨=D‚‡{Ëf óƒž=®?zÏ(·‘7nNíyÙ0f|ùv3Ï;¯ÞÐg*öÀLg•û"TïXÙ&nlÇ»HhléRÙ§vúúÏ3e¸Ï>v½&+÷EtÖšwÑ–×±>p(G‘ŒVQ‹Û\ Õûjñ‘O|ºñÍxSO<ÖÂÃMF8ª†®ZÑ–¼¨à·e`×På¾®ÿ¬r8„3™çB~žuwÒè»&B}+…FB}cm1®°›@04«íés¡ZŸ}ÑÞÇåÚò,ÑŠÖë´5/@_5ê«h,Ô7V*Øôô€%ó^»5ú}ì6Úó¶«Ã¶¼Ålu]^_µçváˆ6Ó– »íຫB}5&èÍ~1ÛÊ|)~¬§=ïÊ`¯á–¼Uï+€8{ ÛiË °£Õj}O_}±Îí ‹¡Œï`d ø9½vKÀï~gîØ›V¼°¢l‰S¹€Öi[Þò}hÕ䬡¼6| R­/Ï=õx-!X`x†ø!Ÿmá>-{gnÜœÚG·qÜßMkÞ":þð Ð/‚}°›NÃ}³ {Â}@޶…úž¾úb<÷ÔãÙ½gíwÈúàc„•»«¡¿±‡üÊÊ}cÞg/ߎôþ»›ëtîó>`ÎäÀEQ,n¹ÐšÈÍ.•úr«F¦"¹JëÝciÝ;3öÖ¼M·ä]¼ÎõÎÝš~Éèøƒƒ@?öÀî²¸Âæb‹&Úï6mì¡>Õú2=Ð0Ægá¾Û¼îôʽ> sÎæÀ*•ûRdðèʾ¡¾®«ö]ôžÑ·ßêkoY0®¯‡ª}37nNGðë"Ü×Fàˆ(ÊP¯í°Ž3ºp˜l~mëc¥>à0凜Vo´O¸¯å×l¾%o„¶¼À‚}Ðc>Õ°YY¥Oû]§r÷ÜS›`<ߨMá¼]näE¸¯]-¶äU½8Ç™]ØÃš \θ£rLµ¾®ÛñŽö»yk"¼#œ7Â}-®§í´ä]üy¡zPáì.O¸…¾´àU¥O•>€ì P‘K`°[c÷µ¾¬_ ÍÊ} ÎòÀr©~¡UÀŒ@ߌP@žšl³ÙÕ±‰p_·Æîë¢%oD»my-Ý@„`Ô%Unݼá> A}©Ö90š”[«ÝMíµn‡p_KÇÛï¿»Õ¶¼Žï€Á>8ZN­Tïš{¨O¥¾3ªõäg¬cô:þnû÷Ý÷µøšÚò-r¶ê×i徟îê£R_õugú½¿ûÜm_Ï=õ¸ l5Æ x§×n™ñ;ºqs:Ê€_á¾6+÷ãæŒ/Ôh¥z_çá>?à}õ©ä3#Ô—Áàž÷-ÝÊ1ùÿæ:ÿîÓk·üö0Æ€_W•ûš~ Çó€³¾Ð,Õû€^j"ÔWgE2íwÏõuëê|9¬@Æá}©Ô×ô‹Ê€Ÿ ßnÆÚž·M-„û|`FΙ_hÈÊ8á>`´ž{êñÚC}Ìõu« õ©Ð´p<Á ¿‹)Ü×EÕ¾ˆÆÃ}60rÎþÀH÷}§Jß2¡¾n]êûÌÇŸ2‘`ÄŽ­´Ù§@ŸŠbyîkáu[÷YÇ`œ.™КòL|gWéRJª~[ÕÙòS•¾æõuK¥> ©}©±úþN¯Ý2N¸À›ÓÑŒÊp_zÿ݃ú³¢ã.@7û aÕ‹s9|Ê^¸èëg„ù2Û¿7ê{î©Çãé«/š¸Ðcuäs—S±M-y!ÎŒ)Ü1 øµî+®?éôó4 V‚}оVí‹îÖ«+Œ R_½úòóíï½/~Ën¸`úôÕwÞ'ö­õn_TÆã ÷E´W½¯áp_‘æ+Ÿcyg† _ ëÓ9 ?„úê%Ô—ŸK?ø#&°ð‘O|zk0~—*œ# 餶‰6UõcøÊ€_+¯uýFŸÞÜ€‘<ûdt4? Öe1(wlS±¯Î@_„PŸ@_snÜœü»e¨ï·Š“ç‘g®îý:›‚@Ï~ø13°Ïìóz]㇃RQåóµ~ 2æqƘÇm¶æˆ¦ª÷¹®#¢/t¯óÖ¼ÚóÂØP¨;Ð!Ô'Ô—Ÿj•¾}B}€}æ&#ê¦އN¯Ýíxclíx«Š—o·îk¨5o‘Rì€Ç6EQ”!¿½~¯N«A¿!+~c·ôkìuæÕûêx*Çí0’csÕ8 ³Aúò úÎìŽ`v ,4èÓþNµ¾¶íbh¢ýî¾Uûž¾úâ¹ûú\ñ †¾Ÿ\§ïëlMÁ¡£®ATÞC''c§‹Ì—·–ZôÖT¹Ïõ=­x 3Õ“óÚòC%Ð7ãBz^¦ßû»ãÛß{_DÔê蓺}uuu\TVï3n¡Öc~my€ ö@þ: ÷ÃÖuµ¾±êënºo«Ú×T ïçŸ{,þOÚ €SUséø¥Ö •íy»ªn>ô€ß›Sã’–Õî+RJªöÀÀ9R€~H¼hJ¦< Ô.¡¾çžz¼‘Pߨ«Þ<üÐÄÅó æÁªK?ø#‹j}Mø—SÕž v ë=ûáÇêK)Õ6þo*lTEõ¹SÛÇIeÀa*^¾Ýîë]ÀD¶r2V^¸*+TDG?€ºheGŽ.ýàD„ö»Àz›B{C ôÕ¬•ã•.~C ÷m«fKƒËò‘á¾:¹@~´â€þiµ5oJ)´÷aÙV­¯É¶»B}ÚïæH¨ØÅÐ|uƒÚ(Á>è‘5ÞŠ¶__¸ú©«J}}}9*>tÅDWÔð4‘ÕñA¿¾}nÜœ¿ôtxÂ}08‚}ÐO]=îƒah²JŸj53.ŠgºíI¨ï¹§§¯¾h†ŒçkÙžf|LÐeÀoá>ÎÚñ¦÷ßÝÎë] Òéç«Kœa€Œ¥”–n1»Uäð¾€þèªZߘ õåI¥>ÀñEmãø^EQ :¥¶Þ÷éµ[‹ö¼}tãæÔÊû ²ûؽjÐëB}MUëSfF¨/Ó©P0rcþpNWüÊpŸ1R——o·Vµ¯Ž·›*+ºãuè?Á>ÈÌš nEÎïÕÅÈS›¾¬KB}yêcŒ«R߯ýÁò±KªL›Fjúð»qsj\S.7-µå­£ï|YVbB°òÕ‹Äœpä¯É@3.|gº#訽RŸ±ÿáN¯ÝòaZÍV}ÇêÐw‚}б>UèÛö7¸`ùXW­¯).N õåJ¨pœQ{Ñ®4à1kíyûäÆÍ©1Oul1¯Ü½iÏëXúM°Z2„ßEŸ —¦+õ õ¹À+¡>À±‡Nœ;ï3æÇ0óiÖxÀ¯myiqy¬§o¹ Û@Ï ö@C†äÛô7 ÷A·Ú¨ÖçBôŒP=99ZQƒUcÒl"6z`#à×óåååÛ½©Úô—`ÔdŒA¾MÓA¸ºQ†úš¬ÔçâóŒP_¾T먈?ò¿ÛÁ ëÇù‡ûŠ˜çT£@?9 J)-ÝbvÒ¼zõ´Ú%Ôס¾| 9Ô÷ì‡3ƒŽOê|Ê¢(ÒAEQ,n1 ø•·Ú••û`±ü] Ö§3E ¿T쀩ȷÿôRÚÑtû]¾3B}ùê¨q›:‚Ö»{L‹êñ`#-zO¯Ý2ÞàœäBl, òÕÂ14«ÉJ}.0ŸèË|_s`¨ïúó/µú>yæª}(ÐÆqËÑOiû³Óônd"å<þ2Ú°L4ÔŽ7~¾¶§2¶€~R±.æÌ÷Tîƒæ|äŸn´õ.3.b0¦á»±ûîÓjlÇŠ7nN‹ú©ˆ†ZIÍì€9úš¶.B½šl¿«Rߌ ×ùrû]€Ž_ŽÛ¦j¿»ëtªNÿÚÃ}Úòöp™xùv#UûŠëÔYµO¸zÈjF+¥´t‹Ù‰îê KM¶ßeF¨/B}õ™{¢ ùÕ>íN¯Ý2û¶<¼|»™ç½þ@½+úÙù Tì.”Á ¿EâêÂÍtÈR•¬W˲™Õòô·~ÀñTêk–@_?Œ%Ôgß ´pœ®õnMÓÑñ%{ê«Ü§jôí`ÓA;pအå`_QãIÆ´xÊß¿ñU_–_3ªÖ8ÞG>ñéF*õ9Ô'Ì׳}I¡¾ëÏ¿Ôúû䙫ö@Çç® 47oj›°¹ŽÏŒ¶, ´ä]a>`¨šªÖ'ÔG/ÆŒZïŽsL„œ÷SEQû<:½vKEeÛž÷@þœ½:QD¤òÖòëFåu]  ívËùÍ`Ge¨¯îj}.Ó‹±£P`]ÛS9n~vÕùd§×n™¢}³¼|;Š—ogÿ6Í)èû€6¥œÎV«ù%'5‡±€-_ìì<}úꋼn]a"•€¨Ô×C õ}æãOíÝŽpœCOöYóãœ4›iz¨wùºþ@íx€ìZqHe¾E¤øz‹ˆîq½ˆHÚôæoÇ Zƒ›‡]ùÖ½º+…S©¯~B}=CªÔPÛá”×´?Íë:>Õ’—FPº€ì öMÛ¹Jßjï£G¼èüwSå¹/ ú•üTïë ¾>o\@€”¡>#À×ó½PŸ}&XÿM„¾îÃζÛóâ}Ç¿ ÷õl˜·ãMï¿»Þç­¯j_Úr@öû€ÆìR¥¯æÛä{~‡çzbˉòjÐê}ùXs!kPó¤A>Uû ªõíO¨¡‰„û`ôÇB?•íG·æÓ?Uæ©ÂqË”–¼0‚}@v©Ò—"Ö‡ùžHO¬Ü÷ÄŽ¯»æ¹ÎþÊß¶€Ÿê},DB}£˜Ç.2Âfªõ1fªõÙo‚c!·o+ óã `/‚}@­.ªÒ·Ún·T óm ñ}vËs?¸!ô5®4¥ßŽ?ÕûZ4ô0_I¨ïüwöóµƒ›ÏÆùª~ëÚôn«Þ·kå>ã«£–/ív{¤‰pŸõ‡±+C}M¬_c¨Ö'Ô×m‡ú®?ÿRëã#Ï\µŸ>öÞåil+z3ŸšQ¹ŒéŒ»ö˜ç Tì[<÷ñUûl3 c*öGÛ'Ô·¡B_Š8«È÷¹ˆT ð­†ù~¡òœß??þ5¯÷¹8 úÍŸ;}6Î~•6½KÕûæÕ‹5§²5ÙpÁª÷g’µØhŸ‹ÊSªÔ8>:ú©LÍìïæ!ª4›ñUc˜ç µã­ëí¥”„û S‚}À±ö©Ô—ž¸àçg!½_ˆHß¿æI¿ÿ‚×ÿ…ÙcŠT~^†üœß÷ÙXªà·Ôž÷‚p_JN¼×­·ÓS¯ JJª1ZùħUêÛƒ@߀}M›CínÜœå0Žºþ@Uû€L öGÙ¿I›¾ÿìù–»‹ŸUÃ|߯Ìvÿï啳ß[×[ ù­ü¢R½o^MP¸¯!C¨Ò'Èw~z4BîcŒÊ¼ìÆEä%…úÇIµ<ñ3 `p°--xÓ–ïÓƒkî/}e˜¯ òÝ_ŠH_Šˆû¶¼—/­ؼçC~óÖ¼©Ò¦wQ½oŸp»Ùr‘ªÓTo·iÔD¸Ƥ õÕ½. µRK õ4¶Þ.8þ¦/ûÁ¢ÐŽwLóûåÛ³6ß–¼@†|Ä8ÔA¡¾ˆˆÏÍþ-Ãv)桾yu¾T†ùæI÷EÄ¥ˆôZå¾ÕÛ¥ùí¾ùë|é,˜""½rV pÑîwþ>âÁ˜UŒ8«ÜW¾á2Ü·úG.ž¢¨Ü²ôôÕ—nì>ÝjßÀ$«ã RßþTëÈ `Ä¡¾Ï|ü) )¥:Ƽ©( ß‘9½v+›÷rãæÔ ÈÐÌ$€<©ØdÿB}¨ÜW­ÐW â•A¾xïü'[‚t¯Ï~ï©Tç«r¾4{îògED¤jõ¾˜·æý쬚àÚÊ}¦–¼ë‚µÜÞ«wZÖ]mLU"ÆDµ¾Ýõ0àc¦½ŸÆX†M°ØÛºjuó–µUC}¿pV=/b¹²^¼‘Þ³@ßë•ç˜Ì¿þrD¼{åµW/ñ—A¿ùóÅ}óß—f_¯¶èÝ)ÜWy,{/.ùèkvºjÍ ÔM o@íw‘S™š¥ý⬯ 1¦yþòmíx€93ìkíç}C}eÛÝ/Íÿ-ÛìV}iRiµ;©Übå6YóØ÷Ì_û¤òü÷ŬÅïýËïqéßc¹-o•–¼{Ë.Ô§Ån{Ó¹¶ Ž‹\Œ@aØëÞ3¸j}B}dê;}âƒf ÐÞÁt}c[ƒdû€½\Ô‚w^ånéþu¡¾ûc²»oþ¸÷V?Yùwþƒ.VP^þÿråë“óƒŸsû¢R¹oåé·¶äeíª,B}B|ÃY¾´c¨T¸ÜN¨€3üTÆÆ– ¨*®?éôó& `° [ð–¡¾ÏÎZÚîê{}^aïËéÝqèKkZñ¾kÍ›*/ù5"½+¢H•û¿'¢øòìù‹×gÂâµ³ á¹PßüýVï_jÉ;ÿ{—®¢)iÓ»2IÚ'Äôn§Zó…\•úÈzp /`ŸßÈ19ÐÃq‘v¼ÀŽœ%v¶.­µ©ïƒów õE¥nZÓŠ7Uî_½¥•ŸozžI¥Ýïkg¿¿xß¿0!~nþýg×´äUµ¯2³SZÜ.XL¥½nžêž'*Y0Äm(› õ l ™y¨¯‹v¼ŸùøS °Ïßû©Š¢PÉÚ²ÁPÆG/ß6€ ©Ø4a)0·-ÔWVâûJDúžùýë*ömkÅûÝñkk^|Rùþ+ñîyõ¾wGÄjå¾WfáÃ"bFŒ8 'F\\µUúº2¤J}} ¨ÔŒùÀX¥>2=– û€ë/$¤Õ¯?»¡ï¦Pß»cê+ƒ{_­|]þûµÙ}ñÎù ýzåuß1? žÖ¼©òß»#ŠÛóoWÃ}1_÷ŸL_jÉ;ÿ{Š‹ªö¥ï† S­ýÝ‚|ýRίçžzÜÄ€‹·¥£'Ô7Àñ£P@-CUúŒ«†ô¡¶ìjõàüß²ê]µZß}³»ªíw¡¾»ç?K+Á¾¯Årµ¾¯ÏC~ÕïßQl öýjÌ*úM"âvDÜgá¾iD¼gö¾–B}Õ÷ÿ`åy«Uûˆ>ö˜Â}ÐŒ!\Øè`hTêcÇåÃù¶ì2oG[Z[­¯¼ÿþù×eëÛy¨/­†ú~uþýwÅ¢Jß¹–¼±æÂÆ×+Õò~}þ€¯Uø«ñ®ˆâ«évÌøîùã_Hw"¢lÉ[y­UûÆÔŽ·Ë*}}áz¨Ô·ŽPßð¨ÒPϰ!"B¥>ãÁUªõ lÜôòíHï¿Û„6ì.´® ïºv´ÎÿýÀòÝéKó¼óð\úò¼ ïºP_5Ì—Vºê~c¥ZßÊ{<{àÜ;"НÍï*Ã}·g¡Â˜Wì[\)ùÒY«àUû¶ýýQ©ø7üE¢yB}œ[ÁRrqæú~QW o ¡>Àxµ–§‰êsL=¼ñyo¾LÈ“`p”y{Úu'×"ÒÉ<Ð÷îʃ¾Z ô¥ˆôΈøõ³Pßjžµ'#"Þ:ÿºðûõˆxçJ¸¯ˆˆ»WN¢—Uûî«Üÿ éûלlßÖŽ·ˆÁŸ müÊ’0ßð©ÜÇX©ÖwF¨>ñÁ¸þüK&Ç—PÆuD„£.`o«ä×ÊPßgׇïÒ—æßWZðÆWf-qÓE¡¾·Ç"Ô·ò[½½õìuSšÿ^ùõ¯ÏŸ÷»*¿;oÉ›¾2¯øžXTŒˆˆWf¡¾ˆ˜µ®þ}O˜ýxúê‹B};R­ÆMP†»nE‘„úÏ ¦™ëúo¾L=È—`°·mmx#fÕîʯï‹Yµ¾×WZðN"Ò»"â»cº‹Xõ¥ˆô5¾ùC׆ýÊŸ}cM¸¯¬Ú÷Ýñ®ˆ¸;"¾'"ªÕ_›ï¯Ü·­ïÇ~ò3¥T½8ըžq:t¾ 3Ð×í)3ªºc ®_ÃBñòín_¿(T €ŒiÅ \¬(Š g —îû\Dú@D|̪ޕ¹²Þ—W~ùW×Tß‹•ÞEmxËû¿wŬ-ï]ñù;Ÿ?ǯÍï,"bZùw:{ŸKg27µã-}t$s¿É'êØOŸ«õ õ |Àð¡+&0ZuUë3%â€Ã9«ìæì#¼~ˆ³j}÷GÄ—"Òk•Ç¿;fUòîŽõ-uß¾òœ«¡¾u¿“"Ò·"Ò]óǽ5"¾y> ¸d]Õ¾÷¬<¦ÚŽwO.ÆìH¨Ëc 2Ë,Ð'Ô¶-`}tÉa„úÆKÅ>`?E1”&ÏG¤'6<¤¬Öwßüû×ç­w«mx×]µøú†ª}•à^|³òõüû¸k^™¯˜ÿûÖˆE‘·Ÿ=oDD¼ó‚ t¯E¤7çéA“§ç³wå¢Tγ~,"">ò‰Oïô¸}\ôœG o$ÃCÕú€‘:6Ô§J߸v—&ûJEáx8d‘N"">‘Œ³6¼‘^‰H—"Ò}óï/º}}VExQ•/*¿2Ô·è[£˜ÿ¯XýºúïêmZùwQ܉(ÞœßîŸÿÞç"â•çåòçS=`µ軨JÛ!½6 Öï¹§ßëñŽaèávµ6}ªØ"Ô7C õ]þ¥Ö^ë‘g®7íí¡÷û{Á¾Q-#o´sÿëÕ¸œ¼ÿîzžçôó¶C00*ö‡)Š;¦t)⬠ï÷Ç¢ o¼‘N"RµÍíW×·ÓˆåP_ä[ õ}kœßo9;9žbý×¹¿òõ>+ë¸Ð°Üƒ{û¼!? -}d9T©±cB}‚4£[>ê ‚}ÀÑÊj}ßkÛðÆ——Ûðîä®Xý¢ê»kå1qÖ‚wöÍÊ÷1¾­r߯™eó ÓnÛÝ!V•i+¤8ôáÓW_Ü«j_JI•"ú²m¡¾ñêËc{cöõä½»4æÃx8†`pœ¢xsQÑ.¥oŸWë+ÛðÆ{.øõ¯¯´Þ-Ã|¥²Zß·¶´âýVDzKD1ìÚß×#ÒÛ|Rý˜9ØÎbbÒ㢡Ê0l}©ÔâïˆB}™ ï M5ú’u—¡©aŸþòíÚÚñÃ"ØÔî¾8kÃ;Y®Ö·± ïŠÅÝw­üqä«>¦XyÌjȯê»"âWG8_º¨,á¢U;ÊàŸ€Œo;› ¡¾ñêìãa§e娃a¡>"û€:ÅoGJßñÞù]_>ð©V+÷•¾5¿¿îûfD¼eþo%¸ñ$ú¯™S‹9Öìâ Ô×¶ÕÊ~} úiÇ Ëút1W¨oD¡>€cH{qö¨WQüÖk• »#â]ñÝ1«˜÷ΈxGD¼=f!¾ßXs‘㛕_y_æ{Ë¡´"¢xÛüV¶áýÚŽÆ+•¯?7Ð9ÕÜ"P\eâÙ?vaßœ<}õޝr 9©ky¼þè=B}ä9pI¨ïô‰Žn»l_ÏêjÁ[+Á.ãAhs˜g@¾Tìj÷Þ¢øÖë)ݵCÞóv¼oYï­;<ÿj¨¯üþ®ˆ¢¬ÞWúFœ=xÌg*W.F5ê#?}®äcÒ·‹¸B}ã¡R_¦óŸ zs8f.ܯ¿|;Òûï6!€%‚}@#ÞSߌˆˆ”Þv{Çß)Ã}+ítË–»kË$•v¼wÅ,äWmÉ»ÉwÏ~oííK+ýÀA¸ù7T–häí¹HÕ/9ý´ä¥oTÌûxÇK¬,3ÏpÕú8xù;ý¼‰äãõ@£nG¤Õ6¼‡øæüVý¾¨œ,/«õ•_ÏVþo(ÞQ¼3¢ø® N²ß7ÿù/ôtšohUkç"UÿåÖ²wß–¼Ðw}k¿¡ZߘŒ±Z_ŸÚñÍSÕõT¦&p(û€FÝ]_ˆøÕ”Þ¹Ú†÷íñõ•Çoª´÷–³Ê|é-Å[–\T³.eVüzœ/Í7­ü;ˆ;ñÞù/ÜQìË1å&yÇN´ì…ýŒµZŸPßxhÁ›ÿ6È, ïÕÔ::Ê1¡j}ÔF°hÅwÏÿýZ徯Ï~Û~oµ­î[*'Éç?+"–«÷U«õ½=¢øzD¼cKëÝòöZD|)"î›?Ï÷Wžó³ñàÊ{ûXD|4ïÉÞØU$¨Æ¡Ë ß>-yè3pÉv!Ô—ÿ<²ïƒFŒ5¸OÞÇà9ñ! —oGzÿÝ&° Ø´£(¾öµ”¾;­óm¼r2o±›ÖÝWÌÂ}•°_QDo‹(¾1¿ãë1 ú}-6Wë{÷ü±ïÿø•ˆ¸~ßç"âñàü5žˆ'æ?ûhf'íëªpñ¬ty¬TôƒÛÜÑp!w$Ã6¡>ÀþýØc&éÀñ-3”¨ÿ¸Ó…Y M¿žÒ»æÁ¾jÀoé눈oE¤».x®â¬=oÜ5õ•?ªVí+"Šw®©Ð÷•ˆ˜FÓˆâNDñÞÊÏ~!ûг—[úwõëò(º_5}AÁ¸‘‹4ôÛµjŸå“·¹éc¥>¡¾qꛯ£Ï¿Ôøk<òÌUc3Øþ½²~ öo™9j£Ü§±¡1aÃËÔûÒéçm³``­zGQ|5–+ð­=yø–Y¥¾µ¾K­w‹M¡¾·WN¬ÿZDüjD|5"nGDê{wDñžy¨ïKñÊüñ«mxW}lý[ëäêjJI¨,<ûáÇÎUõ;ÖÓW_Üy=€¶¹£áî8õõo{d·N¥ØR‘žÁ.3£ õÐ.­x€Ö½½(n#¥ïy[D|#"Òöp_ª~?ÿwQ¥/b9äWTªìýúügÕÛ»*Uù¾¯GĈxoDÜ·\­¯WmxË¿¿ö'èãZöÂf*õ‘+¡>`Ìj¬Ôgb2ø±! É^¾}pÕ¾âúWíò$ØtâmEñ•o¤ô¯¾-"~ãìîsWSÞ²>¬VÜ5ÿ½»*A¾b^¥ïëq>Ð÷ÝóÇÝž?x:»ï™ßÿ¥ˆx3"î³j}Xyí'2 ó­\|ê#[eÐOÀ>ke,¡¾qê¨g¸`Œr\èÀ€ÆöIi[¨oÕj•¾»fwo õ}×<¸÷Õ˜…ùŠˆâ{*Uû^‹Y ï¾ Õú>®¼EÄGÏÿ-]žÌw!^8´’ßÓW_Œçžzܤ÷úV‘E¨o„ú€Ñ—Öׂ—îFÇ464>lqÁ:¢j0,ŽÂ€Î¼µ(¾³ »\)ÖµÞ-¿_ õ½sêûÕˆ˜‡úŠ»+¡¾×#ⵈxoDq_DñÊü W«õ=¸òZy´á­\|j佨ÖGžýðcçÂ~£1VësÑv„úlŸ`ìëO]¡¾¢(Co™1Ãivœöòíý—Qmx`pœ©:õÖ¢øoSDªÞ¶=~]¨/Ö„úbê+"Š2ÔÅ—#âõˆxODñÞy ÞˆˆûçÕúªÏ#=Qï‚mÛ%à÷ôÕM(:QÇÿëÞÓ«Š,B}#Ùß õÀÁ»Ñ:Ƈpá‚v@¸gë€ÎÝU¯W¿Oé[Ë¿­•úʯËP߯EDê{×<Ô÷•ˆørD¼;¢xÏ<ä÷¥8kÁ1«Ö÷¹õoqqÒþck~ØfÞ¦*”&„úÈ™p4O¨o„ú€±«±Ú¥²™–™½ õ‘Ûâm@¾œ±²0÷¥oÎO(ÞuÁãËßj¥¾_«|ÿ®yhï+1kÅûîù÷¯EÄ—bê{eé)ÏZðƆÐÜGVÅO˜œìÒ–÷é«/ÆÓW_\ £ZŽiJ]ÕúúB¨o„úl«`ìëK¡>ãÐqîJÇ264Vèž#1 +ó@_ŠˆøÖúO WO¢EDñŽù}¿Ë¡¾Û±.Ô÷Þˆâ¾y¨¯Ú‚·¬Ö÷Ù-¯·úfÚºŒºæÔÑW\€"G»„û€ú¹P ý&ÜÐʱ¸ƒhZuÉ$rqWQüò·Rº§ˆ(¾‘îš…ô¢üº|\Ù‚÷ëóï¿g¾ïžønÏï+C}¯GĘ…úb%ÔW¶àý@DñÙˆxpþZÏGÄó×øXD|týÛîâľPƒV†û>ò‰Ooü4iL•úúÆC¥>Àþ½Ö¬4íø–—£¢Uëcïåðýw›0r‚}@vR%È÷­•P_©lÁ;¯ÖWDDñ«ñÕˆ˜Îö=óû硾â½Å—"â¾Xê‹8ê[¼îG;®ÖW!ÔÇhñA³\ ¡>`ÔÇ—õW´LŽ©Æµ5 èŶîôó‡-à¶g5gñ€¬¼¥(n½¥(nÍÛð¦».xü×bÖ‚÷Wã¬BßÝóPß—#âõˆxÏr¨¯ ž õEå„}5Ô÷±5¯›Vß”•–?B} osÇT­qꀃÃkc|À!Tì²tWì–b{g¥bßWç÷}%fUûÞ=¿ÿµˆx3–C}å¿ëB}±êûèú·Ò»„œPÀzM\¼Íj}ØÇïÿt¦èèÔrÝ÷PŸq#@wû€,½¥(nýw)ÝSDÄ[6œLGDñkq–Ö+«õÅr ÞxïüûW"âþÙ¯®†ùÖ†ú"ºkÁ«ý.@;ê¼àß—‹¶.ÎŽ‡j}€}|}Oç˜jtËŒPŸqc–ÝÛðùì²U©Ú—Š•“êo(¾¶æwÊj}Ó˜µày Þ7#âþˆâ"âûg-"">žýúê‰ûM¡>Wt€¬ õc6Æj¼Ô· ­ãI†ÐzW¨ {‚}@¶Êª}óŠ})*'Ø}å±ïªTê‹yµ¾Õ¼óP_ñ¹ˆø@,B}EDÄóñÄòSn:™ßx¨Oµ>€æ±R_„ ´c!ÔØ¿×÷”¦*0äͦIysFÈÚ¿R·¾9?ј6œpüîyøí+ñåˆx=fÕúÞQÜ7oÁ±ê+"Î…ú6¶ã-¥ö+õ õP¡>ØÝé4 gšõEåQP­Ï¸q\ ¼mdÏѽ»¶üì»"НFÄí•û_‹ˆ/Í¿.[ðFœ…ú¢rÂ~ÇP_ãRJÕ‹QB}Íok6„ · ‹j}ãÞ¾åºel@û€ìÝU¿üÖ¢øowyì»#вZ_DÄjµ¾ˆY ÞŠEúícž3­<®„ú¨Rue„ú€1j¨ý®¤àÀ–‘•[±ævôëõÑ·UÃ$€ü9³ôÆ[‹â˱râñW+_ÏJøî¾ˆb]µ¾+-x«>º9¼×xJnå"ÂQ¯'ÔÐŽ¾\¼ê¡¾ú5ÝŽ÷3ÊD†z£jyJíwÛ5ÝŠm·ù1võÖÉqŸÜ¸952pÉ$†àîÊIø×"â͈¸oþý÷W~öÙˆxpþõŽ-xÛ>¹/ÔÐmú*¡>À>žÏ¯^ȵR_5Üçƒ"¯_§Ÿ7`À½ò¶¢ø•·Åí´¡eÈ땯_©|]¶á}pMµ¾--x[©ÔW¹È!ÔÐ×½G«5²!ÔÇêØ†¾Œ7´œk¿[Ó¼Yw«î¶6Üz=.ƒ7§ªøt@°襷Å·zß—× Y—L ¯ÞY¿ñÕ”ÞQÞ÷ž• ßQ|.">gmx/ªÖÀpŒ½RßÃù<ßPiÁ Øÿôãý ÔÓÖ±òN¯ÝåAÊpŸ±'@½û€ÑúXD|tå¾6«õU.¤¨Ö9•úȉP1ÂrÜäÓ›–Ë»K\½ÖUîËXòÆÍ©p@ÇõNôCð•”Þ6(Þ1Íí€6ý{68ªá¢Æ.ã+¡>€xk ôñb¬‹ªÃ$Ô×¾ëÏ¿Ôøk<òÌÕz—ãDì»7¾ÄÖ‘ Óц!—ýʈ>0bò9ûÕÏ“ÿŽßýö] M·†a¸~¥øña£J_ía–Ͷ†a†aW¥zj¹¿¢ç5Çô»K©ÖGqÃÛð®"ÇV¼¥öƒqŽýLJ«­&kôm…øÕC¸/¿¨}Ãümx€ŠXíšô Ì‹ÀõpˆP_»„ú€VäôÕ>wæëS/ÕûBð8– 9ÿã8þ÷Bøòà#ÖC+¡>€|ýnÕú„úÚ%ÔׇÛñªÚGi÷羚çN;*½w= ܬ¸xê«f½„ûBð›ÝW¨Öݰê´iÿ1„þç!³çfzÜ)•A¯!¡¾†‡4B}GLÿêuõèKΫ=ØS¸/„ Ü·«_xíåd×P+ÿ°ÃÕ¢ú¸ç¥òE-ÆñÿBÿaë_ÿÛ2å¹ç£XxÈ¥¶j}B}@Žñ(ÌœWg­ÔWkmÌK›ø•®+9ð×ÓÖ¼!¨Þw£oHêêcõÂã0 ·-¦!„q׃‰íǾHhÿÿòêxþj½‡$ã² ÔpìýšƨÖ×ÛñÂZóëÔ¿&„0ÔX¡oÇÚC3¾–¶Æ-éý÷ðòì sæ,¤Û?+Ü\”?ú¥2`^ÿ&ÃCÇ >çï«Ö4;ïε!TZ¡oë‹}Õ‡øZ ïÍýÌkém{ÞúÜ¢Wµ>`“'tia o×ÏJñ ûëÊ€Ä-mÉñÿYë7ÕúHD¨¯ñá‹j}$˜AíçXA²jÞtKÕ÷R¶Mn½†ûTð‹×Uk¨‹§t%f ïêçåØ2GÀ/J+î÷ ‰Î3òßã—¨­RÐ.ÛñRñ<;Ù¯•†Q¶Ú¦¸DÜûŸ|~ýÞ›göêmkÞMÂ}@o^Òô`ë!C­+ÔãÕg¹L&ZhÚ®¥ýLÇ:œ¨ÖW”³_ý<œÿÍï›™gy~¾O¬ôœ-=ÐGºó4×5röèY—_NÙ ÷µVÁÚ6¼À ó‹y4}£+x!=ÆÇ AìTÿvîü›óaìhé~²Z†Ú†·]B}eZ#Ø÷WýIšsÌ8“î· ÏÙ¡âvZý‚;6Ä÷á;o9É+½^Tžngl|L°o8û²›þP±€Æ4R™ïXÓç³(w‚3މWØ…ú€yc¡>2ΙŒ9™9Ïæ¸¶Zõ;µ"ŸP_‚{úU›ãúéµr@Tì ­ÛÕ.µ½}ì<˜›s¢\-¯Çl¸(?˱8¹KŸEµ>J"ÔW¾–ªös’òþñU©ï1¶Ôêkçºî«œœ¸bŸçP!O¨Ú0 ›¯1ôê WŸyœÚ“Û®¨Ÿe‘€C„úõ±Çï~ûnò¹ìš_¯Ú'ŽãPS¨o£ÍÆWRïò¹P_÷ûqL:ç?{ô,œ=zÖu?~ráDšb+^ªÔÙ–»Ç²5ïÑ-5Ž‘ŸV õ¬?8‰Š&3,ê*½—F˜ÿ˜»ž Fo“P_XóÜOz ö¾5ïîkñ 1 ªõ•ì fU¥ þèOþxïûÇ¿ÿ‡h¿gZ»íìYÞBný ÀJTëƒ>MUûRmË; ƒ¹Cg„ù¢·c² H˜¯}ñ¿wûÏ5 >ƒÁ<Uܰ¨Ðw(Ø7‰ð W•ûÜ듟—‹Ø1X<68IL„úÚ¤Z_]Îÿæ÷«¿‡Tá>ãQ÷Îäý]cÕùR®QÄó… Ð×ëõ©Bu}ãèáµ—ÿ÷ùû< €J©Ø@Ñj¬ˆvL€ï¶¿)àgkÞô„úheÞelÚøñ¥¼ùà¦X>!>&½oÉ;yüä—d€jù–eÞ 2li“Â’Pß.1~­UF(ì °lœp²ZnzÙÕúêTBÕ¾Tî#Ý}2Ưïá<†¡˜PŸ Ÿë·å1poãêTû¬ @½T쀂E®àÕSuˆõ±Ôï~ûn’pŸÊ}î‘ÕÆE„úú8ÅÙ£g!¿ªûŸùÛðì (["Šš»BUQ­ 2dÐøzÕ·bx>vž`Wk©®m¿Ë­y7©Œ ”L°€ ôø}ª÷­gɺ ÀºýpÍcÙúîw)ÞNÏçÁZ•úúÈÝ/÷•1ö^{y÷¿_ì³.uS±€5 ôí¡BŸs€x<¨dõ„@•³5ož6.éí\÷_÷XÇäÔ­w…úØ9–ǤýÄTÁ¯÷qs‰Ûò.¬ÖTN°€äÖÞºækù‡ø|+7þy|2AÖí‡k¥Z_„úh©6®mú¾&Ì·ûødk >nS$÷… à7)1àôɬ€\Š~2ðGòÇÙC}ÿø÷ÿ 2Á¼T;ê#ƒßýöÝ*úcž·aÕù.÷›G¡¾­n|é8¶ZŸPGŸ”™®Ñ)à×»)à°O ˆnzP±ñÀ¢Ø'¹}S˜/g oÇñf:ûÕÏ»Ÿï1NVÚ[›Â|}/P©rONá¾¬Ö ÷E؆×M*7X´ úÍÅÖ»7R•϶JËÏéY §½¢+NRóöaªõµCžvÿÍï‹{Oõן¬w®óF½‡™qÌ5Ì1•úú¨©é}kÞœcôáµ—Ÿÿÿ…Á¾qû ržÍV‚.·ÞݬÈWØV»ãtLTî€r õµC¨ÜrnÉ»o.hžQd[L[íã8N/UúV&ÔÇâqFæë÷ìÑ3üVð’&`©,ŠÞz7†‚{‹Ž›9ii_€ècŒ£¨(Âêc¡>ôÝ]‡KÜbלdöqT©zÆW×wÎ>èìѳnÇÚÓ–¼©¿ˆ3~õê}1î@½”`‘­ÅÃëªp¥‰U¡¯°*|sÜ8F*kœÔnl3s^ì§Z°ÔšUûN;¶6î-í­«ÈW.¡>RÈ}½÷^¹o ø%=¦_ýå¼ê7Ü0ëòb ¯HsÃ|-Tä;öP^Dc‚CçûÉSK{Ö¶ÛnãS>‹óÚíŸj® "Ø×Õúúqþ7¿/ö½ýÕ_ÒÆõ´1fÛu_Øþï‡þü¾ñ_C_>1·[>æ˜Ýp*õÑë¿÷JÙ)ÇïÃk/‡áìË%÷Pß®€ØŠ€“Í 9Íu÷Á½Bß?ý·¤:_G¡¾ž?¸¦Å_š½n}¦×y@”•Pdïmÿ÷C¾ÑêÑÂ|ñçÆIõ‘íDÇì[óNz ù=~r‘,Ü·°jŸP4BÅ>ß(V¬Ì7…ú6ýÝý»¤¿³³PßC½ý/Œn\«Wì³m^Î(n r´Z(ªÖ×À½C¨¯K%Wí ¡Ê}=ßO³7f5ð1•úB죮ñô¢ûb§üRåï¼÷í¼q©j}Ð û8Æê¾¥öö¦Ê~5úÆÿ8„Âð‡?Ä<ÆþV&ÀWÎqððô…¹õ°}+¼ž¨“f™^§üáB}¬vbg®ÞB¿ü?¹0®’ìà†Ò*ômûÓþ§'Wí;Ú«µBßêKñ£ŸŸ ‚M›—FªëA¯ìþÐ5ÀQ(Õú(Ôï~ûnAå¾jú–²÷—8¦ZŸPô+«­;L!¿^«ø-5·ZÐØÜ@°Ã2‡úRiekÝñÇ?¾ñÚõß(Ï0 ·¾¨ëy®;âš~À‹ÓíT?X¨bNòq\õKk›Uü8ŽP0T! „ë‡è«ÝNÝ~÷¶ª}-úæ†õ"mÍkœPÐõA׫kb÷¹³ÕVÄv] ÜTëëÚùßü¾º÷¬z_ÑcJéöüã“ò*õÑûx»§±úZcü¥Á>÷h‡'LVI¥Ü}pïäP_—[òîòÿUo¯»¯*+¡-n¡ªÄ»–jrö«ŸW÷ž÷ÛwUðƒ«©ž& Ëåê}Ó«eŸ\Ìþ»ªõ™T@C^Ò}Úzpž}EoN˜ïš+ôÅñ?þq¬ª}ã°YÆ@¸ Nî_]7о³_ý¼ÊÊ}S¸O?z«Ÿê˜J}P‹qWÿRÍîkµŠßã'ªs‹ öô­Ú@ß÷O¿«¿ñVå›~v„€ßtŽ Ã0)Á‰¶”¸†àøëªÏÙ†—üî·ï ÷Ñ]÷ò‡Û†—j.„«ùi)¿úÙªàXƒ‡‹Þ†!Ù v5¾MµúÖÜb7BȯëqCÊkŒÉ!ÞÅšªàÑ@ÿ-ØÇfÿSaÕ¾MÂ}§ÙÞÎ8Fûã(åžg¬qòàû”j}‚}ô>ïmL{Üc+^k Ðû:sµHWM¨Oe> £¾ùfßa!N¦ÂYÇxB}4Få¾ÃmsH¤vêËÔ}kØsq°=ï¤õmzSG Êô§ŠPß÷O¿k¢:_I¡¾ï§÷•AÚÈ{ Ã´~¾÷Fµ> D¿ûí»·†Øzl“·BAŒrǧTëƒÚé‹Òxüäâ¨?¡ZÐû:úayì@_Íj¨Î7þøÇ³·å½eë¢Ërm/¡þ€ã¾a<áÏF;Î;ú'OŽl+\0N©—P_ýTëc—³_ý¼úíx'S˜­÷ ~¹BŽÆuùºïÔ¿À6¼4q¡\õI%ŒÓUîz'ØЗ¨‹Ø=o»ÛñöºãÿMi±¥<Žk´á°Òg=ú}l=Tèþé§ Üäa@|ÛÁ¶–‚~±B{ÚÄü)ã˜ùTªõÑ3¿¸?¹ðàd‚}Ù³ØVt /„2C}‡÷Ÿƒ-Œ6´“Ví[)ÔWÕ1Ø8Iú¸ú!? …ßýöݪÃ}n3l ÞLS MËçâ~ù ö´­øÅk¾<æn½;· ‡alÉKÒ“ìæù5„ ¢ßQÍJÏÕ¨Òm;ûÕÏC¡™-ywIQůÀÀÝQ–~vc4ã ¨u¾öõ5üB¨+ä§jp*Á>€Fä´Ä¬Ô'Зð\ÈâÛÛœSEµ†V ÷•v ïûåê+»GxˆLsTì ëýæ—kذÊ;t«5¼·OKÛ·ÞmçúE¾ó–Ö¦»ùwIUüj™÷§ìhOôEëØ[ï–êkE!¡¾Ís±¹ [‹×ÃÂënØþ¹¤;fWÇ;ÏÏ_çÀ©÷”#B}wþö_‡‹_þ/‹.µÞÛ%b O9¹ ãÝ%Þÿäs •©e«^á>àX‚}•ÛX¬®"QZ¨¯…*}……ù^hâÐè«}Õá¨ç¸ />íë.å&àG Të£4B}„ÐÇ–¼,†e›ùæØå܇=«nžpç½o£Ü_œ•ÐÁ>€6Øz÷ÔèçÖÃÔžƒ~‡Àxè pÕªÖÝ‹T­Oèbűí1Têƒ6ÔR½/„h¡> Aj}Tìj±:ÉÖ»±B}ß?ý.y¨oüñ¯_ÇþÙªûþPU¨¯¤olÃÁþao¼ÂåC×ÍW·÷šÍ¸?Ìg»-·¿±&‰‡÷šÖ™S—f ø•æñ“‹BÔPŸ ;4HÅ>€J¥ õÅ’£Bß®€^ •øöóz+ôS%4°¨êÄUÑïÐýÇõ ôuO8¢ZìbK^/I7VkIµ¾>ý"|øÎ[úº·ç-µzßî‹Ñý9ó M‚}õJR©/†úzQJ˜ïþä¯ÿÿ?þý?,9_-4Ro§+è·ýùw¶ @¯îüí¿Öìuö«Ÿ ÷U,Ò¼dºk(o]Bȯ´€_Ìj‚ææÐ&Á>€ l-| ôµ~¼ óÅ<—-4ÒŠA??8ml3[i7h´¿?¢Zßê»øåÿ¢Á€½·?MPÇøH?‡^ûz={ô¬•¹„ŽwGTc …†E¾ú]–­w[7ü᫆úþèOþøÆëП[xCó—sèpq݃T8ìÍ7L¿«€Ÿ°¯P·™¶å¥.ªõÕ×uk¨àB-à‹agžE­˜·V;N/ M*öl#$‘du&V¥¾TçËëÔ°ÞýÉÏÝ’WÕ>šµ£úÀfÒ­‹“~3Üç:ªîÓOôÝùÛ-ÔÇÑlÉ[¡¾:Ç¡@=sèR¶ç]£z_í¡B Á>€Ùz·ñã[H˜HçÀ6½ÉúöRïe~¤b^J!Ôi‚¼ÃpMuÎ…sgµF€Ø  l]n½ÛKµ¾ܶíîmwî!¶`KwùÆö8W.†­W³†að†Î (ºÏ>¡ZÌqö«ŸÛ–·±ªõÙ&ÑØ8®¯\õÞ¬zP(ûÊUl¥¾¤ºÑP_‰Uúó€¥}]‡ýTðcó<èÍ›oøNð"Ûò–yLBáŸ<øWQn{Z4ëØbñ óýO>× PÈN¸Tñyó={è @ï6ƒeB~yÛ{[¤j}d:×úÆ?øô á>˜7?Nº†š+Üwþð¾-€€[©”PJ‡qû˜IÌ­wcûl³›OîmvûŒE î=$ú½$'ýA—çêÉj¬ a+ÞŠú!û(Œ_ÇVä‹êŒm²-¢4r Ûð Bü¹ÅÚs¹Á>[ñ@Gs L+v‰‚1}Á¾­c×Á6»§ìƒ~î1©éº;/OVëÖXÂ}ô?B}NÈït§n±)ØgŽ“wl±¸±kõM„û þübÍùÇÌ`Ÿû ô4ï1X©N°mbŠ@ßdI°¯•@ŸÊ|û-ي׷Œa•ûN´{O æ(]‡'©5Ô‚`_é„ú¨ß~§†ù&±B}Æ2ÙÇ]ûöøÃ#ý7ò\dÁ6¼žë@G^Ò«² S8a¾ãßÓÜpß0 |AŽ΋×Ù°y–tšÞ¾¡±{ê Ç Ëvx­§ ßÜà^Ž[±K}Zõ…Ÿ~!ÜG÷sÝÔó)ˆ·â—L¨ C‚}+¸ZhŠ¶âŸ²Rå(1ÐÉ,NºáÖCèáù‘Õ~ÓÕú ïUë£SØ­¥€_Á> ׿ø2ÑÙ£g‹Ã}sªõ™@Ÿû2‹ê«â3ÿáUnÇ[Bµ¾šÂ|ªöA›]øÕÿ®vn>˜ÑOô­æmxrÙ ÃÕò[3Èa^_TZw¼:kØJµ> ¼0gÌQ½ÏüÈA° ƒ­Å¤.+õm‡äJú­èk¸2ß!ªöAId¦JKî§B~@”þNµ>Vúv½%Tä‹è Ó<ÆØ ¯9íÜpßœj}ÁštK°€U”Zů„*}5š[©(°NFOù>=H€Û¤K,e{ÝH>c‘2ƃØÛ7—î›ê:&ØO—•ú)-Ü·f¨¯æ*}B}І<ÆÚÞ»‡êíªy›«7߸ãÕ™x§üJ îå†8[:¿g¦ß–×½:&ØGõ¡¾»î…ïŸ~ýç–î[+ÐWû–»±}Ã0åÀ}`Å>ýHÕç¬?@· /ܪµ ^äJ}ƒqG½Þÿäs=Œ÷®úé*÷Í­Öç^}S: ¡a¢.­]©/Õï_³R^îßýGòÇׯüãßÿà ¯„FÁXÕle@]ãWB¾ó–F€CE†pœmv€TìHoñÊQI[怜ÜBÈV½oÍ0aén ïÙzÚ°¤[ú\*·ÐUëƒîD®ÖGÅZ«Ö'ÔGŽÿ2UïˆIÅ>€ˆ¦ }±*õÝ}p¯¨P_Ž÷5üá/¼RüŽœj«Ò·2iÈt¯rÝÌRù"¥øàÓ/4œ`ÇëWlûªö©æÌ¥b@:ͯò§ªÞ·møÃ¢TòKè«=¸§¸OA‰ÎÞ×,¢ZkúèÝ_ìýo­U„ê&Å ªø=zs£¼ tN° ‚Ø•J¬ÒwÛ{Mð[²UoŽ }ªñ½Ý«Žµù°òÐCM€\là ,RiŽuÌØ÷£w!Ü%ŒÇѽ@‘ûâQù(ƒÍÞ1!?¡¾ã¨Ö ÷›/>œÈr¿Úõ€2öCKAÁjÏAÈ&bµ>Ûï6 eˆnîØ4g¸ïж½¾ó–„®Å ÷M[ïª>,eA `nš (QS¥¾]rl˻ˮ€Ÿ@ßqJ ôã(…Þ§n³fµ‘Í©æ8ÅŸ‹'©ùaØ›oÜqHÅ>è‹`_ÓcŒ“Hª±jŒ/›Ä|o›½CA¾Ûþ.˜¿,wþðþuÈÏ}˜CÅ>€å¬°\Ù &æ ùåñ…ÐÞv»¥Vé›P-^B]÷©µ·Óg´I… –ˆêóţīÖP1úÔ0ßößî£û t‚Ê}s ö¢öj}»>ÏZüRh)ÔWÁ¶»cðð fÛzÑt•>(™j}íðjôíìX&Êê~k¡¾ÍÏU{¸O•> t* õ]Џý.èƒ>Ŭڷä=öœ(æ¢N«¾íÏXc¸O ouãpu±YȄӯŸÔ¿@ 5ÆM¥ƒüåÇ8ú6¦ ú%Дîì8Rî­ [2k ø õÍóÏþÅ? !„ðþïÿW¬iK^8ýšI®ÄP߇ï¼åè!„¸Õú|ɨ?}Àö}`¥pŸõ0 „ Øpªh«ú=Të;ô™K ùµêËY¥o õMÿ?b¸Ø#wà\ ÜÎÞ×ÄÈ«ÖÐêXx1>ãkØ;†T¹X‘`À-b/Üôè;¦Jú õÍ3…úþ§ù?„BøÏÿá¿Åüñã0 ƒJpð~Ôt¨ÏÃEjôæw4@f1+õ•’jpôø¶±ì¡¾”ãë]Ÿç˜ßgÜ :á>`%‚}ljšê;Ü6¹Ã}ÛÇãïþëßU݆9Ã|“íPPß½iŸ*ôy¸X7¾¨õ‚mx{‘;ÔsŒ}Ê{Ÿþìöï7Þ†&àùÂ}¾à \ìØ!÷ö†\ʵUokË5}!õÁÊš õy°$ë4mà M‹\­Näõ2®Îñ~Œ·aá˜Rå> 3Á>€ý¢…&Tê[Þf±‚~B}qdõÙŽÝŸvÉêóp±MvPë-,ÕúzgäªÔ·Æ6¿·µóê!Ø@¦@ÞÜ€ß1¾?ýçZÍv¼kúBP©rËUE6g O˜Ûœ?¼¯ˆFµ>h[Äj}RéuísþRi!; Ò(mÕ>_lnìØ-Ê ŠJ}ñSɯõv¯!Ô÷ÏþÅ? ÿçÿþ9a¡À{Ó.¹B}}@¡Têk˜@P+Á>ª;ÄWrÕ¾5}!êûŸþåÿþóøo±ý8\}ÚÃ6z‘£RŸ@%R­¨Õú i‘ªõ©ÔÀicÌ4Uû†Íµë_@‚}I¨ÔGLkúB(fûÝ1xèFv<ˆ¾š/Ðp9ôœ¨~¬ °Šá¾Í’Î!öÜ`˜ʪÚWJ•¾NõÙŽ߃TéØ!R¥>Õêä 9硨k*Ñz²+€‚`À.³WKTê#–š}ÓßI°oW ›5q:]ê@Ÿ _” –[–&`ñ>]¸@° „ …ú!¬[µoÍPßÒ@ß®Ÿ§j}Zt:$U¨O˜È-Bµ>_jcÜÌ œóPç¥{Ùõ ®cè˜`еa 8VK¾éçüçÿðß„ûàxÑïC±}‚|¤vþð¾F ^§úË5ðÂ2€&¨è`Y³Yv‚¬×[ª-yÝ¿ o‚}—Têck„ù6C|›bú¶f‚-yÇéëÊTP³Ô*c„úù€’D¨ÖgÑḸÎk(ã:TYˆM°è’EcJ;Ô—¢*ß)¿;rÕ¾1ø¶2í(.Ô'ÐTß±ªÖM‰±ý®V,‹u™™÷7>èöò÷%Wè“`И‹ÇªõµíOÿùŸ†¿û¯ý箹ånî@ßô;Tí÷¡=bo¿ ¹Ø†€m1*ô]º!š·Ìù õ\« «öù’+tèŽ&z²±°2‹È¬`­­w÷m¿›ÓÏ~ýÓØ?r†Á6'ÔL¨–ÇZ°^çªZ°u{ÒëŽ 6æmc°süýl¯_@]×nŽ~胊}3¨ÔטUûÖ õ…°N¥¾MSÕ¾Ÿýú§á?þûÿóGû¶2Õ¨¥RŸmxa™7ßðý9€Të«z¬»kÞÖ=ç!ôu½' ßY€ÎöÍ³Õ %Èê۬зv¨oó}$ ÷A ÷Ÿ¤÷¢¡>> ªõ›Ã1M°^w¬ ®B˜º¿þüÆË;èc ‚}'P©¯OK«ö­ê+%з)Ñ{‡i_' š”M à*õÕ£ç/R:·€µ»¡pîÓ'@ÛìôÄ ³ýé?ÿÓY/g¨ïŸý‹Zt¨oÓÏ~ýS×7½Ý„úòQ­/UÃÃô7ƹÕÍÇÆq<*3ý¹íÀ)ýMª½Ù7mR±hVÌoŽ«ÔÇ©rú6·Ü ¡ü@ß&[òâþ3ÏÒ@Ÿ0¤óæ¾;°D¬j}‚Wõq×:æÎ rS'&Ùì€#ݶ%¯-wW7Ã0x0CIçdì¸$Ô'Ð4N¨¡Ò1îì7bîÔÒq^õW)+ëÙ–Ú$Ø´N¥>¢š¶äÝøåÞrwR{¨OÕ>ZRr¥>¡> d*õõ;Æu|žlöc‘C~cp€& öÍIùÍGØeP_KUú„ûhP1¡>> —¥M¹Aú’÷mÂ}Àmû€V-^õU­C¦mys…úZªÒ—úÚ·/¹•X©O èrðË5THµ¾¾Æ¶Ž!ÀÍ~/ö—Ô‡aП@Cû€&¨ÒÇr‡úZô©ÚG#Võ ô½-h‚:Ƶ{‘ð @ìþÛ½"Ø´&ÊŠ°j}òýÓï²üžÞªôE ÷YÄ$‹’*õ ô5ZZ­O(,ÙØ6 Ç MÕ> ‚}p‚Ü¡>ÛîBV{")ÐpÕÛ†z3…Õ;®uì^ìc†ûlÇ í쪷±è¡ZÉä ô…Ðw¨Ï–¼Tv߉vï9•@P3•úŠÛ&ã˜d3^vïƒþ ØTÍ6ä`ëÝzû‹—Ôjß6¼}Äž7…Ä_V1/8®¯Œ¸Ö=†,œ@û€¨ÔG2¶Þ­º_°€IT;Ø“<¡ÜêhÁÒj}$™;¥ùÁ}'÷›Â}À&Á> :±«ô ô1ɹÝîD•¾EÜŽw†að0‰D²…úTéZ1Ð'¤£í€`þ°¼ÙGÛÕê&ØÔlÑj„@!¬曨Ò}ÞöQ©€ÚƵ‚" :çxá>Uû r‚}t§„0ßD¨o·Ÿýú§!„£rŸª}Ä–5Ô§ZÀó/?ÖP8ÕúÊ#,bŽPÏpÙýê%ØTaÇ¢óìd•úú²fˆo› }§‹¸-/Ä Ô°âÒ@e%Œm€ o¢Ã ÿ€ öД’‚|›„úV¥j‹DÚþ懶ÞêZ±RŸ0BÁãZ⋸oªö@µû€bíY¸X´’¯Z_{J òmš¶•ªõI²P¼èìѳpþð¾†à…åMPθVÀ Á> &V;TCpoŸ·¿~%„ÂúwÿÝ\ Òv¼ãp•ö Šc©Ô0_¬j}ÆïeŒk€ü"Wí³/TH°¨ÅâÕúÖSs8o®)ÔBñ› ÷Aç÷ ‰P´ëÍ7îh„5:è_~¬ mªõ8¦ cç/Üg;^¨`P‹Ï•é1È7Ù ôO¬ª}!„Á·“Y‹PÐ ÕúÊ R@bWîê!Øic¡B¥¾ ôäÛt(Ô§jßr1Ã}Z“Ï™$„ù€E õ eågHË^AÌöýÓï„ú®¨ÔWßræ¶óãêɲ/ІÇO.4Ð=•úÊ˪ÖЖH}òhM ê¢bP”­…Õú &Ð÷œP_uTíãØûÐb»}*õA»?¹o¾áûs@Ÿ"†úŒÕãÍ{h©c·%/tÇŽ6Uèê»ôöׯœêû‹ßüH£-ô³_ÿ4Öò e^°µ ü⡪ô½ˆê£ ã8ªÖPû€Õí רÖWÞƒ|*ò§ÚêS­Ö-© qþð¾èûâ›73í¸÷Jåpð¾!À uìJdU¡=ú„ùúèk†a,d’ëþ#Ô´Hµ>È'Âv¼cA˜*!Ø”FÂfeªó¥ ôýÅo~þÓ¿ûïN´~ö럆ÿøïÿ‹† XÛÕúúnYP­o¶­p‡5€†ö%±½‚Þƒ|›Téë³ßQµ…ßt¿¶oû]€V©Öרäȼ ¶ã€:ö«ÚS,ZE¸ûàžÆ<’ ßn9C}ªö-§j $YÍV­à–A˜j}'ÛóÅé €~î¶ã€NötB ¯¬Š|Â}ËE ÷ÃÕj¨o*3×®j}B}@ËTë+F”IŒ¹@eÿòpPÁ> ªõ%Ôs ÏÖº@ŽûÐ.B}ЯÇO.›oÜÑ@Ób…úTë+o @W÷÷a(œ`P5¡¾Ýz ó òõçg¿þi!ĨÜ7†¦Â}ªUt$Æ·Û·«õ õA´I‹ù@¥7Uû yƒ…`ÕNhfwBB}7õæk1¸g;Þx"mËkKÞþîC!,x(:…ú„ùà…ëj–ó‡÷›hûòù±F€ÌbTëS©oñ½6ê„Åü Ïù—û1”OÅ>`KƒB}ÏÕèSUÂ]Wîóp‹ÛlWê€ÔbVf2ç(›`ÕÆ´P_5„úùû‹ßüHÕ¾H~öëŸÆªÚ7†«Ê}¸í#Ô0s°­:ļ¯ÚŽ&ØP)¡>€Åf‡Ìm½ ô(Æ6¼Ì'¸ÐÁ> ›¥ÛïrI ¯=ªöi†a°5;OçÀœ1”TZ¤¦4¦èƒ`P•Þ·á-9Ô'ÌG ~ö럆B¬-yÃ0 x5HÐÊuöèY8x_CHµ¾ÕǯtF° p¥Wèè‹CÕ>(Ÿ'kIkú!Øädåø}ýî+²ÏTí wªõ­#E¥>s€zöÉÅZˆîiÞRC}Â|é ÷Åñ³_ÿ4Úv¼4éä§™€½ZêÇÑ>²+Œ_iê'ØT¡—P_i>A¾u÷Å)ܧj'{üä"¼ùÆ Àl±«õ™ÏÔG°HfkÚ ò-Jõ ò•C¸/ŽŸýú§!„ z»îKGóò:{ô,œ?¼¯!*§R_¼¦Œp,´"@…û€Ô­÷P©O ªèÇ<”t_ @Ãß¾Æ_~¬! ÀËS,h¼ç_Hêਾ>v¥W  ö¢†ÁB‘Öõ½ýõ+B}taªÜ§ò Ö¹nÎ=Óø'þ•1ÔŠ·ÔÒDzÓúÏö €8TìRR­o5}‚|õ°oqý™'T»zÀè 3Íã'áÍ7|—€YãÖå˜ÕÃ0wD ØÑZ>a>¸¬Ú÷ÿý™ý÷[xÀÇš[­(sE“†•úŽù3æ>Ë(¤¢Zß¡>æø‹ßüH#”Õ¯-~Ù¢*¿¹míA$°Ôã'¨Î?yð¯æ†ú†Â0Ž£îš“cX€föQª&ÔÇÂ}Í™B~äow "gži€Ú\Be'Ù±Ž²h® ýÚb+^ ¶Å«È-Uëèƒüöm·û³_ÿ´¸÷:=Äó®À›™c‹û6ê³`û]'ãW÷y€rïúhh`@"B}Þ¾ßÒ?›Éõ“·acåU ,žÍf=éÀ8§n¡NŸîTúþ¨ô¾äþ …Û ÚX‹aáBt+•úúHå?ý»ÿ®6Ô‹Ö¥NÿÇ8m{“v‡Å×]4çï7Ñ.o¾qÇÉ‘ØøË5,´´ZŸ1Ôìûäâ†ËÑösîñÎ €âçcž@áTìñmí›r‡ú„ùèQþ‰J~ÜÛ´7@e}÷ß¾×\¸oAÈ*ü?OÿßN ²œkƪñÆþÚ ï¼_z}²Àìb-ÌÖB¥¾5ªô õõç/~ó#Uûúí_-²ž(F%Y`ÖuÕÙ£gÍTíƒâ¨Jú=·0ì£û׋ÇúóþrÆŠ/u=Ì[zý’Ÿ/7@Ùû€E“~òè£WTê;dÜèsUñ¨Ìã'¶ãÍ1?Y©j_)!ºÓ6K÷ýŽÔáÂó¿ù}òv<ûÕÏ‹>IèŸ^\?i¾Ñœ@}ñÎ?£ÿJ"Ø,Õuµ>[ï’[Uû:ôìw·¥þ€ÕøÂ-ØË×ÎûÂw1ŽÁ¡Ÿ17ô—#ÌwÛïKö;¶ëwö®4È<ÖwzœÛXWŠ™£˜ 'w7u» ö ô±¦ž‚}B}Æw îUÕlm Ž£ka;^ûòXZ±O˜¯_·…ür‡ùN17ä7÷|ÇQÒkþýqñ ³†`Ÿ±4Pû\¥Ö~læ¼Ì:”<Î7`Nî8ž/Ìî@j®Ô'ÔG z÷ õÍ羚;éŽÇyK‚}ÆÇ0{l˜Œ`'õã3Ã}B}L~÷Ûw›ú<û‚‚}Ùï‘U}ñdÉýÝxha¾Rc_¶à³º·@©ã| -ÀQÅîE®‚}}”¦ÅpŸ0_Ü®ûº³îl¼wuÏìƒuljQµì A¸/—c‚}B|,Ucøo3à·äððÖý±ªJ}B}€ùJïòù ÿîÃwÞjò³º·@Áã|‹-ÀQEÄíc„ú. î±TKÁ¾¾] °“Þý…(â-âúÆPȸrn°Ï¸¢“îã¤>ý@¸O¨TjûýêçK¯k‰§ß«ªÔ·ôÞîüZ™¯ì[W*9Ü'Ø Îi,¶Gu‘¾i^[¨O ÒÕîKY¡ïP°/µŽƒƒE„üû`•ñar­ûBîËeW¸O¨\J ùýÕ_²¸û7f:éþXU¥¾¥÷wçÐÚ¼¥¶pŸ`´ç%Mœ:ÏŸû…ú„úˆï/~ó£&·ä]bÍ@ßö{è0àw}6K”äÀ'Ô@þö½á>¡>r:&@—;ü·0Ôç†1éÚãÓÜ¡}ó-[àp'ñ›æ½û„úH¥Æ`_î­wK`ûßç·–ë›J‚q¨j}°Ê1Uû˜ëÎ{ßjª‘*ð·4Øg¼tÒý±ºJ}KîïÎ  åùË®õ&û€\T쎞ß/ùË5…úTê£65UíK¹õné6‚;ù•RÕ/”ð»HO¨Úì à- ü õU4XV©€+‚}À^1¿i^ ¡>jUC¸/U¨¯ôJ}4î¸ç„0³ªŸ’}Œ@F›á¼ÜÛørÒý±›5O ¦þ*æ<æƒO¿(¶jÐÁ> ¹Zªõ õQ»RÃ}}̰¤ªŸ§‹ÐÚ¡¾³GÏšÙŽ÷ñ“ Ûñ³mWà;ôS­¯¢A°j}lðØ)Ö7Í…ú ¯¿øÍŠy/ÿñßÿ—®·Þ%šñ˜{ÑÜ’TkzüäB#QüÕ_rýÚþ÷¤×cµ>€^|ôî/vþû>ýBãÉ©Øt-E /¡>ÖUö¼K¨Ô×­ñˆê}¤Ò­TÕv6¯5}hÝÅÇ?9éÏßyïÛ,ïgîï¹íó¤~ÿ¬ç¯þú“Å[õŽã¨ÓÏ=Ø­¬ZŸ/Ȥ'ؼ Æ7ÍK¯Ô'Ðé¨ÒGBK¶è…ZÇcE¼’®³–¶ã Á–¼9\|ü“ƒ!¶S}»þ^ÌÜöû™ûþNý=±?ëR©o•ûõ웥-xØE°èNªP”¤Åª}-Uê{ÿ“Ï÷nåÂѦ§ŸÃÖ?ÿYQmÓ=ü§v©Âq¹~~Îv^{ùùµö¥“§ÓÛ”&˜=6=ý/V6&5†ÈG°¸¡‡j}©¨ÖGir‡ûRUê³õ.'Ü»ÀyÙ‰ÖªöAIƯ~xþÿÏ_?Ü× þá^‚õã€:|ôî/Š_ŸÒ·@›û€®¨ÖGoj®Ü×z oú|*÷-¦dEñ0å°Í0ÞÙ£gJ¿Én„ü6+ù]ÿ÷[‚'÷¡‚‚«ßÆ4AækLµ>€¬}˜ùšû?T7`· „ðÂCèæªõ¥ ô©ÔG R†ûbWêëµBß±¿µÛ§¥ ¢q0‘ÆMœ v°¯¥ª}o¾qÇ BýýãŽð_ôß!ü—´yN,j°5Ú{É8Æùô<—Û·óá;oÕþÙÜÿ äyŒ;°5ñê;’@µIî‹ì³ån}jù³`¼Ä »Bx±ªöµðî£Ùþ3Càoñ{¼n c¥£ÇÝ„úœ €9]ÙÁ¾>ýbîÍ Ÿ€²ÙŠØÔÜ ÞÖ»ð\ìmyúØÛïÂ~K~¶Þå¥þŒ»ßP€C»XUûnû=µPµ.ûë *ú]¿×~Ö -TëèpžXZÕ¾ÍPßÜŠ}úy(|cЄÂ0 ‹:ƒÒ‚}©+õ öQ»R‚}B}})%ägüÛôxF#蘰pßs‚}tß—Wò ¡í ß8Žn¬»Çc„¶­fŒdì ˜7>wh+w¸/B¨/Ï x¶â…NÅ|ðÝS¨O VÌÙ–7v¥>ú³o¼¶m|ilC<džìÎÞîêUö½7ÞïÖ¾×ï»Àßö½ÕƒÿËfXü*jGÇh²#O°on±¶ßÕÏ@ù”š’ºR´ä/~ó£Õ~÷ûŸ|®Z7·\,Z×i†[_”g­Êyµ?¹pòÀæ½û«^ûUñ¾Ï_ßú«éc„A¶Æ!íQÝXÔ8  -±B}@”Ù†^/þHÛÈôR­O¥>Zv[å>[ï’Sêê}ƾՎU¨ÌÜPŸ-yŸ³%/ÜrŸ°eoöÐë˜*V°o­6³ /@¼¾qí­xw…ú–¬£Œãhâ …³/Ð Õú`ž©rßvÀÏÖ»¬as‘ܽýâkKí: ‡ªø•ú;T½¯’Ð߸uïBh;øë ‘°ÆXZ(Ú£RôI°:³c±¯‰j}*õÁrû~1¨ÔGI÷A¹Š‡Ð˜¥¡¾ó‡÷£Uí;{ô¬êáã'ªöÁLµ†þ*«ê7 ¨z¸¹W¹ï’±—ñrýckóhK¢PŸ :T@°ú&Ôw€P½R©RLP•ûê&Ì·N³ßðíy¨kkÁ‰J}@“à­Ð_IA¿~›÷ù–BD1ï‘ÂU¬y;ÿ Ÿ>ý"úv¼ªô‚}Ð/¡> 9•úˆyÅ øMj=äŠOˆ/]ÓÞÄÅ=w‹ õŬÚW;Uû ÃÄxGu¿µÃ~ãùë5…ûÆçÃc¬gŶP­Ï˜8Üו|- ôÁ>è“Pß*õÑ«Ï^ý&ÚÏè#…÷?ù\õ¾Bx˜˜®iCÈó@Ý1¬‡p¬0aÞû­ò›ª÷]¿òƒ~-nÍ[mÂÍ}`1ªö õ›<€þõ Ô˼ÿÉçB}$?ÇbñÀó´¶Ú|¿‰CÆ D [ðÆú™*ÿ‹'Ð;*ú­ò>Î_¿ñªaÜÐý¹Saå;Õúê—íÊêÓç@û KÖ…ú ]Ÿ½úÍâj}}ä;ÜçáØá¶Ñ>išwó5ŽcØ|¥>®½i!Ü÷øÉ…«V4~õÃõ«˜÷Tn¸o WºÛ¸W.ú 5nÁ ÀºTêv±/@ê£?1·Ý…5Lá>[óÆåApÜæÜü‡Âª!D{3)ªõ”l_¸o-{Kß®wWÔT¨öP_ïÛX(ÍœíxWõéP ‚}ÐVþRUêƒÞÄ õ©ÒÇÚ6ÏÁ%!¿<'¬ßt›ÿPùÓó±>{ôLHj ü­ð»~篗îwÝ/qŸÐgÞ¤Rpˆ`ôeÖç¶áMêS­N'Ðuóàww³Ü45òÜ8æÕTë;x¿‰mtcyüä"¼ùÆ žô_Uñ+©z_O_ P­ãwàB}Àm<€~Têâ±/Öò³a®_½ÞÍ×8ŽÛ¯°ù¢=-„?¹p ¡ô‰÷W?ìÝ®7ëû8ý…­z×z+!b¨<õ8iÉ{]sü ôEiç$p»¡¾%;uìƒÆµ°¸›ªZßÛ_¿¢Z]‰êÇQµ>¨p,ÐðÃÞ}!=Á½ÝÇ¿šj}¹OM„û %„ûBxð+!äWÁ˜¤ÊP}Œçœ“Жµ+õé# ‚}Їjgê)B}}ô(f¥¾ßyKƒB6+ò5^o³ò+ŒkÛÙÚÈÚñ^Uï+)äwññOÖ¼»Æ,%Œ™jÿ-:0ÂÅcÇês(¸WÀö»æÒPÁ>hØÒÅ]Ûð[SB¹÷úF|Go™«o:|nLÝx¬Ÿ»F¨/öïîVOò^{9\|ü“"~%žÐiµ>ã(€¼b†úlà },à@Ãø‚‡¹%„úbWëS¥ŪԷo¼PÀ·Œá†X Û¥‘ ò µ´yOãÀ]Ö®Ò;ŒWû¿o¾á;zÐLýÚË«üÞÍ€á÷¾íf °5†Zô‹×»Ä U3žsL¡~ôýO>?éÏoîz{ mÁú‡ç‚PO }féÀüä–jX¶å¥U%çªÎ·YOÕ½DçIL%„àTí»éñ“ ';´2Þ^©’ßf p¥ ~%Vîën®@¾ Ìå›9ÐêÅ­Zß ªõћԕú¶Y ¤$-Uí«<ħ_ecÀ]J«l§rßM*÷Aã}z†j~Ûª÷e/¨ÖWÞX—¸ÇÙ1…ô}é©ûRš»ö1Žãà €zx m«rE/v¨˜Ñy¨ EÅJZhŸ«âÊ|ªñ9g’ª=ˆpÒ˜/J<7€tû 1µ/òªÖË, õ äЊšªöUôv3À·ùÒw”¥éP_-ï/'á>h¼SÏPµoçïm°r_¨tWƒè`Ì0[ _lU­ú"Ømƒk•ú ³ßyKå>ŠRb¸o³*_%>ÕøJ>8‘·œÔš‹õ>k¯Ú‚p4?Áï'Üu|óg­=Šù9(|xŽTD°¸¶ö6¼ªõÁ|Ÿ½úÍ¢j}Â:N…[ì óÕ©«P_­ï7%á>h¼“ÿê‡U~™Ã})¿¤Øý`Æxαê#Ø4çí¯_Q­V¤r%Y»j_a>gM%¬ãJ})´Pµ/á>èAá¾B#)bö}²„/8¨àÖíøîèsh—`4äj°Ê½XÕúúèÍÒJ}!x@ûæ†ûæ>D­¤BßfïFe>Uúúsþð~Õ¡>[òÞ$Üíë%ÜçHƒ¹hüF¹rß Uû©÷º­±™ÕÌ)×+À.*öA6¿À>çï¯Y­/Õú l*÷Q‚÷?ù<ê–5¥ùõºë-óѧÍpŸ ~Оܕû¶Ã}ÃÙ—Y~íåípÈöå„Vªõ#´#š†T"TȪ>°Õú`žÏ^ý&Jµ¾Ü>|ç­ëÔªê|ÃÖ‹¾DéÀ[©Ô—â3=zÖ\å¾Éã'ªøA‹7†Ì•ûnüîó×ÃÅÇ?iê~) Gîù…sêóKƒ·ìƒÎ©Öä&àGM ªÌ·¹­n°­n·„úˆB¸¼A¬î^{9\|ü“Ô¿q›1>38 Â_­Î5Wè‹`´£ª•=Õú`ž¥•úBð N5=@^)ä7ú\»DÑz¨/æçk¹r_ª÷A“‹+†ûr}ÄHfï<Éx €c¨Úä"Ø[2X«Z_¬PŸj}P7UûÈíýO>¯ê6l³k¬ws¬·8iÐK¥> O#ÜmY+Ü7¼ör!¬Z¹¯ JË럊Ž+ДAB}ÔI°Ú`Vh±ZŸmyᆽÛíÂRÂnóµ\µo¢z4¶@°b¸o ø¥þˆMûø;ÎÀ‘T€¾ öA¥bVoÉIµ>˜§õ-xüèù–¶Â|°£ Ñ¢£ÇPßùÃûÂŒ3÷A;Ư~X5à—¸jßõ½qºg. Iµ43ž¬c¬ç¸¹»MuìƒzaÁCÞµ¶áN#ÔW ?R+d;^a>NóÍ&ÜGUû&Sõ>!?hä&²òÖ¼™ï‘³î™%ÅTqkŸPp Õú€—4Ô%Æ"ïZ¡>Õúàt­WêÛg ÷}ðéNšº×zM²Ú8O¨o¡ó‡÷» åŶ+Ü÷æ¾µ™Â}™Âvצª}wÞû6ËÇìe®ÔÓçé`¬p`ÔÉJ-p¸“häÎfõ>!?*5´v]RÇxO¨/¾) Ø{Ûn†ý„ü ²ËW?d ÷ ¯½¼ZÅÀçLB_´<·N±ZŸ Tl°8•]´— ½ÕmÁ£ZŸJ}ôfnµ¾–ïíÂ}Äa+•ù˜3¾»Ñ•/ùyB}ûŪާŸîƒJï=™«÷ g_×­mÁkìYÕXÏq…FúÞ÷?ù<Ùû‹ìÓ—@½¬ÀC%†aXê[K¬-x¡'1¶àmчï¼u£Š”v»ÇqÇÑ8Ž×mŒï69yŠȳ½ïsŸ\ÜxuÈ]Io<½¬Ïo¬@Á2|!¨„`T¬PŸj}ôdI¨¯—T~f¶¶!ŽÅ¸JrùÚH¸o7!?¨è¦óÕׯ,¿¯p_‹[ð *6x}ú²”à†:.Ôˆ•úroÅ+اì›ÏV½Ë–60¶»Ñ}Çø¹B}§±-o~¶í…ÂïO™¶ç]{[^Á>j8¾Ž)ÔÑÿ¦ØŠ7rµ>kP¹—4JŒPŸ@½™ê³Hwiªâ'àG.®=J!\F öUñøƒÎÆO篯î+EŒP í_s ÊývÝd ‚}P0 ¼Ð—%•ú¸é¶mzÿ˜Ã¢8 Æv*õ­èüáý(UûÎ=s š~@†ñœÏ@ÓOMm°ju¨n^Õúà4¶ß`²2Úïìѳh[ûöìñ“‹^@>ãW?„ñ«òü®ó×»oo[ð:¾@ý"o›ï>ëþÍP±ˆ&F˜ [ö+S©¯ ±*÷‘Æv¸OU?hèf˜qK^•úÈɼ@,‚}P¾â«õ¥ô©ÖGtýª¡jK¦€ Ðe:‚~ažñÕaxíå<¿+c¸z™~jh‡p(uö]ÉÃ_¡>XnÉ6¼,3UîÍm ªõI{ÖËÖ½è†Õж¼%~!jé¸Ò—¼Ê/˜3@E÷:})Pû lÅWëVê,>TÁÃÝzÄÜ’Wå¾õ¨è€9>ÐóT@[¬p³©Ö˩ַ>Uû€ ¢Vê«ÇÙ£gÑ‚̣¢,¼U^µ¯Åj}”iÉqêƒïs ^úh‹Š}À,B}°ÜÜPŸ:Xæ£w1÷¯ŽÁ·ß9’‡öušB“ÂxíRÑf €¾ú! ¯½¬!J9惎'ý:ldþf 샒fÞ7¬ìA£T飇Âoïò¹‚ãDÏ©ÒW·³GÏÃB úAA7Íó×Ãpö¥† :¾Ðq€&Y±†ÆÝ}p/úÏT­ m·U´[Pñš7 Cô‡»aùió~Ù²Úa^œ£@Gý‰ 4JÅ>ÈHµ>JujXï£w¡rìç)-/˜¶÷¬ÃîSÁ®nl™¶ãUµï–ö+ÊÜ ¦ãm™ÖSb¬‘ø"%°M° °c!pö _Š }›bWëS©Nã±ÄX,îƒ[Çt‹€­ëüáýë0^L~u±U/¬0çî2ŒÓ­¯P¡>`Á>(O±«JB}°Œj}¬-Å"±pÔ3–ãtSøNÀ‰ dº™ ÷½Ø&BHEQ­¯þc5 ƒãA1„ú€}û ,V“ˆ*Çâðæïò£G*õA¿ýèI®íx¡·±ë+á>bšûÅÇë6:%hynkâ \ˆÏ™])·áU­–‰Q­Ï=;>ý¢¹Ï´ö·½K ø-m—q-˜³o,­“ì+WŠÊ}Ž{Ûýhò¾—1Ü7·j_©s§%0óÁú£cXæqr\XÚ?o:u-$ÒÚç|Ð0û`E[ Ý̾…úÚ7-N«àGGc¹Å» =›ý„ühEÎÊ}¶ä¥õñÀÒnI@Û¬*·ŠY­O¨Þ|öê7ªõ‘ÝÚÕú¶ßKIïÃÂ/hœ?¼/ÔW‰”Çéìѳ¤Yßö¶½À‘7Úó×5uŸÃãhNŸ™&5œ/ÖJ€c¨ØeX¼º—r^êaaÒÙñÀÇÚMá¾T!¼éç {¶i;ܧеÊYµOÅ>_ô*x,ˆã«žîîÐ>Á>à XÕúTê£G*õ‘[É¡>[óÒ Å´àVÝÎÞOZaOÀ¯¶ê…~u:`4§‡nœ²ÞáK™À±û`[‹¹Í¯ð õ¤c1²èãÆ±L½}®€_??¹î(”`¦ã1D\ÃQ­:!Ø Hµ ïÜj}‚|ô*F…¾Mç8D O›‘„”àìÑ3á> (9·ãsïne>e^èØmˆêú Øëjn…O¨^Åõ°¾Þª,3OŽª}“]¿Gد-¶æ¥6%‡û SÐÁñêsœ`“J}À\‚}À TêƒõY ãµ+ϽÿÉçªßÑU—¬ ¸MÎpß6•üÚ5…üü(þF™8Ü7ž¿†³/Í ½„g)Eâµ':ô8çµ@+\x—‹MQ.¾ØÛðÎ õ… ØG¿RTësÎëƒO¿¨â}®¦{ÿ“Ï£½§C?«†¶ÇÑBz?cµëÃëç _µo­pŸs¬~}ïL\µoN°¯”9Õ’À‘ya¨ò:nu\cŽ1úéœoÓ9 }R± b‘Ž}Ö¬÷Ñ»¿ØÈÛþ÷*ùÑR—ë [‘Ë,tεÉ6½}Ó´%ïNªˆ9†”y|¬½°}>”~­;g _‚}YÉ‹ªõ”EHV§yjÂ,S níÊ}›¿_ȯMŸ\÷HøH1UÕÐ/Á>X‡U>àÅŽÁ®”è;TµoÓZ[íB‰ªûµ~›ïÁùØá>0?$-Õú÷`mV€!“aTëƒ}öê7 qÚ|ƒˆJ Ó=zvý¢Ÿ\ÜØ¢Ö4~õCq÷÷ž?+\Â7®1Hpªk蛊}P±»îEù9B}°>ÈY¥on%©c«öAïTF#FŸ›’­zÛ³îSÅUç5_ý†×^Öæ‡Us}A ]‘óA°ÖPÔl\¨æS­- pLÄN~žð£AsÎ=îk̾ ~ ’Â7ŽÄ#Ô\ìƒ ÅªÔ·„PÄc¡ŽÕú„6àE±«±¸Î¸íü(u\á¾>lþýH6¿QµãC ç0!ûñ^9Ø7œ}YÝ\kn@Ìx³¨q¢cÖÈ1rœHu^Å~ÎU`›Š}P‰ªô… Ô±Y¬#áŒè„új?€»ÔŒ®7ÖèŸK÷Ñ7UýãE€¼]ÏõäÔš°ƒ`¤ž™º(8·Zô.f¥>ȱïm–L¦÷_Kå>ŒÅ®¨ÐG}oAÀâ ú1W)ÛñðJPB@¬£s]Çq¢™s$sßí˃ÀQû 3uày‡`ñ®{©B}‚F`,F=võÙk†ýÎ=sá A?NºñF ÷ç¯ÏÞŽ×<‘cc:NóT=0u'ìƒ ÄÞ†wnµ>ÛðÄÑZ¨ï£wÑzÕ>ߤ¯ñ Ý|è7¶p­Ñ‡µ«ùM¿×yÎ1ý€ÇG1?¨ã8Á6ú'-°˜`p¡>ˆ³ ¯Åÿ¾¥ÜzW.¥ÜzrZ²Uz ª÷1ÇvÐo›à_JÙ’w屈¹"¬pM¹¶Xå¾7ŽÂ|@TVT!‘a6žŠYAš[­€eR†ú–ŠÜøèÝ_ù¾§!ø†}­c¯iü5–x½À)çÛšçÜšÁBÚôøÉÅ@ cHÚ%ÔG®óeÇA¨HAÅ>(\ìmxçP­Tëc™’C}ì5¸v+9P*ô ó±¶5·çÝü®bÛ ÷©æÔÂü`µq¾ã@wû ½ª«õ õ,SK¨/Ö–Óç}ÿ“Ïk>lƒ‡@Æ\Pj_Âz•ô„üHi_?¿nÐnÇ{r{‚kŠbΕ<€’öAâµM„`Q¹W¹B}ÂfÌåÚ¢Tkü6·ë„ÔTõkäF-܇¹='¬Â¹p5O±I_`±¶âS­/û ÛðöâƒO¿ˆö³rV鋨ˆ)¡jßÌcaŒ\öøjg7[úµ)­ðs½°&A¿Êîã ƒ}ÃÙ—ÅÏÅæBŒ=‹[:N•ljúq‰@ û ÉJB}0_ŒP¤ D‘îV® ªàiì¹'¬ò;æwºo‘‚j~•ݼUí£”¿Š\ŽÔ2Oö 6ˆ|QEªÔ7‰Q±O°æS­¯/1ªö¥®Ö—#ÑJÕ>Õúš_]w«©Ÿ-X»ŠŸkŒ5÷Ur_Ÿî+½bŸ cÕŽ-§FŽcÄŠçžu û qB}0ŸP§j!Ô7ýž’!ôcǃ•±…k rõå“ÒúôÍ÷ãº#¦Í ~a¿¾Õ03g\ulé85rŒZ%Ø‘Ø&Øfa¹/­„ú6_Œ ÈÔ.kVî£.5Ç9­ª%äçz$…í°Ÿ _7õŒ[òNk5æfÔH°⊺RcÞ9Tëƒ8ÕúhOêðÞ.k†z¬Üç¡ïúrWé[û:ƒµî+%÷ï§¾7×0§ô+dÌ•1Ü·ÒøÅØÓ×,Ÿ/›øB¤‹érñ©¨`Ÿmxát±}î¯uúàÓ/vþûÞ}Ûb…?rWí›qÜŒ×CíìJ{ºÎ …~¾úý2N÷ g_;GHª~Üé89>8ÿ–Ü_lå$£b¬8é/@½S¥µ•&è¥rŸBåŠ^¯5`}›÷;}EŸ¦Š~~™núUî£L ;Ðü v1šHI°≲škûÝS«õ õAÄÎÀârSrUëë!<ðÑ»¿È^µþÆR½_g°äÚP¹ï¦©=ô}ÚܲWÈ/ñ ÓpŸy#<×Ò§ êœÙ",¼ˆž/<-º˜bú&‚}pš˜ÕúÜ[ëµ½¯PßM1©~sŽís²n4¿k Úìï[¢/AÀ/áøàÈ`ß’íxKۊ׼qÕ±§cTùqrl(¥¯°Ž¤fEVv÷Á½ÕC}¬§¦€@‰x*ê;Ü6Ú§oŸ\ܨäGÄÁÀW?TûÞUkôœËvý¸†¨¸wòÉ öAU¯ö©Öð¢Õúj ÊÅzϽû‹dmœ«Ò"QÆO¶ßª3ü„üú%à—h`8Ü'<ÔŸ¸4žãExI@[TëƒÓÙ†—m©ƒa‚FôfÇC;>( Úò6Ó÷ôe;Üg«ÞôÆó×mÇ[Ìç0oàVa%ßö.e ^Õúè]ÌP£…þ1?CAÕõ”pI0NÚ³µÖ˜úü¬Ó õÅkGÕüú¥’ßr5oÉKycÑYç Ðe¶y‚ãCõ÷,ç#Š}a¯ €,èµ"eÐLØc¦àúº±/ܧ¿jßã'ª÷-0|õC^{Ù¼‘Ùl» ´B°:¦ZÀs)þ´øúL1*}ôî/ÂûŸ|¾êçñ€5é5dÛ](œêrëµ·þ«]Â}åŽWŒûÌëÌêœw;F”v:k Á>˜3k_þˆ½/0OÌmx-0³ötL ko¾qÇö”…ÊêÇqؘWÚ_U¿–mö{B~'öWí#>Uú}Ðä¼EMøg]@©‚}ß?ýî¤?¯b½ìcG¿UOåcC–Vî›»•òfЄ(בmw !¼dîk³ï>¥«84fôÓçõÔrd§±#Ü7œ}YÔüíÔ¹„¹cys:ÇÄ1Âyyê_s^¹¨Øó5sêƒ; ylñ~¾)˜—yk^¡¾¹ ·û!ÈèÚ"„Ý!–]ÿNدŸ.ãˆ1ÕpÕ·\m°uo¶û:A¿ó¯ó×£„ûhz÷Îæúõ“ 'fHàýO>?øßgTì3>þúP¡”¨€ÉÛ'ÓÔÁ—2n³!„Í-qëëü:¯ög{Þ2 0ïép„úÖš˜‹Àþû/pÓKšÛõçÔj}útÛïÖl ÷mWïú‹~m$óQ¯‚sÓ{‚y.SH««¤Êfø`¸Ù‰Ž­ž7úo æ9ÐX=÷UÒ^ 8W€º(gGÌ×—üå”ÛðžBµ>ÖPhE6[ç„ËAÓkcÌ£aØ©Æjxª÷­4yª¸RßÒÏ|õ¹Uò#™ÇO.„–CãW?\ŽeVëÛqçàˆ4‡ñPnäì;µZŸ`\úìÕoÿ ÷ΪûôÅ.>þ‰ª3żÿÉçs«õß¼&²4†JOuk!$×kß³ZŸ¾õàØ£ÉÆÑ·ë—×tç½o£ý¬¥ýל¹†>S;;NŽQ®vÖÆËúk ÀšlÅ ‡Ù‚ 1C}àš8à%xó;Ý…ûTW[y2yóÁïpK?<Ö|ŽéçóÛìÏ„ü⌄5šï‡)pŽá¡O¸e¾m2{.ކªõ… bL–Vìs߬ºO_l ö©Ø·ÌÚA“q×ÃóæHýû„=ê×b`¤‡~˜/Æ6¼Ô'F¨o»R_UŸhîZ°ý.Gi5(¢0Yò`3f[F·”`3Xê^‡Çg7iætÚµ®97Ú€Ýû`‡ $©ªõ·?ßG(d¾ó‡÷m¹Þu BGõo½}ÎÖús}lý]wÎ~;çùè‘ÎÔÙ–¨eÎ-|™§½µ3@ݬöÁnV<€;‹¡lñàt¾ì÷ZÞ`L=¾9x_`C¿æs S¨O©˜¼÷­¡¥óSð”b/¶•ª`©¾¥}Àµ  öÎe„`çÑ…‘ªZß’mxßþú—®Å؆×=³Êþ|¶ííwQ¹o™Ìø›ÿî8÷“úh‡ÀrÝýzŽþÔ¼EôíMÜÈÜ?ôåKÝyïÛ}Ü*ss͸íª=#m­­õÕÆÁ@v¶â…sôÖ>P@Z¶å¥k„>„2ÚêÇЯÓÕh‚•&©凛~µó×]AT÷j¾F—F†a¾¡öù8_RÌg,Á üÅEŠŠ}s«õ õÁ¥¥ûÜ/«ìÏ9¥bßDd™ •¦šû ô±”P_}{Ž>Ô˜È=À=Fÿ^UûÌë´cónÇI[×Ô†-¯'åS±n*2Ô@>s}žÈI ¥úÚéÛS‡úl;VðöææaÍ{DŠóÙ}g™ÇO.ôõ™¯GUû’Œsiì9ÏW'8_µ%P!«{q‚/ÔÐF¾„‡§ó?¼Ÿü~  ‡aج2<½@_Õi{åªÔG]Æq¼~Õ| Ï=»~1/ä/n\wÝŽU×îûpŒ A¿ªsV£b<·heI¨î,Ë’-xwQe¹„•¡¶ë{Í-(Ú¢R_kôù™B}ƒ±PÓ㣪¬û“{À$E°/F¿'¤–¯Íܧ'í­­SõÇWí©b°ûàj~^êê8NiÛV½ùÆá¾òïûCeç¶@‹û%Ò¶mký¾‡ÂmÇáæà©ºƒ­‚­ÏmzëƒmCÜöq2¦0~«ù´×Àš<ÙF õ¬Oˆf™ó‡÷S?¬‡a˜^az•bãýŒ!cà"C»CÓýþôJ)Gµ>•IÚ7Žãõ+\>´ž^U±%5±+oǼƖŽ~•6?íy¼°&O›éZ¬’TÛð.©Öúó%R> î[.SÈ,kxîиd­@íÊ4C»S·ÚC~gž øu.öx^˜¦žùœ9{ùÇÉ1Ê{? -ž2$&ر\Æ rÙ«øíò ô­ïÑÿ”sb‹ á¥Aµ¾¾müB¨¬‚Ÿ€%^OKljPç¢öîõPh`m/iXöີ±å]STë:ìËg[ãáßÜP½o¾*÷kŒunæhCÚ$Ð×îñK|ßðÄžÃ7¸°ÀÕ=n•Uðsï£öyOk¡¡¾¾îPc7¥ €"&'&Øt{òG ö¥ÚŠ÷û§ßüw„ú`·Ï^ýfÖßs¬¦/Ÿ¥„ŠÂ}Ë©Âs<†>öµéÎ{ßZ äñW5'{aû÷ŠØýe¬þ1Æ—>Zê«…úÚ?^Ž•¶n ¿ìŠ b,*ÔÄ#Ô×.ÛÂóô~»Û…~ô¹ì'{ÆfÅ ¨§ñBï÷ÉÇO.š½o\|ü“ÔaèÙ×ÍÒùK‹Uû0ïç/Àa‚}4kn¨òµ²8ûæwTí‹DÀOH¡gB}mKPñ¤“¨öþnÇI)ÑÕ5#Ü·çzë±Á±jŠ;ç‹&ÚtyâG؆7eµ¾9Ûð†`+^ئZ_óýøl%lûI¸/¾ž~}öµÉö»t4Ž[ídtm÷³Ù_Æ îÔÚۆױ"^{këtý­­x€R¨Øêzá[ìpI¾v•¸$IJB¸×mî²&lÍÛî¶¼-oÉ»=/ª)Ø#(fÞö®åh ˜ Š…º<ñVìKY­/„yûûà&ÕúšïÃg+­ZßDÕ¾4Z¬Ü'Ї@_Û2Qc*ç­r‚ö|mñÞ«?MÑ_ÆñÔÒ§ öõ1ïv¼ò´·vNz öÅðD 3w^êöæw„u8x¿™‡ô-}–õ4&B}íËìƒ Ç}*ø¹×¬Ú·ÖPµ¯ôy­`_ónÇ+}{kã¤ç¯PPœ—4²ЙB}!\>LîKg×úRÃ~}lö °‡”´pgŸÇŸ=zÖÝýøñ“ ÷]'à0DÓŒã˜,Ü·ï箪¡â!qŽ—ÀÄ'Ø'(±Z홦 øåQZØO ]ýíKX­O•>ª´}Þ7Ó&ÙNêiLÐÓýY¸¯]©+ƒ ñ鯡¦>nû¯kA È¹Ž‰7Nðmà ›» o¤+è¿g©¥Zß6Á¾òÌ ü ê1—PE?oÁkÞO«cÁÕNì^îí-݇JÝŽ7Æ\§uîaåÏ·£¼í®½“õ£ÆÌ@‘TìÃàŠ€&áé·ßõ´˜®m„M’_ªöÕ¥–ª}ÂRä$dVß=ŽøçðUÅ_€"y2Lo¬~P4^f²ý.lNþ3üzÐJ¸/Z‡+ÜGçý+44~6FŠö’&J¦‚À‹Þ|㎇«ÐðõM»lÁ ùM”árP=röèY8x¿‹¶Ü5þtßJ{îš a®Íæ½ ç0ЫoP€ïŸ~§`eI©my¡Í뚆'ßéB}ª‘Ái×Kt½lÉ»Ëã'U}á$Öv¼!”ÐU—÷ú¸í¹ð|œÏ@ <9‚#Ü}pO#T,æ<€„úŸx§ õyÐGØØªzØ|…Ha¿žÃ}¤?o{' ¥MõôÊÓ#¨ÔÛ_¿¢`‡Ï^ýF#4ÄÃ†Û ë˜Â'ݶ߅n¨ÜWG徿ô³Lòa•y¶ónY{[Û(ï°h /iº™­Ï\@I]­Ï6¼iõP­o3TÓVh€P_ë‡úl¯§«ÿuQQ…Íþ¿—ÀÐ0 Âe‘Ú‘ú®súå)ݳXJKÞ|㎠Tt½Òðd;q¥>ãˆw-mnÓVñ±%ob}ù§„Ôv5¿]¯¼ÿÉçáýO>wòUÚORo¡]_üëZ¨‰Š}°"Õúö³¾Ì›oÜQ½ ¾>i[†íwÝ$¡`gž…ó‡÷»üìÓøÓ½®,§³>øô‹ðÑ»¿ˆò{ù ý5Ëichm ÔF°ž˜µt¦‡mx™¨ øAY×$íÊè›*Šé®±0\~ÃdÑBÏá>ê—2÷þ'ŸÏÚŽw_žÓÖÔÇ“%¨ÐÛ_¿¢`‡Ï^ýF#4Â"x\ÂD°þ5è:èOÏÛòÖðÅ’–¶ã5W$AÊüí­Íõ›<]‚•؆€œ‹ÀuGâÉu†j}@V’²44ùð·´wƒç§6s~"¨ ÔÉS&ºÐÒ‚Šj}€>›%„Œ ý5&Ð×Ù¤ú½o…ú 1SŤ«­¯ NUí+[¬ª}­IîK¹Õ/qûBòÞwHb! W÷t€êxÚÜ}p¯¨÷#Ô@ BGîÚ‚Ä<„ ÷•Í–¼»}øÎ[EWïó…0í¤½9–Ð$Põ\Ó¤†.NôËE•“Oö”Á¾9[ñ öÁaŸ½úͬ¿ç^XdŸ½˜êÇ©áa+”L˜¯o+õ™»ÃúcÓÅáùÃûî—ôé-÷×|úEÔŸ÷Ñ»¿Ðօίµm¾öÖÖÉÏgãh jžBÑË„¿¨Pûl2R½–]?t<™ÎêÓÚ°a€8|™¤ ¥WñãæÜÚü:›ã>›'Q°‚9Õú8žj}§P‚ã¯X2‚P”vM.Òó–¼!ôîë!Ü+à÷þ'ŸkëÂŒã(•¹½q½âiì ZôÃ"*<'¬·_#BÖj}°CYsá¾…J÷ùrÐéTð+J}Ú¼Õ6è•'Sô ‰§`oýŠ# 4-ÖB­rË /ÁÍëAè•“è<¡¾!_@€R‡­šnZðSµ¯ ¾H°N›ãž pO§ 3ÛðPa&reÇ:c¨(K̆ª}íWí6;ÍûŸ|¾(à§½µÃZí=·Í…úê»w¬å%MÀ!›á¦’ÄBÌs¶©Ôl]«.ÔF]|ü“(}þ0 Ýõç¾óVøàÓ/Ö¹(;lïíÏ?—qG^Ú;Û¹-é 4Á“+šžô·òMUÛðÂí>{õPyŸƒmxÓ|¢ÅsZuJJ¸¡x1·ªTµÏ—EZ5wKÞ’æ•½Î§Ñæ ݯJ ž^p!(Z:—ᨉsÚj}×O†c††€ä¤:zü䢨€Ÿ-y—™î[²/§3îX§ÍчœÂ“,Èèû§ßi€-jë%E­ç­p*'Mš3„úŽ#ÔW>a+rœcÎ3¢M”‡úTê¶©ÜוûòUîSÝn7cî']ô@“<ù¢UÅUë€Þ ]‘ê¼rnu’œ¡RÐ$×x£.>þIômy{}øÎ[GüblË[}Ç" ¸zû«ÖWí ´Ê0šÒÚb—mxh±Î#>j¤Jpˆª}!<~rQì{S%<®á¾ÚC”1ß»1Ÿó°@³^Ò4È*l c•üà–2ÏH-eµ>Ó¡MÓµ}F‚5‰Å?¹èâÞ? ƒ ~.¹/§½µ9Ð:OÈè’E¿2ØV¨o*®qÛ¹á!ëä8]¨èlˆ»ä/«Úw©Ô/€Ä®Úg[Þ<[òÖØÎ±«õû.@<%ƒ ¾úF€=·Ø<œ4Hµ>èÀÖu.dGÊoªõUÑÞÚè§fXªöÙ«ßhh€@—ãïø³êÄ8á¼Zú+\ jߥ^ªö… r߇ï¼utÀ¯õvŽùÇqz¢uÆÚ@û“{š9™/½ÐwÜKòÞæTì{ûëWT8ÂÜ`Ÿû_1ýöb)¬±žRà—%Iê3Þ€îǹ³;ó‡÷5dáã†T÷÷ŽK|úÅÎÿÑ»¿hºmÁ[÷1ÐæùÚ{G¡>  ž¨Ab¶á€ãM•Û¿[H>~ï[•ú€Ôf÷ªö•/ÕŒz¯Þ7IYÁ¯Ô6ê«›6_÷œhÕKš.¥ªÖ@:ªõµm3¦’_½ÇJ”(Ð÷¼D—»Ðµ©Xˆãñ“‹bÇ»æ#±î1Ã0t?™Â}ûª÷Åhc÷mvP Á>š`Ñ8…E{ý6õò«ï8A©Vé3Æv}Â-y1or¹Y½ïÃwÆèóÉB”±>“±H~Ú<ÿ9o^ «ù“‰' -,:™SUì›»ïÛ_¿âÀÂ->{õ›YϽ¯˜~{ÕúØ$ìwœíàÝÒvä£6*õ+ygwçïkÈJÇ1ï9î/ñç“%µ·-xë>¯´yþó^°艊}t½0ꀺí{ÐÛ{àï¶ào¾qç¤6ä£f*õ+Rµ/‚’·äM~Ù–÷…ûn UàúÚ8Ézî+TtG°V˜ÑtDµ>ŽÕò¾±l ëуԕúR9{ôLÕ¾Êç,±îA¶å½ij‡¿ÔAÊB‰­p,êjsýÐ#Á>º—ªZß\ªõ@)l9Bƒx0OªJ},Çö‚#ñÇ\=‹üò¶sŒ{Ê>Ày÷kwJ#؉Ì݆¨Ð”)U¥>s9}G˜¹Û€ª}u»øø'IîG¶ç½”s[ÞSC•B½ïšÇÑtÉHºVZµ>àxŸ½úFºpöèY8{ôLC\ÉQ-9¦i[ÞØ†a ù«§Mí~Û‹r©ÖWW›ôL°4³šb^ ›ŽÛB8©'»ñ«# ã8ªÖ,û.N5÷Õ+U¸/™žç˜Ž=\ßNt [‚}€mxÒIù@ €F&ºi¶àˆA¸/’Úªö%?±¼|Œä׊sLÿÛKš€Ú,Ù†×",´-Q¥> ÀbÓ—”RЧðŒûV_†apÌi–j}@ïTì£j-}ÛÏ6¼·S­€ƒ\¡>Ìkº®Ž5Ž£Ϋ‚,¬(ÔtO°€ú'·qC}CêÒ±/¾´”˜{8p³³/Àb‚}tëîƒ{:1}³ÚÂ>4:±ê3nj˜“÷…ðøÉEÕï?e¸o¡Øq]Ìé»Y復‚}40Ç×}PÑ€“ÚøÛïä °‰pß-'šp°ÆMμQö@¸|ˆ¨* PUûÚàKL,%À©´5@›û€ì,òeBy ^- äk&¶å…ô ªõÜ$Ø‘}ÿô;õ‚p P1Uûêߎwb[Þî?ë¢1‰ðZ¼vÇ1¨âœÿ<êxÑKš€ÚDªÖçá!݉ëñ“‹ðæõ‡y3ܹ2-§ÆŒýÂu‡0\vRe1¢~V{TNÅ>ºt÷Á½¢ÞÏÛ_¿â ÀþòÏÿ,üåŸÿ™†èPêÊtiáyEUY€5û¢¥Tí3:ú„ë`[ÞˆŸ¯ºª¾‚UË®ÖîN^€û "ÛðB:}ÀõDvy#Õ pŒT_rj13´¸üÇqØ|…ç¿X8Ä«÷±Öõ@|‚}°2ÕúàvB} ¯½¬¸œÄF õ©Ò”4ÜñCTí»ÜŽ·E)Ã}­„qr~Ž­1ÄÒß°ëç³Î9¡í×¹þTëØO°€¢ õµgp*õp›VÃ}%ÎÑz·UÕ/ì©è7“ÜÖðªöùü=\GÀ‚}T«´ÛðB|B}¼Ð÷ ÷ô;yêÛ|øP‚­ª_°Wªª}¤¹®må{õ ‡Æ%Æ*ë3f °…(’ì£fÕ¯¶Ø†öêcá>€'®ËC}ÖU u—þÛñ¶-e¸¯æmyIM9šmkÕún'ØG•,Ð@Û„úØ4ž¿þâ}@¸  ë{ßF õÅ’Ç»‘+E=zÖ}À¯åíxSWî«mÍ-ÑûJéz:–kœ*õP:Á>ª²ñíáÙ+.wÜ+⳨Ö» õDޤõpŸê}é‚k½†Ö%°›`P%UûŸ¬Æ©ÔÐ-Ûò²xÎU@(lz»^)´º5há¾S>£J}ÔB°YuF©Ö„=Ô7xp T&ZG¸¯m©·å½>!W…©4w)æF›RR¿Ðjˆ 6Á>Š ÔǪö48IêÇQ¨è^Ïá¾–·ã¤Þ–—r¦¿Ñ~Pc¿S>J}ÔF°€Õ õ±„p@CÔÈ•ú´(P“­À‰>Œ²æ]™Â`k†ÎJ­ –*ˆ¦zk;ªõO°ÚøJ%/îh`rªRÌ–s[ÞTá;A³æÒ•·¹s€Ö öQ 5wÜÓPÕúˆvŸî¨wb9Ô§EšM•ûôgœ*÷¶¼›!¿¯•¯»¡ô~!$ªäYÒq8õ}ÏhC2·»±:À2‚}¬F¨Ø„û*›¾÷­íw28{ô¬ÛÏþøÉEwŸ9g¸¯‚F[ƒ© B~*õ¹Öz!ØG®kŠýZå÷O¿sàD9C}|;»g÷Ô1è³ý.Ðìð6Öê9Ü×£ÜÕûÈÚ'd[ä()ä·ä½#Æ;ä%Ød•cA]¸ ð‰häP_P©˜7?*z¯×¯5Æ>km¡¼ô÷õ¹Öj&Ø@v¶à%á>€B'¡ B}Ø­mcý Uûú£jß~§T+Ûß.·½–ü\Ê9Îä'ØG7î>¸—äçÎÙ†÷í¯_q@ 3 } á>€Â& ¶ß`Ÿ\týù…ûnŒ®_¥Ïgy;¡’ªÅÇ„ÿbWܨnÕì£Va 1ªõ}6þ\CVj‡ Â}…L>m¿ p²PŠª} ÷ ÷ŸÇq,"Ü·ö¶¼ôeé9o^€ù^Òäb ^Ö2…ûƯ~Ð+HQ©O«½˜Â}Ãe²Â™m ÷%Û×p ±¯IèPÀºTì£ ©¶áŽ;Ô7§jŸíx×UBû«Þ°Â¤S¥>€(„‰–ë½jßäâãŸ\¿:š¶~U³-/p<ûHN¥>J²îSÁ DÕ€Á€åÎ= çïwùÙ?¹o¾á»Î“Íp_•ü J†¡ˆÀíæ{PÙóÅ6aÙ9¾ð8›,d‹æ•V­ïí¯_qPèJi¡¾aTîãùùðÚ˪øÄžd¾÷m²PŸÖˆçìѳn?»Ê}»µ^Á/vÕ>á18x}»D ØGÓlÁ ëR©Z÷Dš`¦ ôy0ð¼O„dZߢw†±•my§/.^½¦Ï¥ZŸÀe´skÁ1p¯ˆ5G3Ñ¥ø“ôraÖ‰š#Ø÷ýÓïNúó*öѪµB|o¿ŸýwÝWéÏO?Nç¯g}Ÿ¶ç˜'u•>÷m€ek$ûôº%oÁ–¼ëÞãWUsðhknm€´ûøj„åçVw×@‰^Ò,QsU¾a,öf4ŽcÛ ¯½,Üp¢”¡>÷jRyüäB¸ï›übÜóO©˜*T8 ÃXSI˜ïôö2†œ}~P+WÌÖÂV»/Ùy^¼ö²íyŽT6XÅ TWA•¨“˜³GÏ4,G›¶ê͵]oÊßSÖ¼[[¢Új—$çXÄ{”E6€ÈT죬€½>¾h;Þ|“›ç†ê}{%ô©Ö…;¶’_®`3óPÕù¢µ£±$ÕÏoMn)þ$ùíÙ»îeyß?ýî¤?ÿöׯ8¨4¡´j}KÃ}!dêÓO?.篯þ¾…ûnÊP¥Ï\àð¸:j'yþð~×íi;Þ¾ÇkU»e~l çØj„ùç`×@ë¬Zp²¶àÝŶ¼ì=7lË µÛÕ‡ÅPØŽ—ÒµRõoÚZwGU¾íÛ›Ým@ùû`Õú Ÿ?òs,l¦Uó·å…û®&‘‰+æŒã¨º À‘CTMÇã'¡ÿ¤µm}…øru–Öz´@¥û8Ú_þùŸ]­O¸Ô†×^ðHØÍj€ãÅA«ÚG·È[[oüÜÍ×xõ{ª¯Ê7} ãØWAÇÙzOºsBÃ$"ØGÑZZlQ­Úµºýî¡þÇ‚o!ÇâìË0œ}YÖ{îz@&ªÖ7Uêàôþ3æÏë9ܧj_ùÇgzU1½\O°µnE†üzf­  .‚}0Ó©ÛðyĪÚ7ðcï¹!Üô4q|ïÛ”[ðºÑ, RR<Â}å]a¾ó‡÷ãFâWí“bÛÝ_­^Õ¯ç5žŸÝ= ­—4‡ÔX©ï³ñçáíá÷Qæ´øéæë™ªö篗óž^{9Œ_ýààMèrY3\9 Ã#¤”jkßÖZó8ô{S„Ñz[ãIfêHOÅ>št÷Á½¢Þmx¡ª÷ñÂ9¡rÐêd1]•¾aÚz×¶lqÄ Wô¼oªöÕÒö)ªö]Íùǹf†Q¨/ÍûJõÞZߥ!Õç»Ë[ È@°€½j¬Ö7‰½%ï&Ûó®kªÜWÔ{zíe?€#»LMP>á>á¾Üí=§ÍS†ûn èMfóUS›¯½îÜ÷œl€ÚØOÊu+>€¼û(ò°’šC}°á> ‰IbÂJ}Z a‹¸„ûêhçTá¾v‡÷j®È·ÑWTýÞS…kþçôÞSúÜgòì Y)«ö…`[^öœÂ}@­“Ãt¾.·ßµõ.B˜_¥o—”á¾ÚÕX™oõ9}%k=©ƒ|[ç‘0€•öÁ ß?ýN#д–ªõ ÷µi8û²È-y¯ßŸpPÓ¤0m /•úªÔûv¼!¨Ú§]ëÖCˆ/Õg¬¹z_‚6Ö+zIPª¹‹'wÜÓx°€-xçõW¾õÎ çÅk/‡ñ«4P¬Äa¾ëîÐ= Ÿq‡¶ ¥M)}çïwF5æJ0-t½G•>€~¨Ø‰½ýõ+V–ºj_*÷­Eå>€²»iMP7UûT—«©mÉÛ§Ô[ —V½/õ{Çqê(‡Š}p"ÛðÒ²V«õ½=ü>ËïQ¹o=Ûá¾ñüõrÞ›Ê}@arUêÓÒëPµ’äFöZ¹ÏZD†ÁíJk>¹B…Â|eR±€‚P_,*÷•¡´J~*÷ELþÞûV¨fPµO»•hªT'Ô—qnU½/õÚO®ßsu©ÐP0û !ÛðÂÊ×`æPÇDZˤÊ}ÀZ2…ù®»;—ŠsG«Úwöè™-N9‰@_žy5+Ïñ¯Ö5–‹5×F„ùê b%+n…Ê6¼´ªÅj}k†úTí+ÇT¹¯”ê}*÷Y'{ù*ô]wsZ Bq «ÕÓN­Q7+ó©Ðw¸J¶Y…/W5¾}÷÷€zötN¨^÷ÝLòòú†éåA3ôëñ“‹¢Â-„ûŒ­ê°+ WJˆoë|è¨`$b^XéÚ+$Ô§j_™„û€¦'wù+ô…šr÷Á½d?Û6¼´¨Åj}P á> ön,Øz –þz±³GÏ´$;•ê;{ôÌ9K—„øÚ#ØÐ)[ð¦WÊ7µK´fõRªö…pîðOêÖÙzW5€ÎJ]RN[ĘïzÁŒsIU>€Æ½¤ >ÛðR:¡>z7œ}Æó×5Pµ¶Ý­v:e+^ˆLµ>Èx½¥¯Ò7-šZ‰Oä”-rRm§c[^ ™+õ©ÐÀ^gž©ÚסµC}¶Úeé1©ñK—}}ìƒ[œº /”ªÕ-x¸^0ÝX6g¯ÔÃ`¡¡©ýb/Æ—öÙ–(¡¿ ~]ñø?¹èbK^>ã¦ÖƸ%÷‡‚|l²/¥²"µºo×[ ¦Z˜÷0mG‡D{çxPRâ¶¼Ó è|ÒöÞ·¹«õÐ&“‘Zß’W¨ïùœuß‹ú”xÜl· À.‚}4ãîƒ{«¿ÛðR"¡¾86«÷9«Òµñ±J’/ ÷]¿/á>ès²&Ð@š9 T¡”P$>ÇúØËV¼p€mx¡YPmÉGªíĦp_)[óý怺´¸%oï•úÌÙÛ—{[ÞíðÞ0 N2n5X¤ ÈsÆÂFŠŠ}§ûTì£$-Vê !Iµ¾!„Óíc,¾ºÿF½g$ûÙ%†ûƯ~pСa„úN¾/PÕØ9jþð¾FÝÐJ¸oÍP_ UúŒ…ºëSžG*ñ°lÞj‘‚"OÌ‚}s«õ ÷Q‚VC}!ì !„E7P÷ߨ÷Œ¤?_¸Èaå@Ÿy!@?cçè¾pßsµûúÌÕ;îcŸG}DqGP‹B}Ûwö/¬ñÆ2ŽcÒ‡/ÓÖ¼I&dï}kë]rŽMDZ{ûÚ^ß{ óJô³0ÇKš *õnÍ…û)ÜçáA¼c™*09œ}YTå¾áµ—/?³Ê}PµR¶Ý€%Î=SµEçÏÚóHˆµž Ô@l*öP¼T¡¾¹6¾ÉoÁ¶0½Uî›~§tÓkºŸy  ÐݘÙ<†kŸ\tY­Ïˆ]çD„q6D%Ø;|ÿô;@uZ­Ö—(Ô7…Š`[Þ¸<œ8|ïó €Øá¾µ«®•¤¦ÜšïõìѳUÎã Rž[›­x!¢·¿~E#° ¡¾“\‡"þ<«·…Iµ-ïfÕ¾R¶æ^{Ù–¼À­÷½È÷> rk…úÖ qìyâË—”DÅ>Ø¢Zµê;‰ÕÙŽôôàÆ–¼PáDì½o“v Áv»Ü>^6?J¤ôª}=m½kÄœsJ¡bÅ©¤RßöÏ^ôƒ‡a°xœ€oÛ%I滾×%¼ßÀ^gž…ó‡÷5Dáz©Ôg,´@° R*õ­oóAÁp™î+ô8õ°-ïTµÏ¶¼P¦ ú€‚<~rÞ|ãNqï)·µ¶Þ…ìsòaUB 6Á>šp÷Á½(?Ç6¼°®„¡¾”Õú¨Àtì{¨Þ7¼ö²p&C¥>÷8Š jßMk‡ûÖÞrwPŸ1«ÎÇ}a€Èû*Ôbµ¾ ·ßÝûû‚Ê}ÓJðS½Ø%çÖ»0s|< Ãu"Ü·¾µ}ÓyÀ2‚}•ê+ÓV`lѶ¼Â}yŽW/Õû®?³d•#Ôç^@¤±qôpÏå¬ÚWB /•úèzÍ` ¾|@D‚}i1Ô—ˆETn•*Ü7œ}YDÕ¾Þ—d“8Ôç@ªûK´d”ª}ù”æÛ<ö¹çu­ìƒ+ß?ýnÑßûëW4"œzÝ´±ýnªöå‘zkÞ~!\†ü„û ¾¾qùÈ2..Å&!•(-зÖ\÷‹§Ï·­ç‘`@l¿[¥ÅÅ,çÓËÖ¼7ί« ~~°œ@pHìíxK õåªÔgŽ ôD°€ìRVê[[ª pä9v)*÷•Zµïú=Ú¢fI¼Ý.41湥ᾒ+ôåÞ~JïNC!kTÔO°¢l, Ûþ®´V­¯³íwUí«Lªp_¡ø€_¶è…cdôy@Î= çïkˆ…zßrws®ÐÁ>Jd¥®õUÜ‘=¯Ü'ÜWﱋúsk øÙ¢vKè³õ.¥ ƒu™dN­ÚWz¨/G¥>sa gw4@™„úŽ2„N*Ù«¡cyð+þ}nlÑ ]O˜Þû6i¨oÇA¨ØÖ{¨oG¡> {*öQš*WìÞþúG]# ·ß½î<Ê^ðWõ¢ÆÒÆ9•ªz_eWðS½’ß Ä1ð0 ƒùËŠTêƒÊúv^ Á>€Â´V©/‘!„:¶ä±%/·× ¶è^{Y¸î¤®Ò§…èÁÙ£gáüá} ±á¶íxKõÙz /Á>Ša›IhSŠj}=/ô ÷­c# ™îØðS½–¥ ñíºœ´8ômW¸ÏÖ»æ¹4e†ap^°ÔMPŽÖªõ%Ú‚·fQ‚Ðëɱ(¿¹Mo‘'ñUÀš˜ ½÷mÖPß8ŽîÐÛ¶ÞÎÖ»Ðï"ØGõî>¸·øg|ÿô; Éê„úŽVeªmÇiAX¸Ûoá>?8é¾5Ø~€Êæ/î[‰Ma¾žC}Óc#:Yðì€Å^Ò°ŒP1´V­/¡VE‡)Ü7 ƒ‡"+Ç1[¸o_õ¾RSå>?J—sËÝ©Ÿ€ÊǼCìpuHè36¢Ã5€1TºëåìX™J}}™f —+ÂÂ}Ì?îW¿’~Â}”*s¨ÏÃ;Zš¿÷uF¨ w4…°Â•Ëê³…É¡ÆäH²ß¸Æ±ˆTÃÙ—{«úe/¯½|]ÁŠ˜ì¼÷mŽPß°ù*¥o€Ò¤ÚÖ•²‘qÀ|*öÁ¶áe©ªõeªÒ'µvL#]…û<8ÉßæE¼—­pßš•ülÏËšrWçÓçÐ:Uûú;ÔgŒ°œQ”q".X ¾ûàÞ¢ßýýÓïfÿ]Á>–ês¯º …EÿpîíÙŽ]ñJÙ¦÷úýú‘Hæ0_s}.Œ£ÝðÎÞ× …êƒ4ëã8ú¢*‹¨ØÇêl uR©¯ì~Õƒ÷­žWñ+%à·½M¯ K¬æs_šj[dóP€¸ûVP{µ>•úâ~ΠjŸmy¨ŠƒèÃÙ—ÅUï AÐÓ­æÓ§Àrgž©Ú·rû§`œŸ`Ìd^æê;J‘¦ÃebÌSÒ^T…†ûn¼Ç×^îã+…ùnÜ‹<¨¸}n @\‚}”Àêݨ=Ô—Éà¡@ÄÆ´-o´vlâs\mÍB(6ä·]Åïúý üueÅ0_¶Û€Çbã8 Ã`bQ¹ÕúÌ7ÒìƒTëcŽB}ªõõ¦HVµÏ¶¼ì‚}Tíîƒ{2IêBè÷¡ÀÆ–¼N´µ|\¦ ~~ä´r€oï= U±C}}yö±*!zQ{µ¾„¡¾®}kô¹ÚÚýiçç­¬z_~5èÈO¨ ^ƒÅV=/ƒ³OÂû¾úÝÉÇV¼œ¢æP_ê*}îA/ô‰ÙDÛ¼/u¯¶ßõûò+JA¾ëK]_ëÏYÎÞ×  ÙzÖ_/ÇÑ"‹¨ØÀ,lRƉ(È·»]®¶è ¡ÎmzCò[S¡>a>€™ŒŸÖ¡Z란 ¿é­b¥S­ïÅË~ó܃^èCXPÅôT½·¿P߉ç‹*~PCu>}DG«ÚW0[ïB²¾oÎõcá€ETìƒ õq¬šC}‰“—v@®¥{9.…ùv½™¢Äpöe•á¾Í*~× -ìU©¡>ѧ4ÀŠûèÚœj}p ¡>Bæ€×0 Í=°)¼ßÎÊ•Ãå›.>Üwý¾+­àÂî°ßõçú;JÁúv^g@™Î=Sµ/b[Æ$Ô°>Á>8j}£…P_‚mxUë;š¯Z«÷U¸îpK;o~ *B~5üv~®­ÐŸ ßMú€ôó–!æv¼”;7…RçüÎQz!ØQí¡¾¾TM"ÅI5TyZ|Ó›&®>_ñüBh7àwýù:¯î7}þÍj5_g@Â}åP©^×rž«•®AÐÂØb «ž€ ï>¸·è÷Ÿ²¯j}ÜF¨ïÅK|óÜoNêo4Ýï¡ÔãUñbúI×ÃŽÏYÕÔjÈïèÏ_AàïP`ñ…?[f¨op€ÕÇæÑn¶ã'f¨Ï˜ŠÚæÿ5ûÆq”`û"ê{àø[ò†ð<¼²ÊÖ¼›ïg-½„ùœ«³?øÙ—]‡ûN Í<"O}_ú„ø¶õÑ»ÜUû` ‚}të”j}вȡ>ßDŽhG¸k©C~li“¤BåöÏn6VÑO0Zߢ7KnñŽ ù- X™O Êž¯ØŽw%B}ð|=Á9 @Ëûª½Z_lT“)¢b[Œ_#A¾UÎý­ß1ìh×â.ÀͰ˜ß‚vŒTð¶cTÒGv?€*ÆÀÂ}‰Å ñ™¿ÔåŽ&èWÄj}CP­/™q7¸ÓÖÃ0Üxúoûþ\冒ŽÇÕ9Rt ëÖpöe©UúÜO 3)ÃkÚåÖ9&Ô=¯I¼ÖÐê—¨ƒŠ} Ô\­/R¨ÏêfF¥lÍ»÷dèc±;É–»‘Ï‘¡Ôê}!÷©è·N»—t]yÀ —ûàoýŠF ó9^•¾‚ÆŠŠØš·³¶®íœ¯î™>Œß¦k\WÜ”¢ZŸù;5Çñ¤/NÖy@Kûf¨µR_äPŸPÆJ¶*÷ øelóšÞïÆ¡åóc ®õð«d›c•ùŽ`kbØ9·=nÒ!à@CûN$Ô÷œEÒuÍYàæ$CíçG7 M_°›Á¶–C~•øv^GîÐì¼d†añþìѳpþð~÷í™*Ôg,FÍsÛ9k~´@°µ54€$õI“•ÙŸ}ê²s¹Åÿ€_7çÈ¡ð[¡¿ Ã|7®-Ò }±Â}½³ý.$˜˜¬ð³vÀb‚}téû§ßiNVk¥>º#0½¿]vêðAW×çHÉ¡¿J|G_k·éµjŸ­wá°;ìûû¯”L°nñöׯhªõE®Ö'°Q˜íèmWCðk¾ßœsÅöÍN˜6‚u«^kŠœÆÖ»°òd&QE?× 1ÜѬéjCÂ*»n§Å:îc‡ÍsÕùº÷Üpfñ9ä:bê©zJ}p¼ÔsŽ]_‚[òŸaŽ~À>*ö±ºÍpß0 žS•ú®Ye¬«O}~àTðãÀ9âü`î½@ˆØ1άëO¥>n#ذG­¡¾È¾kÔi+ĵÐlõ€ ¡.;?\èܸŽôýÀÎ= çïk`ï<6E¥»TÛòÀ\‚} Iê’jÈÖÂôVί‰@×`ñ=Ú5¯!;>þ®#èäÆ? îû+H¹ý®ãIOrü`m‚};ÔX­/E¥>Ú¶§š_ÝŠ{Ú6ÕtrÌõùPÁ>€-B}!Œã((Õ¯Z¶cµUhd»Úñ*ïi‹ÞƯy×s.9 C”ÁEkÛñªÔiÏUöhÑMP·•úèÏ8Ž×¯päš^KÝö³®ÿû8ާ¼6ß/éÅ:(ëx:¦@ÑR†á€¶¶>`®@*öl¨­ZŸJ}¤°g‹ÞN«Ú¶«¢žó«îsaóJTÖgØwl€ŽÃ`\Pê`¢c»¯ Õûh…­·(넪wGÔW­/+ÀÑÆqÜ| Óëª/ô)IûêëöÝ<³_ræ€6ç®P+û€îÕêKP©Ï–ì@4›ýÉpó ±ŽæÄ¾y_»P¦áCãB˜íd 1ÇÎõà6*öT"r¨OE- ©#«úõXáoØl=/Õø€êÇ<±`ÏUûŒ !ÎuTÂÛØzÀA*öÁoýŠFh\-Õúb†ú®‚5¥Bû6ô¿@12„\zßÙ&*ë÷ Û~| ázKô!Sß @Eû¨ÒÝ÷4‹õê B%ÀÊnyHq£ÚñÀ¥¦'¶Óºóžiqì ,¼® ùé8¸A° `*õ=Ûñ S?P—¦«ö©ÖõÏ9K ÷ WoH°€B¸£ €ÕP­O¥>jÕz(%u¨O¨òõU…]ocè`sŽ#ØG—¾úFèX-[ðÆ2Žãà+‰öE³R*ä©Ôí)míl†ëýì(PÄj}VÿXÅF%¬fæ¦9*õùr¬×g•ôv®^~ì£J*î1W‡Õútˆ@¥>`¶æè˜`ÐZB}ªõР(sÔµÂu*õAJ¾Uíè`ÕRµE õ A¨Š'Ðe^—%¾­„ûzó’&(CŒPß8ŽV÷(Ê8ŽSen)i ^èºß€Õ¨Ø{¼ýõ+¡!¥oñR4-gÐ.ÕïR©ÊWàuªÓ茊}Tíû§ß…»îiª)ЧRE«±ú•J}ÀÔ+G?7ýá`€ö©ØGw¾úF ±B}A¥>:“:t§RPè5®èˆ`ÕÔã6%nÃ1ÔU¸ »ÿå4•ú€Ò»ÓBuUP8­xé† ¥ˆ곂…{ÿ“Ï5tdªÚ—0|7ë‚Í쨘í{¨Ð ÜNR¥> ¶Ô¿a¬4L°hZiÛðƬÖ7Ž£oåP•q‹Û>2u oªÖ÷á;o9@ßõÇUûšvGTÉ¢]Sa – û`‡·¿~E#ï|ŠX¥ïŠÕ:ªuU¹*Êv¼gž…ó‡÷ýýT¦J}!¨Ö¨ÚÀéû(M”E]¡¼mxc\ãèòž†!X7h`°†U«öŮַY¡o“j}ÀDÕ>N!Ø4iíj}‘·ßB¾u @36Â-MìÞ°/Ôp ÿ€ƒîh 5mÁk•€&ÅüÛ)Õ÷Î=‹^­`­þoú‘Ã0 4FÅ>Š2÷ÛŠß?ý.Ü}pOR„ˆÕú†Ík•¥j_Š0ßm•úlà ddK^€Æ¨Ø4¥±-x ikUí(¡ÿÛ~À&ûh†ª}´¸¯=:‘¬j_ªÀŸj}@TíhˆŠ}4åû§ßi„N•ê‹T­oß ;1¾ä; –Z¡bP½†B}!UúèË8ŽS%jÕ¾µ*õ… Z°®a¬14@Å>Jä+…­µPôH@ÀM*öÕj,Ô'Ð ‘ªö©Ötl ! ªö« äâl¾fç5D~× ¢OæP±æ|ÿô;ÐC}ã8šØЭsâT¾Ž õ”ÒÄ4 Ãô½Âe nékÕ.8ò{¸þym脎&ØG“„ûH-öö»ë Ž”á>€J\‡H¶mÌn êíì1¿_¾~]µ« p+Á>ÊÙ 8q‹5ªõý¯ÿÛÿqýÿ#Wê3c€Âç˪õ¹EX'·Ð½¤n î…rªãußÕ‡›A?a?à‚};ïÐì²Ö¼Óïµý.¤Sâ<ùÔPߟ~á@Åö¯ñí_Ü«z8ž‡ý„üÁ> k…ú¦j}±·ßØGÕ> „Ãø‚_Ó·°±µº ôé%M@«¾ú]¸ûàž†hÄšÛïþåŸÿYìPŸYTÀ¼@.[-A=v Cäómßy6Øm Ê beŽP/‹‹§ß?ýNc6`­J}¡>È+ÖÚÐB}@+]ª&€òØB—}úv¥¿çÛÞß³]rÏKAHL°âç6KÀœpßg¯~£å;·Y­/öù<Žãõ hÏŸ~¡€¶¶Râc®ñÈsm;,šâ|s@b¶â¥Š¹ŽAa¿rWë›}ÓïŽX­ÏW– *õ­™ª)ù¢1¤¹¶náÂ#×y8®ø¦ßýü͸ç@‚}ksÀ£ŒóÝ÷lÍ[™5·àMU©8yNeB-ДhGÛB ’›×¡Å~J8K<Ç÷(äöÑ…ïŸ~î>¸§!*’3Ô·Y¥oówGªÖgÕ fÈfêZïRƒuJ˜¥„jhï³ñçÿ{Ä]šJè×ky›?!?8‘`Эí@_iB}&)P.¡>`¢2_n ðú÷ ü•hÜqݼЫ_ž¡ÿ楺y½ øÐ3Á> (kU닸¯§ P0•ú ?=úz áåhKᾬ¦kô:à'Ü@¯û`ß ýÕoÂÛ_¿¢!:;Ôgreê€~´æÚ[¯Íü²ºÞF~»Š·gqôB°(ÆZÕúLÄ L¶áˆÛ§ BÐÁx¡¹“\ˆ¯Ìãá¹R6Û×´ ]죚yYè¤4z¯ÖÞ‚7Æ9jQ ’Y¼6¤Z40 Øúobq^€¯}«/»‚ûÏéh‘`°º¡¾C¿×$ Š'ÔôÝ Ž£*¦t­Õª|Â|õð,©è¹$Í죎љE "‹&tr@̉¶u €Æ`-“zîÿM•Þà« Ÿû”@°XUÎj}ùçv=û,|ëÇÚ‚ÒR­ ø<íR’ôU=gp“ 9‚}T5·Ë=¡ûìÕoÂÛ_¿¢åÉêK43A€´„ú6;Eá>*&ÀGÉúÚécä %‚}pÛ„L¸/‰œ¡¾”L LB}/†Áš&«œwª?ùÚSr¨ïîƒ{7þùû§ß%ÿs~ßÝ÷’¼7è`Àé|%RL¸#=øêZ¦j½Ý××&È×®š}·ýûÔïãPhoú3ÇüÙÔ·ÈË®Gå>Ú!ØG5®+²oÇK|¹«õ¥˜˜™ ÀM-UçèkWi¾Üa½ÔïqߟÍøƒ4D°Ȫ-xM ödûÅÊSªõ¤!ð@êûxua>¾>ó•ñ™s†ûl?@ û¨rŽ˜{bøÙ«ß„·¿~EË/´F¨/âDízeÂ$’2ñ€‚Å äç&ÄÇšz óíkƒ ?Avš ØGU¦@•-yYóüÒM¿—üeÕú ž¾Å÷êµôõ«„J}}ûÛ$qÀo6:2Ïù¨‘`Eîj})*õñí œL¨èÉ8ŽÑúO8ö´«å ñ‚@_-2lÏ«rUìƒc'‚¶ãí–oð@|5oãîÍåäc“@_}„û`?Á> 9Õú€[Ø‚V´ê+>Ð'ÌÇ.k„ú„øâµcâpTI°ªç™¹'—ªöõGµ>H?ýÖ3:Ï™ÛñÃ`Ý“}çNÑ'†0‡äõ ô¥kÓD¿q¸êøÜ¨‰`Uš»`A~•Vësr@%T뀛Nx~b«]š+Ô'̲¶³ ~ اO _ýær’ r_Ó|[ÒÙ˜€@Ü{ë¶*ïµÂ|Lþ×ÿíÿØž\=³KEo] ~ãew©r-õì£ú¹j°\,Õú€”Të˜e†ajhÃŽ@_ÕV ¯?‡‚{{Ͼ®¨à@Ïû`îäòÕoTík”-Hc+|°h.Ô€{jœ{êZ„øÚ4'¨W ¾:ŽÏ€ßù "‚}@"Të3ˆ€<‡„úè‘0KÔ¸»>Uêè«ËÝ÷Wï³/µì£ZÓ`kG™yXtN4NÅ¢Šô1G A¾ëó'áÖ»B}uZîs ‚}41§­u"Kªõ@Ùb~1Sµ>:»_VýüC /–‚{0ÇÒÊ}ªöPÁ>X2!}õ›ðöׯhˆþòÏÿL#›<5€Z ô óÅ!¸—¶R@ û€¨rúVëS©€Uìô óuLN· jßxÙ «Ú@Ùû`édUÕ¾k5Vé3X€t6 Q&à¶á ¡{c´ûãZ„ù–ä»åüÊP­ïîƒ{(š`Í̅ל ÷å·°RßtÎéùVÝj)È‚0_,B}·œg‰C}}mYZµO P2Á> ŠÚªõ©ÔõP©€š´´ÅîD /¡¾[ε„¡>> 6‚}q¢Ñkվܡ¾…Õú¡>H§µÊD0ãþ×Ô=P¨/¡¾çY†­waUû(š`õ¶®BZÃå¬Ùb1G/@Ú)x¬¤Z¥Ùâ‹~ÿ+@_Â|·œg}*õµìƒÈ“žªöUV©/߸`–+ó… Ì“@ßúúàÿÏÞß…Ê–žûbßóÖœs­ÕK{o©;Ý´z[9§sÜ>Èímbh;ÆÁ!““;ƒ W±ta’«ìH ¡› y_ØäBÂ'ºAˆ#…;Ë&&‡& lÚ'ʲi;½º£>«¿¤^_sÖÈE½oÕ[£F}Ì9kTªúý`¬1jÔ¨Q£ÆÇœµªþóy8t‚}À`¨èY;(—°#MÓ¬ªÇöÇÍíþCMB|ýêÛðì©ZŸ@p,û8ùŒ½·ã=µª}»°P_Ó4>ÝàZZ¾ƒ ó ñõO˜ïç£@ÀFû€kÛeµ>•úàtýðç¿¶Ø™c ñÂ|ýä»áyÙS¨nú£ß.`Èû8Ö7`Z¾0¥Zô« BøL€Cýv¿Ç„ùú%Ìw‹s³Ç@ŸJ}ÀÑþ¥i|ÖÆQþ|ï'ö±¶ã=Äj}‚}Яü™ÌV?9†j}?ýþwœÀ®~_Û)n*ÌǦù¶p~ ô±=|tã_ ò ™Š}íÿËÃ_ˆoÝ.C}Û"Ô‡G ^¶M˜ëê»å9ÚC O8¹ÿÇH s¤ÿ9W±oËvêS­GJikŸÅ[¨OÕ>`?ƒoô¸SøìT˜›ê»Åy*ÐÇܤbŸï8*öqŒñŸó_~û·GÛŽ÷ NoÆ`'n(ÀÏàìa>®E ox„ú€S&جu¨Õú€ÓtÝÀÛ!v7êëÜGѦJ˜ƒ`¥]VëS©’$ 0·©bwHá¾SªÖwL>a¾ýàëé¼î¡RŸö»ùÿCþ#üOþàNêC®Úw@Á>?Ï`ÇrØb+ÿ!?æj}?ýþwœ,ÐÿÏ¢­8¥`ßP;Ÿ¨ÌÇ6 óõxn ô1 =|t4¿ ¦bÇ( í?ûZò®w›PŸ7ÞpØ´àn┪ÖÂëV™mäÛÁù-а3‚}«Á…ûÑ.«õ§I¨XçT|}ïÖÏ£ù_˜oÿ„ú@Àj‚}Ò*!M>î;·lÁ ìÁ6Ûð,ùÃá«“øý Ì·Â|;<ß·X©O `3‚}­ðKCù¹ü‡GK^€ Õúö£üüuœr€¯M où›@Àõö´áútJ¡¾ýâ7ñÓïÇA‡TèÛíî¾Å1äc§ùpþo±R×#ØÇ©L[Þ_~û·ªömAÓ4>é€=¨‚7þ¬å+õ ÷ÁÚŸ)ðÏu¸)Á½áÒz`ÿû8zMÓ îá!‡ûv]©ïÏÓ¿w“cêÓ>Ø/áàÖ„úö³Û;>3÷3} •úú!Ì7ðó^…>€Áìã””O*|H±„ö»@߆èk3!з}Â|pÞ÷èS©¾}ôð‘ÀQìã$”d†ô‘–¼7«Ö³€&°CZ5[þY2(‡êÛÂþkTJ\N o{ùN›@» ÔÀ)ìã¥ðô‚ChÁ ìÏT€r ¬l›ª}§K¨o{„úìÜßb¥>>ém‰]À!ìƒ=ÿgiUû)Ôçƒ58 ‡XnÙ6ásI•öú!з=}°]‚}œ*Uû6”Ã$[ù,å‡?ÿµ §ósã(_?>>\B|Û'ÌwÀ׃J}ƒ'ØÇI)¸ éC¥}VíÛu¥>àø{e¹m¼¾ë„UêÛŒÐÞîóøµ²Å@ê¯r»€C!ØÇ©¿iÄŸVî#Ü·¯PßmÚð‡Mµ>8~BhöS_÷`xTê¦>r¬ÖP}€ƒù¿£_Zœä‰?ûÐdPÀ.Ã}ûöm#Ô×4O¼`‡´áÝ®Ÿ~ÿ;N*ŽýçlPßþ©ÒwבֻG¯+Ðw¬Çn“׺ìíJ„`‡CÅ>NÝ`ªö•ÿTõîÓ~Ø¡>8nB}l›0ßpõøµ$ÐwônrN°“Tþ cˆ6õî;‚PŸO€ƒö£_üFÕ>ކ0Û À7LÂ|Gpmm1ÐÇ0Ý$Ð÷ÑÃG'ÐT­€C"س°˜wq•mµáU­ožpú³`oê?„T9,ëþˆ]‡™áäc•ú8B}Á> >ªö©Ö0Â}Š}„úV}6*ä7L}u¡¡?‚|ÇËÏÆã¦í.œÁ>˜Iq¤Uû†êûóôïÝêØø 8~× ˆ-[V¨e7´Ð=<Â|G|=öôsO¥¾aæ³?8]‚}œ´:,¶ïv]ÿ óWŽÀ¾l« /pÐ?vf›Ÿ… üm—ßqê;ÒëS ïh ¯ª`Áìb˜}P5¨‹bhí»bßm«õĖ0€þm+Ø÷ßÿÚÎ\A;^þ3 WûúÃf¿ÖþÜ;zB}GxÝöüsL°o·vâ;ôc{Û}Õ4MrÆpHTìƒøÏÙM?àB ÞÛè€ÝÙU¥¾}v+)Ï}Ê?a¾Ó!ÔÇuôí–ª|»›cphû ûMÝ Òd‡Ü–÷–Õú€ýñ×v@/†òYç1ü÷è;N*އ}úŽ!´) À)샬T†Ë‘:¸pß!ÚB¨Ï_Î@ÏvU¥/"ùÌõ6­ Í,Ûþ}†m„øhê;>}þŒQ¥owúöK—0òÿë~A뢘ÿkPȦz ¡ï–*õù{’RºõÊøó_Û‘øé÷¿c'°Ïk}gÏu¨]I®k—!?¡> a>?W®CØk÷vê;¶c¼ý×4‚"û`ñM]Dìö­ëüÇíD>üòÆ8?úÅo„ûØ9¾Ý¾Þ>Â~þþöB˜kôÍnò­wŸö±ÀmöÁjƒkÉ{á¾mTëS©¶o×Ð|j¡¾}ï‡:ì%äwøØ&•úvg_>Çxù[ »€C$ØGäH>¨ñÆ89ªöÑ·}t(êÛ/!¿ã9~œ•ú×>}ÇæSõ€S&Øë ²j_Äð>ÛB¥¾¤Rì_ î3àÆ×sï„ø†mYHLàoøÇ¶A·~ ó ÿíïðK Žõ"™}ð5Ø‹¥|h¶¯a¶Ñz×Ï$ŽüyÈ­þ“þßÿÚŽ¼!•ûèázî`ßáî»A<ú°íJ}Â_ýÚu ïTçö³ï8X*öÁ5ÞôÅ@Ã}¿üöoã—ÍßÙËso1ÔyÿjÅ œ´ýâ7!àÇíì"Ð'ÌÇ)àã ôõG˜Ø%Á>X£üÇÐ[ÐÔ»]…ü¶ê›îg50 ø ÷}ûþ_ªÚ×±O`—¶]©íÛG»]TëÁ>¸ÁÀp[ÞˆþC~}ú€Aцw „û¸®]µÞ…c ÀÇ1RáÍqއ`¹ÂÛW«^nG¸!Ñ~—C#¼Çm³RŸ X?öQ©Ï±ÜÚ¾÷×<Á>¸ùÁƒªÛÜ®²wÝ ß«ô5ÞhÀaûÙ¾«jìA_Õú„ùŽŸv¼óúŽcÿkà ÀÁÿ?ß/3¸Á…3û€ì / MÂ}ûh»Û4`ìQJéÖŸyöõCå>Ö\»½¬W°ïôCÈO¥>†l[•úÁ¶K˜ï¨ŽEŠìàþŸï—Üà™ÿ€ÌE´e‚}°_‚}Ã&ÜÇ’ë¶·u ö¶C ù ô1dÛô ‚mß®}ŽáNމGA+^¸¦iêÊÊ„w‡ôîG¿øpsúõ óQÊÁvl«J‡I˜osÛªÖÇ`dÀÍ4M3`—~ô‹ßØ DD¿•úØŽmUêÛ®>ê½ZŸã¶¾¿àX¨ØÛ“BÕ¾míGÖ(á>ÕûNS_>•ú¶G•¾aÚE˜a84‚}°]Â}ìÔºê}‚ÇG¨àt‰m@ßi¼MR­€c¢/lA«%¯Šs7|£mßlŸ¶½ÇE¨`ø~ùíߪÖwB´Ûú¢bôCå¾ð4ýøÑ/~£rßê¶m†ùŶ£Ï*}ŽÑðø®€c#Ø=¼Y̰ ÷mF•>XC¨†A o¸o—ìŽ`ôÿR¸o =Ë õ ›J}ÃÓW¥>ÇØ%Á>èŸpßòýì˜@Àvô @ßéRH€c$Ø»!Ü×ÚÞ\ìÖ~ñ›øé÷¿cG˜mVëèØŽmúØ>àìؾ¦iæ†L…:û`¯~ô‹ßØ D¨`x¶êûæ[oÝR_¡>€}ìƒÝJqÚÁ¶Ô ;°cÂ}‡A¨`xTê–>ê5Ô'pyXo쎑V¼°%ÈV}wR­y›¦ñf6´ÍPÛÑG¥>nF…>ÇN…Š}°CZó0ªö ×¶C}ªõ ‹Ö»·³‹ð—ctpÇÕw®-û`¿Nªr°œö»Ã£ýîpôêæ†FÅ>؃ªÜ—´á€Ãü?½]püTíØE'Ô08Úï‡PŸcëÿ-œ"û`Ž­rŸ7Ѱ!¡>€áê; Ž 0d‚}°G¥j_þàî¨Â}UEBàýìßþü×vìPÀvl3Ô'8v;}TêsLŽ‹ï$8f‚}0,åOs›ß~à€5M³Õ b@7•ú†E o8úçMÞJÙƒ;Á>€ö_’¤Ù'zC ø¥®möK¨€c²íPŸ@ßñò½%ÇN°ü&4ÍÿÉî¾Þ™ ôÀiJq¸]`ø˜ª˜ƒ²­j}Bd·³ÍPŸc:Á>°V˜nᓾևÛü ]˜z°í@Ÿj}·£ýîpõ9Þ›¾²÷8#»WÓ4Ó!¿‰M×|3;}LÓ4õ ÔÜÚÏ~ð];z$Ô0‚d·#Ôçx_‡ï28‚}p$ê_+¤·jðÆè´­Ï „û`f›Õú„únç—ßþ­ö»!ÔÐM+^8 B}à Dv{B}Ž9°œŠ}@¯TíƒíUë긽mTê"»>êãFo©t"à”¨Ø,“"Â7gpÛ i‹-x¸¹mµÞåæ±ZÛªm(ú¤bÐ;Uû8UÛ õ©ÖÀ!;¶P_¹¿8¾söIÅ>èPÀ0l«RŸêl7×g kHÇ¥¼NçJ?o­´áàÔöš¦‰4I&ù ®aÛ­w…únFëÝýë»BÛPtí×-èÜ„V¼ÀNhÇË)ê†m†ú¾ùÖ‚Y×´‹Ö´‡tL´ê½uÈ3¹ª8E*öÀõìß¶«ô ô]Ï.Âk‡|L>zøè$ϩۆú´ààT©Ø,•¿DS!ãHý迱¶d›¡¾?ÿ[¨`ÏT黾c õõñ|ª÷›ì€[Øv¥>nfÛÕúØÜ1WêëëyKÀïØC~BŒps‚}À&$—Ž”ª}·¼0´ß„m…úT껾¾ƒ[§pLTñ[þVK^NÙ¹]¬Ò4ŠdÐA¨`ÿTéÛ¯>ÃhC ó•mé;|÷ÑÃGGbV€Ûì€kêدmúT點S ô-Û¶>_Y·sЊX+·ÀR¶B¨à˜h½{}§êÛõvz{Þml»6¼œ:Á>`g~öƒïÚ 4¡>€ýúå·«ýî õÍo¯€_¿o»\qœ:­x€ëH¡t§yò õ Uú‹moÿ‰†ï€ öišf+Á¦Ÿýà»ñßÿÚå l;ÔÀõl«JŸ@ßÍ ®m~nõ±¯Ê:OäöÆ B°¸¾“¬Ú·¬°â œð=„úTëØŒ¶»ÃÐW¨ïXCj}Vñ;„€ß-_·P”_ŠM£k°¹rºõ‹‡ˆ[ê;Ô×ÓöÓïlj½ú|ß>€ëQ©oÿú§Úñ8µ}xÛ`Ÿ LŒìànvÚ$,wH~öƒïÝk:ù“\¨`¯TëÛ¿mÒ¾ùÖ'²,¯{›¯ý£‡´G€#'Ø\‹ œ¡>€ýÚf¥>Õú†Áq8ý lÛ#ØÜ”ª}牽åP׳PŸ@ßí hõg›ççŽÓ¶E^¨œÛÀu5M#üÄQêã¼V­`3ZïǶÂb•›íŸcQ ‚Àö ö·‘"âVe5JÕ¾þü×ö&GG¨`·Énï¶-ÇàfûL0.üÕ´ö7RÚd¥I‰³[÷Ìðcß¶]­O¨`½mVé(»9¡2ö|þõ@Á>`Pü؇m†úúÖÛvÛ]¡¾›Óvwµ-¯P(ôG°؆­T탽œ¼[ õ ôìž0ÙÍcÆ9½ÉqÚç5à<€~ ö·Ò4M Fm5ܧr}S¥`÷¶]©ëé+ˆ%`ÉmÞ’5¿€.‚}À6m½rŸ€½œ¨B}Mìú„ú÷<ï:vö;?Á>àÖJ•>*÷‡ð>< B}û¡Zß~ôÙ.U¸l7†¸Ÿ·t^%G–ìúÐK¸/B?nqR¦í~w,Ô°™múÉàxhÁ «ì`[š¦©¿ KÑcŽŸýà»Ó¬³íP›Q¥o¿ú¬Ö‡óê¶oÏìIXMÅ>`ëvÑš·øÙ¾«z;§ZÀjÛô©Ôw=»ô9&έ[ê€ ¨Ø<•ûXE ^€Ýùå·»õÖ»dÃã˜p­*ßÀ*ö½©*÷•dU¯•û"Bõ>¦úh¿+ÔÐMËÝýÛUÛ]¡>nûÍ.€ÍöG¥®Þ'äwšúôEõìš™cÁ°ì*< Lö½k𦄭RôXµ¯MÈïôõìFßúÉ6'lÅ¡ý¿ØŒ`°Õ—x¥3ïN¿Õ«C~‚~ÇHë]€þí¢å®Pßp8[ jÃ × ØìËN«÷µ• Ÿ€ß‘œLB}½êž>ªõ9ôtž õÀ5 öû´×p_„J~Gq õôNëÝaé«ý®ã@_çš¼p}É/P`(ª€ÖÞ?¸¬~íðߦ;$?ýþwù|Ù*¡>€y}†úÉ®O•>ð|“K€P±Œò…_š%¶î@-~wC¨`7ú õ ’ÝŒP‡~¾›ÙÀ€¥}=ñuªôÀ1ê#Ô÷Í·Þ$»!!+•j}p3JÞƒ5¤Ö¼7qHUû©¯j}ýS©oXTêã€Ï9™¸!û€CbÕûNÁ~ñ›Ã8„úz§Rß°õqÀçœ÷ïp çv0T¥ºGæJq Õû¸=¡>€þm;Ô'@v;Ûõ9ìã½<p3*öƒ×4/OœP@ÿúj¿ËÍôQ©vùöÍ.€ÛQ±84õ—„Ò~ܘPÀŒJ}áJGpþ õÀö££j_Šè¬æ&ðw?úÅoænÿôûßÄvõQ­O¨`F¥¾áP¥—TÙ¿X:µB`{ÿô‡?ÿõÁïÓ}ü„úú¥RßpôêsLØáy([¤bpTê/Ó$¶×oöƒïE¸o¶ê蘧Rßph¿ËŸ‡Zï@û€cW¾hT>2•ú†C¨c¡Zl×È.ŽUëËŽUùÙ¾ë`\Ó6«õýù?øÛªõT„ú†á£‡„úÔù¸Å÷ÝÀ¨Øµ¡µæe½m‡ú˜Ðzw¶æ+„úÚ9 ÜŽ`ƒ±ÍP3}„úÉ®¯ÏU½ndž]R­ú¡/pjö’ÓŽwƒ³åPŸj}œªÒæ·v¿ß¹ “Š}ÀÉ(ÕDÒ,A¦¼È~ô‹ßDDÄO¿ÿÞžC¥>€íë«õ®jp7³ÏUynÇŽÎGoâ '‚}ÀÉð•ú¶O¨o8TDà&´âNVÓ4%ä—bÕF½o©Ü·M*õp¬úlƒ{Ó€¥Ö¼”ó`[oåìMèŠ}ÀÉSÁo?Tê8,ªõm®ÏðÜ6ŽƒÖ¼ÎÍm¼•+ï¡€~öd­€Ÿo*8H}µáe3C«Ò·É¶ ø =@KUI®—Pøó_ôþùé÷¿³Í}¼ªõLôêúÚÜ®+õmûùkçæ¦oå"fôcdÌkš¦|Q™úXÿÏ~ð];€­úå·+Ô·gûh¿»íãóÑÃG½¾ŽBªÞ+=ìX-Ùó~ô‹ßÜ|g¦´õj}§®¯@ŸPßfú ÃmrúlÑËñœ£ÀáìX¢ÏJ$§Xµ¯¯@Ÿ6¼À)S¥o¿öèëû˜©ÞG×Û9»vçÜ.X+E„~c ʶC}}×Óg¨ï6Ûöv•õ9?Nþ­ë鳊݅€ÀnIÕl  ¦míCÕþü×½O~úýïÜdÿm…@pÊ„úöghUúö±­Î¡“;_go‚e `§Tì W}Uë8EB}ûÓGP®ÏcÐWkÞ®ýâ\:ÚsU¡ Ø#¿ˆ6´íª}‡^±/b³ª}ªõÜž@ß~Z¨oW¯Á9vôç«<ìÑÈ.ØŸýà»GÿUë¸_~û·B}{v ¡¾cØgì|ß{{&ذ!Kýè¿Ùéó©ÖpsB}×óÑÃGGêûæ[oìô¹ûÚ¬Þç[’š¦ñÞöìÜ. Û¬Ö'МšmVéãúú ¤ !\YoÃ.‚wíç0ØL’²Ø\«mõƒÕþü×G±o~úýï´÷ÓÖö§¦`Ÿ@ÕfN±õî¾*ë9'y 'ovå`ï´â`+J[^¡>€›ûå·«Zßb¨¯lã>¶S«ÞÁíG-x`@û®Ç7+õ “Êhöû¦Û»ëmîèvn° ?ûÁw·º>¡>à”¨Ò·Û ˜zò›o½±ÓÀÝG Ÿî÷¼Mö$ `ƒóÏü+#þê/ŸÆŸýÅ=;8j}ú„¥6#Ô×ý:vîsîîEÒz†I+^åŸùWþÆtú¯þò©@¯„úV¿žz8ÔãpˆTì€ÛEë]ÏVÛvpìö÷¾ªø9—{;‡µà€ìàÖ~öƒïne=uµ>nFj=¡¾í½Ö]ýüz9‡µà€ÓŠ€[ÙV¨oíxcòËoÿv'ÕúXN‹×íÚeØî£‡?àd¨ØÀ ¨Ö»¾}ª™­ÖW Ì~Ÿíƒ]…î>zøè¤÷»¼pû g}†úËÖêÛ®ýÑ×¾?Åö¼[Ú—ZðÀЊ€ÛVÞuÕú´ãUß­wËÖêÛ¯¾÷“Ö¼À±R±€½Ñ~8V}·Ýe3B_ÃðÍ·ÞèõXÔë>ÖÀ¥sN`lÉ®}ªÅ­§Rß°ôîë:îŽÕ‚dÀýânšÆ^ØPJiëªþðç¿>È}qÛ6¼7©Ö÷gqÏI ’@ßpôî1:Öã·Åý•""dà0¨ØÀÎÝ´ï_ýåSá>àd –­ÖgX̾ïwß!Óm‡ú€Ã!Øp=)"¶VæäP«õÝÆMC}C´«J}¬¦JßaÛU›ÞeçÌPó6÷‰*}px´â¸†”&̶µ¾Skû­PŸª}À¾í2Ð'\¶šPŸãyŒÇ}Ûû¡iûàÀ¨Ø°'§X­o[´äöE o8´Þ=Neßï+àWžwŸç@¯]¨ÐÈ.Ø›V½;TZð‡ì—ßþ­¶»Òg•>¡¾aØ÷±øè᣽WN›`À54Msòû`(Ä¿ú˧NH wûô —­¦õîiÙ÷qÙu¸Oµ> ÐŠ€Ý4Ô§ZphTç­wO×7ßzc¯Õó†Ðž÷†’?J€Ã%ØÀFN­u0À® —Ùï¬>Nûn»ìù·uiý Ô$ô®)¥±µWøó_Äë¾M°¯ÏŠ}ö÷œ”ÀVì£JŸPÙf´ße×çÆ®Ï§¾ZðÊÀáR±€µ†êØmw‡K ëKï¦ø€# ØÀIÚu O˜ìzúi9Ç­ßC ø $]û®)W@I)%¥P@ßð õ±íc=ÔðÜ6·«išäèÀñì`%mxnFìú´Þe×ã‘VÈê€##ØÀIØu¥>®G•>ve(-{µàVÙ7¦2Ê »ªÖ÷WùÔÎå›o½!PvMB}œÚµºÅs>yO ÇIÅ>–ºi^-x!Ùe¥>a²ëêcßv]ÁoÛÏÓ4ƒGHÅ>€ÛQ!¥E¨¡¾aÛvÀIµDöu oúXíw€M öÜPÓ4¥BÊ­Â}7­Š×·¡nWíx.» õ “ÝÌ6Nއp.m9Ô§/9­x8 õ—OãÏþâžDDÿ¡>!²›ë£Jôu¯;_÷tþ¥-xàØ ö ÀÏ~ðÝøáÏ}ð¯C^`„ú†kÛUú oÛ:Ï´à®K+^€[ÚF;Þˆaµ¾=¤6¼5-yá´ýòÛ¿í5Ô§ÝëíõÁV¨Ö'BÅ>VßÕù¸=­wq líHö&œÁ>€íIq«ò)¥RÞ1´åèÛ®B}‚d7'Ô‡k`û-xUë€Ó /À4M³µ–¼ûv¨mx íxá4ì"Ô§õîíl»õ®cÁ)_¡/œÁ>€:ôp@Ÿúõ ‘Ý^UÊà„¯-xà ölßV¾|=´pß?ó¯ü Gè]Ÿ¡>¾Ûûèá#íwqôT©Oµ>8-çvÀö”/\SJ)"îÛ×c©øWù4þì/î9!áˆôèãvúªÐçØpâׂJ}pÂTì°C Ú©Öôå—ßþmï­w¹>B}ª'âZP©N`@ª%ï±TëŽGß>á±Ûë£í®c‚kA¥>@° Uu•ƒ ÷ÝÄP«õýÕ_>u"Âë»õ®ðØíõÕ~NüZP©ˆˆˆs»à0”pßþk;8Z»¨ÒÇíôÕz\*õ3*öp㊀C­Ö&¡¾áS¥z»„ú€9*öô¨išHi»ßӪܷ¹¿ú˧ñgqÏŽ€è; *õA¿×@MÅ>€þõRå¦Uö¶Eµ>`è¾ùÖ‚c[ðÑÃGBLг¦iæûv#EÄÖ¿¥ÝFõ¾}ÓÕw¥>n¯Ï@ŸÐ%®‹¹÷‰sûzVª®¤IO^%X¢ßPŸÀØvô]¥¯¬ßñâዤBÐE°àÔU÷nS½oSÚð·!Ô7|»l½+àÇ _*õKì€JÑó—¸×i­« /°K¿üöo…úvêÊsÃ&ç'À.©Ø°#UKÞÞŸkY`oÕü­Zß_ýåÓø³¿¸ç„#&з‚K°Ók#ÕïÚTìؽ´^«§T­ï¯þò©3ö¬¯J}B}Û1¤PŸÊ}œÀµ¡/°þ ƒ¿Ø½\µïà> =´j}µMªöÝ6xôçÿào;¹aË×Õ*B}·w:Ç™#»FTê6{Óà ÀîµÚñĵ‡ê+þì/îõ2ŠPßpõè+Çf›Ïáxs$×Éô  ï逵o¼aØV¸/bà¿C öý'>»ý·Þ}9""þþßûÏö²=‚~œ*­w‡k¡¾¾žËñ瀯•ú€ë½yðÆ`¿©zßÃ}u ïþÇ_nûü85‚}ôËP_ŸÏç<à€®“ù7z¾Ÿ6}áÀ0JÀohᾡú–ôãX ô OŸa¾M€'z½h½ Üü„7Ã3ä߃}‡èkðãXô Oß¾›Ÿ>¶É9€¯Á>àæo$¼®*à7˜s‡ì;ÔJ}«ùq¨úõ kÝÎC}}oŸs†^/‚}ÀÍßHx0l­ê}ùí+ÜW‡ù"Ž'зŒ ‡@¨ox†ÐzwÛè¼a`׋ïâo&NÅPZôî:ØwŒÕù®CÀ!Òzw˜!Ô×÷ö:‡Èõâ»xÀ› &rð¯÷~wì;µê|ë÷1$ªô Ó¡…úúÞvç{¼^&oÈ|Üæ …7Ç£ªè×뇿}ûN½:ß:~ìÓ¶}‚WÛqȾ]¼ç;¼fæK+û.¸Í o&Ž[a¿¾‚}%Ô'з!?vEÛÝa:–@ß®^—󞯛Ù.ßÁ[pn·êËåÔ¾/¥4˜ožÿ“Ÿî<ÐwçþÝ…y¯üé+K—ï;Ds]%l%àÇ.γm°b“ócÛ?sËúœô@ë]`ëFvC°ËPßûw;C}ë 5 ÒW55è£õ®PÕvkµ¾]œ/=|4¸ 6}Ý${èåM†¿8]¹Mïµ?(Þf+Þ¿ÿ÷þ³¼ÖMƒ|«*ö-3Ä€ˆ*~܆ֻõ‹Ÿ7C 7ZñpÔnR™ïºº‚!ûûiÓËOÝÞ©W˜ë»=¯óÔõs*õ½ì8aMÓ”ª};×w¥¾]úVé+„r]¿üöo…û¸Öù°ìògȩۄü\?× RÐ;­xN\Ji§­x‡è»I+ÞM ¡â–ËôêŽ:œŸ‡v¬ìötžÌý5„ïÚ€> öœ¸¾ƒ}}ùÚ†ì+ü¾á^Æ>r>;/Ê[¦ö ßµ}ì8q}ûvêÛVëÝ]ûjû ù ÷6¾aÚÇÏ„c8n}ï7çöÉŸ Zï;wnЇ¡·ÜŠÙG˜§»üNK>nO ï0Ž}v’×Q²g€}P±àÄݤb_Äòª}‡èÛuž¶}Uðî; }…ú„ëš?æãµëýéÜ?úc¯R°7‚}'.¥ÉwÖ×}\;Ø·‹¶»»¨Ò·ï`_¡E/ÛÔg•>Á¦Ã¹ÆOíXíj»ŽòXÏUéó:°‚}'î¶Á¾c ôC ö~ÜFßmwšçÚ>ÕcµËýìz8šc¼Ðz×wêÀ>öpãv¼»°ËP_Äð‚}…€×!Ð7\}ö9ƒ>¶Zïƒqn0D»ô ]ÙgÈç!7£õî~ÏÛ]îÿ>²ïóšJö*0$*ö0¨Š}ûô µb_Û®CBªö Ÿ*}®UÇk¸ÇÆñü±S©Á>ìJ…¾C ö» ¦÷ “@ŸkÓñ:ŒcåØ öxM+õùîÁ>öìZËÝC ö» ¦÷ Gß¾A¤C¸&«Ã;^ŽÕ ŽÓ\û]ßC2² ˆÖÛA¶}>9§n棇„úü Ü9Bçûï}€a¿añW¤”""vþñЪõEnžšê}ǯ¯j}b‡sý9fŽ¡cró·=eÂwåÀ ö°ó`ß}Å1û"vLòÛ>}BE‡yÍ9nÇuLÏ­w€ƒ!ØÀ΂}CôÇì+vLîë@Ÿḵ;cíØöºÏZïú®2Á>€'Ô7ïØ‚}ª÷2-w]_ŽÛioǺŸPŸïÆ€C"ØpâúöJ ¯8Æ`_„pß¡é+Ð!0t¨×”ãvšÇÿ{ûvZ©ÏwãÀ!ì8q}û-ÐWk°¯ð; ‚}®!ÇÌùpªÇ¿¯ö»¾`À‰Ê¾ˆ-‡ú5ÐW{°¯Øe8I¸os}®ÇË9qªçDû±išä •`À‰Úv¥¾Cô§ì+ü†¥`Ÿ€Øa]/Ž—óäTÏÁ>€y‚}'¦ªÔ±…`ß±úŠS öE÷ ŶC}b‡y­8nΕS;WzÜW¾ š73'f[•úŽ-ÐWœb°¯¶«Ÿ€ß"Á¾Ó¾6/çÍ)ž7=ïß…Í›€¡RßfûíôùüúNùÚp¬œ?§|.õY©oúfÇwáÀì8U°O¨o…SöÕTïë—@ßé^Ž•ó©O‡p~©ÔàM Ù¶‚}Çê‹ì[¦ï0Ê)…ûúœ÷Ž™ój†|žõ´Tꎊ`À P­os‚}ÝvD9æpß¶Ã|…€ØaóŽ»þ¹:Äs¯‡×-Ð%Á>€ƒ}*õm@°o5íy¯G Ïyî˜1”Ÿ«C9ûöùÎ8FÞäÀÀT•Õ`Ûnôð>}i/°E°o=á¾õú ôBb‡u~;^ ágë¾ÏC•ú®ùfÇ›Á>z4Ø`_ЋìÛœ€ß">ç´ãÅP®c°ÏwÝÀ1Ù'a0¡¾Ô1ôiWÏsŠvé;,w(ûZH \ë‡jË¡>¿Ö€“à¯``Tì£'×þ0x[¡¾t`;Dž›ÙEõ¾!WîS©Ïyìx1ôŸ­û:/U긙s»€mJ{z|s‹ç¸½o¾õFïá¾:<7”Ÿ@ßqØU[i¸éÏçhõ;[¨8Zñ¿Þ«õݤÝmŠí¶å½ÍzÔÉ<<ÇÞžWëÝÝÙvE4Ǿ~&œúõ“J}~e'C™b­xéÁÖƒ}»Î¥m¾  óÊŸ¾¢zß캲Ԯ«÷õ* ;ìsÔñcˆç°¼‡É›Á>¶ìFwû®[o›ËmóE¯ºï•?}åæ;9ûh¹‹€ŸÖ»ÎKÇC9·÷y>nñZ›{«à»mà”öÀÀö±e·ªÖ·Í0ß6«ü5[ÚíûJ°ïÆ;ÇT½O¥>ç£c;½Î|— œ4o†``ûزk}œb}ÞzÙ>ïïã7+æµC}7Ú¬´«_á¾¾B}Â`Çsþ9–°Õk-E¨Ðœ6Á>Á>¶h£€Ûgܪ`ßMÃzéÙÖ‹m6œ÷ò’`߯;’kë;hµ­€ŸJ}Î3Çvz½ùÀ›"Á>¶héÀËβ®PßMByé–Ënã…6×\æ•?}åÚÕþ¸½]„®nðès~9ްóëM¥>€òÆÈ›"Á>¶háàugW ö]7Ì·íy·}¡Í†÷•Ûu^á¾ÝZ¸O ÏùäxÂ¦i¼ ¨öÀÀö±%Ó7=£R,oûI o[ËÜø…np{Ùt» ¯pßîí2Œµ,ä×g ¯;ŽsÈq¡>€¾ öÀÀö±%}CÞ^¦öÝ$¨—n¸ì&ó#–‡êšN—qWÞæšÛÀöì* õçÿàoï$Ì!v,çŒc Û¿æ„úº öÀÀöqÛS¨‰ˆQÄxé+|·£bߦa½>B~«, â5לW·âî–]†µú$vçˆãÛ¿ö„ú–ì€ì㦚*×ìÛ¤B^©Øw“ÀÞ¦›ÕÛÓñçì ì=ÿêÙBxï"¿®öüg_=[x|—pß~r¸OìxÎ Çz¹ö|W àÍÁ>®«éÈÂÕÁ¾MZê–y]Á¾öí´bÞÊû›Õëz¾fõëžzöäÙܼeã‹ûw£‰îð_×òÅ롟®ïÖ!ü„Áÿ

€õû``û¸Îé²ìÞQÄx“@_ûvÝŠwÓ0ߪ ߦ!ÀeÛÙõúž?y¶¶µîªy÷ïvû–ëçi‡||¾[C ÷ ×±w<¡ßkQ¨`3‚}00‚}l¢Yݱ6E\ÍÍh/°bº]µo“0ß² ßêu,~>Ýõ¢ž=yÞõú—ޝ;½lÞªéX2_ h7†ðsÜçx;–Ðûµèûioœà0 ö±îYñ©îôä)Á¾›´Ô½sÿîÚ0ߦA¾vˆ¯ë9›|ûEG€/Z˵§W÷nzß²çjO¯šWêÇÂ}ŽíñcÇú»Uê¸Á>Á>–YV¥ï'éǧÒyÄåôF}Ç’q™®ƒ}ëÂ|K—‹¦sýåö‹'Ï×¶®^÷Òéu½uó—=vÝóÆŠÛ]„…ú³Ï€Ÿãz<ÇÕ±„þ®G>€›9· †m]ÛÝV¨/-»±iu½Qu{]˜¯®È·,(XÏ/¾³®í¸½®J_wöêuvÍ/íªX×Ùt9úñÍ·Þ\k^nN•>pM0!Ø0\KÛî¶«ôý*"}¯õØÍÛä.N§Ž0ßüífá±Ë—ô­ªä×¶,Ø·*Ô·.è·ì9Ru»ÖK­åù†e×á>A°íÚWpÈq„þ¯MÕúnN+^­x‰¾rÿŠÛ)"⽈ôÏE<¯ïÜ$Ðq÷¥»Ýa¿Žª|ÝË͇ùVµî]ö‚ŠUÁ¾M‡ñ5—¸^kÞ®ÛËõ¯Ï˜ãw8ÇÊ1„a\£‚}7'Ø#ØwÚ‡Õ'¶«ªô=ˆHïV뉈¸»"Ø·ª_ì›ÌoVøºæ¥ˆ¸|ò|éóEk›VÙ¤õî²ß8nðë·§»n/#X´Û 9fÃ=6Ž# úZõ]4€7Sp<ûNó°oðIíÚ*}eü~Dz;"îE}¾vÝ7¯Ö·*Ø×5ÞtÞMÛò¶§»n/#lÄ)胓¼n}ÿ °%ÞXÀÀöíw÷äÓ¹“ ®Ò׺¡J_D¤#ÒÙäöºBu]A½:°·*Ø7÷Øfr»+Ð7Šå•Û/°}Æ_§Rß²Ð^{zÕýë*÷EtüÚÓ]·W<âXi¹ '{½úîÀ›+8^‚}»ßåú”4­š÷ ·Þ-UúÞHoçe>ÈUúòòéãˆôFü~YxoUp¯û:}U˜o´f½·©Øw“P߲ߺû7­Ü±Ýv¼‚H¡>8Ùk5EDøî`{ÎíàD =ÐמŸÞùÖ»u¨ï<"=ŠH9Ú’^HË‚v£X^‰ogíešÅebÍznìk‡úþý¯}-? Eªîï||ŒýǾüra½eÛÇK¶©Yq šk̇S´PŸ@ ä=•@€7YpìTìë_³ºX\§ŸD¤ïð4(r ¯5®õnäPß()ÿ Ÿ/«ª·j|·Tì«}åþ«ÜvwÙã×…û"6 ö•O®ÿO9Ô×´—o]'iñBš›?ìxlÓw=ÇÅçŸÏ­kUû„’8ªôÁÉ_³¾sèŠ}À)Ù¸J_;È×w¨ïWé{Ûûn5]·Þ=ŸÏÇ¥7ªüܧ£î[Z•¯Ø«§Ïšîû–=nYÀ¯¾ÑîëÒÕw!tW9|·ükšˆ”ææOC~MÓ ­Ã}]Ûøüë_;9ÜL¨Ò'½ú‹€žøë ûú±I•¾Wå[曫ÒW·Þ-§È9ØwVµÞý$bTªõ½‘¾È᾿ñɺ0_{ÞÝ{wææ×Uúº–ß$à·Ižv Þ&"þû÷#å€^×còE3³u_gE¾ê1uU¿v€°iUþ‹ˆ8oUî[5½ !%Õ®C}®Ôµê{f€žyÃ#Ø·ý]ºîSÐu¾e¼m{Ðè‹hµÞý0‡úêÖ»¯æìÜç9Зòøøÿ­ òµ‡:Øwõôyç2ëªþu…û¢5Ý¥‰ˆûþýŃ˜ï«¯Uíy—µÓm‡ûÚ¡¿®eºœ/iËÛž¾¡%‰J}p²×«ï—vÄ/Á¾íîÎ >íÜá»ó=ÈÏýî’m*­wëP_=ü."½–§?›µßÅ,Ø7z+âѲ`Þ²áÞ½;1Š&û^¬]~]{ÞëVëû_æ`_ZstVñ[η$ô×^®¶Ÿï¬£z_×íM .qvêsMÀ°®×¦i¼QØ‘s»8R+C}˪ô•@_;Ô÷ ª¦·-õúê }%Ðw'gÈÎ Þ¥˜Tí}š+öªJ}_EŒ¾–§Ïby ïlɼæéó8¿wã§/â"® lúêéˆÕÁ¾륗&ó›fÚŠ·¾›VÒkši`o®r_ž?÷¨Ö²ÑZG íµ+÷͵äî áÕ׿> ÷Á±ÛU O˜{Í õìŠ}00*ömG³¦à[{FW…¾kÂ|ïmð÷;KŠ·•Ǿ³dÛºZïæ¨Kú$bTZ𾑾ÈÕùª¼£”³v)bôG|°,ÐwvÍy× ö­«Ø÷?é¥õ×Ãì˜ Þ¥Žk¦žŸªå«ƒz×[»=o×5ÙÞ–³Ï?ßJ;Þ¡&†I•>8íkV¥>€Ýì€컽ë„ú6 ôÕõ¶éý¼=oçÛ%Ð÷ADz3"J¨o”‡\/½‘>}="}™|‘¾ÊÓO#ÎRÄ襈Ñ?ñ/ íÕã³5ËlðÛ4Ø÷oÞ»×uò·ãô±MµLj̾› òU•øRëÚê üu$süºB-£ªrßm?ylbHTꃓ¿f}§ °Þ„ÀÀöÝ~®øÔse¨ïA+Ð׿{¿ZÇÛ[Üè®@ß·ò6\…ú^HŸåê|£œ««ôÕÕúžEœÝ‹=8û/EüGËB|]·—…ý®îkÿzêk·¿X¬”7Λ](×Î\«Ý®à’Ç-;YêÊ~M×IÔ²­pŸ€CÑw¨Ï¹þfUêØŸs»8&›†ú¢ õ=Ⱦwóíè+¡¾÷#R ñµÃ|×´ã}kÉ&U­v#"â<¯§ŒÏª,Ûë9÷iÄè³YÕ¾ÎP_ ó¥I»Þ³¹rßyt‡ù–ÍÛ´‚ßM‚}Íšc6 ÓÕ˜^…ü""RÓDS÷RD4M3øËËLﯗ­OŠöãZÛÑ´¶a;ן{×öÑÃGOìÕ.ªô9Çað„úöH°8+Zð¦e·TUú–úÚmrko­ß¬Îmª«óE,úFéwUëÝTúòô諈Ñ×"Ri»{?bT*ô¥àЭý2ú{Õô»yüÞšP߇U»ÜGUU½«éQDúÝ «õ}’ƒze]¯æ0ßg“*~£QĨê=‰8{š‡R¥ï^+Ô—}ç­Ê}qþ¿‹øÎ¯"þ¥º_{ºw ?ŠøÙ(âÎ8âî(âÎu[ðv=w¢k"b1WÁoîþv¡úvµ|ÙÑ]5‡ÚÕûÚ¼:Ì—:æ5±$\v6ªö1pûªÒ§B C©ÔÀðömÉWÑsÕúÚóßëh¿Ûõµ}‘^I•½È•ör½k‡ú缯F¤OsÀﳈÑËy})"ýIè+Ã(ëPßóV¨ï"âìªÕ†7".ÆW)âbUÞuá¾&ânq'EܹЏûƒˆ_lè[vûõüùBˆov€s›Þ˜o‰Û®–7·|, FGe¿åçÐ\€¯ ^§2_· ÷ >Ñ—¡ëü`¯×ŒJ}æ/0``êV£¬×t)½æ{ÐÑ‚7"ÒªP_ñ•0_”¶¹¯Æ¤unYá+lë§­m}9">›´ÜÏ«P_̦ç*öåÛ ¡¾ËÜn·„ú¢j¿›§Ïs¨oZ½/"Îÿûÿ‹v+ÞUmyÿµˆÿiDœ5“ušˆ³QÞ¦ÿuįnÃ[·ãm|ܦã&"¾wq1w 4s¡ínÝj7ß—ªéöõ”"æÛó¶ך×uR5×h;,ØLŸ~ãs\ËR¶mÈA:ç;ìôúõ]1À€ÛÀ[H`ý$"ý8Oÿ*"•6¼ï.>&ED¬ õ½¿ËÕù>™´Ï†üò V¦0?kçŪéoÄ$Ì÷ˆø¢ª ¸*Ø9Ô7Š8{ž[ðv…ú:*ö§ˆóqÄÅY5}UÊ/æÃ}åöÿ âßHù®fR`ï,ª`_“·ë"òDt—)l«ƒ}ãˆøß¼xÿr÷5M³ÐËwLƒy%<7­¢×4³åëåòüÔzή áº„èÂs¶×ÄõªùÀ¦zäúu0pþ FžÍ]·Z_»oµlZêK­ª}¯Ä¬ò^ìûFõ¤Ÿ¯ù²<-†ëõ• _z1ºŸo?›êF£<îj¿ËC}eº„ûÆ­yu%¿&G“àÞ´h_™åPßd·LÇ£ÿ}Ä¿TûF¤:vsÃ8"¾{q±X鮪ޗº®‘ *õÕËÔUûJõ½v@oUžúþeaÀ¥Ç]Õ>àÚÞ:ß¡ßë¶io6€` Œ`ßæ6 öuK Þz^W¨¯´Ü-¾Ò>7bVu/"âëy%_¬ÈzýID|Ù±}iyµ¾Ñ³\­¯´Þ½ÛjÁ»i¨¯ô•ùÑ õu…û"úFgãü¼Qµãªšà8bôïFü íPߺ6¼ã<þÎÏ[åÎ.Œ¥Á»´a¸¯vùæªñµZøÆ’û®um ö±g}„úêssÛëwÞC/×–ï‡ÄÈ.TgÞ2ý«%»÷[-x˺E¤7"¢+Ô—"Ò§yüÙ,xW‡ð¦]gÓòaôeÕ©¶Tå+mvëáé¬*ßèÞŠP_Ê¡¾‹¯Ûm^MÓõoÞ``TìÛ|Wu|º¹¶ o´ªõ•¼‘>Îû^Ë·W­xSDúFL*ô}=f•ùRw…ÀöF¥®í,À'yüµ<~1z)w³ÍA¾Qê««õ]¶*ôÕùJ¨¯ªÊw‘Z·cR¯zøh0¡¾òØmñúxpL×lý~€Ã$Ø¢•_To̓?ÈÏÕúâãˆô»Ü‚÷Õˆx¥ZöóÒû“Ösוö¾š¯ì—bÒf·ùÒ“æ«æžDŒžN‚|sílëß‹Y€ï,ªé«I•¾épVë"âü¼š>›ïΫV»Óð^äp^Ê•ûF­v¼©£Mo~Ìyä@ß(·êmæ+û·Ãz·BquЯØåùõɱ.´WÂz›V3ªS¯o]KÞ¹múú×]ÁôfÈÕñú¨²'Ü7{¯À¼¡Sz†E+ÞÍvSÇ'›©czaü0·à­ÛðFö¥ªïËù¾ÏC{Ñ1=}Ž'é~LÚðÞŸÝ1]æIDz©ZGö¥{yºªäw–§Ï^DœÝ™µà=‹*xw5 Þ]äÞty\ÏÍÂzÓV¼Ñjdzj€gÍ|Q½évó8ª6¼y”qü6â¯w~W¨n]+ÞË<ü7ÏÏ#¥4× ·«o,i½›J[ݪ½nªW-?Ò«Zô.´äíZ~ÓX;^zp-oû â¹6pÍæß±MãÍ$ÀP±88·ùså·ªéGU뵈xµºï³ÅP_D,õ=iUì+{ZUë‹IØ/¥\­/"F÷òíçgw#Fw;B}iêë¬ÖWµÞ†ýÚ-z£ªÆ7îh©ÛÎê–ºQÏkfÁºŠà¨™/°WªžÚ3Z·GKnw “ßÌD«ÅnÓ5¿uÎ4‘ò²©z\ÓZ&:nwµäm:*î‚ eìâ¼è£}nŸëum@ToU8‚}ÀIxÉÝ¥ o¹ýJD¼Ü½Š®€ßt~®Î—îçûê_žŸžUíwSÕ†·T¾{qö<‡å^T¡¾TeÜÎ#Î.ò8UA¼v»Ü´fU[Ý:À—Z·;Â}gM•ÇkZy½úþvhoÕ°nÙˆYЮ²[fYÇš´ìvÇòËÊ@6KžÓЩv¼œº¾~Â}‚>êë\Õ­ àˆœÛŸTmxSDúFuߗ󋦯"Ò×òô“*ÔW¦K»Ý˜­/"·Û*ô÷lR©/Eî+¡¾;yú2ç®"Î/ªéÈÕóR®Ö—oO+÷Ek\ÏåÀÞhÜ›†üR«X^i ÜL*ðZ¡¾QªÚïVíxSÄò¿,ob1¤×5Ýä¨# ©i¦{´išY»Ý¦™¶Ù˜…ïêê|Qµò­Ûç.k¥›:¶»·Ÿ£Yò¥“èÛ6B»ng[žo›¯¡¬Kk^NŒP€7x@Ÿ¦A%–jÖç°RÇxnúÈt–Ã|%ÐWûÒ|Þºõnç¼zºûžVËÞ+‡7úòt=n‡ú¦-o/«¶»uX/E\\E\¤<Œó8ªqÓº“ßÅ(£þ-©Ò—[Ïûbê«}Ó×<ŽHÿŸˆ¿™æÝt\†qk¸j —ñÏŸŸÏh}Ta¾2?UóçÂ~ÕãÒšuÌP×ä4ÈWB†­pÓ@_úüó_BKr ¯ï×ã:áØ¯ÙúW‰ï{Ž“V¼ÀQ{¯ÊW=¼Eñ´‘þÐz|»5ï“|û¥˜oÇ[Â|ÏfíwW†ú.'a¾éÐnÇ›§Ï¯"ÎϪûÎ&UõÎ"âlšé-„÷Òdù³Ôj³[¶+Uúb¾Åðܼ&ßÏ^[Zx@ëv \׊7"‡s€¡‰˜Tê‹ùäæœ Ã×DL«ôåõ/mï l¬¯Ö¼Úó²oÎCnB+^àÐ,d¦~‘~œ§‘¾"Ò»[~â¯EDÕ†wº=¥oÝ~÷ébu¿:è·ê«Çy|µØwêK9È7®*ùç«ùM{U»Ý³öÐÌ·ÙËÓ¥ÒÍÚìN‡Ò†7U¡¾Öë,ûbéA,ÕúÊí:èWWó­9¦ÕóêÖ¼k,­¨Wµú-Ëu>WÌWäcW¶ZE»o¾õF/¨ö:Uòã¯×Uï…8>*öeÍæ¾j}¡~?"žTû""îå!®êKUµ¾«<¤j“éó4 ôÍUòU·KE¾ŽJsUùF³ Þ\¥¾X õ¥®!·ENõsè-EDúG">LË›Uó«+ãu çDkùÔš×îÛœV¬+­xδÁ¶4+Îßæë_wQ³7C ·}ó­7zß6ÕÓ8`iö«® mxŽ—Š}À!L…šR¥¯xi¶Ój}÷&CDD€S ØŒe_cÿ¸šþ^Ïÿ‡˜f}Õ ÷u˜/rÀ¯æ­jÃ{™wWÕöby{Þ¥CÕjw¡*_ÌÚ›Ò,Ü×–ZÇ%­8f©ý€®À_Ë«ø#â?¼ºŠöì,R+À·°ÎŽv¼%¸·*`×tÌ_×b·}Zµ“à†úZ ´¯€_YŸ€,C¾^ë_+}§E+^àPtæ¤~²¥üÔ«Í+ÍËÍ7"š¯G4ÑüqšˆækU¶ð¥ˆæ~uûI®ÔW†g¹Z_ÊÓ±¢íÅ,Ã6ºÌá»<>;Ÿ„þæB|]a¾V›Ýr{9Ô7n…úš5mvdzuuË݈X X¦ˆfTÍN­Eþ4âÿ{ƒ»ªMoWU¾.KççPD³b™vßeíwSk7¥/»tÈ!¶¾¶]E@¶qõê³—NŠ}À!H›T뫽›Çïl°ò×ZÅ×>ŽÞ³Ùýˆ¦ ¼Å“Y¾©R±ïi÷=Hw"âEU ïEÄèNn½{ÑQ½ï|Æ+­xG㈳³Y Þixo<ßš÷,ͪóÆU¨/u„úÆ“çš{©MD*¾¬_î¥àkfǧDÜR½l¹Ué¿eûêª}ÑZDzºuõ¾&WêëªÈ—¢»]î²ml·õm:Ö³° pC*õ- }ì›z*ø1´÷@åw§EÅ>`è–†úÚÕú~uƒ,ÕëUá¶O"âñ5ÿÒ’Âo¥b_©Ö÷¼•W»“Çé2ü.s¨¯„ùΪj}g³pß(:~‘—ªånÊÃhÖþ·nœÒòüâdÇOBŒMÌÆ³ð^S¦Ër£<Ô+÷O0¿þ¹éö†´çý‡WWíí›jšfá@t=W½ MÓ¬­º×DëUGwûÝT­»‰å!@Ø„Pß~_‹ ~\ç\ÙE¥>¡>€Ó$Ø YZõUv»Zß÷®¹ò7ª¼Õï¶´Á%ÌWÆwË iUë‹è{ѪÖW†«ˆ³«* wU…û"‡úFóéš7ç!ª¶»Õ¶t&!Çy¨Bjuf­iߎYˆ¯s¹&"þ4âÃkø%Cnèh œOšf®ß$U¸Ì»N ´赫ÿ5+Ö{“çâ´ õmþšú|];lÁf¿„úN–`0TiÍWÙK«õ=hÝ÷~ϹªRµï¥Žûž/Ϩ¥‹<Ĭ¢Þ\(/U!¿³<®ï«*ø-<6ªJ}£ÖóŽóЬ¨Ò7êêUÃ4÷—"ÆÍá¾4­›h–ÔeUûF1_µ/µÖ±¬bÞ²ƒßt<~vc>@ØЫŸ«/®{¢¥Ï?ôùç®v"B¨oˆ¯OÀ=)"’PÀi;· €ºV¨/b¾Zß»yü^Dz§šÿÖ’•}‹ýœóú¼zÂâúCDúÚ’u=Í•ðžæª}Ïç7zZµï² äåP^ŠIxo.¤—ZË•0_šU㛆ýFUU¾fÒ’·¬7åy)E¤QL’y-íÖ¹õPîW»j:&Ó©™l×\n<Ûwéºñ„´ê€—çi&¯*uÝ—ïoªûK/¥tímhüV…á:úëٷ΃]ê@Å>`Pš„úbIµ¾ê{»Zðƒ ²X/ç0ÛgKî¿Ñ|µâñ¥ýî³*È©]½/ÍO""G¤³Ùíi¨ïª£Ån,-wG³âvs¾üíVbÍôŸæ/Vä+UúÆíé¦Z¶ÜW먪øÅMÂ}íáÿzyÙ>gòÍ·Ûm:ž¯‰V¥¿:8Ñ¢hZëš¿°ÎÖ2¯k •ú„‹__U¿NíÜè»-ﮎÄ|ÑZNœŠ}À`4ë¿Ì^ê{7O—j}ïG¤·#âaDª+ö}+"E¤7"âõˆø]žÿJÎi}«7&‡ûÒý%÷ß‹ˆg­í¼³ª}K†i€¯,w1:›UâÍ‚{ÓP_j…ËPUæ›{)¹ÔÞ\u¾fÌ‹¼î&EŒÇ“éñh¸L©šÎUúæ*öÕ·«cÿùˆÿô?‹ø›±ÁAîJ6,›ß:‡ªòM«ëåê~ž‹‹í|7x|³Á:GZïýUþ:åÀgûµ÷¾+ë²u½nÁÜ/ÕúˆP±†´*Ô÷“Ž<ׯZót„ú"fÕúJ¨ï͈ø°zÜÇ·¨ŒóÒ’Ê}¹R_©ÜWogz‘.ªù©ª°—rµ¾óY`ot‘Æ­ ߸šŽÙýs¹·êKí›É}Mn‘[·Û·¦§ÃhV‰oܾ/uL×üÒüz¯]µoYòß¿¼Œ7Wî[w×Ví[ò¼«ÖÑÞ¶®¶¼©ã±%Ô§Óéê«ÚÛûwÌö|LUñã6𦙑¼9€aIé´"?·­Ò×¾]‡úÊüR­ïƒˆôfL‚}ßÊ÷‘^ÏÓŸL‚p镈ø4íê!:ÆO"F_Ëãûéiä¥Y«Ü2}³ñYŠ8»Œ8O“éó˜ÏÇ1¹ï|qq–Çõt^ö""ΛjùÈC“×9Š8ËÓ£ÈÏ£f¶=u‹ßÔ7UõÀ\/ªé¨B‰ÍŠÇÖûì?x3uŸ É«j¸l /"â¿uq1;ª*})¥Iச7½¿Ü×¾æRš¯ÔW?¶z|}‚5^»gŸ>ò»É§ó‚[‡«ÏÐ×û“ñ+úнÃýîZuþlãmŸïjXFÅ>`o¶Q¥¯µÌB¨/–„úUû]Çv¼|Ã×t¯{ö\žË<”Ê}g³en4Ô©¼b”scãé®žŽ›ˆhr¾ºªÞ\õ½˜Í»jªéhM×óbVoºî¦zÎ2ý7#>誢·Ì²>{ðšPDÇýu¢‰î”Vl_»_ŠÕ­ϴߥ'%ÔG·}ìTï;l»ªÀ(ÔÀ*çv°ëB}?^œ¾×ºýnž¨«ô½‘Þ®–‰èõ½“6¼¯GÄï"ⓈôjD<ŽIµ¾Mƒ}÷;æÝ‹ˆgq'"^T¡¾ˆIi½—9ä—"ÒUGn-uÌëF3kc¼ÐvwÔª«o"ÆãˆÑhšÿ›mkš,3ª§såÂ&?&åð[j=6ªmåpßh® ^lV­.­™¿,ä·iÕË´b½]A¾¦5½¬oÛ¹PßÉê+$Ìw=ß|ë½íÊsªÞ皀›PÞæZñ®i¿»P¥¯ô=¨}õòu ¯´Þ­ï_ê+!ºèjÃûõˆøbI+ÞTµ¡ˆÑ³ˆÑ½ÙüÑóI{ÝÒŽ÷,Eœ½Èãv ÞÒF·ÝŽ·n»›Zmz#⢩Úïæ6¿ç1k¿[Úþ–6¼£öÐäÞ¸»ÍnÝš·ÝZ·¼öQô[hë[ÓnËûŸFü­öÁ®+æÕ¥ÿ®¢»ï‹jüß¹¸˜ìr 嶺s-u;æÕËÆŠÖ»©u»^®Yr õµ«¶§7% tvÑv·‹V¼Ã8F®açÅÆï‡š&Ùë,£/°k7õE«J_´B}ó¼Òz7"Ò‡³jw):B}¯åõµC}å ¿˜¯ž_µn?©¦ŸE¤§éY«‚Ý‹ªbßÅük¶æ½ª†ˆˆqw5¼ir®5¯³£ì(·ÃM³¬\æZîŽrKÝñb{Ý«ºíniË[G³ûZò¦ª-oýü3â?iZÓ«Nš®yMtWÛkÓ²ûóïªØ·êùêé‹-Uêûæ[oL†­ïö*õmÏ>[ôª 7Üë†D°Ø©UÊ:£–P߃*{U}ïÄ$гJ}s¾ó"&>¡¾íÛg`VˆŒ  pÂÎí`WV´àMËn?˜o½; ô½¥J_ ô½oæåê@ߨjµ›Wž>É·çÛŸÆ4¸7êkµàz‘îO†²ÁéiDº“€ßóˆô<7fMU¸¯¼¸ËjýWóí}Ó5÷i¤ÅÀÜ8·¿MiÔKy^yþ¦™ýáw*·óòMy͹=oSµÙmb~£ÙcWëF1æKÕ¶w†ûšŽ×Ùl°/êõFÓ̵Æmò¼ÒŽwÝÉ׬:1¡ÒWHë:a>mxo®„ûv¶k?Ÿ /PS±Ø•k‡ú¢ê+ãvÛÝÈ¡¾Òv÷Q«2_W…¾Q¤ëþ$f¡¾?®¶¡Ì+¾'U5Á{1iÅû,:scéEÕv·¾ïlÃx–+òÕUùêP_3©Ü×Äl<W•úšV;ݘTÝ›VàËUøæ*øòív¥¾j¥ÍîxœŸwœ·¥£BßÜðfÄÜÕz·¹ÁÉõ¿}ñâZ'aWžv;àtÍ“ûþ_ÄýV¥¾Û…|N› }»·ï–×ÚôžÔû!9qÖR±؉®°ÖO"Òçg-âÞËUúZ÷ÏUéû0Wè;kUæÍWÝ[¸½jüe~ž‘~_M·Ç/EÄÓɸúÒݘTì+ë{‘îĤb_y%Üw9iç1I̵ÍÂrs; šßœÍÚî¦È•úª×:Ý÷¹eï(ÏoÒ|%¾4YdRµ/rž4YWý¸ÔqlG1 ø•ç,OÝ!Fžžžõ6® ÜÝDÚÒ²)®öëzü¦„úC!¬›úTëÛ®úúÛGÐü 8ðëxÕ¯ƒMZº@„`°ËZðÞ4Ô÷AôÏ*Þ- ô=žÓâÓÜ”õ³<þFD|‘¾_ä }_VÏ‘ZUõºB}ù¾ôÒl¹t¯ãµÜ‰ˆ­Š€åÎeÒ^ÅüŒr0®Tä»Ê·G“ªyu@¯ìRkÇ͵ÏçÖ»¹ú_;à—bê+-{Ë~m¢Õv·ã87948î ÷åíiZk¯gé¼fÅã¢c»êÔÜìÜ]æû“/¾ˆmÆ4z¸¡¾~í³M¯Ÿýïc2­x€¾­mÁû«¡¾÷s.«´Þý ªÒw¶¢åîãˆÑ«yú•<~¹ Ö}‘«Ñ}YócGuh//_î[õ•égU¨ïyuyM¥b_mÅ_^—*|ÍY«Õn̪ó•»õ¼iËÝh Íd¸åv»u›ÝqnËÛj³;×z·ná;ªž#UÛòíf>`¸²oW Ü®anç,yÌÂí”æ“68)¯ã?÷Åñò_lµŸ¢ Ïaè£eêûwµß°}\›Zóö»o÷ð^Hû]®EÅ> W›´àý^?ˆHïÆ|¨ïíˆxØj½9Ô÷FD|<ßv6=ŽH¯Æ¤Bßg9Úõy‘ÇKªñ­»Ýž®C}¥ª]z6_•o®òßeDº¨V|9=[ÜeW1i¹ÛTÕúÎ&A¼Q×"WçkfáÆišnT…Ó¬Ú^¹_^Ï´¨]n½[*ûÍíƒ2®{öæJ%`X–™notÓâyùñµâÝ$ð÷o¿xÿÝ‹ùøäÂþmíñÔz¾öòËR¯}ñ…‹û ¥õ.û±Ïê}ím`8×ð Ó_!Úïp‚}@o®Û‚÷Ý<.íwÛ¡¾Òz÷QæÍ*ô¥œF›úê¶·7 óED¤'é~5ÝÜK÷rÀ/ÍWë›/r¨ïEG;ÞˆˆËˆ8Ÿ„íâ*OGkÈUùF£î‹I…¼:hyŸLËîUóJßQäP_ߥðK£*ìWµæ-_F9°7ç,^Þžèj¹»&Üy{›®j|Ë«ð­ ú¥´é¹9(l—RZµ–oV¡¾®€áM 윾ÃU_«û ùùyqó}·#I˜€Ûìvm®ï÷çOÇíPß·òüQDz=O§|;·ÚÏZÁ¹vµ½?D¤¯EÄWy\î+ὯòøIkéi5¹:_äP_Ù–;9Ä­ðßEL*ôåq§:Ð×´Úð–0_“Ç©ªÔW‡Ç9à˜ÓxÓu•ÀÞx²®”C~©™¯Þ7 ÷Åd©Y«žónµ-ÏçÛð.´ä½ì¶wÎY«Ò]TÕúÒ¬e*õb0«Ö;­„—[ò–ê{¥j^]¡¯OÂz¥¥qäõÖí|GU¾vkàºõîô¹«mhšXHr–Ê}s¨o/«Ì7ŽÅÀ_Wõ¾öºÛaÙ…¿,ÔW­ço}ùåÊʀ͒×ÃaÛV(H•¾Ó±Ï6½õsžzÀo×mw§¿ „ùØ¢‘]l[³A‡Óê{—}/ߎˆ‡yú͈ø0"­ õEDúƤR_gõ¼1z’ƒvåö¨š³JvÓ!"FÏrºz^}ûnð=ÏC;Ô÷"W¥»³¸½Ñ1žV¢»šîÂÙ0Žh®&¸¹"v£ªh\3_@î*"®šˆ«q5Џçù)O§Ù¼öz¦Ï3ÊCtdíJo¾Ó=Ÿnê”Âêôpl´â¶fU¥¾WÓuµ¾wcR­ï˜Uë{+&ÕúŠsžÜz6½²"Ô—&-wª÷=©­öºÕ²íy‘&mvKÜr:ïÅü¼ÔÑzwê»ÈËw,“Øù¤*_ÙMÊUúÎ'Y±4Î-yÇ­€aiÅ{–ºP¹®zŽÑ¬}î(?OYÑ(Wæ‹ËÉú›¨ªìÅ’v»iÖ6¸´Ø»¿¬”Ûï6%Gs¶¦€[W±¯„ìÆ+†u•ùªs¶³7ò?õûßG×vEÜ.Œ÷º }ƒ6Ô*g}‡­„ëöÕš÷Â}û õ@Ÿû€[[×z·®ÖW{7߉ˆR­ï­ˆø ªÖ7j…úRDú,¿Þê‹Iˆ¯´ÞéFÕôݘ…ùžW·K€¯G¾ïÎìö4ö"ÏŽÐ^+ÔW·êMç1­7 ÎïÎÉp6i›Ò¤%î\˜¯îòãÆÕtä0]™.¾:ÈVL“õòrãÀ«Ö¹Ú‹ùçï¬W”Ã~ÓV¼yzÁ¸ýÂc1Ø·,ÌwÕʼeÚÏŸRšîƒòþé*Ô·,зîþ¶¬Q×éøõQ©ãPì´ÊÝ>Ž™`°©…/´7 )ýxÅzÖUëkû¬j³ûåd¼êûZGÐîY^®n½[…ÿ¦A¿»±à‹˜ù=Ͼ;9ÜwQ=¾êPßù$è—RGøEÌZ¼žçœØÕl÷–ª}MDŒ¯&aÇq¾3µzíÀ_çA‹Y˜/‡c\Ué‹*Œ×ä@`+Ü·ôøwTí+ëÑ|®^>ý“ÿÿgÄ?UØÕ†w‹my—ýÆ]¯¿Þ[uÞÖ2ÿl+Ô+¦7!Ðw†Úz7Bµ¾cµÏ*~®Ù›½÷Ñr€]ì"ò×}|e½¬Z_yÎwª›Të{9"¾¨{Xê{V…þîÍÏŸk[·Õ}¾¼"ßt|§º¯÷Ŭ ï\¸/ÏÅbø/"&mtK¸/Ïœ†ërÕ¾HU¨/Wúס´R­¯®ØWrKªäM«òµ«ôÕ!¼ÊÏ6zÓhCiÅ[Â)¯·]á®YU©¯]•¯+Ü×541«ÆWÀeû#"⿜C}ãX¬È×ûElV­ïñ_?^ÌÙ?¡*öMÀoÐ×læ`Ÿûà4¥]|UÝõý*"}¯c¹Ò†7bV­ïQD¼ÞZôyÂK“6¼ÓÊ{©ê»WM?«*ø¥V5¿j¨+ïÍ…öJ¯ÜnW뻬–«×}ÙQ=0ª àeU¹/"⬪ÔóUôÆu͹2QWß+á¾rg™×fK)¯¯üJ°Zm©8wªÔm—ëöµ'Y~êflß7}²qǸ]±ïêCŠŽ“°_½ÚU7 õuü¢ußûw¯]ÝÝÚV@Hë]¶AÀo7×ë¦ï‘ìq†`dÀÉHÍlè]W¥¾ê{¿4/KÞzÙ7òø“ˆô8"}‘¾“]ª‚q]A½ê˾Qš´Ø-m{G)Ѻ}9)ž7ŠˆÑ‹ˆ³1º“çßÉó.ªåÊc.òcÊt½îŽç›nkê;i+Þ¸ŠIÀ¯éÈ–]å_TC¹=ЏW·Ë¼j™iQ¼q÷ú#n™Eköb¾=o3ž¶ÿŸŠø¿­ªÄwY/—ܾ¬–¯Ûí¶[ïNçWþù?üaãP_DwKÞea¿ø×ýô˜C OiÃ{z¾ùÖÓɵºP_Ó4Zï°w*öÀ‘köPy¦+ÔWWë{77lïDwµ¾äû*"}mI¾¼Üèùüý£èhÇUå½®Š|už2¾Ì÷•íŠÙ8¥Ü»ìئ¨B}WóÓq6 𥳄‹ªjßYµÏÆóÇ9êm(·s Üq^¾<÷t¥Íîhôë4й;S3{Í ÛZSÕn·´å­Ö[–kJÒ¯‰ÍÚí^®¸¯ìˆj›æ*ôÕ/4Åb¥ÀU•úº|e\Wê[ücTêãPœz¿}Uéè`(ûàH5{j%×ꋘUëkk·áý°ºïµ<þ´ ‘¥ùð\¤ˆt?ßN­v»¥R_ꛫ˜÷"bt‘|]mrÛ-vK€¯·‚{q5òK—Õtà› úµöIî‹Yðm£&‡ýÎ&Õø¦Ú!¾2»º]rnã<!Ü×>aªV½eÎU¼k&ë)ÁrÞµNÃi«ßH9ÔW·ü­«ù]UØìëªÎw¹d˜†úò–µÛ×-ySJ ¾eÕû"V·âeØ´9åÕÕûNáÞÃkê`ûàøÜ¨ÕîOª/¶|‹'ïzl]­ïADzwÅã¿Õºý¸#Ô×î{Rüêáù¬:_êÅ$°7­èóÁÀˆùêzQWÙ[ä›çª{Óí=o£ üÅüsOÃ}ãùLY ô®rÆ,Uy´4ŒÇ­ÊÍüòs)À.£ê‰sX´³Z_‡i¨/¿Ø&ªP_3›W·žëÑÛU¡oÙÐ^®õMÒ‘iaã"æÓŽõ°®z_tÜ.Õúº<þëÇñrÕVUtd·¶ÚU¥>mxérÌUüöôš’³ €¡ì€#rÝ*}uu½÷´Mu¨/bÖ†÷½ˆôND¼½â±ŸäŠpÝa¾rûIDz)O?ëhy›æçM~—¹bßE«Š_YoªÚó–yíŠ|õ6Eö;Ÿ­c®²ßy¾ÿ¬Z_ù ö²õú¯ªC›7 ø]åª}õò)¦Aú2_)Æ7Í¡æ[ü®ÔU±¯]­¯µ ¥¥o]à¯};R+¬­`_]±o]u¾®_š¿.Z™ª²Œ)þÙßÿ¾3Ô×l0ÄŠù áµÞècß|ëÎíºÚß±_£×$ÐÀà öÀqظJß.Â|E;ÔW{§š~‘ÞZ±ž—#â󮿘)O?Í´{ñ¬ª¶¿ê+Óõ2—­ª©⻜o©»:l˲­P_¤j=Uèoê¬Êˆ]µ‚r9°7Šò+ÕïÎr•¾heÍê0ßx~v5œ óEÌWì«_`,®+Uá¾òйPßü*§•Çu˜¯®Ø·,Ø÷bÉôeÄtËS5íéˆøç¶ê+•úºÚó ùíסU5êã:!´7Àësî—€Ö» ™`¸MªômæûU^×÷6xÞ_UÓßëÈ/u…ú¬iûÌg9ŽÕ ›kÛ}s¡¾Ê{‘îTµv¨ï¢ð‹V°zÞò؈*W…ýJËÝz{K0/ªê|©=]Bu¸¯®Ú—""ß_ÚÙ.´ØíhÏ;î‹î ßôŵϧq«%q½ÿÇóÇ¡õ¥ò8@«B}%Ð×õýjIE¾y]ïæÛïn¶ ©z|y\gŽéAôÕë}'ß^ñ¯E4ŸD¤ÇqóÖ#)"=Ÿ…ùâ""^L*ôÅy5]·ÓM‹!¿¹ÛçÕü*Ä7 ûÕ-uëÞÕ†Ûܵ\Ý´Ëíxvs5™Ùœå–¼ã5Ï5ÎÛYxå¼Ê-uK(¯„Úι\ù/•p_šÏ´¥ª2`ÓõÅä1ãTußmû.;ÆËªù-´âíõýÝÜ~·õµÇ]UûÚCW•¾fõõÊí)©iTéà(öÀ‘XÒz7u´Û«Ð1 ò½SÝ~gõS¥êqeùsLí纎/b±b]DÄ“˜„ÓîæÊpùþæyDs§µlq™Ã}õôåìõ¥«Vu¾¨n—ûsà.Uá½T·Óí îu„ôæöÝYëöÕ,´×\xm£\¹o™Ž^êªØ7Ê¿b«[ñÖO>âU!¿r»™mg“f­w§ù¹qÕDŒ›ˆ«:x·ªZߪ`ßeÌû""þ­ö»íaY ¯ê‹Ö¸«Zߺ áþõcÁ®žõÁq^“×$ÔÀÑ쀲¬Zß²PߪÛuÀ®Ú½¿Á—âoçüÒ;­u¿«C~× õ½Ñ<ŽHŸFÄË͹jßïóó}÷#š—f¾ô4æËîmêÅ|óÖ(UüÎ[Á½˜…ùæ~e™4 ÊM[òv=×Ù|ø.•ªvy~çc®V¼¤«ùu/ÕªÌ7=n£ùskn?TAÀ…Ó±™µáí õ§§mw¥¾q5Ž"®RÄU]±¯èÛ$ÜWÏ›¼É+©×±*з¬Jßmªõu-ûX¸oë¶ ê3Ð!Ô‡ë±gZïptûà@Ü4Ô÷ ·Ü-J¸®æ{;O¿½Ùæ¤ü¸ò˜:è—Þ[ò U¡¾7—TÖ{%¢ù4"}“Ù—1M5/Uy’'ö¥ˆæÕF—'8_ò|õë«>@k×{ÖÑ–wœ—©+÷-S…ôšú`ÕÁ¸%µ,(¸¶­o©Ê×>?ʶ§Öüº oõ ¦©ŠÔ¥ÞËãiȯžóY¹ÎP_“³v«‚}× ÷ý‹_}ÿ‡¯}-þkUµ¾²Žqlò«~/ݽuµ>ú!Ô'M €£%Øî:¡¾¨*æu…ùV}«µÒ‡­ÛoE4U0½•ünìã˜ù^‹Iµ¾Ïre»Tó¢MD4%Ð÷,ϯSwUØ/E4/"šËj¹ÈË\vçJ5¾Ë*¸×®Þ—ªê}­cе¾…v»QúÊÎ&Û3•Ÿ»½Îét©Ô7îxÎq~ UË݈É~\¨Þ·l»›Å›©ìϼž:Ì·2Ô×ä`ß(‡ûšÉôåº`ߪp_×­umäkWëÇ$Ô7N‹A¾%ûfé|Ñ“í;„P¸&{¡å.GÏ_±ÀÀ¤´ø]u³¦²\×íU¨ï½%¾ˆY˜ï­Ž•P­ïÍŽ\R û½UÝWüVimÇ4÷a®ˆ7ÊCÊãW"Òç£4™WGOòøþd=£4ÉŽžçqªÆ/"ÎRÄè"?þEëþˆ]EŒÎóº®"FgyÙ«Éý)fãi¨/æ NÛóvi…ûÖ»Žy;X8ÊÛ4GœM¦ÏÆ“¼ßyšŒÏÆ“|àùY5ÝDœ"ÎÊ8Ï?Kùñ£ˆQ3yü¨~ݯ¹½ís¡¾Ò‚·®ÒW~)ârœ3wÿFÄÿ°ðÝ$Ü×ná»,ÜWWïwL7qþÒÝYáè®Ö×,9hë‚}ª¸ÝζD» ö9Þ¸&·ó6)"Â÷›œû`à®Ñ‚÷Z¡¾‡é­˜ú>ȳZá›ëÿ šQúÒØ«â—VüÞ_SiçÖãG¤O'P*õ5‘+÷EnÉû4¢y‘^ÊíbSDs'¢yÞÇj^ÌW«‹óI…¼&E4g+ÚôÖmoëÖ»Ñ ö¥¯ñìF§Áúpg ^Í#bV­/‡Ö¦÷åy)Åbµ¿ÑbKݦãþ¹¶Â­ý< ôEõ¥YëÝi¨/ïÒ«”«öu…óÖ…ûº–_èë õµÃ{/ÝÎk¿°hÍ‹¸^¨ÛQ©ŽïšÜ€‚%œÁ>8Pu¨ïWé{yúÁšP_W ï͘…ø>\º{s>£”>ÈóÞŠ¹êK~]¡¾ ŒfëOb®D\ójD|–Ã|_·üšò{‘îµB|ͬeìÜíz™º ïeL‚~uÈï2æ7¼è:vQŠ¢[î[M˜¶º­Ö9·þÖüu§­xó¸Èá¬7cèKߊˆ³I•¼ô¨ ½%\÷¨¾Ó`ú°jáûÁ¬bß´z_Ä,À·Ì[­€à·"š7"šGññd?4ãˆæåˆæ³|»™¯"7­*w/糞æ!ZçÚãóˆñEÄøŸfãJh¯´ØM—㜫K/rX¯tØ}Ñäañ¼™Ì/R"ž¿È˜Þ¹d¸ì·«úµãX øÕ-x×…úªk³3°wèÉã¿~ì‡Ü5í¨Ý'0Œk25M#ÔÀÉì€ó“%¡¬ÕüºýnÄ|¨ïÍ|߇9 WÂz%Ä7ŠHw £<ÔA¿ˆIÀï¦á¾º’ßÃÖ}¥*àëÍk“V¼Í㘅úþ¤ è•ᥜÑúªÊbÝßÉù­¦¿ˆhžG4/ªá¼ øE+ä×̇üšM~W­àÝÕ|ËÜiÀ¯´ÉÅ@ßÜíRý¯<~TÝ.¥õºB{WyÙú¾2=šUœ¶èܶ ú5£ÜZ·ÉÃx6}•[ì^Z¡¾ˆ¸åq ôEñ•é&ßÏÂ~Ï7 ô­ õuµâ]U¥o.à—6«ÒÕ¼eÄQ¶g•úTëƒí]}†úš¦Ñu €“çM1 LÝŠwƒ6¼]Ó)bê{;C}%Ð1 õå ^|œ÷zµÂßåy¯Uù¤óøõ<ïQÌZõ~“j{Äæmyßîxm̈éQ*LyüJDú¼j[·äM£§¹oiÅU;ÞM[ò^äyíÖ¼Q W³ysíxs{܈ù ßœ«ˆ8ËÁ:,8êèðZ-Ûnñ›êç¯ZçžåÛãˆó³œý+ÓãÜ‚÷l– ,-zË:Î"bÔäÈÑj3y;dzq3ÊíwÓb§Û«¦Ê×¥*s×L‚—õt þ«¯ÝzwU»Ý®Š|«Â|]¡¾‹—îN_À¦­woÒ‚·&ðµ™mˆvðsœq-^OÓ4ÉÞàÔÛ0L¶áˆIµ¾w[óJ`î­<~3æ«ôEL*ôÕ¾ßE¤ßUëxm2oðËË5Q=.·ÌMoD4¥zß›“p_z3¢)•ûJ¸ïí˜÷½_mk–P`*AÁöëýth›ËTå lšˆñ½ÉôèɬŠ_¤ˆx–N“ý/òzRDs1©H—ùî9¤ÖÌž«irø®ìŒ³j‹Ö±:ë˜wUÝ>›Tþ+½ÞKg“ç¨71E^6:*ö¥*Ìy5¹y½Ó €ËÚ¶TÁ¼Ož¨)íwsH/Òä¾Qý˜r£,[Â|]¡¾fÒ›¶éÍó/óüËfvû2"®®r¸ï2âªTáë ðuUãëj³»*Ð×öm;ÔÇöô$zþÕä§Á¾*økq)>È´â€ò“%ÕúÞ]œ×9þVõàê{=&íw‘^‹I˜¯TÂûdVoz_ÿ¥×cü8Wý{Ôú2þÍXÞ–·­ýÞŠhJKÞ&ÛÛ|8Yw|©˜WZôNÛñF«un»j_W;Þ¼ÃZñV›*ùyÏf­€§íxSÕf7U­xS«ýn™MZïN_STí…sÕÂÚ\p”³r%ü7šµÚ]hÁ;žUë›kÁ{quVM".ÿ刧«2ß²J}›Ték:Æ÷ïv†úºnÇšé®Ûë~-ÚU»ÏUn[ÍÏqÅõ¸ÙÛžéÏNßYÀû`˜6nE÷n¿—ó~+Ü÷f¬õ}’«ó½“@ß("=n £|äåK°Tï«+÷•–¼›WíËÛyÙæádÛ›&ëŠ7rˆlœ+É«*}¹ŠÜ´R_ž?~)büUU½ïîä¾q“s^õø¢•;¯*øÅ¬Êßø*?ÏYĸ Ñѽ5·Û­C{Óyg{êÜš[é6ÕI6·Ý¥:_Ìg߯iy¦îrTUêË·_Œspo<¹oZ±¯Té«+øE«šßeµüe¬¯Ø·ª5oW•¾vÈï|Ë¡>no¡¾ˆI5¿›VôêÃõ¸Ñûœi…>¡>X$ØÔõõv݆÷W¹wòøíjÞ­å–…ú"&¾â+Ë·£)uÀ¯÷­òæ˼Ѽ_vW¸ï2W|#¢yý†á¾¯rPínð‹ˆñ*ÄÖä0ßy+àUì,/W·ç½\ öMÛýžÍZô6íÀYø+ûâjõi°V½®ñl=¥º^YÿܶŽ&-v§û3r˜o´˜»W¡¾È÷rõ½ËèË!¿© éÕC“C|MèËó_œUí{—µÝÝ$ÔW´e-xÏïß]a°þB}7­ºwÝçs q-nö6Çw“°ûà€½›Çí6¼ou,Û®ÖWæ·C}ŸF¤O[ÁÂ2/UóËc>¹FÛà¶·—d¡ÞŽhVUî‹%•û>hþdI徺z_äÛO«û¢jÓ[†óî¶½K[ò6Y²¦Êµrdíj~„ú:ç•€à¨Z_Äbžޡ´žËÃó&úÆMÖ+½\¹ï2Wå»Mªï½Hyˆª ߨ£B_®ÎW·å}ñbì›Vî+­xWUì»IûÝ¡…ú""ÿõã“þY6ÄJ}›*Uü†ÒBnsî¢õ.°Á>8«Úð–j}õò¥oW¨¯,ór5ÔR+XÖ÷»üxK_Ü¿]e¬–…ûÆ·÷=­~u¸ï¢䋪oò«‚|ã«I nô‹Åp߸©–‰Ž¶½£Y[ÜeY³…yyÓª%xV­+oD×óM·s\…ûrÕ½ñ(‡ú¢ òf-w¯¢jÁ[†«ÜŽ7ZmxGUÈ/‡û¦ÓÍ$Àw³6¼—MÄåyömÚzw]˜¯n¿;Ží†ú¸¾C}» ûõŒ‚Á_‡úà†ÎíœÞ¾/Õú^kÍï õED|–ç½< ÌÍ-ÿ8¦¡À…¬ÓlK»Zß{­ûß™M6¹5o“Ûò6DDn1Ü”(Â(¦Á¶øt²Ç£I›Ùhfw#"^Šˆ'1ë—[6äND¼˜´ ‡ª-r:I;Ýú8]NÆã2ó2?Oš=ß4Ô+ê¥ú/®Gݹ±é¼ªª_T››êûËcJ(°TíK­ àxøóvÇd{Æ‘_wnmÜ´ÎÅiH0µZðF®è7ЏJ³Ê~—‘ƒ€WùvÝz·Œ/«ö»Íl|užÇ—±YëÝ&Ö·ÞmWê‹Ø^¨OØoÿÖ…÷îÜ¿Û{KÞZ I}ó­7oaTíwàúû``º¾úþIDúñ†Ïá·¥ oíqGˆ°ê+Óíp_ñjLÛñÎmú£%¡¿ˆˆ÷c¾ºà{ñNDzïE¤wbÚšw!Ü1 v…ûb2½îû*¢ùÚ¤r_DD<‹É†Þíÿ”—Ÿürè+µï/ãó¼ŽÀ;‹HW“y)O—p_m–››>ËWK4ž<ÏB›ßñ,ÛVŽÅ\¨ï,?6ß7ŠI徺ºRJ“y9(“}:­\Ø ôM è•Ê{íߍ𮖛kõ­`ßuB}í0ߪ!6¯º.WÍ¿‰Çý8^ùÓWNægÝ®Ûï–åöð‹òãx¯Á%¦ï!„úàfûàÀü*"}oƒåÞŒiU»x#">Þà1]¡¾¨æ•pß§KB{¿[æ[fY¨/òü÷ò¶¼S…ûÊëû "½Ѭ ÷}#"}1Ê­x㣯å*{wc¡ ÞB/¯j:.•횘}ÈÚDÄYLÃw¥B_ŠÅp_½®¹Š|­ê|ó÷-5š½äiníjÄ›¶E¤ê+ çý5ÊùFùvšÛÈù<ܸnۛÓu¨ï²©ªõåJ}—y™i¨¯®ÖU¨¯VUê[U¥¯ëöªZßC}ÜÌ.ÛìÞ–C=·L ¶D°NÐ'éÕ˜´Óm·áÝTiÇ[¼¿»Á¶¼³&UîÏÕûšˆˆð{³Z®Ä&Û×<Îù¾Ï"âã:Ü×ÌZæNC}O'êÆ)"þ("žGÄE¾ÿ<¦¡°vži{Þ4Y®äå"&á¿TÆ©#Øw³@_™¾ìØ—yÝW³ê|)&Áò\ÓÜZ©Ê×L^Ë´ån3 女Ö~ËÕýF1·Ï…Ò†·iæótãÈÕúêpÞ(â2Wð»µZ*}gU€ï<Ï1>ŸÍÿýˆì¿ñÿ^êë_§Rߺֻ]·—ÍcsÛÝ&зÊ}Ëö€‡z ®"ÐÛ!Ø'èÕˆæ“I[ØîkÖ…û¾ÑÊ3=nÝÿ»ˆx-¢)•߈h>\³¹Zßœ˽sÀÔÕš÷[Qžïõ|{%Ú>}óá¾¼è´5ï“ê+ÏY·á-Õù.#ÒÅdeœbRM/Í*ãò¼æ*bTWë+Õÿre¿T=×4q™1×Ú·Ü—rð/Uk£«IûÝq^os–ŠW³eB…¹Ì_s5«ö—ªö¼å¾¸ÊaÁ:Ø7šTÔçð^©Ìwu5_‰omëÝó|ûyÄøb߉¸z:y=7ªÒ÷E¬®Î·*à·n>ëíºõîuÖ³¯ßG ÷qp×à É^€íì€ð(feÝVù4fíxkßÈy¦Oóí—'Õð""â“klÇ[y=owä£äñ»Ý÷¥wg7›ºzß[QÂ}—Kž÷åˆq;Ü÷GãßGD©ÞW…ýâ^y¢Åê|ÓpÜ‹˜÷U­|#àF9„7J³*yéj2¬l­›W­Êz)ZûÒ¬b_i­;:«^ÇUU­/c³*}UûÝ&r›Þúu\Ͷeš›kf­wçZð^UûšYU¾B}Q…úšˆñÝ<ç`ß²@ߺ*}›µÞ]5ÌߦÇý8^ùÓWüÐZ¢¯Ö»û¬â'ÜÇ.αê€-ì€ó½ù ÙRDěղ¯w<.·«›—Ã}MDÄgé­P_ûñŸÄ¤`݆÷QDÔ1•7«LÔûñvž®Ûð¾»"7Uî{~uõ¾ˆhÞš=O|°d]á¾”ƒj“0_Šù^3k±›š˜ù"&¬^FD ÷•j}—yœr¼´kRDºÌ«?IàîjÉvž-ßélöØú˜óó#r©¼7KûÅ´<ß(åp_yé£ê1¥š_TÁ¾Ü¦x®b_ä@ÞÙ|hï2ržöü:Ø÷|ˆ«‹ˆ«g¹R_n<¾7 ÷­ ôÕÕøº‚}÷ïÞªõîªù}8¶pßÐ*õmú» ùiÍËKÚïÀö öÀÀ”`Yídžù"¦Uñ:—ý8º+÷µÛñ–Ê}ßèõÕÕúºÖÿzDSb<ߊh>ˆIàîádÛ¦ê6¼bÒnww[¿¨ª÷•Ö¼oFÄéÍŽ,VîÍÂj£?äv¼õ1xZU¹»“_3§;1îk÷¸mªp_ä¼¥%o˜¥ë~8[B†¹z`É –¿‘æ[ûF«Òà\¸/Wêkš¼Õú¦òyÒ4óù¹qäÐ]LªóåN½³Ê}%Ô7Џ|QUë+ãçyÙªBßUDŒŸæqTÁ¾¦U±¯«åôuÝ^7ŸÝÙE¨¯¶,X¹£Êg°»j½+Ô=½áöf†%¥”–|j—:¦—Ž?˜„ÛâÈô­<ïãˆôzDü."½ŸD¤W#¢Tí{%">] ¬C}íj}¯E4u°ï*¢©‚}«²VíéøUL+ÖóÒ÷–ì“î‹îkï…áÓˆÑËé‹Ü&7MÆ£'yœ&íiG)bto’q=8Ëa½ÑeÄÙ<y¹<¿¾bÖ*·ùÒeê»êØ×užrÕ’·TëK1ðåÛÓm*ÛqUmw,nß(æC}©uLæ ã5­j}gU /r˜¯n½[ûÎg-z§AÀÞ»ºqõ¤ óóø¥ˆñ›/«Ò×tlhtL—PX׉×u{Ýü]8†Š}Ûí:Ðw}¿‹Ÿ ~ìëÚ[÷V%B ú6² `p®ýMù{yü~?Œùö·“ö¸¯w¬û“˜„ô"&•û^Žh^n-WæµC}µ:Ô÷Fõø7×¼ž­Û]¡¾˜Ík~ÕÚWbÚš·y»Êx=œíË…¡™T'lþd kþ¨ ’•a1¾[…ÙJ‹ØˆŸÏZÉŽ_TÃù|hí*røí,âê2‡ØÊ2—Õ}õUe¼ú±1n?¦áÊãšê±QÝ7ª†Æ««íUÃe5Lçåºõ}—g/ʼQċѤxáôþ&·á-ÓÏsµ¾çÕþiª°ß݈«{yx)MÕŠ·=¬«Þ±º‚ߺ‹mßq•Çýø`€}ôðÑIT¶ÛEè®ìK•¹Î9û``RJÓ¶«í»ÚÓf-iëûÓÈôVL[ÒFD¤GéˆèªÚQWî+^™Ì‹Ö¼i¨oÓj}¹ oó~D¼=iŸ[ÂxU†jY¨oÙ®Zr{a?DGվǹZßh¾jß´z_jUãK•ûêñ‹<¾˜TåçqÌWÖ›nßåíx¯&-|§Óç¯å*?W® 8:«*÷]MŠýÆUµ¾³ˆ4Îã«Yž¹V¾£ˆæ*›³I;Üf4ËÔ•€ãU»b_3 !^åÀ^Tûêj}WÏrXòiQÞ«‚Š1 _Žÿ8büˆÇËÚî®k¿[¦ïÜ¿»q oÝ}»vˆ•ûµRßM÷÷.ƒT*ø±çóÐ÷аCÞ€ÀÀ, öý$"ý8O·ÚÒ®mË[Úñnî‹X øE̪ú­ õ½Ñ|ßZÝ~·‰˜Të{7O_3Ô7·ËbžXî{%"}¾êK›„û^äÛwª0] ó]TÁ¾èö¥-Ïcü+·/çC}“Ó¤j¥[Â}1 ó-´ŽY[Þi ï¬Ú®qÕò÷j¶Mä@ßUøE®:XÆgU ¯ŸE\¾hU/¬«–@ßÝ*ÌWÑäv¼Íߌø´]•/buu¾z|Pß?-?¤`ß6ƒE‡ìÛök_G¸}{á{EØ)oÀ``VTì‹Xb{/"½ïG¤·#¢]µ¯„û""}œÓî+^­¦?™ŸßÄäq+C}ÄõªõEG®ê'ñãÅùU3,û#–„û~7«Ø7­Ú7šUØ› øEw¸o¡b_ óu…ú.bÖK‹á½¢Tñ»ìxM©#œØ®Øw> ü¢U­/oë\°¯T,ᾺZ_Ì}M³¦b_³Ø†øê¼jµ{'Wéç¶»1þ*WëË-wÇ÷gá¾:Ø÷ùMªô•q;”*}m‡î;äJ}}ìç¾W~ì0ÔçûDØoÄ``Ršä¹nÛŽ·=îªÚ1 ÷ED¼–þ¤ã¹ë@_^v.Ô1 öÅú"j›Vë[÷áåÜ6ÖU Ë>©Ã}‘>È!ÇG£èK)"½‘>»F¸ïÙ|»Þúþi½:Ø—rŽËð{Që×p‘Ç—KœUpmž4 ﮪÛW­íŠ*Ü×>NÍdºÌ7㳈««<^æ[˜ß®Ò÷¤Õz·‰Ñ|môk^ž´âýb]ûÝ®q™Þ$Ôw(Ÿ9Ü·­pÑ>C}}íã]¯üNÏ®«ôM~!ø>vmdÀáøI5ý«<~·Ê&½—ÇïçñÃ<þ &Uô>ŒIøîQLy¯çpÞkÍk¹µîï"¢É¡®z(÷½6©¦Öêû°z¾úùßom_{»oꋈhêýñ½ˆ¦Þ'b¡2`óf®$x•_Ã8¿¶O"šoä@ÙWêJõ¸fÖ†vü4OßØÆ³ Û¸+Ô¶lÞyÄe´q­ûçÆ—³ªyãú¹Îf÷͵Ç-ó¢Ú†z(Ï3šTÖ+ÃU™ŽˆË³ê¾ÈCµl¹º¾çyè õ5KB}MĸêûÝäøL_ðuZñ^Ü¿; ‰5qø¡>ú×Wpr¡»>ÚuЋ=ÙñNMÓõÀž¨Ø³¦b_Ä5«ö-kÉû(ß_WTð[æãÙ2MLÖQªôź¼ù¡ Õúâf¡¾¥û¤®ÜWï‹Ò¢8rå¾óI•ºÒŠ7½‘>ÍU÷¾‘¾\R¹ïIÄè~®„÷,bt/"=‹ÝH¹=ïtœŸ?ÝÉÏ[WêËó¦Uû.ªS–kM§ª•oªÖ_W L‘·÷2ëJ~UûÝQÊUú®ºÏ³R­¯9‹_UáÆ,¡ÂqÓL|žÃŽåv©Òwwö˜¹á#ÆŸåpå'ù¹ßŒør“Ö»Ç\¥¯6ÄŠ}Ûí«bß.öí®ÂXª÷¯=„7Uê€=ì€)Á¾ˆHK>½K«¦«ö³õý)b1Ü1ð‹˜ùµÕ¾ü˜¦úòú¯êëhÁ{›,¯î‹Y{âiX.V„ûžDŒ¾‘J°ïiÄè¥ê+ᾈHw[Á¾çU°/ÿÓn“<äkßn-Ÿ^äPßE¾}™Ã{—£‹Y ài¸ï|öKÕí”}]á¾æ,g讪v¼g9ØwÙ ÷G\½¨¦cèoê+UúÆ“éæÕ\ ï~ÄVû"ºÃ}wîß]yò'âC ÷C Þ]îÓ]³üދֻpšû``ª`_gÕ¾ŸD¤·Ñ]µ¯ ²Mç}Ã}Ý¿¢Ž…<šŸ?­Ð±<Ô7{ “¼ï,/²V^Wüøö¹«Â}wrÃh…úbM¸/- öEDº—wÏfË×ëì ô- ö•eK(°®ÚW¯·„ù^Ì‚„sᾘUòE®ÔW¿ÎóX¬ØwÑ\FÄyÜ]åª}‘ƒxÕøªŒÏ«¶ÄMÄÕEÄÕ³æ«C}ˆ¿Ô õ}=bü8·E~µêºûRÄWëªõµ§¿ùÖÑDÄã¿~¼pbÃ'áC öK¥¾}íSÕûÚ¹Òþ!ØC س.ØWÛtº÷Õmy#"ÞÌóë€ß:Ë}yý+C}¢·j}û¦„ûäÐcUÍ0=¼Y¸oÚò¶Tð‹òK‹-r§ÓwcÒ{ÞìK‹Ç¹3X¯ûEÄèNGÀ¯öUÓu«Þép•+öÕ®ò±h"šó´k"ÆçU¨ï2Kµ¾v°¯©Æu¨o1¾¿"Ô÷(¢y£ê[Öz·«s 2µƒ}Çò)ø±ûöèÛçþìcçGûwŽï `x¼Q€©ƒ}±¤ﲪ}˦»Â}‹¿ˆIÈoÙ¶}«ÊH}³@_^ïBûÝm…úR÷2©YûÙôƒ[„ûRDúzøU¾•a¾˜TïK1©æOóøYúåû¢„þÊÆv…ÿÚÕÿêP_T¡½v ¯´è-Õüêm¼Ìû.«ç>¯rsÍ,W7 ÷EUµï¼ä‹<¾qõ4/wÝPßÕ¤Z`óíˆ'× õE,ûŽñÓï}†û¶8Úw¨oßû²Ï}Û&àwöè›þžñ}! ` L+Ø·QÕ¾VÛÙ¹ûº¦æq;à1ò«}PM¿Ù苈Ø$Ô7{YëZð¦5ù¬ëT5|0kW\çÒ³öĿϪ€_ŠHˆýQâkŸäé—bè‹*Ô1 ó•é{³e¢k™V ßv‹ßi¨¯„ýêª}užz:æ_kÇ. u¸ï¼»︪Ô7W¥¯Ü¿IûÝ:Ô÷fDs7âiW ÞˆÕiÐ`ú‡­xÅ¡W™B oŸûqûx¿aÚw oúóÔ÷…08‚}00›ûÚUû6 ÷µ«÷EÌ~µfÕü>D|˜ÇUÛÝ…ú–Ü®7z£0¯Ù²¸k¼6ÜW†/:*õµÆQ¦Ÿäpß“*äW…ýB}óýÊý©š—:B}±&àW¶ç|Öºw껈Iվ⋋ˆæEÞ­¥ï‹á¾;WϪàÞºP_3 ôK¨/"š«P_D4w"žuUçÛ$Ô×Äb+Þc²@Ú6‚GC ôís?îj_¯"Üw:ÇzÕÛŒA>8‚}00í`_Äæá¾X\nz»jAïçùoW >\Ñ‚·öV+SUúf›;ñ úõ­ÚGõþi¯îû$"ªŠ}õóa»¨«öݯž£Ü.!¿2/"¢Ü®ƒíö½±$Lü:ªü-´á˜´â½œìËæ"‡ì^ä€ß‹YÐo¡jß*Ì×DŒ¿júêPß7"ÆŸT¡¾öpÓP_=O°o»Ž-Ø7ÔPß¶÷ù2Â}Ç}|W½½˜ûéûA<Á>˜®`_ÄÆUéVÞ~/O¿SÝÙò[§#Ì7W¥/b}¨oU Þë†úÖì£e-‹7 ÷}\…úF)G‚Òg¿ü öôô9ª°_|UM×Ë.«òéi+Ðw/"=ïõE+à—–„ú."âŬr_ó"æÃ}1 øóô8&íy§¾¦òËá½…PßGŒ?»a¨o“$hóa¥cöEì.˜vŒ•úv¹ÿ†r º÷ß1]õ¶"B‘`ÀÿŸ½»Ùqã>Ó>|—^åxòa7b86²ðB+­Ð è$ ¼gcèxt}Þjå…Áxr2ÎÈ‘Fîš«Èbu±Ivóã!y]@£Ùl6Y,ÒTŠüåù@1Û†}Sû’Ñe¯“æùàç©À¯÷jÅí<]Ûmôu›¿´Í;úÖì§{Ç}?tAßçÝÏÃé}Ÿ&ùûrÜ—&i~—äçÑÒ¼ƒ\^ö¿{3˜î×Oýûeõ”À;¿Áä¾ùßõAß¿6ä3 ü2 ø–¢»vö}81½ïM÷ûQØ×Þ$7ŸtQ_›´ŸM„}¯’üGömõõúXéÜþä0qš°¯üNß±‚¾ùk¥Ïàäû ˜Ua_²]Ü7 Ø’Üü’»#¿UÆ1_wÝ·‚¾—I¾>`Ô·f?5kNÏ¿—4OºÓIš?w§ûé}Ÿ%ùÛ`‚ßO]0÷I’$Í’üwÒü>³Ào|›Ã¸ï·IþÙýüÛ$ÿ3º|“4}è×L,É›¤yÛ…|_“îçfö»æÃéû<ØuóïKqß0ì{œÜü«;ýÑíé}í}¢¾§³é€ï6]~wê^øeù #ÀñuöÙRØ—AÜ÷aró6iû¨ïqïý’´}Ü÷ïÉÍ?a_Û-ÍÛ~šÜü8û¹ýüvØ7¿½KþwjZß&Q_ïOO¾¸ˆ°/Ù_ öÐIÔ—’Ë&~§ù¸Mý{âó?8}Â>(æ¾aßð*ÆgLMïë]ßùeõß$Ù<èKõõWÙÞÞ†qü¸2î{•4O»Ÿ¿ïâ¾~zß0ðû<É‘_?É/Iú%{“娝×Oøën|U|× Ã¾~‰ÞuñÞTà7µlïÔm$ɇIû®ûþvþT[„}í êû¨[vw°än;šÖ7õÝ$í¯Iû¾ûz2 ü>˜­|ï¨/¹¬°/Ùm¨fRßi±<ïå>>›üÛïó?8}Â>(f]Ø—¬ûVMï»+ðë]¯¸îçk»û}É^¢¾ùUß'îû6iže÷§÷M~I2Žü’¤ý’¤ÏŠ~Üæªè¯YöýOÒüûâüy´7ø ÿ¶ûþ8É»;¾îùÕfò-Å}ý¤¾L„|ýÏ¿KnþÞýÍ&Qß`YçöƒäýC¢¾ù})—íZ•°¯ú>?·¨ï¡×¦~5—Éë|ÞgÇÿЀb6 û’&÷%w\f“ÈoU1_ïÈQßÊýtWÜwÝM0ìã¾äîÀ/I†‘_²˜ä—ÌB¿$ù¬ûyü%ËÑßÔ„¿æö¿K§W~Íèw“¼üýG‹ŸçÏâ½|Ô…yo³ˆüÚnR_zöeèï«Á”¾>ê»Î,}™äÿ'ï»Çmê±ÜÊ¥~ÖLê;]â¾Ëz,îúwÞç}p~„}P̦a_²YÜ·jzߨËÑu}½8?£óÛ nsmЗì?ê»k?÷Ë0t¼,O< üÒ]Oø%Ó‘_2 ý’dû%³©~É"øKfÑßÔ„¿aÐ÷IfÓü†¡_&¾©åwÿÕýüQ’ußßNì“Ç‹Çc)ðËIJ¼í(òk§×F}¯’<íN_gidûÿ’_wõõ.!î;fØw û÷œÃ¾]<†›øwÿOÿ:xôyœa³MØ×ÿɦïòmùÝǦ1_2¯ùæää>º+îKV~ý¿ävä—$_u?¯Šý’Eð—Ü^Ê·ÛGM’<üÜOòëã¾ß'ùyMØ÷ËlyÞô§“YÜ÷›‰ýñKf1_Oû&Éo&¾ß&7?b¾6i?InþÖF}Äè/ËσùCô(ùu¸]y¢ûV3©ï¼*.øg¿ßþ'´{}ô9œ-as°/ÉÆKóÎí"òÛ&æ›ß¿Ã}K7ÝÞ¹Y ËÏ¿*ðKf‘_’<œ÷ý(öKnÉò„¿¿ND}ý$¿m¿þïßtß ôË/ƒûõ›ÁãÒb»‰ÓípéÝt§_w!ßC£¾$í£ÙõÞúÅ}XŽw5“úÎÏ1&Ç]jèwì)}>߀ó'ì€bîöõ~Ÿwü^LDß,~—‰ßm}3G˜Ò·íþiÖw=˜à—ÜŽü’äéè ¦b¿duð7œî×G~ý$¿~ÉÞGIs•ä§AÜ·*ðëîD3¼?Íh;ŠíV…}ã¯ûF}/³´¼s›$» ûqߨ¹Nê»Äo_ï6.-ì;RÐ7ýö¹\aóÀ°/ÉöÓûö~ŸŽô-mΪ¹cŠá_2‹ü’äÙà¼Wƒ¿{:q¥Ãe|“åØoUä÷hMà÷‡$ÿ½Ç°o°ìî<ÚKÒþ˜d*êû.É»¤]õ §?öaß®ž4¾™s^zWÔ·ûÇú>Î=ò;ö”¾Ù ±ÏõàRû ˜]„}ýUóÝ¿"úVZ?6›žÝ÷|âÂS±_ojÂßpºß÷‘ߦß'Iþ±ˆûn…}¿KòωûòÛ¤ýyi-¾aÐ÷S÷óMÒþq÷ýdUÔ÷íl?´£çĪÓiSûêR¾äîÀͤ¾ËuÈ í\ã¾#D}‚>¸pØp¶ÚApÈop{å „nŠàªýÒÞ¾K‹ó_&Í×ÝÏ'îëõ"ö›¼ú.økÇÁß»,B¿÷Y,ßû¾ûþk÷ý&ÉçIÛ~¹JÚ.ðK; ïšO“öïƒÈ¯Ÿä—Ì—ë½µm?gòý>iÿ‘ä³ëÉ']Ð÷zôý˜ä¯Iûyìý:ÛÖ•Qßu–È»¢¾z÷æíEÅ}S%]úþ;uzòÅÁ´áíœCäwà OÌÌ=² à"´Íâk§šÅ×piÖ“Ú/wý>Iûbtæ×ƒûú2³%e‡ž'íóÑRµé¶ëÌ"·g£ß}›d°\mûnpúýèû¯Ý÷›¤ý,¹ùë,´»ù5¹¹IÚO“›×³éz7?%í’›¿Ï.óûÙeV~õ¿ï/ÿS÷ýõìvo®’›v¶Ÿu·7ÜίÛ?õ--Å;qzx^ã?Ûí½þÏ×uMëÛÜŸž|qðÐîXKïjÛ¸ýÍð5¯m[Q`)^¨f‡Kñn|“Éf5ÞhËÎíÍŵS _$Í7\ÑËnW}½Áe¯“æùè¼o“¦Ÿæ÷*iú)~ß%M¿LïW™^¢÷ó$?–éýc’×ÝöôËõ®Û¦O“¶Ïúi€é'ôÝtú~HòEÒþ%ÉŸ—ƒÎöUf‘â}¢¾f}ôw/—¼ïCâ¤êûMØw–ç=þ~ÿÓê3;`é`ÁAÔr„°v‹Iq›†~½uÁßõb ߥ§ÄøôªÀox™qä—ÌB¿$ùãÛø·î{ò%Ég³ }™ ú¾OòU·ôî“Qà×ݧɨïE’o¦—àmo?$»q)qß0v;ç%xE}»sˆ˜íâ>Ëî•|`, &Æ­à÷ÍDtvWì÷õÄ凱ßóÁﯓüÚŦÍN?éÎx?úž$]p—›îç.Êk’Y˜÷cÒü¸æ~õ!_ÿ7Y\_ûk÷ýýèû“åm½3ê[µïr~S êœ'õqšÏǪqŸ ¨ÈÄ>(ÆÄ¾šËCßIÝf߉‰~Í]§û ~ÉbŠ_²<Éï‡î²›d5}âòEÚ –ÛÍ÷¹5¡/™^>÷®%u×-Á›u—ˆsÖ®¾¼:ëI}ÃûÉn]Úä¾#,»;~ ö+=² Öj›Å×½|³X¦vþõbârÝT¿öåèö³̵ßN¿\çû§í¾þ2±ï¿ .{×u>IÚW‹m˜ÚÆLœžúy]ÔÇ–^ÿçë{ÿí‡?õ]°?=ùâ$–Ì}¨ÿúF}mÛοV@8h€ZLì;½‡lï²®šè7žàw½X¢7IòmÒ<ëN¿Jš§ƒß 'ù%³i~IòÕÛñ}÷ý«Al7šÎ—WIžND|×Y^N8›E}“çO0µoïÞ¼½ˆ}"ì;¼]…pÇ ó ^êº3ŸÍ0±àa†Óüî=Ùo4Ñon<Áïy÷óu÷ó³Á¿§ƒëx•yŒ×¦[:÷ýhúÞÔ×WÝe¾ëî[nOçkŸŽ¶µÛ–¶Û¶¼\\6IòbôóxÿãA{HWÕ9Þ'Ø…#Mèkú¯á„>Q°ñA…¨Åľóˆ·xWöÖ“a<Á/¹{Š_ïUw]O7¸Ñ.âNå믷 ûÛ]šÐ÷2óqîEæÑâÔÛö jSûVxhÔwjûÂľãzH$wȉ}&ôù¸÷… ¨EØwYÚ‰xoêi1>c“À¯÷m÷÷϶ܶqÈ7¸ñ’»Ý]™º{+ïP{ÿ]¶;ç÷]ʼ‰¨¯šmã¹C…}GŠú,¹ 쌥xލ_ºwÍÅÚ£3¾žXº÷ùhYÝëîügIûlͼS_ÏFKíö_Ï—·÷ÖòÁw-½Û­MÙ>l—1d ^Žéø6uਯ|YrØÝÁ† ¨Åľ˶n‚ß‹¤ùfÅ簾ø]®ÿùâüáyw¾q<µäîò]XñÜ^óûíwÕÃúľK[‚71±¯¢mBº}†€G˜ÒwëõÚçnÀÎ8`@-Â>’Í–è}hä·»b¾I¾YÚ5;^Bw±›îTã¾KZ~wHØW×TXwˆ‰~Ç\v×çlÀÞ:p@-Â>†ø½]ß׋ó‡çmôÆñ†A_w7öµ{vã”B·],½{ªaŸ¨Þ‘b¾ÁËZ÷"äs6`_8 aSO‹mÞÉÝ&ôËv×»6ä[Úèý}C7µï—ßí û8bÐ×½¬^€|ÎìëÄÔ"ìã®§Ç}Þѽoè·mÈ7ßÈÙ·C½ù|qSû.u ÞDØwÉŽôÍ_Ú|®ì ÄÔ"ìcÓ§Jµww›ÃÅ|c;½ÝêñÛ}þSúaß%ªôÍ_l|®ÈvÀIjµÉÑ"¿Oç»x¢>.… ¸tÂ>€ÓwÐȯ`Ì×ßýlÓ0ž;‡ NE˜oøzpTÂ>€óÒŽª”‡~—<•¯üN1ð;§(Ñ´¾óV1è3¡86aÀyk׌ŸÚé´»#kbY`8E‚¾áë @Â>(Æ” ý”;‡;Ñ4ûírNirß¹-lZßù)ô%]Ôçß^ açd¯SûÞ½y{váB±˜¯­(KØÀÉë§mu“ûÄ}PDå Ï”> 2agcê4MÓœ]µóáÇç˯ú=TP1èò§ÄA gißaŸˆnÿ®¾¼²NDÁoþRПð™pJLìà\Y’ö¬hÐ×$B>à´ û8g{ûØÓúj+<¡/‰¨8}Â>¸'Sû¸4Õƒ¾DÔœ‡GvçèPqÏ»7oíì3­¯¦SˆúÒ-à pêLìàÜYŽàD‚>€³"쀲$/çèÄ‚>“ú€³"ìà˜ÚkœPÈ7øµä6À¡ û8[Ãè§iqß ¸úòÊN`Ap1„}°–ãåTÀ¤¾&ó—EØÀ%ÙëÔ¾woÞ&‰ÀvóßjAp™Ù\‚¶mû@¨±7`¦à´¾Æ£&öÀÎY–—êŠ.¿Û˜Î0#ìàíuI^¨ªjÐç‘X&ìà¢ôÁš¦÷q1ª}&õ,öÀXŽ— Lè8MÂ>.™©}…\}ye'ìPÁ¨¯ILçØÄ#»€KÔ¶m™ÆÙ)õ5õlw å €KÖ4³Þh_×o9Þַ͘ƒ¾%>—Øð€Ê—¬ ûqßшú®jÐçs(€ûùÀ.à’õáQ3+üTH&ê{AÀyöÀž½{óÖÔ>vªú’»<Œ°àD úLçØ£GvÌã$“ÇÈ2¼Û)õ5ƒ/öÈÄ>8Ëñr_E‚¾$¦óаDÜÇ6Š,»ÛˆùÏR¼°Ì2£]¡ew8ÆA™ÿ—Ì4ÍbÅÑ}ÞŽ©}ÉÕ—Wžp#•–ÜòYÀáYŠnk²ç¸ËUd‰Ýás=‰€ atú°©›Ü'îcgŠÅ|ýó€¢ÙpXïÞ¼µ.HÁ }M2 Y‡_Ô!ì€ÕæÔ®]rÜwõå•gÖ‘žËB>€Ó`)^GOÝÒ¼°•#Oêk¦žËœa¬×$Ùy!õîÍÛ|øñc{÷ TYn·m[*ÀöÀ‰ûN[• €ó"ìØRÁ Ï¤>€3òÈ.€ì-œz÷æ­½{B*E}mÛ6ÝWÚ¶õàœ û`¶mÓ4ûˆfIÞúŠMé3¡àŒ ûV¨óµm+ä¸ ±ì°™njß^ßX?÷©}W_^•߯Гù|žpYLì€B,É{XÅ"¾DÈ@„}°­&{žÚÇþ ù’Xj€eÂ>ØPÛ¶ýr¼{ejßîU úÒMè€!alÏÔ¾P8æ3¡€; ûà~Ä}EUúbBöÀÚvÑò5³uyÅ}ùLè`+Íð `s³®/Éâ¾?~|¶ûíêË«\Oõ˜¯š$ËA(¬cb<œÉ}b2—@Ø÷´Ïeyß½y{ÖSûÖ9‘i|C‚>vFØ»³ó¸/ÉÅ~'óYb€½öÀní|YÞ>ðKÎ/ò;¡˜OÈÀáB€ÀnÍVåÍÞÞ€?õ¸o*V{èÆgø€£ : €Ýê¾DÜ·¤zÐç3ʨ:H€Ý:DØ×«øŽùæ—ÏJ¨æ»v«ÅšYáwvÕØ Äz›0¥€º­X`?5¹o_SûÎ$à›|h|>@e&öÀþÌä¾3ŒùLæàôfÈÀþuÓûJMî3‘ØÀÅ:Ô²¼—¼‹}æÀ¹°/ÖÉ,Ë[xÿ-ôpv¿vàp“û߯»m¾Ã|®ÀxdÀáŒÂ´Æ¹Scp‘ÄþŸmp<&ø-vEb"$Évp$b>˜`)^¨Ã²³€‰}ÀÞ™Ì[ö@-ýÔ¾öT·]À#쀚¦–åm+o§ vCاcûµÇº}ìùÜÁ7ÔÐ4Í.¯nÓ|VŘØçiÝt¿Æ.€¢õþ_xPÇ#»êö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€B„}Pˆ° ö@!Â>(DØ…û a"ì€Bþo·îB»×JäóIEND®B`‚surgescript-0.5.4/docs/img/tree.png000066400000000000000000000223721354226561700172640ustar00rootroot00000000000000‰PNG  IHDR‘"ÖÚ IDATx^í¸5ey®ïX"X±÷4Xb7¢±€Fʼn¢Á®ñØ‚{ï+ÀŠ ƒzì%±Ä¶#Q5öã¹y×aý‹½÷¿Öì5³fÍÜïuyý¸öÌWîïyæûÞ¯üš$  H !?kxŸ·I@€PDt H@hL@iŒÎ%  H@Ñ$  H 1E¤1:o”€$ ED€$ Æ‘Æè¼Q€}@€PD£óF H@PDô H@hL@iŒÎ%  H@Ñ$  H 1E¤1:o”€$ ED€$ Æ‘Æè¼Q€}@€PD£óF H@PDô H@hL@iŒÎ%  H@Ñ$  H 1E¤1:o”€$ ED€$ Æ‘Æè¼Q€}@€PD£óF H@PDô H@hL@iŒÎ%  H@Ñ$  H 1E¤1:o”€$ ED€$ Æ‘Æè¼Q€}@€PD£óF H@PDô H@hL@iŒÎ%°)ã€[»¿î§¯ßnÔ³rYœ5% ˆ¬iÃYì^PDzÝ<n™‘eÒ4- œJ@ÑFC@MS[Ñ ("Â6«ÕPDVËß܇I`¹ppm ÏãÇ€Ç/4/î \øÑ®³ÿ ¼¸[ý¾³´r™1‘aúÜÊj¥ˆ¬ ½˜À¼"rCàÝÀ·€—;»7N® |¸ðâ)fw^Wò€yÒRDìt«ªš"²*òæ;dóˆHž½/g®ü²€dF×g€?W¬ÞIDæÀÞSÐÞ \¸ðÇ9ÓRD†ìu+ª›"²"ðf;hóˆÈå/Ož9Cã àáÀ%€“€'ùíB5„uÎú÷ÀCEÒr8kЮ×}å‘î™›ãð Ì#"·Ò›ØÊ®WCY‘˜ i¼¸ðY`‘´‘áû_§5TD:Åmf#!0ˆÜ88HLc#˰Ö)õ‡Ï?öÞ \¸\ým‘´‘‘8aWÕTDº"m>c"0ˆ$’^ÄS€ƒgà\8ðAàWõ· geX+A÷ÄR¯Y]ùó"i)"còÄꪈtÙ,FG`9cËߨøaQ:k‰ËnÀEßÖïùïÄGÒ ¹p™º?^$-EdtîØn…‘vùšú8 LD$Óv3ËjÖÏÈz[Ç'/~Zk>ÒIÜ㨙3å÷úµ†$ëJ¦mÞ´‘qúdkµVDZCkÂ#&0‘ÍÜxUý1¢Å…Y(˜©º™±•8ÉÛ6¸9‹_ <xÞŸ'-EdÄŽÙFÕ‘6¨š¦$ ‘PDFÒÐVS@‘6¨š¦$ ‘PDFÒÐVS@‘6¨š¦$ ‘PDFÒÐVS@‘6¨š¦$ ‘PDFÒÐVS@‘6¨š¦vNàüµR}çWžþŠs×fŒMîõ ,•€"²Tœ&&¹ dçÞŸûŽS/¼ðàiÀk¼×Ë%°tŠÈÒ‘š vJ /ÿ€¯93${gÍk¨mQrýßï›÷F¯“@‘6¨š¦6'“ ³õ{ŽÃ€d;øEíÙÀkHëµßÖ¢ix½–B@Y F‘À\î7µqbN#|û\wm|Ñ›€ýJ@"$9°J“@ç‘Α›áH LNLõ'ÇÜnEžÝZõ·5¤•¡-MPD:Gn†#$pÍzáïR'fë÷eØ…*ÝP•8Ë—‘¨iH`ŠÈ"´¼V‹¸p½ès&zÎÉY"Ë´«9¬êl›µ»Ì¼LK§# ˆèh—@†œ@Ï,ª¶†œrªáä«Ïi·J¦.Ó("zƒÚ#ðz`àK%$m¿ï¼¤ªr{àèöªeÊPDô ´M ‹ü¬äómg<8´ŽÙÍQ¹î O³9{"#w«ß )=«RÞ8¾•\6NôÅÀ½’¯w˜·Y€"2ÂF·Ê­¸ÝÔPÒ=—·šÛƉ¿È:”ÏYCò‹”Á,GB@IC[ÍNìY3±ÎT{behi¶k•ãÀ;€Þ5 ´B@i«‰ŽÀÅëÅÓûH/d•v©*ÏE€— ¼kX:EdéHMp„ÒóÈTÞôDÿH¤v*×'Tà½å² " ˆ ¨1­ÊÊd:mb!™•5!™‘Õ»-ðæ*Ì2¶[éK½,GO("=i‹±¶2 +³±²$’5!}³ûÏ­Bý=À»&¥PD–‚ÑDFJ ë@²$Ö÷³=žüªfl}r¤mfµ—L@Y2P“ ¬DÏŠôØÝ€#× æ)ã]€o–|w Êl{N@éyY¼^ȰUé±ìÈ{x/K¹q¡ÞS½¦”ü~ÊnQ{H@éa£X¤^Èn¼ìΛÕá V¯“íVå¿"ð–š°Nå·¬=# ˆô¬A,N¯ œøóAr*aV…¯£íQBrž:iñëX ËÜŠH?ÚÁR¬c€œP˜sÑ3¤•sÒ×ÕöÞ_…$³ß5 ,L@Y™7Œ”À󀜑~r È×ÀáNÀQU–•C³4 ,D@Y—”ÀÁS_êù‚ÿÀ€8<xjÕç¦@ïšæ& ˆÌÊ GJà€:¿<Õ?pêË}H8ž <8¥fluqöÉøº.ŠÈ¨›ßÊï„À^À uMê1`boîP+î³}ü\W«¶DŠÈašÔ ì^3±Î<ÈÖ!C·ë «ç†^Yë·ŠÈr8šÊ°œ­äªÀ±À¾ÃªÞ¦µ¹ !‰€¾ÈPž&- (":ˆNOàmuSö—ÊTÞߌR„3BrŽÚì Õݪ6  ˆ4€æ-ƒ&ð"àŸ€ï×ÐÎ7]Û+wó:1}ÈÔyñ#Da•wF@Ù!ÿ>&« _¿†´ÆTÿéºÞ£NDÌoÙlòca½·& ˆè!8•@Û½²`ÜÈl¥±[6—̉ˆ±ÌØšl:9v.ÖŠ€"¢;Hn ¼·@dñÝÓ…òÿ ¼°6™üa ï a¥¾Í»DŠÈašÔZÈf„ÙTñÜÀ³kÑÝZV¤ÅBg†ZNDü×’Ÿ·˜—I¯EdÍÌâ.•À¹J@®Tçï·ÔÔ‡“Ø.5cëZÀ»€Þ5 ü‰€"¢#Œ™@^ˆ7>Z_Øд¹7\²„äbÀ+€Þ5 ("úÀh ¼¬^„'•€ä_mk{–œ¹NsLà]9{"#w€‘VÿPàq@z™Ê›žˆ6¨sõ}ÞµPDFÜø#­úôú‡Ä@ÞÑ,ïZwŠÈº· åŸ—@f`e*ofdeHÖƒhÛ#ûÝ€o×°àw¶—œw¯#Ed[Í2/J k@" Y’•èY‘®-‡Àd†ÛÇJH~·œdMe]("ëÒR–s;²=«Ò#$zÑ–G =»ìú{eà wmD‘5öH«z$p »ñF@²;¯¶\—+!É^/x×FB@IC´šÙ‘7;óþº$çƒhí¸!ðJ:ÌŸØN6¦Ú7ŠHßZÄò,‹@ÎÉÙ ±œL˜ýŸ´v $ÖôºÊâîS»"·›«©¯”€"²RüfÞ[90–³ÑsFºÖ ‡N킼p|7ٚ˪("«"o¾mÈñ®  çœô#€CÚÊÈt7%)Ô“ÿªaÄ“Õp ("ÃmÛ1Ö,ÝÈîÀQÀc„Г:gX+Ã[_-!9¹'å²K& ˆ,¨É­œ@öĺ°÷ÊKbh¨g¯2m ‘6ìÈ«•‰_¾«wÛaõmÐz ‘Ö›$ áPD†Û¶ÖL@ë‘Ö›$ áPD†Û¶ÖL@ë‘Ö›$ áPD†Û¶ÖL@ë‘Ö›$ áPD†Û¶ÖL@ë‘Ö›$ áPD†Û¶ÖL@ë‘Ö›$ áPD†Û¶ÖL@ë‘Ö›$ áPD†Û¶[ÕìŒÀí»{ç~|xðÙc¹-ðfàžÀ˧Êyà‡ÀïWXöWÙ¹ö+,CYë/Ë£z#à1ÀÕ€3Ÿ[ÏÞòré0%E¤CØ=Éê/€£ë¼ï9óáàRÀM3w^Ó“òÎc#Éq¸¯.übEåΙâµwLDô—å9ÔuK,¾ ü¸7pIà&õ,./·ŽRRD:Ý£lÞ Ü xðàSe»ðà¢u:à÷zTîIQ6‘ë>çXˆä+ý‘Àã¡…ž)CŸDäϼþºŽãÝ ÈyâCÎÒ_–÷ä'=þ˜I6G9ÿ#Zåpl£Ú*"°­íM¢:¸4ðÍ-j‘xÃ{“¦®¹GÅ!CÉWþöJà©Õ-Ï¥y~øp qŠÿ><»†Ìþxðpà·Sy\ 8 ¸v}Õ¬Æ?>uͬˆÜzêïÓ9OzÛ)óÙ¼ø6ðʼnˆþrjübÚÿ¶ã/ç)?ýñ̳wC`·©‡fòûû W¨žL†Ê¶²ëžSDÒ3š7½¼š”yè"’úé/§µòÄÿ–á/ù({[=7}À2÷+L™Õ .ÌúF¦¦±™%8ž^ÂDD^Ü«ÆnìN¦¡Èâ¦l’/û K\+i3 •z¶eÈbÄtáÏ]k=òÏ,¨\›ëò%•Õî_«Åv©ëv°”'ÃcI? ²~ ÜS¿¬2'Dä~Àó€wU,$_xó¦·2϶ïÐz"©Ÿþ²£ÿ5õ—|eÍTž¹×nòbxpý½ïMˤˆ¬Us-­°i÷Ÿ³GV†~àÎK;¢‘EsÙ‡jzålÿeì6ëB"&ŽçÖÿ(pázù7}À&Kp?‹»²H0û eá^â$ BNl#‰Ð%¦ò7%ЉÃÄæIo»ežn”!ŠHê§¿œÖÊMý%›f¿¬­,=î<‡keŠÈZ5—…•€$Ð/ŠH¿ÚÃÒH@X+ŠÈZ5—…•€$Ð/ŠH¿ÚÃÒH@X+ŠÈZ5—…•€$Ð/ŠH¿ÚÃÒH@X+ŠÈZ5—…•€$Ð/ŠH¿ÚÃÒH@X+ŠÈZ5—…•€$Ð/ŠH¿ÚÃÒH@X+ŠÈZ5×` ›³I²gVÛνMòó H`Š€"¢;ô@ÎùÝx±C49Yq‘{½VXEd Mb[rNɵ©caÞIz 9Uñ²µaä?n«Þ, 4" ˆ4ÂæMK"3ÕsÕ/«G‘³C±ì*!É9$϶ÈÍ^+ lŸ€"²}†¦ÐŒÀä Ümésâb»Y#’{#"M舀"Òh³ÙÀä ôü˜Ã­^¼M>9¼ê•F†µrŠ& t@@é²Yì@àš5µK”˜C¨–aªô’Víÿ²ŒDMCØš€"¢‡tI ' &†qiàUu²â2óÏð÷­àü ê˜ße¦oZÀ ED—è’@$3°Þü]Kÿ3°o÷!ùYKù˜¬$Pg' B]HœbàK%$?i)Ó3Wo'çÂìÓR>&+ ("ú@GžV3§Ò+HOäó-ç{±’K¯îÞr~&/Ñp8k´MßYÅ<«rK¯ ½ƒ.ìZ%$gž<º‹LÍCc# ˆŒ­Å»­ï퀣+Ë{/ï6{þ8¶ò¼?À»& ,‘€"²D˜&µ=«'p¦Ú+û\­Âþ'ð‚Êø¶@ïš$°$ŠÈ’@šÌ.^’ÓûH/d•vX gýÈŒ­®²0æ-!PD†Ôšý¨Kz™Ê›žHŸfGEÌ`ÿN É·úËRH`½ ("ëÝ~},}b ‰…dVfbõiÆ;kÊï'JH~ÝG€–IëD@Y§ÖêY3 +³±²$’5!}²sT/é*Àq@öðÒ$ mPD¶Ï[w t³$–ÕèY•ÞGÛ½„äÀ‹€Þ5 H !E¤!8oÛ@V¢OvÎÍŽºGöœÏõ«Œx×$ ‘мe¶J =–y_>wÞPe]Å–5Ád1%°5EDÙìÆÉî¼9$gƒ¬“=xfø@ïš$°EdX^ºl'ò! çƒäTœN¸ŽöTàáÀÏkÆÖ¢Gô®c-³–F@YÊÑ%tLÍnÊK7CZ9'}]í(àNÀ×JHþ÷ºVÄrK kŠH×ć‘ß󀜑~r H^¾ënïö®á¹¬j×$ 9("s@ò’ <¹~ÉK÷ásÞš±µðÆ:ûd U³h€"ÒÛ!¦|ðšªØ@††dW*!Ù­¶¯È*g]$ÐE¤ ªÃLs/à„ªÚ!Àì&7Þ]u;hjå@«kµ$°=ŠÈöøåî¬òÎL¬ó×™9›cÈv—©“é}½vÈ•µnØEd;ôÆqïÙJ@®Z<í;Žj“ÞÖ“ª®7šê…¤úVSóPDæã4æ«ÞÜødÍÄú͈`<H¯ëÇ@¶JéÛ†’#j «ÚWŠH_[¦åÊ…ÿ|¿^¢ßèG±:-Å›œˆø…bpJ§¹›™zN@éy­°xžÚ˜0_቉ŒÑrÈV6k¼ð^øSà]“€Š€"¢+lDà®À+ëwœÚ¨p¬´.ZBr)àU@øh ˆè³n\_Üù={J=]D"=ÂÒ#Ùµ[>R.€"¢ìH «µ3lunàÙ@v¹ÕN#pë:1¿<Èö/šFMÀžÈ¨›‡ÊŸ«$«¶LÞO4ÈDƒL8ˆå,ù·ÈIc& ˆŒ¹õw¬û»€›­YH¿ͦäDÄ?«ÈJc% ˆŒµåw¬÷Ë€{'ÕK1ÿj[x)¿W̾)0 Œ‘€"2ÆV߱·ÒóÈTÞôD´ùä0®œˆø©b÷«ùnó* ‡€"2œ¶lR“ô>Ò ‰%’Xˆ6?³×Œ­«YÙŸÀ»&QPDFÕÜ;T6ñÄAb™…•ÙXÚâ.SY]xI­ð_<ïÀšPDÖ´á¶YìÌÀÊTÞÌÈÊ:¬ÑšøÛ’]³ÿSV¥GHH×–GàS·x×$0hŠÈ ›÷t•;ÈKÙ7’Ýyµåȉ~ Üøôr“75 ô‹€"Ò¯öh³4‡Ù™÷×% 9Dk‡À«œAÿõbýƒv²1U ¬ž€"²ú6è¢Ó[uädÂc»ÈtäyL† ?\BòÇ‘ó°ú% ˆ ´a§ª•S ³†!–Súž?ü*÷¢†™À]¯ ܾ¥²X2EdÉ@{–\ÎEO=ç¤g¬>ç†k݈€DH"(ÏÔ]Öæ$n("Ýp^E.ç/Ù8ªÆèWQޱç9}>ËÁÀSÆÄú‹€"2¬öœ­Möĺ°÷°«ÙûÚ%Èžû_ì}i-   ˆ,kM/Mää5-ûŠ!­Ÿ ©BÖE! ˆè€$И€"Ò7J@€"¢H@@cŠHctÞ( H@Šˆ>  H@ ("Ñy£$  ("ú€$  4& ˆ4Fç€$ ˆè€$И€"Ò7J@€"¢H@@cŠHctÞ( H@Šˆ>  H@ ôMDrxÒ=€; œøwàåõ¿ÿÛ¸¦Þxà‡ÀïçD±pBí<{!à·sÞ7´ËôÉöZtŸ<¸õL~|·NŒ<øU{E4å蓈\x+°ð)à³%"9 ãâÀkë`%ϪÞY«žþï9"÷õÀ_Ìy{„ûu*â퀷Ìyß.Ó'ÛkÍy}r""ñÇ?ÔÎãg®\GçèçY‘i¯Ô¦|:}‘³ŸòÐæÅǙ؟×É|ûyFxcÎ×Ú£€sÌ)"iôZÞÜø_À-羞7ê“í¶Û¼>9‘]_Ï)þ™÷ÅÕëýÑn‰M}C}‘ÔÔ9ýíé”ôìÕ}Í¡>æ²7²˜CÏûÀNR½ p á¾-ðÀdèa±œ×÷j}²Ý¶›×'·‘›ïî¼²Ýâšúfú""­¯‰¿ØâKùjÀw€MUæÀck‰—| 8Hzû7àÓÀª'“—៞ ÜøoàMuŒédü?÷暯÷R¾üÿäù¾¨‹”%åy p©Ç畈N'™:\»ºð©Ûc€oP·­Ò›S~]Åœ¶z*2tµo ݰz$áõ´=Jú$ë~©>yjtÕ>¹‘ˆìä£2Ïý/ë¿/ÑV@ "²ð*’a”y,ãÕß®ÞCl?¯›ÎS³¹âX‰¯¤w’æ•êœh,½Šo,A˜äùÕJ7_6±Üû×ÀU­ßÂ,½š ©]X´,¹'b—r,ÄK42t”ô¿ œ¸J=$¹.c‰åaI“òí,½\7ïÐA®½k L‹i† "šùLzºé“ýñÉfgMü/7×NºCö¹~}‘|ùæË¹UL$Ï_žÙã«§(×/µIDAT˜I%W²vÄÅÈ+x*û"" Z¿xè&/±sÕŒª”7«§ó%ÿ/5Ãé¹3Ü&ÃY’Jìbú+¿‰ˆœq*1¹ÿ)5»ëÂߨNYf_ú‰ƒ$¨<ž©[†ÕÎWÃgé]mT·íˆHâ X¦§7‰3MŠÛ|õí³_í:K}ò4Y¥OîLD>QÃÍâRDº~J*ˆ»‚lO—åd{“¼”³xèíSWD@²Ú:/®É:’8LfJ%–’—Û¤÷’žL†Å2ÜrÉ ~oWD’~Æ\/‰%f’™d ìïYã³Û)ËìK?¢•ᤌËgõ~f•Åò¥qI‡É,³yEäñ53-S”ÓƒÙÈ3úZ‰s† f-m”)Ö™Õ–!¼Ìl²é“§‰Èª|2þµ³á¬LµÏÐn¦Øk+ ЗžHªž.i"1‰|]¤›ú?€××÷?×4ÕÉT¾¬¤ÎV(_©ÙD™â›@y^pÙ!CY³/è âEb"—~< ø/à>ˆÓ~²ÜNY6*c&[SmÌN,"ÁíôD2”–¹ñ›Õm£ß38kQÂ$ñ–—nàk“\æÞg-ÉFöDà‘ÕCJOiè¦Ož§‹­Â'§Ed²íI~Ë{+ÏyžãÌ’ÌG^„D[>‰HªÉ"¼8lœ$Â!©¼ô²"uv¥zë™)•—k^ôY –zY˜7±íöD«H?3¾Ò Hy‘F䦭iY6ƒÄ[²¸0 ¼RïÌØJœ${mU·ÒK`<óýÿ¦¶<|³–^H†Ê\ßlC»ÌˆùfõXfg˜­À};ÉRŸ< s×>9-"ÓÉÌËÂÛ§Î,.îÄ)Ìä4}‘¾µÍfÃE}+§å}r Unleash your creativity! ------------------------ SurgeScript is a scripting language for games. It lets you unleash your creativity and build your own amazing interactive content! It's such a joy to use SurgeScript! You will love it! [![Download](img/download.png)](/download) [![Support the project](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3WAZYYTB22KFG) How do I learn SurgeScript? --------------------------- Check out the [SurgeScript Crash Course](/tutorials/hello)! Also take a look on the [video tutorials](https://youtube.com/alemart88) and on the examples folder that comes with the software. SurgeScript in a nutshell ------------------------- SurgeScript is: * A scripting language for games * Easy for beginners, powerful for experts * Object-oriented, dynamically typed and based on state machines * Free and open source software * Built in C, which is nearly universal * Named after a really charismatic character: [Surge](http://opensurge2d.org)! * The only programming language in the world that natively allows you to tag objects with emoticons ;) Why use SurgeScript? -------------------- Unlike other programming languages, SurgeScript has been designed with the specific needs of games in mind. Its features include: - The state-machine pattern: objects are state machines - The composition approach: you may design complex objects and behaviors by means of composition - The hierarchy system: objects have a parent and may have children, in a tree-like structure - The game loop: it's defined implicitly Other benefits include: - Small footprint, easy to integrate - C-like syntax, including plenty of features - Automatic garbage collection - Easy to extend via Plugins - It's free and open source software These features come from the experience of the developer dealing with game engines, applications related to computer graphics and so on. Some of the best practices have been incorporated into the language itself, making things really easy for developers and modders. Who created SurgeScript? ------------------------ SurgeScript has been created by [Alexandre Martins](https://github.com/alemart), a computer scientist from Brazil. He has also created the [Open Surge game engine](http://opensurge2d.org), hence the name SurgeScript. surgescript-0.5.4/docs/reference/000077500000000000000000000000001354226561700167735ustar00rootroot00000000000000surgescript-0.5.4/docs/reference/application.md000066400000000000000000000012151354226561700216170ustar00rootroot00000000000000Application =========== Represents the Application. You do not need to instantiate it, as it is instantiated automatically. This object can be accessed by any other object, in any script, simply by typing `Application`. Properties ---------- #### args `args`: [Arguments](/reference/arguments) object, read-only. Use this property to read the command line arguments. Functions --------- #### exit `exit()` Exits the Application. #### crash `crash(message)` Exits the Application with an error message. *Arguments* * `message`: string. The message to be displayed to the user. #### destroy `destroy()` A synonym for `Application.exit()`.surgescript-0.5.4/docs/reference/arguments.md000066400000000000000000000047701354226561700213320ustar00rootroot00000000000000Arguments ========= If you've launched your application via the command-line, this Array-like object can be used to read command-line arguments. This is available at `Application.args`. The example below prints all the arguments to the screen: ``` // Method 1 (foreach) foreach(argument in Application.args) Console.print(argument); // Method 2 (for loops) for(i = 0; i < Application.args.length; i++) Console.print(Application.args[i]); // Or, alternatively: Console.print(Application.args); ``` Properties ---------- #### length `length`: number, read-only. The number of command-line arguments, including the executable. Functions --------- #### get `get(index)` Gets the specified command-line argument. Instead of calling `get()`, one may use equivalently the `[ ]` operator. *Arguments* * `index`: integer number between 0 and `Application.args.length - 1`, inclusive. *Returns* A string with the specified command-line argument, or `null` if there is no such argument. *Example* ``` // Suppose that you run surgescript via the command-line: // surgescript test_args.ss executable = Application.args[0]; // "surgescript" script_file = Application.args[1]; // "test_args.ss" ``` #### option `option(optionName)` Gets the value of a certain command-line option. *Arguments* * `optionName`: string. The option you want to read. *Returns* A string featuring the value of the desired command-line option, or `null` if such an option hasn't been provided by the user. *Example* ``` // Suppose that you run surgescript via the command-line: // surgescript test_args.ss --my-option 12345 my_option = Application.args.option("--my-option"); // Options -p and --port are equivalent // surgescript test_args.ss -p 80 // surgescript test_args.ss --port 80 port = Application.args.option("--port") || Application.args.option("-p"); // Default values (useful if the option is not present) // surgescript test_args.ss // surgescript test_args.ss --name alice name = Application.args.option("--name") || "anonymous"; ``` #### hasOption `hasOption(optionName)` Checks if the specified option is present in the command-line. *Arguments* * `optionName`: string. *Returns* Returns `true` if the specified option is present in the command-line; or `false` otherwise. #### iterator `iterator()` Spawns an iterator. *Returns* An iterator to loop through the command-line arguments. #### toString `toString()` Converts the command-line arguments to a string. *Returns* A string featuring the command-line arguments.surgescript-0.5.4/docs/reference/array.md000066400000000000000000000124511354226561700204360ustar00rootroot00000000000000Array ===== An Array is a collection of values organized in sequencial fashion. To instantiate an Array, use the `[ value_1, value_2, ..., value_n ]` syntax rather than the `spawn()` function. Example: ``` object "Application" { // The 'characters' array hold 3 strings characters = [ "Surge", "Neon", "Charge" ]; state "main" { // who are the characters? Console.print("The characters are:"); Console.print(characters[0]); Console.print(characters[1]); Console.print(characters[2]); // how many characters? Console.print("Number of characters: " + characters.length); } } ``` Output: ``` The characters are: Surge Neon Charge Number of characters: 3 ``` > **Note:** > > Whenever you define a array, you spawn a new object. One is advised to **NOT** define arrays within states, because the code within states run continuously. Therefore, new objects will be created at every frame, not just once. Properties ---------- #### length `length`: number, read-only. The number of elements in the Array. Functions --------- #### get `get(index)` Gets the specified element of the Array. Instead of calling `get()` directly, you may equivalently use the `[ ]` operator. *Arguments* * `index`: integer number between `0` and `this.length - 1`, inclusive. *Returns* The Array element at position `index` (0-based). *Example* ``` characters = [ "Surge", "Neon", "Charge" ]; ... surge = characters[0]; // first element ("Surge") neon = characters[1]; // second element ("Neon") charge = characters[2]; // third element ("Charge") ``` #### set `set(index, value)` Sets to `value` the element of the Array at position `index`. Instead of calling `set()` directly, you may equivalently use the `[ ]` operator. *Arguments* * `index`: integer number between `0` and `this.length - 1`, inclusive. * `value`: any type. The new value to be placed on the Array. *Example* ``` characters = [ "Surge", "Neon", "Charge" ]; characters[0] = "Gimacian"; Console.print(characters[0]); // Gimacian ``` #### push `push(value)` Adds a new element to the end of the Array. *Arguments* * `value`: any type. The element to be added to the Array. *Example* ``` characters = [ "Surge", "Neon", "Charge" ]; characters.push("Gimacian"); Console.print(characters); // [ "Surge", "Neon", "Charge", "Gimacian" ] ``` #### pop `pop()` Removes the last element of the Array and returns it. *Returns* The removed element. #### shift `shift()` Removes the first element of the Array and returns it. *Returns* The removed element. #### unshift `unshift(value)` Adds a new element to the beginning of the Array. *Arguments* * `value`: any type. The element to be added to the Array. #### clear `clear()` Clears the array. It will no longer hold any elements and its length will be set to zero. *Available since:* SurgeScript 0.5.3 #### indexOf `indexOf(value)` Search the Array for element `value` and return its position. *Arguments* * `value`: any type. The element to be searched for. *Returns* The position of the searched element - a number between `0` and `this.length - 1`, inclusive. If the desired element is not found, this function returns `-1`. *Example* ``` characters = [ "Surge", "Neon", "Charge" ]; ... two = characters.indexOf("Neon"); // 2 gimacian = characters.indexOf("Gimacian"); // -1 if(gimacian < 0) Console.print("Not found"); ``` #### sort `sort(cmpFun)` Sorts the Array. If no comparison [functor](/tutorials/advanced_features#functors) is provided (`cmpFun` is `null`), the Array will be sorted in ascending order. *Arguments* * `cmpFun`: object | null. This [functor](/tutorials/advanced_features#functors) implements function `call(a, b)` that compares two array elements as described in the example below. *Returns* The sorted array. The returned array is the same array as you called `sort()` on; it's not a copy. *Example* ``` // this example will print the elements // of the Array in ascending order object "Application" { arr = [ 3, 9, 4, 8, 5, 6, 7, 1, 2, 0 ]; state "main" { // sort and print the Array arr.sort(null); Console.print(arr); Application.exit(); } } ``` Output: `[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]` ``` // this example will print the elements // of the Array in descending order object "Application" { arr = [ 3, 9, 4, 8, 5, 6, 7, 1, 2, 0 ]; cmp = spawn("Sort.OrderByDesc"); state "main" { // sort and print the Array arr.sort(cmp); Console.print(arr); Application.exit(); } } object "Sort.OrderByDesc" { // This function compares two // elements of the Array: a and b. // // It should return a number: // < 0 if a must come BEFORE b // = 0 if a and b are equivalent // > 0 if a must come AFTER b fun call(a, b) { // sort in descending order return b - a; } } ``` Output: `[ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 ]` #### reverse `reverse()` Reverses the order of the elements in the Array. #### shuffle `shuffle()` Shuffles the elements of the Array, placing its elements at random spots. #### iterator `iterator()` Spawns an iterator. *Returns* An iterator to loop through the elements of the Array. #### toString `toString()` Converts the Array to a string. *Returns* A string. surgescript-0.5.4/docs/reference/boolean.md000066400000000000000000000011341354226561700207330ustar00rootroot00000000000000Boolean ======= Routines for booleans. The Boolean object is not supposed to be used directly. The functions below are available for primitive values of the boolean type. Functions --------- #### valueOf `valueOf()` The primitive value of the boolean, i.e., the boolean itself. *Returns* The boolean. #### toString `toString()` Convert boolean to string. *Returns* The boolean converted to a string. #### equals `equals(b)` Compares the boolean to another boolean `b`. *Arguments* * `b`: boolean. The value to compare the boolean to. *Returns* Returns `true` if the booleans are equal.surgescript-0.5.4/docs/reference/console.md000066400000000000000000000021541354226561700207610ustar00rootroot00000000000000Console ======= The Console is a mechanism that allows users to interact with your app via a text-based interface. You can print data to the user and read data from the user. Functions --------- #### print `print(line)` Prints a line to the console. *Arguments* * `line`: string. The message to be printed. *Example* ``` // this will print "Hello, there!" and quit object "Application" { state "main" { Console.print("Hello, there!"); Application.exit(); } } ``` #### write `write(str)` Writes a string to the console, without a line break at the end. *Arguments* * `str`: string. The string to be written. #### readline `readline()` Reads a line from the standard input. *Returns* Returns the string just read, without a line break at the end. *Example* ``` // will ask the name of the user until a name is given object "Application" { state "main" { Console.print("Hey pal, what's your name? "); name = Console.readline(); if(name != "") { Console.print("Nice to meet you, " + name); Application.exit(); } } } ```surgescript-0.5.4/docs/reference/date.md000066400000000000000000000030461354226561700202350ustar00rootroot00000000000000Date ==== Date is used to retrieve current date and time. You can access this object simply by typing `Date`. Example: ``` // What day is today? object "Application" { // show the day state "main" { today = Date.year + "-" + f(Date.month) + "-" + f(Date.day); Console.print("Today is " + today); Application.exit(); } // add a leading zero fun f(x) { if(x >= 10) return x; else return "0" + x; } } ``` *Available since:* SurgeScript 0.5.2 Properties ---------- #### year `year`: number, read-only. The current year. #### month `month`: number, read-only. Month of the year (1-12). #### day `day`: number. Day of the month (1-31). #### hour `hour`: number. Hours since midnight (0-23). #### minute `minute`: number. Minutes after the hour (0-59). #### second `second`: number. Seconds after the minute (0-59). #### weekday `weekday`: number. Days since Sunday (0-6). #### unixtime `unixtime`: number. Number of seconds since Jan 1st, 1970 00:00:00 UTC. Functions --------- #### timezoneOffset `timezoneOffset()` The difference, in minutes, from the Coordinated Universal Time (UTC) to the timezone of the host. Example: if your timezone is UTC-03:00, this function returns -180. *Available since:* SurgeScript 0.5.2 *Returns* The timezone difference in minutes. #### toString `toString()` Converts the current date and time to a string. The string is formatted according to the ISO 8601 standard. *Available since:* SurgeScript 0.5.2 *Returns* The current date and time expressed according to ISO 8601.surgescript-0.5.4/docs/reference/dictionary.md000066400000000000000000000052171354226561700214670ustar00rootroot00000000000000Dictionary ========== A Dictionary is a collection of key-value pairs. Dictionary keys are strings. Their corresponding values can be of any type. To create a Dictionary, use the `{ key_1: value_1, key_2: value_2, ..., key_n: value_n }` syntax rather than the `spawn()` function. Example: ``` object "Application" { dictionary = { "Surge": 35, "Neon": 20, "Charge": 37.5, "Gimacian": 70 }; state "main" { // usage example Console.print(dictionary["Surge"]); // will print 35 Console.print(dictionary["Neon"]); // will print 20 // will print all entries foreach(entry in dictionary) Console.print(entry.key + ": " + entry.value); // done! Application.exit(); } } ``` Output: ``` 35 20 Surge: 35 Neon: 20 Charge: 37.5 Gimacian: 70 ``` > **Note:** > > Whenever you define a dictionary, you spawn a new object. One is advised to **NOT** define dictionaries within states, because the code within states run continuously. Therefore, new objects will be created at every frame of the application, not just once. Properties ---------- #### count `count`: number, read-only. The number of elements in the Dictionary. Functions --------- #### get `get(key)` Gets the value of the specified key in the Dictionary. Instead of calling `get()` directly, you may equivalently use the `[ ]` operator. *Arguments* * `key`: string. *Returns* The value corresponding to the specified key, or `null` if there is no such an entry in the Dictionary. *Example* ``` dict = { "Surge": 10 }; ten = dict["Surge"]; ``` #### set `set(key, value)` Sets the value of the specified key in the Dictionary. Instead of calling `set()` directly, you may equivalently use the `[ ]` operator. *Arguments* * `key`: string. * `value`: any type. *Example* ``` dict = { }; dict["Surge"] = 10; ``` #### clear `clear()` Removes all entries from the Dictionary. #### delete `delete(key)` Deletes the entry having the specified key. *Arguments* * `key`: string. The key of the entry to be removed. #### has `has(key)` Checks if an entry having the specified key belongs to the Dictionary. *Arguments* * `key`: string. The key of the entry. *Returns* Returns `true` if the Dictionary has such an entry. #### keys `keys()` Gets a collection containing the keys of the Dictionary. *Returns* Returns a new [Array](/reference/array) containing the keys of the Dictionary. #### iterator `iterator()` Spawns an iterator. *Returns* An iterator to loop through the elements of the Dictionary. #### toString `toString()` Converts the Dictionary to a string. *Returns* A string.surgescript-0.5.4/docs/reference/gc.md000066400000000000000000000011571354226561700177120ustar00rootroot00000000000000GC == SurgeScript features a Garbage Collector (GC) that automatically disposes objects that cannot be reached from the root (i.e., their references are lost). The Garbage Collector is available at `System.gc`. Generally, you do not need to modify any of its settings. Properties ---------- #### interval `interval`: number. Every `interval` seconds, the garbage collector will be called automatically. #### objectCount `objectCount`: number, read-only. How many objects were disposed when the garbage collector was last called. Functions --------- #### collect `collect()` Calls the Garbage Collector manually.surgescript-0.5.4/docs/reference/iterator.md000066400000000000000000000027771354226561700211630ustar00rootroot00000000000000Iterator ======== In SurgeScript, Iterator is an abstract contract, or protocol, that define a set of functions that should be written in concrete implementations. If you're familiar with object oriented programming, Iterator is an interface. Iterators are used to traverse containers / collections / data structures and access its elements. Concrete implementations of Iterator include: `ArrayIterator` and `DictionaryIterator`. If you wish to [write your own iterators](/tutorials/advanced_features#iterators), you need to specify the [functions described below](#functions). The data structure that you wish to traverse should include an `iterator()` function that spawns the concrete implementation of the Iterator. Thus, the `parent` object of the Iterator will be the structure to be traversed. The basic usage of an Iterator is as follows: ``` // container is an object such as an Array iterator = container.iterator(); // spawn an iterator to traverse the container while(iterator.hasNext()) { element = iterator.next(); Console.print(element); } ``` Functions --------- #### hasNext `hasNext()` Checks if there are more elements to be accessed in the iteration. *Returns* Returns `true` if there are more elements to be visited, or `false` otherwise. #### next `next()` Gets the next element of the container and advances the iteration. *Returns* The next element of the container, or `null` if there is no such element. The first call to `next()` returns the first element of the container, and so on.surgescript-0.5.4/docs/reference/math.md000066400000000000000000000136441354226561700202560ustar00rootroot00000000000000Math ==== Built-in mathematical functions. The Math object can be accessed simply by typing `Math`. Examples: ``` // Math functions two = Math.sqrt(4); // square root of 4 eight = Math.pow(2, 3); // 2 raised to the 3rd power zero = Math.sin(0); // sine of 0 seven = Math.max(5, 7); // maximum of 5 and 7 ``` Properties ---------- #### pi `pi`: number, read-only. An approximation of pi (3.1415926535...) #### epsilon `epsilon`: number, read-only. The difference between 1 and the smallest floating point number that is greater than 1. #### infinity `infinity`: number, read-only. A floating point representation of positive infinity. #### NaN `NaN`: number, read-only. A numeric data type representing Not-a-Number. *Available since:* SurgeScript 0.5.3 Functions --------- #### sqrt `sqrt(x)` Square root function. *Arguments* * `x`: number. *Returns* The square root of `x`. #### pow `pow(x, p)` Raise to power. *Arguments* * `x`: number. The base. * `p`: number. The exponent. *Returns* Returns `x` raised to the `p` power. #### exp `e(x)` Exponential function. *Arguments* * `x`: number. *Returns* Returns *e* raised to the `x` power. #### log `log(x)` Natural logarithm. *Arguments* * `x`: number. *Returns* The natural logarithm (base *e*) of `x`. #### log10 `log10(x)` Base 10 logarithm. *Arguments* * `x`: number. *Returns* The base 10 logarithm of `x`. #### sin `sin(x)` Sine function. *Arguments* * `x`: number. Angle in radians. *Returns* The sine of `x`. #### cos `cos(x)` Cosine function. *Arguments* * `x`: number. Angle in radians. *Returns* The cosine of `x`. #### tan `tan(x)` Tangent function. *Arguments* * `x`: number. Angle in radians. *Returns* The tangent of `x`. #### asin `asin(x)` Arc-sine function. *Arguments* * `x`: number. *Returns* The angle in radians whose sine is `x`. #### acos `acos(x)` Arc-cosine function. *Arguments* * `x`: number. *Returns* The angle in radians whose cosine is `x`. #### atan `atan(x)` Arc-tangent function. *Arguments* * `x`: number. *Returns* The angle in radians whose tangent is `x`. #### atan2 `atan2(y, x)` Function atan2. *Arguments* * `y`: number. * `x`: number. *Returns* The angle, in radians, between the positive x-axis and the *(x, y)* vector. #### deg2rad `deg2rad(degrees)` Converts `degrees` to radians. *Available since:* SurgeScript 0.5.3 *Arguments* * `degrees`: number. *Returns* The converted value. #### rad2deg `rad2deg(radians)` Converts `radians` to degrees. *Available since:* SurgeScript 0.5.3 *Arguments* * `radians`: number. *Returns* The converted value. #### random `random()` Random value. *Returns* A random number between 0 (inclusive) and 1 (exclusive). #### floor `floor(x)` Floor function. *Arguments* * `x`: number. *Returns* The largest integer less or equal than `x`. #### ceil `ceil(x)` Ceiling function. *Arguments* * `x`: number. *Returns* The smallest integer greater or equal than `x`. #### round `round(x)` Round to the nearest integer. *Arguments* * `x`: number. *Returns* Returns `x` rounded to the nearest integer. If the fraction of `x` is 0.5, this function uses the [commercial rounding](https://en.wikipedia.org/wiki/Rounding#Round_half_away_from_zero) tie-breaking method. #### mod `mod(x, y)` Modulus function. Used to get the remainder of a division. *Deprecated since SurgeScript 0.5.3. Use the remainder operator (%) instead, e.g.* `x % y`. *Arguments* * `x`: number. * `y`: number. *Returns* The remainder of `x / y`. #### sign `sign(x)` The sign of `x`: 1 if `x` is non-negative, 0 otherwise. *Arguments* * `x`: number. *Returns* Returns 1 if `x` is positive or zero; or -1 if `x` is negative. #### signum `signum(x)` Function signum(`x`) returns 1 if `x` is positive, 0 if is `x` is zero, or -1 if `x` is negative. *Available since:* SurgeScript 0.5.4 *Arguments* * `x`: number. *Returns* Returns 1 if `x` is positive, 0 if is `x` is zero, or -1 if `x` is negative. #### abs `abs(x)` Absolute value of `x`. *Arguments* * `x`: number. *Returns* Returns `-x` if `x` is negative, or `x` otherwise. #### min `min(x, y)` The minimum of two values. *Arguments* * `x`: number. * `y`: number. *Returns* Returns the smallest of two values: `x` and `y`. #### max `max(x, y)` The maximum of two values. *Arguments* * `x`: number. * `y`: number. *Returns* Returns the largest of two values: `x` and `y`. #### clamp `clamp(val, min, max)` Clamps a value between a minimum and a maximum. *Arguments* * `val`: number. The value to be clamped. * `min`: number. Minimum value. * `max`: number. Maximum value. *Returns* Returns `val` clamped between `min` and `max`. Function `clamp` behave as follows: * if `val` < `min`, it returns `min` * if `val` > `max`, it returns `max` * otherwise, it returns `val` #### approximately `approximately(x, y)` Compares two floating point values. Since comparing two floating point numbers for equality directly may result in inaccuracies, this is a handy function. *Arguments* * `x`: number. * `y`: number. *Returns* Returns `true` if `x` and `y` are *"approximately"* equal. #### lerp `lerp(a, b, t)` Linear interpolation. *Arguments* * `a`: number. * `b`: number. * `t`: number. A value between 0 and 1. *Returns* Returns the linear interpolation between `a` and `b` by `t`. Value `t` is clamped automatically to range *[0, 1]*. As an example, note that `lerp`: * returns `a` if `t` is *0* * returns `b` if `t` is *1* * returns `(a + b) / 2` if `t` is *0.5* #### smoothstep `smoothstep(a, b, t)` Interpolation smoothing at the limits. *Arguments* * `a`: number. * `b`: number. * `t`: number. A value between 0 and 1. *Returns* Returns an interpolated value between `a` and `b` by `t`, in a similar way to `lerp`. Unlike the linear `lerp`, `smoothstep` is smooth at the limits. This is useful to create smooth transitions and animations. Value `t` is clamped automatically to range *[0, 1]*. surgescript-0.5.4/docs/reference/number.md000066400000000000000000000026651354226561700206160ustar00rootroot00000000000000Number ====== Routines for numbers. The Number object is not supposed to be used directly. The functions below are available for primitive values of the number type. Example: ``` x = 2.toString(); // x is "2" t = typeof(x); // t is "string" ``` **Note:** the SurgeScript Runtime stores numbers as 64-bit floating point values (following the IEEE 754 standard). Integer numbers are accurate up to 15 digits. Functions --------- #### valueOf `valueOf()` The primitive value of the number, i.e., the number itself. *Returns* The number. #### toString `toString()` Converts the number to a string. *Returns* The number converted to a string. #### equals `equals(x)` Compares the number to another number `x`. This routine performs a comparison between floating point numbers. It's recommended to use [Math.approximately()](/reference/math#approximately) instead. *Arguments* * `x`: number. The value to compare the number to. *Returns* Returns `true` if the numbers are equal. #### isFinite `isFinite()` Checks if the number is finite. *Available since:* SurgeScript 0.5.2 *Returns* Returns `true` if the number is finite. #### isNaN `isNaN()` Checks if the value is NaN (Not-a-Number). *Available since:* SurgeScript 0.5.2 *Returns* Returns `true` if the value is NaN. #### isInteger `isInteger()` Checks if the number is an integer. *Available since:* SurgeScript 0.5.2 *Returns* Returns `true` if the number is an integer.surgescript-0.5.4/docs/reference/object.md000066400000000000000000000163311354226561700205670ustar00rootroot00000000000000Object ====== In SurgeScript, all objects are also instances of `Object`. This means that the properties and functions listed below are available for all objects: Properties ---------- #### parent `parent`: object, read-only. Reference to the parent object. #### childCount `childCount`: number, read-only. The number of children of the object. #### __name `__name`: string, read-only. The name of the object. #### __active `__active`: boolean. Indicates whether the object is active or not. Objects are active by default. Whenever an object is set to be inactive, its state machine is paused. Additionally, the state machines of all its descendants are also paused. #### __functions `__functions`: [Array](/reference/array) object, read-only. The functions of this object represented as a collection of strings. #### __timespent `__timespent`: number, read-only. The approximate time spent in this object in the last frame (in seconds). #### __file `__file`: string, read-only. The source file of this object. *Available since:* SurgeScript 0.5.3 Functions --------- #### spawn `spawn(objectName)` Spawns an object named `objectName`. *Arguments* * `objectName`: string. The name of the object to be spawned / instantiated. *Returns* A new object of the desired name. Note that the newly created object will be a child of `this`. #### destroy `destroy()` Destroys the object. #### child `child(childName | childId)` Looks for a child named `childName` (or matching `childId`). *Arguments* * `childName`: string. The name of the desired child. * `childId`: number. The id of the desired child, an integer between `0` and `childCount - 1`, inclusive. *Returns* The desired child, or `null` if there is no such object. #### children `children(childName)` Finds all children named `childName`. Since this function spawns a new array at each call, it's recommended to cache its return value. *Available since:* SurgeScript 0.5.4 *Arguments* * `childName`: string. The name of the desired children. *Returns* A new array containing all children named `childName`. If no such children are found, an empty array is returned. #### childWithTag `childWithTag(tagName)` Finds a child tagged `tagName`. *Available since:* SurgeScript 0.5.4 *Arguments* * `tagName`: string. The name of a tag. *Returns* A child tagged `tagName`, or `null` if there is no such object. #### childrenWithTag `childrenWithTag(tagName)` Finds all children tagged `tagName`. *Available since:* SurgeScript 0.5.4 *Arguments* * `tagName`: string. The name of a tag. *Returns* A new array containing all children tagged `tagName`. If there are no such children, an empty array is returned. #### sibling `sibling(siblingName)` Looks for a sibling named `siblingName`. Two objects are siblings if they share the same parent. *Arguments* * `siblingName`: string. The name of the desired sibling. *Returns* A sibling of name `siblingName`, or `null` if there is no such object. #### findObject `findObject(objectName)` Finds a descendant (child, grand-child, and so on) named `objectName`. Since this function traverses the [object tree](/tutorials/object_tree), it's recommended to cache its return value. Do not use it in loops or states, as it might be slow. *Arguments* * `objectName`: string. The name of the desired object. *Returns* A descendant named `objectName`, or `null` if there is no such object. *Example* ``` object "TestObject" { // will search for SomeOtherObject in the Application obj = Application.findObject("SomeOtherObject"); state "main" { if(obj != null) Console.print("Found the object."); else Console.print("Object not found."); destroy(); } } ``` #### findObjects `findObjects(objectName)` Finds all descendants named `objectName`. Since this function traverses the [object tree](/tutorials/object_tree), it's recommended to cache its return value. Do not use it in loops or states, as it might be slow. *Available since:* SurgeScript 0.5.4 *Arguments* * `objectName`: string. The name of the objects to be found. *Returns* A new array containing all descendants named `objectName`. If no such descendants are found, an empty array is returned. #### findObjectWithTag `findObjectWithTag(tagName)` Finds a descendant tagged `tagName`. Since this function traverses the [object tree](/tutorials/object_tree), it's recommended to cache its return value. Do not use it in loops or states, as it might be slow. *Available since:* SurgeScript 0.5.4 *Arguments* * `tagName`: string. The name of a tag. *Returns* A descendant tagged `tagName`, or `null` if there is no such object. #### findObjectsWithTag `findObjectsWithTag(tagName)` Finds all descendants tagged `tagName`. Since this function traverses the [object tree](/tutorials/object_tree), it's recommended to cache its return value. Do not use it in loops or states, as it might be slow. *Available since:* SurgeScript 0.5.4 *Arguments* * `tagName`: string. The name of a tag. *Returns* A new array containing all descendants tagged `tagName`. If no such descendants are found, an empty array is returned. #### toString `toString()` Converts the object to a string. This function is designed to be overloaded by your own objects. *Returns* A string. #### equals `equals(otherObject)` Compares `this` object to `otherObject`. This function is designed to be overloaded by your own objects. *Arguments* * `otherObject`: object. An object to compare `this` to. *Returns* Returns `true` if the objects are equal; `false` otherwise. #### hasFunction `hasFunction(functionName)` Checks if the object has a function named `functionName`. *Arguments* * `functionName`: string. The name of the function. *Returns* Returns `true` if the object has a function named `functionName`. #### hasTag `hasTag(tagName)` Checks if the object has been tagged with `tagName`. *Arguments* * `tagName`: string. The name of the tag. *Returns* Returns `true` if the object has been tagged with `tagName`. #### __invoke `__invoke(functionName, paramsArray)` Invokes function `functionName`, passing the parameters specified in `paramsArray`. Please note that the number of elements of `paramsArray` must be the same as the number of parameters required by the function to be invoked. *Available since:* SurgeScript 0.5.2 *Arguments* * `functionName`: string. The name of the function to be called. * `paramsArray`: [Array](/reference/array). The parameters to be passed to the function. *Returns* Returns the value returned by the invoked function. *Example* ``` // The program below will print: // 12 // 12 // true object "Application" { state "main" { Console.print(this.sum(5, 7)); Console.print(this.__invoke("sum", [5, 7])); Console.print(sum(5, 7) == __invoke("sum", [5, 7])); Application.exit(); } fun sum(a, b) { return a + b; } } ``` #### __arity `__arity(functionName)` Returns the number of arguments of function `functionName`, if it's defined. If it's not defined, zero will be returned. *Available since:* SurgeScript 0.5.4 *Arguments* * `functionName`: string. The name of a function. *Returns* The number of arguments of the specified function, or zero if the function is not defined.surgescript-0.5.4/docs/reference/plugin.md000066400000000000000000000036561354226561700206250ustar00rootroot00000000000000Plugin ====== SurgeScript features a plugin system that allows you to extend the functionalities of the language. Known as plugins or [packages](/tutorials/packages), these objects can be imported and accessed anywhere in the code. They are imported using a `using` statement. The plugin system can be accessed simply by typing `Plugin`. Example: ``` // File: app.ss // An application that uses StringUtils, defined in another file using StringUtils; object "Application" { str = "alucard"; state "main" { Console.print("Reverse a string:"); Console.print(str); Console.print(StringUtils.reverse(str)); Application.exit(); } } ``` ``` // File: string_utils.ss // String utilities @Package object "StringUtils" { fun reverse(str) { buf = ""; for(i = str.length - 1; i >= 0; i--) buf += str[i]; return buf; } } ``` *Available since:* SurgeScript 0.5.2 Properties ---------- #### count `count`: number, read-only. The number of plugins. Functions --------- #### spawn `spawn(objectName)` Spawns an object called `objectName` as a plugin. This function is not to be used directly, as SurgeScript spawns the plugins automatically for you. *Arguments* * `objectName`: string. The name of the object to be spawned as a plugin. It's not recommended to include special characters in this name. #### get `get(objectName)` Gets a reference to the plugin named `objectName`. The `[ ]` operator can be used instead of the `get()` function, as in `Plugin[objectName]`. Rather than using this function, it's recommended to import the desired object using the `using MyObject;` statement at the beginning of your code. Your object will be available as `MyObject`. *Arguments* * `objectName`: string. The name of the plugin. *Example* ``` using StringUtils; // ... assert(Plugin["StringUtils"] === StringUtils); assert(Plugin.StringUtils === StringUtils); ```surgescript-0.5.4/docs/reference/string.md000066400000000000000000000073071354226561700206320ustar00rootroot00000000000000String ====== Routines for strings. The String object is not supposed to be used directly (generally speaking). The functions below are available for primitive values of the string type. Example: ``` // Useful string routines x = "SurgeScript".toLowerCase(); // "surgescript" y = x.substr(0, 5); // "surge" z = x[0]; // "s" (first character of x) n = y.length; // 5 ``` Please note that strings in SurgeScript are immutable. Once a string is set, its individual characters cannot be changed. If you need to modify the content of a string, reassign the variable to a new string. Properties ---------- #### length `length`: number, read-only. The length of the string. Functions --------- #### valueOf `valueOf()` The primitive value of the string, i.e., the string itself. *Returns* The string. #### toString `toString()` Convert to string. *Returns* The string itself. #### equals `equals(str)` Compares the string to another string `str`. *Arguments* * `str`: string. *Returns* Returns `true` if the strings are equal. #### get `get(i)` Gets the `i`-th character of the string. The `[ ]` operator can be used equivalently. *Arguments* * `i`: integer number. A value between 0 (inclusive) and the length of the string (exclusive). *Returns* The `i`-th character of the string (0-based index). #### indexOf `indexOf(str)` Finds the position of the first occurrence of `str` in the string. *Arguments* * `str`: string. The string to be searched for. *Returns* The position (0-based index) of the first occurrence of `str` in the string, or *-1* if there is no such occurrence. *Example* ``` name = "SurgeScript"; a = name.indexOf("Surge"); // a is 0 b = name.indexOf("Neon"); // b is -1 c = name.indexOf("e"); // c is 4 d = name.indexOf("script"); // d is -1, as the search is case-sensitive ``` #### substr `substr(start, length)` Extracts the substring starting at position `start` with length `length`. *Arguments* * `start`: number. The start position. * `length`: number. The length of the substring. *Returns* The substring with length `length` starting at `start`. *Example* ``` name = "SurgeScript"; surge = name.substr(0, 5); // "Surge" script = name.substr(5, 6); // "Script" e = name.substr(4, 2); // "e" empty = name.substr(555, 1); // "" ``` #### concat `concat(str)` Concatenates two strings. This is the same as using the `+` operator. *Arguments* * `str`: string. *Returns* The caller string concatenated with `str` at the end. *Example* ``` name = "Surge".concat("Script"); // SurgeScript name = "Surge" + "Script"; // SurgeScript ``` #### replace `replace(oldstr, newstr)` Replaces all occurrences of `oldstr` to `newstr` in the caller string. *Arguments* * `oldstr`: string. The substring to be replaced. * `newstr`: string. The substring that should appear in the result. *Returns* The caller string having all its occurrences of `oldstr` replaced to `newstr`. *Example* ``` // dst is "Gimacian, Neon and Charge" src = "Surge, Neon and Charge"; dst = src.replace("Surge", "Gimacian"); ``` #### toLowerCase `toLowerCase()` Converts the string to lower case. *Returns* The string converted to lower case. #### toUpperCase `toUpperCase()` Converts the string to upper case. *Returns* The string converted to upper case. #### isNullOrEmpty `isNullOrEmpty(value)` This method of the `String` object can be used directly. It checks if the given `value` is either `null` or an empty string. *Available since:* SurgeScript 0.5.3 *Arguments* * `value`: string | null. The value to be tested. *Returns* Returns `true` if `value` is either `null` or an empty string. *Example* ``` name = "Surge"; //name = ""; //name = null; if(!String.isNullOrEmpty(name)) Console.print(name); ``` surgescript-0.5.4/docs/reference/surgescript.md000066400000000000000000000006651354226561700216760ustar00rootroot00000000000000SurgeScript =========== Data related to the scripting language itself. You can access this object simply by typing `SurgeScript`. Example: ``` // Prints the version of the SurgeScript runtime object "Application" { state "main" { Console.print(SurgeScript.version); } } ``` *Available since:* SurgeScript 0.5.2 Properties ---------- #### version `version`: string, read-only. Version number of the SurgeScript runtime.surgescript-0.5.4/docs/reference/system.md000066400000000000000000000011211354226561700206340ustar00rootroot00000000000000System ====== The root object. Used to gather data from the language and to access special objects. It can be accessed by typing `System`. Properties ---------- #### tags `tags`: [Tag System](/reference/tags) object, read-only. A reference to the Tag System. #### gc `gc`: [Garbage Collector](/reference/gc) object, read-only. A reference to the Garbage Collector object. #### objectCount `objectCount`: number, read-only. The total number of objects at this moment. Functions --------- #### exit `exit()` Exits the Application. #### destroy `destroy()` The same as `exit()`.surgescript-0.5.4/docs/reference/tags.md000066400000000000000000000010261354226561700202520ustar00rootroot00000000000000TagSystem ========= Utility functions for dealing with object tags. This object is available at `System.tags` and shouldn't be instantiated directly. Functions --------- #### list `list()` Lists all tags used in all objects. *Returns* This function spawns a new Array object with all tags and returns it. #### select `select(tagName)` Selects all objects that are tagged with `tagName`. *Arguments* * `tagName`: string. *Returns* This function returns a new Array with all the names of the objects tagged with `tagName`.surgescript-0.5.4/docs/reference/time.md000066400000000000000000000013761354226561700202620ustar00rootroot00000000000000Time ==== Time utilities. This object is available simply by typing `Time`. Properties ---------- #### time `time`: number, read-only. The number of seconds since the application was started at the beginning of this frame. #### delta `delta`: number, read-only. The time, in seconds, taken to complete the last frame of the application. Use this value to make your application behave consistently regardless of the frame rate. #### now `now`: number, read-only. The number of seconds since the application was started at the moment this property is evaluated. *Available since:* SurgeScript 0.5.4 > **Note:** > > Since `Time.now` may return different values during the same frame of your application, it's generally advisable to use `Time.time` instead.surgescript-0.5.4/docs/tutorials/000077500000000000000000000000001354226561700170635ustar00rootroot00000000000000surgescript-0.5.4/docs/tutorials/advanced_features.md000066400000000000000000000160471354226561700230600ustar00rootroot00000000000000Advanced features ================= This section describes advanced features of SurgeScript. Lookup operator --------------- Some programming languages, such as C++, have a feature called *operator overloading*. It's a *syntactic sugar* that allows the programmer to attribute custom implementations to different operators. In SurgeScript, the `[]` operator (also called the *lookup operator*), used by [Arrays](/reference/array) and [Dictionaries](/reference/dictionary), is used to **get** and **set** values from/to the data structure. In fact, the `[]` operator can be used with any object. It is necessary to define, in your object, functions `get()` and `set()` with the following signature: ``` fun get(key) { // custom implementation } fun set(key, value) { // custom implementation } ``` Given an object `obj`, the expression `x = obj[key]` is equivalent to `x = obj.get(key)`. Similarly, `obj[key] = value` is equivalent to `obj.set(key, value)`. Function objects ---------------- In SurgeScript, objects can be made to behave like functions. We call these objects *function objects* (or *functors*). To make an object behave like a function, you have to overload the `()` operator (also known as the *function operator*). This is done by defining function `call()` in your object: ``` fun call() { // custom implementation } ``` Function `call()` may take any number of parameters. Given an object `f`, the expression `y = f(x)` is equivalent to `y = f.call(x)`. Notice that, since `f` is an object, you may exchange its implementation during runtime. Assertions ---------- The `assert(condition)` statement specifies a `condition` that you expect to be true at a certain point in your code. If that condition turns out to be false, the code will be interrupted with an *assertion failed* error. Example: ``` assert(name == "Surge"); // will crash if name isn't "Surge" ``` Chaining -------- In SurgeScript, it's possible to configure objects in an elegant way using a technique called *chaining*. Consider the object below - it simply displays a message at regular intervals: ``` object "Parrot" { message = "I am a Parrot"; state "main" { if(timeout(1.0)) state = "print"; } state "print" { Console.print(message); state = "main"; } // Note that this function returns // this, i.e., the object itself. fun setMessage(newMessage) { message = newMessage; return this; } } ``` Suppose that, in your Application, you would like to spawn that object and modify its message. One way of doing it would be making its internal variable `public` and changing its contents in the [constructor function](/tutorials/functions) of your Application. A more concise and elegant way of doing it would be calling function `setMessage()` just after you spawn the object: ``` object "Application" { parrot = spawn("Parrot").setMessage("Hello!"); state "main" { } } ``` Observe that the function we have defined does two things: * It modifies the internals of the object in some way * It always returns `this` (that is, the object itself) We call that function a *chainable function*. You may call such a function from your Application, just after `spawn()`, and you'll still have a reference to the spawned object. Moreover, since chainable functions always return `this`, you may chain multiple function calls into a single statement, making your code concise and your statement descriptive. Example: ``` parrot = spawn("Parrot").setMessage("Hello!").setInterval(2.0); ``` Factory ------- In SurgeScript, a factory is a functor that spawns an object for you. The object can be spawned and configured in a single call. In the example below, factory `Greeter` spawns and configures `Greeting` objects. We annotate the factory with `@Package`, so it can be imported anywhere in the code. To the end-user, calling `Greeter()` is simpler than manually spawning and configuring a `Greeting` every time it is needed. ``` // Factory example using Greeter; // import the factory object "Application" { state "main" { // This will print: // Hello, alex! g = Greeter("alex"); g.greet(); exit(); } } // File: greeting.ss object "Greeting" { public name = "anon"; fun greet() { Console.print("Hello, " + name + "!"); } } @Package object "Greeter" { // Greeter is a factory. It spawns and configures // a Greeting object for you. As it is a package, // it can be imported and used anywhere. fun call(name) { g = spawn("Greeting"); g.name = name; return g; } } ``` In the example above, objects spawned by the factory will be children of the factory. If you need the parent of the spawned object to be the caller, simply write `g = caller.spawn("Greeter")`. Know that `caller` points to the object that called the function (or `null` if not applicable). Iterators --------- As seen in the [loops](/tutorials/loops#foreach) section, the foreach loop may be used to iterate through a collection. In SurgeScript, a collection is an object that implements a specific protocol. You may implement your own collections by implementing function `iterator()`. If you have ever used Java, you'll find this to be familiar. ``` object "MyCollection" { fun iterator() { // function iterator() takes no arguments and // should return a new iterator object } } ``` For each collection you define, you should also define its iterator object. The iterator object should implement functions `next()` and `hasNext()` (both take no arguments): ``` object "MyIterator" { fun next() { // returns the next element of the collection // and advances the iteration pointer // the collection is usually the parent object } function hasNext() { // returns true if the enumeration isn't over // returns false if there are no more elements } } ``` You may iterate through a collection using the following code: ``` it = collection.iterator(); while(it.hasNext()) { x = it.next(); // do something with x // x is an element of the collection Console.print(x); } ``` Or, alternatively, using the compact foreach: ``` foreach(x in collection) { Console.print(x); } ``` For the sake of completion, the following code demonstrates how to implement a custom collection that hold even numbers from 0 up to 20. ``` object "Application" { evenNumbers = spawn("Even Numbers"); state "main" { // print all the numbers of the collection foreach(number in evenNumbers) Console.print(number); // we're done! state = "done"; } state "done" { } } object "Even Numbers" { fun iterator() { return spawn("Even Numbers Iterator"); } } object "Even Numbers Iterator" { nextNumber = 0; fun next() { currentNumber = nextNumber; nextNumber += 2; return currentNumber; } fun hasNext() { return nextNumber <= 20; } } ``` The result of this code is: ``` 0 2 4 6 8 10 12 14 16 18 20 ``` surgescript-0.5.4/docs/tutorials/best_practices.md000066400000000000000000000013761354226561700224060ustar00rootroot00000000000000Best Practices ============== - Read the [Components](/tutorials/components) section. It's crucial that you understand it. - Follow the golden rule: objects should **not** mess with each others' internals! - Objects should **not** change others' internal variables or states directly (not allowed!) - Objects should define [functions](/tutorials/functions) that can be operated upon by the external world (API) - Use a consistent style, e.g., - Use *camelCase* names for both variables and functions. - Use *4 spaces* when indenting your code. - Combine related [packages](/tutorials/packages) into a single one: don't pollute the global namespace. - Read the [SurgeScript documentation](/) often. - **Practice, practice, practice! - and have fun!**surgescript-0.5.4/docs/tutorials/comments.md000066400000000000000000000012441354226561700212330ustar00rootroot00000000000000Comments ======== Comments are used to make your code more human-readable. They are ignored by the computer. SurgeScript allows two kinds of comments: single-line comments and multi-line comments. Single-line comments -------------------- Single-line comments start with a `//`. Example: ``` // This line has no effect on the code (it's just for improved readability) x = 3 + 4; // x is now 7 ``` Multi-line comments ------------------- Multi-line comments start with a `/*` and end with a `*/`. Example: ``` /* * Comments can, but don't have to, take * multiple lines if you use this form. */ x = 3 + 4; /* x is now 7 */ ``` Comments of this form cannot be nested.surgescript-0.5.4/docs/tutorials/components.md000066400000000000000000000056061354226561700216010ustar00rootroot00000000000000Components ========== Introduction ------------ Entity Component System (ECS) is a software pattern used in game development. The idea is that in-game objects (called *entities*) can be customized by adding or removing objects (called *components*) during runtime. Components add functionalities or behaviors to the entities to which they are attached to. In SurgeScript, both entities and components are objects - the difference is conceptual. As an example, consider an in-game object called **Parrot**. Objects by themselves are empty; they do nothing. However, an interesting behavior of parrots is that they are blabbers: they keep repeating the same thing over and over again. So, let's create an empty object called **Parrot**, tag it as an *entity* and spawn the **Blabber** component on it: ``` object "Parrot" is "entity" { blabber = spawn("Blabber"); state "main" { } } object "Blabber" { state "main" { if(timeout(2)) // blab every 2 seconds state = "blab"; } state "blab" { Console.print("Hello!"); state = "main"; } } ``` Now, whenever you spawn a Parrot, it will keep blabbing (*parroting*) unceasingly: ``` Hello! Hello! Hello! ... ``` Suppose now that your Parrot is a Kamikaze Robot: it blabs so much that it will explode itself after some time. We'll attach a **Time Bomb** to the parroting robot, so that it will stop blabbing after a while: ``` object "Time Bomb" { state "main" { if(timeout(15)) // explode after 15 seconds state = "explode"; } state "explode" { Console.print("BOOOM!"); parent.destroy(); // destroy the parent object } } object "Parrot" is "entity" { blabber = spawn("Blabber"); bomb = spawn("Time Bomb"); state "main" { } } ``` Now, here's the result: ``` Hello! Hello! Hello! Hello! Hello! Hello! Hello! BOOOM! ``` In this example, **Parrot** is an entity and **Blabber** and **Time Bomb** are its components. Once the entity is destroyed, its components (its children) are also destroyed automatically. Design considerations --------------------- In some implementations of ECS, entities are implemented as integers and components consist of raw data only. The game logic is executed by the System layer, which iterates throughout all entities continuously and executes the logic according to the components attached to them. In SurgeScript, components execute their own code and can be attached to entities simply by spawning them as children. Still, you can use the former approach if you wish to do so. Composition over inheritance ---------------------------- SurgeScript does not explicitly support inheritance, a feature found in other object-oriented languages. The usage of components is encouraged instead. SurgeScript favors composition over inheritance, allowing for greater flexibility when defining in-game objects. surgescript-0.5.4/docs/tutorials/conditionals.md000066400000000000000000000030001354226561700220640ustar00rootroot00000000000000Conditionals ============ Introduction ------------ Conditionals are *if ... then ...* statements. If a certain `condition` evaluates to `true`, execute a block of code. If not, don't execute it. ``` if(condition) { // this will be executed only if // the condition is true } ``` Alternatively, we may include an `else` statement followed by a block of code that will only be executed if the condition is **not** true: ``` if(condition) { // this will be executed only if // the condition is true } else { // this will be executed only if // the condition is false } ``` Example ------- The following example will print *underaged* if variable `age` is less than 18, or *adult* otherwise: ``` object "Application" { age = 23; state "main" { if(age < 18) { // variable age is less than 18 Console.print("underaged"); } else { // variable age is not less than 18 Console.print("adult"); } } } ``` Inline conditionals ------------------- Just like other languages with C-based syntax, the expression `condition ? true_value : false_value` evaluates to `true_value` if `condition` is `true` and to `false_value` if `condition` is `false`. For example, the script below will print *underaged* if variable `age` is less than 18, or *adult* otherwise: ``` object "Application" { age = 23; message = age < 18 ? "underaged" : "adult"; state "main" { Console.print(message); } } ``` surgescript-0.5.4/docs/tutorials/expressions.md000066400000000000000000000150441354226561700217730ustar00rootroot00000000000000Expressions =========== SurgeScript supports many kinds of expressions. Expressions may involve strings, numbers or booleans. Let's study each case: Constants --------- Constants are types of expressions. They may be numbers, strings, booleans... You may attribute constant values to variables using the assignment operator (`=`): ``` // strings name = "Surge"; // variable name receives string "Surge" message = "Surge's home"; otherMessage = 'Single-quoted strings are also allowed'; // numbers weight = 35; speed = 42.2; // booleans like = true; crazy = false; // null next = null; ``` Arithmetic operators -------------------- SurgeScript can perform basic arithmetic. The operators are as follows: Operator|Meaning --------|------- `+` | Addition `-` | Subtraction `*` | Multiplication `/` | Division `%` | Remainder The multiplication, division and remainder operators have precedence over the addition and the subtraction operators. Examples: ``` two = 1 + 1; ten = 5 * 2; eleven = 5 * 2 + 1; four = two * two; fifteen = eleven + four; three = fifteen / 5; positive = +5; negative = -1; zero = 15 - 10 - 5; one = 15 - (10 + 4); twelve = (2 + 2) * 3; prime = -(-15 + 8); seven = 5 + 5 % 3; negativeTwo = -5 % 3; ``` Comparison operators -------------------- Comparison operators compare two operands. Operator|Meaning --------|------- `==` | Equality operator `!=` | Inequality operator `<` | Less than `<=` | Less or equal `>` | Greater than `>=` | Greater or equal `===` | Strong equality `!==` | Strong inequality Examples: ``` x = 1; y = (x == 1); // y is true z = (x != 1); // z is false w = x > 1; // w is false t = x >= 1; // t is true ``` > **Pay attention!** > > Notice that the equality operator, used for comparing expressions for equality, is `==`. Pay attention! Don't confuse the equality operator (`==`) with the assignment operator (`=`). The expression `(x = 1)` always evaluates to 1, whereas `(x == 1)` is `true` only if x equals 1. > **Strong equality** > > Unlike their counterparts, strong equality/inequality operators compare not only the content of the operands, but also their type. While `"1" == 1` evalutes to `true`, `"1" === 1` does not. Logical operators ----------------- Logical operators involve booleans (`true` or `false` values). While the **not** operator requires only one operand, operators **and** and **or** require two. Operator|Meaning --------|------- `&&` | and `||` | or `!` | not The table below summarizes the basic logical expressions: Expression|Result ----------|------ `a && b` |`true` only if both a and b are true `a || b` | `true` if a is true or b is true `!a` | `true` if a is false, `false` if a is true Notice that **not** has higher precedence than the other two operators. Examples: ``` x = 5 < 2; // evaluates to false y = !x; // evaluates to true z = 18 < 35 || x; // evaluates to true w = (z && x) || true; // evaluates to true t = !x && x; // evaluates to false ``` > **Short-circuit evaluation** > > SurgeScript performs short-circuit evaluation in **and** and **or** operations. This means that the second operator is not evaluated if the first alone is sufficient to determine the value of the operation. Example: in the expression `a || b`, expression `b` is not evaluated if `a` is evaluated to `true`. Similarly, in `a && b`, expression `b` is not evaluated if `a` is evaluated to `false`. Textual expressions ------------------- You may concatenate strings with the `+` operator. Example: ``` message = "Surge" + " rocks!"; // evaluates to "Surge rocks!" ``` Other data types, such as numbers and booleans, may also be implicitly converted to strings when using this feature. Example: ``` group = "Jackson " + 5; // evaluates to "Jackson 5" ``` Assignment operators -------------------- The attribution operator (`=`) may be used to attribute data to variables. However, there's more to it. The expression `variable = "data"` is itself evaluated to string `"data"`. Likewise, the expression `variable = variable + 5` is evaluated to the new value of the variable and may be shortened to `variable += 5`. Let's see what kind of assignment expressions we have: Expression|Translates to|Meaning ----------|-------------|------- `x = value`|`x = value`|Assigns `value` to `x` `x += value`|`x = x + value`|Adds `value` to `x` `x -= value`|`x = x - value`|Subtracts `value` from `x` `x *= value`|`x = x * value`|Multiplies `x` by `value` `x /= value`|`x = x / value`|Divides `x` by `value` `x %= value`|`x = x % value`|Sets `x` to the remainder of `x / value` Example: ``` language = "Surge"; language += "Script"; // language now evaluates to "SurgeScript" number = 5; number += 2; // number now evaluates to 7 ``` Increment and decrement ----------------------- Increment and decrement operators should be used only on numeric variables. Expression|Meaning ----------|------- `x++`|Increments x by 1 and returns the old value of x `x--`|Decrements x by 1 and returns the old value of x `++x`|Increments x by 1 and returns the new value of x `--x`|Decrements x by 1 and returns the new value of x Example: ``` x = 1; // x is 1 y = x++; // y is 1 z = ++x; // z is 3 w = --x; // w is 2 t = --x; // t is 1 Console.print(x); // prints 1 ``` Chained expressions ------------------- You may chain assignment operations: ``` x = y = z = 1; ``` Commas ------ The comma operator takes two operands. It first evaluates the first operand and then discards the result. Next, it evaluates the second operand and then returns this result. The comma is the operator with the lowest precedence. ``` c = (1, 2); // Results in c = 2 a = 1, b = 2, c = 3; // Results in a = 1, b = 2 and c = 3 d = (c++, a); // Results in c = 4, d = 1 e = (++a, f = 2, 3); // Results in a = 2, e = 3, f = 2 ``` Other expressions ----------------- #### this The keyword `this` represents the object in which it appears. Example: ``` this.destroy(); // destroys this object ``` #### typeof The expression `typeof(expr)` (or simply `typeof expr`), is evaluated to a string corresponding to the type of `expr`. The possible types are: *number*, *string*, *boolean*, *object* or *null*. Example: ``` t = typeof 5; // t will hold the string "number" ``` #### timeout The expression `timeout(seconds)` is a handy feature of SurgeScript. It is evaluated to `true` if the object has been on the same state for the specified amount of time or more. It can only be used inside states. Example: ``` object "Application" { state "main" { if(timeout(2.0)) { Console.print("2 seconds have passed"); state = "done"; } } state "done" { } } ```surgescript-0.5.4/docs/tutorials/functions.md000066400000000000000000000140131354226561700214140ustar00rootroot00000000000000Functions ========= Introduction ------------ Functions are blocks of code that you can reuse throughout your program. They may receive input parameters and they always output something. The syntax is as follows: ``` fun function_name(param_1, param_2, param_3, ..., param_n) { // block of code // to be executed } ``` Functions may be associated to objects. Any function associated to an object may be used (called) by the object itself or by other objects. This means that functions are *public* (they are visible to the outside world). **Note:** functions must be defined after the states. Return statement ---------------- Use the `return` statement to stop executing the function and to return some value to the caller. Example: ``` // This function will return the double of input parameter x fun double(x) { return 2 * x; Console.print("This line will never be executed."); } ``` If no value is specified after the `return` keyword, the function will be stopped and its return value will be `null`. Additionally, if no `return` statement is found, then the return value will also be `null`. **Note**: an object state may also contain one or more `return` statements to stop the execution of its code. However, return values must not be specified in that context, since states do not return values. Simple example -------------- In the example below, we have an object called `Calculator` with two functions: `greet()` and `sum()`. `greet()` takes no input parameters and just greets the user. On the other hand, `sum()` takes two input parameters, `a` and `b`, and returns the sum `a + b`: ``` object "Calculator" { fun greet() { Console.print("Hello! I am a Calculator!"); } fun sum(a, b) { return a + b; } } ``` In function `sum()`, variables `a` and `b` hold the input data and are only visible inside the function. Now, let's create a program that uses this `Calculator`. Remember that the functions defined above can be called by any object, including `Application`: ``` object "Application" { calculator = spawn("Calculator"); state "main" { // greet the user calculator.greet(); // do some computation result = calculator.sum(5, 7); Console.print(result); // we're done! Application.exit(); } } ``` The output of the above program is: ``` Hello! I am a Calculator! 12 ``` Notice that the `Application` does not need to know *how* the functions of the `Calculator` are implemented. It just needs to know *what* they do. This means that you may change the implementation of the `Calculator` without changing the `Application`, and the end-result will stay the same. Recursive functions ------------------- In SurgeScript, a function is said to be **recursive** when it calls itself within its code. Recursion can be useful in many ways; namely, when you define a problem in terms of itself. In mathematics, the factorial of a non-negative integer number `n`, denoted as `n!`, is such an example: ``` n! = { n * (n-1)! if n > 1 { 1 otherwise ``` One interesting example of recursion that arises in computer science is called the *binary search* algorithm. Given a sorted [Array](/reference/array), the binary search finds the position of a target value without having to inspect the whole collection. In the example below, `bsearch()` is a recursive function: ``` object "Binary Search" { // Given an array sorted in ascending order, find() // finds the position of the target value in the array. // It returns its index, or -1 if the target is not found. fun find(array, value) { return bsearch(array, value, 0, array.length - 1); } // Performs a binary search in array[start..end] fun bsearch(array, value, start, end) { // get the middle point mid = start + Math.floor((end - start) / 2); // compare the middle point to the target value if(start > end) return -1; // target not found else if(value == array[mid]) return mid; // found the target value else if(value < array[mid]) return bsearch(array, value, start, mid - 1); else return bsearch(array, value, mid + 1, end); } } ``` Recursive functions must have at least one base case. A base case is a scenario that does not need recursion to solve the problem. In the factorial example, the base case is `n <= 1` (the factorial is 1). In the binary search example, the base case is `start > end`, meaning that the array is empty and the target value cannot be found, or `value == array[mid]`, meaning that the target value has been found at `mid`. A sage once said: *"to understand recursion, you must first understand recursion."* Constructors and destructors ---------------------------- In SurgeScript, constructors and destructors are special functions that are called whenever objects are created and destroyed, respectively. It's not mandatory to define them, but it may be useful to do so (you may want to set up things in your constructors, for example). Neither may receive any arguments (to set up objects with parameters, take a look at [chaining](/tutorials/advanced_features#chaining)). Let's take our `Calculator` again. In the following example, `constructor()` is called automatically whenever a `Calculator` object is created. Likewise, `destructor()` is called automatically when the object is destroyed. ``` object "Calculator" { fun constructor() { Console.print("Creating a Calculator..."); } fun destructor() { Console.print("Destroying a Calculator..."); } fun greet() { Console.print("Hello! I am a Calculator!"); } fun sum(a, b) { return a + b; } } ``` Now, if we run the `Application` of the previous section without any modification, the output of the program will be: ``` Creating a Calculator... Hello! I am a Calculator! 12 Destroying a Calculator... ``` Note that, for any object, its `constructor()` runs *before* its main state. surgescript-0.5.4/docs/tutorials/hello.md000066400000000000000000000010751354226561700205130ustar00rootroot00000000000000Hello, World! ============= SurgeScript creates automatically an object called **Application**. That object is defined by the user. Let's see how we can use that to make a simple program: ``` object "Application" { state "main" { Console.print("Hello, world!"); Application.exit(); } } ``` In SurgeScript, each object defines a state machine (more on that later). The initial state is called **main**. In the code just presented, we display a *Hello, world!* message and then exit the app. Now let's [test your scripts](/tutorials/testing). surgescript-0.5.4/docs/tutorials/loops.md000066400000000000000000000024461354226561700205470ustar00rootroot00000000000000Loops ===== While loops ----------- In a while loop, you execute a certain block of code while a condition is true. The syntax is as follows: ``` while(condition) { // block of code // to be executed } ``` The example below counts from 1 to 10: ``` i = 1; while(i <= 10) { Console.print(i); i = i + 1; } ``` For loops --------- A for loop is a more controlled repetition structure when compared to the while loop. For loops support an initialization command, a condition and an increment command. The syntax is as follows: ``` for(initialization; condition; increment) { // block of code // to be executed } ``` The code just displayed is equivalent to: ``` initialization; while(condition) { // block of code // to be executed increment; } ``` The example below counts from 1 to 10: ``` for(i = 1; i <= 10; i++) { Console.print(i); } ``` Foreach ------- Foreach loops are used to iterate throughout collections (such as Arrays). Basically: for each element `x` in the collection, do something with `x`. The syntax is as follows: ``` foreach(element in collection) { // block of code // to be executed } ``` The example below counts from 1 to 10: ``` collection = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; foreach(x in collection) { Console.print(x); } ``` surgescript-0.5.4/docs/tutorials/object_tree.md000066400000000000000000000053001354226561700216700ustar00rootroot00000000000000Object tree =========== Introduction ------------ In SurgeScript, objects have a hierarchical relationship. Suppose that object P *spawns* (or *instantiates*) object C. We say that object P is the *parent* of C. Similarly, object C is a *child* of P. An object may spawn many children. However, all objects have only one parent. This relationship between objects form a hierarchy (a tree). The Figure below shows an example: ![An object tree](/img/tree.png) In this example, Level is the parent of GameItem1 and GameItem2. Components A and B are children of GameItem1, but not of GameItem2. Level has two children and GameItem2 has zero. Finally, GameItem1, GameItem2, Component A and Component B are all *descendants* of Level. In SurgeScript, the root of the hierarchy is a predefined object called `System`. Its parent is itself. All other objects are descendants of `System`. Spawning objects ---------------- You can use `spawn()` to instantiate an object. Example: ``` object "Parent" { child = spawn("Child"); state "main" { } } object "Child" { state "main" { } } ``` Function `spawn()` may be invoked on objects other than the caller. In this case, the caller won't be the parent of the newly created object: ``` object "Parent" { child = spawn("Child"); grandChild = child.spawn("Child"); state "main" { } } ``` > **Automatic Garbage Collection** > > When you spawn an object, make sure you store a reference to it somewhere. > > If an object cannot be reached from the root (no reachable object has any references to it), it will be automatically destroyed by SurgeScript's built-in Garbage Collector. Destroying objects ------------------ Objects can be destroyed manually by calling `destroy()`. Whenever an object is destroyed, its children are destroyed as well. ``` object "Foo" { state "main" { Console.print("This object does nothing."); destroy(); } } ``` Traversing the hierarchy ------------------------ Relevant data about the object hierarchy can be obtained using the following properties and functions (find more on the [Object reference](/reference/object)): Function / property|Description -------------------|----------- `obj.parent` (read-only) | The parent object `obj.childCount` (read-only) | Number of immediate children `obj.child(name)` | Gets a child object named `name` `obj.findObject(name)` | Finds a descendant named `name` Example: ``` object "Parent" { child = spawn("Child"); otherChild = spawn("Child"); state "main" { Console.print("This object has " + this.childCount + " children."); destroy(); } } ``` The output is as follows: ``` This object has 2 children. ``` surgescript-0.5.4/docs/tutorials/objects.md000066400000000000000000000052111354226561700210350ustar00rootroot00000000000000Introduction to objects ======================= Introduction ------------ In SurgeScript, objects are units of code and data. Each object defines a finite state machine, a mathematical construct used to describe the behavior of in-game objects. > **Did you know?** > > Games implement what is called a game loop. In SurgeScript, the game loop is defined implicitly via state machines. State machines are one of the key features of SurgeScript. State machines -------------- A finite state machine is a mathematical abstraction composed of a finite number of **states** and by **transitions** between these states. Only one state can be active at any given time (we'll call it the **active state**). There must be one **initial state** (i.e., the first one to be active). A transition is a change of the active state that is triggered when a certain condition is met. As a concrete example, suppose that you want to create a door in your game. You, the developer, may open or close the door at will. But what is a door? We have just given *informal* description of the problem. However, we need to transform it in something more rigorous. Example: A door is an object with two states (see the Figure below): - Opened (initial state) - Closed ![State machine](../img/state-machine.png) From the Opened state, only one transition is possible: Close. Once the Close transition is called, the door will go to the Closed state. Conversely, from the Closed state, only one transition is available: Open. When the Open transition is executed, the door will return to the Opened state. Objects in SurgeScript ---------------------- In SurgeScript, each object has a name. Objects may have any number of states you'd like. The initial state is always called **main**. The syntax is as follows: ``` object "name of the object" { state "state name" { // code goes here } } ``` The following code shows an example of a door that opens and closes (it keep changing states) every 2 seconds: ``` object "Cosmic Door" { state "main" { // the object starts at the main state state = "opened"; // go to the opened state } state "opened" { if(timeout(2)) // if we have been on the opened state for 2+ seconds state = "closed"; // go to the closed state } state "closed" { if(timeout(2)) state = "opened"; } } ``` Notice how the code just shown defines states and transitions between these states. Each state contains its own code. **Note:** once a state is active, its code will be repeated (at every frame of the application) until the state changes or until the object is destroyed. surgescript-0.5.4/docs/tutorials/packages.md000066400000000000000000000100411354226561700211570ustar00rootroot00000000000000Packages ======== Introduction ------------ Packages are objects that allow you to extend the functionalities of the language. Once declared, they can be imported anywhere in the code. They can also be easily shared with others, so everyone benefits. *Available since:* SurgeScript 0.5.2 Basic example ------------- Suppose you want to extend the language by adding new routines related to string manipulation. These routines will be used frequently throughout your project, and you'd like easy access to them. This makes it perfect for implementing them as a package. We'll define an object called `StringUtils` with a `reverse()` function that reverses a string. We make the object a package by annotating it with `@Package`. Take a look at the example below: ``` // File: stringutils.ss @Package object "StringUtils" { fun reverse(str) { buf = ""; for(i = str.length - 1; i >= 0; i--) buf += str[i]; return buf; } } ``` When you annotate an object definition with `@Package`, SurgeScript will spawn an instance of such an object before spawning the `Application`. Additionally, the package object may be imported anywhere with the `using` keyword: ``` // File: app.ss using StringUtils; object "Application" { state "main" { str = StringUtils.reverse("alucard"); Console.print(str); // will print "dracula" exit(); } } ``` **Note:** it's recommended not to include any special characters in the name of your packages. In the example above, `Application` and `StringUtils` are located in two separate files. If you want to test them using the SurgeScript command line utility, pass both files as parameters: ``` surgescript package.ss app.ss ``` > **Spawning order** > > Although packages are spawned before the *Application* object, for the time being they are spawned in no particular order. You may not access a package from within the constructor of another package, as of now there is no dependency resolver implemented. Use the *main* state. **Note:** before SurgeScript 0.5.4, you would annotate the object with `@Plugin` instead. Package example --------------- Packages may aggregate many code units with different functionalities. This lets you separate your code in coherent, logical units and also helps you to distribute it. Suppose that user *Parrot*, the owner of *ParrotSoft*, created SurgeScript utilities related to string manipulation, matrix math and complex numbers. He decided to share his code as a single package called `ParrotSoft`. Since he implemented [getters](/tutorials/properties) for each of his utilities, his package provides easy access to all of them. Furthermore, he annotated his package with `@Package` (but **not** the individual utilities), so his package can be accessed anywhere. ``` // File: parrotsoft.ss @Package object "ParrotSoft" { public readonly Matrices = spawn("Parrot Matrices"); public readonly Complex = spawn("Parrot Complex"); public readonly StringUtils = spawn("Parrot StringUtils"); } ``` A user of the `ParrotSoft` package may import *Parrot*'s utilities simply by importing the package. Individual utilities may also be imported. The code below shows an example: ``` using ParrotSoft.Matrices.Matrix2; using ParrotSoft.Complex; using ParrotSoft; object "Application" { state "main" { identity = Matrix2([[1, 0], [0, 1]]); // 2x2 matrix z = Complex(2, 3); // 2 + 3i neon = ParrotSoft.StringUtils.reverse("noen"); exit(); } } ``` In the example above, writing `Complex` is equivalent to writing `ParrotSoft.Complex`, since we imported this utility with `using ParrotSoft.Complex`. Notice that `ParrotSoft` implements a getter for `Complex`. Additionally, `ParrotSoft` has been annotated with `@Package`, but `Complex` has **not**. This means that the statement `using Complex` will **not** yield the expected result. Since `Complex` is a part of `ParrotSoft`, it can only be accessed from it. Finally, since we haven't imported `StringUtils` explicitly, we type `ParrotSoft.StringUtils` to access it. surgescript-0.5.4/docs/tutorials/properties.md000066400000000000000000000057311354226561700216070ustar00rootroot00000000000000Properties ========== Introduction ------------ In SurgeScript, [object-level variables](/tutorials/variables) are private. This means that these variables can only be accessed from the objects that defined them. However, SurgeScript features a *syntactic sugar* that allows objects to read and/or modify other objects' data in a way that looks like dealing with regular (public) variables. We'll call these "variables" **properties**. Defining properties ------------------- Suppose you have an object called `Animal` with an object-level variable called `sound` and a function named `speak()`: ``` object "Animal" { sound = "meow!"; fun speak() { Console.print(sound); } } ``` This object can only speak *meow!* Let's see: ``` object "Application" { animal = spawn("Animal"); state "main" { animal.speak(); } } ``` Run this script and you'll see: ``` meow! meow! meow! meow! ... ``` What if an external object could modify the sound of the animal? Trying to access `animal.sound` externally will trigger an error, unless you add the `public` specifier to your variable: ``` object "Animal" { public sound = "meow!"; fun speak() { Console.print(sound); } } ``` Now, external objects may access (read and write) the `sound` variable (or *property*): ``` object "Application" { animal = spawn("Animal"); state "main" { animal.sound = "woof!"; animal.speak(); } } ``` Since SurgeScript 0.5.3, you may add the `readonly` modifier after the `public` specifier. Doing so disallows the modification of the property by external objects: ``` object "Animal" { public readonly sound = "meow!"; fun speak() { Console.print(sound); } } object "Application" { animal = spawn("Animal"); state "main" { //animal.sound = "woof!"; // will trigger an error //Console.print(animal.sound); // this is allowed animal.speak(); } } ``` Using getters and setters ------------------------- In reality, however, there are no public variables in SurgeScript. Behind the scenes, the language defines special functions called *getters* and *setters* that will perform the read/write logic for you. Rather than using `public`, you may want to define the getters and the setters yourself: ``` object "Animal" { sound = "meow!"; fun speak() { Console.print(sound); } fun set_sound(value) { sound = value; } fun get_sound() { return sound; } } ``` This code is semantically the same as setting `sound` to be `public`; this is just a bit longer. An advantage of defining getters and setters by yourself is that you control how the data passes through the objects. You may want to validate the data before changing the internal variables of the objects. Example: ``` // lives must not be a negative number fun set_lives(value) { if(value >= 0) lives = value; else lives = 0; } ```surgescript-0.5.4/docs/tutorials/tags.md000066400000000000000000000027751354226561700203560ustar00rootroot00000000000000Tags ==== You may tag objects with as many tags as you want. Tags are a way of attributing categories to objects. Syntax ------ Tags should be placed right after the object name. Example: ``` object "Horse" is "animal", "vehicle" { state "main" { } } object "Cat" is "animal" { state "main" { } } object "Car" is "vehicle" { state "main" { } } ``` Using tags ---------- You may check if an object has a particular tag with the `hasTag()` function (see the [Object reference](/reference/object#hastag) for more details): ``` object "Application" { horse = spawn("Horse"); cat = spawn("Cat"); car = spawn("Car"); state "main" { // Horse is both an animal and a vehicle Console.print(horse.hasTag("animal")); // true Console.print(horse.hasTag("vehicle")); // true // Cat is an animal, but not a vehicle Console.print(cat.hasTag("animal")); // true Console.print(cat.hasTag("vehicle")); // false // Car is a vehicle, but not an animal Console.print(car.hasTag("animal")); // false Console.print(car.hasTag("vehicle")); // true } } ``` Emoticons --------- You may also tag objects with emoticons. The syntax is as follows: ``` object "Good Day" is "happy", "sunny" :) { ... } object "Good Night" is <3 { ... } ``` The following emoticons are available for your pleasure: Emoticon|Meaning --------|------- `$_$` | Feelin' Rich `<3` | Lovin' it `:)` | Happy `:(` | Sad `:P` | D'oh surgescript-0.5.4/docs/tutorials/testing.md000066400000000000000000000037141354226561700210670ustar00rootroot00000000000000Testing your scripts ==================== There are two main ways to test your scripts: - using the [Open Surge](#using-open-surge) game engine; - using the [SurgeScript standalone runtime](#using-the-standalone-version) (i.e., the version without a game engine). Using Open Surge ---------------- To test a script in Open Surge, place it on the *scripts/* folder and start the engine. Your test script must include an object called *Application*. Make sure to remove the script after you're done with the testing. As an example, save the following script to *scripts/hello.ss* and start the engine: ``` // hello.ss: test script // Please remove this file after you're done object "Application" { state "main" { Console.print("Hello, world!"); state = "done"; } state "done" { } } ``` You should see the *Hello, world!* message as a result. **Linux users:** when using a system-wide installation, you may place your scripts on *~/.local/share/opensurge2d/opensurge/scripts/* (i.e., *$XDG_DATA_HOME/opensurge2d/opensurge/scripts/*). Ready to proceed? Let's go to [Introduction to objects](/tutorials/objects)! Using the standalone version ---------------------------- If you've downloaded the standalone version of the language: - First of all, save the following script to a file named *hello.ss*. For testing purposes, you may place the file on the same directory as the surgescript executable. ``` // hello.ss: test script object "Application" { state "main" { Console.print("Hello, world!"); Application.exit(); } } ``` - Then, open up a Terminal and type: ``` cd /path/to/surgescript ./surgescript hello.ss ``` - If you're using Microsoft Windows, open up a Command Prompt and type: ``` cd C:\path\to\surgescript surgescript.exe hello.ss ``` - You should see the output of the script as a result: ``` Hello, world! ``` To begin our learning adventure, let's go to [Introduction to objects](/tutorials/objects). surgescript-0.5.4/docs/tutorials/variables.md000066400000000000000000000111401354226561700213520ustar00rootroot00000000000000Variables ========= Introduction ------------ Variables are used to store data. SurgeScript features five basic types: number, string, boolean, null and object. Variables can also point to more complex data structures (such as arrays and dictionaries), but these are always objects. Types ----- ### Basic types Type|Description|Examples ----|-----------|------- Number|A floating-point number|`1`, `2`, `-3`, `3.14159` String|Some text|`"Hello, world!"`, `'single-quoted'` Boolean|True or false|`true`, `false` Object|Reference to an object|`Application`, `this`, `[ ]` Null|An empty value|`null` As an example, the script below features an object with 3 variables that may be accessed throughout the whole object: ``` object "Application" { name = "Surge the Rabbit"; age = 23; underage = false; state "main" { Console.print(name); // Surge the Rabbit Console.print(age); // 23 } } ``` ### Abstract types #### Arrays Arrays are collections of values that you may access using a zero-based index. Example: ``` object "Application" { // The 'characters' array holds 3 strings characters = [ "Surge", "Neon", "Charge" ]; state "main" { // who are the characters? Console.print("The characters are:"); Console.print(characters[0]); // will print Surge Console.print(characters[1]); // will print Neon Console.print(characters[2]); // will print Charge // how many characters? Console.print("Number of characters:"); Console.print(characters.length); // will print 3 } } ``` Arrays have many interesting properties and operations that you can see in the [Language Reference](/reference/array). #### Dictionaries Dictionaries are collections of key-value pairs. In some programming languages, these are known as associative arrays or hash tables. Here's the syntax: ``` object "Application" { // A dictionary that stores the weight (kg) of each character weight = { "Surge": 35, "Neon": 30, "Charge": 37.5, "Gimacian": 70 }; // print the weights state "main" { Console.print("Surge weighs " + weight["Surge"] + " kg."); Console.print("Neon weighs " + weight["Neon"] + " kg."); Console.print("Charge weighs " + weight["Charge"] + " kg."); Console.print("Gimacian weighs " + weight["Gimacian"] + " kg."); } } ``` Dictionaries have many interesting properties and operations that you can see in the [Language Reference](/reference/dictionary). > **Cautionary note** > > Whenever you define an array or a dictionary, you spawn a new object. One is advised to **NOT** define arrays or dictionaries within states, because the code within states run continuously. Therefore, new objects will be created at every frame, not just once. ``` object "Application" { // arr will be instantiated once the object is created arr = [ 1, 2, 3 ]; // RIGHT! state "main" { // err is instantiated at every frame of the application, // thus memory is wasted with duplicate objects err = [ "don't", "do", "this" ]; // AVOID! } } ``` Casting ------- You can use type-casting to change the type of values from number to string, from string to number, from boolean to string and so on. Casting values is as simple as calling `Number(value)`, `String(value)` or `Boolean(value)`. Example: ``` // Convert string to number str = "2"; val = Number(str); // val is 2 // Convert number to string val = 123; str = String(val); // str is "123" ``` When converting an object to a string, SurgeScript will implicitly call `object.toString()`. Scoping ------- Variables that are defined before any state or function are *object-level* variables. They can be accessed throughout the whole object. On the other hand, variables used exclusively inside states or functions are *local variables*. This means that their accessibility and lifespan is restricted to their own locus of code. ``` object "Scope Test" { name = "Surge the Rabbit"; // object-level variable state "main" { weight = 35; // local variable state = "print-data"; // change the state } state "print-data" { Console.print(name); // Surge the Rabbit Console.print(weight); // ERROR: weight is not defined } } ``` Furthermore, *object-level* variables may only be accessed within the object. Other objects may not read or write the variables directly (in other words, variables are *private* to the objects). You need to define [functions](/tutorials/functions) or [getters and setters](/tutorials/properties) to accomplish that. surgescript-0.5.4/examples/000077500000000000000000000000001354226561700157235ustar00rootroot00000000000000surgescript-0.5.4/examples/alfred_the_npc.ss000066400000000000000000000043361354226561700212350ustar00rootroot00000000000000// // alfred_the_npc.ss // Talk to Alfred, the NPC. // Copyright 2017 Alexandre Martins // object "Alfred" { // Alfred will ask a series of questions and // answer according to the answers of the user. state "main" { say("Hey! I'm Alfred, the NPC. Let's talk!"); state = "question 1"; } // --- Question 1: Pizza --- state "question 1" { x = ask("I enjoy pizza a lot. Do you?"); if(x == "y") state = "question 1 - yes"; else if(x == "n") state = "question 1 - no"; } state "question 1 - yes" { say("Cool! Who doesn't?"); state = "question 2"; } state "question 1 - no" { say("Well, too much pizza is bad for you anyway."); state = "question 2"; } // --- Question 2: Coke --- state "question 2" { x = ask("How about coke? Do you like it?"); if(x == "y") state = "question 2 - yes"; else if(x == "n") state = "question 2 - no"; } state "question 2 - yes" { say("Yikes! Gives me hickups!"); state = "question 3"; } state "question 2 - no" { say("Too bad!"); state = "question 3"; } // --- Question 3: Your name --- state "question 3" { say("What's your name, pal?"); name = Console.readline(); if(name != "") { say("It's been a pleasure talking to you, " + name); Application.exit(); } } // say() // Say something! fun say(message) { Console.print(message); } // ask() // Asks a question on the console. // Returns "y" (yes), "n" (no) or "" (no answer) fun ask(question) { Console.write(question); Console.write(" (y/n) "); answer = Console.readline(); if(answer == "y" || answer == "Y" || answer == "yes" || answer == "YES") return "y"; else if(answer == "n" || answer == "N" || answer == "no" || answer == "NO") return "n"; else return ""; } } object "Application" { alfred = spawn("Alfred"); // do nothing. state "main" { } }surgescript-0.5.4/examples/arguments.ss000066400000000000000000000012501354226561700202750ustar00rootroot00000000000000// // arguments.ss // Print the command line arguments // Copyright 2018 Alexandre Martins // object "Application" { state "main" { // this app will print the command line arguments Console.print("Command line arguments: " + Application.args.length); // using foreach Console.print("Using foreach:"); foreach(argument in Application.args) Console.print(argument); // using for loops Console.print("Using for loops:"); for(i = 0; i < Application.args.length; i++) Console.print(Application.args[i]); // done! Application.exit(); } } surgescript-0.5.4/examples/array.ss000066400000000000000000000014041354226561700174070ustar00rootroot00000000000000// // array.ss // Arrays in SurgeScript // Copyright 2017 Alexandre Martins // // The following program will print all the elements of the array // using different pieces of code object "Application" { array = [1, 2, 3, 4, 5]; state "main" { Console.print("The array has " + array.length + " elements."); // Loop with for for(i = 0; i < array.length; i++) Console.print(array[i]); // Loop with foreach foreach(element in array) Console.print(element); // Loop with iterators it = array.iterator(); while(it.hasNext()) { element = it.next(); Console.print(element); } Application.exit(); } }surgescript-0.5.4/examples/component.ss000066400000000000000000000015501354226561700202750ustar00rootroot00000000000000// // component.ss // Basic Component usage // Copyright 2018 Alexandre Martins // // Object Parrot has two components: // Blabber and Time Bomb. object "Parrot" { blabber = spawn("Blabber"); bomb = spawn("Time Bomb"); state "main" { } } object "Blabber" { state "main" { if(timeout(2)) // blab every 2 seconds state = "blab"; } state "blab" { Console.print("Hello!"); state = "main"; } } object "Time Bomb" { state "main" { if(timeout(15)) // explode after 15 seconds state = "explode"; } state "explode" { Console.print("BOOOM!"); parent.destroy(); // destroy the parent object Application.exit(); } } object "Application" { parrot = spawn("Parrot"); state "main" { } }surgescript-0.5.4/examples/count_to_10.ss000066400000000000000000000005041354226561700204230ustar00rootroot00000000000000// // count_to_10.ss // Count to 10 SurgeScript // Copyright 2017 Alexandre Martins // object "Application" { state "main" { // x will go from 1 to 10 for(x = 1; x <= 10; x++) { Console.print(x); } // done! Application.exit(); } }surgescript-0.5.4/examples/date.ss000066400000000000000000000011241354226561700172050ustar00rootroot00000000000000// // date.ss // Current date in SurgeScript // Copyright 2018 Alexandre Martins // // What day is today? object "Application" { nameOf = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ]; // show the day state "main" { weekday = nameOf[Date.weekday]; today = Date.year + "-" + f(Date.month) + "-" + f(Date.day); Console.print("Today is " + today + ", a " + weekday + "!"); Application.exit(); } // add a leading zero fun f(x) { return ((x >= 10) ? "" : "0") + x; } }surgescript-0.5.4/examples/dictionary.ss000066400000000000000000000022751354226561700204450ustar00rootroot00000000000000// // dictionary.ss // How to use the Dictionary in SurgeScript // Copyright 2017-2018 Alexandre Martins // object "Application" { // a Dictionary is a set of (key, value) pairs weight = { "Surge": 35, "Neon": 20, "Charge": 37.5, "Gimacian": 70 }; // main state state "main" { // change some weights ("weight" as in everyday use, that is) weight["Neon"] = 25; weight["Charge"] += 3; // print the weights Console.print("Surge weighs " + weight["Surge"] + " kg."); Console.print("Neon weighs " + weight["Neon"] + " kg."); Console.print("Charge weighs " + weight["Charge"] + " kg."); Console.print("Gimacian weighs " + weight["Gimacian"] + " kg."); // sum up totalWeight = computeTotalWeight(); Console.print("Together, they weigh a total of " + totalWeight + " kg."); // done! Application.exit(); } // this function will add all weights stored in the Dictionary. fun computeTotalWeight() { sum = 0; foreach(entry in weight) sum += entry.value; return sum; } }surgescript-0.5.4/examples/factory.ss000066400000000000000000000012061354226561700177400ustar00rootroot00000000000000// // factory.ss // Factory example // Copyright 2018 Alexandre Martins // using Greeter; // import the factory object "Application" { state "main" { // This will print: // Hello, alex! g = Greeter("alex"); g.greet(); exit(); } } object "Greeting" { public name = "anon"; fun greet() { Console.print("Hello, " + name + "!"); } } @Package object "Greeter" { // Greeter is a factory. It spawns and configures // a Greeting object for you. Being a package, // Greeter can be imported and used anywhere. fun call(name) { g = spawn("Greeting"); g.name = name; return g; } }surgescript-0.5.4/examples/garbage_collector.ss000066400000000000000000000022441354226561700217320ustar00rootroot00000000000000// // garbage_collector.ss // Garbage Collector test // Copyright 2018 Alexandre Martins // object "Application" { count = 0; arr = null; state "main" { // this will allocate a lot of phony arrays // the Garbage Collector should release them phonyAlloc(); // print the garbage stats every once in a while if(timeout(0.5)) { Console.print("\nObjects before release: " + System.objectCount); System.gc.collect(); Console.print("Released objects: " + System.gc.objectCount); state = "wait"; } } state "wait" { if(timeout(0.5)) state = "print"; } state "print" { Console.print("Objects after release: " + System.objectCount); if(++count >= 20) Application.exit(); state = "main"; } fun constructor() { // intro text Console.print("Garbage Collector Test"); // disable automatic garbage collection System.gc.interval = Math.infinity; } fun phonyAlloc() { if(count < 15) arr = []; } }surgescript-0.5.4/examples/getters_setters.ss000066400000000000000000000023201354226561700215150ustar00rootroot00000000000000// // getters_setters.ss // getters & setters in SurgeScript // Copyright 2017 Alexandre Martins // object "Application" { obj = spawn("Skull"); state "main" { hello(); showStatus(); obj.eyes = 4; // the same as obj.set_eyes(4) //obj.name = "master"; // will crash; no setter defined. Try uncommenting this. showStatus(); Application.exit(); } fun hello() { // typing obj.name is the same as obj.get_name() Console.print("Hello, " + obj.name); } fun showStatus() { Console.print("Skull " + obj.name + " has " + obj.eyes + " eyes."); } } object "Skull" { name = "kid"; eyes = 2; state "main" { } // get_eyes() // Note: typing obj.eyes yields the same as obj.get_eyes() fun get_eyes() { return eyes; } // set_eyes() // Syntactic sugar to obj.eyes = value (will call obj.set_eyes(value) behind the scenes) fun set_eyes(value) { eyes = value; } // get_name() // obj.name will return the [private] variable name. Note that we did not define a setter. fun get_name() { return name; } }surgescript-0.5.4/examples/hello.ss000066400000000000000000000003521354226561700173750ustar00rootroot00000000000000// // hello.ss // Hello World in SurgeScript // Copyright 2017 Alexandre Martins // object "Application" { state "main" { Console.print("Hello, world!"); Application.exit(); } }surgescript-0.5.4/examples/package.ss000066400000000000000000000013271354226561700176700ustar00rootroot00000000000000// // package.ss // Package example // Copyright 2018, 2019 Alexandre Martins // // import the package using StringUtils; // An application that uses the imported package object "Application" { str = "alucard"; state "main" { Console.print("Reverse a string:"); Console.print(str); Console.print(StringUtils.reverse(str)); Application.exit(); } } // Packages are annotated with "@Package" @Package object "StringUtils" { fun constructor() { Console.print("Spawned StringUtils."); } fun reverse(str) { buf = ""; for(i = str.length - 1; i >= 0; i--) buf += str[i]; return buf; } }surgescript-0.5.4/examples/performance.ss000066400000000000000000000032231354226561700205730ustar00rootroot00000000000000// // performance.ss // Performance measurement in SurgeScript // Copyright 2018 Alexandre Martins // // // A functor is an object that behaves like a function. // SurgeScript has a syntactic sugar that allows an object to be "called" like a function. // Example: given an object "obj", writing // x = obj(param); // is the same as writing // x = obj.call(param); // // Main Application object "Application" { benchmark = spawn("Benchmark"); fib = spawn("Fibonacci"); state "main" { t = benchmark(fib(1)); t += benchmark(fib(5)); t += benchmark(fib(10)); t += benchmark(fib(25)); t += benchmark(fib(32)); Console.print("Total time: " + t + " seconds."); Application.exit(); } } // This object measures the performance of functor f object "Benchmark" { fun call(f) { Console.write("Computing " + f + " = "); start = Time.now; result = f(); elapsed = Time.now - start; Console.print(result + " \t\t done in " + elapsed + " seconds."); return elapsed; } } // This functor computes the Fibonacci sequence using an exponential algorithm object "ExponentialFibonacci" { public n = 1; fun call() { return fib(n); } fun fib(n) { if(n > 2) return fib(n-1) + fib(n-2); else return 1; } fun toString() { return "ExpFib(" + n + ")"; } } // This object generates a Fibonacci functor object "Fibonacci" { fun call(n) { fib = spawn("ExponentialFibonacci"); fib.n = n; return fib; } } surgescript-0.5.4/examples/sort_array.ss000066400000000000000000000027251354226561700204650ustar00rootroot00000000000000// // sort_array.ss // Sorting arrays in SurgeScript // Copyright 2017 Alexandre Martins // object "Application" { arr = [3, 7, 1, 5, 9, 2, 4, 6, 8, 0]; state "main" { Console.print("Original array:"); printNumbers(); Console.print("Sorting in ascending order..."); arr.sort(null); printNumbers(); Console.print("Sorting in descending order..."); arr.reverse(); printNumbers(); Console.print("Sorting in custom order (odds first)..."); arr.sort(spawn("SortStrategy.OddsFirst")); printNumbers(); Application.exit(); } fun printNumbers() { str = ""; for(i = 0; i < arr.length; i++) str += arr[i] + " "; Console.print(str); } } // A custom sorting strategy that puts odd numbers first object "SortStrategy.OddsFirst" { // // The call() method compares two numbers. // // call(a, b) will return: // -1 if a should come BEFORE b // 1 if a should come AFTER b // 0 if a and b share the same relative order // fun call(a, b) { aIsOdd = (Math.mod(a, 2) != 0); bIsOdd = (Math.mod(b, 2) != 0); if(aIsOdd && !bIsOdd) return -1; else if(!aIsOdd && bIsOdd) return 1; else if(a < b) return -1; else if(a > b) return 1; else return 0; } } surgescript-0.5.4/examples/tags.ss000066400000000000000000000012621354226561700172310ustar00rootroot00000000000000// // tags.ss // Tags in SurgeScript // Copyright 2017-2018 Alexandre Martins // object "Application" { banana = spawn("Banana"); coin = spawn("Coin"); state "main" { Console.print("Welcome!"); showStatus(banana); showStatus(coin); Application.exit(); } fun showStatus(obj) { if(obj.hasTag("fruit")) Console.print("Object " + obj.__name + " is a fruit."); else Console.print("Object " + obj.__name + " is not a fruit."); } } object "Banana" is "pickup", "fruit" { state "main" { } } object "Coin" is "pickup" { state "main" { } }surgescript-0.5.4/examples/timeout.ss000066400000000000000000000012611354226561700177600ustar00rootroot00000000000000// // timeout.ss // Timeout in SurgeScript // Copyright 2017 Alexandre Martins // object "Application" { state "main" { Console.print("Now on the main state. Please wait 4 seconds..."); state = "wait1"; } state "wait1" { if(timeout(4.0)) // will wait 4 seconds to change the state state = "cool"; } state "cool" { Console.print("Cool! Now wait for more 8 seconds..."); state = "wait2"; } state "wait2" { if(timeout(8.0)) state = "done"; } state "done" { Console.print("You're done!"); Application.exit(); } }surgescript-0.5.4/examples/type_a_number.ss000066400000000000000000000014031354226561700211210ustar00rootroot00000000000000// // type_a_number.ss // Type a number plaything // Copyright 2017 Alexandre Martins // object "Application" { number = 0; // we declare the variable "number" here, so it // will be accessible throughout the whole object // the Application will be locked in state "main", and will // only leave it if the user types a number between 1 and 9 state "main" { Console.write("Type a number between 1 and 9: "); number = Number(Console.readline()); if(number >= 1 && number <= 9) state = "done"; } // display the typed number and exit the app state "done" { Console.print("Congratulations! You typed " + number); Application.exit(); } }surgescript-0.5.4/examples/unit_testing.ss000066400000000000000000000505101354226561700210070ustar00rootroot00000000000000// // unit_testing.ss // A Unit Testing Script for SurgeScript // Copyright (C) 2017-2018 Alexandre Martins // object "Application" { test = spawn("SurgeScript Test"); state "main" { test.string(); test.number(); test.boolean(); test.objects(); test.system(); test.functor(); test.getset(); test.array(); test.dictionary(); exit(); } } object "SurgeScript Test" is "test" { public message = "Amazing!"; value = null; failed = 0; tested = 0; totalFailed = 0; totalTested = 0; state "main" { } fun string() { begin("String"); test("alexandre".length == 9) || fail(1); test("alexandre".substr(0, 3) == "ale") || fail(2); test("alexandre".indexOf("ale") == 0) || fail(3); test("alexandre".indexOf("e") == 2) || fail(4); test("alexandre".indexOf("z") < 0) || fail(5); test("ale" + "xandre" == "ale".concat("xandre")) || fail(6); test("alê".length == 3) || fail(7); test(Number("37") == 37) || fail(8); test("çáàê€".length == 5) || fail(9); test(!"") || fail(10); test(("\n" + "\n").length == 2) || fail(11); test((y = "ale", y += "xandre").length == 9) || fail(12); test("alê\n"[2] == "ê") || fail(13); test("abc"[0] = "b") || fail(14); test((y = "abc", y[0] = "b", y == "abc")) || fail(15); test((y = "alê", y.substr(0, 1) == "a" && y.substr(2, 1) == "ê")) || fail(16); test("hello!") || fail(17); test(typeof "string" == "string") || fail(18); test(2 + "3" == "23") || fail(19); test("2" + 3 == "23") || fail(20); test("test".substr(2, 0) == "") || fail(21); test("test".substr(-1, 9999) == "t") || fail(22); test("test".substr(-1, 1) == "t") || fail(23); test("rgba"[-1] == "") || fail(24); test("rgba"[4] == "") || fail(25); test((typeof "string"[2])[2] == (typeof "string")[2]) || fail(26); test(typeof "number"[2] != (typeof "number")[2]) || fail(27); test(typeof "number"[2] == typeof("number"[2])) || fail(28); test((1 == 2 ? "yes" : "no")[1] == "o") || fail(29); test((1 != 2 ? "yes" : "no")[1] != "o") || fail(30); test("oi" === "oi") || fail(31); test("sim" !== "nao") || fail(32); test("" + this == this.toString()) || fail(33); test(toString() + 2 === this + "" + 2) || fail(34); test(toString().equals(this.toString())) || fail(35); test("".equals("") && !"a".equals("b")) || fail(36); test("23".equals("2" + "3") && !"23".equals(23)) || fail(37); test((typeof this).equals("object")) || fail(38); test("Surge, Neon and Charge".replace("Surge", "Gimacian") == "Gimacian, Neon and Charge") || fail(39); test("Surge, Neon and Charge".replace("Neon", "Gimacian") == "Surge, Gimacian and Charge") || fail(40); test("Surge, Neon and Charge".replace("Charge", "Gimacian") == "Surge, Neon and Gimacian") || fail(41); test("Surge, Neon and Charge".replace("", "Gimacian") == "Surge, Neon and Charge") || fail(42); test("Surge, Neon and Charge".replace("Gimacian", "") == "Surge, Neon and Charge") || fail(43); test("SurgeScript".toLowerCase() == "surgescript") || fail(44); test("SurgeScript".toUpperCase() == "SURGESCRIPT") || fail(45); test("1" !== 1) || fail(46); test("0" !== null) || fail(47); test(null === null) || fail(48); test(0 !== "0" && 0 == "0") || fail(49); test(state == "main") || fail(50); test(state != null) || fail(51); test("test".substr(4, 1) == "" && "test".substr(-1, 1) == "t") || fail(52); test("test".substr(3, 50) == "t") || fail(53); end(); } fun number() { begin("Number"); test(1 == 1) || fail(1); test(2 + 2 == 4) || fail(2); test((3 * 3).toString() == "9") || fail(3); test(Number(4.toString()) == 4.valueOf()) || fail(4); test(Number(5 * "25") == 625 / 5) || fail(5); test(0 == -0) || fail(6); test(-(-(-1)) * -1 == +1) || fail(7); test(.5 == 0.5) || fail(8); test(.5 == 1/2) || fail(9); test(-.5 == 1/-2) || fail(10); test(1 * 2 + 3 == 5) || fail(11); test(1+1*2 != (1+1)*2) || fail(12); test(0 < 1) || fail(13); test(0 <= 0) || fail(14); test(0 >= 0) || fail(15); test(1 > 0) || fail(16); test(5*7 >= 7*5) || fail(17); test(5*7 <= 7*5) || fail(18); test((8 - 7) * (8 - 7) == 8*8 - 2*8*7 + 7*7) || fail(19); test((5 + 25) * (5 + 25) == 5*5 + 2*5*25 + 25*25) || fail(20); test(typeof 5 == "number") || fail(21); test(typeof(5 + 5) == "number") || fail(22); test("2" != 3) || fail(23); test("2" == 2) || fail(24); test("2" !== 2) || fail(25); test(2 !== 3) || fail(26); test(1 === 1) || fail(27); test(1.equals(1) && !2.equals("2")) || fail(28); test(5 % 3 == 2) || fail(29); test(-5 % 3 == -2) || fail(30); test(5 % -3 == 2) || fail(31); test(-5 % -3 == -2) || fail(32); test(0 % 1 == 0) || fail(33); test(-0 % 1 == 0) || fail(34); test((5 % 0).isNaN()) || fail(35); test((5 % Math.NaN).isNaN()) || fail(36); test((Math.infinity % 2).isNaN()) || fail(37); test((-5 % Math.infinity).equals(-5)) || fail(38); test(5 + 5 % 3 == 7) || fail(39); test(5 + 5 % -3 * -2 == 1) || fail(40); test((1 == null) === false) || fail(41); test((1 === null) === false) || fail(42); test((1 == 2) === false) || fail(43); test((1 === 2) === false) || fail(44); test((1 != null) === true) || fail(45); test((1 !== null) === true) || fail(46); test((1 != 2) === true) || fail(47); test((1 !== 2) === true) || fail(48); test(1 < Math.infinity) || fail(49); test(9999 <= Math.infinity) || fail(50); test(-1 > -Math.infinity) || fail(51); test(-9999 >= -Math.infinity) || fail(52); test(Math.pi != Math.infinity) || fail(53); test(1 < 2 * Math.infinity) || fail(54); test(1 > -2 * Math.infinity) || fail(55); test((x=0)==0 && -0==(y=+0) && !((x+y)!=0)) || fail(56); test((x=0)===0 && -0===(y=+0) && !((x+y)!==0)) || fail(57); end(); } fun boolean() { begin("Boolean"); test(true) || fail(1); test(!false) || fail(2); test(false == null) || fail(3); test((1 == 1).toString() == "true") || fail(4); test(!!!!!true == !!false) || fail(5); test(false == 0) || fail(6); test(1 == true) || fail(7); test(false != true) || fail(8); test(!!"hi" == true) || fail(9); test(true + true == 2) || fail(10); test(typeof true == "boolean") || fail(11); test(typeof true == typeof false) || fail(12); test(true && true === true) || fail(13); test(true && false === false) || fail(14); test(false || true === true) || fail(15); test(false || false === false) || fail(16); test(false && true || true === true) || fail(17); test((false && (true || true)) === false) || fail(18); test((!true && !false || !false) === true) || fail(19); test((!true && (!false || !false)) === false) || fail(20); test((!true && !(false && false)) === false) || fail(21); test((!true && !false) === !(true || false)) || fail(22); test((!true && !!false) === !(true || !false)) || fail(23); test(!true === false) || fail(24); test(true === !false) || fail(25); test(!(true != false) === (true == false)) || fail(26); test(true + true == 2 * true) || fail(27); test(1 + true == true + 1) || fail(28); test(true + false == true) || fail(29); test(true + 2 == !false + 2) || fail(30); test(true + true == !false + true) || fail(31); test(true + !!!false == !false + true) || fail(32); test(true.equals(!false) && (!true).equals(false)) || fail(33); test(!(true.equals(true && !(true.equals(true))))) || fail(34); end(); } fun objects() { begin("Object"); test(typeof this == "object") || fail(1); test(this.__name == "SurgeScript Test") || fail(2); test(Application != null && Application.__name == "Application") || fail(3); test(this != Application) || fail(4); test(this.toString() == toString()) || fail(5); test(this.hasFunction("objects")) || fail(6); test(!this.hasFunction("nope")) || fail(7); test(findObject("nope") == null) || fail(8); test((c = spawn("Boolean"), c != null && child("Boolean") == c)) || fail(9); test((d = spawn("Number"), d != null && d == findObject("Number"))) || fail(10); test(typeof null == "null") || fail(11); test(!this.equals(Application) && this.equals(this)) || fail(12); test(null !== this) || fail(13); test(null === this.child("foo") && null == this.child("foo")) || fail(14); test(this != null) || fail(15); test((this == null) === false) || fail(16); test(null == null && null === null) || fail(17); test(!this.hasTag("noTag")) || fail(18); test(this.hasTag("test")) || fail(19); test(System.tags.select("test").indexOf(this.__name) >= 0) || fail(20); test(System.tags.select("noTag").length == 0) || fail(21); test(System.tags.list().indexOf("test") >= 0) || fail(22); end(); } fun system() { begin("System objects"); test(Application) || fail(1); test(Application.__name == "Application") || fail(2); test(Application.__name != String.__name) || fail(3); test((Application = "foo", Application != "foo")) || fail(4); // read-only test("foo" != String) || fail(5); test(String.__name == "String") || fail(6); test(Number.__name == "Number") || fail(7); test(Boolean.__name == "Boolean") || fail(8); test(String = null || String) || fail(9); test(String.get_length("test") == 4) || fail(10); test(String("test") == "test") || fail(11); test(Number(4) == 4) || fail(12); test(Number("4.3") == 4.3) || fail(13); test(String(5) == "5") || fail(14); test(Boolean(true && false) == false) || fail(15); test(String.destroy() == null && String.__name) || fail(16); end(); } fun functor() { begin("Function objects"); test(this(5) == 5) || fail(1); test(this(this) == this) || fail(2); test(this(this)(5) == 5) || fail(3); test(this(7) == 7) || fail(4); test((I = this, I)(1) == 1) || fail(5); test(I("ale") == "ale") || fail(6); test(this["this"]("ale") == "ale") || fail(7); test(this(this)["this"](7) == 7) || fail(8); test(this(this)["this"] == this) || fail(9); test(this(this)["this"](this)["value"] == value) || fail(10); test(this["this"]["value"] == value) || fail(11); test(this(this)(7) == this.call(this).call(7)) || fail(12); end(); } fun getset() { begin("Getters and setters"); test(this["this"] == this) || fail(1); test(this[this] != this) || fail(2); test(this["value"] == value) || fail(3); test((this["value"] = 5, this["value"]) == 5) || fail(4); test((this["value"] += 1, this["value"]) == 6) || fail(5); test((this["value"]++, this["value"]) == 7) || fail(6); test(this["value"]++ == 7) || fail(7); test(this["value"]-- == 8) || fail(8); test(this(this)["this"](this)["this"]["this"]["value"] == value) || fail(9); test(this["value"] && this.get("value")) || fail(10); test(value == this["value"]) || fail(11); test(this["self"]["property"] == this["property"]) || fail(12); test(this.value == value) || fail(13); test((this.value = 5, value == 5)) || fail(14); test((this.value = 'b') && value == 'b') || fail(15); test(this.self == this && this.self == get_self()) || fail(16); test(this.self["property"] == this["property"]) || fail(17); test((this.self["value"] = 7, value == 7)) || fail(18); test(this.self.value++ == 7 && value == 8) || fail(19); test((this.self.self.self["this"].self.value--, this.value == 7)) || fail(20); test((this.self["value"]++) && this.get_value() == 8) || fail(21); test((this.set_value(this.get_value() + 1), this.value == 9) && (this.value *= 2, this.value == 18)) || fail(22); test((this.value += 5) == 23) || fail(23); end(); } fun array() { begin("Array"); test([].__name == "Array") || fail(1); test([] != []) || fail(2); test(spawn("Array").parent != [].parent) || fail(3); test([].parent == [].parent) || fail(4); test([1,2,3,4,5].length == 5) || fail(5); test([1,2,3][2] == 3) || fail(6); test((arr = [1,2,3], arr[0] = 5, arr[0] == 5)) || fail(7); test([1,2,3][-1] == null) || fail(8); test([1,2,3][5] == null) || fail(9); test((arr = [5,0,1], arr.push(7), arr.length == 4 && arr[3] == 7)) || fail(10); test(arr.pop() == 7 && arr.length == 3) || fail(11); test(arr.shift() == 5 && arr.length == 2 && arr[0] == 0 && arr[1] == 1) || fail(12); test((arr.unshift(3), arr[0] == 3 && arr.length == 3)) || fail(13); arr = [54,192,19,74,-1,292,123,124,122].sort(null); for(inOrder = true, i = 0; i < arr.length - 1 && inOrder; i++) inOrder = arr[i] < arr[i + 1]; test(inOrder) || fail(14); arr = arr.reverse(); for(inOrder = true, i = 0; i < arr.length - 1 && inOrder; i++) inOrder = arr[i] > arr[i + 1]; test(inOrder) || fail(15); test([4,9,2,123,3,-1,0,4].indexOf(0) == 6) || fail(16); test([4,9,2,123,3,-1,0,4].indexOf('a') < 0) || fail(17); test([4,9,2,123,3,-1,0,4].indexOf(4) == 0) || fail(18); test([[],[],[5],[],[]].length == 5) || fail(19); arr = [1,2,3,4,5]; sum = 0.0; foreach(entry in arr) sum += entry; test(sum == 15) || fail(20); test([1,2,3,4,5].toString() == [5,4,3,2,1].reverse().toString()) || fail(21); test([1,2,3].toString().length == [1,1,1].toString().length) || fail(22); test([1,2,3,4,5].shuffle().sort(null).toString() == [4,2,5,3,1].shuffle().sort(null).toString()) || fail(23); test([1,2,3,4,5].shuffle().toString().length == [1,2,3,4,5].shuffle().toString().length) || fail(24); test([1,2,3,4,5].shuffle().length == 5) || fail(25); end(); } fun dictionary() { begin("Dictionary"); weight = { "Surge": 35.0, "Neon": 25.0, "Charge": 37.5 }; test(weight["Surge"] == 35.0) || fail(1); test(weight["Neon"] == 25.0) || fail(2); test(weight["Charge"] > 37 && weight["Charge"] < 38) || fail(3); test(weight.has("Surge")) || fail(4); test(!weight.has("Gimacian")) || fail(5); it = weight.iterator(); test(it != null) || fail(6); test(it.hasNext()) || fail(7); sum = 0.0; while(it.hasNext()) { entry = it.next(); sum += entry.value; } test(sum > 97 && sum < 98) || fail(8); weight["Neon"] = 26; test(weight["Neon"] == 26) || fail(9); test(weight.has("Neon")) || fail(10); test(weight.count == 3) || fail(11); weight.delete("Neon"); weight.delete("404"); weight.delete(404); test(weight.has("Surge")) || fail(12); test(!weight.has("Neon")) || fail(13); test(weight.has("Charge")) || fail(14); test(weight.count == 2) || fail(15); weight.clear(); test(weight.count == 0) || fail(16); test(!weight.iterator().hasNext() && null == weight.iterator().next()) || fail(17); stress = spawn("Dictionary"); stressLimit = 1000; items = []; for(j = 1; j <= stressLimit; j++) items.push(j); foreach(item in items) stress["o" + item] = item; items.shuffle(); test(stress["o500"] == 500) || fail(18); test(stress["o657"] == 657) || fail(19); test(!stress.has("o0") && stress.has("o700")) || fail(20); for(sum = 0, it = stress.iterator(); it.hasNext(); sum += stress[it.next().key]); test(stress.count == stressLimit) || fail(21); test(sum == 500500) || fail(22); del = [ 1, 812, 726, 111, 182, 313, 6, 7, 8, 10, 88 ]; newSize = stressLimit - del.length; test23 = true; foreach(item in del) { stress.delete("o" + item); test23 = test23 && !stress.has("o" + item); } test(test23) || fail(23); test(stress.count == newSize) || fail(24); del = [ -5, 0, -2, 31415, 12345, "a" ]; test25 = true; for(x = 0; x < del.length; x++) { stress.delete("o" + del[x]), stress.delete(del[x]); test25 = test25 && !stress.has("o" + del[x]) && !stress.has(del[x]); } test(test25) || fail(25); test(stress.count == newSize) || fail(26); del = []; for(j = 1; j <= stressLimit; j++) del.push(j); foreach(item in del) stress.delete("o" + item); test(stress.count == 0) || fail(27); dict = { "a": 1, "b": 2, "c": 3 }; test(dict["a"] + dict["b"] + dict["c"] == 6) || fail(28); it = dict.iterator(); while(it.hasNext()) { entry = it.next(); entry.value = 1; } test(dict["a"] + dict["b"] + dict["c"] == 3) || fail(29); for(keys = "", it = dict.iterator(); it.hasNext(); keys += it.next().key); test(keys == "abc") || fail(30); end(); } // constructor() // called automatically by SurgeScript when the object is created fun constructor() { Console.print("------------------------------"); Console.print(" SurgeScript Unit Testing "); Console.print("------------------------------"); } // destructor() // called automatically by SurgeScript when the object is destroyed fun destructor() { str = "\n"; str += "SUCCEEDED " + (totalTested - totalFailed) + "\t\t"; str += "FAILED " + totalFailed; Console.print(str); } // test(expr) // tests an expression; returns the value of the expression fun test(expr) { tested++; return expr; } // fail(x) // fails a test fun fail(x) { Console.print("# Test " + x + " has failed."); failed++; } // begin(suite) // begins a test suite fun begin(suite) { Console.print("\nTesting " + suite + "..."); tested = 0; failed = 0; } // end() // ends a test suite fun end() { if(!failed) Console.print("All tests have passed."); totalTested += tested; totalFailed += failed; } // call() // calling object(expr) is the same as calling object.call(expr) fun call(expr) { return expr; } // get(key) // calling object["key"] is the same as calling object.get("key") fun get(key) { if(key == "this" || key == "self") return this; else if(key == "value") return value; else return null; } // set(key, newValue) // object[key] = newValue is the same as object.set(key, newValue) [syntactic sugar] fun set(key, newValue) { if(key == "value") // aka "public property" value = newValue; return this; } // get_value() // object.value returns the same as object.get_value() [syntactic sugar] fun get_value() { return value; } // set_value(newValue) // object.value = newValue calls object.set_value(newValue) behind the scenes fun set_value(newValue) { value = newValue; } // get_self() // We declare this function so that the expression "this.self" returns this (thus enabling some interesting test cases) fun get_self() { return this; } } surgescript-0.5.4/mkdocs.yml000066400000000000000000000074151354226561700161170ustar00rootroot00000000000000site_name: 'SurgeScript Documentation' site_url: 'https://docs.opensurge2d.org/' site_author: 'Alexandre Martins' site_description: 'SurgeScript is a scripting language for games.' copyright: 'SurgeScript is a scripting language for games. Copyright © 2016-2019 Alexandre Martins.' google_analytics: ['UA-120511928-1', 'opensurge2d.org'] repo_url: 'https://github.com/alemart/surgescript' strict: true theme: name: 'material' nav: - 'Introduction': 'index.md' - 'Download': 'download.md' - 'Crash Course': - 'Hello, World!': 'tutorials/hello.md' - 'Testing your scripts': 'tutorials/testing.md' - 'Introduction to objects': 'tutorials/objects.md' - 'Variables': 'tutorials/variables.md' - 'Expressions': 'tutorials/expressions.md' - 'Conditionals': 'tutorials/conditionals.md' - 'Loops': 'tutorials/loops.md' - 'Functions': 'tutorials/functions.md' - 'Comments': 'tutorials/comments.md' - 'Tags': 'tutorials/tags.md' - 'Object tree': 'tutorials/object_tree.md' - 'Components': 'tutorials/components.md' - 'Properties': 'tutorials/properties.md' - 'Packages': 'tutorials/packages.md' - 'Advanced features': 'tutorials/advanced_features.md' - 'Best practices': 'tutorials/best_practices.md' - 'SurgeScript Reference': - 'Application': 'reference/application.md' - 'Arguments': 'reference/arguments.md' - 'Array': 'reference/array.md' - 'Boolean': 'reference/boolean.md' - 'Console': 'reference/console.md' - 'Date': 'reference/date.md' - 'Dictionary': 'reference/dictionary.md' - 'GC': 'reference/gc.md' - 'Iterator': 'reference/iterator.md' - 'Math': 'reference/math.md' - 'Number': 'reference/number.md' - 'Object': 'reference/object.md' - 'Plugin': 'reference/plugin.md' - 'String': 'reference/string.md' - 'SurgeScript': 'reference/surgescript.md' - 'System': 'reference/system.md' - 'TagSystem': 'reference/tags.md' - 'Time': 'reference/time.md' - 'SurgeEngine Reference': - 'Actor': 'engine/actor.md' - 'Animation': 'engine/animation.md' - 'Audio': - 'Music': 'engine/music.md' - 'Sound': 'engine/sound.md' - 'Behaviors': - 'Behavior': 'engine/behavior.md' - 'CircularMovement': 'engine/circular_movement.md' - 'DirectionalMovement': 'engine/directional_movement.md' - 'Enemy': 'engine/enemy.md' - 'Platformer': 'engine/platformer.md' - 'Brick': 'engine/brick.md' - 'Camera': 'engine/camera.md' - 'Collisions': - 'Collider': 'engine/collider.md' - 'CollisionBall': 'engine/collisionball.md' - 'CollisionBox': 'engine/collisionbox.md' - 'Sensor': 'engine/sensor.md' - 'Entity': 'engine/entity.md' - 'Events': - 'Event': 'engine/event.md' - 'EventList': 'engine/eventlist.md' - 'EventChain': 'engine/eventchain.md' - 'DelayedEvent': 'engine/delayedevent.md' - 'EntityEvent': 'engine/entityevent.md' - 'FunctionEvent': 'engine/functionevent.md' - 'Input': - 'Input': 'engine/input.md' - 'Mouse': 'engine/mouse.md' - 'Lang': 'engine/lang.md' - 'Level': 'engine/level.md' - 'Player': 'engine/player.md' - 'Prefs': 'engine/prefs.md' - 'SurgeEngine': 'engine/surgeengine.md' - 'Transform': 'engine/transform.md' - 'UI': - 'Text': 'engine/text.md' - 'Vector2': 'engine/vector2.md' - 'Video': - 'Screen': 'engine/screen.md' - 'Web': 'engine/web.md' surgescript-0.5.4/src/000077500000000000000000000000001354226561700146745ustar00rootroot00000000000000surgescript-0.5.4/src/main.c000066400000000000000000000110101354226561700157550ustar00rootroot00000000000000/* * SurgeScript * A scripting language for games * Copyright 2016-2018 Alexandre Martins * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * runtime/main.c * SurgeScript Runtime Engine entry point */ #include #include #include const char* url = "https://github.com/alemart/surgescript"; surgescript_vm_t* make_vm(int argc, char** argv); void print_to_stdout(const char* message); void print_to_stderr(const char* message); void discard_message(const char* message); void show_help(const char* executable); /* * main() * Entry point */ int main(int argc, char* argv[]) { if(argc > 1) { /* create the VM and compile the input file(s) */ surgescript_vm_t* vm = make_vm(argc, argv); if(vm != NULL) { /* run the VM */ while(surgescript_vm_update(vm)) { ; } /* destroy the VM */ surgescript_vm_destroy(vm); } } else { /* print usage */ show_help(surgescript_util_basename(argv[0])); } /* done! */ return 0; } /* * make_vm() * Parses the command line arguments and creates a VM * with the compiled scripts */ surgescript_vm_t* make_vm(int argc, char** argv) { surgescript_vm_t* vm = NULL; int i; /* disable debugging */ surgescript_util_set_error_functions(discard_message, print_to_stderr); /* parse the command line options */ for(i = 1; i < argc && *argv[i] == '-'; i++) { const char* arg = argv[i]; if(strcmp(arg, "--debug") == 0 || strcmp(arg, "-D") == 0) { /* enable debugging */ surgescript_util_set_error_functions(print_to_stdout, print_to_stderr); } else if(strcmp(arg, "--version") == 0 || strcmp(arg, "-v") == 0) { /* display version */ printf("%s\n", surgescript_util_version()); return NULL; } else if(strcmp(arg, "--help") == 0 || strcmp(arg, "-h") == 0) { /* show help */ show_help(surgescript_util_basename(argv[0])); return NULL; } else { printf("Unrecognized option: '%s'.\nType '%s --help' for more information.\n", arg, surgescript_util_basename(argv[0])); return NULL; } } /* create an empty VM */ vm = surgescript_vm_create(); /* compile the scripts */ for(; i < argc && strcmp(argv[i], "--") != 0; i++) { const char* file = argv[i]; surgescript_vm_compile(vm, file); } /* launch the VM */ surgescript_vm_launch_ex(vm, argc, argv); /* done! */ return vm; } /* * show_help() * Shows a help message */ void show_help(const char* executable) { printf( "SurgeScript %s by Alexandre Martins\n" "Usage: %s [OPTIONS]