From eb6d7be2d0c2ca2ffb03f96e47eec25ba2bdb105 Mon Sep 17 00:00:00 2001 From: Ethan O'Brien <77750390+ethanaobrien@users.noreply.github.com> Date: Tue, 18 Jul 2023 10:56:27 -0500 Subject: [PATCH] Add repo docs --- .github/FUNDING.yml | 13 + .github/ISSUE_TEMPLATE/bug.md | 30 + .github/workflows/main.yml | 42 + .gitignore | 1 - CHANGES.md | 247 ++ CNAME | 1 + CODE_OF_CONDUCT.md | 128 + README.md | 193 + a.html | 28 - ads.txt | 1 + data/{css/main.css => emulator.css} | 0 data/emulator.js | 20 +- data/loader.js | 15 +- data/version.json | 1 + docs/Contributors.md | 109 + docs/Logo-light.png | Bin 0 -> 24096 bytes docs/Logo.png | Bin 0 -> 23317 bytes docs/Logo.svg | 4487 +++++++++++++++++++++ docs/Systems/3DO.md | 56 + docs/Systems/Arcade.md | 37 + docs/Systems/Atari 2600.md | 35 + docs/Systems/Atari 5200.md | 37 + docs/Systems/Atari 7800.md | 33 + docs/Systems/Atari Jaguar.md | 37 + docs/Systems/Atari Lynx.md | 32 + docs/Systems/MAME 2003.md | 35 + docs/Systems/NES-Famicom.md | 52 + docs/Systems/Nintendo 64.md | 42 + docs/Systems/Nintendo DS.md | 54 + docs/Systems/Nintendo Game Boy Advance.md | 50 + docs/Systems/Nintendo Game Boy.md | 49 + docs/Systems/PlayStation.md | 54 + docs/Systems/SNES.md | 57 + docs/Systems/Sega CD.md | 43 + docs/Systems/Sega Game Gear.md | 35 + docs/Systems/Sega Master System.md | 45 + docs/Systems/Sega Mega Drive.md | 32 + docs/Systems/Sega Saturn.md | 39 + docs/Systems/Virtual Boy.md | 38 + docs/favicon.ico | Bin 0 -> 128918 bytes 40 files changed, 6172 insertions(+), 36 deletions(-) create mode 100644 .github/FUNDING.yml create mode 100644 .github/ISSUE_TEMPLATE/bug.md create mode 100644 .github/workflows/main.yml create mode 100644 CHANGES.md create mode 100644 CNAME create mode 100644 CODE_OF_CONDUCT.md create mode 100644 README.md delete mode 100644 a.html create mode 100644 ads.txt rename data/{css/main.css => emulator.css} (100%) create mode 100644 data/version.json create mode 100644 docs/Contributors.md create mode 100644 docs/Logo-light.png create mode 100644 docs/Logo.png create mode 100644 docs/Logo.svg create mode 100644 docs/Systems/3DO.md create mode 100644 docs/Systems/Arcade.md create mode 100644 docs/Systems/Atari 2600.md create mode 100644 docs/Systems/Atari 5200.md create mode 100644 docs/Systems/Atari 7800.md create mode 100644 docs/Systems/Atari Jaguar.md create mode 100644 docs/Systems/Atari Lynx.md create mode 100644 docs/Systems/MAME 2003.md create mode 100644 docs/Systems/NES-Famicom.md create mode 100644 docs/Systems/Nintendo 64.md create mode 100644 docs/Systems/Nintendo DS.md create mode 100644 docs/Systems/Nintendo Game Boy Advance.md create mode 100644 docs/Systems/Nintendo Game Boy.md create mode 100644 docs/Systems/PlayStation.md create mode 100644 docs/Systems/SNES.md create mode 100644 docs/Systems/Sega CD.md create mode 100644 docs/Systems/Sega Game Gear.md create mode 100644 docs/Systems/Sega Master System.md create mode 100644 docs/Systems/Sega Mega Drive.md create mode 100644 docs/Systems/Sega Saturn.md create mode 100644 docs/Systems/Virtual Boy.md create mode 100644 docs/favicon.ico diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..8692f15 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,13 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: EmulatorJS # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md new file mode 100644 index 0000000..432b5e5 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.md @@ -0,0 +1,30 @@ +--- +name: Bug +about: Something isn't functioning as intended +title: "[Bug]" +labels: '' +assignees: '' + +--- + + +#### Make sure your issue doesn't get closed! Make sure you have done the following items + +- [ ] I have collected a **FULL** log of the console, with `EJS_DEBUG_XX` set to true, and uploaded it straight to GitHub. +- [ ] I have not made any changes to the EmulatorJS instance I am running into this bug on. +- [ ] I am on the latest version of EmulatorJS +- [ ] I have not attached any images or logs via external sites. I have uploaded them straight to GitHub and acknowledge that external sites may pose a security issue. +- [ ] I have included, **IN DETAIL**, the steps to reproduce the bug. + + diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..0a35840 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,42 @@ +name: Minify Code + +on: [push, pull_request, workflow_dispatch] + +jobs: + paths-filter: + runs-on: ubuntu-latest + outputs: + output1: ${{ steps.filter.outputs.data }} + steps: + - uses: actions/checkout@v2 + - uses: dorny/paths-filter@v2 + id: filter + with: + filters: | + data: + - 'data/**' + # run only if 'data' files were changed + - name: workflow tests + if: steps.filter.outputs.data == 'true' + run: echo "Data file" + + # run only if not 'data' files were changed + - name: not workflow tests + if: steps.filter.outputs.data != 'true' + run: echo "NOT Data file" + + next-job: + runs-on: ubuntu-latest + # Wait from the paths-filter to be completed before starting next-job + needs: paths-filter + if: needs.paths-filter.outputs.output1 == 'true' + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: '12' + - run: cd data/minify && npm install + - run: cd data/minify && npm run build + - uses: EndBug/add-and-commit@v9 + with: + default_author: github_actions diff --git a/.gitignore b/.gitignore index 8e06e59..e8c826a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ **/node_modules/ data/minify/package-lock.json *.db -roms/ diff --git a/CHANGES.md b/CHANGES.md new file mode 100644 index 0000000..37b8cf9 --- /dev/null +++ b/CHANGES.md @@ -0,0 +1,247 @@ +# Changes + +# 4.0 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/f7fa5d41487a424233b40e903020455606d68fee) +- Fixed iOS bug for iPads +- Added netplay! (only working on new cores) + +# 3.1.5 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/f7fa5d41487a424233b40e903020455606d68fee) +- Fixed iOS bug for iPads +- Added netplay! (only working on new cores) + +# 3.1.0 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/614f5cb55e2768199ba05b756b47d0ab7ab283fd) +- Added ability to drag and drop save states. +- Fixed some "update" and "cancel" and "close" button confustion +- Removed save state retroarch messages +- Beta netplay cleanup (not yet working) +- (Theoretically) fixed a bug that did not allow iOS devices to work + +# 3.0.5 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/44c31371fb3c314cd8dea36ccbaad89fb3ab98e6) +- Fixed screen recording on devices that do not support getUserMedia api. +- Added C label buttons to nintendo 64 virtual gamepad. +- Fixed EJS_color bug. +- Savestates are pulled from the core itself, to always be correct. +- Several new cores. (a5200, beetle_vb, desmume2015, fbalpha2012_cps1, fbalpha2012_cps2, fceumm, gambatte, mame2003, mednafen_psx, mednafen_psx_hw, melonds, mgba, mupen64plus_next, nestopia, snes9x) +- D-pad for virtual gamepad. +- Updated translation files to include new menu options. +- Ability to add more than one zone object to virtual gamepads. +- Added ability to set custom menu options. +- Virtual gamepad left handed mode. +- Fixed Screen record svg. +- Updated svg icons. +- Cache "clear all" button. +- Cache button moved to menu bar. +- Added feature that will display the current downloaded size when the content length is not available. + +# 2.3.9 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/088942083e44510f07133f2074a2d63a8af477cd) +- Fixed incorrect variable referencing when update bios download data callback. +- Fixed rom storage size limits. +- Fixed download percent not showing with some files. + +# 2.3.8 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/5f176b963e4b2055983b82396378d1e3837a69c4) +- Remove broken shader. +- Add download percent message. +- Fixed UI "saving state" message not going away. + +# 2.3.7 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/8b9607becfe0aaad42b8b8486c7d379821b72125) +- Add more shaders. +- Add bold fontsize option to custom virtual gamepad settings. +- No longer set "normalOptions" from localization file. + +# 2.3.6 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/b2919bc2c3d2d4c9fe3ab4f4486790a376b7acfe) +- Remove default control mappings for gamepads. +- Upgraded invalid character regex to catch more characters. + +# 2.3.5 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/a5a9916aba041e75ee73815376ed4fd2e22701bd) +- Use regex to detect and replace invalid characters in filename/gamename settings. + +# 2.3.4 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/45d982b6362cfd29cb2eda9721066e03893ba0d8) +- Add new arcade core. +- Fix patch file game id set bug. + +# 2.3.4 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/45d982b6362cfd29cb2eda9721066e03893ba0d8) +- Add new arcade core. + +# 2.3.3 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/11bddd5a4277aa04f80b941f05cc024b3de58bfc) +- Make version in loader.js reasonable. +- Created function to return the game id to prevent unnecessary data stored. + +# 2.3.2 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/e9e017435f2c41c6c2b127024cc88ac51bdf04d9) +- Fix reference error. +- Fix bug in custom virtual gamepad processor where if value is set to 0 it will see that as the value being missing. + +# 2.3.1 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/0fd6d58e2011fa1a39bd2e11ba3d2f17773f0961) +- Use let instead of var. + +# 2.3.0 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/2fd0f545285151524262cc799efef6d996d7c6c1) +- Added ability to customize virtual gamepad UI. +- Fixed bug where shader is not set on start. + +# 2.2.9 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/018c39d4065b866487f8f18ca88c9488eab69a6d) +- Added feature to save save files to indexeddb every 5 minutes. + +# 2.2.8 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/9860d662d02b56417044cca11937448041d9cf43) +- Re-write gamepad handler. + +# 2.2.7 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/c03d18990b6536c1503bba2c640dbc13db982bb3) +- Removed un-needed FS proxy functions. + +# 2.2.6 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/fd71b5dfc2bd44d8e1f0e7c6c7b3ee1a1127a696) +- Added fps counter. +- Fixed gba core aspect. + +# 2.2.5 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/4b444ec23918149a6052807d778af82f79883c01) +- Added ability to set custom control mappings. +- Added ability to set custom default volume value. +- Fixed gamepad axis as button, gamepad varaible compared to incorrect value. +- Added ability to hide/show menu/context menu buttons. +- Added ability to set game url to other data types. + +# 2.2.3 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/41eed05677b4927bd114613040bfe4572c92c4b4) +- Fixed rar unarchiving function reference. +- Updated rar header detection. +- Removed netplay. + +# 2.2.1 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/19980deb12c3f0790176db6fc7b8b2de4069bf4e) +- Added core menu options for new cores. +- Added new mame2003 core. +- Added support for debug emscripten setting for new cores. + +# 2.0.1 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/a72222c39a793c4ff470ebb2b71c04829fee4b5e) +- Control mapping for beta cores. +- Updated beta cores. +- Beta cores now the default option! +- Added a5200 core. +- Fixed save state for new n64 core. + +# 1.2.2 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/8ab7bb3f49da373ed5d291c5f72039bbabf2fbc8) +- Moved virtual gamepad menu button to the top left as 3 lines. +- Added screen orientation lock. +- Added beta n64 core! + +# 1.2.1 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/638658e6202fd39cb5c94bedcfa00ccdf8b25840) +- Updated beta core files. + +# 1.1.6 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/fa153ba76791184d978f9fb8b69991b05b161bc8) +- Replaced axios module with custom script. +- Added pause/play for beta cores. +- Sepperated css into its own file. +- Renamed emu-min.js to emulator.min.js. + +# 1.1.5 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/2767c635b8a6e05c57e054d2f9d01ae0c4ff6d47) +- Cleaned up fetch error function. +- Cleaned up virtual gamepad event listeners. +- Add code of conduct. + +# 1.1.2 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/64731dd8219931155b4e698aa98dbf65c2120038) +- Fixed error where mame files were misnamed. +- Fixed bug where variable referenced was not defined in loader.js. +- Added .gitignore +- Added nodejs script to minify js files. +- Added audio to screen recording. +- Removed lots of dead code from emulator.js file. +- Update axios module. +- Added CORS error message +- Update nodejs buffer module. + +# 1.1.0 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/715ded4ae23c2135bc9a8b9b7599f12c905393b3) +- Added minify feature. +- Added emulatorjs logo. +- Added beta nds and gb core. +- Fixed bug where when wasm was supported on the beta cores and not the old cores, a network error would appear if not using beta. +- Added volume setting and cheats to beta cores. + +# 1.0 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/fde44b095bb89e299daaaa4c8d7deebc79019865) +- Official release of the beta cores. +- Ability to use beta cores in production. +- Ability to use the old emulatorjs netplay server. +- Set screen recording out file name to gamename if present. +- Set screenshot out file name to gamename if present. +- Fixed virtual gamepad bug where a function was referenced to as an array. + +# 0.4.26 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/0709829a11266b6ab4bbbf3e61d6dd6d3c372133) +- Sepperated emulator.js file into 2 files. +- Added support for a custom netplay server. +- Fixed netplay room password input bug. +- Fixed bug on iOS where virtual gamepad zone was un-responsive. +- Added save state location feature. +- Added mame core setting. +- Added beta cores! +- Added localization. +- Re-wrote virtual gamepad code. +- Added EJS_terminate function. +- Exposed simulate_input function to window. +- Update webrtc adapter. + +# 0.4.25 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/ef3200ef87bffe57241e05ae9646cc201142ec46) +- Moved load state on start from loader.js file to emulator.js file. +- Moved data path function from loader.js file to emulator.js file. +- Added ability to set custom path to data through `EJS_pathtodata` variable. +- Added support for custom paths. +- Expose the module and loader to window. +- Added `EJS_startOnLoaded` to start the emulator on load. +- Added quick save state slots. +- Added save state message. +- Only show save state slot in settings when save states are supported. +- Added ds pointer lock. +- Added menu button to virtual gamepad. Menu will only open when clicked on mobile. +- Created licenese +- Created official emulatorjs website. + +# 0.4.24 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/73ff641616bcd10f088a004002183760832a1afc) +- Deobsfocuted emulator.js and loader.js files to the most of my extent. +- Added quick save/load hotkeys. +- Added ability to use gamepad axis as button. +- Fixed typo in controls title. +- Only show needed inputs per system in control settings. +- Re-write the loader.js file. +- Exposed some variables to window. +- Cleaned up context menu code. +- Cleaned up some syntax in emulator.js file. +- Declared `EJS_AdUrl` through loader.js file. +- Fixed bug where mapping an axis as a button didn't work. +- Added missing legacy n64 core. +- Updated n64 core. + +# 0.4.23-07 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/83e148c82cbc8b4e835a808dcf84456975f82a7c) +- Removed not needed code. +- Added reset button to control settings. +- Added clear button to control settings. +- Added `EJS_AdUrl` option, the ability to add an ad to the emulator. +- Cleaned up some file fetching. +- Fixed RAR unarchiving. + +# 0.4.23-05 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/018c787ccf6daca58c863d38fff61910f33f98ec) +- No longer cache games with the protocols of `file:`, and `chrome-extension:`. +- Changed default keymappings. +- Added screen recording button. + +# 0.4.23-04 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/6464bbedc1cd58c023cd66656540fc174aedde8b) +- Added mame2003, snes2002, snes2005, snes2010, and vbanext cores. +- Added asmjs for all supported cores. + +# 0.4.23-03 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/c883f267e1e56ed6b6472b891f78704c6e4b4c17) +- Start loader.js deobsfocuting. +- Deobsfocute extractzip.js. +- Added `EJS_gameName`, the ability to change the file name of save states. + +# 0.4.23-02 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/5d97620b25a81e49c6ba313e586fb37a5ce66002) +- Start emulator.js deobsfocuting. + +# 0.4.23-01 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/42a7e129cfded266b72539e8d1b5978d5e4119d8) +- Added support for loading "blob:" urls. +- Added support for loading state on game start. + +# 0.4.23 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/5f5cf5cbba29cfd772d525a4c73a4bc5ea26654c) +- Added update available message. +- Fixed a bug where the 'x' from the ad iframe was still visible on game start. +- Added a2600 and mame cores. +- Remove visible 'x' +- Add rar extraction support. + +# 0.4.19 [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/4fd22871663e5896bb5d0ce29a50ad508462387a) +- Added support for 32x, 3do, a7800, arcade, bluemsx, jaguar, lynx, ngp, pce, saturn, sega, segacd, and ws cores. + +# Initial release [View Tree](https://github.com/EmulatorJS/EmulatorJS/tree/be2db16cba8bd85bf901cd89ca6de51414cea792) +- Support for unzipping zip files. +- Support for unzipping 7zip files. +- Support for vb, snes, psx, nes, nds, n64, gba, and gb systems. Only support for WASM. diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..7032dd5 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +demo.emulatorjs.org \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..d026035 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +ethan.a.obrien@gmail.com. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/README.md b/README.md new file mode 100644 index 0000000..a8e4bf0 --- /dev/null +++ b/README.md @@ -0,0 +1,193 @@ + +
&x!f(aux#Q41}NlDgWz9Kx(DP zmUf?j82?6)pv6&dCt~fB&~l6LT6$^in6c?quL(J zSgC2Ko4=eVFgn9RYg%}4*F&h~#qAVD6uX^;vkUK|csyp=-uY@O5bzt!CQKhhDwZr@ zc7;UM#)Bn^@FGVIu@%)d$E9BBdRj#Sjk>APj&$c0mC?sA%VAbcUbinVf(gFLCoTfV z-+&etE5nh7k{^5N#;d~*L54YbrZV{UmA3!-bBhW*D3ka;ig=)MXd>eHDq!AqHNh~KEsZ?1|{=ZGS#)7!>*$JHNN$Azp&%z#I9{IeS|JxZ8 zV7pusT(p@?#38j!`ZN=T82g{r-uuAmgeddtj7U}q`fY0mUB Xj!59DWZ4>=iV=y+@jF 5S$! zB98x?)T2}z5#cfs8;n$f `2P|qm`W Pf^KKLtsGXm;IMAOEO zxT|+m08~*vx+DC71^Q!=vb~yYi?Vmwo5?gX|H=n~q!n0#Qt!$Jvx1Ygbjy5rL?ZB0 zcvyXludy(MmCOgG^r|2EUNmnMJcP2~yqI)R*1V4@TWJ84)m8U<*Eg-Eo(s_6>Ab|t zKMB-=?*0h-{}2P?q2OUh%*T*8DT0Jw?)(}e9+g0C&$6DUhE_e^c7067bh|5(@bs-n z!Vrv6Y%YrgF$46DM6KaCVhtlLFw5ueG63*z{9MY#!=_A}T 2BVVOWG3+pGZTYP)Xt`1;fHY-OE188<62!$%np0w0klJ$!xk*# zGX|Nu+B9TxO09M3^oQb;G_Fn4z&m__zmmY45>Oo~5J%8=O&f~f34DaM=7q2IW_?*5 zzTImVWs})mf*&-)jnbB;KBU 3nCEuaK<h5S8BHr@0B`!CP+5qhYP>VzPQx$S3T+D?_%{LzI3iY?#aWhI z-0VW+O)uG49yVp_`z4?%9z4Hz%bQaAlQ5NzK@-MtefS16zthzFz>vdd*^CJuz6<-I z{x2kn*@+@`e Ue}&*bg)aa`A0#Eogi>> z+hJ?{@=Ati)JDXAXqjk7VOkmaRj4NB)#xBbqP$aZq#OI`U{m-qzd%W(KHj|DsTQ)M z&Stcq#im|m{ppr;Ct~ITb#u&8AyER{0K{OvawN1@^WD8`1l{XfSyc+;>+y58BghH$ z8ujvGi}9L~qz7!&G2K(DxTclbsWuo-xW62kK4|)N+EQJ+oh7o8pu`SI&;l9^jcuoW zLZsXhqGsBYD#R`1@M|YaT8Xy8U`coeDr*)?&12(c+D(c^_Y1@L10JBcFPE%5%#moc z6!dW%dKB&(2%D+Jg?G+cLeyqkTcikF_Q%huN;x68ZXG}^k_B(H6q1))+VUvY+!C+l zRQ`{*<)(lsEAj8B^m1WU?keK;kE2T>ndARplt13F!hV+hcx+NNx64=8N^0fq^p#48 ztK6`sY#Yw%Ve@-x_wY#SlkR*+ll+5J vRewOElmxd?A*b+Wt1 z&PUc!HEL<+-D^`W#26EN9;R8uZ69$3VO*p61E-%9!6xY?qhWmj!jVqsTv*)xy-t)> z1;MUtUrRI5PTOL-#z}kCH>Y1_yRV)`G>W*lBF^_+v^*~4guF02-)abu(R&}@$VdYx zlfi0M=pw)Y?DQG-1;3TG#j8RzO#*Qq6sOs5zkgz^zU&OL4*sM|N+^UWp#+lVLqr`v zcqcUqE3L8X%kF$KLTpI|O|W#JWdneBjz k@$l?|-R zv1^;=b#D>?t7l H9t|aJ5jc++X2AG{Xd)xl}1#hM$__ktEhjIwvj1e9L#T*7(O6>O%MKX{gD$= zxB5S|oM%*1-M8*H9SsmrDJo5*D4?N8FF|Pv(gXygsWhd9-XQ^{D~Je)lt7eXXwo6H zC{hGzMtTXLNG}GEPVSEH`#Zl&g%L`Py-{ELr zwhK;dj(_)?adeJzu*;POV|AKit6Y)PUL@p2WHv*^!s4Pw=J2LZHbpC)%B^zfb^jps zv4YQU{-xzCLQ{_Vc!B7|flAs--%m3l$FHeGI>A{vVR}n9lDB_&Eq(K-FTYwL)mCcIh^=l-85`9(4oU=ys7>&50`{0e}u00<$)>O1ICB! zeYmE57CQcV=GS1}ZeALTh|jh-KT srm{bOlqbTs6IAYh6=tiy zGVE2Ne!xIq<0ikt#8*uh-jA9v0LA7;9~J%_Pr@{Ln~<-nxR=+}k!~I(E|tMUa<#SL z9SjpxPCM QD6Xd|-Bz#<( zjK{ ^?6n4QS^8%GTv`}PJp|7((rRs+gXx^#?Q*)ANSIqJ<%v~;Tc18 zA5TuMhBidEdSU{VowZC$Z_4&sF65OX9&mwPPP >#a1Bh6flb8wSmi2DJ1E##E|? z8wASgb9je!@8-k6R>a{_KUob48u_9))oI$xBBphKy-fC-lm&`b>A|8*tOGOhPvv-{ z>M#$eY`A2#tPGU>+LWg(7S}nR-k7-+o41*^JLP?SiI2jZ$pq_RavzI)1q7Bt{uFf% zzwG`snN~(~#>Xgip=$KWbXOnnot;z%4v(s1Rc1vU%%wU&Smrj>wC-BOfB$YH+>fB~ zDv$jEuFZ4lken&65~Pa@*48qH=A5;xjH1IICj36V2Ar{!0NN??V3+ag3HQj^&c#HN zP8!ZO#f9=)!_56^A6W1mK ~WB0)Ip$x22{_c*3A}#_&w|v3u?&g3HCJMEAlj zfU*FBUYCLk?gA|$c4@Ozs4srO8;po3Wo w;$Y7{fRKdQfsPJ^zhjY?GydbI2}fu zT0i^PWB0*mfQeKhcU?^UK%#1d;t6ywB|z2s3#QKCm-D0T4e8b50d4kg)C1PD58sN7 z2zI*b{H 1UoU930>p>G@yiSK4?!;5;qFWfl zj%>^hy)or8V8=dw42BSEOCn223oElJFC|dhM?fd(ijRV?GP&M6BDnT^ok96Xs;CN( z)T~7gm-(7q%Mfo)pg&pV5^u})l9Lv5jXE|?Hhnh%ZJzg{=c$6S{&i}S_ni1ppyspn zB8H{Y@lF!?D2?6g5z(gwXEIp-rG1Ymt#WNio<8U@g({@wtEvJ2X^H;WuO5pahe)iT z5G`CWmym)3e%DB7TVia$c>S?&9QihQjm9mOC&_`fR+*-&=X&Z48jr4_VBagyx5JiO zt~|9fOXuZf%X-7DQUyCC5}i|T2fadMVGj`)&nfsD-t&PSYA}Z%%c5^3cg_NwyF&$? z-@d0I>)KWa=HKQ=Yiq1KtxnWP9%k_QMdFT*mW(x#DOR#%Z+X?qES)nVZ7CHr%Y@NN z;Xa7-A1Qzaw2T_w|6Qpvkhg5ThPp8SWStFzVKXO9%=WAMKd1g)yRD$H-Tavp>kmNA z{t`+s10BKRfy4f~bgOWx*E4ptx17G$!*3y1;?Y$7<6B&@iZZ6ms$P8 q2ILG}<_|*<#IM%#};W{7+0Jr!%sbzQXk%Gd9sV@mDmHe*~Si)lvi4`$L7gy5I`VFle zJp^}^0u++*)La(mHt*^r9~BnJC)jS<0r<#SzSGZ{;SwsUBtDv^iItHVM?XZsHP9f< z2{fx1UsXd-$E9g^H&4R7d*7d>%lWot7~A!29Gw<@{LPRi=Tk>EkLg5`tLttG7 Xg5LVmSn^tMN75tp* 6 zH}_h_wxm)gtB+Hr@#Q5bD;798pxd#7j#DLY1hm}QG;CvkS0ga`T@>GYXIWT3-QrJ1 zTP2PvQ4ecSGjoDq_wH~OHmlFCm{-FQaR7V{S;MuRmD@vp l9wWE z$;ax%aw}9Rk>cwaLaY;y5a-$kmnlN{*SsR^^fXPUWA)3<#}psPqizK*ga!Xv%9wY8 z)y;Zu_zOUdEKZ6Cx_fTK!k>jZ? lf7x+Bs; zdOO1y3A^?W%s?9&h1`4M=JkC(^5OBXe_#d@!!jy&MaA{wmR(tj4V;{A@7iq?`q519 zz|JK3EH&ce4XSdq(Fc=ZPNp=BuX&}6${8s$*v&?7rP_zs^WysArZ>UOfjEy_$vR!u zuT&0VdU#GwL>@kMzuU0AZ%yhZ%bxJ_s8}pNl`i-@z CKDYx}f>Gmgba WFq7J9D)+4H`f>s3gg3P1uAz tryw0_2GS;WdGtbfn-N$ zDry39|LzpjaTN9raXjJZH1RGGbcKp)4dL3^a|2t}1k#_iG+?rxO&@DWYz8)x%;W#z zvluJ&RAY>X!q_9oP&N5J25+{K*J+1e hWgAFOi^zqZ zXqS^dol&Us`>uaC?Zhk{2u+q^DM+UKs(N_E^hoxk_jcy>s#$~giJ_NQvt=4NnEXTm zm(8*2Ty12UxXBBM2NQmHw)^~=tcstg9+MAA{2yAD4bTel>14u`Yv18J^7_Q1d?@^r zJOuZ>G1Q&{PWvbeGdH3TshAJ+iGsV--_80*!8Z^^HgUTwzMXr197{5|G$9~qp&`a= zFnna)bynuLdglRCh-fg@J!dhmeOh{(O>j(@W25uHbQ=v?tB_EX(mNx4kdPF=Q8kuS z6HhKsdob)=yCO8Ym{$75O2LVv7=MW{AFgv7+z_m`KF8t3ki0Rjyk`Ev@W|;MDv>Sr zu)F#o$n8I9r2W%C6C`A1wRfW&=HPz#m9=C6tjL|d-loU0ij>|eV5qUQ9Lk2|ScXGe zEZUB&yhbDD_0SBWFfa|)6fmBmC^`4VxY6{^YoKF-w<-JP %0011+N_XNF=uu%fPx&rVTkZzd<_RfFXsCUU5zj6eQfJp0H(<_;{1*VTo67 z#__%VB}*;-b4tXmJ$`AhU=kY6$veqqUTrUtxx#u;vrsuVe1-F+F7N1r{Sd>whdIV! z6x@VGv}*1PBwbZmuIQ =23KKr^GYAR={AuHuSd4bOe#y4 z;+UPk`2U5Ls0x`Jb1j%~fyj+hgwI)6k`N$i=gTOo)Y^Wf+sfb4c6D^;p~t~c#lxm% z&(Mu}ZRkBEIW*1S8olml9)_sLQnRiZ+GO`HM=K%@T*M14c5G>P&wPa~;*1y)t O^PWZJvXsC5+<}6&VxiG4D0*%O}A0tztyuxi?hmE0{4{%9_at; zQxVRE7%u%WWs$VLTIA8-Igk;q=Ys7Ia;1)QX?_BkzQq;-` +s!vKz5Doz%dsbbi2NeaK zQXq|ZKzDnnrVQt6kKX*`rVxcfHkb{$FYs2DU-5wt=a{df7x}3S)CoTV;7Qp z&6R3gYvoEOoDkNWuUZeZuU8lR1=rC+>r1y0jn(>XU_n{)ilW<}J&!p{K=tXjfEHO7 zd0acswUr#D{fQUSA-7?x(jK%LaSFvGu@oKi2LF|+8ic(4`p8OW>F~i#MH%Y6a%T6F zc!W$5T&Fa%g#Z#73ye>;@W&cTmiS?Q%tELqPA2!22NUSaW#3x%S%dw*ir$#t*ZoIE zRL4r@ ISW-%bWI zYf9?jy}56?cvph=%Hw03?M9=O(r&Bc4i?%_Q~rS=h6DmM&vP(TQIC3pr>qbM1@-uE zu0|DtA}A9KC^>oWqPl?HrVF 8g8e zHdV>ex$A-)T9;O^H*edqqeeJf8%`y?hCHIvi0E`gnN-jLf&-~h%lR|*bg?z^fcY0$ z2JH;Ow;(|m89uhh3XT^>&%Lx4h`5cTP9V@N{Xy-up-2}lL@> s{$fLW0%z`IUU20DsFv;|b?L@eW?0T==(w_r8ZgX}+t4ZdT-E$`==%<4=Jf(tK zXi@MJ9>~Voeq##$4#zLhLP2HvQiLWMzVnwhBmrrVrKwd Vh9GEof`b%v&Pt=Bax`hw2DC5>O;)>_tc#&a2{r=YjQ z1c)W4rpt>RRKBK66jp-Nz5-JUwv(-%9y?532ORDg#&H9>{G>XF({<<3h@O0ifK+4) zJ_azc@lZ#*4mInTlu>!ebUpr U89}UN=_$W6YRS~` zz;c_tX4{>s4LX!&8OEyT4SS*MvceeKSrL4IX$idqvl@bs$DVr;7@~P}Cn+E0Y`jeJ zmIb`636X3miu8&`*&5Ey(XkI-0?8&nxx*9sfAoFyk1E=81jYeZst;YKieI4`Dz*pd z4)i#+OiIBH2Hnv1r$nDVd#P3vUoO-Gtm0Sds3x92c~u)dY`{2i&j7W$Hcp1uH_rG1 z&NwwpFDMZ<(ZHDv`#y*4TX+PWD7Gn``xD`^&8{0vwU8HQL%sF!H(8YK1N*|u9}n0& z;2rb{@Kb&O{yG&4b{a6*dEa>*5@g5&(s8TdkL_S0ST=S}aN_l^!3>(cXR? iM?Rq zSO*wA-R#GR_acbI6+T;aUWaJ@6x!YT2|oL%nQYqtJ8w##klbUis)Q-d_|6uZT`eWs zQlL5LWmz=vPJc{o`*$+;W+0G8 7jJ(2&0Uv@8+;BfVr>Lp_4P z#RybE@uvfqlzgy=!lglxFg*>7{Bg8q15Fmir~W_F@lS5f%)P6V+U8_?tUBXz6*UR+ zm%T&Y0O#%uzFI6dJkI)c %wrMZBY|q@KjseP!mH3JSro|KF_o*` zX%isH0B}j`t#pZg$UGE5*48j#!J2HVuZEV#fM$w~hNnuq``P&rcPIrY@n4zxztZ+1 zaogFzF#=mEqcTFsW=tZ|>~c-De6@*omXma`(8y-+P?&0&@?yo029QAjpXpI#VnJDx zZvx#5m6>kOMr1ym2;=!Ne9#8tdE Rr}sQ`nmwT|U5CfA>uuHY0?q`~B2% zUQn;W{63+$HoI?3iRAO~vS;c6kx7kVxaSJhSzuhBw0$CKX_TICs!9{XO@!qYSGElA z{5V3Mu@E4|VS78v*NvNol@1hOij _dk4SK_sL*l@93+Idn@(hk$f qaEL>9-kbO5`+E#G z*R}s(&&-;cReQ}^uQ_2#3X< |Lg)!73C&l}eS;%YIZ+lkSg1cy zKp|~!kFE0-&4*E)L?^@9*$xN32OWc(n?@Xu?#x#@S3DAF;K|MP#Qp{i Ef z?z|;P#u?Mjm~lwtJQ>u-A2Mec)+y!<<-x7}K@I*}lJ|p+5o|sq^(i**DJ8_W`;2Dr zLwq^BL^OhG&S!_mb>GuAZFXVajgLV_B6|_mzNm2ix;e`A&=cb&n+(vi*}9D79fPyM zZv3T|Yy>fk;8J&=vuym0-!Mtei*z#TVC*ADkQb?&aK7yjY)6xb-6*uOC1whVTweEs zjbEUcL4nA^A?eAn#R+tcee~G} ZG%iDg1o1x4KVn z $khfW^#7;7)`Xh3p>@m4 zLk28ML`pOiX9fH3K%|@$#-5K#RER|r?-k#IsN;+N)L}?|A@SAA!2xNF(eTye(~m_{ z8|7drr*+2kv?PjA8zP3L_@h-&Dl@&8ip3 !gUW_8%2_Vm3-dKIL(amVbC}QVl`O4SupX&DdQJlB}fR zkBk=b*xk}FX!JEIek6!IZ`KVss_$skD`gzI!|);Ch00qW+pJ>uy!;fp@KhzaKm%02 zTu=q+1e`r6B)3j6Cmm w$a7pd#K7cw$mAXQs}3rCB{`c~v;=0%qa zPbG>K+yr?y8t3eol&mMobr-hr3C5?1uvXRYyG&x!hjbbS{)G-Luv;+mM+9?uATBYJ zC{0s&%>di{-7s~Rx0rC5w3X*F3`hi%!?}E9-R(E(YmdiHq>_Guh;EW#y_>~ziNpIc z$0J-|vy tOxH-!oqtCDR!o%D*(41IYOb}WZ1X!)%HqGy35J7^ZJ Vga~i*4bk?JXQ(o4hImj2C=6cgAxQt=}BQxn}SF10x}+bd4;qqXddalZgJW z7Ed4i6yg3F$4rDwzggF)xeSR-+Zk9O0cJWtOH6b*tyx8xK_YKvlkCc B2>b5wI zcO*iNKlk|i2QGFQ?ll(E5p*&@4+j21@bsP$2icr_+&>6p6@%_C04GY}b8~e2y%{dr zIOjmBSr8T!DjqM@`(B;We8PeGqxD|A`VxY;cEkq~s9snw9AV6^G}~7Yr#H;4V@>&% zpL)-4bSlna?$cp$fOE`BN?sbu|H9Xh)*V62gXg;$fhHt#20r!I`*^c3Vvz&_|EdF7 z_DvAcjw^c}H$a~WRJ7Hk4)1VzJ?kd u&1hg)WgUHlP_I#Slx!*!6FoT(R z%_X1H6tip5Pk8A=Zoo%al8+A0I=VLYv*>%O8G3nK8<-;3TY)8s{x!sva|y}y!_I9iWmwPv z?5T+;bSuwoS$WU1HrNdPlt>!Yi4so~ZCK#VdeO);;vfZd# ivGF|pFJWY z-R2t~&=z&2G1AR~w&mEO t1Y#m3clG61yY%F=+ep1R z)X?+d-tSjNdN^vE%V)p2nRTMr-~+;F+)opw18) xaC-^=#vYi4xy{!bZz;4HI)^wry`;$T304Q-Sr6P>NQ%vHp @Ed=Rcp};!}5(4K{R;t zpG}nlez&i9MYpT+1(-oH1Rs*%=rP`0={mA?=NbCU*?Q5W6e~EEGI$l1F2n_Xc$b3S zJv=#>YbWet7jtuUAaS^UOs52$i)x#lqHN_Lw(!9&SO37v)+ mVqxQ3&0Mt8GYK4<25g%xQ3G;$iDOAy<1Gb!7whkX1h4yD5oIZb8q>>a zhd$lvwC8$oOa1_M!g+3{e$Cx@0f*C4T)vkAsw`Ub!!vI3 EYqD? zY;!I@=_{uE=T(HQ>-$bpHTMPo-O}1XbQurQE1Ag)I;F;KQsoPbi5*2*en@22t;^>1 zc;s~ZZw4OhOVM(dwFpIMqYH;zphY(G>fteWzn74D*CuB)JRp#*_6G%r2T4EXqkrg) zNACvj=Aa5XD)t}15_Z&(JZdcE@x?j9c3VO2H-o(p=I2ZLB}>xp`c0dtNCEhe>8Eg8 zGz6wKZWu2FUDple_dV@ >T7U6j{hEJW;9+wZ@vG4Rs8)%0w#zNo%!5!D{P zWPY6Iq@V4WTr3kKhB3-f!K)fNxd}dU)Yq7?&9P)=lp#-eS(+Erk51h{bvVc~5Uw$9 zv%O=X{O3?rzREK3v3u>uVHug>3E(;SbbZYGz9G30caJdNHuIc&b`U?^>JyQ$9ehOO zb(XCm<8K~lIx5~PxVy}#nm420Hen!madMlwpjmhTR7as^8YRj4iKxVjDD$Q9ljH?T zQs41|g~$VXCxKtzbFmHjwV0>NZT9^M{BLXBGol9q kDY86kC6n5niS-=1`8?x )?iKzXnbUh9V`~6!uW->VGMZqGacf# zsM}eD8dg; Ch4{Nzm2Nn&mMI5s}R zt0E%|vl=WR_|xpq;b8}hkT+ci%r z=(AdJ1wPp2qs_|*(b#m|!{nV}BGpjd%smk>tH3AH@Xkzo45o0F;KOn HUd@ zS&jJ-zQ-nHBY1pnKgn@mSt}XYS*%au#V;Oc+kTOeZ(PS!UZB z1JlvX{cbO)Lp92RW2J@i#~46rA!|Y$C_*ngN9K7E^Dx=ALIk&y|LWhkI`y~BasM`6 zdH+@4IY4k!q&NflA{^xnDIA83 ^FYN)4vW45V)>lfY)_xq|z`E=+*J zx!)0_I$;AN%V$xpZ^#0y)bfwlV4%`d@h?2$H|mnl$NETr_PQcF i(gTaK+Hu*=h}|Sw(s8 z9$Jom$QK@V7n{DTfI1UBjX%1nrd0=Mfb=)n*IPap%W(q-1JpwmkWktzW7CmFp8iA3 zg%$_ICYV=wZUROOiC;x_eDR%aHjeSXD{?{@yAD@Kfx-E9)!f1`s?!j-k2?fb$TLX9 zR(elJ{H>?(`=@(fdH-?Y>`b}ozH=0h4|{rBH&&Gk)RU(*97zIe{8nF-&wEL#LFEY~ zfMif7i<|3`=g;FnZ>Kb^rc+tB9%{#*x?)7XQG2GAq`L`pZZDUIESf1+#j?{#l6#vC z4z>Ro(@7)dxBGxbwyUxOd<3ATYr3>j?P!0OIg&g$l
m(Xc>}yAozu@vK6<_dU}yWod-E??e;6 zj(ji zJ{7{ zN*7jT(|@Z^_xw|PzuXQqxO-B5>A m0TYf#-_tsJ(22N=you7B*qq7HNc$g9-?rZDbNzHm|&cvl3Y^pE0AeJ zA5Jr)k?J`>PdM5K+Ql4bGH!r`WrAGI@-xFz&2~H~jp_Y6bZM1RN3TC0WjA}r)Q$`g z`JBrN)mf|0K8YO5sQ5>tk=(67@VY#az!J5-VRhE%$7j@gdYluhP2QEivdChKz6=YB z(e%gDxOV(OGtE)i`zd1HMfP?(-khFgSB~yk? 16VU{Rk@wc8g=H`0V znS6X~OyZxb&e1ZLV+C3qN%(mpiar-<)a2Y& E`A|g2<@@OT #5UlOceDETIdxC@CQ%9TmQ9tosr}U=-NB~C;3{C~ZSRtJzy;(iKe=OHtbw3w? zBRLV;XEZvjOga!m(LoSm$p{Ut3!&=Pme@Wk!O{*6PTU~HgShu4szmJwypclq=b8p& z4@%l}{MPYmDnlp_%N4f0a*!ezO#j4H!+5Z3Y=OZEfkr5gDBZ%6hh^xyIyrlZ>S%06 zo#=f7_}gIcG#oYPk@kIKXEcc#bb$==-_h$%7PN*q5wRr;1`CF-hvMITZuVJl{7MA5 zOJ*W8*qq&>Z%(3;0U8D7$zs4_*?(pS`0MB=;7lTL!?n5)SyS?*z+m`LqvR52Ngy_E zbV{;xRu2mNfTRDuLC-h^3lsAx3*{r>QpGTXu9G+4Ff>xKOQytX@C#@Sj>U_LlJZ`~ z3#Da>-D-1iJ4`p7jddbfEB9Zgu*!M_F#{!Kp78MdzoV-ZSlV$kuGW7`M9`CPpBVhc z?IQtR2x0sGb?!8bSEN=rT28_Ae?B&Md7>W(4h@A+ijg!=@_*YL+aA>ASD~Xe@sA5v z3|lwLT+|tsNf8p49PtyCUu^P~gQEzVqX7<;V+fR#GUaZ)Qk1!GB*9}@BlYQoNHUhg ztR*hH4Tj4236g|mmaQKqE=)D#*b#|9@KY;nqbJVvy!lSm>{hCsh!->>KL@@_fWa%D z8>APRk1meZw%lB-GNQp1Iasp?l3qeDa@@AIvP=^+8oNkhMWo%gmz)wDyrxFpbx!`3 z{_Chto0ZOBFqm0<`*%xJXOli%-56K2qV43lSAorfb@N}>$zp6s?!P`^jlVQgGw^29 z%~59vbGtp)(R(@+lzCQ~O|p{O9WPgV_tF;&vQxPG;Yh!)X3$-wbC6^hsxeZUeg;on z6AlRzwHXe=FdeanI0gb5r?f2O@jcUaW~fDq?>PaEIO3ESi#_I!iHeT~tpYcgJ==-Qkg<1h&axp+qYOWSJ zNDs+g1Oc93ti6p~?$UZQ&cB3iJ2GQnDqjz@>Lz6H=vEX>c~;E6EoJgRP!aq?Qze}> z@7(MN>%A!GuBYflK%Sd0Ca>c>Wnp%-&CosY=RKyf4KfdKIF6NS?y=w#WGs}^XyE`n zAdAq*n%*VOwy5ub84R6_xrtBTRe2_+arHW&eag}2G|X)l>JFE;_t?WN0!mtUx##Db zupN)9AOmmS#Iz5^$(8caS Wk*cPFJ@=D9KGN=6a&W4wt=bXmpsESE^^{G1#Ab?OX09x|PjDwO~mm4t1-? z@N~NHGEdKO0gI_HbnmC887Z-EYr${fx)NdO;s&j=X_PzqLNeIhG?69aLPI@T!Tar< zbXGoUL;j?pzs8)~ek+X8E}`iGx(|kTYsVV#qu|%I5iFm3jJcM!4zj7ZvpLKn=57h4 z0?hqVk2z_KAL^jOj~O*8Pd9;J8kep(Yfyr$w+2Qd!^E6y%Xk)(XkAffl9RFyLbJd6 z$YFN*qhnp{8(_50 $axWoI zd*|$pS1< ;%LFoDp`o-S z0>GO*)WSvoZ|5mazq0GcxCaUf7m}prBiwqa!csJhkh|{Tl&|jIpWa~+j=26()E~Iq z$D2?R6`sHT0D?V|dL`y;?Z+)`Ijr~aS8t%+_lC7)LICBqOTYijA51)D+f54Szr RlZml(tK2s zwsLY^j1}JZV?U%wk^Ejq(t#_Te$9DuRjQ0X>#`e;;OIIbb{mr|3J(kYB0F{GkHa#p zl9ywFzN@xn3;FRnf-EaGx)E{hAo-%Af2(jsE8dNAyuQID%gmA~!;q@!!>%sLOnbl= zG$1buNEa2^b^1Zyy|Fq&INm HpATSa_80reKkY@JS{D4lg(GlcY7FeQBN`At8dxR zp3a?sl;y)g0j=aDmZ+K-+=&&48+1GhQ8jCD E#K|{gzLr`>u5_1LD?K;fo z-z*=?;Zh#`>Xj{14LWoQ^Fc}+rnmJ6Tt FTxl_ zG=ZxruU_LN-XS1^mbZ*{QD3} Dov_~`-z%W{xg^-&{ zlnO5g3RTAkvk^B+7Nx6t^M5Xef|8j4pAxhUSKW-FPDa;~Zc-5Wqgj-m%HLN_v!k2}RUUq+Kw+Id8&?+ms>ok(OfHI2Oege9Z70%>dWKdIH&+jWBEe#1-`DJHg zvi4(32j=hR5=KOhC%pX+@9+E%^iiW$?OzNvXQjs804l6}t?W3|wRtwFv?YHi3OiBu zGh2J}u`b`H54UOOS5-A1k^zDrPD#aM-V1G2U8E182m*-T`YH;1f2Z%ZYjw2SMhObY zz<*_!RorRE`4MlJ_`kd0x(k#ijcnmlyJ3FCEJaJ}^0Ey4Q+hv*r+WH<`J}rt6rtFv zr!MD4`v5ab=+dCMNwTAb6N?_UB-rUwd5*63+yYHZ0mFz|PFGF*?CtlJ^OFL>ku{pe zS_|Li&U+zQIb^?vefl}=u4{)DJ0B7=q*r d EKC!QhwWO|iu$OnFK9yR8k6ls>1`fr&%Vgq zjBAjF$_3CDA(P_;9d`7|zouhJ$2}374uNpwX~x#?K@@0ACh#*K*NDaw3vvs5QRdWq z-}#w-xzL)^$o#WCboiN~{ )MLd MWyKQ4LxYiHoP8)Ly{Y3-)SlF zgs>M|o+a>OPG;*nH+opiVHa!4s1?{8z!9v?1}7TEq-et&$rs`S-U5Xk$_Ni|v?QcH z=4grbOj8s^{3t@x|G}^DBhliLdRyLtx(W>W5ufH*Mh5jpG~yWPt11;qxy^NOeh7k6 zCDqa^U4SjQI9oe>`dl#YKGU1HS p--7-v$vq0Jap3ikmnvG{CD@7=xui364H2y*7ab1drcx>V$-9l z hlzk6pmfN-ncQLJx;WMfyaHqy|NZ@ytAr6$U-o7 !D+rX^Z<=}#M z5?$hjK%`f#n 7*)%ncXPV@&zY>b^ zHkhMLPHzMYsyj1Z1(jT}&rvuUaFZGI0~UGkF`Ad&dM~79LDk=^rjtHSb_KJvx(s3c zppW6YXJxB9WaM@KttR4&s}9T1#xm2d3fIWJYHif-nFBrz@RkFWGO+HL&>FUDi@8A2 zU_;A1O+TA$s}O!@@VK4&e@pb?^tdk=-?{e^BvcP}tX0e#jdiy3Z1B{U_3)j<~C)JK`h#^*S;hn=m_4)r= -5ZMPWDfp)lhQbCO9z^U2Dh{n78&nj HGbqWo^1bo5y82%C4b9Av%AV!*SWML9;KNfsUZ)_-buoa)Ym8rFUm(_OA>wR2l*g z-xoNL*DBi8?VlpWE(sFW<~~&X?G(KySVDSY 1)Evd*7~ zfE~2Slc$`;tWW#E$@ndI(zhP+O=ZOG7CmK&wJ|-cuYUSB$wk-=iMW66GxpvdDHWPc zRVkgOX2BQv3hzd<*NShNyTn~FKY%`ZtK^HXxGgOZYZkKfu+ `zD{~JN9G`%W<89N^hbX=y!+Z>8nBW52T|EDacvY$D#~Q zltU!_#1}{NZhzZM#6E3?wWKC{-O>&Xll7LV4QB94W$E%F_m2#vpztbm*IQobj8`=n zTWSA4EWqeQd%#qfy9U%DIEoRmAcw}66VRUo65_oSSM3$#@uIZ%B?MVLoFv!>kegW6 z8a9pARdq+({w!X|cOr=A)q?-&Ju~$XZhIUtxARAMIFC(@9~v!K%0-rEM~m$rZ|8mA zomuG!4?xo=TH`*y2x;(jDcYN`&^}XcF{FjwTvvHNwRU5@kkk;xRKu+Q=jy2OcDybY zyH#R(I}X>hKx+J+Wz3FnA7qCd4Ka)weUR;Lel*+c-?>#x+!)Qkz6=$kkz=m>=Sx;U z922Z*vsj^2xLIX^`R>h(vA`q3aI*CtWJGE1!x$w#bPRu>R$I;M)xH7?^{z`6Amsmy z70HmXo%b|daz^Nvt9nvX0i$Z&6H8qS!oit9fr#NXmk84df3^OGZ> Ta&}`u^G0bQE*;duP7_ddc3aRrB|MsJCn@;qXB>I6 zm>N!Q)t?%P%UXWvAHbcd0(#DpPEV52;g(W%C(bO-8YXcMpLMq{*S0?bB#0^V#xO6c zJdNX<452%`3w(V?22wA)mIvBCwjjhVm;&0H{?FEHLo|C!lGj~hfCbA`hn_U-xq7 &>&qV7W<@9Y6a#84p@|H3y&Be-r-`l_Dtowg*o$9a7u=xhEXYvQBnB-^&Oz zih9#n1|fZemR7)P`3J=_(Eod0z91x2_?!EL{!C;eHkK;uyKY!e$G=QS-uaZlLR=n@ zbsgbD(D$(=cWZ_six&%4Kk?+0 ^{V=PO_6)JSFtUA?YtYEV>GcwGJ?@^Zlp`Wv84a%neKY4ZNP3VNfNhagi> zWkA?tna+0fUia}#78B7Bf9b6ltN>bH{l T${@Az5MMFz15exAE zGz}x$m8H=LCCoo}^()$u_o2MCs!=Q%87XV0dJXhkqr~<0^A6?z2_TZ|qMt~=xtudP z@;&@sBJ)INUG75=1#1g(gWI|Bp_rI#gzpZ7m6O({;fdz1**t@p (B8{lN`RR6QaL@AnJGGgvyVfXYO5^a}T~3tKP5Jy>R-`eEuM7qda*6 zho77kIC3qz+T^31tm&pA4037o>2Omf#&pKn@-*Ht5Bu>@SlYgZKroW~<_to%u zfD*tjfDg*5m0}e^Jn_MlVz75Mtlt{pWf^QvE+zZM+6u`v8@EM`+uPK(x6Dy4Mr)k( zfC#u#$}H&aA$sHY)o@ls2D+jOgc}C@udY?Fy?R>6p0<3=cwB@gkJ&KW+-pF{!%jjA z1xsM>N^^?pYG!6-0y_#Qr;XITpMsZ~dm6z431Bg JE3 z!^8vUWZiT=Tk%zevHA(%m+D?CZTtGroRE@mj%On#>EY3@Tr(kbrWVZ{yCL|zzgT?1 zWUSOI?Y>ZFJ2QQ)PO>!SJpKzGjD~zJQT^THC9nAOTzr@3;M#1n;J6~#z(-itXy{;K z&ic(K*p(&2aaKwBthi2U^EI3PIPe+v#t(!;9-8GfzgsDl5;v}>9 zc4Z%Be>%w`-grTy_pr>xbd{EoGnUVbLiNjJQ9yO^m$;V(oWT4D;n R7H!v4CNSoPNOSj5E?nnqF+Rr{h9j(dm?p!3F9HjP5xu>9hquf=RFbVnLUvW zNK(pfe|D5_e1`$}az1 q#F;%v(vM>oS$%4g$g;}Mv&&b6BM#tifnZK*b9H>(tX? R8G>)6?@R|cJSC9LO z#_h)abm1rjC}YYmEQ6{c8ZgcLtf~!1@sihU6JaHLY`dY}o1qU#gDE ofNW_CiU)IrwjvnPFwr$I-66 z5&UU^NtAWWIWf2AWl`V*e+BLr`Zc#>$+YurKx*8wWtt#X=~?F68qSHWI5(4Uob1-R z=B%+z(-rYpboS&cX}!T-y)cP~)?r6)ST!{Tg{y%weF?Qo?gdp79Dyv$sq+q+WzOb> zS)m$BY(N`4h|R679Z0Clx<>niYE||A775%?SKv81*uYlxi!N$~fW8BQSB^2t7T&tf z+OfOzD)@-^Kz$@z0sHfB+<}etnyNDw-awDYnq7xIrBB8yS1f~kb_<5zZhnIU5PQRe z3SWUzi{I!%txz&&3m ^XGN*3b|gn1fyRZn2%62U~wNEvBxr{?}__ z>rB8k%#38{tZFdaGqsPrX+TsbT8!uDbrXv31GkzzC?bCU+I1Mv{Q6I*EB^1ky^@+M zG(xfih*%DIv7uG25{ c)*TX*|3nbtnhE~ zuE<}Q6ly@)IcLRhCPwmQO}*0>qReyJ^%veg&ZCm;-*f7st;_S4sLUWm@^7=BAb*uC z{!|krvaNdxxn+fY!M;21FBFcUX)DM3f#J1PJ?DmO^H@l~CnG}-KRn4qQoKGt%Ld+* znG`0ucv-%>lj2qVXtg;0HZNgN!8+OyrABziX*7N(^n3pLWraaW?|5) @lbgq91eJ xl@I z3k);RD)~0Z#9PZ3@+{o6^pQqx4V9e1$HxHBL116SiB^ssaOz&r70=-MWM7v)O^|Qm z43cRcdhX+@2v-w@W}O={yhbb9C0%`8(bKD9Vh^6FJQUWrO9`ASsaK;!J<@=DlhC&y zO3hE@U$q}L)5U7Gk*d(YpQ9*PlG`G_%J-IVg #^zy&(7m3ah;F$W zh5e_#ze$iI!-J_xVc-YZV^#kL{*PAtvBd25R$L9KfGKA-wH|UCRN-Drf0(`ykS=e{ zu~P1``fgj|c4lCF%IIfc^Nw1gm*j#c{N%<|GDRav^m0;lNNOal4JL{6HGzG}Y-`lh z@SrmEzNfcfC<4HVWKS|>db{Roox}PmxA6STYo_?l`SM;fZL(z}Ta6bnZye6f`;eNE zAvQxtfNiNCz_)=jhX{a(YWGGc%P1oOLF}FwsPm_USu ~*sne1a1Jk)m z nI6R--W+__neQtOH|9pOn(8w)a4 zhn3pjBY5{?4A2+(p?(%ZK&X6~yLe*?(djye3vE<0O>U!X{n~hpU%fO6eC`&HZIZjb zO>$y*>-al$YF(iE6^oy`HM@L$B72Vci)4ilpju$NkwLaFZf|yWvXq)noXZ^0{j`5} zu3h6H@h`5<{tM^NbDlwJ^CbRkf|ISr`GQEk LC| zXTK6!EY#Rg+d=C=0h?{%#0+N$K|-J$S3(&UOatQ@tFt|-hT-g^XkNAdL3@QO!k4C$ zv)H%eNE9Z!hwHBR``3VPbi_5+bq(ZQldasG5g2<7S#y*Kt}p`6$%Oq}22Yplh-k5D zqDyf~=+{@j2P&!x m?EZ;wc^T+(jvQ+I$Mc~?l&T&us@^Wa`lwlDOI)3(z*&9 zyyl{Qe_?oyivNY5ApXPJJ@r`Hnp?&l+12^>y7S3Am}Hvb^MeSqR?u85?2k;asC9$ptM9?d7qRk;VqMxev9T&qhK?E1%& z7CKF>vqpL!0@d<+FEKUQG6cM_%A<6r5h%*?+nI%Z9ae^I$JkaAMW;EQUvt&-(VGt} z=vt#|2&Xs&&!(K&C_>f?yQ>D$eKNJD<#r)gMtoyD@DU6w%9AmJm>1G-{`qwOr2Tr@ zczx{Y-ssze5AhY6#48*6JyKmHguXtjbKvfq<6TmAr9IX|O#MdOwgt=IjFgvV@_TEx zkW0%O=9ut1! (gXVpOEvGZDHzwxlp|bgj*{cLzyO_e8bo$gc zG R1)FekY7i!!dq$; z($jXPj1Q*z(q!eHV>Q@te!K}NcEs`9znLh@=3%0ztVUW|wfgW6xr eKh(=v{p1 W$$@r4< RqX0n#M$mr94)jMjeznLCX6I z9Y%F$QIm&iz$SdfY0f|dad&g>)s?3LfQhhGpX@mTK|_@)4r%}7SCoXA@d{l3{aaA6 z!&Zq5hyB8D?#;KhX|S=6I!`D-)|@ubr5(U0ZBnssa;sMPn|!Ei=fnh|f3w^f=T>bH zxwNf&&Y{QP!Ry$XdN+tXRSmm7x>Jn~cvm*&*-X(txZvaaBWCE_i@_`x>}|4~o4vG* zBsJid;GLWsXN7rf9CR 7 zqD&lIJ-i6w1&cC02I9A;syUAVAQYDs>wyN1wSQTci5n=uoT+mJ99E*+#@V*=3M|@h zYvaDY-$#FGxk)mM|2}%&1gaPfZcP)(`QWn?Ri5AETjr|x*0BoMr0ltJFm?FeJL!=O z$K`snB~e@Gl8Ieh>b(<7zSJXa@xA^TEBpmpqlbTYOYd@dBX55HD9BD+@hR;!PV>~f zuG#J-_!Ea!#JMPmesnflO+?4EC-F^_X)SzO(3LT{RdBN*>)i+Wa@ZgOr=P`R6PQbx zsg5i>Pe?d7+vF$8{#ADf(boswY+Hu}VcXhgniRBsXUtYVtWy~^T^5O%nsm+HIY>m3 zY)9h1r8eRh@NDD;GJ8Z!m3tvBFGlKFe_NjQ^l<>&LIGt%b}_h3yVt!3>FNnHH}YA6 zOyqZxb3+h393H0;2G3H3kF(&~)V0g?I|HWJI01_w2t_qiyu{FZ+1^etqAtdU>nE-s z=On2`gEjy+FA!yAFIagLl2^;9liZnT&=YW~MOt|#I 4wHa zB~z6iE>(A{4)kwyYgxa+*FG59ejTSSFeOU0ZGeZj9g2s&y34F6UYlPi#GAkW?Ve6Y zkgT}tj?)1C!q$Pv-tt$n|CNc#KTt0p(@*qidOEb4!MEvJyL6`FJpc#Z(AE?S__9q4 zZCS-_x3y-AY;Zn|0wWOlD{HWb<=ZqlMb0Em2^xo$UrV#??zIE%64UvNembmeHP>S@ zYw4|%wR3}^0O@w`|615Mf{>o^B^_FARhLbIP5A#;>#0(>6ll`s%R}H@Vb42ews{NB z$5Z`ZttV5<9YYy7=SeFnAhrHpfr;>VQvSc`>kU0AkGY(g2lum-hi4+}rpY4hwf-xL z2{i>!Xq>QV^!&&;#+$USYGj~YNBOS|btO01Edc;hz8Nv!M1bOT5IkN)?f+NRnnSwx zqp)GwY!%RWpk{SEdjtBjVs&`QbnfuKN?XP?(Ynjj#`D)iV~0AG_U1)r-(8&Rjf(&F z#aryEKQ~U=BrqoFP^$<(dv(n9E3QT``TwePdgMGXjRQMDIu5Q?&XTW(2&In6nV!jY zLr?PK6DZ9qJ7r>zQAzfX)k?w_Iyb{JS{DUPQ Cw+aK{dB|B9t?fs(0+8aubT-aG?=0v#gva(`<7smE&U`6W<1|PKQqi?Oy81Cg zmeIWc+*qPK5Yk)w232vI-52kqw(>kHo?OxSFgQf(t9gfLRM^< zvfm}CCYf9vJpR1Uz>sq!fy76^{l8+Y4x0rdIP&nRJcTT;eK|hSP^ihFB=j+G3CdZW zqYT%x|G$pMG}lUI+qd#`2}* i#^u)bz80yADD#BuXA{}u;X+)XS{BV<65ji0xp_SmQ&1x# zNx|seqwlr!sQITJiOt1CPs_d@whKgF^|to46otK727Hl{O-l|G9ZN-je=3yY`-ZlY z$V1g{Qx|iTp8EMyAmecT$Li+u`{>{@>(tqPgTXj{ocnTBM~Y7`2ZSP3>lOPR0z1H& zg`#)Z7V>sU;jCkouNSy|XmGvBz)n9Ri|31wrwBSNoNf*HjWsAslW5oYUy&%;I!X#a zlj#!5956}f0r#7}h7S!Lcc6G(uLSk{3onMb6XiQ6cliUQAzzQsd^M9)CSDJtR3ONr zCJ8|*yRTd~yl8z5SY3a8P_5gh62)3UU61~CIoeFukfx#3|MmAP8xeCMOs)ePXTASa z^;$ldT9!Bsx;|iQTpxrZ-bUCGkud7k>4@vYv(l58Scq1~hq=#1Zd?K $5q+#F7h} zTFUK(M%MM~M^L-Chlv`t$LA=NJ@spOe6tKfIgGz@2)KlSgFnaG-g108taAmhPXxPw zm(Q!fjnsEM{P2vIwP2gcJM*=R>>-Cu-~Uc2$Ui7&2Tq287*y#82EBuUWJ(dPqyKBG z&))e-EZp#s*Z7)PA#kJzIDUjKzo&~_agy}Mz2;r*%eI1pz(FuT9c`@(W2eg6SQk}U zW8xIA>rejTZQyi9;{`wzI|OqZ#{Sl(Z)&W0(1AJ+U$bNhmY!b-FxvLVV8%`p^fu$p z;-+Nh`tVjc5Ge16onBo=H1l+!>totdKafDE9_(o}-wZ$0pb6g_M_Au6F#GuY94q?E zRll0uXhh)}Jmg8%SsK+U%L>FpY>xXsxV@?w+lZsLhOZF`d}}y;4p$yHy8Kvl40EPJ zb}otBQXOYTkKW`l3g Be+u~zc){-8 zft43=Y<_dJ(AwW-IAg;4(et`V&)4(ufQXwfP*SHq<5hQJrF VLHXNX-0o$!#Kcbi&sQOD{|PV{6VV;%sv@CyA&v{H`N< z^vCBfX!rmVL!U=HbUm-qNZK~gqzdv^AFdgE9&TexSG*8K %}s_Y_~wGbzlMdna^}LeFaJFaPR2|2G~S{)0{q1+Y(%<_ zbdiW6f<_YVNfj99d%Nkkb@=WXl<$w=mlU1Y9~phf?D^xGUW=6;pB%{?Fvm^Mt%L@8 zUDv -0#b88=77<^4bggu 9}{;c3nLQyGF=yV5oC6O7O>K 3rWc z3G8to((&INb&Wakc&uK>V8!(7vP_&6lZl@C`yX?zs?SN1pFzx{316X{zi%E}RAEV~ zU^~23)Uf=}G;nNMCdLc_k{ ^ChTYMEg-IjBOWRKNKY!z?O2W?~VD4N6R~|*w{?Brxl5C zD|YYHFBDdqgzlZLz9W_gNYs{JH0fIemqBeTc?pPiq{mSNztlhSkeBOle;XZk+~5h} zDF9&qQ-6aTPu$Rs(=$I~D(03A0sTn)ehVD8(gScN-wkf$Q&?Vrn)Ed9YeoMHy|`wQ z(6zs><0k|O`Au%WW*?!pnQ5M}`j(=s{MTy&;Q5y?&Jo~0-YT@l@{;mbv%e7e03;F2 z(~YXu?n?8q!^7WaHDY4`A#NY-`gEvW*^fn6ITn?6;#DGk(T7WX_JI`9jyZAYZdLQE zO}0R5+JDe%`i)9Y&knP>M&44K{D#_loNDisuJ+q 6Tj{zN<#weMTTPw;BO2p>qrQD%F+u~@piq6cf(x$aH53i&L96F zO1ur?6)`gV@?%5RnUkxd3LJka-udcCpV~+Z{&6!M5wqT}_1``YcNPZg*M*hp{FfH6 z!OP4noDRr0gIXpxVm;h;|MVvJlDGrCzb0=qDR9I^n7-=jVBImuvo>lak5U@RFk`1? zYZ4U!P0RB$-{_)@UuJ8p7DXMuQ&{+{O@xi)w@LkHUiHPj|Frbli2$`i4ovK@$6{5l z6<#j=y)18<7t;l2Q|T{IZjLS(AB8)xNC^mL;S()XIZr072Ny2QRjX-#c6a$AKLwdl z^Kwedm-9`mT*?Gv@tvCqUXpP52T);29NJM~USknt-(L$m&^??zY{}ZDFXH8SR9Uce z5)-hbW?0Hk_Tl+?;jMttw5H>$8n5MkJ-s95W;EJuIU`tBUN$%+R8A?394911t(owJ zY^0&l7tNf(ff4X91xslg&inofVN{}Ub}JfY|1^k=sYDA(-3i?6v}l3emt}qXb~fI6 z>qvRUwTb+cQq=1*V7T7yTW{C6^&WOPdrRtQvogW6PV=jYf3aQ}QM&sPBYq0@Q>Nn` z;@-EMY-}-M>XxDM9DY4rpUWy$j2*nN{o|6UpEyH&No@H9&p-Sg$-#bTQk0yJ2_T4z zcuh?X)>mKD>nTicmT?)mmXeH?tf?GhvX3%pNw D6~`f%g|e8T)wM*>E*j3 zwv*{5fn?BRx9ehc@w7!Y&C@P5gy^)Vee&Vgdc&}XceIymFj5d|=Tz{4-hjKrD-nLT z3;PWFQ+swdH>QxSRldWcXT&2o@LxM% `!9#FS1UL_ z0mwSyBO`AH
i8!V6!$IP;@%H`obC99dyGDgsoj0-d0%Z^A~3HViK2lQ zfp4eGK?GTT5)NSa%sWQg!_?6xzB2WwlK+pV@}r;=KtG+GEk9Hj-}H;I*tGpupY_+g z;^bar!Y&%Ag55O2r6Dt_fG%Wz#zh_qby-sD_sM!}kripOj@3D|ERmpI*5o!at-a;7 zH1?f%h=JB_ nJvZ(=a?w-%J; zgEa#WTx%6*{BY3M19@d-v({8gbz3D)Qr$RAzZS$Q0Z znyL_H>a|35&>lqeNWa79Pz_3~DJyKbh*5rp8F!5ei`phac(1-G;m6I&w|)7ogG$Fv zW17UYhtsX~(E7?8Ei|)h(uzaXwiDHmclmieCE !nzm=?NXotdZIkxHUMzb9D*olaxG>PJ2l97FP4bhv$ zbpEvE*=D^w?$K2xYSz~HjMZMivx@Q;Xt9O&%OQJcH<6(1lE>P_wn!!(TBmY-hek#k z{zN`Q^i+Dl9BB!H#p)gX3iZQXr|o(Y>oh>$$cN!qx6jZO#x0Sx{V7cv7Xi*C%~3w5 z=dWM$VZ#AW-y+VqQvz?Cr-Mg!7aMSsBz~F>9p2;hpT;@_5=rj+85CKX^s!MX?%?^K zcbbjF5E zW!{Fqiw{Pk_p>b3LcEo+P*z?MAO#imMD;c#xJwMc>} zt*q$SdBdu`K;OV!Q+H);R-J0aLX@G0Ij%0N*r$i325an;g3;mCQHkq5Q#N69g>M&r zr-%Kd==1ntlxaLS9S&<&8%K1|AUZ|j%ES<0?fH?cj&w;uSM1-W5fj@{<%#lc@AIWI zy!x{nKAEjE-TH7py!A uQg6Sx+kYbHspt1MU@`3(-o+bUl)c?>GjE{f zDg!J{e k}F=wnLFkCvS;3cx~(uO)-zp+?fvkfS7{zr@HM$bg^ z9v1%a;YoIkUz#Sqlj6`C?BB$%4i`r?KzFR{x@wU%|A9=c0GY;!1x?21H;ImJtu7 |xL^`h&N}d~Vxa$K3+*Pv6J+5xuTe!m6>$D?aq&cb *XTa&xOPtr)2hap)n$s9Q+ zlawM5?l6F5=$t~a ^~#k=ZTj;`m68 Zfr-EfeIoO|;f+!m)cYtc8&kZ#@h4jC zaj35MuCPqHm3=3%y%>IBVqRKPD4rJ;M#}f$&h*|-o7xGg7apoBRJIBiW}vXeg_ln) z5-eM|^)Zb|v$HM&SQgkXEk+e1WunVBz)++7S~KF$_BS3}1loxJN>I6-q!rRaGt$+D zjbk!u$BA6{sHqFhe#OUfVm^fcnGM7_H(eBKVrI|~3+S=d1bw=+wejn&?lRm?%f$z! zX;z~ o^mCuE1xF^4x4`Iqo^lix%?9K0R-J%SOm|~*X;R{pW_Ab{E*Py z{>XPUeeqd+87_JU-v4&)ZYSB_sYRc&`-1XhI<{NjVY6>|_p$VD65R?l{VKj9`!mxA zY P57vn)H!9oVU% z6!GILD5zZ)M;;tqe6Vx^W~c_h)8n^gZe9j^-Qzfd{03Nq8J02o^-w%!Xz$aHa nXDKZ)yZxI|5ge}ToVLTwT)OE@tLNl$tc29 %Fupo;{O<3N-bk^5*=Qh z)P+ybY?wa_(*3I3o8BCEROc~$Il|^j){zS>s1iQ3pPoJc{WvF65*D;FO*(d~U-Ps( z6Op?%ME;LeMnLkUEwL)kgwoW)KHky1!F% ;;Ckgz>9yugd(- zmM#TaabND4$q(E39tT`4eHdb-06*kq7y9??leH@ag#h9elSgY|n!W?Vp;p~?0v*O6 zzfA3S`wF56oI@rf&(UcFRq|;8eq=u~KL4BYon3as$u1=+n1gyCMjgODSnN+`$2W~X z6E{nNo@NwnloVPYHW6 svhDXUline9MO3$zNNWf4-CXoCMBgZ z(u0x=>^$S$ENERLglx+GO>v(rJ|ml=sXeqx*!1mp2W%Ph@Q8O>pWI;FDmxh%t(5Xa zd 0w;U?gYX52HUeKKAs*X`D!mU96=y$^{S#jkD8nz_!zj1Fc zv7pYvzImMip{*D5x%y@#=Tijp%6zx)D~mn_-70CGLBzWLZo53x+TmEkWS1V>6BE8E z$oWi7Fe08Aw{ &P4Ejk$z z2Xhg<_d$s?g5Gxk@Eq0-y8=&d&(A2_gyOsu(VoT_H+RPzIr3i`V{*iJeo77=aW2l9 zO-LW~g9z#0A52ZjDd!*6LICuLSrZ10ED7Iw3d)sL^!-PE|EC`pIDWX_8WS!izRSj5 zbaqKw9NwW5z7gmAIk?r;19s?qZxHF)B~(~?SdR1w1bJV+On*kYfZ+(9nkNm!;+;)1 z(!A3*`>JnP+(o*_1QL6(72m#g$#W5f`36G)-j*wo0J?UHT1gM?;*JMdlh`8ul_K|? zU|Vhp5q+<|x|=&fkUpWiJ#ldZS_nJF%SJiU5xls92;zb~X%bX2Jk@FouWs$q>nq;t zswaH&9wmsm kOS=(I8yA8GC*Q)NwTobli1TJ(X-ZQ_TbdR(8r+2 zOSf}{pPL6;Dp+4Pdssi?{(x_8Xi7-dp1{7^y|(EV#+KZLl@SN$k^>+|sFADUn}y?} zl3{?rIUffD! p-r;5qRLxm{PdVEkl?dp9m+;`X$i92vKGBv;^U1(s2ZW4qYj9FYrZkk8 z;BmOGm4gbAwg-VNrw3-qAYm2Mh1cz+OM M(vt1@Hy$x z@1=$C)@nQGdKyrQn-j;}rvVrgD^BgCR;*d*sj#cbgR+PZM$Wlwri(Fk)ly<~S?Qwg zHTFpb;{i!T`#$(s!z;iZsuK09;vb!&)j$cc7e)lG 2PMmvOo9Fo|tqttvnR sC!u9iNn<4qZ`Hz%> z9vNCB$&w8?9JLhv81iEe!Ud%9%O}b0sT#(I&- r(RVNsU8 z=_f`EaQ&_n57gQC7802b$}V|t!U{IL>~lAg%gup!B4;>Jyxe+$;X*CMAD-a~$Ht1I zNt8vk<3K|}-wD{lltff&A{2Twbj1dMW-W0d&y1VTJD=MS01=;+T35B>tUCL&I6z$C z-=zv=hv4-e8W}gDhV$p! G(u1PyM{_ZFylSs8b7`k VZ1fT