Repository: moosetechnology/Moose Branch: development Commit: 5cb9764eb687 Files: 19 Total size: 60.5 KB Directory structure: gitextract_8l3g4ytd/ ├── .github/ │ └── workflows/ │ ├── test-and-release.yml │ └── test.yml ├── .gitignore ├── .project ├── .smalltalk.ston ├── .travis/ │ └── github_deploy_key.enc ├── AUTHORS ├── LICENSE ├── README.md ├── abstractionsVisuelles.md ├── documentation/ │ └── Moose-Release.md ├── scenarii.md ├── scripts/ │ └── saveImage.st └── src/ ├── .properties ├── BaselineOfMoose/ │ ├── BaselineOfMoose.class.st │ └── package.st └── Moose-Configuration/ ├── MooseConfiguration.class.st ├── MooseVersion.class.st └── package.st ================================================ FILE CONTENTS ================================================ ================================================ FILE: .github/workflows/test-and-release.yml ================================================ name: Test and update release on: push: branches: - development - v10 - v11 - v12 schedule: - cron: '0 0 * * *' workflow_dispatch: release: types: [created, edited] jobs: run-tests-and-update-release: name: Run tests and update release uses: moosetechnology/.github/.github/workflows/test-and-release.yml@main with: pre-upload-script: "MooseVersion current commitHash: '$GITHUB_SHA'. (Smalltalk tools toolNamed: #mooseWelcome) closePharoWelcomeThenOpen" ================================================ FILE: .github/workflows/test.yml ================================================ name: Pull-request on: pull_request: types: [assigned, opened, synchronize, reopened] jobs: run: uses: moosetechnology/.github/.github/workflows/run-tests.yml@main secrets: inherit with: create-artifact: true ================================================ FILE: .gitignore ================================================ **/.DS_Store .DS_Store ================================================ FILE: .project ================================================ { 'srcDirectory' : 'src', 'tags' : [ #Moose ] } ================================================ FILE: .smalltalk.ston ================================================ SmalltalkCISpec { #loading : [ SCIMetacelloLoadSpec { #baseline : 'Moose', #directory : 'src', #registerInIceberg : true } ], #testing : { #include : { #packages : [ 'Moose.*', 'Fame.*', 'Famix-.*' ], #classes : [ #FamixRepCPPCleanerTest, #FamixRepTestEntity, #FamixRepTestSourceTextAnchor, #FamixRepTestModel, #FamixRepImportExportTest, #FamixRepSmalltalkCleanerTest, #FamixRepTestClass, #ManifestFamixReplicationTests, #FamixRepEntitiesTest, #FamixReplicaTest, #FamixRepTestFileAnchor, #FamixTHasImmediateSource, #FamixRepDetectorTest, #FamixRepSourceCleanerTest, #FamixReplicatedFragmentTest, #FamixRepTestMethod, #FamixRepFakeCleaner ] }, #exclude : { #classes : [ #MiInspectorBrowserTest ] } } } ================================================ FILE: AUTHORS ================================================ # Contributors to the Moose project include: (if your name does not appear or there is a typo in your name, do not hesitate to get in touch so that we can correct this) Aless Hosry Anne Etien Benoît Verhaeghe Christopher Fuhrman Clotilde Toullec Cyril Ferlicot-Delbecque Gabriel Darbord Guillaume Larcheveque Honoré Mahugnon Houekpetodji Julien Delplanque Larisa Safina Milton Mamani Torres Nicolas Anquetil Nour Djihan Patricia Totoum Mandoum Pavel Krivanek Santiago Bragagnolo Sebastian Jordan Montaño Soufyane Labsari Stéphane Ducasse Tudor Girba Vincent Aranega Younoussa Sow ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2018 The Moose AUTHORS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================ [![Development](https://github.com/moosetechnology/Moose/actions/workflows/test-and-release.yml/badge.svg)](https://github.com/moosetechnology/Moose/actions/workflows/test-and-release.yml) [![Stable](https://github.com/moosetechnology/Moose/actions/workflows/release.yml/badge.svg)](https://github.com/moosetechnology/Moose/actions/workflows/release.yml) Moose is an extensive platform for software and data analysis. Moose is an open-source software. It was started at the Software Composition Group of the University of Bern in 1996 and is currently contributed to and used by several partners. It provides a variety of services such as importing and parsing data, modeling, measuring, querying, mining, and building interactive and visual analysis tools. ## Documentation Please refer to the [moose wiki](https://modularmoose.org/beginners/install-moose/) for the documentation. ## Installation ### Get a built Moose Image from [Pharo launcher](https://github.com/pharo-project/pharo-launcher) ![Download Moose gif](ressources/Moose-launcher.gif) ### Load Moose in a Pharo image #### Latest version: Moose 12 Execute this in a Pharo 12 or 13 image: ```smalltalk Metacello new baseline: 'Moose'; repository: 'github://moosetechnology/Moose:development/src'; onWarningLog; load ``` #### Stable version: Moose 11 Execute this in a Pharo 11 or 12 image: ```smalltalk [ Metacello new baseline: 'Moose'; repository: 'github://moosetechnology/Moose:v11.x.x/src'; load ] on: MCMergeOrLoadWarning do: [ :warning | warning load ] ``` #### Old stable version: Moose 10 Execute this in a Pharo 10 image: ```smalltalk [ Metacello new baseline: 'Moose'; repository: 'github://moosetechnology/Moose:v10.x.x/src'; load ] on: MCMergeOrLoadWarning do: [ :warning | warning load ] ``` ### Famix generators - Java [VerveineJ](https://modularmoose.org/developers/parsers/verveinej/) / [JDT2Famix](https://github.com/feenkcom/jdt2famix) - [C#](https://github.com/feenkcom/roslyn2famix) - [.NET](http://www.sharpmetrics.net/index.php/famix-generator) - [SAP](https://github.com/RainerWinkler/Moose-FAMIX-SAP-Extractor) - [Fortran](https://github.com/NicolasAnquetil/VerveineF.git) - [C/C++](https://modularmoose.org/developers/parsers/verveinec-cpp/) ================================================ FILE: abstractionsVisuelles.md ================================================ - noeuds - entités - aretes - liens directionnels ou non - labels - layout - enfants/parents - clients/providers - highlights - selection - menus ================================================ FILE: documentation/Moose-Release.md ================================================ # Moose Release ## How we manage Moose versions We create dedicated branches for each new stable version of Moose (see branches `v8` and `v9`). These branches will not evolve much. Commits will mostly be bugfixes and back-port of cherry-picked features. The latest Moose version, on branch `development`is not considered stable. ## [ Optional ] Release stable versions of Moosetechnology projects It may be necessary for the stable version to point to a specific commit of Moosetechnology repositories (Famix, FamixTagging, MooseIDE, etc). In this case, follow these steps in each repository: - Create a release for the stable version, following semantic versionning (vX.Y.Z). This can be done using Github interface. - Move or create generic tags to this release commit: - If you released `v2.0.0`, create tags `v2.x.x`and `v2.0.x`. - If you released `v2.3.5`, move tags `v2.x.x` and `v2.3.x`. This can't be done via Github interface. Use command line or a tool like Gitkraken (free version is ok): - Fast-forward the tag to `master` - Push the tag You should always get 3 tags ponting to your release commit. ## Create a branch for the stable version Create the new branch from development. Please name it following the existing scheme: `v8`, `v9`, `v10`, etc. If you released stable versions of a Moose repository, update BaselineOfMoose accordingly: point to a specific tag instead of the generic one. ## Update `MooseVersion>>#initialize` This class is responsible for holding and printing the correct Moose version. It is used in `MooseHelp`, the Moose welcome window. Update the major number in `#initialize` to the new version number. ## Update CI files Update the file Moose/.github/workflows/versions.json with the correct: - Moose version name - Compatible Pharo version(s) - Name for the release that will be updated when stable version evolves (should be vN.x.x). If you want to build a new image after each push on the stable branch, add it to Moose/.github/workflows/continuous.yml in `development` branch: ```yaml on: push: branches: - development - v9 - # new stable branch vN ``` ## Create a branch rule for the new branch Go to Settings>Branches and add a rule. Set the name pattern to the new branch name. - Check 'Require a pull request before merging' - Uncheck 'Require approvals' - Check 'Require status checks to pass before merging' then choose the version(s) of Pharo that should always pass before merging a PR. - Check 'Include administrators'. You may also have to edit the mandatory passing pharo versions in `development` rule. ## Update smalltalkCI SmalltalkCI is a framework for testing Smalltalk projects. It is used on CIs by many users, including moosetechnology. We provide Moose images so users can test directly on them instead of having to load Moose each time. Fork the repository: https://github.com/hpi-swa/smalltalkCI and modify these files: - /pharo/run.sh - run.sh - main.yml - README.md You can follow this commit: https://github.com/hpi-swa/smalltalkCI/commit/91d6f937173426baf03645e5a79fd488e0836006 for a precise example. ## Update Pharo Launcher sources The images available on Pharo Launcher are defined in the file `your/path/to/Pharo/sources.list`. You can also provide your own images by defining a new file `your/path/to/Pharo/mysources.list` ### 1- Test your sources locally by creating `mysources.list`. Here is an example: ``` [ PhLTemplateSource { #type : #URLGroup, #name : 'Moose 9 - stable', #templates : [ PhLTemplateSource { #type : #URL, #name : 'Moose9', #url : 'https://github.com/moosetechnology/Moose/releases/download/v9.x.x/Moose9-stable-Pharo64-10.zip' } ] } ] ``` You should see the changes in your pharo launcher. Please test your new sources by loading and launching the new images. ### 2- Update `sources.list`. Fork Pharo launcher repository : https://github.com/pharo-project/pharo-launcher. Modify `sources.list` with the sources you created for Moose. Remove any version that is not maintained nor used anymore. Open a PR to Pharo launcher repository. Ask in this PR for your changes to be uploaded to https://files.pharo.org. This last step is mandatory for your changes to be integrated. If your PR is not noticed or the source file not updated to files.pharo.org, please contact Christophe Demarrey, Markus Denker, Guille Polito or Stéphane Ducasse directly. They will help you. When your changes are uploaded, each Pharo Launcher will propose the source update (on restart). Please accept it and test your changes by loading Moose images. ## Inform Moose users Send a mail to moose@inria.fr and give the links to the latest builds of Moose images. You can also do it via the Moose channel of the RMoD Discord. ================================================ FILE: scenarii.md ================================================ # Usage scenarios for Moose These scenarios can be used as exercises to get familiar with Moose. Ideally, a scenario: - describes in a short paragraph the goal to achieve - gives indication on how to get a result - provides a model exemple (or explains how to get one) - gives the expected result (if an exemple model is provided) ## Tested methods - **Goal** Find whether a given method seems (static analysis) to be tested - **Indications** 1. Choose a method (not a test) in the model, 2. Follow incoming invocations and try to find a test method - **Example model** One can build a pharo model with a package (e.g. `Collections-Atomic`) and a test package (e.g. `Collections-Atomic-Tests`) - **Expected result** Very simple exercise with method `nextOrNil` that is directly invoked by test methods. There are two implementations of `nextOrNil`, classes `LIFOQueue` and `WaitfreeQueue`. They are invoked in 15 tests. Because they are direct invocations, one can use a "Navigation query" or a visualization (e.g. "Navigation tree") ## Methods with a pragma/annotation - **Goal** Find all methods of some given package(s) that have a given pragma/annotation - **Indication** 1. Find all `AnnotationType` in the model (for example `FamixStAnnotationType` for a model of Pharo code 2. Restrict further to get one `AnnotationType` (for example on the name "example") 3. Get all `AnnotationInstance`s 4. get the `annotatedEntity`-ies of the instances - **Example model** One can build a pharo model with a package (e.g. `Rubric`) and a pragma (e.g. `example`) - **Expected result** At the time of this writing, there are 3 methods with the `example` pragma: `RubFloatingEditorBuilder>>exampleCommandLauncher` ; `RubFloatingEditorBuilder>>exampleEditableStringMorph` ; `RubTextAreaExamples>>nicolaiAttributeFix` ## Class instantiation - **Goal** Find all instantiations of a class and its subclasses. - **Indication** 1. Select a class 2. Select its subclasses 3. Collect their methods 4. Select the constructor ones (*i.e.* new MyClass() in Java) 5. Follow constructors incoming invocation - **Example model** You can easily get a Java model using [VerveineJ](https://modularmoose.org/moose-wiki/Developers/Parsers/VerveineJ). - **Concrete application** Try to determine all the widgets creation of a GUI ## Retrieve the REST services of a Java Spring application - **Goal** Retrieve the rest services of a Java Spring application with the possible methods and parameters. - **Indication** 1. Look for the annotation `@Path` in a Java Project 2. Retrieve the classes annotated with the path annotation and the parameter of the path. 3. Collect the methods of the classes 4. Select the methods with a REST annotation (*e.g.*: `@GET`, `@POST`) 5. Determine the path for those methods using again the `@Path` annotation (but on methods this time) - **Example model** You can easily get a Java model using [VerveineJ](https://modularmoose.org/moose-wiki/Developers/Parsers/VerveineJ) ================================================ FILE: scripts/saveImage.st ================================================ SmalltalkImage current backupTo: 'beforeTests'. ================================================ FILE: src/.properties ================================================ { #format : #tonel } ================================================ FILE: src/BaselineOfMoose/BaselineOfMoose.class.st ================================================ " rce: 22987863 " Class { #name : 'BaselineOfMoose', #superclass : 'BaselineOf', #category : 'BaselineOfMoose', #package : 'BaselineOfMoose' } { #category : 'baselines' } BaselineOfMoose >> baseline: spec [ spec for: #common do: [ self famix: spec; famixTagging: spec; famixReplication: spec; mooseIDE: spec. spec package: 'Moose-Configuration' with: [ spec requires: #( 'Famix' 'FamixTagging' 'FamixReplication' 'MooseIDE' ) ]. self groups: spec. spec postLoadDoIt: #installMooseConfigurations ] ] { #category : 'dependencies' } BaselineOfMoose >> famix: spec [ spec baseline: 'Famix' with: [ spec repository: 'github://moosetechnology/Famix:development/src' ] ] { #category : 'dependencies' } BaselineOfMoose >> famixReplication: spec [ spec baseline: 'FamixReplication' with: [ spec repository: 'github://moosetechnology/FamixReplication:' ] ] { #category : 'dependencies' } BaselineOfMoose >> famixTagging: spec [ spec baseline: 'FamixTagging' with: [ spec repository: 'github://moosetechnology/FamixTagging:development/src' ] ] { #category : 'baselines' } BaselineOfMoose >> groups: spec [ spec group: 'Metamodel' with: #( 'Famix' ) ] { #category : 'actions' } BaselineOfMoose >> installMooseConfigurations [ Smalltalk at: #MooseConfiguration ifPresent: [ :mooseConfiguration | mooseConfiguration registerToIceberg ] ] { #category : 'dependencies' } BaselineOfMoose >> mooseIDE: spec [ spec baseline: 'MooseIDE' with: [ spec repository: 'github://moosetechnology/MooseIDE:development/src' ] ] { #category : 'accessing' } BaselineOfMoose >> projectClass [ ^ MetacelloCypressBaselineProject ] ================================================ FILE: src/BaselineOfMoose/package.st ================================================ Package { #name : 'BaselineOfMoose' } ================================================ FILE: src/Moose-Configuration/MooseConfiguration.class.st ================================================ Class { #name : 'MooseConfiguration', #superclass : 'Object', #category : 'Moose-Configuration', #package : 'Moose-Configuration' } { #category : 'class initialization' } MooseConfiguration class >> initialize [ self installLogo. ] { #category : 'class initialization' } MooseConfiguration class >> installLogo [ | morph | morph := ImageMorph withForm: (Form fromBinaryStream: self mooseLogoContents base64Decoded readStream). PolymorphSystemSettings setDesktopLogoWith: morph. morph top: 40; left: 20 ] { #category : 'accessing' } MooseConfiguration class >> mooseLogoContents [ ^'iVBORw0KGgoAAAANSUhEUgAAAMgAAACaCAYAAADsHgdiAAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAhGVYSWZNTQAqAAAA CAAFARIAAwAAAAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAh2kA BAAAAAEAAABaAAAAAAAAASwAAAABAAABLAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAAA yKADAAQAAAABAAAAmgAAAABMUbwWAAAACXBIWXMAAC4jAAAuIwF4pT92AAACzGlUWHRYTUw6 Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIg eDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6 Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRl c2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8v bnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDov L25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj4z MDA8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8 L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjMwMDwv dGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpP cmllbnRhdGlvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjQwMDwvZXhpZjpQ aXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+MTwvZXhpZjpDb2xv clNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MzA3PC9leGlmOlBpeGVs WURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94 OnhtcG1ldGE+Cr5PGQMAAEAASURBVHgB7L0HoF1Vmfa/9j7lliQkFAOE3lKpglSRIFVABSXY PkdnnNE/lhkdlZ7k3BCaZXR09BsZZ0YdR0dip6moBIiIdAJpVGkhlAghyb33tL3/v+dde517 7s1tCSG5mS8Lcu4pu6y91luet6x3ObcltVIaW3cvfeJK1/HohxpdvybNNd5vfTMyRqB5TjoW f8LNeazDOhbmcGT0csheREMeMWIOSOlrlLpP3zfOjW1d5gpt4129/BX30mMXuq+fVnalNO9K UW3EdPf/5Y6Eufjcr0e50Xt90RXbz3Xdrz7p4s6prnRYJ0Mjuku3hCHyEnlL6Ok1zvd1m9YT XK4w3nWtqrp822fcdnvd6eYsOsSYQ9JpC5NQW8LQD7uPGvsUQSZBVVp8pBu1x92u0HKuW7uy 6uLcHi5pO86uNeOaLYbutpiONiYpjt7JYCODosh1vqKBP9Al8Z/crGWfYWIS/+/mfOP4rW82 zQiUGHONf4SW71h2oUui23k/mTmqoS8il29xzNXbrTMzZmyaPm2Eu2whECuDVxfe+wZXaF2I dt7J1eupDXya1pmInGsd61yl83pg18fcZQc/a5BrttNvW4Qq3whzuXkuIY3RMT/nSsfX3AX3 7ela274N/D3Bdb0iEOXnJk1Tly/CJtETzr1ysCsd+So/esi8eXo97LtuGRqkxASotbQfD4PA HDUGnv/UxBwp/3UhqQotp/P73a605F2m5sUczcainbD1ZaONgMZWYyzmmLXoA66l7R4XF04w rSF7UXOjJm1fq6Bd8ns5N/Yt9t2MDDLbh5H7smUwyKIXMy0QnWn2XV+tIGaJorwrr665pL6T yxV/4krLvuY+fHOrOyeqmzYZuXOwZfZMhrjG9rwFYxjrf3OF9u+7pLadq6wBUjEXNlFNjxa5 xOXs63fat1sIytoCIFamiksPjHdpy4MureO9yuBV0/jbWwSVzUtSr7j2cUUg10Mu5z7sZk25 p2G8CydvbRs+AuYIQWNLQ8xcegx64D9csW0iWqOCjVE05xSIap0mLZ/LM0HRM65SPdBdeeDL WwLMGvkaJMCrev5kDD2YowleNWZB82XMscZF8fOubZsiE9bN+/2RW3e40sOf22rANwZrw994 9y0CBuaYtXSmi9MF6G4xR7eNeRSt4OKdfi763EZavl5NXL6wqyvmp9uvwTPZ59CR9HHkM0iA V7kY1dyPZLLRhDnSFBVeHO3i6JuuVv6+G/OGVlftTly1EmGbfNHNXnqju/jB3Qwvy+Mi43Jr G94IaKxkb8h9e+nSvdzsJTdjD87Brqi5ajl1Y3Zo5f3VaJB/d/nWdpcknon6Xl0wSx5IeSK3 kDayiUQTI3vj4vt3gcgfAFptz+B771VjgAWZLMKOCi/o+Gedqx/o6tFfMRFfRovEMEq3ax3D JFZfcGntk27OtHl2uiZdOHprG3gEzH2LEa42czFjGv8z4zwOe6+LAGAbNl+FOfmUy639pXPb PMRn5khDyrwJaklzhGYwK8c38XJXefVAd8URK0c6zBrZGkTuQ7VCy0lIJga+D7yS+zCXj12U u8nF+VWmwgttuziX/7K7dOpXXZI72rnkIeyRVte9uuySynhckNe40iPfcIrybjXgA+n295eA H4a4PFTn3z0WQ/w/0RrfdfXKOAxxbLzt2lya3MPYH+EunXY1zPEvNkeyD3PFF+CMm5k3MUeP zSdmEUTOt0xwhdFvtZuOcJg1shnETc8GF3hlhl+PMMpmNHHFUfBD8WFT7+3bxmYsRhGG+eKT 3KUT/+TWVI5Eg3zDtY4mUsX5YpR88eNu1O53MumHG2wolbZG4JtZxLIRkP4+Iv4W1z76Loj9 w2QvlA0iFdqLrtr1Zbfy8WNcaeL9rmMpwdv8u+33UdtKQ1zN8U/ichf07Y2LhQhkL0YxHkna PK/Mm28/kt6vQ3EjpnMBXs19dDfsiIWo8XFILA12c58TJgEmj/5EOsPZSLW7sT92tKitS+50 y9e82V19WNWeadbis5jc/ws82JG8oG40SavBtVx0oZs9+So7phlOjJiB2MQdCXlUum3HstmY fSUTTrWyDHHZGs+gyT8KTL3ReiZNPGr3O5iD/fEwivCfcq8uP9ptM+E3vJ/KfEjI9QjiALOc e8HFtQNc6SC0TeaptAuOrJeejo+sfjE5Gbwql98GMY8zeNWLN+iwrJFaxTEJ01w1WQn2nckk OqSbGOBwt9Poj9tjlZ5odXOm/ozvDwWGXefat8WAZ+LqBK/ybVcSWPyNEyMKTvy/asD3MsQf 2ceVlt4KZCqhfauMcWowtVae59a8dKgxh8ZUbfTu/0AMZH/moNu0eRyf5+KxwNn6vjY33j60 Q+1F2kMwS8mmLn+ifRc8lT1HjZh3I5dBArzKxe9A0jNgUsu9OMSnkcggzOVHubE7vMnNmfJv TOgd+OVbUfeSWzPNwC/t1e1Ki4o+BWXS2115zedcoVjjuJzrfLnL5bBxavV73ayH3mdMYtFh PF3/rzQJBT2zbLKZi/7G1bEt4vyxNjbFUQUgaZfrXvsJV5p8jvvSMS/YWPox3ZdJucB1r0pc yyiETud8N3vSj9y4cYdxTtFrfHOCNDtCNIsedkX5d/ghDlB65A34yGQQSTMF9ORSTN2xBPwg 9ljKGQ8VA67Et3zhIf49Zpg4R55PUp/khze5kInhbVoxozHXcpl9P3WqIuqxm3FNDgn4ZTxi R3LOQrRJG3ZJBWm3A5LwB8RMvuU+fvNor00wUv93tx5D/ILbtkVr/BeG+L+jDca68tqqjU29 ehfjdDhOj296Vy/2msZSLXFXIlzGMNZo4yoR9PR8+77SPRkoy5zhsZJ9mG9ZxF+mDjdxRKBQ GSia0yQ5wV10984215rzEdhGJoMEeFV1p2JjbGN6I4qfA9M+gLbI2eBH+XthgPu9vaGRTTyD lKbM58O/uraxRbRIxeVyHyKodbxJx6lcad45YpQ8npf7XJS8Cdj1Ndcyusi1vQFfaPmoGz/h Tjdz4VFMXA38LSIameOkx97QJkEhkKpn1Pi0jr8LuPl/XBf2WYxcKLYVYJSrXMcUeakW2ZiZ S/y42MZy1pK3M/bvxp4ru9Zxecbvn11p2p3WnVxustkthTa0e+Ee/i3EswXD5CVw7ufYF02I FVp2wFV8kp0T5tw+jJyXkTnxs6d7CaXgYA0bu9iugb4VjPsXYw5NYLX8BCp9mUmmOsfkCpN7 hrXeAeE/j9ZBzaPNY/cFN2MGMQ9zOUo71bw0nFYBNvwDyuYdHLvCtW7TYlFhl04h6e52vFwX GfSQNhMM+d/SJCAkKARaSw/P4dl/D8HuQ8InhvjYVj4/zW8nu9kTLzA4JGbSmMmYlp32mWva +P5KtIbgbYurrn3KrVp5eTY8EWO3n9kf0iLV7sUc93Sm6eVxfNEVCgtsTi1eksuChiMTZo08 BpHEFh6+ZPF+GHPAqy6jcDxZtxDk2xl1L1Wtf0+7JF1i7zVRSX0/iLg1I/wVsMJsJ+2vIGG+ 7TA3pePvOQmJSXBQzaShaYe8mz3lWte1EgO+8nNvjGK814kSF9ouA3b8ztK4/zcY8HJnh4h4 aclEsgsWoKFnIkwwxKveEK9XfuhWr3kjzHGTFwqMkWcm3L5ktqmNPfCzCCs8VBUMc4RXGl/k vnL0X0zbnrdgNJpnojGPmRrRUsZyhXjRtEYUb+8qlVthLOfKzG1SP95nOCCERiDMGnkMElRt 7E5DzbcbA9S6X2J0F6A1/MAnCLMoehG1/bhJKjFNUt/VufG7GuGbnTHlW67WLUmFwc7ahDh3 sSs9sKtJQhGKNTEMklES9QtvXu5Kk84Ce38a6FDBHsm7zr9gwBfeyhqHezFe/0/DgBeRbWnN XNilxMantPhvUQZAn/zR9owtGOKF4lo08sdgjPe7Lx/2kjGHhIKEippgpo0VjOXSCzDgvWFe K//GzZn833a8BFv7DrIbdzRmqJY5NHqUMVxhnwm6M1+TcALcCnOszmDYtvx+st0jzL19GBkv I49BAryK8V7JhdsySqIHCJDDqmOhlHztddyOxdYXXaUbmIV7US1XQJS17GvvT5zhn6teuwD3 sL5ieW4LkfiChwFTZ/c2CD2T+GDhnKn/zDKfI9FW93kDnqhxrbotjPZfwJF/d5+6YxtPZDCV iUW74wh+ybSkacBF25FH9UOXb/83xnB0kyF+h6vFBE2nXN0wxI05mh5r0bwwZldgmBOdRUfX qqjuujfMd54efp9IkLAghYEWedWtXPEEwmylaRQJsjTZBdXxImlAC3AI4FzhErEbsTBrZDGI JLu5WJfJnjgKeFQ3VVxP57mWwnbg14Jp7Vqt7LrrK93lB7yAEf5UA9/W0TBqz81HM9yMIb7/ HzAIvwlsKniDPf9B1kqfaATeVwuYnSFbA8K/dNIDbv6PDuf+X4FBi2ByDHiM0ULL37jtt8WA X3Ssx+T0ZiQb8GaIZ1pSmQVRnjXibe9lLLoRKN4Qr3ZegSF+lJs7cYk9u6XfoGmam8ZSMGvW IiLmxXdZNkI7hnkcfRXD/H4b6+dsZsQUE20+ZCfm8o+7bx5PhrV7ySCr2YO50cCzMXgRf2z2 oxJKnXuLm/v4HozpiINZI4tBHB4StSQ5HQ8VLhBcS+XOVS7fdQMQah/zrsjbFMUrXa3rLxxJ qDB+xCZbrt04nmbnT50OLLjFT3KlMgeX4gqOk1+en+Mr3fSSX+zTnwaQNhFhzS8BvSb9I/c9 nes+RwAyGPCTIIBbLd1bNzPGgqlGWusxxGM3e9llEOtvgDZ7GXPIEI/ck4zHCWiNi6zrDUO8 74NIAwG1PnotcJexE0ySYV7p/LN75TmvkaX1F83zUCxXmArxc0yRC6WP2NXKXS8Bp141uCzG dNHeaKxfYPusNbbKt4xlPt9mx44wmDWyGKQBr0iHroKcpIJj93srFZMwuWIOpUvn8ivc2meA XLR6ealNhvdkeYglb1UJKSgiufyA5zEiZ/kIO3Cs0Haoe8t7/sHOLd3cvy1hRmmAJpNucGtX vxE48WMz4JXeXeuu0bc5GPDzgV17mzaRRhoJRqa0cCD2Sx6cQpbA7dhyF+HsqBqcaYc5tBxg 1ctvxIPH2Iq5edZgiNvANL2EKPcukzDM2yf3GObuIvfV419p2B7+fCWO7psxEfZGdbFdqfz8 KwgxvIoMt2IgmssrppDJ67ARSRXS3KUj05s1chgkwKuZCw+wIF6tTKSc7tXTn/vpqmP8SUto kN1z1MJClNHimElAeGmQ5T3RElAzLEXgaAMR7ZxJRNi7bjODvVMGu7vYXXwvKh3JqPv224IB f3PeffHwFSTlzQCzfxKvj1IqMOCJwMeF45htIvBLPmSwTfCwL3Tr99qv05fBEBexdiz5GILk bmDVEQ1DPN/yKi7Zj6AZP2heJzueMQqGeN9umWGuMVo4GU2KYa6I+ehWbL9fk7XwQ4OXGsMg GD73hx1gjn3M7lP2Qz631C55d7HMXKLFJY+Yq4S5VKsnvzTtX+ni4PTNROj3HWkwawDisO5v 4pcMXrnC6eB+jDy4o1Z+AYP5JutI3LKjDXyMwKtWcRuacuZP68NIxrqHT9F486LohFKHNxrP meefsU6UNyUV2wz21m3xUl2mw1xfg92+bHoxJsKDI6k8Z+o3cFEqAn+3GfDl1cpTGosU/A7G 73fdp28et3kMeAkDNIH19e4d0GzXuFzbv9K3dldZW7PU9HptgSuXj8Bm+I8BDfGmx7a3Cqyq pcUrcHIAsZBQCfZfLTrPvg8vHdlx48bvjQDbFoaRZofxCg/bIfPFRPXnYFiuJcYp7Gzfp9Ub YTZygji/0DoayXWqfT+CYNbIYZBSCA5Gb0faKzionJ3fucunPuc++i0xzE4QJkOpOUuetIG0 l+5HUeUe3yr/x7EEVC0QvqSpGexT/sjsZAY7Ke9R7gOWEi+jdCipLzvDrgMRXn7AQtfxP0fg Ev0SmqRgdlH3akG3v3LjJtzlSg9ON80l/t0UBrwYVxpA2nLWInD86Huw32aYraH0jkJbHnth ruuYfKy74sClxkj9GeI2aE0vGjMdpyzofOFM18WYtWGYu/Sr7vLJCz1DMi7W5mdCKNkPuEul Ez6m6YvulWceb2iXWvVZjwjgm5iMajHF3IOecLl4vs21PJZOq0ZpAWrbh837MjIYxAhJk7zo YIJ/b0JzKBERPkh/YcMzbhqp6VQrEYOo2apB/oqwS6UXkW6PG6EKftWqPuVkcSbVdHwY8HJX B0b/c3hfWkySRTER9muKRgiasKFaMOCd7JvJn+dmpwLxniECr+TIbq65L5x9s6WJe6L1dtBQ 193Q34MhLqdD6WHyooo4M5LdG4a4ixiXeDrMMROKjRq2yZD3k0ZC6iuVPY6vMHd7XoZ51+PU tbrcTi+h2/u2WhWdwzBKU+RaH8FGWeU6suBiHD1pv8lNnyY7EY1vtdPrtV/Y8fJmJckx5N9N 4jhoYSDo2/emr+/nkcEgLpNALjrDcoAiKL1eeQ5D/ff2+PEorSZ8gxG1bA2Hka7223vo/zzB KwWjUOsMvrwoasGrovc24EjEK95IcDGa2YiwF9sOdtMOJsJOG8hgtx+bXswYzSDN7Cm/huEw 4MvXWIqGotFKD8+3lYA5t7nSo/uaZN/YBryIx+wDtMacRdPc9PfeDkQ53+IaivvIS1Urf891 ExGftd8tJu31CNb3pmcZ6G0pI+rRu38eDTTJDHOFmSJ3oRV9k3bpZbdM95ok30oQkPnRXCTl R7k8anRxRmO5FTY/EnK1ys4utwu2Iq2Od62KR1KMVWxrcxW8htYC5PafNtfryGAQD6/oC8FB wSuLQ+V+bQStkWkftSPYFrevsC3JWalbbgM2oc1L/XptsWkQuSDjeF/Lu+pLDMGWmD3537kH eV1E2DtXccGECPt9ew5usPedngzSiFDEdKVJ73G1tee6YrET71bBjOK48GbMnXthlL9pGPBG WH2vtZ6fdQ3z0AFvSss+7uo5DPHcm+yeraNJTW9Z5WqdH6JPH3JXHbbK4KU0Xy+CHuSegfEu eXgK55xHblrdDPN6+Ua05jVeC6FdepqcIfQFTZzWfaaDNHm97j1Y4bg4/yzBVxn0XDbaxo3e drz9dNkkQa/fwxzYnHgutbxBLWh9+7D5XjY/gwR4NXPZoWiCQ4mMoxFEtzWKAGQtSZE4eUkt vkhXu1z3c/6XqV5yRdEyi7BLetaqe7tpl2zvf0fSN7cQDU6S84BrnJvWIKhxGPoeNoQ4TPM5 g703pkOaG9SbhlFcP4J+/8mM4vIa5TeNwR74dwz4/3aWTg5hBbfqYNft9zdpLTEH11AJ1tKS nxK4/AaaVvW/giE+H+Z4kytN/Z71Sd4lHb8+LYxRPr0CyIZQoiXkjNQrPmI+bQaT09Q0V2rV /XdGe+yBAJMQw/Zp9x4sl81Rtfoc32P7MSW5PDZl3hvqOjep/tI8XDb37ggCsdO81t/8MGvz M0iAV3FyBuo8RgMAr6rPuNWvCBr4/iWo5Ej8gWTK5Z8HYuGrteYZRPk+NbwmmqwcXhRX3Nd+ LfWxK8zQhsgunfYnfvkXoAgRdiLkUf59uEVPMWIaymDPbtz4I2luRm+q65IWTlS6suYLBhXl cZNtUmh7P+nkd7tLFp7oDXg0kBnXjasM/qZhiEPslzx4BhpWqf5noQGJiBdjmBxDfPUcbI3j 3dxDHjEmVJ8ELdeniQE1RrOWvBuY9M4sYi4nwD+5Sw98MNNGfszDdYMHq5gngp7HE0VTEmP3 2seyQ/zx5adfAgW8aIZ6TAG5en1C9ru0/k1AU/LtsO61FDrKneZ/2/wwa/MziCScCCDC/qgI XjHGUfRr89Nv96jCrkiYdA+DV1LdcZ6kwmnALKSjVkyrre5+jHd+8OVFSeJ97PvAfP6Dfw2q u/zCXKDWciYNg12GY3QV/Ri+wd58Tb1vGPD0pGMqLmV3Es/xlNkDZsDX94aob3IdpJfzFA2v WN/r9P0cDHH1rbQMz1nbtWipXY2xZWu49FHuc6zrmMZoMCYaS4NUfS801OdM23zuAQzz6HIL 1OYKpLLjJex88Qo7O3gae1/K01C9ti+MypOJnyi91PLkU/6cbI6+dAqJn3mt6dHvdFs5WbRP PdLCfCpG8lsLDCtAHHKz+r+fnbapXvzDbaq79b1P0BDTDnkTw3gwatzHM4L36i8kJaoVKBMj /7m8I0lN8IrlocQ3NNBqXz3kVVyRGOr8LqWRVH3Kif3Y56VhsL8FhiLDVwyphMdC20Fu2oGf tqNDSnyfU4f8aHaPCE1QaOJvqf2EAU/6uAi5XsOAJ5qdb5kJPFrgLsFbI0IeyIBvNsRnLjmA vmGIt32WuAZ1qGBopb7UKv9Jmj4R8UkLTGtoPPraXkN2OjugFAzz4nnAo4lcm9wz+C9JLyLT ebU9U792zPxwB8Zcc4RMy+UfdaW3dxrDaj78PEuTLLc50lxG8e7hRPsbVX9hzCMPZpIc7mY+ dBAHpQ0U0evgTfdh8zJIQ8LX3sFkAK9ySP/aE+7lVbfYEMyeKpeVtAbrQMC1lqZQeda+m/YG Rh5G8ZCIJLfkYeCGmAOE1TrRjgnr2v2HnlezHYBvpYnfwTCkSiDrqbuIErvoIqLGexvhbrCb UZOKVhSTqDBaifTxWuffkZi31gKgPgJ/lMsRgS8t+9t+DXhjMKCbGb/LPgmdUH8qPtRHxMcU udYr9PsDXPtvGsTrtcb6QaowIiJgnX/RAyrVej5ZAnXXNqYFqHsdqezzjEgHsmWCRs63sH4n eLCqy+zSPuBHn+Z7OqsR4LU5ZC7zmQ2y4j4+0MqV35nnUlxSxNERxWfY9+Fc/2GTv25eBtGg f+oG9LIDXq2FsEdJsvzKfZ39I0QkkvaCFvXaBJOaYgmXf7LXKC2eb99iEC8By8pIh0nwphgk USALid5fC8ZovXY+zCfNpdKlY+mEN9hDoLG/c4fznTEJRqYZ8FO/Tb8O5z5/8AY8671rtTa0 yb+52Yt/RPxnO2Oqj95dME2gcy96cEcWNP0C7fl1zsuhfTJDvPo7V1tzGLbODxraZyDiHU4/ m48ptlwO82k+NI7djPsFzT+v+56x1RwpXlKvkoMlecZwR/Gi3sdOzz7W2YaNOZI7Pkl3cYrf BLtQ3kAXAbNY3iBPZkzAWBfbzDBr8zFIgFfj9jgcPXAAE4JqRZik5Oc0t333HYtk8UFC/R4X BbGIc0z30jLU7i20sHKN33WMvCkT983SGZov1vQ+TMyl+9/FRb9O6kjeUtrj/HtIiT/NJPv6 GuxNl7e3wYAX4c89gHTyyW/G8L0SbYk7ljKpZsC3nwPT3+MuWXSq1fCSJL9k8Zm4jO+FOd5h S4DzMsTRsOU1s4BTJ7q5hz3mdM0NMcTX6SOCSJpq1qIZCAhVfCmTlIkhkWKYZ2vR9Xt/LaTz tO61O0JpF6ARYy9YjNPE2vTsvPn+o1y9OkY2X1Ld0R1wKsGVplbLPJeCWak7lHk4hGuhkTNn TdOhm+rt5mOQoDpzbMslrKtiDPXaYyzmWOAfPhvclnY8WKwhkIeqjh89TjyDTGMI1aYt9n/T +iMwBqKHlsObUhztYVbwstgPfV4CPCi/LINd66aBFTCYi640zSYClBR7rU3F62Q8y4i+dNqF SM+3csk/m23SSbXCNNnTFVuIMyyBAUhNb2n9GQQ3wRvi1PBKU3KakmPJBbvUriGCCQXxXlPf ZC+hrZTgGcXNhvnDbm3Fa9JSPxHzcM9FU/3YtET7sSIxaJ414CX6SwtOlAB1c1R/T7DFVP8v SbZ324/xsZDwe57M7QQIrUCxUmQS0yJcKINodtFN+7KZGCSbmA//J5wRnU4E2AcH4+gGJmyN NwgbAzEBwqXqCJ+Tercr11bYL2HwS7M9g6x6+WmCTM+YF0W2SK2yn7/CIIPbMNhVRDm6xAx2 FUArjDrAbb/PZ+z8DTXY/c17XqWx9AzySs2ZfLNb1X0IffyBax8rrJ8wBtS0bSExo3ARUpw1 8RCSGeJd/+GitYcAqW63c2WIDyTRe+42vHelzDBv3+F8cD8QiUidhFWUXOS+dNDagQ3z7PLe DoQfulkjY8Y5yrDwhLv2DlzxNM8+PYxSrxNNrxLNZcrkIZNtGZpB0Wms8SFAbI6TTg+zVGxj Y0HIcK/1+Lt5GGRGlmG711FH0VcW2GADmO3AIho1g02BsFlmK8+Ij4G84ORPVwuDLxUsyfyV o7s45jE71rMMXpVhNA2+GamTvodL8/feYH9FOACD3dKv+R1bYqM0wQUglIjhqwcT5Z74AeIX fwuO5/o8kHbI0j9Ig+8S3N7vBZZ9xLlDu70tw7lGXRuhM/bMXE/LC9L08xYxbyWVvV6+liIW P/HuYsZmsGYL0zggX5xq0FaCKY4fdvd8rOphEc+rFuZq1SqM9OhlNIS0fIwm8QwSsobt4OQX aFQJOGBWeoibXDrMvt5MMGsjTbw9wvBfguRJk3ea50nwyqVLXbz8D3aReecwQtP99erVXRlU Bp5DIvJ55E+3lg2+3of06GoFTxbMlCCkckUPsQKM8icN/ppUzkPCKeCIwa6SKMAOtddqsPe6 K8xsjgUxy9IJPNPJRkGEzviLn5p/tjGpSffT3eWPEDWHWSz5knM3VgtOilyLIuZQNq1OIKqG 00Ktb8Tcvuzz4iEozBxnKSZ0v9K9zB8VBJw+Zd1e++Bq5pGavJIHzGdS9QyiZzsns3NeIQ0o qZHYaDArJndOxjqt+Xr+m03xujkYxONeeT4SKpfIe2W5V4ngFSVCb1YwA8kzP3v+mP214RcN aJoKXuH+HNBo894T86awRFf3EIwayJOV3cEIUNDn0gPv4Vgi7KR1aw16XJhBuvfpG8Vg172a I+Ja353ivi2OYv0jHRbmlitYZT5VEjXBX90y+oOuzNqTWQvfZppH2tKuETq+gX81xoJ8Mx96 LwLl9EbEPE2+7J0J/D4kjMuYtbRoHNJ+HwQLQ8c8xYUl/fTKa/mr0SxxbjnQikOkXKI9/LHz 9ce77L96yCuMi4dZog2Hu1fLHTYTzNr0DBI2kW+dcAxqVrWvgFdlDdC1evHwir9B8heKeLDQ 9AoC1sjwtdZXmmQGfS6nlBNYiImqJxNc26572uHB2+JP7v9VW0arlWvsnNT5FPfzBntMhF31 tkxavgYJLq+Tec4UEV/6FbxSP8ebsxPQRl4jilHUliHBj6Pzb+X7JywNpvNlpdDvzuKnG0ih v7yRhGn5XP0/xtDf8gxmmC8dA3PIOUEgFgO72rXMRRRwUBuOa7VnTPeF0HeAqD0syseP+j5k c+I/EMB0ntZqBHqFBhTszBEAtpYdG7ZCiIDalvWLZ9O5A92Oxx1uhw0sGP1lXofXzcAgM/xj 5ClcLEmSL+DdSRa7lU/80X4QETHiJvnN8+OaisWlf/YnT/d/wmsw2OU9Seph8VQLrtJ97JBF s4eGJsFgt80lo4sxWplwGezt01w0ITPYM6M23Hc4f0NEXF6n0tIDnTtYEfFPY5TjvYKoWgnI Vbv/jTcHmwYrTb3Dda48iHt/DyOddTAIh2ondYbbLnTTLr2tEYEPXrHh9KH5mLDGvJ1tHwqt SH4kSl6GOZ9Lh3UOaZg3rnWcp52ItJ5Ci1KF+IVKM6tefcwOKZmKaBztYSUf07qvsqjn0iI4 zXXQVvNmINnUlgOz6o8jpHLEilSXwGf4bgaYtYkZBOklSVxahNs2epsPDpor/DrWmJczeMUA QThqe+89moFiqS08I62Qyy+376eGA+yTBtq/WY73JFf4s0koMV+lPNl+mDZ/aAbRgQ2DffL3 IVoFrRRhJz6Dwa5KjzKw10eKNUfEZy37BAxxF30lIs569tZReHEKr4DDMcQnfdSpWrqMd/2z 1A7S1SvdHwZyrQaGsSkpRezi/FFsnHmfReDNKyY7Bjg03Ka+2zM+eCDj+TnbW14MqoqSsyf9 zJ5t2FBmur+rLZKCjKThcy2PuTHX4YlSE7Ttp+Uoa6pfbE6rE+i/dw8bDOYc82apVBAeTQWO VeQ6wtOpLb2H3bd+7ruBX21aBgneKxe9BSLem4hqHUIU8WfBwUzVhqEttI/nt+0N2yYsRooK HmIt7sMg4ihNvmFcvCjypigYlSuwpoEWgonrM0iWEo9rTTsk5dkcNB8MdiTekE0wJgXH4wUq LWONOKnpLa3/Ak7X8teaG8X2ZfX6TXiMKPHJdgEicnniJDz0T+9FKHOmfBdN8ibG4NZGBL5e bfUReArAle4blzG1mGQY/QodL16J5pZrkP0bMcxd5cLwy3r89dI+10pBB0FgG/NH8fgl1ve+ FwpzEJGwqHQg2St1hF91W780Icx5A2bVf2nH1QWz0mluz52OtEuuj4Dq24cN+LyJGSSDV4k7 06S84FUUPeCe/8Od/uEzT0YI7hVzO5Gz42MgNRYtpyyXVWtAKvuUvWR2iZUBgl5kNMa5/fjR Z842HzrYe6l7Eayqv7v0a9gHGOysx47zZ6P53mEELOIdqDUMcbTNJUTknbuX5aekplMYWhFx wZFKJwmLE0+2NdmBkcyZkF1U703TwmRzD1rGscehbS8HEhWQ1CEC/15WkjWl0ENhgxGPaTOe beai90PMbwPiqVA1Hqj6F11Ja9V55gB1Bnq2nu89LFKqSBQB0/Aayq6oVxbbIc3LncM5wSsW VZcD6yR4YCoWwRVYDKcW5txDbIa+8w8w0COMO9X8TclsFpi1CRkkk5DaEDJyp1hwUCrUJdeZ 5NcEhRb84kmsdSCMPN2M8Z+/QqBJrT9ZGXzyUW6Jl05ItVo3sOh2FkSpcf/htoaR2j2XJbVP QpQK5nF2/goIaWCDXcSuCRbhlB6+iirm1yNddzOPmDYS1dJgac/S5LlGzAZ5YKSBmiBdsDU6 plzMM5zAODxpEXhVYldF9nzLTWioDhsUY276sE7j2U2bUTY1l5trsCVf1DbZS9yrq660wxvP vM7J634h4lY75swdcZwICTCN0iLZIqnm5c7+yB6h1t21gn6vhbHoshZOuV3skOB21gdjVuwh l95gHk7zZkWnuc/c3uZh1nrMZbj/Bv7ddAwSdjNtG30cEmx3IFCdiUpZk+y9VyHdQA8SEhDr YFT5zCWdYgog3/8KaQxq/dB6A3bhRdH+3VLhLof63n5fO6XU30n2Sz8vGbYv4XKMKZBmBjuL gAptsO4un82u16NFZIiLkC2PimJt0993G5riPDxDPanp1fJ3XPQ8EfFJCzz80j0yjdlPDxpf ma3BJyMaCr11Vw9BUvsU+rAGvjCKFJWlt7CYah/rgzScYFpopeBcGHcxz7AXxKyNTPWrqrJ3 eUhEf4bbgrRvGbUvwoN4EafWWHUYlx+xS4T0n+brhd6sfoEtLFj0pmCh7EStT1cLsTG9D3DM 4c1StRN5Ol08yY0dd4x+dg2obp9e15dNxyA9j/FOGxwtbIrje91tPyD2QOuPWNL6nqaKjUFy z7r5YHo/8etOZimzS8qvPAZzrDQJVeAeLvEMErRSTz8Gf2cSV0YtWbO1Mn55DPZOIuxJHYM9 W8thHqqb0RbgbhFyx7K/Y/Lv5fmOdGsxxGVc5wurCb59EJj010g/n0YjRjKqGrwLPb+KmXh2 MYm8bKrAXiv/He7ZpjXwbJkW5+7H5vkrg2eCaWbw6hm430VUjEmTf+wxzKs/gVl/7mbATIJz 69Xme7qp1SYi7LRMQWevcCteeNIuE9J/el0zY0A5Y7Rwyp/DEfXdeh2mDxYo5u/Lj9/O62Lz dKJsAAG+LNCMDKrr2Ne5bSIGQZppEi5YSFExNmYpowgklaP0Wmc1cJn4Xi0z1gttPotXg5lY sbgef3qv4/Uhm4ArjkBCFdmazdugQCNvqPeHi9e5xkBf1C/g/lU6gcFOAbV8erk/cjbMAeHq uZS2nmu5GkmqurVVM8ST+nxgHlmp+33fiFXMreM3tBmToK2M8Cd929W7WQOf3OGL2JFCn9Rw JhS/a0XslIBohL/Yj20ReJgr4gxAdNeFWfDMqYWkzw3pU1qfanwuD1a+5WErVB28Uf1dL9hI CQmn0h5ypEQFzyABIvvzEAjQhJgpJYAsWhHNyPMpD6hn6KCT+rvTRvtu0zBIgFdF9trIF3bl oQkOUh4nhUGsZQwRHstrEwxIxzoQ6ElR9Fr1Gfs5wK9wbPNfSUPNWFLLygBxbq7oGQTqbj50 WO8N0zNRqmCeun+GEHPeYKfCuQqqlaKKpam3ttxDvOQcS19XGruM6cqauWgNv0Z8Y6Wmq9PN KfSXHrzIuR8eA0OyFJdFRiI6ZQcX2//KjXrDXWxKejx9r9DXD8I4p5ph3o5h7tIvoBkfzqDe +o9LCOLmWyaZbab0nnoGr8Jc9zvAQfNQdMOEHvMTFk7N6Ds/GU3Iw2meTiB5jphLwp6VaiHg 3O99Nt6Xm4ZBQn9jVKTAUR5PjktZUTcVwpNUbcbiGXb+zO0t5FT5hVI6KV94KlxmwL+E9Ow3 lZxhcaJ5VxTIOlSpCs33GPAK6/4QjNdo1aXYFFQCJAtVbkpIFUndgSF+IwzfUzVdaewR6ewd U2fas8k22Sip6X26FlLoSyXWwE/5PDj9VCTJs5YdLI9Zmk6CYX5HAYbZjPUlRmSFFhnmCspe ZVcrDZLK3ud2PR+ZH8E3GcxJ1a8idJBR4mBW2mACzE23QxB4f6avnIMGSeo7Z5UzRRk9WiHM V27Rn5j+Bxl3IDkCIMp5b9YmglmbgEEYUKlElapJ05NwV6YYigxMJO2RNBIN/dBJ/vs2lmJx tfp4iI+jhEpYS6DWMODsU++X4D2JqQkbFk/Vqnu5E470rkRvv/Q+Z8hPEIMZyKxyFKFJWqqC iksPRFPMgmm0wyup6SrW1v0Dqnkc7GaTzi6PlqY7uC2HvM8GHGDXZsDUvzkUsat2kUJf/kmj Cr12eCq2lhh3rTEXnuF/oJWgi7mqM1i6PrduzM+2u4E4WSTFZW1LBGoCqA02PyHAG+fYTUTM YXO7o9v+4G18F8LF/Sc/7udUXJRc72EWyNC5U239isGsTJhmh78ef15/BgkqtzAKeEVelTJl hdHT6Dr/QLf0VvHBQxK37owabud4JgC/ed2KNQyeZRq8J2kNBoE6NN7ysrQX97V7hWtv6EjK YE/rd8HgLOaBA7teJfmOtO1cgSzY7o/gvv3ABhVr29D+2Hli4MyAtyJ2k88GSlGFvgWvUo6Y CX1MkTDFdlRqcgvM65cUbOg9QzHwiBhTXpKOVquuJX/tEXt/TUgXsU+9XxqeRlsXojoCEojj XH60Uk70vk/LYFZU/AVZBSQ8Cmbl93Tt2x9nBwba6nPWxvz4+jNIiIzmBK8YAcGrOL7TdnGS QSdM3dyCPzxNJ5halb88Tda4Ov5zNeRh8+G93gfvSVftz3y/wnCuvCyJ288fl2HgXicN8UH2 gwhQW6+VlnwfxjgEmKKZjZgs1Al7JWo76dLk4VdNH+KWG/SzMQkeK9lhqkLvkmPo26uMAYmQ 9FWaLmXXrtLSb7vS3e2m1fVs69umzfAwqFbbzxwhsiXyeXa5fXa5XSqk/fR33RDgrWGkJyzO 0rE5Ivq5rNp7XwFWyjTc/L+7m/jPfdiTvjC2S8/s7/Kvx3evM4MwMYIBpUU7EUw6kaAb8KpV mt5LsZA41/xkwR9eJ9NVg+8X1zzv5D+35uen+ZSe9wyoiEGr4eRVERwSP6Up3pb1bPK46FqW ZPjgdLf9OLYva/+Awb1cAdcmmLheS+gfdYPdHnZ14e++DL+et31Nhwu3h7yzJNoLO2wbGLpu blL1uV5RYbaPuGiM3wfeng2vWPAuDefmDZjEbl7SABZPYZcvy6VjzGzAB7hQmLrKqhcYN1zx HK7MAJd4DbJuMiLaEfg4f77c+9d5mGXerFPMc7gJYNbryyBBBSbRSaj8NzB2CdK3G9viBj+E feCVfTnd/6Q0b2FmMUnMQiltmONtiIE1iM4MadVJtnhKEfBCy0S7aPC++DsM/GrpHxCbjNGO pRjbhZvhs/0sXaRt2zz9WMbJirBr5Z8WDH3NpLKkuDTLZmvcW31QtoL2D7R0Dhg5TR7n32O2 zkWJkinO3bi4gCJ2nzeGFmPpmYfTvItVWsPvJCV3er17qT91KA2daYQ7f6sicqwuFPnxL6nt 4s+f7v/0es1gVlK/DmguWAbMwhOaj463wwKN9Tpn4314fRkkwCvtWCuDrNCKinR3ZNUykFx9 4JWeqyGh8riDMeTkuZDfXJIp4N/Bnj94UeopeUHQqhikVp5kXhcR/GAELAa0GENEUG7JngTd fs+OsKwPKWMDsW5c6SLVrp+6FbcdwARrr3BS0WF4redOR51v3SqFqPVgnXydfgsauW3UbDTF rhjmvvhbnP+E63yGFPru6y1mohq49XJCmjvu3qW/chcv2wUvn18KPNj4hN/EgLYlt5wnDGmO 9J7hNmkrxb5YPmrCD/XLZfe008PcN19LzKv7Lu24F2jO3ifygDKv+aL3Zs1rPnjjv3/9GETE JnilwXfueNY0MCEkndXrWexjAGkT/OG5PLBM48h41Kl0oRbgl30Y4CV4UYpALHlX5GVRmcux eF3UBtI/YgwxkCTkrKVAqfQBmPN4SzNXjCFXqMAc5xJ9frfljs2e+BM2nryeVX+KsHMTd567 cNFUI7T1gSzWqY3wYqkuaI+ZCw/FQ/j39KnGviXKIfsR9tGvWKq8lszhM9iC7TNE4JkLHA22 D3zxFJdPiMAvPdsH4BgD83D106ewSKptm70g0rAdBc/OWFvLpH0/p/Z8lc17naRFE36cXmD3 MLWGEd9ztL0T489jm4skudY8oBbnxCN64Z+2d/OUBQCtvU7t9WOQsE48VzuZCDMp61BmtauT zRqvt2fpH+54H7uWWKbJzqZBzOiLn/TPP33oYQhelPKaxyAOACtNiXku52FWf1pI8EKMUVre jub4DwgIY7y2DUHBqqWZp8mdbPt2BIT2r2YECxdbSxVhx5dK0z1a81mE3b7ZtC/Bg5drIZVd CZ5oslr3Gtddu8Q6Yq5qpHdp6leZiKORHA/Ys3W/Sr5YbQcEwDzqUH3T1l3YWPQDuRpr85OJ CDuwFXRZr73i3NpH7R7BCB/Ok6e1pyzPTi58OWSEtUxb6KJ9W8Z4MXl7tW6gtsGsCQinE+zI 1xFmvX4MEpIP4/w7zbBVadEovt3NnbyMAfGM0HccgnifcCjF4mrZQikERA4bRC3EOdY5r+mL 4EWRVyXOsXQWWpGxHsoABS+MTpGkt3/Ai5kPHePcGly47X/to+Wc1zK6gMT9ipv6wNG29Zot mxUjIamN4KY+xOz+E9CLCDsF12IqoqsAm2H6wERNfXu93lpfgKvaTDTfgjOEVPb2cRHDebm7 ctqjZl9YnzNbo3TA3W7l42wjt+b/splQ0Qi9mxWOhdHnuj0n3OEufvCwhiZs1oYhXadamWzE bSkmpPW4g7JKM/3Qdt9nDikl+Tz7hSA0LRZS3dl9/GbySdT6UfEBZpUm3s8Bd3uYpUOznXED lNfpG7m9PgwiBtBDXbyYggv16eZiNHhFSRe1oF36PkxQ4XGbVO44P4DK5EyX26FhTUHf83p/ To3o5VWJWKMeM/+ahMYe6tkMBENc/ex45Hxsits4cKqt9lM9Ku3KWq+cQUrGP7pzgIp9I+Ih wv7CisuBWtqrXUtndZ/LnCqkbyqD3cYahlU+WBxdajlLeUXMux50K9Z+yYam1BQxD7aGeZ2m fpy18O8C6rzkWkezDzyrFqF2NNAfMeD/wTO6mCpj9iCgCi1TDLpK8Mj4L2FIeEbqh7p7T04D RqVaOMUeLfKEJckObrvtcOLQBrpCsK/qpCcp/KI6Yi490Uq0+oDpMLizT1+G8fH1YZDAAHF0 ChU6qHfLs1S71jAZN1qf+odX/DTbdznCL67EOmkDBfxCsYZhq/CAc/GuaBJli+SzYKFwrklc tEbpgV3B3r/mtyst0qxoc/u2bbz/uavWDiaecL0njsye6jWgYHVd55tk6Kb1S8x9rZTvQvt+ bnTLBXZomNRe523kD2GsW4uzMbqJbtfJlkX7JdULzUXdX8RcEMoYi/5rqW1UJoWeHWfbWemo LIFaJUJKf5VUmmvdZdQINu2TstaFIKAKuUVUUlQaujRIPdsLXRBpWK0jOypaToAxWziFcMmP 8mnvfWMhjWveAidZux5vFjdH/eRbxrti/gT79nWCWcN8qKxrw/6TYUZtpyUvUp6NcVy0gJIy SBtgjXmT+rtYRtgqKBbnBMk4LfeS63Yv2NHrKyOiAp4smFPGfq2yr7vwt9t7qYjE7Vg6g+2N H4ARTzatUWjN854lwF1IzklnAame94zEsSFTuG+XPeEA06ZdAxNeaxXRZbCn7GClXZLC733P 21ifg2FeAhKl6acslV3aL6n9j5tzwPVmbIsZ+muag0D4pYOe4ZlPA3Kdj7BQsmWOMWEFZCtG ff4BYOM7GTc/DntdyCKp6p4Gm+UAyeW9i7c/D1R/9w3B3PJfWBOSrrI5VlV/Z3YIMLo/G4QL yeMppr50yoPQxh0Y9sSpxDPZzrgDGfj99WE9vtv4DBLg1SVL90KMvcXDK6R4Us9SHDImGKyT 1UpPsbhcYbl78iCwixqTOqyWMWix8AgSkYEVjVBBo32v7ez00pKrsRcg6tp22BsV0xopxRCq ZSLNk7/mFz/JPhFzDLflLoAJfT/zLUWk+BXDPXODj2tAzvwX0JQmTUjJWI26vtiuORyiEeGb HWYG/Bdg9GMhvMWMSauthKwnOyKpf47z4mt2zfYxCuBmThfc3y4r87O4Y5hzk0m5lfcT5WcR XFgQp13E1EKg0z70eQna0gHVVYlFgeeUxNDSvRR/AAqK9jZy2/gMEh4irp2G5mC1GX2udr9K cYBfWd8HhFf8Ggy4HJurSDr4SPpygn8YxkzgcFuAYmtffQR8+7K5E+M4wgPyf8DWt2KY/p0Z 1YJwraOLuKBJzXjgSHf5Qfda1XSL/jPgw2maGLNn9sOEpfCaGeysYVel9NKic7zGAsps7OZh Iob50r9mnI9vGOYuuow15o/7Pq3PM3CsnBCXHvhH9+rLh5Gu/x9WkgjzgmtXXMs2n2IZ8U0u rcww6BvzSFH0ArleT9ijBc0w9HOKqMlQUBG5OFsXAm8lyR5Dn3pLNifVG6Cpzgxm7cBuQifb uYH2hr7QsI/Y+BPnsoeI8TAIp2rfwbR+i7vykD8bkavm7EAtSLxcCxtCIvUtBlL2Hqz1WREY PFkr73rF7XrC4zDb9tS5VZrLLCYHZ9XKbiZfdWhfRIt8FEP859Yl4fVzIqTierZSMII7qZAe s40AkXsZ7C53OTBNFSMtP2L4GnCI+4vAIkl+9hVxbo4Z5kplr3QuxDD/Jzu7NAC0GuzSSj3x YyBjneRL7LO48C1XLIxza15SYesTWUd+otkpReIozj3qlly1/s92jtkrxDVYBKdIvKBavriL dS3Esfrrp2CWreKkyETHsj/SnxO0DythEK00/M6gmcT9XW8Y3w1fKg/jYiYZ7CHun0ig7RiD VzLkksx7tW6uTfNVvedLBQ9SqiLaQim6V0+esoNChLz5jAHfwwTfSgsmpYRqNQlq1W5fxXHU 9jBH7QYI9mBbdippLKIbCK/7swd5zQx2FV5zjnXfBEQVxW5p28e5nS6yE0sbMcLekV0rjTvQ HruaYe4l+vk9hvmA/qBBnoOfggEvRtG2z2spTVSv/86NZsyqZe0DL7yK8MI7WK8usgDepx7l w3rAm7BuJ6k9YzaIGCSiQAev5giwGwz0cpynWe0lIs9oRUmY6XG4pnezwPRGhlkbl0GCikso K1NsbzdVXOl6mQH+jT3uYPAqzOfhJ1IzqkpavBQN/wr5ZwYaqn6/v4YFSrJVPoYm6Fh2FrDK 1/+NUCsqiBznCJ69+nFW+50OASx338qydQd0HPR7l3W/lL2iTNrS5B+D43/RY7C7zxKA2x+o 5bH+umeu3zdmmOtayw7nOT+OYV61iHmS/Df3/tWghvlw7xQyCiRkvnTQE4zViaxU/Cxjpwxc xhcNUEFxJMmZruPRt7mv70ewlDFX34bV5vuj0vgpM8ktWEhy6odVRI7r8DLgZQINpdGNrC3q NERQaMXFnTvFzgk0OOAF1u+HjcsgofMxq75UI9e2dY7mu8sOeNoGbzAi1LCoFceqWBy1XmEO bbYSFkqFwKM/qv9XYWjFLLSp/exFX8cD9lOYYjyDKG4TLJGgo2M8tvYtV/uYSoLKRlgPCWgn 9vMS1nfXcLGGzXzyRaRr7ko7OqTy93PqsL8KmQIu+QK2FQ8S5dHUFIbommnXCDB12Bfs70DG QmMiIaOmxW5RTpqDxUtGuxFaK4EoJzBJN+AO/mKjbvBwUugDjFIAWB5GTU+dHafGj/VOlCAs 7eZ9Xsz7hj06d+oj9GmB0ZhWeKqUrbXMQdPntA39uPEYRNjQOr9sMk98FKpYA8j4Zd6rofKo gv87XyQGAkaRrWDF4rKFUlQWG7AFL4ww9EUPvJF6x39kh6lPgs3rTACjbwa+JhUXbH07yn5+ 0xW3fwDJfh5JjH5/QEmu18oowWDXdmtp+sUsws5e5lRQLy1+r0/9FzNuYFP/NMazln4EaKVi ckTMx1K7NprTU4RuEBtvqNsKntgYaCzQiGKM0tJLiGUtdK3tX2X8SJ8XHjIJT/o8CZyVrjpo 4XNu2twF5trWHJiWgx4GaiEtph5pXYhS2bliPNq1t+5kp4SA8UDnB6ieJj/HdhF01oZD090l D+yFphbkGlgDDXjN/n8Y+CH6P36QbzNsmCSn44Ij1ImoqZVfcrV4GPCKyzaM8BoLpZRGbl17 BSJ/3m46kJdEE2qEycCU2BE2X7yDc99oxQu0jtnUBa/4Tijdk2OyI4x0rbLbzRVGXeW22RY/ /0PnWyTa3LoZo2zoIAeD/bm1VyHZl9EfRbXpAAXbVJHD7rEBE2jEC9GqlGkcdbDRjpL8MMy7 SL9Y8VU/RhtgmOvEwBgm4LJ7zFo8ExvqAST0pRDfTpQxAsqxwaZWJmosfWNdDHlfqlCvUkdR fBdZCR/xgkAG9QDCYPZsf37CttBJvdO0UlwgDtXiGSRs7ZbdZJ0/Aakk1V/x/KutN0U8pnHh VDt2I8KsjccgodMqzMBiMdsUPo5/5y6f+lzmvQqDus7z2hchz6fu/EIp+cdVYEz+cmsQbq+W SbseSfczvBrsCMuioCqxj5Y2AmYJzJUJk3yenWW7P4nU+ymu3QLHUgHkFSXq7Yrb90o8NQtN oyhDVNc0YmGC15tR6KcM3Ksx2GvVi8yQVAV1VVJPIw+DNsRgD5Oe1jHMW1gLzi5BtmdK7QLr r+4pMbA+bR3GeGC8rX9xyUKECWn+5Eh1YuOo7E6xrYBt9UPG79MWQZfUN3uBPVuKFOKudKKt qRucK3zb79z7xDjrl60z6SMQgnwvLF8Jg2nxlOYaTVCWoT501rbNjWAW9lEc38q6+5i+IgrN m8UFNh7M2jgMEuCVNrxPU5LgIFDD+6Eo9fxh3Ge+hoYpru9pmNS8MvjJ5S/vS6RmDGYwQBvc FNvvR/qcyWQCZ1gvoChrrf5xJusmm1ylm0Tx/W7O/t+gAsi7gW5vRSreANEWkZAZo9R3NY1S 2AbotQSiy6DXhjCKPEHq49wDfsp9YEgqqK9l7/E0+gyQ5cD1NtgNssC0MxceBVo8l/JCVbZG KDJO/8Uz/Xq9DfO+jGFQig1ElVmQb/OM0YXw0HqXfLGA0PmZS6vH4g5/P+k3/8xYLmJsVdsM eJe/Dsb5R9POvXbuLd+HwDnRnlW8ZHNmM8xLJuxKx1e4ji8BpJ9skVw4Zqi/GU3JQ6q+VIF6 SfpmtPS+GxNmDYNwh+qofs/gVc6dDsEBCuGOeuV5V6n9zs4OiX2DXirj+jxHdKM6AAA6xUlE QVTFGiy5UPZLZn+EVYI63zJqs+TB0rIvMTjXwVQTGvVvo4hsYVLTy2t+gPLQtsZZFZX0Grv9 px5psU00Oyafjs15PL74641RlBHvNcou5FNd4dLtgF6Lz7c1B80aZbjGfCPK3X0xAoP9ExkT EZtzV1o/1uclGOa54lVE6JG/MszLr7juzll2meFGsfsyhvZi14rJlnagVHsHGkAb+rCzFYyR IxugXv45EAiim/Iu0mkWOI2dWpr+2ASP1mVEbJEWp9+AiY7jg9+5V9tbJ8meXOQmBMJcE5YW fE177C8f+JW94NeFSCPF8a52/RAwtg8DvDQQS/JrYBYpK4xvsZ2OxxsVZm0cBjFcrQeJ3254 W5vBa1N45TMFaT/Acza+lh3BSahJGATPhuBDvfq0/e7Xevv6tzICtfHktIP+ADN+lvsBk7Ab JaXLa7/ruvKs25h2p2sf/WFsIRIlgR1yBybpL+1a2/93ZkSioksHzGfyz+jNKJlG0d6ILe1X EkGWRrmowSjBmO+r1eziTS/BYFfldOeuwmCPLXqfa3kb13u/SbmBMHrTZQzHmxZb9rcw8rFA GW+YR+mlWfAVGwy8P1jryxglQSnqZRXyC73GIM2jExvDNAZFFOpltqGuvZnaXme5S/f/g82h 5nH7fb1XK061WKyMxGe9O4ud6u7DrDO51UWjDmU+/sdKIGmX3iqpKIX2i7GbqBt81yTTJhZf kQGfaYBaV08RuWCDhEVzgz1TgFmlaawryd0MLYAacFC6LAU+MNBg1xjGbz0cPYyD+z3EPEgQ 98xFh0CLb6KTDBrVJ5KsMIMKfM3r98ymL4VRUbsf/k/ZDb7cqOB0XPAMgqKHCDBsaKWHP8rE SM2zko/07JYxipu8yqSei/r/QXZRovfRu2zAiu1UNan/lnUoj5gt5BnR9ymofTGKNkWcuRAp WPgshIhUZGg6V4Hz412AM5fRv4+z3uIbruquhqlWuhJnmINgOtyZQQa+6tWCwR6vwGCf8B4W Yk0hrYXnksF+x3WuZLW2/LP3OjH7IMK2iDkE7dI55I3RvVYZ/fe6+Su+ZkcNFjHX+bJddA18 gpYaXix+jGudC2PsBFST1sT4xiarVWRj/JTViF8iIfCPdm2rVMnkWTo532gefZ8egugp0N12 IudAk/G7+IVx2U2FNd5HOs9vKBTxL2j3dj9Ho491udF3c84nCER+j2M0diAN+hTl/2waRkKR rbzcdOw+31/GZSibypgM4WAw60zXxarVXPEYq50sJGFR9yGEBzcZrG0EDZJJgig6A4lNOXt8 u/Xas6666vd2Y7aoHKwD9hu8YG38Qdsx4D5IqAGLo8yDxeaeWu9QWnoNzPctjikiSbPVfrWb XVQ5BKL9gUXPdaHS4oNhNEpygkvlak7rHl41PGX+djbxmnwxihj90gNv4Tr40+vHcY/rPPTK NEqtugsa5XJXTBfiZr3YffbuHbxHCuYQo4hw1mn8ZhKT/juKXmuTGTPYqbCejs0Mdgh4oNYw zAsY5oKeokbdJjnfCnkPZJirL+qTSVlsF0EpXwVyIfZZB8zQA6W0kU5VGoNVhrLPxBwaD/3T ctbAHKGPoU/12jx7Ho1x6o6jsvwUO0QQePbE/+Q5D6O/tzc2/qlVfd1glU66iv0RtWGrWh47 UwhAsLqOJps+brR9PxRv6KCGloh+gzD0BcuLbW3UTj7dXyOD/v7DBr2+dgYRvNJgRqS2y50p Ne3cTe6KI1YacQwkXZu7G2Ig8oNH+XaIjcFSMlbuGTustPRU11K8HyKZYfVvlblaYMlneS3l Pye9tZGc99x8z2ppNAPPhupvwaxlmHXNr+w6AzGr4WO0YCAMwYWOKW/n3OloJ6U0FA1zy3Ct Y++0tM11o0djo8AotoMUY+BV/rqMIoPdmGQqeJ6K6oKCXawXjxxp9VRcD+PXPB56r77otzlL jmJsP+YN87HisO8BZ35rDNA3NcYYI+3NGKUlJcbuAfo/CwIcbxqDDbMYvzzPNs9F1aPQvO+y JEXrJ4JC49GXMUL/AlHKdqt2rYRhVUqIXa/yZ9khE1anZicqFuR+eCxjf5V5wOSlUt3gPKWT uiLKzi56q7+kYiF1HMcmR8cx5zvZ90PGQjhKY27jREZEGt3MMwKzxHeRDxqGvvobbdDra2MQ b2jhlpt2KBNOQTXglTg/Yfus9WmNCDMqNodLwqQ+WbiVVc+Z5Ityqn+7O5mj2hWplYF5jPsc T7nNDpPcHubVjKBUM9ZFZ8I8WjLLYZStFLNKog7FrIEwAqNIo3RMYclw+S0M/LVmuBZNo1Dl pOIZJaW4Q2nZRZ5Rov7dw43oNmU/a2UwFkQVI7lDhL1h0DcNWjDME/dF7DGgFpiv0v2y61o7 0x91S49m7qUx6IPqkJWWzqFuMDZG+2wCaTs2Gd8wRoV0mLpS+8k2PugOnyIDY4jhAgRt6kqv tyJKMdJlBz+LALrRYiPaR9C5s51tHARTN4KFxDtKUy/gXqdy7NNWN9hv/LMvquN3OAjOR3M8 jbZhT0JIUUXkXJHovNps/2eo11CjNyIgrWuIBlN3hJvDehwTWrJ3Nry9ppMbhpbLAa+sYiK2 R+1pvFfzrUsDSey+/W1E2eOdzGUnaRJROb045kd4VGYZnNLCK+36Wu36ASP5RqDQfGCRpCWQ KpP+uu6YsdNhMO2bV0NCcp3cj+x2Ib2h7737+7wOoxx0m5szjfQZPDUJeVbyRklTyuulTX4K rdgogl4E18xlCpE0a5SGwU5F9Si6AiaPYWAWJLWcQmDtA9Z/Y+CsM/65IC7srUK7qrcjGLah kmOug9KmT9lzhwVEjWO5Z2AMxyKnQttM0xjK1Wph1YFWaKrCSZoc5Tomz6D00p8ajCEoNRRj 9DdOSe0ar+3ZsMhFh7jp7z/aDpOACRpI/VPdYFc/GCHj6wYrAl/rrsG8ePSi73AOYh/BKmQQ sauxWl84bF/28xJorJLcxPywsE4aDTstyW0UmIVUfQ1NEEBSw2F/aC9ISew60U1t8iIp0xcC DHWrenkPHo6xShX7kCSZQPygGyahMDT1X+vlTyDRv2uXEUHZKrfsosEZEBdmIK08QaQQ7eKF C+yIMGHZ4cP6E87RhKtdduCtvN7qCzxUPwejnGk4XIZuhPetdewc7n0uRuo36P+36N9LrsQZ nvgzif/cl1xlp/dx7lQI3xvs59+NwX4YFjO2g0CijFTZDa4+B63pDfNy5z0u/hHrVtQ6fJS6 YXzfvTOpNedy/v+H8f0G4JiybjG+x8j4ziFVWVGTfAkmv9NOl/GtvDEZ+PPsm/V7CUS5ovt3 bkL+YRwaqnKiWMR7uNCt5GVljhnZZxjiNlfTZMCfzdh8DO35zwQGWQPP3BZImeEQxquGYENL ZkXkhp29ncEsWwH6MDsTt7+fZ9fzKAX+C25YIQYd3n/bcA0S4NVb3/Mmnu5gpJXqFgle/cJu NfyBj9zKXT0B5go7MlA6Hc8TxRokZbSyLakvQHIfir3xXY85UZtizkaDsAweAC2S+hm4UxXE EqH9BElWyQi0cfR6v1lHo+D67JhMpnD5WAQC+UDYQ4odyFWqLcXyLXMZEyLzy2ZRwGG89dW0 iG1l3A2xXthksO/JpM62PmkNezCCixjmhXbGQxFztGTMMt5Sqea+RizClhTw/Bct3hkodSma 1muMWgXmMK+UYi7YX9X/YTyORoKf4y6DOSzbWDbGBmqMxsCJ8BFQyhZweCv17PKwpcSd5Ewx wdjktNBcmUeJe8+e+C0CtYczz7jimdtql9J+fGDZX99rEHkuh9sCzEpqv7Sxkic1wqMqG0+w OtDqcK/XdNzwO9F0kn9r3itUZfpODGICg1VydGpPuO6/SMpKgvRgZH/Cuq/q+GyGNSLDVlHX JH0HMQt/nCCbCEO7u3ZMEe5GaqZea/RlPhGWJJXywArtb0DTsP9hF8UH0p/6izXh9XV7Mfxv gkZRvwUBzokWcPIC1iIALVLcwy3vgjC961QapW1shxuNS7Vj6TcJ6v2rK73xRbvZ3Gm/hLBl sL8bmFbjvE+Cmf/LzdLOurTSojdDQB8zhmvDMK92f891TPu9/fb3pJaLMYr5cyGsc5HAO2D8 ojF43tZt8jAt9bDK/+Oi2peJ89xt50ibyw7aUI1hF+n7Mj2b3+jH9O+z9DfhOXbjqJP59yOn IgrnECEJTUzNJJkBf/kBCI+bgY47YcC3/yPCECVSSc1ujKOzCRn8lFjWbQ3CHgr+BY1W7WaM MPojoHq+TXXBzuD25KpltBr6sh5/ocDX0D51Q4vbbq+7maj9mSgQQeX/Yvh9fFjwSu5AGXNq sxfhx8rPRNqJ0VTiHo3Cbq5x9FFsjd9AfJFt3BgItG+XRbAmoSmjGcWnQAqcQuyjY8pJNshD DXDf6w33s6CXDOxwfTFKoQixJO8yDVFeI+hVwH4AfnTjrYm+5eIa0GvaCss8jQtLMVDRPqRs KFZTmnQSt8ZFu2wB5x0NNAIq5lmuzF6AghAX30+Uv+UTHML+hK07WBwD1jAoJQ3uIqBU9Z8I 7t1lj9DDGBkxD/fBhnmcnAOytWYtuZ25OspiR0nyE9aPnD3ouDfbKLOWvJ3J+lfGjEVyeC6l +SI0nPZiKU3xWQdBMA7WrQDpZy/5LmP/V9AiWjdm851JR8OXG/z8GwaxAibfZs8jeJj9jahN CmTeq8EKeWlQ9TBijkvu2w8j9ffgZzaiIWU5UWo6BCJmi+PPGXOE9IYBmUNwCyP9koencO5b wPWqZo6+STI9Y9JjsKHd8N/UJ2NMGFTw5bIDbofI3810HM2Y/BhiznvoRe6UoFdLawnkcD/G 9xy3bNmz3PjTLKyKSIep8MwnolXeAUZ/Lw6Ao9GArEjEpouiT7iXSN0tPXwlTIGru/1C1vdv b5pHxneBKiS18g8gCDIIJr3PmEPjK6ExHK/Uhj99U32z6Ee44LV2XZucnkygbi8bF811f83m kt8s7WfKtcYMgmlqZsBTdqgw6grG4lcUBd+da/m6wQNdz5/pX8POAYJZSXKoqz96iP2g8diA tkEnNWrkFkgtkXGmlOd67TH3lxcEOYBX5/TPscKtkjiauI6lH3C51rv5TP1b0qVNa6CW+QJi 4vxohV3L0hs4Z8B2nH+GGKltafZY6NVuCqHZDlZop+k9an7Aa7zGH8QkhuvFKGgVBdvkKaqW PaPI62U2CvZBrbwjjDPTTTtQGnJH+vo4Eq8Ik4ip/wUh8SXXjb2eL7YAEZbSs4luwuinOOd8 Y4xgYxQEayt49EgO7ZjyAeIY95jg2RSMEYYrjG3itI/gq4g2bD/SzqNEBnITA9mnPi/MaUhd cRSyVv0CKMn+qeRT58sq/AcaGHUfjPJuoxnRjpi/vxZgVvdLN8Nkz4AkSFpl3XyuioZS2zBB 2T+H+ysO9KpzUqvhuufO98IYU8zlWe3+Osbg3w8Ar4ANkmpIAlUdHF38BsT8IW/Y4b1oHUPy XdczwKKdxG3g2S4irGS9UjYzqPGBeqPvVct35+PuRE0fbAyb1L6HNP3QAH0Z7Eob5zcRqbdR PHMqCzdX/Ayj9m4In5wsav5GLJQX05TXyNnAM/OfEhElChQ4A7wwFrhoKZxtO7yiomVj1CsY tWD8KPkKMYZ7rcMiGm9j9C+YNs5T9X8VPatp0WU/4ZneRd913O0ICNlRkncDC7eQCqIM53oN qM4SX8AoJPA8AmFXG6eYcZJLvVa+GplJcJUIfDM8b+6VxsG0JpsE5QofMYiqrcbdc2hXHAUb 0NZfg4TdRfccj2EaTeHB6h7vRT+3+/eFVzaAqFMxh4zPUcV7MaQ/5DpfLVtA0JijcgnEQHXC 9rxdI45fQoI8b+8HY+EA9cYffQzkhCetyuo00UiAV3aFTf8igrGJChqFFY4KykUE5+qVa4BF QC+8bN2vEtQyGOIZog5jNJhDLFOHmThGUEuaul75PuN0OMT3QWOOTQWlBhvBEK+o18m5hpxU mTFSoG7ZYcYcmv+BWlgEV+58jqf1GkgewZitJeqVy3BywDAQgApsF9o/6tzOd0JDhxs893TV /7VrQH3RgSplJikQa8fDrAuD9WWAPvZ/gwEOtq9DUC+lop1yiwSN0nSpW7XQJ7g1wytvXOF9 gmA6SMtw+Vt44IkQvzJSW2AQ0kC6ziT9/DKIYUcpD6SQlMjzTpusWBtEAoW+5PNne6iXQxLX HnFrnrrZTj2H+27Opuc2OwUiMWLG1Vqa/B7cvDAKaR6ytdq20Qo9GppUWsM0B+9FGW1jgQmt EkD/BbxCCooxKOA8EhgjjGuANrnyr6iA/zTzl2cu8CDVCYaoDQZtMun36KOrsBuptMjcywtY r2zHs17iamvfQ8zkBTRn0XVBMy46AIJbQDb0P3qtxfiKxkILfal23YIrGQhLxUZ5WFNS8q0N 1pdwkd5/15dB0ASoqs/9ehTT9zZzyZpxld7gvnJOVxZvQPJJY2BvmNa4b0+8MmR3ts0FU7N2 GPtC/u9K5y9cOXcIwSsfN4miPWESMQf/wKTz8fkPyvG6B30p3Uf+DgMgP7wkrUt/bnth6P6C giOh9dIowABFsaVRXHokY/I/EAfLgYFPqD56nBqUigvYK13f4zv8+ZP/yorajSTGaIxrZheU DnkFmrjW5kBpPjECVGk/HtpknNA4KbzxtKJYVZwndQXzQpI/dXvbASrpWiQCX69QN1gxE0oO VctEyttxYT98rTvPKipCA5praeKsL1cRdI3drwzCWhoMgWzB8MH7EvrU6+/6MUiAV6N3B9Lk 9rNgnlyRMtKsTU9Mugl3qjOqf+ta7wUPnoTW6DKjKS7wkN2fIEHuTHfFfi+iMhEZtFzBp7mr TGsoVj2Y9GkUK245FU22OwauAotI21zmvaIvI62ZRlGQTtALRilNJgV8yvuAVUdCBGIUvDcF pch819WSw/ntQxyzcERpjP7GNMDqhEVpcq9qB2BF18dse6IdPmMQmBX2a9HiuEh0zrQVKdyh Ji/XxVqyPfk0tnn7LNqF8bG6wdrC7QzX1s6qRTx/RvgZczT6Qgq87KEaYQOqeLgJ04+wa5YM 0trb4bxIag2/NVIIyNyVpFdRhChd5F554g67yPJ7mHTct6Un8Pl1f43iYn9nwZ9qhfq3VA6v dt7LxH/EXT4FV2c2aCVyrpA3cD/p3IRFtHwySZ70nZru//T32kgAjM6xQdXAOfcHds+9y6SJ iHGkttA3jYE35ukz6yguvv8b+G0r7rIpPiVEGkPPKXtmJLfggs+t+APZQexGWzhEzkhoAy2J VhHYysTWOo8hmKzfEnYRK4yScIQG8hPsONXbCnQyK/onN/OBP5Aw+m20yf7m+Yxz4xG6vyCh 9V/cc2vZpoIyRapzplK1nbVb3ejcYzg+9sHgVx1fedYWrG/QcD00CJxnhieVOZLEF2NTOoeL r/U7nKIJFNu4ePGRhL+1Iyz1bzGuKImLqmP9xtqvOYc35/JpYg7BL/Ajk6/2uQfa0EY7gc2h bb7KF5+17918/6fvq0E4nb9wb4ywk8z/rhwuEL8duim2Hejbpw35rDFoGPMww2UHL7CUkBEJ pYZ4QIPUoIaE1Yaii26WOmv5a2npBHtG74wY+CIqIgdGM5id1nd2CkKrlYRGGCd5ri496E9u 1V8OB55fjeeT37mFYkjFUZ90E7a5w0o+WZ0zaFE7HafpjcTYIEcyYqLodPO8epg1cD/6/DJ8 Bpkxzx+bRMfB4XvZeg1VTnf1G+2apWkV1kd83uWj2/g8DQ6n/i3GVZx7HulwFr56XHRgTXme ZJuoefZwuH3fgDp8gygcRlHqyXP2+0DVKUK+kmMjx2L7aI0rxv6rrlIh6EQL/nn7sAW8iABC HEUS05iG77aodovvb1z/GQQJ7mYy8y07QJmn2WM05qzPQ4Us63yOTAPIwmARC7q232WsHelz 81iviPCV4PjK0V3Q0seA6e8FxfwFRinaqsXIvdEVW24nqv8pwgNCJdAXRe0E+epkdsfxFLfn TghvWvB+2ofBX9aDQaQnaSqtImNKKQEuXYK78Va/S+qy6yku9gVUJJvWYwtoR9h69Xqe+GCO +XnDkArqWNfqMNLmWmzYqexODUYdHRtFy/WzDui39WRoEozDuVEcpTTp35JF/Lg9/GC+934v OEK+NK26pTFGNnaWQAlzl6Ythj5YvEQulJYbOKcM34GFVlgLE7HNRaOIXG60i1lBqdbRIfHn mwSHNJEYZc7UH2GvsXK0ehOQC/iu3DuWDbe0f42Ssz+1ZQdzpt0I2qE0EN5Nucmde4ddKHg/ /VUHfR0mgwR4ZR6jk82uUPCmnvyHm/nIcS6fPgTuPM2tZY24bIECdne16zME686wvKOgfuVl aG5hs5R6ugvSIG9uvjRZ7Vat8jGQ4CdvPscwqdQu/vAUL5DKvcg9KANRLWR2Np+z9f0mGoHg RmU5LvE9bE5sp+RYK7JhjpvSuvQ2O8MRa4l7pUlWRA5DNFVZU7XZ/k941XU8LM27S/Z9mgzv kxGSyo4WExCBfwUDvngWyOIh3MFHY91+hzX3SoPhCmizoT1r4U72d90O9/o5+xA8Rgm5+3Fe +w6SebmGaDCZm3H99zzYONysZeNkDI1stdpXXUhxHgj3hc1SVKBMWsn84C3PudX3kGsxUMsm IWWbAav9qzSXypMYYb+yM4IvfKDTt37/+o1A0OwVVnHWuxFyRA7zFPCLCu/2Nz1uXXoL+uHl 516CBl40GpCjppYVkRvIk2khBDSW2aOT2EIPRoyiJSCXNlva69x4CIq0E3YZKHfiGRR0jye5 seOOsb4Ej+wQo7Fuhwc7Qb5tEXIco+rq2rLsFIttyDXXwiaQlbX/6latPNIS5mRUmdodDmSo 7WHwSi7eKLe8p1hcH42jvonZlK7iUpbVkr/kYx/XsdJulYdx/Zwz2DNt/W0jjgBjL/ijzOPU sRx3dGSxsig6C+hbzOIQfe6XzdfVb6dyPMWsTVDCNSmowtr0Psc3fRQklUYRrV02bYF7/lkZ 8N+xILRsjxoxk3zhZJiD+gTAs5zs+qz64jCRxjAYJINXKsmZ1k+xlYNkDVk3tZliyxigUW4l jHIOdZTONSNKPv6Qyt70POu8DQZark2pzjAermNtqqIW/OPNJ+m6aq35E4B0+3IOkgF7MKyL C9drPmfr+007AiEOkSbX2Jwq/SeKDqRuwZutI/0ZyN6VqyJy1MgSDSBw42gPO344ex8GA14b qnZM+WsY44PQx6vYpqxQhEblck4ptKaSS86d5s5bMMZgGuLY7jHIy9AMEuBVYfRbMcwnYHgF 70qEOiviobrJxRV2hJ02r8cQH6bfXrumWicp1iAPhiBWHX+4Wr+GlPfiunyObcA4Nl9gNKP7 3PO33m7nNDsA7IutL5t8BEKq0epV8xGoSyFUkAaQyTFnav1K7gw218obVkRO12024EuTv+/q bI6U1G4xGg2eMNFunN/btb4hMOuQ9D/kAbq3Ne35IaKUvFbWaa6QEPY/n2jvyVTGeMaYI0Q0 /RlDvcK9qMdP3YBFX1PNJ47nq1z+yX5PFNa0vCb86kn6NtfNPtnUJeOUeQbJfGpJv6du/XKT jgAOlJvzhiRc9FPLxLVsZFaLXrhkey+5mctebbr/FMV/NmkvWkiTnZ3qHayPR7LZgJ87+Qki 8NMRuGyPTYaC9qhMyWUSs8b0Ra1fZvVdCa9DMEiAV+wTkaYnmidAK+TSdA247gQS577Ae3Ki 5N7DNlivljm0xoynWFx9PAMieMW/yHuw+sKl4Eevs+a82La9RhAPVjdJfD6LOOyNuF592Hrw 6zMCIc2n/hNzvyoRM98yweWTt9n9+gZyA4yKQhE5Ob9qO7qDj1NyHa0vQ/lvB3wNBrzOm7Xf HFDP6dApUAv8ZrlZjgDmHdv0z6y9rzo4gzTgVfFEHpBcKVLb1eSSzbN/uZpsBRlL69tCYbDW sRSLi8bwAOgmrh/XfZAw+Mcb180GPZc7x9IR5GeP45upoE4sRgxaWv8+NK699c1GHQGL5+DS 1XqVKPojtJM3hJDLYFbfALDSadRipyJykpTwRLq9G7cTnihaJkvt/XBf1IdAv7KRc9Cs0ZjB rD2pDzXdLhUC4ANcd3AGaXQ8Tx6LEFGs7MsaPuZWmPOv7Zr92goD3K3567BJSoIqtRgI10+T ta6aeAYJ/nGdYwzAA2t7BefejBSAkVCVtdqP/SUzDOs/bH0dESOQuXQT1oloOa7mTHuaX/LI PiZQFQIIrWeulyPtcT9BCzny3uN8FizUF6+h5XJ/Dc0STAZiaZdlFAlxFuVmDQmzejq5zv0F nbiYKmgkyQmZB4DjcQnIG6DclvUMuvS6RYOxyMESLpR9E8Uvus7VXjP1GpKMAfKsWMu3so4E /7r87HX87WrB/97rBls/bNYRCOk+MWWBqt2kwkM3hTbq89bO8v3KGEgfwlx3rQVeRy/bF9p/ UcJTLSzKsg/DfYF+Zbh/WsFtIJVVyzEjmg1I5c1KsZ3ZRlvHDALhBmaQgBNzyUlEx3cA/uCu Y62w6t2qvGOUm+RGjTveujvMoEu/j1ZLdrMBkv9bmzp+5Wj8tmqZf1xvZd8onz9N320P14J/ 3UU3mL9dfvfmY3X81rb5R0AGs2l+tieIKC4tCa7azaqbbAHk5loBGYf8afVahKX3ZNnqxIqP hQy7iFzTYwd4tU3xJOJ1e6CZPP1GXFgrDXPFXcF00+2McKx96P0yMIMEnJhj91AZ0IXWPL7p W/EI/MnysETQ+dhHSIfhDeh9Wz6FTVLiwm7e743ac5aDpVViPf0KfvMJxx7HAx2AV4KMUZlC WcX24Hdf5wZbv9jsIxAkf0JMRFLQ6uayzqX6bpIGMwbynRR0j6xifY5AsUEgDI8o3n2DnyHQ RZQ7m2sjfLGD8oXb+Me+MqRDiScjPLNq4Vj70PulhxCbvzfPFPBKdZhSikRX2HdBuVep+zb/ vm+1Xi2dGXeratEOoaaaL914HzZJyWcLpcRw9XKWpNhkUwTmk+Qh58zslTRZ4lYtusWuFfzu jQtvfTNiRiCk/ZSf+S2C7c8gBG2iKqRwtu9j0zyHXcTqlSwWghDMZwungrAe7oOFkMDFD+5G LOZk4BV7VsohVv93NNj3fG5WJ0yZALPYFNXiZzBoP61/Bgku1bhwCty2nXFgN0UW6vX5ZH39 lrwrek+4M9eiMpun2HUHUVP93JeV10gQ+bnl75ZGULRTxeJ6tQxHltiLw7kzbGdXPWjqftZr iW+vc7Z+GDkjIC1BTOSqk5Rb90tbm6GYSA7J3XfH3wCjavWngfFy84omlLCINwxhvT4t0G8u fxrQbhz0m7I2qew6k5vJ2boF+qW4B96yXGFnoNeJdukB6Ld/Bgkcm8PS10bvBXYRzeVupTDa 0+zFsZR8GW3gTiV3CDtIg+DxGtaDZH676e8cTQc9gyi9IEfKs1qAX8EOSkafYn50BXrkDYnw r1sL/nb/aevrSByBbI5qVJrR3h0JlB/l9yHedZL1llLjvXqdzz1tAlm0VatMwBFEApVa/xLe /9bntcdBcHZTSOD37irsobmTH4bz7oSeVGzEM6tOz5I0+lypT+f0awNeLSZrN5lO7hULXxTs pjBwaAkEqvz6Kr8lct0NUUkvnBf+hhhIrW1Hbrit2TgpZSe1JkCtwWzZ4MasKdCAiSmj6A/m Xw/9DNfc+ndkjkCQ/oV5t6MZ7oKW5GOVdjjHdzijzEZguLAC7SH4AzOxiK59jNCDneKPH+JV DgBzEDwylZu8GRr1IQFXz0IC3Dxl92VVlCkLZkUnuMuopK8Fa/0wYW/u1b0b6ik9Fby4jfWs 0rWGLYJvbHQtYXuyGuX/xIHDrqTXOJs3s/2HfE4xkKIZTDUKoiVs6GitA88VD6rB1ba+wQ4S U/oVzD399CdsfR3JI2DrgUokI0KkIkzZtGlyKkW/dzP8L2EXAsMKFFt9M2grzre5FiLwamFx 3ZDP2Yi/nEVIgACMQgLlFzjthsapsbuePhBvgQvzxfGuXPAwKyCWxoHCd+u0ILXxXmlFWJHd Q+P4Njd3v8fMu3QNS2a1gbtLf8/qLZX5RE3ZJo4Drxrre4/g3XC1CQwCfeD/KF7p3Go9CMwx m9EJfnI245T/XDZKjR2WXLb3elCjfa+99fMIHIFbvA1RqxIT6epE4KVmG+TYeElNQrkktUJb zWI5KyLHfKvmWg0aUWvsQmafBn5RTEy2bZS+y+J1rbbj8q9t4Z5CAoY8pj4EPd1BMQc+C9qz jMNaRvtNV+/NIAG2qBiCVoJVqGOlIF6S+tpVWryymCoUaqrira2aVWpH9Z20y23wfTfdoN+3 wSCri0HEH1wnV3zOLfqyln355hmABTG4km3vQ5gxZe9DbfurB9W9trYtYwRsXRCu+7kHLQMB aC9BCB8BHsceZjULu4fueBnGoIgcNCG6SFNgOG3aDE93gz2xhQegi2PfewSHvZGSPxjjIhP2 dQ8tICTtwmwFt4FZifIKSYI1ONjb1unNII2T829jJRhFiLmqoFQ99av19CAhah2zIKZWWY7k z3Es5SKR9NZgomE3cv71ABoIFWqYN0/pCH6rAzHAzCU8aHq4L2dJZ1K2/NratswRaKAGlkbH mCGyDRyr/eYsO8gLVlEbc3/j31MJJ/YLp+wr9qYcdstoLyfUAbpScmKt+oRb+cp8u4S5nTNt Voy0CWkn9wRm4alNKqfYMX1gVh9iDvAK75U4XN4rF93iLpv6pMErk9oQriR4iS21InCd3K4W umfjzNJAq8b6PmF2nxzrS+TO04DVyn6hlPzhIQ0lF59tD6pF97XKn1285qaeB+17za2fR/QI NGIiEKbiXUGwNpco9YmDKZ5TzyDeS7qbPdeiDIIN+JAwV2O1KcUZ5E7WWvQ4+qX7OvvRh4yL oM1mTkabkUipoKHuExf7hVk9DNKAV0smYkwdA3eR1AW80hZb1po0Q4g8JqguXVzR7Sje3yXT jrVDQ/Tbn7juq1TZjBmKZnoXr2BWmjxlB/72ntge9LylY8BxZzWW1UY5KqM0Pei6V936zYge gUywXjFlJaTuBasKKWg5rmpgibi33dvToxbNSWhKeOaKO9ljsT5x0McLWbmjWW0a5/a1slSq +unYAUut4RnVh4yW6xS5lodWtO7St5jTQLQpXshaD4MEeOXS01iI1M7vJCV2YRTnfmPHNuPE sHIvXnsb3L6Mh9H6dLgw52FWiH6Hu/T6m918j7+lLBDbHYjBBLPk/1ZrYQdYtSIF4eLCXuY3 r5WRKpV+HtSO3PqypYxAEKwq3K34WoKNEOemum13n26PEOY+zj1pn0UbSbKTrWf3NmeDcNd5 5AbNYbMqJ9F2qnL3uvk/vMOONfsiOyvQcg5GrXTBpaK/1m1dgf1I1Bq8AElnpzR5oIhy1uC8 Fqz/mKoQpf2e6YFXjaPxNBEhLbGJY8y2B4JZbILEfSjzQ/bkYKknspnUWnbbAU3FP5hX3rI0 Wyi1/75eUuSpWiIMan5zd7db2sGDSo3C4VvbljkCQbA+89KtTPoiHEDk96Ep4paz7YG2Z59C ayStqsC9ipnXqzu5PXZRRi6fA/HYp6YX6EI093k2cU2jU62qo1X9TH7mrAg6tNrcxGyGmNh/ Js6Rn4WnVgzrtKxDrceb5RmkEVxZNJVeUGsK75W8CAmV0q01wSv/RdNF6j81FZXC7vkCRaTJ nlQbIHTf8Gez5Q33aLeHrteqdNDHQD5GfVX5x5OEAhHk0MhvntTYrRYDvo8BZffZ+rJljYAE 63fYBCd1lCglv6/M0umUVaIXPvIG7FoMX5oqvWtxnhgictu40dv+/+2deYxdVR3Hz73vvdmg rdqyCLgkUOy0UgIUkCW2uFDCJhgEEkXQqBDiggu4tHReW7ERRUGjCP6DmqgQwyKEpVJog1Ag pYRChyLUFQpSoC3ttG+918/3d+5581qm7Whbk07vSebOve/d7Zz3+53f9j2/3772eXsSOfsg 2wS66KY+ZbGTc4FlVAdEU5l5kBnm7dcEKZGgZslTa0Hv5tQtg96ZBAnBFdZ4WBkzgg5NirLH qTeKg+eq/QFhJi9T8yKKB0P3cQZEC+K0/Rrtt7wZBWVTlLuWD9M3XUErCTP1q1Q4g/gLEXZG qL4RKVW4zd9miI76L/LtbjMC2eysEt01lYAGE1VitWqpcWqrC/X1LxP/IA0QtFEoQb2lA+y7 sMiudWLYye4Zo3XIbhHiQpJh7uSnvaQov1XrCGpWHN2D04CgN/fq6BrVWhacMZBnkHByRNZ2 4WVUddWlqFdUYzWDG5E0VNNsoJYgRUKEVEUc2yOkW17XL73JrlEUXXYLgxC/inhby3SRPQf/ uNQ8+cvj4gISQ/zF1Lx8We2Wo7n7HQcjWGUdFIAWMUu9iaPzWp0pJauZPH0SubgIvWCHqAXv ZutEdoJzaWb/ePQxoFFE6YW4SBNvswZJ0X6N9qVm2XqV3r9z8BDMwToRVH0HD1jzTBe37AvV iVPMwRZD6Z0y8dQyfvxlm2+zGT2OiJAy07cipKAo1YZ8uYX2FQ94D8/j3WCQuGMV0BIUTtoc Ao5pIi8aGBq+a5LG0tpQap7/Jt/uZiMQ6CIBeiIvkl+OO5Vs/RP8T31XDcnhYe+GoKi9a6s9 DPcqkhCu2IPOBu02Km/gALrLrgmT/5A3yGgqqQ+qWak7weBNGSMjQcJJ6WlwM7goKLZe/bfb 2Fxg9wz+66EeEHzKmuGjeBFqkY+QFgp+IdVQLxdAaQXEpoX5kSJpE5AiNoZa0xH7oFahVn7V yZM0sPEe+3woNc++yDe73QgEuqjU78TefYP3p2pUdw+qy1nWFxnWLl1lE6ShvLOFUwHl3d5h fy9pJUBLTPuRVrTAkOfSfrz3q/2Kwf3wHgqEG4wJ7iopeEJyOTWYDwli6XrIc4Xeb5AOmDCO /0R9hVe3qV7ZHbTJGKzJbGDGDtCTBJhKGTSlibFyZudkF/hkcTyDBfkSrZIg9WyhlFKKRjEp RfG8aVltRFDpmimvtYI8rWfmO7v1CIguRLxXk08tiiiVxm8t2nNUAVaKUjUFjqVByNVbwEZR 2yyWwbFUJKOxFUdBSGg/0J7ZtBlyd5vaD9fbtdxDyzhcvBCVnhLkqPYROEQ1GMgTb7n/CESS IB1+Fg/eq+09ILuJ3ayLBAoNoSZxQpdAUSbNs+3zFuhQRzLCbXA6YA4kCI8T7xcLL9q5PaVp MMxE84/L2FL6SrWtGfz2Zb7ZLUdgkLZu5odmkoS403SK6518gvUncf8SKZnRnSYHOgEQvWNI FJO1bHJ2ABOLRMSVL6FRe9FVmt65tC3tJ9wiTPAJJdvEkPLgJqj4M5/uFQN5Bkkogin1SEkZ kvpLbv2aB+364TzAZgOgJzMsYfF8i58IeiI0pWaJdtWIcbB2yBFjzL9tgSDxJH5vtZhltTLc 5R9Pk2fwoi2yz/NltTYMI2rToq2XH4AJVppHU6XSIlRstRJrg6SCaxJtkPnmsFNQwdQCEXGm tJ+LHuziorMsa4nicVF0F3Vi1gxb6wj0GUd/YoJ/TTewCT72djTFJIF8xFQBVSofBQfTdAGZ Rd4Y9gP0zoT0rAnvrw4IeiI05aRJx/FA7y3QCcGP3UmJrSjem2dphpAxvtISCqfYQapWK/+4 o5SX/OLeU9YaFd0mbyNhBEQXDyIVSDjtsmBzRbtM1pbBhuXXtnBKP336Djd2nI+FBEoImXTe vc9UaKnXinUq4Bxl0JJhax2ZuleeAD4M3KF4QBAVmRw0gIFz8RqlggY3LaLdTH5nwx8g6Xaw nU2oR75mPWt+QU9aRR8Y2xUzNSuIwr5wI2DuwqYgLZvkqR9Y91fXNfZ0jPNxDIaW1RLkoZSX tczHHa7M/4+gEQi/LRNrrQLsnFWlhY53uQM+OJ2Z8wXUJeGiIJMYYkp8LCQsnAoqWoxDSFpH kYKyLlnu/vbIwzZAIWo/nNEK7uNG/bf2PJUWTJsfkB2NStVEf+vwqlajCujQYSHTZOFbDGQ4 T0BsCC0p1GRcuMMjfJkNVPLq0gf39o4A2R8ZoyRIEBn0AikqF9b3pwyw/0ljUAvy4B+f+/6n vJ86h5YM6xfYHU8ymwK6KE98lN//MUPWSq1y0QVu+d1rYIzXjUaUfDohwbmaBZq5RtASleSQ x0nIXWkdsp1v+kwl0zrs9O1uROPBm1UsbkDNAkXilJCkE8/W2SRj6DwjQ+3KAwA2Jp7P4qdv sZ/6bOop7DmM1vIwoBpJRFme3cIhbtz+J9nVhrac5m+k4ijyNojz4+LfMYjG81KDQR5Hukpr QfL4o3w7AkcgwEQSAntaw1GlOm5K5bKDp6os3z+ZcKER/pT9Rk2B5gBj6hxFUrhOUlNhzNaI m6WN/07rULVlSRrR+qxnyzDYXUgOLczzeRhKXacTPUw/jf3xMOXTqPWBPGvUOsHRz2OF1UJy Xk3Ec9DwM3lm0G/tN/IeBpZGPrWYLiy1rBHswHDn2CUmEhdmV8dKCIFYlEcvAg1cOBn1SoaH 3GwYSgWfICJwdnZV/m8EjkD4jZPG7czYGKAQp1L1lDo+guFOfREMd6lZafpe3/uFg+7elGTY kjha0xHHi4GWPMGJ2we0Smr4CHzDXfnM4dQyfBT0SB8aDJxIU92b6oYH4IXPxW7u+Cepo3Ai LzcTPY61wt2RlXCOi1O56HE3q5/yzag59odRta0mo8t0P1CUQlMKiJaQ8r78+P4mEkOQsEgM RB4sMZBWdcWFU3yQx5wE83mfVabeibPzNrJHQL+x4hnfPWwlHX3A4EUqn1bq/CgEutZULNFK K4kcZ4kWZ5B1JyVntEFLZO+iuagFiWQHQ2zapYY0pbgAlrB4rNG80qMWS1V44RvQ4Ifd3EnL 8WLBTWp9h15FYbVjeOgTSJMuQ0PWqz1Y9de6vhUseie7iNxqOt/W/g7x8FCjQyjKurJGICZK XdRAH4XRRZMxZMniQPIyUZjPOYqE3D2OjvobRg6/OC0YYf7TfDuiRyCo0qSTlTqlRNMKNifN A1CdoH1oJYoVLGRGneZHomShiTHeqEbyNAp32hdBIvmzBreGu4IRTSMCtd737CJqrM+DCVUz xJctT5qPwJlTqJx7jZcwKVV3fEMsaRkt6pQIeOr5uJvSmbyUiLiC0a2a529y0RVuTu8Ndol3 0cmdu3mT6NKs0LdiAf8/ZPdI0e3Kh5rbzH1zyRgkkwpAH4inSugwlu7G45gpJPZWusobR7ir T5So1bvlEmTz0R2hR9CMhQPItu7iZaj62BV4tFy0GgoYiyOnBC0979YtO9wyamoUZj/3AN+d 5OkLyHp5wse8KTCEU6edVsv9l3Hfq7C7exACFSQWtE2owUV9bs6Eq2yAJWXECzQ4wBpijg9U JFM4mNkTrmSCPx42ftpLk/W4XWujudkvsE3ucDOWvsekia1NL4d7+DsF8JjQlEJVSgS6ZBp6 3qF2QmlvFrUkY2EODhN1fD+MK6WBkb1ymzGHOpQzhx/PPWLLhBryHLjoTqOFNJHhIVopmjre bOznenoJA9CuJNGDot0GaIVUkiz2EbykYcwkNZSmSprPzCfHQ4PzXWmvH7t6vds0JGlKSXMJ zoBjWsxhGpJnDt1mc+IO2eXEQXN7F7vX/3Y0qtIPMKBLtqR209oK/8/k+Ak4+EKzKwywaATt XyuIOKEpGyzZlbeqKAAYZZvVikiOApxjA8B3+q8KpMpyJzyXtWkwVd72qBEIgT35qISHkmgQ Olz0IxskZnFdSCIXJ8qVBrAW5Eej8oqrD9xrYxWi4jowqYE0ORcvVXnFJa7QvQTa/ajZGqXO CJumBG3Pdf3LiHeMX4r08fb1FvGTIYxuGU2uYRx9bqQ3vQLOu5sXvR7rfgIPUK23sehvN5EZ +1S3ceCrrnwkcHUxySLVrSYhA5LoquhfvNj9zAafoBMwgpVKuJrv90G8KVopESL7B+kBFj9N FhM5f4zD7XshuChvI2wEAmG+tOHP7p17LUP7mGwxCQiHnio/W9FFyT5Zrz9uNqvWLTUb97p5 R67O6BVm4HzFSs5FCsiQL8U/hZnOcJvWCeFRg4axrzeykMpd7OZOWGz3k/TS+UO0zSVI+wlh XbnpY70L3YZ/TEGk/YSATAcSwPHAClx4ruvpXupmPXeeibEgTQL0xPKhMgP4AOQxPo1o4+12 PaAW/zgsMAXVle9XbXteCH9Rvh2JI6BJVjXPE5bjKibCrGndVOBOIYFmc7QrPz0Z+nk/NjF1 YqS9B62DM1tSgyBi+dmLqF+zFNo6w21cI1qVJtOB0X+1W4NmJA3JpAYTstH60AM6hARpP3Ez aaII+1fcbKRJHP8MTjwYaVJF9O2HBPg90uI0V3316678wdXuC0sIk7OyY926+93o+EXE5UEW 6WxUWLGI/ifj3zdEKNHC+sYNdPZ2+0gqWjn7Nv+3h40AGohas3arq6YzoBuoGhrUXKplEc3a vkiDMyF0nEfVIrbr825UfaFpHYJGydYoLwWS0nMd55xjuL5GFamBrVHbtAJmugTGWGTP2IbU sO+zTYtS2z98y744zAIr6Gl9vfe5NauQJpUbCSh2GrFX3oRDuy5wnfuiy/WfZbOAbiLQo9CV naMUIaUf6Tksrz3CdExYg2NfmCeK7zc/uMRjHvt4y/DvMR+YBoLT53uHg+Quan2GhAi4KGjF 7JLCCciSs43whdx1rGS9/HAmbk3kYo7nznduLwWpzzENR5pOR08HzHSdG0ADEnMMQ2q0j/d2 JEjbqZ5weQnEYPmktXxzsZu1HGlSQO0a825eqIroOwhGuY0X/aWrrv22m3fs64aPiRqXIDmw TxrHwgA1R8lq/sutKzuElvjYh+Fs/Cf5dk8dgamatJEkLLWOu0/20oMQgCZYB+q8UemAbkjm UUHxwr2r9h3KF5RKP0Sd+pTFUOqVqusZ0wVjrETKXEpOg/l23jClhp2bbYYnQdqvEKeaNIFR 5kwircqGo+BuylqNwjOFKKxuqMIkn4dploBvmU7c5D582svQKXmWpGUq5VK7KYaXX+Cybq3v QGuNQPsD8/09agSCF9QRO2tUSN4AjYhWfOsy5ugAcRE5oCWTHmIyPst1lJ6Avj5FFSmfCUWa Tb12g1uLpiPmkNQQzW7D1tjaGGNB70Dz0sRb/7P6z0MqXMuL7u82SeXCylKmk0aV4EuCYd99 OR0AGCYIrwJDZAbrGkPO3cr1BHkubXkhduB18ktHyAj4mb7p+vp/Aw1B+JRMU4BAqpRUrq5R 5E3ARVvo6EKdgq6QLgk6WPcYIXD/ibHyJTyiXrq00+j/MDz/vQRpf0iQJurQnIk3449mXUn1 Fl5UaUXxdL1ZpxMzEJifRbIINYmlJeagIT/ojISpR+4GP3j7/fP9PXMEAi1E0c0QPrSCbWoN 2hEN1QbQYtwXsVMut7CDBIw0mEb1V249Go2YQ4xhmg4azw60HZMg7Q9u59Ry/6eJ7FwDc4yD u/F0RV79GjxfuYskSZ5yqxYd7W68WJCTvOUjkI2AJlEZ3kuw0vd6kjn1UDxY8nANTugWQExq rnt0B4xBVarmZahct9gN2mlxB8d08IE7eKMsDkJoH2lSnvhrwvlIk9of6QB4EzUlWw0N75X5 ud0fjDnUobzlI9AaATEHNKHczy72SQnl8Ww10RI8ZMxRw8HTPNKYQ7S3E6RG6zHs7DwG0V3l ppMhpM4plcpsAGSVAcL8xXW4emEC6xgdjUBQbkK/KtzqX2ZaW+f9J/l2Tx+BjCaa9VsNzwc4 BLqBTqAh0VKh+Bp4qgtd+X3no1K9YjQn2tvJYYKdp2Jt+XsqpqG6coIQWEm3jp+TRXu627TW rzlJE637mI6HQRDknEG2HL/8GF4wmwNk+LMPQ/jHo5Fga4zG8VNhOUX9SzYJS2r0z0biMDnv grbrVJtA9CYqJ/+Vdz+FpbxfZiHMHNf9tjFu42of+/AIzF3SuV0wXvkt/58j4JHhgpTc7Ebv d7zb8JqkxgzUqRvtNURbW8FQ7azX3HUSpP0NJSXUxDRXLp+EePw+2t0lVnvEvFronHnLR2DL EQgSZN4Lh7ha8iOX1r+GOvWCaR06N0zCW163E4//A3NqClAESQXrAAAAAElFTkSuQmCC' ] { #category : 'class initialization' } MooseConfiguration class >> mooseSettingsOn: aBuilder [ (aBuilder group: #moose) label: 'Moose'; description: 'Moose settings' ] { #category : 'iceberg' } MooseConfiguration class >> registerToIceberg [ Iceberg announcer when: IceRepositoryCreated send: #sortIcebergRepositories to: self. Iceberg announcer when: IceRepositoryModified send: #sortIcebergRepositories to: self. self sortIcebergTabs. self sortIcebergRepositories. ] { #category : 'iceberg' } MooseConfiguration class >> sortIcebergRepositories [ IceRepository registry sort: #isMissing ascending , #name ascending ] { #category : 'sorting' } MooseConfiguration class >> sortIcebergTabs [ IceTipRepositoriesModel addTag: #Moose priority: -100 ] ================================================ FILE: src/Moose-Configuration/MooseVersion.class.st ================================================ " I am responsible for holding the version of Moose loaded in the image " Class { #name : 'MooseVersion', #superclass : 'Object', #instVars : [ 'major', 'minor', 'patch', 'commitHash' ], #classInstVars : [ 'current' ], #category : 'Moose-Configuration', #package : 'Moose-Configuration' } { #category : 'accessing' } MooseVersion class >> current [ ^current ifNil: [ current := self new ] ] { #category : 'accessing' } MooseVersion >> commitHash [ ^ commitHash ] { #category : 'accessing' } MooseVersion >> commitHash: anObject [ commitHash := anObject ] { #category : 'initialization' } MooseVersion >> initialize [ super initialize. commitHash := '#0000'. major := '13'. minor := '0'. patch := '0' ] { #category : 'accessing' } MooseVersion >> major [ ^ major ] { #category : 'accessing' } MooseVersion >> major: anObject [ major := anObject ] { #category : 'accessing' } MooseVersion >> minor [ ^ minor ] { #category : 'accessing' } MooseVersion >> minor: anObject [ minor := anObject ] { #category : 'accessing' } MooseVersion >> patch [ ^ patch ] { #category : 'accessing' } MooseVersion >> patch: anObject [ patch := anObject ] { #category : 'accessing' } MooseVersion >> versionNumber [ ^{major . minor . patch } joinUsing: '.' ] ================================================ FILE: src/Moose-Configuration/package.st ================================================ Package { #name : 'Moose-Configuration' }