r755 - in trunk: . eugene eugene/doc eugene/doc/1-javamodel eugene/doc/1-javamodel/sources eugene/doc/2-javabuilder eugene/doc/2-javabuilder/sources eugene/doc/3-v2.0 eugene/doc/3-v2.0/sources eugene/src/main/java/org/nuiton eugene/src/main/java/org/nuiton/eugene eugene/src/main/java/org/nuiton/eugene/java eugene/src/main/java/org/nuiton/eugene/models eugene/src/main/java/org/nuiton/eugene/models/object eugene/src/main/java/org/nuiton/eugene/models/object/validator eugene/src/main/java/org/
Author: tchemit Date: 2009-12-15 00:50:27 +0100 (Tue, 15 Dec 2009) New Revision: 755 Added: trunk/eugene/doc/ trunk/eugene/doc/1-javamodel/ trunk/eugene/doc/1-javamodel/Etude_JavaModel_EUGene.pdf trunk/eugene/doc/1-javamodel/Metamodel_Java_04-02-02.pdf trunk/eugene/doc/1-javamodel/sources/ trunk/eugene/doc/1-javamodel/sources/JavaModel.png trunk/eugene/doc/1-javamodel/sources/ObjectModel.png trunk/eugene/doc/1-javamodel/sources/ObjectModel_Interfaces.png trunk/eugene/doc/1-javamodel/sources/Todo.rst trunk/eugene/doc/1-javamodel/sources/description_metamodel_java trunk/eugene/doc/1-javamodel/sources/eugen_java.zargo trunk/eugene/doc/1-javamodel/sources/eugene_objectmodel.zargo trunk/eugene/doc/2-javabuilder/ trunk/eugene/doc/2-javabuilder/JavaBuilder.pdf trunk/eugene/doc/2-javabuilder/sources.tar.gz trunk/eugene/doc/2-javabuilder/sources/ trunk/eugene/doc/2-javabuilder/sources/JavaBuilder.png trunk/eugene/doc/2-javabuilder/sources/ObjectModel.png trunk/eugene/doc/2-javabuilder/sources/ObjectModelBuilderHelper.png trunk/eugene/doc/2-javabuilder/sources/description_javabuilder trunk/eugene/doc/2-javabuilder/sources/eugene_javabuilder.zargo trunk/eugene/doc/3-v2.0/ trunk/eugene/doc/3-v2.0/eugene2.0.pdf trunk/eugene/doc/3-v2.0/sources/ trunk/eugene/doc/3-v2.0/sources/DiagActivite_EUGene1.0.1_Generation.png trunk/eugene/doc/3-v2.0/sources/DiagActivite_EUGene2.0_Generation.png trunk/eugene/doc/3-v2.0/sources/DiagActivite_EUGene2.0_GenerationJava.png trunk/eugene/doc/3-v2.0/sources/DiagClasses_Generators.png trunk/eugene/doc/3-v2.0/sources/EUGene-generate.vpp trunk/eugene/doc/3-v2.0/sources/eugene2.0 trunk/eugene/doc/3-v2.0/sources/eugene_v2.0.zargo trunk/eugene/src/main/java/org/nuiton/eugene/AbstractGenerator.java trunk/eugene/src/main/java/org/nuiton/eugene/AbstractModelFileWriter.java trunk/eugene/src/main/java/org/nuiton/eugene/ModelFileWriter.java trunk/eugene/src/main/java/org/nuiton/eugene/ModelFileWriterConfiguration.java trunk/eugene/src/main/java/org/nuiton/eugene/ModelFileWriterUtil.java trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java trunk/eugene/src/main/java/org/nuiton/eugene/ObjectModelReader.java trunk/eugene/src/main/java/org/nuiton/eugene/ObjectModelTransformer.java trunk/eugene/src/main/java/org/nuiton/eugene/StateModelReader.java trunk/eugene/src/main/java/org/nuiton/eugene/Template.java trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java trunk/eugene/src/main/java/org/nuiton/eugene/java/ trunk/eugene/src/main/java/org/nuiton/eugene/java/ImportsManagerExtension.java trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelModifier.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelVisibility.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtension.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilder.java trunk/eugene/src/site/fr/ trunk/eugene/src/site/fr/rst/ trunk/eugene/src/site/fr/rst/DevUIDoc.rst trunk/eugene/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst trunk/eugene/src/site/fr/rst/FAQ.rst trunk/eugene/src/site/fr/rst/ObjectModel.rst trunk/eugene/src/site/fr/rst/Todo.rst trunk/eugene/src/site/fr/rst/index.rst trunk/eugene/src/site/fr/rst/plugineclipse.rst trunk/eugene/src/site/resources/ trunk/eugene/src/site/resources/images/ trunk/eugene/src/site/resources/images/Hotel.objectmodel.png trunk/eugene/src/site/resources/images/Hotel.png trunk/eugene/src/site/resources/images/ObjectModel.png trunk/eugene/src/site/resources/images/ObjectModel_Generator.png trunk/eugene/src/site/resources/images/ObjectModel_Interfaces.png trunk/eugene/src/site/resources/images/StateModel.png trunk/eugene/src/site/resources/images/plugin_choix.png trunk/eugene/src/site/resources/images/plugin_menu.png trunk/eugene/src/site/resources/images/plugin_newdepot.png trunk/eugene/src/site/resources/images/plugin_typeinstall.png trunk/eugene/src/site/resources/images/plugin_utilisation_editeur.png trunk/eugene/src/site/resources/models/ trunk/eugene/src/site/resources/models/buix.guix trunk/eugene/src/site/resources/models/exemple.topiaModel trunk/eugene/src/site/resources/xmi/ trunk/eugene/src/site/resources/xmi/ObjectModel.zuml trunk/eugene/src/site/resources/xmi/objectmodel.zargo trunk/eugene/src/site/rst/ trunk/eugene/src/site/rst/LutinGenerator.rst trunk/eugene/src/site/rst/generatorHelp.rst trunk/eugene/src/site/rst/index.rst trunk/eugene/src/site/site_en.xml trunk/eugene/src/site/site_fr.xml trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java trunk/eugene/src/test/java/org/nuiton/eugene/ModelFileWriterUtilTest.java trunk/eugene/src/test/java/org/nuiton/eugene/java/ trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerExtensionTest.java trunk/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java trunk/eugene/src/test/java/org/nuiton/eugene/models/object/ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtensionTest.java trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderTest.java trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelImplTest.java trunk/maven-eugene-plugin/src/it/ trunk/maven-eugene-plugin/src/it/generate-model-files/ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/README.txt trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/invoker.properties trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/pom.xml trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.properties trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.xmi trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/topiatest.properties trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/topiatest.zargo trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/verify.groovy trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/README.txt trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/invoker.properties trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/pom.xml trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.properties trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.xmi trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.zargo trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/verify.groovy trunk/maven-eugene-plugin/src/it/generate/ trunk/maven-eugene-plugin/src/it/generate/generators/ trunk/maven-eugene-plugin/src/it/generate/generators/LICENSE.txt trunk/maven-eugene-plugin/src/it/generate/generators/README.txt trunk/maven-eugene-plugin/src/it/generate/generators/changelog.txt trunk/maven-eugene-plugin/src/it/generate/generators/invoker.properties trunk/maven-eugene-plugin/src/it/generate/generators/pom.xml trunk/maven-eugene-plugin/src/it/generate/generators/src/ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/Megatron.java trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TestReader.java trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TopiaGeneratorUtil.java trunk/maven-eugene-plugin/src/it/generate/generators/src/main/models/ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/models/dtotest.objectmodel trunk/maven-eugene-plugin/src/it/generate/generators/src/main/models/dtotest2.objectmodel trunk/maven-eugene-plugin/src/it/generate/generators/src/main/resources/ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/resources/log4j.properties trunk/maven-eugene-plugin/src/it/generate/generators/src/test/ trunk/maven-eugene-plugin/src/it/generate/generators/src/test/java/ trunk/maven-eugene-plugin/src/it/generate/generators/src/test/java/org/ trunk/maven-eugene-plugin/src/it/generate/generators/src/test/java/org/nuiton/ trunk/maven-eugene-plugin/src/it/generate/generators/src/test/java/org/nuiton/eugene/ trunk/maven-eugene-plugin/src/it/generate/generators/src/test/java/org/nuiton/eugene/test/ trunk/maven-eugene-plugin/src/it/generate/generators/src/test/java/org/nuiton/eugene/test/generator/ trunk/maven-eugene-plugin/src/it/generate/generators/src/test/java/org/nuiton/eugene/test/generator/TestBuilderTest.java trunk/maven-eugene-plugin/src/it/generate/generators/src/test/resources/ trunk/maven-eugene-plugin/src/it/generate/generators/src/test/resources/log4j.properties trunk/maven-eugene-plugin/src/it/generate/generators/verify.groovy trunk/maven-eugene-plugin/src/it/settings.xml trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AbstractEugeneMojo.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/GeneratateModelFilesMojo.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseModelFileWriter.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseXmiToModelFileWriter.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToObjectModelFileWriter.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToStateModelFileWriter.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ZargoModelFileWriter.java trunk/maven-eugene-plugin/src/site/fr/ trunk/maven-eugene-plugin/src/site/fr/rst/ trunk/maven-eugene-plugin/src/site/fr/rst/index.rst trunk/maven-eugene-plugin/src/site/rst/ trunk/maven-eugene-plugin/src/site/rst/index.rst trunk/maven-eugene-plugin/src/site/site_en.xml trunk/maven-eugene-plugin/src/site/site_fr.xml trunk/src/site/site_en.xml trunk/src/site/site_fr.xml Removed: trunk/eugene-demo/ trunk/eugene/doc/1-javamodel/ trunk/eugene/doc/1-javamodel/Etude_JavaModel_EUGene.pdf trunk/eugene/doc/1-javamodel/Metamodel_Java_04-02-02.pdf trunk/eugene/doc/1-javamodel/sources/ trunk/eugene/doc/1-javamodel/sources/JavaModel.png trunk/eugene/doc/1-javamodel/sources/ObjectModel.png trunk/eugene/doc/1-javamodel/sources/ObjectModel_Interfaces.png trunk/eugene/doc/1-javamodel/sources/Todo.rst trunk/eugene/doc/1-javamodel/sources/description_metamodel_java trunk/eugene/doc/1-javamodel/sources/eugen_java.zargo trunk/eugene/doc/1-javamodel/sources/eugene_objectmodel.zargo trunk/eugene/doc/2-javabuilder/ trunk/eugene/doc/2-javabuilder/JavaBuilder.pdf trunk/eugene/doc/2-javabuilder/sources.tar.gz trunk/eugene/doc/2-javabuilder/sources/ trunk/eugene/doc/2-javabuilder/sources/JavaBuilder.png trunk/eugene/doc/2-javabuilder/sources/ObjectModel.png trunk/eugene/doc/2-javabuilder/sources/ObjectModelBuilderHelper.png trunk/eugene/doc/2-javabuilder/sources/description_javabuilder trunk/eugene/doc/2-javabuilder/sources/eugene_javabuilder.zargo trunk/eugene/doc/3-v2.0/ trunk/eugene/doc/3-v2.0/eugene2.0.pdf trunk/eugene/doc/3-v2.0/sources/ trunk/eugene/doc/3-v2.0/sources/DiagActivite_EUGene1.0.1_Generation.png trunk/eugene/doc/3-v2.0/sources/DiagActivite_EUGene2.0_Generation.png trunk/eugene/doc/3-v2.0/sources/DiagActivite_EUGene2.0_GenerationJava.png trunk/eugene/doc/3-v2.0/sources/DiagClasses_Generators.png trunk/eugene/doc/3-v2.0/sources/EUGene-generate.vpp trunk/eugene/doc/3-v2.0/sources/eugene2.0 trunk/eugene/doc/3-v2.0/sources/eugene_v2.0.zargo trunk/eugene/src/main/java/org/nuiton/eugene/AbstractObjectModelGenerator.java trunk/eugene/src/main/java/org/nuiton/eugene/ChildGenerator.java trunk/eugene/src/main/java/org/nuiton/eugene/Generator.java trunk/eugene/src/main/java/org/nuiton/eugene/UIModelGenerator.java trunk/eugene/src/main/java/org/nuiton/eugene/java/ImportsManagerExtension.java trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/JavaClassBuilder.java trunk/eugene/src/main/java/org/nuiton/eugene/models/ui/ trunk/eugene/src/site/en/ trunk/eugene/src/site/fr/rst/ trunk/eugene/src/site/fr/rst/DevUIDoc.rst trunk/eugene/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst trunk/eugene/src/site/fr/rst/FAQ.rst trunk/eugene/src/site/fr/rst/ObjectModel.rst trunk/eugene/src/site/fr/rst/Todo.rst trunk/eugene/src/site/fr/rst/index.rst trunk/eugene/src/site/fr/rst/plugineclipse.rst trunk/eugene/src/site/resources/images/ trunk/eugene/src/site/resources/images/Hotel.objectmodel.png trunk/eugene/src/site/resources/images/Hotel.png trunk/eugene/src/site/resources/images/ObjectModel.png trunk/eugene/src/site/resources/images/ObjectModel_Generator.png trunk/eugene/src/site/resources/images/ObjectModel_Interfaces.png trunk/eugene/src/site/resources/images/StateModel.png trunk/eugene/src/site/resources/images/plugin_choix.png trunk/eugene/src/site/resources/images/plugin_menu.png trunk/eugene/src/site/resources/images/plugin_newdepot.png trunk/eugene/src/site/resources/images/plugin_typeinstall.png trunk/eugene/src/site/resources/images/plugin_utilisation_editeur.png trunk/eugene/src/site/resources/models/ trunk/eugene/src/site/resources/models/buix.guix trunk/eugene/src/site/resources/models/exemple.topiaModel trunk/eugene/src/site/resources/xmi/ trunk/eugene/src/site/resources/xmi/ObjectModel.zuml trunk/eugene/src/site/resources/xmi/objectmodel.zargo trunk/eugene/src/site/rst/ trunk/eugene/src/site/rst/LutinGenerator.rst trunk/eugene/src/site/rst/generatorHelp.rst trunk/eugene/src/site/rst/index.rst trunk/eugene/src/site/site_en.xml trunk/eugene/src/site/site_fr.xml trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerExtensionTest.java trunk/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtensionTest.java trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderTest.java trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelImplTest.java trunk/eugene/src/test/java/org/nuiton/eugene/models/ui/javaxml/JavaXMLParserTest.java trunk/maven-eugene-plugin/src/it/generate-model-files/ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/README.txt trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/invoker.properties trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/pom.xml trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.properties trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.xmi trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/topiatest.properties trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/topiatest.zargo trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/verify.groovy trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/README.txt trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/invoker.properties trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/pom.xml trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.properties trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.xmi trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.zargo trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/verify.groovy trunk/maven-eugene-plugin/src/it/generate/ trunk/maven-eugene-plugin/src/it/generate/generators/ trunk/maven-eugene-plugin/src/it/generate/generators/LICENSE.txt trunk/maven-eugene-plugin/src/it/generate/generators/README.txt trunk/maven-eugene-plugin/src/it/generate/generators/changelog.txt trunk/maven-eugene-plugin/src/it/generate/generators/invoker.properties trunk/maven-eugene-plugin/src/it/generate/generators/pom.xml trunk/maven-eugene-plugin/src/it/generate/generators/src/ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/Megatron.java trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TestReader.java trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TopiaGeneratorUtil.java trunk/maven-eugene-plugin/src/it/generate/generators/src/main/models/ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/models/dtotest.objectmodel trunk/maven-eugene-plugin/src/it/generate/generators/src/main/models/dtotest2.objectmodel trunk/maven-eugene-plugin/src/it/generate/generators/src/main/resources/ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/resources/log4j.properties trunk/maven-eugene-plugin/src/it/generate/generators/src/test/ trunk/maven-eugene-plugin/src/it/generate/generators/src/test/java/ trunk/maven-eugene-plugin/src/it/generate/generators/src/test/java/org/ trunk/maven-eugene-plugin/src/it/generate/generators/src/test/java/org/nuiton/ trunk/maven-eugene-plugin/src/it/generate/generators/src/test/java/org/nuiton/eugene/ trunk/maven-eugene-plugin/src/it/generate/generators/src/test/java/org/nuiton/eugene/test/ trunk/maven-eugene-plugin/src/it/generate/generators/src/test/java/org/nuiton/eugene/test/generator/ trunk/maven-eugene-plugin/src/it/generate/generators/src/test/java/org/nuiton/eugene/test/generator/TestBuilderTest.java trunk/maven-eugene-plugin/src/it/generate/generators/src/test/resources/ trunk/maven-eugene-plugin/src/it/generate/generators/src/test/resources/log4j.properties trunk/maven-eugene-plugin/src/it/generate/generators/verify.groovy trunk/maven-eugene-plugin/src/it/settings.xml trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseModelFileWriter.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseXmiToModelFileWriter.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToObjectModelFileWriter.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToStateModelFileWriter.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ZargoModelFileWriter.java trunk/maven-eugene-plugin/src/site/en/ trunk/maven-eugene-plugin/src/site/fr/rst/ trunk/maven-eugene-plugin/src/site/fr/rst/index.rst trunk/maven-eugene-plugin/src/site/rst/ trunk/maven-eugene-plugin/src/site/rst/index.rst trunk/maven-eugene-plugin/src/site/site_en.xml trunk/maven-eugene-plugin/src/site/site_fr.xml trunk/src/site/en/ trunk/src/site/resources/ trunk/src/site/rst/ trunk/src/site/site_en.xml trunk/src/site/site_fr.xml Modified: trunk/ trunk/eugene/ trunk/eugene/pom.xml trunk/eugene/src/main/java/org/nuiton/ trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorException.java trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorTask.java trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java trunk/eugene/src/main/java/org/nuiton/eugene/ImportsManager.java trunk/eugene/src/main/java/org/nuiton/eugene/MonitorWriter.java trunk/eugene/src/main/java/org/nuiton/eugene/ObjectModelGenerator.java trunk/eugene/src/main/java/org/nuiton/eugene/ObjectModelType.java trunk/eugene/src/main/java/org/nuiton/eugene/PackageValidator.java trunk/eugene/src/main/java/org/nuiton/eugene/StateModelGenerator.java trunk/eugene/src/main/java/org/nuiton/eugene/models/Model.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModel.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelAssociationClass.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelAttribute.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClass.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClassifier.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelDependency.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelEnumeration.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelInterface.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelOperation.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelParameter.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/validator/AttributeNamesValidator.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/validator/ClassNamesValidator.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/validator/NameBasedValidator.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/validator/ObjectModelValidator.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/DigesterObjectModelRuleSet.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModeImplAssociationClassParticipant.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAssociationClassImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAttributeImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelDependencyImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelEnumerationImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImplRef.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImplSuperClassRef.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImplTagValue.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelInterfaceImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelOperationImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelParameterImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModel.java trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelComplexState.java trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelSimpleState.java trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelState.java trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelStateChart.java trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelTransition.java trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/DigesterStateModelRuleSet.java trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelComplexeStateImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelSimpleStateImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelStateChartImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelStateImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelTransitionImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/package-info.java trunk/eugene/src/main/resources/dtd/ trunk/eugene/src/main/xsl/xmi2.1ToObjectModel.xsl trunk/eugene/src/test/java/org/nuiton/ trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorTaskTest.java trunk/eugene/src/test/java/org/nuiton/eugene/ImportsManagerTest.java trunk/eugene/src/test/java/org/nuiton/eugene/ObjectModelGeneratorTest.java trunk/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelDTDTest.java trunk/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelTest.java trunk/eugene/src/test/java/org/nuiton/eugene/models/xml/ModelMergeTest.java trunk/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI12ToObjectModelTest.java trunk/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI21ToObjectModelTest.java trunk/eugene/src/test/resources/log4j.properties trunk/eugene/src/test/resources/models/ trunk/eugene/src/test/resources/models/objectmodel/ trunk/eugene/src/test/resources/models/statemodel/ trunk/eugene/src/test/resources/models/uimodel/ trunk/eugene/src/test/resources/models/uimodel/test.javaxml trunk/eugene/src/test/resources/models/uimodel/test1.javaxml trunk/eugene/src/test/resources/models/uimodel/test2.javaxml trunk/eugene/src/test/resources/xmi/1.2/topiatest.xmi trunk/eugene/src/test/resources/xmi/1.2/topiatest.zargo trunk/maven-eugene-plugin/ trunk/maven-eugene-plugin/pom.xml trunk/maven-eugene-plugin/src/main/java/org/nuiton/ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2ObjectModel.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2StateModel.java trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java trunk/maven-eugene-plugin/src/main/resources/log4j.properties trunk/pom.xml Log: merge eugene-2.0 branch to trunk Property changes on: trunk ___________________________________________________________________ Modified: svn:ignore - target .settings bin .classpath .project *.iml + target .settings bin .classpath .project *.iml *.ipr *.iws Added: svn:mergeinfo + /branches/1.0.1-Javabuilder:641-651 /branches/1.1.0-Javabuilder:652-681 /branches/eugene-2.0:682-754 Property changes on: trunk/eugene ___________________________________________________________________ Modified: svn:ignore - maven.log target velocity.log .eclipse *.ipr .classpath .project .settings *.iml + eugene (1) (org.nuiton.eugene).iml velocity.log .classpath .project .eclipse target lutingenerator.ipr maven.log eugene (1).iml .settings Deleted: svn:mergeinfo - Property changes on: trunk/eugene/doc/1-javamodel ___________________________________________________________________ Added: svn:mergeinfo + /branches/1.0.1-Javabuilder/eugene/doc/1-javamodel:641-651 /branches/eugene-2.0/eugene/doc/1-javamodel:682-754 Deleted: trunk/eugene/doc/1-javamodel/Etude_JavaModel_EUGene.pdf =================================================================== --- branches/eugene-2.0/eugene/doc/1-javamodel/Etude_JavaModel_EUGene.pdf 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/doc/1-javamodel/Etude_JavaModel_EUGene.pdf 2009-12-14 23:50:27 UTC (rev 755) @@ -1,2256 +0,0 @@ -%PDF-1.3 -%���� ReportLab Generated PDF document http://www.reportlab.com -% 'BasicFonts': class PDFDictionary -1 0 obj -% The standard fonts dictionary -<< /F1 2 0 R - /F2 3 0 R - /F3 4 0 R - /F4 39 0 R >> -endobj -% 'F1': class PDFType1Font -2 0 obj -% Font Helvetica -<< /BaseFont /Helvetica - /Encoding /WinAnsiEncoding - /Name /F1 - /Subtype /Type1 - /Type /Font >> -endobj -% 'F2': class PDFType1Font -3 0 obj -% Font Helvetica-Bold -<< /BaseFont /Helvetica-Bold - /Encoding /WinAnsiEncoding - /Name /F2 - /Subtype /Type1 - /Type /Font >> -endobj -% 'F3': class PDFType1Font -4 0 obj -% Font Times-Roman -<< /BaseFont /Times-Roman - /Encoding /WinAnsiEncoding - /Name /F3 - /Subtype /Type1 - /Type /Font >> -endobj -% 'Annot.NUMBER1': class LinkAnnotation -5 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 35 0 R - /XYZ - 62.69291 - 398.0236 - 0 ] - /Rect [ 68.69291 - 668.5936 - 119.8229 - 680.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER2': class LinkAnnotation -6 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 35 0 R - /XYZ - 62.69291 - 398.0236 - 0 ] - /Rect [ 521.0227 - 668.5936 - 526.5827 - 680.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER3': class LinkAnnotation -7 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 35 0 R - /XYZ - 62.69291 - 365.0236 - 0 ] - /Rect [ 88.69291 - 650.5936 - 198.1829 - 662.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER4': class LinkAnnotation -8 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 35 0 R - /XYZ - 62.69291 - 365.0236 - 0 ] - /Rect [ 521.0227 - 650.5936 - 526.5827 - 662.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER5': class LinkAnnotation -9 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 35 0 R - /XYZ - 62.69291 - 293.0236 - 0 ] - /Rect [ 88.69291 - 632.5936 - 162.0629 - 644.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER6': class LinkAnnotation -10 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 35 0 R - /XYZ - 62.69291 - 293.0236 - 0 ] - /Rect [ 521.0227 - 632.5936 - 526.5827 - 644.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER7': class LinkAnnotation -11 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 35 0 R - /XYZ - 62.69291 - 173.0236 - 0 ] - /Rect [ 88.69291 - 614.5936 - 144.8329 - 626.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER8': class LinkAnnotation -12 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 35 0 R - /XYZ - 62.69291 - 173.0236 - 0 ] - /Rect [ 521.0227 - 614.5936 - 526.5827 - 626.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER9': class LinkAnnotation -13 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 38 0 R - /XYZ - 62.69291 - 486.2781 - 0 ] - /Rect [ 88.69291 - 596.5936 - 186.5229 - 608.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER10': class LinkAnnotation -14 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 38 0 R - /XYZ - 62.69291 - 486.2781 - 0 ] - /Rect [ 521.0227 - 596.5936 - 526.5827 - 608.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER11': class LinkAnnotation -15 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 38 0 R - /XYZ - 62.69291 - 354.2781 - 0 ] - /Rect [ 88.69291 - 578.5936 - 275.4229 - 590.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER12': class LinkAnnotation -16 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 38 0 R - /XYZ - 62.69291 - 354.2781 - 0 ] - /Rect [ 521.0227 - 578.5936 - 526.5827 - 590.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER13': class LinkAnnotation -17 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 38 0 R - /XYZ - 62.69291 - 246.2781 - 0 ] - /Rect [ 88.69291 - 560.5936 - 191.5029 - 572.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER14': class LinkAnnotation -18 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 38 0 R - /XYZ - 62.69291 - 246.2781 - 0 ] - /Rect [ 521.0227 - 560.5936 - 526.5827 - 572.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER15': class LinkAnnotation -19 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 38 0 R - /XYZ - 62.69291 - 186.2781 - 0 ] - /Rect [ 88.69291 - 542.5936 - 206.5229 - 554.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER16': class LinkAnnotation -20 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 38 0 R - /XYZ - 62.69291 - 186.2781 - 0 ] - /Rect [ 521.0227 - 542.5936 - 526.5827 - 554.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER17': class LinkAnnotation -21 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 38 0 R - /XYZ - 62.69291 - 138.2781 - 0 ] - /Rect [ 88.69291 - 524.5936 - 149.2729 - 536.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER18': class LinkAnnotation -22 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 38 0 R - /XYZ - 62.69291 - 138.2781 - 0 ] - /Rect [ 521.0227 - 524.5936 - 526.5827 - 536.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER19': class LinkAnnotation -23 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 40 0 R - /XYZ - 62.69291 - 741.0236 - 0 ] - /Rect [ 88.69291 - 506.5936 - 161.5129 - 518.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER20': class LinkAnnotation -24 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 40 0 R - /XYZ - 62.69291 - 741.0236 - 0 ] - /Rect [ 521.0227 - 506.5936 - 526.5827 - 518.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER21': class LinkAnnotation -25 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 40 0 R - /XYZ - 62.69291 - 657.0236 - 0 ] - /Rect [ 88.69291 - 488.5936 - 251.2729 - 500.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER22': class LinkAnnotation -26 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 40 0 R - /XYZ - 62.69291 - 657.0236 - 0 ] - /Rect [ 521.0227 - 488.5936 - 526.5827 - 500.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER23': class LinkAnnotation -27 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 40 0 R - /XYZ - 62.69291 - 597.0236 - 0 ] - /Rect [ 88.69291 - 470.5936 - 195.9529 - 482.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER24': class LinkAnnotation -28 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 40 0 R - /XYZ - 62.69291 - 597.0236 - 0 ] - /Rect [ 521.0227 - 470.5936 - 526.5827 - 482.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER25': class LinkAnnotation -29 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 40 0 R - /XYZ - 62.69291 - 416.4691 - 0 ] - /Rect [ 88.69291 - 452.5936 - 186.5129 - 464.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER26': class LinkAnnotation -30 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 40 0 R - /XYZ - 62.69291 - 416.4691 - 0 ] - /Rect [ 521.0227 - 452.5936 - 526.5827 - 464.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER27': class LinkAnnotation -31 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 40 0 R - /XYZ - 62.69291 - 356.4691 - 0 ] - /Rect [ 68.69291 - 434.5936 - 299.8529 - 446.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER28': class LinkAnnotation -32 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 40 0 R - /XYZ - 62.69291 - 356.4691 - 0 ] - /Rect [ 521.0227 - 434.5936 - 526.5827 - 446.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER29': class LinkAnnotation -33 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 41 0 R - /XYZ - 62.69291 - 195.7082 - 0 ] - /Rect [ 68.69291 - 416.5936 - 222.7629 - 428.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Annot.NUMBER30': class LinkAnnotation -34 0 obj -<< /Border [ 0 - 0 - 0 ] - /Contents () - /Dest [ 41 0 R - /XYZ - 62.69291 - 195.7082 - 0 ] - /Rect [ 521.0227 - 416.5936 - 526.5827 - 428.5936 ] - /Subtype /Link - /Type /Annot >> -endobj -% 'Page1': class PDFPage -35 0 obj -% Page dictionary -<< /Annots [ 5 0 R - 6 0 R - 7 0 R - 8 0 R - 9 0 R - 10 0 R - 11 0 R - 12 0 R - 13 0 R - 14 0 R - 15 0 R - 16 0 R - 17 0 R - 18 0 R - 19 0 R - 20 0 R - 21 0 R - 22 0 R - 23 0 R - 24 0 R - 25 0 R - 26 0 R - 27 0 R - 28 0 R - 29 0 R - 30 0 R - 31 0 R - 32 0 R - 33 0 R - 34 0 R ] - /Contents 66 0 R - /MediaBox [ 0 - 0 - 595.2756 - 841.8898 ] - /Parent 65 0 R - /Resources << /Font 1 0 R - /ProcSet [ /PDF - /Text - /ImageB - /ImageC - /ImageI ] >> - /Rotate 0 - /Trans << >> - /Type /Page >> -endobj -% 'FormXob.0abfd65e2cab2f27fd6af0c2fbb44aa3': class PDFImageXObject -36 0 obj -<< /BitsPerComponent 8 - /ColorSpace /DeviceRGB - /Filter [ /ASCII85Decode - /FlateDecode ] - /Height 562 - /Length 25652 - /SMask 37 0 R - /Subtype /Image - /Type /XObject - /Width 990 >> -stream -Gb"0W%C3(6eu`AMYa]V.hmmPihK(/bq7-[+;Zmt3hBsd&Eg_^hLa-1iqssggzz!!&D1L0-o@-ia5I<;LO!qdP""ErZ2jfoaKgpa;@,+diE4!6g@3*lJ"uq4I\KbQ.\Dk!_%dJRf5j!&-KtGmks>!!%Q&eKsfaH2dP2N\@kP5=G@':u5o:#K[qc!+9uq@!RXJr]'a:\=S^B2OPNQ^=J7k]-MFt!._%oJn=dtGi+[Db/`\e`ra;@Vo!0G[VNtHe[2d5&PER.[t!iloBa"e1a"sU;Bq77ON[_*!2a@]]eh.7WV)KNZha<8Y?Nl/G0Ita1pL-NQ#0jB"rKipmRo;?!!&D?AMX#@k?GLN5)Q\$-Y`C^J8oa&GH7`Z!6H2\!+6D*H*<H09>s"(`_V<UkL0??DV&J_S[R;2rtNhT!@2^d!.[LCk.NT4)VNjNPBFk2[r-nC:RsrWlr\^><F#]sZ2@6M#64akT+Ulk=gUaUG:$=&1;?Mhra>)lbuke')uos=I\k+uCd1*D5K1^m(->`t:ZG*u)DrA>3J4SV,2%\gLIcWgBRja!e4)1u!!&CVSbFfGOuWLB_!FVS0p'T[!!$V$166us%KHJ_4-Fjt,]`qcJD$(/@j%0A!!(6'A0(ip)uotHFsQYr8EKmP!4,>u9K/jAB-WfH!!#].j-b/ura\4`UVhCa\:fu%HK9'SoE50p;&dV>KR`E4hIJg]Z1/DjL1?fjimIf,)u$NQ2YYOc1ZC(WIo&HZb]?K`)?=1*rY5OW>`+"jcjB;K':/n'fXQFM5VeZmr"tH>Y),dR!,UH*@N_(3+asj?4P.NJ!<>$cqq(A)pH=4;B[RSck#.!W_l:oP-LFBka7P'F/e%fb8Zh1/`^mL6(<J[SeB&=fL/XT)Xcdt]qHq%7!<BRgHN&8^5-I^'@](M8H_'$dCs5'cg:*<TVn:8qgT!^uh^P'<nRFP4BlJ/t5I8\L:PDFLDmiiEIOSM?!+8IOoDS@H`G&iH[BZ'>h);^+mSduW0V_[jr78KVjC#n4j27,O_9/]@%6:9/j)",=:+2ANIZ1+Ha^;3LVi@%^8oKQiHX%Hh<d$F">qYB.Mgpr&K.#8r%OZ^\C?p.#:BRWqDQ1sQ;5'5rrHfDnr#8:skAG46"c+71WEo(;.r&8SoDt.d%KI0qf5S@GEQp&J0&7"0YID9s/`??-0$B(.U"Xg[bV+%7]s01)5HLm7T''sp2gX=,ILN,takJ?2?GO>FT!gI\Hb8:c!3icX>&BW%G)KAN$b1Vdl:-M-S]pKU\++>o!48:`c=GA9%;Gdo[u>Nf+2b'`o$3ZlT<Y6%e5#pp9*;uPdL9`SM42ZUE"t`_1>d;b/$IUX@g\JJ5i(BOPBfU+lu*J#`_sG08`i6B)?<f=HGEW4A%XugRCp.5G(%YRbjJB?l$.)hBnJd!R*<>>*tD?to4'*+ao$$pU]lPrA#Wc)p55<)aVN&Pl$!$M:ZNZO%0.ob1RMGpR..$L4IP[2ptndJJH$kBAMV$%5:r'7bLYf9DP708hqcHe5K6U5jOMs?$C:sIQ!FS&c%ddN-pK\+Y#R5I'?#sjFQWBC99@U,!,M2-P:s#Wk\VQ4/+F,T3anUqimN&V4Uc#0mnNfR%XfUD.E%;+R-0pJ1u:M/".DjVVI(ITb?uqJF",%giL&es\2<&.%g/9+pSP(j[okC<P.;:da)K7D9jAV*TSEPBVgHn_;0f-74R!/13G#T?jsQQi+asj?4P.NJnIBj^d'V]"ZC1Vi7aptkh5\:o\Fe#Os+-U`R7e]P%(AOST8cL=1O9nb[',+*R8]jTZ+')SO(J4mDH1I2k-Va5H`9?,o$`WP3_q=lSkEdE\pN-S:>;FPhP<&VN,I1-%W4^PchW=uS\.2NnG)1@,aijH%g/9gk-W;CHWXJCYPeVWX#3N+@[rZI&8&8UZ#;($h`XL,PJX<[eB-M0]t.g7%;$mWiCN+"8ETB6LOja$-1`/]DH5fm4IJ:k\fJ#717.1f3H9a`^AY+^m&fcjM9BG$mW.$+3iLGhm*W-EI=bun*6DG!Qc;,N@:3E:P516HWc(mb\i_E';-tBi'<iQ*F&,G`-ZeIM)9(&(qeJs9qn'FV-K",7IZ-]Nf>ONU%XJtZf;N5O?*PnP?F!Alq;GXNk+;/bT$4M[S[7Wj1='jQQ->/a=,Zi.*6DG!Qc;,N@:3Ceo?5%"c,ZgnPBhHgs5R@<AA0(S$J<>S9]i1H[mg33Nb#;L9B.&b0JK\H'[5^<ithO"Z`k%'lr[7kn4VM3a0I3PDWoc(="81"4m`]R^a9$ZY&.Wf%c:i*^/`q>dDMQhN/\>[5DH5QPQjb7fqd`+oubsB[^\0N5n=(hRcU-KM!Er$3LOMEhiZ,!p\r>/r.oP]N)pf7\En9N]Rq70k!_$Ima`%'UCsPuAhflZVSt/0'k[=j>D"<XT5#U=LLbch4,n^_K;:ZfZA$bO9,D_bb1RTJBu62dc^qF^,,[UZqWbG7kn:=BBtT'>#3OG\QJd2jqd%qgBDuER5DC[7o?urHj0t+g0+38FY6uSCgS+SQ4jDEp^;_U7qkmDqrCPsMN(`17oIqsPP#VqZ-ZeI1GYQ,;iVW_g<8_de,63csk0CJS#Ag0ZjZ-Y=31%WHk[@k*KW>qZ4YoSDnRK)6ao#B9dC&E$[f:<l8)HcRc_h;c-!VAWTSJ)DOjdb^R7e]P$o^;:)]OcNj53aS\/1;gccei)_n`q+Beb^nV%>kGX%qgV*<hZ&f6h,b0U\h/EINt!9B.&b0JG/#=puZt.E%;+SiegdrcK..;Jsh3j%7>Vp7oe<NGCQ1d?D@=gJ>"KD6mH02N1;h"nXK&Y75LLfgt6D2WDbjFn;-(_lpY,\MRVX%g2F_:)(UJA<'a$L'*u_,kDM+o=MR<P5,LL@:3EsM.5sE5t:bU,kKu^kF+s(n">GeH#`kA_1040`*Ybb+-(WLM.HSqH5N"cpTGE)k#.!W__KIpEG<(<*X:cGr@8)8\J4&DE6NAt>T3((LOj_js,)A</qs'Tgm7i,IVP)Heh:"&280Qe`]NBm?sYQgH]ZIJ&3kom-?CWh<bXJ"+YJaud)3Z3_VYV7;4Yq;:[QRcrkd@Er=9*B+FX`Cq91r_PI#<lS[tD@:ZX_Y:R.H1?J;"=Y'cp_BtT'>#3MbpL;WIO1/D6rao&G`WRt+)+2ccQeN%?mSF#.b3D]"Al<:$3d;`m5K,t6ZV7_Q#:G\Cl41g:j_mN,!p-tgEJ#\`VYJ(F1YIi=;NGV[j48pP$]=GW&4c99mK\(2<D'X0Kro$*ip0>j;g7u%-h0n`e(upFD1<,>P<kC2Qa.e@>!a_8a?#AN<Kpc##H]lV%6t&K8bJIVLq0MQu:dm.cNh]I.^$dNuo;InoU5+59%L`4[CLP5,[=Ju-AmR(W8M\WCQMpAl:g%sbXVO,(/XstbTA.+*HYM8]=?#rZ]),`0Gq=8DD<VEa^8h^5\1mMhE?oTSXE)4(*\=5HrAe^Gj^c]OVtlG1R,+T\q)DSY3h2#udb%o6?8('j3mO=;"$SY.)CUY8&$%:1@E*N!JJ/i3?7eo.R@!1LO&^)-2(.7Ao!tAFN@fF#IQ=L$@U5,?%BD(/@E*N!JJ/i3?7i<s1B3YiUtjgoI:QE*2Ad:3gi2RQ[\$^*16QpH!I?NV?"_5n94,I(I9<UW5$S%b""-ik)2D.51.MkVEl0WX2*FXq$:L&&FbM+4L:Vj).XgQ_iRYWA%@fEG?SRYdV6J)Oa#qsA1=(Ee0n&At-%.mn]M;CqE>8GeQR/uu)d^;L[?LFJ5hk=aD95ZX-]\(*%0"G-&Ush^gi1JY9cM40rG+LJLimLjD`J8mb1@Zq\7MY9YNtt\s7b,M0e8P.3-!`g@N_(3@?hdlH*/U01eK3&<i]c&h0>?7pD;M\VKR[6/]Ir\1AC)n^=iNJa5tkpXuUI\\:;I_17,j-2]VEo;teZ7--Xi(m-Cpb^O:,S:NoBWi:o>Bf\%Nn.V8hSbEA\mDsr&.Qu08d^4CDIht6sB\7D(k*A7Ul>j2=1>l9p',Q7aF\`&q=R_i;J>G>(Jm=E`Em-Di>SF'NV8S8-C*Vrkh`qVUf*oFQF\f<Ad\N'"a0iTOldYI\Ip92$VB=F\GYiDHT3nDe_jbCt(3bXoX*s&js/M3JF%]:,rf64F+>(=Z;@d1niW>UITm^pusf6_n9[A=i@;e=4)'5(Z`R"bRG3fUX^0gBNaQho,GJ$AuUjbA[S[:V@?1:K&b2P4=\j.gFYCpDF\c;p<]R;J"iYL2^D!D>"mYDmI7QdS?M]GNVJ)rbhmn$^9Y]X6:)952#O-&.CZDR??@CNf]B8kRosr9<qLY2ADYp1d6-V"%`*i5G#Vm_=Aek.a%s%WBI)mJ5T)H6i)d"cceXk,`S*7@dVgX,FJd4.Z8acG(lV(72Wa[Id0V^.545S@I0OVjDhND?6rKa"u_Qlg`UuA)l2=@6()Vl-$G0mOor^2HIB9,#+t+k.NUOfAt=bri17a[n`=\?#ANhZ;WLuh&P\QI'7uAr.SZf>Ua:).Q:V^WAV<@0+ECRhoh)KnlO("^3>8Khpho@02kW_C@1gXIT=jGS^qC81*W.H2,U:&lsa3<SkQkb*8T_[b)UDo/U$#0)lNRN2>%VrHt-EKd$2e([)Zk.AMX;^*hdqhONd6`W)IJTOY.))POE'PGPS;fn_F]45.K.8%7eQTqtHG#Ds]<kbM.hp@7![;B@<ALP<?tb>CJnf=k0u$m(^)Dm+E;S_^[TMR(3o)]M$/&OfQaEe+fdNcS%B/;lhL43REkM$u+%!X3_EYgi1JY9rhP<l,/8[r81l#g_NHCJ^!lO9He:0DoD+j2mr?=)ho]J`SuXqk..A>/reEDi@3]%2j:e(>E'%I^*IdlTU(8]g>cudRTM.j#\'B@>4'a?D'"ka-Ufd\F.TGmbpfRAT"AjW6`\0:6-OCEX'HXEc,8r%c^?:c2OQ4@@H%H*8Q`)XGM@k-=QP9ISnhNsdTC?-VW1lQl*<kB^iPjWeSqm'Hd_&9?3B1sPoGa/Y%b::A$pTL*T-L$Q]:FNV0D+GgN8hQ?1#MI&8DkPV`grCjL>b42l8+OAbkAuV=!N@moEmVEib7#DD\aMJY1IFNRd0"R.3mh3i-;\]=a+W!s`CP'25;e>E[4Zf:Fa31$9=!]>"uROi+HH%4="TYZpMC=D])`(uO[9U/F/c1VNko%f4[%Qqi"",kK4'>SjCnhfVtoZUhCE%Au!"E4">qZ._=1H@5*RT$?G,`cp^!_^s:aQqi"r-M,[OlkYc[&$+K)3g0S7X'HXEc,3,nf:U/\q)lmr:-*?]MqS<_Bht1oGP9$pD)+n&X%;BE8oth?<k712-3K9/]/3QXLNO2QC88DRNGYp.'18]m0V.oR='>B(G^,f3I(+X2nTcEAM^5@YE&s0`8#oo6X3JP-a-U=#l+g^OC(j:=4h$TbnN+:9AH'Ir2k80(^sQn``bP*ap@7e\o"Ftb/oP7nJ\r2O-C@PTmO%PoK:lPNhq7A#`,d,tYf[D&2'9&,mF#*R*l]%(:F=slNpcHr@LO6pWD,(;p/E=/D\C-@S3*<Qhl<WN<364&\`)&8"FaC`1fg*$OiH"ujEm<B?/A&HJV,M]$)Z1C0Iqu8<k71VkF,G`1fg*$n]&&&anL!LGBk.t"qH77-C@PT_Q5$*=QP91T6ET@T5Buh@p<c_h%j5k_Mmqu",A&L-C@PT_Q5$*=QP:l6f<G!@`JHID>j6qZp(ZX^Jc(76!gkNHFqnZ(M8%r)`S8"2SjLh'4rOf`[WoPQY4!FBCl=PagTiJ].LJ`Kc/du"qF#!9e`.3KNUm2Z-)$^"VY]OX0&k3/U_'IGI<">&8DkPV`eHh&nS.bW4(ipjeu3aDc^0>_Mmqu",A&L-C@PT[cC3um]oo0G2m;'[*H;V*375"T*q\>Whl&tkSBju3gpFYlSj1n=_Q_IK\?RXC!Yr==+pKU/h?JD@r.d\7P[K!m/:sHUJNV`K''OG^^Ds4Wsp&':n(iRmI;RqmGEE?Vc4epDT$Qk4n`(n+do*#l!`0,G+hfm"jLtnJ/;gF<uX+-Tf0`/g=%L=s-2A_emlHP&X#.(P[ZWdBjNM01r%S,^+eTZg;%,&[0`_ZShtn/F*0B3qm1KP4fA"t]BHNBTn8ENR7ia4G7gm^g<pdLHrh7H%SqFP:4MnBuJm1=$_Tf&I)('4I0D?$7c3/kmh8K''PrdMHMC<uX+-Tf0`/g>bcefjIW+r%5kU>P4*%YrH3<821l:^X\Xa0]Te!^gRMV$)Z/mB/2,WnWYs>QeipS"!mJ_@Ou2AX"Aa.`cnhA_[pPr9W(%?ao(_Gpuqg(WKLKYPVu:Jm]jp.!jOkZ8QW-2X"Aa.`cnhA_[pPr9W($^<YAuFEi;>\%q`6BG."/"bkS>!E#:oYK'BWibY"Ug<=X/-jh\%,hQF<ZKc/du"qF#!9e`.3KNUm2Z-&aYaZPa:f%\`@^+eTZg;%,&[0`_ZShM[O10-D7,F1j*g3UBbdMHMC<uX+-Tf0`/g(S'E;8t)@-gi=&@_Aemf%\`@^+eTZg;%,&[0`_ZShM[O10-CtEAs25PZAV@Xg[)h[e,7khpho@6`<^5Sb@_>8X-L&iM!lILWQE-[In^NV(^'fXu:596>_>=ZmX'iU5W(^&!>(G=Db`WD<VEa^8h\_L/=@I3pkViP!>G[TOU$,-P)D8dhX7?3GjZX]J/BXg;%,&[0`_ZShM[O16OX=,+6KUg3UA7^^Ds4Wsp&':n(iRm0U+^-mP/?+d.*ZX0&k3"hZPL]@t&/#dju9e"/6DM)&*l4@Crc@C>cO[A>P#poZMo(d`(kl*Mh^8tq8E%M+gOcgQ&pdOdOV-$[[Llg8F[?^U@hD;[+$g'#l=:RID8)64_ub"ePQrMRhu\;iMM[be0qoS"1?eHQLNW(et:p4QR?Pd/Bi+_1(&kES9OUS$)fgXVV(0]Te!^gRMV$)Z1C0Iqu8<]N91165kOolda>0?j3o2K0L"D1_#Z-d52WN)^>u4\t3:YcVT45>*lFX4pfki%Ti<"Oh)27PaFN,FRR0A+D=W-F.9Us"4R-r:`j.lV,\[j1F$\@0j7IVUHTLq$TaUG_flO6cTG%g.$;a91F,HH_Yp%Of;&/Sb?kFoDUY23M%rP&+^,.0HIQjQVMlujt@jFj.Yi#aZeNAQ=S,=!&U\2Tlf!U14K>H*"OcL!!&.[h:Hc&6Sa,laW(gGGlRi,W86'Ig-[WF!Qc;l0mNa!Of7*fFP9);If[Y2%l&>0!0O59f6#_614K>H*"OcL!!&.[h:Hc&6Sa,laW(gGGlRi,W86'Ig-[WF!Qc;l0mNa!Of7*fFP9);If[Y2%l&>0!0O59f6#_614K>H*"OcL!!&.[h:Hc&6Sa,laW(gGGlRi,W86'Ig-[WF!Qc;l0mNa!Of7*fFP9);If[Y2%l&>0!0O59f6#`Qi?`t3R6el8QokA!8C['C3pkUAj.AR9iP/.frF3=_TOU#V*WSGNCA0TVp:U@bG\s3G)ma#E!!"3?]<A3A#FN]mO'(lh4\YnVU=ATCC@)&aZLOF-_FWeh!1V\*6ENDd>Y+#"r^l5Latj$j8F7IlefJ3O,]dN9IjPj0?rFU,W3lkt$cuWkaW(:g;nGPu[0N',a]o_*)usAF]18g-#FJ/^A3Mp@+9/?4X7dNKfPBo'RNuqSJ5,DPU"18m0!2G@0a<-r7+Sf7\Q!"T#lWn@%[&gP^nu:9:hpRqQR4^KI=StK3@4CJ`pAoVe!@A(b8Nu)FOll9Ed>02%H$5&b:Ou\!.[f2*hh.+?nVD@H1hhrH8s5W[q[U#=BF\A)GVA)ZL)WUR0*G*CA/"Ap&K/ZT$0?#pL14R?:/o5$ctNc(dF0D!5PITO&0U&0ULr5FgGG@[XW]9`_V:]5="5-U""V")/5T/4s%ITl<PZV!.[f2*hh.+?nTchGoB;7m![UY]U8YoZ$Y;Jnlq_8d[&ZW1'[g3eF!o`m/cA?,X@Z)E0Fi#beU]Nq;!Sr1'[f8;nGPu[0N/eH#e;nlR@>XLjRBue$V5%Q?GAR3BtL7e!=nqoUa2IpUX&tfj0Ot4mhkeF5rqD8EKmPS(^"lXZb$Ab`hBt%Hj#O'Q"I*d0[o7!+8a;8#Wg#mkZ#/T/N95I`h7p9:gC#8nP+rRpicXgR(q8o[%H;ba%!Vk'*^qn#6HjG_+R@Y1=Z,/=cd;A8WZ9UKZhe`g4dd/fWIYa]t5uR9r_RCjFT-!19>29!6_d]Zd"lZXl8FbWU<\9'2IWBT?W+baH\UB+F5T!6e2T-!+jmhIercDN`5QK@3&FAf-TL:Xs(;IIA%K106q##;EPiG;3-o3bnVjefKcJpGfbPVcc,dmf#>-V_L>rba"=7!R/ae;g-il<H(k%0t$^_P\_Vj^A_C!m;-XmOsG*j75>*%WOqKE`\5*V;X60Ip>BN8O4a>q;\C^2*k-X',lK9des"pQXibocUU=rU;"nTIR0/i$h0!EVRFb@&1q!#WF4keM0$Ka-5BjhWSD=PQg8]U2J@j>-<inO#>Y+#"r5nk8poWWDlVHq15lf7Cao"#2IB1p??nN^GAXh`CbZP#K#U5\O7]gUZg&oQQA?O-Ojui&9TWIRZlu8:ppStV+Gg3?uAu*&dnIn?fA54HV0SN^qAVW<]h5JmGi#Vf0&b]!7PK];'P<"OB!+;^J;c%6?n:HCENQP#Y`k2+PV(ub9[\!Vie<X-U\(^3%rB:?ae<X-a9]eGe#6:9mh&"Sp"2*R"AF<-PG7/L"eTI-f'D7Q$2#I?Z-Z_%'!$Fr%m\&,PhusR>]YSicSP?5_-fLtIdfS3cQa,-5d,&HjWGo;.Ftuj;.@ig!&4Rm?]9LU'9F_%VW8/]Jg&o!\7l!kMA/[PYXIB[.'eck0Ya*Z*jgh2+df92[[SQ1/UOBiq!2/]Km5+mPISaejn:F@cRG6JU(WPc6fts)2a;.GKDcG^\hch&+\GH7k$#AR^>!Jsn#C+:4poV>eoqXUSPU@P"eUGX<p^!^<0%j]P-M,[5m;q@ObQ/iE<UiS]+4T!H]I$?ga"O!ML-M)QJuDtjhW7ch0@aY[F$""25;cCfF5ms,2Z>TB!#2XYri#LB>'ke11eHhR6Z8?&Sp^Uq0:D8r2JTZ#J.<@4+16PoCC`*8,C=p(phaQeb6"N/m>Pdjf/+WiD($.*:Hs24ViA0krMd6:AH(QH3<5-@s/"9WC@)&aEq`.J-Pal;BmEdVAA4*F$Qst2YlOd%on-FpJ@R)hgUh;n+(@`O-hD`h>Kqi[bN\QO$N$.PFe7l:;D!FX\<)3iqE_5HJ8Nak3e!f:F!U?Xe$A]klIsUh@1)0'THPrQ+16PoCCafOS$=5[APJ?`p?tr>mI27Ppp.9GXs@66DZ-EOQhKuLIVdPKj4t@L+GD?<8$*l_g&p!WAh;&/=fZ(>b.sjLROrKZ9X\PG"1!WOHPp&c-VbunVSI?NUXfrjm/_$<1R;RSXAq#/I<d?2f2^6KR:eJP9BOpI!0G'oqP2UPC@)%<C,>Q=R4Cf%kA=-]]5P/hI[$///E!TT];)_3Cua!Xp5NebG"[i7rJ^h#KhM)/XWQ'H"5)+8Cr9f_ISM5X4,;J`1>R1Xi)V/WA:@[r?&to/F@U!8N5bjZ_PR+(edlN_!GlL,G.[U+Fgf.O,kOh1_4>(ej2P!AFq(?YV;UX<q=<l%Ft#;VX`]g&AXt)f!%2$O5AL.iefMW(2Ih`6HAn`Sm:hMA^@p&meDLb<QSgi`hV,q.Ksl:Qo2"ep6IOe/(Uu#;H@7?1h:GfmWIRieg60YA)(,eW&=;[C>!Jsn#I(2PfM]./KhiqXAok&gApZ2C.\gV=`llC!9/a/jp%QZ2?okBK5AL.iefMW(2Ik3T]?>rT;_BZ@e84EYCX-h.%'J8:l]QPI_TQPTbQ2)cf#Af>ISaej?rNQ"QdOMXk!hp(cX0`7eENC3^Y'lR!#UEtnOK]'eCk#We7Pd0R9r,d2g2ZG/lh!DXq`*B]9-V6!-;Rcr))bb[IsSY[2GH'kgRjrm/Ja;R)`q8;IiL;/leAMW28Ee[)B:*HUaik`t#?nedBM=!(p?4J(4<\XZ_2/D8u:pQ?\!l%KIfVNB_1VT[k1"VD_pUk/p6W!)UPdpnQCNC@)%<C,;/dY)Hm$!%"_+5AL.iefMW(2If>@b"1Xp:r:r]UXfrjm/_$<1R;RSN+<Cu-*3(jCAjgV*l+X2@nGh*8EKnK_V4d[edlN_!GlL,2Z%\%^K#aonCB5<57t!dR=\rZ!%"_+5AL.iefMW(2Id^*F`*@fF!Pf,-t-uj;<nIpp&I"Y)7pX_d@\mGe%`Y]QN%_pE[a3pX1bV1no2']8P@2MR0,\\CZCIZ5H(spYc5lL,O=bN8o`\>kfK?]PrL_Zg81s[UQE\#TS0`C8$*l_g&p!WAumAJB+*?<4dkoIOseB,?b%qT3<5;J2ZBZJK3EU%S(`h':?L:sqQ;2eB"tE?k%S<X>=^M>?lS0dSg+ioNB_1VT[k1"VD_qnWapRhd??Ss?WJ.!HX)%`au5DCW_>.\f0hB4Li3,flNaik!&h5&4#!)33ZQ6]3146%YN_[Emgg4W'6N8q>!Jsn#I(2PfXbVm4ZrPn1\PBH::D<h:M[BtQ5\e"i=s\YT?MQf(WNSN/<u`7HEW0dgC;Pi5AL.iefMW(2Ij:M.s'RcIg+?!(+S['kSa#fo\IoY(O7:tL?QW![=1qf%q&>*Z/!0\h7AHD9eG.C)SmenaLJBaOj"c=)h6B66*3;#9l7mj#?OAM?V7tAhP;%Rc`5[KQJU0V'9[VkFQ8Ec5H(spYdKq)GCQd*<*nX'Ke/D_;XPlQ];j8BpO??mo-WRAqLiD9$JkKPedlN_!GkJBXT+&QO2XZPdik,4-$D&YI."Z_IOi'110^mNY"kUNbVr4iH@4IB(ndqm1Noh4I:l2j)L!]BD'\_<<+"A4W^]e@s4MEQgt6jSlrLMu'%*aUUnM!/F]9PpJJ+,+Q9m?^+3AmfgWaYl)>/r[]`414L7PBO`HIgk8s*GX:IsUl@tBemY."2A]"e%4`cOc6n2"tA`s3MW^AeHNko_%^oRBOR4aI&TI;41VG+F%\?HV5@[ATFb^0>?r5U>r^bkslN_caSGoYttUP<$"@+'bTfWok"hg,+u=G4g*-q`C3YMl#TG]OeaVdjHD^Og.0n_caSGoYu!Ece((P4ZP>LUp<oS[hJ\WH%edWY%sS=rjtX7cCm+Yq+#%GU4d';V)4UFa/J_$d&`>Op13UcI!-Y5Om>'Q`k-&TCb[0&T?8,AB'U=dAH'+q5DP2$G%p>cT[FFe6YGc'=h=D#`cPD/fJJ='^J*N7Kf>.+'sb,(#`g<R%.b+BY!nd&Kk10;kN=8uqkqg4ad1N)HNJ,rO-?afh)Gtf*(s.uZ.qC*<@;iQ@HrkiK;OW=?G>lEKg2/sS^kc?VZOnuVo#@S9/R^T.=HJ(`+9<LH^/>@q]Tg(p)NH(Uoc5VS7IY&W6JH4T$$cgZ,5^mKormJANe7"0pLh`Q:p@SYl#8'o&X3W)R<SQ"["B\L?I%ODrP2*T"U*S,+2p]C,;/;\?b/c81'*6f<m/mq55o24o*d'b`2VreDNQKVhL_k3P&GFXcE[QXnn4)Z'^kjlt'/V%^%?g*m*L4i4>4C1B6FtV_`mrK&pQ)4Vc9)?@/m(QA8o'Y2jJ#V7c3NMe%je]f'@r(Lu^>gqf8@Q:E\jCg>St8EQO21/F+0OhFOpSeq":o!BmAP043'Z2CmWcYMRsda:YK=N:e*p9^8/YI/2d91qU)]f_J";8RH-Me)fYk,34:C)a]f-1fSa02MO9!KoGs<nA3nb2fHNDYs=/,OFt<LmpBhUe`,,jSTPcY%DbQ9_bfh^4hAlg@@+rk,J)JQ'<alCHK3^[Dus+[O&u]V7fK<aM+h0CYqH6a#Z9+fQ:9#rQ9U\k1Uk/Nt?EGo^$%r[\q)6:L<,\1]AZkM<Ce-Bk&9R@k$Z?j&YHJ^8ME4$mbFPr'O%2O,@KIR<a7!^?=df,FJX.gl9u_,!FdK165t\iq>#uD]/#tHQCu^4aE117K$YDas3;V%=,ha.3?-CV5")NnR/ZUgYS;enT9-O5bf\[o!kV_bYNL0F.g'A5#7fTYsKr#-6CCKA8Z3Z%lAV',*.ZY_u,`h1']j#k&\9&4X4k(_3@:];>RFm6YUFW?-D6%r\-RuOj&BZN8+)^'iGu0nR*uAR:![t(9[GND7k5n/FP.:Fq&.`>?]/)C9qQ^5O3RB81s0<pDnN)F'p+k87gSpK6`j.Z_+NbI4srmL?Ig1m^UP7ZAJEL1KlAq>gskphYnM[s+4)?NW;6gF);jTnQ<5)1B77m</c#cIjar"q=HrL'M9b'QDE*=r)Wee?7nl_%r-JpHE5Q(;rMO;NA%WMPYNBK#c!N[?*Yj!7;Y]u./7HGP0>(d44q#)YOb_CPA2V:0mX9o&N=^Za_'f++Z-'7S[LK[\c!`,L<DSaC:8OCBsI=1rgN5<]%gth0,O;:qi3e%3Q,Ll=MotSFq1iF.cVk93_bdJ^"o)^ZU_:`]Woke[T,*/DSMI\Ml4Tar=A<XiZ?Cn`MYYR8(jf"Vio`h:PD$p$+:S_f50'/2Uu][h6nY4+dI$\8"FJA/EP!/8[Vn\h[W9AOtCi.P:cgqHqt\S7lO2)MjjO'\;.D4n`d`sFS+$%qamMu.0eO\9*`&0q/T,NgR;N(<5qWPFo9AZ[&$bX:Cl`_o4`&21:Lc%s&2:-1,hrOMi7GLI7G@#*7au/4BprKiQFS-Q.T;Y-1bq_Sm[7O`_@FqRO%L:Tf5Y#5FssY]Edjdi^i3Viq+)`DDFG^$`D$.[39BY>1K_dIbD.V2Q3\V2&n/_.qe<h'#.(XGm]dNc@1&L4g"+m36J4fIJVXg3c4M]B%fT3m(Ob:Iq3p*ZKk-]fr8qg)Q*"CQ7bA7n[%%se6L^F(VY#[c^%dP[N"hV*rl4d),Bq`^6fFLM5R<fmJOqD<]Sq]OrnuTXVm8F5NUd!Y3XD/Kfdg="d1m;bJrB)lYPNr<Q:>&,r6q?=acJ]Ag'#RGJporjG1?apeCEVNR>"nbRa;d?fLc4O"\p1E@Uu?9XE/8gA\ftfJR"Wmaa"3:%*kDFReV/\86'9[qpPl>bge.HZhm3`O<NmO-SOaXm0fYQ??C-7Q8AN%OKKP6lBAi%l6ui7b6C&Ck]B:D"MiKAL5W][s"`dm6D1pl/L/2*__`YAkD.L#</<b=TZBj8EM"$1=$`?96rZ!ZB?TWgg@TOOu[huP/NQeDmH.N,t>?Ln]_[H(.9qX4@nVTKf"50e+qZMl]QPIR*-8jEab-T!Sg\$7PVJ[B5&n5CaA#.,lfKPAH&Q&k*I#MSY,lOiA:(Ar?QFalR4?&Ju_0qR1$G:_))Q#&$($5P$,Y\'?U/.1mtg6*6HtWhmO1&J22I_P?JMiZ!=;k#jLn8\\'TIgs5dr2+s<V,+3p!rA;^kn)$7LG&jSRO-Q6lnn]j7`nA43-8Wa`J7"7G0%E_8@g!2b99d.APrp(]F@hdAI$01G]9JaFf#,]FKAa8tLh%"2ag7RsX9j&$(MP.h.OEhk9D8&?7__jFY1Ru7Q\WiRLLgB-REHhC")nU2bX],P_>0:?G'htS??ZZf1A=j&Jn4j(REHhC"7WgJ$EY(l`LDXudQD?!e`4kI$V2T8[&O&uM]eF;8ETJ6joDD1Y5lL]N06n!QbcZdRG7Cub\*V--o`B<"/mQ\!g(V\KN'_13s<Yf0XX3_$-=/P2=VE3=H4P"dI\-6^P+msE\(6`\S5&XZ#k>l%A&QUVAehLR>W"D.+p%['Rl`IJk5#(Wp-\e,]gV:fgMNpAH'.9%HXa`n(bE4Ou\&-qC;QN*:G+ga<I%%%eI%!SW;aBh`K_:3POh4GcKhL\7>?`p2p%:<uf=%5d`%AJ@ipn(lsH(jb-/qk+BLHo?5ck.XZ$?B9.'o@eOd*Tgq9AIf[Y25d`%AJ@i)a1Wao.<j8)*$-E*Drb7\jFo%'NhTIn^Sd&F@Nb!$dDqbR#?m;qY!-d0XbBZBPYac72ao'U9R6UU@&l6:iR9,GfgBdsi,."?N,]gUI=AF[*AH"<5"8!;K4]/b9+O[8\k!(,4!7b[a!D)?tPE?M2,=KL<8Gd%D4icq(Ci2C:I4&9^bWe%Mq.2%Y*f.2'\n#.Ggg1c<*'go7<WJ:ChGg&i>Q%r[68Hm<3BTTibWj5I1qqatHCB<MO'STAV5imJPg]G8eaRk7(<IO][96N1Ou_AuatV^XXuJT@1CBqi+((hOAbWL2[3JKss#@>f[Y8GAS@5?-5D`eZ1J\F #Bgeh$31,+/P32TlFm1<5k:+7Z2^NK'8.r4CS2:`\)liV`J^F?'<"h*j+!h"dP%EoLs,8PKl?*'go7<WIV2\%d'&'r!HmUd"r_m$0`"-\cb9k214W0"&,X)brmHRE(5k_2ukA<1@G&R&-@0_3mO:LONrGUHirW2l\_V@R#-%km>ufo@K)J`KA@F<1@G&R&-@0iGSY=(A8!_>KPZ-KAG$]8ENf@k2Jqo!34;L!mK(f`*``7<lt:1M77,U;8ZsDDeYT_X.S/8]9CH1k2Jqo!34;L!mK(f`/nTV4\qq@h8mCdhi8Yj2rh&HD>*"Bh:,Y!aVMUUbY&DWMe)f1REHhC"/n-$$8>+7&Hg.Q/!B]qbYN4(Eraa&=TN,K-Xn4o1hT%[^JtfdI)?*dCa='%pW]uFbgK8)Y`[.0D'X2bV`^,&J82El!40$G0p$cnOj$&6:O+4,!7b[a!G6$n@NbKf,+3qJTCO&Kd`&+CYddh:J6CT_(e?ir8EM#VV`^,&J82El!40$G0t`TqVDs6:![O1`8ETJ6joDF+Z3&7u:;j@OrZ_)=G?[BhO%O@rE'uGd:i2L5@$Ys[L@+Jkk5=RQILlHf:0JcE`i.$e8Qt7U\?nE2UN<3daBPS"$H`3517(Kd#>f9''k!>N+pL-"QJP6WA959Nf%iqNj$B[8],P\U;Vb^kP50lD/rsNQT\:qI^b"k@%%$KGHS7;"=!Vi_-+<IAG4cG#42G:p+d2YVA1ipR%\VN,/&3_'6k''*^)bkfN@3B(9#`4L[#s6-Vr%j'r'N6+7kt<GD3boEQ?FGVB/93O>bd\b#l:j&U!kf=Ij7PISWM(7Oj!i*Rq2bjV4EDc9JWdWi=-_t1@Km,/rjHPT\:qI^b"k@%%aBAqj,],FHl?2.4:`;ahF6mD/\4=VhataZlA6orJ!l*+-O/sOu\&-Z`F/5ZkG0UHt8A`5KloK,]`t9Am#.HBd[@4q8abJJ!cl!8EKoPc*@DpdS@_GnrZ?rs"H\!Oj!i*Rq2bjV4EEnj<KRnraC8u,FJY42TlF]903^fa[[,gr58Gs7kt<GD3boEQ?FGVP)h/Wq1nbpO(8`ng+4bi/F>h6(!4M2bEi%SLijDHGT"X$6Sauu1'^WmQ5*enFs;\'aZTI'6EZn4j,qPM,]e5VEraa&=TN,K-XnbNC[_:pcMhbJUa8h*VI*ZtP!*JmHZicZ`lg9)Ftm1T(!6A@17(Kd#>f9''k!>N+pK:(B");Xpc"KKk6V,'LO7loj-*,S,kDPg>TV!,5da`qJ6CT_(nN#Edg`lfalU.[!)R[F\i)ZhD%e2d&'8&taW*RR=]U&Ug5-ZPM>('=4oGr5AL^H!E<^s[QZ^D4gBQiO]S9trq.G.ChOfd<%cG'(<e+?,M&<Z+akV@>EgOBm2>^sc2YcT`bsjJg^L[?,^Kn,2J,<5+]Ht+srV;FLp%Ytd0E<FTb6fpr3t]@uah6VPr\fk^2:Xh*NTcjZY=D=[ppQ_I!%'JE$8>+7&]9n;c7R0'5M6+9]CW!eqVnkT2NF)4C:5krNL+KQc_\#G4#W6^P2?B[h42LESIkk:=]U&Ug5-['&"IS_RH$Xi#8#K</&3_'6jt>^=X8'!^SNg!;(Vr5*<<RmZ3&7u:;fCQQUNZ"kpO27\#Yofk5sSE=]U&Ug5-Y;k-@P?M_fhF@W^(fM0(?Mm[@\jR&-@0JRgBkAA0hr_@/4N_OLm^$F?f6Za:B#ON_9ubZ@7h#8#`C/&3_'6jt>^=X<TMH*5:,'-kM"!2q]s$8>+7&Hg-[(<Lr,,]`r9Qt6GgV4EENK=([We*!Lh#[VXhIZ/12;ZTVo5da`qJ6CT_(cItRX!3sA(NgWa4YHdVZ`F/5ZkG0Ub[lp\Z&:XPU7N/$O',M6=k\]L8ER39Ia/r5ME23@SehBf=]U&Ug5-Y;k-@P?fL;>8;9oW#a"/aV/F>h6,]d*6F6oVrK;dt0j45jt"7I1WM7CdX:;jB!bZ/L*F8RQR1l-Ha3p>N[1%&o+T6M$k>SbF$];X1$l?VWeLY'JS[mbf+9dFd_,]i=H:4oM.V1Tgq'B@pbrJ<Iqb[lp\Z&:XPU7R\]H?`/CHX$+ihF',c75Dn9l84<C?97</2)4N9d@YXsa]oV'*4r/u+R47:TSM.;\@4nVi_:\>=X8(TU/$?>kG<eP?5)AU(B'(KOj%C!bd!'e%AKG\%XN@oN-ee$-f.6HQW<qO2B\mE919XocV"L+]I(Y3/c$-!g.:A+2P->s?W!^eeFV*S&$Lh0Di=V5Rn2\I8ESPnSH_s;9*[Vm-H<_Nq@dckREHeB@i'8+6p31Do^J:dpU99]]SU/OMe%iRe7fKe]QDN<CLZ)RU-J/pP.<-,3He8t6.GMS5nC/UEGpd7`1'<[Z:O-17@aW[cV"L+]I(Y3/c$-!,+6UuR:@%U)FQ_A*VAii)#(K&:V;Np/rO8#?.<R"ot5Cn_eW`:gS-q&-BbnjOu[\_Va8i(dQnDIM/dHlrkt9sk-@P?fL;>8;9ql?4hN,]]e0'oDt<h4i#(Y'`e&`NpP#R/V1Tgq'B@pbrJ<K#$1Q95s6uZ1J%o+2Jq-YPqa/g(dQnDIM/dHlrkt;_I/]$bUZVp&M`M<ASsKq5GYO-D>P'9Ci$dl=+mO@;TSM.;\@4nV!W\7ThA;oXQO\=d9oOF'oHsXs.-c4(l?VWeLY'JS[mbcJ!03f1(S[Lf%XN@oN-ee$-NN'Ql?si@H0LuWf>P2.7=P@=NhYAHU7R\]H?`/CHX$+i!8o9jI3Im$l(Eg``439FIf]V1U>?]\SsKq5GYO-D>P'9Ci$dl=+mO@;TSM.;\@4nV!W\7ThA;oXQO\=d9oOF'oHsXs.-c4(l?VWeLY'JS[mbcJ!03f1(S[Lf%XN@oN-ee$-NN'Ql?si@H0LuWf>P2.7=P@=NhYAHU7R\]H?`/CHX$+i!8o9jI3Im$l(Eg``439FIf]V1U>?]\SsKq5GYO-D>P'9Ci$dl=+mO@;TSM.;\@4nV!W\7ThA;oXQO\=d9oOF'oOeROJf6eYYbJ'00C!iITSM.;\@4nV`phl*r$%5ZP'Nrpo'p7`W-o`[]QDN<CLZ)RU-E-1R0W=Z+T8Y#j`ruGdd&iof)N@\-Q_rnFO7p@@bf_45@Yh(#P5]8roZLE>b69eIkOPm\W7]si-d(b'K-G@\'4))/h<n\oSdC#InA/]dQnDIM/dHlreuD=*mCG%4O)EQ5jmOnfup_^ANT53;^sT20ILlRot5Cn_eW`:gS-oB+INHjBem.VhC?/YplBd&D0Oap5J,U&3K]N(kG<eP?5)AU(B#,':,6b9P-gBVeQ0.FWZ+OlV8Ji:HWniM@m'^up[TCeg[^1(3/+H4kG<eP?5)AU(B#,'<2=>.ag%GdQ^>`=RD8"2A:F9hFnO5PMY;;'cXQVAQUEti*VAii)#(K&cPWH%jmi!u<2Y`RD)i@.3g+blF*aM&^!_m<h&%K,gI_0BJ7L9Ap@ah@4g4"J43G:1'_H2"BrtU^Z7"K8r>C5eUcc>p2]BZ`s8-S,\)5nT\4Fa>F8/UoduO=;G&?JM`sU:YFrB=_g.o7Fp5Gjc2-YT0aGP:M3o3ZpG7WbN@<Jtn>5\#^UH`7MMNl-#;S^QnH]lUD"\rorlGcti\LkTG/1Be^76Rj:ZCe5m/a5c,qa5/`"0YShXhF(2SMm>sXK+6BnQX8J<D;:TXjopk`ipm\b2_gDWIS8j]1V4^?&[C%)q-GFg.:?C-gIX!4g4"V>[Tb/:,dXE\[S<ebIrjt7KNB#DH2$dVGuNV@T/Z$fs9hf(o/A;ksb<R1GE1eAfSZd"3DNR7@e[#c`=Ufgmd-f8^#B\c`??\_Xu$po$1u_0kmt*d@W-a7EX);ltaFJrd+iYT%nZ`jqoN3`/AqJc*bg08,d7oH_!(KH^.deYhF2cCk5KlqtA?8VJECqqD/>T89oT2PV&(NQCa,A93S37XE9fX7]C8NR:DJ['//Wr2.ri<;M"3.CnKUeelhQaYKI\FYLZXG;6BFq2060++8m(0<2:MiKEt-2(b"[fMgA^Sh+HgQ&=#lMa4?Et)k*h8qWQ6B'_65>3#^=<k"FB(f!_1ieeZn]'i7[0ddc%S4D_Z7HJN,8j2UGb4`=$fbNpjXL)FR"0O9=Md@W.07,h<,P5._[IT%N`.G+Y9MdY>pU-E/Gc5mD9Hmr=8WIIhA+-O/oOuY^bHY`7d%,BNgnL*oG^\&JdXo9u=jSDUDpi+B@dMk?^-H<_NqD/?Dm(kYkalt0#nZpRRSRtNl5>ulUGP$iX6Sb8G4hN,]]e0(:#4CiogkmC_`C&GZ5/-PAMX*2i17o.A]I(Y3/c%8X%0:a(aOXK&D/DG"H+Kh)h!Uccp9KZg4s>5s9oOF'oOeRghK`NPRHqJSbjDFY$.*2u[B8q,)t*,2319O;1d?iEh2fPme$eJd(cIP&/H=M>8ES@/\!$QYB@=8L>>E/c8kKhiC:IIpRC<ut>ZSITO.FM0lQMZd`L+)&J&\_T3Zm"V=Me'#`&l('S$'*>[X-hL&r\KeA3VO<%qcmY=Fap'bWeJNpb-&B!Fsh!r>EMAl[3(co-s#hs)87&A=hUZMS!T-oGR=5Km+((4IMOr9/7$Ta-]0oA(h^s)8hp/HsjrGm.fu+m;MGg3rDe-o>`N_T<6NJE."2\m-LM<;_]Nh?C%tAPVVso?FLhE1(T+MhTCR:7M"kcVpc8@Yq<N3#I``3@C"&^*_NWnc'O4Q@bG>/;t@6<_o%`HS@4X*KBY+fCKbfYoV6S&eS,>]\@he9kGNA&h`ApOA`VE^"0>\(>M'W3o21KXT&%+[12jI52.-4J0(kR=Oj':#E0$4RcSQI7%1&Mji/)Z@H$.@BQ]YK2oGI:+R,@*fLjF5>3t6;?9X^<#H7qqFAW55a44=7#,>%$Afp1>U7$Asg.O:E@d<oUCV`$>R>(S-Mqd=`"oPCmQe&JK_<,3132?%W+p?%qfm^,.5?$:YNC5ngAW0*Y06RJCbD;f#s?/O)Ikos^jIG)Kjh+p\$;;PGmf.gPElU+lk1K11tGTpE1O'eJb(`Ts!PAR;Edp(+498,Mk2mR6UdR.*FiCt7,EuOn+F&0`_C,4[oX1)C$3/d-l97&\BQd2>tY#PCg(J@/#C,8ed-$[:/&,cmM?+@6U4KR,[H.TPggljY/B"S)l/A';n&\#m-_h"+Jk1P`\M:Y]*DUQ7(o1A)>FBpU><dq\926XY9[@+#C&j.mG1/BRR><KBp]%`F5j$H$Y%o7?i%^^73cRtCF3c)_UcdHIm?M`)&?`LR#R'*FSMUAHpCd"5&S_D<;BaL@bd\_MrcB^1#iJMBB?^:?LGfgjbl:;_KC_Yb9S9oKUFrh.Cj'J^+V.<Njksb<RF)e6bqCZ[k7YO=>a*4BNcb*RWk+9n.BsDKrbK<HsZc1WrS!c;h_%Z&i:+lar7cQu-FY)[AeNUaX4Eh\CbtBr,Pnj]^Gt>74E$1<hp,0r3T=9uoEu$e!`nef)HJ28dR5uq9'A8;_o4dj(d9)f4L"#DUX>X:8EC=<'dcKi+a(<RuLV6O^gAg^`6U.mJE1e9H8tE$&:*A<KZ=U>\4A0%)pJUt`iP)kAhcSiaN9QeBXr-l7fpIkt@WdsjosCPR1NclQ-T]N/n:<n!"P"7pFL<9qn\>%M[^IQl5m_)'NFf5SY-V]OqOFrR*k7J=kc&sQI3a2^8lsMSVG9eR7#uU4ohLWT%Fh=.'^//7.ZUf01)F;U)IcibjdfqRVX`\^]@^[M03.GtdZE2,e7f5\=CbiILY>(GY./pZlQl(EYcP7,T?P'(/57noctNfX=EC#D9PpIg='WM>*g_E&"h!KKZ`LS*:,;i5pm$VV];K\EL=U#5(U][1dh4dJjuOTOg-U@n\:.@%o6=Bg>'V]f01'MflEk))^X%Q3_PQXpV`%^V>:@i5f5HOW*Y6Ft/"PhK$W!ZXWQe,-QE4fhs3#sQIGZE#pN#9,1W(_*Dk$=NePTO!crI^br#Eg@*gX37esnu'W6J#,Q7V7Lq4;P3.b6;A^Rp]]jsd]l!aWd7^s@^1k,W7p>J4h+=>?8u`,<(G/QpHO/Xc'ci,MD5qe>)i^i<k`B"NdrZ-l)"WVQ,O.X!6uFZ?d_!aTM8_QeDl!]h.IRNkQ_De72hduW2l=/R>P\spq2WfD-OI9h`9klmZUgrl.G)OqV_A^/M[[rsK$@5tZK!aQ,X^u7iHnW:t!=`aT7UNXQ*Butrf-1fT542%l-Ig\9f?aIG4?'S:YP@X*b>_h$"JZ],gi,Bt5GZ`O#=`aT7UGaoN>-afMaa?2&\"!eq$CBUA-a6ltG0Au9Oo;R<RAVXLCpr7OVm]Ep/&<)_*6C;aQF0aOZmYM%*1`CsC%)(W"0p\[R?O`mVb:#MCX-h&Q&]m1\9)6Sd/J?5Ctum.+uf[[lZ!6p>Yo3r36PJUCX/Q$8EMo-I9J^LahG263R4o%p$X<^124j.Z$sg-,(sSfP0>X*_&53PaZLW1[8tkK5Q-\fd6ehGO1tXKcf:<iaj][U(IlZGC9s,=FAWl,nSHF@;/,'q6gTO:`%>dSJhq@*P'K/@CTXZuJ,3$3R5uq9'3qHOW%A_IMX*2i1673%Xd(d,:HrSM;l:pdK'P61[=nZfEW)b*k4,[W[BermksoT&lEg[iE1I3.[SWVIY29r84<Bfr<n<d*rM[ub%8i(Ug1Y16>:@i5f5I\0-(o<FXZ>AlCTXZuJ,3ScU'IjM?s"hC_Y'BBRE*4Nf#jHQV]TLtHJggnL4s(c>e__NGs'b7rI*#DhesN)j&Jh!GKos4%l[bcd-3T.>OD%9DUn7IiS*iU'XuY=ZurkL9BE_1VF]k>Ugq!N^)WTj:N(CrS"<fSn!`jG+-JX1Qm.q_7l!l\rM,T9QK#[$*fH;H3H?&<gE19JHX[Xm>2QU`]rZ(m_t2&Ho+[D=n9iiX5Q,CDF*)B4:A5^^\,<E5*FE?$h"NrH9/iI9Z?JEs:CGfLat?2\2<rfuq_[]HW7WCJH.T0PK(\2QgWc4h?1Qrj$0e'tLh%RL7PZWH=XqaTnUat(>em>'-ds``L%oML9T'eYe_W$-7G.9D)rje1B>qkp]@c<4D`l-H)9KNMP'K/#PPOP`T'r->V]V'^H8(NX2jY[@ULn5\ZrgW122XDTFfD`dX(:Y%]E62[*6Gk&*qr9t.qQs;-^bo\hQ:Pb@"q!'7h9;@[6q,a1=*CSkLmi*2OUI[4)HqAWB`3T7l'OmA0)9'h"^GX<MKdT'TtJ&YTMqTP<_;oRG5b3D&eqemJ9E:X!*o*7P^#P*RdnYO/gb+XuV".+do*\\WXKNKP0V]S'2t'C*8q^:j8*LR6-*uk,UQCm_Ec,BhS/B$r,#kA&W+r,FL3XH@2@OGar8.l.kmC544mlQEBt)7!lu'8tFO3C/T48.]lSF/no5`2u;9pD;g\tdo\#Y$i?n(Fd!'\dVdsb2d'XpSkPEJN(`*NGVuSiM)@g$T8DJ#[sHZ5k5=JAa(b\[`Z;UmP.Nf%k2$J%*)0r[MCh[a>G-^d1IX'[LLf8aRe*F!P.A<oh`i<2H89aqPC7OUWZbRth0=hOrq(>YST5n"AP7JPb2AiD:rVOa,+6J=rb5rgq9oj1;dUu;V_=!gXnM=pH1]TU9D_'7GAG&\$J03RA0)9WVj1Jq#5I]D*,/V06@Wlbm#&K8m@H4s??FRmp#:"-g->emDe^MbLJtmf+Z4R"6i!WM8`nGZ8&da`mq$E2bP:6,f4cr;f6(aE4lbU>,kGu$N9Qe^S3QuMZNcW;V/:E3G26K$Wm[?,;haNoR-jlKZg9df##_s[;^CsZ8ER%U3Igm6B'L>#bd4S>rFGo3WoksBc2%@P:lrf:A'UuCk4+O_>$5qGoY\o&GF>^#Itsl-^u\n#_sJD(2;H>Xp2t\,($c#"-8bpf/ehje^mO^BP'K1NT2sO55Q*8ldDP30h#lErFo$"Lb>QI2+\FQ'[%h^&AHPQ:PaXY.dR$5H%k5`8D2;^D&,E,g2<Rb"bY7Y*9"*uMm-DiS[q9m@+ju@ZG'V_V2>0@&-4_HCUhu$#*Y8(EPr7`#5Klgni(rLgm;8&4h'&<1ggBm,==BIJA(%eS1673%Xd(d,:I!&soT9#sO5lSk];=]7;TV%<Wk\L2A"d!sN(Mb>aZLW1[8tkK5Q*8ld6l_7Ac6.Wf2".l$o')G>9rfb=OpYYF8kgLbX;t>ah7$Q,kE5rMP\7YZu(rLj'c)+A^1&"%l4k^A:N7l2"AuqfcLL1X=>ffDD/E6Za&"ZU\uHZ9J+8[D2VpG&'J-,CX/Q$R$m/hlSKFoMPY:jVF]k>YcP7<k5=J!R>Dup:4luK=:3YuMI[b=b??E3cC]QQRHT4f1`.!cV/ZC18ETHHXL5@rr99!)M&s0%K41HU$J03RA0)9)=t=C6T73/qk^i%V(`&!%a56q>h3OrsjSdb&k(.>"CQ5DUJ,3ScU'IjM?t(c':!W',af(57Fkf-9rcc`bn+Y]mQBTN;M7p"(C!HJ&%l4k^XEL-u5@<q%Rs1S$[J?2hp'77e02MJBQ)&PgG"h5r1s%.e3jm.'/upRH)G5s;];odc:MebN:FFo(bF4kWk>+=d9_?^#3dk=UO1&c2WhF\SMGotd^@i8nP/Q[c`*&R8k2G9X6Xq[<Yn18l3gk1p;mYWal%b[`*_t>Orj^),Z>VD`HeRem93U(]%C]O3/a):pjo16_PO>lc\To!K;k(8M5jPC[B=GhC`k!KsT*WHb)3/Q>NIQ.[9cM3eWGU?./sL4,baEA%%P`>-4*#]A/KMo>KA@0<;G/JthV,q.c*lb?.(1C#+/NPSYL?)rb@HZ9.TtB!bIp#n`]uT&naA;;lSf2tr9h@hHJa6R1[bbhb"CnWh;V5+7^49t4A!)[QF'9HrlR<jGG-]WF`q9LADX,jLPIAp^i2?PZ)qkbpJ5]PR5_NJHc(QCX\gkRqAtSWX1^VlBpVJhQMAeupu:L>o!Hg4jL42V.(7i?I_952Q'BGd94!p0GdpWP%**<0#*O79oA4G[XC3mY(CQGNmJ9E:\"mk)I`BJFgY[=KbYO!U<U22G\+B/YN/nemMr?o0)qs=2+OJb!1n"B@orY!U%cMLlialomNS1(.oN5>P[)j;L`<Cr4p+Y1e2ZgG5^N$LN4p8V$J`5&$S7^ANRf+QNgIU7:JGa8sFY)S/[!lM3WO8=Wfd;tBB$[a3jsEX]5]^1,Lg`XmUB_R.D#Ddc//u\NBT3B,nE>1pOG'kEP'J`,F.bNG.);V8Q,5=lXFk%)%*9K&NXH3`GV,>)8KojOGq^LbTK+VQ^n]AD_N/kM.4"Lm8EN0Y>YoskS&q2$&lFe8K-?Wbc#H#M*^-Zj;Cq"26r[CYNs'o9r$+B7$[8To,a(17*#B=InT$DJ_F-q!]0E\t106^r#Fa\)6:5%V;jpnISA!1.A]JgD9SBe9gO5[^?QNPoho_8b(8>gu59Hr>XSMF+[rt>97RAj8RcB":'XAB0E&)?Y/3nlNFnZ]K\8H-T"N\bYS/ZD6;V0WZON`:<\=h3qp@m&&;om1#r#@J,WFT_/Sp#,)I(@40;HkDfXN$IJZN]]YScF%=acg9'Y<3Yb3RA`^'H0"Zo.Bd+PL;pIpQ$PeQRXGLcYbI\1tqF%YoKgD:?KS),^n8X+L>G+-1eJuQRsJN"*!7O6::aNHn/0'-M,D=Gdb8WbWl"gF"F1@R9sk("N]qrFiiFAT4AGi#qdV_<#<F#:g0"*ZcP*7]%I/1*=F7n#dG@B)48WP*KFZZ6o#"9j+9TbFiiF;a!c"3ZY,1Zs6XQ*+dlg\FijQNq\bR?KUcpEm[i!GD_*ccfg:i^!%0BI1t3tB?PX$5bW?gH&.pdm/rO6M1rfcRL+8A^-PoKM3SZ$+H=1mNP*WY[2I"DW#;o'7=9Q`.(m6o+*#B=InNo#"=$IgZA0)0$*,(??$Lm8-V/R_i"XN\I8EN0Y>YoqUaW,PcA0)0$*,(??$Lf1+"4*+RK-?Wbc#H#M*[Ggb\`([.[0@V#[J]t1h`OVr3RANX'];84#G)ltbhkX`s+ns`fj_i`k'Tb_5R1OjJ-X19G](.h&,Op)Zhp?&VdDK#YhPR_UqQ<(D+6[&RI#4d>>!Z!h+JdV6o#"9j+7=p8ER^/c4Fm+C[>9JRC>)O"Y0*.XYuMh:U@E6@GMf4'77/ZV08$GJ[W(]!"Y5Qn6GEmSh9OrY1r3J`-<JC=72%5G//8BoMu(",t[5a>?k!\m<:5T(Tr"`M9Ga6SOc1pi!&@ThOTc;ZcP>c[o5'^-B\(he)Tc;2I@NH'<iQ*F(\.[,]fU\/gpk2:N'n6h&048@b:'5O^g,KDQ%Pe_TVT8H.(G$RG/1ZPsY9%NHU"mPI^]e8`i9Z>Yp7A1q,X,gaG'7RGU/iMNYb:H7/<>+^?:\J'CL7%?l'`'^)7^@sO4tck[E3U*?"HF[Jk]#9M?%.;bZ6)>g9WNMK_boA:h-?KPeq]Su5I&l.3>3Npm)o\>E-:*anR3A)^J<?5aG[Ir,K7(Bh%VBYon8r<KrO6U/O]s'0l$Q?]X"'o_;PPIJo-Sk->,H?`60&RQHSl`leEr^^qaaDrD7T>'(?qBD[!5JJ]1&Hs*mR1YOCW&Rq%u+U)!4X?ROfdZ1'AZK&SHqHb##-B7?qBD[!!&3,R0Q)7#64akPb$$XGIPG]#;cdpr=mVS[^;40eRm-Fs'<qE5PU>a!<<*He`;dBgb$l%<7b-5:"2t-1%s?5,]`qcJ4UUh['Qa>oHZQtUOSkuQa,-5d,&HjWGo;.Ftuj;.@ig!&4Rm?]9H(^/s83p!5PD9=o&sRe$i(VS:TIEO_r!I">)Lc5*rWYqL=">p.8P-Cm`?=3_AH6!!"fiP0E=\cKpu_MB,!BNHV_3P'M6JX^ka#]il\&!!%O@ATR"qo3ikM%S>g;60VX[`SO;NV5(Lg1'[dZR$9h'Qh'=WA=ajl+$nB0S<*W@Htmp*bWK*Z.jT09!.[Wu8`k4aDjY(,I/m"t#64`h"XAADPPB!*cH?9cR^6@-DGP%@Io[hAPZ'=6oX!_'g3>.&T5#U=!rr=/f-;89W+^oVbLM]u!<<*HV3#UGIZ?jjfpYIo!!!"_,2reo1'[dZQk[Y)(m6lZ!5PC$k/!/'!<<*H75>C.A.AS>0I`010I1]>!.[Y'b_%(,!rr<pC-t792Ng'#!5ND/SsdVc1'[dZQk[Y)(m6lZ!5PC$k.tm3S2gQL^mmsX_2ukA!!"?71(T+M%KHJ_.?\s1,]`qcJ4YmIK-?Wb!!#]MA0)0$)uotH;C(jA8EKmP!0\Up#=C6O!!&B#aZLE'3<0&pUe'XaON[_*!%(,i%u+U)!!"]%P'J`,ErZ2j8Wh5L+diE4!)/8\*Xp.1!!$D),kGD7jo>A]P9QD"6S\lH!14JB4;a5A!!'g18ERaMbQ.\D-:K[#L1Cbo!&,jbGq^Lb!!%O@Oj&G$R0*Eh9T!@%%*9Ih!+8\D!rB6cbQ.\DB!Z-\5C`[MIf]QG`H%,%!!'fV`]V^=J"pWlzzzzz!!%]CrrD/J6X'~>endstream - -endobj -% 'FormXob.1ba2a8f0b32eacf100be71e913969f67': class PDFImageXObject -37 0 obj -<< /BitsPerComponent 8 - /ColorSpace /DeviceGray - /Decode [ 0 - 1 ] - /Filter [ /ASCII85Decode - /FlateDecode ] - /Height 562 - /Length 10228 - /Subtype /Image - /Type /XObject - /Width 990 >> -stream -Gb"0WlZ2!p)Fe-b<N59K?[_r5Wu2INZ=O=]*SsS(4gk$++<2Y0X%>jTD`7Xr!8o@eX+#QJ9*7j_*HBZf?hMhIP>auAp$[rfBn4=),L3$$TTV@q/F!EhW?]]_DP3.Ri[j@!.]FZ<U2HWe3oV^U"tHSscD#3LOuhSRl38`;,L3$$TTV@q/F!EhW?]]_DP3.Ri[j@!.]FZ<U2HWe3oV^U"tHSscD#3LOuhSRl38`;,L3$$TTV@q/F!EhW?]]_DP3.Ri[j@!.]FZ<>1K_nK_fPP<V&ta(BP[UDjr9kFfXDC=Z,Z$H6MbiosVst;7HDV"4b$tl@m#DeCu=.\qT`NW##LW;/_pTl5%Z,TjA"P7(mHCW*;7MKR+g2&bWTSU2Jr&'C(:e8(?9?Mn4W6:8es1+&QsG/F""r4/#sdHpkYbZD^temt?!1E0uPJ[YhYMo1l5#!f-`([,R-`U2Jr&'C(:e@?9F`Ir#^>$g4'W0*DdV#;#l,+R0`f4/#sd*;2F(n]0cg[rC11og7T@E6o$\T.T=Dc9%_+#TT_u.Ygj0E8Ei]e1I276F7<lrC*rahC=:W[rC11lCLI)BSQ6,(3L#JSY5Cb]FJ*BYrU;cS9KRrVsulYn]1?"[rC11lCQ#UGf:b/7,>_*-`DA1No)YmA.SgBGpfP;)SAQ+UHo0ak+/15.B0dN(3L#JSY5C"WOGS;FURB'T^F8.[nRW\$g4(RmO>-E9bqjZkFJ:6.B0dN(3L#JSY5C"WOGS;FURB'T^F8.[nRW\$g4(RmO>-E9bqjZkFJ:6.B0dN(3L#JSY5C"WOGS;FURB'T^F8.[nRW\$g4(RmO>-E9bqjZkFJ:6.B0dN(3L#JSY5C"WOGS;FURB'T^F8.[nRW\$g4(RmO>-E9bqjZkFJ:6.B0dN(3L#JSY5C"WOGS;FURB'T^F8.[nRW\$g4(RmO>-E9bqjZkFJ:6.B0dN(3L#JSY5C"WOGS;FURB'T^F8.[nRW\$g4(RmO>-E9bqjZkFH;!&C&8iqdXMkNJAdK7i0Z,S9Mhrh1'q!NN_l6AFo#:\qT`N=KgK;psaYgeNCF9DW/5AINdMCqr$Ml'lU6Gh1N)%7i0Z,S9Ntt&8i6Tj8=PYf`"=dB70(`*0P+Z>u8"LhMM+r4:7)>54d^gH!]"VD&utZ[rC11l;eEe2NKJh><))i?JVM+dWo0Kh/+3=:q(E#$0kP%8N)V^W*;7M"Egc#,b%:?e1I27@cocCEtde#0C%s`O"RA83:B95o58b6>P[;+iZEJj)IG9)LEr?Z(Xt%,GG9O0r9a-F(Njqk7i0Z,S9L]N+i5i(R2:!iRn":E/Y%$ZDB[T?eRMq8h/+3=:q(E#M40,hDiM=5q>L2oL&5]??@MPK\e_>0it526HTKZilf\"<$iePMn`<h*IW)LF1EI^i]G"9Q@=<NO7]bH.m6%8pqsjgR,G^cPU2hF.2obUJF*UHWpZ2S.7n>N+7.im"S*Da^K<IL@n""'^oBCFDl;h])&H7DFc-,&2cddB?RFd+<?(SXXROgidi*F?8lkQPc^!k+ZTh^rPDE3@,f-]OQmN/)?Fh.F0]&dP*qp^/MO&*H5)Mr(Ujmk@qQD<l/L,?ZqPWE&5\^!J*,G^cPK"=/bdem-El>ZR[3Wl@BOD<X/)<s-RqK)>dBjrlrk*Ou;dP0r2UmcL:MRmZ<r`m-\=uuPIjp0'_TKY]BGphaQ]7*9[a/@cU/Q$^&Wd,tp??`oUB&chYSX-4d#M$I#f<0IK>E-Y#hE*;dG7U^!-a$]uH>D$D6/=]&k+/__[mB;mdh6ftTUL)AHJJd4J$.Wi/Q$^&Wd,sE?$H.)[t,]j6JXf'k+0#,h:j=%9ao,TlL$qqn&4>R?N7gqaH4W=mN,@!:4,@`X^?R\hE*;dG7U^!-bc>C[c:<TSX-4dLYDKt55@ClH)p\3Y%R\u)'"eRFn\`.IamfHqbSA^s64j\&!XmR8Pur_pF3&]Yfllo1,pO.lF,k1"na!]=[,^eLEo=Ep@pYH8$U,2JMK21.I&hS3=#42p/jOU#)=Hmh<)?sTcV5alNbSjOJJi0RUm,sJaBUiTF;<%MRonrZVZ].Ac4k3*0M"Y)\^I_4d;3("(cFB;UfPWR"Tc2400MPK0tfrDJPP0W!BWGqLLC],Ur#eju!D:3;-H=:^2\#7G[)gkF`m9*pX'Ri/jb5gDiE]odFud5>VQ>,XpP_4Jnbm`%L?\b2AAWW8!p@%+Je>BDk(5*0M"Y)rro"Ru,ttJMK21.I&g))u%DQ!,cT'&!XmR8PurcgJt-=ET<O:n&20Z,3ma=Dt^jXUMc!g>;s:LpJ-[Y/Y[.=ph&DF1$Z3'\om&&IIG+QgEPq6NGnO(';KH'?E5(EgNW2@1=cu#_')BI[mdKMoPV(lO-rRoZQ=_W"(cFB;UfQG90Vhme.:Ee&!XmR8Purce?'\Im!C*Lh%oD0X_7St)'"eRF^&Camb30F[.h=4g1#GhLEo=E(0RcOo%u@mrbn%0(gl;H8Purc<pRb1W8"&u:W2]!.5Jqhe85dLUBTqkLq:t8F^%8iBS!`HU2I>'h%ijH>+fbkW#I<b[mef+(9#t3l:)02D%Uoc"mWOP]$US%>=@:\J\!G-DR;[b(/["okZ`9&=8RKh/+BMW/bH0Wq5aJ/j;%I>N>DBAr@M"+JaAd&0/bXTh(>RhNm.Js#o]Q+(=YoGAq*,Z%8h<WlD,ZSN<OI6TM@O7h,mKt$gON4e;XWS\"HJW6JYa?G73]3,Lh\VFgn#=3^VY):j3<4Ua+BK"a.;I:-(_t=AX2LlD,ZSN<OI6TM@O7h,mKt$gON4e;_GVe/cPW:EVTWa1o(Ic;.?/FG.61pq"&mk&g<KVf(<#lGhi+Fh?iZ^NTV+14Juor9KF,Ku8&)(OqruDl0Xp3O,`647IG-_51DHDR]Pq4h%h'e\+#am@5,$mG2($Z)W0J/]\1SFC8Qb;to[fXa>1cY3tMZV7X#XY'XgR'-0;:]5ZTbJN$O%4bhS-<Y+Wdg$9:L]3.dR?DDCrSE;5)\aI-9iUeYlpqPRef=):`g&&%,\d_hmL\*Q$U[GVWjgEn7c#`eB*^2sI(gq\1L->KTiO[k9-241ckK2rNh2`K6Vp+2`_o:IsAPV&0U$enZPE$?L1["O)*.2Y4diEYFr-(sb*SL=8p[UJgit?t:q/XtJ20%$KW,@W\&_&s$FjcDKDB>V@8A@M1G/%<9Ikd@`>H3mI4R8k];`<MV%D1B?QbSjAcRm+)a*c_#I@0Llh'Z`_ZCt#SEj(r;DELbi$$4TjgN]I\'=,r4Wfpa,]I:"B\ke]gDTo$AL@'6]9:;RC_2Enke87M>kEbD+,CJB3+mLs/o5dQIdLi',T+H-LVG91hcatPmh3P%(NpsYq';BBfe4E1*4nAtW[q4j#,6qO"G,G06:$-?8^W?X`U)nH<Ue\;6qgYa+bTV)/5O*+o=k#U_kuFuu^[C;m?#ZigRYoBnhAeHQHrpo'o\Xi-C",;op$."6lBXXU+)X8K^'KcPH<XZ*I!U/-lfN.-FcUXX\mPKje=E2%X8B@(oNp?$QOQa?4jldb^0A=7No0EX-$;_M^P/`DDTeC8[oM#FMrQ)J*pKDALQ>a7m.eDBk:?0!^WD-%GAN9LW-]fT?7uG(pI3m_?*itD^VJdUZ_(TU0B]H$p\<+;T2CZP`)l)nU[F6s=#WgJmZFFe,>n2+e;]ThHR.mr8CTd8F^l]^*f7H_&p97'h&)![8"sm[7,9(b2b'P0Of03D;>3W2NKL/d,jNB?e3+Fe@jL=\M7PDSFcSrH(l>goU2GoXh'5e+L3iBAhk-V62KHFZ]mG#dW4Ro$^I.1$jE@MLp[WK(G8"JQOh+&o9&4+Zq1-`*Q8`M7K=\8P,'BCR(];kQYkT&ZprEU'^93CDD=qkYjZfrtYI@1`K=\7E]"=^)]`g-0]/I,kCUmSc^Q3O"G3+s2LJO:'h:Ip[jn9/Z%6ioNG8ktq<mN8(pChtEgSM=V=mg)ulM^p/)mK&MI@Juf2<sUFqaJkP^)>P+HZ+X.[nC3IW;H,RHJS6uV$_*CbOr>*Al/5E9jbC0\E=KITj>5HF^Nb]Fb`nDQ`3"$Z>EJ5FWGkTgh,C.dsW%41!PmKU$h4rs1E^SG4Dh0b6M(-=gBC(9,1:tF\VeGC1r41YA<./s.s@N=e[Og038X+?e<MEs4N@.b5ug\=gC3?I9hV?)24hL;N]!c$R^;':`m8[gS4-%3\X4A7&ptJ4:dlFd;Oa8cn8U_]!(Ge/AiZK:<G-nD8*G1XWqsqf:,pGQROp^MYC+dK"A.d36QE;/0-UcFh@F>T\S\Uk9[4&md!cSHj.-)BAP%VFf$&+rN4SiV9!K/c96Z>f=BKdqmkmb\[2#O2q7f>f'?l3W0sdboaAFk%j,u-VppV@;"lmVX0b&:2d+rql5$)]'#-p+a!THBqefF.c/A%";"qF,5>bH'WJLMaQW);tjj!`U8_nVg+0!=lFZ\k(U$e]*7k.u^m`/e=ShkS<AM.rt]'kj,:$MJhEbrJT,8IIfpAsQu$`JDqDY6Nno1*]?%dIq`\rCdS(P)8[\`II*2h,l@gJ[@`\o8+f^/"[1XJ"u.W8"cMFH(W2H/k'OYD]KRn8UPQ^93[300?,E$0ns9?2*`PAA%_4kI5T#m`Q+*DM#HZ$bst,eU=o*[m0c_Su:<JD3obCm<)KB:j3T&D-m'H*C#[PIUsT#2gNb&c2@>)^DcjSrpYfe=aU2DgGIDA5+lfbh!to\gFIF<HPPkmS>uJLpJ6eKf=KZ.pAX%%BrH6'5i&lZjid#8F66?(/p^^V]e8>'?^V^[/Db'9T=mtIVq3_?oFB3BmYR;Pp1(?4?I(7cDI91,M-(hmF1"6G@f$2jaL6DH]$\H3\Nd`5O!1KY2YmpK7LRC[IsT'TK+a;_o3Kk*#,:ein;;Y6,r'k0k>4)ULt;IP/+sjJ_XK.K7GXoO>4<'+fP><`NSWJ<e;\dT"omqH]nRjfG_6f/2l^^qr1g=d)OnOprEVbGB]\:3AT=&ogX,AdDRB!)n"Df-mXr*u8k%R<LE`SNmkO)s/"`s/iug3#M3`D(8#RB/HsV$WJV^:LHpHM$jhk)@S%>MY?+o8#l:*9Gf=e_[foM/>`s:+R<^'g>mIb'U3pI_-:cDRODGRt+"6r?+eEs5ZHpHM$Kt9G?NXr'-X\cL)hXLVhUD<(fe2ojeDR@ihm`.Vo+,l;+_agXEXgEE@St12J#Ln`6W7t8>pjfs'$?^^\*?S*:>+oh0^#K4[7P!!UWHW_Th.VMR4nXgGW#Mj8\#8*Q!Hk.PlLr^h5+lf#6J\5Z`s:+R<iFbOn+_FEd0b#Cl5^sC2d2nm:VGcjl:*;RmAY;W5i$+-\io_H^GL:q*@ZnH!d-($bMB4$K<TZpNT?HH-9?NE3"4;t'L3]$Uk-Hg2Un:cDRODGRt+"6r?+eEs5ZHpHM$Kt9G?NXr'-X\cL)hXLVhUD<(fe2ojeDR;adSpJE^e;[M-gJdS9J@a,8FaNBo+&Fn"Tl*Z>ireR9/(EscGC2[3BSF#\oo9Q])m)rGVr$qEFe]]:p=)/fkYq6Ehg[fEa*ZOthjsH/1$Pl3h4D4BTMOB.^OLS)J%XsJo_Yu$r]MV,or-VD2]_Oi]8t!_gY>\j>JV5#HfChGe;[M-gCkqTRAfQ:Ln!1!M]9J:FaMQ0=6?Qq`Ep(.I^4O94_;rTo@1G^\]&DC\.*7O[jTCFA"(!(0fQVIqO9a%\ij3?$0ju1eEt@e:<ZW1C=)X_emLnuU2EbkndaqS/(EsC;Vj-"h4%8Chcu'o@=u-S8]\LjWV`[F5.K<qZ@TSMFjgA6UD<(fe4g1tNE3"4;`>^n2d2nm:Yg+Xh;bGpFa'I\9@Hnl;]gaE]#U4M(QTX#/F.>@]'4aVa-gKT;g07)dfFTP1WqDJmQ0X1"6pq?Q<d2?Fjs+je32).]9p1qW1+9qH^n5^0m2)F2]Y`h34%s\lE6n"3hYn\B%b/Q>t<`CZs'S]UYD3q?I,D73pK6;*kTI\AJ\9h*Hfg3FcS?%/uJ%tlD=[K*bUdE9\jj@9aB02c7HSp]'H;a%]F`E=`uNBf24II;"lrUlsf7_UM`,cmVujl`RJ0`h/kp<j34feWOn2%l%$@cR:R15G9(hT!HjGZb:][[3pNREl5jT(>tj'sIfKC'ipX's/^C$W&ZE=ecgMr#IXfj_E<^QH5i#80mLcB:$Ih3?F[L_k8"a`J;"k7F%0c#<J\%O?h'5`T'W??]l@o@_O$MMtT^EDj)[b(X!d-k]\jrE2-rBXDe-uTH*eCnr5i!Y]2\`3;"R:^CFcSfD:n[4gW#H)n4T]bQlM!ClRHm#$NhPkQW7t5e>k7.V+Vr]+I`%f6C_P;]!d/kTJkMQIQa)JJJ+W:PL1'7hB"6IaW7t5e>k2Ubmf#H61NkArrV1Ut\QiP>na6#&kLmr\X4FoRqQ4[KL3l(E\ij?2n(#qTQ9T71l0,D,h,Y=oY2aPh5P(7L*a9<->sdA=]&8aOa6r&MD67]$r,pCqfl-nVgeo`h*eCmcFhoAPlAd4j3Yahb*i[%;lO-`EokSA<:j34gH`D+IkZRZR+aN753k9Y9kGP8*"R>^1"d_'E44NPo]DaG<7sA4P<f\>!;R`PV\>7)R[sL7C^'XQ0't;qF]_pZtonUjti@FL%GJ(W1l<69AClc.j9t/0ms1I+CW_ZUgo5D\2/"lb_=oQ:MXZj;io>U2*\%8^7%3ubHSG7?m6eU4,hY:]DU[J,j;ne1bLP4&63U%odF-:H]U)Va4EqRu2CJLA&Ys'3);"jUNV_5KTq<t=$0Nm5@j;A<60))eqcC&Ie:M<RKC[-LEW4W)sPj]gFl.tK!3'QO$jgEiJ/,RFmo&IjD6[m#$LSF5.W4W)sPj]gr.""ZPR63UhP&'H71B#An[e]->TasTJk>?I'gF;%!c8Wl.le_[/hU`k!h3#;,Or<QQ\c@F#\-j@imir0H=g(#W4_OGXq;0*.=6BJir:!:l19];PG?4S:\dL01+24@6MA)Y#YNtVXo_!>C(4`thW8$XL4"IEk\+C\@dee73fqT>@[X8$a=l%&$eEqD7SX&3ZmDLO=<ep0!]^X=)"\?ZY@!*9(;7G/"G?.mcDWqLG^FigkZ5L.Pl%"Mp\r4%rgZuF4.oA6JItkPJY.M$'iOZoS`[sG:T]<q.ch,sh;n(B;\2Qe2L?nj2mAPf5DQgrtDhbh4f5:B)Q.52D3:>$.WdF?-H$'%q"k\jubijhB9olm!%`c8Nf*6R#@\WQDhJW!jdF$VL(1;&?-O2kVD!c?^J(_qV'r_!l^Oc='l?15eYQ4RpWugB1lTY-GK%96KI,.Q-DkM&A]i+a=00nrSeYBd#h'ZiJFE8A(H[T)2<dQk\5lQ5_USR=&I%BD*C\YJ@;6O$#lZB,<htW\dcJZ]i(qslINk5+I^Zk*`qn.FC=mG*@oN_I^mPb'AZa7+o^#A:#_Z*9A5"!"c4*iPFp3tPeV!`JTS`X3npq!$c=Q49t]i;W?00nZKeYAr.G^Q(E?#05HSa]lnImUeC3?o;IpO:YfV!`JTS`X3npq!$#/@!m:WI'R6j)6t?X8?u5\t*7*=.,[[$UENR;0R66:#4XFhfO%kI3*N0GIR*$SK2jF8);\ND>[+@8)<?*2g'<`J(*)mlW1Y?G9uOOmV_''3]hK?P5"">7,?AKD>[+@VuE#>2IdTqNkL^VS%?4k^Zk*`q`O/@mV_''3]ghoLJJaVh:17tr(Ufoh<.WoFa"dSe(IUmH.5REh8\>oG.*tuO3T\C\uE<rpm]Q(?+8nn\1:E8Fa"dSe(Mk/c5=95-VuaEG8l%\fhqKhe4ncT`ntl]e9rB\;g5_@2k:t3T1@_eh/3'aB/b3c(I6g+h/3(EB%PAuFZX#d,uuStFa#^\eiR:7\t(Om&uue`8DT]c'n=HMl]c&7H3Xjc[hDe8/:LsUmG5NPO'@.ZrLY'XT<[Ka=8XL'Y>_=dmc#O9g?0ck^Zmc?20RR:cG&l=6ZueX8DW+(QWRDbcEHJ22g(TKI,.Pjm`FasA`pHreD2-f;g5_@^Rs<c$t$IWW11B1NW8tD/n"IcSNu#Nld!5Ipetd2VbGq&fr9=2gJPGpiR_Jk*$-W6;`8"Wc>rBEA_:dTmt^g\7c+A"g2+B43("HhD`fC;5B:T-FVqlefq"E(bB1n<rPtHFlsg,5@/k]+USR<Dh"/q\naZ4%mWIshK`ArDPKS(XHTZ;S(r!),FC0RRrMi@Zh1NAoG0>NH]+rWE>h?-.J(CNQ0C/_1(Ee4Bl;:IR+RZ[u3-W[);j,&MXif"%4f%Cc/_>Df7dIc=eXa>[#Bj7QS&aq_2D(ii`-&,1eo8L@oW3%jH;NK&T^H^X2`/.PUNO3%lMe+-hS;!3WqQR*moMYEl5mm_s*&AX^%^ePF#VKJk5Nu+(1S0RT`,=\\R5"XWI"]afBn7S')N@%FikT,!5&!+*[Pr)@/.=(YUm'4[]+V4%c]K)]7,L<gBfYeZ"a<<];lgXh>tOGm=Z@C=LA.Yh:2p<mssB_G/=Y\XBGVhmV7KYGJN]j4(3ji<\4;oG;[:h4(.ipSM7qoWtp5s]:*0o*ADls:7,IH<=;(J?-TVH%N)ot-d8g5WWf'`Y%H=4#7OtK'4t?UeH/Qk=#4[+",=#6#r=-;C&t9FWu8A&!Q3OVK\f@L^Q0/>Ti_<[mY\TfCUV0L'[F@VBC9fTJ,f35p\4<)17'nHE(&_F1qS3kYM0@`9Dj+B\aVLucWACT?7Y3)=4#c0YFCHQOEmb8eL-u<IfK'3qbrm=WPpQ7E6d`&IRCI-BDB'/:fhl;)Y`!efU]LAgK_R+0!nk[NOl`rmd;PH]5P;q`b2n0<#>4jIHN)h\Y'RXG=C?D25pC)?[&j]Y>a[#U3#<%MOb\SLM$i!cO$s;f@I9<pq!$Ck-=gWY3sMHFtXQcW7JLFFEhu%n=2ajF)='%L9K><Xm:.;>PILHg3RoN?ag^6l]0h6me2$8\_$"&?^\Oi$8/K.I1qfnANm`:[[nMWfBn6L/9)K`<VO,g%G[F#$/E-#8=roG7pU'?Fm"0Sh=$poE,Rr-hHW>CX?o/:JkN%(n%7k6kKRbs2q+.F(o&^nKY$chF1::r=6$QR#*$P:EPP#mSbJ\e2<R6\?b'RuI`nZOmjg>4<cL!g]4obs/<T)l#'K*Wj^uau;YN,QR'PRmW&sGepM+#K24!VdCc$;@j*ciso=f4JjrLK!$^XQ=mX*HSGDWGJkQb6\Am2]<[%C*Qm1MhG*^\\.?a*O+r*',o\sj+C0"Q5`U[Gcfm+'-$oBQ9l>WCi^Kq;q\h]ZW\Ku0CnoU:JBP&(Z'm^u3ZeaU/`bo>W[`C=LT:>bbO_3_j!V`n%`9j-pHe=Cf?c+4C/PB$NQIB0<9T6K$Xh0G@>XD-704*CG,Q`o7aiO;J9lE^<]o"+2^d<'^DFm!%>\*cIoVfdbJe6RH&\1k[1^/#_f&U!8B@^d-=hL%n$=a.b\:IJK-$$GE:@_3t0YCFJ2:->sPnmo9=-f3VhFk]:>H!e-g1Z$\GAf0[/$SJ.@]PlW0qqeHp\#u%.i"G>#qpt_WO1P(b$SJ.@]PlW0ql"k6]&44dcMQ2k\rXGsW=(>Pm_!JoYPY8FT=WqnlH]:XrOS'$pSeNQU$fR3h66^SH_7n-''dd>f)<1@](`03/tq^Gn(b+9?V>C\#J'/3DrTKcl(Tf?KY$cX]I1&@VGm4]o6B)/F(':WPnXI.7,<,ihNKtS?R]?sJ'6S^mbPg4lcr10E!^[M?$T6.;"n,XJkN%(n&fu4-i\4k[p,hN'3AM^!Kj)]ou7S'nm]r:2f[rE<,^1t*kN#Zm^(CHQV]VA[SM-,\I%QPTPgibG@LBXaj!OB2Hl$4R3W9PLq8-Ul@M[-)lTG_\:hGE)X;oIW#M\/0"?SGJK!g*9;if.Te<j.\q(dbJkN$]W1biRKXu^Ql@M[-)lTG_\:hGE)X;oIW#M\/0"?SGJK!g*9;if.Te<j.\q(dbJkN$]W1biRKXu^Ql@M[-)lTG_\:hGE)X;oIW#M\/0"?SGJK!g*9;if.Te<j.\q(dbJkN$]W1biRKXu^Ql@M[-)lTG_\:hGE)X;oIW#M\/0"?SGJK!g*9;if.Te<j.\q(dbJkN$]W1biRKXu^Ql@M[-)lTG_\:hGE)X;oIW#M\/0"?SGJK!g*9;if.Te<j.\q(dbJkN$]W1biRKXu^Ql@M[-)lTG_\:hGE)X;oIW#M\/0"?SGJJu:Qs-`QS=1pZ1b^P$@R.^?O?6'"Gz!+4nRJC3]f~>endstream - -endobj -% 'Page2': class PDFPage -38 0 obj -% Page dictionary -<< /Contents 67 0 R - /MediaBox [ 0 - 0 - 595.2756 - 841.8898 ] - /Parent 65 0 R - /Resources << /Font 1 0 R - /ProcSet [ /PDF - /Text - /ImageB - /ImageC - /ImageI ] - /XObject << /FormXob.0abfd65e2cab2f27fd6af0c2fbb44aa3 36 0 R >> >> - /Rotate 0 - /Trans << >> - /Type /Page >> -endobj -% 'F4': class PDFType1Font -39 0 obj -% Font Courier -<< /BaseFont /Courier - /Encoding /WinAnsiEncoding - /Name /F4 - /Subtype /Type1 - /Type /Font >> -endobj -% 'Page3': class PDFPage -40 0 obj -% Page dictionary -<< /Contents 68 0 R - /MediaBox [ 0 - 0 - 595.2756 - 841.8898 ] - /Parent 65 0 R - /Resources << /Font 1 0 R - /ProcSet [ /PDF - /Text - /ImageB - /ImageC - /ImageI ] >> - /Rotate 0 - /Trans << >> - /Type /Page >> -endobj -% 'Page4': class PDFPage -41 0 obj -% Page dictionary -<< /Contents 69 0 R - /MediaBox [ 0 - 0 - 595.2756 - 841.8898 ] - /Parent 65 0 R - /Resources << /Font 1 0 R - /ProcSet [ /PDF - /Text - /ImageB - /ImageC - /ImageI ] >> - /Rotate 0 - /Trans << >> - /Type /Page >> -endobj -% 'FormXob.cfe9493e2e6e4e30496a38f77524126d': class PDFImageXObject -42 0 obj -<< /BitsPerComponent 8 - /ColorSpace /DeviceRGB - /Filter [ /ASCII85Decode - /FlateDecode ] - /Height 742 - /Length 34520 - /SMask 43 0 R - /Subtype /Image - /Type /XObject - /Width 1248 >> -stream -Gb"-V%?dMHdPff]68.<Rs5n&&H"T1QM+[ki"QDplcEXgd//!V$0#<a6?2`pszzzzzzzzzzzzzzzzz!2T:=o/p=(!!'gMrf\d[TT+=+!!'Bi:MKQA2Z6-0"TSO+aJZEBD`[j[s5[)Y!2,$n8iuh_!!$[[T@-Iu"TSPV%@p;0IkAu_A$CI+\Je\1pE+f+jAQ$YT[C9SB\N(+fB8_LpuC5^p3sJlngOP=cu.34'RZAFqo.\fX/-iN)eV6Kk0ob'K:N5fLgT^%!!(A`cr_"Fe'3qS2`I%G>Q286/:5],&G["?!,+<)/DC%"FEPn7oBCh4%n&Sb!!(^^)N3>@l-s=75A00.R^3Mm4p:odg'nsY:Ak$sVTmY$:\joF3;Yu%;ZHfjh70^<Lkg>@@qjt[q/l5'dW#NO7m7(V!7!9E/=NE_TDa7hn*7pS+`Vf;cM634T7-?_OA>lWJ4;oHU:jlUZ$2@,!<@Xn08XMg:Gt4qHjTiR[$03W-_CG?!:AiGg<$5m!'iXAP]l`qo_00(D^]E%!+7eW.IAVVl0f,Q.0'@P8j9*-Y2A]5:B:HG<?F3@59K\8!!$^%nbFWYjAQ$YTUgI&48BQj!,*aPddH/156V#eR`VJ7P>;2ZJ9LK4m=K`^qfaD^^](gRdK'>uhT;\&>Ks(h^Z"pd+pS)JL6+Tk/hc^Y9:j/+"+<^PQ;?Q@&'_Ea%fcTOX7PQ)hS!2H<:7E1>N^5$;Vuk*n*.[o!!'Sd93'0]"BW'[[nlathdKTmEG&m=f5*)t(c4E<E4*qnc_oAmg:f[sGsd<_aIq:Z/q3j$THeG!>5dkE66=cfZe8a4?%RulYBRF'R4*\t91a3n2(m50Vo/<E!4^(uYFGSm5)8^n'g(bsWa9XAnb$dkpNO#Ph<hP)RDD(Vf6HZ!n+><5qn4&;!,rkf>[S7AjjU3OVLB;CYf>fo`OU$\F>YeZ4bFidn2l%FIm9*,$37d0fEFb7<'FU43!]04'OOi:l#+S?4X\]cT>gh;7PY-tIX(VhUQA81:\PNOI!K0b?(N?%Dc`8#oNPUa.0)KU,8_9:C*8taW9'??lcPc2/_;g`P7s;;BBP-k%.`?I^mZ6Hg:k3=_%*"djjS.-Gq9$4K04s@;%+.jhI+^hM"<%qn1;n!?ke4tU.e1O`XYC#"b<1i7K]D&2\XRLq%NgTjr"Ve69_6:HjTj:o8ElC+eR1X4p?J.Gt%n2OABR<T)q:(4JRI)2!39KiGjLZ`SnKNCH58jhemOF+.bN3WI=RV!4q80%?.%OJ%40Q5$e+/N1PKab)JF,>9][@5gMQfJPge^c18c^eW8mZ+56r*GI>]jW;*0haf(Gkid=qp>KqqdX&lR[m'P%!JMjnqm_G[^NVbCk>Wr=ADL"\RUBko"o'<t\1YDM*qt6hsCmNJ#'5aVQeRZ.8lF>)MQ4/'V>i=/qh+YuKh;hK7ka#j<0T);m<#J,W+OaOYNVca;DpUgF82$P"=?aFi]JX,#4p?ISGt%n2f_k)Pob4gbY?(g3WJ09Z^"FPnM]c&11S;Zg\*RNt7LLiNAtQd4oZm'JG<e=qJ=_$U"/Dgj!:ErQNEb%OIl.?4h_"5#g%i/X]=O=^T@ROoq%Nh?jV\LijnEi!?2LhFONhmX/'S631&(lmDb=3hGum238SZ'hN:D`_pBb_Ui6q3tp-_(JJ=_$U"-<4_Hk,>gAU^&9"d[D\]%Y$,rSXKX/YuuW\U?>\/c-<UDV!=C\'#dM\&\5Ro>Y*YhU8B)IH4<,ka6!>n=X&[:jiON7Zq6dG,qYoMY$'AkM:KLHjTl0nr*boFBq'^I;G7fito-"g$p<M4j\e.$38oQN!:>Fcf_4q-(b6(cTItR#K`n!9KiW1Sp<d-&!B`!R=#>A4nFU:*[I@u1\h^bHKH(S4Q>tA58F2[eDBc\Y.q$8\'DaSHjTj:o8EkppK8p3p2mh?s/gIAWueQ=4p?J.Gt%lH=sh]@V,#Lsn(5b//sdYn0))G-CA-JPNO))dk:LOX*\QM[8j3E/Sp<d-O,0"aC.b%ncHkMM]X`utb<7A:W_>IiQIV@MH6:d44p?J.Gt%lpXV!PZeE6X+>.EqONcY9-JE1e7OM#g]r"b:B@,$T$bpQ=Q&1hC!%iP4kk8RW7!,<7@s9ZS,3<nEitIN$545Yf=]GYj\-;%$/1e;HQ@S/9iK(&lhZU;*=bT2pfrS9alu"[.83i_BIBEm0!tiLbbJ\Ar^c_lq/dCi3LtO);\gA,rVPOLa1BDre.T,EO':$Ye*imWVd\iUWHcb>UK4#"Ku``++f3gqPF%UVk&g/C9Nc=JB3jV(C'iU^8+#;HqVC?!L[Z<jEg]_n*X,IX*84Os3L<p$G371T9$-`&h5;@3=,B/Wj[@t#@*4p*46nBZ;G5B^4M$=B.,&s-JuK",e^^;8"oW0"C@L+ie@/9Gh<"),*B;YiXK.ja/O;JikT8t1n_Cp,'MLZtY-.cUpHPQF\^DpeSZ"`EmQL83&!!N0PnU,CBP/CB6U%?;pF)DTA6iK4FI)Ars*KN4hH]J&rQ'!pHT1!MEoV8fq!@\LZug-2gWcLFRs#>..d']&d*=bbLO;]Umnkdh@6RuAI6WDo(^.`S+C36]EDMmUQd-Z8dpjc*3@[#c%BQV#9.`FkoB77d.IFc<_,Q3c['XIU5$e,2I=q4gFD>a?O'Sr:8ht,fg6kJ*OABTR4US%jc)3i3%$'0A(pp.foa17Uc];A8HqH//$/1e;p\;NarqVqfn?5Umq=O9&&6mtmo^ugcX6g-4W,F7Ir4oS&?O,J:A153jQ;9N'>(Uq[d6/Oupl^AZ$<*#Ke(N>SkL4\=`j@.d5$cGZTpD@BH#sSmP]lUH9KfedIXdhq[P@d4m+BjJb<t9:(S!3Dd;R*`[K%r:PW9mNeEF0!tiLbbKO+VmQ%:"]M1tX/#=YSZJl^9.`FkoB77P:MAoS$E!Z,=-oOqdMqL%k>Ft"c9/[n<tsA6O+JhH.da=<S4bG"47hYWhP4cI4US'fX0f49E\=a&mED>PG`SSipF)E7Y0tV,b.6"7Znmd2iB<'AhP4K$\k5'M.d']&d*=bbL\E4NH&mP+lRM;'X.2g75s+]%*o<Z*k<00LQN,-'35khuRa\2]BP/CBj!12Elm&.>KQWQ'ngWa"9@1sH\qg#.g<$6HAR2.'I*0"L'!sHUmbp<dG4I(U=]]<M?0,=+$/1e;p[B4m47?$#AR2.'Fd7$I-"pp4h8=RRmCYs*P]`77elC"lQCsdoF:[h;[.>=B;q=t&=][VM>(Uq[d65-4dE[(Q9Vl)tQPXnh,u=Q].L5g3N-1D,W?l4j*o/(>,G#j!O+O@Vf@BT_m:r>8kLJBL^QY"iY&Z/&"RXF.HbB1=cWRnN_:3:,?%+-1]&gPP\ki87]:+^@1HW6]H`=j+cU4TN>CLA=oBEZI[P&.uhN/m_=#lUNJp-;(4U-47dk1#c0GOheeaJfUkH5g`Rgo)H-+KoKH=u!!M)%'!PVi,@A"8n_@9qu"C'iU^8,!k[0hpiD8&<][I!WaA]:,bOSkgk(CE,-_I5\:6s(@sHQ#ioNBP/CBU]4s`rUV'6;buN(WQM)e(6Pi@Yn&n]:KR?HBWt9,#4MJB<9l$s;G5B^4M"&/:M3/U4US&-s896DcV68=P.$nKL4%_TZd65*\^V8!1QUtOs"g,CH&mP+q/l4M5N0YL-g&n>=ZZT8oZOhg\^V8!1QUtoJTLb\0k]HPT=$rVq)_%t\&;WTmQ>9qVV,*JAj%eaT:IKMYggt`JYcjl[P.)=YX@S;ngUJ79@1sH]#Qa7r9$(b`BXB<rK>/Br$UfQ*PEElr8*O5b8IlF:^DB"6&.fkj]lO,g6kJ*pqV0H/naCbB?WW*a`Lg7\h=;:jASgMQCsdoPX*g\P4cD:;iI3&k_FQ.\^V8!1QP"loolebf*.[55,Fftb.6"7Znmb4Qh?\0ZX+Ge(AX2<ngWa"9@1sH)VQsbjVZ@Gf*.[85,Fftb.6"7Znmbt[[Q4hN+pl/!_sHje'k)XXp-NdcI9c%WBTAfT5lQl"RXF.EKrlGk[U(S\q"kXR85bIIE'h2L!Y#6.HaT%d*=`l=-2Hs*nIFE"e9@ocG$?tcelQU\in\*g[]2of&1ZIFQ;rEi'c%[<teNW`WI5f4hT:(Qh\Y"S4YA!47d,^EJPQX=L2<ME4TWEqgMh.MT_!qQI<%-D/O5"H4l%G?.7cBA+(\8E\=a&mED=kAIWW^Y7!<q&@,'QVje.`3mfD0YS9E"l.A)>VjpC35s+[O>Zl,Qf'<C_<LM.0VE;^6Xj;AuhirLl8Nu6@C'iU^8)q`1ij)l,E3?n=Cc.]HG*>^/69aL9C'iU^7mkIgj0Du-E2$7OqHYhAgK1^QBt#5Q2+Guro',L]?:[9A>\XT!R7BWf)WJ&/(N?*[,5\7>AR(d[en$I<mPFb.oSZTTb@?lcDW]Er`qkl'SXD?;3o,/(VjpC35s+[OFBNZif'<C_njp"-QfdjEd4Xu=k>Ft"c9*"Nee"2@\q%-.Vh^O$NI;uGP]NfMBP/A4YW'U^')Jn?(N9`7MK\P>k>Ft"c9+^,Di"9HaLGlrY/EN"o5m\q54U/I54U/#;G5B^4N_+$30#c^=g'>+Gp*XmPa@J-3L<p$G32X3=`[j!lcMh+8E8TDqG68f9"iVI536$a$/1e;3FpBS=g+kn]07brm3s]a0uQ_3:iA^fi^KE1rn@'EIH]#hV9V?U'!sHUEla^0Z<gUN^@uL9#0-[_id9Nrdi7;CI@tu!fq5<,]\7gQGNf],PWAnD9@1sHartP\bBdH"RGG6=Lg&NWlY[V.]X6#MD>N5LoNS@<)U:7dp7HdggF[:j3%F,igmQF\QXa+'EV6-N)d#/WB4A7fUDT`T)2MIJG32X3=`[j!lfuXCq6Z@rK%Iu-=3\b9ir,3pii2\DX%tdp9D^KPID7CG^!b^em8j(prhs5NR\hRhYH`B'm?]W'+\J;VW$Q+i*p$3_NjJKF97,2AlZI>]Da'/M>/'lNIbk!L3W2#6j5/@=n(,PHMo_fGb5([B:[Y:=XZ]XLmdhmp="8pNAQ.4RTf5?'3Wi5Pd*=br+mV+"]rnMCQVW5Jn<s4&?uT(ZL[W79%\*:$VSQ['qLGnui9&^Z41Fjg^4k*1kl7K-F_HAhWZSr_j(sLMqD00PC9q"7C7;`F&,d?>e/='GJp-9R%U$h,lZI@3o2%WQH23L[Q?HL3]Da@HB9+^Jrd$MI52=K/50Kk?[0IZ2G"uaD5/#DVV9V?U'!sHUEl^;%=g+kbhtu2R_ft4kd[h!3e,$BmaJ[(%^931<DVm\Ps3_qsmbqBTH#282c(:?ol1B-.C5>c#+DM5:R7B8J*QP85eY1mpbh8<4YN&)a07M)G_:<IhhLVR_g\cMK<^$u<^):nLDV+?)>mmLb^45MLV1%%[mnK0Tg+l,L2_L0I/=tPn5B^"2?*!oTNEX!"F<=PEWk"Y]XWGk$V9V?U'!sHUEl^;%=g'?VdOXa+9<`&jVrBU9O552gYC'X5r9g_*fC.MIccSCP0;ni:p<f($%\o*%&>dZ;e.T,EO)i<&N`iP9X30r,ZhUrD:@`,`;m=N\eU408ll$i?=a;XqP[-nR`f=_g;J.+e$/1e;3Fj/NXOi_;&C"5X?1=uLZ)\h1LW&F739,3mI.le@_(0ir_"d8s=&HQub'jOHP]"lmA,e4LX$)5DL+%0KU6_ICH'C\IEQi`7=e1]l;ML4'01nFic%[Wh#,7EVSU$GeeoC'D\isqEHr4]rTj->Z=/f]%&RO2']rMQPLf.k.C'iU^7lb*#a53u"\,Q"h?:\R^QZi$k]-0e;JZ'l.B--/rFW>b?Y29$()gNTd+^WlLX1)BL8C1T(?YbHqB-:pqg6kGkA0&_IY,f&2oYrD*)FM0EG?&R^Sa!/0X;[h_)2MIJG32X3=i[eVlftT:^%""P`XjfjT>b/9]_q,:q17[Kc^LV@hlYQkCLhVFde;e]VU_Mt.!5`gQCsdoPXF#Am-VB1lVDH38>e2\9D^8_c4]$\hjJIANRf1OH..?sX"jGB5-WWMV9V?U'!sHUEl^;%]j4]XrTVR^<;u^c?1=KWs5nG]L;\FVmSFdE.XMo&Y,)ZqnrZ^.Q!/c_k"uUka0E,>lE*:anKOMnRX@0@gREOB%lm\=2)/#nm=]l0\^V8!1QQRt3f^mZ=)\'%N>Lh9Eob\Td;O/__fmatfATJF3r,"]W?l4j*p&K+*.,<#hYP\?0@FPCn^@DkI!YQD>Ug1[l3p'45s+ZdLTKOggNE2?TAFgT:1K*Hp:\5uqt^+BcE03Dp#`>n>WnksHY`3CZGW2MLf.k.C'iU^7lb*#a53u"\,Q$>Mf]k)]X5GLhHk5j:DonV)2MIJG32X3=i[eVlftT:^%!;;`XjfjM<cbm!1+?.;<eQX/O;Ji.#4naf\:QAet:gkp+F&E-,6q75AQ(AG!ea2+\J;VW$Q+i*p&K+*.,<#hYP]jY4=pXIlYTu&23E?PBK<X3Wi5Pd*=br+mV,]G$VfSV`2f6l"0OkMj\EemTFV\m(5+oB8t-\>M?eRr!foELmRfo$j9WNU=:':>(Uq[;%?aLZ+'&aXZsLeV9W6'qtW<0Y,9VCUFP.`K.X,Yq=HiZC5A5M2[fgj)kth"Lg#CRk"uUka0E,>lE*:a.>>;,o?GOT>-_QcKJ&bJ%+0k-0VT^sg)C8@rp`G%rYO8BZ'H'Rs%:(`I<b%iV=sd>FU"S+TUg@m6e68DmCIW0:N(!2i:>F*-D0^PTj<'MNR,#CO*oZT`^/iLT.[%c'kaN$R,bh*6^0V6;+o9]4N\i53;.N$^%LPV^[Ju24.!CZ^2P-OI]GOMIKb_WFh!W<%Iql\r!CBMs3"MGs0IhcS+0AG8QThNl/p%^[+)SC>k(gq2EPbsH!nnaNB;+DH/h*4%e%0^)2MIJG32X3=i[eVlftT:BDGlcjop55[f#RYqdKD3^[%h.2U>C\aj&H+*/8]PhlN??k1X%qq,mOeVR^N/d=N$KVR+f`[sI>Lc"31LH5KoFe`X')W^E"3"&V_<c905mlT"T]?+opo'XN^tM5[9,.c9rti]UA(>(+:nh7.c%.6H$iQ=YiX)WIU,-50BKd9oXpbGT@;9'6XeW0r14EuiH%GFl8j/GEN:$q)[547akUXQ.sfFnO=X;d>P_'77W.%e7sgLRQml-hc]OTS69?>5aT)ng>\?2h1MXPukH]@803!0!/`X^%q<Go>Yu^Lf.k.C'iU^7lb*#a53u"\,Mn,Da'/MWdHH?c>)uBCl"GO3-*<YhN^ms(,joS]q=9^?Ji<!o5XeSFY@)cXi]`(QT>4G9@1sHas$(1p3'`Tp#d%[.8*%@ZldJhb9&LXBeDr7_'bU9K:@n_e!d'JI)6_mBQKg(p'*-4De2_!.!5`gQCsdoPXF#Am-VB1ld%$@;jN/_BobLNS=4?n.4:eA``W\mp4JRS[ZkZMjn@6c[Hq+F\lhtThCa$)g`G@:bo;#WGtY&A2+4E"&@DZ.bbH/`Nam"ZeQ[OKo"D3G$`nh*UiSo9ZlcH[I"g;)'ug"@L@agrWrGt0+DM5:R7B8J*QR$>X1/(ukk?lhfp:0lj$ldnkN!4B]X7.-\'i<?3BVafbM.A>QeI4;Lf.k.C'iU^7lb*#a53u"\,Q$^nX!e31;lhtHDB:-V9V?U'!sHUEl^;%]j4]XrTT<SON%hbmHT[S6^0V6;+o9]4N\i53;.N$^%J9^+&_ptds&WXjAVLqjASgMQCsdoPXF#Am-VB1lVDH[Kf%jh?:$j;>\XT!R7B8J*QR$>l`'m=pPE%ZVdD>Ba1m6UT6=spiMYIg>n]6Cc2Yk_S4YA!47akUXQ.sfFZn9IhX3a&RTEOEG\N6)mCI%[]Zt_DTQ95Gh&a>Z)[oU/$q)[547akUXQ.sfFigPd2n[DL`"4ThZ[/*ip:'r>E-9?JHYK,6`n=L\pT;qr>oT\)XP$pkd`p**Vq8>&/[HI`f=nnWZbr.(]IQ@63Wi5Pd*=br+mV,]G$Ro:VmlP"dc&@s`shLd*XA=cG@sKgF.Zk#Au;VIC7!jfj86(IC1X`prE!oII'KO>5&5sPB-:pqg6kGkA0&_IY"Ls<FnOH[M]lE\g[j[lrq.5F?^I5K.\Barei77GqeU^ng<WqW7&_sR[05m@UE$S"@rKsFT>p_QkG6K:0CA97F3Do/Afkon*Zj[sSkk^?0=tM"1Q9AbEq=B10s`U,<qbSY6^0V6;+o9]4N\i53;.N$nnG1\[nTUP`(PIT_;*n.n2C"IK'h]E9C9c4YMV@mEo?!$)tI]-CW-j]c9TklZnmb`a?#?p?'fpWlfXh&7ROhqGFMBDNf#n3CX8p%IVp3R/>"Q@d`KP,?UL&="&V_<c905mlT"T]?1M^2X4L*M%.Vb091GsZBXpJAgm7ie[(JLuE7D0(2*!DTkA!&<Hb9-VeSG16jNu?Kja@M[ken%/c9TklZnmb`a?#?p?'fpWlgX#"@to5Bn#,#'O'p<!r.YVWl3p'45s+ZdLTKOggNCW9Z-H]EWAhagHRJJes'b#9PWk)ock*&!5h$FR1QQRt3f^mZQ[B_;s':j]6bKe,2qe^<l3p'45s+ZdLTKOggNCW90mOq%+^WmQ)srA.FU"S+TUg@m6e68DmCMB-R(SO#&23G9NHR[R3Wi5Pd*=br+mV,]G$XZQ9O:8"LmN;X7_9g9SUm^cBP/CJOEDOi].Wn9-82/L`(PI=hjW<pGP*dnFo.sgXY)J!WA>*n"RXF.*3tT7Dq?;-`k4j?0uQ_39td[sZ[(JcPq8PNDMV2'+DM5:R7B8J*QR$>90S>\O\TDBQhJkjVpeF7QSl>O/9SC4q8_FGeIF.>Y9$fVEO,bD6OnTVr$k'u3Wi5Pd*=br+mV,]G$XZQbfarD6bKe0L:Gc!)Jn)C,\XaZ:*)L9EoX;i)S>qh6^0V6;+o9]4N\i53;.N$nnH=;E#M*V[+D4si"O5cDTa'SoBEMY<9D[+``Y/eWA>*n"RXF.*3tT7Dq?;-`k2VU0uQ_3r(F8p(U`&o]79'$a0,!tZE*ZsB@RQic9TklZnmb`a?#?p?'fpWo-U!I&23Ej$4F9F_7"CEXufeDL\f=m&+lJo6^0V6;+o9]4N\i53;.N$nnH=;E#M*V[#^AGO.AU$]uL\\c9TklZnmb`a?#?p?'fpWqiJrbT=t^%;uWhKQ@Ji1*ReW@/pCNKZ#%)&i,X1D%lG;!>n-X;3h3%-I*/G<'!sHUEl^;%]j95grTW]5P^IPsJ)9qt1\<oHiO&3nPItQVT5lQl"RXF.*3tT7Dq?;-`]g3iFA51fngVgIngUJ79@1sHas$(1p3'_;or#:r!'QE>Bd]Nn0!tiLbbH/`Nam"Z-(dLgjAXdSVjpC35s+ZdLTKOggNCW9ck#r:G4I*F;G5B^4N\i53;.N$ngX2u5,Fftb.6"7Znmb`a?#?p?'fpGrK'fh-_GE3[05m@UE$S"@rKsFT0bd';qf?kS4bG"47akUXQ.sfFigQ.O-]fa%SZfps7Z>33Ko,"Jp-9R%U$iW\*J@?5J>kXkeY=&V_jT53L<p$G32X3=i[eVl]P&;+7^lJjAX@#QCsdoPXF#Am-VCF;s9!a9"U/arfg?\-"pp4jcFU)Hb1p+'`&uFdS<!f>\XT!R7B8J*QR$>90S&YaJZD/:H=bFJp-9R%U$iW\*K2QTc`hSmGq3kV3[dFH'C\IEU<)(jAY8tHqHKrP]NfMBP/CJOEDOi].WmnqB;KZ:-RcEC'iU^7lb*#a53sl5)"I,VmMX`3L<p$G32X3=i[eVl]P&;+7^lJjAX@#QCsdoPXF#Am-VCF;s9!a8iuj5F/^I!B--/rFW>b?0)64X+eR1X536$a$/1e;3Fj/NhQBL8Kmq+@[$+9GQWeuak"uUka0E,>P#%bnngWte;pM5*TUg@m6e68DmCM@Wk_FOX48G+^W?l4j*p&K+*.,:Mq%WZKT@-Iuj]lO,g6kGkA0&_IY"Ls4I`SFoP>=3*>(Uq[;%?aLZ+'%^:SAm$.IH1pcD?i"SU$GeeoC'D]&ZfRLO;]Uq35s"-"pp4jcFU)Hb1p+'`&uFdS<!f>\XT!R7B8J*QR$>90S&YaJZD/:H=bFJp-9R%U$iW\*K2QTc`hSmGq3kV3[dFH'C\IEU<)(jAY8tHqHKrP]NfMBP/CJOEDOi].WmnqB;KZ:-RcEC'iU^7lb*#a53sl5)"H5i#McEXKe9`/O;Ji.#4naf\:O3eXt^d"8(Lj0)k\0s85gkcfa0rSc?B=cZc7AIt#;723tSI-"pp4jcFU)Hb1p+'`)guB5?c0k#5l`/n^>D9@1sHas$(1p3'_;or#:r!0$+tq(Hon.W>PI$eh"=3Fj/NhQBL8"i_j\_UZj]BP/CJOEDOi].Wmn(t<3gf,\'ti,kh2Znmb`a?#?p?'fpG$u22+78u7;3<efoUE$S"@rKsFT)p6@%B&bGSBdXVG32X3=i[eVl]P%piKV3YL^L%9TqIs%PXF#Am-VCF;d_TU.GVprJp-9R%U$iW\*K2QJ[*/P<()F]R8)&R4N\i53;.N$ngQ7.q%W7-2F0Fr.#4naf\:PjVnbP]HT^+eaM:c,G32X3=i[eVl]P%pd909'3p%6c1QQRt3f^mZQ[B.!c?]QD0u'BPH'C\IEU<)(jATH.ee>QRq$$00UE$S"@rKsFT)tdoT"oKm05+u>jcFU)Hb1p+'H!D6"Kl6`5s+ZdLTKOggNCW9_!%jIE#nNXg6kGkA0&_IY"Lq^7V=l8l^2&+c905mlT"T]?1KEu3pR)Wa8CO4k"uUka0E,>P#$YV=\ms:jqkB\O)i<&NkJ_bHjYhXH32\Q^S%-CPXF#Am-VCF;da^u'=a(u"msO/*3tT7Dq?;-!i*)n^idjSBP/CJOEDOi].Wmn(nL=&Y%)oH47akUXQ.sfFigPskc?.N*V0ZmR7B8J*QR$>90NMKB0Ch3Qs\4c4N\i53;.N$ngQ7RlNpg/XSF_SDg;kYR7#PFm-VCF;da^u'=^g;o;hm4Jh#"glT"T]?1KEu3pR)WB0*dks"jQ?lGhN/b<9K.<OP-HBDKT]]j9G-cDA*ma?#?p?'fpGN6Z_Nf-s/'mha.fCA'c/<3X\O]nM@mZQ-92@rKsFT)tdoT"oK/`PBWU]8jIr@rN#kQ:'5Cm-VCF;da^u'=c?Y2edp%Vqnt)=8U1s:@*UEKM*bu*3tT7Dq?;-!i*)n^ieY_))(jaFEPq'e!9b@F9#(0\oPkQNkJ_bHjYhXH32]4aetW#Epd\Wk!8a,5,k\)ZArF5f-R$jUU-Q-FdBcI>F@O%s&bmh2qq^-Z^Q]:HcG5SmKTRf?o_a<a53sl4p=Dg4b;pd?dR(\as$(1p3'a4.53gK$!bOKJp-9R%U$iW\*K2QJ^IUri&^!:Znmb`a?#?p?'fpGN6Z_Nf.k%5SU$GeeoC'D]&ZdtFOh,8NqikGbbH/`Nam"Z-(b76Z_"sTbV*XB*p&K+*.,:Mq%O[:o`VF-IR-'e.#4naf\:O[c)8DX3XnX"1l(Ca?dR(\as$(1p3'_-IkH_*\)gO24nB\s@t$^*o-fBqj4N+/e`>2#RpGIOq4H2U9u!(_\[ajedHp@.(C9ZNr.XI(?dR(\as$(1p3'_!3H8uU>OE/pGI^p,B("Ir?cD<h^kg3D\;p@gmED=FZArF5f2\"JlQ]a7Y65rgV_s5OaJX#BJc;(YE#nNXg6kGkA0&_IY3V=">16ZSnNZ-]5_B9%jjU3OIKKI(Ol8@`(UPuZEl^;%]j97HHl>MfA,.r@p7fl/K5L\,0p1EUjqkB\O)i<&NkJ`MiQk;d]5?t=3\!,FlIVk\i]bP`OHkY2f.k%5SU$GeeoC'D\fT1qZVP)/)j_!dGE0-c]BAp8+Wh@8Y%)oH47akUXQ.sfFfiZmfsg5k?KpeN]R0P/dLMA"FTARSIR-'e.#4naf\:O3eK=T$3/_nZY%)oH47akUXQ.sfFcDP[8+?V1HX6ST$_DR%NPJ2S!]ad3a53ubWW)O5+3p&B]"!OlTa0k%/<Al@n&EVYh\i8a>DbY#XQ.sfFigQEb'I@K6iG@6FZ>]aoBC'a9gl,:%2)V>3Fj/NhQBL84]g5#iZ@B?*iQu]aJ[BLoq+V&EU<)(jO80]]e8`HIcu>D*)$>-'JN7%a?#?p?'fqbY,p6o4k(!*:krPC:SE988IenDZ+'%^:X>=!]"!OlTa0k%/Fk7^cSW`elT"T]?1R6jZ<e@A:d=S;*KHuf^V:T[A#<e!FW>b?0)>-E=g*a1W#p>Y%`d#Ds8R3;7o][jAjd,3a0E,>P#'Dhot%YgqOn/ZE%FfH;kT_-Pf"6rf\YcWB7gHgb4PP&6QTq%JA%L<ldS_$pM-JqP<PrfHCtbg,+h4%bbH0Sbbsi&2?%e>T>)E4_e+CM4n$^pkFVE_U\'a6WLlho]p7BOZ,iii5P$:YZbk<Na"9OS>lLW7Z]2";ltU]iaIg3Lk3A5_7+@[].d_(co^cC+P^_&YXS&p2Edkb<YF3#r$!Q1jhCDD##&h-1d9SnAl2fV,7ldr;j0FA:U>4Q(5RXEtVTlHgVjF"LC8:Eb5%UjgdPA=Vc!9(;p2ta^IC"Fo%`bHu?ML2S;s9j!Pf'?nFEQVdq/f]ADD#>moN\0`P<NQ[T:/b4=Gl-eNig=AQKsl^m=c'C5)'!(7lahF:HoN!NO)"Grn)_OltV0hO6G]S9@%sm;>NkVZIVgUb&+;LS,410NGFjG5ALd`2gF:-%o#6Arg?8:>aeH@GZ]7LAnWd((,o6.j>ukr\OPg2IEG_XS',2RA'I3X<o]Y1H?4F6DnFlRaf!KMo-fCgjO;?h/g[-]CQs:rVl]PIq\2plmG-I!GBEC)oZoYBiKS?;ougXISP*0fRp'ZPog4s]::JQXXF>T#qNdIlCrGpOXoBHjZ`Ngu>%@RHQK%#b_*7Omn`C=HbB8+a]]>bl4^RCSg6kGkA0&_IY3W(doQD>%P4cDr8(ROYH<jYkYHc0Hcp.+MLTKOggNCW9kK8*Vg`pV5AA,.IN7V1m;s9j!PXF#Am-VCFdrT*60(,E^k^bc7MgPm11QQRt3f^mZQ[F+^XOkESe.4]=LLZHBTmu3%%U$iW\*K2Qc^"17\;0pS#O67ZngX4W4NcX!g]Z5SUoO=^o^1fg:D__N:Z"&kV1,r"V/%"J0\/6H23.\smgkr5PN\A/Q.tMFY!/9->L2SiHD@[0lt*8>OAF!Zhl"gc<[[Jh\'aMHI584>T%+AE7UIb#b?3pMT9@<GT0rYVT@M']b&-c3=.`1RX_7;o^!TnSp+k2ZaJWS.8bC4(b&-c3=.`1.Vd*m,eWRV)FUmskR<TAC1;@iK^!>.U;t;Bh)1Ao'04UQj$hNWTmrOt9%/+U%=%d?!rl`;oQe$VXB6WV7O57MkGS9s92F,H2nT3gABPd(geC\o$(71V.oK#5&k+o*2eL+=6O6"d^`RAZ1h;#'Y=%i6BeiCApT<>&nT2QQMdOC3IW;\)jFjGuKX';/`^CCZQWKut?)@'TFN_PM6A)h]kcV?<=SY)0#2SVHM'_bSnD<4sMRG1J\F$>">nT<m/NfCbVZBqiAiDo\1p_i5WIif'<M6aM+GN3Lpc)9!)K@<!DZYr$m<Y+)(F*7kdNH)-34G)=5')cQpq<;s8bSgn5%]2_WV/99+l4r,27n0]Rp6FS_'t^r4lLtU2^=pZ="['-#Sf:K%P2_mX[rb1*o'<nk3\'pbY1=NYXY*(UXE/W$*7%f6p+B:?/bMb\Y]4fpjiY>`QI=C$fh;(GV=T%<#bG_=nKdt=p\mB42-0`_J!RuNA+S,`Wqt@rfUUZ\7^)FWp#.23HV.#P<EF[]i7*b[eoTlN?W'#ViTF675AT<-kc6"V)=&96)TNL5D7c+5d[&Rq3dE4*T=o>292DUWcL:$`9kSA%8b?fe&A2am1cDkn3(FJ&QdP-3I>Q$NZ!T_2g2"".1R4<XBQ$$mT)BtSF5jbfd+Z"`LS7dBp+k2Z4>i/^52GLjWR@*TVc(1uQ]BmL;Uk=a55XK3bcHNO`n;NI*[N]<j>NSt^\//RK2Z:Rn+\H1*q#I8N=AYW&,fZ!MjLs*!k4U8i,]hQqWeGZD^8Ns[pQ;j4h27HM3t;.%YIeBcm,B=%OMX(Air=a`8GDfmcqA"CM9j*:"@XaZ[ArSqu7rM`nnCYE$15Nk@\CWH9Pq&$6u=FIC@k=P;]mjPQXYjH1Hp"5QH[c$KW0!/]^[qr-I=m*O]S2),!NRXJ?WjL+/94$J+d[#7q]=7a):<#fC)\:]8DE".mna+u>X8Vb@26Mq>h=F\:.`ON)VoJ8^Vd'*T<Vh#_=oLEkAZg=<e=XFgDtWMIoR(RmGOd$UF^PneB#jj'Csu_XHGQbp[/St!G1Cm8FI9J?g#-Kn(SCBS=o*I.MQO)F__l`+FJU#3m9R3Uc`VMi?^t4MQ'\h$@uJ%N`TW8'%Sr)E\PK\?/(Nteo^fgT0_j5cf[Yu)6fJ>OE5qZ@V=rpiQH^JbQ<h28R4$CcA"ta)m+=FIAS[b_ME;gE<d>cf>Mc`fcJ,87VosJ!H=MHEYLq:J=k6eO:"E9LkuQ=+p(Y.(q5jG7>!0E3@(*tXC0A6]\<Fa_QbGY"DfmcqA"CM9j*8_PF+[?daY-Ga?h`(;kd+dSrpQlYp?D)"R87T:I-SF/EaE4%fBl)J;=P(;>J]&2lQ#!7P3!31l(9?NYH(;Ta6XZ;''.LDGAQ'n:9X8:Wd'9\Xl+&TFUmskR<TAC1;@jn:W]F(I*0gK'tfO2c9XW?'2P?0k#ZFZkL4,iB=7I*/YjW^.G+)jn2A9I#PjTX4GeNT?b$>_rqj<`e$$O?M^nKEF]\J*P:?<llZaq))e5FkHqG`W7)-sLgfEb=Zg^riD,R!"aerCa>J]&2lQ"ta1@ZXdAU``!X7KmXm6%5F:T!2OY2cYBD2`TI&*?g#`]p*IY>.k(!B9ddfA9;ijBjON,E-HZ])?_P)321X(GXK$4>i-@5QBdGSj^?;YM9W&V*/+Os,["eC@Aa9I]2G3i,+Eq%e;':GS9s1^N)E+:]'\S/YjWk<ePkC-2(@UUGLI]4>i.j03mJr^GPbQq3B^Dc4>022ZHEu1:;>^<^5+*<qe3X>JF9K\/\R:!L!l[5dEqFc5l-(f2uDZt&hXE0J!a^k2mgA>L]pm_2a%[?ZD^N(jTH2l"YQhk5b534irl.['@*9:$Rq(2N[)nYD5qgm6cARF,ARQeXj`;Ic[oZ#F21B"%5R?C@VNdU[]`]Akpq=NFq[+X?gZe<?.9pN0BA,<W:Zh"W3lIP.ehg7Idl46XI?/5e7FBf$dGD#`Fm;QOV.J6=')ctA-o[g?*\amA%NN_bHIoO\bC%nXuDTSeX/4Am-?1e,(KfhUaI2c[e6aD(XCt[Rmne(B4C4GSMlF#^%n$h$>jPCnPJ"pdt1TSp\\5*'l7d5u16Y9\)T'2o>%nJT3:<BEMQ=F43mI88hXcUS^^07h/Z-K&,Hoh4gi9JM'ndQl>$0l>^pt5B.Hi#KYDfDH$<O?AulI?(:0D-LMF7&RrHl=s:]ckR''NB*8Q'OM5m^[Yli/_kZQ28pAn2ILU.q^ukRt$COBrV#.,OKOq^?U)G]sjU!LUFMNBBtl'/Ze@UD_EuX3L["&\(\+?FTj'J41o[o3UEk#7VAfDG\S5Y#Jo^!RZ/o>Y+C&C4/K-5UMA:@kr/FffS<=OjO=,L42!#JYN$Fjmh^?6>"u>m_\[,dl<g=$E<WC\>Z[cj0)n)hXjl:oG7QfI%dXk00CK&;f(4H$rM^Xnc.7&D;/&[O8^.%AH0eZajRTrN)h#,)04UQjK<O:`eRQ%T/@VgcQBc@uoc*5OXRGO*0?c<"e!eanoO/"Iq=K0W:@H<klWl0rV<nLo$S+_DWG`^RNN6ZIGHL/RIlB8fF&_8n3ED$L3]XdbomC.L904\O;SR:#7@Pk63sXr^D1tY^A#$5nlt*8>Gjn^\\pDR9PNDMkf3b@A8dfZYlt-WjIFr]9?##r^NK9m_IG4]"h?,j3lWApDgR6l`T5kh!]Y`4C[E>tUb&Q3QkKTheqAWL1WRS-:X8d'RYi_lq?(EqkG'.hIHg>t/Y\lYsB=jEIfm?0(QI;d;J%Bu-a9*78U!Zq7p+k2Z4>i/^/ulru4SGBFfP5oq)hjXP:!4p3mh9m<`UpdKZCJLA2Z.-3lCc$\,I?.q':*)iKAmp26]RG";NHh:`jN?\rbN>%hSoL[K=alXe&\[Q4Ram@fA:g;0W_V0Q2XlA\<U,p^SRfk292<#6Dg`ed8s!71=eHJp_#br4f2Si5&O,@7G1q!9./HDLL"QMjhs[;oPu]iI1grD*i\rs`NR<>Db@>CWL7Phn)V=L9'qu=a^+2,^N"+nQ9SRWG$si)Y\3okiboj)$O<87j4[_`#O5iC]$_[9#.O/\lF3!]%b@dU=3+ofk3/ilHPu,hSf5Z"ol0^<%lUR3ZFOYp%LgW(5@9"+lok72SstM"qH8(K8uEWaBCYl4JO_3i*h1^WrF.c'VI+0-:hk:KO7@Ci?LK]F)cu-9=o+l"EHTI1$u4'c;u+VmcC,-1]aYGkdGB2P)40U>_([J8=]W^d;-H+[97t&o/e>U:L!3Lt^\1\EUGLI]4>i-VX"fr5H(ViIU3_mMs4'.J>hup2k\j]hO2sb<lhQ\c\$qsbb]Dm[T;/TUlt*8>OAB5[oE3`&FsYVU.CFs$IC9Zs97?FkY+>m[MSAb2]fhHQn!ABTS/Qg`A1qG`6\kIO%Qg1Vo6GX1\BnmX2_OdFeD>LP5L^X#[:Cq#S\nCdkkW(155TiEpZmruE"V[l\'a*Ce0e2c.G#Gc[:Cq#SV);^-IX?i4-Sn^o..;thmh/`;t;Bh)1Ao'04UQ*HqGa/-dg\3kqDWY\'a*Ce0e2c.G#Gc[:Cq#SO8!VHGuXog#c3D`+bU=g%g@TorRd2H;?<p[93gRQ&:DP2>S9D70@X>h-Sp2rhs5NcC])^Gqbk:J!fYO6^R4"qJ+,Y`]=A#[++6>fgh@rA+*02(-dZ4OA(.pQquK&m@kBQ4:t&4j16k8:0XlH/[%a7_,7-!HpE:?O>!5PJ*=r:X!N*1lPt5lVk:j+&&!#DZDj:&j#t._Wbcs,$.F;\Y@Y-?@,pO[J%(ZNa-WET-df-Bg8g`cEP3B.+YH(pTuQ;=?7Nq_QHB9#ID+F6k)a0OnTU<]XEJW0ltRCCIuJ_Y\hbSb>L0/BfdrWS`h5XJf8W[Re@/[$f$.u5D*QYiPitnFB#3U'Df9bQ3b+_u;rbAmY,?c>I8S^#Zi@04Qg8_krhZgY^244[pF!Ur-h^sk$(aP_FM;?>m%%M";=uNjCp2XibnFOX3\QKKY44!Dd`[+FmF3fUnPM.SVY[8(1f`#kE;%k(jkPnUf'L/P_:ch6qd6^@=Z1cL?S0sS=Qf2'3!O0SlI*0;HjLS4_p=\E]UOo1lqjJL&6Uo6i(B1NoLX.NLJ-Z3WoqN+ke4;R39ia4RL!8Qf(iCl3,Y$V.0V:&*AkJ\cKojBe3=s3mHWbgp=?SELO,92d8s!71=eHJ23*sJQd<V8cI726gG`3iRQ]t`<I^<?C*"$kT.fl?GS5EpD7X;$qrZ2)q^hcWX0khMZeH*lm*Aj\QbKl?iGm&+>O%U^5NBLueJ-ZA->/V>;],8j^OsPl9-lbO..[5f<3iQg,MHAJ208f<qnq<X';'&]T5g4Bd8s!71=eHJ23+RcOu<+YBQ/+?@nZQQY7PW$^=57C8b?.r_`s'(paJVSGitLtj479*r,.qZPNCDmb),j$NiJM@V&a_6&Uq`Lj4^T\T8N0-Xj!i$e2P*WR`(!51pX1O%QqVJZF?F=5OA(*ATRLoP.cfs%Sr)ECoqJu*#pq]HH+4m9<eGhc^3;ocfF^Gd:XsiQF<-'5'Gl@;q)Llr4]G:hFdZ`[W$bRn2(%_f4KI1<"/Ecc%#DJc/Pqa1N'sJ#-E&qe)"`sE;%khpP6H=]PNVB>-aL"cJbaB>^ak!Y'ZeUbr/<-T=#FVqm0CUj#2Pg='OEAC39hgh,q6?S(A_RTldjK:4En)G378QeX^?b<LtMnphb*Ka4Y<4Xk73-mAdYGQ:oI,qlcTlFI&AUV4S$kfD3[CE@H=L>/7I-=6jr$a4]Ek42E`[3Z2;JC-O5XfA*D=mB,R5[?oI"c.+7F3_IHl'ZRhl%P*H_o.6a32\2mup7MqmdrfGEFYPpeS\nCdq"V1<X9J<>=YKgI-dcR>5)idFC%/pXe_Qf<MD5NcUIKan)WeD7eB^uEs#,5ig&&[n`k))q=%i6BeiCAmT>j*H9^`FWIp5+=afVT_jjV6rQjBJ%EK,#%YNY-tf7'V@nnE\uUW'a05Pf-:?H,$]*qCbMjbbG5pRs_*ZFYIq0aOnR^WgqkSZ%d,s"*a3ls!6r"W&*UND"[TeWN]O2Yq11?H,#2q34S@GnTebqO(^$NW-qo5+.R0\^'E>-$pNq*9:$RO\^Ip?b)0q`hbkeP#&X6kc6"V)=&:';_mkgqIP-;2L:pp:T!2OXu#oha^2tJ#PjTX4GeN8:AXiT2NOF.LU8Ee>LPq;H1S-rUXseOLtl6OV.SUiJ`i1l\^'E>-$pNq*9:$RnKdsR:HgqsneL]U<D1KuFadse]n-SRQ[Hqu7UIb#b?3pMT9>$YdB@+F?2^j;F5uoMbC+t>W+e0BH.Mf9NO)*OQTX)R[XEGr.-o=FFhV"6bE8g.T6!M0"l<X*4b$k3Im1cQQL&1aF*MF>+'u"hb`c_3:HscHpRfDtrp%MLrd7o,Ch`&NX'I2tDgK"VW=Sa^6(^R@FE=7DqeXjQ%AWso$9ZqsH@G$_iYZS;De#kiG\S3]?at\8dBDJf[m$G(4!2bGRsh4L8!s/%NL144OABN@]DBSA@T.h@OAEEI[t;(DeiCgLAE$2QCS6&9[5GVEl!BVbjO<Q6bPJbpo\Wf&kE8WOcKM;THPu,hjARi(,l2Y055fq9g+t^aZ4G!g1EDE\k9oE@eXNnUZ[CIAq3:3(^07h/Z-GX!,nj(K?aD]JqR>J/"#o,6G;\,T5+PttcUP,0Q@-8H5<"Z&4"Kf*ngW0.IC3T=A"A7"8g^,t^K,F;o'LXB@h9;c4"h78A[AEh"D8,Qfh==j/6]aDDN.ucRroQIg<WguS3-Qsn-47*q42_d@n'fWfumL\nC0FD^2O6OU0e_]YOp:ePRAJEcMP9#4nPb0528ptjZ90?QL&1aF-'2>`09E:(%WsAS;fbKmF19AhTr=l@J"p1_mAE&Xu#oha^2tJ#PjTX4GeNT?b)/&kN\6[q3:3(^07h/Z-GX!,nj(K?fkF-UY!'QA4f&I3hrmElt*8>OAF!:PN\A/Q.tMFY!/8::V"d7X!N*1lQ"ta1@ZXdAU``!HC_*4VW:[Y1\tk.?H,#2q34Q8M1.TO^M`AQl$p1dXp1N0c_K+foY(M'E;$F/DVmPlmAG;YP4h7,jZ90?QL&1aF-'2>`09E:,P17#PLcA2EmN:l3aAaUYOc8AdFCM'V^IX'\^'E>-$pNq*9:$RnKdt=I'K;l+;fL>giN/@g%OML.pIi,\_>/Mj(@2#G*`$,?IsBoC&@JjdLAEQoK'0,^ZE]KmWPS#;GEHP]"HS0p=3Y'2fA>_F@]Z\,MHAJaY'2YNP8T%Qa+ipWH%QXi<l/E^Ok(qg"14]>5`@'21*rpjUT>^K_dm!%PNO/;M3#mBJk+;G,`LFF^@'tV4ib7G%nVSla(U;g1S6Q6Q5,\TB&qR1\tk.?H,#2q34Q8M1/a$:KR9NlZIWZ;Gu.`]J?k60sgGH]/m01oK$p:VnpAoa!_dV`j6Y`PJb*$S:&J%7UIb#b?3pMT9>$YdBDY%87/^X(&Y=Ylp^aBHb,Ys?CEcYe*"sheV&PJluVNV8$DO,!k9VMQ=e2"&00n<WPbcbLs,S_9^0p\HHpX">]',`P.cfs%Sr(Zk6kA\,l1N/N./4lGZTs>/t^-(Ng8VGhMlN-kN:72bM_T,?<I:&jO5=UE7sEPX6n*.62a&bo[T,<N-,X$.@GDnrOP%^2Fc(ho'&sFn`>W'FEs21]JW0^o@rj#oKKGg7nZ$/CDP!hngW0.IC3T=A"A7"8g^,t^K/f[l*Yp75/4[?G3j7qT.hJmB.WGYg2_RH_=h9]=n\QO\k:_Df,j9tbij1U?N?Q_\QNr1_\(C)>``rtj,KOVq#%79i<ekQk=jLQeOEmtfumL\nC0FD^2O6OU0j8409c-\F)TdrFads0.G+R@Vd*m,eWRV)FUmskR<TACP#$E9Ik]L,o$DM3T/%^bEh1TZ9D1-l3QS+/i^rdcr5rmK3`hqIaerBVo[T,<N-,X$.@GDnrA)-.)njPI-W:9@.I?TNB@tat]o7(D:Q=DTq[")6%0#+4(@s&cdHb%c1:=T_^S0[P8,6fnci<FYo0)?sTAOTKmV9jM`]Ak[o-mq^:J/>#-hia!8S%I>m`P8ipiK$a)2^Y6VoJ6G,p**>>52U:chGh4h'jD[bZTFAldF)Xqap%%H2l3-o_80S4uZ./GCo:s>mIh)lI@W<+03rYHpo-'0R>m+AQi&/pB;V2noK%:TD%\cnNW^W#`hr-5<a@"Abd5DI6OUU\9*cHp@kNI(RL`&Z<(,"W.1SoF$Dbl6079;*)!0t$.n"0Y3s'f=rN`<Iekhhn$.BA:1<$QqY<4G9t)eU=PC(YqXaGW)M:13RgmY#4(QoMc,S9T0(7##qss5S2nJ[E:J\9$-D'W;geHJb?lVg'0?^77C7,M)K$#_GcI!p5FID]#[g*j2GGmb(=:7FENNG\"l.;c\eR.#AjO7$Y_l6k_$RtrmN8pqgf7o2YF@EM@GckU5g^>UDABh#:H]m<<UK5\U9U;aNkta<mQ?mmH+!)f%SmjRL\uWK'Ra8f0Y$-7f?ZE81\c3^caUIoqatBI(cW@!JWRB).%YsXicto][jWV7c`(]uk5Ui57X1XF\cbVRnPof@3bGUp'N<=o^6"QD1hrja2Ygo<1A(n)5>2M[%eQq7bU$K5o5sBF$GngLTK5mE<TBrK5Xrd#GLKZmZ]qD[SkjS+/bWIDJXu<\(1YrbOYh@Q4:<]WbNf@N?H@B*=:>K#Y7D\.p*,">2ca<n1HU250dGO,Ram5FrQ>ncQK!WF2]('EGk_kp9p1gq7]?[^nF3XF'NX]FhH@DB>3.._$*/roWc"$_-48/IJO.U3KGE66gHU250dGO-;kG<pF]qa2#%m7ehQ^Z7:3)7Sn-U--E)':]j$S&cIr][ML:H)RgTC0m?UXsPtKN%ZBluOk@?ZAuUB[-#)ra0Z54^?U.NVJN+^!Ya#eL+:jf5i>#;u#DO1CN4[]DDO!E<#Zee),(<pR*&-CghHZgrSbEp$KMap]'#<J"Kf79T<B)SIeQT:ET&UZnm`I2rrFP4+H\0RNcBOfBf_WT@K7fF1n"9s4g(nT3%XYNF's0OAA1(k?o9>YKa!8cD<bnb,<8uO\]b;s3GQSpNcGReEHS\&)e3:Ih'IQp6'h"B@"n0QdKi!i%-\(4&e,DHJkrt^PDR`gdZdcJ$;,7CIQLn2fso(lhM6AT3nGn4UQHp`Lhd&N4h$>DXJD?EOg(1LL#n@k0piX0BBf-\'a*r5DB,ik7.0fE[,cH]q3s^&%H$I+J57X2].JLcbVT\]#ppP5Bl2;1q[kl2Z!=K[m$]3AM/maqQ8j,T(0joPu2YSaRjT'rFalOLRW987^(uE2,D,Y!tVa=q5F<5N+8r]HlDpqoYf&)[(i%@BA%J(^l<Qjgh6?RXK0NS?d@DHDPOtmJ(?eJh$f@@STe*2l<._3>Wpp6e;*q:bin`T83V_@WW*rsA#u;MH>NVpe3a`&Q?+#DID1s4Q=#+WT3'$&<SkEX%W%_35!@*Qp"W)%KbLHc*/nC/[li;IJ*<**jkN=TT0FWo:*$s%E<eDrO\a:YH9F3M:Z4_,56p3clR`Y@efXbLD)o)QhrcpC@Hj,-K3ngHE"A:0aet1:]q-1bVf3jQT7_-Bop,i0lOSF7[[c+9n+40^l"2h9Hk2Q<*Qt@95JuU7kk3a!HgSF_Jp[nul9>O6)!`aap=:>^jD?oddGO+[0lZs/Dd6R[_"dYN9,gMu`B>Y]fPa]#>`7"qq%UTO1u#>4oloT&AQ.4R'0<&jF"iWZhXY&mrLm$DQ?+#DI6Og[huh5ANRH-:NF'rEE@6#foq-kVN:iA>j.D[ph]I1,D)o)QhrfXgN'CM59)J]BogZ.JhRJc^RJP7G36(g:Vt]DW59/^;3OdDnkLCqYUXsR*ge$?rrT@Q.A+D&nqN0T!T4)Bu7m:MD,G1RMS`J&FIh'IQG4kgumJck2+--.dR/ahlp$g;rqr]3eIHo;u?e7NWQhGNp*@.74-(gdPS`J&FIh'IQ-D*&f$U;%o-VkQ45p,oeM3!%1.X.%7;u\ipa4Sr:VmlQ\>CX`QOh+/Hj0FhDR?C@lj\GAYl9>O6(m@ahh>MJ]j)`5AjAVr:drW'`]UAWB_)THq;eYoM5#p6@3W9E2Uc%Z!pXL4,OuH>>3>ffheb>uNqqkV-aPl9m>(-@_ZNJ-05!NUF5!>5oad]:0*/nB$5)"/CjAWJB&,DG=q=Iq[,]BRZF"iV/q%VQ==]`FX&DktC@e(sH+92<(WSC)%9`=-^*+SOg[-K!0DK\C+]n_!XP^Id0GEOm`s#Cq:R!a4iS_buY#MiDhEB&rinbZU7HNX)..J`U@mNc_Jrc9cR1&:H\,J@A$&*bF4<jlsi-]q2mP#'Ec:@`#^56p3cP>?O=MAtpYaF!C6hH:9XC&d6mVW?3I\Wa[oqTlu;`oPSiRc8)>_:fm:",X4Yfb:cHdm*-k(@inQo'*^?8`!/>k?o9>nnAV/EN.V^eO7oUh0-2O0);kqngRN.l+,S@hG!n2?lW\IBb*pXWAine?,p:'Z-aT%RB-5.VbG41kAhqq1\IAmEK4Z(-Sp?'it;qsW%4l,kX<8OA-k8<b=;tB1`ge$?rrT@Q.A+F=E9l[0)q=MHGWd!TEOiXG:P#'Ec:@`#^56p3cP>@5si]Vc6.J)er8KHZ;l?qYkXs9R1bFR_=e:.tJ0d`O`#((iBo5OSN&l)4JT5ktJoN^f0Dl3MT0TIm`Pa>LL\`k1T$fe4t;U9!<:UuL5H7jE)2cK`:(rr"k$LQp'dE/:k7m9)&43<tkru?u-9Kn/RnnA0GIL07CAWqLf/pEI;;u\ipa-_5]mGu_9G5W%unFra#VbG41kAhqq1\IAmEKcqZc98j6fY5!>5oad]:0*/nB$5)"1N.9#dd;tB1`ge$?rrT@Q.A+D(UP>@U0:RRAAcfIpmB'MSciu!tUTq-SRP^LW<I!RDhOuH>>3>ff(Hj]6^bbt*tkt"3454[s;ge$?rrT@Q.@oqQ[hX5l3rS_aoP_?VW8j6fY5!>5oad]:0*/nB$537Jn0*?@9e;^*L15^QF<f*$MPJ!=[cbVT\Y.d-6h>c@._p\:-DRsD%qrZ2)q^hcWX0p2Ai#>8eq<.d4qrdS>LVNl_rqXk#puaT+=s_JR:@`#^56p3cP>CGc1)p3q`5>K[N-DEb0Q&I5U[!`9ces9D.AqO(0U$H'Gr,,cK5liUI=HRTs1S)\REnoS/8['-I-eY^VbgIUn<s3@Z`9HXWD)/BrT@Q.A+D'Sfpbd(T1uDAa'bMA)o$6mILF.AT@,rhad]:0*/nB$5,Bcb5<iFjTr,Y9q6["H0UC&EY8pZrF@]R*B'MSciu!tUkt3BMf)I5'Hj[nFo;RO<LX[SfVZ(WjN\U?ohTUEbpWq`HM=*-JmeZn=j_i9!g'rM/[q7Q9d:tY+:[*t0jNZ2(%`U4MT@1LR8$2e46D,#f78u=D+F,d9T7_-Baf"d7s&&*sLCfPC)2Nn*c.%4Q`\Ag469B>/\DhHWU=("2aIB1/*/nB$5)"1Fl@@uG'[.f_;oYOMGr,,cK5ljlVpOjKF`kk"p@&kl]ku\n5'oEJ=njYHaIB1/*/nB$5)"0JlKU2$gQK<Ui]k_K>rK!)ZZP-2rL,>Bqog[0Z]WLEhr%KNbAbrYDl3MT0TIm`'\[,uX-s`*ZbnQmeML1W>.dYkl%2jK`!\5dJZ)B$9`=-^*+SOg[*)EMbKh/p?ge?+_*6&g.p%c=DXXh_*PRW%Gir'_$MDN1WW*rs@n](?G+%WqoK0=Y+%hj5hA^K.B.WFqX@o$QeXZIFhKdY16@JE:l9>O6(m@ah?)G1?U?1[[F7\WFXYl]Q[)77'o;W[^qW,oNIh'IQ-D*W:9QbJ;T*?B!b,8`pk>a;FouW]&ru?u-9Kn/RRHgg7QYHINP25RKg[j[rFL,R0pPJdXGp,K#IYi8T25=!?]UAWB_)THq;eW)3a@&2?1\JkZWW*rs@n](?G3XrYe2'6dT=gTgcbVT\jAT`iY/j!odkg[=S#QE-N+5OFKm)a=9[kj];kL^jqTlu;`oL'3Vln*/4ju4[ad]:0*/nB$5)"1FMG2MU4]@ucRJP7G36(#XBWS6p9!TouW]&ru?u-9Kn/RlAA9b1He[/]UAWB_)THq;eW)3a@&2?1\JkZWW*rs@n](?G3XrYe2'6dT=gTgcbVT\jAT`iY/j!odkg[=S#QE-N+5OFKm)a=9[kj];kL^jqTlu;`oL'3Vln*/4ju4[ad]:0*/nB$5)"1FMG2MU4]@ucRJP7G36(#XBWS6p9!TouW]&ru?u-9Kn/RlAA9b1He[/]UAWB_)THq;eW)3a@&2?1\JkZWW*rs@n](?G3XrYe2'6dT=gTgcbVT\jATad!T5S+0DY)Soq-kVN*Uj]HFs3jo`q-Kek(BU=eBahN\U>DJ19e05bG.(3>ff(Hj[ZRFV:?Cf&n$3@n]&i@*1M:cmS.#%`U4MT)p]XSHS/?of39;(m@_rR'KHgoZ?s"K5ljlVZ9Cn-NX'SIEoYg`oL%uVQ>s]IBl'"?lW\I.0*;t8Us!-T5u]H1&2N6.I/6ET<-@!(rr"k$G_mK&ti%Ok8]Fj9KiVfauTjU-gPg``\Ag4!\e2V"R)'B3="R]P>;4HZ;(JnanhN[EK!)-NC!W$>TcG;K[jAUS=5-WqnAIApj)No_mN*Uj]HFs3jo`l>cJ(Bf*W$@o9mAqHk(rr"k$?1rO9"f_\ks(b*5RV?u%`U4MT)ouWT2P-ml1CVJo*b\(=@7*_N\U>Di#)9SHL`N3c5MjuEK!6<0Ye<<[ZG1M`pN+5OF"ZYY9I/<egF_2SFrEIRtfNPq;Hi(.E#5Sp_Hj[6eL?)_^A+D(a0fOc\kp]53T6lIRO*b*3q/2;+CJMRDHd@FLq%RLT%EZFG`oL'KA$4*=6(7]L@e6AFdLP/oZQ1sqBha5rcDt6AS\<OXBn&&0_t*-DI1?DL_rOahSM_Ytiu!tU!KMF`T>klPAn,PajhL--ZKpkBV[0FafNu+.frL%PVa*=Z8.NWo-D(>Zo5$TBmJ1-Rh0&FW#^OhN0.!4lmAqHk(rr"k$?/]=q/gAXc(DCSg6,7lZTk$WQef9<Hj[6eL?)_^A+D(a1&^:a?#?_cHckNLX5@3_3Sf7mDdLUMjAV_B2'`Fe(m@_rNk$=n"F4j&E\)&i0qXaq.]qsiiI&5iJ,'dL_]"\jEK!6<mgH_JX?62d[kd^Ni/Y&7Jc&uX@>N27%MBDX@V=hUcYN\)2$or?O"CA0>,T*"D]+ZUC[R!]6[bl+0Me`a>@aJV9bCIerT0d`Lo*7J+)]^;IZ%ZjJ;G1M`pN+5OF"ZSsgUn2r@['PMJ?lW\I.DR\/.J;b#TUdqc#NHYb:B?K<:T5_6!q!'43>ff(HjXhOHqHQt'PM+gah]sVjAUS=jAY?cVa*=Z8.NWo-D(>Zo7;>hq03)E%BL^5(rt:ZpSYLthckS\EIE4`8i?DYBP.dr_)THq;h/B=;sMK&5W`aP%`U4MT)ouWT2P.<^HVmj=[R3`N\U>Di#)9SHL`N3c5MjuEK!6<0Ye<<[ZG1M`pN+5OF"ZSt8V4N&A['PMJ?lW\I.DRZdk0mhRqAseI74h_jlD@;U0/#1E?dSoM'PM"dah]sVjAUS=L<-:A5Frq@2KrKi_+/Csl:Gp^M0oZ;Z\IOK*+SOg^bO$r2iV=R:[:WF,VD=2gMCVIbO!mCDQE`(I^c1US,8GQV:89%[El!qp"Gc"#9+3/NRbp>h,s&sHjV^9L?)_^@oqQ[hX5l3r;jpGN*<95BGPc'_.Ro";H#mAS'<S#hKAPgNQW>c2-B^$o@d]D\$;ep/U`^VJTfV+*/nB$4p<oX1FI)&Ra'Yh'2W9<XP^SNln/#iB`E%(V5=;O5=;A0SU:c,`>XnlEK!6<"YB54m0m,PY0DQA>1q-dX0n]EP.76Z^7AMoWhm_:mElF#6EM4*o`cmNU"%`U4MT)p!2'6%!i;%Q/TNt%+QqPd#5ET<$M/]aj1de'e<]%SJ+'Guif,R<?HP>;4>kq/OIk6eqp2'.OYRZBO_ZXh4V]0=,t:P!]?O;s3h9KiV>-;J3[cS:u#.>6Z?"9*<%Al^"N,;Unn92XsM_MZfU*rV=lhYWOs1H5*SgO8j3F4=[R3`N\U>Di0a@W6<<Y+E$oEl%`U4MT)ouWT>"8%!H)k@HjV\KAI\H#S#blHde<G#XZsV254U/Q54U/LCm6efP^Yg8rJAXo!6<0Ye<<[ZG,),^U\+.,mS?M?"ZSt8V4N&AZl<Qc)5Ws$EIVHg.DR\/.J;b#T\V#3a=."7MYe'N:B?L?.\A=TF0']ng0*7*rhs5N'CYGNK-d,km7(5G7d9)7gn0s]$?45LO_<tRn%1+Kn^;SqP%J[_krTu+_beLR5eBnEOAYlM'_`t%T)ougbAfarVn)9RO^:XFdmJ:9'l5>t0f[SIlcj$C%gfBt^<C/Xb=8?J9=M1ua1/UT4*(T$'PKGJ)DXoLTAojgjAUS=NodcR8m:&QeC8*jbC9bP"FKQO-b-tMEoOtIlk<Uj:XJImjAV`--u6mPrHsM"'9c2mNX8To@m2J%[FodR=2p#&SPN>5IOq)q?cR>4nd=q:cu,(*A<_O,`VkY8VZ=cUq/gA[g[)8Zfl!iFD:V8BW$%_8p1JNWTH3k#0_lDr2p*$o8jAs-rl!krJ7ISd=pc]C>HoS?G4VY<R4_%'p$LP):KP0A8Nm:j(hF-oV4UP'Iq%st^bKcQVot-=C\E_AQVRWkUT>W6o^aO":J<qU3%"Vne'GsKHb<QsLL!Eh-`W$"EBC!a8uZlW'rAf@(DYiIqX(+;YE#RP.F;ss2.Vr#5/mJWaeo-Zh!h"A!Z0[hiGQAW$FCa`%2l"7:N:knngV@/_aU@k>]H*"]^t\Ccu,(*A<_O,`VkY8VZ=brR$)]OHj[5"AITNRT20HV@e(t`1%HddjAV`--u6mPrHsM"'9c2mNfd,:-_CJ-7Ti)Jl/u"#T9t!5E/]0:4o#e*2p*$o8jAs-rl!krJ7J#kVtK6,gT/Yhr>e"6f1CbsJUi+TZl<Qc)5Ws$EIVHg.DR\:`2-CYErY7&T!=p"H7o"-BK+'P1.jd'ir6mW;h/@i8S[p>^u`S)/^'-irq1Ve^Us>fjg#!3*N"VD>^k%'E/N>V9[=Yb`FiYf)\8*-JTdfi+f"]$.IKu*4p<oXRJUT'De?ce#B&tE\Zp7Bb'[BBXr<cgV#DhRpYd1a.F;ss2.Vr#5/mJWaeo-ZCjoE076]Nid=I;MI4H>dOpt&-FRSJT;]rd%)UdBodT_3Ij8Qugb,<!-,`ReRfH5XWC4<^8q7EL]ENJ;$`R6--:Z^'UbHJCUL[ln`:@`*/q<lS>=7gp333g_2qn^:so?Q3<0'Wt_!L9;R`EW&ue&EfI/"cel@VJPE4@VL<ZJ+sa)t,e8Kq:1a4_jYtH+C1l95.nr<UdHodp)c%gL$7p9abV,o54.#>j%[R['ISrSX<2cSa;#W$Lb>?+\R/W"g%rHf<`+m3d&*3^<\+V\lc]D1TQqs%o6qh2Y*b."Y,"B;RtPSMA]8I>AJD_Pcl-YV_$<Ge9&lST@F$rNN8&?mLZ"no_%d9_'*fR=5,0@/2\1:0Y!iq%p,sr5p,n:hWONthU2n7LO@6!1Yr`a=NO__bBJG"J#C]U`oWegUFQ!kFWfPCk4%<EMr^oDi$f\$TIU/-[TadG;a,mOH6f+XJ+P\S3'3pX<.&'_CL&LKrJ@<5hRpCe/*0][<?6gee!3,5m*PCLlKQ$aOAFhh:4MNabbq9[Ydl(JgYSN+lXK\Xc`VZ,r(0FA;`=A'2>c39l>:L[dZn,^?TeBbkq`Rl-i"H_83VIEkoDbW3HEL#=\X%uf]T0/NI*m./N$b]ISJj(b?#4i;rgmBaf"Vp(Zj+1P>@+&/MB=Z.Xe6po-r4p>h8^SpNYK]r;I[t+J8W^r#0tE.9bf5#N.'%.J;b#Gc,UIPSn$AH+]cUgE).<eLf8;]@-Z7h/_/,U8rL81cp;]SCEL-Yg7(]O6`o4^prH(lH,sn>,rfXp$8'D:@$Jr*q/8CTe&,TpFI=b\UUR\X1LNDIl_fHrTW_KpXUEo>]Dq:^ABAWs&4Li:<^T(+#):4I+ERM:-Jj8NO":$hTn0=m`h5tbE5RR,+eoi[/0Y@_9SnEm?qPS%ZMiA4^89+JU@g3)eBJ(]Uuh,l0@_kY-tc$A9EZ*Zd\:n=-qd#pLgn5qMk5G%m^((0MB`YmruOo@i7a"J,aFSVd!b?beC^E@<Ko@kZSim=8TEgbA@(HnC?"XooW#fetmLno;^-g-o^>ZI]eu8]Q*W6GlOFMj#[g"G?9*=r'"KKh!:sXSS.D%eo:gB"V7/3s3gLSRQb=ja6E9o785=m^KBkj*0c%,6'pRpaJUcg'UEL.!E5cKSB(LeBKiQu.F%$on]o%7:OuU3/YC&;lQbAkGZY<H2-m6H$qp.?j-mY;ceaFY2u]5X5F;*!HpqCZUt"ttQI<dXN7.OBqmdS5=0&/3%nhU54/>i/bC*F[:OLU=rf>t%/"D&cRfe!)l1TG9"2M6<>a.Ef;=7B(DP+%Y\%4`t,5A`50l=?4n'fp?=8Bq8$u>Q[?+D[Rr(hV6h/&mos6>p.^cQtSf7RR=A$q(6q=K/3^Spqa5(4"amf;jY',RK@FZu@5.I@f8&0J2?=(PiE[^k(faoe(-aJTI4;]Q_@2_P+ID_EuR\Ks6):0,G_]IKO#G/^km/diJdCTefU!'I3hHlD1^;=`u<6<KCH):u,A])48J5X&I3o%c8eUi]R`i,,QWp\8rcs65$0Pttm+?2JXolJs:9dLG,#B<=fm!rZ84[ijRFmSIYDooJY:kr[YbcF`Z3cQnp)qhiLnN9aS0%GD-^fke3290CVq:;^A:2Ro]`(SOnIAYkYfA+D)<6E<>"?i<$'jQT2)J*Fra7X8d$V2Op/k&*?Ce,&gkcek&GI<lKOKi(n)>sFj)U$F?21\m)TqmjiIoE6":&+:I`p7_+m/5)bN28R^lI/7LC=*%#K1tZX_qN_/$2%m&M]:'^T/j/@tEei(S5.q68_C-pOd)4CCXuS0Lq%Va(mi0aqjfJja\hft]ri@b4WoX8g4EbXYnc$_4QsJNj:X;m=gAZHoX@r$.JKIltXfK_I6^(<F2p,><n?k3I`_FG<_rfS<9@3=si/`4hgH=*E_cr)*de;S9B?@%Oa2k1.)s+1.ppqiF#+oLV$@difcW]0VI;6=J@5FP,1`5Slq)R]Bc3Lt`[f"3=q]QdK",naZ:r:gS5)%C33ln4k_Io"'[1'RVZ*`9Vht:W]4F?=m><3jQC8LSeOMgh[mcO?H36Rl=UKp[Y_l&m`me.$)H-J>#Y+I1Kd7O-J7eE7XNKa*U4tZ0t?p:\Wqdr%JCbosA[1W5!_u>'S(uYFd$W,9toB;&SGuh8fqpfO9]"5S'OAB:QbKj+aJ#o0iQfcbcT.XH::P6"*jO;X$*j.[g.Y##XT5p;H2))VlVs!3^ROu^B_>a+Sr_-We8oGr\4u?U%BC!fTZ[4PW/bM-V=R,(N_lL7^H?cD.X*sKeK@^I]MU_lFoinJ4C&ObB*#l!-EDPT#D_BQ0PGi*:EX2E)_`XoLdHu@TDf2O7E-)'(NU`L[Z'313%X5,U-#1okSNh;0jAV^@]N,/2P62>aeVts=e('/Wk&NALh/sI5jAT6,;?N]K($fVCloMAXJ)eOY-f*QUq(f;N*GMq9,rKUe25cX6J\>fMeSL6AXt[]$B#h&lN#/bL/Yt7P2o]J`*EZK6B04UJ9?C*_mG@#'E0GqQpRWQgG&M0dr]t6UWZ:aH:Zk:Y$uPSJ]XkJ9?5S-k?QM+todq-K:O;Bm%U@)VX/eC_[s>.$I=_R]o6T]<CL-JeIVscuN06sq+*OR;MWra_Z[5bh_07DR46<8>n>$7X=9!XS[d;8:-UuM[I!Xf&*K,B3cb:=g.:huea8Y2#\<rf==u)]^o'(2Xcem'8eXH=3rTID?iOa*<_eeN2fM[@<cC`)IES?E1W7?&`'5+Y8_/>O0WZQbtX=hd_iM1%r-!oO@m!iF'l5=Atg==rM`M;]`pPqCV2Z'rLB2'Ik4TR_=i!Q7'WV3`X)GdKB]>cdYB^U0Vf"<ng^L$oOr[d`'`SciHPLdCCm(2If4K3l^HqsNfeQ&2V[]E1t[k.8V4YYNug.9Kb?b+n:R]SSac.-Yp4-j`$G'2Ka;Yur=XBoUTqm$a/e#iIklG3WnR8`co"YH<LBm5PTn74(5N(Wu3%U@h,q=".a/'hPZa^$8G?!>KQn)?nJm./j*s-qcN]Gt.6]Pepb_Qu_";k=g"GY())rm:>`HlAN'=$GHQMWGpqY'RW_4\of8n6K7aIp@Hg]CF5,o@)C<J(AZ.l9;O+V;:htI3`dug#o=><u>LDH!]:dWKhYqj.Nb*#\ZLPMq_K"G4iI)4c.K+[pM11C#e&FQC=r=8I^oc`lT?5QM.M#-P!A1$El_O2lPo=#?MaR:3g1$@u,O/;t1rj"M<K^:T(mh:BB`*A?c)G47Xh%o@/CCN&%:pguk;*p\FGonuFaVNUaJia0';b*jY.hZLQI$IQ,8Z&&*k70!u@:Ect"<4rbLU:MQP5]"EF"9Y\49oq.H=l142umB\_F/q(BuV]K)OPW@iNEK>Ske77Rg".+3(.Ia,;8noR2lIVm22qnWWN;N>@;T^[Up#$1PbULkrH_el`a$'jk!)I@&jK*_I[o;nWlt5.PCKdst*WB'&\E+Y>5G\O44S@VNUWb.pkrkVABoR$@T%$#5op9JRF6dlDo%/!`9Tj+OH'bF8D5V!JX5(4#LO/N*-Tq([$DYfo$gBh8;d+ED"/@ApIQIG7FSX-aI[3%LZM\3OltQckgK+oegpl$gdNPHi^6>H9>[`jWAMLiQHqFcBC1).a+`90!#$Wu)$!OK:Clb,r\T-4ENSVn#;\-#bb+,aMhEsK'KdS`3])!*YHm1T*D7N#\5!=(Hb'[CMprdsJ_%fG-;rb$6m6/5Ug>u7:GZ"X=Mgl%VFkp9ir8#-[R:B=oFP54@rkFu$*aE-<3H\^Ulm*EkdZ+*E4dAgbidnlE);m'<0SK[78dE?t//t[<=P*9jhRM9jqK?35,G2gV7[[2uV>+,+j(sM8`ksB%XfbNt[B&G3_8b0[onSdC)L-"noq]dihhmUnJUtch/D(Rt\19N+>\qadmnXJds5fhuCP(>2R8^_`rRK^B>H$4]gA-V]aQCKPcT_/h(@in.]&9R!r8[@g`IG(HoA*$bmaBFFj7eX5+)3^"\f14UFSM=gp!s8VNA@CiULK`GK8$\<Kpnmup4Li%jO<tF.sie=EgS430KRN)l?V[2'h4TiV4RlCJ(?RWj6G6m(2EF)J]H?Pq/l4`S3]6%]p2ARb``q^S`^UX4S@V>UWf]C_/j\,c"sn8<5"2R5@&,5535q=eA191O/V6@#?MaR:-G1E%mR9jTBaRsV=A,%T%(R>4HHH(W<ZKAAPOfZk3SF<QbW4iZ^![TIk<R7PKWo+caC?te@h<1Z`dGS=Pf%^Ng4o@T5p;H2)%);,O0R>_%fG-;k=g"OABTL8I^X(o8%^aH>nR8k*5&J4lfOFGZ"X=X8E-seR--RY\%4Ko0k5bj/E8b(hHHF<:;!&d__1d(gZ7pk`j,RHoa;a4h/?WF3:5'&,DG*T%(R>2ZNc3jgSi+^4-a5Y.n<fhDf:oZfTH\m5edg-bhe:i!Q7'.1>0!jAT6,;?N[u%<OlS?/9dO?tH\7!k[,Vji1S]*:)ubGj<*[SsiTm/)IH-T3d1W5sD-!-T*ThqKt@$ZnW&:ZX\XV"q0d0,;&_u^2^kLp#$1<bc0K`*mUYoY)r%KmX0;H:MJcZ%?)q=L"Opoc*kPB*<&@sgjH^"b[qAKWL#a?i!L"?W=_?ZPts']q/)gg-T*Th"!KMr<rL%,"no%H`LiQ9[_nH0*aE-lHobIi=+@#+g\BT&Zfb,0&Y:&Lfm[ng",EuOo5sOP/Ng"`dIj#*O0pO2?H5tTXtY/c?!VU5V0I./qM"-jVaGksYC8ORVmPrh#"BCkL^uo*eK7D5S(c)CbO*KEe8Hm\VQtuKe4ZBZE.u^2kuetk(S]GESs<+;)o%2V8deF0@!%u1eFV1B/%d7%/q6jqGWss]l"/5e7H@BNGZ"X=o/rb=V]K+%4o'2B<B78pXo>Tqo@)7`j\poo8I^X(o8%^aH>nR.k1&am_s`odOQgL6qdS0sj`bo#6tc0\5+RZd=o<d:h$n8^.MN(`QI$r%r\rFTF@NH[;</gHM/=qcNhTBD0ucf&j\mr!=&Q#KDC,+CYU#jX%@TMZf"9\MDXXXBiet^oT;2/*Xr!U%qdQ)7q"_r-PST7^diD3M.]l`TqggKCVa0_#,N@c_\3n0s<;%W*jfHsi3oj5bOACGaWCOnKVf7D<c`):Ih+Xg5731qJB;j<Fmt1"2>5tP.OF9t#p's)i6_?&!O&S9P6fmK14IIg"lC@0HII\h"W74*$K(\>OJ$NauB4X4i`=p\]S98)eK0+Gr(n53P#YcJaVju-!pBTV+C$50<`GQr459OFAo4#,_m%50VrM5qMHUf[5Rq^bB2V<76L]$7McKb4)4W)(;oF,HI#Yh#C9'c!fK1ZUFDDQ@9McAEVVnpC$r]bru,-Vk#%ipZMDuAsB3o("=H8(M,/:I20]a.=u5333<)X(I(50`iTqe7=J*Y*3MLXLPgSG$COB:%*32F,fFnO/Q)X(U`eBF=;ZB;j<Fn+K)sqhomg+)Q2X4<u!3eq6B]l/nriX*9$RGiRX#ns@hi2F,fF;<=#+X&&%MBF=;ZB;j<Fn+*/$PH?$SF0jU+)/ueXj'm=O50]-AT)u^Y9;_/BV2>J,^G>IbQrlm/2:/m5Skjk0s"!4-lZK]20Cjb.GK::pl>Yg/j5q?@j7GdjK:-knE-4Z7jU@CmkZoMP#,CL2s3+@+reH-=rlktcmZ<k1Hi)rV_8aAQls3A8@LoC%_9=rG\@NoWEe[0qoWE$o;@WMtlG:]GfQFQ)Bg'1?:oT$&eZVL==$1a`<=`\RdB5i#jU@Cmkad#fS>lfM;_REt:H:e=#(!0g&Z=p1bg_P3jAX?#WI`p*8&VBQ0JiBr%f)>F<,/(Ml4J$9*m@<kW'`c1%$_apSU*\oWWt=Y0C"Wp3CBVIHD_erVs;+Be;HBK;pJ4=J_h\$e)7FL"&G$>QR\/GapG2!IfQXG*YBcl_T^Mf3oj5bOACGaWCOnKV_Bq"U(7!`1ZVK-GNoc[WZKAX]r4:^jU@Cmkad#fS>lfM;_RELQqnTRG<,aF9D0<X-2A6%VI%d"C8H>IRt#'plhC)l:/u&%?hPGWaepgKoqIJtq340Erqul-9![=s/BOeD1%h7N.kL`WZelnNXpJ^;?IWD["^ks9)oUDe_9CDe3io[gbfkNg34gN)R<h_cPnnn<fl%F7f*!m.0C#di!\cG-%H?`C?tS[m*EH>DAnJeDS6ZfP9YICB8diGYlo0a,CP%s[o1'Z)q+=[k!2c"A;o4]F$57bTVgn"tjS$2pgipAWr)U;aE,)3Q?r$8AEUkR&XPSkjr292i%KHq`q38*/T)rGFY8,V4!#UcE8t:89_^g&p0&KSk"TV0:Vo6]T0XfT>qs\;@GpfV>$36<R:Pk92@:5"kFsNgE]?-rN5UlMn3;F6m-D(>>c,lm%aephsdX54Zi8q%/!&,JiPW8IQ"u^Wg^$p*8!.asfVo6]T0X--"l*[/\"9@4)pSYi9_cO-VK0c>QN[l%8-Gf6$ec2fg!4^?*FF8N8EHB=\I`&.%)[pQ]*.S!skijam!W](bJ%:O>[JmQ;3cOgs&KF#@rOuhC!!)j>T)numn-&;2!!!!pn;r%ohGZB;!!&D5F7SSiV4[Vf!!#8k*gKM%!!&CPHjTiR^_=ee!!!#:b=Am34q?e(qAVMg9#go3!/Eau:=j)1q%Nf/i.9>V?Jhn)2g]-Hhs2BQ[MZ@C'`!%*bbt9YYNL:XT<BoPkl06So<;f0&HDgh''lV29U(s_,Q/i3'V0Xaf(*IQQ;?OBpXo`4:JptM*DZ/E!!(q8LM>jtf\,U59Kf$0e&-Gp0V9C-*l"$!6P(5'4p:odWl`!s[s6SDnIEm_BX?<?h/,<O]b>h@\2[-hI/9DIHR&@Yn3/LR#hDr.S7M+S!!%Pm7C#hRW-nVm4tShbZc5F,c$[*9.F"cGK9r11oYA?N!!!"(C[mkLAp`[=I"1s6o,bF&5*o%G!.Ze?^5$d9rOm4B]qFhLYPTu)i?F_%:6a)5Hh5RUV-6(->i#/>MLtTuB!*\2#kF$ak.L"t!!!#nR3@)[bGR;l#64ak_$jI<4p:odi!H!@:B:FqR$2n)!!'eJV#.R66i[2ezzzzzzzzzzzzzzzz!']oh(J1+K~>endstream - -endobj -% 'FormXob.8daf6d831a25f83bda35052e404e809b': class PDFImageXObject -43 0 obj -<< /BitsPerComponent 8 - /ColorSpace /DeviceGray - /Decode [ 0 - 1 ] - /Filter [ /ASCII85Decode - /FlateDecode ] - /Height 742 - /Length 14403 - /Subtype /Image - /Type /XObject - /Width 1248 >> -stream -Gb"0Wm;CZ<&4U(Q5_,TDHN,q)h:R`>aV6%:L,1LIo)RN':1B,+l>57'oPss4zzzzzzzzJ.FL0n,"V^L]A]3a2u0Tn*D2!OH^b5#QOd6%hX>flo7"uDZG[#j5ba)!@Z*NP6:XcTI;ls%d4j^U?jj"TPjgfZK("r^&]Y)NfsSA#,!A+:(HJ,J>2Bi3M:9jMR):'JA)%4b)VYfq?ET@4&-:L)h=[L3'!XM!/e)BjFFrF.*@R6"8W4p-p(06kSo&Hlo7"-oPL&F7L;=RG+9Prq_haD)h>Qe3&t))5G`8um]tm6JA)%4b)VYfq?ET@4&-:L)h=[L3'!XM!/e)BjFFrF.*@R6KAXEAI-KDYL>7Ue:m'N[&%B:/rgZ,H!((_TjPm(Uc^1pB$:%'eQJDE8Z[=c[U]<gD,cS'8T`U=;SK_GifbZI\ZF>I=J$1eB:DKLZXf!I/8+-BT=filpVYFD44tScdEcq?WOQVPT'?)>/qe=0qP+2@#pYK4I*[a,k)c01FRTqth5E!)r)d?-3G+9QAmk6p1IFF?"-O98Q1?b3nlo7"uDid9BZt.5!!I]S/qPGQ#:(HJ,AC*7efl;$th]RQcBuuC!"8W3>oM%u%S/fm7aImHTZK("r^-MsOduk_!#P8H\kaRn)3'!XMO?qd2AB2dmI=ht)VBn<!%d4jBd'm9GT<XM!-O98Q1?_rBBmg&gj5ba)5mDa17c/`.kZ]h="uJ^)P0l4])>]YX^&cL*[q,+?BSO5IUMiCRoI\TN#kK^$95]puq?@i0/`!N9M\iroh]RQc-$sfDojYDo)e@=)<6I&0gs@AD"r[%bd;']b)rQOdQ"<I[A+].D`;]T3ar[8ZqGn@fQg?<Z"F[ljEG#6"B+NAjI4L5EbAp5bEF$r#$g1@jI4L5FbB$$&?g?2Rf7d5u8T6B%H),@iO`S'MVtlss2T0`HQ$j8b$um?Q>?U;tT&7>F]r<"\EEu[XT*,BdS4EEVQ8P#q:$l>ElbY.K,WHY#4OU\oqKCR(f7d5u8T6B%H),@io^0"/Xp_;sPMfi)o17c]khBf=>SgGo-c*V1kE3KDdC7SZ\1Xkg:P+3Bc6I`fUMm%>EEu[XT*,BdS4EEV7c-r[ijuA:4p_^R303^6N4ti@`-#LRI1dM.E?=@K)1=S`M!Mo-q]n-<i]PYu1AZ1J&D)V9p.93W`-J.sAb>As+g)3Rm$$@8M"=0pb37So6X1F.fdFVP&Ef1iQ-m(iL:Ak;Z;6()+jM<\/#.$\%<5ZUAY0)16_$[C<^ttA)reH5b!$+AL,b7dXc0ub2T0`HQ$j8b$um?Q>8_iND2@Mp.f1JN(ud[+[kdf'g(;ki<VB"'0Z874De8S.ZluR[X6c&.@#4DFhob0;BgZ,A<nSk:_%>dl^6R*TdtY@bXKkWRK-AMbI4M(2V[[WO=Cn*-#=G"OqGp)C:)i3(Yf]-9%Ycs(oW=(dSMnE/@?l6R*"6g.l!#$R4)Kf>_CGF.3#LX;d^M".G1mMZKiRh<E%o4UUi0i:mBe%>$`iWXi*_B48DhSRgM'#[(KT3:_8-]GOhR+.\'p)A0!)?SJqG5l,CM);Dl4%a?!([1":%;a8,?7UhbG-M]!0=@#nD\LO7]Q5^7@1#F^^P`&f_="*pHm3em,rhri>mFgUZgbT7Xi88[D?Y*@D*aD.$Lfq>1(hoDc8"^A]Oaq^M@?8t)<6lo7"uDZ^ZDbKmn$\fYb09p5t]2DECd>kaf9rEr91R%2O4JSEEk[deJ-#@$c)jG(AX9QDc[N@/d3fT[*s8+^Y+P&pHTGq/Q@9fYdc7Ge<H31%\2'=f3$b6X7eqDL%H\NI?m`r0:LI#d"0[t+k2A[_7WmKXKS0ku6Q%8:^nc^gtR5H'CaOZWCt0ZCRbG+QeR?s?*^SC+fs.F.%!j/LfE[cJdV'n%$gjBV*l:Zd,1.4\#NkhElukAo=$3qn8$H!,/ThZfr<Qg;@!\fYb1%$MA$2DECdr+nHkqn\TR1qB8t!u%6K[-H)m9R5G)2IskM!IYoSkZl\A3d[B'pZ!Ut@bu:ra)tu9[0-7`0\*_8O6c.PHJOXKm#-/D\KA;PIFJbjgV?eO6JnN.]?IUBg&ZU@R-Iqfn(Z#Aj56>+dC5^H?H:_ukL+_7VSto.YG:9Q,gj)mWF!Wu<9M\Thknq64[--5I5,Z8D`q%4NjG_1Kt^!ND`q%4NjG_1Ac61Ue&eduo=CPM%pO@UbR:tA^@b1m3mOT`(U)jk=s&1Y#CRPYl<NOW2#>cZea#2al<HC=gZnC.ZeK'=\"9R*a4XGTdX0m>?iN$d%jCgZhF?CKVKs7q;k6SUIG9j30lNh*4]C+u.TGRthkJN-SuM*u'rl>KDpdcQcd_[!$Iu]6[qPE9B57<KL$DpKqNcQ7je6TU;n\3tWQlflDbcA*H2k26>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:l+V)bnt)`!c)Tu3cW%+.CoVR@]l2BZY--C(o1tP5>L-9Pj(t`:l+Cr`lFs.Q(U>^VD=jrCWn25Ke[a&9B_8E>Wn25Ke[Z+>\*#8PdC5^H?H:_uk<e(#dC5^H?H:_uk<e(#dC5^H?H:_ukL+Y5<hDUIh(FW"oh>$>cDEXhhYVKrqR:0eQe<2H2Ytu\ea#2al<LphgXc>HU2N1n]oKFuc@ru$UMi:o]oKFuc@ru$UMi:o]oKFuc@ru$UMi:o]oKFuc:,Ebfb^JLqURIQlStC!>ibeUmXb;MT.Kii1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F6JmG%BmJ"lpkT34s5S/fnbJZ6q+e@p?Zrt4r&F_3eiEH4>%#,XGJ;>W8?lo7"uDZ`q/$[q>.G+9Q![t1O(Ktd4'4&-:LgV?eO6JqX$*@D*aD.'AbTl5A#NfsSA2DE[ld'l2La2n@1)jonqkZ].7j5ba)%8:msoW8YWEH4>%#,XEtqUUGg3'!XM"&k`uIHs7DS/fnbJZ6qK^@`X2:(HLB^f9J`htiET-O99\@&e:ADgf]eP6:Y>0\*_\[m"?CaT6f/R-Ir?>9C02jFFrR9Q_u[XUj*)E^8LdVE,Oieq`TO3M:9m;k4;ElU,ic*720GWQp43ocZCl%d;Z_<9HU*qN)^F#P;k@WcOkPIE7G4"8Xo0e[a&95%M^U!IYoSl<NOW+0sqfJA)IdFY<<g&(trC5i2dC3Z%YDL[6u\TPjp2SI9l36["t>d'nS*c@s"*+ZiF/khEmPk<e)&O<#\RoPJ!9F.mN#aGuGdqDL%X\^7fLAB2dmI2eR=>j,B6ZK("r^(!bY0(c7Vfl;$thZfr=(])^<n%\lHr+)ak^Yd^3FMN>V;k4;Elbh?KT*YJkXkA,PIq9/<!W0,qFY<:q:Y4clf`r[[l'/0mKtcN&^?o>iAZBgFDg8dA+s?b:PVJ[`e[a$c4A5lq&$m]`SI9k`YDL!\@Q%etF.mN^Rsh8>p7^\Z1hE\.Tl7H9D[.tb1=`q^2r#suf-'ruA20K-e[a$cgsEMTQqWq5>j*-0<o5HsI5n5D9UY0NkSrZOG9-9(;k4;E_]89N@m4J(F.mN>A);@PVbD4coF5lc]8l]OWQp43@?,Wb0qU5O\^3:Z1%.0c;l2SlqM%#m?,q?8<9HU*0ZUilQqs.8>j*-hR!0SB.8ucFID[&rY%'Y,WcOkPQt+uqbbn-W0(]Tobe&o2Pc;r^^1!%If.imQe[a$cbVAQIk#8-<(]&kHk$?#Tb#IOjh_<*`ld!ghm)c91NkSq^H.SUVchLF=>p4X6*:p?1REt9@)c)gtDqG#,0AV*Fnbi(/o9],s?:OcGaf6kbDjY%kFjm[1e&tB;[liucnXdWp>mu/!*:p=[NRd$teLeE%1(;^Pco90'n%.8[c)KF+kNd%>Cqf:%_cC%MID[&rY'YWQ<W2^[r_i])]of1o\e=jo3TaUKlJ"_aA62+T0ZUilDU0gL7@R="^KoF::S47SQkl<9i;%)6oF5lc]8l]OWQp43@?,Wb0qU5O\^3:Z1%.0c;l2SlqM%#m?,q?8<9HU*0ZUilQqs.8>j*-hR!0SB.8ucFID[&rY%'Y,WcRF<Dj0U&]>QDhQqs.8>giMX';u"]K-TM]a*c$/kG$>4g7:C@lML+b/^L&_2?.id`=LP:C!<c@q37l(-*qNdmp(/935F_34hk"cqRY5Gc[3/u2`i?ga*c$/kE=K,C%d<bTU&AU?i"qkq0cG\&f-G1Nqnp=c:+gQQU9S9IM-ChDt@m]L&iO#@m4J(F&D2VbKg2oh!_W%[rVe*(Q>SYq37l(7AXqKHeIiAj'V:(rr(T.K>7ja=N>g3<9M[qhko:\D<U\nXj<X1r6tfnXCFG*WcLbug\UN>cR5EmHX#CrZuJ0T0\8AJ;l2UBbeBWn48RMDF0/q9AZBh9X`%iH^_$hGj6@(R0CLTp"8J7t3SdJshN*/Eg:@dfD=s76#JrG[e`G8h54j=%>L_5HXDcSZO8#!kee(W!rUd3&]c[7i[<9m+F&^aehtk^snS_9/f=AU]FVsbQ&%s(b(:A;4[rYN(6/VOcqseT%>8M]L7s,[@XUi)ert`"bSbi75A>_`NqU#-0Dc'`jHXHf]r*GjgVE+nWeq`+CIuE$lNqNoTWcP-[=8@!js(B#m6N#ZClX%@'ef,ZY]031c5H=J<hkIP3qK@na>i+pRq%`@I?2$C4a80uYl\ng+IoOS\#<\s=H(f0>W6Ss)5EDH!nb^4\VWY(^='kpSK^!L:Z*/LZhemkS4f\*<b3sWPnr1ln_2IRR"8;/\GaaM.kXk0Sd'n'qkHb%+o^TcM1jf&[f&&!Pr-<A[k/FH@)s?YgkP7oTHN*U5ng(hF4"p6n*7_Udo^2W^]l0tG34)Z]p)^u0h_))[p+ek')h%<?M"U9DTl9+mc=O1te*iKbbO;Y+s7t!4PWo*P:Z!(0n([3a^&DuufpSCsDs29[bMs1$hp,)ibH^6.X.'mN=s'*T>Q:%fDt!5ag\Sgn_FJD5Zi>8tml@D=(]&<8l<J`6[Wosdf&P2f3k)i:4p.X"1\C&Se[]K9fBVVBnhY"+.q/DSo^P=mqjr_,]D[F/8)J3FlMQ_6qtTRSq:!Ac0g>WM4L86>fob!6Tl9+mcGfI%:P6.&3^,ErcCq`-;*/)!WcOkPI2I):]cE0fnZ#EV$[q>.n&N13D-cf$*7_UH[m'G5r*.\%7GlBfSI9l36gr(17;Z?&m2XZe*:D$!^;&CG;4V^_fn]U9eU"P4a.Uh?ogRb+r;CLh7s2goB-7--<pS!o*.p^Bee``JnaB8C3N=m<48\O)[T[VCi>=E*Z+fFk#l6IAqUXk7./G9B^5]\;2>S)G^58M$A$0a0^4i;",3[dKlW^-&U$.sOqDRL4f'$<dqBgg.NOcb\qA+t&M4ecsY&B<6Kq`K0khDKj>GH,1kaMkSG!4R(ALq3TB74Rf/JNUH6/R,dqUU^E?>PG`qt78/2>S)G^58M$f>B0n@eHa(#I=s@D=fCoI1np(Y(p4f`9L@p9`]YuTPmSH<-P3X4frX^^4i;",3[eSE6F0<]W*p_/JNUH6/Si#>@'_Z<P>)EU$.sOqK>$WNE'f0VDn-!'R^Ybl$^2CA'I4rQ>ulro!1!5O8aS"/JNUHn_&?&rHZ?SXjOUSoM*7Op[.e)GjAS/DkZBaLsPJCo&\9M[mo7Ad5MZ0g:(-nYE-DOU2M7>gLm0tU$.u%:[QoOf:.Luh\pnN7GgL\Cu>5nNcD;rXjOUSoM*8H\#ce$2m2k6T9,APXBkRCs#RgL?IlSTha5^L&_F4M=KQrAkFiXR<W!/;afF->^IiAs**mF%kF]JBU2M6)Su97Sr9tP(Du;"np9Jj)Y*)^jhQ+E*2>S)G^5;X[^7CI9phupGU$.sOhnJb>+8XP=qIW"MhAaA`)eUg>(ObTaI5@O7mu:cANO+tZMn\kA^);<-h[2U1m,[>*4.6\.lP4h(prL2JHk(.bSj2B(qMN1Cp`8,[92*j_[pIH@K?ro=q4E;jm<n,%YNVIl8+u?GP2@80dC3H02hMY-g[\pZ3NAim]qTEL+4mu'5''[nhg.`K%-ZH$TPqN<D[%<82ri4MlZPJaX]P/>i:HeWq`/?GcA0.,MS9sU@c(@:!]=m^#LU"ed5Q^(m$n"k^u[36!;b7sqI]5rI67=Id(5bYIHqVr1\fb>3R:PCIHqVr1SAYM"3Y$%0)F-LqIW"MI"mp"XBkJ#=7jaf^+Io\S]EW^b89Vs^AY?`c1?)3kZb7SRfRqAN+0AJhI1_UEIQC.23/gaQbBJ+oW;3ec%*M[7e,66A]ud12m(s[HWduE>Hd7[!I\12@c"R9o6bEImJ[]h3r7DXqIW"M(8Fu[r-!A"\G>[Lj]Or^oW;3ec%*M[7^;ge[gRWMp&*:J;"RK#>G",crq5!OC5YkKnGH5tI1&L$7-s?-F(ZtL=hEm%YNVGVI60NQcK7LOH:?^"kaU$@e^:j4d5M1(jtoSNoW;3ec%*Mgbu#L0lP4h(TPmSH<(Ghl7GeO;S'rA-dC3H02Zrp=1e2]\X]P/>JA+%g;&t)N'n%m2Dbb@Q8)JV]h[J_<di?oc[pIH@"8_.:7s4I+=7jaf^,aG8*I[5gI5@O7:30B)hg.`K%-X20*7`HG?I:\6qW9V)FnDe;oZ_p#3R(DAIHqVr1SAY]F&YZeH:?^"kaU$@e^:j4d5M1(jtoSNoW;3ec%*Mgbu#L0lP4h(TPmSH<(Ghl7GeO;S'rA-dC3H02Zrp=1e2]\X]P/>JA+%g;&t)N'n%m2Dbb@Q8)JV]h[J_<di?oc[pIH@"8_.:7s4I+=7jaf^,aG8*I[5gI5@O7:30B)hg.`K%-X20*7`HG?I:\6qW9V)FW]JLn%\mkqYpS#q>5"iF"umJ#l6IAqUT+?lM:G\,9K[AlLKuWf?+'m9mcnIHhW#:k5S48qS-J4jh-Mc[Ij'HOcLk[FnJ7clg+Go)?6?&SMtN%^Ko`(D<@dW^,:"\`5'FBUUp<1a0gERhgBh)I?\q!+%5!)\ijT^"3OJHHs_<Nh*tP6nR;'lSbkdo4eNkH`A]r_"6]VNh]t^[E='C6^:!S0QuS087s422IB,NN>E:GMNP_mVGL<m3*fh34LjE%PhX\1:SG+gf;k.Fc`HqZ7CZbGc@1OeWFm0?rCH?Lmhg'V2D%q3QSj_I>R6>656g@NSHC'$n*+m]3HQ%<JjnY9@O!mPAmHopLZ.hA^s2a#mM7I:/kZ]j(`sd;_4fW;dZ>\jV^3t[+U+Y3LkZ]jX%iP(kJlEQDm'p*Nc/\>0GEtDLW6=lkqUWsj+laV?O6Y_/+4oBJTBY,%I=M5Y4b!5*oeO/@rc-clohC*H^[In8mG&a;mdUFZY.ggJXoCV20A,s4q&`[fSphdCp\#BNY2c;@>=7"4%"(0#WiPTmDp.l,o^2<`qF9@GqK]llLD-Jpr3#n)qZ#V5]4kIJEH1TFD[j0aq"=M:qW;5"IstarkaSIKqR1_-l1sLVoB,5VDlk9lc26^oK5%`MVT1l!]tU8?Y$\8KHi%?JD^Wpk]D9a@ht1sTk>>O"<o9df[pSdrq5eZ2V"F?Bfk4>5StD%S^,>a&8p1)9IIhnO)^kN'hF6>gkh@H7p!YiAfpD:_qIW7T2Q<jO^A5jaS9N@>48QBWFoCsW8+u&WMnV2RJ,Y\HrDHocIIiSL3U`\\*i?u5E:^9=]]ee,.&uU2Da'>fk'cm(.Fiha7<SQ4ICno@e,<iL^7+fD\#*.!AJE\fC\>r$Ip''1k?[_^.Fiha7<SS$bt%Kh]SjK]V7J=TW32c,q=ssdmk*#9[laG@HiAJ`esDr.\'_Z]Wp?R$5/+c2]Oa/!B%+RTh"CVW>$lHUhF?BhWNMl-jZ'c1T.@>:JK0oFX1-Kc:o`iZD`Ni[j*IO[5*BE=C\9mf(.r`JoI\*&I?RcRDQHU+DkU.^:Z$14>0$S>D1*s*UpfOsqA)\GrU_\^4+1%0F(VFITl6W(f2(:E**L>B>&A^Fq[uPE%Xe_]\pjLAj/p$io@o]Sd_TGX"FUZS])GS'-LjCI)\*kUlscO!)gsf&^4fHjruc__]C+!kX)Dpj@gdRU3f1S);I0;FIFB/)l3#1QIh'uq0(.SE`s*/LFUig-V7M-Pf#G'VU?`Q'If97ogqEZH%A\.3/G^,SFoCs7M<XQRn&nYg%<h4%k5BMrQeJGqkZ]Icp!^As4Ss<]*RB(X\7pC?*MIDF<7aq'RTT<dr!*%BoAe%VSi*Vki6gZI>.p!2Ki22@I;?^)D_F%+>\W0$l.baMI5'4E&(7rQQ@AG.>&ro_-$WG^bqusAVRlamqBfkR7'H+V6['3U?M\9&g]pb`5CI<Xoe0mj]_^jJGTG-#8#(!8-hkGVf2(:Ed'q$Y>:A%pe$g<cI4IF^VJes0pX)sl:Z$2Kp20c8qO3;^+*p926E.,[^?&2YgQq22]oBa[;I)M8b<b#(UMli*f2(:Ed'q$Y>:A%pe$g=hXYKYf8p1+)/]Zhai>h\08p1+)Xg,!H.#U4qZg:r1NP:*E>sEaQW,f+JXlDb*G39P8BR3Y0:Z'HeVVB^Z9ogq>]>&UjoBhmpCM#O"jSSC1MkAqGqYM9oTAIkk2q@TM\'sbP"?ZS]^3jpLe+5GXZ3dYnOK\+;(B=-Ro`"=VrX,2lDs,T=lMBc"BsW,f@Wm%1C&J6&lNhHX`gD/c9oZitIB)V2Dl9`72U.h<56(QOg[cZ&cU$GXVn.?RG$<kb\'+B^c&^`tDuCRAJ*!;N(bH31\-#^^:Z"ntr;GB(^6MCP#B&V1*ML&nqKC`]k>)o?:S47SQkl<9ppfLb'7CgklMBb7e[ZpQ>=UKU01sDOP]d7;g**K^Vf,W.D$PLd!35@_D`L9ia1fN:'kAC[1ZPY)(tJ<.[i@^"&82E!qZNqbVf+T.f<K=FmsHU[c"L29(>@h(":VoHK2gGuhf<tCU\LsopRA)"2i>:tDsZN1Qco:Z<o5CmB9`"rAb>Z_;-cD7bMgmYq,a-2r]&_@p\GVLX1'RmdGk[ANH3maN5!"hWp?R$3IF#>]+j9^^\R\iE1/rRlT5gK_UU'tD9M//gS;?/qNf%&Di8OVIHfMTRr3Xmlu*#VDjeA6VbtaoQI4<n7s4e&/ViZ4DjS/OD7lb@7UASd37`Y?^:lb1l_eY])YIsAD`L9oh]C>@e$g<7IJ`sn[bJ.3g@Nd-p(#QaDp,cNq<8clYA]KeqWV4E;:]a:kj'7;I="rF:Z$2OZAt\L?gm4EgS;?/qNbWUFW<:8H:M?"*nBr4[iD0Ej/CAW48SgIW32c,jVVPL7ub7>dFYitFoCqaa!g75C@q1Z^:lb1l_eY]7Tmc/UT\n6p$GU^5CL^0auYP$ID)DZDia2[l!'0FeoB4'lQ(D%HW8Tmhf=[]Nh]'Nn*')lUUkpNQ=H/%*&[S=7pk-peb.D#*2BUqW6s3YqYKoaY+NGi(hF^XNP=8sf=+7mrU_\^.-ij-o_"6Y^-/L^Vf+Rb=iXC7YBTX3m87.RIEO@f3fY,,]q_cLO6ZT+>E2S3ERa4<*IW?_<7aq'Ef@;aUIJVZkj-uu\pjLAA&;?R2cMQ_p!Yifi4P%Dp&*5s7,Y_;:%eG42alT:ND9*DdPjSP]T#YYr6dMli4P%Dp&*5s7,Y_;:%eG42alT:ND9*DdPjSP]T#YYr6dMli4P%Dp&*5s7,Y_;:%eG42alT:ND9*DdPjSP]T#YYr6dMli4P%Dp&*5s7,Y_;:%eG42alT:ND9*DdPoZds&_.2n#u*:I1XrpP.mV:4&Q94^U&^i5ub$\qM(I*8/_@&P<HPhU3^+n2q2A.b(.20;S=^I)euZ'AO,,SWEtq`%5lh$18&Q:<3JskL77I"):5iXWn/PF6VVa"%-Un<ea&C4TdDj!#4sL/l?,\U:m2nK"8Wd(ot$r;W6('a!IY?OH<nrXe7;(lJA)1b]e8OgC9f'q5i2XB?C19n2;+*ITPoB\Y=n_HRd<Q_d'l9?f-Pi49m3<@kZ]1[l]SuU-9G*0oIZ0iF\1IeP8u(SqA)Wp\tj8Cac;SdI1)is?.([]A4Odm^'.EJ0'O<iZ6NpGhZBc`Qh1_Efo\%_Dh1lk9DXC3lpr#@[m6tF-%/-TG,,Q1>9MJ^P.mV:4&Q:T/Wf7?8`*@.*@V*e(.e,0Ui33RNg'Qm$`&)SdPoZd8'6@r"]E#dko4BC,@s-t!i]LmoF3\2OYWSJJQ/gGqM(I*8/]d`5cWE^I7$_PU^ZHk+P#e@^7cl8;?lbFOQps[hb]LW.0KD^8G0QiDlCd<PQ?1?Uj?=p2q2A.b(.20;S=^I)euZ'AO,,SWEtq`%5lh$18&Q:<3JskL77I"):5iXWn/PF6VVa"%-UogZe&d^-8BS5$[mqu]mU=Q>G0GnF$0lDqknAdZ6NpGhZD1aT?!jJZ*GTc5i2Xj2kS-gDm?SmAO,,Sd5R]<Vf/iG,@s-t!mrs!a/<j\Z6NpGhZD1aT?!jJZ*GTc5i2Xj2kS-gDm?SmAO,,Sd5R]<Vf/iG,@s-t!mrs!a/<j\Z6NpGhZD1aT?!jJZ*GTc5i2Xj2kS-gDm?SmAO,,Sd5R]<Vf/iG,@s-t!mrs!a/<j\Z6NpGhZD1aT?!jJZ*GTc5i2Xj2kS-gDm?SmAO,,Sd5R]<Vf/iG,@s-t!mrs!a/<j\Z6NpGhZD1aT?!jJZ*GTc5i2Xj2kS-gDm?SmAO,,Sd5R]<Vf/iG,@s-t!mrs!a/<j\Z6NpGhZD1aT?!jJZ*GTc5i2Xj2kS-gDm?SmAO,,S9rm1/ID8ggn,G,/WHe$hpBP'YOYWSJJ]@-4p:X-]s2+C"phf_JfBrD%,GBhH7%)C\J"%O79_V2.\id.kgMc[j$T7.CDqk#1m,PQhoqp4#qpDlTR=R,fDsk%u%%3\gnhbj6kH@hSipELZf41GM<O3bLQsPFEq!E>@oM&.WRU"2uDjALf>4cXL^.n3Ds5(&+q=0!AV3_#0qKR!ZG,,Q1S%"#uq\fCppUTYZa#(,l?LG*Ba,f+aqDQ*<qUVRo6J9^EDjAN<p%dkMf>ZXr^#!<f:&=Qn5)n7=l]fjWD0^C^UMo"0qc8!km8%3"qY9G5S&WYCe(*b;Wu:7d&cuW7b(.3OX7gE#q9s&(q:kW-n\WITSiVmAG9YJEbHuN[f#N]Ddct@5hqW'u(io>]I.-+)PFocM>Q2Urr;#QOhXfcrV>T/iVf/i7UZ@6Fq:kg$,cGY1\i"i,`6A5X4o2$-4&Q:T/Pss;D_HO.h[+_KQAr(Ac]44jI1$bH[iao`M3#C,?>t7?>!8hL/#Jjr4+)N3=oPVmGCRuK*pd,F5I5$PiM:l!G+&$*p6Y^/5Eu3JD7+dVe'"r'qh)`E_u/gBJ+laR5,N7@msYCJHBa`aBBn7&s1b]">8QL-a0+%^j0OTo>FmLm0(??anbrDrB`3D'^N_j88^);]+8=k2P02TSb?rKfL\!E"6[Y3THrT"#`Ga'Af,qf05/^UZFQg!8I".]Xc/UbZp9Egca'P@Ic)W`%q!HLLhu8(sS^$3((@A'VkPV)LO8Hh/oW;W,@J`pcg[4-5htXqY=Il#-be@AS+&2Xf+&:QO%r(pomXtE1\@qP4FT1S_^Q[cM/oQ!i9kS+&^>Whe/(;u@ZQ4I`rVCEhQIk5@T$KWDF>d3GG?;Q.l0Z7LUMmEcp9WT<p20UODpK6&@la1@n!eeKT5uJ0F5IIWKDX@!hfp`$e!@G7m67Cc%?/oJ7X"3LHM?`CkZb-qrG5!]cI;Z<'7E4MC&?SD^7EkmhpRO'cbZgBb<AUAK>*mHhn5NXqE;3N]e'ZVRt9AH$h`@8G,(l"D.15?Z;CFE+o6otZF>Mg4/r>SZ^GuaHe==@ZF>Mg4/r>SZ^GuaHe==@ZF>Mg4/r>SZ^GuaHe==@ZF>Mg4/r>SZ^GuaHe==@ZF>Mg4/sM%jLgJdTn2QI@DIo'3;[jhl=Vp?q"Cp2_]AQ@$JF1NJ/qWUhh&*P,HSYOWUs[FQFHLE*E>D_K!?9LRXT_rcKu/:IsU2GdrI(I5Hk&$P$YDg.d1(jG%4H(59T=lo'6fU>lBW"I^,XtkZ]`a@rohD4Y'"Z4qE&L`boVYB?&!gG'hEq^SKO5G#SWn$c[(#lLb7dg;e-<pZWJUWe.qg@lH<Re[O`/'7Ka#oIUolZ*!>RQ[cV*qu#^We#DqgS:p(',GT1nfSu'"[tOiEWe.qg@lI$&hA-=^W!`A:N85m2HWq>kUFPJ30Qs4eltp1HNiJaj_:Xa1ZF>Mg40!nH"_0J`b2*m<m&19f(6%&t.=589YbN]3>;15qV!Mr,^lGFfDo((cP-VQN!B[<5^'/"*9$6!+#4/8qqA,%G-n0LI(pKbbkZ]`aUSR6n@DIo'TPq[!NKUTVK`O98K"_Cu2bM6L('a-($MkNsh'a_!>8XT>.d1(jG,(l"D.15?Wh=:HfSu'"[tOiEWo@^LVY.]c.t0D*Nc,H?;,[+r0ORCN*:2GPnh5NOT?Xb'gV[onPeAXWfMNB=T:aOj+7)Hgg"XAo*E>D_K!?7@AT%qYG#SWn$c[(KPeAXWfMNCU/Ju)s;YIOQ?q45D[p\Pl8_Mk8J/qWUhh&*P-"V!&"*RY_dB=)V1&iFWos:'0I!aM*P-VQN!B[=@NUL5a9loiVmb(8q^-1gP8_Mk8J/qX0r;#Tpl:&t(R<Et)fSu'"[tOiEWoBT4V[kF>"JTgJ+F@<0YbNZXp$Hn!o^+2QUSR6n@DIo'a?DV&UMjfgHWq>kUWg#>i=(-%"52GGJ0!`Z3E#kUm50!]V!Mr,^lEI**9cr>c*Ng]I!aM*P-VQN!B\HGD4L2^l^lA.j4hIhPa&j5%+nEpT&7>VIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ"t@rmUN6]CD<*)/9!$NkRBDIQ"sTs(M9.C4'W47bW="UMgT\2DLB%rG9Lhd/[em,>$Y9G$GUgE&KG6[/Fg]("!"o'-g*'cZWP*%<+3[P-k1(`tcu%B+lL]gWt%J&Ii\;0p8pBCr[:<!+uri8__R7>S.FH^HZ,[q6Kt4fCS\8aHR\o"8^TaqYLAlSM/aTHTba9O%e5h18&Od-KFEC9\GO`TPo:VAZ)EBT/PQ2_8-+XZ6NpGhqUn`:gL!rI*LMp!j[t.AO54d9TNP0?_/%:g3Zmd<-G&GkaNCbL-]B@b(.3O=nce3WkET[6tJm2JA-=!leCRb.=_i[OYWSJ?JPCcrHS_m6ZSqQkaS&U1LtFsXn)425R,nkY@A[3dGnkcUhTd\F71,V?D)5`+oC_Nm,L0R!grfg!5dq=J5O]Q!2HiIrY,?sSbi2l_WN?J5RlVc!+8du%D\q+)ZY/A+'DaH;X<eTVh>&=.thNH4nK26LhXGLF>hr>O#d)SHG$n<iVL.Y)a*$H8Dg$-rpn^N]3=%jr1R2I$32#_NEB0HET?uYq5p^,S8Rfqq\BG5[_/Ni].+i:V/QD7:baIj3@F.,]tWUnrSHsHiNWaqE%/I>!)u'F?Fi9OS<j,AAfmI)Sel;;m4o[fcf:VJI@ECnq>_QII<iK]q?LL3^oQ#+:m\<IVsBfZIJ`j58Dd#]Yg"8:rANu2k4\uYRoY"DFp[Ni[.2f@%=m:+PErO&T8QKPhEE5H?06&\J'L*)Wd4+0l/S@QpG/kCpq@fbl4^)AqZ).-cVtn]poVeN"2Gh'"+Yggp'h"J6/M[$CA2(LbW\8lzzzzzzzzTPsi26>Lr7~>endstream - -endobj -% 'FormXob.e0f32bdd4f95c90d9dd1dfb9f782f702': class PDFImageXObject -44 0 obj -<< /BitsPerComponent 8 - /ColorSpace /DeviceRGB - /Filter [ /ASCII85Decode - /FlateDecode ] - /Height 1194 - /Length 64167 - /SMask 45 0 R - /Subtype /Image - /Type /XObject - /Width 1604 >> -stream -Gb"-V!KuLl&g5mf66BY)J%7^/rkHo?@5.g'7m[fNGgG*d1._cl,S9O*WrBd5(B=F8zzzzzzzzzzzzzzzzzzzzzzzzzzz!!!#?HGSG8HI;cn!!#7THG0=9%cjnq!!!#0/FML^H)uMVZ2ak)?tF@]gr9<:AGu+LjK\ac!+9AY=kn^9('"=7+IC&QaCPAP!!%%BgkAuK!!!!AQh>(hB`.c-h4%X3ZK/:k!!!"eQFtVM1:D8GAH;c2!%[,7i]_hjo_nHt?[R=&lLeMV#F?a/jk\s\eIH`\_;qm%!!%O^Va9=WiYSDL2Hd-+(TjmAWNGsj18O3e48SM1E`iAB!5O4#+?Md1'W8'&F&T1@p>rU>3\s"641QmB!!(r>foOr2@2d:"Q%+oMc=M-ZDcJm"GBYF$"TSN&4>lTtpVkHi[0dHD*Q*9Wq9s7V/dhXZ!-inbA*>.2=3bA/qf/\r\L[^\!9!AROM:nt+2dNu]DmoMk:)lW<;#\sY5E:@2n:I>!!$Dh1^FU7QN[?h!6A_k(NNXY!!%OS(3^pg"TSN&aCT?-E`iAB!.\;iG9N:V!!!#?AT8N,=TAF%J6Wk6+dW?4!!()OFd5<N3b\'R/jYY*('"=7+Hb+FqN'4:aVo@&PW--(!!!!a,,M?0bBj+gX0=^7;fYq&cQ\\Z!!!!iUi_%IUT1l(o'9?EX*ZN$\L[^\!'ha)lX2?G<A'Uq8hLJO!!&*Ol'e*bqG]VF(:bsr!!#8.V5m9N:&/$p[0?\Q=TAF%J4*#]_-C%8,?QQaP$Ab&!!".(dT$e)PlHf<^LK5q/dhXZ!0Bb10'';<!!!#0/FGhW$NL/,ONZW9jK\ac!!'P\mQrN6!!!"\bMk/8Z2ak)!4aZK67rWG!!&,(i\';t!!!"L(Ym+s0=`V6!!$-RbNH1@$+VSe!!#8:Mn>(o!WW3#jKc:RQ[^Xr!!!"b-^VeXaCPAP!!%%BgkAuK!!!!AQc37OAH;c2!69.`AI[haa8Y\6Ih,W[qN*^^=(n+!/dhXZ!8*XLq)k_%&Y5-rH<31-J+[1UX#lKf!WW3#au!)n&Z/8oq<_OOh.iMXH2OPVC)EGWZMs+iEFCBs9h3>c2lB<)I@4=U!!!!1jIh57LX'abSSYS/2HEObI=@`D1Ph%ZONR\*!!$WmZ<BIeSibG2X,0(l@27:^O,`Uib5qYD!&Bt=no*'tB9f*8b+G/;Z2?L/PEM*P\h(BC!!!",kYkCLOafePCFC3fDm=FYQX&+Da^kJQ!!'h_UGdgqX?uUGi7s+LZ8R2HOY;g>!WW3#>+)>amg8uIWMe=XeXF*_AQfMbX&T>2ATD["8,*.r/-#YM?mm]#>MWQ8QX(kqFi\+p!!!#T:IAF1cXXTd&3ZCc('"=7+=G'4aCPAP!!%%BgkAuK!!!!AQc37OAH;c2!-25tKj5An!!$slQh@?rXeAs^s64`&4=S-b)#4b-IMI;N:TG,=/-#YM=PUV9_e=@/@T<X8hNtSeMW'M!<jg5`%1Uk]Km9Wjb@L\S!5RSPq1n6jD)N]j:ZJgF)q?1V$=!1&K8In]_WuC4LCpu[D\Z:tI$_4_PC:)14Olp_Z2ak)?u\KH-!?Taak)i>kNr&[).?!YKNl\I"1qr'Ac6XP!!!#'\FX`DeXsk+`HdEi^kP`5^PsqHPoqQW3hDeP69Jh#E`iAB!3it,0'cFdiD<67`$].P76qC[U+LF;=,:fdZ<qS[eJ#,%:YCh7('"=7/2!.0$ITa4P'ram\;#FZ%e]R3&IsrHqXpWb!!!"J-MZq(OBX]9b:5`A[%i?rdH5LQhi)Nq`8&b;O$Cs%Q".P-6nSiI!!!d9jrDMS+MBs\P8.YGRrbW)jD-.G)i_:Kn8BPq[o,@K;]Z0ED>/hU<#_+G!WW4N`=6B4k5%CX#M])eKYPs[AUTtO('"=7&BK?-BND"ilm@=]PDB)d_QPEcptO(@a':5)!!!"DE5mWfOime+!!))c\-ohu!!!!a/rR?'b5qYD!9CGq$b7eg!!(qb0'cLn>!obEs3oAmGLSMhn8:T\3dk,Eheo;C\L[^\!*J$j>f=R.cED7k]Di[rRj?<Os2W#lSR4o-rMnZ^\L[^\!+;"fW.$(+;c<S@:+HQI4gM/n<DPK>poM!Q\=RT!rXucC<a1t&3sAJ]#OPgF.PFRn#&n=hE=>-LE`iAB!3isU,Esb'PiQW'a"oI(U"%4t%VM!O#m0=&EiN98+RE."A_nkl0^.HJm<5gNe\L7O!!!",ETcGhW]uK4$S&\[/h;rB):)r@-ILF[CL8^[S*c5r]Nc3P!!"Q&q3dtd<XL&GXAS<%9J.io+Wp)YR%.johpTb\Fb_IQ/82:N0n7D\0'f"oAk(^,Ug+Z8!!"Q&PKTt<'o#?Sjg*kao$MUkgQB\E7P`KKNj,.<b8MCH\L[^\!*ELql)(-g`+Ud(r%u]Z)NrJPQ"82*<g(R9A[4A5-^WhI]#Ork*]UR`Th+%<aCPAP!5RSt)2:k#iiS^!-u7S->AYQk6Q&ubg+rH<7M;R;:URhrL1STZ0NqIVa#jVhc7/_B`i;,Y-ah]D]'CZ/"TSN&b8\^e9_=#c19EdTV]4O[GdZ?P299>0!!'goi_MC*pOsq`KDA80?YC_qT_tnF:YIs6Rp6^/!!"S<k@k]&P03n,!!))c\-ohu!!!!a/rR?'b5qYD!9CGq$b7eg!!#8:Mn>(o!WW3#jKc9'\L[^\!'i/p]9(2;!!!#[ZFC:Q/-#YM5V@u,ONR\*!!))c\-ohu!!!#W"aBO`9.gSP!!!f.:(dEqci<Om_>djAq2j?\7e?Aj4R^%7'3T?Y!!!#'Z6+J"k0a1QAT=_W:Ds35!.`gNIJh8ungshA!!$8l>S[;>!!'Lt.fOXRdTHPM!!$8&RELc=!WW3#i.@tc/@d;3!!!#%VNo5cc2mtG!8qVQZ2ak)!4[_BOX6P%!!!#7Fi\+p!!!"<$a1/W%Mf$E!!'I'XT/>$!4WEI/-#YM!:E0+$NL/,J@god!WW3#i%F)rz\-ohuzmQrN6!!!"L]9(2;!!!#W0'';<!!!#/$b7eg!!!#e67rWG!!%P]ONR\*!!(q0jK\ac!!'M:\L[^\!!)FR/dhXZ!._\Cb5qYD!8oKjZ2ak)!4WEI/-#YM!:E0+$NL/,J@god!WW3#i%F)rz\-ohuzmQrN6!!!"L]9(2;!!!#W0'';<!!!#/$b7eg!!!#e67rWG!!%P]ONR\*!!(q0jK\ac!!'M:\L[^\!!)FR/dhXZ!._\Cb5qYD!8oKjZ2ak)!4WEI/-#\.$=:O@R+D<K1M,;F!5SX5cTCS;E"0-[H-C&SMic*`!1;%n03lPI??cC2b5upI=UR:k!,p_>iB$tq$dV';7kP2-0kN$(!!'ZWkCr5`b5uo*\L[`2l+HW)Fi\+p4H*M\!5N^5H/UgFZ2bq8/dhYe3q'_r21>E&rLYC\XcorNbMiORC[anJ$NOQq0*kW;H?EK;]9CFtnLSIW7P5&K?okItB8B(No;D&\s8CsKis2dfqE28=q(1tUT<*47$VVh4`FW3'?lup1!.a>#hWHBGT&QA[?Lc1To#TBbalCR+WaG5Y$cgA#EC#mJ3'o5*!+7kbp5*tjdQ`2q)h!QY"gIHl0<R,&;b"l?EAa%>3(PY0!+7jWp*k1bY(,Z3mo+Ksp"T9:<jf8[a!eJLY/@QrqC)i8b5q[2c?=W1GVH0_*I?u9f%E)JId%5LmN1<cR7f/jX0JbB6#p*.!7TW.cSbR2r[YbUq:rj]a^oHXQ8LWg/dhYe3rAV,jF?FOID=Na^%kkg_+W\Jps2ksmq_#>6X=(D\L]AVZ3L3IAH;d)BD2nf+dWB%0QL:r!7Q5VL$OiD!dGQm/-(4b]^s!_aCPB7N*I+u^i\FYiB$&*!$4T^$NOQqn%<T[E`iAQ,F8Q60V*Do\.6J;991!W\V54"jio>Sb,maCPAP9]qs*nG9=_@;u.,[LUk(+92?)X0A?N:*Q%D>s*.QKJU\\!<>f+&)Zq<19IbC2A(<u>$LLFl="&3%GYkV\L_XWWQQNV5qWNF?oiZ0Wo.@emgh1mT1N]:nG,q[cNCa3CRGN^KCcXTf"")R6YEsk!chFKhh.7c35_hO*<:UKHhaW9AZbV<<6Z3_8Yg+`BCfcMQ"942/)EFuol^88TQT,PZFIUR09:&V\L[`2l0RB0ig7((O["4rbI@KI?_`bPl`YNP,e5J/n%m0lS3\b8!+7j7po<@-CI,Z_3-Wrs=u'<i,P$9]p!/pMQc8V\G^4ruaCPAP9P4lCFo5ffW6X\=7pabuerT_c)9M*)]ZF`)I1KX*i='a0!!(L$_m]d;9#l!7R<+-el$gW;0'a;6ZFGUd/rsrU\L[`2l0R@2S%jaL/rY:e3O`0oSeAf\"YIFrj46H0fZ9[(J%akn2J0Yn(hCqcaQ4#Z0Pb)%!8u*CINjEd6#p*jQ$\[*a^kJQ9]u@`MXhtmY_-0rcXV62EH51^!7Q54JEr<?!dGQm/-(4b]^s!_aCPB7N*I+u^i\FYiB$&*!$4T^$NOQqn%<T[E`iAQ,F8Q60V*Do\.6J;991!W\VU"^K58Y8Ol%!%qcu_@?R]gWSb=i%eoXnsJ#/(Eo+K!&0sf?FUKU/:`M<b5q[2c9![aa325a"n4(L(3TZXhRrHsFi\+p4H*M\!5N^5H/UgFZ2bq8/dhYe3q'_#*HG9_%jRDE!&361GM^[GoCS7S^LLWdjXF,S4Z%of)J>59QHLcHab_n$Xlm%-GJHSJC^rY(mjB\-q]\%=[FsB8C.LX-7n2tB[>9nD_X59IaCPAP9Xeq%SU]8dTl*iAh^OSu+:fK9c%4t=^Wg>$k4Pg_mI<eP<?4Z,`0F$<AR/a7r5*2in95#kCU$YmiE?,&['jjVUSm]/E`p21]mrcPp"JmEYMS`.57:]Q#5bm8Wk\R^CD]3BW7mm\T96UoO=tN0<&WGkZ!(d#cCZsqbKJA8?07S^kN&pP2a]911,j^Up)]ZKJ&Qf7*g!A$3obshrBfC#%4-@&?Db6[<m3j</'dG$">L=E@5k!fdB_S/(WsTM_Xd?M\ZH3kK852UgK&81fCtHO!hRS6#qk>Q?2XBLn.!p]pKqDP*Z(-[=?Wq^FoHo/[@&.iGG;75[VeI)jkUc*=0:;,pF:8rZX.pk0X$\DmG5DNoBRFUjd1d@@F0q[g>\9h#`l'-JM4)_',T3ZpN,Z)o$;\6UN^=s_9q2OQWX\X^]f!G_57'BMu(aD]8ePWo4C`[Gef=^2^K,E]=J4Pc"5bcJemqoaE-O5B"db_B3rV9A4hUElM/GQ917QnTh'dqPDP=[$YIE3X3F4olL*tB4fnQ;?fA(k<k$Aa*j/9k$[=@d-b,D;Frd",qkrAnEYtjb*BtYa:\ik0H!/>S^*:N*Fkb&to=h]Wd7F&<=c:VXk4PU+^Y4)Nb_Vt)]%UW_`DD%g24WLsAFG9L2'd89]42cb3>=qfIh5!AqGtoos,:/r7@:VAj'[&c:>Eg(V-PCO)@n1)PbiODUV$9YaNQA+boM`j4u.@IlAAr27KZBi3T]W`)$%E,C[q5;]T*LtcA:M)FdtK0RYLY!_o0:XS&jD^o?LQWAhC%!>!9I@-?#Sg/,PnqnGu"d'6g_2XqFirV\37W;S.t?Nd]eH@&m*VX'3W-GF\R=IX.ZCc=P7(I(h;<-g#K%n6.OOM2:!R7Q1i6\*nek]uqD"cZuS9BPa(UUDlS$_IWT?<eb588[f@W0l(2&\0+Qn\<Nh5*NaOdEml)EVmMK+]S??D]M2A[b#H!0Ut'/OJ?jP96aEDYM<Y'F6"]t"]p,Wi\:RkAc[#,n<PuHJZGLiU<9I+*k&T`e/+<2@g<`E>Ih`VNft5X\"YBqV<.!=KO"XPAh4T-/=F!LYE2upR-&A`ncsl>+ClWG)fG`!)dWbT*?+a4l<<B5k@/@"ij);8DG>%<ap:YH.6he"S)4oZrLRGRF>^Tjb4?RfantPE(i>.a5<<B5k/AAF;X5dqY^f%e)mdIQUmAZX^n5;Hf)7chah@.qB/eoO$h2`hPfBCni^_BH/.Y6,p*1nAqe]g;Xo8CkBXSWn(ca,CI-`\9Q!cos$lYn)bFe"T;!oSj"g/S3TZ0.W-rbYr&191=SZ't?#SWu=O%&s*rNkR3d;S*FJ&6suq(;Rg=[AsF2A'[0_NmBK"BrfY:<%EKI\ZE<dbYQo#WEk;V#HgEH$fGHZg/S3TZ0.WdpICU*E`o$W"017ua1&(>eN7qVC=hFiJa8E@!dL*/G*TjXlo?Hig?5bFKqk:#lGhUB_#6(F;S.tLpJ3+RgTBG1KAWSk62ki_*(`=qa#Qn:mq\kJmV$IZ[HhQDk_H=,b:9F`Q`nSsacaCLpGI'^gpl)$c1gtA^V.&5CR3[S!itkdSh&[-#2@#@o!koMH@1+E>8rGXs&4)FC=f`Z((03CNXF+HNAEBbCTS\(EU,51a).gc^)a=-q!"V-cu8k@Q^*u^h]/e%PNAT@^:A2GBth':][TW.M3cjq!itkd5/WCD<G(.@rCpbjS&`iRWgh#6E-DOI@]<X'E6"8uX`)A`Cn9=_Tf!G=Kq#E#b(Bsi)iYg%SlM?5XXTbnY7<u=A.\7-Y^3!%8&ccM<Yug(bmX/JYB+_eY7G2Qle>HnXVtAsR?H-0q-Yu>q,Y'=#/c_:n[`.q7rI$q7<kU9jlrmg>8;;dU"Zmp_09+7lZfP=WruJ`aU=H@e?5S>(=7@t$OV*JRlnDh52,!mUI,J:Nsl)*M9##YF_i(!rg@[Ng%ohDd*Ks?I*S,2UGZRSng>KK/=EAr:R7ZXHae4rqs=--0_eB<V'\(D>1`j.a>4VbAZ8tU)=P4:?:e>@mg/:Q^Q*DT?gFhc*dg->%ae*hXi#=sgZD_Tc3='T=c:TDo/\9ARbdk,KnGR8e+E1P1/o)\qs=.X=*+;jb5W0iC"C-2E'YPTE%+HI3\kV(6([&=pWaMG>HKJ@ITEa`?O(eF'o^\iid^m^G/q"hrY`2nMD/`B3Z%#C?=1ofj[XG,iTJg^)W$1;;d*f;-arH>N+DFo(\-EoC?lZ7e]'*&67\4If=,m?q.I!?q:<m([E8i3DAtRWCSb;_YSrR+\<Nh5*M[O'_3$h)%?AcI0(#]J1rt<e&rbAfid^m^G,W^O\OYLnK@[5IJUVLficE,P%Vgf<UeK7n_[]G-Z95Y1VbECo@3"ZLo0(Q?^*I@q^2KuV-*S9u>e$#pFrd\DPhkf@h:LWSjKe>^\4\G)Np:l)R<+-eR<8hMH%CE^f&Cau??_I`ST'Ai4Hm%lfPq#;SLiU69i]=3bCa^lhn'-[^9u*Si!O'Jli7j_R1#@ee?5S>(/V`@ZsKD3s/R-`lFF#5T<boV.rG#LY8(KCKADm(,A39qeIK$:>)r3d8$*l@!j8+06s*JrD/jZZ06MhplZM@ia7+"X?FPr/eaR>/K^hc7h?07bW_p0u/Us4GVq\W8k>pUO@P3-E$qi]l#J3eaM(`GLp""uUnSe*03s'@5YEa9r^hPuWiDPuqFgT_l#HUSMlpC4(G\V<T_Q:`>)>!^JPN;fR'O9!_]1QHgbO.M_J#@I#TXqmWgegH3Vr]QF^MMTXBqhGI*V"'rDs%mApeH&M*sAUhaCX1:;RG49m-c`,E*5j$.Y6-O\c(1I[&[Q[D'Jau['nnj5QA7jR^^aN9C4dq0Q8%FIkD+Z03`0m$*7aT4_O75WRp&m"L0uF?+;nfS'/rR(`_>RAL1.=[U(#&,gLcHX\M%6;S.t>/hUD^XMr5m#.TJcG*TjX(>Ns8fofBrkc^+%asW=OJ*'s,[N9WEhr!k<]Ar7t/=3coY%+kt$We[A"n43=m4*\;/@ak:-@Gf5=f-)-n#pruZLY-daCXa#pq.MKLTP'c?,qQK(G8?5$fGHZg/S3T=`D]44I>`?>NbnL=h1W,oseenYk&*l=$u;XFY'rd3.?:VGM6:heaAH+?i39>?Z7nXACf`rlV>VcC3S1<WIJ9_'Dja>Yjud]_9n15ptp2Yid(#Zd+VVsCoD[Jghu!.L0VPm]1QHg$a0<Aj#bmX`"1aM92M3arFmUA\Fk7$NjNghcK()qhOK(Rm5jrHin!`N^\s1L)tJW"Ki<S3=gJm9j7Bk[2CR?nDA$>d<CbI[E@"[']qIj=H+pM-m\m8"1H_h/r2G-,>$JJ<dF0I4ZFH`SQ,%.c>lTEc_e>@8<B)_"ebqAV:bHX,^qMuRN&0/<Z8^r-]8lHBI4G\0hj+As3k&*kXn,gr/^M@6D<S0jG@_Gar3A-4Om;1H:-E2@5%i+*ZMaLahE>^[a0uQB<k^5k9^A1#o<hRkNfW$DeBu`(?O)"YefPS14oK/$VX!D5=.pR2fkB&VWs`KI).@f:leGNp_8/K+d;>pfdcsmmWj8`3H`aZU"BMkS@_NH@$M#-jh9YU?)htZtfDfT.3Sjs^>A;'?O#*`.2+6bTXgIC"DMccX*TmVQX`G!Wfp]?h4Ft"(R>rO_PnhMHI*S,2UG[-dp.a9acL/S&/j+/ld/'[+N8Et[F5k(0KuJ+64IJ9Ma#3h.(;Y,"=rG#_K+<nG5?^Ei0N[aIBibVBB!iq5[mpqXPrj-MfM8j(Y2f<Vr5e"Y=jfA*pq(0DD,TLRB6S/CA_,j^`k2f(^[UgKWcMj2`CEZ3lkZ?48)#'+.1=b\Ms!o!ajD/e+hjhWA%A[glW:eD="nDu#IpE1=7oF[h9M3h[U5@1ljK-5F_#[@T7S;OkPc2P]";B7\;_R[XN$Hd)4Z,YA#s1kicE,PXrc&_h.90%(;tdCEH_3l<'E%@H];?PI"iO[dVZ%39K1%d0]Mq](qP?,4h(>FDP\(Vd/'#Ga;)?gg/S3T=`@Ar.pHc?0tME9N_H%63@sb;djdRafF>IS][nmh0l-;>@pTBtFJj*N`-m3U9cof&'*Gkukj;T@-Di-8><I[Mb<O0n%t=9.dEt^tIcVMh"\\54J^l<]Wl()R[HhMn5Bjm6k2.D8-A(X]N`X`(_J\!X'48d<h..P4(8'XY\pMYtZ8(gOj4TYj,O>f>[5q<K^W>X;NJu1[UI3=24@`o)gfiMN=qrCEcaPYdUG$s]Y$fht%WF]AY3Kt;9C4cDmks3]\[@iTrNC5q2a=;`=WXpFl/rkb)Tm,RYZkJD(?F&<4<I6.jJKd:%%_=eicBKR[uP1Qd$gFi'CdUZ(519/eacDX])rFE^[1/1#I?:6q2kte$r6&A*QJ`@&B@]R<h9p/h!.l0,$%??/[hfWpX09O<%n3a^'mH<K%EW,8mjLaY3Kt;9C4e6mIl%k]Vr!Ac+Z^cI+bU?k?db+LW=V#h7gOh]B/6[C0(_C`cD\DAZ8s*r;4sD3An%5GPq<tce6UbANf_#WcmQ6I3e&)+9$QBSDkeem4*\;]R\3$kI&=4j(0_NQgm-4F'/KjfrTlJi.C;UiDSaBJ=hqH!dGQm/E"A23T3lsZ@JR/b5uo*\Lc[TloF$&QJ-I`J)EBKZ2bqXWEggS)LG5hPbiODa4Hs.5;Y:[')^,E0'qp'd*Op`G_o]XQW;n7;c\iOrDT`p48*T4-YMG'EB%YV=5shFRbNPDg61Lorq8hU+`&^;WruJ`d0Z/Fe?3<=qQkGTB`7-=\fjdq/K1XhHLM(COK\Is/h8`E-f1J:DtP>XNr1?<><.%:\(9W(Y1G"7[Ng]tcXkqu5(q?^]1QHg*i!['9C4dO^]+3`CjfLt@-cTc%@b5?h4U@tXF8pHe6`ZsP^FLP#4jGR#%r"'.h"&uF\XQiH=Q"`_PX>6%B[M*Y22>1>/qm5c]mTsl&NZtc?@)XO,QSU8f,Y!>N`FEljc@iCHI-OQ;"hGnMPoJ]iNie!in?\-k*O=drkCd_-+m$m1&imV03m0f8%,\X$g4&j4sF6f%9`(ib3Q.Z!2^cK7WH(*:G4512HD?@pY5Icn3p0mkV!bS:d7!B!$+(_DkOnDPc>Y5(5;p%P.S'[utS+b4f=@#bP]\li7j/mi`O\n,0ScrWdRi(\(Ya6F_WDFrb5.o:G]B[kFuGDaQnbO"P=<Qd+?kEA+X6T/5VP;#Z.g6F+lrpo7"`K,i),<A(hn`eBhS45P\^c[:GgeusHCG2n.'/[_V^<`;3>ho`ge[t!@+UAD#l<`ff@;cqUX4Wl@n`P:Y.)<^.(Rg76Ce?1%f!`I=Relh+FEFJFBK7S.]OF.&MqZ"QH`cajggrle<kDX[l4f3TB[iX5Q(j6#tf,4hNm89psN+>Go6#GGp^Y6I-?-'*Ba1G1IRI""hoo%^_62g<H>%q%EXCc,J&/:-gUT7`L>:dOKFZ2aW3.ojkU8<#RUG!b+On#tLY=Lqm3s(nZ`[2q`[k;6X\/hho0=)Fd1ZigV6Th>P-ghAD)bb3u>Y.a5"J6+ti$&h)Rp:V&/ai&DkUi-;r>,-9r$,<Y<sbtjN;'FOhV`2<CTmbogDpa@k(,<>[HhMNZJFu^4'nYnm2gWm5@]Z^,2'FXAX9k(qJU5`WEG/*nTiqRjpF,%M>NLH0F0i[nA.P*;cU.&o&(a&T&4^'qR-24PAI^41@%-2hU48s@0a<8bQd!(E9-o^EmKh32q)73D,P!CEH%BP#;*@L-tcn!%Jf<A(Zi2I@G,OBRApHLH<,<#ouKgtA`9N0e\]o4<6r^/Zb1\@aK3ADpq1Jb'2PIUeF$(tr4K2`frDK,5jP=<Jj4^%29m?,njgO#`$9H0$e:D@MsnN2=1gWoXo@H97m<qf$'\aHm4*\;FS@K>B4ZHkr/<hr@dBDaD@G?2JeMRMV03l]8RuiNM&4M,]1<ctR^MoA33TMD#HuH=_07H<WruJPb1Q((AHh6\/=3d?'cYB&e?1%q2)KSC+#fPT!RAbtX`J!Rd)RRD'R\A-]1QHgX\;]<0,gXX>3Aq%m[f\X0dpsWUg(6Lo3Kn,^ar.G3_Ua-N\b]Y!;t2A]1QHg6[>B_lK5Cdllom-0MCdo9HptV\L`8d=__"EXQEi=(Z=J]?%7[?];9Zkjq1jR>Sb,m/@DM]<b'G^Qa5,D_tjJe+dWB%0MCd_J^rCo_PJfklSuWXPVnu?VX=7Gk0SlD/]dk:eT+eOr?1b#Kq_eW3uI8o/8M4j-*S:l(V#^+FrgJ2TCQni[sgBc]@rtTWs;jO\Ye9HZG&,W&*cWlDkS"25'aC*#?Y_B$*;.L"tjJd>t=_a>(2-4;c8)A=(JdDkC+JeWN[;\VQd/:H9b`fMLX*;1="//Q>WQ].@7Gh?FPM+S^dOKII!uY$57M)?f#Or])i*i<6+g@k%]0eHF:r3"hdsj<<B4h[0\:+313M*B`/0GgCsk4mq\kJmV$J-n_K2dn^/u`cVphiBrPB.l\29`56lm0kI/*"[TIttbIjQmis]CL=_96LZfZBf_Wm!6M6h-OO3YS*(5i%(,.#f[A,Rk2"YO8`>pZ_DIG9h,L@*(%VH*YV3kLmHj5QWgBLD=[h(G5I0>;%t?,sm-hKY=L^5ebNbPH"h0EsE'IbBM4m[MB\j+&.9r\g+.9Q6Q3r`GECJsP+j!ir="Eikdlq:s;4^25HnjT3oSs8I5GeN,&+<k!HT<S:D3i([X&E&L4pc>?Pu*'?%lh6s=0XaYDf.beEff1NZ8lFm/j^\@Q%i5iZoqs^q&khJjijgRh;(qR`j-c0l0(8&//H4s_p[c7T<j!c?lAiaRh#FA(dcqq3Rn#SaA8:YWI[BKa<d(W64d%7RJ<V"5@\N#>Rh&s/9Y]X(DB>0XAlhOu8#<uBZCG7bXWEmQkm"g`#.q[T,fA>eTX^erVo.C?]c!#MWcKjmQq]=krie`^YBtLYqi+.pjf,on`>gQB\8mjMXaCPh25;AMT3qA':XF0?%Xo<#'6NL_L@>C\&*So6/kW<_KgkY!s5._--S=7V>Rb*s;jKbeNjL8Z24hK;f.hZ+<;S,P/246VaVr5X:n_@DMB!7J)^q3I_@Di2Uc7T'T>A6MC[,)hs9b!T/bpiIhO;npW>ADd;\eR$1n`Gc#7t7r$[6#ISZl#$/WsWU"BA['+LgZ*CMpLp=*?PrbQ%,*Bj2k8iTA$D2<Wgt_=56X!`-9cSCCsh)XG%\QJqc17nWBq`G#T2pDQD%$0uQds_T:504a2"$PHF#']c6Q>jN0,b\#"6gUT]#/e=CnmG*+J'P$*^hNTTnU='I(Jo'G5LP:X,B"BH36[W,6U=Vud0bM&+Z:![AS<Gd1`H')@_d)bC6?#j(,ZIH%P]_OK"o2:#Yg\$>X><='r[GXdVeBT[k.H(;ng/S3T.5ODrg'>^B%8?H5C+:R5Wgi9f<OHO(?H11Ef=RNS+120QSeXZG)Q6\FI^lro]`(t_nk<DFU>h!\9"PRW%U@&U`Q,Uq\;6u)Q,%/.AV\"db;kbZopsVa[HfNui&]r)!$5aO>pZ_DmUqV6i]C"CZgTGVWEk;D#1k#b"n43=m4*\;fQ4p+/@FfJrkNZtAH=p;;S,P/2>3PZ.80%hNit\)s"nHccd:M%mOmklrm9"T@!M/%3k;=n@7gdf3\kpA##KcaI^GBdWZF1kjXIt0g/$Ec\B]"f%r+2S]AqKk55t(2Gu3$P]1QHgf3H4%=\J-Cp8pR02n6'5n*5D!)q'sM_iCas#@DEMQhB*<eg;OrY?NeWS3+bcbg631;9_';fMFos<69O2QeUo!EmjT]VI?O_Nn,!DoVjcp;!g<U8mjNC?.*.U9C4d_Q](G/UmmOnDd1Cd[?C+HG9te^1K@F*YJ)i1>0.#5l.8`JiaB@j=2QXjbH"!3##ejc+H5T9Zd7s->ZUMQj_r>g;uV[/i1%&embHKceZ-(4`29YIGa[.C^>*Mb2r37d8Z!`%T>p!K?FQAJIE6V@GFW[6ASfKHb6+b-C7X+Z0K=:jJ$jL&;d/#'LY=d>pi`UE^h]cP-*Wi^1>#kXX3[-meS`)<%;C$ueYc;ar4[ockDn+/+5_CQ*Z<_*M<]89;+p:;P+0HbiP'UJ<](e4177>Pc(#Lg3>?,?rb;Z?h9e4=9m3#6pma(Brsm82*G6CRHus8oCZ7m0h:CTgmPsdL/"*pHm(Pi1'Q+!,(MC5>I;u\*/-!i&1-/c#Okfm^DgAIlWruHZoOs07fXZ1WHmH/gKBB\pPILI5['jjVUSgnHKY4.)*E2[LZhDq;D0C<ZmbN5jE2`?qdW_pqr4'^$f5#SH*&27!R;t*53`spmZc\Du'#X.L4[*oG/:RN<a,M/,8B0<b(j'_(SDBWHL%Oicje)>UoCp$FDt9S#F`s%cC<?dtApOD-/AI0'"6IC(XZS!bCC<lJ:2GV#QZn)NLA+aX=#lG5,?s?>.LZe.)N&E:eWNtJ\l"`0nZUP:]8l1DqY.b6m\fWsl7"e%X48P$+)5@8_S;5,#l6E)f"l@Lk]V>\C`G0FnX4VXDo/PUPq3m^TKI$_%(l!%31+TYh9H4W0VsC<*;S[J%Ws%,.*h`M,Y)uIS8jW(6i+GJeSCD1,]::V%L6pVI=4mtgjBN1YEa9r^hSUq'Zj?3=PJVRPE?!a9RLe$+/mb!]-#i(-X^^0NW_RM6YeC/=DHGBFMh1@N)(>&__X6!I+[jUTN)i\1Sq*-`[rG,1mtkA-Y(`e1\#)F*cTPD3o8ZU9m`\Ed3U3oHM-4:N;OP6aZ-f3*I1Hk`LM>(9aiIr5A)0s>CYp4hD/kT#IpG#2*#o/b^/7ggn_pH`[3mZK-si<6abTP,qBtkkQ\k^#!Wee-5c`ie?5QhLQ(YVs$l-;EqMu3^11C%%;+MkG[FIkVsqD<S_94q\>C6#C[jDKYBSdhF(\G6`*%eri4D.0TCkRHI:SnZh8j5<hUdmKII1'r*#d?J0kYCUemUX,9&@n1!QiobHBYhN<n^OTX3%HbT/$dsE[-\t+,V?C2ASDcPL#oG5aCMuJ&\Ut+q.XnNC15cpcSL\\2e-aBq)b\G["q7dCQqFG@p/2TB1(Se`g5-!h1.=eSa/aF_8TKW&k]gB9aiFO3H*V(2g]g/SpDBorLhG2oE]KY;?2CL4AH5rE%d]e^K0IO3a\<(hJfjOdUBnB6A.Z?pKl2V2VW^eK[Sug-j<C^5fScYEnWpU(q3$Wnho'5:ntlDS>_<DX]`j;:+=dJ@l6N\XRnKETSoZ[<HVP6-!2:=1qYg<<B5cY)Ut#1+pf#P:n#8,lT\;4@Xs<7gCM-GP#o$>AoKg\(trDcpa"JiEo7F3kBM^f@4)1^?d%Pgtf'Na1Mm!*+h4@`BAk.pk"gc<<B48V')YrZ8VAtgM0`OO5rhaCNFn!4-B<Bn)q!20%5jQA#;XHCV$?c*Td74R;6'Yc``QPB"Bd==Y<XpPEF\p9rK`#?0:on/[_V^<`:>pr[mC&7Gil#T;lHcS)[`GCs'APP`O*LOV3msROCr<Iae]XhmI2j0XdCme2jir[_YC(?D`*LCqNg&Fgr=I3bBs-ju'qC/@DM]<jOI<ZYqGoE^Sa;:><-3f2B3jdg*$C/dpTGQJ,=?X6G)7B]<2V<.;'R0C5OMdgE-YC=cku_0*h1!BeS(]1QHgp7-(N9C4dA5B%W`=TAu=e?0EdNBJXob#5j3j6P$jT-jNN,99>c`K\,kIE(.RcX4_*>jDd/:+kj4R*rg]-:YE0`.(im`ZMQF[gSt=ji;YGH^Mu[C0(_C`e+[PAZ8tU^@`k&.6DHB4+"@to!4ZJAToY3*a$acn,$rSlgq4$?MuY]>B]"moq-=:CoRrY*N^pgku.70=16V]&m1-K)I1E_]8lFun`?sY2^P*R<e&".TDh$T<TfKfP?#SQ<U8ODSo:GE@6#7^-HZ["@<\p8VSZAZH$ZmY[(O]+A[O/2jq>.@Yg68IMT[$qgL^?6W.Om;60;fGE+cUsdF%N4/*13/_C8b#_CgnN?GnV9,@)]nDk5X_YWE-@Y5L54-oaAG4D;Dj/,4:d[\.D@en_*f-*S;K,e0)8Fre^'I&8U#B63pcG,pU7hItmeJo>/$K9O"$&RkFhmL*=0^ZA*hZD$4M.,3k4XMs@]H2T[B\]^?6dBej'hJK`*@cG_I*3I-$5P)!&>CYp$>]#9IH`aZU"BOPk"IHFDY%,VT8nRf=T>%)Vf#uIT0#UV0?1=+;Lb4E@Eube"*X'9[`Fm?JoV[=Am5V-dR40kXpt`ft$[(d>o$;];ak!)1%p/)Xb%<6l!#O]f"IHFDXs:8YO'`-lVgK8':I"WonbtRoh^Rl@QWG\Ros(?9E;*?_Lp3t%b$.uW?^]NEKC<0h8/=$tnMre:j#R*_i!rEb:`_ML"qs5b67\4Of5^D)q.I!?q:6X8&!urjJ&Fdg<n^OTX76UM93H#]1&;NF.I:reK3+kB?oII>_>?u1J$SX@b^3ggWg+Rb=`6Pe"sc"5]5I]+Ah?3ekOfY^!-.tXRnM%Y`@(Z!OdXsXdCU^XqW%&'<ZtPNe?0EdN@,<Cb#5j3f)Bse<TW\bp3Y[9a8=V+fYL^YYe+Pe!ETZ4o1Jm]N)d9NTTWjOALg'Yr10A$)Of:TmcPPN!DNF$rpo"'f<K\j:b2@rpt>DG[Icq#/aNHRjC&1XZIH%P[66/"*NJQceK8p0YJ07#Rtti4)[ak?@gFQ&/^*[)Sa8f24luILeMr2KbL&ij81TWn8GPgOfB^Z\O5XGl?>k;H]pe$`RCf^4TY*Y7(kPdDZXDu\Y?"[%BsmVAD!.B/G<+-C?s)D#44o7%8ZTgS@GH0SXb1[RosE_;c`4E[4f0-.d.&+mQOA,A[&X=1;a,&L?i0#o`ie@0leUqh?;n?-YP.i!q\[EuYB+_eTCm]E8%2mcO"sOn2euh,\=iT.oDcSPq9OQiqtYaA-F+E?FhGRu0ji]_c7*2ZW;Dp(],TuqcH'S-*#ZaDa[!Zj\Lc[T7R&O-I)iGBL2V<^.tPlgSc$#L!5<:#_@?R]Rs/2K%_4-@LQTa]!1;%n03j9;(;Ri/AH;d)kFEEl6S8c)@H=]o!2_jQc<L6k`^Xb-QK3PlSJ+eVYT$&\KTBJoho<"(lf>@K?a:]16Vu=gH="QTPs<tp[Ak[QN8*P?G+P>5HXuY"a$6Ni8FMRGUZ@'lR^_Lea^kJQ9XepJ3q:JY4.2ffg\<;[ZDr&mD.qgrqsGB$qJ@j#PL<#D3El#?VcIqf*P:ID%4,O[ooi_cm&RZS*DX0J2qM_5JnRb/l\AF9_;qm%!2_8RE6@'+DbBT8Wbrh[<nOFM)GGNZ&72h]5E)gHJ#fdliObmcT'YJPi`XarS6T*;Gfr`\]cYBieu`\.<p'0f[=A4'msQ6R]ot6<QI0<imC%JCESCVa*18SW\D>D*j77WYoCp"PPOHBV39/*'fTO(;#?6'"3k&*tE:>4R^V,tA'E$3'M[t0=QWt:+^hhQ7mU'hggFCF3jD2rZF*@N>N%h"g_QDs`JR't$"jMATR<Y@m]7jEI5c3en#[9UWqg3]jWE+/LESGoh-dLE*j0PKg8)imd]J%R]@HF-W<d*9cf==>Bm3S)&!&3.FHh-Gk/u\0@[WV&iE:?Tb;@t6%?Qs[6E4'p+2!^E>DGD<WfK,]'[X7pc]?+Pd7iiY$K2lK_m<0XUD/eM&3/?Y_`:98mOQmmW\OK(UqL$5GO.1PV@C>Tn\*10C>1`iUGfso.5F"aI8iGi::&NPMmbJfT79f2tY7TZSAA@+@W[D+)Sd!AbjZ,N.LC3(AWo(h:%n2il3,WiYSF*b6nSq3^bg;_f9H9[u$WJ_"`#/e?0r3.];S>Qq8E/2J?@qIOR9o?oH1'uEQN[@CgZWOc<LDI9[gN.M>PE"Eqk>+rn(/a'dLC=IL7j^%a0VFAY<9kgota:eR43,<6Z[N[^p@(,I9$5hg^YqK]BAFsnN$T1b/DtMDH9<M>::.Vh"imHd:\rVYQFmpf%PKmInf.pdXs,kZA'CIju;/SN,V>MV'H!IhgKSA@6=pdou_?'?=3;X2lJ)gn)C=8M(RD,>h-$tXVGe%cK"6CXRR1>RJ4[j\_1/Am0G.d$O$b\>JK;PqJ<JRFoVO!>44H4-99_oQf")VQL>snC8gRWLSAW+r7_MKX],hVPfJ>Tg\kPCCO2QIs"XEjR44Os(/u$pSRC=9,M\g;]q*;8LH6B-GPuO9e<:uBd4o?(?C(%tU(ub989W08eX!*95O&G[m;IB3Jegi]jPV>?#PRi*JmMNjo2IBR/-(4Rp?h?^mI&8;ia>t@CpSaQWLp[k(r%ilQ03qoqJ6]1)FK7^pigTd2^)1A=TAHNIJHs@5Q#A7ZGdQ-?ekT[qp4;*eeu$"k7)@;,EM(0JUKKKGCDF0%\uNG$NOQqgMaT^ZTjc[^mE/S!<>gVSJSFr/dpTGjK\acVXr(@f--Ian1\lc!!(JnkCr5`b5uo*\L[`2kmkH!^1p,Qka(:Z3nj4dg-u2$D.lJ<&'O_%jmPgPXQ`g[e:/J88EIr4rr(:j]f:A@8@CCb$cglsl;-kk#=:[.$NOSGI=(jJq4(gRZ?Eu;D-i#nH9\F\q1TWi?a\(lI[eO7gt9^n7r+^a8G49Xb)mEK/>b_8X#;oOrV?-&"`R'dlY9K%!chED!7R4JatJ7`^F@9S#,$*L=^eA&C,#0\EMIM:h&cM@?KG@-<<I"o=rp]b[!,*B]KA=p^o?_@0s'_a:+iSi'fK.%][2/9/).2kYINc-a![nsgA5UB=/4mQ<k8mO7Q"kRX=spl4L0:lap=&MTfg#2DQCYB+LF0BS.uHEk4iJpJ$h"dfLmh)!+<7dCJjmod43A)jD2rZ1GRUWGE^A)Z0JAm21X74T7u+"Jlg$.>MTl$3d>h[AUjM;-^Ssp-4X>7bWW^NP+F_$j78l3ZT8^0oqnbe.Zq7E]=Tc.!*6^n+6VtFJ^qmd2JZ_+!9!7'Q_!D2/u\19F\p2?(WfV5Ip9*sEQlOL50GacA$*2N_qsslG.eE(b^/A25-O]dg&*uT+.oVmhb`,):t*Gu5sp?G[)$1ea;jY8CB5Ed).nm"2t+OUSZj9("TU5^k)J:tH"<sdF)K@C?gXD_>=1U.GBk^m*UgbF=1N4PbK.;tB3o`T^%Yg+h96/+A(E0VnTd8s3-<Jb:8o;]WqNX+@?/[q\@dbS5DGT[\qPXm*!r'lQ^rb7.0!!7/)U27n%eL]lAslj-'nc80\bf,8?;7$)r+ffSZ#a[52,F56SB\+8;<Sf&U*Yi3-=.ug[uJp1$b+fpq32FATu)ac++gY-Z^h)S[1e.[(2mloLKdA07\'.(V^&.#Je+8Z2am%C[LE5c=MD^Z+Ga$Zp?"+ZauE4hNBX4?JRR+j#Ns/PqTU.'ZiCJ^%*/8f,)aY9UX)+j7=csVS]m=R]O7d3'$=e\hMW+r[,;K*GG7XaK1(9!._OZL7s"l#i:N_Dp&g;([?E+<*tRCBZo?6_H3,Po'.'X0iu8+<E1(2+RJMH?9)'B!C*R><n$u;PKWgW26Sf;2Q3WuT9RA$o/(M^/(C6bnu"e&E@Xu5Xi;6s>lH,gQ?^=XG+i*fC@PT^]u33p_:Pf8iZL1X[)O87BqX`;QN[@C>AIIBL$e_Th["g8Zh)n^Jo>hFg+IqZY<5%>fAH>'>Pc&B'RZ*L(')-lh;:LohpJ"N`+Uj^C$5r,_u[du>52:5`6QG8X`,#Hh7JLP'RZNX(')-lhJ;%1cMh&a!+.(>"TU6IG@%ch\L`8dOime+R*IcH>_cQ"^r+6)!<>gVSJSFr/dpTGjK\acVVD"fd7:W[p\ji_mhkY#)>p\L1NX.d#.^L-a2d09,C._PrI-l/PQ'G?e*AI_dJM<l2@#l%pIica>;UZH\I<Cs=TAHN9mPp(Sp9,(_q^]5g2>;l13[i2pX?<OW@>l[;8\D0YEm?mn&iqH"g]]I%c+5Ai7pA;8$`#ikI#Y+,][&cOB`P$^i\[r>P1-00!)cXDGI0sCmsZJP\`9]eRo`Lb&>[]ZCZJ!G6b-OIo'8@HIKK,4IaeY7jd9Le=>c2CTM]L&r^/`F]pD5h]QIL4?kUCiN9P[XK$ToLSF`6h_tujHafstF#C#k=3FfBj?#HQKmdqf7lpuaa!nj'6IJLZ$NOSCEej\oHLjS+0N6E",]cXU=DbEFD8,M">o5W:ol]'UY3l:%ie_.^NT]5jYj[h7iauX`,F:9-?I,W!\AV=KeF#ue]mR0_I]5?>D]8'0_S/!J2j`K?f"qms^tV]6+Ptb[?8l%p#Hp$IhE0S$\#LIKlAf06?C`+-)L[62h?2TrL2P0WR"I!Qa(3?VrQT]NR5M0P>rZ0:mX$0Bo#Oi!p0oG5i:uW^fn7ampE8pbo6:7BS'1:ZCLIGJi%=QGqtdNGXR=d$)M2&3pmC+]<q+\(N1i<=QgI+bH8;(0.mpmbFcYbk3>BL$(;"(>+5VCh?d!!a4mI3![%=eiTds,[1&0b3G9&KATAB6i2c\Y:N:(XbUH1T[eWNUr42T9rpGXko0^9sN"TU5\jt3QY5e!Qd,1(X!Bbe'_M`*5@RCAbuUUTPU:s[L8ES8KrbQ&[mE[Zn&/WPkhO_EXMHmb8GSCakqS@UmX\Pi6MHYBu:]+C<6B?op\G=O?Tn]A_[47)F^AU']PYQFmp2X?oXoYe%S@Nt$W)qNiWn9OGghi%)CFcYbs75BfBYI^hiWq@b*)2e5f\ZB]+VlpW])`W=KkHAp8p$V?KqYiG%]?C:Cp9e*fEce.+r*4uc=UR:k!,p]&UqcrD8%a89PQu$uDq.J&T*Ft1CT^.`3icG6ZCu&WTc-;kpij,3UHpP:OiOB,iiJH40a'APnbhL'0eVgQ8UboJ?9e9JL;?tlq`\1ZHuEg2Li7oHMjld%?,s_>Wh%Q3l3M$K2qkI.`D-0r-Ft"l)F-6QC3d4>ahhRY1;aTs??00K!4+guMgj``j!#`+]r@k$3rDOT??pEC<hfs1Y&*=%\\p$f/dhYe\d,lH,_+jHYMoA=GMuuATBga%V/f^gmEbQU58&.<I_[CRep/FT"j(<V!)2R`!j6%@>Sb-8a^kJQ9]qr_Y!XfLi*k]P!!&nfc3r5IQNck4E`iABds:,1l]B9kGSmtB!.a=2r9s5`25<$N9Cb=GcA<o;fF9&i_I*(F3ZdaeXNN!%/:`M<b5q[2DFuPIGR`QP'HR"Aia!^oonEG1gDA:Fdqa1@\L`8dOime+R'+YEQ(RlOILrGX=P^q"VcWI_h6sn-"lWHs]1@UWqHJ[(#i?r1nmiiSnbfeM1gcWb&Cj7N;;Khs/dpT?AhE?L!5+SbK_O)f03X(!%9lYlYI"-!NiMg's31g*\g-!F/fE<%GRb5A^/MVPi_@O+!Bc<G(')-l6OA_m\ZG5`e^*"2CH.oB\k[oMXn5Inea_-o-CBE;k/V#TkZs]`(;Ri/AH;d)Qi*r4gSV41YZ5meS'sk`76qC!kB<#J?73T5aaV2`<)<F#/h=H\P*bb-??00KcSB9E#6<\aS'Zu_#-CkE^,i<_U2C#XY!9)P;@sCaA1fC8?S6,-?3>-as1IEu!!)/,rA9l6mgeeo%:rON,sb&('B,%s"cA@Tol2Cgf"!jLo2fdQ[+G&@SBLcls0'[srpuc^r:e,/r_6qFAH;d)Pg&WEqCF)Q`2g*)S(%C$EZj13;(I1A:P5$YFRW?Dk$+f+S10L$X1$b7Dafp?bZqQ#Co`-CeB@$\!$5mt[LE4es*K<H=6H%RltbqM6hCPc?7q0)GkkuP!!!!AoTS(LkH?>LhfSFn?Ua`IAKN#Lft3?h!WW4NR.LPeLKkSp!!'suZJ[e)Z2ak)+=<EYf--Ia!!!!R\Lb6#\L[^\!/Q'cZ@]a?_1)j+He,p"O!iq_o!fCE/-#YMLh2`0eRLB!WVlYjkUHCh5GJFM81k8M!!$K1cXhNR$EHkqPb6@WPa((FkE^m?RL@9=*uIWd`dn;km/DeZ"QZig!!".-bULLWh+I5q%jd#e3O*,RcmcRk8-UfZ/-#YMLugiC'mu`iF'*_'H+C#)9db!bq9!+Q\L[^\!/SUDiNE$[>oro-^@dnj>NE*40')m5;oiMN!!#88cHHD;(\p.Iq:P81bGs,HQc0c^AH;c25j[pLXF3gdAT:Fb=TAF%&8S+X2Lhd1r6';6791f2lZgr)X6m?%n:U:4Cmi.@(P7+XAT8d%/-#YMLg;/Ce'2I?,36$0!!"-bOn;NH)(JaM>S[;>!5rE0i&]r)!!!!A-C4nf+dW?4!!"aa/@Z2#/-#YMLrj5EFi\+p!!#8X/dngL/dhXZ!+KtOE#it%!!!!1PKSRDONR\*!.^GA(0lW"('"=7`8n5^3omRH!!",gQNbtaQN[?h!3m>Z/cWKEZ2ak)T],kGr6IV-a+$&Hn+E:`fDXk^r]V2!*Vo0]7$_'n!!!#+r8:L$SD`:0(6A"OK`M/R!8nQpO+6[n%Klb3!.ZS`b5qYD!8nW!`W(Zj3XYof!.\i7F'6poz>Ym;?-'nc8!!'gbZk?Ni=TAF%!*kLg('"=7!4NLeZD=f,!!!#/%_4+j!!!":iAKWH_#aT:!5Oo-'`\46!-]TQ"TSN&^g5#m!<<*"E#3OtzgkAuKzG9N:V!!!#7?-$RX!!!"<(NNXY!!!#SKj5An!!!"C+dW?4!!'f?aCPAP!!$sSE`iAB!!(f.>S[;>!!%3dQN[?h!5Mm]AH;c2!,r`p=TAF%!8N95('"=7!-]TQ"TSN&^g5#m!<<*"E#3OtzgkAuKzG9N:V!!!#7?-$RX!!!"<(NNXY!!!#SKj5An!!!"C+dW?4!!'f?aCPAP!8Q06!!(r$If2kA^s.+I!3<Bm_=O&GE*q`\!2DY<JCRcri-EO^\1dFiJ5MmY^hTrtn3#hjgm@gE^aRM=?o?LuGTQGpm`YM3@$G:/YSugK4HFaspLX=*0Zp^(=H.G6T#\Kuq_EX%)!0EOXN%gVcXU;!I@7hMN:Q<8<b's<k:s1!^<Bpa7X9.WX0M*/o9e-K?fj!AUHCVgeQDS(H-C'60Cp!1;4\fDC92dO4Q\NVQh_$).*iB22:ap8*qL<<bPVNOP\16*)XAG,O*M3/Ac;`bb-M1PNHGc'a1R0(14K<Ajk0[9`juE$@p['$RD/`\o'??WA)2e#0sBQMb[1?>H$01gZ0oI"R+H:ajt?_04?J)D=SLa!b\O^Ao+upSSfPU]XF'G!ju(q\q$XtdcOO>?eie7!o,@&?qupJmB*YXZlQ/0LGn'LZrW4drZNF<hFUt(a]S?;=IfUDJf`A1o\d-Pk?Gh2Z^[PG\!,f[M&%l$Mi,%NlXD,fjQF$Pi=6^<H$TmUhCAioLR_'\E#G<nhQC2*!0614i@Z:Q$\GnZjs,kJ+ramehec@2DRUtUtgri8nDGFZ#"h;)BpK7CWs2\aPJ$TpolN!/]bqekumcC5r2^blM!aM7#(@WZ;"_X%BJi1Y]h2=-+i8Wh'J2b"i31F.gX@Y&1?ECC3(FPOQ]ZFa$g#TGH9laD2@ZBInVVd:2r_Fs)ed4PaQaI;R+^K+k=(BrJO'L77RB=EgZL5]uitb+&<&Z^2,+$9`XG$MnA_i>[HUi*ZCGK+VbISL2OAj+Wf]Q&f?iU#BkH?mPs7LYV=n5_P4[*$9:`&%8E`mU!-"Na\$\E0G@bRu$egrVuhdNrKbM4HrB/;D)8\%I65M\Fob/3_jelg,TbE/`2n)t/'FjbomIJX1K6Dg6a+Ll/4e!=.Cbj_4KCh9c5[bRCkUu2[OI9$5[r#?T&=L8.^pMbuTbkr0839e9EVELE6O>FshS]\>$:G1r[bZ:U)bISKGK"6():1<AFnu4aEqJCV-X4g^iK-TH_DT>B%qC0J0>nC8B2q,5.dfn!bAOc><Ao$_1*&RBrbLt)Cc4Jl7eXm=7>e5'dNfP876-S-e9I7u*dY$(EHT!AtB:-:R\7?PU/UqeD2ds-MSQsaZQk>j!oQLXDI^o1O#eq[PF^J09VN]1aRq[dcem4ZFbU&Tu0.$k#MJo_mkK)fO[q\:l\(+D8c\:qWTe=,P:3s.UHb[Qma@((c"P9fqZsD@d=_<c1_e`nM\PH>QAnh<Ngdr#WlTa0e>S`i(/dp5UQZXt4=Fc<nb6$P]ZJ]P>=g06`XF%4l!aM7#(@WZ;"_X%BJi1Y]h2=-+i8Wh'J2b"i31F.gX@Y&1?ECC3(FPOQ]ZFa$g#TGH9laD2@Z:Q$34UTu9eHh!-C4mOP0:EQCFm9?a^kKkE`m?>\L^jH>h6Sj@u7nuCJu&iJ#'3![Dg1Q^"DuFpiQ;4iE`cm`^+WJ^Tt]X37PkYm^H?[Z<A;0@EZ=k?Qb[mfAl&VAS:3aUUi4kXF"rB'A-i-WaF(h,5?>g[Vf<EVb`6SL<*s)`$,TIWOIG*ljRo;<DT0i?^n0c@+HKf2:2bPo271[fIb0Uh2An9QJhKUYQ'(,./kMcl[X3<k()mK-W=GmE;/TQ'R[<aeZWji4!(f2j.lp\>;!/0!gr=XGO;F(a@\GJg]cXS"2;j0*M#Uo@tMe&PrsNpcC/=*)3EYiR@B\<[SCOZ59FY+XPhj,g6ablq$skd/b.:;\O6[VXi&:Go;s9BDr(+WJfh*<G]LX?8Ini\?=9`9YhQS0g9ki=WjTAn@riH>B8lO.'6_N_N$hoF\Y/0lQo3&.2Cpp@1,n7Bk>"KBhG_[I_K%R//M6MAVfh&2T0E)%>IT%HWK[^<."FuFn9364e\)c$C&pG!@Hl]Bkg#.3>nES^g<Z@pDgsXbVdquYAChl1egu1)aGa;5DGGTEH1Lscga=XcF5PDdr94lun?$bE4ahq5],SU]%@b5Z.79/Tba?2c8Inkr?=9`9n6gsB`s9ZO.&:VGK(+`H?>@?CB*A<KVW?*#,ff3<B$IXENQe?Ok%;+%M3G2,CfUrpRl0s9%ehP,a.GO_F]QgOo(35lDr(-/[66<$8&bZi:3s.UpB!u>J-RSu7VG:TbM39[)5FmpKH72p8<E@EET+%ERUseaR8N,/:uP7La.)\]/Y091js9A!!l6WRAHhLn44MDc<!P?lnWB7&nrYYXNKYEbm_.6s$XfiIG1;j6G<pJtBKpXVmX&;9`c.`aecF)NCR.,%A9KXc5JNRF)3`ko/R7)d-S/nOh\(;7f;:8$dH95!@<kKCC^O?n(WNSd:(3_*S'(KuALK#VSb-<4mrbb:!9UoE?+XGC/*L@p%b7$D1j;61dV(jc_R;'n3ScGh1,J/u6]m6!0kS\9kDd\L:S!tB;f$Nj^<'LE>o[D%n^c;BRl0s9%ehPr\YEQDP9-f;lZ@=md_!Q7Lq*o1aqoKf^(ZtnbM6V)(cQn40'ciF(!KSTNWYY80'iA*YlHt\$S.=^3pmk!QLi1/rJJ/-DolSHMrb#uioICq2n:J!Rp6`18M9=8XK_aA-^P"La^r<AjK`/fE`r-GN<QgO\LcZ5/dorOQN_/fbISL*/AT6HAH?^i=`?:0/6J*@f"G0q!A7,"$[@lYK!WR1_4'Gjmc=Vf%K,fY+dWAfe$K;;f,]FcRP;p6h$%2Aq-.`3o()YZJ8772_.rq(4.<c(=9kKUCR1AqE%c67pL9*c\2_#Mi(Yg3c6ek]CQclP(MbS;`P)1r=hoO3>nF(>:ms8bbV-JmPIB8:`#9#&EH53tRp6`!9eHh),aWX,el[H\PKO$ajKd][E`oUn\ZC._`WBD8>ScfUQN_#cbCVUnA_kPJ20MpKqqL\"M(P;8s6*VCH!26Qo'8Yjf]J*?D='MGY-s9RBPVK%7VbYWoBuH6BA"q$fR7gDh'T#;n?nNia,.huBPOkn[9V;KJ)sHDD.Q4/rho:CqrW?V9MG&Y\P=bmeoicTIsJhuY9'S1RSMRWF-;0ZcTu!M0$W3^S?ZV4^7DuoI6VM05@o$hB.r;I.l+Bc9sqgHUU=Z^HMope?TIAeqM!\^UfY`?-/ViCG+X,oFniR</h<;'R9/Dn/I&hO1DZL/S"e+jR4J/O/h?bERJmU(I_+76LFKke\ZC-,G9CH(H;d_d;?-N1FmX$o&_C/;fgHZ!T<,I>s6!g%pHO;6QFEGO_(j'ib<!gQjNI.sF<dlI;VX\56F=UI?*_6=W#kCoH$\f3<e]?qfR1;F4W)qZQ.@q%7QrUfIpBnW/%MbZ/KNVSna/:-dnL\$o'VIX[+h.%UChZR#muH^/K:f]`N@Bj&6cPAE8u'g7K2(C8bmLQ53Ackkko1<1FTGe8K%?9UfC`mDGku)XBB`'r5qg3mKDn-:^poAH+oQpI/KKlXb"V'73$JnfZWD@K8CO^?2>Z\Ic;Z?FXt:CQ7VqbM%AGoUmZs@B-iVB#$Ln=&:aNK:jDfQI.5Yg!j.+Hf5!4[m^YVHJ&Pg8c"1dOh-DH/bdT@WqUP#LC7Y:F8IsDDDWuB`$')21)37IljJ8&L7t_*pk.XdR23qI9]-&)c-Liq:T6k)m$rsod241d4rT,*^ajK5ZZY%nbkLX)$G3ZLnrRodS%q=2]F?]J%gl,71\LCIeCmX%Jqh4'Ia4Ju30h6C!a[W>maVA`<4N[)iF>g'^j+7f++L]iGVH#Bn2i`'Tr%h^=`-^G>G@7g.Ic[@1leG]*5'#P4h"CW2iF%=#-K^G!+,uRjR(FI\hZkL+@5,ZTcDo0hi'-&'X2un;)6a(=Sj)7uc$<pGZL?,CecFT!:4;g^j#lmSShd*Qq0/^?H$p\\D7MYuAf:MG*Z:L#r?<X0C34Mhomg)Na`rD\oB#en^<=.UAfQ;n,_n=WX]tR%F?/d+khWbP$g"#&ILW]6br]lCgX%Om>d(?lZFY*&3JE+_4EFR7h.bbR)%K+q1bgf6r[!:^+"arUG<s;4N(39@Tdc;/4J(9W(g>JX?4HVQVTb_#=;a*KXBB`?r;%u2hS=Vtl'AkQ1Kk#2B6V'O6#GGp^S8nkbbn4p9I,#%XLZZ$ACfDu<W;p-<3>-;1_3X:AE9k-j7qZe>0S'pdusB:*.OVll9,&2g"0Kk`gG2.d9A6VqShp=bQ47$p"dr*[0h-5<6:OiF@-6E##3EI)%K,\A.6)tm[N.icJ/S3o[+EoH19U;';9e_%b38?)XNqfR>EroOj+THB%beufB<Z+qNu.XdF('83B).ESW?I=\8,H=_WLN6S@%D?,cqr.I#UiQ:idH6<e^?abP:,MWe4=]UG]&5f$Ebe5s;?elTA#CMSY7tC5r/`/e#.NT0ubp"035imlTdM3je0Qn"9#B(!NuE*M+.=DSZ);ig=pXfU\E*_B$hpBXHR3g]aBo$gkIo\j)&_8?OZ&)4IN_W'@5+he^G/bkrYm7XrI[=Z1\WrT3IGC>k;qFK:86Nb?q*Vt5qhl_^[_#>^o--M>p5IDU$5eqDc$`4+(0^\4rKDa1hfQtiDdMYd0VS&/46nZ%jWo/GcBMgt+kNB:@HV]%q1cK\2X!Jt$KEc.rH6,9TTP_[4&G-DA)P2KMF06_\uKC2fVBSDQdLS2M!GX6.nhs7oS+2cYL.EecGePl#pZo%pTpp;Ns[i5S$RXj3"]+_MTR#e[u;6#1e?a')$5DFY4c\V-%/1^Yr;<sh2*4#qr\>uYhH$<T]k[rL?VY05jRIY72S7gD(4(E`Y2b>^TinB.TfP1E:T2rRiR:T=BXi;6s>TNOh!T!<%UjOHcb"FAQ<q\+>r'^:1_M3X$),>L^N_Y]#'C&XToLQSp'n1&gJm]Z;]@tj%,%3UjXBB`@q/s+BrrJ)>`Q;]I9/cmsV78QX#)XdRC+ehJ3of?JZFIO<E`r*e<BhQ:fB)nTaCX3"3o2LI$bGT!?^"aG]pM^u(O)!H(2sH7q-4]:m-N&0!S8T`FYD<JJ;]W7!oE"Di,!F:YU6o^Ha1Ql>b#%7n0XJ*B9UMj29BFcM_u:.ioICq2n:J!Rp6`18M9=8-EaVCWnuX!?VG9U<h8.J(\u>qq+Y;'TsOWF]`'>lm]Ii2cSeP/gJ>BrebFd*k&t1?[cBE_^V0+69f@4?>ZPlO<)5WOk01[=DO$o?]Y&3`X6$XI0DN0FM>'6jZXu?$GHWKkVslQFb@TLUT5u8ug[EOu%b>7hIF=FNPK_a!P_J5!1,M)d`N[[$<N"-)1Fd=nH1hWtpTN2erP3]Vm!b=n]f<K=o(2!@nEjn+h6rJZ*V@8DNftNca4L@IK0T*MO?[aB%,LZl$n&SP/o0m,^Up(o1OAf3;dQ2B[*,F\c*Aee=h!8N*17qXh`I:2rBB).>h4nAnuLk?pfo,fWU]Gde[rEc79jK5A.rC!r(se4?cj.r2927;^E'=+'E@5k]+)1-aY[9DPHqa)4?8cr4megRe<>s+oqPRL6d`?F7D;]?f]A7Gb?[S^U^Q;KX`I\]FpHtsf=I_\mErac'OS/]lRTNIf8!Dqic,7DjKE`TX-YIVV1Z8%?[1`:jfLLL[@=:7-&?j@/]#Tl/dPD,Jb%`6SY%4if5WsU;l]?j5:mCZF_XiW>mFQ@Q%oP)j[*C(ppjP6Cs)Z*A,H1uHFL8!qm`>#]:%C4,HDj<=.X?,4#0aG*/)$&g)]EEH$\f3<e]?q37>5&W)e7en/B94XR(aJer@%K>jItqh%J985PQGtBi%V"QqWV;__Uh-.(ju9NV;Sokr[28(`ghnnDH!\#2_I$J%*JG-4fEclLW*b)F!o0D&l[VR;ZZWc&h;GYNBc2Tqp<9\ZCEh*^-R:/%Xasn[>EG)scAMq)`$Z=p4ko]-,=$#DO#li5g<WNhM/ToMH5@1M'SN/ei]jXB@IU3EmQ5DeF)QR,gt'pT^1oEbHDR3@sUhVQ+N`k?a2"@Ja*QTT>j`k+ut=C.!PTF._og164n+Q(`=^dqH.:a*O"e0j2h_';qqIXg8Kii5)rA]*C-;s5Y[P%DI1e`BbQUPX@5QLj$g55,AYKTD8hl4A9ru=IM*sX*#b[oO'hrrkCYXX,<D!2rd@P%iT3)FE99td2:e[p4=u0*N8s?NP'R<VOeeIKC6YtI?\j*X.^EEql.LMbaN+Lk1:rglApD.cNur*`XkNQPU@i$1;YIV,qdDX8<.n&h^U\:qMfC9C7Tpd:KYo.\\gX3mtB(g-$/qm27bfEH9edi<_.^mA'tg#hdlYd/N>;[.W`Sh_H'5Z).'2E3rXWn!?VcbF`9:\+PM'&Vq`52(V2R$PV/2M-Ms'HI7Mo[h9"GI6eA9<^\X_j_8"-(--'G-9]C[\\+,]`S0.cAjN1me[g*&u/dSf7Jb%.5"#d'DQ#u>KB@FS+-[l1$2$Z;C9,e500:OiBk!!G$F'Ib^-fF-k35T4b]?XIHq^+j1*`)(^+9])p$ic):a'In8].%#6s%N,:htk$(bHh-4O5:,_A_kGk*F:n7<3>-;m?a76ETEO&K,X;jOpUBoBOhSl?#B.dXccd5]OYI5SdYrrK+Aa89TZ#n?0g:nHR%5!k^C(T$_n@ng%l`PDlYR2dXu\bqOd,'GD,!G8#mZDb'CUchu)jBZ+17Z`-#JOiObNQqs)kDlsu^;E@%$<X_T>0^22@OS,8_8cb7UfBC5m/b(h<d*,=fpd4Qf9)nd6'].eO9-<n7FD:pBiO-.VsOk-(BI#UiQ0=u/;*D_Ha<UoO-a!%TG);_@=LfWT3V]Qo&QHW_`$hO+'pEmue5MG,#*i=G+:rd4VY06Gi%(3Bf$+g-6X^7R$f,&L2`s;YEA+*cd>Xt1dd+1SJ+e8@(mLI)-5OJ&B\-4.7KPY2$'g$S<@DkMD8EI"W*kK(8+(]?VI']SL3A5ZC1Lo9c1VhcL@H'=%[.sn:IeO0&;)<)Sf[6]pGPl/QIa-sFAj'_GT<Do&&1na^"="etX,eeqR?Q!7X]r;L.bT8RH1uIJ*]qlp^6LoC[I;t<eZ2V+le1GW=r4c_-`_H'l`R0M$i.iCg1e2@55o=r(sf$^o6lWbrSS!!%4RZ\Hs2+fQ5-D_#)?io:,'c!n<lA+EFJT&Q7'=f)M8X1`'),R9KBP(*eFF%VGL<Omu;ruW0VNYHJEkQ[;JM)J:hV6Y#0/O@ZM'!IgfPfCL-/lV5tG5035K$I&_g2]-D6bl=sb.lfq?Lqde/`0FS62>nEm7"6Bg32M4MBW1DK_A`7"XbfD`n=q>Q@mEhl]SOIK?+#*"048sVEl>-f[O+LTIXODKC>.qBdW7E)l",P-)'8abn3O(rl``(/VB?.EL150I7X2hul\G'NLh2^Iq#M&NRUYpH`*cbDMd^lqU(]@E@iZqc<O@sT5P-08.Y!2i/-Z,sNXT'C.0aODc@Zb)</TV_]Fk2-.:7=N8`Ua>[(k6-\AZ%_!Qal->+JZ)gU4-MJE`j1kB4#TF.d,b?j'7.VQ15fO^^j,tcNeJn?X3UqguI")Dd+duSX7OrZ((?D=]F/RR5;jT1NHXIT<G<NFWQX?h`+J7T7U>![9WZZ"8I-`rjaRfAY8e//@`$mIkD+2P?c\H=CV@I-^P#7Oir?_a^r:Oa^nb92&9S>E`p1"\L]_0>Sc+Y>h6;b@f[>mQNd;LbC[(BA\gOOAR3Kt20RHuhm[0Br2]4F%r#AYXT>'TaRAjrrq=D^1HOc:<6'L:>u;Y)g04&0mr!VrPfSW>ATM"8_Nak>4.Y$RNn1)RGGmgn"0:Ohi_=Cg#$S-j5AF5pZ$Z-\4bU"@-^Ssda#W1/RhbQBq`9(bp.2K/;TR*S%_d#iL"3D9o]ppW%*A-QmIOJ=r#r\!3I>1!n'\\6%DEj"/bA6'G9GLXd`-T\rVtO;GA9BldM%tK\aRM-4'Nkp2/AE3EU;@SDPlue..0X@I*?eU=gR,KPIAaZb+7;7NqR=h*$gkn/`h"PVQr-,AVK=I<f-*f)luJX7r?t02O;L+?tIU-8D]Db40"Ue]1Ma%`?VRXPC;Qg?FhA_Su&rTZGBr$XkVde5-)`%:`eIS[aed[,](3NoH'OWZBs-fBV"tCaa%o<O,rA-*cK3<f!j2W[_D1dY,s(JeS3f*F`um!=q=/JG!Z#U-aDB#=f4=<^QMWCH$JXAE-73tF'5XB-[m>ab4"6%J'kCR\o4Y:Pg<5"e$;;U,+HI7j4S1LX;7%eB;6G&?Sq'tS+:s?f5)Hbn^t?`q.M&>D^H;0Hdh?.;c\<YbB*5U&j2>H_`aJJ1$dNU1P3"_=nl;9=)K$Y*Z,t</;E[cJrYFpo;?']>d_;*A_-J2m-PWurXuU3PjWq2B7@u;b.mP]%/%?g*E[0BCH6*=4oVt1.oKXDUmo-2K2bJRY/AA(W>o?P_0n,I#lL^5$c8ufTY&;MGO3$QHJ]X(=Vg!X;c\t?9#\9`HHPC<Zh^An2ctK?PP'-9>Gpo:;moYSe_D12ZV=RS-\`(#L,!dd0T/X#^6-J'B='/W\-,`*A%]la8"7.#Fq:?JXo(9<i#*\.ZBsUb=.A2Q:>/gJ"LmhXQ1O=Z`1-c/lgV5$%*+nC*G$,tg/"ln_#V!,\I69=FeJST^7BZkoY*1.ZRj%)33mjhY#KelXJ]n&52-ujH.714E*jX=:Qq:(nM:_PU$?,l._fWa%a3N\.nmL2"tRn8@7,&Ph2qhI#NOUKh3@$WIP\PS=`nQDS]9UCAqh52(A,+T$K^0eGn'G\jrLsGD<R9q"cr-6ZLTr%3Tf8S9]OI8Rm.tNk0EE*04S[$auk!<PIti1UEa2YEu0L4lTk8ifhSTPHYg*\DD1NWeO:p#\N7TB4+X*Ao0p!WZ<>LTFbK:^o3Q(nfR;*F:s25>"=G@Y3M6+;dc5TdZ^uS/,9J^XY4DJAV.pCg[5@)nBGd/""CDC^c!'5+XO"#kn^rRkA%/j`@6E9)D34"%pCp*c[q+rchgq1&XQd"*cXk'QX*'H+%m+\.A>_rKiGNG+KlM`d(BfZ3&"'sO9O%g_4Kpn*k^D300X&!K.BCM9i;'*M:YA>:CpL$gEUW,Dp?bI>)sG4'qRdZ7hf)K7bt2)7mZB@bZa,R>]l0U&hku(VX;a@j=QQDJ6*9uF6H#P5IG8#-nRVN.jkY,IpXmkV4k]_TG@:)1E"sa;XCnX7n)]t.U+AF:rZjQg\.6Q]`GGei@qHLul'K(c"FeAG"_$COE9)T;<ngJ-hbj=!AjJMaHK7j6h_j^K4)(<]hEUn/`1a<8<PQ/:NV69$krNr[j]B^_@6%P-7G9lOJ)1R*mBn6B$-T2(eUg5.F)6'"YE#q.NVjepNjEkWi^$W"aUGeXF[`=^W&qj:a0t+O%(J0KZ<DXq%Si^$&mXbfjXr3+0`>_oX^Pbc6dT4`Ger%BMT5u%5DILH46fZk%kjCZ)NSh9A=LCp]+%dkC^Pf-1]QZ=cXCF1Xn/b78Pju=S%Be:=U3(]`mp6m<lYl_doo*o$V9d.9NaNiZNq'%_e)&CB09P_;<<O14gqrjC^RdalTXd,6Sc.ImP>EHQIaj'jlP-H@IRc=4o9WHd/(O/h=[0F-]0uIBk(FfrVpE[5JI^.lF`Lr+=t#4*-'E2POHKgN*/s0'q_Zu`jXT"[`C-^Rp=OPFL0ts`-G*uU>Q-aX@:_?&,6(rq+eE?FlZNbjg'?nr]+KL_2j(>mu'W)Oipr(q-%iU?Q[U_VhJ'kAR14,'4>f%aCPBREF(7*GW@"8"ftKPlWUBp!/m&a!rg8P_:dnTi1B#8Y/M:eYW00Ei/_+YS4tUDmR]%s>-+t/Mj)<crlAZeg#THsT&d2[A`=W?C$P0AZ98+,H3]5tq;9SDhDs@*-9F88m`4(S1;_k,,_(s:k\6(sRB&CJPFecEf[895kP=T$lTW)H=Z2V3I$u\Ha=ODBUO=/!/Us@Ak5Kb;<%dK61M`l6]as8P@".J9@#A)_frVgOi58RNIJt-)C,X_cc?keW"+8<a+ZCe%pZ,A9C;muXATR)$,6L#M;*(KB<h!a*^iNj,51@C:G4LFTId9+C2a$-:M7X&-*Gqq5=7W;B/f1d_[':ZZs$(\K!`SsOrO`X]@TE7$qD51pceP.(RpXKQIHED1h]n>A;'GYh>ZU0UWr-O;K=fl`rqEB#`]90(J5;?O\s@@O.Po_HP-VsrIu?[:Ymm"l^S<^S58u+`3O&7H_*VGp.+rG2$j>a.a)oI"],e<!PNfZ):<N"Io&Rn4RVDMXTUl#%>9C6k*u]"^>3%%G&%eoG^"h]TO%c60]QJ%k_<slS1:?OQXj6.g22X'?FH;LDZ6!r,_Uc3b2-WR6'A"P/;]TDqaR64'm418%T'rMW[OI0]H$?RM@@&i1IC2OhA.%GWX^bQEG#(FYc-1IVf*OoQD'[Ts1\<X_Qh>TeT3"&>EYe,107VC0F&FT.FhMMVI6?'No'l(DiFgA\b)S\nebcoT.'q2]s*Ks=g5-otZDjNPPV[0!'[O6l+YL,3O>6(Sk;.]9-s?=O&m*A^`pp=92)&otBQhEl9=;1OW@5O<IJAh41Ib/P:jDIdNXe7Z#mQ#%H5;[a#44O2;]U'@jh>S3/-!ohZK#Of:@293Dmc?=4jMAb*B[2eUG<):Q`m+Q`/@+Z.196XY-P'4jo,Yqh`j7QQSn(A[jnc1F/FkJ%qb,CHF>JH0K+C:XJbF[o+`q+UP23uIFb!PIEUuk-+*S.AfY97\N;?TRhEX*=>htK*#V5OAhl^-ESus%YWLS"iB+WrfR5N!C^p2%AB2dO#5;u?R;/M%8mJmpW>qHqq00Qh*B1m##"u:oheJXY3b`(e^@4>CZpn@CQ)Sj&)XZ0+\jHo2+-]u0Wms;>Wa+ukXEIm8YFj"<*dD3M+'i\Af0+@8%djDrUfgLHgi[,*>.*LQI_3p!]UDQ"6<d^uX94EM]>JZtbed7IK>GD[[)<EUDaVEu],k^1;_9fejO=[BY#@64C.[deiZFfmBDR:B%_bq'Ifh(eQCtX'iNp&(nJ!a>_so1?IjaEEmsW7+o$b_9:.*X3Cqoho/<B8]ZBAk(*:U&q1-2"Sf<&0a?-V:9<6%3aUJ,IZ_IkUbGRCR8m(4[JA';WNo?-eK9K@B^"F&R[;is1DjY4io&*L5f06+IFg2pU0>-pY?NA6O<6CH.@[V\P[fWP"V#YDpAC*k5N)?/=U/'OXCn0Oa=JmmX8Ms>WS55'eMoRJI/?F&h6G<IglLIB*ZRtV,^+S*+1f(9_U63/.OPIh\QcYIFUR6Wm^UB::LWm0:%j%TkI4GNh+8ROPk@7D@J=o44.^24G:Nu%<N`a0N4+4HORZ1f@JnO."l]6h]%*Z2k'<@bj5;Q*:R^s@S[!&P$"ibK[K[;MYjYGp%^;2.4"P#[4g;uYf_jHgq>*Xh]U@/\ZTE>fDIL7_Hn>hgVc=AQSBTA4[5FPL]-o]7d2o4@K_or4c)H_aC0d1j;]+e2pL:H-o38mh-[C(nQaQ^R`>*Q'Q_9H]j/J=LA';*V*1t)>X3,SRcZj`']-&)##J/Hcbs"Wm?)p_%E\S*iZj+ipS+W"?H+l%l:]<8t<""!_QHaj4PBDDPbhZ\f>AGB3(TqKUdX%FqCL%JT"`)rVf[ccu[f8;?l:9ZB+9*&d\9aml6X#*n/$p)?f&?E\=oC00I-+19>Spi!BC1A]:1GupQFOuFQRTt`c9j;DeeH8An\&p]$It=-7?;dk[asgo*cOqmh_bbDf,5VOr;RV"1EF%ib+m*;1Ne;Q]9d7+4VlAB=rr_SF5Ec6>9.?1k2:9Ee`&B.E!k-Y<f_`aaX\E;c-9,%$#+NCF=K&@D4Q[Ops8s>(llll(j:0qI!q4Q9Mf&4.VPqf?;<^%#/=g%;`=1A.W=QFK:>Z#GC)?;TW)fjeI`;ahWcgD[goXgXCn0O(g7]XlOq[W`#tE+N$Vd.6sY6=a.9TBhIQT2k_@5r3)O$>G<n38*=,uto>`J(^F_2L5%)r?2Z<H_iD!u+i036-Y,.Trrs`%td8e2s!p;&n2]h-(R)2-2aCY>>qO_lm\IW\S^@&X=f(=*XoofnR/U[;AZSp[h)7chOpX0N>`ii1k3cH0]=kDYq"BaFaE`p1XS<qD#?I&P\/7;1m=k@,B"^%:"(@XgH$dL)c"ns:/FY20HJAoWA!Is19i,!F:E)1LWf4'^C=I`V3n4,)=c6ek]pEZ)J/JHagI80Y\FiJ0G]ZlXp=17h)c#2a3)3,2IpS=fV$<fN3p5WL<\GiRFIHm$5ig.i#4oT6>AFhs5TY$&@N;4if`9UaPY<+D(e\)_[0%om_><W<S\sO<Vnrr.?i1B#8Y3"SWF\k%3*@:#FD",'S)gX"p:Za^0d7+%rdEAo#Mr<@;ehWl#p8"q,V/f_T*BX*KbjG@=N\"t3`9O>3d%t!`H+C"o^X]OZ7nli$`n\2u1G,gd\Lb6<\ZBSGrps/JP^O&Z>,dm(Sau:5>BjC)O$i[0#ce3=VXTl0D&SI*>E3IiF`7tnm0A>,c:7Kr:!MaD>!jc$c!TeBYT.(sGjF!_K0eVa:cH(s#57DSr)Q<RST6?an*uNF<r)YW)pc^iDLAY#j1tG]n)!6Xp8`u3lVpYQcq(%el5?YJ,qcBmY5Eu%$`arre8-/[C+uSk4V\dEPUh!+jQEhkdo?n<rJT7;4aqD2#$]!gP^!#iNdSkjX5-NMc$IN;CUf\@4"P"Pp>oiDHV(]SBD]Xn-r1W(Wpm:P%5lf73ps8RFXbMJK(6chQo1HpN(b"qWg/(sHPu*s[3pZ$3,)kcr]gp@SZ0ta\FqMDR5tSb96OTi)uJS?nVWZR&T\bA*B-Pm3B34$/oJ/7l3IKoIWlLo]9=&DYBW"l.<D3A>3>7WS8CkD]IuZH[^eL!I+GAW]Qh6hju^.mAg5>jGKE=cK5$V;^?adGr,M)BD5d14T+ip:UlG'BqYtfH)/umh<e[2A[E!0#h)`0o^sGL/JH\C]lK&XOiY=-.,3CK`4)U4ko'T4e[*HT;CWCkO]o/'@YbkQ!R0sJU13\N8CmdPk$oiHdd(utWiekqcK*pKVhP9eM0KRp&01.M"erF.ACa;$"\G]eDh4(*aD#&;195B4XY$G9Uhg;j%i(_(t4MI0*9&A"XD0bVR8Cjd6fW)K#8DU&P?,tjBWjCnIRid.Gf^eL@QduFphQM/Q(\.:YIq)UZBN(),iKFdFVG=#G=Jj>R@<Kf?Oh6h]c$IN;BXjA=4"P$fKR_OQr;Li<eQUYa:ooh@#DVBK_XR7V(gj-`RDBsbjNoU?p+p4"ZroP8oP>n%?h6kJ&l.._Vl]pSYOe$W4QF%X4+7B;L%2XWhd-rUYq:2L(GU,"Leg?V!](W@DP;FD:kM90X;sCe_)lqe>Dk_PT!E+t#H[<bLKrD!4;tj!@sj?oPdK^<g@7OG0_))r7bDS:o>A`k4#ELV14r@4Z?<<>7oFfLml[spd9unJ?LeWMRSO9WnG$BDlcAq;j1q>"IF%]VedclTWmL^QlTRsNEY`#pP`(p@+N,WNZU;\JB]s?X>c,`)dFI&Eo7d)0j>Cj-rlf]2*rhj^ri\2/r:+Fu5HdK+oT5Q+P``bVp3uu'^$s_3MlVhR^8R?a*<i4\N3KCFO''[H??tDed0;2C-_X_MHV!^D[)NZa&<E_/=F!G"i7=]UgEXEJ6'&.K;n^cPH,pDqCp5ds<eJr]E=%[:rdP?K,HGVLpr!D<]8N<I<f^g9XbSO31\B1-T)._Wih`<Eot8<e`T,iq:#j'sc>)\+>kCpsi:2reQW7AR<d@qeoF/2];gb^"gF4Oh9d`l,\[=?WXi";gXJbCc>gnoXQEr_t`RU=E"&l_4a(J`^>\efCj!2+9p[14-_4P@3A>6UB_PQ^e%mO4Pa%>#<!#%MAs/pHX5;SEp..<c=SGus-?(p?^\ZF[ms&\f[F6a1iJR$bfpH3)Mb5te<!!$DH+9&f%?tF@]E&P6XJG"b-!#?rK"oOM+K!WR1!N]'*"0abq/DuRo(7\)O$XeBl(kBTIAH@;AZJ]P>=TIcW(rP]UlLY%"Vqi@>IlHq_)4bk-WoFWdRQH5Nero3AGPdl)`:GNqfj*+g^SX[_hqdp"pGFoe)!_UNSX7OB`ri(UoKg*]c/\aDCk7M-b5tf'_:S^[0Gtl?e_+$74R1FPBQl+BLJ4g#E`,)B'7'!O6kAFc(;'`XT;?R2_3=Psf@r)&^jSk"AiGCRcHBe<SHduClAK)9BDK!sZ2iHW"t/NI05jI_rrE#o[T]Rkr3,TmKIGC-b?j0?[L0Y*ctI^=QgP-[B.<8CCbQ]L=gNJ;O&)H3]QJ%k_<snII(SW+34EHPXn0n#o9kg6KGbgQa^mWlP_H5X2_FAU0Rbq'-S+WZ]t:T-l<pX0-rnGp>n8MHe\`s][*2eeWXn,GrNKAljAnA4$;bnLmAkP"K(>U(+?>SP+WfUCS,8ENE/%cD:):R1FBa+#".l/J=dU(8le>MgHn)bbG7KhW`h?ZL$HB3-%\l+>o'^rZ6bT[H#?KT4I81-LO$ED,?Y:j!(4kn_J>`bmnV&UC0ik'Z%Dl$c7r&rL(B`GAlfRT$;m<gV-%,e&YOZ[-[oKdIDFKT`]pW1Z_!m7*kn%ql5hDHKZ>\W[6PHWhU$'mCo$W.?o>F)k;-`I/XVW2?iuJ'N?/]ruZ/;"&?;UWY!Z5^TCPnrBs`AO)<1Xk^o"'gYl`3JoEE"8d7UL7qGlFR+Qb7U\>K&L6K&O!%,k$>a0.W;dN[[qV?<u02lG-\)3-Fj^dG93JZGA\qSI>b4-08YNEPJP^b(D2:VMlGMo@+Tj`4hd9+8j7R_j)a^X%I0;;<\*WF:TEepFD'=0'-%:-jt6qUK6dAi*^+9+Z[)K5MoW7T&),u_k!!>VS72'OU0=nQC9;;kGJM[BYVjpeiD?pE#iWAX0[j470HP(-/N>P-V_EG'-$s"s%a7n&fL\C%PkDfgFhVm./aBcoE'4NmFCj$YM$j^#20V>W7MPafjPBQ[CIgsI[iJ9%NlB@Dr#8DbFodu/[1VkSQ[(7;O\+a@&j&F6bZdubN\G&n4R9H,/_i1JCqm'a42U>*44Hq&-=$?VXBl/LF])%!IJr'thNqBA1CO!?_='S86%f%UgW]MU>h^hN"Qh<BnTNK34GWY/r5RG/da3&t=TinAUcOmjn:8KK[-[oK;&LWYo)O9s$_Qg'3_1U9iDA3)0WJN6X`g^SW4#k-[!EdV_:%j`>B:;ZgmUQ4/O!YLVberOY''DXQ^9\!I^Om\0J_f7BWsP1?u.O^n\P6diH+):%Nb606W&"CY<T.Mi^;^J-98&u]\6=s;YecC)flgKel+:!i&oc'GHeN_.Na-uT=IB50$K8k;r0R*CRP'a!H<e@^u3YPi=Hr''Wg5gT_eE6s!)HEX)/E+%"e_SQco6@aH%>&U#9GAZ2iJ-r?nKbo@pU@aGGLkHm"dK"7(I4,8N@Eq!Rd(i%"3sGKXP\(O.jK)n@MMona+X(AHd[b5t^fh-:_#Kj5D/qSY&fMj)<crlAZeg#TF=egH1Q=I`V3n4,)=c6ek]YWacM^uFF\J3S'WE&P6XJFsqD@35G+AHs(n^pb4B1?IRgqtp$,1f(\8eaWlmc(2^bC\dT""8=T9B$FR]n5O#NJQA>I_U(::4h3pU]n_j@P08H`a^kLSDg)\hqK;W$#CJ$14-F0t+0rMFZVO6[*gkUKVV0n^dFNnFDgO^TZDDSE_4icTF;h9C5NMT14GbU^/dorOQNaV-o$+lG\*6UYq/*\A[uUFa[/)H6ETL6GI!7k`E?dcmeMFG54PreUKL<(]SYBNE_*sEgmu]&`LUW:\2:t%un^N-m]=jPrO,PmP_WIdEfC\i/0'i&)/8Tb3?F0<IooRb2PH!6Ka]it9[Ck3s3TdXAmdoY9is]uF"Eu;Z:>0jlR&Km/OtY$$44I-n]dB[3eACEsX!L-,@-/ac)"Wb"mPmY)VRlBd?Jd21.0%TeP3i,PmcXMui@7S0WopPbUX+)Wfh!fKe^gaC!o<N^pCj)>"!l,s&DX*Y3bd=P@%t4#18DnXlY(SP8*[Q5"Bq'\?gI8-S8pLI_G":tp_:lco*m$ns0;I3q^IkN;G_dhrVuaQEuScG8UaP8qT,u?CaZ;>6d6#PAs(8gZcQbZX=s/to.HuPj4Jc#9lH`[a>84gWAYT,<K;hqFB6#UFUOh\PiF37YKi@]P^b(DQ1'.nhO&aN*cI`PD,Xm,VWGE2hofRWn+lap+2.9X?W=cM`fSg>X';M!oYEh7(Beq2PYTqU!LROW+V</YEU:E"VROoh,X7$B<onS)6YEg]>.61,D>j\+];[R+No%@hhLFR7r[U[6C)6Q_>ZPu$jgX%lZ+H6[k-E.4jg)CQl+&@<k+@E6(;Rd.m=1&O'Q2p/lIYPrA`M,1CIlh+VXRt$R:13<`CInB8e*^CbtMp/_G*tNp<1VUY'&mZTjI<aa`#t\Itd!+7dj>XnG$BDCZm,#;,Ze[<MB*)qmWntje/eXbMD]8gc34,"l]"Oq<.e3oOj:NIuE(57rm?KY=-t6D&7_Z>-GO!qfVDb;6A2+p94G#I]IM^lf:ku/S#d!Nj_'Y>+tV'orJA\H1%rfE<]n_/oFfD5%=hq:b?DSpfH+]`8sM*PW&ie]sfW4O`:RW"K1J*2*F.us"Sn]XT-ghT="p(qGF+V3M)o0l65[o>B:3V90SEQ0]7bN('N4Y[t&jQ+98XKTn%Vn%!GOl+4bjS@cJh3eB3tYH#*ob9J5YE]+7\V\'\I3LFk7iIZ.O_DqcPW^HEP:=B,%Php7+pc>3?qc9>;oj+gF[ZL_7C@-mB6>h3Q=s1*_'ZMOK,2?WaN0_f's=hdZ`$NMpbgAm0/nBYYH/!J0Q@HFf]63BK<G8YqMa^kL&jKa5:lc2`74Y?_:Ncu@k`Q;ZlJ)mna<U`'Y^HFCR=H7SCJAoWA!Is19IT!g$]A*CjEVs,)nQuN*gGaY@2Ek[8,``F^pGAp<$<fN35-)Fdia</E:Oi8-k))?abM'5*XRIakG8tb<hh*Mr6#p*m8M1ANL?o;kK/]ILa8+ok\B[0/lh;csh*q=)d?ij@>m0&F[MF8e_m_H=[E-[*m=$mhB96:mlfUb>T-ouuH]nDtnEjWc^d?0[K_!/\2C7Ioj_ig6p@$J]cgq:)>;c$.AQm_+Q#EHu1NQOKFgnT$(!7D:7ikpUdIM%MA\Y>rP_J3)bJRQ)[MfQ(#H&be@(5m9nr[qS>A-`g$[I-nkH]\pGK67]502(MhS>m<4N"'S;kAA?j/tl_.;Qda-S5UO;.afe`<"n&&>G4$k)UPJW2rh08fVQ=22,p$RI65.AH_2,3oD#gQo1K1eLt(XW`K+imj6ZaYMR]'0'i&D>ZU/kWBPG$*os"B2lIK&\2B1m.oLg(W"sPP0BA\2+RgtD&`4W\!3BYnSK]]AEU:E"VRKC(eibhb0k;bEADR>Ch$m(1(egtUGgi1*?'<fQheDo:>FOl(Hom\&qn<LL%sf+.iQ/lYjB4RY0>Kb!/I3oHo`]kJ-6)G,W4Cs@I2u%#Tj"RFAi;eqCBfD2P.:o]?I6haP/E+1&&uu02laoaJ&f707Mtb=:TZ_Fj#?&h(0]7uW5gjr)oKo#b-0hdq/p<,;@kZ%#bJHO_Wp17SW8Jfj%`bh=GlDP!3ttX7Q']'^6g1,h:L'H(>]G2D]_'tIC`\pah/]9*9>I#iq>0<aL#)5G4]SuHiMW#Rd3$!eMY+)Qc_[Y&'ho^+k]36nYPg7j6:jM34Z+PE.%a0edB'6kH_Zbqg7AL)=I_V^%`-"8Tn`JFr5Ngm(SAuH-$C?]C.j-?XS(bUL`i.H:r<b-b[+2pNAL%e6P=o(9:,ih%mRW:MYFXXL=a;#Bi1C6!u.E0*&r5Q\+f,p[RCZYl(m)!j_Xcr?\DrHg=tO3i)1?1G)QV4;2WWjkPKW_'"@b`.q;^QlgV#69Li[@-&Qf1L-JM[A5[Cf)=&I9\q8\AZ[l#3ABkaGt!J-)77aO79n@&ZbJ/oFh_dJe@P83>;:T(>/PSCmegI;6$`C8`eEsC=e/=RE7j?L"bEM[^&S]`I1_hZK:UN_EAu)DFC,>MlL("?4K4Ud7c"Aj=kE6'KaX1jQZWP90*&r%s29:S%!Gt;7oT`%ltDHYrWpGT3^(*AY?5sSb79J.E`o4\?;_mmQZWP90*&r'$NM_Q/dqG!QZWP90*&r'b5a(g/dqG!QZWP90*&r'b5a(g/dqG!QZWP90*&r'b5a(g/dqG!QZWP90*&qN^WT<#)`mXNqAs?5q7H0pr'L(?c9QOM6!n]20\Y4cc?$$tn+\G&/dqG!QZWP90*&ra^!"&1PtX1(BR.06foQ%S]6cR8]s;e2-MG&c2Y_I&[G]LAh1;ek>Scg!0'a!P?N>nI5GD*Ukg$'$r:^)ITOt68dr/JUfkf$eZ^n9:/^O1>*F\98#$mH/`'/<\I]<_BVu-%rWKCC9W$t=q_4&$;P31I^7X>m@;'X&%O7LInj/Y=GlDP!3oS9UJ)A4$<ubKjAF%qAPb<hX]cmpWglY_ll4oD;nZnF45Z`)Y^6`=ht^TA]ru\d<Z?gBjKa;#E`mVEq>rouDD!GBfW%bsgT@)a2W%BeqbYnBk-BTD[Ba#=P2OQ30pe0oIEai-dj??^AH@;AZL5O$"b9_GVcNf827nQ^;q5gHqQ4B0b(H"PBub9tab^/&FUOh\PiF3'0#@',P^b(DQ1'.S40Yebr<TtUE`p3XS?sEC'\=-$@\`1AABf#CV,b$84Rq`>11_'@,`%UDQCuK*B6CSnbU&W3Kd4.0T_HFo^e=ofSX7M$Y3DR6>fTW]I/tJaB`AXhVJu-9<BVg7fP2n7+,m,OD"ka?W9uW$,Kudt9P`J$9iK1-bK@rU^1.L;^#X+KQ1)NRKn*$]F)tLar*SL`puB\#rk&kHEZMp>o`]kJq',hg.C0A`N(6'1;/IdX0g5MO;]%GtV@hhC85S1.V)=Xa`-32**G7(gntY-M`+SGp'WNI]*rcSZQT41`pq#!N4NPbjXn.Xe1be"LkH]WTg]`8*\@qqSHgJo?>h#O>AtdA(Je^EGH5qGsZ/>^Lm*Y^`Ors;MZ^]$mJp#.G!SiP9*rod@'`a/Ub6#0g$U+R/jK\b$-^P!U.i*L4Lrj3//5@f*i)VE(!"b@;!a(st(;R%Sn,XXi/!or)?Q)/6YB:J(6be)"FP+4'R2jbAs%VQGf:k>*TWbn)R!Y[P=^:^K,=sKqi)VE(!"doZ=rQH):4:GOU[`J5bc;tV41lT9jU^%8b<#M5[-l8(d\3/SdZ-^o5*pEV7uodC/:^s0huc6GoeRZNbP6F]@e4I4g@bG6lUPF,?Cq1Fn^$s!Be?Kuj,e:tnPRh8'GjfJr)]%'H#U%^Q'Yu2a4%&s.@bE]K4.j-C=ucN_BVu-%rWKCC9W$tN_HR%<i\#;G`C]U7dM:b"`Ph)HiSu1hYLIFX[-C'g/+7P#?-'D%YgE4Ut'_\W/UW[KCQli3&mM&_>Mt*C@0]Dl)(Ft$>&WWf;_mNSaRlXqh6*)C.I>JjK\dR`.AL"Z&.qREODJu1CYBVN$m&rP9c4CSND/[&dt,qIPmH,N%MbYh2s7ObKBR.Tgu<?-@'W7!4QFR#Coq=/c/gMZ[-Gg4DqL,(6:.Ppt'+?jm""Wl,OGWOu_()cbPQL"Q_q0-%DVPj%j"4GRE:(F353>^Q\93pV(-Pq<;GXq4VS'[U8uhWeXgp^n"Ts!?a;sQ6"KA*h.((1RKC?e=#+5NlL)c%`qE*i#mf0&X3M\QHY'N[am$h8%[g\S3DWO\ZDIu.mA9]6=Ot<!4QFR#CoqBD=mVHn"uZ=8h\]'b%7u`_WXNoL$Rg*T#G7#UOk;n`E_!@ds%oaYBk?4ONR^8'am2*`*+g`ja2!;&h,@/eS0H=.Bhk=JnigJ<epEu88F<h6`S&F-PKZ:n#aJ)#kK8O>):34%kK^'h=E=HChn41J6Pr#X2X9"i"W1;XWG[O<UDs&>.:8O^d5AVf-n.8F?S]j!:IdW%filc$g*ZicV(pa?=K!$"^)55Y(!+J5(5ENZ2ed]Je%jdma%LFI/fY`cIo?Uc68St^S*LSrr8]7Qica;Z2ed]Je%i9n%8XYPKO$;'am2*`8n3((+5FPE%;]O!/Sa.!A$tu$fG&:p](khb5te9>Sb,W=RZ>62Y#D3J,#@B:[IDgaHO@mJ''EP5O%f@`ujq2G7(+I--u2?\(A;FiK%4Z^o^`.!?ei>eN:j!SGFjf7cR"E9_h&!pMtFpUil(eV@)4q%_`s#XkQqJW.X0731F.g^o^`.!?fti3L2GZn=GWmHs==.]mnH+Z(J=gkC8[7q0k-%`AO\0fiOd6V0cgO9K<s`mV@#W$K^6K@p9Cc:Vr6nFjFfF7L-+oI*(:iQN_=U(46+<[5&]'GOqK3>&C4_M1_e)(P8?h.Kiq?j$DhjP,oEpH.,`:^2kqtX'5=C^6`C!(V23!*PjhJ/:^s0huc72ls*T#4ANZX*mBX$90@r:<'g>8F'6?3>1p#Y8T8:UR*3YHI\GN%g*XIrb6#0g$U+R/17<f>6-\]"Xn'!HZ<BB-ADpmbXhfKHQ^'Z>6#5;nB//Lm$DY/5I8_Qo:<kBIqmC=bZMj&Ygt"hF$fFc2p](jEbp3EL]>s'gbREW)dNFaYl,k9-JfIGG,]m8V(<3+4T$'/YKd4.0T_BtnQE<K8b6#0g$U+R/>&W3:?gp#A4BG,n9Z^kRlE?W!H8^61BCsnPT>FDX6[.\#DTh=qJJYjJJ6T;:"$is\6=%>K_u"3h+"EUJ6"k#81":Nj(RWpHr,:X:?@*DbVJu:ZfS**?.d71S#Q<DTWZn-*86g$KL!,X`Z^_#96^tGE%4?"])Z[J=Eh%"$is\&j>@<q@[`16.UXfX.Q>kO.RASb6#0g$U+R/\j'\GnGR,p4(k$BjkobN-gCr6^tm(C!SiP9*rod,lN%bKQN_=Y(46+<a^kK(:+cq4<\4"G&<k9==I`V3^o^`.!?`_U"gBts/:^s0huc72GV8='Di?n*P?,,;?G:=OXRg'uZ4W2A!k8sQ4oiOpV+NZGpVZ:JU[?9'k(lc)#Q6MAe:+g2KG>&[b6#0g$U+R/b-Xt?,=@r`o%Wo-XeR3a)qTIcST">-rapbuYW'h81/Z0#<V;m[Q*e]W_ct"YY3mI""`Ph)HiSs+3M4^9TqeJD=QY#%oikedk;&8l$I6P$%)FoUYlR'Y/dpT</GK2VS!$0sIkI[hb6jCd]5q+p^YMA6\rN[beOipI/Is-BJR9Uf"`Pt-HiSt61-&pS.[*2UO4r)$3d,U]ETZZ`)$iu(/9=#:Z2hEdJ6T;:"$g\dVip&.h$V]&<SUtGP7nqM0--;GV,aEd/doa^b6#0g$U+R/JtGHb'Q.6YWaEd]Jm;?W>$3gA[\3V\jg*a@$2bXN/:^s0huc6GQ20*D:,`-+h6WI5fc7Ck\[7AKX-L_Ka4AM&D%>gmZAtH+pp@EjhCUD$((:;T3k6el>I!)g5\qhZZ\V&if$.cSfHS35VN]1)\.oB8!5uH5IC+efa7f2rXEe!"\`C$rDT.2<!&6JFJAoWA!SiP9*robj=TFADb6#0g$U+R/jK\b$-^P!U.i*L4Lrj3//5@f*i)VE(!"bWbb<#D;aK,>:^qU)/RLT8jK'+HJp<A$L2n-sk_JRD+!SiP9*rodI1*i?a2@6>B%IS,sq;5FX0[>N,lriJLDBWt?E`iCO@_i;"=IJP*Io9rY;LViaG*O-Q%@2bP>uZ<8l+O<;C1n%;9NrOVo;u&L$`gTDk*<K#^^lOM!k8sQ4oiNQ<6o7:O^j"s7LM#_XB&cqlX]JG\$=l@D8m-G1Dh)#)s":)DT.2<!3sl5ZJq;XF'8;so:nH%Qh>/BXFca^>S5oBjK\c'`I\U#YtP4sr/]G>k-BRC1I!o8$moj83JJur&':>D\Lb6B\L`88Z/>^LD!6Y:igTDBahj_nJuTSuE`kcoTRFKaOime-E`iCO@_i;"=RZD`S&3F.<U8D5#,gXiih)UL6S@\QR_Wj'b6#0g$U+R/=p^fV6*s4H<"H)0N)n_AlR/Q]bYiR;5uZT_WZrMK^"$Uh?>V0*/U:r[@/q)iQN_=Y(46+<%AdEpmp$+SfIj.mbPJG3L&oLBQN_=Y(46+<FarUgheUj"dOAOqnuQU3/4_B$i)VE(!"b@j!*Gar(;R%Sn,XXYQNaTQ\L`88Z/>^L9J-]\EH51^[pm/YJ='RW^uFF\!,fc-%filZmsa`>:MkQspoIHI^0b&m]Q^>;@"!&u!4QFR#Coo?R8^4J,o<pM1FAFlgjr]G^o^`.!?fti\ZFl<?Nl4l$EGKK?HVhL^N%l#L[=n(14UD+Z2ed]Je%jdA59+nA_Ps8R6/R(g&4q=p7!TQ3b7sqOoanlQN_=Y(46+<c,sTt$U9`rlLoQMQ^)J/i&l$_!4QFR#CoqS+5Bj\g:Uj2%Ohpir`=HKQG8g1$HD!"=Y.*7hui&G!,fc-%fijo1Xl;`l&lpUI*4&<>ZS7\\LcZCjK\c'`I\U#Z$[&HaFAJZ?7p"`g8\=)QN\p5/dpT</GK2VCSbghs#0A[]Tq.&<!`Je]hPhECXidBnlD6J_UeMB8Tb7B0TfTU^o^`.!?eg;2Pute!k:%s/:^s0huc5\On;NDa1q\"b%1V/N!1:'@PUISMj)<c\.oB8!6!s(!#?rK"`Pt-HiSuEAH=>W/dpT</GK2VPKO#0S6QiFX]Y&n+SMDM$M%BL;dL,eg&&L\NqY.8#^hA3(;R%Sn,XYt9ZY0&7^G,hZTs"7I=;TF=hn[kAHCSD"Wm_RXe3d_r6ON#f,'p;2Er'Z/U9#<ek\2.%]oL:(mHD[%OSUDOF9>a#2GML(;R%Sn,XY4:!SukQ;-KkW8D?o>:2F]T\<4oW&:@kKgUW;PA^F?E`iCO@_i;"fT'3;Z7osrq_M3Da^oV,5*F+32\$C_b6#0g$U+R/ir<\pr$YM=Y,kIu2Qjfug">(b<]RVV]]?AK,e5IV>I!)g5V13`,_$"Is+<m_rT):9AX`!Il0#@PmE9&A8'#6Bgkl7W!+L/tAaN#m<=@ooJ5aR$!SiP9*rocPPfln'Vu1l)56e4g2gUnlA?RkpTW_(8fjMNJ1U^#g>SaPr>Sb,W=RZ>6G4ged2jX\eF`LUb[pm/YJCkC.JBFLX!r+'^=TGp?_$>LX/.fVVjK\c'`I\U#0tAic`Q;Zlgkl7W!+KtO!/m&a!k8sQ4oiO^Z2bXfQN_=Y(46+<a^kK(:+cq4<\4"G&<k9==I`V3^o^`.!?`_U"gBts/:^s0huc5</dl',E`iCO@_i;"Qs:EBioIBFDT.2<!&;#8JAoWA!SiP9*roa\!&!3%LK>FFHa)E15j[qkl(<J)++O4!eXsms5Ets3h>dGipu>0>kEX-ZC'/Dg(46+<IJcSC?m2^Y(0nhfG74I8_1E0t5j@h4S)Qhp!5LW`-3+%1jK\c922P!,!8)N1s8,PW,64qR@0lo6)eCWp3XYpiKU;lBJ9TO3Q<Y1*YQuri!!%LPM(ImB!+6B?&c_q2aCPAPM\D0P!:UUKZD=f,J/*l0!!%8+b5q[p-Q3!ci;`Oi=IAjM_#aW2,np@[TLGpf!3AY;!WYKD=:kO8NVEVVJ/5C6!3dC3#ljrW@RU9)2<#8L!*[<u!5N?f-NF.RL_Tr@eVI!$!,)rp!W]85T)\l<,$"gH<[0d/!2)c^#QUqqHia:5Mc^Pk=H3(Y!.Yii+onhcnHf0q/Rh-K?o?pW!!$3@M?(G,`$YNb["oFtJCTHO!!$\X!.<,%QU"qUecu0T>/Z<6[oe-1(@)&&!%hYKi*39I5`>:9!.Yii,4I28+/$UL!!#9B=:t<DlOV?OI/j8?7B?cBMtI<gYs&-fcluKn^;]pNZreCM!,)rp!oIJc!EuQ8!!'B^'nL;.rW"P$#64a-`/;@>=FYi:lN7+e/Rh0,>HC%SMtI)NJ/5C6n1E35TZ-a-!'lHE&bm.-&("d6!!&Z\X9a33o`o084obT0,$"i\`VK\D=<@MCBFu`rhdZNb>-&57&:4EH/*n)AmaNUn:#A.rn=./jA-9(/IuEn3J1LLjY\h/5.dm62krFHSm_"ne/5FCkE-;0bgAf6*_96J_Lc'HQ@A5h:-3/r;o)N%Oru5_QoDcmC_96J_Lc'HQ@A5h:-3/r;o)N$d>SauaoBW=;'ILE_@KNbn0b;(Ma^r<#4265j:19kY0.$[W'Cu3/SQlrC]CY?dk7f8So3qd*3&(reRXT=lr_G@lgOp<_AUU-RC1VU<rH&jHb(G1&G@!rC(2!a2U.0',[lQ`I/o*<[W:.=hl_f*oM`gdLkK\tl^uB1*Hrtd>]monQp$7P1J%L++c[4cZjLr315M>DM']:e.Z=^@,rJ!DKIbs,ucfN!@jj&bj^uF]uHqYE(`Lh&-_m6MJffCTc^Dp/ElQ(%t;gg"Frp@>O!qf4Sr;-6\(O%JB5-[1&-3/t1YONJlrl$Q$%S%bZec>D4N,b>T:LPHXXFi'#5N^7pT>,eckORQ[Fm$^H?u\(^cF3Tl$AThFG@cKn[rM@IZa46K'?OhQAq=]FH>.SPrVY2]3gU)dodLi(?;(>7B05-0i]F:=kto=ND6m5,NYmC'G:RpJpmBA1gHU'Y>G-GhSR4U2qo[4G_5HVEM[@2YChe@AkW]ca*&7:[:R32kFdrX#Qe_E0oB.dp>TS9%G@!rC(2%"7_t*h:fF8<L?iR*K<.8%7A/"<pFbZanT-9OYMZrB)h"gX7-C8s0%mDRh?;(>7B6OHf3k6edGN[RRcRDP0kJ[R3EFKu>X-:_YGB\N7oUNcdG@!rC(+85F\2q/OG^&?&:X:I`FQ^UG?u]WsJ?+mWJp2EfrUcVs7!Ds2!#?sE!Ot2$/9lC%f2'^A9Q]I:"CQ4Y*e:;TbCXq^If8o/_F/TS9E5hUjoMtQ\L_uLkLWMU.84jH`<9Rg@NOZXr6M5oW.1VHK<<,cb?8XnkODsmE`mm@EXA1`k0$]qA+'9kq:et/n<;2tme/S0h=e!2m`p^s^uF]u9_<cq[D&6e7I]\XCYc]o%u64.bBj!7-"uqYpIM3siQeX!GIYA`?[_WP-)5N$)W!VqTp@bn-3/t1@51CdHG.&VrgRW&_I)9!68t:U1`03[^.8_C5,\YjI4!TQr4]k^'(eAHi2CBPO8m?518qX_cTDeT]#ln!k_Gf/bq(UPHQQ&X4Hs2[rRmh2cAN"Eibl@e0jPbm`j&I>YZ7h'45W]:pXWhpAFM;#B7fNiDr<].6.J=XSTa=Xc?aJSIf6pt"e+b4TDc(-i2C%t6$]c?*7[d=Gqf>%gc[SCc4C5EXdWT*-M+opF'7<Wj*'?'\ZFsWQCrXZT#('2K8I3Bet$/406)R*qVc(:GD/tB^Qgl6-3/t9kJkFXNX(d:\nsWH@H<PY1?^lbb:4&&/)2-(Tjt[["P\jl\p%8.1,#6T=]?36m]<H^gp0-87',Vc(MKrnIeGS"[D#E0hCZCkZTm9:(DD><h/d)c%*+"BTf/sl*XO0GhHQ%4\)2Q>*:]G)Hh%",%SP0q>A^E[FHEV:=*EcYcc]Uqj*pmY04h`Ld<g=6\Wo60-3/t18MO'R>jZc_WYS><-Jq>Dm6.*.P0;kVjK`*@FU=5S)Kk5pcc]Uq.=V9LhgDdUQdm+k>ZTCG(DD><fqb#$nNWM[pnQ*=e\^m=mL**sa1oL$pXXm]BY%oj3u=:D1Vrc2DV^piJm)qbEYcKUT=))-2<tXP@%V]geoZ`VFGA\"p03lhg-TQlRI^tH=<68#gj(UT=PQ%u-J%,cK]>60D#`SFqNI-&cEEjXkp.X6N&r[>!/n1Ko.@HM2a3U(/o(\bck!b[l_hA+bHk"$SJMri`S&K:Y"gSWhVJ##drPj0h0C^U=Ib``i9KC/i8'r25<Ynud@D'eJAm@j!3T'L$f9_8p![sh'A[pg!EbkZ#N4n.ZJaQ0?U$]O0[ZF-'7e&YGlY!B/dpOlq=W3X$5;6@0`bD3"+XbJcf=q.(0noE:W/^9IG3ZSgiP7O=PUg/hZ7!;B7b!t"]o^,f2'^A9Q]I:"CQ4Y*e:;TbCXq^If8o/_F/TS9E5hUjoN!'LYnF%Da*b\XN>Mj'A[pg!EbkZ#N4n.ZJaQ0?U$]O0[ZF-'7e&YGlY!B/dpOlq=W3X$5;6@0`bCHQj;R7jKd_"SR4TEV_HMh(DD><9oO?U:&TM;rl(L4SW8`q837V.H)mq8!e"lI-ac0MKY&0phVP$*4`4f5lM-"Gk"]?l[H)W4qt@VIDmDI8/GO;Lf?^dULC^jVEDrGJ&0;hAVD+s`YG:BfT@mkTTCD<\o3qd*\:#;jS/^./qtf;V450?)`i0V3U[_BSRD(kQDcn?P[BH,A@JT*4:VQdkDYQr4_7-2AFo+cPFjLrbG.B/KGN[T(oA[?B3@Q#:)\=&!'n1D"9ce`uG@!rC(>&LdQ1r/\[ss+X`kE5LZJt`2?HTN9s1:R`UC@]O[Fo<Rm%NQ3?FCX$/3iNFe/D,[lfpJZ].;'g-Z`suh*Zd;nfr($e7sAE[&n,+T2[r>Z=`cMQQnUJL%=`aZ)n5B-fN.r\nAE3UP%/H^1;eM>Sb!JbS.7YenPsO9!)[o=Y*2$VLmB^/*-6.['`ek%Pm6&fh5SaBe$V"aY?lCjJHNOhm1(ko$FAgIDWbeET>"@?u`=)^Ucc9gK&IK9-.)6)]D:`$:cG+/=ABFr#i&BNLo*]L[R2\A+X:9Ka1E6khqY%h!WQ:X*#f_??9&Zj!LBRL%=\[00='+jOCp:r)PmOHH9[6S'O2/CRVkEa#i=AX_Mr344_jJVS$EbWg4V5'n1D"4[/X`gj(UT=PT.s1V^timajrudOGP5+"]K.e9qQCO(s9AFp+WTA!5XqZ[9k!I<G"u*@$Ua9TF;I[2=<9\g(?'`m4=-U$&o=B$t=Dm586-TQKAKcO[s:eS5="*#deMja)5<GVE+liI*U4T,9M9`gmnZJAl*n[<H3,i4s*hejl.!FD)rM/iJLb'lFM<h__5>[5sn-!DG2<?m;_ML-hGf1!.-8W`iLfs3L<D+!#a0Ed*V]BY/KZB]6;-\FC9E2u/[eP^b(DQ1'.AeFM)1geL5gW,06F;73]7(B"!P'="FY>2!9Ao)$M*,dVeugRPd>#)d6Cl0.JcNk2pE"5\IVWlLETa1\iL)"`:6$"(O/`et/=ic[^4A^+-._GCf,+3BPW7LqUqW;.)^3h8qQG2r]N"0.=(n</KnRl2Z7*IKW"gHF7aCYcjPZo`0rku/F)Mitb\nbI#:#!N]:O,aR]jYK]NRRYoWC<]YWEmXT,@E)u)RA2M`h=D2feNTJh2dc,EG@!rC(>%9`L16b>VaE2_VT7Niph7=)/.'%^1=YRW_O7pq]HFO\'$HfhA7>J7c!9Aki(&-a)k_?^2bab;n>"D"^*sK`Z?qR7s7rd'SZ[`Q(;0Ie'="FcR^6qWXHjh4)b0/^>>+!:%S\jKaH9<XL\KJ>ZU;(o\iVPl!/kX+7[;_2FfT@r2rtNOD5>nGVLDZ.hHkgAO8l6R;XHC[c]k,(X2Uj6IN8j&XAJ:=34q,Qj<3L"BC9<ML"4#H$9'?+28RMX1Hiak9KBP(*eFF%VGL<Omu;ruW0VNYHJEkQ[;JM)J:hV6Y#0/O@Lp"#Gk7=N@SPD'lo?MtlRqbM_U`+,XejPKa.;@*=7*.JN:PFuRrNZ&)7>4T)Th3.ML5BI$3.TWN>E7Y`U2E<:USn/(:_:Z0/:PE3+GN]5>bK(s1?S[gV7jMphb5(rEM%Zq^(''ek+]f/U(Mp!#F2b(S@nt)IMiZaAmt@Q#WtB\]X^D.P\mQ9];%;(;.9NlfWk>h2hBUq/k.&ETb:D?u\(sJ?+mWJp2EfrUcVs7!Ds2!#?sE!Ot2$/9lC%f2'^A9Q]I:"CQ4Y*e:;TbCXq^If8o/_F/TS9E5hUjoMtQ\L_uLkLWMU.84jH`<9Rga((^]Ir.A1dd6Up#CS<jr++ESQZDLo*c3L3?d<+:]7VJSa5KD#M:X6a8TIu'm`r#.Z_#Y146EDo^Qs*4Uq=YiaOrM&,F@c.m_"ne/8j?o[+X/:+"_88i,lt0<pRGAAL@t\)AcDg*Gqq5fBD26#EYp4M+<<>a^r<#4264cO6ar,K>N&6,_urMEe9g<,Pbbl?;(>7fDRY!pVPLjjg&6BP\Kje[aDS,T=*=E<AQH1<_:tY4Rul6nT]XG-I64C;WT%5jiQcJa&]khS!rl[ap-miOIu*X':V4Se\Z':jm4nejl*=ME"`bm/9pcS-Xof<D5+TXIr*.6\ng]nebVZ1Dm_\KfT'*9:[Frjle#6j605.PZ:fQ"GVK5$>]ihi2YP2$0W5c:GqWn)ebV>0\RYP'plUt_VM3Fc7]4]bab]gWI]KiUQ%.tD8bV"%+]D/&d+RiYON^W7N1#%h9X*nBj!sKpqKYP82qgU-A6+4;C]>.1FA$daZE(V/@KNdD1Lcs"-JL-:p9ir2IRflqQA8W\m;@#,62drs%.d0:i\P"L^@uN4f53<B5:I7%#:%@JnD)&sK'`eJaZkhj^4&8kcXg)ab>3bRI08ea)bZ4SaRH4[b.mNW-@9+qP$Qm2/dl&eR9fJk:pYK7HXZKD\<3FN:bt-2I-br#)MuL5IbUDg3M^C]fC:Pu414@Yjkk&2XUtcN[nao,'0CN3K<YTd)`j(mH$hH8p!<[2jc;VVs*5orc@-tgPhAOdc2,'nZb*2ZUPL/lD\/!5bmk2dH>ND$ge2F9616=2ZE&>nAHAlIFB8odAr]URriMXZ#_t=qA=K^K%WrAJ-bJ])4C8^\*p*p>=ZuILQl#DO%J,UMfR714VX&Z>0fS`m@/Bt+F6XFDVT0!_?-ko@3@K_gkRO]kD(IKIK>[!r4*l%4]ruh*Y3mI""gG#XhR#B,8T'mNSTModhq_q+`tInJ2s5$YW0S<H^*FJaRH*7Gk1HA6NngSTIYVMi,h$o,2Vq[ZDFgu@]H!!u\ok`S(s.^m+NWf-H"c9\F)l!'=+FkI;8K</ge<@]9XR3p:>&]a6ens8a!"(%>qima\Wh`'-QWBmRF/`m>)pAa2jdmtF_3\Ne69`t-Cu)KH,?Vq&"WNE-[+]!=3o4!I6q,tgb]iVK:@)k[Xip.2nnHG>h>u3EQ="s[8s1k,Lm.':KtGM]KoVSQ_.ltUt&uGWa4_L?/!3i$F$OYOh_EcSrii>_#)?_C6@a61(:lcYRS8CHsHF)SB9*I2tjMi!\CDLmnN]t3\>P8LMiCG:>Z/s+2Kl)Eeh0m1Gem@o>V9K=+Fl8V?*hpYRS7$lX1pk/&8I/49/G1fEP[#FYJsF'jt0R*e::)C]c?M3ge"^$Eu'9&&?^%[Xf67*DC!j"^'@GR-2ttl0JAMh]oo31\j+6VbHKRdo%39d+@&%N4,$7c[Xi$pXXqQ"P^`8PdkV=?Q-[t(oQfj;rY\h@8MG\8(D*F%Bal]^H$%k>OIR>'jt/LGF[iaRngBQ:[W3m2V.dL]6cR8<4&h!`-sYi#2bHLf'R8FE*/N9)gIblf<)8;#"-NADeKJF%3CH=Ik8+0Q@/X?*FsL#=B>0O<Se*fhnFS;*a9DGNKc;)gJ]f1T]L&_0Vmc;1?J=<\g)#sKqO@0_-ko,c0C!87sJPOjl*=O>7GaO6?R$)#2eeO53X6C#6*0,\Ur),r-$OUE+$3lQ.7eSeY]>mRq'WVea\l$5s2/bSSC:63Wl/=h*I@eXB#VP8U5RHfN*Vjjm#[/\l]2#Cp*i>MRSGi_QlM/0L#D;ClUR]Q79ot34(Jb#@HlpaOGB<RS?`:q.?eZnL9]PkBfeoIbq2,NW_O5YRS6=N9`6+\+]?t=rcQ+T-cpWTU2<6=kK`NSP.mrK<);ii2C%tF"c*a[T@uj9oO?E(7*jtj[0?0I@5tFYtCnZj0?a'@6E7'gc@WX<jgcB<ke>"DQWi70UH/dGaT2rrRn8.RF_)NGff;B^2g+FI>uR4%t>q9g0N[ehN,"V!\>k.#F/02mcZ(PB)-:ZOCbq%NP8Rd"UE>4<N:Z^^?D/\DJS(FBC/q-;oi4Cj&7B+:<kBIqg#YOg#14o"1p]!gVCQZ>A(T7#FfOFEu\rp]iq`3?sp+?j,)h9n'5KXUT^8EDR2FMmH3a*n$n_8#a9I-X0p8\XQ(A1=+F;1mV)D*j[blC3o-)X-1M1`;QNc^QQ6O+T5JH#_K`H._l_rt3"g*4]q9LaFUR.RJo0FW@U'^s>ol'G!$k'7b)^L6HDEWhKCRnR"]l(<XQ+-#!6]+o%6J$jI>-301Y$Xr*9,3q'3&N/3,`kJQ#>QXWFYm;j[I%gI5c#N_X:X/*!q"I?lO?Y(tY%4[+:je[J8DP;7k:%h0<EXA;UU0qpjV>c&6_7m1j#3Xk3&_,KjmU_5H*I>?bW7mI=QP-"WWbZdig,fRiZp0<Gi+;ql_:Fe$:8bE%8(&tcF];lH##Qa5@mlbMraDp>b<#2iu4Jo0FQe]mNm/$>q%PhGs)>B"O\CHnprVq&uQOB/9]#$Y"9c;e,`BsTk(q"2#7Zf>f?K5$mElBPZN@NG*F]`P9Mh_'9ih,o@?-ORRSYRS7$lTX7EnY'am7CH9JAY&eG)-?!;,WS`k7=oC779oR)T/isTh:L=d!L@;T"LpM/2XhonK8FEJ!6Z#H!*l(&)gDtH_*k_5J7XR_!3T)$%D7M_?m=>U^p:m@!*:Q##%#5j0Tk`;?s1N[T'=!m1i?sKs#Xi\s/U?fCWTMag6=P@QK&MPRQH5Nero4ln(Z+R]HFF0_)Cd<2m-@qj4cMOPIBr?dE#-k3uT3PI#D7hA_CAjQF0\:0\#d9%a;;j0@DhlQa<m@Hi'qKkB7Gb45*lIYL18HMZheMbJC^V=_r73m!Z^3VPe4@Q>FmtcDNT)`IUgFL(F\j),D?<DXqm$Q=Q'$:mm>sB8iqp:^o?"=/s%5UJso=]7ljHM(u__,_BqJ)#Za:ue7>K=/jm%/mqe9287gC$^I&8VIKC2HY\hGes9Bd#I?>`6a>S+:;meWS1^A[UfJb"Y)A<OY_=/t#WPb^D:fC15eE[6e-.j"+1@D[ka94`%;%X,?ZDTu-PeI8(1$ca9op,3=jBmA3u0O9nRC;kA+QifGSpZ/X>(LXDYZq00Q>d9A,gi99)XjnB/h3KIPeGaTN&m:`U@AitE%Ai8F9NbYNeIA\9\B&%_l_JBAj#D:7JZd_,WpL/CP=Or_,6QDgoaT)IuCV7.ELfjA1o3drJl2&I,pI/u9BS1'9R5mHbo'^sYakegTB6<XbemKT92Xk`LY'[h7X>?9qp17jI_sU8Ck[esC\g&[ddU6\28O6lNj_W_-m1j#3R2r_pC5-'[8"5A<WZ^``1_Oo;4,h8a!u\5`q5A#JR2df+ekU$8KhMJiHj\umaa)up:L9U:iQp6B$;P"';oj:k[Xip>G/bOW;X;,2Yp8H+pXZK.[(3Z[N[L!.4EI[bnDO'V.DJUBNhKZ)3:J79[T@uZ%0[0jRb^>#RnE+K]+<[ufU^=7(>l-^SFYm3C`PSuj^`SOR@--jdCV?jHhZfaT!%uY"T&J5JX>D:?0:JDfH"sAk,;1,KL<R@5'p4/f[o'.);>r`A0uHgD#?EM/&8Go44fL[UjDfWE3jH4cfB.jCr]$Y3sWZ^Hn^tVHT]g/YsXXXZMh*"Pae@mlqf?&GBNWi:QDth;E^FeKO>aD3?Hcu1I@Q<46"7#7rA+FO1ZE,$q3RRDterf6Z_-$2In/"O1Oct]%C<iQIX]Ob9T>1'$,H"[U7Sr,([u^XmJ"0W-V"8p[ZeCQh$5QL"<0XZdBfeO^mE#B;Q?4QM?CZS3jV/^(\)k[gqbrs42S0B)lOh#e#;6<VNe33j*ga]5@5VnrWbZ)][D^0!!H8os-TReS2)#bZobrh3N\"JpC@#Lmn`TX-T)^$\n3+*k#.#<=S>Vq.5'MZ.ID51Y?Z@i!b3Si8op-NiuP:aBW6m+(fj'=B>0'L%[+qLUW;e3.AGV_MNm9#e#;N1ZCI0jm1OD/S'23=Oq?`-@h^3fEP[#FYJsF'jt0R*e::)C]c?M3ge"^$Eu'9&&?^%[Xf67*DC!j"^%(X#N4kMgVA`W%OSKp!\EY^bVT4L6H8Cdq7jL7N:a,EI<^j3"Kk+9_W[A2cS7G[eaBJ4ZfUt7^?/1!mZf87Z'jDl2tQ,:[XjdUESYijjPsImmWRSql/:OB7Q-NUbh\S2SF%&!=U1^RcgR#eEZ0!h'"#2un1]9DqguNA?-G??pFUge[=3&/p%@)mJo=.`lh32^3%]`!i8o3l-iZsiB03gRm;D)p)JsBRPG2q6DMINn?s2;-PB\`3^CB$hX8eo\.1Ee:2E(3$0djTS%)19;mQnS]gF=ks(=^QuNM2Q?R8d"mHZkmrX!b58StN_9></9U[7t'`_P'o^)Kp)jWrn_EL%=`aZ)n5B-_WT/*J<hSEZYh.2Xmp$RMdZGjgU]pJcj3(W3!EVY;R,[[(Zu1g3h^n[X(IuU\N;Q40;!/$\S%R[T6E:atr4QWe]sV?rd$Y]Nb/;ZEL7$qO&,m9dC!G]"RGl]K@kb:OFYOY.Ic>g/LuE'^\!:n]`sKStNn?k:KggT'<,O9mQYY*.N3;e]PYu]o5.i_$!75^F:8<JM6C6fEV=tHtsSq]![0Te`,CIBRFJd$>T"`g@@=PrpZUBh7t.pO0rZ+]`Ka#b3O!dU.fhm*=<>NomT"*O;Vp$OA$nTZ,M:R^,C`LGJ`d[U-#>^0\u:?;<q%oh84EDRF(]L0O!$#"oLa$B<KPDi01;A,f)D.E]gLO]\0ABRF[+9MG3'4/L`l2f%)adV'Z`![+q,@^-H@@Uj"c+=+FjnG4RJh)1(0[D(6$oK",UF8C5bE_QoNZf?$=u'2OX$B]S!Ud;!Dq\!M!'jEXK1,:F)JiP+&h[.(8oj:o1$fp!qMIjaEEmlbr=2MXM4V^j`Xh+rO?6a.$t/$in:UOqc?>@!PMg4-:A2]cm/cc.k?XVS8Wc[GF"AId%n*)-0r2DfZYCp*i^b4"J^KfpjNmd+pladmYMJboe0Wf7KDhama:m$m%"#\Wl\aq&E((d[sofNBerIU=D5$\I-D;]*2JP.c(CcKON8Y>d_XYRS5bO6]9Ei(_@*BJgje1@jIq[C,+?pAEm;7P`_Hf?iHTZFp;jX0oS,Le4V%5C8l3Ec^+Y(!J/O=,YC2k+d;o];MtgekO;Wao#/a"Oc+gZjMT*c>)=>qs%<X2EiTM1NTHJeB?4ed9T5)A$2+s:Z`0$C]c?2j1<H`>uoSi2s-1DDb9&8o'KE&;Z;dQW-giIT?j45/K^;*@XA8\<pKpnHp=b$f9q]Bp<3<7.-pD1cUN-jGLR'm>+nKaQYJUWK.L477N5;4C'J=GHP/6:+'#L\CM`f$#;'J@g)='Ihq!)-I;E\B_15`g.'(>Mr889h-*863lW*>cF^XtA\)uF."#o`]C]j^;0!ilG>k\XcK'IpK+o0*,kbu"dl84:MW?)[2)!juI_csJ5T$PtUP3&g[DR`u4ZFp;jCNNcS0)N8A]pAQ>oS^:(*#hZ&%10IoQS[V^>#%,ZUU_r$@s\A]<qRPn%doUkg1kO`foO8Qj".%e%ke_FfEP[-M!J_7j2>!QF:l:,p'S#T4!VPk$+>C$E?._`HNdN;Qj;R7"P^_M\.0jk]`K`XbQDg,Jo0F7>R(qq?3-?<joMtQ_)Cd,Y(MRIY5la,*qOd@2iE,E<')kIjS>579?tl\s65d.&,M_VL!eJ7kP=RN^LWoX+P6m)%dmeeRTV/kF)O<$1`6*L'A6[mQF1YOs8%ZR=7Tu#U9CnM3Vudg\)7%.DAU-uUTJ\9)Ef(k,hN<-%`WWWa`72E*LeonA:"J^<qjX6h@%MF])fnuDQ3WA>.)E6J+FN=(kTY0D0AR(_6bQ$UHIF,GD&>]V*(g7@@&j8(\Gc_b/7H([MnM(K^.'1%)1I(I)\OX%K*97B*I$jG:P>]ID0RFah@7*\-7)ghR$=<!LrZNE18^j[T@uj[9gYLnO?d9D.fgGA/F&[7gBnR3#)'s6FF,b,?)dXeQ02IM-[0IpY@s6C?=@K?BW!GYKlQ?WuMG99s>)>S?Xr\.ZB+*EJ&g[jH'n!ip[R=Cp*i^RM,4NVDWP(?g]Jqm3Z3?T"1q1D"/tANb"8W<ke=PeJTBTZ8J"EYRS78Pfp'J3&e4&AO=Yh@G%@>ZFp;j.hhNe.r//rM$li.mfla\_k0BA;jLD[X]C?M'$+TVJfIGSbjUHhj)Yr/+`iX':SI\J3Nmi!afDc.eg_UY\nti1LL;(r=(]o$h3qQMmG!+pm:UN.RVn\S5Ub;l!L>U3.***_-60Va#6@gEP9^YI#&kj[8nL`-?c6gD6ab<_'itdgbhOY+hP/-K]2rY>Xjo"VklfbVbH/3+W-2'PQQ_^7LY5u7QIX^QVrY-AmHfk4/t0sueR(,!odm7CHrTE`:7oC"0133d52!=gQW62:E"]uFn1lMs9BNN,L3=FJF'5qc12O,obA+_@Qhc2I`)?Q4g<QRE=ZHu!JdRS=WqMVE[p#mkWjo^l95B4Ne92p<*G7(gm`Bs^(8%ja;lH##Qa5@mlbMraDp>b<#2fS)Jo0FQeSX`BNpBm+<m0Mo?tc_Sb,\5?XgL(Z9nU89i/d7??s,kU`50,pDM'%[%DCD5U>WolgVD"cEF"\*are5dS?U'g=IJOk?s2<8Vjk149Q0N4:-'c;a,,DO&8VG%VoEl"IgGl9EPe][0#,I#$Eu'c3Pa/O[Xf67*DC!j"^%(X#N4kMgVA`W%OSKp!\@!g")rC7D;[if#8>cs!L>%o!Ot2,2XhonK8FEJ!6Z;Zs3Vhd[@\-"qph7Xa"1$iQ6Orc?4M]<jl)X-q-^[,=^c!6]ApU&YB^r<;.Y(X=Ou]m]fVQ<4bL*p*'.RT!8f*T#%%"W-p^NaRWKIMO?_h$8AoG*ZFp;jX7^O:eUP\eI9Rc@Wr,r.WUO42GLpTgR>>_>nnsLS@HKsX%k28q*%0AC?<RA$&@thn[-lPr6h2s9=gJNu2W[<r?F@1]b[p7FJ?=,Eq0BDMJ7Z]^7_,*TCV`]AL!3C]/[R_,b)A>`3-7^coE+A(fEPZ:iiCK)<EWFQPRO)AR&\kD[8(+:/6WM8Je41(ApX\`<^)k8WOXYqFhEDQZ-DoG<k`R(.0SD@bOJighmY[V]^?s=:b!MR;W]&s1ZK(dh3RFC?s1;]+2e]GTVZHJ%KdbjJi^"L^6m(n8)Bes-jZ25YRS6UE`q4kX.)Uo`H\HFZBBWYl\OP<bOu:IXDWp[mu((h8DHP4=sb63\'QukQPHt_$3ECVYRS6UE`ppMV#5C+N-?tB<H]s\`HU!A!LB"sAQ:s0rPMmq_Uij34470[6FeXT"bLULV%nXljg%?KWZAJs[(^ebG1g-OAqKqCgFL(FJs[nqH_,-pqPJ_LjOoPehWo+V%<?$Ji<A>F&S;BN1MmkEU9\07!;d&1JX:*[o?;n@RfgiVAoi4iUJ-A^4@.Trik=UsK@[U9X.Dn3T'[8#=kDJl]<Mg\9aJ1YQdL<@>L7%9lbaJU#+o=N"^'?PGNA=egAl+^YRS6eJ,X2&_%0[sIP@5lI!liZT'[8#=Z0iAWtT:O0B,$[aS#tF/27[NeHr[8(NCHhA:"J^QC%p8l3,kWMms6DZFp;j9?[KWFb4Jg79g'2fj4]F(&U:Y2_4^'gVf-GNt4gp#Q+eB2Xllgl\:^lj,G$pH1r/uhq:2/3b$^1Ye:)h/%I$V+HdW069G8;,1m*+/sOO?]AM3>'(KA9:U05VfNnTEeV\WUs,?XI@e6d#e\\VSC<^WY&=8_hj9pV9k/S#%Fb4JgARBZt'L%FGX;W+%9?P,EI_KE0R[L*0+8`Gach(,$&"W`.?:0L429C*q?3+)lgmU1L7C"U2]^0<FPKh#\ahj`=\cE5TLC(D?QSR1_p\![,<oIY-BcW?f8]I&$$fbshlSM`gG5Z9d=+Fk152N4rgZg`S>\8sL%ap)H!dpSI)gH'#.f&Q\55^@E<d.*T"3qpX-;2:[^WlHZYcJu0RI\[7J'+59DnDK3p"Oob5WR=gH-d&:G6t^/QV9"^Lj:ld95s['B"-Z8at"-Fm46D)3]amGUMfNf;\6QiMsV6e=n)\th)^0a>D913eqjXkp;I-LaopJ7b>:q_%fArLR`R1Be3>1EProT5QGp#Ac1VLKX@q`^B#Qdi!T;B/gVD"N>ZU0cTjtj&bGt9'3GN67X^52LY*WXF"^"f@f/p_$^:,m:a]'cibKHUA$fdpu$NI^'%Lh:5"P^^b-F$JYDrPH44KpB<edMoG+[+S"AfT+8"!0K6_*k<Z[>(q8hgNLrn]-jY%ZH^/m1j#/?f0AEnGiPD_)Cd,Red#hl[@Dl!LC.1/mSB;'EEE1D;[iJobh5jS$9R-/B^KkE-6bLi'glU'A6[mQ6kYo\2qGan05#fM/9?qb7aCH>b,7AGS/QD7(-0IAVk[4Y"l21]SPl],24W`ZG\j*=!uW)?Ja_R9T41t3,mbn>X(EmCRlauZFp;jbO,dXFb4JgAMgPo,Rted]7#-gMju(Wch7^M/A!^ReHr[8Qe'Jo4oT*#F?GILc/VMppil(O8[XJL[FToFBZgEXk?FKh0YFnL1UcQlAPK>Hp'S#T4"S1t$+>DOC'LQ)j=(UR*PP*1m5m")(ee?dHu0=88)_2R,M9^_gFL(FCp*h?-eJW0o!tiYfr(MGX%/_ObK>%?,F=[6SBJ1N!\DOg$?1->D;Z`>0B4tV7eu_>>h6OF^eNqcdfjeqjk)=Eb)_jbfNnTEo`3ndr::J9_sKV('[!25PBhEpb@O]F!'=BM2V"hVdQ2Qln.&3WbB_0?!NbST-0Y@EC4H0WaZk:Fq:A-rO$>#jGpTa!gH[rh<W-Tplme(MQcj+app")T_5s)1enrN?!A(;J%s.5MSrJ5PL*-$S/HtpT7jG5.Z7.G6gRiDPT1r7R_Qo<u[4"#=gl]ba>>8\K+4"_$-WufSgSVW+37m__b5q[X@1u=`HT2"EU5<TJC/_b!5<c;h/dnP?b5q[X67rXrq`'u+l2K&Wn^`^2Db<ri+dW?4HsR]\MFIU@@8]6BO^&Y%n9M/952t>W!e=4jA\gcT=TH6m"ht05gHu'n;oiOd6ulE1^aI+;]U/hPT-Ta,'?Oed!1tO'"i(RaIV4$%4albeB&@7YYEV8`QSVh'EoaM+J<.f?S&,d<ISW/bZ=%8k\UEWkO#DH1$XA]s('*hYE`iCt;sWVP2Eu[+Cm=$WC;%@<*8[^"BfT,E3kTTO4GC:mpE6*eq2>j;pOd"X5V<EEpl*7LD\!T`Aub!"b!\iK&bN#5Y0%a6Z]WrK>&/7!,`\nF%OHpS&$e7Rr#rnp=eAq7!:WF/&-2.VUg-s76MJ8Kk-F[i17?>.2pR,uAH;d<,R=G/%YAe!-Eluk>ZNPGZHf)PUPuaoXE&-Hnt7!U6nSiIp``!0!-\u%:V-S>gLkP0X_R[(GD^$1FjeTI<SNk`qAF<V!5KBW63+NJAGW8$BraQIQaJ'%oD)YBNjMf1SCPHsAc3%J/-+Ud"<dd#6',l^As7iH:p+W4p%@X/C+fhH%k>%d6ZIBlOI:(m;u8)3bITaF/-+Ud"<dd#_,h6rTBrqSbCYT3Z2fD.&qg7(#="j(H5?Og+IkqS$NTrG5mRI7+NX^!a^kJQ?R,mXi""hR?m<-4!8rb<+TU;K>S^!YQN[A:OWXdW4-7X;M<(rBJ1hOg!,r23\Z?pWom"rf*&LR%H*EDOV!g:(>S[>/7=l'NmN@qMR?ITLk06A"QHN`KE`iCX(C<D.\:`AYAT`J0C\(F!6WTZlb4]$kB?JE;o7b";j$WP=+;qX4QN[A:OWXdW4%SM#i`oN0@,,Rd3uZ6VFN;%((u<'b5=ieraCPAP?R,mXi"#=gXO^0^[=70cB_Ggd.rIIV\7=TpUZHCSZ2fD.&qg7(#P!:k=8cf2df%Md<mG9AK8`;a3a1r@/dh[S,!cJ7GH`<#'n!CK#GS5Xa16ecL,%BlPiT+MJ1hOg!,r0Eb[p2*0f+d9G+^+I"TWq4+9[3VBVfV/r\oRms8@EIj27qb=3Jc!jpU5LS1m0J.*6$$!+-uW!T4I%Q'pn!ZJ^W$Z2fD.&qg7(#@C.NPs7V>=!s=<!.9nO"FrRq9nJ5_Z2e"F"1YCM00]H7HcTd74:etR!7i:4K=d8h!q&FG!u&df!O)ha*o,#TH)uJuU;.e*F'p3&/-$G/`e1l8L][>@*p3Y\cVQTC;XCc)p@SNp#9,Ze%!X.Q!+6B_(:Y<7-u^9M3+oX(f&,)SIE?&?.NnopM\*//h$?E"qe5q5f&(BUgjJbjUAUFXp\I0;jekDh\Cn0Ac%/0+\$,`)o7u]05r,T3#Q_^b6lg5*!`@l>OpRlWO'2jmTL/>;DLsCfCj!+9<aof6iQrb(j;Yj"#Q_^bKH-=7rK?u3e@Q<K!r&rEQdr3f7P62iShW(O*P&8!j8:/G"9=>kEr;<P$gIr++b;%\+7XhD=+2upFF%#j'@^8OQW9S^4:uSPD\GG;YQuDm,2rtB7%9ZRZ5%=r%dsV#S)0@ZG#+2q&r6V`&Z8d3$(Tr&\9q5KS)IL7QPHt_QZYY^#QXl(mG.e\gUIjr:`lB$q"MO6p&b=(=!WPg9"(_i4Tn2GPJ`OL[3cQh]*K_'f9K((psDIlWZ3R&[T4^;QRPqLT/[V#66Q^&j76MWp#90b44MF\_N+>q-JDMN6+ngA8dGD4U#c!OM0kX;lI+7:+G%(0<ZEpe-m,)n"niQ+>%dI_qHQo=cUUN\/L)7lab0,(U\nL`k;[P^8P06g(89gaQEm)U4rRMGEOGU@'Uc(l2Q3@N@BV^Q5!U7um,Ot0Rr0ke^-W,,^`q9!h\Dd`lD$_[XDZ8?=0\kMh:Klh61IMR;.(L?^$,7)%gu9%!3c`?dasK8_R+>:bO&E@TF_;#iOT+-;F1Af#W:H_o(On^gK(HVc*4cVnGa?>/ig;4WrJ-RgTg05+U[SReH[_&KE,BlC-:..658(-3X7:5KE,BlC-:..658(-3X7:5KE,BlC-:..658'Bo)FCcqJaMdK]seN:id^EH+rQB2f;@s!Pfo/,d85A.'SbCSPutO5#<@rpTfC#T4Mo\:Ia9nPRmgG6;7Nn;2>;Nkl0<bY7D(:5.n(2re6U%^R5`7>:Sa05D`]I4Pks`)9h.W*+h&YDF=d3^`q8CYT&9EY`EN@VV7"*C%S]oK;8$fC)sP+XfKJTkjFf[S3'DUkM7R1!*FoK!d:=M"nj\#bDPJi*mO>_\j<nf>h.$_Aoac8Pn2/7.3S[nKVII-lTY,PrgCGp7Z6H%O+1.VQfRX\EAA6C'V`B,>)ect*D4ZHbK89\q'Jo3E`NX7?^5VJ0<95!JqRFGmnO/i^`jI-5@N7@VCdD7N^h2SqQ4E+r4^\e?F2(/7"Kd)Qh@$/P3G\@VbQf;>2u$/i"p`CEI>I$J!(EGJ41k9\s7..43*tf0WRrn%[Ol&N-e]qJAL;]Wnf6^,Lp91*_O`Uq>4.#%\u.W8[:3j>7ZE9Y`8F`;S>X"r-^_C76"OYX5Ci]>$&C<<io?E3A'&-o7PlS\gNS$;F1Af#Xq0efu=bCB!=.pr%l+2d-gE>q1RdBkA0*gSNITNNjC<k.'ScjU6E>I55s-%F-thoo)(9R)bfI%.')B>_#.Re\*@DAM/a>(#QPX6W!LPtZD*9?"LVf$Xo'ss0YdKQH7'NSV0BXA+&-cg$;k1Qhn90*C%q%L'&H"_!PfmY60EStjmOK[fuo7sO+3LBLj?94QH\FD?<4UNk3+_$&-_dtq)A?=L$;=D]IuHJ.3S[nKL4mM05DtJFmYT'<j;Ir-CO%10C-K`<PFgM3cFhV4XidMI<aq1$Rm5!=G.U]-[kU7,/()0XLc*H33gGL=k+NKX7@K^;MYDOnBMO\;F1Af#W:JBi3oKM*DP(rSuO$sg?M4Ea6-jCHT@uB-dFV1fZL"[O?>P>fgp"L4M%(H'V`B$]_TI!PRmgG6B*qEH/lUQU;/rtYMhf?#QPX6`Z+"L+7;lI$LB"In+Z=kGig@0m]*h=kN`Ql$eJ9C!3c_t%dZY.$LB!9k>^VTg/Ifkh9dNioA:,\?7@#t=G.k'G,#TPp(;[1j6Hq%QLC%-7k\I<aKaO0<HQ4?eJlMkK5kA:&pL$JV1\hV&IK9*NC"?38$]$,O*$$8,7i=1R@[N$E+hhPq8Tk-&-+7JPleQpL][Iph]ETgd<(aV:3^,!CMrHK0.S+aIOQE?=G/.-G,#TPp(@<8GL^oYEq4:#l^jqWoWlV,a<)5r;F1AfL^1/Z57`GrY^o<sR0c>d$f_QL/]nBNf%Pt.Wr(r=^orN"('&,HV8.!@Z@IAY]pCUc[9aVeU6c&!,#g"q)nde1+0B_2CRaP\VU`SrjkoNsa(_[T:SnBIg8H!0jd$d#*C=^MH<CCCZ2e![.Kt!j&-_d46ClTmA\hY#+TPVtZ3kcM&-_d48=`]96Nq\0KE,Bl.P'/2658(-3X7:5KE,BlC-:..658(-3X7:5KE,BlkA.`]-`2n.R<[pik'$[lVd[f?n8cX)fsX)"2P84??72Meo<12PCOSa1658(m;K'<hG=i,@(3/mmo\fV?+J4eO1$HVf,(/;o9Qs%aQeNf>M4lMQ^Q(e,4M(Nm@OSrW'\J(F(0jB:!Pfo%T?tcnCCVTN?XIHS<]qOQr2mU#n4i62T4"j1:,UO0e*!69@]tj4Gm:1@Ro1cd@:jYcGeCG223VEVld>K1X)=KMVg@3'CKgglajj?$]=/E"c)5n0b3uBPij1T/Tb%C91%B-!?iE7Ln_uQL53=$f>hHUYF)Co(M\6)A7DqDk%h3,O%4t7+n*\_#]A0QYB:R;;c=D'.W3hIYDg1bn]UQh2PFg"]ok@#^AZb,JZhnL@MJC?tKda0ddJ(`t)CEuS/kkV*W8KH0^.keg^j/NX!#BQG0C,T[eLO^4,3P<=V&_,5XD6j\)8C)C.lfTfUjo8.27374YDR(n4G>2fO6X.5n;E%P?X"apOQr@`pslkA?r\QKCK@Pf:?GsUH'[L4b_'FQQBX1np/"'UY_JfAG^f66Qs!b^JlTX1AXq!89SV)dB.0V7^q4l(JsQ^?jr*78'qF.)7_s0%)G-OZm]31q[eqr<V3PKg'u%toiXfu!AY9S<2NbYr%DDcPbo+*q<MsC`N.[0\a;f#XC+K=XI=oAHr.hSS70s"1,"=Wo_9D>#TENCO@qW@RR8b7cX\d,ek45UrSAq_r=uY;Ui`Vc'BVMfWA9.!;7:nl/M*_p/7-6'^o+!m2?-?2,n[)[d)149SABAhg!]cH<pF81I4XEH%!Pfm_eO%!rOIn5Yeu332=u'8NB"";p>'+PaM(1#Y=N74Rh8=nV6!d<XG[?PKLN^eS_H21d<1esTKda0dpau>Boc6#`O:9Q`5L79O-=<qPWEg4LQ_'i/1=SJ>i30EDqD^N<:%bE->(UCZ3=dD=!,H854dhJtn4e254"RI6EFk54*V'WeWn(@#`ALlo."V`@Ylo?ll'7**j(-T@Njhb_]MW:!+@8#3H/R4Q_1B(%'!9"<Bb(^Rl`Z0g[u?)/'\GnEc<5Q?mCq%E#O,R*K#(KX9[%Nc1;.]^?R4]"Fd%[RYJsA0.jcYf!*DXuA6R$*.=FiocJ?IAPJ8u/.'Sceos2.`n(Z$SBNoWNY9p$2ofbtR!#EtqrF6j`B([b!5"up(:Au?.&-_dTmJIqRT<_`9:[$*'(0\Q.AB_rE+EElA2neuo>7Y;bj+E<r]B?;B>.TPFjIq5,?k':*YT&9EYRbm%[CX%&rbY75!#D7BJ___BJUOJ</m$ms`BKLt!%^Go!kV<c!rGgW^kJ!a!%^Hr#J3ih!rGgW^kJ!a!%d,WNE?)Rc&!PV&%t?mK23k(*o^N>p1O(_s59YWcYIr\CHe/[]hV%TkI3X1p(jikGZ0;EYR.uo\<%=)J47]4GccH3AglBrbKK=6eHsk$H*.MI)XZ5_c;g(+?Pl.7"FhGOf%k+`q1Y5A9-FZ/6SAg"UkA_U&`#NE?3a\aI@]%pomHE%\*h,N2eCY0?GW.4%YruY7et.$6dFkecTE7e,uZt`?t&BKppmGCS]RdUg08>s!JAK]B=PQTFej.bh5jfO1EHm#?lPm0O?c&;!Pfm_]nk7#e\PX*e^21oo'Ti?Zs+csNOj*V:1eIJWZsm=H8<AtEj]g!KK]?-CJ?>ZbjU_MIHB'M0\E*2"nnXV"W(''!3h8PH<F%GX'W=d'03gT0(%6DbkMG>(!2h_nl=k"=inMEVuAKcXShK:^G`\!<2V05JPG?>_1e*b!%]>cZ[^Z1MOQro_Wo>QHWeH!b6Z2l#rX9n"HhlmE$j>5>.rZ5MDr[:G"/,#jEW_4?iCr3d`O8rIIYoY&AL(m+UW$pkkYS'PRmgG@e==5?tOULZD#YQ'm(TG#*Y*k@qJ3UA<kA^W)fN`^:W4>F#U@$]_5#P/(je9YDr=N__d&qYR.uo\<%=)J40TbK,b(+(UE?#nV$MIXLYdi<QDC3^LE=3ekb?*T:hH+g1AF&HErl[iTpF-YDqhrd@q0Up7[fV(K*R"Y_]S2niKbKaId/mQ(_M#-6":e]aiqaR<81<V;:FVZk@%h<1]N%\Ve^PlMqHJe]H>n>/tkI?1CCP/V48ai8o6_XpPY$H/?[GYO:7NfQom-ZT<:]6WmDZ@Ln/@Y`/m,Ys/aF"9@?Q(i4hPd=Nfqf;%0W\<0uCIo?lk/79FCT>(@*^?<\+YEN>.N@Z@Y!+5Kah%d8V27*.^AY6&_>:4o9H<J$IhK*$2m-`X.AHT0KLLpU(k+S+F!!'fOl".\KoWeGs!4X\q/D,qg('"=7pSF2[]@"e'!!(rkoWhj`H<C4J!8NoI(@4LD$NL0WqpNZ>h<8DN!!$tFH<IHk]ds-`!:EK5$[/;3"TSP<IHb=ZDY147!!'O4#I'sf&%sLo!!$p#q1J(,5QC?:bL[52^PseX/-#YMmcZaAKE)DTp=g)Xzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!Mm6@H^Wt,~>endstream - -endobj -% 'FormXob.f54a132f85de37697b101f145bc60841': class PDFImageXObject -45 0 obj -<< /BitsPerComponent 8 - /ColorSpace /DeviceGray - /Decode [ 0 - 1 ] - /Filter [ /ASCII85Decode - /FlateDecode ] - /Height 1194 - /Length 13974 - /Subtype /Image - /Type /XObject - /Width 1604 >> -stream -Gb"0WD/Ln+d[ebiJH@J!lct!cHFm^UO9hYfX*>i^q,hD6VCQk\a.oJ,TNMzzzzzzzzz^u,*1K#^CXB*R!dqK[#Lq+1P0!*`&[mk'"g9)m*8>=q-K/MmU'7/D1ITcjC^da*7J%07l>Ibn:B#XF7=oA2f$!(s&ZpD+YK:a5kN\'P\:''\SmKn]Sl83cPp1^'I>qK["Q+TNh:c[-$/!@X(ZhHOY!5`,.)hEjR08u/*R()d6N,5o0`ck(^?l0#a6L&dH/5OU0\"JA0ZH#KB"!%$(>HOC8`.$8u8>A+:-M=gDr6:1`FUn@As)?N_ZrOfVd&:bDXkIlS(!0g#=mk$@!TLAX%DkS<S-.:+d$Om+bOac.kBF$k[o^gp+6NB`STD'*>!`1*>]XQ6!J.h,0]nM1@PXn%-/MmU'7/D1ITcjC^da*7J%07l>Ibn:B#XF7=oA2f$!(s&ZpD+YK:a5kN\'P\:''\SmKn]Sl83cPp1^'I>qK["Q+TNh:c[-$/!@X(ZhHOY!5`,.)hEjR08u/*R()d6N,5o0`ck(^?l0#a6L&dH/5OU0\"JA0ZH#KB"!%$(>HOC8`.$8u8>A+:-M=gDr6:1`FUn@As)?N_ZrOfVd&:bDXkIlS(!0g#=mk$@!TLAX%DkS<S-.:+d$Om+bOac.kBF$k[o^gp+6NB`STD'*>!`1*>]XQ6!J.h,0]nM1@PXn%-/MmU'7/D1ITcjC^da*7J%07l>Ibn:B#XF7=oA2f$!(s&ZpD+YK:a5kN\'P\:''\SmKn]Sl83cPp1^'I>qK["Q+TNh:c[-$/!@X(ZhHOY!5`,.)hEjR08u/*R()d6N,5o0`ck(^?l0#a6L&dH/5OU0\"JA0ZH#KB"!%$(>HOC8`.$8u8>A+:-M=gDr6:1`FUn@As)?N_ZrOfVd&:bDXkIlS(!0g#=mk$@!TLAX%DkS<S-.:+d$Om+bOac.kBF$k[o^gp+6NB`STD'*>!`1*>]XQ6!J.dphhjp>LHG@crqI^#bd`:BLVuJZNp&D])kOF]6R0!)f5QAi'qMtVa8K%ZGS,W8V\C5p3!"8Wj6i_JX*uY3rHiE^lCo%(F!#D=Q!5.P<s5nS&Nr`W;)?R^D^ATF\dXM`,lOaX-hPD@q]LtTlGaF-bn1G.Ni*@6&^q2E+J9P]5!:S>I!8aOq!5(rl!-jib!:VTM!T76%!l2E)"Ft]1#QX>A&-1R`+TT/J6ND@tL&g]q%0>Bm)?R^d1^&>QBa=_-dLZE8V',iO91&](Q\GM0/e%j>>oEd[]/0Y@GA.<_n'VaIhPDC2/,nHaNt9"c@4j`(n/lT+b<@"sa2;/0Eo91=^6eftj``i2`?toij6_2]L)`]Ni*,t@Q_P_Ed1EgR^<bnSaDj$>Y,1T.3>uoX%=r<Zqco/9*(NBS>5CFLUER\*&@e%?cfJi]EARg$V=/Ic)KHf,JSXNI>`OOY7ml3<qEC7@+ihtA\<akTj_2_T1^'tXmrLK-EZ>O>C[(_$NeSND6f;/E5*r#fa3bI.QG1],BZP0M"KnTiF#b.Z*"@I7l2+_GL)`]Ni*,t@Q_P_Ed1EgR^<bnSaDj$>Y,1T.3>uoX%=r<Zqco/9*(NBS>5CFLUER\*&@e%?cfJi]EARg$V=/Ic)KHf,JSXNI>`OOY7ml3<qEC7@+ihtA\<akTj_2_T1^'tXmrLK-EZ>O>C[(_$NeSND6f;/E5*r#fa3bI.QG1],BZP0M"KnTiF#b.Z*"@I7l2+_GL)`]Ni*,t@Q_P_Ed1EgR^<bnSaDj$>Y,1T.3>uoX%=r<Zqco/9*(NBS>5CFLUER\*&@e%?cfJi]EARg$V=/Ic)KHf,JSXNI>`OOY7ml3<qEC7@+ihtA\<akTj_2_T1^'tXmrLK-EZ>O>C[(_$NeSND6fs]ka*JdKIfCN"3KAj</\R5<Hp7K-5oOb`%@LFH+6sfVkk+mlQD5VDd?(o8pTYbKM:.LGBZSuWqcJo66ts_^1h:LgIB5q+U,:pj)D\eo51ZJP;&XHp%@LFH+7%=9-k/1sL<M6_O7d0WP_L/J6fs]ka*KQf8jeW6+`g<F@m(_CV'3n,OL_4^YoX@2dZEL&aP>5@=HA2)Buk9NA8^X[X@GXP1upV71:Qm>etXBc)KHf,R9OtZld:eB%69H'bUpMhok6m\L)`]Nk*FlEH8Hm>6]RobF%bt34W4s0+ihul\Y]&**Y!tSOQ1#qgsZ(%O+p&:aDj%IDWuSN7mj"-j>\&5\+Dl8UENJQEZ>OV>C%CWd?#ac3KAj</\R5<BLnAB*(NBYQJTZ.1aG[\Nh[b=9CH@R)A8kia3g!ZV>%59%>iMpj(QNhded.-L.#asEAV3Dl$]X'6_ZEu3#XQ]oKLj$+]0.u*"A<?H6;J#O=1PuNeYb0]oVi"8<eiK7mlF)hT'q!,YCFaUEO\OmpeL!&u?bld?(o8pTYbKM:.LGBZSuWqcJo66ts_^1h:LgIB5q+U,:pj)D\eo51ZJP;&XHp%@LFH+7%=9-k/1sL<M6_O7d0WP_L/J6fs]ka*KQf8jeW6+`g<F@m(_CV'3n,OL_4^YoX@2dZEL&aP>5@=HA2)Buk9NA8^X[X@GXP1upV71:Qm>etXBc)KHf,R9OtZld:eB%69H'bUpMhok6m\L)`]Nk*FlEH8Hm>6]RobF%bt34W4s0+ihul\Y]&**Y!tSOQ1#qgsZ(%O+p&:aDj%IDWuSN7mj"-j>\&5\+Dl8UENJQEZ>OV>C%CWd?#ac3KAj</\R5<BLnAB*(NBYQJTZ.1aG[\Nh[b=9CH@R)A8kia3g!ZV>%59%>iMpj(QNhded.-L.#asEAV3Dl$]X'6_ZEu3#XQ]oKLj$+]0.u*"A<?H6;J#O=1PuNeYb0]oVi"8<eiK7mlF)hT'q!,YCFaUEO\OmpeL!&u?bld?(o8pTYbKM:.LGBZSuWqcJo66ts_^1h:LgIB5q+U,:pj)D\eo51ZJP;&XHp%@LFH+7%=9-k/1sL<M6_O7d0WP_L/J6fs]ka*KQf8jeW6+`g<F@m(_CV'3n,OL_4^YoX@2dZEL&aP>5@=HA2)Buk9NA8^X[X@GXP1upV71:Qm>etXBc)KHf,R9OtZld:eB%69H'bUpMhok6m\L)`]Nk*FlEH8Hm>6]RobF%bt34W4s0+ihul\Y]&**Y!tSOQ1#qgsZ(%O+p&:aDj%IDWuSN7mj"-j>\&5\+Dl8UENJQEZ>OV>C%CWd?#ac3KAj</\R5<BLnAB*(NBYQJTZ.1aG[\Nh[b=9CH@R)A8kia3g!ZV>%59%>iMpj(QNhded.-L.#asEAV3Dl$]X'6_ZEu3#XQ]oKLj$+]0.u*"A<?H6;J#O=1PuNeYb0]oVi"8<eiK7mlF)hT'q!,YCFaUEO]*I/`7ST9#,LJ,2?qUER\*OL]d%IdrTAa2m.&I@n^1OQ1![>YEu;E\ui:)?SO=pUM7Q3KAj0[Iel"7mi<3+`K#]T?GWDj(J^'9AeoQ1upV7!nYlp\Ju&=NeY?WoR/>^6]RobE%QL1bL)F3BF%j9hrf#:j>\%Zf@'E(*"=ogL;:4hI4e#WNh[b:/Ua87d?*C%#[C$[kAiE?3#VkMdeC9l%69H'^pWf_/k89hUEOS.I@n^1OQ1![>YEu;E\ui:)?SO=pUM7Q3KAj0[Iel"7mi<3+`K#]T?GWDj(J^'9AeoQ1upV7!nYlp\Ju&=NeY?WoR/>^6]RobE%QL1bL)F3BF%j9hrf#:j>\%Zf@'E(*"=ogL;:4hI4e#WNh[b:/Ua87d?*C%#[C$[kAiE?3#VkMdeC9l%69H'^pWf_/k89hUEOS.I@n^1OQ1![>YEu;E\ui:)?SO=pUM7Q3KAj0[Iel"7mi<3+`K#]T?GWDj(J^'9AeoQ1upV7!nYlp\Ju&=NeY?WoR/>^6]RobE%QL1bL)F3BF%j9hrf#:j>\%Zf@'E(*"=ogL;:4hI4e#WNh[b:/Ua87d?*C%#[C$[kAiE?3#VkMdeC9l%69H'^pWf_/k89hUEOS.I@n^1OQ1![>YEu;E\ui:)?SO=pUM7Q3KAj0[Iel"7mi<3+`K#]T?GWDj(J^'9AeoQ1upV7!nYlp\Ju&=NeY?WoR/>^6]RobE%QL1bIMjo*hU4#eE<V&-t+:`-[@]g%Jb8H@T/>Kk+dT`Un?`0p]h`<?d_a@E\mpW9DV4dNeRO]8O(>?d1Cg]kpLa:)?TCSr?O$d6NFirTB,*I#f)f!PIqkE!Vhh,P*_pe!+4/Mno?Pii(No<?B0a?Hq?QEbL$lO0Bjj03>qtg-2f)B7md9jUn?`0BF)D?oTQp-%0?6eIZg%m+TPlt:\&N_"Q2rL8R@F3!.7@&aii'CJ1p.7GrZcEn0S#Y01SA0^8.C^j_+q8Qh6KS*";rDP(&R\UEKVEdSKFS1^)`0qFP"RL&cTm5KV*r&:cEpcegO)51XfOI&&tE^be4r^Lm,qL8=j&$]gA@-Ni:6rV96KdXMB"9@=@OhXoG"I%C6m!*ISi+p,Q,rm22VhXe4+)'f*X!3d:L!T6]Ppp\,hIgc<Md1?<7o^+k=Q2Yh)=H@\,n1G.Ni*@6&^q2E+J9P]5!:S>I!8aOq!5(rl!-jib!:VTM!T76%!l2E)"Ft]1#QX>A&-1R`+TT/J6ND@tL&g]q%0>Bm)?R^d1^&>QBa=_-dLZE8V',iO91&](Q\GM0/e%j>>oEdgkRW4D<VjO@3]=5Ihe<M6j3RN!ps(5;i&cqWGPi>n+5bbi)LSG;r/O#%pZ"?)=G-'!L>VN6r-j$+'5R*.`pc(hN8K]bCgmjfdhmPSTCMgKSP?3%G8eBfpbR@`^9`YRpeG>o*Il)ta*0GH#2a,'^Z3Z8rV4Ybf&/WLiHP2;^E;@d`#=$$1&R%rj7hRqRok=31ksoXBDd4+B+o(MS]:.\rf#`qmqcGB^=*pJa.Mo!nXWCU_06g8n+\\f5JFI\2>BpVp`4k(n&KW1Ym0*"%):iKq#1!5-J%*:NT#*Z)8@9Nfu+eVV_S+05NDLu4.B?)mkfdVnRqcKHtO+.n=@Sg48t2rO7-mo%DL:.I`J)Nqsg4OXMK*!_sd@VI_Yp=+)LE9iVOG%r+XW0fJG40U%Ftb[!t1$JFq/R^!DK&?f^dU:&eYN\G1d+J(E'Im@XR056pk1s76,H>lM+p5AV5S^JOdQ>2$_3F?o]cTUpn&d?$F.17j6I9LHs9a;k^-:IAfm+_<LkNeWLj+Z.Z01)b1'6cRRdRV>;1%Cr5Wj(SeD1o-(bgsM5R1k]HZ;FX%ABZPE:68K'"UEOh<A3:<pR>-sRO?4@9SqbTc6cs)`*=Wl^6YN>?AMiJ.L5`#R1t.OA)KJ>8`mYKfBh0*N\YC>.BaDs?Ul:&`d?*lTKOu-#7RQTWaESUi1CYe.+a5bR4:S!PL6U)I3uTlGL<rU]b%Sj:%2hr/BVlqa1us[ON2IgUduZ='E^rL:dh%s^8/VlIUESZ3#gG3%N/$-8ORY/\Af=Q:6geX/GT&n)%4S%qG;Nhm%AB2EPgPRS)D[n=cqHgLBZM2'),EV5VBKM-jGntRV]dnGO>7_p7mk;F&=R<()%F-O+ld8Bbqu5TL>:1<nMGo2)H'$lmV'[d)F?4h.AJ&11h8]XTp^Y"d?$F.17j6I9LHs9a;k^-:IAfm+_<LkNeWLj+Z.Z01)b1'6cRRdRV>;1%Cr5Wj(SeD1o-(bgsM5R1k]HZ;FX%ABZPE:68K'"UEOh<A3:<pR>-sRO?4@9SqbTc6cs)`*=Wl^6YN>?AMiJ.L5`#R1t.OA)KJ>8`mYKfBh0*N\YC>.BaDs?Ul:&`d?*lTKOu-#7RQTWaESUi1CYe.+a5bR4:S!PL6U)I3uTlGL<rU]b%Sj:%2hr/BVlqa1us[ON2IgUduZ='E^rL:dh%s^8/VlIUESZ3#gG3%N/$-8ORY/\Af=Q:6geX/GT&n)%4S%qG;Nhm%AB2EPgPRS)D[n=cqHgLBZM2'),EV5VBKM-jGntRV]dnGO>7_p7mk;F&=R<()%F-O+ld8Bbqu5TL>:1<nMGo2)H'$lmV'[d)F?4h.AJ&11h8]XTp^Y"d?$F.17j6I9LHs9a;k^-:IAfm+_<LkNeWLj+Z.Z01)b1'6cRRdRV>;1%Cr5Wj(SeD1o-(bgsM5R1k]HZ;FX%ABZPE:68K'"UEOh<A3:<pR>-sRO?4@9SqbTc6cs)`*=Wl^6YN>?AMiJ.L5`#R1t.OA)KJ>8`mYKfBh0*N\YC>.BaDs?Ul:&`d?*lTKOu-#7RQTWaESUi1CYe.+a5bR4:S!PL6U)I3uTlGL<rU]b%Sj:%2hr/BVlqa1us[ON2IgUduZ='E^rL:dh%s^8/VlIUESZ3#gG3%N/$-8ORY/\Af=Q:6geX/GT&n)%4S%qG;Nhm%AB2EPgPRS)D[n=cqHgLBZM2'),EV5VBKM-jGntRV]dnGO>7_p7mk;F&=R<()%F-O+ld8Bbqu5TL>:1<nMGo2)H'$lmV'[d)F?4h.AJ&11h8]XTp^Y"d?$F.17j6I9LHs9a;k^-:IAfm+_<LkNeWLj+Z.Z01)b1'6cRRdRV>;1%Cr5Wj(SeD1o-(bgsM5R1k]HZ;FX%ABZPE:68K'"UEOh<A3:<pR>-sRO?4@9SqbTc6cs)`*=Wl^6YN>?AMiJ.L5`#R1t.OA)KJ>8`mYKfBh0*N\YC>.BaDs?Ul:&`d?*lTKOu-#7RQTKr'HIjhn8:HnahNcT_-1$V]fV.jNb^to^V^q],i%YJ+s7@:Q0T<;FX%A9_Qe<(b\$,l=id,%Cr5WgIk>$H5][N6geX/p<jVLSq`KWO?4Ad^%B7AV]fV.jGnt200M&TBh0*N\YC>&92CLm)H'$lmV']8dM&CIL6U)I3uYE<oYd]++_<LkNeV@'4Yc598/VlIUESAb:Q0T<;FX%ABZTnq';M.RPgPRS)R@'K`2KRWAMiJ.L28M+1$WID)%F-O+koXcN-ZC?7RQTWaS+$qURm4)d?$F.ZG#nKW2CeM1us[OCbIq+l=id,%Cr5WgIk>$H5][N6geX/p<jVLSq`KWO?4Ad^%B7AV]fV.jGnt200M&TBh0*N\YC>&92CLm)H'$lmV']8dM&CIL6U)I3uYE<oYd]++_<LkNeV@'4Yc598/VlIUESAb:Q0T<;FX%ABZTnq';M.RPgPRS)R@'K`2KRWAM/Jda62n/4TE@$cUZ*h`B;R=83ID21].2&qnIViqG1LCkp*!qL6S+=+b0KNks'dEKl<%W)H'$l3*u@aBqQV\k&/7IIq8E%?uOF#UkOPf=e[&`6D``DdR-CE9\kf6^G>bCYdNEfd6p@EbhS;prL)n7Kq62cO#@nS7RK.Am.tCj+_<!<a?T[LoH1uj6FTH0%4S%q*%uD\1t%I@o/>[a+.E1MfN7/)BVck`k&&1H`.Mgh,G^ocPgL&&QTdb$Bh0*NiHXT3Un3=*d1D>)5!nOK8/VlqGj-HKSq`KW&<<)@6L&8U)%GPLkp*!qL6U'sNgDprl=id,%H2Qr,G^ocPgL&&QTdb$Bh0*NiHXT3Un3=*d1D>)5!nOK8/VlqGj-HKSq`KW&<<)@6L&8U)%GPLkp*!qL6U'sNgDprl=id,%H2Qr,G^ocPgL&&QTdb$rS'^6q#&D64s,3NqA'O6>5EZBhS1r/j7/'%4[/^;odq(K[Ij>c^$5QJ$Y;/JC?bJPH5^fV%A?u%IA<BgS4c5JQ@@_iV]k6O&?;Sa2sP+u\MStSl1^0`)KIG>Tj%;@URm4191,YDIc%*%+m78bWhnT3l=n>M1k]W.pPjJ;E\7fp>5EZBSq`b.6`?<"hl*FrkL'pAV;F5sBumhAKPKcGNHuL`/e+LXqL,-1L7Cn(W0VniW2Cg%dL`FTh`'h7aLO-\C?bJPH5^fV%A?u%IA<BgS4c5JQ@@_iV]k6O&?;Sa2sP+u\MStSl1^0`)KIG>Tj%;@URm4191,YDIc%*%+m78bWhnT3l=n>M1k]W.pPjJ;E\7fp>5EZBSq`b.6`?<"hl*FrkL'pAV;F5sBumhAKPKcGNHuL`/e+LXqL,-1L7Cn(W0VniW2Cg%dL`FTh`'h7aLO-\C?bJPH5^fV%A?u%IA<BgS4c5JQ@@_iV]k6O&?;Sa2sP+u\MStSl1^0`)KIG>Tj%;@URm4191,YDIc%*%+m78bWhnT3l=n>M1k]W.pPjJ;E\7fp>5EZBSq`b.6`?<"hl*FrkL'pAV;F5sBumhAKPKcGNHuL`/e+LXqL,-1L7Cn(W0VniW2Cg%dL`FTh`'h7aLO-\C?bJPH5^fV%A?u%IA<BgS4c5JQ@@_iV]k6O&?;Sa2sP+u\MStSl1^0`)KIG>Tj%;@URm4191,YDIc%*%+m78bWhnT3l=n>M1k]W.pPjJ;E\7fp>5EZBSq`b.6`?<"hl*FrkL'pAV;F5sBumhAKPKcGNHuL`/e+LXqL,-1L7Cn(W0VniW2Cg%dL`FTh`'h7aLO-\C?bJPH5^fV%A?u%IA<BgS4c5JQ@@_iV]k6O&?;Sa2sP+u\MStSl1^0`)KIG>Tj%;@URm4191,YDIc%*%+m78bWhnT3l=n>M1k]W.pPjJ;E\7fp>5EZBSq`b.6`?<"hl*FrkL'pAV;F5sBumhAKPKcGNHuL`/e+LXqL,-1L7Cn(W0VniW2Cg%dL`FTh`'h7aLO-\C?bJPH5^fV%A?u%IA<BgS4c5JQ@@_iV]k6O&?;Sa2sP+u\MStSl1^0`)KIG>Tj%;@URm4191,YDIc%*%+m78bWhnT3l=n>M1k]W.pPjJ;E\7fp>5EZBSq`b.6`?<"hl*FrkL'pAV;F5sBumhAKPKcGNHuL`/e+LXqL,-1L7Cn(W0VniW2Cg%dL`FTh`'h7aLO-\C?bJPH5^fV%A?u%IA<BgS4c5JQ@@_iV]k6O&?;Sa2sP+u\MStSl1^0`)KIG>Tj%;@URm4191,ZOq##QGk6no8cUW:mUhC%a4s%I6p>:V#s+G]ZO7^Rcd1E8Kk<J6'rt/)I\tP:AYW(m&6@\rPcKROqWYdZ/qEm['Rr(N`5;\&<ff#)jgV6%:r_oJEBgWaI@=+j\<W;NlEi8pS-t1e*775_"AODSus%TKbT*#f:)euo<G%TW.bDib_qhA9lN1JW\e8f'cbeBd:)e3OS%COt.40rk(ji5r@I7#SF`m3oiC:Q'BB&?G.NNk;:L0AJRS_5sOEb"I[^7gi3@qYKE[G2T\ZYuf8#?g9lCsMJW[G4lMhnPK7(M^Lc/AHZd^G")W@p+9\>(0hWji4V(rjD[<:s4i0q>G+)IA)rGbOYP^o(ta*2jWS"YN>M4>&Gn7mpF9,$anblQJ]HCh\U%<Yq3Y>/\`sgEar7$s&skYW9)%)r;O,%^/3"4Abl:?q0es&)p@gLfCJf*/N9!WpTN]QV-<`qqZp@g54%6Xp_DT38-M4:'1qYN<hBnLp`FqgG;N46ccnl+qkDX0?hWtRr!Mk*Uk55.M59l7.h-dPOB*:*\+ICJV'/VQdRln#QJNF[1uq4q>%u(7defc(L-00@.h109H=+&-O=(KOV'11Ymu(3bnt[G21h:OhIF1YSSi!7.L?pM*03W)2PD6HmOM.Lb74SgmdZ@KJZFBJ?BVckJ)U_5Fp6OPOXYf*16X"3FhU;:qQ%hD881P/&>C'Y`dZ>gcBr)u"9CId>)Y0[IXYaR,l$^rO6_6-1Q%nWW]e<Q'aHM@cdZD/=pI-SAH.%dT)R?jE^1a>d:E%YR6hZi&(TfOT8OHZqaPPABU6UHqBh0``firc0[*k$`%;DX^HV<gc<Z:P)+g!S3Ds;\t8jf1,Um6]$/\Nf@BulKm[*k&LV>!D/%=-B`<Z89QoY,"8+\s$)8ji<<hA<:Nj@M^BBuo/ZqkB@14D@>:%G=s3?aS7C-Ojdd+aZlNMcLbeU`lisA8g^\d7Qct1o-Ckln,n(>%u'AL:#Bj]qtHl.h-dPOB*:*\+ICJV'/VQdRln#QJNF[1uq4q>%u(7defc(L-00@.h109H=+&-O=(KOV'11Ymu(3bnt[G21h:OhIF1YSSi!7.L?pM*03W)2PD6HmOM.Lb74SgmdZ@KJZFBJ?BVckJ)U_5Fp6OPOXYf*16X"3FhU;:qQ%hD881P/&>C'Y`dZ>gcBr)u"9CId>)Y0[IXYaR,l$^rO6_6-1Q%nWW]e<Q'aHM@cdZD/=pI-SAH.%dT)R?jE^1a>d:E%YR6hZi&(TfOT8OHZqaPPABU6UHqBh0``firc0[*k$`%;DX^HV<gc<Z:P)+g!S3Ds;\t8jf1,Um6]$/\Nf@BulKm[*k&LV>!D/%=-B`<Z89QoY,"8+\s$)8ji<<hA<:Nj@M^BBuo/ZqkB@14D@>:%G=s3?aS7C-Ojdd+aZlNMcLbeU`lisA8g^\d7Qct1o-Ckln,n(>2>eAj7E$E4s03kObW3S]e<RFT(C"_fDZg5m\l8&ln,n(=ukaikmoj3UYB"!?aOk!7FE9$Ak'8=oY,##S;X1-m*(E+Ds;\tauL80J(U/,h;6TWU6TdPP5_[A1V18rpI-Uq>U98VB4c749CId>cFHLB_p6Kip6OPOXdjHpoS9!*dHrO!03UC!,3]V"1S`]/H=+%"c:-/'G%O4Q\+ICJjd_7)5O?UQDK"cfdE4Hc8UoB\);X/tqkB?s/s?4<1GcVUV>!D/k?K;2@:s1oHV<gc<mJ6HqSUV&kk:>!(Tj3KOn=F"RF1CR]e<PLk9B.$4#<Yd>C'Y`Em@,%+*M6c\$u"DB]YbBUd+4iN,ERuIF61t(J0,/R2Oi;defc(F"WXTYVS)H]qtHl/*C._rF'>NFF-[LMcS-68G^6LbinbdhA<;aF-6*MSXImm/\Nf@3ThUN%m)SBgKSu2ZuXG\dN<XE7^ol!^1cVuMkiT(b`$FXl$^t%3>Y8:fU3W5hU;:qQ#eR@rie17]"Os774[P+,lM.aAorAmmu(5l\OcS7cHPMGQJNF[S9'hbLRjj\m4H")=ukaikmoj3UYB"!?aOk!7FE9$Ak'8=oY,##S;X1-m*(E+Ds;\tauL80J(U/,h;6TWU6TdPP5_[A1V18rpI-Uq>U98VB4c749CId>cFHLB_p6Kip6OPOXdjHpoS9!*dHrO!03UC!,3]V"1S`]/H=+%"c:-/'G%O4Q\+ICJjd_7)5O?UQDK"cfdE4Hc8UoB\);X/tqkB?s/s?4<1GcVUV>!D/k?K;2@:s1oHV<gc<mJ6HqSUV&kk:>!(Tj3KOn=F"RF1CR]e<PLk9B.$4#<Yd>C'Y`Em@,%+*M6c\$u"DB]YbBUd+4iN,ERuIF61t(J0,/R2Oi;defc(F"WXTYVS)H]qtHl/*C._rF'>NFF-[LMcS-68G^6LbinbdhA<;aF-6*MSXImm/\Nf@3ThUN%m)SBgKSu2ZuXG\dN<XE7^ol!^1cVuMkiT(b`$FXl$^t%3>Y8:fU3W5hU;:qQ#eR@rie17]"Os774[P+,lM.aAorAmmu(5l\OcS7cHPMGQJNF[S9'hbLRjj\m4H")=ukaikmoj3UYB"!?aOk!7FE9$Ak'8=oY,##S;X1-m*(E+Ds;\tauL80J(U/,h;6TWU6TdPP5_[A1V18rpI-Uq>U98VB4c749CId>cFHLB_p6Kip6OPOXdjHpoS9!*dHrO!03UC!,3]V"1S`]/H=+%"c:-/'G%O4Q\+ICJjd_7)5O?UQDK"cfdE4Hc8UoB\);X/tqkB?s/s?4<1GcVUV>!D/k?K;2@:s1oHV<gc<mJ6HqSUV&kk:>!(Tj3KOn=F"RF1CR]e<PLk9B.$4#<Yd>C'Y`Em@,%+*M6c\$u"DB]YbBUd+4iN,ERuIF61t(J0,/R2Oi;defc(F"WXTYVS)H]qtHl/*C._rF'>NFF-[LMcS-68G^6LbinbdhA<;aF-6*MSXImm/\Nf@3ThUN%m)SBgKSu2ZuXG\dN<XE7^ol!^1cVuMkiT(b`$FXl$^t%3>Y8:fU3W5hU;:qQ#eR@rie17]"Os774[P+,lM.aAorAmmu(5l\OcS7cHPMGQJNF[S9'hbLRjj\m4H")=ukaikmoj3UYB"!?aOk!7FE9$Ak'8=oY,##S;X1-m*(E+Ds;\tauL80J(U/,h;6TWU6TdPP5_[A1V18rpI-Uq>U98VB4c749CId>cFHLB_p6Kip6OPOXdjHpoS9!*dHrO!03UC!,3]V"1S`^Zj7E#%T$'=Fk9E."9r6b3R;'b!4s%I6o\X5Xs+H3K7s]-D9#&h2dh)6EkHr]f"<.Y3do4^,p@IISdshK>#sZm;dh&tZf='.X#5a3?dZ`,k[e'O>Sc1_'7e2P1SVFA<YApK?&@N0uU8On4D!#[%:B)d0,5+8T5XX2Jhq"@t;qOP*JR3k]Ya9j`48m4(M9tk,":\cms-S$,O'r]qkBR@P_H+D<48n?HLWJMg#Rt34ik\1MGC!j>_N$I+Oj`^jbVXtnBa>r[hs$PC#WpHG7S:GE1XcnYU`k\]I]$hU+m_`e(b,DYcV-^YObPPfqOO4GL9Mm3@ANNW4YmOU7iK68l$%Gc)T%LkKTX^OoZT.F*GGd(V;LO*Ba?fK&4T:,dkfGaG,-:?P^]NCVBP:s6Pq9N:<uU$fTCnB;YlrUR>.pj%:Q()4$>A/@7M6Q8Ek>EAfAOH1k_">n+=g\KH4b4,Gj;^R:upgdL\l?^XG!f&9aimN0JdhB;Qj=84+4CrD([46eINU0N.b<Ssb?&MY(46o_:t,<,SO&1,BBu($WDLkjsr9W8("+A7cas/(/e#O:tkaH6b:&?s\uPl\:qf!n&<]R/uo:oNjK;";d.@aik0\=/>T%+XadMoLNS+^q:l)f*saV"f+XD1BZbSl+LuU#qd>`P*m1AY=S,)6V_S$l&j36J9aS0Y8_M6$V6=hAd6I0dX0f3'3meK,Vq5a?BO+1L7I0'dNb0J!V;3@?8ppJ(Q]][bRBk?V"_GD-b+^!87lJL]HY&@%6;6.Udm0r"6L?_]l(mt/g*<?R2I]^8FL[g:2g6uOj)%"Gt!%_)fgN<8<7:n#0\UGHejbs>X3T\1G`EFOl#DYSDXIs,FOr#o8<0H2rk)XO<2Nf%%(+lpUVLq\:F3BAnJik,/)S;3Pblp7kuk&jq[-oDTE,:+?bmU))/6bmr^umDuo3cbfkT_7=)-VEe4ZiO(;i,bU_+gh2i:T5^F\31LOOOhWoodhu_=OR@+*IMY(46j9-9\*m)V7Qrg*X\fiH2JFlBEB#)&'^"3]R_$-W)1,B$p($WDLa9aIA4d)3N0X"%9F[JoC!U5`jb^at-HES9.JdY,1A7c%i/(/e#O:tkaH6b:&?s\uPl\:qf!n&<]R/uo:oNjK;";d.@aik0\=/>T%+XadMoLNS+^q:l)f*saV"f+XD1BZbSl+LuU#qd>`P*m1AY=S,)6V_S$l&j36J9aS0Y8_M6$V6=hAd6I0dX0f3'3meK,Vq5a?BO+1L7I0'dNb0J!V;3@?8ppJ(Q]][bRBk?V"_GD-b+^!87lJL]HY&@%6;6.Udm0r"6L?_]l(mt/g*<?R2I]^8FL[g:2g6uOj)%"Gt!%_)fgN<8<7:n#0\UGHejbs>X3T\1G`EFOl#DYSDXIs,FOr#o8<0H2rk)XO<2Nf%%(+lpUVLq\:F3BAnJik,/)S;3Pblp7kuk&jq[-oDTE,:+?bmU))/6bmr^umDuo3cbfkT_7=)-VEe4ZiO(;i,bU_+gh2i:T5^F\31LOOOhWoodhu_=OR@+*IMY(46j9-9\*m)V7Qrg*X\fiH2JFlBEB#)&'^"3]R_$-W)1,B$p($WDLa9aIA4d)3N0X"%9F[JoC!U5`jb^at-HES9.JdY,1A7c%i/(/e#O:tkaH6b:&?s\uPl\:qf!n&<]R/uo:oNjK;";d.@aik0\=/>T%+XadMoLNS+^q:l)f*saV"["tuF5c_Qr]7,+rSVQa6Pf1]pr.s-8,DPUP4XC=+UnI4Oa_7.U`mN.dLYc#1^#d-qSD!LL&f7b5I_Z\&E"Di#BrNR!ZWH`i,2(QJ7GAsg^Rs'E/aFA]-.UaNfed02l%V41"$U#L,9#mLB$u&E;l&D^bPbrkD&T#X9/G&zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!"L7K"<V8j&.~>endstream - -endobj -% 'Page5': class PDFPage -46 0 obj -% Page dictionary -<< /Contents 70 0 R - /MediaBox [ 0 - 0 - 595.2756 - 841.8898 ] - /Parent 65 0 R - /Resources << /Font 1 0 R - /ProcSet [ /PDF - /Text - /ImageB - /ImageC - /ImageI ] - /XObject << /FormXob.cfe9493e2e6e4e30496a38f77524126d 42 0 R - /FormXob.e0f32bdd4f95c90d9dd1dfb9f782f702 44 0 R >> >> - /Rotate 0 - /Trans << >> - /Type /Page >> -endobj -% 'R47': class PDFCatalog -47 0 obj -% Document Root -<< /Outlines 49 0 R - /PageMode /UseNone - /Pages 65 0 R - /Type /Catalog >> -endobj -% 'R48': class PDFInfo -48 0 obj -<< /Author () - /CreationDate (D:20091013154344-01'00') - /Keywords () - /Producer (ReportLab http://www.reportlab.com) - /Subject (\(unspecified\)) - /Title (Etude pour generateur stupide de code Java) >> -endobj -% 'R49': class PDFOutlines -49 0 obj -<< /Count 16 - /First 50 0 R - /Last 64 0 R - /Type /Outlines >> -endobj -% 'Outline.0': class OutlineEntryObject -50 0 obj -<< /Count 12 - /Dest [ 35 0 R - /XYZ - 62.69291 - 398.0236 - 0 ] - /First 51 0 R - /Last 62 0 R - /Next 63 0 R - /Parent 49 0 R - /Title (JavaModel) >> -endobj -% 'Outline.16.0': class OutlineEntryObject -51 0 obj -<< /Dest [ 35 0 R - /XYZ - 62.69291 - 365.0236 - 0 ] - /Next 52 0 R - /Parent 50 0 R - /Title (Documents de r\351f\351rence) >> -endobj -% 'Outline.16.1': class OutlineEntryObject -52 0 obj -<< /Dest [ 35 0 R - /XYZ - 62.69291 - 293.0236 - 0 ] - /Next 53 0 R - /Parent 50 0 R - /Prev 51 0 R - /Title (Besoin/Contexte) >> -endobj -% 'Outline.16.2': class OutlineEntryObject -53 0 obj -<< /Dest [ 35 0 R - /XYZ - 62.69291 - 173.0236 - 0 ] - /Next 54 0 R - /Parent 50 0 R - /Prev 52 0 R - /Title (Pr\351sentation) >> -endobj -% 'Outline.16.3': class OutlineEntryObject -54 0 obj -<< /Dest [ 38 0 R - /XYZ - 62.69291 - 486.2781 - 0 ] - /Next 55 0 R - /Parent 50 0 R - /Prev 53 0 R - /Title (Les \351l\351ments de base) >> -endobj -% 'Outline.16.4': class OutlineEntryObject -55 0 obj -<< /Dest [ 38 0 R - /XYZ - 62.69291 - 354.2781 - 0 ] - /Next 56 0 R - /Parent 50 0 R - /Prev 54 0 R - /Title (Abstraction des comportements communs) >> -endobj -% 'Outline.16.5': class OutlineEntryObject -56 0 obj -<< /Dest [ 38 0 R - /XYZ - 62.69291 - 246.2781 - 0 ] - /Next 57 0 R - /Parent 50 0 R - /Prev 55 0 R - /Title (Concernant les imports) >> -endobj -% 'Outline.16.6': class OutlineEntryObject -57 0 obj -<< /Dest [ 38 0 R - /XYZ - 62.69291 - 186.2781 - 0 ] - /Next 58 0 R - /Parent 50 0 R - /Prev 56 0 R - /Title (Concernant les exceptions) >> -endobj -% 'Outline.16.7': class OutlineEntryObject -58 0 obj -<< /Dest [ 38 0 R - /XYZ - 62.69291 - 138.2781 - 0 ] - /Next 59 0 R - /Parent 50 0 R - /Prev 57 0 R - /Title (Ajouts a venir) >> -endobj -% 'Outline.16.8': class OutlineEntryObject -59 0 obj -<< /Dest [ 40 0 R - /XYZ - 62.69291 - 741.0236 - 0 ] - /Next 60 0 R - /Parent 50 0 R - /Prev 58 0 R - /Title (Resultat attendu) >> -endobj -% 'Outline.16.9': class OutlineEntryObject -60 0 obj -<< /Dest [ 40 0 R - /XYZ - 62.69291 - 657.0236 - 0 ] - /Next 61 0 R - /Parent 50 0 R - /Prev 59 0 R - /Title (Interaction avec EUGene -> ToPIA ?) >> -endobj -% 'Outline.16.10': class OutlineEntryObject -61 0 obj -<< /Dest [ 40 0 R - /XYZ - 62.69291 - 597.0236 - 0 ] - /Next 62 0 R - /Parent 50 0 R - /Prev 60 0 R - /Title (Remplissage du mod\350le) >> -endobj -% 'Outline.16.11': class OutlineEntryObject -62 0 obj -<< /Dest [ 40 0 R - /XYZ - 62.69291 - 416.4691 - 0 ] - /Parent 50 0 R - /Prev 61 0 R - /Title (Ou placer le modele ?) >> -endobj -% 'Outline.1': class OutlineEntryObject -63 0 obj -<< /Dest [ 40 0 R - /XYZ - 62.69291 - 356.4691 - 0 ] - /Next 64 0 R - /Parent 49 0 R - /Prev 50 0 R - /Title (Model to Model \(Reference TODO du 2009-09-04\)) >> -endobj -% 'Outline.2': class OutlineEntryObject -64 0 obj -<< /Dest [ 41 0 R - /XYZ - 62.69291 - 195.7082 - 0 ] - /Parent 49 0 R - /Prev 63 0 R - /Title (Mod\350le d'EUGene \(ObjectModel\)) >> -endobj -% 'R65': class PDFPages -65 0 obj -% page tree -<< /Count 5 - /Kids [ 35 0 R - 38 0 R - 40 0 R - 41 0 R - 46 0 R ] - /Type /Pages >> -endobj -% 'R66': class PDFStream -66 0 obj -% page stream -<< /Length 7679 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 741.0236 cm -q -BT 1 0 0 1 0 9.64 Tm 23.77488 0 Td 24 TL /F2 20 Tf 0 0 0 rg (Etude pour generateur stupide de code Java) Tj T* -23.77488 0 Td ET -Q -Q -q -1 0 0 1 62.69291 719.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Date : 2009-10-13 Cree par : fdesbois) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 686.0236 cm -q -BT 1 0 0 1 0 8.435 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Contenu) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 410.0236 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 255 cm -q -BT 1 0 0 1 0 4.82 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (JavaModel) Tj T* ET -Q -Q -q -1 0 0 1 403.8898 255 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 54.44 0 Td (1) Tj T* -54.44 0 Td ET -Q -Q -q -1 0 0 1 6 237 cm -q -BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Documents de r\351f\351rence) Tj T* ET -Q -Q -q -1 0 0 1 403.8898 237 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (1) Tj T* -54.44 0 Td ET -Q -Q -q -1 0 0 1 6 219 cm -q -BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Besoin/Contexte) Tj T* ET -Q -Q -q -1 0 0 1 403.8898 219 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (1) Tj T* -54.44 0 Td ET -Q -Q -q -1 0 0 1 6 201 cm -q -BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Pr\351sentation) Tj T* ET -Q -Q -q -1 0 0 1 403.8898 201 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (1) Tj T* -54.44 0 Td ET -Q -Q -q -1 0 0 1 6 183 cm -q -BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Les \351l\351ments de base) Tj T* ET -Q -Q -q -1 0 0 1 403.8898 183 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (2) Tj T* -54.44 0 Td ET -Q -Q -q -1 0 0 1 6 165 cm -q -BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Abstraction des comportements communs) Tj T* ET -Q -Q -q -1 0 0 1 403.8898 165 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (2) Tj T* -54.44 0 Td ET -Q -Q -q -1 0 0 1 6 147 cm -q -BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Concernant les imports) Tj T* ET -Q -Q -q -1 0 0 1 403.8898 147 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (2) Tj T* -54.44 0 Td ET -Q -Q -q -1 0 0 1 6 129 cm -q -BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Concernant les exceptions) Tj T* ET -Q -Q -q -1 0 0 1 403.8898 129 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (2) Tj T* -54.44 0 Td ET -Q -Q -q -1 0 0 1 6 111 cm -q -BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Ajouts a venir) Tj T* ET -Q -Q -q -1 0 0 1 403.8898 111 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (2) Tj T* -54.44 0 Td ET -Q -Q -q -1 0 0 1 6 93 cm -q -BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Resultat attendu) Tj T* ET -Q -Q -q -1 0 0 1 403.8898 93 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (3) Tj T* -54.44 0 Td ET -Q -Q -q -1 0 0 1 6 75 cm -q -BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Interaction avec EUGene -) Tj (> ToPIA ?) Tj T* ET -Q -Q -q -1 0 0 1 403.8898 75 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (3) Tj T* -54.44 0 Td ET -Q -Q -q -1 0 0 1 6 57 cm -q -BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Remplissage du mod\350le) Tj T* ET -Q -Q -q -1 0 0 1 403.8898 57 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (3) Tj T* -54.44 0 Td ET -Q -Q -q -1 0 0 1 6 39 cm -q -BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Ou placer le modele ?) Tj T* ET -Q -Q -q -1 0 0 1 403.8898 39 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (3) Tj T* -54.44 0 Td ET -Q -Q -q -1 0 0 1 6 21 cm -q -BT 1 0 0 1 0 4.82 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (Model to Model \(Reference TODO du 2009-09-04\)) Tj T* ET -Q -Q -q -1 0 0 1 403.8898 21 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 54.44 0 Td (3) Tj T* -54.44 0 Td ET -Q -Q -q -1 0 0 1 6 3 cm -q -BT 1 0 0 1 0 4.82 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (Mod\350le d'EUGene \(ObjectModel\)) Tj T* ET -Q -Q -q -1 0 0 1 403.8898 3 cm -q -0 0 .501961 rg -0 0 .501961 RG -BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 54.44 0 Td (4) Tj T* -54.44 0 Td ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 377.0236 cm -q -BT 1 0 0 1 0 8.435 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (JavaModel) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 347.0236 cm -q -BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Documents de r\351f\351rence) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 329.0236 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Todo d'EUGene du 2009-09-04 \(a la suite de ce document\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 317.0236 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Mod\350le d'EUgene \(diagrammes de classes\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 305.0236 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Metamodel Java de l'OMG \(2004-02-02\) : Metamodel_Java_04-02-02.pdf) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 275.0236 cm -q -BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Besoin/Contexte) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 185.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 76.82 Tm /F1 10 Tf 12 TL .483735 Tw (A l'heure actuelle, les g\351n\351rations de code Java sont faites depuis EUGene en passant par des modeles) Tj T* 0 Tw 1.182485 Tw (UML \(ArgoUML XMI 1.2 ou TopCased XMI 2.1\). Il n'est pas possible de g\351n\351rer simplement un fichier) Tj T* 0 Tw .74436 Tw (java sans passer par le mod\350le UML. De plus, les templates de g\351n\351ration peuvent \352tre fastidieuse lors) Tj T* 0 Tw .816654 Tw (de la cr\351ation de fichier Java pour tout ce qui concerne les imports \(cf ToPIA-persistence\). Il a \351t\351 initi\351) Tj T* 0 Tw .109318 Tw (l'id\351e de cr\351er un autre g\351n\351rateur sans intelligence permettant de simplement g\351n\351r\351 du code Java sans) Tj T* 0 Tw .324597 Tw (contraintes particuli\350res et de main\350re simplet et intuitive. Pour cela l'ObjectModel d'EUGene semble non) Tj T* 0 Tw (adapt\351 \340 une g\351n\351ration purement Java car bas\351 sur l'UML/XMI.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 155.0236 cm -q -BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Pr\351sentation) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 89.02362 cm -q -0 0 0 rg -BT 1 0 0 1 0 52.82 Tm /F1 10 Tf 12 TL 1.844983 Tw (L'id\351e est de cr\351er un autre Mod\350le ind\351pendant d'EUGene bas\351 uniquement sur la g\351n\351ration Java) Tj T* 0 Tw .617209 Tw (\(donc rien de sp\351cifique \340 UML mais plus \340 Java\). Le but \351tant de pouvoir g\351n\351rer n'importe quel fichier) Tj T* 0 Tw 2.298651 Tw (java assez simplement sans contrainte de model UML ni d'EUGene. Par la suite il sera int\351ressant) Tj T* 0 Tw 3.126905 Tw (d'\351crire une sorte de transformation Model To Model entre l'ObjectModel d'EUGene et ce modele) Tj T* 0 Tw (specifique \340 Java, qu'on pourrait appeler pour simplifier JavaModel.) Tj T* ET -Q -Q - -endstream - -endobj -% 'R67': class PDFStream -67 0 obj -% page stream -<< /Length 5968 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 498.2781 cm -q -469.8898 0 0 266.7455 0 0 cm -/FormXob.0abfd65e2cab2f27fd6af0c2fbb44aa3 Do -Q -Q -q -1 0 0 1 62.69291 468.2781 cm -q -BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Les \351l\351ments de base) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 450.2781 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (JavaPackage : Package contenant un ensemble de fichiers java \(JavaFile\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 426.2781 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 12 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 1.265366 Tw (JavaFile : Fichier contenu dans un package et pouvant potentiellement contenir une ou plusieurs) Tj T* 0 Tw (classes/interfaces \(cet \351l\351ment comprendra la liste des imports\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 414.2781 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (JavaClass : Classe Java contenant m\351thodes \(JavaMethod\) et attributs \(JavaField\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 402.2781 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (JavaInterface : Interface Java contenant m\351thodes \(JavaMethod\) et attributs \(JavaField\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 390.2781 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (JavaMethod : Methode Java contenant un ensemble de param\350tres \(JavaParameter\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 378.2781 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (JavaField : un attribut Java \(pour une classe ou une interface\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 366.2781 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (JavaParameter : un parametre d'une methode) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 336.2781 cm -q -BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Abstraction des comportements communs) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 306.2781 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 12 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 4.84748 Tw (AbstractNamedElement : Tout \351l\351ment du mod\350le poss\350de au minimum un nom et des) Tj T* 0 Tw (commentaires \(javadoc\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 282.2781 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 12 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 2.16248 Tw (AbstractClassifier : Les classes et interfaces ont un fort comportement en commun \(methodes,) Tj T* 0 Tw (attributs, heritage, ...\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 258.2781 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 12 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 1.802706 Tw (AbstractTypedElement : Gestion du typage communs aux champs \(JavaField\) et param\350tres de) Tj T* 0 Tw (m\351thodes \(JavaMethod\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 228.2781 cm -q -BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Concernant les imports) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 198.2781 cm -q -0 0 0 rg -BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL .505868 Tw (Les imports seront g\351r\351s de mani\350re simple par une liste de String. Un manager des imports pourra etre) Tj T* 0 Tw (utiliser pour optimiser la gestion des imports \(utilisation ImportsManager ?\)) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 168.2781 cm -q -BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Concernant les exceptions) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 150.2781 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Pour un m\352me soucis de simplicit\351 que les imports les exceptions seront g\351r\351s par une liste de String.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 120.2781 cm -q -BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Ajouts a venir) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 90.27812 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 12 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 2.089269 Tw (Gestion plus pouss\351 du Typage, notamment pour g\351rer les Generic et peut etre specifies plus) Tj T* 0 Tw (precisemment les types primitifs) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 78.27812 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Gestion des \351num\351rations \(pour le moment non bloquant pour une premi\350re version\)) Tj T* ET -Q -Q -q -Q -Q - -endstream - -endobj -% 'R68': class PDFStream -68 0 obj -% page stream -<< /Length 7403 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 753.0236 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Gestion plus pouss\351 des Exceptions \(a voir...\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 723.0236 cm -q -BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Resultat attendu) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 669.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 40.82 Tm /F1 10 Tf 12 TL .765868 Tw (Obtenir un modele simple bas\351 sur le langage Java sans complexit\351 li\351 \340 une technologie \(EJB, ...\). Ce) Tj T* 0 Tw 4.091318 Tw (g\351n\351rateur aura pour but de creer des fichiers java directement a partir du code sans passer) Tj T* 0 Tw 1.387674 Tw (obligatoirement par un modele UML comme le pr\351conise EUGene. Un g\351n\351rateur sans intelligence se) Tj T* 0 Tw (chargera de g\351n\351rer les fichiers java tel que d\351crit dans le modele m\351moire \(JavaModel\).) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 639.0236 cm -q -BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Interaction avec EUGene -) Tj (> ToPIA ?) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 609.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 1.562485 Tw (Par la suite des g\351n\351rateurs pourront etre cr\351\351s pour passer de l'ObjectModel au Java \(avec plus ou) Tj T* 0 Tw (moins de sp\351cificit\351s : DAO, DTO, Bean, ...\) et peut-\352tre int\351grables dans une v3 de ToPIA.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 579.0236 cm -q -BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Remplissage du mod\350le) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 537.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL 1.484692 Tw (Le remplissage de base se fait en utilisant directement le mod\350le \(via des getter, setter, add\), cad, le) Tj T* 0 Tw 1.754198 Tw (remplissage se fait au fur et a mesure en partant de l'element racine, le package ou le model en lui) Tj T* 0 Tw (meme.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 428.4691 cm -q -q -.397135 0 0 .397135 0 0 cm -q -1 0 0 1 6.6 16.61905 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 1182 252 re B* -Q -q -BT 1 0 0 1 0 233.71 Tm 12 TL /F4 10 Tf 0 0 0 rg (JavaBuilder builder = new JavaBuilder\(\);) Tj T* T* (JavaPackage package = builder.getPackage\("org.nuiton.eugene.javamodel.test"\); // nouvelle instanciantion si n'existe pas dans le Builder.) Tj T* (JavaFile javaFile = package.addFile\("Personne"\);) Tj T* T* (javaFile.addImport\("java.util.List"\);) Tj T* (JavaClass personne = javaFile.addClass\("Personne"\);) Tj T* (JavaMethod method = personne.addMethod\("init"\);) Tj T* (method.addInputParameter\("nom", "String"\);) Tj T* (method.addBodyCode\(/*{) Tj T* ( ...) Tj T* (}*/\);) Tj T* T* T* (JavaField fieldNom = personne.addProperty\("noms", "List) Tj (<) Tj (String) Tj (>) Tj (", JavaBuilder.ADD_SETTER, JavaBuilder.ADD_GETTER\); // ou 4 methodes \(sans getter/setter, avec getter, avec setter et avec les deux\)) Tj T* T* (addPropertyWithGetterSetter) Tj T* (addPropertyWithGetter) Tj T* (addPropertyWithSetter) Tj T* (addField) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 398.4691 cm -q -BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Ou placer le modele ?) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 368.4691 cm -q -0 0 0 rg -BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL .948735 Tw (La question se pose pour garder une ind\351pendance avec EUGene, o\371 placer ce modele ? Etant donn\351) Tj T* 0 Tw (que certaines classes d'EUGene seront surement utiles comme le Generator ou l'ImportsManager.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 335.4691 cm -q -BT 1 0 0 1 0 8.435 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Model to Model \(Reference TODO du 2009-09-04\)) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 305.4691 cm -q -0 0 0 rg -BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 2.837765 Tw (Pour tout ce qui est g\351n\351ration de classe Java, le principe de base d'Eugene est de dire que le) Tj T* 0 Tw (d\351veloppeur \351crit directement ce qu'il souhaite voir dans le fichier final.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 287.4691 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Cela pose quelques difficult\351s:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 275.4691 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (difficult\351 de pr\351voir les imports) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 263.4691 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (difficult\351 d'\351viter la g\351n\351ration de deux m\351thodes ayant le m\352me nom) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 209.4691 cm -q -0 0 0 rg -BT 1 0 0 1 0 40.82 Tm /F1 10 Tf 12 TL .887318 Tw (L'id\351e serait alors de constuire la classe Java souhait\351e au final en appelant des m\351thodes \(addImport,) Tj T* 0 Tw 4.649147 Tw (addMethod, addAttribute, ...\). Ceci nous donnerait alors un nouveau mod\350le m\351moire dont on) Tj T* 0 Tw 1.94284 Tw (demanderait la g\351n\351ration \340 un g\351n\351rateur sans inteligence qui se contenterait d'\351crire le code Java) Tj T* 0 Tw (mod\351lis\351.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 167.4691 cm -q -0 0 0 rg -BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL 1.844692 Tw (L'avantage est que pour chaque m\351thode \340 ajouter on peut demander avant si elle n'a pas d\351j\340 \351t\351) Tj T* 0 Tw 1.846412 Tw (ajout\351e et ainsi potentiellement la renom\351 avant de l'inclure. D'ajouter de fa\347on automatique tous les) Tj T* 0 Tw (imports des arguments des m\351thodes, ...) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 149.4691 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Pour pouvoir faire cela, nous pourrions nous baser sur ObjectModel, mais des ajouter doivent \352tre fait:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 137.4691 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (pouvoir indiquer sur une Class une s\351rie d'import.) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 125.4691 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (pouvoir ajouter un message de licence) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 113.4691 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (pouvoir ajouter sur une m\351thode sont code source) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 83.46912 cm -q -0 0 0 rg -BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL .848735 Tw (Ce dernier \351l\351ment est le plus probl\350matique, car il deviendrait p\351nible de devoir instancier tout le code) Tj T* 0 Tw (de la m\351thode en objet et on perdrait l'id\351e de d\351part d'Eugene.) Tj T* ET -Q -Q - -endstream - -endobj -% 'R69': class PDFStream -69 0 obj -% page stream -<< /Length 4832 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 729.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL .791098 Tw (Dans eug\350ne il est d\351j\340 possible de modifier la transformation des tags de g\351n\351ration '/*{' et '}*/' qui par) Tj T* 0 Tw 8.577251 Tw (d\351faut g\351n\350re un 'ouput.write\("..."\);' Dans notre cas, il faudrait quelque chose comme) Tj T* 0 Tw ('method.addCode\("..."\);' ou encore plus simplement '"..." +' ce qui pourrait donner:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 611.8236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 108 re B* -Q -q -0 0 0 rg -BT 1 0 0 1 0 89.71 Tm /F4 10 Tf 12 TL (addImport\(MonObject.class\);) Tj T* (method.addCode\() Tj T* (/*{ int i = 0;) Tj T* ( i = 1+2;) Tj T* ( MonObject result = new MonObject\(result\);) Tj T* ( return result;) Tj T* (}*/) Tj T* (\);) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 591.8236 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (qui deviendrait:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 486.6236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 468.6898 96 re B* -Q -q -0 0 0 rg -BT 1 0 0 1 0 77.71 Tm /F4 10 Tf 12 TL (addImport\(MonObject.class\);) Tj T* (method.addCode\() Tj T* ( "int i = 0;\\n" +) Tj T* ( "i = 1+2;\\n" +) Tj T* ( "MonObject result = new MonObject\(result\);\\n" +) Tj T* ( "return result;\\n") Tj T* (\);) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 442.6236 cm -q -0 0 0 rg -BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL 1.324692 Tw (On garde la facilte d'\351criture du code \340 g\351n\351rer et on permet d'ajouter facilement des imports dont on) Tj T* 0 Tw .291751 Tw (aurait besoin dans le coprs de la m\351thode. Aucun traitement complexe du code de la m\351thode n'est donc) Tj T* 0 Tw (n\351cessaire.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 424.6236 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Ce nouveau mode de g\351n\351ration ne serait qu'une moyen compl\351mentaire de la g\351n\351ration actuelle.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 406.6236 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Travail a faire:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 394.6236 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (ajout d'objet dans ObjectModel) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 382.6236 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (ajout de m\351thode de modification dans ObjectModel) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 370.6236 cm -0 0 0 rg -BT /F3 10 Tf 12 TL ET -q -1 0 0 1 6 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET -Q -Q -q -1 0 0 1 26 0 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (cr\351ation d'un template de g\351n\351ration d'un POJO \(g\351n\351ration direct d'un mod\350le\)) Tj T* ET -Q -Q -q -Q -Q -q -1 0 0 1 62.69291 328.6236 cm -q -0 0 0 rg -BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL .504985 Tw (Il serait toute fois dommage d'ajouter tout un ensemnble de setter sur les interfaces d'ObjectModel qui le) Tj T* 0 Tw .259318 Tw (rendrait moins clair pour les g\351n\351rateurs. Il faut donc trouver une solution pour permettre l'instanciation et) Tj T* 0 Tw (la modification de classe implantant l'ObjectModel sans pour autant les ajouter au interface.) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 310.6236 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Une id\351e pourrait-\352tre l'utilisation de Helper qui permette de cr\351er et modifier le mod\350le:) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 207.7082 cm -q -q -.976496 0 0 .976496 0 0 cm -q -1 0 0 1 6.6 6.758862 cm -q -.662745 .662745 .662745 RG -.5 w -.960784 .960784 .862745 rg -n -6 -6 480 96 re B* -Q -q -0 0 0 rg -BT 1 0 0 1 0 77.71 Tm /F4 10 Tf 12 TL (ObjectModelClass clazz = ObjectModelHelper.createClass\(\);) Tj T* (ObjectModelOperation method = ObjectModelHelper.addMethod\() Tj T* ( clazz, "name", "typeRetour", "paramName", "typeParam"\);) Tj T* (ObjectModelHelper.addImport\("java.util.List"\);) Tj T* (ObjectModelHelper.addCode\(method,) Tj T* ( /*{ blablabla) Tj T* ( }*/) Tj T* ET -Q -Q -Q -Q -Q -q -1 0 0 1 62.69291 174.7082 cm -q -BT 1 0 0 1 0 8.435 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Mod\350le d'EUGene \(ObjectModel\)) Tj T* ET -Q -Q -q -1 0 0 1 62.69291 156.7082 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Modele th\351orique ObjectModel) Tj T* ET -Q -Q - -endstream - -endobj -% 'R70': class PDFStream -70 0 obj -% page stream -<< /Length 456 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 485.6501 cm -q -469.8898 0 0 279.3736 0 0 cm -/FormXob.cfe9493e2e6e4e30496a38f77524126d Do -Q -Q -q -1 0 0 1 62.69291 467.6501 cm -q -0 0 0 rg -BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Interfaces Java pour le mod\350le m\351moire \(impl\351ment\351es dans EUGene\)) Tj T* ET -Q -Q -q -1 0 0 1 105.1578 181.0901 cm -q -384.96 0 0 286.56 0 0 cm -/FormXob.e0f32bdd4f95c90d9dd1dfb9f782f702 Do -Q -Q - -endstream - -endobj -xref -0 71 -0000000000 65535 f -0000000113 00000 n -0000000246 00000 n -0000000411 00000 n -0000000586 00000 n -0000000768 00000 n -0000001009 00000 n -0000001250 00000 n -0000001491 00000 n -0000001732 00000 n -0000001973 00000 n -0000002215 00000 n -0000002457 00000 n -0000002699 00000 n -0000002942 00000 n -0000003185 00000 n -0000003428 00000 n -0000003671 00000 n -0000003914 00000 n -0000004157 00000 n -0000004400 00000 n -0000004643 00000 n -0000004886 00000 n -0000005129 00000 n -0000005372 00000 n -0000005615 00000 n -0000005858 00000 n -0000006101 00000 n -0000006344 00000 n -0000006587 00000 n -0000006830 00000 n -0000007073 00000 n -0000007316 00000 n -0000007559 00000 n -0000007802 00000 n -0000008029 00000 n -0000008629 00000 n -0000034580 00000 n -0000045069 00000 n -0000045417 00000 n -0000045577 00000 n -0000045857 00000 n -0000046180 00000 n -0000081000 00000 n -0000095708 00000 n -0000160176 00000 n -0000174413 00000 n -0000174811 00000 n -0000174949 00000 n -0000175203 00000 n -0000175329 00000 n -0000175545 00000 n -0000175737 00000 n -0000175931 00000 n -0000176125 00000 n -0000176330 00000 n -0000176546 00000 n -0000176747 00000 n -0000176951 00000 n -0000177144 00000 n -0000177339 00000 n -0000177553 00000 n -0000177757 00000 n -0000177939 00000 n -0000178162 00000 n -0000178341 00000 n -0000178485 00000 n -0000186265 00000 n -0000192334 00000 n -0000199838 00000 n -0000204771 00000 n -trailer -<< /ID - % ReportLab generated PDF document -- digest (http://www.reportlab.com) - [(\340\024N\335h\256G\350\320+\26730\202T\344) (\340\024N\335h\256G\350\320+\26730\202T\344)] - - /Info 48 0 R - /Root 47 0 R - /Size 71 >> -startxref -205300 -%%EOF Copied: trunk/eugene/doc/1-javamodel/Etude_JavaModel_EUGene.pdf (from rev 754, branches/eugene-2.0/eugene/doc/1-javamodel/Etude_JavaModel_EUGene.pdf) =================================================================== --- trunk/eugene/doc/1-javamodel/Etude_JavaModel_EUGene.pdf (rev 0) +++ trunk/eugene/doc/1-javamodel/Etude_JavaModel_EUGene.pdf 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,2256 @@ +%PDF-1.3 +%���� ReportLab Generated PDF document http://www.reportlab.com +% 'BasicFonts': class PDFDictionary +1 0 obj +% The standard fonts dictionary +<< /F1 2 0 R + /F2 3 0 R + /F3 4 0 R + /F4 39 0 R >> +endobj +% 'F1': class PDFType1Font +2 0 obj +% Font Helvetica +<< /BaseFont /Helvetica + /Encoding /WinAnsiEncoding + /Name /F1 + /Subtype /Type1 + /Type /Font >> +endobj +% 'F2': class PDFType1Font +3 0 obj +% Font Helvetica-Bold +<< /BaseFont /Helvetica-Bold + /Encoding /WinAnsiEncoding + /Name /F2 + /Subtype /Type1 + /Type /Font >> +endobj +% 'F3': class PDFType1Font +4 0 obj +% Font Times-Roman +<< /BaseFont /Times-Roman + /Encoding /WinAnsiEncoding + /Name /F3 + /Subtype /Type1 + /Type /Font >> +endobj +% 'Annot.NUMBER1': class LinkAnnotation +5 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 35 0 R + /XYZ + 62.69291 + 398.0236 + 0 ] + /Rect [ 68.69291 + 668.5936 + 119.8229 + 680.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER2': class LinkAnnotation +6 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 35 0 R + /XYZ + 62.69291 + 398.0236 + 0 ] + /Rect [ 521.0227 + 668.5936 + 526.5827 + 680.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER3': class LinkAnnotation +7 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 35 0 R + /XYZ + 62.69291 + 365.0236 + 0 ] + /Rect [ 88.69291 + 650.5936 + 198.1829 + 662.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER4': class LinkAnnotation +8 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 35 0 R + /XYZ + 62.69291 + 365.0236 + 0 ] + /Rect [ 521.0227 + 650.5936 + 526.5827 + 662.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER5': class LinkAnnotation +9 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 35 0 R + /XYZ + 62.69291 + 293.0236 + 0 ] + /Rect [ 88.69291 + 632.5936 + 162.0629 + 644.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER6': class LinkAnnotation +10 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 35 0 R + /XYZ + 62.69291 + 293.0236 + 0 ] + /Rect [ 521.0227 + 632.5936 + 526.5827 + 644.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER7': class LinkAnnotation +11 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 35 0 R + /XYZ + 62.69291 + 173.0236 + 0 ] + /Rect [ 88.69291 + 614.5936 + 144.8329 + 626.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER8': class LinkAnnotation +12 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 35 0 R + /XYZ + 62.69291 + 173.0236 + 0 ] + /Rect [ 521.0227 + 614.5936 + 526.5827 + 626.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER9': class LinkAnnotation +13 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 38 0 R + /XYZ + 62.69291 + 486.2781 + 0 ] + /Rect [ 88.69291 + 596.5936 + 186.5229 + 608.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER10': class LinkAnnotation +14 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 38 0 R + /XYZ + 62.69291 + 486.2781 + 0 ] + /Rect [ 521.0227 + 596.5936 + 526.5827 + 608.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER11': class LinkAnnotation +15 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 38 0 R + /XYZ + 62.69291 + 354.2781 + 0 ] + /Rect [ 88.69291 + 578.5936 + 275.4229 + 590.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER12': class LinkAnnotation +16 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 38 0 R + /XYZ + 62.69291 + 354.2781 + 0 ] + /Rect [ 521.0227 + 578.5936 + 526.5827 + 590.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER13': class LinkAnnotation +17 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 38 0 R + /XYZ + 62.69291 + 246.2781 + 0 ] + /Rect [ 88.69291 + 560.5936 + 191.5029 + 572.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER14': class LinkAnnotation +18 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 38 0 R + /XYZ + 62.69291 + 246.2781 + 0 ] + /Rect [ 521.0227 + 560.5936 + 526.5827 + 572.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER15': class LinkAnnotation +19 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 38 0 R + /XYZ + 62.69291 + 186.2781 + 0 ] + /Rect [ 88.69291 + 542.5936 + 206.5229 + 554.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER16': class LinkAnnotation +20 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 38 0 R + /XYZ + 62.69291 + 186.2781 + 0 ] + /Rect [ 521.0227 + 542.5936 + 526.5827 + 554.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER17': class LinkAnnotation +21 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 38 0 R + /XYZ + 62.69291 + 138.2781 + 0 ] + /Rect [ 88.69291 + 524.5936 + 149.2729 + 536.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER18': class LinkAnnotation +22 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 38 0 R + /XYZ + 62.69291 + 138.2781 + 0 ] + /Rect [ 521.0227 + 524.5936 + 526.5827 + 536.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER19': class LinkAnnotation +23 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 40 0 R + /XYZ + 62.69291 + 741.0236 + 0 ] + /Rect [ 88.69291 + 506.5936 + 161.5129 + 518.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER20': class LinkAnnotation +24 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 40 0 R + /XYZ + 62.69291 + 741.0236 + 0 ] + /Rect [ 521.0227 + 506.5936 + 526.5827 + 518.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER21': class LinkAnnotation +25 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 40 0 R + /XYZ + 62.69291 + 657.0236 + 0 ] + /Rect [ 88.69291 + 488.5936 + 251.2729 + 500.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER22': class LinkAnnotation +26 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 40 0 R + /XYZ + 62.69291 + 657.0236 + 0 ] + /Rect [ 521.0227 + 488.5936 + 526.5827 + 500.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER23': class LinkAnnotation +27 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 40 0 R + /XYZ + 62.69291 + 597.0236 + 0 ] + /Rect [ 88.69291 + 470.5936 + 195.9529 + 482.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER24': class LinkAnnotation +28 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 40 0 R + /XYZ + 62.69291 + 597.0236 + 0 ] + /Rect [ 521.0227 + 470.5936 + 526.5827 + 482.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER25': class LinkAnnotation +29 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 40 0 R + /XYZ + 62.69291 + 416.4691 + 0 ] + /Rect [ 88.69291 + 452.5936 + 186.5129 + 464.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER26': class LinkAnnotation +30 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 40 0 R + /XYZ + 62.69291 + 416.4691 + 0 ] + /Rect [ 521.0227 + 452.5936 + 526.5827 + 464.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER27': class LinkAnnotation +31 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 40 0 R + /XYZ + 62.69291 + 356.4691 + 0 ] + /Rect [ 68.69291 + 434.5936 + 299.8529 + 446.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER28': class LinkAnnotation +32 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 40 0 R + /XYZ + 62.69291 + 356.4691 + 0 ] + /Rect [ 521.0227 + 434.5936 + 526.5827 + 446.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER29': class LinkAnnotation +33 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 41 0 R + /XYZ + 62.69291 + 195.7082 + 0 ] + /Rect [ 68.69291 + 416.5936 + 222.7629 + 428.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER30': class LinkAnnotation +34 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 41 0 R + /XYZ + 62.69291 + 195.7082 + 0 ] + /Rect [ 521.0227 + 416.5936 + 526.5827 + 428.5936 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Page1': class PDFPage +35 0 obj +% Page dictionary +<< /Annots [ 5 0 R + 6 0 R + 7 0 R + 8 0 R + 9 0 R + 10 0 R + 11 0 R + 12 0 R + 13 0 R + 14 0 R + 15 0 R + 16 0 R + 17 0 R + 18 0 R + 19 0 R + 20 0 R + 21 0 R + 22 0 R + 23 0 R + 24 0 R + 25 0 R + 26 0 R + 27 0 R + 28 0 R + 29 0 R + 30 0 R + 31 0 R + 32 0 R + 33 0 R + 34 0 R ] + /Contents 66 0 R + /MediaBox [ 0 + 0 + 595.2756 + 841.8898 ] + /Parent 65 0 R + /Resources << /Font 1 0 R + /ProcSet [ /PDF + /Text + /ImageB + /ImageC + /ImageI ] >> + /Rotate 0 + /Trans << >> + /Type /Page >> +endobj +% 'FormXob.0abfd65e2cab2f27fd6af0c2fbb44aa3': class PDFImageXObject +36 0 obj +<< /BitsPerComponent 8 + /ColorSpace /DeviceRGB + /Filter [ /ASCII85Decode + /FlateDecode ] + /Height 562 + /Length 25652 + /SMask 37 0 R + /Subtype /Image + /Type /XObject + /Width 990 >> +stream +Gb"0W%C3(6eu`AMYa]V.hmmPihK(/bq7-[+;Zmt3hBsd&Eg_^hLa-1iqssggzz!!&D1L0-o@-ia5I<;LO!qdP""ErZ2jfoaKgpa;@,+diE4!6g@3*lJ"uq4I\KbQ.\Dk!_%dJRf5j!&-KtGmks>!!%Q&eKsfaH2dP2N\@kP5=G@':u5o:#K[qc!+9uq@!RXJr]'a:\=S^B2OPNQ^=J7k]-MFt!._%oJn=dtGi+[Db/`\e`ra;@Vo!0G[VNtHe[2d5&PER.[t!iloBa"e1a"sU;Bq77ON[_*!2a@]]eh.7WV)KNZha<8Y?Nl/G0Ita1pL-NQ#0jB"rKipmRo;?!!&D?AMX#@k?GLN5)Q\$-Y`C^J8oa&GH7`Z!6H2\!+6D*H*<H09>s"(`_V<UkL0??DV&J_S[R;2rtNhT!@2^d!.[LCk.NT4)VNjNPBFk2[r-nC:RsrWlr\^><F#]sZ2@6M#64akT+Ulk=gUaUG:$=&1;?Mhra>)lbuke')uos=I\k+uCd1*D5K1^m(->`t:ZG*u)DrA>3J4SV,2%\gLIcWgBRja!e4)1u!!&CVSbFfGOuWLB_!FVS0p'T[!!$V$166us%KHJ_4-Fjt,]`qcJD$(/@j%0A!!(6'A0(ip)uotHFsQYr8EKmP!4,>u9K/jAB-WfH!!#].j-b/ura\4`UVhCa\:fu%HK9'SoE50p;&dV>KR`E4hIJg]Z1/DjL1?fjimIf,)u$NQ2YYOc1ZC(WIo&HZb]?K`)?=1*rY5OW>`+"jcjB;K':/n'fXQFM5VeZmr"tH>Y),dR!,UH*@N_(3+asj?4P.NJ!<>$cqq(A)pH=4;B[RSck#.!W_l:oP-LFBka7P'F/e%fb8Zh1/`^mL6(<J[SeB&=fL/XT)Xcdt]qHq%7!<BRgHN&8^5-I^'@](M8H_'$dCs5'cg:*<TVn:8qgT!^uh^P'<nRFP4BlJ/t5I8\L:PDFLDmiiEIOSM?!+8IOoDS@H`G&iH[BZ'>h);^+mSduW0V_[jr78KVjC#n4j27,O_9/]@%6:9/j)",=:+2ANIZ1+Ha^;3LVi@%^8oKQiHX%Hh<d$F">qYB.Mgpr&K.#8r%OZ^\C?p.#:BRWqDQ1sQ;5'5rrHfDnr#8:skAG46"c+71WEo(;.r&8SoDt.d%KI0qf5S@GEQp&J0&7"0YID9s/`??-0$B(.U"Xg[bV+%7]s01)5HLm7T''sp2gX=,ILN,takJ?2?GO>FT!gI\Hb8:c!3icX>&BW%G)KAN$b1Vdl:-M-S]pKU\++>o!48:`c=GA9%;Gdo[u>Nf+2b'`o$3ZlT<Y6%e5#pp9*;uPdL9`SM42ZUE"t`_1>d;b/$IUX@g\JJ5i(BOPBfU+lu*J#`_sG08`i6B)?<f=HGEW4A%XugRCp.5G(%YRbjJB?l$.)hBnJd!R*<>>*tD?to4'*+ao$$pU]lPrA#Wc)p55<)aVN&Pl$!$M:ZNZO%0.ob1RMGpR..$L4IP[2ptndJJH$kBAMV$%5:r'7bLYf9DP708hqcHe5K6U5jOMs?$C:sIQ!FS&c%ddN-pK\+Y#R5I'?#sjFQWBC99@U,!,M2-P:s#Wk\VQ4/+F,T3anUqimN&V4Uc#0mnNfR%XfUD.E%;+R-0pJ1u:M/".DjVVI(ITb?uqJF",%giL&es\2<&.%g/9+pSP(j[okC<P.;:da)K7D9jAV*TSEPBVgHn_;0f-74R!/13G#T?jsQQi+asj?4P.NJnIBj^d'V]"ZC1Vi7aptkh5\:o\Fe#Os+-U`R7e]P%(AOST8cL=1O9nb[',+*R8]jTZ+')SO(J4mDH1I2k-Va5H`9?,o$`WP3_q=lSkEdE\pN-S:>;FPhP<&VN,I1-%W4^PchW=uS\.2NnG)1@,aijH%g/9gk-W;CHWXJCYPeVWX#3N+@[rZI&8&8UZ#;($h`XL,PJX<[eB-M0]t.g7%;$mWiCN+"8ETB6LOja$-1`/]DH5fm4IJ:k\fJ#717.1f3H9a`^AY+^m&fcjM9BG$mW.$+3iLGhm*W-EI=bun*6DG!Qc;,N@:3E:P516HWc(mb\i_E';-tBi'<iQ*F&,G`-ZeIM)9(&(qeJs9qn'FV-K",7IZ-]Nf>ONU%XJtZf;N5O?*PnP?F!Alq;GXNk+;/bT$4M[S[7Wj1='jQQ->/a=,Zi.*6DG!Qc;,N@:3Ceo?5%"c,ZgnPBhHgs5R@<AA0(S$J<>S9]i1H[mg33Nb#;L9B.&b0JK\H'[5^<ithO"Z`k%'lr[7kn4VM3a0I3PDWoc(="81"4m`]R^a9$ZY&.Wf%c:i*^/`q>dDMQhN/\>[5DH5QPQjb7fqd`+oubsB[^\0N5n=(hRcU-KM!Er$3LOMEhiZ,!p\r>/r.oP]N)pf7\En9N]Rq70k!_$Ima`%'UCsPuAhflZVSt/0'k[=j>D"<XT5#U=LLbch4,n^_K;:ZfZA$bO9,D_bb1RTJBu62dc^qF^,,[UZqWbG7kn:=BBtT'>#3OG\QJd2jqd%qgBDuER5DC[7o?urHj0t+g0+38FY6uSCgS+SQ4jDEp^;_U7qkmDqrCPsMN(`17oIqsPP#VqZ-ZeI1GYQ,;iVW_g<8_de,63csk0CJS#Ag0ZjZ-Y=31%WHk[@k*KW>qZ4YoSDnRK)6ao#B9dC&E$[f:<l8)HcRc_h;c-!VAWTSJ)DOjdb^R7e]P$o^;:)]OcNj53aS\/1;gccei)_n`q+Beb^nV%>kGX%qgV*<hZ&f6h,b0U\h/EINt!9B.&b0JG/#=puZt.E%;+SiegdrcK..;Jsh3j%7>Vp7oe<NGCQ1d?D@=gJ>"KD6mH02N1;h"nXK&Y75LLfgt6D2WDbjFn;-(_lpY,\MRVX%g2F_:)(UJA<'a$L'*u_,kDM+o=MR<P5,LL@:3EsM.5sE5t:bU,kKu^kF+s(n">GeH#`kA_1040`*Ybb+-(WLM.HSqH5N"cpTGE)k#.!W__KIpEG<(<*X:cGr@8)8\J4&DE6NAt>T3((LOj_js,)A</qs'Tgm7i,IVP)Heh:"&280Qe`]NBm?sYQgH]ZIJ&3kom-?CWh<bXJ"+YJaud)3Z3_VYV7;4Yq;:[QRcrkd@Er=9*B+FX`Cq91r_PI#<lS[tD@:ZX_Y:R.H1?J;"=Y'cp_BtT'>#3MbpL;WIO1/D6rao&G`WRt+)+2ccQeN%?mSF#.b3D]"Al<:$3d;`m5K,t6ZV7_Q#:G\Cl41g:j_mN,!p-tgEJ#\`VYJ(F1YIi=;NGV[j48pP$]=GW&4c99mK\(2<D'X0Kro$*ip0>j;g7u%-h0n`e(upFD1<,>P<kC2Qa.e@>!a_8a?#AN<Kpc##H]lV%6t&K8bJIVLq0MQu:dm.cNh]I.^$dNuo;InoU5+59%L`4[CLP5,[=Ju-AmR(W8M\WCQMpAl:g%sbXVO,(/XstbTA.+*HYM8]=?#rZ]),`0Gq=8DD<VEa^8h^5\1mMhE?oTSXE)4(*\=5HrAe^Gj^c]OVtlG1R,+T\q)DSY3h2#udb%o6?8('j3mO=;"$SY.)CUY8&$%:1@E*N!JJ/i3?7eo.R@!1LO&^)-2(.7Ao!tAFN@fF#IQ=L$@U5,?%BD(/@E*N!JJ/i3?7i<s1B3YiUtjgoI:QE*2Ad:3gi2RQ[\$^*16QpH!I?NV?"_5n94,I(I9<UW5$S%b""-ik)2D.51.MkVEl0WX2*FXq$:L&&FbM+4L:Vj).XgQ_iRYWA%@fEG?SRYdV6J)Oa#qsA1=(Ee0n&At-%.mn]M;CqE>8GeQR/uu)d^;L[?LFJ5hk=aD95ZX-]\(*%0"G-&Ush^gi1JY9cM40rG+LJLimLjD`J8mb1@Zq\7MY9YNtt\s7b,M0e8P.3-!`g@N_(3@?hdlH*/U01eK3&<i]c&h0>?7pD;M\VKR[6/]Ir\1AC)n^=iNJa5tkpXuUI\\:;I_17,j-2]VEo;teZ7--Xi(m-Cpb^O:,S:NoBWi:o>Bf\%Nn.V8hSbEA\mDsr&.Qu08d^4CDIht6sB\7D(k*A7Ul>j2=1>l9p',Q7aF\`&q=R_i;J>G>(Jm=E`Em-Di>SF'NV8S8-C*Vrkh`qVUf*oFQF\f<Ad\N'"a0iTOldYI\Ip92$VB=F\GYiDHT3nDe_jbCt(3bXoX*s&js/M3JF%]:,rf64F+>(=Z;@d1niW>UITm^pusf6_n9[A=i@;e=4)'5(Z`R"bRG3fUX^0gBNaQho,GJ$AuUjbA[S[:V@?1:K&b2P4=\j.gFYCpDF\c;p<]R;J"iYL2^D!D>"mYDmI7QdS?M]GNVJ)rbhmn$^9Y]X6:)952#O-&.CZDR??@CNf]B8kRosr9<qLY2ADYp1d6-V"%`*i5G#Vm_=Aek.a%s%WBI)mJ5T)H6i)d"cceXk,`S*7@dVgX,FJd4.Z8acG(lV(72Wa[Id0V^.545S@I0OVjDhND?6rKa"u_Qlg`UuA)l2=@6()Vl-$G0mOor^2HIB9,#+t+k.NUOfAt=bri17a[n`=\?#ANhZ;WLuh&P\QI'7uAr.SZf>Ua:).Q:V^WAV<@0+ECRhoh)KnlO("^3>8Khpho@02kW_C@1gXIT=jGS^qC81*W.H2,U:&lsa3<SkQkb*8T_[b)UDo/U$#0)lNRN2>%VrHt-EKd$2e([)Zk.AMX;^*hdqhONd6`W)IJTOY.))POE'PGPS;fn_F]45.K.8%7eQTqtHG#Ds]<kbM.hp@7![;B@<ALP<?tb>CJnf=k0u$m(^)Dm+E;S_^[TMR(3o)]M$/&OfQaEe+fdNcS%B/;lhL43REkM$u+%!X3_EYgi1JY9rhP<l,/8[r81l#g_NHCJ^!lO9He:0DoD+j2mr?=)ho]J`SuXqk..A>/reEDi@3]%2j:e(>E'%I^*IdlTU(8]g>cudRTM.j#\'B@>4'a?D'"ka-Ufd\F.TGmbpfRAT"AjW6`\0:6-OCEX'HXEc,8r%c^?:c2OQ4@@H%H*8Q`)XGM@k-=QP9ISnhNsdTC?-VW1lQl*<kB^iPjWeSqm'Hd_&9?3B1sPoGa/Y%b::A$pTL*T-L$Q]:FNV0D+GgN8hQ?1#MI&8DkPV`grCjL>b42l8+OAbkAuV=!N@moEmVEib7#DD\aMJY1IFNRd0"R.3mh3i-;\]=a+W!s`CP'25;e>E[4Zf:Fa31$9=!]>"uROi+HH%4="TYZpMC=D])`(uO[9U/F/c1VNko%f4[%Qqi"",kK4'>SjCnhfVtoZUhCE%Au!"E4">qZ._=1H@5*RT$?G,`cp^!_^s:aQqi"r-M,[OlkYc[&$+K)3g0S7X'HXEc,3,nf:U/\q)lmr:-*?]MqS<_Bht1oGP9$pD)+n&X%;BE8oth?<k712-3K9/]/3QXLNO2QC88DRNGYp.'18]m0V.oR='>B(G^,f3I(+X2nTcEAM^5@YE&s0`8#oo6X3JP-a-U=#l+g^OC(j:=4h$TbnN+:9AH'Ir2k80(^sQn``bP*ap@7e\o"Ftb/oP7nJ\r2O-C@PTmO%PoK:lPNhq7A#`,d,tYf[D&2'9&,mF#*R*l]%(:F=slNpcHr@LO6pWD,(;p/E=/D\C-@S3*<Qhl<WN<364&\`)&8"FaC`1fg*$OiH"ujEm<B?/A&HJV,M]$)Z1C0Iqu8<k71VkF,G`1fg*$n]&&&anL!LGBk.t"qH77-C@PT_Q5$*=QP91T6ET@T5Buh@p<c_h%j5k_Mmqu",A&L-C@PT_Q5$*=QP:l6f<G!@`JHID>j6qZp(ZX^Jc(76!gkNHFqnZ(M8%r)`S8"2SjLh'4rOf`[WoPQY4!FBCl=PagTiJ].LJ`Kc/du"qF#!9e`.3KNUm2Z-)$^"VY]OX0&k3/U_'IGI<">&8DkPV`eHh&nS.bW4(ipjeu3aDc^0>_Mmqu",A&L-C@PT[cC3um]oo0G2m;'[*H;V*375"T*q\>Whl&tkSBju3gpFYlSj1n=_Q_IK\?RXC!Yr==+pKU/h?JD@r.d\7P[K!m/:sHUJNV`K''OG^^Ds4Wsp&':n(iRmI;RqmGEE?Vc4epDT$Qk4n`(n+do*#l!`0,G+hfm"jLtnJ/;gF<uX+-Tf0`/g=%L=s-2A_emlHP&X#.(P[ZWdBjNM01r%S,^+eTZg;%,&[0`_ZShtn/F*0B3qm1KP4fA"t]BHNBTn8ENR7ia4G7gm^g<pdLHrh7H%SqFP:4MnBuJm1=$_Tf&I)('4I0D?$7c3/kmh8K''PrdMHMC<uX+-Tf0`/g>bcefjIW+r%5kU>P4*%YrH3<821l:^X\Xa0]Te!^gRMV$)Z/mB/2,WnWYs>QeipS"!mJ_@Ou2AX"Aa.`cnhA_[pPr9W(%?ao(_Gpuqg(WKLKYPVu:Jm]jp.!jOkZ8QW-2X"Aa.`cnhA_[pPr9W($^<YAuFEi;>\%q`6BG."/"bkS>!E#:oYK'BWibY"Ug<=X/-jh\%,hQF<ZKc/du"qF#!9e`.3KNUm2Z-&aYaZPa:f%\`@^+eTZg;%,&[0`_ZShM[O10-D7,F1j*g3UBbdMHMC<uX+-Tf0`/g(S'E;8t)@-gi=&@_Aemf%\`@^+eTZg;%,&[0`_ZShM[O10-CtEAs25PZAV@Xg[)h[e,7khpho@6`<^5Sb@_>8X-L&iM!lILWQE-[In^NV(^'fXu:596>_>=ZmX'iU5W(^&!>(G=Db`WD<VEa^8h\_L/=@I3pkViP!>G[TOU$,-P)D8dhX7?3GjZX]J/BXg;%,&[0`_ZShM[O16OX=,+6KUg3UA7^^Ds4Wsp&':n(iRm0U+^-mP/?+d.*ZX0&k3"hZPL]@t&/#dju9e"/6DM)&*l4@Crc@C>cO[A>P#poZMo(d`(kl*Mh^8tq8E%M+gOcgQ&pdOdOV-$[[Llg8F[?^U@hD;[+$g'#l=:RID8)64_ub"ePQrMRhu\;iMM[be0qoS"1?eHQLNW(et:p4QR?Pd/Bi+_1(&kES9OUS$)fgXVV(0]Te!^gRMV$)Z1C0Iqu8<]N91165kOolda>0?j3o2K0L"D1_#Z-d52WN)^>u4\t3:YcVT45>*lFX4pfki%Ti<"Oh)27PaFN,FRR0A+D=W-F.9Us"4R-r:`j.lV,\[j1F$\@0j7IVUHTLq$TaUG_flO6cTG%g.$;a91F,HH_Yp%Of;&/Sb?kFoDUY23M%rP&+^,.0HIQjQVMlujt@jFj.Yi#aZeNAQ=S,=!&U\2Tlf!U14K>H*"OcL!!&.[h:Hc&6Sa,laW(gGGlRi,W86'Ig-[WF!Qc;l0mNa!Of7*fFP9);If[Y2%l&>0!0O59f6#_614K>H*"OcL!!&.[h:Hc&6Sa,laW(gGGlRi,W86'Ig-[WF!Qc;l0mNa!Of7*fFP9);If[Y2%l&>0!0O59f6#_614K>H*"OcL!!&.[h:Hc&6Sa,laW(gGGlRi,W86'Ig-[WF!Qc;l0mNa!Of7*fFP9);If[Y2%l&>0!0O59f6#`Qi?`t3R6el8QokA!8C['C3pkUAj.AR9iP/.frF3=_TOU#V*WSGNCA0TVp:U@bG\s3G)ma#E!!"3?]<A3A#FN]mO'(lh4\YnVU=ATCC@)&aZLOF-_FWeh!1V\*6ENDd>Y+#"r^l5Latj$j8F7IlefJ3O,]dN9IjPj0?rFU,W3lkt$cuWkaW(:g;nGPu[0N',a]o_*)usAF]18g-#FJ/^A3Mp@+9/?4X7dNKfPBo'RNuqSJ5,DPU"18m0!2G@0a<-r7+Sf7\Q!"T#lWn@%[&gP^nu:9:hpRqQR4^KI=StK3@4CJ`pAoVe!@A(b8Nu)FOll9Ed>02%H$5&b:Ou\!.[f2*hh.+?nVD@H1hhrH8s5W[q[U#=BF\A)GVA)ZL)WUR0*G*CA/"Ap&K/ZT$0?#pL14R?:/o5$ctNc(dF0D!5PITO&0U&0ULr5FgGG@[XW]9`_V:]5="5-U""V")/5T/4s%ITl<PZV!.[f2*hh.+?nTchGoB;7m![UY]U8YoZ$Y;Jnlq_8d[&ZW1'[g3eF!o`m/cA?,X@Z)E0Fi#beU]Nq;!Sr1'[f8;nGPu[0N/eH#e;nlR@>XLjRBue$V5%Q?GAR3BtL7e!=nqoUa2IpUX&tfj0Ot4mhkeF5rqD8EKmPS(^"lXZb$Ab`hBt%Hj#O'Q"I*d0[o7!+8a;8#Wg#mkZ#/T/N95I`h7p9:gC#8nP+rRpicXgR(q8o[%H;ba%!Vk'*^qn#6HjG_+R@Y1=Z,/=cd;A8WZ9UKZhe`g4dd/fWIYa]t5uR9r_RCjFT-!19>29!6_d]Zd"lZXl8FbWU<\9'2IWBT?W+baH\UB+F5T!6e2T-!+jmhIercDN`5QK@3&FAf-TL:Xs(;IIA%K106q##;EPiG;3-o3bnVjefKcJpGfbPVcc,dmf#>-V_L>rba"=7!R/ae;g-il<H(k%0t$^_P\_Vj^A_C!m;-XmOsG*j75>*%WOqKE`\5*V;X60Ip>BN8O4a>q;\C^2*k-X',lK9des"pQXibocUU=rU;"nTIR0/i$h0!EVRFb@&1q!#WF4keM0$Ka-5BjhWSD=PQg8]U2J@j>-<inO#>Y+#"r5nk8poWWDlVHq15lf7Cao"#2IB1p??nN^GAXh`CbZP#K#U5\O7]gUZg&oQQA?O-Ojui&9TWIRZlu8:ppStV+Gg3?uAu*&dnIn?fA54HV0SN^qAVW<]h5JmGi#Vf0&b]!7PK];'P<"OB!+;^J;c%6?n:HCENQP#Y`k2+PV(ub9[\!Vie<X-U\(^3%rB:?ae<X-a9]eGe#6:9mh&"Sp"2*R"AF<-PG7/L"eTI-f'D7Q$2#I?Z-Z_%'!$Fr%m\&,PhusR>]YSicSP?5_-fLtIdfS3cQa,-5d,&HjWGo;.Ftuj;.@ig!&4Rm?]9LU'9F_%VW8/]Jg&o!\7l!kMA/[PYXIB[.'eck0Ya*Z*jgh2+df92[[SQ1/UOBiq!2/]Km5+mPISaejn:F@cRG6JU(WPc6fts)2a;.GKDcG^\hch&+\GH7k$#AR^>!Jsn#C+:4poV>eoqXUSPU@P"eUGX<p^!^<0%j]P-M,[5m;q@ObQ/iE<UiS]+4T!H]I$?ga"O!ML-M)QJuDtjhW7ch0@aY[F$""25;cCfF5ms,2Z>TB!#2XYri#LB>'ke11eHhR6Z8?&Sp^Uq0:D8r2JTZ#J.<@4+16PoCC`*8,C=p(phaQeb6"N/m>Pdjf/+WiD($.*:Hs24ViA0krMd6:AH(QH3<5-@s/"9WC@)&aEq`.J-Pal;BmEdVAA4*F$Qst2YlOd%on-FpJ@R)hgUh;n+(@`O-hD`h>Kqi[bN\QO$N$.PFe7l:;D!FX\<)3iqE_5HJ8Nak3e!f:F!U?Xe$A]klIsUh@1)0'THPrQ+16PoCCafOS$=5[APJ?`p?tr>mI27Ppp.9GXs@66DZ-EOQhKuLIVdPKj4t@L+GD?<8$*l_g&p!WAh;&/=fZ(>b.sjLROrKZ9X\PG"1!WOHPp&c-VbunVSI?NUXfrjm/_$<1R;RSXAq#/I<d?2f2^6KR:eJP9BOpI!0G'oqP2UPC@)%<C,>Q=R4Cf%kA=-]]5P/hI[$///E!TT];)_3Cua!Xp5NebG"[i7rJ^h#KhM)/XWQ'H"5)+8Cr9f_ISM5X4,;J`1>R1Xi)V/WA:@[r?&to/F@U!8N5bjZ_PR+(edlN_!GlL,G.[U+Fgf.O,kOh1_4>(ej2P!AFq(?YV;UX<q=<l%Ft#;VX`]g&AXt)f!%2$O5AL.iefMW(2Ih`6HAn`Sm:hMA^@p&meDLb<QSgi`hV,q.Ksl:Qo2"ep6IOe/(Uu#;H@7?1h:GfmWIRieg60YA)(,eW&=;[C>!Jsn#I(2PfM]./KhiqXAok&gApZ2C.\gV=`llC!9/a/jp%QZ2?okBK5AL.iefMW(2Ik3T]?>rT;_BZ@e84EYCX-h.%'J8:l]QPI_TQPTbQ2)cf#Af>ISaej?rNQ"QdOMXk!hp(cX0`7eENC3^Y'lR!#UEtnOK]'eCk#We7Pd0R9r,d2g2ZG/lh!DXq`*B]9-V6!-;Rcr))bb[IsSY[2GH'kgRjrm/Ja;R)`q8;IiL;/leAMW28Ee[)B:*HUaik`t#?nedBM=!(p?4J(4<\XZ_2/D8u:pQ?\!l%KIfVNB_1VT[k1"VD_pUk/p6W!)UPdpnQCNC@)%<C,;/dY)Hm$!%"_+5AL.iefMW(2If>@b"1Xp:r:r]UXfrjm/_$<1R;RSN+<Cu-*3(jCAjgV*l+X2@nGh*8EKnK_V4d[edlN_!GlL,2Z%\%^K#aonCB5<57t!dR=\rZ!%"_+5AL.iefMW(2Id^*F`*@fF!Pf,-t-uj;<nIpp&I"Y)7pX_d@\mGe%`Y]QN%_pE[a3pX1bV1no2']8P@2MR0,\\CZCIZ5H(spYc5lL,O=bN8o`\>kfK?]PrL_Zg81s[UQE\#TS0`C8$*l_g&p!WAumAJB+*?<4dkoIOseB,?b%qT3<5;J2ZBZJK3EU%S(`h':?L:sqQ;2eB"tE?k%S<X>=^M>?lS0dSg+ioNB_1VT[k1"VD_qnWapRhd??Ss?WJ.!HX)%`au5DCW_>.\f0hB4Li3,flNaik!&h5&4#!)33ZQ6]3146%YN_[Emgg4W'6N8q>!Jsn#I(2PfXbVm4ZrPn1\PBH::D<h:M[BtQ5\e"i=s\YT?MQf(WNSN/<u`7HEW0dgC;Pi5AL.iefMW(2Ij:M.s'RcIg+?!(+S['kSa#fo\IoY(O7:tL?QW![=1qf%q&>*Z/!0\h7AHD9eG.C)SmenaLJBaOj"c=)h6B66*3;#9l7mj#?OAM?V7tAhP;%Rc`5[KQJU0V'9[VkFQ8Ec5H(spYdKq)GCQd*<*nX'Ke/D_;XPlQ];j8BpO??mo-WRAqLiD9$JkKPedlN_!GkJBXT+&QO2XZPdik,4-$D&YI."Z_IOi'110^mNY"kUNbVr4iH@4IB(ndqm1Noh4I:l2j)L!]BD'\_<<+"A4W^]e@s4MEQgt6jSlrLMu'%*aUUnM!/F]9PpJJ+,+Q9m?^+3AmfgWaYl)>/r[]`414L7PBO`HIgk8s*GX:IsUl@tBemY."2A]"e%4`cOc6n2"tA`s3MW^AeHNko_%^oRBOR4aI&TI;41VG+F%\?HV5@[ATFb^0>?r5U>r^bkslN_caSGoYttUP<$"@+'bTfWok"hg,+u=G4g*-q`C3YMl#TG]OeaVdjHD^Og.0n_caSGoYu!Ece((P4ZP>LUp<oS[hJ\WH%edWY%sS=rjtX7cCm+Yq+#%GU4d';V)4UFa/J_$d&`>Op13UcI!-Y5Om>'Q`k-&TCb[0&T?8,AB'U=dAH'+q5DP2$G%p>cT[FFe6YGc'=h=D#`cPD/fJJ='^J*N7Kf>.+'sb,(#`g<R%.b+BY!nd&Kk10;kN=8uqkqg4ad1N)HNJ,rO-?afh)Gtf*(s.uZ.qC*<@;iQ@HrkiK;OW=?G>lEKg2/sS^kc?VZOnuVo#@S9/R^T.=HJ(`+9<LH^/>@q]Tg(p)NH(Uoc5VS7IY&W6JH4T$$cgZ,5^mKormJANe7"0pLh`Q:p@SYl#8'o&X3W)R<SQ"["B\L?I%ODrP2*T"U*S,+2p]C,;/;\?b/c81'*6f<m/mq55o24o*d'b`2VreDNQKVhL_k3P&GFXcE[QXnn4)Z'^kjlt'/V%^%?g*m*L4i4>4C1B6FtV_`mrK&pQ)4Vc9)?@/m(QA8o'Y2jJ#V7c3NMe%je]f'@r(Lu^>gqf8@Q:E\jCg>St8EQO21/F+0OhFOpSeq":o!BmAP043'Z2CmWcYMRsda:YK=N:e*p9^8/YI/2d91qU)]f_J";8RH-Me)fYk,34:C)a]f-1fSa02MO9!KoGs<nA3nb2fHNDYs=/,OFt<LmpBhUe`,,jSTPcY%DbQ9_bfh^4hAlg@@+rk,J)JQ'<alCHK3^[Dus+[O&u]V7fK<aM+h0CYqH6a#Z9+fQ:9#rQ9U\k1Uk/Nt?EGo^$%r[\q)6:L<,\1]AZkM<Ce-Bk&9R@k$Z?j&YHJ^8ME4$mbFPr'O%2O,@KIR<a7!^?=df,FJX.gl9u_,!FdK165t\iq>#uD]/#tHQCu^4aE117K$YDas3;V%=,ha.3?-CV5")NnR/ZUgYS;enT9-O5bf\[o!kV_bYNL0F.g'A5#7fTYsKr#-6CCKA8Z3Z%lAV',*.ZY_u,`h1']j#k&\9&4X4k(_3@:];>RFm6YUFW?-D6%r\-RuOj&BZN8+)^'iGu0nR*uAR:![t(9[GND7k5n/FP.:Fq&.`>?]/)C9qQ^5O3RB81s0<pDnN)F'p+k87gSpK6`j.Z_+NbI4srmL?Ig1m^UP7ZAJEL1KlAq>gskphYnM[s+4)?NW;6gF);jTnQ<5)1B77m</c#cIjar"q=HrL'M9b'QDE*=r)Wee?7nl_%r-JpHE5Q(;rMO;NA%WMPYNBK#c!N[?*Yj!7;Y]u./7HGP0>(d44q#)YOb_CPA2V:0mX9o&N=^Za_'f++Z-'7S[LK[\c!`,L<DSaC:8OCBsI=1rgN5<]%gth0,O;:qi3e%3Q,Ll=MotSFq1iF.cVk93_bdJ^"o)^ZU_:`]Woke[T,*/DSMI\Ml4Tar=A<XiZ?Cn`MYYR8(jf"Vio`h:PD$p$+:S_f50'/2Uu][h6nY4+dI$\8"FJA/EP!/8[Vn\h[W9AOtCi.P:cgqHqt\S7lO2)MjjO'\;.D4n`d`sFS+$%qamMu.0eO\9*`&0q/T,NgR;N(<5qWPFo9AZ[&$bX:Cl`_o4`&21:Lc%s&2:-1,hrOMi7GLI7G@#*7au/4BprKiQFS-Q.T;Y-1bq_Sm[7O`_@FqRO%L:Tf5Y#5FssY]Edjdi^i3Viq+)`DDFG^$`D$.[39BY>1K_dIbD.V2Q3\V2&n/_.qe<h'#.(XGm]dNc@1&L4g"+m36J4fIJVXg3c4M]B%fT3m(Ob:Iq3p*ZKk-]fr8qg)Q*"CQ7bA7n[%%se6L^F(VY#[c^%dP[N"hV*rl4d),Bq`^6fFLM5R<fmJOqD<]Sq]OrnuTXVm8F5NUd!Y3XD/Kfdg="d1m;bJrB)lYPNr<Q:>&,r6q?=acJ]Ag'#RGJporjG1?apeCEVNR>"nbRa;d?fLc4O"\p1E@Uu?9XE/8gA\ftfJR"Wmaa"3:%*kDFReV/\86'9[qpPl>bge.HZhm3`O<NmO-SOaXm0fYQ??C-7Q8AN%OKKP6lBAi%l6ui7b6C&Ck]B:D"MiKAL5W][s"`dm6D1pl/L/2*__`YAkD.L#</<b=TZBj8EM"$1=$`?96rZ!ZB?TWgg@TOOu[huP/NQeDmH.N,t>?Ln]_[H(.9qX4@nVTKf"50e+qZMl]QPIR*-8jEab-T!Sg\$7PVJ[B5&n5CaA#.,lfKPAH&Q&k*I#MSY,lOiA:(Ar?QFalR4?&Ju_0qR1$G:_))Q#&$($5P$,Y\'?U/.1mtg6*6HtWhmO1&J22I_P?JMiZ!=;k#jLn8\\'TIgs5dr2+s<V,+3p!rA;^kn)$7LG&jSRO-Q6lnn]j7`nA43-8Wa`J7"7G0%E_8@g!2b99d.APrp(]F@hdAI$01G]9JaFf#,]FKAa8tLh%"2ag7RsX9j&$(MP.h.OEhk9D8&?7__jFY1Ru7Q\WiRLLgB-REHhC")nU2bX],P_>0:?G'htS??ZZf1A=j&Jn4j(REHhC"7WgJ$EY(l`LDXudQD?!e`4kI$V2T8[&O&uM]eF;8ETJ6joDD1Y5lL]N06n!QbcZdRG7Cub\*V--o`B<"/mQ\!g(V\KN'_13s<Yf0XX3_$-=/P2=VE3=H4P"dI\-6^P+msE\(6`\S5&XZ#k>l%A&QUVAehLR>W"D.+p%['Rl`IJk5#(Wp-\e,]gV:fgMNpAH'.9%HXa`n(bE4Ou\&-qC;QN*:G+ga<I%%%eI%!SW;aBh`K_:3POh4GcKhL\7>?`p2p%:<uf=%5d`%AJ@ipn(lsH(jb-/qk+BLHo?5ck.XZ$?B9.'o@eOd*Tgq9AIf[Y25d`%AJ@i)a1Wao.<j8)*$-E*Drb7\jFo%'NhTIn^Sd&F@Nb!$dDqbR#?m;qY!-d0XbBZBPYac72ao'U9R6UU@&l6:iR9,GfgBdsi,."?N,]gUI=AF[*AH"<5"8!;K4]/b9+O[8\k!(,4!7b[a!D)?tPE?M2,=KL<8Gd%D4icq(Ci2C:I4&9^bWe%Mq.2%Y*f.2'\n#.Ggg1c<*'go7<WJ:ChGg&i>Q%r[68Hm<3BTTibWj5I1qqatHCB<MO'STAV5imJPg]G8eaRk7(<IO][96N1Ou_AuatV^XXuJT@1CBqi+((hOAbWL2[3JKss#@>f[Y8GAS@5?-5D`eZ1J\F #Bgeh$31,+/P32TlFm1<5k:+7Z2^NK'8.r4CS2:`\)liV`J^F?'<"h*j+!h"dP%EoLs,8PKl?*'go7<WIV2\%d'&'r!HmUd"r_m$0`"-\cb9k214W0"&,X)brmHRE(5k_2ukA<1@G&R&-@0_3mO:LONrGUHirW2l\_V@R#-%km>ufo@K)J`KA@F<1@G&R&-@0iGSY=(A8!_>KPZ-KAG$]8ENf@k2Jqo!34;L!mK(f`*``7<lt:1M77,U;8ZsDDeYT_X.S/8]9CH1k2Jqo!34;L!mK(f`/nTV4\qq@h8mCdhi8Yj2rh&HD>*"Bh:,Y!aVMUUbY&DWMe)f1REHhC"/n-$$8>+7&Hg.Q/!B]qbYN4(Eraa&=TN,K-Xn4o1hT%[^JtfdI)?*dCa='%pW]uFbgK8)Y`[.0D'X2bV`^,&J82El!40$G0p$cnOj$&6:O+4,!7b[a!G6$n@NbKf,+3qJTCO&Kd`&+CYddh:J6CT_(e?ir8EM#VV`^,&J82El!40$G0t`TqVDs6:![O1`8ETJ6joDF+Z3&7u:;j@OrZ_)=G?[BhO%O@rE'uGd:i2L5@$Ys[L@+Jkk5=RQILlHf:0JcE`i.$e8Qt7U\?nE2UN<3daBPS"$H`3517(Kd#>f9''k!>N+pL-"QJP6WA959Nf%iqNj$B[8],P\U;Vb^kP50lD/rsNQT\:qI^b"k@%%$KGHS7;"=!Vi_-+<IAG4cG#42G:p+d2YVA1ipR%\VN,/&3_'6k''*^)bkfN@3B(9#`4L[#s6-Vr%j'r'N6+7kt<GD3boEQ?FGVB/93O>bd\b#l:j&U!kf=Ij7PISWM(7Oj!i*Rq2bjV4EDc9JWdWi=-_t1@Km,/rjHPT\:qI^b"k@%%aBAqj,],FHl?2.4:`;ahF6mD/\4=VhataZlA6orJ!l*+-O/sOu\&-Z`F/5ZkG0UHt8A`5KloK,]`t9Am#.HBd[@4q8abJJ!cl!8EKoPc*@DpdS@_GnrZ?rs"H\!Oj!i*Rq2bjV4EEnj<KRnraC8u,FJY42TlF]903^fa[[,gr58Gs7kt<GD3boEQ?FGVP)h/Wq1nbpO(8`ng+4bi/F>h6(!4M2bEi%SLijDHGT"X$6Sauu1'^WmQ5*enFs;\'aZTI'6EZn4j,qPM,]e5VEraa&=TN,K-XnbNC[_:pcMhbJUa8h*VI*ZtP!*JmHZicZ`lg9)Ftm1T(!6A@17(Kd#>f9''k!>N+pK:(B");Xpc"KKk6V,'LO7loj-*,S,kDPg>TV!,5da`qJ6CT_(nN#Edg`lfalU.[!)R[F\i)ZhD%e2d&'8&taW*RR=]U&Ug5-ZPM>('=4oGr5AL^H!E<^s[QZ^D4gBQiO]S9trq.G.ChOfd<%cG'(<e+?,M&<Z+akV@>EgOBm2>^sc2YcT`bsjJg^L[?,^Kn,2J,<5+]Ht+srV;FLp%Ytd0E<FTb6fpr3t]@uah6VPr\fk^2:Xh*NTcjZY=D=[ppQ_I!%'JE$8>+7&]9n;c7R0'5M6+9]CW!eqVnkT2NF)4C:5krNL+KQc_\#G4#W6^P2?B[h42LESIkk:=]U&Ug5-['&"IS_RH$Xi#8#K</&3_'6jt>^=X8'!^SNg!;(Vr5*<<RmZ3&7u:;fCQQUNZ"kpO27\#Yofk5sSE=]U&Ug5-Y;k-@P?M_fhF@W^(fM0(?Mm[@\jR&-@0JRgBkAA0hr_@/4N_OLm^$F?f6Za:B#ON_9ubZ@7h#8#`C/&3_'6jt>^=X<TMH*5:,'-kM"!2q]s$8>+7&Hg-[(<Lr,,]`r9Qt6GgV4EENK=([We*!Lh#[VXhIZ/12;ZTVo5da`qJ6CT_(cItRX!3sA(NgWa4YHdVZ`F/5ZkG0Ub[lp\Z&:XPU7N/$O',M6=k\]L8ER39Ia/r5ME23@SehBf=]U&Ug5-Y;k-@P?fL;>8;9oW#a"/aV/F>h6,]d*6F6oVrK;dt0j45jt"7I1WM7CdX:;jB!bZ/L*F8RQR1l-Ha3p>N[1%&o+T6M$k>SbF$];X1$l?VWeLY'JS[mbf+9dFd_,]i=H:4oM.V1Tgq'B@pbrJ<Iqb[lp\Z&:XPU7R\]H?`/CHX$+ihF',c75Dn9l84<C?97</2)4N9d@YXsa]oV'*4r/u+R47:TSM.;\@4nVi_:\>=X8(TU/$?>kG<eP?5)AU(B'(KOj%C!bd!'e%AKG\%XN@oN-ee$-f.6HQW<qO2B\mE919XocV"L+]I(Y3/c$-!g.:A+2P->s?W!^eeFV*S&$Lh0Di=V5Rn2\I8ESPnSH_s;9*[Vm-H<_Nq@dckREHeB@i'8+6p31Do^J:dpU99]]SU/OMe%iRe7fKe]QDN<CLZ)RU-J/pP.<-,3He8t6.GMS5nC/UEGpd7`1'<[Z:O-17@aW[cV"L+]I(Y3/c$-!,+6UuR:@%U)FQ_A*VAii)#(K&:V;Np/rO8#?.<R"ot5Cn_eW`:gS-q&-BbnjOu[\_Va8i(dQnDIM/dHlrkt9sk-@P?fL;>8;9ql?4hN,]]e0'oDt<h4i#(Y'`e&`NpP#R/V1Tgq'B@pbrJ<K#$1Q95s6uZ1J%o+2Jq-YPqa/g(dQnDIM/dHlrkt;_I/]$bUZVp&M`M<ASsKq5GYO-D>P'9Ci$dl=+mO@;TSM.;\@4nV!W\7ThA;oXQO\=d9oOF'oHsXs.-c4(l?VWeLY'JS[mbcJ!03f1(S[Lf%XN@oN-ee$-NN'Ql?si@H0LuWf>P2.7=P@=NhYAHU7R\]H?`/CHX$+i!8o9jI3Im$l(Eg``439FIf]V1U>?]\SsKq5GYO-D>P'9Ci$dl=+mO@;TSM.;\@4nV!W\7ThA;oXQO\=d9oOF'oHsXs.-c4(l?VWeLY'JS[mbcJ!03f1(S[Lf%XN@oN-ee$-NN'Ql?si@H0LuWf>P2.7=P@=NhYAHU7R\]H?`/CHX$+i!8o9jI3Im$l(Eg``439FIf]V1U>?]\SsKq5GYO-D>P'9Ci$dl=+mO@;TSM.;\@4nV!W\7ThA;oXQO\=d9oOF'oOeROJf6eYYbJ'00C!iITSM.;\@4nV`phl*r$%5ZP'Nrpo'p7`W-o`[]QDN<CLZ)RU-E-1R0W=Z+T8Y#j`ruGdd&iof)N@\-Q_rnFO7p@@bf_45@Yh(#P5]8roZLE>b69eIkOPm\W7]si-d(b'K-G@\'4))/h<n\oSdC#InA/]dQnDIM/dHlreuD=*mCG%4O)EQ5jmOnfup_^ANT53;^sT20ILlRot5Cn_eW`:gS-oB+INHjBem.VhC?/YplBd&D0Oap5J,U&3K]N(kG<eP?5)AU(B#,':,6b9P-gBVeQ0.FWZ+OlV8Ji:HWniM@m'^up[TCeg[^1(3/+H4kG<eP?5)AU(B#,'<2=>.ag%GdQ^>`=RD8"2A:F9hFnO5PMY;;'cXQVAQUEti*VAii)#(K&cPWH%jmi!u<2Y`RD)i@.3g+blF*aM&^!_m<h&%K,gI_0BJ7L9Ap@ah@4g4"J43G:1'_H2"BrtU^Z7"K8r>C5eUcc>p2]BZ`s8-S,\)5nT\4Fa>F8/UoduO=;G&?JM`sU:YFrB=_g.o7Fp5Gjc2-YT0aGP:M3o3ZpG7WbN@<Jtn>5\#^UH`7MMNl-#;S^QnH]lUD"\rorlGcti\LkTG/1Be^76Rj:ZCe5m/a5c,qa5/`"0YShXhF(2SMm>sXK+6BnQX8J<D;:TXjopk`ipm\b2_gDWIS8j]1V4^?&[C%)q-GFg.:?C-gIX!4g4"V>[Tb/:,dXE\[S<ebIrjt7KNB#DH2$dVGuNV@T/Z$fs9hf(o/A;ksb<R1GE1eAfSZd"3DNR7@e[#c`=Ufgmd-f8^#B\c`??\_Xu$po$1u_0kmt*d@W-a7EX);ltaFJrd+iYT%nZ`jqoN3`/AqJc*bg08,d7oH_!(KH^.deYhF2cCk5KlqtA?8VJECqqD/>T89oT2PV&(NQCa,A93S37XE9fX7]C8NR:DJ['//Wr2.ri<;M"3.CnKUeelhQaYKI\FYLZXG;6BFq2060++8m(0<2:MiKEt-2(b"[fMgA^Sh+HgQ&=#lMa4?Et)k*h8qWQ6B'_65>3#^=<k"FB(f!_1ieeZn]'i7[0ddc%S4D_Z7HJN,8j2UGb4`=$fbNpjXL)FR"0O9=Md@W.07,h<,P5._[IT%N`.G+Y9MdY>pU-E/Gc5mD9Hmr=8WIIhA+-O/oOuY^bHY`7d%,BNgnL*oG^\&JdXo9u=jSDUDpi+B@dMk?^-H<_NqD/?Dm(kYkalt0#nZpRRSRtNl5>ulUGP$iX6Sb8G4hN,]]e0(:#4CiogkmC_`C&GZ5/-PAMX*2i17o.A]I(Y3/c%8X%0:a(aOXK&D/DG"H+Kh)h!Uccp9KZg4s>5s9oOF'oOeRghK`NPRHqJSbjDFY$.*2u[B8q,)t*,2319O;1d?iEh2fPme$eJd(cIP&/H=M>8ES@/\!$QYB@=8L>>E/c8kKhiC:IIpRC<ut>ZSITO.FM0lQMZd`L+)&J&\_T3Zm"V=Me'#`&l('S$'*>[X-hL&r\KeA3VO<%qcmY=Fap'bWeJNpb-&B!Fsh!r>EMAl[3(co-s#hs)87&A=hUZMS!T-oGR=5Km+((4IMOr9/7$Ta-]0oA(h^s)8hp/HsjrGm.fu+m;MGg3rDe-o>`N_T<6NJE."2\m-LM<;_]Nh?C%tAPVVso?FLhE1(T+MhTCR:7M"kcVpc8@Yq<N3#I``3@C"&^*_NWnc'O4Q@bG>/;t@6<_o%`HS@4X*KBY+fCKbfYoV6S&eS,>]\@he9kGNA&h`ApOA`VE^"0>\(>M'W3o21KXT&%+[12jI52.-4J0(kR=Oj':#E0$4RcSQI7%1&Mji/)Z@H$.@BQ]YK2oGI:+R,@*fLjF5>3t6;?9X^<#H7qqFAW55a44=7#,>%$Afp1>U7$Asg.O:E@d<oUCV`$>R>(S-Mqd=`"oPCmQe&JK_<,3132?%W+p?%qfm^,.5?$:YNC5ngAW0*Y06RJCbD;f#s?/O)Ikos^jIG)Kjh+p\$;;PGmf.gPElU+lk1K11tGTpE1O'eJb(`Ts!PAR;Edp(+498,Mk2mR6UdR.*FiCt7,EuOn+F&0`_C,4[oX1)C$3/d-l97&\BQd2>tY#PCg(J@/#C,8ed-$[:/&,cmM?+@6U4KR,[H.TPggljY/B"S)l/A';n&\#m-_h"+Jk1P`\M:Y]*DUQ7(o1A)>FBpU><dq\926XY9[@+#C&j.mG1/BRR><KBp]%`F5j$H$Y%o7?i%^^73cRtCF3c)_UcdHIm?M`)&?`LR#R'*FSMUAHpCd"5&S_D<;BaL@bd\_MrcB^1#iJMBB?^:?LGfgjbl:;_KC_Yb9S9oKUFrh.Cj'J^+V.<Njksb<RF)e6bqCZ[k7YO=>a*4BNcb*RWk+9n.BsDKrbK<HsZc1WrS!c;h_%Z&i:+lar7cQu-FY)[AeNUaX4Eh\CbtBr,Pnj]^Gt>74E$1<hp,0r3T=9uoEu$e!`nef)HJ28dR5uq9'A8;_o4dj(d9)f4L"#DUX>X:8EC=<'dcKi+a(<RuLV6O^gAg^`6U.mJE1e9H8tE$&:*A<KZ=U>\4A0%)pJUt`iP)kAhcSiaN9QeBXr-l7fpIkt@WdsjosCPR1NclQ-T]N/n:<n!"P"7pFL<9qn\>%M[^IQl5m_)'NFf5SY-V]OqOFrR*k7J=kc&sQI3a2^8lsMSVG9eR7#uU4ohLWT%Fh=.'^//7.ZUf01)F;U)IcibjdfqRVX`\^]@^[M03.GtdZE2,e7f5\=CbiILY>(GY./pZlQl(EYcP7,T?P'(/57noctNfX=EC#D9PpIg='WM>*g_E&"h!KKZ`LS*:,;i5pm$VV];K\EL=U#5(U][1dh4dJjuOTOg-U@n\:.@%o6=Bg>'V]f01'MflEk))^X%Q3_PQXpV`%^V>:@i5f5HOW*Y6Ft/"PhK$W!ZXWQe,-QE4fhs3#sQIGZE#pN#9,1W(_*Dk$=NePTO!crI^br#Eg@*gX37esnu'W6J#,Q7V7Lq4;P3.b6;A^Rp]]jsd]l!aWd7^s@^1k,W7p>J4h+=>?8u`,<(G/QpHO/Xc'ci,MD5qe>)i^i<k`B"NdrZ-l)"WVQ,O.X!6uFZ?d_!aTM8_QeDl!]h.IRNkQ_De72hduW2l=/R>P\spq2WfD-OI9h`9klmZUgrl.G)OqV_A^/M[[rsK$@5tZK!aQ,X^u7iHnW:t!=`aT7UNXQ*Butrf-1fT542%l-Ig\9f?aIG4?'S:YP@X*b>_h$"JZ],gi,Bt5GZ`O#=`aT7UGaoN>-afMaa?2&\"!eq$CBUA-a6ltG0Au9Oo;R<RAVXLCpr7OVm]Ep/&<)_*6C;aQF0aOZmYM%*1`CsC%)(W"0p\[R?O`mVb:#MCX-h&Q&]m1\9)6Sd/J?5Ctum.+uf[[lZ!6p>Yo3r36PJUCX/Q$8EMo-I9J^LahG263R4o%p$X<^124j.Z$sg-,(sSfP0>X*_&53PaZLW1[8tkK5Q-\fd6ehGO1tXKcf:<iaj][U(IlZGC9s,=FAWl,nSHF@;/,'q6gTO:`%>dSJhq@*P'K/@CTXZuJ,3$3R5uq9'3qHOW%A_IMX*2i1673%Xd(d,:HrSM;l:pdK'P61[=nZfEW)b*k4,[W[BermksoT&lEg[iE1I3.[SWVIY29r84<Bfr<n<d*rM[ub%8i(Ug1Y16>:@i5f5I\0-(o<FXZ>AlCTXZuJ,3ScU'IjM?s"hC_Y'BBRE*4Nf#jHQV]TLtHJggnL4s(c>e__NGs'b7rI*#DhesN)j&Jh!GKos4%l[bcd-3T.>OD%9DUn7IiS*iU'XuY=ZurkL9BE_1VF]k>Ugq!N^)WTj:N(CrS"<fSn!`jG+-JX1Qm.q_7l!l\rM,T9QK#[$*fH;H3H?&<gE19JHX[Xm>2QU`]rZ(m_t2&Ho+[D=n9iiX5Q,CDF*)B4:A5^^\,<E5*FE?$h"NrH9/iI9Z?JEs:CGfLat?2\2<rfuq_[]HW7WCJH.T0PK(\2QgWc4h?1Qrj$0e'tLh%RL7PZWH=XqaTnUat(>em>'-ds``L%oML9T'eYe_W$-7G.9D)rje1B>qkp]@c<4D`l-H)9KNMP'K/#PPOP`T'r->V]V'^H8(NX2jY[@ULn5\ZrgW122XDTFfD`dX(:Y%]E62[*6Gk&*qr9t.qQs;-^bo\hQ:Pb@"q!'7h9;@[6q,a1=*CSkLmi*2OUI[4)HqAWB`3T7l'OmA0)9'h"^GX<MKdT'TtJ&YTMqTP<_;oRG5b3D&eqemJ9E:X!*o*7P^#P*RdnYO/gb+XuV".+do*\\WXKNKP0V]S'2t'C*8q^:j8*LR6-*uk,UQCm_Ec,BhS/B$r,#kA&W+r,FL3XH@2@OGar8.l.kmC544mlQEBt)7!lu'8tFO3C/T48.]lSF/no5`2u;9pD;g\tdo\#Y$i?n(Fd!'\dVdsb2d'XpSkPEJN(`*NGVuSiM)@g$T8DJ#[sHZ5k5=JAa(b\[`Z;UmP.Nf%k2$J%*)0r[MCh[a>G-^d1IX'[LLf8aRe*F!P.A<oh`i<2H89aqPC7OUWZbRth0=hOrq(>YST5n"AP7JPb2AiD:rVOa,+6J=rb5rgq9oj1;dUu;V_=!gXnM=pH1]TU9D_'7GAG&\$J03RA0)9WVj1Jq#5I]D*,/V06@Wlbm#&K8m@H4s??FRmp#:"-g->emDe^MbLJtmf+Z4R"6i!WM8`nGZ8&da`mq$E2bP:6,f4cr;f6(aE4lbU>,kGu$N9Qe^S3QuMZNcW;V/:E3G26K$Wm[?,;haNoR-jlKZg9df##_s[;^CsZ8ER%U3Igm6B'L>#bd4S>rFGo3WoksBc2%@P:lrf:A'UuCk4+O_>$5qGoY\o&GF>^#Itsl-^u\n#_sJD(2;H>Xp2t\,($c#"-8bpf/ehje^mO^BP'K1NT2sO55Q*8ldDP30h#lErFo$"Lb>QI2+\FQ'[%h^&AHPQ:PaXY.dR$5H%k5`8D2;^D&,E,g2<Rb"bY7Y*9"*uMm-DiS[q9m@+ju@ZG'V_V2>0@&-4_HCUhu$#*Y8(EPr7`#5Klgni(rLgm;8&4h'&<1ggBm,==BIJA(%eS1673%Xd(d,:I!&soT9#sO5lSk];=]7;TV%<Wk\L2A"d!sN(Mb>aZLW1[8tkK5Q*8ld6l_7Ac6.Wf2".l$o')G>9rfb=OpYYF8kgLbX;t>ah7$Q,kE5rMP\7YZu(rLj'c)+A^1&"%l4k^A:N7l2"AuqfcLL1X=>ffDD/E6Za&"ZU\uHZ9J+8[D2VpG&'J-,CX/Q$R$m/hlSKFoMPY:jVF]k>YcP7<k5=J!R>Dup:4luK=:3YuMI[b=b??E3cC]QQRHT4f1`.!cV/ZC18ETHHXL5@rr99!)M&s0%K41HU$J03RA0)9)=t=C6T73/qk^i%V(`&!%a56q>h3OrsjSdb&k(.>"CQ5DUJ,3ScU'IjM?t(c':!W',af(57Fkf-9rcc`bn+Y]mQBTN;M7p"(C!HJ&%l4k^XEL-u5@<q%Rs1S$[J?2hp'77e02MJBQ)&PgG"h5r1s%.e3jm.'/upRH)G5s;];odc:MebN:FFo(bF4kWk>+=d9_?^#3dk=UO1&c2WhF\SMGotd^@i8nP/Q[c`*&R8k2G9X6Xq[<Yn18l3gk1p;mYWal%b[`*_t>Orj^),Z>VD`HeRem93U(]%C]O3/a):pjo16_PO>lc\To!K;k(8M5jPC[B=GhC`k!KsT*WHb)3/Q>NIQ.[9cM3eWGU?./sL4,baEA%%P`>-4*#]A/KMo>KA@0<;G/JthV,q.c*lb?.(1C#+/NPSYL?)rb@HZ9.TtB!bIp#n`]uT&naA;;lSf2tr9h@hHJa6R1[bbhb"CnWh;V5+7^49t4A!)[QF'9HrlR<jGG-]WF`q9LADX,jLPIAp^i2?PZ)qkbpJ5]PR5_NJHc(QCX\gkRqAtSWX1^VlBpVJhQMAeupu:L>o!Hg4jL42V.(7i?I_952Q'BGd94!p0GdpWP%**<0#*O79oA4G[XC3mY(CQGNmJ9E:\"mk)I`BJFgY[=KbYO!U<U22G\+B/YN/nemMr?o0)qs=2+OJb!1n"B@orY!U%cMLlialomNS1(.oN5>P[)j;L`<Cr4p+Y1e2ZgG5^N$LN4p8V$J`5&$S7^ANRf+QNgIU7:JGa8sFY)S/[!lM3WO8=Wfd;tBB$[a3jsEX]5]^1,Lg`XmUB_R.D#Ddc//u\NBT3B,nE>1pOG'kEP'J`,F.bNG.);V8Q,5=lXFk%)%*9K&NXH3`GV,>)8KojOGq^LbTK+VQ^n]AD_N/kM.4"Lm8EN0Y>YoskS&q2$&lFe8K-?Wbc#H#M*^-Zj;Cq"26r[CYNs'o9r$+B7$[8To,a(17*#B=InT$DJ_F-q!]0E\t106^r#Fa\)6:5%V;jpnISA!1.A]JgD9SBe9gO5[^?QNPoho_8b(8>gu59Hr>XSMF+[rt>97RAj8RcB":'XAB0E&)?Y/3nlNFnZ]K\8H-T"N\bYS/ZD6;V0WZON`:<\=h3qp@m&&;om1#r#@J,WFT_/Sp#,)I(@40;HkDfXN$IJZN]]YScF%=acg9'Y<3Yb3RA`^'H0"Zo.Bd+PL;pIpQ$PeQRXGLcYbI\1tqF%YoKgD:?KS),^n8X+L>G+-1eJuQRsJN"*!7O6::aNHn/0'-M,D=Gdb8WbWl"gF"F1@R9sk("N]qrFiiFAT4AGi#qdV_<#<F#:g0"*ZcP*7]%I/1*=F7n#dG@B)48WP*KFZZ6o#"9j+9TbFiiF;a!c"3ZY,1Zs6XQ*+dlg\FijQNq\bR?KUcpEm[i!GD_*ccfg:i^!%0BI1t3tB?PX$5bW?gH&.pdm/rO6M1rfcRL+8A^-PoKM3SZ$+H=1mNP*WY[2I"DW#;o'7=9Q`.(m6o+*#B=InNo#"=$IgZA0)0$*,(??$Lm8-V/R_i"XN\I8EN0Y>YoqUaW,PcA0)0$*,(??$Lf1+"4*+RK-?Wbc#H#M*[Ggb\`([.[0@V#[J]t1h`OVr3RANX'];84#G)ltbhkX`s+ns`fj_i`k'Tb_5R1OjJ-X19G](.h&,Op)Zhp?&VdDK#YhPR_UqQ<(D+6[&RI#4d>>!Z!h+JdV6o#"9j+7=p8ER^/c4Fm+C[>9JRC>)O"Y0*.XYuMh:U@E6@GMf4'77/ZV08$GJ[W(]!"Y5Qn6GEmSh9OrY1r3J`-<JC=72%5G//8BoMu(",t[5a>?k!\m<:5T(Tr"`M9Ga6SOc1pi!&@ThOTc;ZcP>c[o5'^-B\(he)Tc;2I@NH'<iQ*F(\.[,]fU\/gpk2:N'n6h&048@b:'5O^g,KDQ%Pe_TVT8H.(G$RG/1ZPsY9%NHU"mPI^]e8`i9Z>Yp7A1q,X,gaG'7RGU/iMNYb:H7/<>+^?:\J'CL7%?l'`'^)7^@sO4tck[E3U*?"HF[Jk]#9M?%.;bZ6)>g9WNMK_boA:h-?KPeq]Su5I&l.3>3Npm)o\>E-:*anR3A)^J<?5aG[Ir,K7(Bh%VBYon8r<KrO6U/O]s'0l$Q?]X"'o_;PPIJo-Sk->,H?`60&RQHSl`leEr^^qaaDrD7T>'(?qBD[!5JJ]1&Hs*mR1YOCW&Rq%u+U)!4X?ROfdZ1'AZK&SHqHb##-B7?qBD[!!&3,R0Q)7#64akPb$$XGIPG]#;cdpr=mVS[^;40eRm-Fs'<qE5PU>a!<<*He`;dBgb$l%<7b-5:"2t-1%s?5,]`qcJ4UUh['Qa>oHZQtUOSkuQa,-5d,&HjWGo;.Ftuj;.@ig!&4Rm?]9H(^/s83p!5PD9=o&sRe$i(VS:TIEO_r!I">)Lc5*rWYqL=">p.8P-Cm`?=3_AH6!!"fiP0E=\cKpu_MB,!BNHV_3P'M6JX^ka#]il\&!!%O@ATR"qo3ikM%S>g;60VX[`SO;NV5(Lg1'[dZR$9h'Qh'=WA=ajl+$nB0S<*W@Htmp*bWK*Z.jT09!.[Wu8`k4aDjY(,I/m"t#64`h"XAADPPB!*cH?9cR^6@-DGP%@Io[hAPZ'=6oX!_'g3>.&T5#U=!rr=/f-;89W+^oVbLM]u!<<*HV3#UGIZ?jjfpYIo!!!"_,2reo1'[dZQk[Y)(m6lZ!5PC$k/!/'!<<*H75>C.A.AS>0I`010I1]>!.[Y'b_%(,!rr<pC-t792Ng'#!5ND/SsdVc1'[dZQk[Y)(m6lZ!5PC$k.tm3S2gQL^mmsX_2ukA!!"?71(T+M%KHJ_.?\s1,]`qcJ4YmIK-?Wb!!#]MA0)0$)uotH;C(jA8EKmP!0\Up#=C6O!!&B#aZLE'3<0&pUe'XaON[_*!%(,i%u+U)!!"]%P'J`,ErZ2j8Wh5L+diE4!)/8\*Xp.1!!$D),kGD7jo>A]P9QD"6S\lH!14JB4;a5A!!'g18ERaMbQ.\D-:K[#L1Cbo!&,jbGq^Lb!!%O@Oj&G$R0*Eh9T!@%%*9Ih!+8\D!rB6cbQ.\DB!Z-\5C`[MIf]QG`H%,%!!'fV`]V^=J"pWlzzzzz!!%]CrrD/J6X'~>endstream + +endobj +% 'FormXob.1ba2a8f0b32eacf100be71e913969f67': class PDFImageXObject +37 0 obj +<< /BitsPerComponent 8 + /ColorSpace /DeviceGray + /Decode [ 0 + 1 ] + /Filter [ /ASCII85Decode + /FlateDecode ] + /Height 562 + /Length 10228 + /Subtype /Image + /Type /XObject + /Width 990 >> +stream +Gb"0WlZ2!p)Fe-b<N59K?[_r5Wu2INZ=O=]*SsS(4gk$++<2Y0X%>jTD`7Xr!8o@eX+#QJ9*7j_*HBZf?hMhIP>auAp$[rfBn4=),L3$$TTV@q/F!EhW?]]_DP3.Ri[j@!.]FZ<U2HWe3oV^U"tHSscD#3LOuhSRl38`;,L3$$TTV@q/F!EhW?]]_DP3.Ri[j@!.]FZ<U2HWe3oV^U"tHSscD#3LOuhSRl38`;,L3$$TTV@q/F!EhW?]]_DP3.Ri[j@!.]FZ<>1K_nK_fPP<V&ta(BP[UDjr9kFfXDC=Z,Z$H6MbiosVst;7HDV"4b$tl@m#DeCu=.\qT`NW##LW;/_pTl5%Z,TjA"P7(mHCW*;7MKR+g2&bWTSU2Jr&'C(:e8(?9?Mn4W6:8es1+&QsG/F""r4/#sdHpkYbZD^temt?!1E0uPJ[YhYMo1l5#!f-`([,R-`U2Jr&'C(:e@?9F`Ir#^>$g4'W0*DdV#;#l,+R0`f4/#sd*;2F(n]0cg[rC11og7T@E6o$\T.T=Dc9%_+#TT_u.Ygj0E8Ei]e1I276F7<lrC*rahC=:W[rC11lCLI)BSQ6,(3L#JSY5Cb]FJ*BYrU;cS9KRrVsulYn]1?"[rC11lCQ#UGf:b/7,>_*-`DA1No)YmA.SgBGpfP;)SAQ+UHo0ak+/15.B0dN(3L#JSY5C"WOGS;FURB'T^F8.[nRW\$g4(RmO>-E9bqjZkFJ:6.B0dN(3L#JSY5C"WOGS;FURB'T^F8.[nRW\$g4(RmO>-E9bqjZkFJ:6.B0dN(3L#JSY5C"WOGS;FURB'T^F8.[nRW\$g4(RmO>-E9bqjZkFJ:6.B0dN(3L#JSY5C"WOGS;FURB'T^F8.[nRW\$g4(RmO>-E9bqjZkFJ:6.B0dN(3L#JSY5C"WOGS;FURB'T^F8.[nRW\$g4(RmO>-E9bqjZkFJ:6.B0dN(3L#JSY5C"WOGS;FURB'T^F8.[nRW\$g4(RmO>-E9bqjZkFH;!&C&8iqdXMkNJAdK7i0Z,S9Mhrh1'q!NN_l6AFo#:\qT`N=KgK;psaYgeNCF9DW/5AINdMCqr$Ml'lU6Gh1N)%7i0Z,S9Ntt&8i6Tj8=PYf`"=dB70(`*0P+Z>u8"LhMM+r4:7)>54d^gH!]"VD&utZ[rC11l;eEe2NKJh><))i?JVM+dWo0Kh/+3=:q(E#$0kP%8N)V^W*;7M"Egc#,b%:?e1I27@cocCEtde#0C%s`O"RA83:B95o58b6>P[;+iZEJj)IG9)LEr?Z(Xt%,GG9O0r9a-F(Njqk7i0Z,S9L]N+i5i(R2:!iRn":E/Y%$ZDB[T?eRMq8h/+3=:q(E#M40,hDiM=5q>L2oL&5]??@MPK\e_>0it526HTKZilf\"<$iePMn`<h*IW)LF1EI^i]G"9Q@=<NO7]bH.m6%8pqsjgR,G^cPU2hF.2obUJF*UHWpZ2S.7n>N+7.im"S*Da^K<IL@n""'^oBCFDl;h])&H7DFc-,&2cddB?RFd+<?(SXXROgidi*F?8lkQPc^!k+ZTh^rPDE3@,f-]OQmN/)?Fh.F0]&dP*qp^/MO&*H5)Mr(Ujmk@qQD<l/L,?ZqPWE&5\^!J*,G^cPK"=/bdem-El>ZR[3Wl@BOD<X/)<s-RqK)>dBjrlrk*Ou;dP0r2UmcL:MRmZ<r`m-\=uuPIjp0'_TKY]BGphaQ]7*9[a/@cU/Q$^&Wd,tp??`oUB&chYSX-4d#M$I#f<0IK>E-Y#hE*;dG7U^!-a$]uH>D$D6/=]&k+/__[mB;mdh6ftTUL)AHJJd4J$.Wi/Q$^&Wd,sE?$H.)[t,]j6JXf'k+0#,h:j=%9ao,TlL$qqn&4>R?N7gqaH4W=mN,@!:4,@`X^?R\hE*;dG7U^!-bc>C[c:<TSX-4dLYDKt55@ClH)p\3Y%R\u)'"eRFn\`.IamfHqbSA^s64j\&!XmR8Pur_pF3&]Yfllo1,pO.lF,k1"na!]=[,^eLEo=Ep@pYH8$U,2JMK21.I&hS3=#42p/jOU#)=Hmh<)?sTcV5alNbSjOJJi0RUm,sJaBUiTF;<%MRonrZVZ].Ac4k3*0M"Y)\^I_4d;3("(cFB;UfPWR"Tc2400MPK0tfrDJPP0W!BWGqLLC],Ur#eju!D:3;-H=:^2\#7G[)gkF`m9*pX'Ri/jb5gDiE]odFud5>VQ>,XpP_4Jnbm`%L?\b2AAWW8!p@%+Je>BDk(5*0M"Y)rro"Ru,ttJMK21.I&g))u%DQ!,cT'&!XmR8PurcgJt-=ET<O:n&20Z,3ma=Dt^jXUMc!g>;s:LpJ-[Y/Y[.=ph&DF1$Z3'\om&&IIG+QgEPq6NGnO(';KH'?E5(EgNW2@1=cu#_')BI[mdKMoPV(lO-rRoZQ=_W"(cFB;UfQG90Vhme.:Ee&!XmR8Purce?'\Im!C*Lh%oD0X_7St)'"eRF^&Camb30F[.h=4g1#GhLEo=E(0RcOo%u@mrbn%0(gl;H8Purc<pRb1W8"&u:W2]!.5Jqhe85dLUBTqkLq:t8F^%8iBS!`HU2I>'h%ijH>+fbkW#I<b[mef+(9#t3l:)02D%Uoc"mWOP]$US%>=@:\J\!G-DR;[b(/["okZ`9&=8RKh/+BMW/bH0Wq5aJ/j;%I>N>DBAr@M"+JaAd&0/bXTh(>RhNm.Js#o]Q+(=YoGAq*,Z%8h<WlD,ZSN<OI6TM@O7h,mKt$gON4e;XWS\"HJW6JYa?G73]3,Lh\VFgn#=3^VY):j3<4Ua+BK"a.;I:-(_t=AX2LlD,ZSN<OI6TM@O7h,mKt$gON4e;_GVe/cPW:EVTWa1o(Ic;.?/FG.61pq"&mk&g<KVf(<#lGhi+Fh?iZ^NTV+14Juor9KF,Ku8&)(OqruDl0Xp3O,`647IG-_51DHDR]Pq4h%h'e\+#am@5,$mG2($Z)W0J/]\1SFC8Qb;to[fXa>1cY3tMZV7X#XY'XgR'-0;:]5ZTbJN$O%4bhS-<Y+Wdg$9:L]3.dR?DDCrSE;5)\aI-9iUeYlpqPRef=):`g&&%,\d_hmL\*Q$U[GVWjgEn7c#`eB*^2sI(gq\1L->KTiO[k9-241ckK2rNh2`K6Vp+2`_o:IsAPV&0U$enZPE$?L1["O)*.2Y4diEYFr-(sb*SL=8p[UJgit?t:q/XtJ20%$KW,@W\&_&s$FjcDKDB>V@8A@M1G/%<9Ikd@`>H3mI4R8k];`<MV%D1B?QbSjAcRm+)a*c_#I@0Llh'Z`_ZCt#SEj(r;DELbi$$4TjgN]I\'=,r4Wfpa,]I:"B\ke]gDTo$AL@'6]9:;RC_2Enke87M>kEbD+,CJB3+mLs/o5dQIdLi',T+H-LVG91hcatPmh3P%(NpsYq';BBfe4E1*4nAtW[q4j#,6qO"G,G06:$-?8^W?X`U)nH<Ue\;6qgYa+bTV)/5O*+o=k#U_kuFuu^[C;m?#ZigRYoBnhAeHQHrpo'o\Xi-C",;op$."6lBXXU+)X8K^'KcPH<XZ*I!U/-lfN.-FcUXX\mPKje=E2%X8B@(oNp?$QOQa?4jldb^0A=7No0EX-$;_M^P/`DDTeC8[oM#FMrQ)J*pKDALQ>a7m.eDBk:?0!^WD-%GAN9LW-]fT?7uG(pI3m_?*itD^VJdUZ_(TU0B]H$p\<+;T2CZP`)l)nU[F6s=#WgJmZFFe,>n2+e;]ThHR.mr8CTd8F^l]^*f7H_&p97'h&)![8"sm[7,9(b2b'P0Of03D;>3W2NKL/d,jNB?e3+Fe@jL=\M7PDSFcSrH(l>goU2GoXh'5e+L3iBAhk-V62KHFZ]mG#dW4Ro$^I.1$jE@MLp[WK(G8"JQOh+&o9&4+Zq1-`*Q8`M7K=\8P,'BCR(];kQYkT&ZprEU'^93CDD=qkYjZfrtYI@1`K=\7E]"=^)]`g-0]/I,kCUmSc^Q3O"G3+s2LJO:'h:Ip[jn9/Z%6ioNG8ktq<mN8(pChtEgSM=V=mg)ulM^p/)mK&MI@Juf2<sUFqaJkP^)>P+HZ+X.[nC3IW;H,RHJS6uV$_*CbOr>*Al/5E9jbC0\E=KITj>5HF^Nb]Fb`nDQ`3"$Z>EJ5FWGkTgh,C.dsW%41!PmKU$h4rs1E^SG4Dh0b6M(-=gBC(9,1:tF\VeGC1r41YA<./s.s@N=e[Og038X+?e<MEs4N@.b5ug\=gC3?I9hV?)24hL;N]!c$R^;':`m8[gS4-%3\X4A7&ptJ4:dlFd;Oa8cn8U_]!(Ge/AiZK:<G-nD8*G1XWqsqf:,pGQROp^MYC+dK"A.d36QE;/0-UcFh@F>T\S\Uk9[4&md!cSHj.-)BAP%VFf$&+rN4SiV9!K/c96Z>f=BKdqmkmb\[2#O2q7f>f'?l3W0sdboaAFk%j,u-VppV@;"lmVX0b&:2d+rql5$)]'#-p+a!THBqefF.c/A%";"qF,5>bH'WJLMaQW);tjj!`U8_nVg+0!=lFZ\k(U$e]*7k.u^m`/e=ShkS<AM.rt]'kj,:$MJhEbrJT,8IIfpAsQu$`JDqDY6Nno1*]?%dIq`\rCdS(P)8[\`II*2h,l@gJ[@`\o8+f^/"[1XJ"u.W8"cMFH(W2H/k'OYD]KRn8UPQ^93[300?,E$0ns9?2*`PAA%_4kI5T#m`Q+*DM#HZ$bst,eU=o*[m0c_Su:<JD3obCm<)KB:j3T&D-m'H*C#[PIUsT#2gNb&c2@>)^DcjSrpYfe=aU2DgGIDA5+lfbh!to\gFIF<HPPkmS>uJLpJ6eKf=KZ.pAX%%BrH6'5i&lZjid#8F66?(/p^^V]e8>'?^V^[/Db'9T=mtIVq3_?oFB3BmYR;Pp1(?4?I(7cDI91,M-(hmF1"6G@f$2jaL6DH]$\H3\Nd`5O!1KY2YmpK7LRC[IsT'TK+a;_o3Kk*#,:ein;;Y6,r'k0k>4)ULt;IP/+sjJ_XK.K7GXoO>4<'+fP><`NSWJ<e;\dT"omqH]nRjfG_6f/2l^^qr1g=d)OnOprEVbGB]\:3AT=&ogX,AdDRB!)n"Df-mXr*u8k%R<LE`SNmkO)s/"`s/iug3#M3`D(8#RB/HsV$WJV^:LHpHM$jhk)@S%>MY?+o8#l:*9Gf=e_[foM/>`s:+R<^'g>mIb'U3pI_-:cDRODGRt+"6r?+eEs5ZHpHM$Kt9G?NXr'-X\cL)hXLVhUD<(fe2ojeDR@ihm`.Vo+,l;+_agXEXgEE@St12J#Ln`6W7t8>pjfs'$?^^\*?S*:>+oh0^#K4[7P!!UWHW_Th.VMR4nXgGW#Mj8\#8*Q!Hk.PlLr^h5+lf#6J\5Z`s:+R<iFbOn+_FEd0b#Cl5^sC2d2nm:VGcjl:*;RmAY;W5i$+-\io_H^GL:q*@ZnH!d-($bMB4$K<TZpNT?HH-9?NE3"4;t'L3]$Uk-Hg2Un:cDRODGRt+"6r?+eEs5ZHpHM$Kt9G?NXr'-X\cL)hXLVhUD<(fe2ojeDR;adSpJE^e;[M-gJdS9J@a,8FaNBo+&Fn"Tl*Z>ireR9/(EscGC2[3BSF#\oo9Q])m)rGVr$qEFe]]:p=)/fkYq6Ehg[fEa*ZOthjsH/1$Pl3h4D4BTMOB.^OLS)J%XsJo_Yu$r]MV,or-VD2]_Oi]8t!_gY>\j>JV5#HfChGe;[M-gCkqTRAfQ:Ln!1!M]9J:FaMQ0=6?Qq`Ep(.I^4O94_;rTo@1G^\]&DC\.*7O[jTCFA"(!(0fQVIqO9a%\ij3?$0ju1eEt@e:<ZW1C=)X_emLnuU2EbkndaqS/(EsC;Vj-"h4%8Chcu'o@=u-S8]\LjWV`[F5.K<qZ@TSMFjgA6UD<(fe4g1tNE3"4;`>^n2d2nm:Yg+Xh;bGpFa'I\9@Hnl;]gaE]#U4M(QTX#/F.>@]'4aVa-gKT;g07)dfFTP1WqDJmQ0X1"6pq?Q<d2?Fjs+je32).]9p1qW1+9qH^n5^0m2)F2]Y`h34%s\lE6n"3hYn\B%b/Q>t<`CZs'S]UYD3q?I,D73pK6;*kTI\AJ\9h*Hfg3FcS?%/uJ%tlD=[K*bUdE9\jj@9aB02c7HSp]'H;a%]F`E=`uNBf24II;"lrUlsf7_UM`,cmVujl`RJ0`h/kp<j34feWOn2%l%$@cR:R15G9(hT!HjGZb:][[3pNREl5jT(>tj'sIfKC'ipX's/^C$W&ZE=ecgMr#IXfj_E<^QH5i#80mLcB:$Ih3?F[L_k8"a`J;"k7F%0c#<J\%O?h'5`T'W??]l@o@_O$MMtT^EDj)[b(X!d-k]\jrE2-rBXDe-uTH*eCnr5i!Y]2\`3;"R:^CFcSfD:n[4gW#H)n4T]bQlM!ClRHm#$NhPkQW7t5e>k7.V+Vr]+I`%f6C_P;]!d/kTJkMQIQa)JJJ+W:PL1'7hB"6IaW7t5e>k2Ubmf#H61NkArrV1Ut\QiP>na6#&kLmr\X4FoRqQ4[KL3l(E\ij?2n(#qTQ9T71l0,D,h,Y=oY2aPh5P(7L*a9<->sdA=]&8aOa6r&MD67]$r,pCqfl-nVgeo`h*eCmcFhoAPlAd4j3Yahb*i[%;lO-`EokSA<:j34gH`D+IkZRZR+aN753k9Y9kGP8*"R>^1"d_'E44NPo]DaG<7sA4P<f\>!;R`PV\>7)R[sL7C^'XQ0't;qF]_pZtonUjti@FL%GJ(W1l<69AClc.j9t/0ms1I+CW_ZUgo5D\2/"lb_=oQ:MXZj;io>U2*\%8^7%3ubHSG7?m6eU4,hY:]DU[J,j;ne1bLP4&63U%odF-:H]U)Va4EqRu2CJLA&Ys'3);"jUNV_5KTq<t=$0Nm5@j;A<60))eqcC&Ie:M<RKC[-LEW4W)sPj]gFl.tK!3'QO$jgEiJ/,RFmo&IjD6[m#$LSF5.W4W)sPj]gr.""ZPR63UhP&'H71B#An[e]->TasTJk>?I'gF;%!c8Wl.le_[/hU`k!h3#;,Or<QQ\c@F#\-j@imir0H=g(#W4_OGXq;0*.=6BJir:!:l19];PG?4S:\dL01+24@6MA)Y#YNtVXo_!>C(4`thW8$XL4"IEk\+C\@dee73fqT>@[X8$a=l%&$eEqD7SX&3ZmDLO=<ep0!]^X=)"\?ZY@!*9(;7G/"G?.mcDWqLG^FigkZ5L.Pl%"Mp\r4%rgZuF4.oA6JItkPJY.M$'iOZoS`[sG:T]<q.ch,sh;n(B;\2Qe2L?nj2mAPf5DQgrtDhbh4f5:B)Q.52D3:>$.WdF?-H$'%q"k\jubijhB9olm!%`c8Nf*6R#@\WQDhJW!jdF$VL(1;&?-O2kVD!c?^J(_qV'r_!l^Oc='l?15eYQ4RpWugB1lTY-GK%96KI,.Q-DkM&A]i+a=00nrSeYBd#h'ZiJFE8A(H[T)2<dQk\5lQ5_USR=&I%BD*C\YJ@;6O$#lZB,<htW\dcJZ]i(qslINk5+I^Zk*`qn.FC=mG*@oN_I^mPb'AZa7+o^#A:#_Z*9A5"!"c4*iPFp3tPeV!`JTS`X3npq!$c=Q49t]i;W?00nZKeYAr.G^Q(E?#05HSa]lnImUeC3?o;IpO:YfV!`JTS`X3npq!$#/@!m:WI'R6j)6t?X8?u5\t*7*=.,[[$UENR;0R66:#4XFhfO%kI3*N0GIR*$SK2jF8);\ND>[+@8)<?*2g'<`J(*)mlW1Y?G9uOOmV_''3]hK?P5"">7,?AKD>[+@VuE#>2IdTqNkL^VS%?4k^Zk*`q`O/@mV_''3]ghoLJJaVh:17tr(Ufoh<.WoFa"dSe(IUmH.5REh8\>oG.*tuO3T\C\uE<rpm]Q(?+8nn\1:E8Fa"dSe(Mk/c5=95-VuaEG8l%\fhqKhe4ncT`ntl]e9rB\;g5_@2k:t3T1@_eh/3'aB/b3c(I6g+h/3(EB%PAuFZX#d,uuStFa#^\eiR:7\t(Om&uue`8DT]c'n=HMl]c&7H3Xjc[hDe8/:LsUmG5NPO'@.ZrLY'XT<[Ka=8XL'Y>_=dmc#O9g?0ck^Zmc?20RR:cG&l=6ZueX8DW+(QWRDbcEHJ22g(TKI,.Pjm`FasA`pHreD2-f;g5_@^Rs<c$t$IWW11B1NW8tD/n"IcSNu#Nld!5Ipetd2VbGq&fr9=2gJPGpiR_Jk*$-W6;`8"Wc>rBEA_:dTmt^g\7c+A"g2+B43("HhD`fC;5B:T-FVqlefq"E(bB1n<rPtHFlsg,5@/k]+USR<Dh"/q\naZ4%mWIshK`ArDPKS(XHTZ;S(r!),FC0RRrMi@Zh1NAoG0>NH]+rWE>h?-.J(CNQ0C/_1(Ee4Bl;:IR+RZ[u3-W[);j,&MXif"%4f%Cc/_>Df7dIc=eXa>[#Bj7QS&aq_2D(ii`-&,1eo8L@oW3%jH;NK&T^H^X2`/.PUNO3%lMe+-hS;!3WqQR*moMYEl5mm_s*&AX^%^ePF#VKJk5Nu+(1S0RT`,=\\R5"XWI"]afBn7S')N@%FikT,!5&!+*[Pr)@/.=(YUm'4[]+V4%c]K)]7,L<gBfYeZ"a<<];lgXh>tOGm=Z@C=LA.Yh:2p<mssB_G/=Y\XBGVhmV7KYGJN]j4(3ji<\4;oG;[:h4(.ipSM7qoWtp5s]:*0o*ADls:7,IH<=;(J?-TVH%N)ot-d8g5WWf'`Y%H=4#7OtK'4t?UeH/Qk=#4[+",=#6#r=-;C&t9FWu8A&!Q3OVK\f@L^Q0/>Ti_<[mY\TfCUV0L'[F@VBC9fTJ,f35p\4<)17'nHE(&_F1qS3kYM0@`9Dj+B\aVLucWACT?7Y3)=4#c0YFCHQOEmb8eL-u<IfK'3qbrm=WPpQ7E6d`&IRCI-BDB'/:fhl;)Y`!efU]LAgK_R+0!nk[NOl`rmd;PH]5P;q`b2n0<#>4jIHN)h\Y'RXG=C?D25pC)?[&j]Y>a[#U3#<%MOb\SLM$i!cO$s;f@I9<pq!$Ck-=gWY3sMHFtXQcW7JLFFEhu%n=2ajF)='%L9K><Xm:.;>PILHg3RoN?ag^6l]0h6me2$8\_$"&?^\Oi$8/K.I1qfnANm`:[[nMWfBn6L/9)K`<VO,g%G[F#$/E-#8=roG7pU'?Fm"0Sh=$poE,Rr-hHW>CX?o/:JkN%(n%7k6kKRbs2q+.F(o&^nKY$chF1::r=6$QR#*$P:EPP#mSbJ\e2<R6\?b'RuI`nZOmjg>4<cL!g]4obs/<T)l#'K*Wj^uau;YN,QR'PRmW&sGepM+#K24!VdCc$;@j*ciso=f4JjrLK!$^XQ=mX*HSGDWGJkQb6\Am2]<[%C*Qm1MhG*^\\.?a*O+r*',o\sj+C0"Q5`U[Gcfm+'-$oBQ9l>WCi^Kq;q\h]ZW\Ku0CnoU:JBP&(Z'm^u3ZeaU/`bo>W[`C=LT:>bbO_3_j!V`n%`9j-pHe=Cf?c+4C/PB$NQIB0<9T6K$Xh0G@>XD-704*CG,Q`o7aiO;J9lE^<]o"+2^d<'^DFm!%>\*cIoVfdbJe6RH&\1k[1^/#_f&U!8B@^d-=hL%n$=a.b\:IJK-$$GE:@_3t0YCFJ2:->sPnmo9=-f3VhFk]:>H!e-g1Z$\GAf0[/$SJ.@]PlW0qqeHp\#u%.i"G>#qpt_WO1P(b$SJ.@]PlW0ql"k6]&44dcMQ2k\rXGsW=(>Pm_!JoYPY8FT=WqnlH]:XrOS'$pSeNQU$fR3h66^SH_7n-''dd>f)<1@](`03/tq^Gn(b+9?V>C\#J'/3DrTKcl(Tf?KY$cX]I1&@VGm4]o6B)/F(':WPnXI.7,<,ihNKtS?R]?sJ'6S^mbPg4lcr10E!^[M?$T6.;"n,XJkN%(n&fu4-i\4k[p,hN'3AM^!Kj)]ou7S'nm]r:2f[rE<,^1t*kN#Zm^(CHQV]VA[SM-,\I%QPTPgibG@LBXaj!OB2Hl$4R3W9PLq8-Ul@M[-)lTG_\:hGE)X;oIW#M\/0"?SGJK!g*9;if.Te<j.\q(dbJkN$]W1biRKXu^Ql@M[-)lTG_\:hGE)X;oIW#M\/0"?SGJK!g*9;if.Te<j.\q(dbJkN$]W1biRKXu^Ql@M[-)lTG_\:hGE)X;oIW#M\/0"?SGJK!g*9;if.Te<j.\q(dbJkN$]W1biRKXu^Ql@M[-)lTG_\:hGE)X;oIW#M\/0"?SGJK!g*9;if.Te<j.\q(dbJkN$]W1biRKXu^Ql@M[-)lTG_\:hGE)X;oIW#M\/0"?SGJK!g*9;if.Te<j.\q(dbJkN$]W1biRKXu^Ql@M[-)lTG_\:hGE)X;oIW#M\/0"?SGJJu:Qs-`QS=1pZ1b^P$@R.^?O?6'"Gz!+4nRJC3]f~>endstream + +endobj +% 'Page2': class PDFPage +38 0 obj +% Page dictionary +<< /Contents 67 0 R + /MediaBox [ 0 + 0 + 595.2756 + 841.8898 ] + /Parent 65 0 R + /Resources << /Font 1 0 R + /ProcSet [ /PDF + /Text + /ImageB + /ImageC + /ImageI ] + /XObject << /FormXob.0abfd65e2cab2f27fd6af0c2fbb44aa3 36 0 R >> >> + /Rotate 0 + /Trans << >> + /Type /Page >> +endobj +% 'F4': class PDFType1Font +39 0 obj +% Font Courier +<< /BaseFont /Courier + /Encoding /WinAnsiEncoding + /Name /F4 + /Subtype /Type1 + /Type /Font >> +endobj +% 'Page3': class PDFPage +40 0 obj +% Page dictionary +<< /Contents 68 0 R + /MediaBox [ 0 + 0 + 595.2756 + 841.8898 ] + /Parent 65 0 R + /Resources << /Font 1 0 R + /ProcSet [ /PDF + /Text + /ImageB + /ImageC + /ImageI ] >> + /Rotate 0 + /Trans << >> + /Type /Page >> +endobj +% 'Page4': class PDFPage +41 0 obj +% Page dictionary +<< /Contents 69 0 R + /MediaBox [ 0 + 0 + 595.2756 + 841.8898 ] + /Parent 65 0 R + /Resources << /Font 1 0 R + /ProcSet [ /PDF + /Text + /ImageB + /ImageC + /ImageI ] >> + /Rotate 0 + /Trans << >> + /Type /Page >> +endobj +% 'FormXob.cfe9493e2e6e4e30496a38f77524126d': class PDFImageXObject +42 0 obj +<< /BitsPerComponent 8 + /ColorSpace /DeviceRGB + /Filter [ /ASCII85Decode + /FlateDecode ] + /Height 742 + /Length 34520 + /SMask 43 0 R + /Subtype /Image + /Type /XObject + /Width 1248 >> +stream +Gb"-V%?dMHdPff]68.<Rs5n&&H"T1QM+[ki"QDplcEXgd//!V$0#<a6?2`pszzzzzzzzzzzzzzzzz!2T:=o/p=(!!'gMrf\d[TT+=+!!'Bi:MKQA2Z6-0"TSO+aJZEBD`[j[s5[)Y!2,$n8iuh_!!$[[T@-Iu"TSPV%@p;0IkAu_A$CI+\Je\1pE+f+jAQ$YT[C9SB\N(+fB8_LpuC5^p3sJlngOP=cu.34'RZAFqo.\fX/-iN)eV6Kk0ob'K:N5fLgT^%!!(A`cr_"Fe'3qS2`I%G>Q286/:5],&G["?!,+<)/DC%"FEPn7oBCh4%n&Sb!!(^^)N3>@l-s=75A00.R^3Mm4p:odg'nsY:Ak$sVTmY$:\joF3;Yu%;ZHfjh70^<Lkg>@@qjt[q/l5'dW#NO7m7(V!7!9E/=NE_TDa7hn*7pS+`Vf;cM634T7-?_OA>lWJ4;oHU:jlUZ$2@,!<@Xn08XMg:Gt4qHjTiR[$03W-_CG?!:AiGg<$5m!'iXAP]l`qo_00(D^]E%!+7eW.IAVVl0f,Q.0'@P8j9*-Y2A]5:B:HG<?F3@59K\8!!$^%nbFWYjAQ$YTUgI&48BQj!,*aPddH/156V#eR`VJ7P>;2ZJ9LK4m=K`^qfaD^^](gRdK'>uhT;\&>Ks(h^Z"pd+pS)JL6+Tk/hc^Y9:j/+"+<^PQ;?Q@&'_Ea%fcTOX7PQ)hS!2H<:7E1>N^5$;Vuk*n*.[o!!'Sd93'0]"BW'[[nlathdKTmEG&m=f5*)t(c4E<E4*qnc_oAmg:f[sGsd<_aIq:Z/q3j$THeG!>5dkE66=cfZe8a4?%RulYBRF'R4*\t91a3n2(m50Vo/<E!4^(uYFGSm5)8^n'g(bsWa9XAnb$dkpNO#Ph<hP)RDD(Vf6HZ!n+><5qn4&;!,rkf>[S7AjjU3OVLB;CYf>fo`OU$\F>YeZ4bFidn2l%FIm9*,$37d0fEFb7<'FU43!]04'OOi:l#+S?4X\]cT>gh;7PY-tIX(VhUQA81:\PNOI!K0b?(N?%Dc`8#oNPUa.0)KU,8_9:C*8taW9'??lcPc2/_;g`P7s;;BBP-k%.`?I^mZ6Hg:k3=_%*"djjS.-Gq9$4K04s@;%+.jhI+^hM"<%qn1;n!?ke4tU.e1O`XYC#"b<1i7K]D&2\XRLq%NgTjr"Ve69_6:HjTj:o8ElC+eR1X4p?J.Gt%n2OABR<T)q:(4JRI)2!39KiGjLZ`SnKNCH58jhemOF+.bN3WI=RV!4q80%?.%OJ%40Q5$e+/N1PKab)JF,>9][@5gMQfJPge^c18c^eW8mZ+56r*GI>]jW;*0haf(Gkid=qp>KqqdX&lR[m'P%!JMjnqm_G[^NVbCk>Wr=ADL"\RUBko"o'<t\1YDM*qt6hsCmNJ#'5aVQeRZ.8lF>)MQ4/'V>i=/qh+YuKh;hK7ka#j<0T);m<#J,W+OaOYNVca;DpUgF82$P"=?aFi]JX,#4p?ISGt%n2f_k)Pob4gbY?(g3WJ09Z^"FPnM]c&11S;Zg\*RNt7LLiNAtQd4oZm'JG<e=qJ=_$U"/Dgj!:ErQNEb%OIl.?4h_"5#g%i/X]=O=^T@ROoq%Nh?jV\LijnEi!?2LhFONhmX/'S631&(lmDb=3hGum238SZ'hN:D`_pBb_Ui6q3tp-_(JJ=_$U"-<4_Hk,>gAU^&9"d[D\]%Y$,rSXKX/YuuW\U?>\/c-<UDV!=C\'#dM\&\5Ro>Y*YhU8B)IH4<,ka6!>n=X&[:jiON7Zq6dG,qYoMY$'AkM:KLHjTl0nr*boFBq'^I;G7fito-"g$p<M4j\e.$38oQN!:>Fcf_4q-(b6(cTItR#K`n!9KiW1Sp<d-&!B`!R=#>A4nFU:*[I@u1\h^bHKH(S4Q>tA58F2[eDBc\Y.q$8\'DaSHjTj:o8EkppK8p3p2mh?s/gIAWueQ=4p?J.Gt%lH=sh]@V,#Lsn(5b//sdYn0))G-CA-JPNO))dk:LOX*\QM[8j3E/Sp<d-O,0"aC.b%ncHkMM]X`utb<7A:W_>IiQIV@MH6:d44p?J.Gt%lpXV!PZeE6X+>.EqONcY9-JE1e7OM#g]r"b:B@,$T$bpQ=Q&1hC!%iP4kk8RW7!,<7@s9ZS,3<nEitIN$545Yf=]GYj\-;%$/1e;HQ@S/9iK(&lhZU;*=bT2pfrS9alu"[.83i_BIBEm0!tiLbbJ\Ar^c_lq/dCi3LtO);\gA,rVPOLa1BDre.T,EO':$Ye*imWVd\iUWHcb>UK4#"Ku``++f3gqPF%UVk&g/C9Nc=JB3jV(C'iU^8+#;HqVC?!L[Z<jEg]_n*X,IX*84Os3L<p$G371T9$-`&h5;@3=,B/Wj[@t#@*4p*46nBZ;G5B^4M$=B.,&s-JuK",e^^;8"oW0"C@L+ie@/9Gh<"),*B;YiXK.ja/O;JikT8t1n_Cp,'MLZtY-.cUpHPQF\^DpeSZ"`EmQL83&!!N0PnU,CBP/CB6U%?;pF)DTA6iK4FI)Ars*KN4hH]J&rQ'!pHT1!MEoV8fq!@\LZug-2gWcLFRs#>..d']&d*=bbLO;]Umnkdh@6RuAI6WDo(^.`S+C36]EDMmUQd-Z8dpjc*3@[#c%BQV#9.`FkoB77d.IFc<_,Q3c['XIU5$e,2I=q4gFD>a?O'Sr:8ht,fg6kJ*OABTR4US%jc)3i3%$'0A(pp.foa17Uc];A8HqH//$/1e;p\;NarqVqfn?5Umq=O9&&6mtmo^ugcX6g-4W,F7Ir4oS&?O,J:A153jQ;9N'>(Uq[d6/Oupl^AZ$<*#Ke(N>SkL4\=`j@.d5$cGZTpD@BH#sSmP]lUH9KfedIXdhq[P@d4m+BjJb<t9:(S!3Dd;R*`[K%r:PW9mNeEF0!tiLbbKO+VmQ%:"]M1tX/#=YSZJl^9.`FkoB77P:MAoS$E!Z,=-oOqdMqL%k>Ft"c9/[n<tsA6O+JhH.da=<S4bG"47hYWhP4cI4US'fX0f49E\=a&mED>PG`SSipF)E7Y0tV,b.6"7Znmd2iB<'AhP4K$\k5'M.d']&d*=bbL\E4NH&mP+lRM;'X.2g75s+]%*o<Z*k<00LQN,-'35khuRa\2]BP/CBj!12Elm&.>KQWQ'ngWa"9@1sH\qg#.g<$6HAR2.'I*0"L'!sHUmbp<dG4I(U=]]<M?0,=+$/1e;p[B4m47?$#AR2.'Fd7$I-"pp4h8=RRmCYs*P]`77elC"lQCsdoF:[h;[.>=B;q=t&=][VM>(Uq[d65-4dE[(Q9Vl)tQPXnh,u=Q].L5g3N-1D,W?l4j*o/(>,G#j!O+O@Vf@BT_m:r>8kLJBL^QY"iY&Z/&"RXF.HbB1=cWRnN_:3:,?%+-1]&gPP\ki87]:+^@1HW6]H`=j+cU4TN>CLA=oBEZI[P&.uhN/m_=#lUNJp-;(4U-47dk1#c0GOheeaJfUkH5g`Rgo)H-+KoKH=u!!M)%'!PVi,@A"8n_@9qu"C'iU^8,!k[0hpiD8&<][I!WaA]:,bOSkgk(CE,-_I5\:6s(@sHQ#ioNBP/CBU]4s`rUV'6;buN(WQM)e(6Pi@Yn&n]:KR?HBWt9,#4MJB<9l$s;G5B^4M"&/:M3/U4US&-s896DcV68=P.$nKL4%_TZd65*\^V8!1QUtOs"g,CH&mP+q/l4M5N0YL-g&n>=ZZT8oZOhg\^V8!1QUtoJTLb\0k]HPT=$rVq)_%t\&;WTmQ>9qVV,*JAj%eaT:IKMYggt`JYcjl[P.)=YX@S;ngUJ79@1sH]#Qa7r9$(b`BXB<rK>/Br$UfQ*PEElr8*O5b8IlF:^DB"6&.fkj]lO,g6kJ*pqV0H/naCbB?WW*a`Lg7\h=;:jASgMQCsdoPX*g\P4cD:;iI3&k_FQ.\^V8!1QP"loolebf*.[55,Fftb.6"7Znmb4Qh?\0ZX+Ge(AX2<ngWa"9@1sH)VQsbjVZ@Gf*.[85,Fftb.6"7Znmbt[[Q4hN+pl/!_sHje'k)XXp-NdcI9c%WBTAfT5lQl"RXF.EKrlGk[U(S\q"kXR85bIIE'h2L!Y#6.HaT%d*=`l=-2Hs*nIFE"e9@ocG$?tcelQU\in\*g[]2of&1ZIFQ;rEi'c%[<teNW`WI5f4hT:(Qh\Y"S4YA!47d,^EJPQX=L2<ME4TWEqgMh.MT_!qQI<%-D/O5"H4l%G?.7cBA+(\8E\=a&mED=kAIWW^Y7!<q&@,'QVje.`3mfD0YS9E"l.A)>VjpC35s+[O>Zl,Qf'<C_<LM.0VE;^6Xj;AuhirLl8Nu6@C'iU^8)q`1ij)l,E3?n=Cc.]HG*>^/69aL9C'iU^7mkIgj0Du-E2$7OqHYhAgK1^QBt#5Q2+Guro',L]?:[9A>\XT!R7BWf)WJ&/(N?*[,5\7>AR(d[en$I<mPFb.oSZTTb@?lcDW]Er`qkl'SXD?;3o,/(VjpC35s+[OFBNZif'<C_njp"-QfdjEd4Xu=k>Ft"c9*"Nee"2@\q%-.Vh^O$NI;uGP]NfMBP/A4YW'U^')Jn?(N9`7MK\P>k>Ft"c9+^,Di"9HaLGlrY/EN"o5m\q54U/I54U/#;G5B^4N_+$30#c^=g'>+Gp*XmPa@J-3L<p$G32X3=`[j!lcMh+8E8TDqG68f9"iVI536$a$/1e;3FpBS=g+kn]07brm3s]a0uQ_3:iA^fi^KE1rn@'EIH]#hV9V?U'!sHUEla^0Z<gUN^@uL9#0-[_id9Nrdi7;CI@tu!fq5<,]\7gQGNf],PWAnD9@1sHartP\bBdH"RGG6=Lg&NWlY[V.]X6#MD>N5LoNS@<)U:7dp7HdggF[:j3%F,igmQF\QXa+'EV6-N)d#/WB4A7fUDT`T)2MIJG32X3=`[j!lfuXCq6Z@rK%Iu-=3\b9ir,3pii2\DX%tdp9D^KPID7CG^!b^em8j(prhs5NR\hRhYH`B'm?]W'+\J;VW$Q+i*p$3_NjJKF97,2AlZI>]Da'/M>/'lNIbk!L3W2#6j5/@=n(,PHMo_fGb5([B:[Y:=XZ]XLmdhmp="8pNAQ.4RTf5?'3Wi5Pd*=br+mV+"]rnMCQVW5Jn<s4&?uT(ZL[W79%\*:$VSQ['qLGnui9&^Z41Fjg^4k*1kl7K-F_HAhWZSr_j(sLMqD00PC9q"7C7;`F&,d?>e/='GJp-9R%U$h,lZI@3o2%WQH23L[Q?HL3]Da@HB9+^Jrd$MI52=K/50Kk?[0IZ2G"uaD5/#DVV9V?U'!sHUEl^;%=g+kbhtu2R_ft4kd[h!3e,$BmaJ[(%^931<DVm\Ps3_qsmbqBTH#282c(:?ol1B-.C5>c#+DM5:R7B8J*QP85eY1mpbh8<4YN&)a07M)G_:<IhhLVR_g\cMK<^$u<^):nLDV+?)>mmLb^45MLV1%%[mnK0Tg+l,L2_L0I/=tPn5B^"2?*!oTNEX!"F<=PEWk"Y]XWGk$V9V?U'!sHUEl^;%=g'?VdOXa+9<`&jVrBU9O552gYC'X5r9g_*fC.MIccSCP0;ni:p<f($%\o*%&>dZ;e.T,EO)i<&N`iP9X30r,ZhUrD:@`,`;m=N\eU408ll$i?=a;XqP[-nR`f=_g;J.+e$/1e;3Fj/NXOi_;&C"5X?1=uLZ)\h1LW&F739,3mI.le@_(0ir_"d8s=&HQub'jOHP]"lmA,e4LX$)5DL+%0KU6_ICH'C\IEQi`7=e1]l;ML4'01nFic%[Wh#,7EVSU$GeeoC'D\isqEHr4]rTj->Z=/f]%&RO2']rMQPLf.k.C'iU^7lb*#a53u"\,Q"h?:\R^QZi$k]-0e;JZ'l.B--/rFW>b?Y29$()gNTd+^WlLX1)BL8C1T(?YbHqB-:pqg6kGkA0&_IY,f&2oYrD*)FM0EG?&R^Sa!/0X;[h_)2MIJG32X3=i[eVlftT:^%""P`XjfjT>b/9]_q,:q17[Kc^LV@hlYQkCLhVFde;e]VU_Mt.!5`gQCsdoPXF#Am-VB1lVDH38>e2\9D^8_c4]$\hjJIANRf1OH..?sX"jGB5-WWMV9V?U'!sHUEl^;%]j4]XrTVR^<;u^c?1=KWs5nG]L;\FVmSFdE.XMo&Y,)ZqnrZ^.Q!/c_k"uUka0E,>lE*:anKOMnRX@0@gREOB%lm\=2)/#nm=]l0\^V8!1QQRt3f^mZ=)\'%N>Lh9Eob\Td;O/__fmatfATJF3r,"]W?l4j*p&K+*.,<#hYP\?0@FPCn^@DkI!YQD>Ug1[l3p'45s+ZdLTKOggNE2?TAFgT:1K*Hp:\5uqt^+BcE03Dp#`>n>WnksHY`3CZGW2MLf.k.C'iU^7lb*#a53u"\,Q$>Mf]k)]X5GLhHk5j:DonV)2MIJG32X3=i[eVlftT:^%!;;`XjfjM<cbm!1+?.;<eQX/O;Ji.#4naf\:QAet:gkp+F&E-,6q75AQ(AG!ea2+\J;VW$Q+i*p&K+*.,<#hYP]jY4=pXIlYTu&23E?PBK<X3Wi5Pd*=br+mV,]G$VfSV`2f6l"0OkMj\EemTFV\m(5+oB8t-\>M?eRr!foELmRfo$j9WNU=:':>(Uq[;%?aLZ+'&aXZsLeV9W6'qtW<0Y,9VCUFP.`K.X,Yq=HiZC5A5M2[fgj)kth"Lg#CRk"uUka0E,>lE*:a.>>;,o?GOT>-_QcKJ&bJ%+0k-0VT^sg)C8@rp`G%rYO8BZ'H'Rs%:(`I<b%iV=sd>FU"S+TUg@m6e68DmCIW0:N(!2i:>F*-D0^PTj<'MNR,#CO*oZT`^/iLT.[%c'kaN$R,bh*6^0V6;+o9]4N\i53;.N$^%LPV^[Ju24.!CZ^2P-OI]GOMIKb_WFh!W<%Iql\r!CBMs3"MGs0IhcS+0AG8QThNl/p%^[+)SC>k(gq2EPbsH!nnaNB;+DH/h*4%e%0^)2MIJG32X3=i[eVlftT:BDGlcjop55[f#RYqdKD3^[%h.2U>C\aj&H+*/8]PhlN??k1X%qq,mOeVR^N/d=N$KVR+f`[sI>Lc"31LH5KoFe`X')W^E"3"&V_<c905mlT"T]?+opo'XN^tM5[9,.c9rti]UA(>(+:nh7.c%.6H$iQ=YiX)WIU,-50BKd9oXpbGT@;9'6XeW0r14EuiH%GFl8j/GEN:$q)[547akUXQ.sfFnO=X;d>P_'77W.%e7sgLRQml-hc]OTS69?>5aT)ng>\?2h1MXPukH]@803!0!/`X^%q<Go>Yu^Lf.k.C'iU^7lb*#a53u"\,Mn,Da'/MWdHH?c>)uBCl"GO3-*<YhN^ms(,joS]q=9^?Ji<!o5XeSFY@)cXi]`(QT>4G9@1sHas$(1p3'`Tp#d%[.8*%@ZldJhb9&LXBeDr7_'bU9K:@n_e!d'JI)6_mBQKg(p'*-4De2_!.!5`gQCsdoPXF#Am-VB1ld%$@;jN/_BobLNS=4?n.4:eA``W\mp4JRS[ZkZMjn@6c[Hq+F\lhtThCa$)g`G@:bo;#WGtY&A2+4E"&@DZ.bbH/`Nam"ZeQ[OKo"D3G$`nh*UiSo9ZlcH[I"g;)'ug"@L@agrWrGt0+DM5:R7B8J*QR$>X1/(ukk?lhfp:0lj$ldnkN!4B]X7.-\'i<?3BVafbM.A>QeI4;Lf.k.C'iU^7lb*#a53u"\,Q$^nX!e31;lhtHDB:-V9V?U'!sHUEl^;%]j4]XrTT<SON%hbmHT[S6^0V6;+o9]4N\i53;.N$^%J9^+&_ptds&WXjAVLqjASgMQCsdoPXF#Am-VB1lVDH[Kf%jh?:$j;>\XT!R7B8J*QR$>l`'m=pPE%ZVdD>Ba1m6UT6=spiMYIg>n]6Cc2Yk_S4YA!47akUXQ.sfFZn9IhX3a&RTEOEG\N6)mCI%[]Zt_DTQ95Gh&a>Z)[oU/$q)[547akUXQ.sfFigPd2n[DL`"4ThZ[/*ip:'r>E-9?JHYK,6`n=L\pT;qr>oT\)XP$pkd`p**Vq8>&/[HI`f=nnWZbr.(]IQ@63Wi5Pd*=br+mV,]G$Ro:VmlP"dc&@s`shLd*XA=cG@sKgF.Zk#Au;VIC7!jfj86(IC1X`prE!oII'KO>5&5sPB-:pqg6kGkA0&_IY"Ls<FnOH[M]lE\g[j[lrq.5F?^I5K.\Barei77GqeU^ng<WqW7&_sR[05m@UE$S"@rKsFT>p_QkG6K:0CA97F3Do/Afkon*Zj[sSkk^?0=tM"1Q9AbEq=B10s`U,<qbSY6^0V6;+o9]4N\i53;.N$nnG1\[nTUP`(PIT_;*n.n2C"IK'h]E9C9c4YMV@mEo?!$)tI]-CW-j]c9TklZnmb`a?#?p?'fpWlfXh&7ROhqGFMBDNf#n3CX8p%IVp3R/>"Q@d`KP,?UL&="&V_<c905mlT"T]?1M^2X4L*M%.Vb091GsZBXpJAgm7ie[(JLuE7D0(2*!DTkA!&<Hb9-VeSG16jNu?Kja@M[ken%/c9TklZnmb`a?#?p?'fpWlgX#"@to5Bn#,#'O'p<!r.YVWl3p'45s+ZdLTKOggNCW9Z-H]EWAhagHRJJes'b#9PWk)ock*&!5h$FR1QQRt3f^mZQ[B_;s':j]6bKe,2qe^<l3p'45s+ZdLTKOggNCW90mOq%+^WmQ)srA.FU"S+TUg@m6e68DmCMB-R(SO#&23G9NHR[R3Wi5Pd*=br+mV,]G$XZQ9O:8"LmN;X7_9g9SUm^cBP/CJOEDOi].Wn9-82/L`(PI=hjW<pGP*dnFo.sgXY)J!WA>*n"RXF.*3tT7Dq?;-`k4j?0uQ_39td[sZ[(JcPq8PNDMV2'+DM5:R7B8J*QR$>90S>\O\TDBQhJkjVpeF7QSl>O/9SC4q8_FGeIF.>Y9$fVEO,bD6OnTVr$k'u3Wi5Pd*=br+mV,]G$XZQbfarD6bKe0L:Gc!)Jn)C,\XaZ:*)L9EoX;i)S>qh6^0V6;+o9]4N\i53;.N$nnH=;E#M*V[+D4si"O5cDTa'SoBEMY<9D[+``Y/eWA>*n"RXF.*3tT7Dq?;-`k2VU0uQ_3r(F8p(U`&o]79'$a0,!tZE*ZsB@RQic9TklZnmb`a?#?p?'fpWo-U!I&23Ej$4F9F_7"CEXufeDL\f=m&+lJo6^0V6;+o9]4N\i53;.N$nnH=;E#M*V[#^AGO.AU$]uL\\c9TklZnmb`a?#?p?'fpWqiJrbT=t^%;uWhKQ@Ji1*ReW@/pCNKZ#%)&i,X1D%lG;!>n-X;3h3%-I*/G<'!sHUEl^;%]j95grTW]5P^IPsJ)9qt1\<oHiO&3nPItQVT5lQl"RXF.*3tT7Dq?;-`]g3iFA51fngVgIngUJ79@1sHas$(1p3'_;or#:r!'QE>Bd]Nn0!tiLbbH/`Nam"Z-(dLgjAXdSVjpC35s+ZdLTKOggNCW9ck#r:G4I*F;G5B^4N\i53;.N$ngX2u5,Fftb.6"7Znmb`a?#?p?'fpGrK'fh-_GE3[05m@UE$S"@rKsFT0bd';qf?kS4bG"47akUXQ.sfFigQ.O-]fa%SZfps7Z>33Ko,"Jp-9R%U$iW\*J@?5J>kXkeY=&V_jT53L<p$G32X3=i[eVl]P&;+7^lJjAX@#QCsdoPXF#Am-VCF;s9!a9"U/arfg?\-"pp4jcFU)Hb1p+'`&uFdS<!f>\XT!R7B8J*QR$>90S&YaJZD/:H=bFJp-9R%U$iW\*K2QTc`hSmGq3kV3[dFH'C\IEU<)(jAY8tHqHKrP]NfMBP/CJOEDOi].WmnqB;KZ:-RcEC'iU^7lb*#a53sl5)"I,VmMX`3L<p$G32X3=i[eVl]P&;+7^lJjAX@#QCsdoPXF#Am-VCF;s9!a8iuj5F/^I!B--/rFW>b?0)64X+eR1X536$a$/1e;3Fj/NhQBL8Kmq+@[$+9GQWeuak"uUka0E,>P#%bnngWte;pM5*TUg@m6e68DmCM@Wk_FOX48G+^W?l4j*p&K+*.,:Mq%WZKT@-Iuj]lO,g6kGkA0&_IY"Ls4I`SFoP>=3*>(Uq[;%?aLZ+'%^:SAm$.IH1pcD?i"SU$GeeoC'D]&ZfRLO;]Uq35s"-"pp4jcFU)Hb1p+'`&uFdS<!f>\XT!R7B8J*QR$>90S&YaJZD/:H=bFJp-9R%U$iW\*K2QTc`hSmGq3kV3[dFH'C\IEU<)(jAY8tHqHKrP]NfMBP/CJOEDOi].WmnqB;KZ:-RcEC'iU^7lb*#a53sl5)"H5i#McEXKe9`/O;Ji.#4naf\:O3eXt^d"8(Lj0)k\0s85gkcfa0rSc?B=cZc7AIt#;723tSI-"pp4jcFU)Hb1p+'`)guB5?c0k#5l`/n^>D9@1sHas$(1p3'_;or#:r!0$+tq(Hon.W>PI$eh"=3Fj/NhQBL8"i_j\_UZj]BP/CJOEDOi].Wmn(t<3gf,\'ti,kh2Znmb`a?#?p?'fpG$u22+78u7;3<efoUE$S"@rKsFT)p6@%B&bGSBdXVG32X3=i[eVl]P%piKV3YL^L%9TqIs%PXF#Am-VCF;d_TU.GVprJp-9R%U$iW\*K2QJ[*/P<()F]R8)&R4N\i53;.N$ngQ7.q%W7-2F0Fr.#4naf\:PjVnbP]HT^+eaM:c,G32X3=i[eVl]P%pd909'3p%6c1QQRt3f^mZQ[B.!c?]QD0u'BPH'C\IEU<)(jATH.ee>QRq$$00UE$S"@rKsFT)tdoT"oKm05+u>jcFU)Hb1p+'H!D6"Kl6`5s+ZdLTKOggNCW9_!%jIE#nNXg6kGkA0&_IY"Lq^7V=l8l^2&+c905mlT"T]?1KEu3pR)Wa8CO4k"uUka0E,>P#$YV=\ms:jqkB\O)i<&NkJ_bHjYhXH32\Q^S%-CPXF#Am-VCF;da^u'=a(u"msO/*3tT7Dq?;-!i*)n^idjSBP/CJOEDOi].Wmn(nL=&Y%)oH47akUXQ.sfFigPskc?.N*V0ZmR7B8J*QR$>90NMKB0Ch3Qs\4c4N\i53;.N$ngQ7RlNpg/XSF_SDg;kYR7#PFm-VCF;da^u'=^g;o;hm4Jh#"glT"T]?1KEu3pR)WB0*dks"jQ?lGhN/b<9K.<OP-HBDKT]]j9G-cDA*ma?#?p?'fpGN6Z_Nf-s/'mha.fCA'c/<3X\O]nM@mZQ-92@rKsFT)tdoT"oK/`PBWU]8jIr@rN#kQ:'5Cm-VCF;da^u'=c?Y2edp%Vqnt)=8U1s:@*UEKM*bu*3tT7Dq?;-!i*)n^ieY_))(jaFEPq'e!9b@F9#(0\oPkQNkJ_bHjYhXH32]4aetW#Epd\Wk!8a,5,k\)ZArF5f-R$jUU-Q-FdBcI>F@O%s&bmh2qq^-Z^Q]:HcG5SmKTRf?o_a<a53sl4p=Dg4b;pd?dR(\as$(1p3'a4.53gK$!bOKJp-9R%U$iW\*K2QJ^IUri&^!:Znmb`a?#?p?'fpGN6Z_Nf.k%5SU$GeeoC'D]&ZdtFOh,8NqikGbbH/`Nam"Z-(b76Z_"sTbV*XB*p&K+*.,:Mq%O[:o`VF-IR-'e.#4naf\:O[c)8DX3XnX"1l(Ca?dR(\as$(1p3'_-IkH_*\)gO24nB\s@t$^*o-fBqj4N+/e`>2#RpGIOq4H2U9u!(_\[ajedHp@.(C9ZNr.XI(?dR(\as$(1p3'_!3H8uU>OE/pGI^p,B("Ir?cD<h^kg3D\;p@gmED=FZArF5f2\"JlQ]a7Y65rgV_s5OaJX#BJc;(YE#nNXg6kGkA0&_IY3V=">16ZSnNZ-]5_B9%jjU3OIKKI(Ol8@`(UPuZEl^;%]j97HHl>MfA,.r@p7fl/K5L\,0p1EUjqkB\O)i<&NkJ`MiQk;d]5?t=3\!,FlIVk\i]bP`OHkY2f.k%5SU$GeeoC'D\fT1qZVP)/)j_!dGE0-c]BAp8+Wh@8Y%)oH47akUXQ.sfFfiZmfsg5k?KpeN]R0P/dLMA"FTARSIR-'e.#4naf\:O3eK=T$3/_nZY%)oH47akUXQ.sfFcDP[8+?V1HX6ST$_DR%NPJ2S!]ad3a53ubWW)O5+3p&B]"!OlTa0k%/<Al@n&EVYh\i8a>DbY#XQ.sfFigQEb'I@K6iG@6FZ>]aoBC'a9gl,:%2)V>3Fj/NhQBL84]g5#iZ@B?*iQu]aJ[BLoq+V&EU<)(jO80]]e8`HIcu>D*)$>-'JN7%a?#?p?'fqbY,p6o4k(!*:krPC:SE988IenDZ+'%^:X>=!]"!OlTa0k%/Fk7^cSW`elT"T]?1R6jZ<e@A:d=S;*KHuf^V:T[A#<e!FW>b?0)>-E=g*a1W#p>Y%`d#Ds8R3;7o][jAjd,3a0E,>P#'Dhot%YgqOn/ZE%FfH;kT_-Pf"6rf\YcWB7gHgb4PP&6QTq%JA%L<ldS_$pM-JqP<PrfHCtbg,+h4%bbH0Sbbsi&2?%e>T>)E4_e+CM4n$^pkFVE_U\'a6WLlho]p7BOZ,iii5P$:YZbk<Na"9OS>lLW7Z]2";ltU]iaIg3Lk3A5_7+@[].d_(co^cC+P^_&YXS&p2Edkb<YF3#r$!Q1jhCDD##&h-1d9SnAl2fV,7ldr;j0FA:U>4Q(5RXEtVTlHgVjF"LC8:Eb5%UjgdPA=Vc!9(;p2ta^IC"Fo%`bHu?ML2S;s9j!Pf'?nFEQVdq/f]ADD#>moN\0`P<NQ[T:/b4=Gl-eNig=AQKsl^m=c'C5)'!(7lahF:HoN!NO)"Grn)_OltV0hO6G]S9@%sm;>NkVZIVgUb&+;LS,410NGFjG5ALd`2gF:-%o#6Arg?8:>aeH@GZ]7LAnWd((,o6.j>ukr\OPg2IEG_XS',2RA'I3X<o]Y1H?4F6DnFlRaf!KMo-fCgjO;?h/g[-]CQs:rVl]PIq\2plmG-I!GBEC)oZoYBiKS?;ougXISP*0fRp'ZPog4s]::JQXXF>T#qNdIlCrGpOXoBHjZ`Ngu>%@RHQK%#b_*7Omn`C=HbB8+a]]>bl4^RCSg6kGkA0&_IY3W(doQD>%P4cDr8(ROYH<jYkYHc0Hcp.+MLTKOggNCW9kK8*Vg`pV5AA,.IN7V1m;s9j!PXF#Am-VCFdrT*60(,E^k^bc7MgPm11QQRt3f^mZQ[F+^XOkESe.4]=LLZHBTmu3%%U$iW\*K2Qc^"17\;0pS#O67ZngX4W4NcX!g]Z5SUoO=^o^1fg:D__N:Z"&kV1,r"V/%"J0\/6H23.\smgkr5PN\A/Q.tMFY!/9->L2SiHD@[0lt*8>OAF!Zhl"gc<[[Jh\'aMHI584>T%+AE7UIb#b?3pMT9@<GT0rYVT@M']b&-c3=.`1RX_7;o^!TnSp+k2ZaJWS.8bC4(b&-c3=.`1.Vd*m,eWRV)FUmskR<TAC1;@iK^!>.U;t;Bh)1Ao'04UQj$hNWTmrOt9%/+U%=%d?!rl`;oQe$VXB6WV7O57MkGS9s92F,H2nT3gABPd(geC\o$(71V.oK#5&k+o*2eL+=6O6"d^`RAZ1h;#'Y=%i6BeiCApT<>&nT2QQMdOC3IW;\)jFjGuKX';/`^CCZQWKut?)@'TFN_PM6A)h]kcV?<=SY)0#2SVHM'_bSnD<4sMRG1J\F$>">nT<m/NfCbVZBqiAiDo\1p_i5WIif'<M6aM+GN3Lpc)9!)K@<!DZYr$m<Y+)(F*7kdNH)-34G)=5')cQpq<;s8bSgn5%]2_WV/99+l4r,27n0]Rp6FS_'t^r4lLtU2^=pZ="['-#Sf:K%P2_mX[rb1*o'<nk3\'pbY1=NYXY*(UXE/W$*7%f6p+B:?/bMb\Y]4fpjiY>`QI=C$fh;(GV=T%<#bG_=nKdt=p\mB42-0`_J!RuNA+S,`Wqt@rfUUZ\7^)FWp#.23HV.#P<EF[]i7*b[eoTlN?W'#ViTF675AT<-kc6"V)=&96)TNL5D7c+5d[&Rq3dE4*T=o>292DUWcL:$`9kSA%8b?fe&A2am1cDkn3(FJ&QdP-3I>Q$NZ!T_2g2"".1R4<XBQ$$mT)BtSF5jbfd+Z"`LS7dBp+k2Z4>i/^52GLjWR@*TVc(1uQ]BmL;Uk=a55XK3bcHNO`n;NI*[N]<j>NSt^\//RK2Z:Rn+\H1*q#I8N=AYW&,fZ!MjLs*!k4U8i,]hQqWeGZD^8Ns[pQ;j4h27HM3t;.%YIeBcm,B=%OMX(Air=a`8GDfmcqA"CM9j*:"@XaZ[ArSqu7rM`nnCYE$15Nk@\CWH9Pq&$6u=FIC@k=P;]mjPQXYjH1Hp"5QH[c$KW0!/]^[qr-I=m*O]S2),!NRXJ?WjL+/94$J+d[#7q]=7a):<#fC)\:]8DE".mna+u>X8Vb@26Mq>h=F\:.`ON)VoJ8^Vd'*T<Vh#_=oLEkAZg=<e=XFgDtWMIoR(RmGOd$UF^PneB#jj'Csu_XHGQbp[/St!G1Cm8FI9J?g#-Kn(SCBS=o*I.MQO)F__l`+FJU#3m9R3Uc`VMi?^t4MQ'\h$@uJ%N`TW8'%Sr)E\PK\?/(Nteo^fgT0_j5cf[Yu)6fJ>OE5qZ@V=rpiQH^JbQ<h28R4$CcA"ta)m+=FIAS[b_ME;gE<d>cf>Mc`fcJ,87VosJ!H=MHEYLq:J=k6eO:"E9LkuQ=+p(Y.(q5jG7>!0E3@(*tXC0A6]\<Fa_QbGY"DfmcqA"CM9j*8_PF+[?daY-Ga?h`(;kd+dSrpQlYp?D)"R87T:I-SF/EaE4%fBl)J;=P(;>J]&2lQ#!7P3!31l(9?NYH(;Ta6XZ;''.LDGAQ'n:9X8:Wd'9\Xl+&TFUmskR<TAC1;@jn:W]F(I*0gK'tfO2c9XW?'2P?0k#ZFZkL4,iB=7I*/YjW^.G+)jn2A9I#PjTX4GeNT?b$>_rqj<`e$$O?M^nKEF]\J*P:?<llZaq))e5FkHqG`W7)-sLgfEb=Zg^riD,R!"aerCa>J]&2lQ"ta1@ZXdAU``!X7KmXm6%5F:T!2OY2cYBD2`TI&*?g#`]p*IY>.k(!B9ddfA9;ijBjON,E-HZ])?_P)321X(GXK$4>i-@5QBdGSj^?;YM9W&V*/+Os,["eC@Aa9I]2G3i,+Eq%e;':GS9s1^N)E+:]'\S/YjWk<ePkC-2(@UUGLI]4>i.j03mJr^GPbQq3B^Dc4>022ZHEu1:;>^<^5+*<qe3X>JF9K\/\R:!L!l[5dEqFc5l-(f2uDZt&hXE0J!a^k2mgA>L]pm_2a%[?ZD^N(jTH2l"YQhk5b534irl.['@*9:$Rq(2N[)nYD5qgm6cARF,ARQeXj`;Ic[oZ#F21B"%5R?C@VNdU[]`]Akpq=NFq[+X?gZe<?.9pN0BA,<W:Zh"W3lIP.ehg7Idl46XI?/5e7FBf$dGD#`Fm;QOV.J6=')ctA-o[g?*\amA%NN_bHIoO\bC%nXuDTSeX/4Am-?1e,(KfhUaI2c[e6aD(XCt[Rmne(B4C4GSMlF#^%n$h$>jPCnPJ"pdt1TSp\\5*'l7d5u16Y9\)T'2o>%nJT3:<BEMQ=F43mI88hXcUS^^07h/Z-K&,Hoh4gi9JM'ndQl>$0l>^pt5B.Hi#KYDfDH$<O?AulI?(:0D-LMF7&RrHl=s:]ckR''NB*8Q'OM5m^[Yli/_kZQ28pAn2ILU.q^ukRt$COBrV#.,OKOq^?U)G]sjU!LUFMNBBtl'/Ze@UD_EuX3L["&\(\+?FTj'J41o[o3UEk#7VAfDG\S5Y#Jo^!RZ/o>Y+C&C4/K-5UMA:@kr/FffS<=OjO=,L42!#JYN$Fjmh^?6>"u>m_\[,dl<g=$E<WC\>Z[cj0)n)hXjl:oG7QfI%dXk00CK&;f(4H$rM^Xnc.7&D;/&[O8^.%AH0eZajRTrN)h#,)04UQjK<O:`eRQ%T/@VgcQBc@uoc*5OXRGO*0?c<"e!eanoO/"Iq=K0W:@H<klWl0rV<nLo$S+_DWG`^RNN6ZIGHL/RIlB8fF&_8n3ED$L3]XdbomC.L904\O;SR:#7@Pk63sXr^D1tY^A#$5nlt*8>Gjn^\\pDR9PNDMkf3b@A8dfZYlt-WjIFr]9?##r^NK9m_IG4]"h?,j3lWApDgR6l`T5kh!]Y`4C[E>tUb&Q3QkKTheqAWL1WRS-:X8d'RYi_lq?(EqkG'.hIHg>t/Y\lYsB=jEIfm?0(QI;d;J%Bu-a9*78U!Zq7p+k2Z4>i/^/ulru4SGBFfP5oq)hjXP:!4p3mh9m<`UpdKZCJLA2Z.-3lCc$\,I?.q':*)iKAmp26]RG";NHh:`jN?\rbN>%hSoL[K=alXe&\[Q4Ram@fA:g;0W_V0Q2XlA\<U,p^SRfk292<#6Dg`ed8s!71=eHJp_#br4f2Si5&O,@7G1q!9./HDLL"QMjhs[;oPu]iI1grD*i\rs`NR<>Db@>CWL7Phn)V=L9'qu=a^+2,^N"+nQ9SRWG$si)Y\3okiboj)$O<87j4[_`#O5iC]$_[9#.O/\lF3!]%b@dU=3+ofk3/ilHPu,hSf5Z"ol0^<%lUR3ZFOYp%LgW(5@9"+lok72SstM"qH8(K8uEWaBCYl4JO_3i*h1^WrF.c'VI+0-:hk:KO7@Ci?LK]F)cu-9=o+l"EHTI1$u4'c;u+VmcC,-1]aYGkdGB2P)40U>_([J8=]W^d;-H+[97t&o/e>U:L!3Lt^\1\EUGLI]4>i-VX"fr5H(ViIU3_mMs4'.J>hup2k\j]hO2sb<lhQ\c\$qsbb]Dm[T;/TUlt*8>OAB5[oE3`&FsYVU.CFs$IC9Zs97?FkY+>m[MSAb2]fhHQn!ABTS/Qg`A1qG`6\kIO%Qg1Vo6GX1\BnmX2_OdFeD>LP5L^X#[:Cq#S\nCdkkW(155TiEpZmruE"V[l\'a*Ce0e2c.G#Gc[:Cq#SV);^-IX?i4-Sn^o..;thmh/`;t;Bh)1Ao'04UQ*HqGa/-dg\3kqDWY\'a*Ce0e2c.G#Gc[:Cq#SO8!VHGuXog#c3D`+bU=g%g@TorRd2H;?<p[93gRQ&:DP2>S9D70@X>h-Sp2rhs5NcC])^Gqbk:J!fYO6^R4"qJ+,Y`]=A#[++6>fgh@rA+*02(-dZ4OA(.pQquK&m@kBQ4:t&4j16k8:0XlH/[%a7_,7-!HpE:?O>!5PJ*=r:X!N*1lPt5lVk:j+&&!#DZDj:&j#t._Wbcs,$.F;\Y@Y-?@,pO[J%(ZNa-WET-df-Bg8g`cEP3B.+YH(pTuQ;=?7Nq_QHB9#ID+F6k)a0OnTU<]XEJW0ltRCCIuJ_Y\hbSb>L0/BfdrWS`h5XJf8W[Re@/[$f$.u5D*QYiPitnFB#3U'Df9bQ3b+_u;rbAmY,?c>I8S^#Zi@04Qg8_krhZgY^244[pF!Ur-h^sk$(aP_FM;?>m%%M";=uNjCp2XibnFOX3\QKKY44!Dd`[+FmF3fUnPM.SVY[8(1f`#kE;%k(jkPnUf'L/P_:ch6qd6^@=Z1cL?S0sS=Qf2'3!O0SlI*0;HjLS4_p=\E]UOo1lqjJL&6Uo6i(B1NoLX.NLJ-Z3WoqN+ke4;R39ia4RL!8Qf(iCl3,Y$V.0V:&*AkJ\cKojBe3=s3mHWbgp=?SELO,92d8s!71=eHJ23*sJQd<V8cI726gG`3iRQ]t`<I^<?C*"$kT.fl?GS5EpD7X;$qrZ2)q^hcWX0khMZeH*lm*Aj\QbKl?iGm&+>O%U^5NBLueJ-ZA->/V>;],8j^OsPl9-lbO..[5f<3iQg,MHAJ208f<qnq<X';'&]T5g4Bd8s!71=eHJ23+RcOu<+YBQ/+?@nZQQY7PW$^=57C8b?.r_`s'(paJVSGitLtj479*r,.qZPNCDmb),j$NiJM@V&a_6&Uq`Lj4^T\T8N0-Xj!i$e2P*WR`(!51pX1O%QqVJZF?F=5OA(*ATRLoP.cfs%Sr)ECoqJu*#pq]HH+4m9<eGhc^3;ocfF^Gd:XsiQF<-'5'Gl@;q)Llr4]G:hFdZ`[W$bRn2(%_f4KI1<"/Ecc%#DJc/Pqa1N'sJ#-E&qe)"`sE;%khpP6H=]PNVB>-aL"cJbaB>^ak!Y'ZeUbr/<-T=#FVqm0CUj#2Pg='OEAC39hgh,q6?S(A_RTldjK:4En)G378QeX^?b<LtMnphb*Ka4Y<4Xk73-mAdYGQ:oI,qlcTlFI&AUV4S$kfD3[CE@H=L>/7I-=6jr$a4]Ek42E`[3Z2;JC-O5XfA*D=mB,R5[?oI"c.+7F3_IHl'ZRhl%P*H_o.6a32\2mup7MqmdrfGEFYPpeS\nCdq"V1<X9J<>=YKgI-dcR>5)idFC%/pXe_Qf<MD5NcUIKan)WeD7eB^uEs#,5ig&&[n`k))q=%i6BeiCAmT>j*H9^`FWIp5+=afVT_jjV6rQjBJ%EK,#%YNY-tf7'V@nnE\uUW'a05Pf-:?H,$]*qCbMjbbG5pRs_*ZFYIq0aOnR^WgqkSZ%d,s"*a3ls!6r"W&*UND"[TeWN]O2Yq11?H,#2q34S@GnTebqO(^$NW-qo5+.R0\^'E>-$pNq*9:$RO\^Ip?b)0q`hbkeP#&X6kc6"V)=&:';_mkgqIP-;2L:pp:T!2OXu#oha^2tJ#PjTX4GeN8:AXiT2NOF.LU8Ee>LPq;H1S-rUXseOLtl6OV.SUiJ`i1l\^'E>-$pNq*9:$RnKdsR:HgqsneL]U<D1KuFadse]n-SRQ[Hqu7UIb#b?3pMT9>$YdB@+F?2^j;F5uoMbC+t>W+e0BH.Mf9NO)*OQTX)R[XEGr.-o=FFhV"6bE8g.T6!M0"l<X*4b$k3Im1cQQL&1aF*MF>+'u"hb`c_3:HscHpRfDtrp%MLrd7o,Ch`&NX'I2tDgK"VW=Sa^6(^R@FE=7DqeXjQ%AWso$9ZqsH@G$_iYZS;De#kiG\S3]?at\8dBDJf[m$G(4!2bGRsh4L8!s/%NL144OABN@]DBSA@T.h@OAEEI[t;(DeiCgLAE$2QCS6&9[5GVEl!BVbjO<Q6bPJbpo\Wf&kE8WOcKM;THPu,hjARi(,l2Y055fq9g+t^aZ4G!g1EDE\k9oE@eXNnUZ[CIAq3:3(^07h/Z-GX!,nj(K?aD]JqR>J/"#o,6G;\,T5+PttcUP,0Q@-8H5<"Z&4"Kf*ngW0.IC3T=A"A7"8g^,t^K,F;o'LXB@h9;c4"h78A[AEh"D8,Qfh==j/6]aDDN.ucRroQIg<WguS3-Qsn-47*q42_d@n'fWfumL\nC0FD^2O6OU0e_]YOp:ePRAJEcMP9#4nPb0528ptjZ90?QL&1aF-'2>`09E:(%WsAS;fbKmF19AhTr=l@J"p1_mAE&Xu#oha^2tJ#PjTX4GeNT?b)/&kN\6[q3:3(^07h/Z-GX!,nj(K?fkF-UY!'QA4f&I3hrmElt*8>OAF!:PN\A/Q.tMFY!/8::V"d7X!N*1lQ"ta1@ZXdAU``!HC_*4VW:[Y1\tk.?H,#2q34Q8M1.TO^M`AQl$p1dXp1N0c_K+foY(M'E;$F/DVmPlmAG;YP4h7,jZ90?QL&1aF-'2>`09E:,P17#PLcA2EmN:l3aAaUYOc8AdFCM'V^IX'\^'E>-$pNq*9:$RnKdt=I'K;l+;fL>giN/@g%OML.pIi,\_>/Mj(@2#G*`$,?IsBoC&@JjdLAEQoK'0,^ZE]KmWPS#;GEHP]"HS0p=3Y'2fA>_F@]Z\,MHAJaY'2YNP8T%Qa+ipWH%QXi<l/E^Ok(qg"14]>5`@'21*rpjUT>^K_dm!%PNO/;M3#mBJk+;G,`LFF^@'tV4ib7G%nVSla(U;g1S6Q6Q5,\TB&qR1\tk.?H,#2q34Q8M1/a$:KR9NlZIWZ;Gu.`]J?k60sgGH]/m01oK$p:VnpAoa!_dV`j6Y`PJb*$S:&J%7UIb#b?3pMT9>$YdBDY%87/^X(&Y=Ylp^aBHb,Ys?CEcYe*"sheV&PJluVNV8$DO,!k9VMQ=e2"&00n<WPbcbLs,S_9^0p\HHpX">]',`P.cfs%Sr(Zk6kA\,l1N/N./4lGZTs>/t^-(Ng8VGhMlN-kN:72bM_T,?<I:&jO5=UE7sEPX6n*.62a&bo[T,<N-,X$.@GDnrOP%^2Fc(ho'&sFn`>W'FEs21]JW0^o@rj#oKKGg7nZ$/CDP!hngW0.IC3T=A"A7"8g^,t^K/f[l*Yp75/4[?G3j7qT.hJmB.WGYg2_RH_=h9]=n\QO\k:_Df,j9tbij1U?N?Q_\QNr1_\(C)>``rtj,KOVq#%79i<ekQk=jLQeOEmtfumL\nC0FD^2O6OU0j8409c-\F)TdrFads0.G+R@Vd*m,eWRV)FUmskR<TACP#$E9Ik]L,o$DM3T/%^bEh1TZ9D1-l3QS+/i^rdcr5rmK3`hqIaerBVo[T,<N-,X$.@GDnrA)-.)njPI-W:9@.I?TNB@tat]o7(D:Q=DTq[")6%0#+4(@s&cdHb%c1:=T_^S0[P8,6fnci<FYo0)?sTAOTKmV9jM`]Ak[o-mq^:J/>#-hia!8S%I>m`P8ipiK$a)2^Y6VoJ6G,p**>>52U:chGh4h'jD[bZTFAldF)Xqap%%H2l3-o_80S4uZ./GCo:s>mIh)lI@W<+03rYHpo-'0R>m+AQi&/pB;V2noK%:TD%\cnNW^W#`hr-5<a@"Abd5DI6OUU\9*cHp@kNI(RL`&Z<(,"W.1SoF$Dbl6079;*)!0t$.n"0Y3s'f=rN`<Iekhhn$.BA:1<$QqY<4G9t)eU=PC(YqXaGW)M:13RgmY#4(QoMc,S9T0(7##qss5S2nJ[E:J\9$-D'W;geHJb?lVg'0?^77C7,M)K$#_GcI!p5FID]#[g*j2GGmb(=:7FENNG\"l.;c\eR.#AjO7$Y_l6k_$RtrmN8pqgf7o2YF@EM@GckU5g^>UDABh#:H]m<<UK5\U9U;aNkta<mQ?mmH+!)f%SmjRL\uWK'Ra8f0Y$-7f?ZE81\c3^caUIoqatBI(cW@!JWRB).%YsXicto][jWV7c`(]uk5Ui57X1XF\cbVRnPof@3bGUp'N<=o^6"QD1hrja2Ygo<1A(n)5>2M[%eQq7bU$K5o5sBF$GngLTK5mE<TBrK5Xrd#GLKZmZ]qD[SkjS+/bWIDJXu<\(1YrbOYh@Q4:<]WbNf@N?H@B*=:>K#Y7D\.p*,">2ca<n1HU250dGO,Ram5FrQ>ncQK!WF2]('EGk_kp9p1gq7]?[^nF3XF'NX]FhH@DB>3.._$*/roWc"$_-48/IJO.U3KGE66gHU250dGO-;kG<pF]qa2#%m7ehQ^Z7:3)7Sn-U--E)':]j$S&cIr][ML:H)RgTC0m?UXsPtKN%ZBluOk@?ZAuUB[-#)ra0Z54^?U.NVJN+^!Ya#eL+:jf5i>#;u#DO1CN4[]DDO!E<#Zee),(<pR*&-CghHZgrSbEp$KMap]'#<J"Kf79T<B)SIeQT:ET&UZnm`I2rrFP4+H\0RNcBOfBf_WT@K7fF1n"9s4g(nT3%XYNF's0OAA1(k?o9>YKa!8cD<bnb,<8uO\]b;s3GQSpNcGReEHS\&)e3:Ih'IQp6'h"B@"n0QdKi!i%-\(4&e,DHJkrt^PDR`gdZdcJ$;,7CIQLn2fso(lhM6AT3nGn4UQHp`Lhd&N4h$>DXJD?EOg(1LL#n@k0piX0BBf-\'a*r5DB,ik7.0fE[,cH]q3s^&%H$I+J57X2].JLcbVT\]#ppP5Bl2;1q[kl2Z!=K[m$]3AM/maqQ8j,T(0joPu2YSaRjT'rFalOLRW987^(uE2,D,Y!tVa=q5F<5N+8r]HlDpqoYf&)[(i%@BA%J(^l<Qjgh6?RXK0NS?d@DHDPOtmJ(?eJh$f@@STe*2l<._3>Wpp6e;*q:bin`T83V_@WW*rsA#u;MH>NVpe3a`&Q?+#DID1s4Q=#+WT3'$&<SkEX%W%_35!@*Qp"W)%KbLHc*/nC/[li;IJ*<**jkN=TT0FWo:*$s%E<eDrO\a:YH9F3M:Z4_,56p3clR`Y@efXbLD)o)QhrcpC@Hj,-K3ngHE"A:0aet1:]q-1bVf3jQT7_-Bop,i0lOSF7[[c+9n+40^l"2h9Hk2Q<*Qt@95JuU7kk3a!HgSF_Jp[nul9>O6)!`aap=:>^jD?oddGO+[0lZs/Dd6R[_"dYN9,gMu`B>Y]fPa]#>`7"qq%UTO1u#>4oloT&AQ.4R'0<&jF"iWZhXY&mrLm$DQ?+#DI6Og[huh5ANRH-:NF'rEE@6#foq-kVN:iA>j.D[ph]I1,D)o)QhrfXgN'CM59)J]BogZ.JhRJc^RJP7G36(g:Vt]DW59/^;3OdDnkLCqYUXsR*ge$?rrT@Q.A+D&nqN0T!T4)Bu7m:MD,G1RMS`J&FIh'IQG4kgumJck2+--.dR/ahlp$g;rqr]3eIHo;u?e7NWQhGNp*@.74-(gdPS`J&FIh'IQ-D*&f$U;%o-VkQ45p,oeM3!%1.X.%7;u\ipa4Sr:VmlQ\>CX`QOh+/Hj0FhDR?C@lj\GAYl9>O6(m@ahh>MJ]j)`5AjAVr:drW'`]UAWB_)THq;eYoM5#p6@3W9E2Uc%Z!pXL4,OuH>>3>ffheb>uNqqkV-aPl9m>(-@_ZNJ-05!NUF5!>5oad]:0*/nB$5)"/CjAWJB&,DG=q=Iq[,]BRZF"iV/q%VQ==]`FX&DktC@e(sH+92<(WSC)%9`=-^*+SOg[-K!0DK\C+]n_!XP^Id0GEOm`s#Cq:R!a4iS_buY#MiDhEB&rinbZU7HNX)..J`U@mNc_Jrc9cR1&:H\,J@A$&*bF4<jlsi-]q2mP#'Ec:@`#^56p3cP>?O=MAtpYaF!C6hH:9XC&d6mVW?3I\Wa[oqTlu;`oPSiRc8)>_:fm:",X4Yfb:cHdm*-k(@inQo'*^?8`!/>k?o9>nnAV/EN.V^eO7oUh0-2O0);kqngRN.l+,S@hG!n2?lW\IBb*pXWAine?,p:'Z-aT%RB-5.VbG41kAhqq1\IAmEK4Z(-Sp?'it;qsW%4l,kX<8OA-k8<b=;tB1`ge$?rrT@Q.A+F=E9l[0)q=MHGWd!TEOiXG:P#'Ec:@`#^56p3cP>@5si]Vc6.J)er8KHZ;l?qYkXs9R1bFR_=e:.tJ0d`O`#((iBo5OSN&l)4JT5ktJoN^f0Dl3MT0TIm`Pa>LL\`k1T$fe4t;U9!<:UuL5H7jE)2cK`:(rr"k$LQp'dE/:k7m9)&43<tkru?u-9Kn/RnnA0GIL07CAWqLf/pEI;;u\ipa-_5]mGu_9G5W%unFra#VbG41kAhqq1\IAmEKcqZc98j6fY5!>5oad]:0*/nB$5)"1N.9#dd;tB1`ge$?rrT@Q.A+D(UP>@U0:RRAAcfIpmB'MSciu!tUTq-SRP^LW<I!RDhOuH>>3>ff(Hj]6^bbt*tkt"3454[s;ge$?rrT@Q.@oqQ[hX5l3rS_aoP_?VW8j6fY5!>5oad]:0*/nB$537Jn0*?@9e;^*L15^QF<f*$MPJ!=[cbVT\Y.d-6h>c@._p\:-DRsD%qrZ2)q^hcWX0p2Ai#>8eq<.d4qrdS>LVNl_rqXk#puaT+=s_JR:@`#^56p3cP>CGc1)p3q`5>K[N-DEb0Q&I5U[!`9ces9D.AqO(0U$H'Gr,,cK5liUI=HRTs1S)\REnoS/8['-I-eY^VbgIUn<s3@Z`9HXWD)/BrT@Q.A+D'Sfpbd(T1uDAa'bMA)o$6mILF.AT@,rhad]:0*/nB$5,Bcb5<iFjTr,Y9q6["H0UC&EY8pZrF@]R*B'MSciu!tUkt3BMf)I5'Hj[nFo;RO<LX[SfVZ(WjN\U?ohTUEbpWq`HM=*-JmeZn=j_i9!g'rM/[q7Q9d:tY+:[*t0jNZ2(%`U4MT@1LR8$2e46D,#f78u=D+F,d9T7_-Baf"d7s&&*sLCfPC)2Nn*c.%4Q`\Ag469B>/\DhHWU=("2aIB1/*/nB$5)"1Fl@@uG'[.f_;oYOMGr,,cK5ljlVpOjKF`kk"p@&kl]ku\n5'oEJ=njYHaIB1/*/nB$5)"0JlKU2$gQK<Ui]k_K>rK!)ZZP-2rL,>Bqog[0Z]WLEhr%KNbAbrYDl3MT0TIm`'\[,uX-s`*ZbnQmeML1W>.dYkl%2jK`!\5dJZ)B$9`=-^*+SOg[*)EMbKh/p?ge?+_*6&g.p%c=DXXh_*PRW%Gir'_$MDN1WW*rs@n](?G+%WqoK0=Y+%hj5hA^K.B.WFqX@o$QeXZIFhKdY16@JE:l9>O6(m@ah?)G1?U?1[[F7\WFXYl]Q[)77'o;W[^qW,oNIh'IQ-D*W:9QbJ;T*?B!b,8`pk>a;FouW]&ru?u-9Kn/RRHgg7QYHINP25RKg[j[rFL,R0pPJdXGp,K#IYi8T25=!?]UAWB_)THq;eW)3a@&2?1\JkZWW*rs@n](?G3XrYe2'6dT=gTgcbVT\jAT`iY/j!odkg[=S#QE-N+5OFKm)a=9[kj];kL^jqTlu;`oL'3Vln*/4ju4[ad]:0*/nB$5)"1FMG2MU4]@ucRJP7G36(#XBWS6p9!TouW]&ru?u-9Kn/RlAA9b1He[/]UAWB_)THq;eW)3a@&2?1\JkZWW*rs@n](?G3XrYe2'6dT=gTgcbVT\jAT`iY/j!odkg[=S#QE-N+5OFKm)a=9[kj];kL^jqTlu;`oL'3Vln*/4ju4[ad]:0*/nB$5)"1FMG2MU4]@ucRJP7G36(#XBWS6p9!TouW]&ru?u-9Kn/RlAA9b1He[/]UAWB_)THq;eW)3a@&2?1\JkZWW*rs@n](?G3XrYe2'6dT=gTgcbVT\jATad!T5S+0DY)Soq-kVN*Uj]HFs3jo`q-Kek(BU=eBahN\U>DJ19e05bG.(3>ff(Hj[ZRFV:?Cf&n$3@n]&i@*1M:cmS.#%`U4MT)p]XSHS/?of39;(m@_rR'KHgoZ?s"K5ljlVZ9Cn-NX'SIEoYg`oL%uVQ>s]IBl'"?lW\I.0*;t8Us!-T5u]H1&2N6.I/6ET<-@!(rr"k$G_mK&ti%Ok8]Fj9KiVfauTjU-gPg``\Ag4!\e2V"R)'B3="R]P>;4HZ;(JnanhN[EK!)-NC!W$>TcG;K[jAUS=5-WqnAIApj)No_mN*Uj]HFs3jo`l>cJ(Bf*W$@o9mAqHk(rr"k$?1rO9"f_\ks(b*5RV?u%`U4MT)ouWT2P-ml1CVJo*b\(=@7*_N\U>Di#)9SHL`N3c5MjuEK!6<0Ye<<[ZG1M`pN+5OF"ZYY9I/<egF_2SFrEIRtfNPq;Hi(.E#5Sp_Hj[6eL?)_^A+D(a0fOc\kp]53T6lIRO*b*3q/2;+CJMRDHd@FLq%RLT%EZFG`oL'KA$4*=6(7]L@e6AFdLP/oZQ1sqBha5rcDt6AS\<OXBn&&0_t*-DI1?DL_rOahSM_Ytiu!tU!KMF`T>klPAn,PajhL--ZKpkBV[0FafNu+.frL%PVa*=Z8.NWo-D(>Zo5$TBmJ1-Rh0&FW#^OhN0.!4lmAqHk(rr"k$?/]=q/gAXc(DCSg6,7lZTk$WQef9<Hj[6eL?)_^A+D(a1&^:a?#?_cHckNLX5@3_3Sf7mDdLUMjAV_B2'`Fe(m@_rNk$=n"F4j&E\)&i0qXaq.]qsiiI&5iJ,'dL_]"\jEK!6<mgH_JX?62d[kd^Ni/Y&7Jc&uX@>N27%MBDX@V=hUcYN\)2$or?O"CA0>,T*"D]+ZUC[R!]6[bl+0Me`a>@aJV9bCIerT0d`Lo*7J+)]^;IZ%ZjJ;G1M`pN+5OF"ZSsgUn2r@['PMJ?lW\I.DR\/.J;b#TUdqc#NHYb:B?K<:T5_6!q!'43>ff(HjXhOHqHQt'PM+gah]sVjAUS=jAY?cVa*=Z8.NWo-D(>Zo7;>hq03)E%BL^5(rt:ZpSYLthckS\EIE4`8i?DYBP.dr_)THq;h/B=;sMK&5W`aP%`U4MT)ouWT2P.<^HVmj=[R3`N\U>Di#)9SHL`N3c5MjuEK!6<0Ye<<[ZG1M`pN+5OF"ZSt8V4N&A['PMJ?lW\I.DRZdk0mhRqAseI74h_jlD@;U0/#1E?dSoM'PM"dah]sVjAUS=L<-:A5Frq@2KrKi_+/Csl:Gp^M0oZ;Z\IOK*+SOg^bO$r2iV=R:[:WF,VD=2gMCVIbO!mCDQE`(I^c1US,8GQV:89%[El!qp"Gc"#9+3/NRbp>h,s&sHjV^9L?)_^@oqQ[hX5l3r;jpGN*<95BGPc'_.Ro";H#mAS'<S#hKAPgNQW>c2-B^$o@d]D\$;ep/U`^VJTfV+*/nB$4p<oX1FI)&Ra'Yh'2W9<XP^SNln/#iB`E%(V5=;O5=;A0SU:c,`>XnlEK!6<"YB54m0m,PY0DQA>1q-dX0n]EP.76Z^7AMoWhm_:mElF#6EM4*o`cmNU"%`U4MT)p!2'6%!i;%Q/TNt%+QqPd#5ET<$M/]aj1de'e<]%SJ+'Guif,R<?HP>;4>kq/OIk6eqp2'.OYRZBO_ZXh4V]0=,t:P!]?O;s3h9KiV>-;J3[cS:u#.>6Z?"9*<%Al^"N,;Unn92XsM_MZfU*rV=lhYWOs1H5*SgO8j3F4=[R3`N\U>Di0a@W6<<Y+E$oEl%`U4MT)ouWT>"8%!H)k@HjV\KAI\H#S#blHde<G#XZsV254U/Q54U/LCm6efP^Yg8rJAXo!6<0Ye<<[ZG,),^U\+.,mS?M?"ZSt8V4N&AZl<Qc)5Ws$EIVHg.DR\/.J;b#T\V#3a=."7MYe'N:B?L?.\A=TF0']ng0*7*rhs5N'CYGNK-d,km7(5G7d9)7gn0s]$?45LO_<tRn%1+Kn^;SqP%J[_krTu+_beLR5eBnEOAYlM'_`t%T)ougbAfarVn)9RO^:XFdmJ:9'l5>t0f[SIlcj$C%gfBt^<C/Xb=8?J9=M1ua1/UT4*(T$'PKGJ)DXoLTAojgjAUS=NodcR8m:&QeC8*jbC9bP"FKQO-b-tMEoOtIlk<Uj:XJImjAV`--u6mPrHsM"'9c2mNX8To@m2J%[FodR=2p#&SPN>5IOq)q?cR>4nd=q:cu,(*A<_O,`VkY8VZ=cUq/gA[g[)8Zfl!iFD:V8BW$%_8p1JNWTH3k#0_lDr2p*$o8jAs-rl!krJ7ISd=pc]C>HoS?G4VY<R4_%'p$LP):KP0A8Nm:j(hF-oV4UP'Iq%st^bKcQVot-=C\E_AQVRWkUT>W6o^aO":J<qU3%"Vne'GsKHb<QsLL!Eh-`W$"EBC!a8uZlW'rAf@(DYiIqX(+;YE#RP.F;ss2.Vr#5/mJWaeo-Zh!h"A!Z0[hiGQAW$FCa`%2l"7:N:knngV@/_aU@k>]H*"]^t\Ccu,(*A<_O,`VkY8VZ=brR$)]OHj[5"AITNRT20HV@e(t`1%HddjAV`--u6mPrHsM"'9c2mNfd,:-_CJ-7Ti)Jl/u"#T9t!5E/]0:4o#e*2p*$o8jAs-rl!krJ7J#kVtK6,gT/Yhr>e"6f1CbsJUi+TZl<Qc)5Ws$EIVHg.DR\:`2-CYErY7&T!=p"H7o"-BK+'P1.jd'ir6mW;h/@i8S[p>^u`S)/^'-irq1Ve^Us>fjg#!3*N"VD>^k%'E/N>V9[=Yb`FiYf)\8*-JTdfi+f"]$.IKu*4p<oXRJUT'De?ce#B&tE\Zp7Bb'[BBXr<cgV#DhRpYd1a.F;ss2.Vr#5/mJWaeo-ZCjoE076]Nid=I;MI4H>dOpt&-FRSJT;]rd%)UdBodT_3Ij8Qugb,<!-,`ReRfH5XWC4<^8q7EL]ENJ;$`R6--:Z^'UbHJCUL[ln`:@`*/q<lS>=7gp333g_2qn^:so?Q3<0'Wt_!L9;R`EW&ue&EfI/"cel@VJPE4@VL<ZJ+sa)t,e8Kq:1a4_jYtH+C1l95.nr<UdHodp)c%gL$7p9abV,o54.#>j%[R['ISrSX<2cSa;#W$Lb>?+\R/W"g%rHf<`+m3d&*3^<\+V\lc]D1TQqs%o6qh2Y*b."Y,"B;RtPSMA]8I>AJD_Pcl-YV_$<Ge9&lST@F$rNN8&?mLZ"no_%d9_'*fR=5,0@/2\1:0Y!iq%p,sr5p,n:hWONthU2n7LO@6!1Yr`a=NO__bBJG"J#C]U`oWegUFQ!kFWfPCk4%<EMr^oDi$f\$TIU/-[TadG;a,mOH6f+XJ+P\S3'3pX<.&'_CL&LKrJ@<5hRpCe/*0][<?6gee!3,5m*PCLlKQ$aOAFhh:4MNabbq9[Ydl(JgYSN+lXK\Xc`VZ,r(0FA;`=A'2>c39l>:L[dZn,^?TeBbkq`Rl-i"H_83VIEkoDbW3HEL#=\X%uf]T0/NI*m./N$b]ISJj(b?#4i;rgmBaf"Vp(Zj+1P>@+&/MB=Z.Xe6po-r4p>h8^SpNYK]r;I[t+J8W^r#0tE.9bf5#N.'%.J;b#Gc,UIPSn$AH+]cUgE).<eLf8;]@-Z7h/_/,U8rL81cp;]SCEL-Yg7(]O6`o4^prH(lH,sn>,rfXp$8'D:@$Jr*q/8CTe&,TpFI=b\UUR\X1LNDIl_fHrTW_KpXUEo>]Dq:^ABAWs&4Li:<^T(+#):4I+ERM:-Jj8NO":$hTn0=m`h5tbE5RR,+eoi[/0Y@_9SnEm?qPS%ZMiA4^89+JU@g3)eBJ(]Uuh,l0@_kY-tc$A9EZ*Zd\:n=-qd#pLgn5qMk5G%m^((0MB`YmruOo@i7a"J,aFSVd!b?beC^E@<Ko@kZSim=8TEgbA@(HnC?"XooW#fetmLno;^-g-o^>ZI]eu8]Q*W6GlOFMj#[g"G?9*=r'"KKh!:sXSS.D%eo:gB"V7/3s3gLSRQb=ja6E9o785=m^KBkj*0c%,6'pRpaJUcg'UEL.!E5cKSB(LeBKiQu.F%$on]o%7:OuU3/YC&;lQbAkGZY<H2-m6H$qp.?j-mY;ceaFY2u]5X5F;*!HpqCZUt"ttQI<dXN7.OBqmdS5=0&/3%nhU54/>i/bC*F[:OLU=rf>t%/"D&cRfe!)l1TG9"2M6<>a.Ef;=7B(DP+%Y\%4`t,5A`50l=?4n'fp?=8Bq8$u>Q[?+D[Rr(hV6h/&mos6>p.^cQtSf7RR=A$q(6q=K/3^Spqa5(4"amf;jY',RK@FZu@5.I@f8&0J2?=(PiE[^k(faoe(-aJTI4;]Q_@2_P+ID_EuR\Ks6):0,G_]IKO#G/^km/diJdCTefU!'I3hHlD1^;=`u<6<KCH):u,A])48J5X&I3o%c8eUi]R`i,,QWp\8rcs65$0Pttm+?2JXolJs:9dLG,#B<=fm!rZ84[ijRFmSIYDooJY:kr[YbcF`Z3cQnp)qhiLnN9aS0%GD-^fke3290CVq:;^A:2Ro]`(SOnIAYkYfA+D)<6E<>"?i<$'jQT2)J*Fra7X8d$V2Op/k&*?Ce,&gkcek&GI<lKOKi(n)>sFj)U$F?21\m)TqmjiIoE6":&+:I`p7_+m/5)bN28R^lI/7LC=*%#K1tZX_qN_/$2%m&M]:'^T/j/@tEei(S5.q68_C-pOd)4CCXuS0Lq%Va(mi0aqjfJja\hft]ri@b4WoX8g4EbXYnc$_4QsJNj:X;m=gAZHoX@r$.JKIltXfK_I6^(<F2p,><n?k3I`_FG<_rfS<9@3=si/`4hgH=*E_cr)*de;S9B?@%Oa2k1.)s+1.ppqiF#+oLV$@difcW]0VI;6=J@5FP,1`5Slq)R]Bc3Lt`[f"3=q]QdK",naZ:r:gS5)%C33ln4k_Io"'[1'RVZ*`9Vht:W]4F?=m><3jQC8LSeOMgh[mcO?H36Rl=UKp[Y_l&m`me.$)H-J>#Y+I1Kd7O-J7eE7XNKa*U4tZ0t?p:\Wqdr%JCbosA[1W5!_u>'S(uYFd$W,9toB;&SGuh8fqpfO9]"5S'OAB:QbKj+aJ#o0iQfcbcT.XH::P6"*jO;X$*j.[g.Y##XT5p;H2))VlVs!3^ROu^B_>a+Sr_-We8oGr\4u?U%BC!fTZ[4PW/bM-V=R,(N_lL7^H?cD.X*sKeK@^I]MU_lFoinJ4C&ObB*#l!-EDPT#D_BQ0PGi*:EX2E)_`XoLdHu@TDf2O7E-)'(NU`L[Z'313%X5,U-#1okSNh;0jAV^@]N,/2P62>aeVts=e('/Wk&NALh/sI5jAT6,;?N]K($fVCloMAXJ)eOY-f*QUq(f;N*GMq9,rKUe25cX6J\>fMeSL6AXt[]$B#h&lN#/bL/Yt7P2o]J`*EZK6B04UJ9?C*_mG@#'E0GqQpRWQgG&M0dr]t6UWZ:aH:Zk:Y$uPSJ]XkJ9?5S-k?QM+todq-K:O;Bm%U@)VX/eC_[s>.$I=_R]o6T]<CL-JeIVscuN06sq+*OR;MWra_Z[5bh_07DR46<8>n>$7X=9!XS[d;8:-UuM[I!Xf&*K,B3cb:=g.:huea8Y2#\<rf==u)]^o'(2Xcem'8eXH=3rTID?iOa*<_eeN2fM[@<cC`)IES?E1W7?&`'5+Y8_/>O0WZQbtX=hd_iM1%r-!oO@m!iF'l5=Atg==rM`M;]`pPqCV2Z'rLB2'Ik4TR_=i!Q7'WV3`X)GdKB]>cdYB^U0Vf"<ng^L$oOr[d`'`SciHPLdCCm(2If4K3l^HqsNfeQ&2V[]E1t[k.8V4YYNug.9Kb?b+n:R]SSac.-Yp4-j`$G'2Ka;Yur=XBoUTqm$a/e#iIklG3WnR8`co"YH<LBm5PTn74(5N(Wu3%U@h,q=".a/'hPZa^$8G?!>KQn)?nJm./j*s-qcN]Gt.6]Pepb_Qu_";k=g"GY())rm:>`HlAN'=$GHQMWGpqY'RW_4\of8n6K7aIp@Hg]CF5,o@)C<J(AZ.l9;O+V;:htI3`dug#o=><u>LDH!]:dWKhYqj.Nb*#\ZLPMq_K"G4iI)4c.K+[pM11C#e&FQC=r=8I^oc`lT?5QM.M#-P!A1$El_O2lPo=#?MaR:3g1$@u,O/;t1rj"M<K^:T(mh:BB`*A?c)G47Xh%o@/CCN&%:pguk;*p\FGonuFaVNUaJia0';b*jY.hZLQI$IQ,8Z&&*k70!u@:Ect"<4rbLU:MQP5]"EF"9Y\49oq.H=l142umB\_F/q(BuV]K)OPW@iNEK>Ske77Rg".+3(.Ia,;8noR2lIVm22qnWWN;N>@;T^[Up#$1PbULkrH_el`a$'jk!)I@&jK*_I[o;nWlt5.PCKdst*WB'&\E+Y>5G\O44S@VNUWb.pkrkVABoR$@T%$#5op9JRF6dlDo%/!`9Tj+OH'bF8D5V!JX5(4#LO/N*-Tq([$DYfo$gBh8;d+ED"/@ApIQIG7FSX-aI[3%LZM\3OltQckgK+oegpl$gdNPHi^6>H9>[`jWAMLiQHqFcBC1).a+`90!#$Wu)$!OK:Clb,r\T-4ENSVn#;\-#bb+,aMhEsK'KdS`3])!*YHm1T*D7N#\5!=(Hb'[CMprdsJ_%fG-;rb$6m6/5Ug>u7:GZ"X=Mgl%VFkp9ir8#-[R:B=oFP54@rkFu$*aE-<3H\^Ulm*EkdZ+*E4dAgbidnlE);m'<0SK[78dE?t//t[<=P*9jhRM9jqK?35,G2gV7[[2uV>+,+j(sM8`ksB%XfbNt[B&G3_8b0[onSdC)L-"noq]dihhmUnJUtch/D(Rt\19N+>\qadmnXJds5fhuCP(>2R8^_`rRK^B>H$4]gA-V]aQCKPcT_/h(@in.]&9R!r8[@g`IG(HoA*$bmaBFFj7eX5+)3^"\f14UFSM=gp!s8VNA@CiULK`GK8$\<Kpnmup4Li%jO<tF.sie=EgS430KRN)l?V[2'h4TiV4RlCJ(?RWj6G6m(2EF)J]H?Pq/l4`S3]6%]p2ARb``q^S`^UX4S@V>UWf]C_/j\,c"sn8<5"2R5@&,5535q=eA191O/V6@#?MaR:-G1E%mR9jTBaRsV=A,%T%(R>4HHH(W<ZKAAPOfZk3SF<QbW4iZ^![TIk<R7PKWo+caC?te@h<1Z`dGS=Pf%^Ng4o@T5p;H2)%);,O0R>_%fG-;k=g"OABTL8I^X(o8%^aH>nR8k*5&J4lfOFGZ"X=X8E-seR--RY\%4Ko0k5bj/E8b(hHHF<:;!&d__1d(gZ7pk`j,RHoa;a4h/?WF3:5'&,DG*T%(R>2ZNc3jgSi+^4-a5Y.n<fhDf:oZfTH\m5edg-bhe:i!Q7'.1>0!jAT6,;?N[u%<OlS?/9dO?tH\7!k[,Vji1S]*:)ubGj<*[SsiTm/)IH-T3d1W5sD-!-T*ThqKt@$ZnW&:ZX\XV"q0d0,;&_u^2^kLp#$1<bc0K`*mUYoY)r%KmX0;H:MJcZ%?)q=L"Opoc*kPB*<&@sgjH^"b[qAKWL#a?i!L"?W=_?ZPts']q/)gg-T*Th"!KMr<rL%,"no%H`LiQ9[_nH0*aE-lHobIi=+@#+g\BT&Zfb,0&Y:&Lfm[ng",EuOo5sOP/Ng"`dIj#*O0pO2?H5tTXtY/c?!VU5V0I./qM"-jVaGksYC8ORVmPrh#"BCkL^uo*eK7D5S(c)CbO*KEe8Hm\VQtuKe4ZBZE.u^2kuetk(S]GESs<+;)o%2V8deF0@!%u1eFV1B/%d7%/q6jqGWss]l"/5e7H@BNGZ"X=o/rb=V]K+%4o'2B<B78pXo>Tqo@)7`j\poo8I^X(o8%^aH>nR.k1&am_s`odOQgL6qdS0sj`bo#6tc0\5+RZd=o<d:h$n8^.MN(`QI$r%r\rFTF@NH[;</gHM/=qcNhTBD0ucf&j\mr!=&Q#KDC,+CYU#jX%@TMZf"9\MDXXXBiet^oT;2/*Xr!U%qdQ)7q"_r-PST7^diD3M.]l`TqggKCVa0_#,N@c_\3n0s<;%W*jfHsi3oj5bOACGaWCOnKVf7D<c`):Ih+Xg5731qJB;j<Fmt1"2>5tP.OF9t#p's)i6_?&!O&S9P6fmK14IIg"lC@0HII\h"W74*$K(\>OJ$NauB4X4i`=p\]S98)eK0+Gr(n53P#YcJaVju-!pBTV+C$50<`GQr459OFAo4#,_m%50VrM5qMHUf[5Rq^bB2V<76L]$7McKb4)4W)(;oF,HI#Yh#C9'c!fK1ZUFDDQ@9McAEVVnpC$r]bru,-Vk#%ipZMDuAsB3o("=H8(M,/:I20]a.=u5333<)X(I(50`iTqe7=J*Y*3MLXLPgSG$COB:%*32F,fFnO/Q)X(U`eBF=;ZB;j<Fn+K)sqhomg+)Q2X4<u!3eq6B]l/nriX*9$RGiRX#ns@hi2F,fF;<=#+X&&%MBF=;ZB;j<Fn+*/$PH?$SF0jU+)/ueXj'm=O50]-AT)u^Y9;_/BV2>J,^G>IbQrlm/2:/m5Skjk0s"!4-lZK]20Cjb.GK::pl>Yg/j5q?@j7GdjK:-knE-4Z7jU@CmkZoMP#,CL2s3+@+reH-=rlktcmZ<k1Hi)rV_8aAQls3A8@LoC%_9=rG\@NoWEe[0qoWE$o;@WMtlG:]GfQFQ)Bg'1?:oT$&eZVL==$1a`<=`\RdB5i#jU@Cmkad#fS>lfM;_REt:H:e=#(!0g&Z=p1bg_P3jAX?#WI`p*8&VBQ0JiBr%f)>F<,/(Ml4J$9*m@<kW'`c1%$_apSU*\oWWt=Y0C"Wp3CBVIHD_erVs;+Be;HBK;pJ4=J_h\$e)7FL"&G$>QR\/GapG2!IfQXG*YBcl_T^Mf3oj5bOACGaWCOnKV_Bq"U(7!`1ZVK-GNoc[WZKAX]r4:^jU@Cmkad#fS>lfM;_RELQqnTRG<,aF9D0<X-2A6%VI%d"C8H>IRt#'plhC)l:/u&%?hPGWaepgKoqIJtq340Erqul-9![=s/BOeD1%h7N.kL`WZelnNXpJ^;?IWD["^ks9)oUDe_9CDe3io[gbfkNg34gN)R<h_cPnnn<fl%F7f*!m.0C#di!\cG-%H?`C?tS[m*EH>DAnJeDS6ZfP9YICB8diGYlo0a,CP%s[o1'Z)q+=[k!2c"A;o4]F$57bTVgn"tjS$2pgipAWr)U;aE,)3Q?r$8AEUkR&XPSkjr292i%KHq`q38*/T)rGFY8,V4!#UcE8t:89_^g&p0&KSk"TV0:Vo6]T0XfT>qs\;@GpfV>$36<R:Pk92@:5"kFsNgE]?-rN5UlMn3;F6m-D(>>c,lm%aephsdX54Zi8q%/!&,JiPW8IQ"u^Wg^$p*8!.asfVo6]T0X--"l*[/\"9@4)pSYi9_cO-VK0c>QN[l%8-Gf6$ec2fg!4^?*FF8N8EHB=\I`&.%)[pQ]*.S!skijam!W](bJ%:O>[JmQ;3cOgs&KF#@rOuhC!!)j>T)numn-&;2!!!!pn;r%ohGZB;!!&D5F7SSiV4[Vf!!#8k*gKM%!!&CPHjTiR^_=ee!!!#:b=Am34q?e(qAVMg9#go3!/Eau:=j)1q%Nf/i.9>V?Jhn)2g]-Hhs2BQ[MZ@C'`!%*bbt9YYNL:XT<BoPkl06So<;f0&HDgh''lV29U(s_,Q/i3'V0Xaf(*IQQ;?OBpXo`4:JptM*DZ/E!!(q8LM>jtf\,U59Kf$0e&-Gp0V9C-*l"$!6P(5'4p:odWl`!s[s6SDnIEm_BX?<?h/,<O]b>h@\2[-hI/9DIHR&@Yn3/LR#hDr.S7M+S!!%Pm7C#hRW-nVm4tShbZc5F,c$[*9.F"cGK9r11oYA?N!!!"(C[mkLAp`[=I"1s6o,bF&5*o%G!.Ze?^5$d9rOm4B]qFhLYPTu)i?F_%:6a)5Hh5RUV-6(->i#/>MLtTuB!*\2#kF$ak.L"t!!!#nR3@)[bGR;l#64ak_$jI<4p:odi!H!@:B:FqR$2n)!!'eJV#.R66i[2ezzzzzzzzzzzzzzzz!']oh(J1+K~>endstream + +endobj +% 'FormXob.8daf6d831a25f83bda35052e404e809b': class PDFImageXObject +43 0 obj +<< /BitsPerComponent 8 + /ColorSpace /DeviceGray + /Decode [ 0 + 1 ] + /Filter [ /ASCII85Decode + /FlateDecode ] + /Height 742 + /Length 14403 + /Subtype /Image + /Type /XObject + /Width 1248 >> +stream +Gb"0Wm;CZ<&4U(Q5_,TDHN,q)h:R`>aV6%:L,1LIo)RN':1B,+l>57'oPss4zzzzzzzzJ.FL0n,"V^L]A]3a2u0Tn*D2!OH^b5#QOd6%hX>flo7"uDZG[#j5ba)!@Z*NP6:XcTI;ls%d4j^U?jj"TPjgfZK("r^&]Y)NfsSA#,!A+:(HJ,J>2Bi3M:9jMR):'JA)%4b)VYfq?ET@4&-:L)h=[L3'!XM!/e)BjFFrF.*@R6"8W4p-p(06kSo&Hlo7"-oPL&F7L;=RG+9Prq_haD)h>Qe3&t))5G`8um]tm6JA)%4b)VYfq?ET@4&-:L)h=[L3'!XM!/e)BjFFrF.*@R6KAXEAI-KDYL>7Ue:m'N[&%B:/rgZ,H!((_TjPm(Uc^1pB$:%'eQJDE8Z[=c[U]<gD,cS'8T`U=;SK_GifbZI\ZF>I=J$1eB:DKLZXf!I/8+-BT=filpVYFD44tScdEcq?WOQVPT'?)>/qe=0qP+2@#pYK4I*[a,k)c01FRTqth5E!)r)d?-3G+9QAmk6p1IFF?"-O98Q1?b3nlo7"uDid9BZt.5!!I]S/qPGQ#:(HJ,AC*7efl;$th]RQcBuuC!"8W3>oM%u%S/fm7aImHTZK("r^-MsOduk_!#P8H\kaRn)3'!XMO?qd2AB2dmI=ht)VBn<!%d4jBd'm9GT<XM!-O98Q1?_rBBmg&gj5ba)5mDa17c/`.kZ]h="uJ^)P0l4])>]YX^&cL*[q,+?BSO5IUMiCRoI\TN#kK^$95]puq?@i0/`!N9M\iroh]RQc-$sfDojYDo)e@=)<6I&0gs@AD"r[%bd;']b)rQOdQ"<I[A+].D`;]T3ar[8ZqGn@fQg?<Z"F[ljEG#6"B+NAjI4L5EbAp5bEF$r#$g1@jI4L5FbB$$&?g?2Rf7d5u8T6B%H),@iO`S'MVtlss2T0`HQ$j8b$um?Q>?U;tT&7>F]r<"\EEu[XT*,BdS4EEVQ8P#q:$l>ElbY.K,WHY#4OU\oqKCR(f7d5u8T6B%H),@io^0"/Xp_;sPMfi)o17c]khBf=>SgGo-c*V1kE3KDdC7SZ\1Xkg:P+3Bc6I`fUMm%>EEu[XT*,BdS4EEV7c-r[ijuA:4p_^R303^6N4ti@`-#LRI1dM.E?=@K)1=S`M!Mo-q]n-<i]PYu1AZ1J&D)V9p.93W`-J.sAb>As+g)3Rm$$@8M"=0pb37So6X1F.fdFVP&Ef1iQ-m(iL:Ak;Z;6()+jM<\/#.$\%<5ZUAY0)16_$[C<^ttA)reH5b!$+AL,b7dXc0ub2T0`HQ$j8b$um?Q>8_iND2@Mp.f1JN(ud[+[kdf'g(;ki<VB"'0Z874De8S.ZluR[X6c&.@#4DFhob0;BgZ,A<nSk:_%>dl^6R*TdtY@bXKkWRK-AMbI4M(2V[[WO=Cn*-#=G"OqGp)C:)i3(Yf]-9%Ycs(oW=(dSMnE/@?l6R*"6g.l!#$R4)Kf>_CGF.3#LX;d^M".G1mMZKiRh<E%o4UUi0i:mBe%>$`iWXi*_B48DhSRgM'#[(KT3:_8-]GOhR+.\'p)A0!)?SJqG5l,CM);Dl4%a?!([1":%;a8,?7UhbG-M]!0=@#nD\LO7]Q5^7@1#F^^P`&f_="*pHm3em,rhri>mFgUZgbT7Xi88[D?Y*@D*aD.$Lfq>1(hoDc8"^A]Oaq^M@?8t)<6lo7"uDZ^ZDbKmn$\fYb09p5t]2DECd>kaf9rEr91R%2O4JSEEk[deJ-#@$c)jG(AX9QDc[N@/d3fT[*s8+^Y+P&pHTGq/Q@9fYdc7Ge<H31%\2'=f3$b6X7eqDL%H\NI?m`r0:LI#d"0[t+k2A[_7WmKXKS0ku6Q%8:^nc^gtR5H'CaOZWCt0ZCRbG+QeR?s?*^SC+fs.F.%!j/LfE[cJdV'n%$gjBV*l:Zd,1.4\#NkhElukAo=$3qn8$H!,/ThZfr<Qg;@!\fYb1%$MA$2DECdr+nHkqn\TR1qB8t!u%6K[-H)m9R5G)2IskM!IYoSkZl\A3d[B'pZ!Ut@bu:ra)tu9[0-7`0\*_8O6c.PHJOXKm#-/D\KA;PIFJbjgV?eO6JnN.]?IUBg&ZU@R-Iqfn(Z#Aj56>+dC5^H?H:_ukL+_7VSto.YG:9Q,gj)mWF!Wu<9M\Thknq64[--5I5,Z8D`q%4NjG_1Kt^!ND`q%4NjG_1Ac61Ue&eduo=CPM%pO@UbR:tA^@b1m3mOT`(U)jk=s&1Y#CRPYl<NOW2#>cZea#2al<HC=gZnC.ZeK'=\"9R*a4XGTdX0m>?iN$d%jCgZhF?CKVKs7q;k6SUIG9j30lNh*4]C+u.TGRthkJN-SuM*u'rl>KDpdcQcd_[!$Iu]6[qPE9B57<KL$DpKqNcQ7je6TU;n\3tWQlflDbcA*H2k26>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:Tl8?B>L-9Pj(t`:l+V)bnt)`!c)Tu3cW%+.CoVR@]l2BZY--C(o1tP5>L-9Pj(t`:l+Cr`lFs.Q(U>^VD=jrCWn25Ke[a&9B_8E>Wn25Ke[Z+>\*#8PdC5^H?H:_uk<e(#dC5^H?H:_uk<e(#dC5^H?H:_ukL+Y5<hDUIh(FW"oh>$>cDEXhhYVKrqR:0eQe<2H2Ytu\ea#2al<LphgXc>HU2N1n]oKFuc@ru$UMi:o]oKFuc@ru$UMi:o]oKFuc@ru$UMi:o]oKFuc:,Ebfb^JLqURIQlStC!>ibeUmXb;MT.Kii1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F8B>;Z3-1Y(eNS*F6JmG%BmJ"lpkT34s5S/fnbJZ6q+e@p?Zrt4r&F_3eiEH4>%#,XGJ;>W8?lo7"uDZ`q/$[q>.G+9Q![t1O(Ktd4'4&-:LgV?eO6JqX$*@D*aD.'AbTl5A#NfsSA2DE[ld'l2La2n@1)jonqkZ].7j5ba)%8:msoW8YWEH4>%#,XEtqUUGg3'!XM"&k`uIHs7DS/fnbJZ6qK^@`X2:(HLB^f9J`htiET-O99\@&e:ADgf]eP6:Y>0\*_\[m"?CaT6f/R-Ir?>9C02jFFrR9Q_u[XUj*)E^8LdVE,Oieq`TO3M:9m;k4;ElU,ic*720GWQp43ocZCl%d;Z_<9HU*qN)^F#P;k@WcOkPIE7G4"8Xo0e[a&95%M^U!IYoSl<NOW+0sqfJA)IdFY<<g&(trC5i2dC3Z%YDL[6u\TPjp2SI9l36["t>d'nS*c@s"*+ZiF/khEmPk<e)&O<#\RoPJ!9F.mN#aGuGdqDL%X\^7fLAB2dmI2eR=>j,B6ZK("r^(!bY0(c7Vfl;$thZfr=(])^<n%\lHr+)ak^Yd^3FMN>V;k4;Elbh?KT*YJkXkA,PIq9/<!W0,qFY<:q:Y4clf`r[[l'/0mKtcN&^?o>iAZBgFDg8dA+s?b:PVJ[`e[a$c4A5lq&$m]`SI9k`YDL!\@Q%etF.mN^Rsh8>p7^\Z1hE\.Tl7H9D[.tb1=`q^2r#suf-'ruA20K-e[a$cgsEMTQqWq5>j*-0<o5HsI5n5D9UY0NkSrZOG9-9(;k4;E_]89N@m4J(F.mN>A);@PVbD4coF5lc]8l]OWQp43@?,Wb0qU5O\^3:Z1%.0c;l2SlqM%#m?,q?8<9HU*0ZUilQqs.8>j*-hR!0SB.8ucFID[&rY%'Y,WcOkPQt+uqbbn-W0(]Tobe&o2Pc;r^^1!%If.imQe[a$cbVAQIk#8-<(]&kHk$?#Tb#IOjh_<*`ld!ghm)c91NkSq^H.SUVchLF=>p4X6*:p?1REt9@)c)gtDqG#,0AV*Fnbi(/o9],s?:OcGaf6kbDjY%kFjm[1e&tB;[liucnXdWp>mu/!*:p=[NRd$teLeE%1(;^Pco90'n%.8[c)KF+kNd%>Cqf:%_cC%MID[&rY'YWQ<W2^[r_i])]of1o\e=jo3TaUKlJ"_aA62+T0ZUilDU0gL7@R="^KoF::S47SQkl<9i;%)6oF5lc]8l]OWQp43@?,Wb0qU5O\^3:Z1%.0c;l2SlqM%#m?,q?8<9HU*0ZUilQqs.8>j*-hR!0SB.8ucFID[&rY%'Y,WcRF<Dj0U&]>QDhQqs.8>giMX';u"]K-TM]a*c$/kG$>4g7:C@lML+b/^L&_2?.id`=LP:C!<c@q37l(-*qNdmp(/935F_34hk"cqRY5Gc[3/u2`i?ga*c$/kE=K,C%d<bTU&AU?i"qkq0cG\&f-G1Nqnp=c:+gQQU9S9IM-ChDt@m]L&iO#@m4J(F&D2VbKg2oh!_W%[rVe*(Q>SYq37l(7AXqKHeIiAj'V:(rr(T.K>7ja=N>g3<9M[qhko:\D<U\nXj<X1r6tfnXCFG*WcLbug\UN>cR5EmHX#CrZuJ0T0\8AJ;l2UBbeBWn48RMDF0/q9AZBh9X`%iH^_$hGj6@(R0CLTp"8J7t3SdJshN*/Eg:@dfD=s76#JrG[e`G8h54j=%>L_5HXDcSZO8#!kee(W!rUd3&]c[7i[<9m+F&^aehtk^snS_9/f=AU]FVsbQ&%s(b(:A;4[rYN(6/VOcqseT%>8M]L7s,[@XUi)ert`"bSbi75A>_`NqU#-0Dc'`jHXHf]r*GjgVE+nWeq`+CIuE$lNqNoTWcP-[=8@!js(B#m6N#ZClX%@'ef,ZY]031c5H=J<hkIP3qK@na>i+pRq%`@I?2$C4a80uYl\ng+IoOS\#<\s=H(f0>W6Ss)5EDH!nb^4\VWY(^='kpSK^!L:Z*/LZhemkS4f\*<b3sWPnr1ln_2IRR"8;/\GaaM.kXk0Sd'n'qkHb%+o^TcM1jf&[f&&!Pr-<A[k/FH@)s?YgkP7oTHN*U5ng(hF4"p6n*7_Udo^2W^]l0tG34)Z]p)^u0h_))[p+ek')h%<?M"U9DTl9+mc=O1te*iKbbO;Y+s7t!4PWo*P:Z!(0n([3a^&DuufpSCsDs29[bMs1$hp,)ibH^6.X.'mN=s'*T>Q:%fDt!5ag\Sgn_FJD5Zi>8tml@D=(]&<8l<J`6[Wosdf&P2f3k)i:4p.X"1\C&Se[]K9fBVVBnhY"+.q/DSo^P=mqjr_,]D[F/8)J3FlMQ_6qtTRSq:!Ac0g>WM4L86>fob!6Tl9+mcGfI%:P6.&3^,ErcCq`-;*/)!WcOkPI2I):]cE0fnZ#EV$[q>.n&N13D-cf$*7_UH[m'G5r*.\%7GlBfSI9l36gr(17;Z?&m2XZe*:D$!^;&CG;4V^_fn]U9eU"P4a.Uh?ogRb+r;CLh7s2goB-7--<pS!o*.p^Bee``JnaB8C3N=m<48\O)[T[VCi>=E*Z+fFk#l6IAqUXk7./G9B^5]\;2>S)G^58M$A$0a0^4i;",3[dKlW^-&U$.sOqDRL4f'$<dqBgg.NOcb\qA+t&M4ecsY&B<6Kq`K0khDKj>GH,1kaMkSG!4R(ALq3TB74Rf/JNUH6/R,dqUU^E?>PG`qt78/2>S)G^58M$f>B0n@eHa(#I=s@D=fCoI1np(Y(p4f`9L@p9`]YuTPmSH<-P3X4frX^^4i;",3[eSE6F0<]W*p_/JNUH6/Si#>@'_Z<P>)EU$.sOqK>$WNE'f0VDn-!'R^Ybl$^2CA'I4rQ>ulro!1!5O8aS"/JNUHn_&?&rHZ?SXjOUSoM*7Op[.e)GjAS/DkZBaLsPJCo&\9M[mo7Ad5MZ0g:(-nYE-DOU2M7>gLm0tU$.u%:[QoOf:.Luh\pnN7GgL\Cu>5nNcD;rXjOUSoM*8H\#ce$2m2k6T9,APXBkRCs#RgL?IlSTha5^L&_F4M=KQrAkFiXR<W!/;afF->^IiAs**mF%kF]JBU2M6)Su97Sr9tP(Du;"np9Jj)Y*)^jhQ+E*2>S)G^5;X[^7CI9phupGU$.sOhnJb>+8XP=qIW"MhAaA`)eUg>(ObTaI5@O7mu:cANO+tZMn\kA^);<-h[2U1m,[>*4.6\.lP4h(prL2JHk(.bSj2B(qMN1Cp`8,[92*j_[pIH@K?ro=q4E;jm<n,%YNVIl8+u?GP2@80dC3H02hMY-g[\pZ3NAim]qTEL+4mu'5''[nhg.`K%-ZH$TPqN<D[%<82ri4MlZPJaX]P/>i:HeWq`/?GcA0.,MS9sU@c(@:!]=m^#LU"ed5Q^(m$n"k^u[36!;b7sqI]5rI67=Id(5bYIHqVr1\fb>3R:PCIHqVr1SAYM"3Y$%0)F-LqIW"MI"mp"XBkJ#=7jaf^+Io\S]EW^b89Vs^AY?`c1?)3kZb7SRfRqAN+0AJhI1_UEIQC.23/gaQbBJ+oW;3ec%*M[7e,66A]ud12m(s[HWduE>Hd7[!I\12@c"R9o6bEImJ[]h3r7DXqIW"M(8Fu[r-!A"\G>[Lj]Or^oW;3ec%*M[7^;ge[gRWMp&*:J;"RK#>G",crq5!OC5YkKnGH5tI1&L$7-s?-F(ZtL=hEm%YNVGVI60NQcK7LOH:?^"kaU$@e^:j4d5M1(jtoSNoW;3ec%*Mgbu#L0lP4h(TPmSH<(Ghl7GeO;S'rA-dC3H02Zrp=1e2]\X]P/>JA+%g;&t)N'n%m2Dbb@Q8)JV]h[J_<di?oc[pIH@"8_.:7s4I+=7jaf^,aG8*I[5gI5@O7:30B)hg.`K%-X20*7`HG?I:\6qW9V)FnDe;oZ_p#3R(DAIHqVr1SAY]F&YZeH:?^"kaU$@e^:j4d5M1(jtoSNoW;3ec%*Mgbu#L0lP4h(TPmSH<(Ghl7GeO;S'rA-dC3H02Zrp=1e2]\X]P/>JA+%g;&t)N'n%m2Dbb@Q8)JV]h[J_<di?oc[pIH@"8_.:7s4I+=7jaf^,aG8*I[5gI5@O7:30B)hg.`K%-X20*7`HG?I:\6qW9V)FW]JLn%\mkqYpS#q>5"iF"umJ#l6IAqUT+?lM:G\,9K[AlLKuWf?+'m9mcnIHhW#:k5S48qS-J4jh-Mc[Ij'HOcLk[FnJ7clg+Go)?6?&SMtN%^Ko`(D<@dW^,:"\`5'FBUUp<1a0gERhgBh)I?\q!+%5!)\ijT^"3OJHHs_<Nh*tP6nR;'lSbkdo4eNkH`A]r_"6]VNh]t^[E='C6^:!S0QuS087s422IB,NN>E:GMNP_mVGL<m3*fh34LjE%PhX\1:SG+gf;k.Fc`HqZ7CZbGc@1OeWFm0?rCH?Lmhg'V2D%q3QSj_I>R6>656g@NSHC'$n*+m]3HQ%<JjnY9@O!mPAmHopLZ.hA^s2a#mM7I:/kZ]j(`sd;_4fW;dZ>\jV^3t[+U+Y3LkZ]jX%iP(kJlEQDm'p*Nc/\>0GEtDLW6=lkqUWsj+laV?O6Y_/+4oBJTBY,%I=M5Y4b!5*oeO/@rc-clohC*H^[In8mG&a;mdUFZY.ggJXoCV20A,s4q&`[fSphdCp\#BNY2c;@>=7"4%"(0#WiPTmDp.l,o^2<`qF9@GqK]llLD-Jpr3#n)qZ#V5]4kIJEH1TFD[j0aq"=M:qW;5"IstarkaSIKqR1_-l1sLVoB,5VDlk9lc26^oK5%`MVT1l!]tU8?Y$\8KHi%?JD^Wpk]D9a@ht1sTk>>O"<o9df[pSdrq5eZ2V"F?Bfk4>5StD%S^,>a&8p1)9IIhnO)^kN'hF6>gkh@H7p!YiAfpD:_qIW7T2Q<jO^A5jaS9N@>48QBWFoCsW8+u&WMnV2RJ,Y\HrDHocIIiSL3U`\\*i?u5E:^9=]]ee,.&uU2Da'>fk'cm(.Fiha7<SQ4ICno@e,<iL^7+fD\#*.!AJE\fC\>r$Ip''1k?[_^.Fiha7<SS$bt%Kh]SjK]V7J=TW32c,q=ssdmk*#9[laG@HiAJ`esDr.\'_Z]Wp?R$5/+c2]Oa/!B%+RTh"CVW>$lHUhF?BhWNMl-jZ'c1T.@>:JK0oFX1-Kc:o`iZD`Ni[j*IO[5*BE=C\9mf(.r`JoI\*&I?RcRDQHU+DkU.^:Z$14>0$S>D1*s*UpfOsqA)\GrU_\^4+1%0F(VFITl6W(f2(:E**L>B>&A^Fq[uPE%Xe_]\pjLAj/p$io@o]Sd_TGX"FUZS])GS'-LjCI)\*kUlscO!)gsf&^4fHjruc__]C+!kX)Dpj@gdRU3f1S);I0;FIFB/)l3#1QIh'uq0(.SE`s*/LFUig-V7M-Pf#G'VU?`Q'If97ogqEZH%A\.3/G^,SFoCs7M<XQRn&nYg%<h4%k5BMrQeJGqkZ]Icp!^As4Ss<]*RB(X\7pC?*MIDF<7aq'RTT<dr!*%BoAe%VSi*Vki6gZI>.p!2Ki22@I;?^)D_F%+>\W0$l.baMI5'4E&(7rQQ@AG.>&ro_-$WG^bqusAVRlamqBfkR7'H+V6['3U?M\9&g]pb`5CI<Xoe0mj]_^jJGTG-#8#(!8-hkGVf2(:Ed'q$Y>:A%pe$g<cI4IF^VJes0pX)sl:Z$2Kp20c8qO3;^+*p926E.,[^?&2YgQq22]oBa[;I)M8b<b#(UMli*f2(:Ed'q$Y>:A%pe$g=hXYKYf8p1+)/]Zhai>h\08p1+)Xg,!H.#U4qZg:r1NP:*E>sEaQW,f+JXlDb*G39P8BR3Y0:Z'HeVVB^Z9ogq>]>&UjoBhmpCM#O"jSSC1MkAqGqYM9oTAIkk2q@TM\'sbP"?ZS]^3jpLe+5GXZ3dYnOK\+;(B=-Ro`"=VrX,2lDs,T=lMBc"BsW,f@Wm%1C&J6&lNhHX`gD/c9oZitIB)V2Dl9`72U.h<56(QOg[cZ&cU$GXVn.?RG$<kb\'+B^c&^`tDuCRAJ*!;N(bH31\-#^^:Z"ntr;GB(^6MCP#B&V1*ML&nqKC`]k>)o?:S47SQkl<9ppfLb'7CgklMBb7e[ZpQ>=UKU01sDOP]d7;g**K^Vf,W.D$PLd!35@_D`L9ia1fN:'kAC[1ZPY)(tJ<.[i@^"&82E!qZNqbVf+T.f<K=FmsHU[c"L29(>@h(":VoHK2gGuhf<tCU\LsopRA)"2i>:tDsZN1Qco:Z<o5CmB9`"rAb>Z_;-cD7bMgmYq,a-2r]&_@p\GVLX1'RmdGk[ANH3maN5!"hWp?R$3IF#>]+j9^^\R\iE1/rRlT5gK_UU'tD9M//gS;?/qNf%&Di8OVIHfMTRr3Xmlu*#VDjeA6VbtaoQI4<n7s4e&/ViZ4DjS/OD7lb@7UASd37`Y?^:lb1l_eY])YIsAD`L9oh]C>@e$g<7IJ`sn[bJ.3g@Nd-p(#QaDp,cNq<8clYA]KeqWV4E;:]a:kj'7;I="rF:Z$2OZAt\L?gm4EgS;?/qNbWUFW<:8H:M?"*nBr4[iD0Ej/CAW48SgIW32c,jVVPL7ub7>dFYitFoCqaa!g75C@q1Z^:lb1l_eY]7Tmc/UT\n6p$GU^5CL^0auYP$ID)DZDia2[l!'0FeoB4'lQ(D%HW8Tmhf=[]Nh]'Nn*')lUUkpNQ=H/%*&[S=7pk-peb.D#*2BUqW6s3YqYKoaY+NGi(hF^XNP=8sf=+7mrU_\^.-ij-o_"6Y^-/L^Vf+Rb=iXC7YBTX3m87.RIEO@f3fY,,]q_cLO6ZT+>E2S3ERa4<*IW?_<7aq'Ef@;aUIJVZkj-uu\pjLAA&;?R2cMQ_p!Yifi4P%Dp&*5s7,Y_;:%eG42alT:ND9*DdPjSP]T#YYr6dMli4P%Dp&*5s7,Y_;:%eG42alT:ND9*DdPjSP]T#YYr6dMli4P%Dp&*5s7,Y_;:%eG42alT:ND9*DdPjSP]T#YYr6dMli4P%Dp&*5s7,Y_;:%eG42alT:ND9*DdPoZds&_.2n#u*:I1XrpP.mV:4&Q94^U&^i5ub$\qM(I*8/_@&P<HPhU3^+n2q2A.b(.20;S=^I)euZ'AO,,SWEtq`%5lh$18&Q:<3JskL77I"):5iXWn/PF6VVa"%-Un<ea&C4TdDj!#4sL/l?,\U:m2nK"8Wd(ot$r;W6('a!IY?OH<nrXe7;(lJA)1b]e8OgC9f'q5i2XB?C19n2;+*ITPoB\Y=n_HRd<Q_d'l9?f-Pi49m3<@kZ]1[l]SuU-9G*0oIZ0iF\1IeP8u(SqA)Wp\tj8Cac;SdI1)is?.([]A4Odm^'.EJ0'O<iZ6NpGhZBc`Qh1_Efo\%_Dh1lk9DXC3lpr#@[m6tF-%/-TG,,Q1>9MJ^P.mV:4&Q:T/Wf7?8`*@.*@V*e(.e,0Ui33RNg'Qm$`&)SdPoZd8'6@r"]E#dko4BC,@s-t!i]LmoF3\2OYWSJJQ/gGqM(I*8/]d`5cWE^I7$_PU^ZHk+P#e@^7cl8;?lbFOQps[hb]LW.0KD^8G0QiDlCd<PQ?1?Uj?=p2q2A.b(.20;S=^I)euZ'AO,,SWEtq`%5lh$18&Q:<3JskL77I"):5iXWn/PF6VVa"%-UogZe&d^-8BS5$[mqu]mU=Q>G0GnF$0lDqknAdZ6NpGhZD1aT?!jJZ*GTc5i2Xj2kS-gDm?SmAO,,Sd5R]<Vf/iG,@s-t!mrs!a/<j\Z6NpGhZD1aT?!jJZ*GTc5i2Xj2kS-gDm?SmAO,,Sd5R]<Vf/iG,@s-t!mrs!a/<j\Z6NpGhZD1aT?!jJZ*GTc5i2Xj2kS-gDm?SmAO,,Sd5R]<Vf/iG,@s-t!mrs!a/<j\Z6NpGhZD1aT?!jJZ*GTc5i2Xj2kS-gDm?SmAO,,Sd5R]<Vf/iG,@s-t!mrs!a/<j\Z6NpGhZD1aT?!jJZ*GTc5i2Xj2kS-gDm?SmAO,,Sd5R]<Vf/iG,@s-t!mrs!a/<j\Z6NpGhZD1aT?!jJZ*GTc5i2Xj2kS-gDm?SmAO,,S9rm1/ID8ggn,G,/WHe$hpBP'YOYWSJJ]@-4p:X-]s2+C"phf_JfBrD%,GBhH7%)C\J"%O79_V2.\id.kgMc[j$T7.CDqk#1m,PQhoqp4#qpDlTR=R,fDsk%u%%3\gnhbj6kH@hSipELZf41GM<O3bLQsPFEq!E>@oM&.WRU"2uDjALf>4cXL^.n3Ds5(&+q=0!AV3_#0qKR!ZG,,Q1S%"#uq\fCppUTYZa#(,l?LG*Ba,f+aqDQ*<qUVRo6J9^EDjAN<p%dkMf>ZXr^#!<f:&=Qn5)n7=l]fjWD0^C^UMo"0qc8!km8%3"qY9G5S&WYCe(*b;Wu:7d&cuW7b(.3OX7gE#q9s&(q:kW-n\WITSiVmAG9YJEbHuN[f#N]Ddct@5hqW'u(io>]I.-+)PFocM>Q2Urr;#QOhXfcrV>T/iVf/i7UZ@6Fq:kg$,cGY1\i"i,`6A5X4o2$-4&Q:T/Pss;D_HO.h[+_KQAr(Ac]44jI1$bH[iao`M3#C,?>t7?>!8hL/#Jjr4+)N3=oPVmGCRuK*pd,F5I5$PiM:l!G+&$*p6Y^/5Eu3JD7+dVe'"r'qh)`E_u/gBJ+laR5,N7@msYCJHBa`aBBn7&s1b]">8QL-a0+%^j0OTo>FmLm0(??anbrDrB`3D'^N_j88^);]+8=k2P02TSb?rKfL\!E"6[Y3THrT"#`Ga'Af,qf05/^UZFQg!8I".]Xc/UbZp9Egca'P@Ic)W`%q!HLLhu8(sS^$3((@A'VkPV)LO8Hh/oW;W,@J`pcg[4-5htXqY=Il#-be@AS+&2Xf+&:QO%r(pomXtE1\@qP4FT1S_^Q[cM/oQ!i9kS+&^>Whe/(;u@ZQ4I`rVCEhQIk5@T$KWDF>d3GG?;Q.l0Z7LUMmEcp9WT<p20UODpK6&@la1@n!eeKT5uJ0F5IIWKDX@!hfp`$e!@G7m67Cc%?/oJ7X"3LHM?`CkZb-qrG5!]cI;Z<'7E4MC&?SD^7EkmhpRO'cbZgBb<AUAK>*mHhn5NXqE;3N]e'ZVRt9AH$h`@8G,(l"D.15?Z;CFE+o6otZF>Mg4/r>SZ^GuaHe==@ZF>Mg4/r>SZ^GuaHe==@ZF>Mg4/r>SZ^GuaHe==@ZF>Mg4/r>SZ^GuaHe==@ZF>Mg4/sM%jLgJdTn2QI@DIo'3;[jhl=Vp?q"Cp2_]AQ@$JF1NJ/qWUhh&*P,HSYOWUs[FQFHLE*E>D_K!?9LRXT_rcKu/:IsU2GdrI(I5Hk&$P$YDg.d1(jG%4H(59T=lo'6fU>lBW"I^,XtkZ]`a@rohD4Y'"Z4qE&L`boVYB?&!gG'hEq^SKO5G#SWn$c[(#lLb7dg;e-<pZWJUWe.qg@lH<Re[O`/'7Ka#oIUolZ*!>RQ[cV*qu#^We#DqgS:p(',GT1nfSu'"[tOiEWe.qg@lI$&hA-=^W!`A:N85m2HWq>kUFPJ30Qs4eltp1HNiJaj_:Xa1ZF>Mg40!nH"_0J`b2*m<m&19f(6%&t.=589YbN]3>;15qV!Mr,^lGFfDo((cP-VQN!B[<5^'/"*9$6!+#4/8qqA,%G-n0LI(pKbbkZ]`aUSR6n@DIo'TPq[!NKUTVK`O98K"_Cu2bM6L('a-($MkNsh'a_!>8XT>.d1(jG,(l"D.15?Wh=:HfSu'"[tOiEWo@^LVY.]c.t0D*Nc,H?;,[+r0ORCN*:2GPnh5NOT?Xb'gV[onPeAXWfMNB=T:aOj+7)Hgg"XAo*E>D_K!?7@AT%qYG#SWn$c[(KPeAXWfMNCU/Ju)s;YIOQ?q45D[p\Pl8_Mk8J/qWUhh&*P-"V!&"*RY_dB=)V1&iFWos:'0I!aM*P-VQN!B[=@NUL5a9loiVmb(8q^-1gP8_Mk8J/qX0r;#Tpl:&t(R<Et)fSu'"[tOiEWoBT4V[kF>"JTgJ+F@<0YbNZXp$Hn!o^+2QUSR6n@DIo'a?DV&UMjfgHWq>kUWg#>i=(-%"52GGJ0!`Z3E#kUm50!]V!Mr,^lEI**9cr>c*Ng]I!aM*P-VQN!B\HGD4L2^l^lA.j4hIhPa&j5%+nEpT&7>VIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ#Z8D\'HW;YIOQ?q3)IIQ"t@rmUN6]CD<*)/9!$NkRBDIQ"sTs(M9.C4'W47bW="UMgT\2DLB%rG9Lhd/[em,>$Y9G$GUgE&KG6[/Fg]("!"o'-g*'cZWP*%<+3[P-k1(`tcu%B+lL]gWt%J&Ii\;0p8pBCr[:<!+uri8__R7>S.FH^HZ,[q6Kt4fCS\8aHR\o"8^TaqYLAlSM/aTHTba9O%e5h18&Od-KFEC9\GO`TPo:VAZ)EBT/PQ2_8-+XZ6NpGhqUn`:gL!rI*LMp!j[t.AO54d9TNP0?_/%:g3Zmd<-G&GkaNCbL-]B@b(.3O=nce3WkET[6tJm2JA-=!leCRb.=_i[OYWSJ?JPCcrHS_m6ZSqQkaS&U1LtFsXn)425R,nkY@A[3dGnkcUhTd\F71,V?D)5`+oC_Nm,L0R!grfg!5dq=J5O]Q!2HiIrY,?sSbi2l_WN?J5RlVc!+8du%D\q+)ZY/A+'DaH;X<eTVh>&=.thNH4nK26LhXGLF>hr>O#d)SHG$n<iVL.Y)a*$H8Dg$-rpn^N]3=%jr1R2I$32#_NEB0HET?uYq5p^,S8Rfqq\BG5[_/Ni].+i:V/QD7:baIj3@F.,]tWUnrSHsHiNWaqE%/I>!)u'F?Fi9OS<j,AAfmI)Sel;;m4o[fcf:VJI@ECnq>_QII<iK]q?LL3^oQ#+:m\<IVsBfZIJ`j58Dd#]Yg"8:rANu2k4\uYRoY"DFp[Ni[.2f@%=m:+PErO&T8QKPhEE5H?06&\J'L*)Wd4+0l/S@QpG/kCpq@fbl4^)AqZ).-cVtn]poVeN"2Gh'"+Yggp'h"J6/M[$CA2(LbW\8lzzzzzzzzTPsi26>Lr7~>endstream + +endobj +% 'FormXob.e0f32bdd4f95c90d9dd1dfb9f782f702': class PDFImageXObject +44 0 obj +<< /BitsPerComponent 8 + /ColorSpace /DeviceRGB + /Filter [ /ASCII85Decode + /FlateDecode ] + /Height 1194 + /Length 64167 + /SMask 45 0 R + /Subtype /Image + /Type /XObject + /Width 1604 >> +stream +Gb"-V!KuLl&g5mf66BY)J%7^/rkHo?@5.g'7m[fNGgG*d1._cl,S9O*WrBd5(B=F8zzzzzzzzzzzzzzzzzzzzzzzzzzz!!!#?HGSG8HI;cn!!#7THG0=9%cjnq!!!#0/FML^H)uMVZ2ak)?tF@]gr9<:AGu+LjK\ac!+9AY=kn^9('"=7+IC&QaCPAP!!%%BgkAuK!!!!AQh>(hB`.c-h4%X3ZK/:k!!!"eQFtVM1:D8GAH;c2!%[,7i]_hjo_nHt?[R=&lLeMV#F?a/jk\s\eIH`\_;qm%!!%O^Va9=WiYSDL2Hd-+(TjmAWNGsj18O3e48SM1E`iAB!5O4#+?Md1'W8'&F&T1@p>rU>3\s"641QmB!!(r>foOr2@2d:"Q%+oMc=M-ZDcJm"GBYF$"TSN&4>lTtpVkHi[0dHD*Q*9Wq9s7V/dhXZ!-inbA*>.2=3bA/qf/\r\L[^\!9!AROM:nt+2dNu]DmoMk:)lW<;#\sY5E:@2n:I>!!$Dh1^FU7QN[?h!6A_k(NNXY!!%OS(3^pg"TSN&aCT?-E`iAB!.\;iG9N:V!!!#?AT8N,=TAF%J6Wk6+dW?4!!()OFd5<N3b\'R/jYY*('"=7+Hb+FqN'4:aVo@&PW--(!!!!a,,M?0bBj+gX0=^7;fYq&cQ\\Z!!!!iUi_%IUT1l(o'9?EX*ZN$\L[^\!'ha)lX2?G<A'Uq8hLJO!!&*Ol'e*bqG]VF(:bsr!!#8.V5m9N:&/$p[0?\Q=TAF%J4*#]_-C%8,?QQaP$Ab&!!".(dT$e)PlHf<^LK5q/dhXZ!0Bb10'';<!!!#0/FGhW$NL/,ONZW9jK\ac!!'P\mQrN6!!!"\bMk/8Z2ak)!4aZK67rWG!!&,(i\';t!!!"L(Ym+s0=`V6!!$-RbNH1@$+VSe!!#8:Mn>(o!WW3#jKc:RQ[^Xr!!!"b-^VeXaCPAP!!%%BgkAuK!!!!AQc37OAH;c2!69.`AI[haa8Y\6Ih,W[qN*^^=(n+!/dhXZ!8*XLq)k_%&Y5-rH<31-J+[1UX#lKf!WW3#au!)n&Z/8oq<_OOh.iMXH2OPVC)EGWZMs+iEFCBs9h3>c2lB<)I@4=U!!!!1jIh57LX'abSSYS/2HEObI=@`D1Ph%ZONR\*!!$WmZ<BIeSibG2X,0(l@27:^O,`Uib5qYD!&Bt=no*'tB9f*8b+G/;Z2?L/PEM*P\h(BC!!!",kYkCLOafePCFC3fDm=FYQX&+Da^kJQ!!'h_UGdgqX?uUGi7s+LZ8R2HOY;g>!WW3#>+)>amg8uIWMe=XeXF*_AQfMbX&T>2ATD["8,*.r/-#YM?mm]#>MWQ8QX(kqFi\+p!!!#T:IAF1cXXTd&3ZCc('"=7+=G'4aCPAP!!%%BgkAuK!!!!AQc37OAH;c2!-25tKj5An!!$slQh@?rXeAs^s64`&4=S-b)#4b-IMI;N:TG,=/-#YM=PUV9_e=@/@T<X8hNtSeMW'M!<jg5`%1Uk]Km9Wjb@L\S!5RSPq1n6jD)N]j:ZJgF)q?1V$=!1&K8In]_WuC4LCpu[D\Z:tI$_4_PC:)14Olp_Z2ak)?u\KH-!?Taak)i>kNr&[).?!YKNl\I"1qr'Ac6XP!!!#'\FX`DeXsk+`HdEi^kP`5^PsqHPoqQW3hDeP69Jh#E`iAB!3it,0'cFdiD<67`$].P76qC[U+LF;=,:fdZ<qS[eJ#,%:YCh7('"=7/2!.0$ITa4P'ram\;#FZ%e]R3&IsrHqXpWb!!!"J-MZq(OBX]9b:5`A[%i?rdH5LQhi)Nq`8&b;O$Cs%Q".P-6nSiI!!!d9jrDMS+MBs\P8.YGRrbW)jD-.G)i_:Kn8BPq[o,@K;]Z0ED>/hU<#_+G!WW4N`=6B4k5%CX#M])eKYPs[AUTtO('"=7&BK?-BND"ilm@=]PDB)d_QPEcptO(@a':5)!!!"DE5mWfOime+!!))c\-ohu!!!!a/rR?'b5qYD!9CGq$b7eg!!(qb0'cLn>!obEs3oAmGLSMhn8:T\3dk,Eheo;C\L[^\!*J$j>f=R.cED7k]Di[rRj?<Os2W#lSR4o-rMnZ^\L[^\!+;"fW.$(+;c<S@:+HQI4gM/n<DPK>poM!Q\=RT!rXucC<a1t&3sAJ]#OPgF.PFRn#&n=hE=>-LE`iAB!3isU,Esb'PiQW'a"oI(U"%4t%VM!O#m0=&EiN98+RE."A_nkl0^.HJm<5gNe\L7O!!!",ETcGhW]uK4$S&\[/h;rB):)r@-ILF[CL8^[S*c5r]Nc3P!!"Q&q3dtd<XL&GXAS<%9J.io+Wp)YR%.johpTb\Fb_IQ/82:N0n7D\0'f"oAk(^,Ug+Z8!!"Q&PKTt<'o#?Sjg*kao$MUkgQB\E7P`KKNj,.<b8MCH\L[^\!*ELql)(-g`+Ud(r%u]Z)NrJPQ"82*<g(R9A[4A5-^WhI]#Ork*]UR`Th+%<aCPAP!5RSt)2:k#iiS^!-u7S->AYQk6Q&ubg+rH<7M;R;:URhrL1STZ0NqIVa#jVhc7/_B`i;,Y-ah]D]'CZ/"TSN&b8\^e9_=#c19EdTV]4O[GdZ?P299>0!!'goi_MC*pOsq`KDA80?YC_qT_tnF:YIs6Rp6^/!!"S<k@k]&P03n,!!))c\-ohu!!!!a/rR?'b5qYD!9CGq$b7eg!!#8:Mn>(o!WW3#jKc9'\L[^\!'i/p]9(2;!!!#[ZFC:Q/-#YM5V@u,ONR\*!!))c\-ohu!!!#W"aBO`9.gSP!!!f.:(dEqci<Om_>djAq2j?\7e?Aj4R^%7'3T?Y!!!#'Z6+J"k0a1QAT=_W:Ds35!.`gNIJh8ungshA!!$8l>S[;>!!'Lt.fOXRdTHPM!!$8&RELc=!WW3#i.@tc/@d;3!!!#%VNo5cc2mtG!8qVQZ2ak)!4[_BOX6P%!!!#7Fi\+p!!!"<$a1/W%Mf$E!!'I'XT/>$!4WEI/-#YM!:E0+$NL/,J@god!WW3#i%F)rz\-ohuzmQrN6!!!"L]9(2;!!!#W0'';<!!!#/$b7eg!!!#e67rWG!!%P]ONR\*!!(q0jK\ac!!'M:\L[^\!!)FR/dhXZ!._\Cb5qYD!8oKjZ2ak)!4WEI/-#YM!:E0+$NL/,J@god!WW3#i%F)rz\-ohuzmQrN6!!!"L]9(2;!!!#W0'';<!!!#/$b7eg!!!#e67rWG!!%P]ONR\*!!(q0jK\ac!!'M:\L[^\!!)FR/dhXZ!._\Cb5qYD!8oKjZ2ak)!4WEI/-#\.$=:O@R+D<K1M,;F!5SX5cTCS;E"0-[H-C&SMic*`!1;%n03lPI??cC2b5upI=UR:k!,p_>iB$tq$dV';7kP2-0kN$(!!'ZWkCr5`b5uo*\L[`2l+HW)Fi\+p4H*M\!5N^5H/UgFZ2bq8/dhYe3q'_r21>E&rLYC\XcorNbMiORC[anJ$NOQq0*kW;H?EK;]9CFtnLSIW7P5&K?okItB8B(No;D&\s8CsKis2dfqE28=q(1tUT<*47$VVh4`FW3'?lup1!.a>#hWHBGT&QA[?Lc1To#TBbalCR+WaG5Y$cgA#EC#mJ3'o5*!+7kbp5*tjdQ`2q)h!QY"gIHl0<R,&;b"l?EAa%>3(PY0!+7jWp*k1bY(,Z3mo+Ksp"T9:<jf8[a!eJLY/@QrqC)i8b5q[2c?=W1GVH0_*I?u9f%E)JId%5LmN1<cR7f/jX0JbB6#p*.!7TW.cSbR2r[YbUq:rj]a^oHXQ8LWg/dhYe3rAV,jF?FOID=Na^%kkg_+W\Jps2ksmq_#>6X=(D\L]AVZ3L3IAH;d)BD2nf+dWB%0QL:r!7Q5VL$OiD!dGQm/-(4b]^s!_aCPB7N*I+u^i\FYiB$&*!$4T^$NOQqn%<T[E`iAQ,F8Q60V*Do\.6J;991!W\V54"jio>Sb,maCPAP9]qs*nG9=_@;u.,[LUk(+92?)X0A?N:*Q%D>s*.QKJU\\!<>f+&)Zq<19IbC2A(<u>$LLFl="&3%GYkV\L_XWWQQNV5qWNF?oiZ0Wo.@emgh1mT1N]:nG,q[cNCa3CRGN^KCcXTf"")R6YEsk!chFKhh.7c35_hO*<:UKHhaW9AZbV<<6Z3_8Yg+`BCfcMQ"942/)EFuol^88TQT,PZFIUR09:&V\L[`2l0RB0ig7((O["4rbI@KI?_`bPl`YNP,e5J/n%m0lS3\b8!+7j7po<@-CI,Z_3-Wrs=u'<i,P$9]p!/pMQc8V\G^4ruaCPAP9P4lCFo5ffW6X\=7pabuerT_c)9M*)]ZF`)I1KX*i='a0!!(L$_m]d;9#l!7R<+-el$gW;0'a;6ZFGUd/rsrU\L[`2l0R@2S%jaL/rY:e3O`0oSeAf\"YIFrj46H0fZ9[(J%akn2J0Yn(hCqcaQ4#Z0Pb)%!8u*CINjEd6#p*jQ$\[*a^kJQ9]u@`MXhtmY_-0rcXV62EH51^!7Q54JEr<?!dGQm/-(4b]^s!_aCPB7N*I+u^i\FYiB$&*!$4T^$NOQqn%<T[E`iAQ,F8Q60V*Do\.6J;991!W\VU"^K58Y8Ol%!%qcu_@?R]gWSb=i%eoXnsJ#/(Eo+K!&0sf?FUKU/:`M<b5q[2c9![aa325a"n4(L(3TZXhRrHsFi\+p4H*M\!5N^5H/UgFZ2bq8/dhYe3q'_#*HG9_%jRDE!&361GM^[GoCS7S^LLWdjXF,S4Z%of)J>59QHLcHab_n$Xlm%-GJHSJC^rY(mjB\-q]\%=[FsB8C.LX-7n2tB[>9nD_X59IaCPAP9Xeq%SU]8dTl*iAh^OSu+:fK9c%4t=^Wg>$k4Pg_mI<eP<?4Z,`0F$<AR/a7r5*2in95#kCU$YmiE?,&['jjVUSm]/E`p21]mrcPp"JmEYMS`.57:]Q#5bm8Wk\R^CD]3BW7mm\T96UoO=tN0<&WGkZ!(d#cCZsqbKJA8?07S^kN&pP2a]911,j^Up)]ZKJ&Qf7*g!A$3obshrBfC#%4-@&?Db6[<m3j</'dG$">L=E@5k!fdB_S/(WsTM_Xd?M\ZH3kK852UgK&81fCtHO!hRS6#qk>Q?2XBLn.!p]pKqDP*Z(-[=?Wq^FoHo/[@&.iGG;75[VeI)jkUc*=0:;,pF:8rZX.pk0X$\DmG5DNoBRFUjd1d@@F0q[g>\9h#`l'-JM4)_',T3ZpN,Z)o$;\6UN^=s_9q2OQWX\X^]f!G_57'BMu(aD]8ePWo4C`[Gef=^2^K,E]=J4Pc"5bcJemqoaE-O5B"db_B3rV9A4hUElM/GQ917QnTh'dqPDP=[$YIE3X3F4olL*tB4fnQ;?fA(k<k$Aa*j/9k$[=@d-b,D;Frd",qkrAnEYtjb*BtYa:\ik0H!/>S^*:N*Fkb&to=h]Wd7F&<=c:VXk4PU+^Y4)Nb_Vt)]%UW_`DD%g24WLsAFG9L2'd89]42cb3>=qfIh5!AqGtoos,:/r7@:VAj'[&c:>Eg(V-PCO)@n1)PbiODUV$9YaNQA+boM`j4u.@IlAAr27KZBi3T]W`)$%E,C[q5;]T*LtcA:M)FdtK0RYLY!_o0:XS&jD^o?LQWAhC%!>!9I@-?#Sg/,PnqnGu"d'6g_2XqFirV\37W;S.t?Nd]eH@&m*VX'3W-GF\R=IX.ZCc=P7(I(h;<-g#K%n6.OOM2:!R7Q1i6\*nek]uqD"cZuS9BPa(UUDlS$_IWT?<eb588[f@W0l(2&\0+Qn\<Nh5*NaOdEml)EVmMK+]S??D]M2A[b#H!0Ut'/OJ?jP96aEDYM<Y'F6"]t"]p,Wi\:RkAc[#,n<PuHJZGLiU<9I+*k&T`e/+<2@g<`E>Ih`VNft5X\"YBqV<.!=KO"XPAh4T-/=F!LYE2upR-&A`ncsl>+ClWG)fG`!)dWbT*?+a4l<<B5k@/@"ij);8DG>%<ap:YH.6he"S)4oZrLRGRF>^Tjb4?RfantPE(i>.a5<<B5k/AAF;X5dqY^f%e)mdIQUmAZX^n5;Hf)7chah@.qB/eoO$h2`hPfBCni^_BH/.Y6,p*1nAqe]g;Xo8CkBXSWn(ca,CI-`\9Q!cos$lYn)bFe"T;!oSj"g/S3TZ0.W-rbYr&191=SZ't?#SWu=O%&s*rNkR3d;S*FJ&6suq(;Rg=[AsF2A'[0_NmBK"BrfY:<%EKI\ZE<dbYQo#WEk;V#HgEH$fGHZg/S3TZ0.WdpICU*E`o$W"017ua1&(>eN7qVC=hFiJa8E@!dL*/G*TjXlo?Hig?5bFKqk:#lGhUB_#6(F;S.tLpJ3+RgTBG1KAWSk62ki_*(`=qa#Qn:mq\kJmV$IZ[HhQDk_H=,b:9F`Q`nSsacaCLpGI'^gpl)$c1gtA^V.&5CR3[S!itkdSh&[-#2@#@o!koMH@1+E>8rGXs&4)FC=f`Z((03CNXF+HNAEBbCTS\(EU,51a).gc^)a=-q!"V-cu8k@Q^*u^h]/e%PNAT@^:A2GBth':][TW.M3cjq!itkd5/WCD<G(.@rCpbjS&`iRWgh#6E-DOI@]<X'E6"8uX`)A`Cn9=_Tf!G=Kq#E#b(Bsi)iYg%SlM?5XXTbnY7<u=A.\7-Y^3!%8&ccM<Yug(bmX/JYB+_eY7G2Qle>HnXVtAsR?H-0q-Yu>q,Y'=#/c_:n[`.q7rI$q7<kU9jlrmg>8;;dU"Zmp_09+7lZfP=WruJ`aU=H@e?5S>(=7@t$OV*JRlnDh52,!mUI,J:Nsl)*M9##YF_i(!rg@[Ng%ohDd*Ks?I*S,2UGZRSng>KK/=EAr:R7ZXHae4rqs=--0_eB<V'\(D>1`j.a>4VbAZ8tU)=P4:?:e>@mg/:Q^Q*DT?gFhc*dg->%ae*hXi#=sgZD_Tc3='T=c:TDo/\9ARbdk,KnGR8e+E1P1/o)\qs=.X=*+;jb5W0iC"C-2E'YPTE%+HI3\kV(6([&=pWaMG>HKJ@ITEa`?O(eF'o^\iid^m^G/q"hrY`2nMD/`B3Z%#C?=1ofj[XG,iTJg^)W$1;;d*f;-arH>N+DFo(\-EoC?lZ7e]'*&67\4If=,m?q.I!?q:<m([E8i3DAtRWCSb;_YSrR+\<Nh5*M[O'_3$h)%?AcI0(#]J1rt<e&rbAfid^m^G,W^O\OYLnK@[5IJUVLficE,P%Vgf<UeK7n_[]G-Z95Y1VbECo@3"ZLo0(Q?^*I@q^2KuV-*S9u>e$#pFrd\DPhkf@h:LWSjKe>^\4\G)Np:l)R<+-eR<8hMH%CE^f&Cau??_I`ST'Ai4Hm%lfPq#;SLiU69i]=3bCa^lhn'-[^9u*Si!O'Jli7j_R1#@ee?5S>(/V`@ZsKD3s/R-`lFF#5T<boV.rG#LY8(KCKADm(,A39qeIK$:>)r3d8$*l@!j8+06s*JrD/jZZ06MhplZM@ia7+"X?FPr/eaR>/K^hc7h?07bW_p0u/Us4GVq\W8k>pUO@P3-E$qi]l#J3eaM(`GLp""uUnSe*03s'@5YEa9r^hPuWiDPuqFgT_l#HUSMlpC4(G\V<T_Q:`>)>!^JPN;fR'O9!_]1QHgbO.M_J#@I#TXqmWgegH3Vr]QF^MMTXBqhGI*V"'rDs%mApeH&M*sAUhaCX1:;RG49m-c`,E*5j$.Y6-O\c(1I[&[Q[D'Jau['nnj5QA7jR^^aN9C4dq0Q8%FIkD+Z03`0m$*7aT4_O75WRp&m"L0uF?+;nfS'/rR(`_>RAL1.=[U(#&,gLcHX\M%6;S.t>/hUD^XMr5m#.TJcG*TjX(>Ns8fofBrkc^+%asW=OJ*'s,[N9WEhr!k<]Ar7t/=3coY%+kt$We[A"n43=m4*\;/@ak:-@Gf5=f-)-n#pruZLY-daCXa#pq.MKLTP'c?,qQK(G8?5$fGHZg/S3T=`D]44I>`?>NbnL=h1W,oseenYk&*l=$u;XFY'rd3.?:VGM6:heaAH+?i39>?Z7nXACf`rlV>VcC3S1<WIJ9_'Dja>Yjud]_9n15ptp2Yid(#Zd+VVsCoD[Jghu!.L0VPm]1QHg$a0<Aj#bmX`"1aM92M3arFmUA\Fk7$NjNghcK()qhOK(Rm5jrHin!`N^\s1L)tJW"Ki<S3=gJm9j7Bk[2CR?nDA$>d<CbI[E@"[']qIj=H+pM-m\m8"1H_h/r2G-,>$JJ<dF0I4ZFH`SQ,%.c>lTEc_e>@8<B)_"ebqAV:bHX,^qMuRN&0/<Z8^r-]8lHBI4G\0hj+As3k&*kXn,gr/^M@6D<S0jG@_Gar3A-4Om;1H:-E2@5%i+*ZMaLahE>^[a0uQB<k^5k9^A1#o<hRkNfW$DeBu`(?O)"YefPS14oK/$VX!D5=.pR2fkB&VWs`KI).@f:leGNp_8/K+d;>pfdcsmmWj8`3H`aZU"BMkS@_NH@$M#-jh9YU?)htZtfDfT.3Sjs^>A;'?O#*`.2+6bTXgIC"DMccX*TmVQX`G!Wfp]?h4Ft"(R>rO_PnhMHI*S,2UG[-dp.a9acL/S&/j+/ld/'[+N8Et[F5k(0KuJ+64IJ9Ma#3h.(;Y,"=rG#_K+<nG5?^Ei0N[aIBibVBB!iq5[mpqXPrj-MfM8j(Y2f<Vr5e"Y=jfA*pq(0DD,TLRB6S/CA_,j^`k2f(^[UgKWcMj2`CEZ3lkZ?48)#'+.1=b\Ms!o!ajD/e+hjhWA%A[glW:eD="nDu#IpE1=7oF[h9M3h[U5@1ljK-5F_#[@T7S;OkPc2P]";B7\;_R[XN$Hd)4Z,YA#s1kicE,PXrc&_h.90%(;tdCEH_3l<'E%@H];?PI"iO[dVZ%39K1%d0]Mq](qP?,4h(>FDP\(Vd/'#Ga;)?gg/S3T=`@Ar.pHc?0tME9N_H%63@sb;djdRafF>IS][nmh0l-;>@pTBtFJj*N`-m3U9cof&'*Gkukj;T@-Di-8><I[Mb<O0n%t=9.dEt^tIcVMh"\\54J^l<]Wl()R[HhMn5Bjm6k2.D8-A(X]N`X`(_J\!X'48d<h..P4(8'XY\pMYtZ8(gOj4TYj,O>f>[5q<K^W>X;NJu1[UI3=24@`o)gfiMN=qrCEcaPYdUG$s]Y$fht%WF]AY3Kt;9C4cDmks3]\[@iTrNC5q2a=;`=WXpFl/rkb)Tm,RYZkJD(?F&<4<I6.jJKd:%%_=eicBKR[uP1Qd$gFi'CdUZ(519/eacDX])rFE^[1/1#I?:6q2kte$r6&A*QJ`@&B@]R<h9p/h!.l0,$%??/[hfWpX09O<%n3a^'mH<K%EW,8mjLaY3Kt;9C4e6mIl%k]Vr!Ac+Z^cI+bU?k?db+LW=V#h7gOh]B/6[C0(_C`cD\DAZ8s*r;4sD3An%5GPq<tce6UbANf_#WcmQ6I3e&)+9$QBSDkeem4*\;]R\3$kI&=4j(0_NQgm-4F'/KjfrTlJi.C;UiDSaBJ=hqH!dGQm/E"A23T3lsZ@JR/b5uo*\Lc[TloF$&QJ-I`J)EBKZ2bqXWEggS)LG5hPbiODa4Hs.5;Y:[')^,E0'qp'd*Op`G_o]XQW;n7;c\iOrDT`p48*T4-YMG'EB%YV=5shFRbNPDg61Lorq8hU+`&^;WruJ`d0Z/Fe?3<=qQkGTB`7-=\fjdq/K1XhHLM(COK\Is/h8`E-f1J:DtP>XNr1?<><.%:\(9W(Y1G"7[Ng]tcXkqu5(q?^]1QHg*i!['9C4dO^]+3`CjfLt@-cTc%@b5?h4U@tXF8pHe6`ZsP^FLP#4jGR#%r"'.h"&uF\XQiH=Q"`_PX>6%B[M*Y22>1>/qm5c]mTsl&NZtc?@)XO,QSU8f,Y!>N`FEljc@iCHI-OQ;"hGnMPoJ]iNie!in?\-k*O=drkCd_-+m$m1&imV03m0f8%,\X$g4&j4sF6f%9`(ib3Q.Z!2^cK7WH(*:G4512HD?@pY5Icn3p0mkV!bS:d7!B!$+(_DkOnDPc>Y5(5;p%P.S'[utS+b4f=@#bP]\li7j/mi`O\n,0ScrWdRi(\(Ya6F_WDFrb5.o:G]B[kFuGDaQnbO"P=<Qd+?kEA+X6T/5VP;#Z.g6F+lrpo7"`K,i),<A(hn`eBhS45P\^c[:GgeusHCG2n.'/[_V^<`;3>ho`ge[t!@+UAD#l<`ff@;cqUX4Wl@n`P:Y.)<^.(Rg76Ce?1%f!`I=Relh+FEFJFBK7S.]OF.&MqZ"QH`cajggrle<kDX[l4f3TB[iX5Q(j6#tf,4hNm89psN+>Go6#GGp^Y6I-?-'*Ba1G1IRI""hoo%^_62g<H>%q%EXCc,J&/:-gUT7`L>:dOKFZ2aW3.ojkU8<#RUG!b+On#tLY=Lqm3s(nZ`[2q`[k;6X\/hho0=)Fd1ZigV6Th>P-ghAD)bb3u>Y.a5"J6+ti$&h)Rp:V&/ai&DkUi-;r>,-9r$,<Y<sbtjN;'FOhV`2<CTmbogDpa@k(,<>[HhMNZJFu^4'nYnm2gWm5@]Z^,2'FXAX9k(qJU5`WEG/*nTiqRjpF,%M>NLH0F0i[nA.P*;cU.&o&(a&T&4^'qR-24PAI^41@%-2hU48s@0a<8bQd!(E9-o^EmKh32q)73D,P!CEH%BP#;*@L-tcn!%Jf<A(Zi2I@G,OBRApHLH<,<#ouKgtA`9N0e\]o4<6r^/Zb1\@aK3ADpq1Jb'2PIUeF$(tr4K2`frDK,5jP=<Jj4^%29m?,njgO#`$9H0$e:D@MsnN2=1gWoXo@H97m<qf$'\aHm4*\;FS@K>B4ZHkr/<hr@dBDaD@G?2JeMRMV03l]8RuiNM&4M,]1<ctR^MoA33TMD#HuH=_07H<WruJPb1Q((AHh6\/=3d?'cYB&e?1%q2)KSC+#fPT!RAbtX`J!Rd)RRD'R\A-]1QHgX\;]<0,gXX>3Aq%m[f\X0dpsWUg(6Lo3Kn,^ar.G3_Ua-N\b]Y!;t2A]1QHg6[>B_lK5Cdllom-0MCdo9HptV\L`8d=__"EXQEi=(Z=J]?%7[?];9Zkjq1jR>Sb,m/@DM]<b'G^Qa5,D_tjJe+dWB%0MCd_J^rCo_PJfklSuWXPVnu?VX=7Gk0SlD/]dk:eT+eOr?1b#Kq_eW3uI8o/8M4j-*S:l(V#^+FrgJ2TCQni[sgBc]@rtTWs;jO\Ye9HZG&,W&*cWlDkS"25'aC*#?Y_B$*;.L"tjJd>t=_a>(2-4;c8)A=(JdDkC+JeWN[;\VQd/:H9b`fMLX*;1="//Q>WQ].@7Gh?FPM+S^dOKII!uY$57M)?f#Or])i*i<6+g@k%]0eHF:r3"hdsj<<B4h[0\:+313M*B`/0GgCsk4mq\kJmV$J-n_K2dn^/u`cVphiBrPB.l\29`56lm0kI/*"[TIttbIjQmis]CL=_96LZfZBf_Wm!6M6h-OO3YS*(5i%(,.#f[A,Rk2"YO8`>pZ_DIG9h,L@*(%VH*YV3kLmHj5QWgBLD=[h(G5I0>;%t?,sm-hKY=L^5ebNbPH"h0EsE'IbBM4m[MB\j+&.9r\g+.9Q6Q3r`GECJsP+j!ir="Eikdlq:s;4^25HnjT3oSs8I5GeN,&+<k!HT<S:D3i([X&E&L4pc>?Pu*'?%lh6s=0XaYDf.beEff1NZ8lFm/j^\@Q%i5iZoqs^q&khJjijgRh;(qR`j-c0l0(8&//H4s_p[c7T<j!c?lAiaRh#FA(dcqq3Rn#SaA8:YWI[BKa<d(W64d%7RJ<V"5@\N#>Rh&s/9Y]X(DB>0XAlhOu8#<uBZCG7bXWEmQkm"g`#.q[T,fA>eTX^erVo.C?]c!#MWcKjmQq]=krie`^YBtLYqi+.pjf,on`>gQB\8mjMXaCPh25;AMT3qA':XF0?%Xo<#'6NL_L@>C\&*So6/kW<_KgkY!s5._--S=7V>Rb*s;jKbeNjL8Z24hK;f.hZ+<;S,P/246VaVr5X:n_@DMB!7J)^q3I_@Di2Uc7T'T>A6MC[,)hs9b!T/bpiIhO;npW>ADd;\eR$1n`Gc#7t7r$[6#ISZl#$/WsWU"BA['+LgZ*CMpLp=*?PrbQ%,*Bj2k8iTA$D2<Wgt_=56X!`-9cSCCsh)XG%\QJqc17nWBq`G#T2pDQD%$0uQds_T:504a2"$PHF#']c6Q>jN0,b\#"6gUT]#/e=CnmG*+J'P$*^hNTTnU='I(Jo'G5LP:X,B"BH36[W,6U=Vud0bM&+Z:![AS<Gd1`H')@_d)bC6?#j(,ZIH%P]_OK"o2:#Yg\$>X><='r[GXdVeBT[k.H(;ng/S3T.5ODrg'>^B%8?H5C+:R5Wgi9f<OHO(?H11Ef=RNS+120QSeXZG)Q6\FI^lro]`(t_nk<DFU>h!\9"PRW%U@&U`Q,Uq\;6u)Q,%/.AV\"db;kbZopsVa[HfNui&]r)!$5aO>pZ_DmUqV6i]C"CZgTGVWEk;D#1k#b"n43=m4*\;fQ4p+/@FfJrkNZtAH=p;;S,P/2>3PZ.80%hNit\)s"nHccd:M%mOmklrm9"T@!M/%3k;=n@7gdf3\kpA##KcaI^GBdWZF1kjXIt0g/$Ec\B]"f%r+2S]AqKk55t(2Gu3$P]1QHgf3H4%=\J-Cp8pR02n6'5n*5D!)q'sM_iCas#@DEMQhB*<eg;OrY?NeWS3+bcbg631;9_';fMFos<69O2QeUo!EmjT]VI?O_Nn,!DoVjcp;!g<U8mjNC?.*.U9C4d_Q](G/UmmOnDd1Cd[?C+HG9te^1K@F*YJ)i1>0.#5l.8`JiaB@j=2QXjbH"!3##ejc+H5T9Zd7s->ZUMQj_r>g;uV[/i1%&embHKceZ-(4`29YIGa[.C^>*Mb2r37d8Z!`%T>p!K?FQAJIE6V@GFW[6ASfKHb6+b-C7X+Z0K=:jJ$jL&;d/#'LY=d>pi`UE^h]cP-*Wi^1>#kXX3[-meS`)<%;C$ueYc;ar4[ockDn+/+5_CQ*Z<_*M<]89;+p:;P+0HbiP'UJ<](e4177>Pc(#Lg3>?,?rb;Z?h9e4=9m3#6pma(Brsm82*G6CRHus8oCZ7m0h:CTgmPsdL/"*pHm(Pi1'Q+!,(MC5>I;u\*/-!i&1-/c#Okfm^DgAIlWruHZoOs07fXZ1WHmH/gKBB\pPILI5['jjVUSgnHKY4.)*E2[LZhDq;D0C<ZmbN5jE2`?qdW_pqr4'^$f5#SH*&27!R;t*53`spmZc\Du'#X.L4[*oG/:RN<a,M/,8B0<b(j'_(SDBWHL%Oicje)>UoCp$FDt9S#F`s%cC<?dtApOD-/AI0'"6IC(XZS!bCC<lJ:2GV#QZn)NLA+aX=#lG5,?s?>.LZe.)N&E:eWNtJ\l"`0nZUP:]8l1DqY.b6m\fWsl7"e%X48P$+)5@8_S;5,#l6E)f"l@Lk]V>\C`G0FnX4VXDo/PUPq3m^TKI$_%(l!%31+TYh9H4W0VsC<*;S[J%Ws%,.*h`M,Y)uIS8jW(6i+GJeSCD1,]::V%L6pVI=4mtgjBN1YEa9r^hSUq'Zj?3=PJVRPE?!a9RLe$+/mb!]-#i(-X^^0NW_RM6YeC/=DHGBFMh1@N)(>&__X6!I+[jUTN)i\1Sq*-`[rG,1mtkA-Y(`e1\#)F*cTPD3o8ZU9m`\Ed3U3oHM-4:N;OP6aZ-f3*I1Hk`LM>(9aiIr5A)0s>CYp4hD/kT#IpG#2*#o/b^/7ggn_pH`[3mZK-si<6abTP,qBtkkQ\k^#!Wee-5c`ie?5QhLQ(YVs$l-;EqMu3^11C%%;+MkG[FIkVsqD<S_94q\>C6#C[jDKYBSdhF(\G6`*%eri4D.0TCkRHI:SnZh8j5<hUdmKII1'r*#d?J0kYCUemUX,9&@n1!QiobHBYhN<n^OTX3%HbT/$dsE[-\t+,V?C2ASDcPL#oG5aCMuJ&\Ut+q.XnNC15cpcSL\\2e-aBq)b\G["q7dCQqFG@p/2TB1(Se`g5-!h1.=eSa/aF_8TKW&k]gB9aiFO3H*V(2g]g/SpDBorLhG2oE]KY;?2CL4AH5rE%d]e^K0IO3a\<(hJfjOdUBnB6A.Z?pKl2V2VW^eK[Sug-j<C^5fScYEnWpU(q3$Wnho'5:ntlDS>_<DX]`j;:+=dJ@l6N\XRnKETSoZ[<HVP6-!2:=1qYg<<B5cY)Ut#1+pf#P:n#8,lT\;4@Xs<7gCM-GP#o$>AoKg\(trDcpa"JiEo7F3kBM^f@4)1^?d%Pgtf'Na1Mm!*+h4@`BAk.pk"gc<<B48V')YrZ8VAtgM0`OO5rhaCNFn!4-B<Bn)q!20%5jQA#;XHCV$?c*Td74R;6'Yc``QPB"Bd==Y<XpPEF\p9rK`#?0:on/[_V^<`:>pr[mC&7Gil#T;lHcS)[`GCs'APP`O*LOV3msROCr<Iae]XhmI2j0XdCme2jir[_YC(?D`*LCqNg&Fgr=I3bBs-ju'qC/@DM]<jOI<ZYqGoE^Sa;:><-3f2B3jdg*$C/dpTGQJ,=?X6G)7B]<2V<.;'R0C5OMdgE-YC=cku_0*h1!BeS(]1QHgp7-(N9C4dA5B%W`=TAu=e?0EdNBJXob#5j3j6P$jT-jNN,99>c`K\,kIE(.RcX4_*>jDd/:+kj4R*rg]-:YE0`.(im`ZMQF[gSt=ji;YGH^Mu[C0(_C`e+[PAZ8tU^@`k&.6DHB4+"@to!4ZJAToY3*a$acn,$rSlgq4$?MuY]>B]"moq-=:CoRrY*N^pgku.70=16V]&m1-K)I1E_]8lFun`?sY2^P*R<e&".TDh$T<TfKfP?#SQ<U8ODSo:GE@6#7^-HZ["@<\p8VSZAZH$ZmY[(O]+A[O/2jq>.@Yg68IMT[$qgL^?6W.Om;60;fGE+cUsdF%N4/*13/_C8b#_CgnN?GnV9,@)]nDk5X_YWE-@Y5L54-oaAG4D;Dj/,4:d[\.D@en_*f-*S;K,e0)8Fre^'I&8U#B63pcG,pU7hItmeJo>/$K9O"$&RkFhmL*=0^ZA*hZD$4M.,3k4XMs@]H2T[B\]^?6dBej'hJK`*@cG_I*3I-$5P)!&>CYp$>]#9IH`aZU"BOPk"IHFDY%,VT8nRf=T>%)Vf#uIT0#UV0?1=+;Lb4E@Eube"*X'9[`Fm?JoV[=Am5V-dR40kXpt`ft$[(d>o$;];ak!)1%p/)Xb%<6l!#O]f"IHFDXs:8YO'`-lVgK8':I"WonbtRoh^Rl@QWG\Ros(?9E;*?_Lp3t%b$.uW?^]NEKC<0h8/=$tnMre:j#R*_i!rEb:`_ML"qs5b67\4Of5^D)q.I!?q:6X8&!urjJ&Fdg<n^OTX76UM93H#]1&;NF.I:reK3+kB?oII>_>?u1J$SX@b^3ggWg+Rb=`6Pe"sc"5]5I]+Ah?3ekOfY^!-.tXRnM%Y`@(Z!OdXsXdCU^XqW%&'<ZtPNe?0EdN@,<Cb#5j3f)Bse<TW\bp3Y[9a8=V+fYL^YYe+Pe!ETZ4o1Jm]N)d9NTTWjOALg'Yr10A$)Of:TmcPPN!DNF$rpo"'f<K\j:b2@rpt>DG[Icq#/aNHRjC&1XZIH%P[66/"*NJQceK8p0YJ07#Rtti4)[ak?@gFQ&/^*[)Sa8f24luILeMr2KbL&ij81TWn8GPgOfB^Z\O5XGl?>k;H]pe$`RCf^4TY*Y7(kPdDZXDu\Y?"[%BsmVAD!.B/G<+-C?s)D#44o7%8ZTgS@GH0SXb1[RosE_;c`4E[4f0-.d.&+mQOA,A[&X=1;a,&L?i0#o`ie@0leUqh?;n?-YP.i!q\[EuYB+_eTCm]E8%2mcO"sOn2euh,\=iT.oDcSPq9OQiqtYaA-F+E?FhGRu0ji]_c7*2ZW;Dp(],TuqcH'S-*#ZaDa[!Zj\Lc[T7R&O-I)iGBL2V<^.tPlgSc$#L!5<:#_@?R]Rs/2K%_4-@LQTa]!1;%n03j9;(;Ri/AH;d)kFEEl6S8c)@H=]o!2_jQc<L6k`^Xb-QK3PlSJ+eVYT$&\KTBJoho<"(lf>@K?a:]16Vu=gH="QTPs<tp[Ak[QN8*P?G+P>5HXuY"a$6Ni8FMRGUZ@'lR^_Lea^kJQ9XepJ3q:JY4.2ffg\<;[ZDr&mD.qgrqsGB$qJ@j#PL<#D3El#?VcIqf*P:ID%4,O[ooi_cm&RZS*DX0J2qM_5JnRb/l\AF9_;qm%!2_8RE6@'+DbBT8Wbrh[<nOFM)GGNZ&72h]5E)gHJ#fdliObmcT'YJPi`XarS6T*;Gfr`\]cYBieu`\.<p'0f[=A4'msQ6R]ot6<QI0<imC%JCESCVa*18SW\D>D*j77WYoCp"PPOHBV39/*'fTO(;#?6'"3k&*tE:>4R^V,tA'E$3'M[t0=QWt:+^hhQ7mU'hggFCF3jD2rZF*@N>N%h"g_QDs`JR't$"jMATR<Y@m]7jEI5c3en#[9UWqg3]jWE+/LESGoh-dLE*j0PKg8)imd]J%R]@HF-W<d*9cf==>Bm3S)&!&3.FHh-Gk/u\0@[WV&iE:?Tb;@t6%?Qs[6E4'p+2!^E>DGD<WfK,]'[X7pc]?+Pd7iiY$K2lK_m<0XUD/eM&3/?Y_`:98mOQmmW\OK(UqL$5GO.1PV@C>Tn\*10C>1`iUGfso.5F"aI8iGi::&NPMmbJfT79f2tY7TZSAA@+@W[D+)Sd!AbjZ,N.LC3(AWo(h:%n2il3,WiYSF*b6nSq3^bg;_f9H9[u$WJ_"`#/e?0r3.];S>Qq8E/2J?@qIOR9o?oH1'uEQN[@CgZWOc<LDI9[gN.M>PE"Eqk>+rn(/a'dLC=IL7j^%a0VFAY<9kgota:eR43,<6Z[N[^p@(,I9$5hg^YqK]BAFsnN$T1b/DtMDH9<M>::.Vh"imHd:\rVYQFmpf%PKmInf.pdXs,kZA'CIju;/SN,V>MV'H!IhgKSA@6=pdou_?'?=3;X2lJ)gn)C=8M(RD,>h-$tXVGe%cK"6CXRR1>RJ4[j\_1/Am0G.d$O$b\>JK;PqJ<JRFoVO!>44H4-99_oQf")VQL>snC8gRWLSAW+r7_MKX],hVPfJ>Tg\kPCCO2QIs"XEjR44Os(/u$pSRC=9,M\g;]q*;8LH6B-GPuO9e<:uBd4o?(?C(%tU(ub989W08eX!*95O&G[m;IB3Jegi]jPV>?#PRi*JmMNjo2IBR/-(4Rp?h?^mI&8;ia>t@CpSaQWLp[k(r%ilQ03qoqJ6]1)FK7^pigTd2^)1A=TAHNIJHs@5Q#A7ZGdQ-?ekT[qp4;*eeu$"k7)@;,EM(0JUKKKGCDF0%\uNG$NOQqgMaT^ZTjc[^mE/S!<>gVSJSFr/dpTGjK\acVXr(@f--Ian1\lc!!(JnkCr5`b5uo*\L[`2kmkH!^1p,Qka(:Z3nj4dg-u2$D.lJ<&'O_%jmPgPXQ`g[e:/J88EIr4rr(:j]f:A@8@CCb$cglsl;-kk#=:[.$NOSGI=(jJq4(gRZ?Eu;D-i#nH9\F\q1TWi?a\(lI[eO7gt9^n7r+^a8G49Xb)mEK/>b_8X#;oOrV?-&"`R'dlY9K%!chED!7R4JatJ7`^F@9S#,$*L=^eA&C,#0\EMIM:h&cM@?KG@-<<I"o=rp]b[!,*B]KA=p^o?_@0s'_a:+iSi'fK.%][2/9/).2kYINc-a![nsgA5UB=/4mQ<k8mO7Q"kRX=spl4L0:lap=&MTfg#2DQCYB+LF0BS.uHEk4iJpJ$h"dfLmh)!+<7dCJjmod43A)jD2rZ1GRUWGE^A)Z0JAm21X74T7u+"Jlg$.>MTl$3d>h[AUjM;-^Ssp-4X>7bWW^NP+F_$j78l3ZT8^0oqnbe.Zq7E]=Tc.!*6^n+6VtFJ^qmd2JZ_+!9!7'Q_!D2/u\19F\p2?(WfV5Ip9*sEQlOL50GacA$*2N_qsslG.eE(b^/A25-O]dg&*uT+.oVmhb`,):t*Gu5sp?G[)$1ea;jY8CB5Ed).nm"2t+OUSZj9("TU5^k)J:tH"<sdF)K@C?gXD_>=1U.GBk^m*UgbF=1N4PbK.;tB3o`T^%Yg+h96/+A(E0VnTd8s3-<Jb:8o;]WqNX+@?/[q\@dbS5DGT[\qPXm*!r'lQ^rb7.0!!7/)U27n%eL]lAslj-'nc80\bf,8?;7$)r+ffSZ#a[52,F56SB\+8;<Sf&U*Yi3-=.ug[uJp1$b+fpq32FATu)ac++gY-Z^h)S[1e.[(2mloLKdA07\'.(V^&.#Je+8Z2am%C[LE5c=MD^Z+Ga$Zp?"+ZauE4hNBX4?JRR+j#Ns/PqTU.'ZiCJ^%*/8f,)aY9UX)+j7=csVS]m=R]O7d3'$=e\hMW+r[,;K*GG7XaK1(9!._OZL7s"l#i:N_Dp&g;([?E+<*tRCBZo?6_H3,Po'.'X0iu8+<E1(2+RJMH?9)'B!C*R><n$u;PKWgW26Sf;2Q3WuT9RA$o/(M^/(C6bnu"e&E@Xu5Xi;6s>lH,gQ?^=XG+i*fC@PT^]u33p_:Pf8iZL1X[)O87BqX`;QN[@C>AIIBL$e_Th["g8Zh)n^Jo>hFg+IqZY<5%>fAH>'>Pc&B'RZ*L(')-lh;:LohpJ"N`+Uj^C$5r,_u[du>52:5`6QG8X`,#Hh7JLP'RZNX(')-lhJ;%1cMh&a!+.(>"TU6IG@%ch\L`8dOime+R*IcH>_cQ"^r+6)!<>gVSJSFr/dpTGjK\acVVD"fd7:W[p\ji_mhkY#)>p\L1NX.d#.^L-a2d09,C._PrI-l/PQ'G?e*AI_dJM<l2@#l%pIica>;UZH\I<Cs=TAHN9mPp(Sp9,(_q^]5g2>;l13[i2pX?<OW@>l[;8\D0YEm?mn&iqH"g]]I%c+5Ai7pA;8$`#ikI#Y+,][&cOB`P$^i\[r>P1-00!)cXDGI0sCmsZJP\`9]eRo`Lb&>[]ZCZJ!G6b-OIo'8@HIKK,4IaeY7jd9Le=>c2CTM]L&r^/`F]pD5h]QIL4?kUCiN9P[XK$ToLSF`6h_tujHafstF#C#k=3FfBj?#HQKmdqf7lpuaa!nj'6IJLZ$NOSCEej\oHLjS+0N6E",]cXU=DbEFD8,M">o5W:ol]'UY3l:%ie_.^NT]5jYj[h7iauX`,F:9-?I,W!\AV=KeF#ue]mR0_I]5?>D]8'0_S/!J2j`K?f"qms^tV]6+Ptb[?8l%p#Hp$IhE0S$\#LIKlAf06?C`+-)L[62h?2TrL2P0WR"I!Qa(3?VrQT]NR5M0P>rZ0:mX$0Bo#Oi!p0oG5i:uW^fn7ampE8pbo6:7BS'1:ZCLIGJi%=QGqtdNGXR=d$)M2&3pmC+]<q+\(N1i<=QgI+bH8;(0.mpmbFcYbk3>BL$(;"(>+5VCh?d!!a4mI3![%=eiTds,[1&0b3G9&KATAB6i2c\Y:N:(XbUH1T[eWNUr42T9rpGXko0^9sN"TU5\jt3QY5e!Qd,1(X!Bbe'_M`*5@RCAbuUUTPU:s[L8ES8KrbQ&[mE[Zn&/WPkhO_EXMHmb8GSCakqS@UmX\Pi6MHYBu:]+C<6B?op\G=O?Tn]A_[47)F^AU']PYQFmp2X?oXoYe%S@Nt$W)qNiWn9OGghi%)CFcYbs75BfBYI^hiWq@b*)2e5f\ZB]+VlpW])`W=KkHAp8p$V?KqYiG%]?C:Cp9e*fEce.+r*4uc=UR:k!,p]&UqcrD8%a89PQu$uDq.J&T*Ft1CT^.`3icG6ZCu&WTc-;kpij,3UHpP:OiOB,iiJH40a'APnbhL'0eVgQ8UboJ?9e9JL;?tlq`\1ZHuEg2Li7oHMjld%?,s_>Wh%Q3l3M$K2qkI.`D-0r-Ft"l)F-6QC3d4>ahhRY1;aTs??00K!4+guMgj``j!#`+]r@k$3rDOT??pEC<hfs1Y&*=%\\p$f/dhYe\d,lH,_+jHYMoA=GMuuATBga%V/f^gmEbQU58&.<I_[CRep/FT"j(<V!)2R`!j6%@>Sb-8a^kJQ9]qr_Y!XfLi*k]P!!&nfc3r5IQNck4E`iABds:,1l]B9kGSmtB!.a=2r9s5`25<$N9Cb=GcA<o;fF9&i_I*(F3ZdaeXNN!%/:`M<b5q[2DFuPIGR`QP'HR"Aia!^oonEG1gDA:Fdqa1@\L`8dOime+R'+YEQ(RlOILrGX=P^q"VcWI_h6sn-"lWHs]1@UWqHJ[(#i?r1nmiiSnbfeM1gcWb&Cj7N;;Khs/dpT?AhE?L!5+SbK_O)f03X(!%9lYlYI"-!NiMg's31g*\g-!F/fE<%GRb5A^/MVPi_@O+!Bc<G(')-l6OA_m\ZG5`e^*"2CH.oB\k[oMXn5Inea_-o-CBE;k/V#TkZs]`(;Ri/AH;d)Qi*r4gSV41YZ5meS'sk`76qC!kB<#J?73T5aaV2`<)<F#/h=H\P*bb-??00KcSB9E#6<\aS'Zu_#-CkE^,i<_U2C#XY!9)P;@sCaA1fC8?S6,-?3>-as1IEu!!)/,rA9l6mgeeo%:rON,sb&('B,%s"cA@Tol2Cgf"!jLo2fdQ[+G&@SBLcls0'[srpuc^r:e,/r_6qFAH;d)Pg&WEqCF)Q`2g*)S(%C$EZj13;(I1A:P5$YFRW?Dk$+f+S10L$X1$b7Dafp?bZqQ#Co`-CeB@$\!$5mt[LE4es*K<H=6H%RltbqM6hCPc?7q0)GkkuP!!!!AoTS(LkH?>LhfSFn?Ua`IAKN#Lft3?h!WW4NR.LPeLKkSp!!'suZJ[e)Z2ak)+=<EYf--Ia!!!!R\Lb6#\L[^\!/Q'cZ@]a?_1)j+He,p"O!iq_o!fCE/-#YMLh2`0eRLB!WVlYjkUHCh5GJFM81k8M!!$K1cXhNR$EHkqPb6@WPa((FkE^m?RL@9=*uIWd`dn;km/DeZ"QZig!!".-bULLWh+I5q%jd#e3O*,RcmcRk8-UfZ/-#YMLugiC'mu`iF'*_'H+C#)9db!bq9!+Q\L[^\!/SUDiNE$[>oro-^@dnj>NE*40')m5;oiMN!!#88cHHD;(\p.Iq:P81bGs,HQc0c^AH;c25j[pLXF3gdAT:Fb=TAF%&8S+X2Lhd1r6';6791f2lZgr)X6m?%n:U:4Cmi.@(P7+XAT8d%/-#YMLg;/Ce'2I?,36$0!!"-bOn;NH)(JaM>S[;>!5rE0i&]r)!!!!A-C4nf+dW?4!!"aa/@Z2#/-#YMLrj5EFi\+p!!#8X/dngL/dhXZ!+KtOE#it%!!!!1PKSRDONR\*!.^GA(0lW"('"=7`8n5^3omRH!!",gQNbtaQN[?h!3m>Z/cWKEZ2ak)T],kGr6IV-a+$&Hn+E:`fDXk^r]V2!*Vo0]7$_'n!!!#+r8:L$SD`:0(6A"OK`M/R!8nQpO+6[n%Klb3!.ZS`b5qYD!8nW!`W(Zj3XYof!.\i7F'6poz>Ym;?-'nc8!!'gbZk?Ni=TAF%!*kLg('"=7!4NLeZD=f,!!!#/%_4+j!!!":iAKWH_#aT:!5Oo-'`\46!-]TQ"TSN&^g5#m!<<*"E#3OtzgkAuKzG9N:V!!!#7?-$RX!!!"<(NNXY!!!#SKj5An!!!"C+dW?4!!'f?aCPAP!!$sSE`iAB!!(f.>S[;>!!%3dQN[?h!5Mm]AH;c2!,r`p=TAF%!8N95('"=7!-]TQ"TSN&^g5#m!<<*"E#3OtzgkAuKzG9N:V!!!#7?-$RX!!!"<(NNXY!!!#SKj5An!!!"C+dW?4!!'f?aCPAP!8Q06!!(r$If2kA^s.+I!3<Bm_=O&GE*q`\!2DY<JCRcri-EO^\1dFiJ5MmY^hTrtn3#hjgm@gE^aRM=?o?LuGTQGpm`YM3@$G:/YSugK4HFaspLX=*0Zp^(=H.G6T#\Kuq_EX%)!0EOXN%gVcXU;!I@7hMN:Q<8<b's<k:s1!^<Bpa7X9.WX0M*/o9e-K?fj!AUHCVgeQDS(H-C'60Cp!1;4\fDC92dO4Q\NVQh_$).*iB22:ap8*qL<<bPVNOP\16*)XAG,O*M3/Ac;`bb-M1PNHGc'a1R0(14K<Ajk0[9`juE$@p['$RD/`\o'??WA)2e#0sBQMb[1?>H$01gZ0oI"R+H:ajt?_04?J)D=SLa!b\O^Ao+upSSfPU]XF'G!ju(q\q$XtdcOO>?eie7!o,@&?qupJmB*YXZlQ/0LGn'LZrW4drZNF<hFUt(a]S?;=IfUDJf`A1o\d-Pk?Gh2Z^[PG\!,f[M&%l$Mi,%NlXD,fjQF$Pi=6^<H$TmUhCAioLR_'\E#G<nhQC2*!0614i@Z:Q$\GnZjs,kJ+ramehec@2DRUtUtgri8nDGFZ#"h;)BpK7CWs2\aPJ$TpolN!/]bqekumcC5r2^blM!aM7#(@WZ;"_X%BJi1Y]h2=-+i8Wh'J2b"i31F.gX@Y&1?ECC3(FPOQ]ZFa$g#TGH9laD2@ZBInVVd:2r_Fs)ed4PaQaI;R+^K+k=(BrJO'L77RB=EgZL5]uitb+&<&Z^2,+$9`XG$MnA_i>[HUi*ZCGK+VbISL2OAj+Wf]Q&f?iU#BkH?mPs7LYV=n5_P4[*$9:`&%8E`mU!-"Na\$\E0G@bRu$egrVuhdNrKbM4HrB/;D)8\%I65M\Fob/3_jelg,TbE/`2n)t/'FjbomIJX1K6Dg6a+Ll/4e!=.Cbj_4KCh9c5[bRCkUu2[OI9$5[r#?T&=L8.^pMbuTbkr0839e9EVELE6O>FshS]\>$:G1r[bZ:U)bISKGK"6():1<AFnu4aEqJCV-X4g^iK-TH_DT>B%qC0J0>nC8B2q,5.dfn!bAOc><Ao$_1*&RBrbLt)Cc4Jl7eXm=7>e5'dNfP876-S-e9I7u*dY$(EHT!AtB:-:R\7?PU/UqeD2ds-MSQsaZQk>j!oQLXDI^o1O#eq[PF^J09VN]1aRq[dcem4ZFbU&Tu0.$k#MJo_mkK)fO[q\:l\(+D8c\:qWTe=,P:3s.UHb[Qma@((c"P9fqZsD@d=_<c1_e`nM\PH>QAnh<Ngdr#WlTa0e>S`i(/dp5UQZXt4=Fc<nb6$P]ZJ]P>=g06`XF%4l!aM7#(@WZ;"_X%BJi1Y]h2=-+i8Wh'J2b"i31F.gX@Y&1?ECC3(FPOQ]ZFa$g#TGH9laD2@Z:Q$34UTu9eHh!-C4mOP0:EQCFm9?a^kKkE`m?>\L^jH>h6Sj@u7nuCJu&iJ#'3![Dg1Q^"DuFpiQ;4iE`cm`^+WJ^Tt]X37PkYm^H?[Z<A;0@EZ=k?Qb[mfAl&VAS:3aUUi4kXF"rB'A-i-WaF(h,5?>g[Vf<EVb`6SL<*s)`$,TIWOIG*ljRo;<DT0i?^n0c@+HKf2:2bPo271[fIb0Uh2An9QJhKUYQ'(,./kMcl[X3<k()mK-W=GmE;/TQ'R[<aeZWji4!(f2j.lp\>;!/0!gr=XGO;F(a@\GJg]cXS"2;j0*M#Uo@tMe&PrsNpcC/=*)3EYiR@B\<[SCOZ59FY+XPhj,g6ablq$skd/b.:;\O6[VXi&:Go;s9BDr(+WJfh*<G]LX?8Ini\?=9`9YhQS0g9ki=WjTAn@riH>B8lO.'6_N_N$hoF\Y/0lQo3&.2Cpp@1,n7Bk>"KBhG_[I_K%R//M6MAVfh&2T0E)%>IT%HWK[^<."FuFn9364e\)c$C&pG!@Hl]Bkg#.3>nES^g<Z@pDgsXbVdquYAChl1egu1)aGa;5DGGTEH1Lscga=XcF5PDdr94lun?$bE4ahq5],SU]%@b5Z.79/Tba?2c8Inkr?=9`9n6gsB`s9ZO.&:VGK(+`H?>@?CB*A<KVW?*#,ff3<B$IXENQe?Ok%;+%M3G2,CfUrpRl0s9%ehP,a.GO_F]QgOo(35lDr(-/[66<$8&bZi:3s.UpB!u>J-RSu7VG:TbM39[)5FmpKH72p8<E@EET+%ERUseaR8N,/:uP7La.)\]/Y091js9A!!l6WRAHhLn44MDc<!P?lnWB7&nrYYXNKYEbm_.6s$XfiIG1;j6G<pJtBKpXVmX&;9`c.`aecF)NCR.,%A9KXc5JNRF)3`ko/R7)d-S/nOh\(;7f;:8$dH95!@<kKCC^O?n(WNSd:(3_*S'(KuALK#VSb-<4mrbb:!9UoE?+XGC/*L@p%b7$D1j;61dV(jc_R;'n3ScGh1,J/u6]m6!0kS\9kDd\L:S!tB;f$Nj^<'LE>o[D%n^c;BRl0s9%ehPr\YEQDP9-f;lZ@=md_!Q7Lq*o1aqoKf^(ZtnbM6V)(cQn40'ciF(!KSTNWYY80'iA*YlHt\$S.=^3pmk!QLi1/rJJ/-DolSHMrb#uioICq2n:J!Rp6`18M9=8XK_aA-^P"La^r<AjK`/fE`r-GN<QgO\LcZ5/dorOQN_/fbISL*/AT6HAH?^i=`?:0/6J*@f"G0q!A7,"$[@lYK!WR1_4'Gjmc=Vf%K,fY+dWAfe$K;;f,]FcRP;p6h$%2Aq-.`3o()YZJ8772_.rq(4.<c(=9kKUCR1AqE%c67pL9*c\2_#Mi(Yg3c6ek]CQclP(MbS;`P)1r=hoO3>nF(>:ms8bbV-JmPIB8:`#9#&EH53tRp6`!9eHh),aWX,el[H\PKO$ajKd][E`oUn\ZC._`WBD8>ScfUQN_#cbCVUnA_kPJ20MpKqqL\"M(P;8s6*VCH!26Qo'8Yjf]J*?D='MGY-s9RBPVK%7VbYWoBuH6BA"q$fR7gDh'T#;n?nNia,.huBPOkn[9V;KJ)sHDD.Q4/rho:CqrW?V9MG&Y\P=bmeoicTIsJhuY9'S1RSMRWF-;0ZcTu!M0$W3^S?ZV4^7DuoI6VM05@o$hB.r;I.l+Bc9sqgHUU=Z^HMope?TIAeqM!\^UfY`?-/ViCG+X,oFniR</h<;'R9/Dn/I&hO1DZL/S"e+jR4J/O/h?bERJmU(I_+76LFKke\ZC-,G9CH(H;d_d;?-N1FmX$o&_C/;fgHZ!T<,I>s6!g%pHO;6QFEGO_(j'ib<!gQjNI.sF<dlI;VX\56F=UI?*_6=W#kCoH$\f3<e]?qfR1;F4W)qZQ.@q%7QrUfIpBnW/%MbZ/KNVSna/:-dnL\$o'VIX[+h.%UChZR#muH^/K:f]`N@Bj&6cPAE8u'g7K2(C8bmLQ53Ackkko1<1FTGe8K%?9UfC`mDGku)XBB`'r5qg3mKDn-:^poAH+oQpI/KKlXb"V'73$JnfZWD@K8CO^?2>Z\Ic;Z?FXt:CQ7VqbM%AGoUmZs@B-iVB#$Ln=&:aNK:jDfQI.5Yg!j.+Hf5!4[m^YVHJ&Pg8c"1dOh-DH/bdT@WqUP#LC7Y:F8IsDDDWuB`$')21)37IljJ8&L7t_*pk.XdR23qI9]-&)c-Liq:T6k)m$rsod241d4rT,*^ajK5ZZY%nbkLX)$G3ZLnrRodS%q=2]F?]J%gl,71\LCIeCmX%Jqh4'Ia4Ju30h6C!a[W>maVA`<4N[)iF>g'^j+7f++L]iGVH#Bn2i`'Tr%h^=`-^G>G@7g.Ic[@1leG]*5'#P4h"CW2iF%=#-K^G!+,uRjR(FI\hZkL+@5,ZTcDo0hi'-&'X2un;)6a(=Sj)7uc$<pGZL?,CecFT!:4;g^j#lmSShd*Qq0/^?H$p\\D7MYuAf:MG*Z:L#r?<X0C34Mhomg)Na`rD\oB#en^<=.UAfQ;n,_n=WX]tR%F?/d+khWbP$g"#&ILW]6br]lCgX%Om>d(?lZFY*&3JE+_4EFR7h.bbR)%K+q1bgf6r[!:^+"arUG<s;4N(39@Tdc;/4J(9W(g>JX?4HVQVTb_#=;a*KXBB`?r;%u2hS=Vtl'AkQ1Kk#2B6V'O6#GGp^S8nkbbn4p9I,#%XLZZ$ACfDu<W;p-<3>-;1_3X:AE9k-j7qZe>0S'pdusB:*.OVll9,&2g"0Kk`gG2.d9A6VqShp=bQ47$p"dr*[0h-5<6:OiF@-6E##3EI)%K,\A.6)tm[N.icJ/S3o[+EoH19U;';9e_%b38?)XNqfR>EroOj+THB%beufB<Z+qNu.XdF('83B).ESW?I=\8,H=_WLN6S@%D?,cqr.I#UiQ:idH6<e^?abP:,MWe4=]UG]&5f$Ebe5s;?elTA#CMSY7tC5r/`/e#.NT0ubp"035imlTdM3je0Qn"9#B(!NuE*M+.=DSZ);ig=pXfU\E*_B$hpBXHR3g]aBo$gkIo\j)&_8?OZ&)4IN_W'@5+he^G/bkrYm7XrI[=Z1\WrT3IGC>k;qFK:86Nb?q*Vt5qhl_^[_#>^o--M>p5IDU$5eqDc$`4+(0^\4rKDa1hfQtiDdMYd0VS&/46nZ%jWo/GcBMgt+kNB:@HV]%q1cK\2X!Jt$KEc.rH6,9TTP_[4&G-DA)P2KMF06_\uKC2fVBSDQdLS2M!GX6.nhs7oS+2cYL.EecGePl#pZo%pTpp;Ns[i5S$RXj3"]+_MTR#e[u;6#1e?a')$5DFY4c\V-%/1^Yr;<sh2*4#qr\>uYhH$<T]k[rL?VY05jRIY72S7gD(4(E`Y2b>^TinB.TfP1E:T2rRiR:T=BXi;6s>TNOh!T!<%UjOHcb"FAQ<q\+>r'^:1_M3X$),>L^N_Y]#'C&XToLQSp'n1&gJm]Z;]@tj%,%3UjXBB`@q/s+BrrJ)>`Q;]I9/cmsV78QX#)XdRC+ehJ3of?JZFIO<E`r*e<BhQ:fB)nTaCX3"3o2LI$bGT!?^"aG]pM^u(O)!H(2sH7q-4]:m-N&0!S8T`FYD<JJ;]W7!oE"Di,!F:YU6o^Ha1Ql>b#%7n0XJ*B9UMj29BFcM_u:.ioICq2n:J!Rp6`18M9=8-EaVCWnuX!?VG9U<h8.J(\u>qq+Y;'TsOWF]`'>lm]Ii2cSeP/gJ>BrebFd*k&t1?[cBE_^V0+69f@4?>ZPlO<)5WOk01[=DO$o?]Y&3`X6$XI0DN0FM>'6jZXu?$GHWKkVslQFb@TLUT5u8ug[EOu%b>7hIF=FNPK_a!P_J5!1,M)d`N[[$<N"-)1Fd=nH1hWtpTN2erP3]Vm!b=n]f<K=o(2!@nEjn+h6rJZ*V@8DNftNca4L@IK0T*MO?[aB%,LZl$n&SP/o0m,^Up(o1OAf3;dQ2B[*,F\c*Aee=h!8N*17qXh`I:2rBB).>h4nAnuLk?pfo,fWU]Gde[rEc79jK5A.rC!r(se4?cj.r2927;^E'=+'E@5k]+)1-aY[9DPHqa)4?8cr4megRe<>s+oqPRL6d`?F7D;]?f]A7Gb?[S^U^Q;KX`I\]FpHtsf=I_\mErac'OS/]lRTNIf8!Dqic,7DjKE`TX-YIVV1Z8%?[1`:jfLLL[@=:7-&?j@/]#Tl/dPD,Jb%`6SY%4if5WsU;l]?j5:mCZF_XiW>mFQ@Q%oP)j[*C(ppjP6Cs)Z*A,H1uHFL8!qm`>#]:%C4,HDj<=.X?,4#0aG*/)$&g)]EEH$\f3<e]?q37>5&W)e7en/B94XR(aJer@%K>jItqh%J985PQGtBi%V"QqWV;__Uh-.(ju9NV;Sokr[28(`ghnnDH!\#2_I$J%*JG-4fEclLW*b)F!o0D&l[VR;ZZWc&h;GYNBc2Tqp<9\ZCEh*^-R:/%Xasn[>EG)scAMq)`$Z=p4ko]-,=$#DO#li5g<WNhM/ToMH5@1M'SN/ei]jXB@IU3EmQ5DeF)QR,gt'pT^1oEbHDR3@sUhVQ+N`k?a2"@Ja*QTT>j`k+ut=C.!PTF._og164n+Q(`=^dqH.:a*O"e0j2h_';qqIXg8Kii5)rA]*C-;s5Y[P%DI1e`BbQUPX@5QLj$g55,AYKTD8hl4A9ru=IM*sX*#b[oO'hrrkCYXX,<D!2rd@P%iT3)FE99td2:e[p4=u0*N8s?NP'R<VOeeIKC6YtI?\j*X.^EEql.LMbaN+Lk1:rglApD.cNur*`XkNQPU@i$1;YIV,qdDX8<.n&h^U\:qMfC9C7Tpd:KYo.\\gX3mtB(g-$/qm27bfEH9edi<_.^mA'tg#hdlYd/N>;[.W`Sh_H'5Z).'2E3rXWn!?VcbF`9:\+PM'&Vq`52(V2R$PV/2M-Ms'HI7Mo[h9"GI6eA9<^\X_j_8"-(--'G-9]C[\\+,]`S0.cAjN1me[g*&u/dSf7Jb%.5"#d'DQ#u>KB@FS+-[l1$2$Z;C9,e500:OiBk!!G$F'Ib^-fF-k35T4b]?XIHq^+j1*`)(^+9])p$ic):a'In8].%#6s%N,:htk$(bHh-4O5:,_A_kGk*F:n7<3>-;m?a76ETEO&K,X;jOpUBoBOhSl?#B.dXccd5]OYI5SdYrrK+Aa89TZ#n?0g:nHR%5!k^C(T$_n@ng%l`PDlYR2dXu\bqOd,'GD,!G8#mZDb'CUchu)jBZ+17Z`-#JOiObNQqs)kDlsu^;E@%$<X_T>0^22@OS,8_8cb7UfBC5m/b(h<d*,=fpd4Qf9)nd6'].eO9-<n7FD:pBiO-.VsOk-(BI#UiQ0=u/;*D_Ha<UoO-a!%TG);_@=LfWT3V]Qo&QHW_`$hO+'pEmue5MG,#*i=G+:rd4VY06Gi%(3Bf$+g-6X^7R$f,&L2`s;YEA+*cd>Xt1dd+1SJ+e8@(mLI)-5OJ&B\-4.7KPY2$'g$S<@DkMD8EI"W*kK(8+(]?VI']SL3A5ZC1Lo9c1VhcL@H'=%[.sn:IeO0&;)<)Sf[6]pGPl/QIa-sFAj'_GT<Do&&1na^"="etX,eeqR?Q!7X]r;L.bT8RH1uIJ*]qlp^6LoC[I;t<eZ2V+le1GW=r4c_-`_H'l`R0M$i.iCg1e2@55o=r(sf$^o6lWbrSS!!%4RZ\Hs2+fQ5-D_#)?io:,'c!n<lA+EFJT&Q7'=f)M8X1`'),R9KBP(*eFF%VGL<Omu;ruW0VNYHJEkQ[;JM)J:hV6Y#0/O@ZM'!IgfPfCL-/lV5tG5035K$I&_g2]-D6bl=sb.lfq?Lqde/`0FS62>nEm7"6Bg32M4MBW1DK_A`7"XbfD`n=q>Q@mEhl]SOIK?+#*"048sVEl>-f[O+LTIXODKC>.qBdW7E)l",P-)'8abn3O(rl``(/VB?.EL150I7X2hul\G'NLh2^Iq#M&NRUYpH`*cbDMd^lqU(]@E@iZqc<O@sT5P-08.Y!2i/-Z,sNXT'C.0aODc@Zb)</TV_]Fk2-.:7=N8`Ua>[(k6-\AZ%_!Qal->+JZ)gU4-MJE`j1kB4#TF.d,b?j'7.VQ15fO^^j,tcNeJn?X3UqguI")Dd+duSX7OrZ((?D=]F/RR5;jT1NHXIT<G<NFWQX?h`+J7T7U>![9WZZ"8I-`rjaRfAY8e//@`$mIkD+2P?c\H=CV@I-^P#7Oir?_a^r:Oa^nb92&9S>E`p1"\L]_0>Sc+Y>h6;b@f[>mQNd;LbC[(BA\gOOAR3Kt20RHuhm[0Br2]4F%r#AYXT>'TaRAjrrq=D^1HOc:<6'L:>u;Y)g04&0mr!VrPfSW>ATM"8_Nak>4.Y$RNn1)RGGmgn"0:Ohi_=Cg#$S-j5AF5pZ$Z-\4bU"@-^Ssda#W1/RhbQBq`9(bp.2K/;TR*S%_d#iL"3D9o]ppW%*A-QmIOJ=r#r\!3I>1!n'\\6%DEj"/bA6'G9GLXd`-T\rVtO;GA9BldM%tK\aRM-4'Nkp2/AE3EU;@SDPlue..0X@I*?eU=gR,KPIAaZb+7;7NqR=h*$gkn/`h"PVQr-,AVK=I<f-*f)luJX7r?t02O;L+?tIU-8D]Db40"Ue]1Ma%`?VRXPC;Qg?FhA_Su&rTZGBr$XkVde5-)`%:`eIS[aed[,](3NoH'OWZBs-fBV"tCaa%o<O,rA-*cK3<f!j2W[_D1dY,s(JeS3f*F`um!=q=/JG!Z#U-aDB#=f4=<^QMWCH$JXAE-73tF'5XB-[m>ab4"6%J'kCR\o4Y:Pg<5"e$;;U,+HI7j4S1LX;7%eB;6G&?Sq'tS+:s?f5)Hbn^t?`q.M&>D^H;0Hdh?.;c\<YbB*5U&j2>H_`aJJ1$dNU1P3"_=nl;9=)K$Y*Z,t</;E[cJrYFpo;?']>d_;*A_-J2m-PWurXuU3PjWq2B7@u;b.mP]%/%?g*E[0BCH6*=4oVt1.oKXDUmo-2K2bJRY/AA(W>o?P_0n,I#lL^5$c8ufTY&;MGO3$QHJ]X(=Vg!X;c\t?9#\9`HHPC<Zh^An2ctK?PP'-9>Gpo:;moYSe_D12ZV=RS-\`(#L,!dd0T/X#^6-J'B='/W\-,`*A%]la8"7.#Fq:?JXo(9<i#*\.ZBsUb=.A2Q:>/gJ"LmhXQ1O=Z`1-c/lgV5$%*+nC*G$,tg/"ln_#V!,\I69=FeJST^7BZkoY*1.ZRj%)33mjhY#KelXJ]n&52-ujH.714E*jX=:Qq:(nM:_PU$?,l._fWa%a3N\.nmL2"tRn8@7,&Ph2qhI#NOUKh3@$WIP\PS=`nQDS]9UCAqh52(A,+T$K^0eGn'G\jrLsGD<R9q"cr-6ZLTr%3Tf8S9]OI8Rm.tNk0EE*04S[$auk!<PIti1UEa2YEu0L4lTk8ifhSTPHYg*\DD1NWeO:p#\N7TB4+X*Ao0p!WZ<>LTFbK:^o3Q(nfR;*F:s25>"=G@Y3M6+;dc5TdZ^uS/,9J^XY4DJAV.pCg[5@)nBGd/""CDC^c!'5+XO"#kn^rRkA%/j`@6E9)D34"%pCp*c[q+rchgq1&XQd"*cXk'QX*'H+%m+\.A>_rKiGNG+KlM`d(BfZ3&"'sO9O%g_4Kpn*k^D300X&!K.BCM9i;'*M:YA>:CpL$gEUW,Dp?bI>)sG4'qRdZ7hf)K7bt2)7mZB@bZa,R>]l0U&hku(VX;a@j=QQDJ6*9uF6H#P5IG8#-nRVN.jkY,IpXmkV4k]_TG@:)1E"sa;XCnX7n)]t.U+AF:rZjQg\.6Q]`GGei@qHLul'K(c"FeAG"_$COE9)T;<ngJ-hbj=!AjJMaHK7j6h_j^K4)(<]hEUn/`1a<8<PQ/:NV69$krNr[j]B^_@6%P-7G9lOJ)1R*mBn6B$-T2(eUg5.F)6'"YE#q.NVjepNjEkWi^$W"aUGeXF[`=^W&qj:a0t+O%(J0KZ<DXq%Si^$&mXbfjXr3+0`>_oX^Pbc6dT4`Ger%BMT5u%5DILH46fZk%kjCZ)NSh9A=LCp]+%dkC^Pf-1]QZ=cXCF1Xn/b78Pju=S%Be:=U3(]`mp6m<lYl_doo*o$V9d.9NaNiZNq'%_e)&CB09P_;<<O14gqrjC^RdalTXd,6Sc.ImP>EHQIaj'jlP-H@IRc=4o9WHd/(O/h=[0F-]0uIBk(FfrVpE[5JI^.lF`Lr+=t#4*-'E2POHKgN*/s0'q_Zu`jXT"[`C-^Rp=OPFL0ts`-G*uU>Q-aX@:_?&,6(rq+eE?FlZNbjg'?nr]+KL_2j(>mu'W)Oipr(q-%iU?Q[U_VhJ'kAR14,'4>f%aCPBREF(7*GW@"8"ftKPlWUBp!/m&a!rg8P_:dnTi1B#8Y/M:eYW00Ei/_+YS4tUDmR]%s>-+t/Mj)<crlAZeg#THsT&d2[A`=W?C$P0AZ98+,H3]5tq;9SDhDs@*-9F88m`4(S1;_k,,_(s:k\6(sRB&CJPFecEf[895kP=T$lTW)H=Z2V3I$u\Ha=ODBUO=/!/Us@Ak5Kb;<%dK61M`l6]as8P@".J9@#A)_frVgOi58RNIJt-)C,X_cc?keW"+8<a+ZCe%pZ,A9C;muXATR)$,6L#M;*(KB<h!a*^iNj,51@C:G4LFTId9+C2a$-:M7X&-*Gqq5=7W;B/f1d_[':ZZs$(\K!`SsOrO`X]@TE7$qD51pceP.(RpXKQIHED1h]n>A;'GYh>ZU0UWr-O;K=fl`rqEB#`]90(J5;?O\s@@O.Po_HP-VsrIu?[:Ymm"l^S<^S58u+`3O&7H_*VGp.+rG2$j>a.a)oI"],e<!PNfZ):<N"Io&Rn4RVDMXTUl#%>9C6k*u]"^>3%%G&%eoG^"h]TO%c60]QJ%k_<slS1:?OQXj6.g22X'?FH;LDZ6!r,_Uc3b2-WR6'A"P/;]TDqaR64'm418%T'rMW[OI0]H$?RM@@&i1IC2OhA.%GWX^bQEG#(FYc-1IVf*OoQD'[Ts1\<X_Qh>TeT3"&>EYe,107VC0F&FT.FhMMVI6?'No'l(DiFgA\b)S\nebcoT.'q2]s*Ks=g5-otZDjNPPV[0!'[O6l+YL,3O>6(Sk;.]9-s?=O&m*A^`pp=92)&otBQhEl9=;1OW@5O<IJAh41Ib/P:jDIdNXe7Z#mQ#%H5;[a#44O2;]U'@jh>S3/-!ohZK#Of:@293Dmc?=4jMAb*B[2eUG<):Q`m+Q`/@+Z.196XY-P'4jo,Yqh`j7QQSn(A[jnc1F/FkJ%qb,CHF>JH0K+C:XJbF[o+`q+UP23uIFb!PIEUuk-+*S.AfY97\N;?TRhEX*=>htK*#V5OAhl^-ESus%YWLS"iB+WrfR5N!C^p2%AB2dO#5;u?R;/M%8mJmpW>qHqq00Qh*B1m##"u:oheJXY3b`(e^@4>CZpn@CQ)Sj&)XZ0+\jHo2+-]u0Wms;>Wa+ukXEIm8YFj"<*dD3M+'i\Af0+@8%djDrUfgLHgi[,*>.*LQI_3p!]UDQ"6<d^uX94EM]>JZtbed7IK>GD[[)<EUDaVEu],k^1;_9fejO=[BY#@64C.[deiZFfmBDR:B%_bq'Ifh(eQCtX'iNp&(nJ!a>_so1?IjaEEmsW7+o$b_9:.*X3Cqoho/<B8]ZBAk(*:U&q1-2"Sf<&0a?-V:9<6%3aUJ,IZ_IkUbGRCR8m(4[JA';WNo?-eK9K@B^"F&R[;is1DjY4io&*L5f06+IFg2pU0>-pY?NA6O<6CH.@[V\P[fWP"V#YDpAC*k5N)?/=U/'OXCn0Oa=JmmX8Ms>WS55'eMoRJI/?F&h6G<IglLIB*ZRtV,^+S*+1f(9_U63/.OPIh\QcYIFUR6Wm^UB::LWm0:%j%TkI4GNh+8ROPk@7D@J=o44.^24G:Nu%<N`a0N4+4HORZ1f@JnO."l]6h]%*Z2k'<@bj5;Q*:R^s@S[!&P$"ibK[K[;MYjYGp%^;2.4"P#[4g;uYf_jHgq>*Xh]U@/\ZTE>fDIL7_Hn>hgVc=AQSBTA4[5FPL]-o]7d2o4@K_or4c)H_aC0d1j;]+e2pL:H-o38mh-[C(nQaQ^R`>*Q'Q_9H]j/J=LA';*V*1t)>X3,SRcZj`']-&)##J/Hcbs"Wm?)p_%E\S*iZj+ipS+W"?H+l%l:]<8t<""!_QHaj4PBDDPbhZ\f>AGB3(TqKUdX%FqCL%JT"`)rVf[ccu[f8;?l:9ZB+9*&d\9aml6X#*n/$p)?f&?E\=oC00I-+19>Spi!BC1A]:1GupQFOuFQRTt`c9j;DeeH8An\&p]$It=-7?;dk[asgo*cOqmh_bbDf,5VOr;RV"1EF%ib+m*;1Ne;Q]9d7+4VlAB=rr_SF5Ec6>9.?1k2:9Ee`&B.E!k-Y<f_`aaX\E;c-9,%$#+NCF=K&@D4Q[Ops8s>(llll(j:0qI!q4Q9Mf&4.VPqf?;<^%#/=g%;`=1A.W=QFK:>Z#GC)?;TW)fjeI`;ahWcgD[goXgXCn0O(g7]XlOq[W`#tE+N$Vd.6sY6=a.9TBhIQT2k_@5r3)O$>G<n38*=,uto>`J(^F_2L5%)r?2Z<H_iD!u+i036-Y,.Trrs`%td8e2s!p;&n2]h-(R)2-2aCY>>qO_lm\IW\S^@&X=f(=*XoofnR/U[;AZSp[h)7chOpX0N>`ii1k3cH0]=kDYq"BaFaE`p1XS<qD#?I&P\/7;1m=k@,B"^%:"(@XgH$dL)c"ns:/FY20HJAoWA!Is19i,!F:E)1LWf4'^C=I`V3n4,)=c6ek]pEZ)J/JHagI80Y\FiJ0G]ZlXp=17h)c#2a3)3,2IpS=fV$<fN3p5WL<\GiRFIHm$5ig.i#4oT6>AFhs5TY$&@N;4if`9UaPY<+D(e\)_[0%om_><W<S\sO<Vnrr.?i1B#8Y3"SWF\k%3*@:#FD",'S)gX"p:Za^0d7+%rdEAo#Mr<@;ehWl#p8"q,V/f_T*BX*KbjG@=N\"t3`9O>3d%t!`H+C"o^X]OZ7nli$`n\2u1G,gd\Lb6<\ZBSGrps/JP^O&Z>,dm(Sau:5>BjC)O$i[0#ce3=VXTl0D&SI*>E3IiF`7tnm0A>,c:7Kr:!MaD>!jc$c!TeBYT.(sGjF!_K0eVa:cH(s#57DSr)Q<RST6?an*uNF<r)YW)pc^iDLAY#j1tG]n)!6Xp8`u3lVpYQcq(%el5?YJ,qcBmY5Eu%$`arre8-/[C+uSk4V\dEPUh!+jQEhkdo?n<rJT7;4aqD2#$]!gP^!#iNdSkjX5-NMc$IN;CUf\@4"P"Pp>oiDHV(]SBD]Xn-r1W(Wpm:P%5lf73ps8RFXbMJK(6chQo1HpN(b"qWg/(sHPu*s[3pZ$3,)kcr]gp@SZ0ta\FqMDR5tSb96OTi)uJS?nVWZR&T\bA*B-Pm3B34$/oJ/7l3IKoIWlLo]9=&DYBW"l.<D3A>3>7WS8CkD]IuZH[^eL!I+GAW]Qh6hju^.mAg5>jGKE=cK5$V;^?adGr,M)BD5d14T+ip:UlG'BqYtfH)/umh<e[2A[E!0#h)`0o^sGL/JH\C]lK&XOiY=-.,3CK`4)U4ko'T4e[*HT;CWCkO]o/'@YbkQ!R0sJU13\N8CmdPk$oiHdd(utWiekqcK*pKVhP9eM0KRp&01.M"erF.ACa;$"\G]eDh4(*aD#&;195B4XY$G9Uhg;j%i(_(t4MI0*9&A"XD0bVR8Cjd6fW)K#8DU&P?,tjBWjCnIRid.Gf^eL@QduFphQM/Q(\.:YIq)UZBN(),iKFdFVG=#G=Jj>R@<Kf?Oh6h]c$IN;BXjA=4"P$fKR_OQr;Li<eQUYa:ooh@#DVBK_XR7V(gj-`RDBsbjNoU?p+p4"ZroP8oP>n%?h6kJ&l.._Vl]pSYOe$W4QF%X4+7B;L%2XWhd-rUYq:2L(GU,"Leg?V!](W@DP;FD:kM90X;sCe_)lqe>Dk_PT!E+t#H[<bLKrD!4;tj!@sj?oPdK^<g@7OG0_))r7bDS:o>A`k4#ELV14r@4Z?<<>7oFfLml[spd9unJ?LeWMRSO9WnG$BDlcAq;j1q>"IF%]VedclTWmL^QlTRsNEY`#pP`(p@+N,WNZU;\JB]s?X>c,`)dFI&Eo7d)0j>Cj-rlf]2*rhj^ri\2/r:+Fu5HdK+oT5Q+P``bVp3uu'^$s_3MlVhR^8R?a*<i4\N3KCFO''[H??tDed0;2C-_X_MHV!^D[)NZa&<E_/=F!G"i7=]UgEXEJ6'&.K;n^cPH,pDqCp5ds<eJr]E=%[:rdP?K,HGVLpr!D<]8N<I<f^g9XbSO31\B1-T)._Wih`<Eot8<e`T,iq:#j'sc>)\+>kCpsi:2reQW7AR<d@qeoF/2];gb^"gF4Oh9d`l,\[=?WXi";gXJbCc>gnoXQEr_t`RU=E"&l_4a(J`^>\efCj!2+9p[14-_4P@3A>6UB_PQ^e%mO4Pa%>#<!#%MAs/pHX5;SEp..<c=SGus-?(p?^\ZF[ms&\f[F6a1iJR$bfpH3)Mb5te<!!$DH+9&f%?tF@]E&P6XJG"b-!#?rK"oOM+K!WR1!N]'*"0abq/DuRo(7\)O$XeBl(kBTIAH@;AZJ]P>=TIcW(rP]UlLY%"Vqi@>IlHq_)4bk-WoFWdRQH5Nero3AGPdl)`:GNqfj*+g^SX[_hqdp"pGFoe)!_UNSX7OB`ri(UoKg*]c/\aDCk7M-b5tf'_:S^[0Gtl?e_+$74R1FPBQl+BLJ4g#E`,)B'7'!O6kAFc(;'`XT;?R2_3=Psf@r)&^jSk"AiGCRcHBe<SHduClAK)9BDK!sZ2iHW"t/NI05jI_rrE#o[T]Rkr3,TmKIGC-b?j0?[L0Y*ctI^=QgP-[B.<8CCbQ]L=gNJ;O&)H3]QJ%k_<snII(SW+34EHPXn0n#o9kg6KGbgQa^mWlP_H5X2_FAU0Rbq'-S+WZ]t:T-l<pX0-rnGp>n8MHe\`s][*2eeWXn,GrNKAljAnA4$;bnLmAkP"K(>U(+?>SP+WfUCS,8ENE/%cD:):R1FBa+#".l/J=dU(8le>MgHn)bbG7KhW`h?ZL$HB3-%\l+>o'^rZ6bT[H#?KT4I81-LO$ED,?Y:j!(4kn_J>`bmnV&UC0ik'Z%Dl$c7r&rL(B`GAlfRT$;m<gV-%,e&YOZ[-[oKdIDFKT`]pW1Z_!m7*kn%ql5hDHKZ>\W[6PHWhU$'mCo$W.?o>F)k;-`I/XVW2?iuJ'N?/]ruZ/;"&?;UWY!Z5^TCPnrBs`AO)<1Xk^o"'gYl`3JoEE"8d7UL7qGlFR+Qb7U\>K&L6K&O!%,k$>a0.W;dN[[qV?<u02lG-\)3-Fj^dG93JZGA\qSI>b4-08YNEPJP^b(D2:VMlGMo@+Tj`4hd9+8j7R_j)a^X%I0;;<\*WF:TEepFD'=0'-%:-jt6qUK6dAi*^+9+Z[)K5MoW7T&),u_k!!>VS72'OU0=nQC9;;kGJM[BYVjpeiD?pE#iWAX0[j470HP(-/N>P-V_EG'-$s"s%a7n&fL\C%PkDfgFhVm./aBcoE'4NmFCj$YM$j^#20V>W7MPafjPBQ[CIgsI[iJ9%NlB@Dr#8DbFodu/[1VkSQ[(7;O\+a@&j&F6bZdubN\G&n4R9H,/_i1JCqm'a42U>*44Hq&-=$?VXBl/LF])%!IJr'thNqBA1CO!?_='S86%f%UgW]MU>h^hN"Qh<BnTNK34GWY/r5RG/da3&t=TinAUcOmjn:8KK[-[oK;&LWYo)O9s$_Qg'3_1U9iDA3)0WJN6X`g^SW4#k-[!EdV_:%j`>B:;ZgmUQ4/O!YLVberOY''DXQ^9\!I^Om\0J_f7BWsP1?u.O^n\P6diH+):%Nb606W&"CY<T.Mi^;^J-98&u]\6=s;YecC)flgKel+:!i&oc'GHeN_.Na-uT=IB50$K8k;r0R*CRP'a!H<e@^u3YPi=Hr''Wg5gT_eE6s!)HEX)/E+%"e_SQco6@aH%>&U#9GAZ2iJ-r?nKbo@pU@aGGLkHm"dK"7(I4,8N@Eq!Rd(i%"3sGKXP\(O.jK)n@MMona+X(AHd[b5t^fh-:_#Kj5D/qSY&fMj)<crlAZeg#TF=egH1Q=I`V3n4,)=c6ek]YWacM^uFF\J3S'WE&P6XJFsqD@35G+AHs(n^pb4B1?IRgqtp$,1f(\8eaWlmc(2^bC\dT""8=T9B$FR]n5O#NJQA>I_U(::4h3pU]n_j@P08H`a^kLSDg)\hqK;W$#CJ$14-F0t+0rMFZVO6[*gkUKVV0n^dFNnFDgO^TZDDSE_4icTF;h9C5NMT14GbU^/dorOQNaV-o$+lG\*6UYq/*\A[uUFa[/)H6ETL6GI!7k`E?dcmeMFG54PreUKL<(]SYBNE_*sEgmu]&`LUW:\2:t%un^N-m]=jPrO,PmP_WIdEfC\i/0'i&)/8Tb3?F0<IooRb2PH!6Ka]it9[Ck3s3TdXAmdoY9is]uF"Eu;Z:>0jlR&Km/OtY$$44I-n]dB[3eACEsX!L-,@-/ac)"Wb"mPmY)VRlBd?Jd21.0%TeP3i,PmcXMui@7S0WopPbUX+)Wfh!fKe^gaC!o<N^pCj)>"!l,s&DX*Y3bd=P@%t4#18DnXlY(SP8*[Q5"Bq'\?gI8-S8pLI_G":tp_:lco*m$ns0;I3q^IkN;G_dhrVuaQEuScG8UaP8qT,u?CaZ;>6d6#PAs(8gZcQbZX=s/to.HuPj4Jc#9lH`[a>84gWAYT,<K;hqFB6#UFUOh\PiF37YKi@]P^b(DQ1'.nhO&aN*cI`PD,Xm,VWGE2hofRWn+lap+2.9X?W=cM`fSg>X';M!oYEh7(Beq2PYTqU!LROW+V</YEU:E"VROoh,X7$B<onS)6YEg]>.61,D>j\+];[R+No%@hhLFR7r[U[6C)6Q_>ZPu$jgX%lZ+H6[k-E.4jg)CQl+&@<k+@E6(;Rd.m=1&O'Q2p/lIYPrA`M,1CIlh+VXRt$R:13<`CInB8e*^CbtMp/_G*tNp<1VUY'&mZTjI<aa`#t\Itd!+7dj>XnG$BDCZm,#;,Ze[<MB*)qmWntje/eXbMD]8gc34,"l]"Oq<.e3oOj:NIuE(57rm?KY=-t6D&7_Z>-GO!qfVDb;6A2+p94G#I]IM^lf:ku/S#d!Nj_'Y>+tV'orJA\H1%rfE<]n_/oFfD5%=hq:b?DSpfH+]`8sM*PW&ie]sfW4O`:RW"K1J*2*F.us"Sn]XT-ghT="p(qGF+V3M)o0l65[o>B:3V90SEQ0]7bN('N4Y[t&jQ+98XKTn%Vn%!GOl+4bjS@cJh3eB3tYH#*ob9J5YE]+7\V\'\I3LFk7iIZ.O_DqcPW^HEP:=B,%Php7+pc>3?qc9>;oj+gF[ZL_7C@-mB6>h3Q=s1*_'ZMOK,2?WaN0_f's=hdZ`$NMpbgAm0/nBYYH/!J0Q@HFf]63BK<G8YqMa^kL&jKa5:lc2`74Y?_:Ncu@k`Q;ZlJ)mna<U`'Y^HFCR=H7SCJAoWA!Is19IT!g$]A*CjEVs,)nQuN*gGaY@2Ek[8,``F^pGAp<$<fN35-)Fdia</E:Oi8-k))?abM'5*XRIakG8tb<hh*Mr6#p*m8M1ANL?o;kK/]ILa8+ok\B[0/lh;csh*q=)d?ij@>m0&F[MF8e_m_H=[E-[*m=$mhB96:mlfUb>T-ouuH]nDtnEjWc^d?0[K_!/\2C7Ioj_ig6p@$J]cgq:)>;c$.AQm_+Q#EHu1NQOKFgnT$(!7D:7ikpUdIM%MA\Y>rP_J3)bJRQ)[MfQ(#H&be@(5m9nr[qS>A-`g$[I-nkH]\pGK67]502(MhS>m<4N"'S;kAA?j/tl_.;Qda-S5UO;.afe`<"n&&>G4$k)UPJW2rh08fVQ=22,p$RI65.AH_2,3oD#gQo1K1eLt(XW`K+imj6ZaYMR]'0'i&D>ZU/kWBPG$*os"B2lIK&\2B1m.oLg(W"sPP0BA\2+RgtD&`4W\!3BYnSK]]AEU:E"VRKC(eibhb0k;bEADR>Ch$m(1(egtUGgi1*?'<fQheDo:>FOl(Hom\&qn<LL%sf+.iQ/lYjB4RY0>Kb!/I3oHo`]kJ-6)G,W4Cs@I2u%#Tj"RFAi;eqCBfD2P.:o]?I6haP/E+1&&uu02laoaJ&f707Mtb=:TZ_Fj#?&h(0]7uW5gjr)oKo#b-0hdq/p<,;@kZ%#bJHO_Wp17SW8Jfj%`bh=GlDP!3ttX7Q']'^6g1,h:L'H(>]G2D]_'tIC`\pah/]9*9>I#iq>0<aL#)5G4]SuHiMW#Rd3$!eMY+)Qc_[Y&'ho^+k]36nYPg7j6:jM34Z+PE.%a0edB'6kH_Zbqg7AL)=I_V^%`-"8Tn`JFr5Ngm(SAuH-$C?]C.j-?XS(bUL`i.H:r<b-b[+2pNAL%e6P=o(9:,ih%mRW:MYFXXL=a;#Bi1C6!u.E0*&r5Q\+f,p[RCZYl(m)!j_Xcr?\DrHg=tO3i)1?1G)QV4;2WWjkPKW_'"@b`.q;^QlgV#69Li[@-&Qf1L-JM[A5[Cf)=&I9\q8\AZ[l#3ABkaGt!J-)77aO79n@&ZbJ/oFh_dJe@P83>;:T(>/PSCmegI;6$`C8`eEsC=e/=RE7j?L"bEM[^&S]`I1_hZK:UN_EAu)DFC,>MlL("?4K4Ud7c"Aj=kE6'KaX1jQZWP90*&r%s29:S%!Gt;7oT`%ltDHYrWpGT3^(*AY?5sSb79J.E`o4\?;_mmQZWP90*&r'$NM_Q/dqG!QZWP90*&r'b5a(g/dqG!QZWP90*&r'b5a(g/dqG!QZWP90*&r'b5a(g/dqG!QZWP90*&qN^WT<#)`mXNqAs?5q7H0pr'L(?c9QOM6!n]20\Y4cc?$$tn+\G&/dqG!QZWP90*&ra^!"&1PtX1(BR.06foQ%S]6cR8]s;e2-MG&c2Y_I&[G]LAh1;ek>Scg!0'a!P?N>nI5GD*Ukg$'$r:^)ITOt68dr/JUfkf$eZ^n9:/^O1>*F\98#$mH/`'/<\I]<_BVu-%rWKCC9W$t=q_4&$;P31I^7X>m@;'X&%O7LInj/Y=GlDP!3oS9UJ)A4$<ubKjAF%qAPb<hX]cmpWglY_ll4oD;nZnF45Z`)Y^6`=ht^TA]ru\d<Z?gBjKa;#E`mVEq>rouDD!GBfW%bsgT@)a2W%BeqbYnBk-BTD[Ba#=P2OQ30pe0oIEai-dj??^AH@;AZL5O$"b9_GVcNf827nQ^;q5gHqQ4B0b(H"PBub9tab^/&FUOh\PiF3'0#@',P^b(DQ1'.S40Yebr<TtUE`p3XS?sEC'\=-$@\`1AABf#CV,b$84Rq`>11_'@,`%UDQCuK*B6CSnbU&W3Kd4.0T_HFo^e=ofSX7M$Y3DR6>fTW]I/tJaB`AXhVJu-9<BVg7fP2n7+,m,OD"ka?W9uW$,Kudt9P`J$9iK1-bK@rU^1.L;^#X+KQ1)NRKn*$]F)tLar*SL`puB\#rk&kHEZMp>o`]kJq',hg.C0A`N(6'1;/IdX0g5MO;]%GtV@hhC85S1.V)=Xa`-32**G7(gntY-M`+SGp'WNI]*rcSZQT41`pq#!N4NPbjXn.Xe1be"LkH]WTg]`8*\@qqSHgJo?>h#O>AtdA(Je^EGH5qGsZ/>^Lm*Y^`Ors;MZ^]$mJp#.G!SiP9*rod@'`a/Ub6#0g$U+R/jK\b$-^P!U.i*L4Lrj3//5@f*i)VE(!"b@;!a(st(;R%Sn,XXi/!or)?Q)/6YB:J(6be)"FP+4'R2jbAs%VQGf:k>*TWbn)R!Y[P=^:^K,=sKqi)VE(!"doZ=rQH):4:GOU[`J5bc;tV41lT9jU^%8b<#M5[-l8(d\3/SdZ-^o5*pEV7uodC/:^s0huc6GoeRZNbP6F]@e4I4g@bG6lUPF,?Cq1Fn^$s!Be?Kuj,e:tnPRh8'GjfJr)]%'H#U%^Q'Yu2a4%&s.@bE]K4.j-C=ucN_BVu-%rWKCC9W$tN_HR%<i\#;G`C]U7dM:b"`Ph)HiSu1hYLIFX[-C'g/+7P#?-'D%YgE4Ut'_\W/UW[KCQli3&mM&_>Mt*C@0]Dl)(Ft$>&WWf;_mNSaRlXqh6*)C.I>JjK\dR`.AL"Z&.qREODJu1CYBVN$m&rP9c4CSND/[&dt,qIPmH,N%MbYh2s7ObKBR.Tgu<?-@'W7!4QFR#Coq=/c/gMZ[-Gg4DqL,(6:.Ppt'+?jm""Wl,OGWOu_()cbPQL"Q_q0-%DVPj%j"4GRE:(F353>^Q\93pV(-Pq<;GXq4VS'[U8uhWeXgp^n"Ts!?a;sQ6"KA*h.((1RKC?e=#+5NlL)c%`qE*i#mf0&X3M\QHY'N[am$h8%[g\S3DWO\ZDIu.mA9]6=Ot<!4QFR#CoqBD=mVHn"uZ=8h\]'b%7u`_WXNoL$Rg*T#G7#UOk;n`E_!@ds%oaYBk?4ONR^8'am2*`*+g`ja2!;&h,@/eS0H=.Bhk=JnigJ<epEu88F<h6`S&F-PKZ:n#aJ)#kK8O>):34%kK^'h=E=HChn41J6Pr#X2X9"i"W1;XWG[O<UDs&>.:8O^d5AVf-n.8F?S]j!:IdW%filc$g*ZicV(pa?=K!$"^)55Y(!+J5(5ENZ2ed]Je%jdma%LFI/fY`cIo?Uc68St^S*LSrr8]7Qica;Z2ed]Je%i9n%8XYPKO$;'am2*`8n3((+5FPE%;]O!/Sa.!A$tu$fG&:p](khb5te9>Sb,W=RZ>62Y#D3J,#@B:[IDgaHO@mJ''EP5O%f@`ujq2G7(+I--u2?\(A;FiK%4Z^o^`.!?ei>eN:j!SGFjf7cR"E9_h&!pMtFpUil(eV@)4q%_`s#XkQqJW.X0731F.g^o^`.!?fti3L2GZn=GWmHs==.]mnH+Z(J=gkC8[7q0k-%`AO\0fiOd6V0cgO9K<s`mV@#W$K^6K@p9Cc:Vr6nFjFfF7L-+oI*(:iQN_=U(46+<[5&]'GOqK3>&C4_M1_e)(P8?h.Kiq?j$DhjP,oEpH.,`:^2kqtX'5=C^6`C!(V23!*PjhJ/:^s0huc72ls*T#4ANZX*mBX$90@r:<'g>8F'6?3>1p#Y8T8:UR*3YHI\GN%g*XIrb6#0g$U+R/17<f>6-\]"Xn'!HZ<BB-ADpmbXhfKHQ^'Z>6#5;nB//Lm$DY/5I8_Qo:<kBIqmC=bZMj&Ygt"hF$fFc2p](jEbp3EL]>s'gbREW)dNFaYl,k9-JfIGG,]m8V(<3+4T$'/YKd4.0T_BtnQE<K8b6#0g$U+R/>&W3:?gp#A4BG,n9Z^kRlE?W!H8^61BCsnPT>FDX6[.\#DTh=qJJYjJJ6T;:"$is\6=%>K_u"3h+"EUJ6"k#81":Nj(RWpHr,:X:?@*DbVJu:ZfS**?.d71S#Q<DTWZn-*86g$KL!,X`Z^_#96^tGE%4?"])Z[J=Eh%"$is\&j>@<q@[`16.UXfX.Q>kO.RASb6#0g$U+R/\j'\GnGR,p4(k$BjkobN-gCr6^tm(C!SiP9*rod,lN%bKQN_=Y(46+<a^kK(:+cq4<\4"G&<k9==I`V3^o^`.!?`_U"gBts/:^s0huc72GV8='Di?n*P?,,;?G:=OXRg'uZ4W2A!k8sQ4oiOpV+NZGpVZ:JU[?9'k(lc)#Q6MAe:+g2KG>&[b6#0g$U+R/b-Xt?,=@r`o%Wo-XeR3a)qTIcST">-rapbuYW'h81/Z0#<V;m[Q*e]W_ct"YY3mI""`Ph)HiSs+3M4^9TqeJD=QY#%oikedk;&8l$I6P$%)FoUYlR'Y/dpT</GK2VS!$0sIkI[hb6jCd]5q+p^YMA6\rN[beOipI/Is-BJR9Uf"`Pt-HiSt61-&pS.[*2UO4r)$3d,U]ETZZ`)$iu(/9=#:Z2hEdJ6T;:"$g\dVip&.h$V]&<SUtGP7nqM0--;GV,aEd/doa^b6#0g$U+R/JtGHb'Q.6YWaEd]Jm;?W>$3gA[\3V\jg*a@$2bXN/:^s0huc6GQ20*D:,`-+h6WI5fc7Ck\[7AKX-L_Ka4AM&D%>gmZAtH+pp@EjhCUD$((:;T3k6el>I!)g5\qhZZ\V&if$.cSfHS35VN]1)\.oB8!5uH5IC+efa7f2rXEe!"\`C$rDT.2<!&6JFJAoWA!SiP9*robj=TFADb6#0g$U+R/jK\b$-^P!U.i*L4Lrj3//5@f*i)VE(!"bWbb<#D;aK,>:^qU)/RLT8jK'+HJp<A$L2n-sk_JRD+!SiP9*rodI1*i?a2@6>B%IS,sq;5FX0[>N,lriJLDBWt?E`iCO@_i;"=IJP*Io9rY;LViaG*O-Q%@2bP>uZ<8l+O<;C1n%;9NrOVo;u&L$`gTDk*<K#^^lOM!k8sQ4oiNQ<6o7:O^j"s7LM#_XB&cqlX]JG\$=l@D8m-G1Dh)#)s":)DT.2<!3sl5ZJq;XF'8;so:nH%Qh>/BXFca^>S5oBjK\c'`I\U#YtP4sr/]G>k-BRC1I!o8$moj83JJur&':>D\Lb6B\L`88Z/>^LD!6Y:igTDBahj_nJuTSuE`kcoTRFKaOime-E`iCO@_i;"=RZD`S&3F.<U8D5#,gXiih)UL6S@\QR_Wj'b6#0g$U+R/=p^fV6*s4H<"H)0N)n_AlR/Q]bYiR;5uZT_WZrMK^"$Uh?>V0*/U:r[@/q)iQN_=Y(46+<%AdEpmp$+SfIj.mbPJG3L&oLBQN_=Y(46+<FarUgheUj"dOAOqnuQU3/4_B$i)VE(!"b@j!*Gar(;R%Sn,XXYQNaTQ\L`88Z/>^L9J-]\EH51^[pm/YJ='RW^uFF\!,fc-%filZmsa`>:MkQspoIHI^0b&m]Q^>;@"!&u!4QFR#Coo?R8^4J,o<pM1FAFlgjr]G^o^`.!?fti\ZFl<?Nl4l$EGKK?HVhL^N%l#L[=n(14UD+Z2ed]Je%jdA59+nA_Ps8R6/R(g&4q=p7!TQ3b7sqOoanlQN_=Y(46+<c,sTt$U9`rlLoQMQ^)J/i&l$_!4QFR#CoqS+5Bj\g:Uj2%Ohpir`=HKQG8g1$HD!"=Y.*7hui&G!,fc-%fijo1Xl;`l&lpUI*4&<>ZS7\\LcZCjK\c'`I\U#Z$[&HaFAJZ?7p"`g8\=)QN\p5/dpT</GK2VCSbghs#0A[]Tq.&<!`Je]hPhECXidBnlD6J_UeMB8Tb7B0TfTU^o^`.!?eg;2Pute!k:%s/:^s0huc5\On;NDa1q\"b%1V/N!1:'@PUISMj)<c\.oB8!6!s(!#?rK"`Pt-HiSuEAH=>W/dpT</GK2VPKO#0S6QiFX]Y&n+SMDM$M%BL;dL,eg&&L\NqY.8#^hA3(;R%Sn,XYt9ZY0&7^G,hZTs"7I=;TF=hn[kAHCSD"Wm_RXe3d_r6ON#f,'p;2Er'Z/U9#<ek\2.%]oL:(mHD[%OSUDOF9>a#2GML(;R%Sn,XY4:!SukQ;-KkW8D?o>:2F]T\<4oW&:@kKgUW;PA^F?E`iCO@_i;"fT'3;Z7osrq_M3Da^oV,5*F+32\$C_b6#0g$U+R/ir<\pr$YM=Y,kIu2Qjfug">(b<]RVV]]?AK,e5IV>I!)g5V13`,_$"Is+<m_rT):9AX`!Il0#@PmE9&A8'#6Bgkl7W!+L/tAaN#m<=@ooJ5aR$!SiP9*rocPPfln'Vu1l)56e4g2gUnlA?RkpTW_(8fjMNJ1U^#g>SaPr>Sb,W=RZ>6G4ged2jX\eF`LUb[pm/YJCkC.JBFLX!r+'^=TGp?_$>LX/.fVVjK\c'`I\U#0tAic`Q;Zlgkl7W!+KtO!/m&a!k8sQ4oiO^Z2bXfQN_=Y(46+<a^kK(:+cq4<\4"G&<k9==I`V3^o^`.!?`_U"gBts/:^s0huc5</dl',E`iCO@_i;"Qs:EBioIBFDT.2<!&;#8JAoWA!SiP9*roa\!&!3%LK>FFHa)E15j[qkl(<J)++O4!eXsms5Ets3h>dGipu>0>kEX-ZC'/Dg(46+<IJcSC?m2^Y(0nhfG74I8_1E0t5j@h4S)Qhp!5LW`-3+%1jK\c922P!,!8)N1s8,PW,64qR@0lo6)eCWp3XYpiKU;lBJ9TO3Q<Y1*YQuri!!%LPM(ImB!+6B?&c_q2aCPAPM\D0P!:UUKZD=f,J/*l0!!%8+b5q[p-Q3!ci;`Oi=IAjM_#aW2,np@[TLGpf!3AY;!WYKD=:kO8NVEVVJ/5C6!3dC3#ljrW@RU9)2<#8L!*[<u!5N?f-NF.RL_Tr@eVI!$!,)rp!W]85T)\l<,$"gH<[0d/!2)c^#QUqqHia:5Mc^Pk=H3(Y!.Yii+onhcnHf0q/Rh-K?o?pW!!$3@M?(G,`$YNb["oFtJCTHO!!$\X!.<,%QU"qUecu0T>/Z<6[oe-1(@)&&!%hYKi*39I5`>:9!.Yii,4I28+/$UL!!#9B=:t<DlOV?OI/j8?7B?cBMtI<gYs&-fcluKn^;]pNZreCM!,)rp!oIJc!EuQ8!!'B^'nL;.rW"P$#64a-`/;@>=FYi:lN7+e/Rh0,>HC%SMtI)NJ/5C6n1E35TZ-a-!'lHE&bm.-&("d6!!&Z\X9a33o`o084obT0,$"i\`VK\D=<@MCBFu`rhdZNb>-&57&:4EH/*n)AmaNUn:#A.rn=./jA-9(/IuEn3J1LLjY\h/5.dm62krFHSm_"ne/5FCkE-;0bgAf6*_96J_Lc'HQ@A5h:-3/r;o)N%Oru5_QoDcmC_96J_Lc'HQ@A5h:-3/r;o)N$d>SauaoBW=;'ILE_@KNbn0b;(Ma^r<#4265j:19kY0.$[W'Cu3/SQlrC]CY?dk7f8So3qd*3&(reRXT=lr_G@lgOp<_AUU-RC1VU<rH&jHb(G1&G@!rC(2!a2U.0',[lQ`I/o*<[W:.=hl_f*oM`gdLkK\tl^uB1*Hrtd>]monQp$7P1J%L++c[4cZjLr315M>DM']:e.Z=^@,rJ!DKIbs,ucfN!@jj&bj^uF]uHqYE(`Lh&-_m6MJffCTc^Dp/ElQ(%t;gg"Frp@>O!qf4Sr;-6\(O%JB5-[1&-3/t1YONJlrl$Q$%S%bZec>D4N,b>T:LPHXXFi'#5N^7pT>,eckORQ[Fm$^H?u\(^cF3Tl$AThFG@cKn[rM@IZa46K'?OhQAq=]FH>.SPrVY2]3gU)dodLi(?;(>7B05-0i]F:=kto=ND6m5,NYmC'G:RpJpmBA1gHU'Y>G-GhSR4U2qo[4G_5HVEM[@2YChe@AkW]ca*&7:[:R32kFdrX#Qe_E0oB.dp>TS9%G@!rC(2%"7_t*h:fF8<L?iR*K<.8%7A/"<pFbZanT-9OYMZrB)h"gX7-C8s0%mDRh?;(>7B6OHf3k6edGN[RRcRDP0kJ[R3EFKu>X-:_YGB\N7oUNcdG@!rC(+85F\2q/OG^&?&:X:I`FQ^UG?u]WsJ?+mWJp2EfrUcVs7!Ds2!#?sE!Ot2$/9lC%f2'^A9Q]I:"CQ4Y*e:;TbCXq^If8o/_F/TS9E5hUjoMtQ\L_uLkLWMU.84jH`<9Rg@NOZXr6M5oW.1VHK<<,cb?8XnkODsmE`mm@EXA1`k0$]qA+'9kq:et/n<;2tme/S0h=e!2m`p^s^uF]u9_<cq[D&6e7I]\XCYc]o%u64.bBj!7-"uqYpIM3siQeX!GIYA`?[_WP-)5N$)W!VqTp@bn-3/t1@51CdHG.&VrgRW&_I)9!68t:U1`03[^.8_C5,\YjI4!TQr4]k^'(eAHi2CBPO8m?518qX_cTDeT]#ln!k_Gf/bq(UPHQQ&X4Hs2[rRmh2cAN"Eibl@e0jPbm`j&I>YZ7h'45W]:pXWhpAFM;#B7fNiDr<].6.J=XSTa=Xc?aJSIf6pt"e+b4TDc(-i2C%t6$]c?*7[d=Gqf>%gc[SCc4C5EXdWT*-M+opF'7<Wj*'?'\ZFsWQCrXZT#('2K8I3Bet$/406)R*qVc(:GD/tB^Qgl6-3/t9kJkFXNX(d:\nsWH@H<PY1?^lbb:4&&/)2-(Tjt[["P\jl\p%8.1,#6T=]?36m]<H^gp0-87',Vc(MKrnIeGS"[D#E0hCZCkZTm9:(DD><h/d)c%*+"BTf/sl*XO0GhHQ%4\)2Q>*:]G)Hh%",%SP0q>A^E[FHEV:=*EcYcc]Uqj*pmY04h`Ld<g=6\Wo60-3/t18MO'R>jZc_WYS><-Jq>Dm6.*.P0;kVjK`*@FU=5S)Kk5pcc]Uq.=V9LhgDdUQdm+k>ZTCG(DD><fqb#$nNWM[pnQ*=e\^m=mL**sa1oL$pXXm]BY%oj3u=:D1Vrc2DV^piJm)qbEYcKUT=))-2<tXP@%V]geoZ`VFGA\"p03lhg-TQlRI^tH=<68#gj(UT=PQ%u-J%,cK]>60D#`SFqNI-&cEEjXkp.X6N&r[>!/n1Ko.@HM2a3U(/o(\bck!b[l_hA+bHk"$SJMri`S&K:Y"gSWhVJ##drPj0h0C^U=Ib``i9KC/i8'r25<Ynud@D'eJAm@j!3T'L$f9_8p![sh'A[pg!EbkZ#N4n.ZJaQ0?U$]O0[ZF-'7e&YGlY!B/dpOlq=W3X$5;6@0`bD3"+XbJcf=q.(0noE:W/^9IG3ZSgiP7O=PUg/hZ7!;B7b!t"]o^,f2'^A9Q]I:"CQ4Y*e:;TbCXq^If8o/_F/TS9E5hUjoN!'LYnF%Da*b\XN>Mj'A[pg!EbkZ#N4n.ZJaQ0?U$]O0[ZF-'7e&YGlY!B/dpOlq=W3X$5;6@0`bCHQj;R7jKd_"SR4TEV_HMh(DD><9oO?U:&TM;rl(L4SW8`q837V.H)mq8!e"lI-ac0MKY&0phVP$*4`4f5lM-"Gk"]?l[H)W4qt@VIDmDI8/GO;Lf?^dULC^jVEDrGJ&0;hAVD+s`YG:BfT@mkTTCD<\o3qd*\:#;jS/^./qtf;V450?)`i0V3U[_BSRD(kQDcn?P[BH,A@JT*4:VQdkDYQr4_7-2AFo+cPFjLrbG.B/KGN[T(oA[?B3@Q#:)\=&!'n1D"9ce`uG@!rC(>&LdQ1r/\[ss+X`kE5LZJt`2?HTN9s1:R`UC@]O[Fo<Rm%NQ3?FCX$/3iNFe/D,[lfpJZ].;'g-Z`suh*Zd;nfr($e7sAE[&n,+T2[r>Z=`cMQQnUJL%=`aZ)n5B-fN.r\nAE3UP%/H^1;eM>Sb!JbS.7YenPsO9!)[o=Y*2$VLmB^/*-6.['`ek%Pm6&fh5SaBe$V"aY?lCjJHNOhm1(ko$FAgIDWbeET>"@?u`=)^Ucc9gK&IK9-.)6)]D:`$:cG+/=ABFr#i&BNLo*]L[R2\A+X:9Ka1E6khqY%h!WQ:X*#f_??9&Zj!LBRL%=\[00='+jOCp:r)PmOHH9[6S'O2/CRVkEa#i=AX_Mr344_jJVS$EbWg4V5'n1D"4[/X`gj(UT=PT.s1V^timajrudOGP5+"]K.e9qQCO(s9AFp+WTA!5XqZ[9k!I<G"u*@$Ua9TF;I[2=<9\g(?'`m4=-U$&o=B$t=Dm586-TQKAKcO[s:eS5="*#deMja)5<GVE+liI*U4T,9M9`gmnZJAl*n[<H3,i4s*hejl.!FD)rM/iJLb'lFM<h__5>[5sn-!DG2<?m;_ML-hGf1!.-8W`iLfs3L<D+!#a0Ed*V]BY/KZB]6;-\FC9E2u/[eP^b(DQ1'.AeFM)1geL5gW,06F;73]7(B"!P'="FY>2!9Ao)$M*,dVeugRPd>#)d6Cl0.JcNk2pE"5\IVWlLETa1\iL)"`:6$"(O/`et/=ic[^4A^+-._GCf,+3BPW7LqUqW;.)^3h8qQG2r]N"0.=(n</KnRl2Z7*IKW"gHF7aCYcjPZo`0rku/F)Mitb\nbI#:#!N]:O,aR]jYK]NRRYoWC<]YWEmXT,@E)u)RA2M`h=D2feNTJh2dc,EG@!rC(>%9`L16b>VaE2_VT7Niph7=)/.'%^1=YRW_O7pq]HFO\'$HfhA7>J7c!9Aki(&-a)k_?^2bab;n>"D"^*sK`Z?qR7s7rd'SZ[`Q(;0Ie'="FcR^6qWXHjh4)b0/^>>+!:%S\jKaH9<XL\KJ>ZU;(o\iVPl!/kX+7[;_2FfT@r2rtNOD5>nGVLDZ.hHkgAO8l6R;XHC[c]k,(X2Uj6IN8j&XAJ:=34q,Qj<3L"BC9<ML"4#H$9'?+28RMX1Hiak9KBP(*eFF%VGL<Omu;ruW0VNYHJEkQ[;JM)J:hV6Y#0/O@Lp"#Gk7=N@SPD'lo?MtlRqbM_U`+,XejPKa.;@*=7*.JN:PFuRrNZ&)7>4T)Th3.ML5BI$3.TWN>E7Y`U2E<:USn/(:_:Z0/:PE3+GN]5>bK(s1?S[gV7jMphb5(rEM%Zq^(''ek+]f/U(Mp!#F2b(S@nt)IMiZaAmt@Q#WtB\]X^D.P\mQ9];%;(;.9NlfWk>h2hBUq/k.&ETb:D?u\(sJ?+mWJp2EfrUcVs7!Ds2!#?sE!Ot2$/9lC%f2'^A9Q]I:"CQ4Y*e:;TbCXq^If8o/_F/TS9E5hUjoMtQ\L_uLkLWMU.84jH`<9Rga((^]Ir.A1dd6Up#CS<jr++ESQZDLo*c3L3?d<+:]7VJSa5KD#M:X6a8TIu'm`r#.Z_#Y146EDo^Qs*4Uq=YiaOrM&,F@c.m_"ne/8j?o[+X/:+"_88i,lt0<pRGAAL@t\)AcDg*Gqq5fBD26#EYp4M+<<>a^r<#4264cO6ar,K>N&6,_urMEe9g<,Pbbl?;(>7fDRY!pVPLjjg&6BP\Kje[aDS,T=*=E<AQH1<_:tY4Rul6nT]XG-I64C;WT%5jiQcJa&]khS!rl[ap-miOIu*X':V4Se\Z':jm4nejl*=ME"`bm/9pcS-Xof<D5+TXIr*.6\ng]nebVZ1Dm_\KfT'*9:[Frjle#6j605.PZ:fQ"GVK5$>]ihi2YP2$0W5c:GqWn)ebV>0\RYP'plUt_VM3Fc7]4]bab]gWI]KiUQ%.tD8bV"%+]D/&d+RiYON^W7N1#%h9X*nBj!sKpqKYP82qgU-A6+4;C]>.1FA$daZE(V/@KNdD1Lcs"-JL-:p9ir2IRflqQA8W\m;@#,62drs%.d0:i\P"L^@uN4f53<B5:I7%#:%@JnD)&sK'`eJaZkhj^4&8kcXg)ab>3bRI08ea)bZ4SaRH4[b.mNW-@9+qP$Qm2/dl&eR9fJk:pYK7HXZKD\<3FN:bt-2I-br#)MuL5IbUDg3M^C]fC:Pu414@Yjkk&2XUtcN[nao,'0CN3K<YTd)`j(mH$hH8p!<[2jc;VVs*5orc@-tgPhAOdc2,'nZb*2ZUPL/lD\/!5bmk2dH>ND$ge2F9616=2ZE&>nAHAlIFB8odAr]URriMXZ#_t=qA=K^K%WrAJ-bJ])4C8^\*p*p>=ZuILQl#DO%J,UMfR714VX&Z>0fS`m@/Bt+F6XFDVT0!_?-ko@3@K_gkRO]kD(IKIK>[!r4*l%4]ruh*Y3mI""gG#XhR#B,8T'mNSTModhq_q+`tInJ2s5$YW0S<H^*FJaRH*7Gk1HA6NngSTIYVMi,h$o,2Vq[ZDFgu@]H!!u\ok`S(s.^m+NWf-H"c9\F)l!'=+FkI;8K</ge<@]9XR3p:>&]a6ens8a!"(%>qima\Wh`'-QWBmRF/`m>)pAa2jdmtF_3\Ne69`t-Cu)KH,?Vq&"WNE-[+]!=3o4!I6q,tgb]iVK:@)k[Xip.2nnHG>h>u3EQ="s[8s1k,Lm.':KtGM]KoVSQ_.ltUt&uGWa4_L?/!3i$F$OYOh_EcSrii>_#)?_C6@a61(:lcYRS8CHsHF)SB9*I2tjMi!\CDLmnN]t3\>P8LMiCG:>Z/s+2Kl)Eeh0m1Gem@o>V9K=+Fl8V?*hpYRS7$lX1pk/&8I/49/G1fEP[#FYJsF'jt0R*e::)C]c?M3ge"^$Eu'9&&?^%[Xf67*DC!j"^'@GR-2ttl0JAMh]oo31\j+6VbHKRdo%39d+@&%N4,$7c[Xi$pXXqQ"P^`8PdkV=?Q-[t(oQfj;rY\h@8MG\8(D*F%Bal]^H$%k>OIR>'jt/LGF[iaRngBQ:[W3m2V.dL]6cR8<4&h!`-sYi#2bHLf'R8FE*/N9)gIblf<)8;#"-NADeKJF%3CH=Ik8+0Q@/X?*FsL#=B>0O<Se*fhnFS;*a9DGNKc;)gJ]f1T]L&_0Vmc;1?J=<\g)#sKqO@0_-ko,c0C!87sJPOjl*=O>7GaO6?R$)#2eeO53X6C#6*0,\Ur),r-$OUE+$3lQ.7eSeY]>mRq'WVea\l$5s2/bSSC:63Wl/=h*I@eXB#VP8U5RHfN*Vjjm#[/\l]2#Cp*i>MRSGi_QlM/0L#D;ClUR]Q79ot34(Jb#@HlpaOGB<RS?`:q.?eZnL9]PkBfeoIbq2,NW_O5YRS6=N9`6+\+]?t=rcQ+T-cpWTU2<6=kK`NSP.mrK<);ii2C%tF"c*a[T@uj9oO?E(7*jtj[0?0I@5tFYtCnZj0?a'@6E7'gc@WX<jgcB<ke>"DQWi70UH/dGaT2rrRn8.RF_)NGff;B^2g+FI>uR4%t>q9g0N[ehN,"V!\>k.#F/02mcZ(PB)-:ZOCbq%NP8Rd"UE>4<N:Z^^?D/\DJS(FBC/q-;oi4Cj&7B+:<kBIqg#YOg#14o"1p]!gVCQZ>A(T7#FfOFEu\rp]iq`3?sp+?j,)h9n'5KXUT^8EDR2FMmH3a*n$n_8#a9I-X0p8\XQ(A1=+F;1mV)D*j[blC3o-)X-1M1`;QNc^QQ6O+T5JH#_K`H._l_rt3"g*4]q9LaFUR.RJo0FW@U'^s>ol'G!$k'7b)^L6HDEWhKCRnR"]l(<XQ+-#!6]+o%6J$jI>-301Y$Xr*9,3q'3&N/3,`kJQ#>QXWFYm;j[I%gI5c#N_X:X/*!q"I?lO?Y(tY%4[+:je[J8DP;7k:%h0<EXA;UU0qpjV>c&6_7m1j#3Xk3&_,KjmU_5H*I>?bW7mI=QP-"WWbZdig,fRiZp0<Gi+;ql_:Fe$:8bE%8(&tcF];lH##Qa5@mlbMraDp>b<#2iu4Jo0FQe]mNm/$>q%PhGs)>B"O\CHnprVq&uQOB/9]#$Y"9c;e,`BsTk(q"2#7Zf>f?K5$mElBPZN@NG*F]`P9Mh_'9ih,o@?-ORRSYRS7$lTX7EnY'am7CH9JAY&eG)-?!;,WS`k7=oC779oR)T/isTh:L=d!L@;T"LpM/2XhonK8FEJ!6Z#H!*l(&)gDtH_*k_5J7XR_!3T)$%D7M_?m=>U^p:m@!*:Q##%#5j0Tk`;?s1N[T'=!m1i?sKs#Xi\s/U?fCWTMag6=P@QK&MPRQH5Nero4ln(Z+R]HFF0_)Cd<2m-@qj4cMOPIBr?dE#-k3uT3PI#D7hA_CAjQF0\:0\#d9%a;;j0@DhlQa<m@Hi'qKkB7Gb45*lIYL18HMZheMbJC^V=_r73m!Z^3VPe4@Q>FmtcDNT)`IUgFL(F\j),D?<DXqm$Q=Q'$:mm>sB8iqp:^o?"=/s%5UJso=]7ljHM(u__,_BqJ)#Za:ue7>K=/jm%/mqe9287gC$^I&8VIKC2HY\hGes9Bd#I?>`6a>S+:;meWS1^A[UfJb"Y)A<OY_=/t#WPb^D:fC15eE[6e-.j"+1@D[ka94`%;%X,?ZDTu-PeI8(1$ca9op,3=jBmA3u0O9nRC;kA+QifGSpZ/X>(LXDYZq00Q>d9A,gi99)XjnB/h3KIPeGaTN&m:`U@AitE%Ai8F9NbYNeIA\9\B&%_l_JBAj#D:7JZd_,WpL/CP=Or_,6QDgoaT)IuCV7.ELfjA1o3drJl2&I,pI/u9BS1'9R5mHbo'^sYakegTB6<XbemKT92Xk`LY'[h7X>?9qp17jI_sU8Ck[esC\g&[ddU6\28O6lNj_W_-m1j#3R2r_pC5-'[8"5A<WZ^``1_Oo;4,h8a!u\5`q5A#JR2df+ekU$8KhMJiHj\umaa)up:L9U:iQp6B$;P"';oj:k[Xip>G/bOW;X;,2Yp8H+pXZK.[(3Z[N[L!.4EI[bnDO'V.DJUBNhKZ)3:J79[T@uZ%0[0jRb^>#RnE+K]+<[ufU^=7(>l-^SFYm3C`PSuj^`SOR@--jdCV?jHhZfaT!%uY"T&J5JX>D:?0:JDfH"sAk,;1,KL<R@5'p4/f[o'.);>r`A0uHgD#?EM/&8Go44fL[UjDfWE3jH4cfB.jCr]$Y3sWZ^Hn^tVHT]g/YsXXXZMh*"Pae@mlqf?&GBNWi:QDth;E^FeKO>aD3?Hcu1I@Q<46"7#7rA+FO1ZE,$q3RRDterf6Z_-$2In/"O1Oct]%C<iQIX]Ob9T>1'$,H"[U7Sr,([u^XmJ"0W-V"8p[ZeCQh$5QL"<0XZdBfeO^mE#B;Q?4QM?CZS3jV/^(\)k[gqbrs42S0B)lOh#e#;6<VNe33j*ga]5@5VnrWbZ)][D^0!!H8os-TReS2)#bZobrh3N\"JpC@#Lmn`TX-T)^$\n3+*k#.#<=S>Vq.5'MZ.ID51Y?Z@i!b3Si8op-NiuP:aBW6m+(fj'=B>0'L%[+qLUW;e3.AGV_MNm9#e#;N1ZCI0jm1OD/S'23=Oq?`-@h^3fEP[#FYJsF'jt0R*e::)C]c?M3ge"^$Eu'9&&?^%[Xf67*DC!j"^%(X#N4kMgVA`W%OSKp!\EY^bVT4L6H8Cdq7jL7N:a,EI<^j3"Kk+9_W[A2cS7G[eaBJ4ZfUt7^?/1!mZf87Z'jDl2tQ,:[XjdUESYijjPsImmWRSql/:OB7Q-NUbh\S2SF%&!=U1^RcgR#eEZ0!h'"#2un1]9DqguNA?-G??pFUge[=3&/p%@)mJo=.`lh32^3%]`!i8o3l-iZsiB03gRm;D)p)JsBRPG2q6DMINn?s2;-PB\`3^CB$hX8eo\.1Ee:2E(3$0djTS%)19;mQnS]gF=ks(=^QuNM2Q?R8d"mHZkmrX!b58StN_9></9U[7t'`_P'o^)Kp)jWrn_EL%=`aZ)n5B-_WT/*J<hSEZYh.2Xmp$RMdZGjgU]pJcj3(W3!EVY;R,[[(Zu1g3h^n[X(IuU\N;Q40;!/$\S%R[T6E:atr4QWe]sV?rd$Y]Nb/;ZEL7$qO&,m9dC!G]"RGl]K@kb:OFYOY.Ic>g/LuE'^\!:n]`sKStNn?k:KggT'<,O9mQYY*.N3;e]PYu]o5.i_$!75^F:8<JM6C6fEV=tHtsSq]![0Te`,CIBRFJd$>T"`g@@=PrpZUBh7t.pO0rZ+]`Ka#b3O!dU.fhm*=<>NomT"*O;Vp$OA$nTZ,M:R^,C`LGJ`d[U-#>^0\u:?;<q%oh84EDRF(]L0O!$#"oLa$B<KPDi01;A,f)D.E]gLO]\0ABRF[+9MG3'4/L`l2f%)adV'Z`![+q,@^-H@@Uj"c+=+FjnG4RJh)1(0[D(6$oK",UF8C5bE_QoNZf?$=u'2OX$B]S!Ud;!Dq\!M!'jEXK1,:F)JiP+&h[.(8oj:o1$fp!qMIjaEEmlbr=2MXM4V^j`Xh+rO?6a.$t/$in:UOqc?>@!PMg4-:A2]cm/cc.k?XVS8Wc[GF"AId%n*)-0r2DfZYCp*i^b4"J^KfpjNmd+pladmYMJboe0Wf7KDhama:m$m%"#\Wl\aq&E((d[sofNBerIU=D5$\I-D;]*2JP.c(CcKON8Y>d_XYRS5bO6]9Ei(_@*BJgje1@jIq[C,+?pAEm;7P`_Hf?iHTZFp;jX0oS,Le4V%5C8l3Ec^+Y(!J/O=,YC2k+d;o];MtgekO;Wao#/a"Oc+gZjMT*c>)=>qs%<X2EiTM1NTHJeB?4ed9T5)A$2+s:Z`0$C]c?2j1<H`>uoSi2s-1DDb9&8o'KE&;Z;dQW-giIT?j45/K^;*@XA8\<pKpnHp=b$f9q]Bp<3<7.-pD1cUN-jGLR'm>+nKaQYJUWK.L477N5;4C'J=GHP/6:+'#L\CM`f$#;'J@g)='Ihq!)-I;E\B_15`g.'(>Mr889h-*863lW*>cF^XtA\)uF."#o`]C]j^;0!ilG>k\XcK'IpK+o0*,kbu"dl84:MW?)[2)!juI_csJ5T$PtUP3&g[DR`u4ZFp;jCNNcS0)N8A]pAQ>oS^:(*#hZ&%10IoQS[V^>#%,ZUU_r$@s\A]<qRPn%doUkg1kO`foO8Qj".%e%ke_FfEP[-M!J_7j2>!QF:l:,p'S#T4!VPk$+>C$E?._`HNdN;Qj;R7"P^_M\.0jk]`K`XbQDg,Jo0F7>R(qq?3-?<joMtQ_)Cd,Y(MRIY5la,*qOd@2iE,E<')kIjS>579?tl\s65d.&,M_VL!eJ7kP=RN^LWoX+P6m)%dmeeRTV/kF)O<$1`6*L'A6[mQF1YOs8%ZR=7Tu#U9CnM3Vudg\)7%.DAU-uUTJ\9)Ef(k,hN<-%`WWWa`72E*LeonA:"J^<qjX6h@%MF])fnuDQ3WA>.)E6J+FN=(kTY0D0AR(_6bQ$UHIF,GD&>]V*(g7@@&j8(\Gc_b/7H([MnM(K^.'1%)1I(I)\OX%K*97B*I$jG:P>]ID0RFah@7*\-7)ghR$=<!LrZNE18^j[T@uj[9gYLnO?d9D.fgGA/F&[7gBnR3#)'s6FF,b,?)dXeQ02IM-[0IpY@s6C?=@K?BW!GYKlQ?WuMG99s>)>S?Xr\.ZB+*EJ&g[jH'n!ip[R=Cp*i^RM,4NVDWP(?g]Jqm3Z3?T"1q1D"/tANb"8W<ke=PeJTBTZ8J"EYRS78Pfp'J3&e4&AO=Yh@G%@>ZFp;j.hhNe.r//rM$li.mfla\_k0BA;jLD[X]C?M'$+TVJfIGSbjUHhj)Yr/+`iX':SI\J3Nmi!afDc.eg_UY\nti1LL;(r=(]o$h3qQMmG!+pm:UN.RVn\S5Ub;l!L>U3.***_-60Va#6@gEP9^YI#&kj[8nL`-?c6gD6ab<_'itdgbhOY+hP/-K]2rY>Xjo"VklfbVbH/3+W-2'PQQ_^7LY5u7QIX^QVrY-AmHfk4/t0sueR(,!odm7CHrTE`:7oC"0133d52!=gQW62:E"]uFn1lMs9BNN,L3=FJF'5qc12O,obA+_@Qhc2I`)?Q4g<QRE=ZHu!JdRS=WqMVE[p#mkWjo^l95B4Ne92p<*G7(gm`Bs^(8%ja;lH##Qa5@mlbMraDp>b<#2fS)Jo0FQeSX`BNpBm+<m0Mo?tc_Sb,\5?XgL(Z9nU89i/d7??s,kU`50,pDM'%[%DCD5U>WolgVD"cEF"\*are5dS?U'g=IJOk?s2<8Vjk149Q0N4:-'c;a,,DO&8VG%VoEl"IgGl9EPe][0#,I#$Eu'c3Pa/O[Xf67*DC!j"^%(X#N4kMgVA`W%OSKp!\@!g")rC7D;[if#8>cs!L>%o!Ot2,2XhonK8FEJ!6Z;Zs3Vhd[@\-"qph7Xa"1$iQ6Orc?4M]<jl)X-q-^[,=^c!6]ApU&YB^r<;.Y(X=Ou]m]fVQ<4bL*p*'.RT!8f*T#%%"W-p^NaRWKIMO?_h$8AoG*ZFp;jX7^O:eUP\eI9Rc@Wr,r.WUO42GLpTgR>>_>nnsLS@HKsX%k28q*%0AC?<RA$&@thn[-lPr6h2s9=gJNu2W[<r?F@1]b[p7FJ?=,Eq0BDMJ7Z]^7_,*TCV`]AL!3C]/[R_,b)A>`3-7^coE+A(fEPZ:iiCK)<EWFQPRO)AR&\kD[8(+:/6WM8Je41(ApX\`<^)k8WOXYqFhEDQZ-DoG<k`R(.0SD@bOJighmY[V]^?s=:b!MR;W]&s1ZK(dh3RFC?s1;]+2e]GTVZHJ%KdbjJi^"L^6m(n8)Bes-jZ25YRS6UE`q4kX.)Uo`H\HFZBBWYl\OP<bOu:IXDWp[mu((h8DHP4=sb63\'QukQPHt_$3ECVYRS6UE`ppMV#5C+N-?tB<H]s\`HU!A!LB"sAQ:s0rPMmq_Uij34470[6FeXT"bLULV%nXljg%?KWZAJs[(^ebG1g-OAqKqCgFL(FJs[nqH_,-pqPJ_LjOoPehWo+V%<?$Ji<A>F&S;BN1MmkEU9\07!;d&1JX:*[o?;n@RfgiVAoi4iUJ-A^4@.Trik=UsK@[U9X.Dn3T'[8#=kDJl]<Mg\9aJ1YQdL<@>L7%9lbaJU#+o=N"^'?PGNA=egAl+^YRS6eJ,X2&_%0[sIP@5lI!liZT'[8#=Z0iAWtT:O0B,$[aS#tF/27[NeHr[8(NCHhA:"J^QC%p8l3,kWMms6DZFp;j9?[KWFb4Jg79g'2fj4]F(&U:Y2_4^'gVf-GNt4gp#Q+eB2Xllgl\:^lj,G$pH1r/uhq:2/3b$^1Ye:)h/%I$V+HdW069G8;,1m*+/sOO?]AM3>'(KA9:U05VfNnTEeV\WUs,?XI@e6d#e\\VSC<^WY&=8_hj9pV9k/S#%Fb4JgARBZt'L%FGX;W+%9?P,EI_KE0R[L*0+8`Gach(,$&"W`.?:0L429C*q?3+)lgmU1L7C"U2]^0<FPKh#\ahj`=\cE5TLC(D?QSR1_p\![,<oIY-BcW?f8]I&$$fbshlSM`gG5Z9d=+Fk152N4rgZg`S>\8sL%ap)H!dpSI)gH'#.f&Q\55^@E<d.*T"3qpX-;2:[^WlHZYcJu0RI\[7J'+59DnDK3p"Oob5WR=gH-d&:G6t^/QV9"^Lj:ld95s['B"-Z8at"-Fm46D)3]amGUMfNf;\6QiMsV6e=n)\th)^0a>D913eqjXkp;I-LaopJ7b>:q_%fArLR`R1Be3>1EProT5QGp#Ac1VLKX@q`^B#Qdi!T;B/gVD"N>ZU0cTjtj&bGt9'3GN67X^52LY*WXF"^"f@f/p_$^:,m:a]'cibKHUA$fdpu$NI^'%Lh:5"P^^b-F$JYDrPH44KpB<edMoG+[+S"AfT+8"!0K6_*k<Z[>(q8hgNLrn]-jY%ZH^/m1j#/?f0AEnGiPD_)Cd,Red#hl[@Dl!LC.1/mSB;'EEE1D;[iJobh5jS$9R-/B^KkE-6bLi'glU'A6[mQ6kYo\2qGan05#fM/9?qb7aCH>b,7AGS/QD7(-0IAVk[4Y"l21]SPl],24W`ZG\j*=!uW)?Ja_R9T41t3,mbn>X(EmCRlauZFp;jbO,dXFb4JgAMgPo,Rted]7#-gMju(Wch7^M/A!^ReHr[8Qe'Jo4oT*#F?GILc/VMppil(O8[XJL[FToFBZgEXk?FKh0YFnL1UcQlAPK>Hp'S#T4"S1t$+>DOC'LQ)j=(UR*PP*1m5m")(ee?dHu0=88)_2R,M9^_gFL(FCp*h?-eJW0o!tiYfr(MGX%/_ObK>%?,F=[6SBJ1N!\DOg$?1->D;Z`>0B4tV7eu_>>h6OF^eNqcdfjeqjk)=Eb)_jbfNnTEo`3ndr::J9_sKV('[!25PBhEpb@O]F!'=BM2V"hVdQ2Qln.&3WbB_0?!NbST-0Y@EC4H0WaZk:Fq:A-rO$>#jGpTa!gH[rh<W-Tplme(MQcj+app")T_5s)1enrN?!A(;J%s.5MSrJ5PL*-$S/HtpT7jG5.Z7.G6gRiDPT1r7R_Qo<u[4"#=gl]ba>>8\K+4"_$-WufSgSVW+37m__b5q[X@1u=`HT2"EU5<TJC/_b!5<c;h/dnP?b5q[X67rXrq`'u+l2K&Wn^`^2Db<ri+dW?4HsR]\MFIU@@8]6BO^&Y%n9M/952t>W!e=4jA\gcT=TH6m"ht05gHu'n;oiOd6ulE1^aI+;]U/hPT-Ta,'?Oed!1tO'"i(RaIV4$%4albeB&@7YYEV8`QSVh'EoaM+J<.f?S&,d<ISW/bZ=%8k\UEWkO#DH1$XA]s('*hYE`iCt;sWVP2Eu[+Cm=$WC;%@<*8[^"BfT,E3kTTO4GC:mpE6*eq2>j;pOd"X5V<EEpl*7LD\!T`Aub!"b!\iK&bN#5Y0%a6Z]WrK>&/7!,`\nF%OHpS&$e7Rr#rnp=eAq7!:WF/&-2.VUg-s76MJ8Kk-F[i17?>.2pR,uAH;d<,R=G/%YAe!-Eluk>ZNPGZHf)PUPuaoXE&-Hnt7!U6nSiIp``!0!-\u%:V-S>gLkP0X_R[(GD^$1FjeTI<SNk`qAF<V!5KBW63+NJAGW8$BraQIQaJ'%oD)YBNjMf1SCPHsAc3%J/-+Ud"<dd#6',l^As7iH:p+W4p%@X/C+fhH%k>%d6ZIBlOI:(m;u8)3bITaF/-+Ud"<dd#_,h6rTBrqSbCYT3Z2fD.&qg7(#="j(H5?Og+IkqS$NTrG5mRI7+NX^!a^kJQ?R,mXi""hR?m<-4!8rb<+TU;K>S^!YQN[A:OWXdW4-7X;M<(rBJ1hOg!,r23\Z?pWom"rf*&LR%H*EDOV!g:(>S[>/7=l'NmN@qMR?ITLk06A"QHN`KE`iCX(C<D.\:`AYAT`J0C\(F!6WTZlb4]$kB?JE;o7b";j$WP=+;qX4QN[A:OWXdW4%SM#i`oN0@,,Rd3uZ6VFN;%((u<'b5=ieraCPAP?R,mXi"#=gXO^0^[=70cB_Ggd.rIIV\7=TpUZHCSZ2fD.&qg7(#P!:k=8cf2df%Md<mG9AK8`;a3a1r@/dh[S,!cJ7GH`<#'n!CK#GS5Xa16ecL,%BlPiT+MJ1hOg!,r0Eb[p2*0f+d9G+^+I"TWq4+9[3VBVfV/r\oRms8@EIj27qb=3Jc!jpU5LS1m0J.*6$$!+-uW!T4I%Q'pn!ZJ^W$Z2fD.&qg7(#@C.NPs7V>=!s=<!.9nO"FrRq9nJ5_Z2e"F"1YCM00]H7HcTd74:etR!7i:4K=d8h!q&FG!u&df!O)ha*o,#TH)uJuU;.e*F'p3&/-$G/`e1l8L][>@*p3Y\cVQTC;XCc)p@SNp#9,Ze%!X.Q!+6B_(:Y<7-u^9M3+oX(f&,)SIE?&?.NnopM\*//h$?E"qe5q5f&(BUgjJbjUAUFXp\I0;jekDh\Cn0Ac%/0+\$,`)o7u]05r,T3#Q_^b6lg5*!`@l>OpRlWO'2jmTL/>;DLsCfCj!+9<aof6iQrb(j;Yj"#Q_^bKH-=7rK?u3e@Q<K!r&rEQdr3f7P62iShW(O*P&8!j8:/G"9=>kEr;<P$gIr++b;%\+7XhD=+2upFF%#j'@^8OQW9S^4:uSPD\GG;YQuDm,2rtB7%9ZRZ5%=r%dsV#S)0@ZG#+2q&r6V`&Z8d3$(Tr&\9q5KS)IL7QPHt_QZYY^#QXl(mG.e\gUIjr:`lB$q"MO6p&b=(=!WPg9"(_i4Tn2GPJ`OL[3cQh]*K_'f9K((psDIlWZ3R&[T4^;QRPqLT/[V#66Q^&j76MWp#90b44MF\_N+>q-JDMN6+ngA8dGD4U#c!OM0kX;lI+7:+G%(0<ZEpe-m,)n"niQ+>%dI_qHQo=cUUN\/L)7lab0,(U\nL`k;[P^8P06g(89gaQEm)U4rRMGEOGU@'Uc(l2Q3@N@BV^Q5!U7um,Ot0Rr0ke^-W,,^`q9!h\Dd`lD$_[XDZ8?=0\kMh:Klh61IMR;.(L?^$,7)%gu9%!3c`?dasK8_R+>:bO&E@TF_;#iOT+-;F1Af#W:H_o(On^gK(HVc*4cVnGa?>/ig;4WrJ-RgTg05+U[SReH[_&KE,BlC-:..658(-3X7:5KE,BlC-:..658(-3X7:5KE,BlC-:..658'Bo)FCcqJaMdK]seN:id^EH+rQB2f;@s!Pfo/,d85A.'SbCSPutO5#<@rpTfC#T4Mo\:Ia9nPRmgG6;7Nn;2>;Nkl0<bY7D(:5.n(2re6U%^R5`7>:Sa05D`]I4Pks`)9h.W*+h&YDF=d3^`q8CYT&9EY`EN@VV7"*C%S]oK;8$fC)sP+XfKJTkjFf[S3'DUkM7R1!*FoK!d:=M"nj\#bDPJi*mO>_\j<nf>h.$_Aoac8Pn2/7.3S[nKVII-lTY,PrgCGp7Z6H%O+1.VQfRX\EAA6C'V`B,>)ect*D4ZHbK89\q'Jo3E`NX7?^5VJ0<95!JqRFGmnO/i^`jI-5@N7@VCdD7N^h2SqQ4E+r4^\e?F2(/7"Kd)Qh@$/P3G\@VbQf;>2u$/i"p`CEI>I$J!(EGJ41k9\s7..43*tf0WRrn%[Ol&N-e]qJAL;]Wnf6^,Lp91*_O`Uq>4.#%\u.W8[:3j>7ZE9Y`8F`;S>X"r-^_C76"OYX5Ci]>$&C<<io?E3A'&-o7PlS\gNS$;F1Af#Xq0efu=bCB!=.pr%l+2d-gE>q1RdBkA0*gSNITNNjC<k.'ScjU6E>I55s-%F-thoo)(9R)bfI%.')B>_#.Re\*@DAM/a>(#QPX6W!LPtZD*9?"LVf$Xo'ss0YdKQH7'NSV0BXA+&-cg$;k1Qhn90*C%q%L'&H"_!PfmY60EStjmOK[fuo7sO+3LBLj?94QH\FD?<4UNk3+_$&-_dtq)A?=L$;=D]IuHJ.3S[nKL4mM05DtJFmYT'<j;Ir-CO%10C-K`<PFgM3cFhV4XidMI<aq1$Rm5!=G.U]-[kU7,/()0XLc*H33gGL=k+NKX7@K^;MYDOnBMO\;F1Af#W:JBi3oKM*DP(rSuO$sg?M4Ea6-jCHT@uB-dFV1fZL"[O?>P>fgp"L4M%(H'V`B$]_TI!PRmgG6B*qEH/lUQU;/rtYMhf?#QPX6`Z+"L+7;lI$LB"In+Z=kGig@0m]*h=kN`Ql$eJ9C!3c_t%dZY.$LB!9k>^VTg/Ifkh9dNioA:,\?7@#t=G.k'G,#TPp(;[1j6Hq%QLC%-7k\I<aKaO0<HQ4?eJlMkK5kA:&pL$JV1\hV&IK9*NC"?38$]$,O*$$8,7i=1R@[N$E+hhPq8Tk-&-+7JPleQpL][Iph]ETgd<(aV:3^,!CMrHK0.S+aIOQE?=G/.-G,#TPp(@<8GL^oYEq4:#l^jqWoWlV,a<)5r;F1AfL^1/Z57`GrY^o<sR0c>d$f_QL/]nBNf%Pt.Wr(r=^orN"('&,HV8.!@Z@IAY]pCUc[9aVeU6c&!,#g"q)nde1+0B_2CRaP\VU`SrjkoNsa(_[T:SnBIg8H!0jd$d#*C=^MH<CCCZ2e![.Kt!j&-_d46ClTmA\hY#+TPVtZ3kcM&-_d48=`]96Nq\0KE,Bl.P'/2658(-3X7:5KE,BlC-:..658(-3X7:5KE,BlkA.`]-`2n.R<[pik'$[lVd[f?n8cX)fsX)"2P84??72Meo<12PCOSa1658(m;K'<hG=i,@(3/mmo\fV?+J4eO1$HVf,(/;o9Qs%aQeNf>M4lMQ^Q(e,4M(Nm@OSrW'\J(F(0jB:!Pfo%T?tcnCCVTN?XIHS<]qOQr2mU#n4i62T4"j1:,UO0e*!69@]tj4Gm:1@Ro1cd@:jYcGeCG223VEVld>K1X)=KMVg@3'CKgglajj?$]=/E"c)5n0b3uBPij1T/Tb%C91%B-!?iE7Ln_uQL53=$f>hHUYF)Co(M\6)A7DqDk%h3,O%4t7+n*\_#]A0QYB:R;;c=D'.W3hIYDg1bn]UQh2PFg"]ok@#^AZb,JZhnL@MJC?tKda0ddJ(`t)CEuS/kkV*W8KH0^.keg^j/NX!#BQG0C,T[eLO^4,3P<=V&_,5XD6j\)8C)C.lfTfUjo8.27374YDR(n4G>2fO6X.5n;E%P?X"apOQr@`pslkA?r\QKCK@Pf:?GsUH'[L4b_'FQQBX1np/"'UY_JfAG^f66Qs!b^JlTX1AXq!89SV)dB.0V7^q4l(JsQ^?jr*78'qF.)7_s0%)G-OZm]31q[eqr<V3PKg'u%toiXfu!AY9S<2NbYr%DDcPbo+*q<MsC`N.[0\a;f#XC+K=XI=oAHr.hSS70s"1,"=Wo_9D>#TENCO@qW@RR8b7cX\d,ek45UrSAq_r=uY;Ui`Vc'BVMfWA9.!;7:nl/M*_p/7-6'^o+!m2?-?2,n[)[d)149SABAhg!]cH<pF81I4XEH%!Pfm_eO%!rOIn5Yeu332=u'8NB"";p>'+PaM(1#Y=N74Rh8=nV6!d<XG[?PKLN^eS_H21d<1esTKda0dpau>Boc6#`O:9Q`5L79O-=<qPWEg4LQ_'i/1=SJ>i30EDqD^N<:%bE->(UCZ3=dD=!,H854dhJtn4e254"RI6EFk54*V'WeWn(@#`ALlo."V`@Ylo?ll'7**j(-T@Njhb_]MW:!+@8#3H/R4Q_1B(%'!9"<Bb(^Rl`Z0g[u?)/'\GnEc<5Q?mCq%E#O,R*K#(KX9[%Nc1;.]^?R4]"Fd%[RYJsA0.jcYf!*DXuA6R$*.=FiocJ?IAPJ8u/.'Sceos2.`n(Z$SBNoWNY9p$2ofbtR!#EtqrF6j`B([b!5"up(:Au?.&-_dTmJIqRT<_`9:[$*'(0\Q.AB_rE+EElA2neuo>7Y;bj+E<r]B?;B>.TPFjIq5,?k':*YT&9EYRbm%[CX%&rbY75!#D7BJ___BJUOJ</m$ms`BKLt!%^Go!kV<c!rGgW^kJ!a!%^Hr#J3ih!rGgW^kJ!a!%d,WNE?)Rc&!PV&%t?mK23k(*o^N>p1O(_s59YWcYIr\CHe/[]hV%TkI3X1p(jikGZ0;EYR.uo\<%=)J47]4GccH3AglBrbKK=6eHsk$H*.MI)XZ5_c;g(+?Pl.7"FhGOf%k+`q1Y5A9-FZ/6SAg"UkA_U&`#NE?3a\aI@]%pomHE%\*h,N2eCY0?GW.4%YruY7et.$6dFkecTE7e,uZt`?t&BKppmGCS]RdUg08>s!JAK]B=PQTFej.bh5jfO1EHm#?lPm0O?c&;!Pfm_]nk7#e\PX*e^21oo'Ti?Zs+csNOj*V:1eIJWZsm=H8<AtEj]g!KK]?-CJ?>ZbjU_MIHB'M0\E*2"nnXV"W(''!3h8PH<F%GX'W=d'03gT0(%6DbkMG>(!2h_nl=k"=inMEVuAKcXShK:^G`\!<2V05JPG?>_1e*b!%]>cZ[^Z1MOQro_Wo>QHWeH!b6Z2l#rX9n"HhlmE$j>5>.rZ5MDr[:G"/,#jEW_4?iCr3d`O8rIIYoY&AL(m+UW$pkkYS'PRmgG@e==5?tOULZD#YQ'm(TG#*Y*k@qJ3UA<kA^W)fN`^:W4>F#U@$]_5#P/(je9YDr=N__d&qYR.uo\<%=)J40TbK,b(+(UE?#nV$MIXLYdi<QDC3^LE=3ekb?*T:hH+g1AF&HErl[iTpF-YDqhrd@q0Up7[fV(K*R"Y_]S2niKbKaId/mQ(_M#-6":e]aiqaR<81<V;:FVZk@%h<1]N%\Ve^PlMqHJe]H>n>/tkI?1CCP/V48ai8o6_XpPY$H/?[GYO:7NfQom-ZT<:]6WmDZ@Ln/@Y`/m,Ys/aF"9@?Q(i4hPd=Nfqf;%0W\<0uCIo?lk/79FCT>(@*^?<\+YEN>.N@Z@Y!+5Kah%d8V27*.^AY6&_>:4o9H<J$IhK*$2m-`X.AHT0KLLpU(k+S+F!!'fOl".\KoWeGs!4X\q/D,qg('"=7pSF2[]@"e'!!(rkoWhj`H<C4J!8NoI(@4LD$NL0WqpNZ>h<8DN!!$tFH<IHk]ds-`!:EK5$[/;3"TSP<IHb=ZDY147!!'O4#I'sf&%sLo!!$p#q1J(,5QC?:bL[52^PseX/-#YMmcZaAKE)DTp=g)Xzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!!Mm6@H^Wt,~>endstream + +endobj +% 'FormXob.f54a132f85de37697b101f145bc60841': class PDFImageXObject +45 0 obj +<< /BitsPerComponent 8 + /ColorSpace /DeviceGray + /Decode [ 0 + 1 ] + /Filter [ /ASCII85Decode + /FlateDecode ] + /Height 1194 + /Length 13974 + /Subtype /Image + /Type /XObject + /Width 1604 >> +stream +Gb"0WD/Ln+d[ebiJH@J!lct!cHFm^UO9hYfX*>i^q,hD6VCQk\a.oJ,TNMzzzzzzzzz^u,*1K#^CXB*R!dqK[#Lq+1P0!*`&[mk'"g9)m*8>=q-K/MmU'7/D1ITcjC^da*7J%07l>Ibn:B#XF7=oA2f$!(s&ZpD+YK:a5kN\'P\:''\SmKn]Sl83cPp1^'I>qK["Q+TNh:c[-$/!@X(ZhHOY!5`,.)hEjR08u/*R()d6N,5o0`ck(^?l0#a6L&dH/5OU0\"JA0ZH#KB"!%$(>HOC8`.$8u8>A+:-M=gDr6:1`FUn@As)?N_ZrOfVd&:bDXkIlS(!0g#=mk$@!TLAX%DkS<S-.:+d$Om+bOac.kBF$k[o^gp+6NB`STD'*>!`1*>]XQ6!J.h,0]nM1@PXn%-/MmU'7/D1ITcjC^da*7J%07l>Ibn:B#XF7=oA2f$!(s&ZpD+YK:a5kN\'P\:''\SmKn]Sl83cPp1^'I>qK["Q+TNh:c[-$/!@X(ZhHOY!5`,.)hEjR08u/*R()d6N,5o0`ck(^?l0#a6L&dH/5OU0\"JA0ZH#KB"!%$(>HOC8`.$8u8>A+:-M=gDr6:1`FUn@As)?N_ZrOfVd&:bDXkIlS(!0g#=mk$@!TLAX%DkS<S-.:+d$Om+bOac.kBF$k[o^gp+6NB`STD'*>!`1*>]XQ6!J.h,0]nM1@PXn%-/MmU'7/D1ITcjC^da*7J%07l>Ibn:B#XF7=oA2f$!(s&ZpD+YK:a5kN\'P\:''\SmKn]Sl83cPp1^'I>qK["Q+TNh:c[-$/!@X(ZhHOY!5`,.)hEjR08u/*R()d6N,5o0`ck(^?l0#a6L&dH/5OU0\"JA0ZH#KB"!%$(>HOC8`.$8u8>A+:-M=gDr6:1`FUn@As)?N_ZrOfVd&:bDXkIlS(!0g#=mk$@!TLAX%DkS<S-.:+d$Om+bOac.kBF$k[o^gp+6NB`STD'*>!`1*>]XQ6!J.dphhjp>LHG@crqI^#bd`:BLVuJZNp&D])kOF]6R0!)f5QAi'qMtVa8K%ZGS,W8V\C5p3!"8Wj6i_JX*uY3rHiE^lCo%(F!#D=Q!5.P<s5nS&Nr`W;)?R^D^ATF\dXM`,lOaX-hPD@q]LtTlGaF-bn1G.Ni*@6&^q2E+J9P]5!:S>I!8aOq!5(rl!-jib!:VTM!T76%!l2E)"Ft]1#QX>A&-1R`+TT/J6ND@tL&g]q%0>Bm)?R^d1^&>QBa=_-dLZE8V',iO91&](Q\GM0/e%j>>oEd[]/0Y@GA.<_n'VaIhPDC2/,nHaNt9"c@4j`(n/lT+b<@"sa2;/0Eo91=^6eftj``i2`?toij6_2]L)`]Ni*,t@Q_P_Ed1EgR^<bnSaDj$>Y,1T.3>uoX%=r<Zqco/9*(NBS>5CFLUER\*&@e%?cfJi]EARg$V=/Ic)KHf,JSXNI>`OOY7ml3<qEC7@+ihtA\<akTj_2_T1^'tXmrLK-EZ>O>C[(_$NeSND6f;/E5*r#fa3bI.QG1],BZP0M"KnTiF#b.Z*"@I7l2+_GL)`]Ni*,t@Q_P_Ed1EgR^<bnSaDj$>Y,1T.3>uoX%=r<Zqco/9*(NBS>5CFLUER\*&@e%?cfJi]EARg$V=/Ic)KHf,JSXNI>`OOY7ml3<qEC7@+ihtA\<akTj_2_T1^'tXmrLK-EZ>O>C[(_$NeSND6f;/E5*r#fa3bI.QG1],BZP0M"KnTiF#b.Z*"@I7l2+_GL)`]Ni*,t@Q_P_Ed1EgR^<bnSaDj$>Y,1T.3>uoX%=r<Zqco/9*(NBS>5CFLUER\*&@e%?cfJi]EARg$V=/Ic)KHf,JSXNI>`OOY7ml3<qEC7@+ihtA\<akTj_2_T1^'tXmrLK-EZ>O>C[(_$NeSND6fs]ka*JdKIfCN"3KAj</\R5<Hp7K-5oOb`%@LFH+6sfVkk+mlQD5VDd?(o8pTYbKM:.LGBZSuWqcJo66ts_^1h:LgIB5q+U,:pj)D\eo51ZJP;&XHp%@LFH+7%=9-k/1sL<M6_O7d0WP_L/J6fs]ka*KQf8jeW6+`g<F@m(_CV'3n,OL_4^YoX@2dZEL&aP>5@=HA2)Buk9NA8^X[X@GXP1upV71:Qm>etXBc)KHf,R9OtZld:eB%69H'bUpMhok6m\L)`]Nk*FlEH8Hm>6]RobF%bt34W4s0+ihul\Y]&**Y!tSOQ1#qgsZ(%O+p&:aDj%IDWuSN7mj"-j>\&5\+Dl8UENJQEZ>OV>C%CWd?#ac3KAj</\R5<BLnAB*(NBYQJTZ.1aG[\Nh[b=9CH@R)A8kia3g!ZV>%59%>iMpj(QNhded.-L.#asEAV3Dl$]X'6_ZEu3#XQ]oKLj$+]0.u*"A<?H6;J#O=1PuNeYb0]oVi"8<eiK7mlF)hT'q!,YCFaUEO\OmpeL!&u?bld?(o8pTYbKM:.LGBZSuWqcJo66ts_^1h:LgIB5q+U,:pj)D\eo51ZJP;&XHp%@LFH+7%=9-k/1sL<M6_O7d0WP_L/J6fs]ka*KQf8jeW6+`g<F@m(_CV'3n,OL_4^YoX@2dZEL&aP>5@=HA2)Buk9NA8^X[X@GXP1upV71:Qm>etXBc)KHf,R9OtZld:eB%69H'bUpMhok6m\L)`]Nk*FlEH8Hm>6]RobF%bt34W4s0+ihul\Y]&**Y!tSOQ1#qgsZ(%O+p&:aDj%IDWuSN7mj"-j>\&5\+Dl8UENJQEZ>OV>C%CWd?#ac3KAj</\R5<BLnAB*(NBYQJTZ.1aG[\Nh[b=9CH@R)A8kia3g!ZV>%59%>iMpj(QNhded.-L.#asEAV3Dl$]X'6_ZEu3#XQ]oKLj$+]0.u*"A<?H6;J#O=1PuNeYb0]oVi"8<eiK7mlF)hT'q!,YCFaUEO\OmpeL!&u?bld?(o8pTYbKM:.LGBZSuWqcJo66ts_^1h:LgIB5q+U,:pj)D\eo51ZJP;&XHp%@LFH+7%=9-k/1sL<M6_O7d0WP_L/J6fs]ka*KQf8jeW6+`g<F@m(_CV'3n,OL_4^YoX@2dZEL&aP>5@=HA2)Buk9NA8^X[X@GXP1upV71:Qm>etXBc)KHf,R9OtZld:eB%69H'bUpMhok6m\L)`]Nk*FlEH8Hm>6]RobF%bt34W4s0+ihul\Y]&**Y!tSOQ1#qgsZ(%O+p&:aDj%IDWuSN7mj"-j>\&5\+Dl8UENJQEZ>OV>C%CWd?#ac3KAj</\R5<BLnAB*(NBYQJTZ.1aG[\Nh[b=9CH@R)A8kia3g!ZV>%59%>iMpj(QNhded.-L.#asEAV3Dl$]X'6_ZEu3#XQ]oKLj$+]0.u*"A<?H6;J#O=1PuNeYb0]oVi"8<eiK7mlF)hT'q!,YCFaUEO]*I/`7ST9#,LJ,2?qUER\*OL]d%IdrTAa2m.&I@n^1OQ1![>YEu;E\ui:)?SO=pUM7Q3KAj0[Iel"7mi<3+`K#]T?GWDj(J^'9AeoQ1upV7!nYlp\Ju&=NeY?WoR/>^6]RobE%QL1bL)F3BF%j9hrf#:j>\%Zf@'E(*"=ogL;:4hI4e#WNh[b:/Ua87d?*C%#[C$[kAiE?3#VkMdeC9l%69H'^pWf_/k89hUEOS.I@n^1OQ1![>YEu;E\ui:)?SO=pUM7Q3KAj0[Iel"7mi<3+`K#]T?GWDj(J^'9AeoQ1upV7!nYlp\Ju&=NeY?WoR/>^6]RobE%QL1bL)F3BF%j9hrf#:j>\%Zf@'E(*"=ogL;:4hI4e#WNh[b:/Ua87d?*C%#[C$[kAiE?3#VkMdeC9l%69H'^pWf_/k89hUEOS.I@n^1OQ1![>YEu;E\ui:)?SO=pUM7Q3KAj0[Iel"7mi<3+`K#]T?GWDj(J^'9AeoQ1upV7!nYlp\Ju&=NeY?WoR/>^6]RobE%QL1bL)F3BF%j9hrf#:j>\%Zf@'E(*"=ogL;:4hI4e#WNh[b:/Ua87d?*C%#[C$[kAiE?3#VkMdeC9l%69H'^pWf_/k89hUEOS.I@n^1OQ1![>YEu;E\ui:)?SO=pUM7Q3KAj0[Iel"7mi<3+`K#]T?GWDj(J^'9AeoQ1upV7!nYlp\Ju&=NeY?WoR/>^6]RobE%QL1bIMjo*hU4#eE<V&-t+:`-[@]g%Jb8H@T/>Kk+dT`Un?`0p]h`<?d_a@E\mpW9DV4dNeRO]8O(>?d1Cg]kpLa:)?TCSr?O$d6NFirTB,*I#f)f!PIqkE!Vhh,P*_pe!+4/Mno?Pii(No<?B0a?Hq?QEbL$lO0Bjj03>qtg-2f)B7md9jUn?`0BF)D?oTQp-%0?6eIZg%m+TPlt:\&N_"Q2rL8R@F3!.7@&aii'CJ1p.7GrZcEn0S#Y01SA0^8.C^j_+q8Qh6KS*";rDP(&R\UEKVEdSKFS1^)`0qFP"RL&cTm5KV*r&:cEpcegO)51XfOI&&tE^be4r^Lm,qL8=j&$]gA@-Ni:6rV96KdXMB"9@=@OhXoG"I%C6m!*ISi+p,Q,rm22VhXe4+)'f*X!3d:L!T6]Ppp\,hIgc<Md1?<7o^+k=Q2Yh)=H@\,n1G.Ni*@6&^q2E+J9P]5!:S>I!8aOq!5(rl!-jib!:VTM!T76%!l2E)"Ft]1#QX>A&-1R`+TT/J6ND@tL&g]q%0>Bm)?R^d1^&>QBa=_-dLZE8V',iO91&](Q\GM0/e%j>>oEdgkRW4D<VjO@3]=5Ihe<M6j3RN!ps(5;i&cqWGPi>n+5bbi)LSG;r/O#%pZ"?)=G-'!L>VN6r-j$+'5R*.`pc(hN8K]bCgmjfdhmPSTCMgKSP?3%G8eBfpbR@`^9`YRpeG>o*Il)ta*0GH#2a,'^Z3Z8rV4Ybf&/WLiHP2;^E;@d`#=$$1&R%rj7hRqRok=31ksoXBDd4+B+o(MS]:.\rf#`qmqcGB^=*pJa.Mo!nXWCU_06g8n+\\f5JFI\2>BpVp`4k(n&KW1Ym0*"%):iKq#1!5-J%*:NT#*Z)8@9Nfu+eVV_S+05NDLu4.B?)mkfdVnRqcKHtO+.n=@Sg48t2rO7-mo%DL:.I`J)Nqsg4OXMK*!_sd@VI_Yp=+)LE9iVOG%r+XW0fJG40U%Ftb[!t1$JFq/R^!DK&?f^dU:&eYN\G1d+J(E'Im@XR056pk1s76,H>lM+p5AV5S^JOdQ>2$_3F?o]cTUpn&d?$F.17j6I9LHs9a;k^-:IAfm+_<LkNeWLj+Z.Z01)b1'6cRRdRV>;1%Cr5Wj(SeD1o-(bgsM5R1k]HZ;FX%ABZPE:68K'"UEOh<A3:<pR>-sRO?4@9SqbTc6cs)`*=Wl^6YN>?AMiJ.L5`#R1t.OA)KJ>8`mYKfBh0*N\YC>.BaDs?Ul:&`d?*lTKOu-#7RQTWaESUi1CYe.+a5bR4:S!PL6U)I3uTlGL<rU]b%Sj:%2hr/BVlqa1us[ON2IgUduZ='E^rL:dh%s^8/VlIUESZ3#gG3%N/$-8ORY/\Af=Q:6geX/GT&n)%4S%qG;Nhm%AB2EPgPRS)D[n=cqHgLBZM2'),EV5VBKM-jGntRV]dnGO>7_p7mk;F&=R<()%F-O+ld8Bbqu5TL>:1<nMGo2)H'$lmV'[d)F?4h.AJ&11h8]XTp^Y"d?$F.17j6I9LHs9a;k^-:IAfm+_<LkNeWLj+Z.Z01)b1'6cRRdRV>;1%Cr5Wj(SeD1o-(bgsM5R1k]HZ;FX%ABZPE:68K'"UEOh<A3:<pR>-sRO?4@9SqbTc6cs)`*=Wl^6YN>?AMiJ.L5`#R1t.OA)KJ>8`mYKfBh0*N\YC>.BaDs?Ul:&`d?*lTKOu-#7RQTWaESUi1CYe.+a5bR4:S!PL6U)I3uTlGL<rU]b%Sj:%2hr/BVlqa1us[ON2IgUduZ='E^rL:dh%s^8/VlIUESZ3#gG3%N/$-8ORY/\Af=Q:6geX/GT&n)%4S%qG;Nhm%AB2EPgPRS)D[n=cqHgLBZM2'),EV5VBKM-jGntRV]dnGO>7_p7mk;F&=R<()%F-O+ld8Bbqu5TL>:1<nMGo2)H'$lmV'[d)F?4h.AJ&11h8]XTp^Y"d?$F.17j6I9LHs9a;k^-:IAfm+_<LkNeWLj+Z.Z01)b1'6cRRdRV>;1%Cr5Wj(SeD1o-(bgsM5R1k]HZ;FX%ABZPE:68K'"UEOh<A3:<pR>-sRO?4@9SqbTc6cs)`*=Wl^6YN>?AMiJ.L5`#R1t.OA)KJ>8`mYKfBh0*N\YC>.BaDs?Ul:&`d?*lTKOu-#7RQTWaESUi1CYe.+a5bR4:S!PL6U)I3uTlGL<rU]b%Sj:%2hr/BVlqa1us[ON2IgUduZ='E^rL:dh%s^8/VlIUESZ3#gG3%N/$-8ORY/\Af=Q:6geX/GT&n)%4S%qG;Nhm%AB2EPgPRS)D[n=cqHgLBZM2'),EV5VBKM-jGntRV]dnGO>7_p7mk;F&=R<()%F-O+ld8Bbqu5TL>:1<nMGo2)H'$lmV'[d)F?4h.AJ&11h8]XTp^Y"d?$F.17j6I9LHs9a;k^-:IAfm+_<LkNeWLj+Z.Z01)b1'6cRRdRV>;1%Cr5Wj(SeD1o-(bgsM5R1k]HZ;FX%ABZPE:68K'"UEOh<A3:<pR>-sRO?4@9SqbTc6cs)`*=Wl^6YN>?AMiJ.L5`#R1t.OA)KJ>8`mYKfBh0*N\YC>.BaDs?Ul:&`d?*lTKOu-#7RQTKr'HIjhn8:HnahNcT_-1$V]fV.jNb^to^V^q],i%YJ+s7@:Q0T<;FX%A9_Qe<(b\$,l=id,%Cr5WgIk>$H5][N6geX/p<jVLSq`KWO?4Ad^%B7AV]fV.jGnt200M&TBh0*N\YC>&92CLm)H'$lmV']8dM&CIL6U)I3uYE<oYd]++_<LkNeV@'4Yc598/VlIUESAb:Q0T<;FX%ABZTnq';M.RPgPRS)R@'K`2KRWAMiJ.L28M+1$WID)%F-O+koXcN-ZC?7RQTWaS+$qURm4)d?$F.ZG#nKW2CeM1us[OCbIq+l=id,%Cr5WgIk>$H5][N6geX/p<jVLSq`KWO?4Ad^%B7AV]fV.jGnt200M&TBh0*N\YC>&92CLm)H'$lmV']8dM&CIL6U)I3uYE<oYd]++_<LkNeV@'4Yc598/VlIUESAb:Q0T<;FX%ABZTnq';M.RPgPRS)R@'K`2KRWAM/Jda62n/4TE@$cUZ*h`B;R=83ID21].2&qnIViqG1LCkp*!qL6S+=+b0KNks'dEKl<%W)H'$l3*u@aBqQV\k&/7IIq8E%?uOF#UkOPf=e[&`6D``DdR-CE9\kf6^G>bCYdNEfd6p@EbhS;prL)n7Kq62cO#@nS7RK.Am.tCj+_<!<a?T[LoH1uj6FTH0%4S%q*%uD\1t%I@o/>[a+.E1MfN7/)BVck`k&&1H`.Mgh,G^ocPgL&&QTdb$Bh0*NiHXT3Un3=*d1D>)5!nOK8/VlqGj-HKSq`KW&<<)@6L&8U)%GPLkp*!qL6U'sNgDprl=id,%H2Qr,G^ocPgL&&QTdb$Bh0*NiHXT3Un3=*d1D>)5!nOK8/VlqGj-HKSq`KW&<<)@6L&8U)%GPLkp*!qL6U'sNgDprl=id,%H2Qr,G^ocPgL&&QTdb$rS'^6q#&D64s,3NqA'O6>5EZBhS1r/j7/'%4[/^;odq(K[Ij>c^$5QJ$Y;/JC?bJPH5^fV%A?u%IA<BgS4c5JQ@@_iV]k6O&?;Sa2sP+u\MStSl1^0`)KIG>Tj%;@URm4191,YDIc%*%+m78bWhnT3l=n>M1k]W.pPjJ;E\7fp>5EZBSq`b.6`?<"hl*FrkL'pAV;F5sBumhAKPKcGNHuL`/e+LXqL,-1L7Cn(W0VniW2Cg%dL`FTh`'h7aLO-\C?bJPH5^fV%A?u%IA<BgS4c5JQ@@_iV]k6O&?;Sa2sP+u\MStSl1^0`)KIG>Tj%;@URm4191,YDIc%*%+m78bWhnT3l=n>M1k]W.pPjJ;E\7fp>5EZBSq`b.6`?<"hl*FrkL'pAV;F5sBumhAKPKcGNHuL`/e+LXqL,-1L7Cn(W0VniW2Cg%dL`FTh`'h7aLO-\C?bJPH5^fV%A?u%IA<BgS4c5JQ@@_iV]k6O&?;Sa2sP+u\MStSl1^0`)KIG>Tj%;@URm4191,YDIc%*%+m78bWhnT3l=n>M1k]W.pPjJ;E\7fp>5EZBSq`b.6`?<"hl*FrkL'pAV;F5sBumhAKPKcGNHuL`/e+LXqL,-1L7Cn(W0VniW2Cg%dL`FTh`'h7aLO-\C?bJPH5^fV%A?u%IA<BgS4c5JQ@@_iV]k6O&?;Sa2sP+u\MStSl1^0`)KIG>Tj%;@URm4191,YDIc%*%+m78bWhnT3l=n>M1k]W.pPjJ;E\7fp>5EZBSq`b.6`?<"hl*FrkL'pAV;F5sBumhAKPKcGNHuL`/e+LXqL,-1L7Cn(W0VniW2Cg%dL`FTh`'h7aLO-\C?bJPH5^fV%A?u%IA<BgS4c5JQ@@_iV]k6O&?;Sa2sP+u\MStSl1^0`)KIG>Tj%;@URm4191,YDIc%*%+m78bWhnT3l=n>M1k]W.pPjJ;E\7fp>5EZBSq`b.6`?<"hl*FrkL'pAV;F5sBumhAKPKcGNHuL`/e+LXqL,-1L7Cn(W0VniW2Cg%dL`FTh`'h7aLO-\C?bJPH5^fV%A?u%IA<BgS4c5JQ@@_iV]k6O&?;Sa2sP+u\MStSl1^0`)KIG>Tj%;@URm4191,YDIc%*%+m78bWhnT3l=n>M1k]W.pPjJ;E\7fp>5EZBSq`b.6`?<"hl*FrkL'pAV;F5sBumhAKPKcGNHuL`/e+LXqL,-1L7Cn(W0VniW2Cg%dL`FTh`'h7aLO-\C?bJPH5^fV%A?u%IA<BgS4c5JQ@@_iV]k6O&?;Sa2sP+u\MStSl1^0`)KIG>Tj%;@URm4191,ZOq##QGk6no8cUW:mUhC%a4s%I6p>:V#s+G]ZO7^Rcd1E8Kk<J6'rt/)I\tP:AYW(m&6@\rPcKROqWYdZ/qEm['Rr(N`5;\&<ff#)jgV6%:r_oJEBgWaI@=+j\<W;NlEi8pS-t1e*775_"AODSus%TKbT*#f:)euo<G%TW.bDib_qhA9lN1JW\e8f'cbeBd:)e3OS%COt.40rk(ji5r@I7#SF`m3oiC:Q'BB&?G.NNk;:L0AJRS_5sOEb"I[^7gi3@qYKE[G2T\ZYuf8#?g9lCsMJW[G4lMhnPK7(M^Lc/AHZd^G")W@p+9\>(0hWji4V(rjD[<:s4i0q>G+)IA)rGbOYP^o(ta*2jWS"YN>M4>&Gn7mpF9,$anblQJ]HCh\U%<Yq3Y>/\`sgEar7$s&skYW9)%)r;O,%^/3"4Abl:?q0es&)p@gLfCJf*/N9!WpTN]QV-<`qqZp@g54%6Xp_DT38-M4:'1qYN<hBnLp`FqgG;N46ccnl+qkDX0?hWtRr!Mk*Uk55.M59l7.h-dPOB*:*\+ICJV'/VQdRln#QJNF[1uq4q>%u(7defc(L-00@.h109H=+&-O=(KOV'11Ymu(3bnt[G21h:OhIF1YSSi!7.L?pM*03W)2PD6HmOM.Lb74SgmdZ@KJZFBJ?BVckJ)U_5Fp6OPOXYf*16X"3FhU;:qQ%hD881P/&>C'Y`dZ>gcBr)u"9CId>)Y0[IXYaR,l$^rO6_6-1Q%nWW]e<Q'aHM@cdZD/=pI-SAH.%dT)R?jE^1a>d:E%YR6hZi&(TfOT8OHZqaPPABU6UHqBh0``firc0[*k$`%;DX^HV<gc<Z:P)+g!S3Ds;\t8jf1,Um6]$/\Nf@BulKm[*k&LV>!D/%=-B`<Z89QoY,"8+\s$)8ji<<hA<:Nj@M^BBuo/ZqkB@14D@>:%G=s3?aS7C-Ojdd+aZlNMcLbeU`lisA8g^\d7Qct1o-Ckln,n(>%u'AL:#Bj]qtHl.h-dPOB*:*\+ICJV'/VQdRln#QJNF[1uq4q>%u(7defc(L-00@.h109H=+&-O=(KOV'11Ymu(3bnt[G21h:OhIF1YSSi!7.L?pM*03W)2PD6HmOM.Lb74SgmdZ@KJZFBJ?BVckJ)U_5Fp6OPOXYf*16X"3FhU;:qQ%hD881P/&>C'Y`dZ>gcBr)u"9CId>)Y0[IXYaR,l$^rO6_6-1Q%nWW]e<Q'aHM@cdZD/=pI-SAH.%dT)R?jE^1a>d:E%YR6hZi&(TfOT8OHZqaPPABU6UHqBh0``firc0[*k$`%;DX^HV<gc<Z:P)+g!S3Ds;\t8jf1,Um6]$/\Nf@BulKm[*k&LV>!D/%=-B`<Z89QoY,"8+\s$)8ji<<hA<:Nj@M^BBuo/ZqkB@14D@>:%G=s3?aS7C-Ojdd+aZlNMcLbeU`lisA8g^\d7Qct1o-Ckln,n(>2>eAj7E$E4s03kObW3S]e<RFT(C"_fDZg5m\l8&ln,n(=ukaikmoj3UYB"!?aOk!7FE9$Ak'8=oY,##S;X1-m*(E+Ds;\tauL80J(U/,h;6TWU6TdPP5_[A1V18rpI-Uq>U98VB4c749CId>cFHLB_p6Kip6OPOXdjHpoS9!*dHrO!03UC!,3]V"1S`]/H=+%"c:-/'G%O4Q\+ICJjd_7)5O?UQDK"cfdE4Hc8UoB\);X/tqkB?s/s?4<1GcVUV>!D/k?K;2@:s1oHV<gc<mJ6HqSUV&kk:>!(Tj3KOn=F"RF1CR]e<PLk9B.$4#<Yd>C'Y`Em@,%+*M6c\$u"DB]YbBUd+4iN,ERuIF61t(J0,/R2Oi;defc(F"WXTYVS)H]qtHl/*C._rF'>NFF-[LMcS-68G^6LbinbdhA<;aF-6*MSXImm/\Nf@3ThUN%m)SBgKSu2ZuXG\dN<XE7^ol!^1cVuMkiT(b`$FXl$^t%3>Y8:fU3W5hU;:qQ#eR@rie17]"Os774[P+,lM.aAorAmmu(5l\OcS7cHPMGQJNF[S9'hbLRjj\m4H")=ukaikmoj3UYB"!?aOk!7FE9$Ak'8=oY,##S;X1-m*(E+Ds;\tauL80J(U/,h;6TWU6TdPP5_[A1V18rpI-Uq>U98VB4c749CId>cFHLB_p6Kip6OPOXdjHpoS9!*dHrO!03UC!,3]V"1S`]/H=+%"c:-/'G%O4Q\+ICJjd_7)5O?UQDK"cfdE4Hc8UoB\);X/tqkB?s/s?4<1GcVUV>!D/k?K;2@:s1oHV<gc<mJ6HqSUV&kk:>!(Tj3KOn=F"RF1CR]e<PLk9B.$4#<Yd>C'Y`Em@,%+*M6c\$u"DB]YbBUd+4iN,ERuIF61t(J0,/R2Oi;defc(F"WXTYVS)H]qtHl/*C._rF'>NFF-[LMcS-68G^6LbinbdhA<;aF-6*MSXImm/\Nf@3ThUN%m)SBgKSu2ZuXG\dN<XE7^ol!^1cVuMkiT(b`$FXl$^t%3>Y8:fU3W5hU;:qQ#eR@rie17]"Os774[P+,lM.aAorAmmu(5l\OcS7cHPMGQJNF[S9'hbLRjj\m4H")=ukaikmoj3UYB"!?aOk!7FE9$Ak'8=oY,##S;X1-m*(E+Ds;\tauL80J(U/,h;6TWU6TdPP5_[A1V18rpI-Uq>U98VB4c749CId>cFHLB_p6Kip6OPOXdjHpoS9!*dHrO!03UC!,3]V"1S`]/H=+%"c:-/'G%O4Q\+ICJjd_7)5O?UQDK"cfdE4Hc8UoB\);X/tqkB?s/s?4<1GcVUV>!D/k?K;2@:s1oHV<gc<mJ6HqSUV&kk:>!(Tj3KOn=F"RF1CR]e<PLk9B.$4#<Yd>C'Y`Em@,%+*M6c\$u"DB]YbBUd+4iN,ERuIF61t(J0,/R2Oi;defc(F"WXTYVS)H]qtHl/*C._rF'>NFF-[LMcS-68G^6LbinbdhA<;aF-6*MSXImm/\Nf@3ThUN%m)SBgKSu2ZuXG\dN<XE7^ol!^1cVuMkiT(b`$FXl$^t%3>Y8:fU3W5hU;:qQ#eR@rie17]"Os774[P+,lM.aAorAmmu(5l\OcS7cHPMGQJNF[S9'hbLRjj\m4H")=ukaikmoj3UYB"!?aOk!7FE9$Ak'8=oY,##S;X1-m*(E+Ds;\tauL80J(U/,h;6TWU6TdPP5_[A1V18rpI-Uq>U98VB4c749CId>cFHLB_p6Kip6OPOXdjHpoS9!*dHrO!03UC!,3]V"1S`^Zj7E#%T$'=Fk9E."9r6b3R;'b!4s%I6o\X5Xs+H3K7s]-D9#&h2dh)6EkHr]f"<.Y3do4^,p@IISdshK>#sZm;dh&tZf='.X#5a3?dZ`,k[e'O>Sc1_'7e2P1SVFA<YApK?&@N0uU8On4D!#[%:B)d0,5+8T5XX2Jhq"@t;qOP*JR3k]Ya9j`48m4(M9tk,":\cms-S$,O'r]qkBR@P_H+D<48n?HLWJMg#Rt34ik\1MGC!j>_N$I+Oj`^jbVXtnBa>r[hs$PC#WpHG7S:GE1XcnYU`k\]I]$hU+m_`e(b,DYcV-^YObPPfqOO4GL9Mm3@ANNW4YmOU7iK68l$%Gc)T%LkKTX^OoZT.F*GGd(V;LO*Ba?fK&4T:,dkfGaG,-:?P^]NCVBP:s6Pq9N:<uU$fTCnB;YlrUR>.pj%:Q()4$>A/@7M6Q8Ek>EAfAOH1k_">n+=g\KH4b4,Gj;^R:upgdL\l?^XG!f&9aimN0JdhB;Qj=84+4CrD([46eINU0N.b<Ssb?&MY(46o_:t,<,SO&1,BBu($WDLkjsr9W8("+A7cas/(/e#O:tkaH6b:&?s\uPl\:qf!n&<]R/uo:oNjK;";d.@aik0\=/>T%+XadMoLNS+^q:l)f*saV"f+XD1BZbSl+LuU#qd>`P*m1AY=S,)6V_S$l&j36J9aS0Y8_M6$V6=hAd6I0dX0f3'3meK,Vq5a?BO+1L7I0'dNb0J!V;3@?8ppJ(Q]][bRBk?V"_GD-b+^!87lJL]HY&@%6;6.Udm0r"6L?_]l(mt/g*<?R2I]^8FL[g:2g6uOj)%"Gt!%_)fgN<8<7:n#0\UGHejbs>X3T\1G`EFOl#DYSDXIs,FOr#o8<0H2rk)XO<2Nf%%(+lpUVLq\:F3BAnJik,/)S;3Pblp7kuk&jq[-oDTE,:+?bmU))/6bmr^umDuo3cbfkT_7=)-VEe4ZiO(;i,bU_+gh2i:T5^F\31LOOOhWoodhu_=OR@+*IMY(46j9-9\*m)V7Qrg*X\fiH2JFlBEB#)&'^"3]R_$-W)1,B$p($WDLa9aIA4d)3N0X"%9F[JoC!U5`jb^at-HES9.JdY,1A7c%i/(/e#O:tkaH6b:&?s\uPl\:qf!n&<]R/uo:oNjK;";d.@aik0\=/>T%+XadMoLNS+^q:l)f*saV"f+XD1BZbSl+LuU#qd>`P*m1AY=S,)6V_S$l&j36J9aS0Y8_M6$V6=hAd6I0dX0f3'3meK,Vq5a?BO+1L7I0'dNb0J!V;3@?8ppJ(Q]][bRBk?V"_GD-b+^!87lJL]HY&@%6;6.Udm0r"6L?_]l(mt/g*<?R2I]^8FL[g:2g6uOj)%"Gt!%_)fgN<8<7:n#0\UGHejbs>X3T\1G`EFOl#DYSDXIs,FOr#o8<0H2rk)XO<2Nf%%(+lpUVLq\:F3BAnJik,/)S;3Pblp7kuk&jq[-oDTE,:+?bmU))/6bmr^umDuo3cbfkT_7=)-VEe4ZiO(;i,bU_+gh2i:T5^F\31LOOOhWoodhu_=OR@+*IMY(46j9-9\*m)V7Qrg*X\fiH2JFlBEB#)&'^"3]R_$-W)1,B$p($WDLa9aIA4d)3N0X"%9F[JoC!U5`jb^at-HES9.JdY,1A7c%i/(/e#O:tkaH6b:&?s\uPl\:qf!n&<]R/uo:oNjK;";d.@aik0\=/>T%+XadMoLNS+^q:l)f*saV"["tuF5c_Qr]7,+rSVQa6Pf1]pr.s-8,DPUP4XC=+UnI4Oa_7.U`mN.dLYc#1^#d-qSD!LL&f7b5I_Z\&E"Di#BrNR!ZWH`i,2(QJ7GAsg^Rs'E/aFA]-.UaNfed02l%V41"$U#L,9#mLB$u&E;l&D^bPbrkD&T#X9/G&zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!!"L7K"<V8j&.~>endstream + +endobj +% 'Page5': class PDFPage +46 0 obj +% Page dictionary +<< /Contents 70 0 R + /MediaBox [ 0 + 0 + 595.2756 + 841.8898 ] + /Parent 65 0 R + /Resources << /Font 1 0 R + /ProcSet [ /PDF + /Text + /ImageB + /ImageC + /ImageI ] + /XObject << /FormXob.cfe9493e2e6e4e30496a38f77524126d 42 0 R + /FormXob.e0f32bdd4f95c90d9dd1dfb9f782f702 44 0 R >> >> + /Rotate 0 + /Trans << >> + /Type /Page >> +endobj +% 'R47': class PDFCatalog +47 0 obj +% Document Root +<< /Outlines 49 0 R + /PageMode /UseNone + /Pages 65 0 R + /Type /Catalog >> +endobj +% 'R48': class PDFInfo +48 0 obj +<< /Author () + /CreationDate (D:20091013154344-01'00') + /Keywords () + /Producer (ReportLab http://www.reportlab.com) + /Subject (\(unspecified\)) + /Title (Etude pour generateur stupide de code Java) >> +endobj +% 'R49': class PDFOutlines +49 0 obj +<< /Count 16 + /First 50 0 R + /Last 64 0 R + /Type /Outlines >> +endobj +% 'Outline.0': class OutlineEntryObject +50 0 obj +<< /Count 12 + /Dest [ 35 0 R + /XYZ + 62.69291 + 398.0236 + 0 ] + /First 51 0 R + /Last 62 0 R + /Next 63 0 R + /Parent 49 0 R + /Title (JavaModel) >> +endobj +% 'Outline.16.0': class OutlineEntryObject +51 0 obj +<< /Dest [ 35 0 R + /XYZ + 62.69291 + 365.0236 + 0 ] + /Next 52 0 R + /Parent 50 0 R + /Title (Documents de r\351f\351rence) >> +endobj +% 'Outline.16.1': class OutlineEntryObject +52 0 obj +<< /Dest [ 35 0 R + /XYZ + 62.69291 + 293.0236 + 0 ] + /Next 53 0 R + /Parent 50 0 R + /Prev 51 0 R + /Title (Besoin/Contexte) >> +endobj +% 'Outline.16.2': class OutlineEntryObject +53 0 obj +<< /Dest [ 35 0 R + /XYZ + 62.69291 + 173.0236 + 0 ] + /Next 54 0 R + /Parent 50 0 R + /Prev 52 0 R + /Title (Pr\351sentation) >> +endobj +% 'Outline.16.3': class OutlineEntryObject +54 0 obj +<< /Dest [ 38 0 R + /XYZ + 62.69291 + 486.2781 + 0 ] + /Next 55 0 R + /Parent 50 0 R + /Prev 53 0 R + /Title (Les \351l\351ments de base) >> +endobj +% 'Outline.16.4': class OutlineEntryObject +55 0 obj +<< /Dest [ 38 0 R + /XYZ + 62.69291 + 354.2781 + 0 ] + /Next 56 0 R + /Parent 50 0 R + /Prev 54 0 R + /Title (Abstraction des comportements communs) >> +endobj +% 'Outline.16.5': class OutlineEntryObject +56 0 obj +<< /Dest [ 38 0 R + /XYZ + 62.69291 + 246.2781 + 0 ] + /Next 57 0 R + /Parent 50 0 R + /Prev 55 0 R + /Title (Concernant les imports) >> +endobj +% 'Outline.16.6': class OutlineEntryObject +57 0 obj +<< /Dest [ 38 0 R + /XYZ + 62.69291 + 186.2781 + 0 ] + /Next 58 0 R + /Parent 50 0 R + /Prev 56 0 R + /Title (Concernant les exceptions) >> +endobj +% 'Outline.16.7': class OutlineEntryObject +58 0 obj +<< /Dest [ 38 0 R + /XYZ + 62.69291 + 138.2781 + 0 ] + /Next 59 0 R + /Parent 50 0 R + /Prev 57 0 R + /Title (Ajouts a venir) >> +endobj +% 'Outline.16.8': class OutlineEntryObject +59 0 obj +<< /Dest [ 40 0 R + /XYZ + 62.69291 + 741.0236 + 0 ] + /Next 60 0 R + /Parent 50 0 R + /Prev 58 0 R + /Title (Resultat attendu) >> +endobj +% 'Outline.16.9': class OutlineEntryObject +60 0 obj +<< /Dest [ 40 0 R + /XYZ + 62.69291 + 657.0236 + 0 ] + /Next 61 0 R + /Parent 50 0 R + /Prev 59 0 R + /Title (Interaction avec EUGene -> ToPIA ?) >> +endobj +% 'Outline.16.10': class OutlineEntryObject +61 0 obj +<< /Dest [ 40 0 R + /XYZ + 62.69291 + 597.0236 + 0 ] + /Next 62 0 R + /Parent 50 0 R + /Prev 60 0 R + /Title (Remplissage du mod\350le) >> +endobj +% 'Outline.16.11': class OutlineEntryObject +62 0 obj +<< /Dest [ 40 0 R + /XYZ + 62.69291 + 416.4691 + 0 ] + /Parent 50 0 R + /Prev 61 0 R + /Title (Ou placer le modele ?) >> +endobj +% 'Outline.1': class OutlineEntryObject +63 0 obj +<< /Dest [ 40 0 R + /XYZ + 62.69291 + 356.4691 + 0 ] + /Next 64 0 R + /Parent 49 0 R + /Prev 50 0 R + /Title (Model to Model \(Reference TODO du 2009-09-04\)) >> +endobj +% 'Outline.2': class OutlineEntryObject +64 0 obj +<< /Dest [ 41 0 R + /XYZ + 62.69291 + 195.7082 + 0 ] + /Parent 49 0 R + /Prev 63 0 R + /Title (Mod\350le d'EUGene \(ObjectModel\)) >> +endobj +% 'R65': class PDFPages +65 0 obj +% page tree +<< /Count 5 + /Kids [ 35 0 R + 38 0 R + 40 0 R + 41 0 R + 46 0 R ] + /Type /Pages >> +endobj +% 'R66': class PDFStream +66 0 obj +% page stream +<< /Length 7679 >> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET +q +1 0 0 1 62.69291 741.0236 cm +q +BT 1 0 0 1 0 9.64 Tm 23.77488 0 Td 24 TL /F2 20 Tf 0 0 0 rg (Etude pour generateur stupide de code Java) Tj T* -23.77488 0 Td ET +Q +Q +q +1 0 0 1 62.69291 719.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Date : 2009-10-13 Cree par : fdesbois) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 686.0236 cm +q +BT 1 0 0 1 0 8.435 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Contenu) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 410.0236 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 255 cm +q +BT 1 0 0 1 0 4.82 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (JavaModel) Tj T* ET +Q +Q +q +1 0 0 1 403.8898 255 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 54.44 0 Td (1) Tj T* -54.44 0 Td ET +Q +Q +q +1 0 0 1 6 237 cm +q +BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Documents de r\351f\351rence) Tj T* ET +Q +Q +q +1 0 0 1 403.8898 237 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (1) Tj T* -54.44 0 Td ET +Q +Q +q +1 0 0 1 6 219 cm +q +BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Besoin/Contexte) Tj T* ET +Q +Q +q +1 0 0 1 403.8898 219 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (1) Tj T* -54.44 0 Td ET +Q +Q +q +1 0 0 1 6 201 cm +q +BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Pr\351sentation) Tj T* ET +Q +Q +q +1 0 0 1 403.8898 201 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (1) Tj T* -54.44 0 Td ET +Q +Q +q +1 0 0 1 6 183 cm +q +BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Les \351l\351ments de base) Tj T* ET +Q +Q +q +1 0 0 1 403.8898 183 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (2) Tj T* -54.44 0 Td ET +Q +Q +q +1 0 0 1 6 165 cm +q +BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Abstraction des comportements communs) Tj T* ET +Q +Q +q +1 0 0 1 403.8898 165 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (2) Tj T* -54.44 0 Td ET +Q +Q +q +1 0 0 1 6 147 cm +q +BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Concernant les imports) Tj T* ET +Q +Q +q +1 0 0 1 403.8898 147 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (2) Tj T* -54.44 0 Td ET +Q +Q +q +1 0 0 1 6 129 cm +q +BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Concernant les exceptions) Tj T* ET +Q +Q +q +1 0 0 1 403.8898 129 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (2) Tj T* -54.44 0 Td ET +Q +Q +q +1 0 0 1 6 111 cm +q +BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Ajouts a venir) Tj T* ET +Q +Q +q +1 0 0 1 403.8898 111 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (2) Tj T* -54.44 0 Td ET +Q +Q +q +1 0 0 1 6 93 cm +q +BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Resultat attendu) Tj T* ET +Q +Q +q +1 0 0 1 403.8898 93 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (3) Tj T* -54.44 0 Td ET +Q +Q +q +1 0 0 1 6 75 cm +q +BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Interaction avec EUGene -) Tj (> ToPIA ?) Tj T* ET +Q +Q +q +1 0 0 1 403.8898 75 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (3) Tj T* -54.44 0 Td ET +Q +Q +q +1 0 0 1 6 57 cm +q +BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Remplissage du mod\350le) Tj T* ET +Q +Q +q +1 0 0 1 403.8898 57 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (3) Tj T* -54.44 0 Td ET +Q +Q +q +1 0 0 1 6 39 cm +q +BT 1 0 0 1 20 4.82 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Ou placer le modele ?) Tj T* ET +Q +Q +q +1 0 0 1 403.8898 39 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 54.44 0 Td (3) Tj T* -54.44 0 Td ET +Q +Q +q +1 0 0 1 6 21 cm +q +BT 1 0 0 1 0 4.82 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (Model to Model \(Reference TODO du 2009-09-04\)) Tj T* ET +Q +Q +q +1 0 0 1 403.8898 21 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 54.44 0 Td (3) Tj T* -54.44 0 Td ET +Q +Q +q +1 0 0 1 6 3 cm +q +BT 1 0 0 1 0 4.82 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (Mod\350le d'EUGene \(ObjectModel\)) Tj T* ET +Q +Q +q +1 0 0 1 403.8898 3 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 4.82 Tm /F2 10 Tf 12 TL 54.44 0 Td (4) Tj T* -54.44 0 Td ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 377.0236 cm +q +BT 1 0 0 1 0 8.435 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (JavaModel) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 347.0236 cm +q +BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Documents de r\351f\351rence) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 329.0236 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Todo d'EUGene du 2009-09-04 \(a la suite de ce document\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 317.0236 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Mod\350le d'EUgene \(diagrammes de classes\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 305.0236 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Metamodel Java de l'OMG \(2004-02-02\) : Metamodel_Java_04-02-02.pdf) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 275.0236 cm +q +BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Besoin/Contexte) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 185.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 76.82 Tm /F1 10 Tf 12 TL .483735 Tw (A l'heure actuelle, les g\351n\351rations de code Java sont faites depuis EUGene en passant par des modeles) Tj T* 0 Tw 1.182485 Tw (UML \(ArgoUML XMI 1.2 ou TopCased XMI 2.1\). Il n'est pas possible de g\351n\351rer simplement un fichier) Tj T* 0 Tw .74436 Tw (java sans passer par le mod\350le UML. De plus, les templates de g\351n\351ration peuvent \352tre fastidieuse lors) Tj T* 0 Tw .816654 Tw (de la cr\351ation de fichier Java pour tout ce qui concerne les imports \(cf ToPIA-persistence\). Il a \351t\351 initi\351) Tj T* 0 Tw .109318 Tw (l'id\351e de cr\351er un autre g\351n\351rateur sans intelligence permettant de simplement g\351n\351r\351 du code Java sans) Tj T* 0 Tw .324597 Tw (contraintes particuli\350res et de main\350re simplet et intuitive. Pour cela l'ObjectModel d'EUGene semble non) Tj T* 0 Tw (adapt\351 \340 une g\351n\351ration purement Java car bas\351 sur l'UML/XMI.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 155.0236 cm +q +BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Pr\351sentation) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 89.02362 cm +q +0 0 0 rg +BT 1 0 0 1 0 52.82 Tm /F1 10 Tf 12 TL 1.844983 Tw (L'id\351e est de cr\351er un autre Mod\350le ind\351pendant d'EUGene bas\351 uniquement sur la g\351n\351ration Java) Tj T* 0 Tw .617209 Tw (\(donc rien de sp\351cifique \340 UML mais plus \340 Java\). Le but \351tant de pouvoir g\351n\351rer n'importe quel fichier) Tj T* 0 Tw 2.298651 Tw (java assez simplement sans contrainte de model UML ni d'EUGene. Par la suite il sera int\351ressant) Tj T* 0 Tw 3.126905 Tw (d'\351crire une sorte de transformation Model To Model entre l'ObjectModel d'EUGene et ce modele) Tj T* 0 Tw (specifique \340 Java, qu'on pourrait appeler pour simplifier JavaModel.) Tj T* ET +Q +Q + +endstream + +endobj +% 'R67': class PDFStream +67 0 obj +% page stream +<< /Length 5968 >> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET +q +1 0 0 1 62.69291 498.2781 cm +q +469.8898 0 0 266.7455 0 0 cm +/FormXob.0abfd65e2cab2f27fd6af0c2fbb44aa3 Do +Q +Q +q +1 0 0 1 62.69291 468.2781 cm +q +BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Les \351l\351ments de base) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 450.2781 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (JavaPackage : Package contenant un ensemble de fichiers java \(JavaFile\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 426.2781 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 12 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 1.265366 Tw (JavaFile : Fichier contenu dans un package et pouvant potentiellement contenir une ou plusieurs) Tj T* 0 Tw (classes/interfaces \(cet \351l\351ment comprendra la liste des imports\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 414.2781 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (JavaClass : Classe Java contenant m\351thodes \(JavaMethod\) et attributs \(JavaField\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 402.2781 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (JavaInterface : Interface Java contenant m\351thodes \(JavaMethod\) et attributs \(JavaField\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 390.2781 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (JavaMethod : Methode Java contenant un ensemble de param\350tres \(JavaParameter\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 378.2781 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (JavaField : un attribut Java \(pour une classe ou une interface\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 366.2781 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (JavaParameter : un parametre d'une methode) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 336.2781 cm +q +BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Abstraction des comportements communs) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 306.2781 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 12 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 4.84748 Tw (AbstractNamedElement : Tout \351l\351ment du mod\350le poss\350de au minimum un nom et des) Tj T* 0 Tw (commentaires \(javadoc\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 282.2781 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 12 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 2.16248 Tw (AbstractClassifier : Les classes et interfaces ont un fort comportement en commun \(methodes,) Tj T* 0 Tw (attributs, heritage, ...\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 258.2781 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 12 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 1.802706 Tw (AbstractTypedElement : Gestion du typage communs aux champs \(JavaField\) et param\350tres de) Tj T* 0 Tw (m\351thodes \(JavaMethod\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 228.2781 cm +q +BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Concernant les imports) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 198.2781 cm +q +0 0 0 rg +BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL .505868 Tw (Les imports seront g\351r\351s de mani\350re simple par une liste de String. Un manager des imports pourra etre) Tj T* 0 Tw (utiliser pour optimiser la gestion des imports \(utilisation ImportsManager ?\)) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 168.2781 cm +q +BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Concernant les exceptions) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 150.2781 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Pour un m\352me soucis de simplicit\351 que les imports les exceptions seront g\351r\351s par une liste de String.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 120.2781 cm +q +BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Ajouts a venir) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 90.27812 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 12 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 2.089269 Tw (Gestion plus pouss\351 du Typage, notamment pour g\351rer les Generic et peut etre specifies plus) Tj T* 0 Tw (precisemment les types primitifs) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 78.27812 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Gestion des \351num\351rations \(pour le moment non bloquant pour une premi\350re version\)) Tj T* ET +Q +Q +q +Q +Q + +endstream + +endobj +% 'R68': class PDFStream +68 0 obj +% page stream +<< /Length 7403 >> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET +q +1 0 0 1 62.69291 753.0236 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Gestion plus pouss\351 des Exceptions \(a voir...\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 723.0236 cm +q +BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Resultat attendu) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 669.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 40.82 Tm /F1 10 Tf 12 TL .765868 Tw (Obtenir un modele simple bas\351 sur le langage Java sans complexit\351 li\351 \340 une technologie \(EJB, ...\). Ce) Tj T* 0 Tw 4.091318 Tw (g\351n\351rateur aura pour but de creer des fichiers java directement a partir du code sans passer) Tj T* 0 Tw 1.387674 Tw (obligatoirement par un modele UML comme le pr\351conise EUGene. Un g\351n\351rateur sans intelligence se) Tj T* 0 Tw (chargera de g\351n\351rer les fichiers java tel que d\351crit dans le modele m\351moire \(JavaModel\).) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 639.0236 cm +q +BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Interaction avec EUGene -) Tj (> ToPIA ?) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 609.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 1.562485 Tw (Par la suite des g\351n\351rateurs pourront etre cr\351\351s pour passer de l'ObjectModel au Java \(avec plus ou) Tj T* 0 Tw (moins de sp\351cificit\351s : DAO, DTO, Bean, ...\) et peut-\352tre int\351grables dans une v3 de ToPIA.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 579.0236 cm +q +BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Remplissage du mod\350le) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 537.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL 1.484692 Tw (Le remplissage de base se fait en utilisant directement le mod\350le \(via des getter, setter, add\), cad, le) Tj T* 0 Tw 1.754198 Tw (remplissage se fait au fur et a mesure en partant de l'element racine, le package ou le model en lui) Tj T* 0 Tw (meme.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 428.4691 cm +q +q +.397135 0 0 .397135 0 0 cm +q +1 0 0 1 6.6 16.61905 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 1182 252 re B* +Q +q +BT 1 0 0 1 0 233.71 Tm 12 TL /F4 10 Tf 0 0 0 rg (JavaBuilder builder = new JavaBuilder\(\);) Tj T* T* (JavaPackage package = builder.getPackage\("org.nuiton.eugene.javamodel.test"\); // nouvelle instanciantion si n'existe pas dans le Builder.) Tj T* (JavaFile javaFile = package.addFile\("Personne"\);) Tj T* T* (javaFile.addImport\("java.util.List"\);) Tj T* (JavaClass personne = javaFile.addClass\("Personne"\);) Tj T* (JavaMethod method = personne.addMethod\("init"\);) Tj T* (method.addInputParameter\("nom", "String"\);) Tj T* (method.addBodyCode\(/*{) Tj T* ( ...) Tj T* (}*/\);) Tj T* T* T* (JavaField fieldNom = personne.addProperty\("noms", "List) Tj (<) Tj (String) Tj (>) Tj (", JavaBuilder.ADD_SETTER, JavaBuilder.ADD_GETTER\); // ou 4 methodes \(sans getter/setter, avec getter, avec setter et avec les deux\)) Tj T* T* (addPropertyWithGetterSetter) Tj T* (addPropertyWithGetter) Tj T* (addPropertyWithSetter) Tj T* (addField) Tj T* ET +Q +Q +Q +Q +Q +q +1 0 0 1 62.69291 398.4691 cm +q +BT 1 0 0 1 0 7.23 Tm 18 TL /F2 15 Tf 0 0 0 rg (Ou placer le modele ?) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 368.4691 cm +q +0 0 0 rg +BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL .948735 Tw (La question se pose pour garder une ind\351pendance avec EUGene, o\371 placer ce modele ? Etant donn\351) Tj T* 0 Tw (que certaines classes d'EUGene seront surement utiles comme le Generator ou l'ImportsManager.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 335.4691 cm +q +BT 1 0 0 1 0 8.435 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Model to Model \(Reference TODO du 2009-09-04\)) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 305.4691 cm +q +0 0 0 rg +BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL 2.837765 Tw (Pour tout ce qui est g\351n\351ration de classe Java, le principe de base d'Eugene est de dire que le) Tj T* 0 Tw (d\351veloppeur \351crit directement ce qu'il souhaite voir dans le fichier final.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 287.4691 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Cela pose quelques difficult\351s:) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 275.4691 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (difficult\351 de pr\351voir les imports) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 263.4691 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (difficult\351 d'\351viter la g\351n\351ration de deux m\351thodes ayant le m\352me nom) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 209.4691 cm +q +0 0 0 rg +BT 1 0 0 1 0 40.82 Tm /F1 10 Tf 12 TL .887318 Tw (L'id\351e serait alors de constuire la classe Java souhait\351e au final en appelant des m\351thodes \(addImport,) Tj T* 0 Tw 4.649147 Tw (addMethod, addAttribute, ...\). Ceci nous donnerait alors un nouveau mod\350le m\351moire dont on) Tj T* 0 Tw 1.94284 Tw (demanderait la g\351n\351ration \340 un g\351n\351rateur sans inteligence qui se contenterait d'\351crire le code Java) Tj T* 0 Tw (mod\351lis\351.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 167.4691 cm +q +0 0 0 rg +BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL 1.844692 Tw (L'avantage est que pour chaque m\351thode \340 ajouter on peut demander avant si elle n'a pas d\351j\340 \351t\351) Tj T* 0 Tw 1.846412 Tw (ajout\351e et ainsi potentiellement la renom\351 avant de l'inclure. D'ajouter de fa\347on automatique tous les) Tj T* 0 Tw (imports des arguments des m\351thodes, ...) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 149.4691 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Pour pouvoir faire cela, nous pourrions nous baser sur ObjectModel, mais des ajouter doivent \352tre fait:) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 137.4691 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (pouvoir indiquer sur une Class une s\351rie d'import.) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 125.4691 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (pouvoir ajouter un message de licence) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 113.4691 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (pouvoir ajouter sur une m\351thode sont code source) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 83.46912 cm +q +0 0 0 rg +BT 1 0 0 1 0 16.82 Tm /F1 10 Tf 12 TL .848735 Tw (Ce dernier \351l\351ment est le plus probl\350matique, car il deviendrait p\351nible de devoir instancier tout le code) Tj T* 0 Tw (de la m\351thode en objet et on perdrait l'id\351e de d\351part d'Eugene.) Tj T* ET +Q +Q + +endstream + +endobj +% 'R69': class PDFStream +69 0 obj +% page stream +<< /Length 4832 >> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET +q +1 0 0 1 62.69291 729.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL .791098 Tw (Dans eug\350ne il est d\351j\340 possible de modifier la transformation des tags de g\351n\351ration '/*{' et '}*/' qui par) Tj T* 0 Tw 8.577251 Tw (d\351faut g\351n\350re un 'ouput.write\("..."\);' Dans notre cas, il faudrait quelque chose comme) Tj T* 0 Tw ('method.addCode\("..."\);' ou encore plus simplement '"..." +' ce qui pourrait donner:) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 611.8236 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 468.6898 108 re B* +Q +q +0 0 0 rg +BT 1 0 0 1 0 89.71 Tm /F4 10 Tf 12 TL (addImport\(MonObject.class\);) Tj T* (method.addCode\() Tj T* (/*{ int i = 0;) Tj T* ( i = 1+2;) Tj T* ( MonObject result = new MonObject\(result\);) Tj T* ( return result;) Tj T* (}*/) Tj T* (\);) Tj T* ET +Q +Q +Q +Q +Q +q +1 0 0 1 62.69291 591.8236 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (qui deviendrait:) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 486.6236 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 468.6898 96 re B* +Q +q +0 0 0 rg +BT 1 0 0 1 0 77.71 Tm /F4 10 Tf 12 TL (addImport\(MonObject.class\);) Tj T* (method.addCode\() Tj T* ( "int i = 0;\\n" +) Tj T* ( "i = 1+2;\\n" +) Tj T* ( "MonObject result = new MonObject\(result\);\\n" +) Tj T* ( "return result;\\n") Tj T* (\);) Tj T* ET +Q +Q +Q +Q +Q +q +1 0 0 1 62.69291 442.6236 cm +q +0 0 0 rg +BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL 1.324692 Tw (On garde la facilte d'\351criture du code \340 g\351n\351rer et on permet d'ajouter facilement des imports dont on) Tj T* 0 Tw .291751 Tw (aurait besoin dans le coprs de la m\351thode. Aucun traitement complexe du code de la m\351thode n'est donc) Tj T* 0 Tw (n\351cessaire.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 424.6236 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Ce nouveau mode de g\351n\351ration ne serait qu'une moyen compl\351mentaire de la g\351n\351ration actuelle.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 406.6236 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Travail a faire:) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 394.6236 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (ajout d'objet dans ObjectModel) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 382.6236 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (ajout de m\351thode de modification dans ObjectModel) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 370.6236 cm +0 0 0 rg +BT /F3 10 Tf 12 TL ET +q +1 0 0 1 6 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 26 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (cr\351ation d'un template de g\351n\351ration d'un POJO \(g\351n\351ration direct d'un mod\350le\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 328.6236 cm +q +0 0 0 rg +BT 1 0 0 1 0 28.82 Tm /F1 10 Tf 12 TL .504985 Tw (Il serait toute fois dommage d'ajouter tout un ensemnble de setter sur les interfaces d'ObjectModel qui le) Tj T* 0 Tw .259318 Tw (rendrait moins clair pour les g\351n\351rateurs. Il faut donc trouver une solution pour permettre l'instanciation et) Tj T* 0 Tw (la modification de classe implantant l'ObjectModel sans pour autant les ajouter au interface.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 310.6236 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Une id\351e pourrait-\352tre l'utilisation de Helper qui permette de cr\351er et modifier le mod\350le:) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 207.7082 cm +q +q +.976496 0 0 .976496 0 0 cm +q +1 0 0 1 6.6 6.758862 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 480 96 re B* +Q +q +0 0 0 rg +BT 1 0 0 1 0 77.71 Tm /F4 10 Tf 12 TL (ObjectModelClass clazz = ObjectModelHelper.createClass\(\);) Tj T* (ObjectModelOperation method = ObjectModelHelper.addMethod\() Tj T* ( clazz, "name", "typeRetour", "paramName", "typeParam"\);) Tj T* (ObjectModelHelper.addImport\("java.util.List"\);) Tj T* (ObjectModelHelper.addCode\(method,) Tj T* ( /*{ blablabla) Tj T* ( }*/) Tj T* ET +Q +Q +Q +Q +Q +q +1 0 0 1 62.69291 174.7082 cm +q +BT 1 0 0 1 0 8.435 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Mod\350le d'EUGene \(ObjectModel\)) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 156.7082 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Modele th\351orique ObjectModel) Tj T* ET +Q +Q + +endstream + +endobj +% 'R70': class PDFStream +70 0 obj +% page stream +<< /Length 456 >> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET +q +1 0 0 1 62.69291 485.6501 cm +q +469.8898 0 0 279.3736 0 0 cm +/FormXob.cfe9493e2e6e4e30496a38f77524126d Do +Q +Q +q +1 0 0 1 62.69291 467.6501 cm +q +0 0 0 rg +BT 1 0 0 1 0 4.82 Tm /F1 10 Tf 12 TL (Interfaces Java pour le mod\350le m\351moire \(impl\351ment\351es dans EUGene\)) Tj T* ET +Q +Q +q +1 0 0 1 105.1578 181.0901 cm +q +384.96 0 0 286.56 0 0 cm +/FormXob.e0f32bdd4f95c90d9dd1dfb9f782f702 Do +Q +Q + +endstream + +endobj +xref +0 71 +0000000000 65535 f +0000000113 00000 n +0000000246 00000 n +0000000411 00000 n +0000000586 00000 n +0000000768 00000 n +0000001009 00000 n +0000001250 00000 n +0000001491 00000 n +0000001732 00000 n +0000001973 00000 n +0000002215 00000 n +0000002457 00000 n +0000002699 00000 n +0000002942 00000 n +0000003185 00000 n +0000003428 00000 n +0000003671 00000 n +0000003914 00000 n +0000004157 00000 n +0000004400 00000 n +0000004643 00000 n +0000004886 00000 n +0000005129 00000 n +0000005372 00000 n +0000005615 00000 n +0000005858 00000 n +0000006101 00000 n +0000006344 00000 n +0000006587 00000 n +0000006830 00000 n +0000007073 00000 n +0000007316 00000 n +0000007559 00000 n +0000007802 00000 n +0000008029 00000 n +0000008629 00000 n +0000034580 00000 n +0000045069 00000 n +0000045417 00000 n +0000045577 00000 n +0000045857 00000 n +0000046180 00000 n +0000081000 00000 n +0000095708 00000 n +0000160176 00000 n +0000174413 00000 n +0000174811 00000 n +0000174949 00000 n +0000175203 00000 n +0000175329 00000 n +0000175545 00000 n +0000175737 00000 n +0000175931 00000 n +0000176125 00000 n +0000176330 00000 n +0000176546 00000 n +0000176747 00000 n +0000176951 00000 n +0000177144 00000 n +0000177339 00000 n +0000177553 00000 n +0000177757 00000 n +0000177939 00000 n +0000178162 00000 n +0000178341 00000 n +0000178485 00000 n +0000186265 00000 n +0000192334 00000 n +0000199838 00000 n +0000204771 00000 n +trailer +<< /ID + % ReportLab generated PDF document -- digest (http://www.reportlab.com) + [(\340\024N\335h\256G\350\320+\26730\202T\344) (\340\024N\335h\256G\350\320+\26730\202T\344)] + + /Info 48 0 R + /Root 47 0 R + /Size 71 >> +startxref +205300 +%%EOF Deleted: trunk/eugene/doc/1-javamodel/Metamodel_Java_04-02-02.pdf =================================================================== --- branches/eugene-2.0/eugene/doc/1-javamodel/Metamodel_Java_04-02-02.pdf 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/doc/1-javamodel/Metamodel_Java_04-02-02.pdf 2009-12-14 23:50:27 UTC (rev 755) @@ -1,12946 +0,0 @@ -%PDF-1.3 -%���� -1500 0 obj -<< -/Linearized 1 -/O 1505 -/H [ 1794 1240 ] -/L 420385 -/E 91375 -/N 46 -/T 390265 ->> -endobj - xref -1500 54 -0000000016 00000 n -0000001435 00000 n -0000001662 00000 n -0000001695 00000 n -0000001751 00000 n -0000003034 00000 n -0000003196 00000 n -0000003266 00000 n -0000003359 00000 n -0000003529 00000 n -0000003688 00000 n -0000003792 00000 n -0000003939 00000 n -0000004125 00000 n -0000004231 00000 n -0000004336 00000 n -0000004506 00000 n -0000004604 00000 n -0000004708 00000 n -0000004841 00000 n -0000004969 00000 n -0000005087 00000 n -0000005208 00000 n -0000005321 00000 n -0000005429 00000 n -0000005528 00000 n -0000005648 00000 n -0000005772 00000 n -0000005890 00000 n -0000006012 00000 n -0000006166 00000 n -0000006328 00000 n -0000006482 00000 n -0000006577 00000 n -0000006693 00000 n -0000006814 00000 n -0000006917 00000 n -0000007044 00000 n -0000007173 00000 n -0000007390 00000 n -0000007433 00000 n -0000008087 00000 n -0000008319 00000 n -0000008374 00000 n -0000008982 00000 n -0000009208 00000 n -0000009749 00000 n -0000009829 00000 n -0000046821 00000 n -0000047680 00000 n -0000050359 00000 n -0000075140 00000 n -0000001794 00000 n -0000003010 00000 n -trailer -<< -/Size 1554 -/Info 1492 0 R -/Root 1501 0 R -/Prev 390253 -/ID[<846d44fe7593241f873354de26712b8d><d80b811e7a0ee19b4b37a85a0ca79341>] ->> -startxref -0 -%%EOF - -1501 0 obj -<< -/Type /Catalog -/Pages 1495 0 R -/Metadata 1493 0 R -/Outlines 1506 0 R -/Threads 1502 0 R -/Names 1504 0 R -/OpenAction [ 1505 0 R /XYZ null null null ] -/PageMode /UseOutlines -/PageLabels 1491 0 R ->> -endobj -1502 0 obj -[ -1503 0 R -] -endobj -1503 0 obj -<< -/I << /Title (A)>> -/F 2 0 R ->> -endobj -1504 0 obj -<< -/Dests 1489 0 R ->> -endobj -1552 0 obj -<< /S 1259 /O 1521 /E 1537 /L 1553 /Filter /FlateDecode /Length 1553 0 R >> -stream -H��T{L�W?_.�v�@f�P��M�_��(�+��m�u��IR�c@"�fÈ��+P�$��!�үP�t!aJ�#k��i�@j1sl��ݾq1�?�7��s~��w� -E��(�����@X� �z�0HR �Vǡ�p�p.��v._�Ֆ�}}%�9�8ҭ�cw�ٱT��@9��p]b,���֏�ݵ5�{Y��ӟQR��3�T���3${�:�%P��ޝ���/h��Ͼ���ؤ9���\�g}2'����K�e����'s��З���=��r�٘���+��Kֽ5�?�^�����W%]�Y/ -��S�ߝ!1��b�pw�����Bf��+��w��2Wh�Z���'S��9��Dg�[jv�r�=��Ob�pc�O���UlRlb��F���N�EMN�v� -U�f�T�?�z�mV��i��_����Pʄ�>�ɒ6�ͻ8��F��E�N����]I��g���S�K�|u���|����K*���zS�Ƴ�?��o5���7؏?N���p�tK�lc�rM�]����y���խ�3Zu��#2Z�m��]�^�Q�]�U6�-����� ��⩬��v���䑔T��)ݲV�T6z8�'��άwj�,���S{�H�b�>�u�����Կ�������z{۵��;�ym�[��B�Ζ~�_��t�?t�+�N�dž�$���8�3 ��(�������!�zrH��Vn��s�y��_�H�)��L9��9R�>9�Q��p�Lz��>U�a���i+G;�� ��x���K��}��h�U#��hD��7�<oyFz�0�<G� j����$[l�-%%'��W!��K�'D����B�`Y"�:���>�!j �W���H<`0"��a�Ï �p���D[��D���wm�\?�{Ъ��L��`'�/�r�p$-��� Fm.dP���P�,j�B�9JP�5Tj9L@,E��߀۩�fm+� -���^��p��@48�x��İ�ú�`f��� -o���2������`L��x3�4迢���$���˦���6X��g���P�/�[�z�� -endstream -endobj -1553 0 obj -1102 -endobj -1505 0 obj -<< -/Type /Page -/Parent 1494 0 R -/Resources 1538 0 R -/Contents 1543 0 R -/CropBox [ 8 0 603 792 ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -1506 0 obj -<< -/Count 14 -/First 1507 0 R -/Last 1508 0 R ->> -endobj -1507 0 obj -<< -/Title (Contents) -/Dest (G2.945) -/Parent 1506 0 R -/Next 1529 0 R ->> -endobj -1508 0 obj -<< -/Title (EJB and Java Metamodels and UML Profile) -/Dest (G5.509745) -/Parent 1506 0 R -/Prev 1509 0 R -/First 1510 0 R -/Last 1511 0 R -/Count 4 ->> -endobj -1509 0 obj -<< -/Title (Introduction) -/Dest (G4.509745) -/Parent 1506 0 R -/Prev 1529 0 R -/Next 1508 0 R -/First 1530 0 R -/Last 1531 0 R -/Count 2 ->> -endobj -1510 0 obj -<< -/Title (2.1 Introduction) -/Dest (G5.518301) -/Parent 1508 0 R -/Next 1515 0 R ->> -endobj -1511 0 obj -<< -/Title (2.4 UML Profile) -/Dest (G5.519960) -/Parent 1508 0 R -/Prev 1512 0 R -/First 1513 0 R -/Last 1514 0 R -/Count -2 ->> -endobj -1512 0 obj -<< -/Title (2.3 The Enterprise JavaBeans Metamodel) -/Dest (G5.519616) -/Parent 1508 0 R -/Prev 1515 0 R -/Next 1511 0 R -/First 1516 0 R -/Last 1517 0 R -/Count -7 ->> -endobj -1513 0 obj -<< -/Title (2.4.1 Java Profile) -/Dest (G5.519962) -/Parent 1511 0 R -/Next 1514 0 R ->> -endobj -1514 0 obj -<< -/Title (2.4.2 EJB Profile) -/Dest (G5.520065) -/Parent 1511 0 R -/Prev 1513 0 R ->> -endobj -1515 0 obj -<< -/Title (2.2 The Java Metamodel) -/Dest (G5.519383) -/Parent 1508 0 R -/Prev 1510 0 R -/Next 1512 0 R -/First 1523 0 R -/Last 1524 0 R -/Count -6 ->> -endobj -1516 0 obj -<< -/Title (2.3.1 Main) -/Dest (G5.519621) -/Parent 1512 0 R -/Next 1522 0 R ->> -endobj -1517 0 obj -<< -/Title (2.3.7 Data Types) -/Dest (G5.519957) -/Parent 1512 0 R -/Prev 1518 0 R ->> -endobj -1518 0 obj -<< -/Title (2.3.6 References to Resources) -/Dest (G5.519934) -/Parent 1512 0 R -/Prev 1519 0 R -/Next 1517 0 R ->> -endobj -1519 0 obj -<< -/Title (2.3.5 EJB Implementation) -/Dest (G5.519899) -/Parent 1512 0 R -/Prev 1520 0 R -/Next 1518 0 R ->> -endobj -1520 0 obj -<< -/Title (2.3.4 Assembly) -/Dest (G5.519863) -/Parent 1512 0 R -/Prev 1521 0 R -/Next 1519 0 R ->> -endobj -1521 0 obj -<< -/Title (2.3.3 Entity Bean) -/Dest (G5.519832) -/Parent 1512 0 R -/Prev 1522 0 R -/Next 1520 0 R ->> -endobj -1522 0 obj -<< -/Title (2.3.2 EJB) -/Dest (G5.519723) -/Parent 1512 0 R -/Prev 1516 0 R -/Next 1521 0 R ->> -endobj -1523 0 obj -<< -/Title (2.2.1 Class Contents) -/Dest (G5.519409) -/Parent 1515 0 R -/Next 1528 0 R ->> -endobj -1524 0 obj -<< -/Title (2.2.6 Names) -/Dest (G5.519611) -/Parent 1515 0 R -/Prev 1525 0 R ->> -endobj -1525 0 obj -<< -/Title (2.2.5 Data Types) -/Dest (G5.519604) -/Parent 1515 0 R -/Prev 1526 0 R -/Next 1524 0 R ->> -endobj -1526 0 obj -<< -/Title (2.2.4 TypeDescriptor) -/Dest (G5.519592) -/Parent 1515 0 R -/Prev 1527 0 R -/Next 1525 0 R ->> -endobj -1527 0 obj -<< -/Title (2.2.3 JavaType) -/Dest (G5.519553) -/Parent 1515 0 R -/Prev 1528 0 R -/Next 1526 0 R ->> -endobj -1528 0 obj -<< -/Title (2.2.2 Polymorphism) -/Dest (G5.519534) -/Parent 1515 0 R -/Prev 1523 0 R -/Next 1527 0 R ->> -endobj -1529 0 obj -<< -/Title (Preface) -/Dest (G3.509745) -/Parent 1506 0 R -/Prev 1507 0 R -/Next 1509 0 R -/First 1534 0 R -/Last 1535 0 R -/Count 4 ->> -endobj -1530 0 obj -<< -/Title (1.1 Guide to the Specification) -/Dest (G4.517781) -/Parent 1509 0 R -/Next 1531 0 R -/First 1533 0 R -/Last 1533 0 R -/Count -1 ->> -endobj -1531 0 obj -<< -/Title (1.2 Conformance Issues) -/Dest (G4.517638) -/Parent 1509 0 R -/Prev 1530 0 R -/First 1532 0 R -/Last 1532 0 R -/Count -1 ->> -endobj -1532 0 obj -<< -/Title (1.2.1 Compliance Points) -/Dest (G4.517648) -/Parent 1531 0 R ->> -endobj -1533 0 obj -<< -/Title (1.1.1 Overall Structure of the Specification) -/Dest (G4.517782) -/Parent 1530 0 R ->> -endobj -1534 0 obj -<< -/Title (About the Object Management Group) -/Dest (G3.511059) -/Parent 1529 0 R -/Next 1537 0 R ->> -endobj -1535 0 obj -<< -/Title (Acknowledgments) -/Dest (G3.510898) -/Parent 1529 0 R -/Prev 1536 0 R ->> -endobj -1536 0 obj -<< -/Title (Context of OMG Modeling) -/Dest (G3.510685) -/Parent 1529 0 R -/Prev 1537 0 R -/Next 1535 0 R ->> -endobj -1537 0 obj -<< -/Title (Intended Audience and Use) -/Dest (G3.510683) -/Parent 1529 0 R -/Prev 1534 0 R -/Next 1536 0 R ->> -endobj -1538 0 obj -<< -/ProcSet [ /PDF /Text /ImageC /ImageI ] -/Font << /TT2 1540 0 R /TT4 1545 0 R >> -/XObject << /Im1 1551 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R /Cs9 1542 0 R >> ->> -endobj -1539 0 obj -[ -/ICCBased 1549 0 R -] -endobj -1540 0 obj -<< -/Type /Font -/Subtype /TrueType -/FirstChar 32 -/LastChar 174 -/Widths [ 250 0 408 0 0 0 778 180 333 333 0 564 250 333 250 278 500 500 500 -500 500 500 500 500 500 500 278 278 564 0 564 0 921 722 667 667 -722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 -611 722 722 944 722 722 0 0 0 0 0 500 0 444 500 444 500 444 333 -500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 -722 500 500 444 480 0 480 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 333 444 444 0 0 0 0 980 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 760 0 0 -0 0 760 ] -/Encoding /WinAnsiEncoding -/BaseFont /MCDLFK+TimesNewRoman -/FontDescriptor 1541 0 R ->> -endobj -1541 0 obj -<< -/Type /FontDescriptor -/Ascent 891 -/CapHeight 656 -/Descent -216 -/Flags 34 -/FontBBox [ -568 -307 2028 1007 ] -/FontName /MCDLFK+TimesNewRoman -/ItalicAngle 0 -/StemV 94 -/XHeight 0 -/FontFile2 1547 0 R ->> -endobj -1542 0 obj -[ -/Indexed 1539 0 R 255 1548 0 R -] -endobj -1543 0 obj -<< /Length 532 /Filter /FlateDecode >> -stream -H�|SMo�0��W�ё���8�8��T]���!�:%�n�dS*�=cg?���w5����{�����@��־�����a�,�B�-�(A[���!��Fa*;��[T�"LղbnK�+��SB*���<O -)㻆�R�*5Tό��To�u�@ݯ���=|���h������)�9 -$*�UlA��ԭ�[�q����]h��k�����:�@�$%Rh��VE�d���ճX,�wI֜)S -K����+�m�3U&�����T��AI�#=)�C��js�8l�Ѹg�� Y��������Y ˻5�{���C��EI�}���&I��<��811-��D���֛�ԹT�{�"���m�2U��@/�I��m)�O\==�㙲��5�}Fs�X�8�0gt�)��<I��G�|Ԇ�|���������#@f�����L1[e�!����~��Op3fh����� -���HSȒ�v�҅@�S����OBup8{�3�+�C�Er�*Sx��ٲ���j`�h�-;|į��?O3� -endstream -endobj -1544 0 obj -<< -/Type /FontDescriptor -/Ascent 891 -/CapHeight 656 -/Descent -216 -/Flags 34 -/FontBBox [ -558 -307 2034 1026 ] -/FontName /MCDLJB+TimesNewRoman,Bold -/ItalicAngle 0 -/StemV 160 -/FontFile2 1550 0 R ->> -endobj -1545 0 obj -<< -/Type /Font -/Subtype /TrueType -/FirstChar 32 -/LastChar 149 -/Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 250 333 250 278 500 500 500 0 500 0 0 0 -0 0 0 0 0 0 0 0 0 722 667 722 722 667 611 778 778 389 500 0 667 -944 722 778 611 0 722 556 667 722 722 0 0 0 0 0 0 0 0 0 0 500 556 -444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 -389 333 556 500 0 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 350 ] -/Encoding /WinAnsiEncoding -/BaseFont /MCDLJB+TimesNewRoman,Bold -/FontDescriptor 1544 0 R ->> -endobj -1546 0 obj -<< -/Type /ExtGState -/SA false -/SM 0.02 -/TR2 /Default ->> -endobj -1547 0 obj -<< /Filter /FlateDecode /Length 36899 /Length1 55524 >> -stream -H�\UTUU���Ϲ� _)^RG.\A1|!) I|���S�EDȫ�iciY���ZJ:-�&/���L��&3SK �D��Ǥ�5�R��jη�Y����������m�X�܉S����-�w -������@�XX��~���9��<X�/��X]� -���/.^�zu�� -X;�t�o���{���)eG�~]j�����SZQ���w�=�Z>w�O5f�4d;�·�V)���4���U��/�h��|r�sT�7������g�?)��DӧS�����!�o/�=s���|/ǚ[�x�e�������`#^F\�d@�����X�18���r<�D=b$ -Yp���8��0pq��Y�����n.f/�B��7�O�e -�hg��g䵦 .ę������ }L#�i}�.若xw��[mD�d�\F -Qm�XUfF`NI��Xl�ܱ�����ɴ����%��?=��d�Mj�ΰ���X܋ �q�78-]%Y���f����:|�����I�ӱۙ�f|�$L�Vi N�5���r��`]me���:�J�$+�r1[.�C�֢����qɑi����e��ps��G>����qC҇t���z[����Os�3��q�<�2�?�'�O�WO���ASo.�K"1�0 -s���w��8���Mu=�Y��'��fs���>��S��j��N�!���.��*���,%�V6�9-��CE�y��#�k�m�T��;z3���;������!�p��D����T#T&�:�����Z��|�\���� -NV���1��,�M��C?)�������ug�у�}�]�W�����5�j�����>���><ar̳̅�A^}��e���搟���%xUX�zY�mh���a���;�"�ٌ^��{N���u�/�䰜�۠��85D�R*K�����jV�t/=C/�ˈ�[��`Y���v�]�8�sf;�B>�u�v������upcp�j�1�LW��f�`-�+q7��G����w��f�G��Ր�]%c�~b�L"�e�")%��2yF�˳�Z6�c�V+��n�m�G��V�F��w�E�4�9F�UIj8W��ƨ�j2Q��~5_-�թ7�^լ����}z�ެ���I�OKY V��fM�J���1��bݴ#m�]j��=)�<G�c�c������u9�8O:MH���\�.��Ir�v7k�j幈�~{��1c��.�k�'v�\�n9#Uz��c^�Y�'=W���$ZGک��`�A�W7�E+\P�%�zQ�Vsu�r��?���%@}�T��4�Cz�^n��T�FZ�un��V���%N�X�V�ȷR웘ͼ�j/b�G���_��jpA{��r]6R5��X��zD -�*�m鍫2~ـtyG��=��u2N��� -�2���Q%'u( -�8J� -�\u]��w��`��'xB�d��� �Q����/5�K5�T!/Q�o�mSl�Ůf�m� ���xXA*��"�c��Wb�ڄ%f�̤~*�2$I��EnKy_tW�������C�~�\�����jB��6���R� -����L<���s�?�Dq�;X�*�������{ ���a��@�n*�<���F:�<���<��<�ʦ�n4e\�l�Q�x'�l�2�w��rS��f�y%�bꩿ�N� -�@M��j�a9���s��ng��(F"p�x��F������9ʬ2��|D3CE�E�F�1oٺ �'�F�����Z1�ԙH E�)��Z�M�Y��vmzz������H>l��)�J�4 1!�����1}<�Q���ճ����ݺ�եs����#��-� ^OV�;[�b=�ىmm����u�����O�]�����g:=���3�ߞ�����4�%&��w�h�ǽG�Mʧ�:�S�\m�Ƿ�/��hGEq��Q��H���ZXZ�-����B3<�B�F3�V���7�k����MmT�@R��Lo�nOf�����fr'�{3{FE$&$c��(��@��vd������qE�{����xm��!�^��?̧6�)����i�?�]�i�`"����OJ�Đ<� -iDBm�p������Q�PZ�*��i��Ж6�A%���s��[�-���wf�|��9w�<S�5�r_����^Z�(��tv��L��5r˰n�9�O�]��y��m��aD&v��j�|���X��Ͽ�8�0�`4aD�����ه���x�Tz�����{�w�*����@���jcM�o�Դ�$??|����#>�%�����d4m::)�4RSQ��͵��?:'Y��N/�J�dIv�RCSʯ -[X:���>X`Os�g�\2V�E7���2;q]�� �[�v/�7]Ao�g� ���OF�t$[���q�Y�"�N�,+3KK� �Z�(l\ �U�T3��냀��q��#^S ���|��´��1f�}����+�⦚`͠���5=�&5<��Y�3=ũ���1��5�2�?�W����@Cc[�1I�6������)]��� -8�Ԃ�Ԣ��������@�+Q�P���ژ(P�vI-r*�=53WbY<��%�;�X�(���M�ۿ�Q~�}�>�QR��ܓYS6�>oD}�yY���Z����f�F袸�#�E���1`����㸈���6�p�����3�#�M�Vj*��Hn�p��{����M�yXi�l=�rIu�ש��^ -�O���CT����N�е�ѾK{����4�͐�� �/>ʁf��b��9�}M��<�����_��i�Z�X�r@��J�u�G���Xo��L�(AW➌���K�G�"ٯ��Q�P�s��`��1�A��A��ZWQ�;��9d��A.A�R����E5d�D9���M.�Y@�n��φ��ЏE]�X7���b�qA)P��=r����h �����g�� -�l_:l�$�V��mw@��*1[�Ֆ�^��gh��o]C9����}��`�!��&�'[���\Ǩ -u0Q���K[�u -CW���t�u&U�-�[4Yң�/�M�`{��.LE�f9���h�(�0�C�生��}d-�~�C֧����y�'1~֯d�+��}�{�g�u��$`��%�1��c��y -��+90��Y����A���$��9����1�{��G�)��y�s���ܐ��$g���7�1;f~�>I/c�r<�&Q��2^��f����Ŝq$��6�O�T�����2�[i����R��J�A�f�ھv��!���1�H��O#���ư�����"%�S�%�w�Qm&-���v�����1xU�>}�����r�%���r7�=���|��e�v�^�rH-҆��Ϻ��S����e&�A[ǒ���o����]}�$�s -Y�6D�b����2�9�G���S���t+�e�o��ha|��i�6H�q2�h_��+�n��q_9/�et@�/�!�#�R���rm�G����KR:|����v�����W!�2&Cְ-)Ĺ��g�H�_S�|��ō4~f�4���0Λ��49�e2�d;q�1�9������*�I�s�q�g���C4��ޗ��js�� ��e��=��朹�jן���b����� -�uT�f��rj�f%�|'���\g�0�G��4y�9�j���<:F�Ͽ�D�5y�͒�rrV�ޛ�<�떖GO�������F�i'��;w1���߉]���a��2�0��g]*��cH��} ����5��z�qVν�g�ߢl`�� -�V�9$����n��~�c7 �`.w�i*�%�嘧�^�����dn^�s�M��9r�l�'�BכT���r�z����j]��<zL����B9_�~rT �e=�# >��M�]��ZJ����e>�rU�r��`�NS�����%�B��y��n���e����)��F{4�>�w�*���Up�� -2߰={��s��D��pǠ��߅�<��� -��4��l+���WߥV�k���a�����@�}U��w��� -��r�<�����o(&\��}�F���S��C��"�͂n-Ɲ��glŘ ߢ��W�%�>��o�k ��V�1u�7�[�FN�g�!�g���,qy�brl�Vw�y�vw�Wښn'�x�x�W�CM�"� h��Fu'������K�I9�g�^�*���I����cU�s�t��~lA��pخ��}�s��<��S��>>C�m����K�u��t� -hd�m�a(22�k[��Uk��2���7S�{#� ��̙Q�:���iͽ��s4C��F�~�x���������~���<!m������h�<A�B�� -� -���*��5�A��lO��������ўY�<�{�գx���A��ҋm!��u�;�"C?ݩ;�ڏ�6�Q�H�Hr,��/���Tؚ/��`����p_9>�v2d��1�b��U�����j�+֔z�|�s�<���mxϞ��͐;2���}1��6�Su�K.e���c��/�6����s�smcnl�@���CBL̺������%���0H���)%F�.Y@�� -V�v -��d���6�Nkժ�4iӄ l�ۏ����-�=���CZ+uf�y�s��=�{�����/����yxx�]��� �@�Qג��0Ξ� ^Wo~@�d6�<�ϛG�wh7�h� �q�A(�Lނ} -�l�[�lq~'� ���Rco��M�y���!�=��/���.�<`�N��`�t����+�7�rM�}��] K����w����yd����U����i5�����x��,��S�=�ӿ���w�T�Cz��]��;�=���L} �e��h�HB��j��Z�(�vM K ��5/Gz�X����W��e�Wó��W@aW�UR��(|(0�`��[�M)�'YP����(X��>��}��*��gisH�.{�d��{��M{�&2�Hx7��Q�0L6��~J:�.`�́�ZXX?��<�0� -.Z�.�F6�7`F0��N�1�Ev�̅��K}��싡��/�'�? �i���σO�1�s�G���t/ -bܞ�����b� /����#h��Ok0e�f;d�ah�3�X�+O��QG���^,i��+ׁ�� 6�ڧc�S1�Y;b�ӎ�v�J)ۍz���{/����n�G�1i���=�,ֱ�:Ķ[��l[b��gOa� -�TbAn��N�9KlDhfZ�"�Ez[���ڒX��RD=�d�䛀B����`c�VA �=Fv:���;�N�i�̰�Fh�E 5��r�Ŗ� �x<H��m�}N�qz��N�Y��he���1�JX�U�8�HN�Z�5+!�u��nW��t���\�:����ꄚ�UKUC�Q�6u�ڭ���n�ۮ4��\�\���J]��ƕ���7|�5����݀ -k��˞��5�X�'�L��ch�C3�s#87�nXݰ��� -@[ګ��L�����J&��X�q��h��i�i�i�S&1C��L����4�oT韐1�>C�U&�ƥ�E�,��E����P8`䃲���z�/���Z�V_kak��Z��UV��Bz�*��J�_IaI�����y���j��bե*[��������KXť��>�g�e��#x7�$�����(B@+��I� ����j d`Ԡ�ŀy�'�=�'Z¯��g��k���pn�q�`�=���N�����K{u:�W�E�lj�`�����oXOB@h2�%��\�́6`��z|��-� ���ڊ��̛�#M��'�Qfc/h8>.����#�R�Q���R{�R[��RH�p��g��ڙ�V֊��=H�̕� -����d����}��}��}�����������?�)ْ]��Qɕ��.��õ-\+�ZX��(��rɋ%���qG��y�~D"�D�`O*D -���a�-+�r� -���� -��'T>�� -��:ϥ�6��8�� -���n��&Aꃾn����`� �_#��*���zh�����c�߄�'-�7P��˪�,�uX[�C�Z��.�'&�� -.��9t)PDl3�)b&U�_B�� -��Q�/FED�$]g�+ K�,/P���r���E�]�XDt9�ⓚI�r�ɗ���Ȣ��]���N�N��)��������VX���#b�,~ɟ��s�7�y��$�l�Q��ER�g�0�D�B��!�6>�Ko�/~��r~R��/�з�~�1 -�W��:���*�����n#�b�,�F�_ -�$�H��I1�R��?Ǘ��]N��eo);����7�7������/�{���E�lG����t�v�r8���Pđ��7p��$[�Qm�m��Q���_���Sb˩�#�M�fYq,i�z�\U35_����u���$%�j�A��@����v�PZr���^���1s��Ě�捍��Y�כz�|2ooh~(��9��Gf��4���/��3?�<�Xk��[gDc*�.fn���j툲Ki�FF�6!u�#�9eW� a��E�n��|� -a8����$_��|��aU2�4?��O�M+D���2h[*WJ W��)�I��U�,a��d�&�-��g�l��������2�}e��ǭ�Rө#>Y�G�dJ���b��1�1ş秥�3�D����=ڠG[��O�7�5y��[/��dK�����b^�["�V=�nl���,܍zd�4G7�7-��h�ꍑ����u�{j�]k]��:E�u�����p��b�ֿɮ�ئ�3~�~Ŏ_�v ~�v�a;�!��oB-&QBh3L�C����+i� -kEф�1� -mB���TЮ����i��(ۢ ����Q� -q�;�:������sν���|7��:/���]׆��}��P[l���&J�C�j����{[���l/=l�.Cpl)��)��mJ -`S5�5�l -��Mi`�xq��p��z��8��a�� -yQi���oZ*�fH��@�ӥ��aZ{otjUφ���T�cJJ��03Gz�Z�'io��I2<�O�/��t:�%7w�ߑt�:&����Ml�*�'_8h� ��ў�3 -�N�`����7�]���@�AՋ�B�Az�P�p�6���� - CG��� `���Z�Q�����SJӾ``y�����;� -<�(~9R�h-���@?| -��kG4�y�൱Jy1���f���w{�����S^/b`��^��~�p*�@``�(?�b���f��4�jf$G���AޅbUNn^F�,CB�B�:oa$��M�'��J$��x*�j����.�l�s>�"��>���uv��~��F�{,q���ރ�R'y�� -Ո����UT�Y�ϴ�Ր�5��Yx0]l@��;�舥@,ˁ<Ta�ʬ"������e��i9�h�_6P���+j�B���d�X�:��m��ú�ֲW���Cr����eu%�u�"��܋���c�w�!T0 -rj�ߺ!R�D��z���-�L���&K�:qň(F���O?��3~b���������8���|��@O��F��Q��b^#X�6��j[��UI+��ɶ�V^�QV�L -�K՚��J��㋮�l�'�����{�+>��Tj��o �V��Ԥ��3x��h)3���QYum��N��˪�jo��U��9 -�N��\Y��I�����wM&��ޑ��i���߁2��DTI~u�,R5�-�>"��r7v������K��� -������8!N�ś�]�3�Q!�k��82m_�L�5����Yۧ�������N�l��9p$�Oڬ6���y��^��zi��`6hyh��a�����!l7�<��L���23�;nO������.+X���̡`���q�����h0��l5t�i��{�wj0��� ��unϺ�m=���Oo��_u��[=�dft|j��2�����gc��|o���#i��%��n���>e=�Rl���S�G�|a��6�:6��l�_���� -+�l>���M#M��y����7��q��I=�S�ꑬ -��ҁ����BFyG�G��L�b�O5`���P��=tL����,xx��)E:���}���o;��!sCMMsމ�8����N2���+���#=j���to��K���ⴠC����BxS���1?fX��m�·���}̂�n���h3��`^J���8�s^�[��%]k�����!�0X���ܩ�pq���� �3y��JYUѓ��u �j?A�x/�3���!p\4�M%F-�C�0|-�=�m�L�����v1z��Z������>��AW��x��L��g��1�wd��MJ�:RGmE6AV�l���S&QR�'@��{��z��"�C�z���T���w`NXF��N��2C=��K�v7l�G$(*��F0٨�+hvh6v&��3ڙ�6�2��3�]:{Ю��ٍv1�4���x6�:��Z����˩�Us�G�2�^�#1��&*��=� -�e��t�DR)eM��r㘑3� -~,���I�Xz��?�9����)i��472M�!}0�-�C�y���r����o���&r��z�`����R���t�x��3d͈d#�ؒ��Q���)J��n��'�Y|��Bc2�T sę��@�YAj�%��#b~�����N�[`�T�$^I%Aj - -R$�/�I�@��*vFh� Lط�}���/��Nj��mm����u{/]�!-����}\>�dUj Ć���H-�6� �����)Oo�_��e���Y>Zg�BÑ��\>ձC ;1i�������~�Bk�k��E����E6����qF��jKK%��%7�� �Y�}�̭cÚ~�D�h���_t]�KA��քD���.���i-�pV8*O0ń��ʬK�K���]Jw�h o�����j�m����������}��{��Il�;�0~���xf i�c���Ѝ��`�Y���1qK��1���P�[U�1�1i�(�&2�v�-��(-��kB[K�}tmY���}��)��P����Ī�V(���u�ݎG~�ZG<���7k)�e�~���"�山n�=�7�)Dg�^������������'?���V�.\][�P9~j��=x -�5��\�����}��[�k��-k? -��?]k>4?w{t'"b>�+`��@&0�I��3�G��&i� -&a�ɐR�9Vm�:� -������� ��1�*�)��I92��糘��R���V�T{Ԍʫ��������<7�6���L�9|n&y�5iѤ�����uh��u�0���Ks�e��.E������~��>.L�Q�A��B��X<�w<�w�t�E -8���R��nj�竔��,�$2c �ضĿ8�ڶγ�{��3�+�����y�o�����m����B�.�>� -H��p�R�}��!tJ�Aݩ� -�SA�����V2YfΉ]2�Y.ɜn!�W+P}�K"p{��:�Y��"^mԚ�5Z��kY����RAb0���Z��A -�,�F�)�XA3]C;�^��H���R�K�<����y(+�%��Mm��C�_�ۀ!��]�n��� -�ڛ�VJNg�r?H����)JT2���7��e`|���XT�����jg�=Z�X0=B�(L���n>����o�Գb�k�s7ƹG[K�|��w�[c`�b�7�g�l���a�<�>�1���(Ce�J�jI]L -�n�%��Irg���Xٙ�����W"W���W���s��2��**�$K���P�Y.u��>�e��t�%jR�,L�s+�ga%) 2�s<�Ӟ<�ا��Npf��WuUў�L��秛�N�{�~��,�ԯRS:Lx�i�iTӓ��\��<�����c74��p���a+x����&���XjF�23j�u�bv�����*V����r�X� -%J��wzd��o�W^A�� -�M}�Q�O�|�̑�GiYޒO}(���2�����Z0y`S���s���X��=?�G��_�K/>l4���ܲ%?{Ǿ�5.~����gOn~sjyh�M�(:>�8g\�bR��ݭ�+:�Xm��`w���\b>T2Ma*�T�;�PB;ND����N�� -j��y%[�$�l/�N)Q@9p;s@/Se�(������,T� -�3�,��roq���-��y�Ђn4�r��$�t��Җ�w(�������Ml��\a���iO�'����?�UUE�jǬ���O$��3���O�?u8W�>��),����M_��l�S+�}�0�� �)���]^�:���n~OH��u�ܣ�su�3�n�3�������FT���j�>���*gA�1L��a��9)�����0Lm}"�i1���^5M�\0����]R��1�DG�EZ"4����L�O�l0w�M�z���yĆ����M:yj}��� ��n�J��:! \d$���LY��9V�k���� -kCB�"�J�)�SE�kIi����r�6<�[����l���:�TG��5s�?upד�/�=�_~p{vuW���c�n3u���?����j�p!b~ -Y d�����ؿ��"_�^��"���÷�ϧm��E� -]�f���.x1#֞���ѧ*� 2����8�So�g�q>����"�[3�Z�i=ZF�4��qc��H��[�2���������aTqT�����T�D�XT����E��taUf��B��h%�N<ȃha�A����Iۊ����> �z�btu�ŭoZ]���]Vl��kٻσ����3�'g-ر}Sl��2�4����O�}li��afn�ݩ��[�>�����nX��{o�;��v���!���>�h���7�X�6��<�0�E�(����#��*"8�(L��c� r���(�)�Q'\E�̨�8��g�Н��F8�O�$��g�#|��w�'�9��� -��Sk�%�É���۵���kG�0%c�41jI忧�r鵰/�����ɐ07��������وlډl�I�$�� -,��+Y����Iv�v9��]���-Ѯ��������>�/�o�Ζ���s\R|���Р\�S���ú��Ce��(q}���9d̪h�%��g�̃���8������C���$[��d�$^ c���bl�`H�����9I$��v�6��i aZl�2)�Ns�ii''�1��8.�}�R(L�hW�}��=�����[�@� ������'}� -��ҽL\W������{����+�i�k����G}G� ���F��Y7�7|7���*_%���S�j%ʲ�hyÛd��2�%��vDT@g䵴�>D�QH1����P��p��χ�(6��>e����7�x�$�����/�S*ZJg���)�"��1�J����dV8V�}� -T���榡� �d'�@E�ɩ�N'�T�$�tJQ����RM���'�y��Ė�\�J&]���WZ.y��c��2tnMc7.�"nZ�** Ϗ=��5;�3��3�Ϝ����wկ��Խ|â�O�<����M -��E�k5�Zw�o]X[���Y�:� �p������}�G����Sʭ��Y[��u���*��e���~2U���.�����i�82c�M_�pGTy�y@�"A -��=��Ʉ��_��AZ^��R�^ ������������c�P.�L�8�A2,�R%c)Y2�bwU=�8�J����x���,/�{s�9ٮ��I������7ظU��#J&�)k�R\/KK(�R�R�9�f��G����^^���k�����+6�=��g͑e�?�{�F������?{d���/��;:ȩ���?�2p��͍�c���Qǀ=&�, ��m�>�4h"Rd�9� -oi�a�@ocT��1J�b\��rۇ[���W��>vIM/�E��d�c�!��hj/*՝��8A -�|r����9�i���w��l�����N���y�T��#��LF�Q�m|%��q�]��͒ױUܜ �� $Q�̲��R��*��Є�PXNx�y�_U�,��'���S�Pdz����Y�h[/5$��.S���UzUe��fò�! ��E/������YFa2��g*A��L�ѳa�:V!�G�0{�WP�a�I�/��r�}�!���B��U�:f;gh�`L#FdH�cL+CZa���z�@�e�~>�矢q�,Y���d��%�E�R�x���{-��9 -4*j��Z&&�f0���,���HR����G��[A�{���?^�\��X�?�*�Y~��b��X�*���$y��=@�=���D���:��1��p����:�9\C�����?���E������(�b��֣8ԩ%J�!ߥ<!����Kx�!�O7߽L���.%�'�^�q2�{y�FQ������3��0:�&BAY���=fY`�dT`M�����6~7�n�66~�H;cι�y�̴91t[ -t;ZI�=��F{��5��D��(j�W�Dg����H���m(AEE�(~�M���h$��xQTa\mA6j��;�B�)A�Ê���pƼ6���dAcfM~����Vlm���XQ����H��J���-�cn�mYИ�W��^ZjNಟ�2�۫wJ� -������j|�1���j���e���C�"�b��&stj���G�♵5�3j)vj�J�xU����x�@�U?Rׅf��9[D;�rrf6��x�qdvX��`��b�=Ҙ�@j\Q[9�?V>ہ�b�e]H�2�wY�)������Y~��4�%ZK}N�%??Ud����tb��� -���\7Mz-t"]� �;��x- -N���4�ٔՖ�j�L! ��C�e���ƈ=����C�ON^Kv]����+��EIo���/n�3w����W�vϞ��7\=s�;/mX<��w�7kNgl�̂��s��:��d��<g�^\;<����&Ko}��uC�L�L��9~�V�&GN�$_|�6R��x��������3f��5t������id��F�!�y��c�jdG9� -ѦTs\6�!�rb.���x��j���֕���aOH2Nj�Je(���?5�����Bj�$d#��וfs��� -�1���\��B~��I����va�{�{��G�[ؕ����/j��S�)��)�����W���߹��u�6w����-��Y6�r8G �!v�:æ2�M6��(lJ�Fo3l8��v�[��5�5X�sju�\5D�"�8Y�Q�� 1K�s��hT*UJ{�U�C�EM�o�� ߈j�������ԯ9W�qd�d�J�㘤>��q�''���SMcO�X��<�~���1̟��mϿ���&�;~��|g;�}6�ם}�����9%gb<rP@|�%]I�@�V�� -K�Z��*Q�0�Q1$Zy*���ZM��Uƀm�i�� [�2:5����R�~�~�%�������7��v����<�:��^1�6��x�,� '^�~�*:��ZooИ�,���OU�>٩}��}�ޕnUHӊ� -d�����~Ң(dJL�\�� ��(���a��1���43�X?����1������e��~�n��mS�����7���U��f'��G']:��h��_���a� ��l�)ip�����|e{ -\�������hg/ű-�O�i�L�}��$� -�"د�����{A��&_̏��l�m���fe^�I -'x?�m���:�7�=�A|�XcYC���d��!v�+��!u��"���ɏ�����������J�K�lb�8�(2t������g%"�r9�/���><�!���@�>��o��6z�kn�=����n���;� �^Rf%��̂�DŽ -���&I����pga����Ƌ�Q�u�3�p�� �T�R�>Pzb���H�����J(D��d�;�F�O��u�O����^�鬤x@�\��)*&ØnĴ@�i��3�,h3�� cI���N��J����zk��@�-��X����`0@�F��$1g�C�t�L'�D��ѹ�+j����F˩�j����U5zX]f�K~2���w�/(�;_���wϮ��T:u��ݱ9+8�-~ު�֟�U:�2��{bB �oo~�5Mw}��㾩縣[�_YNZPZ��_,.��26eγ�i���DZ��:�u��v��i���߃���-�����W��l�8Gؚ '��+ K�ʸe���r -�8�}���!�"�~�[?�f��{j��c� �f�ņW0@;Sy� -w�w�&$�� W@���ʺ�F�)/��=�\��]Bѹ�`����������z��k��Qʹ�ƚb>��lI��kВv�#�� -x�ܔK`�T�6�C4��~��"��zdTvd3ɋ�0��k��o�<���[�gj���yf�i���}c���m�<[3>8��v��D�_��-��v�����-���2Ѝ$�F[��� �?0���5�w2?d~�X���]́���ˌ5����y���]�n��A���!J~1(hN�j>f -�=�Q%3�c�,�еb�r�"(JG��!�~hᇣkC-,��� -Y���~qm:��I��]^Fi��P`�p ��>���MOr��.�%����$�Д��bP� �%�O���5�_y��N��?������}�?�����#����v�R����O��B�A0?��� -��-8=���k�6�6�~�y=Pɜ���Y��E�H�XGl��(=f��d��QE�tQ��N�`㬴����!�Á�@����),�$��~�\�H���ܝP(l�U�V��E��8F3t7M�éJB�i���l%S� -�C���sGrDc��|8{��U���jRw`����U��'L}���WV7M�T�k� 2��1�ߠ�!�~��Xh��� -�*�[�f ��3��*_L��кI�R��tz��[��h�n}+3g���ԽLF��Yyy���T�Ѯ����;RjSMIZmn�ꏤ�l�U?c������l���!D" ��i� ��3�u6�f?�&�g���k�%�.y�>EN�mEK��،ZF�1�����ZqZln�1�a�����(�A'qG9��\L��f�6�n !kv8�IL�a��BLQ���[U]�`q��3q3^���q�h�M�_рF�ǎ9�|�p��^��4������F%� -D��;�J�#�F8@dR�$�[�P� -����O�?G?��v( -P���a�$2mճ�局�.@��:$v��oC$�-}���^���6�AO@Q�"ۈ��+�Wj�>,�����,P��vra -���3&�G:̎5[��@1��u<0<8lJ���v5����Q���S�f�L�l�u�� -��$�AXHٺ���+:8 ��RSo;��QJKN-j��G��ϸwy�=8Ҡ������c2�BO�bB�-έ�;��Շ��ԫ8�ɮI4mfZ���=وN3VES�j�JP�Т]�{6�����I�!���8gc6�J�&řľT�Z��/2��^5�M\w��w�8;�s>;�w���;��NH�p��_HC�ҕlP�@=��1ڂ�3�B�-��1�nTZ�˶fk�������v�m]'�2i��D&A��P��Vbg��@�R5�����l�����e2=�f�"��L�m 匜�>���3TY��z��O־�'�]�}�Z�l���y���������#���{恁͋�~�c�r�s[�����)L� -�o�ϐ��dxS�gq���>:��o�±�P=렩/2��������Ɏ���c��h�dC�ZQBt]U*��T�:����b�#Uq��_Ub�VKB -��BB�'C��)�[ZJJܨ����R�E��^С�S�O�'�)ݡ�#ͨ:�uLtpZ�h� -��uI�]�s�|V��oBD��[(ɧg�>;��m����ְB��=o������ ��[_�/�m5���,�b�Oi�u��J�[��_�v�/�5�2� -���Ih��;��bᱻ���]��X��`�P���%F�A&=��F^Uѱ��D�U��KU|$$��X�]}�?�s3<�|'������$��=Z"S�����#��$�,�C����U\�t��� JEn���ĢY9�b��as<��5�ts��-��"\�_@�R��t�O�&�vC6¨�/.w��� ��2������8�6�r��S��\�7�=�����S�~�-�"|���y�q����o���Y�\��0�z�j6�I[^���*wiEie3,q+%r3`����ϼs�?[�O݂�mp�.�Y����-_�(��Z}D��ĭ��#V5�V6�@V��4.Yɍ��h��M2�zOz�F� -��A�6:а�������hk�c�=�����n�94b���{��D۟=o'<b �ȁ�g���(8ǼL�%��d/U]s=� 㮌k��Y�f�p=Y�*�K(l@������#��qsZ�8&��9� -�����J�{p�>�L&hr%�{�%�&]�Sq��M���D��nmQ�v�M��Y\��J����MJ3@�z�<�0�N+i2@i@O���NAk��䁨���r:�}�S^�rڜ�`P>�����h���)�:���p�#�Χ�c�R� -�a����"���tzА�@�8���2]�;z_��0m;�v�˧��g�����BF(�ia�(N����Y�c/��]���7��WL��=�P̦�\�#�+^_�_R�f�vgk�}�p7�'�������1!e���|؛���l�`�&~�.E�cz�m& �`0(1[�-�/����V�3?�"�Éz���u���� -����˟��K���U� -c��� -�ϿÃ���Z�l��y��UI��²{|���\g�z���&:W -1�, -g(�1?�*C��a(�4h�]�Kh;�F��q�����F����a��\Ę�#zp��k�ݪ"���j�p��>U��3lD�� -�$(1�p����-��z����q1k2�)#���H�7O�Wݒ��6���-7߭_.����]�P���c?����Yx.�H��=i��0�6��P�u[��w\gk�����2�����'Z+��Q��[��x3܀7���{�3���2��=�R��.�\#n������۩$q5 �f͠IJ���f��N� -�[�0؍��#�z�B��g��x"q^zO&�J����ć�c�#�~FZ_ -��U�'���w�>G/�K��0�"��*D�����OB�嘉�uӦXP���bP,�8��8��R�,K���P��t -�@9^�k#��)XS�AF�L@���DŽ�����I�f���x�5�R����ӗ�����M|�����&�9�Ǭ ?%.J3��&�0��� ��S����Q)%�@�L��xvC��Bٽ3 -�w��]�!�4C w�B��,�.[���E8�b�4��OЮP0��m������p8��s�VG�D�7�f����wn�|�)�̥���DఱlX�����a��#�ֿȿ��]t� �_�E�4p:1 -�Ι��~�D��E= �:��~�,r�].�� -^tqf�����*'��!B���A-�bS1����:�С.G{��wQ�Y�r�5f��wMe��v��b��=)�WN!m�P�5�.Qc0R�r����7�'ĝ����<*��C�}M�� -X8ʱ�h��G������]��M�w~��9;~;�%���پ���g'~;�c�@�V�( ���h�!�K a�- -�ҭ�� -�]{���H�e��i�:�!m���K��mZ?�s'+������>_�d��^&�P��xazc����@�J=�Vl����Q���|�'�w�T �frj��%W+��V��b�G�*QD��@��rՎ�B5G-=�VE!<�͊�D!�"��4��Ҕu����}��;Op�z��GKc/�4fF,z[iq��g��0�a+=�i�|�EB�[�2z�9*EaD1T�JS -��Zj}-�P@ ����1���f��������T^�l$e#-9i��-j}�S���IĂ' .��j���T[���dq�IT�skA���J�"V$�Π����ג�egT�rؙ���`�=�m�O*�����?.o>���ħ�H�������8�0�go��V�W�sq?��<�>�_}7���]���W�L��b.%o����H}�1?��sE�&�a��?��1F��B�k��rW�X�<(�n!����6���wX��?>��H�0v[�D��+|@2X�f���<i��0������·��iw�TS����@>Ɨ�)�>���*O�ɠ��e|R�!Oʔ\����</^�Z�Zf<�d>ѸH%?f���\cz�LH%U"����l�T~!^��D%1^+f@�%��@�%yp�$�v����A��&]$j"��h�%vi��O"mI�\��U�7�'t����HY -�N��%�G�%s�Œ� ����w~��?/�\`�Ȣ��g����A������N=�]�vzҺ�����#mNU�^�V�u7�#%�t�ǀ���2r�-���?��u6}��jD7�'���Fb(3TZ�C�H��3,T"��9SN���3�L;���*��BR$,��KȂm-����ߓ�^.w4���SQ�b(�M�j3��D>��*�IB��#���E��˰+�$OŚ�f4x�5I�d!٬�i�#��U(�U�Ae;��r����k3���S9P�U�c��mCpJ���Q�.�<����MC_(�c;��?���U��i8ZY_y���~ݟw�Y9_�rax�����Ӄ[U_�$��!��P&��8^o�7�T��$�p�r�@��Q'��^a;lǛ�M�-���`(t<y�F��ד�wUh/��No�)|Z8��H�N�K>NZ�|�!�4�b�Gx!U]g�~?�9�����"� �$;r�?�+�>*.�A�!L��ߢ�z%M�ߠ1��1v�(�F)�c��J��VY�3�nJ�=���¸�` _b����y*�5Djܯ�V]ղ�4�0�~2� Օ�)W��]9 -'�2ClY�O����c�3��g:.$���4�=�m� -A��&�T�d�#���PcЌ0Hf�'���*���`VC������ -�6����%��fldp�Լ"4�����gZ��8�hbh���k�\&d 2~qqNs�F������ͳ�Yy��������'�W�m����n9�yǸXپ�ӌ_���;O: '>��NO<>/S��c�`6QȦ�P\�h�vl��a�2����Q�n�g�w�o[��譨�FQ7`�X����}\_�/=l�g�Y�چ����d,YK.� d9��8�C\<��̅��E����i.����[dYT�aZjY�,�/M8�0��rl������-o��tg�s���YV�d�;Ml�7��M�t�������S_O��nH���J�(�/��6�fQ/f���a'\C�T�bɝh�^� -��;Y� 1~���2�� s�U'����G$UH -/��x�`$�� ��0)��ߵC�~�~�N����n,�`�3�/p'e���ɏɰQ��rA!9$�����a*��L��TJl$���A�@���� -h3G�n�I'�*o#�/���$i��0��m1/�i�$�����I:M.���2��1��'�5^u�eHU��Oh�H[�(�H��DѸ��c�2�:�+-/��h#��l�� -����I�4b[v^�|��M_�ڼR�=RE��LO�<& -����3�j?�Ϣ�F���5�s?��W��]o�r���:�u^Z��Ȭb�r�ſ�����k}�j�(��7���ٹ��=�_}��]��%���=�roWcO}G��r)B�h.�����X)vA� -t��Z�6�6hH�[�����vT�ߌW}l�������r��w�_���}9.��;8�4��RH۰F"�� �t�e# ʠ4��QJ5il�����n�#hk��i�Ie����ؤJU����h��R�eh��}}�f�&͖ߟ����^?��{��AK��j,RA�N�X�#�:�_�D0/� ��^�M��&q�m���R��A�F���ٜ9�!2�q������D��=3�t,Ր���/r�2\��M�k�k�_q��*�?˷�]�N�����������!/�����#9N�~��h~��� '���Vy-��ɞ����v.�;s������IЍV���"/��j�K�~�]v��WZ���I�EuR=Ծa膹T_j��W��L:o�&�����GN����Q]a�BpU�f太�ee��bVN�:�������Ķ�Q�X��B.�Aw�8Τ��Sj�#�I�3�NV��v�@L�31hЏA�Amd5�B$�{D#��[���r�$�Z�fM�U����V�ߜ勀��Q�,�@�4\����N�� �D)_�sP������Lu�b�?���[����|m��5������y�;i����ُ��x�ķ����F�u��ǯ�Z���q㠲}��7��/��`�������1 �M6�7��JٯKl�z?T��߅��i5p9~)q%u^�C�c�_�~MNP�h�w�Pc�����1},rL8!S�m����ľ�!��(m���C�6��D0��O�b���b}� -���e��2�H�4�<m1V̒Hh�TGݢ^WI�2��r$�4��l<#g'�x�M)M���}��(���W�lz�)�n�?v$O:&MK���b�����Ķ�Fb�bDl�tBQ_S�}6~�����A,�;x�!2 -k�?)@AE��GH���_l~c��|?6�܈'�����0�K�8;!�AKD�^���t FѰ���ք@��L�PD�B��ƨ��Lc�0��#�x�S�v0<�s5"{�&�4t��ѬN���{4�.�T8�"� -y�= -���g�$K5�!&����C��N�n2Öa=�jVo�,c+�Zv��gϰT�*0K8+d�V*/�Yfi�����*z�F���~f ��O�;}�m�Vz;7�����C���{�{�������hz��}���r�%�%�h���q����ԏ�W�د:g�s�9�\�<�>�r��Ǚ����_9p�0w�{-w�����3\:�Uy{fG�Eb�b���:�'��Zg�{��{��\��� � -i�nK�%��X6�fX6��N �a0 -�QLEe/&Zv^��P�,���l����NΏ��\P����E�VB���y9�Ng�`�4&��D�naͱ��c�(�Fw�N ^�D��,1��fW��:U��~ѫ�c;���N�)*+/m.m)��S��S����� -'���.� -��{�� -]Bg:WL�ό7{�I�f����Msa������G��]D��͊�#͇���|�JTI(��H �D-Kj�eР8p�&��?Р����j44��h���E���+�h�K�ha�Ek�sj��z1]��NT�Kw�Rb�&1��8�Z-�%-R�!H�\Y���+���� ��x�0G�����]����&���T���l��'n1aio��7!�j��<~_3hJ��N���J -PǦ�pĵ����W��G�(���`{���F -�Oh����4?��ic���}E�b\�]�N���ߕ�U�s��?>P�p���`�)��ݶ��QV��L��0�[]�;��u��E����}�p�&VBj�Փ��]��K�4)!�Zۇ�S�)�=U��f^j( -5��e*�@T�EB��)�$ d2)$�dN3�\�^.W��k��h�A�[���b����@s�U���T2IQ$3\�`�P��[�8��)0 -�`�܋�R�P�*e)���pm�݄W�>�g�)� -� ���7� -K��7�������J6m�E�0�>��Ε�6�kvw�^dɶ�[;�-ud�a� a;��% �u���a/�Đ�'8����9��:!��%��0uQr�(=rn���i��"#��"�U����l6X�F)4J��w�����EKh�-�>�3P�y0��E�HO5f������6�^�L�d�vn��, -�z�F�����쪏M���{���q8��݁0��`s6)$v�|���I?�Y%ڴ�k�ҏ�6I��k�i]U���YՒ*N/��}hY���M��I��I���Cu���d�{_p��C��ww����<��i�=z�Qb�8���i�ɷ'6ÿ�]�&>i윟@# -rV���8��Í��".5F�:-x<_��s��+2!�c�`�@��\�n�{v~�͉���=;O(6��[�L!uP:�YLQq��������Iw2H�XWTMS4M�]D]�v��HWTO�R�`!u?<�>8-���)v*:�L�`�9ɞ��b��\� -�q>�����S�)f�����%|����S@4������@WX�xP��@�g-L��H]E��'eS�( K�"@%�#��,X���5ўQ#�H!R�LFj���F����<�D���6�_d�C4M|LSk��Z�p(�kt0�x�sgS*U*8��*�P^4�/d��� C�Ƕ���fЃk��)�H��A0��O�� -� ���ڝk,����EI�ِ��&F�]��r��$щ4��<���D�P_Ȧ��x���6�����p���&Jl�H�.��젝4�Pc�Qປ�� ���e4J��7*�شlY���ɋ��#���3���g��b��oY��H��O�?f����CB�����vz;�Q��>Tȟ�[lm� -�[�6�nKf���Жu��#�)�I�I�}����P�y�l��\��'}y�H�&�L��;��X'�l/��,�x�ϡn�*ts�.iBzL"���!}�I�l*W��85�S�!z2���5rS�Aq���S�A���������:���6�^�gu��/�DM��ub���,�b���#��/i���6Se�l�%.���Bv侑o��W�Z5v��� - u�@A�e3��J��YY* �J�^E��0�u�Y���cc�a9D;�Y��Zl�тj�`2����)�ٮ�e -Ӧ��� -3iN���2��dM������b1۞AGH��*�*���hl��{��X��f��f�mXm1�U<�9��*gz�!c��r��s�`W�6T��ZM�%9~�t$B(f�Xp����Ѻ7���q{�(-�ݘ9��f�t`�EB��G�=�5�n�@����O^ɰ��4���aY�y�ޕ�<�;�5:��~��ٯ��~k����`0>��K���v+�S�Nw��\����`)�/��'V�.������\8.���*s��H�����4���I��#��7�w,��,�zg�cT����ʠ��ӭ\�W�gi�LאY"�y7R���}�>k�jh�d'�]���:]�ߴ�v��s{Y�ն&���� ��R��8�P�wx̻����M�D;U�c�*P��&ɠS�xق�JSa'瓁��%[���g���&��ɶ�<�� ��ܒ�����S/?���g�)�p�]��Xt��5z��C�L��l��?��~mh����f��\������w���s_�d��ފtF���[((�0ӧb=i���c�O�s/�����e����]5mY�m��:�ิO����|L��g����Y�Mx��� o�7:�eY�?R�@�!����eF���C�C�?[� -Tt(���F�P��ZM#�&h�V��ڤ6���.i��M����ٵ���a� -�ne�t������%9� -w�/��@ -@L�Yp ,����o��)� /Q��9/�^�|A\f `FeRL�������]�l}���^�VV*��J��+M�Y�hd�Y��ls����@�p�]��4iA0!NV&��{B��M� -rA� �I�f��y�9�01;Z4$��N��O��8�P�C����#;���+��̇�`ۋ;�ɰ����k�$��2��DшM -聉�\]�<6�N�o0�r�I�I�UK^L.&�B��$@�s��}���Y���B59h����Q?��O���e�PU�j?E��*m̩�ԃ�a�����90���.���qa�3¯�Q�?�^/�� -�G�]@G�S�0WHN�ƫX�EW�]s_t��{�M�?�.2�^�&Ҹ�?�aF#O��d~�ZB�_Ȇ 6�1�&!��?^z�e��aK� - --QVWa��7�[,eqQ+�Z)�δtQ�/�e��y��{��{�s>���_�;ljs�M�`�$>b'�!2��X�Ե��*�C��������AaZ�6�GS�W�B�v-]7�m��� -*��.R�"T�%��ݗ�z���s��~����|�.ƿ.Ū::���)��'���\���/~��X� -�z`R�>�K��\���������?4�s��7���_�L����|�h����g�ɑo����Q�v� -�K,cV�O��y�9%���=B/xE��bҮ�IJ#���h*\����1m9���H���O;&�� -I1�Ao{��ǟ&O��O6��y��7���]�s�b�=��)�.P���<�:��q�2�U�N0(�$L{���w0#�Q|�9���y˼�hy�y��З�e�-���m�]�J�R�V)�K����2��~��b� -=�Ŝ4Oێٖl�l:���W��dֵ�> -遲�.ZW���dE�Kۃ���f���v�~�j��A�.�x�^�o�O�4� �2}�&鋜M��÷[!�Ts�S�G`�y9b�z�L.�N�$����,���)� 2��KHB%S�����h AH"�� lv -��WH��섆�)*ixK�V�OT%Y��!��t�/��3W��ڌ�����f*�$m����d=ډ���?a!�lu��ƌ�F�A�����:tj�ⱽ�������?l������ν'�m�>���Ǭ���g���Ůq)��}dÈ����hT{��.�D�����I����+�|e�L-�K�9��iYax������.�܊�>�V�T��U�߽����&Iv�P�d���l"i��a�+`�++��K�5T�Zlf��?m4 %�B!�Ů�jL��Q�jQ���X�(��\��έr$'��J�U��j������ -çSwJ�����(u�6 8��B����f�= ��=(b�VI5EA2���MCm���ᖦ�U���e밁�ܻw��`�p����هǻbnGG�� �U�_�sMm���'��_;�Q��K�������� >��}�6��C}�l��4��I` -�Ǐ�ًc�d���W��:���z8P�/��'O8�O���_���3�g��#�o�+��؍�������z���u�qk�'��%��L�0;��˺0!m6�F��P�2��beh�f��jH���A/�$�$_� �Ω�xh��K��|�|���U�p�m1�� ��լ -��9+�V}����i��Q� d�v�9���H�!��n�KR�n����8��@���$6LDT'3���R��ēabn�ʞ ��lt4��`$X^�u���|$���×��k����sg�@�kF{�~ -Q��ZS �9�#x'�/c(^�wO�_�Ac_�w�B�B15c�V�Çf�A�)A̸���VS��O����x�"(C+7}�|��D��l^h.ߒ��a�١�8�_Z��Cc]�R\lt8�> o�vDcQ�� ����>yT�6�� -Ň�XHy�}J�rʰ�� �zA�9 �o5��`�Xc�nwm�vF�^0��w�x���W�-�]��Elo�n/��H�W����p��k�5t\sLSHLg5�T�0�@�7#����Yc� �9�l��I��T�}qh�[7k~��@��vs�ߜ�y|t�O�O~�ROC�K��BfG���y�����3ũ�X( l�C�Xn����/�#]�����;� ������I��������k i5y)�g�{f����t�}�AO��ߏ�:r��X_���d��w�����`�n�����C���]'��=����DB�Q6��n9q=�� B$�% -�"ZR�K;[ܦ -aTMMJ��9�Ķ������TN -�����1w<�͝�ئ�`�0�xVpJL��,0�Ev����Xt�e�Ia��S -JQ��)e_V庲�������{S�Amh�E��(�ٺMɪ�BY�Υ�A�Ӥ� -�zA�@5"Y��%0[�� -�#LHG��f���[��j�FR��U�_.B��3�o�UtY86�n���-,��D��dmɁͮ��i�4��9`��x����}�7;͖$5�] sf{ldS��H��M�#z�D��"3S�5a�BY�(���Һ��J9 W�EBz�eKL���jT"�藵����̘%�T��6�<5۽n_� ,e�Ik2P3[f�D�r)G���}lw��w~9��}w~��ߝc;��R�����s�&m�^Ӽ��(��9��B�ua�TUk@Ӥ-Ah��ҬA)*�ڤ��?�?�j[�F�4�9<��Ӧ$�{���,K�>��}>��4�q�v]qAW����� �,��Pj�P�+���������l���w�8�l3:�6Fe��xXmN,���O�6tNn ��r�T*���.��a;%�Z���g��_�S�\=��<�eC� t��9��A�ͯև���Q!>}�'!d -"��lFs�+��ZVk�;�w"K�U�����κj -�ړr1)��!{*�� -�"��a���T�,��E^<yt��#�)��|��KRMF��*��P6�+)��Q����^��~�������ǥG 83xt��W�|�3���$¶�n&�ha�$����+��ϊ�\aV�����j>���,}i�; -sG�B:�T�+�딚�ˏ�~��X��EM%�~H^zC�*#�#3 -ٚ!s�&������"8~l�Qs��̛�Uϛ�b�=�#̆��G�#ҋ�K�K�U�~_ܐ��wݷL��{�=f���c+p� -ȅ�0s�q��u�)VN�m��4�R~vd��;����ٿ��������oo�RD�v����c��aD�d7M��-3�!��d"Q'�,�H����A)$��l�Vi�ؒ��dgQ���N��eٸ,�dD���>�H�3^dN���eG� �U�@菜N�t���^�ɇ4Z��J�Uz�&�N�_���(^H�;;�4�^N���Ӗr-�ki2]Ȯ�3�E�m#��ax-ι�=��|4����U!���-�ς��/�ӂ�~��y��\��Y��b���M���=qbHt��5>�<1o!�槺���XgD���3Yۈ3��7.�4n�ƍ��5Hlc�i�t_`\�O�����[��5�-v�~�H��aę�N|��>�mC�~�x��WZ�����m���'�t������[�Sb-�W�4�i_��e2��S��h���#���E���3��9'}��kq$��p�?��@�������k�C����p��;��>į����<��2_�|�_�/R�"R�Z�"Z�1_�U�!?APV��.��3�a�Z��F�2�*t���K�C�B��l���O-���Q�u�-���F�B:䖄P;�8��'"�c���#F�iԲ�� - -�-}���g���f0�.T��QX%_o�(b7,tg�"��k���S�k��+*�0,��c�R�81dS2%=���*129E�;,��f52��%��0O��G�dT��eR^E��d���ʠjf9Cf�^�4U���I�r�\(�J$QbKd �/�W�LϬ���\^V��k�d�-�ea��۸��c&�t��3%�v0�b&���_��iƕ����hr3���v��Px1����2�ilLn�? -ܓmj}<cܽ�<�������c�G��G.G�s��7��prR;>F�������8Я��v��s���a�I�T��Ӗ�;rfttb����I90³1���_M���Z5 -� �u둎L��?��s��ot4�� -<�Oȝ^d�wj��6 -gM�V�*ZU�i�f��xZ֬�ںF.k�k�)b("�@KE��Zm����(b�����T�K�j!b=�T����ø| N�lhن[նh�m3�0Z���H<%)e��T�RS��� -��r�C�(��^��?^z���jNM|�XKh+���y8/�T��dK���ͧ�ڋF�����ٽ����s�t��Ӎ����lFo���d�|�;SRРJ�:������l ��C���2�C�7�~ -�a���w{�����G�oF�ح�Oh�}w`���d�s'LIz�f�!�����0D��kc�'lN�+�������:���s�\3/����/uzܠ88*���G'���xut�}|t����k����d�{���o zs�0�)m� -�N���z3�3��c=B��`X�0"ҏ"����L��9�6����OC2 -�a%P��X�Mp�;y�Z���?O>P�{,� -N��I�������L�p��6;}O���ˆ���!��"{��hm���|+�=�Q�$�/?u���g���Ѹv|��G/|s���[�=�x�����秋���P����]�@�6?����2�m�<�8_R�$R/Q&)J"MQ�AI�e١��Ls9�a+�c�h�e����mԭM����%h깨����=ؔi�X�tMv4;0��` �ݐ�{I�����H�������^�M�71��z -��aR[�=�I�u�]Fw�Vc�q�>l�{��njg�?�����h�(�ێ���.P�b�4�B�N4�P�uѕ>=�l@�l -s�v�^n𠞼$>���'qt��8�(��Fd�_QЊ�R�K�uŭw^ٺbQP���l�r`�n��� e���3�P��Z[ҟl�J�Vp)��e�B�eȶ��q2��,��v�g��ǩ�������4w}�Z;���j�1�y��{G�y��=��hn]����(5�k��|l硵��� ��ql��g~W�>Α�����1Ma��v����/�~T�����ߌ��{�6,��ح�M��9�cS�9�)�z�r�ܫ��9W�جtg�d�(K���LOv��˱~ewf({�: P�f��F��Q�x�Y�[ٗ�ŗc/*/e^ɾ���������[�_e�������ȹqm<5��aτ.�<;Y�� -B��W�#�8��i�.3��Ey��!� �x���$@�A�|�l��~��]�>�0n����3ƣc�k��P&m�tx�ֽh7�1W4�O���DcRFR,\��*=���M�M���,�)����-l�������R8Jv����{�Z�5����-���~n';K_�u����x�^l�ޣ���Q� m�H�?���,K��8U���/�g`�~��B^��B� [�V�B-�k.��C�G�!��a2�o@p"C�d -����(?�1�@vjL��xd濸*�"2Y�|]v��i��a������SE�6V���a"ԧ�7f{ -gJ=ޭ�����/o?��ӖPwq�kf�]�njpw@�:8l����z��Pz�Җm:4�D�q��g?#Փݡ��}X��g�}�`����H&*�w'��� 7��Sxz�8R��b��s�}��|;��{�F��M�M�f�A0�Ơ��ܓ��@'� -W+��t27���Dq��o�p㝦_�^ �)�c�7�O˧�S ��RF��W*>�~�8|M�-��nJ���%�\@c -0�UAv���Ѣ3|L���qP�,��}R��O61LB -.Rwv���/dZĭe<�S0�U�MV(\�i����\S>P>R0���,b���9Ibd�[�. -��x��#zE�d�YG�7aNl�O���{m������0X6�a�<�Z[����4�@�V��ф��C�I�P @�X焹2�Pw��`V�jwk�c�ЙI)�������[�^ ��1 ��XL�a��}�<�P���R��2Z����0��`3���ܤ8����Ψ39?tF��4OxQP�oӉi�=X���Nɂ�K &�p�[Ď��)�!�f�d8���S1�;(�4�����3Q]�5Ϛj}�ҭ������{1�{�0�Z|c2c��c�$�e��Q���}��-&������� -����M� ��h����Yt�E�����6ḿmQ6J�+{7=,LJ�{�>{D��"�r`��K�妿ھ�HS��]z����ܚT:��������"��·27��4w���Hy��C�Gp]F"ȍ�H`����o�!�N�S�E�b�*�<3QpR}����(�O�*��<�xAĀ��"g�5�� bIkFQ��/y -�_�>pT��P�]���;�!C���sQ4��r��~TX��;�^b��e�a鍓�4��`45xw|�!X/.�BG���q|����c�cY@9�v����A�D��v�r��ƍbJYK�jeC~ ��\c�uy鷛ϕצS���S�I>��B�]�N#�g�tیeݞ�9��Ft�;�x���l��EJ_L�U��yb� -2�E�U��bqDӠ4D�`'p�Pd�2��$3�p;vh� &���d� -\�X̮��R!X����mP`�`���Q�G{��'g~��D�)JEG���8����{ ��1�֎F�ZZ-4OIY)$��������������������֕���m5wc�ߟ�,���ʃ�*`j]kh�ӕ��m�gG��zҰ�5XO��|�N|��#`Bu��D�ɞ��\)$�D�ׄ+��$xY���]u�m[W�W?&��I����$�Iђ%ǒlS�`m~�6�W,�AH�6[2hl,HD�����0�ڭ-68(��ð��۩���!/��m^��[�x�,��R���$\~�^Ju��}��R�8j�ֵ'�Q�8٭� �'«���kɹ�_po?ï�7������.ҷ���J�M���~���aľe��h���]mL�mܻ�����l����Bץ�U��,�� �I�Y�����n\���:��w�t���3�:M���}�'���Q.����ӑ��snkTW)��$�1IjZ0���'�E#�\�F�J��#I$G����&N���������ҖQ��9�+F���7M��r��b�����K��Mu���b� F�]�|T�6f�n��.mS��B��w�u��z�l���1p�����ښ@F֑���LHZ��z�ʹ���~��Јy��,m5��$�:i-7ϵJi�+�.��hˡ��ZW�< -�"�d���i��!�]E�j,۹�lo]K�3r��%�Գ}[��P*�ŀa�������X�m���@��ݗ"%��w��1ٰ�ґ� |����i��q?d.Gk�}ד�jW�d?;��4��J%1Sf�t̃�E�z��`n�:�=������k~�=�OIS������=UzMz�m6��kƵ�;�����������q�� -�����<&=&�����O���Ҍz����3�TI���i��_G��Ӳ2 -��a�C�I����lWZ��b�I8-fh:��T��t]���/`>g�c����lX}� ]��1b��\�O�1U����`j!� ��ZFw 5���|�2[I\T���$���9"�[ ��e�m(���+�]��\.����KWV�cvv n�M��(�@�o��PK~�+i���h �@K�@�j,#�3�8�&�����1A���U�� d�4���{�p�U�4�ou�c6��gK�n��[��}������֫����8��7��9�?d�4�iuMc�Q�HcJ����w{��6k��6���-a�d£������yI�[4G�y�`��Q`4�Xp���y�(c_�Q���ˊc0��V��mB��cG��c_��;�|�FYo��!4�����j%�ѕ}�p�ݘ堮��[��o��غ���ҝ���?Я�����0�����7?C��Ѵ�0B'��3�����VB�<I���X;�=�nGv4� -����t�V��rۺ]�b�$F � ������xx�W�H#�9�w�}���逼'=j>�����C�X�?��&��Ĥ�2?'���e3���(�Ō��3E��J�N��A|x`��3��iY�j����J0�S�Z�VjFd6Q��\�B�`�I��(]6��Nf=��,�R�Tr*��ٶU�ج������s5#V���e�U��J%�Z�A�b40Tv{L�x�U�&v��L�X.���g�H����|���7�N� x���'P�d,��Ne�,(�\���nP0U�˞����[�k%8�UPe��.�pu����? -��5H��Fa|�[;�;�^�u���Um�8��ІL����f�F�fY�#�5`[y�`4� -�H��t��xAO�����*�Ua� -)?�h0���!ۯqHb����/bGa���2tq�<r�҈ʢ�`�F���ߍFxlVg� -h�E�i�c�"ӭ�/�Ϙ#:�!8jEX�a�l���u�|ZZMH��%C��_��@?"I�#�(�q'ڦa� -�=q��l�Ѹ3 ĝ|_̱a�B���K8�+È;�l�7+��a��/��!�_��֠/�`��ig�wt��&J���Ϣ�ŊAk�,� ��$z���_~r_��v�vl�}u��5�K��>�ۻu3�4�����| JA���K�Ǐ?��SP�[Kgvys�XXQ��ߐU˓��c����d���ՠ=��K�W�/۞h��xv�{�;<�#4\�i&�Er�YB�Zro�8>NN�oj�$�_ΐ3��������<}�{�X�Qa��Q��#�Z({zj�7�_����3�jZ_���b���z���G�>")Ȥ�}��,ƽ0ܭU�:)��(eR��%�C�A<G�I�w�%�|�^܄� -�D�����g��x��Fq]q|��Y{���}�ή -ޝ}�ݝ���z�=�5~�8� hؚ6�@��66��4����(K��}H��85K�x���$��j���4_,��zg�)��Jm�;g�V>{��~�?�Hs�8��s�P��A��=_�_ZD -Uah�g��O����p�d�Cԓ�]Qv�U9����<�,`H9f�/�3���bE��b�y:e���\���A�?�rʯ��i�J��LHW��k�/���b�H����r�kM�R�7"~s���{_=��K�ɦ-����(��Tv#Р_��h 1AL'L�Q9�#3j����f���5c��� 6����d%�9E�еJ��{�Z=a"I$lP�$0�#$qѫ���PA����\G^��0F�MRn�7\�Č�q���<�̬g c����ig~^�Оš�����9ڵ��<�~��. -g�)��D5O�塁���9�X�}��X6F������M� -����PDfD))w>{�,=�ˬ=C�lJxg֖!-Jxj֒!�~:K��T�i�q�@��@V�G�ko���PN<ܪp�&��f�ZC�* ��г�i����7�sz�d���ވ�trA -:������^���C����2�[�[G,����t@����63�Xk����>����eM�5M�z��>�fs�1Z�{�AZC��� -LV��\�Q�ʪԵ��E�j�yA)-��L<�4*�(�UIFT.�&����UTڕŰ��-����!����=��y��y������kB�Q�ӑN�j����Uc] -7Zw\M ���z��k�bZn��9�K�Z�_�� -��Zv�;�|�cue�n�[n�^oCi�Q�(u�E1�W�6�a6]��������d�DѤ&��;TN�U�")�Q��r���^�0w��SEn�f�k���j9�µ��3����n��~E���}x_sS3����a]x@�II�L�$!4�hph���-������.]��a)Lи8��!�ë,���Z^���h�������\x�k�y{ͽL�����5����� �qӡ�- -�8��H0����)15%���b c��Tt�[n��f���-�ɀE9Nt ��g�B��jà�M[%`)*�N���x�N�D �ΎG@d�8¯ݮv@���i��}��>�+�n�F����.*�Ӎ|�G�SY�Ef -�ڮ�(A��������{�s��� -hG�;�7�0�P�/ VB���BV�l�Iv����i��W���e� -�q,s�I}�� ��o���6`G]���ړ����̤m��6� -E�J���I,��kV#5VC4�z�V�AS�.�l�I�x�%ԧ�l��aTV��# �B�p����B��c<N�,D2�)ܧa�`�v�%4�h�ݞT`y�`V�5���멄��w�}�B�$_|��{�����$�_�?\� -^~����[�Z��$������7b��JX�.�������$��\�/\�6�.���'��M���B�u�'o�R����,�����Z�e�T7�_gd��+�ׄg�R|�\�^��`����aAӞ���R�+�|tW�(=�����kc%�������X�3ɦ�$���M��S��X�ʸ3��)�>�R�ɵ�IW�O6'����6V��n�S�X��@T�!�Ӥ�y�Y$�O�F�C\'>#U�FE���a<����BTǼ��*=�:-f�Բ*���x �)�zRTHJ#��F)�(R�R�<��lT�� -y0V/R�R�gK&��LHaɄ�L%_��+���{7��� -͞�ݨ��������\c��@�����˟m̈́O����/�x�: -�Z�*�1��V�ZӅ1X����}˱߱�9=�}��� �w6:���Nn�f�V��j�p����8\W�(��T�9�{.WSU�y�r9%�s9���r�Ql.'�+ٹ\R��<�3������{mN.�v8c�#�����?�� EQ�/��#���z�x 6���HQ̑[U��i)�r�`x��mpo;�Yb��l$�nE��#�ᝳ��3X ϫ�,ZX��EF�p��a��Wp#��Z��v�a��DP;�Jr0��,� -�e#T�6�w/���r�\�d�oI}�ϖ���/� -�����U��`eEI^�ro��E���K�pzy� ��Н=Y�!Ņ*N�w������-�f��c���8�}}m}��=Z��P(?�ҟPK�*С��'�D�P�2�����m�Ӹĸ��2ݢ1�[2%�&�f.�˲-�,Ιe�v�uQ��-�cK�m?��{{��=��w�=����@��hc���lK��U���+y��Zk�%z��H��W*B�f>n�P�t���k�/�L��V&���r���;17fFd����=eI��ZȞa��UǮc�������Wv�<�`�6�8��(�4h�IX�^��`5['�,�g@���g���� ���>���~:C��{�?�/nb��m �$ӌڰ��7�d��#?c��y�;�#X��;C)*�ƭsT/��[�K�*P�S�n��:\�xp�b�Q�WU��jwI�x{�I���Uc���*Wi�h��I�b��������� �7�N���Ȝ�.�[�!?e#�-�U�rTF��i�tLj鬉��� �a����3i�l�9Ɖ|\c��C��Z�'ZI��E4�\|���B �*��Q��Κ�N�պ,������ -��b#��r[�Y���2�mSۖހ���i���@��h���ދ���m�f�~~�A�i4����35s���1���KkM�#x̞ 뉇�XStA�2�l�h�`,)�?��Qw�g�A9��o�+ZuL7��=h^2��G�EjSԚ�^��+�a�v�SRR5z��B��~���saw5������ю�S�'RU�k8��U�L�F�l�+�ȃ��)�6�]@�NrP!nsB�'���P�4k~����n>�����~5`�12�� L�@��' -� -�t������ � -w -�JJ������@�;@�VҼ�:���� `�YG�i�K9 T�,��\Zɞ6�#�< -t� �.z�k����}4���gw�4����Q`�#`� -#?��X[��4��I��aǯ��7������;�>����]^�"v$x���x�RBBBBBBBBBBBBBBBB�~ ���%&�Pⱅ��jU�:�����M��2�Y٦�\3�Qh�ڊ����)����͛_���r����}1��O5.Y� -7/ky�uy[���ΕϬ��^�5���3���������O��9>�چ<��T�?j�=؎����a���<c�)/'� #}Q��H�7���l����X��9�u�鷦M�j0�')�c58�'�c)�H�r�ӓ��$���*걓� Y}I���Ѥ,'�HRV�|>\W -6���#c͑���{G��aԡ!�D�k�����ފVl�v/FH�`6c=�F���[�<�H�-��zdH���� -�����U����$��]�/ӑ��,��TK��MNq�0�9�KFKv��]ut�G��������9����i���3�|OM1~�����< -endstream -endobj -1548 0 obj -<< /Length 783 /Filter /FlateDecode >> -stream -H���������kkkMMM���������JJJPPPOOO^^^������KKKqqq���������QQQNNNUUU������ooo - - -ZZZ������IIISSSwww������}}}???�����䄄����AAA������___������999000vvv������HHH��㣣����������������DDD�����興�)))LLL���~~~���fff���222iii\\\���aaa������666TTT���EEE BBB���YYY������@@@������***777���������bbb������GGGyyy��� - - -...��ڼ��������������RRR���ddd---������������(((���!!!��𐐐{{{��``` <<<���,,,���������jjjnnn888xxx���hhhWWW���������>>>���mmm������cccFFF���111������===���tttCCCggg������$$$333������[[[rrrsss+++��흝����������:::���%%%���uuu���###���444��Ӝ�����ppplll������eee&&&'''��ۛ�����������;;;��Է�����VVV���///������]]]���������555��͏��"""zzz���|||������������������XXX���K~� -endstream -endobj -1549 0 obj -<< /N 3 /Alternate /DeviceRGB /Length 2575 /Filter /FlateDecode >> -stream -H���yTSw�oɞ����c -[���5la�QIBH�ADED���2�mtFOE�.�c��}���0��8��8G�Ng�����9�w���߽����'����0�֠�J��b� - 2y�.-;!���K�Z� ���^�i�"L��0���-�� -@8(��r�;q��7�L��y��&�Q��q�4�j���|�9�� -�V��)g�B�0�i�W��8#�8wթ��8_�٥ʨQ����Q�j@�&�A)/��g�>'K���t�;\�� -ӥ$պF�ZUn����(4T�%)뫔�0C&�����Z��i���8��bx��E���B�;�����P���ӓ̹�A�om?�W= -�x������-�����[���0����}��y)7ta�����>j���T�7���@���tܛ�`q�2��ʀ��&���6�Z�L�Ą?�_��yxg)˔z���çL�U���*�u�Sk�Se�O4?�c����.����R� -߁��-��2�5������ ��S�>ӣV����d�`r��n~��Y�&�+`��;�A4�� ���A9�=�-�t��l�`;��~p���� �Gp| ��[`L��`<� "A�YA�+��Cb(��R�,�*�T�2B-� -�ꇆ��n���Q�t�}MA�0�al������S�x ��k�&�^���>�0|>_�'��,�G!"F$H:R��!z��F�Qd?r9�\A&�G���rQ��h������E��]�a�4z�Bg�����E#H �*B=��0H�I��p�p�0MxJ$�D1��D, V���ĭ����KĻ�Y�dE�"E��I2���E�B�G��t�4MzN�����r!YK� ���?%_&�#���(��0J:EAi��Q�(�()ӔWT6U@���P+���!�~��m���D�e�Դ�!��h�Ӧh/��']B/����ҏӿ�?a0n�hF!��X���8����܌k�c&5S�����6�l��Ia�2c�K�M�A�!�E�#��ƒ�d�V��(�k��e���l -����}�}�C�q�9 -N'��)�].�u�J�r� -��w�G� xR^���[�oƜch�g�`>b���$���*~� �:����E���b��~���,m,�-��ݖ,�Y��¬�*�6X�[ݱF�=�3�뭷Y��~dó ���t���i�z�f�6�~`{�v���.�Ng����#{�}�}��������j������c1X6���fm���;'_9 �r�:�8�q�:��˜�O:ϸ8������u��Jq���nv=���M����m����R 4 � -n�3ܣ�k�Gݯz=��[=��=�<�=G</z�^�^j��^�� ޡ�Z�Q�B�0FX'�+������t���<�u�-���{���_�_�ߘ�-G�,�}���/���Hh8�m�W�2p[����AiA��N�#8$X�?�A�KHI�{!7�<q��W�y(!46�-���a�a���a�W�� ��@�@�`l���YĎ��H,�$����(�(Y�h�7��ъ���b<b*b��<�����~�L&Y&9��%�u�M�s�s��NpJP%�M�IJlN<�DHJIڐtCj'�KwKg�C��%�N��d��|�ꙪO=��%�mL���u�v�x:H��oL��!Ȩ��C&13#s$�/Y����������=�Osbs�rn��sO�1��v�=ˏ��ϟ\�h٢���#��¼����oZ<]T�Ut}�`IÒsK��V-���Y,+>TB(�/�S�,]6*�-���W:#��7�*���e��^YDY�}U�j��AyT�`�#�D=���"�b{ų���+�ʯ:�!kJ4G�m��t�}uC�%���K7YV��fF���Y�.�=b��?S��ƕƩ�Ⱥ����y��� -چ���k�5%4��m�7�lqlio�Z�lG+�Z�z���mzy��]�����?u�u�w|�"űN���wW&���e֥ﺱ*|����j��5k��yݭ���ǯg��^y�kEk�����l�D_p߶������7Dm����o꿻1m��l�{��Mś� -n�L�l�<9��O�[����$�����h�՛B��������d�Ҟ@��������i�ءG���&����v��V�ǥ8��������n��R�ĩ7�������u��\�ЭD���-�������u��`�ֲK�³8���%�������y��h��Y�ѹJ�º;���.���!������ -�����z���p���g���_���X���Q���K���F���Aǿ�=ȼ�:ɹ�8ʷ�6˶�5̵�5͵�6ζ�7ϸ�9к�<Ѿ�?���D���I���N���U���\���d���l���v��ۀ�܊�ݖ�ޢ�)߯�6��D���S���c���s���� -����2��F���[���p������(��@���X���r������4���P���m��������8���W���w����)���K���m������ -endstream -endobj -1550 0 obj -<< /Filter /FlateDecode /Length 24688 /Length1 41036 >> -stream -H�\Ut�W��9��7B"� �&7�������ȽAD���HB<�)Y�c<��`CS�� -�i�&7�x�G1e�x�0Aj�3�ZM�{f�ꚶ����u������A"m�k1���H�>:ͫ���Yh|�V���y��,��: xxL-���o��<�5�<mւ�UA!�X;���ܬ���?�v��3��x�wx�݀w�C���*���<O���fvm����=?�����g�Y�2;+?7i��F�C֡w -ޜ[�~e�`Nn���'���u@�����F��@� �}��URt�� �k����l-������E=�p��p��H�A�A0�|�E���#�?���B%z�[J�r -�hlCR� 4L?�r\���ӟ� -�0���m�A�>�w��>> ot�O��[la.��a\�F6�l% -�b�>���D4Ab8fc 6c'���V� C�L���!3�R�,֟ N]k�_�����;��#i$�ǰ�� ���E���ոI�W&��|�$,F��`���c;L��Rz�r��?���TD'D�����x��eOKP��q -�Z����x� -�"���V�m��3w��4��`Ζ?�[tGΖ���р��"h:-�X�n^��#�#�����Y����F��61_,Ke��iDOt�>bX��r\�q��z%�(�*�Ƚ�m����AG��q�HQ+jC��B}�?G��N��EXE��"+�:�@�G0cer����*���C4P'>�'�)��ӻtZ\���DYf،2��8i4�v�뒫���b�'F�L�T,�\d9��$�3��!�&�TZL����=TMg�"=�'����&qD�M\e�C��G��6�?����������:R�ѥz����Ud��#��5��`%J��s����0�n��O�?���ԑ= -!+u�(�n��|*��TN_���&�F����D��(��#�$=�U&�"���Z6To� -�_=5ՙ�<j��6�r�5�U�ڪ�2M�<_�Xe̥p�s����|��B��6FN%��#8����`�j�Ep%�C3\$���<X^�ޓ+��hɤ\��YDŴ�6�l�i'��}M��6ݣgD�H�8�41ALb�,��r�V�c9/���h�>���*�I��&W����?�#�H0�����G�����*[�U;�.uR}��6m4}l:h�7{�����c�k�21�4k�n��Q�}w��m� F�(%-r��D��Jl��_i@��9�,ʣb��RyW~&�����,V���F]6�T=ΈNx�|�If�cb��~r��ʨa�Y�~���YT��C��d�N�� -<��_P%��$q�*�"��| -���`r�?{���h�:$-T[��x��_�5b���xS��g�:Dc��]?䮿C�pC62�ߠT����_�X�j��θ������a/���F(w�3���0j��1�w�U�\Aߋ.����G��1s�f��F%#�Y���q�B8��M����a�0�[,Z�5,�j�H��w�O�˖����a��]�la�GS(v�IF��g��0��D�E�W�8O#�Ǚ�8�e����5�q�@2��^WN�@aԛ�Ԡ�R��ڧ��s�^(���U����հP6��[��X������^$�6K��G�H�P���=�s�����V����i7�!��|h"��w�?�y6���vF�u��\�av\A{y%A��yj$o��|_ϖ1Ϟ`�n�>3�v�E������-��7�CU!IW3Ra�5�����-�s�� -ot�u��\�:NL�G���ތ������؋�G3�h4���a��ː�v�l��W�4p@\���}z���rtTd�����B�!���A];w�������K�|�z{�i����lR��(�5)���t����薹5��~����R�ou��L��巚6֜������i��e0GGYV���j9Hc�y��noq6�ǣ��R�؋���|��ȳ[��iq8���82�l���g�51�3: -U��yؚGNkA��B��w���b����v������S�9�r�ic��e�ڃ�:������B6��Pv�$!� -P�K$�d! ��@w#��2�E�� -\��tl�f(ӱ>-�iS�t���N��Zұԁh봎��\��{��3��|�;��|��}��������%U�mˬ̐B�bK��<b��V> -� -�=~j��|FG�ƨ���x�����&�ʔ[*Ϯ�N��*f픭VM�p�:�M��o,�50WΏ����A���|(��C�2�'�S%ηɨ�����a,3���⸚i�EM{��M�z�~���������֚����ٴ���U���-%���D`�N�t��MI�h���jhJFVb��:� -��I�����Ϧ22��0?1 ����V+�:n�+���[Z����`ܸ>��������7�'I��P�*.f�x�q���KB_T�3 ?c�� >Z�ض�*�"�� _�*j�bu7Fz��r�Q��P̒�lt-9����Z�����"��'9�� ���4�vK�%M��M {�:���%�5�Nl�Gi {Y�洬��Q%WvZr�"� ���`V�>K�ǯ.H�1�G -D,|E�ol\0x���y���9nZ��z�(}�{>S��j����b��F�"�@�13n���mF�o���k���Ywot��ձ\+��!�H%lOp����?��4�kE�S�3���R�d}tF�E�J4X�%���GMr9��,�h*���>F�1~���-���� ��V:r���Nb�"^GH���]�Q{��� -A6�h������!e�; �9�x�S�M�����^�v�6��ў�k�ِ�l���%��Z� =��}���sC�qZ -�r -������}�hנBlVr�8{�1�~6���h l�o�\ �����^�g ���O�cĹ7�:�r��`ٿT�Or�� ���[�m`�RAԮ,�J�n����8sI�Wh��J����q�+�$��2�_���ڋ��u`��§Oi5l!�I�����}��f�#����|���Z0���c.tP3�Æ��O�`���8q�sl����|�G��:�4�[�_���s��,i��i_��+��p�J�~ؿ���Ǻ���`�`6�����E�#���x -8<�6��[��̓N�Y}&����d��E�c�7�Cı�d�x[�cl��x/x�G�sƕ�o��~�e>'�y���.�:�A��J��3�� YL����7W�7��߄+���}�a��(��*s1)�N9I9����*�Y��Mz@-�z����-T�X�?#��}C����R�3(8�3��i����gHڦ -�K�e�z���4�!y�:$iZ�}M�$�Se:����%#�����/�/i����!��!:����Cip%���@�7$��vJ��xOD�;�*��**U�r� -q�G�z��\'b���*z�7��J���^�%��ׇ\�£Q��KB�|C�. �|F^{ˑo;�&d�,�������h`E��./)���3��?W;�������j��p���w��<Λ����s�H�s�����29�����y�"�&�� �a����a��ȇ�nO�ޭ�ػ�r���!�{���ޞ��*��䲠[KE=On�:���i\wj��M�:*ꧾ~l�-}�C��Q��q-�qj)mV.���F�D�Z��̶]4K�Iy�Q�'����X���I�S9�U�Q��0�?����?�q���>�_�LK9h�E�����0߽W'�W�B1�"r�0e�YD�i���}_?X�s�f��"���7�q<8F�b����b�a��&������hC�A����3y��ϐ9/�W��]�zZ�<�� ���E�)���Zq�\ݏ�wal��]�y_����U��v����۾��Wi9C��Y���J��ݔ�OG����^���u����'�{YL>=��x��7�v��m8��;���2�>I��ķ_�O���R�}�//!��|U�W�ݔ/�g�v����V~���r����TZ,�S�lR���o�/��*S~�@����d����8�y@<3a�c~��{�~�����L{z>��:�0�w���(�S��Cr�}B���7�W��d_]���O�7��5��L�8���+��R{������#��q�N�oa� ��$�pO��@��_� -!�����`-���d ����n�����*�:�U`�(���_�][*x���S���F��|z�!��M��ǟ��귐k��[P��Z�>�vx��C�3�7`^��ͦ��t������<����w�F����Z�n��}xP��4����{(C:O_�ޥ�J/�d8z\���s� �GD���+�+MT�ޏ�#WO��;�X�L*\��̧G�e��uo7=�Йca��g�zr��fZ�8E Ip,MG�͐wB?I��팤ތ��?��VbH�=�@숁�)q�r\�'�%�~\���������q_��M]w�<�ǹ���L���&5�ݛ�h�:�<Z��&�i+#YUy�C$m�M0Z�NS7i*֘D�j$-�`�*ɹ��)��ї�dդ�����6[�x$�;ǁ��M������~�����9�\�s`W]�����������~�VV�%�����������r���O���6�p�=������� uF݀��z��FB�҄\:H�e슱��h�U��Q���0�:����;�#�x�UE�O�+�6�~O�B��k�#`'�SԟR@P~wO�Q�+���'(_�~xu�ї����'�?�@���.�W��C��z��ǿ���1���w��H7|�^����L��%n�z&�M����fw�/(����#�����;+VXv:o�V�k�Y5��sq�Nn%TN��-D.]:a,ZR0��N����\�EI��ˉ,�F�L�8�Q�j�e�?��1�Wi� ?��/��H7�!y��V�)I�{e�mj ��))���! p���l�ĩ��¿/}�߰���?�jJL�ǐ�[�="��:�t��:����`��p��7��h��D,�n���n�eYa��2bZ���o�.��GH=�a���D����Lm~��xU~g����?�l2�N�k���� -$ -����ae�<�i�,9Rҩ���I�x��2m�|�}�?)��|/?��>SQ0��N�c�Y��w �?�?�G��S��"��3�$������Ā&�H����h�>Q~���$t�v!�F�<��p�:�盱�^�E���Le�YVTj��Ni�����"�͇�iӭ�^���J֙^�:�QzJ�t?,<tܤ�A��'�Jl�+��:�����t�+Ni����_�b+x+0�.���֒f�ý�)�Y�^�m�����N���J�Z+唠��.ƚ^�5l��|��_ �5�U�*gI����WI*T��ڸSz -�g�SR��[����2]=o��3y�%������W�2�Q+n9� -l����ӶH�t.<H��EN�_�9-e���o#��V� p��k[��Fhg��Q��`h2@�F�"��k1N-�c�� -.<���c>�*x����)pm�h��i��yڕ����ˋ�s�[���(���x�<�ylO���=�]�ˢ�:�]�n�;�<�������l�O��r2���S?J~���S�?>����pr$���9��k�kGj���n�7�V��[�K�(m�������4��]�Gy#�������xy�k{���� -xY�������I��{�}�=���nq��3��EѢ�"��M,cG��]�n��8�-�nɃt9��-�6]��M� -�c�B��I�z�~��T�/�0���Y�����`,l��?3��a:>f��|�� -lHg9�,�t�C�9��B\X@�j�A� -j�A�)�Fu-�6m��&m��1e�AZ�K�`�"b3�8���V]��س`�u8�η29�!k�g dvAfjqfTY� �@���Ё:��Q��g�r��m�w��n8q;>�*�v�tڑ�jp����Fm��>�k�n� m�����k֖����.ց_;,ۄ�M����8��{U>P!r��C��H%�J�����5wj���oj��ސq!d�>d� -�v7 �zT�����a�P��6���$ ���*h� -��ƋAc[�X4��{�*T���f)��5ϴ�����㝀�f�x.`|+`4�N���i�6�x���� -Qo̪7^eXz��O/c�^b�i�E�{��[drd�L& �2�uH�L> -���m"�a>ڃ��`e��Xi�4���[�bi��L���"Gǥ�\��Y��25�L�C>U��I1����Oϐ� -K�'5l4'����_��B�t�%�U�%i"9�[��.i�!�.�Ni -�s2��C��A~)S� 2��N":�3�F�c2Y��GdREh��(�U&B��w!��)��{��bw�1u�ߕ)������ud��|�L�%�SIt��D��e�G��Ŗfnqi�@�(��Wdjd��`��bف�[41�\�|^�a�����NB��Bf�� -H�ꉤ*'F� q�T�4��_��:����XBjh�>1����9� -).ڹb*��d�8��O|���x+��5O��x����S�h*(�6�aW����w5E.�+��lуĺS���)��t�bw$�(zw��Ϙ��������p~J��@?67�_��M]g�|�����m'�#N�+vBn ��P���a`9B��b��D�i�LL*�N�PD�6m��u��V]3l�tDc�4�h����X6e��i0u�c߹�H+���ٱ�w�=���q�w�w_ -�sM�V�%/�&j\/�v�X��\'��Fѐ�8g��q�p÷]C!E�� -�]!ņ�1Ţ�a��c�]}�2"��t�l��͡��G� zgﻞo�C�6��X_���O�3BV8 D�ީ��G�"T��$D��EQ-�D*��,�(�/���Bmb�ZŨJ�(�HXnBA�dɗs ���ۥDQXߟ�ya�WS�7Ґ��!��;�d�W;Cy���%A�v��"��"���yKoj�4���dm����4�NG�K���{ڠ�Y������w���5�|�פ������/�cs�$kҩ9�c��lFci�u)0�'F��A$a���/���ñB8\= yN*�z��.A���.)��KP(�a�iP6�c -��`�@W:`�BK�@��ɮ/�gJ��.l�C����$�H�z�H��2�&�l���T|���G��/M���g�nw��4c��\`({d���#�i�H,�szR�`���+�T�@���Gb�{䞸o8���?�1�%Y���8���α�:����g�'��ɚ`�&��~�_������TA$�t�`���Z -Fːӓ�ZM/�������8o�|@�R:��E�z��մ�i'caH3���,��.��|��2��%9{�D��Xr�),���ɒ��%FN�+|䰗S -"���2��ϑ��"I%,��zS�d2n?sb2?��o)=I$�$P��D���ߪ$�Z�5��䟓��ܼ��/`]T2�y���.b����/���|r!��؇r�MM�M\��LTP��ߔ49ņ%P�U��ǜ4)1���|��(� -�Ҹ2O�U��s���d�9�L)�N>ݿx��Ɋ���"�� -��B��r«�qD#��q�j����NR~8H��I�jw��Qwr��D�oZA�c���1���9NV����̓ω[5����U���F�e�g�2��|j٭Ө���Z��`�i���2e�.���e0wv����P[[��.�� -j�7jm�X++��r'AP�j����:������-?0���y0=z>��C�A���4��V�:��!U<8TLX�i���-��b<!=�:Gw��oجC�����h��٭�rE(����e�̡��f�d�LU��(TRH�p6�V��dzʵ��G�O�mr -�;�UPL�9��1���F՝8��r�� [�;���,�b����Z�Y�˟��4�:�I�g}��ɏ+�`��(s�]j�V�`wV�+���e�_k�n�n�밙U�-�"���D� -�YjFlC���*����&����R/C�ԃ^.�l�;���Dz9���M�6�\[��e�x�"^�ȸ&�fK#P�$�ٝk��C��� ����&��m�B�2���������<Tm4�T]����Z����t�N���VX��a��;휚*�� -�V�����Y�T�۲P�#�j����e�݊= ���4l�sd&�B0P|�u�����g��&�̶��l�Y�����v�f�w�[�o�4z�pp!7}{�ڧ*M��!9�UƎ�G�����������&�����������p�����WX���bv�vw��+�ah��j#C0!"�{{�&�0ef#|�_\Vx?d�E*q�J�l0����~��&�a�q�x�ș0�v��0��/����J\/aTg2�I�j�Ev���xyK��p�+��`�'l�H4�����{־�k����=U���n����'����������mw��h��Ѣj�7���)����t��F��w�7��ZMQ'�V�.��ǖm���ڊ��m��U,r�7<�0 �Nx�?���X -w���j��.8jnA -�%�3�'������D��Y/���Ue��ÈDߩ�?tB���~E��O��N��^�6G��QfK'`͘;-��h�;�H�� K�U����A���+���z����m��ph���G���୵�Mh�r��[�������_�[�i��,ރ�������U��C�#**�ixQ�#*Q��j�0(�T��Q�� -+x�k�I։��:=�����2\X�!پMQQ�ʥ��*#aO��j`�8��}��w�ž�w�K���$g_�'q���� � Yc]�� -ejJY"��P@�g���R�M*Tt-B�4&��vݤ�+��TK���n,f�g��Y~���lٺ�y��}��2�6�b�0��tH7ws�f�:�ۅ4���AVȊ:������v��S.�ŵ��On���� s�菑�w�Ew� �����@�:~�ߥ��c�/�y�g�s~��'�Na�DX���=�WDECh���U�H� ��a"-�!A�u�'`#˅X���,`��H<���B�uN3Q����y�D�f����t�%t��u��d�Ak���u��̢L�R������Z��T�!�8�fKE"ܝ�ѫ;ż�E�2.��QD��1�:�� -�a�)^�q;ut� ��w���`B��C3�(�"R�M�!Y�9Q[�f�� �&<3�I�$�(':�NlS��Տ�σ�Β��5;�Q% -�7��&ػo���=�Y���]�M����6M�������h* ��f��&b�A��'�/�A���0Μ�*u��r������la�|�<{�Ş�cp_f|��(5]�W�n����a��2㆑dUūi���4=c֓ᨙ�f¬7�� -���GC���x�B�U�~y9��f�V.ِ��4�FڲS�u.ѹ -=�-�6�x�ū.�@�p�{�)��f:�~�n)Ep��r��#�#4��p��,j�� ] -�i��,٤���Kj�p�i�$�::�������\m���ytaذ�vg��3Z_j,�������B���j;7QQʍO�-tH��2r�e��-6۳zq,�p�su���[/�/}t�!�>o���U'��t��/������Jn������?����ߑ�'˅�y폎�Xs4�5���-�J�X�\"����̜�Tu�j���>��E��y�BtL�it"�?��,l�#���ij�J�@�c(��K�G���c�}�w�kC�.j�?^��vV -��@���ěB�uoRHv��kZ D-`̭�@[E��rL�B$2��>Wݕ�)�-nWl"��Y��^X���b��6�א�߇��xi/�b�_bL���PfM�u�� -f3����P[ �x"R���J�H!/h��sF�M��W&S;��G���N�~<���S*��x�]�xu �������k���^�P��������X2u��e�d�����*��A]~ :� -����`�>�!��<�4��^/lD�Q��z�z��U��4����w8jsc1�H�9�A�J�'C��4���<�K:S�B��',ނV��L��C%EE�`2!P�J}5J�l�Z�ո���6 -� ��M��$I�/��$�bX��.�0m�2A3z�d0����lS���Tuj6�4��I{�,�-�C,D�$2/rũ �K/����4\�����r��~>˞^��wZ��4Uq#�gÜ����<uc��/���\��}���p�O������TbHA����h��%��B5��ff'�OB����W�w��)�q���B���1�sX�$'J -="�˳#��!f�!_��I�뮷�o��>@н>�u�B���4����VJ��^��*�*M�(�G� ��(�!Q"eZ���pkcp|�p{(��{h؍�}��A���8�&���� -[�n��^co���'�Wm��/ -J%R������7���+�F�j�Qi���C� -mo��*�^�\m�!oTV����-ߤ$ﮍ4{��.��hV��W�'N��\�]q�j�=��N����e� -���,����mf��Q���ĬEi�6K����'\��?���삝G�彃m��_�{M�����=�������h}�� |�@��@"_�]^&Eju�)7� 2���b�:��C.az��1����n:�w�g�w��L������Vƛ�*��Y���l�oJ*��W� F�Bx�R�zU14�C����a������u�C?�6���R8�iBW}�I��T�A���7B�ҁL��4��I;��N@#��B9�On&��^�TI@Q�T�^%W����t�K5��Q��ska� -f��<2�?��o��&����t=��椌�8�� -&��&vǖ�k��n�]����jc����9��v�{}��������cߐ�$vb�3��#���������i�ʖU�a�USUkʏ��V�N��#ma��뺵S�jR�?c�FŏU#q��k�d������{����4(�q�؏���h�ʂ=i;���a#�fmI���<�8�8�<���9�u�u�jz@��T�a0��{ƓW,��V엓�S��� -�ƌ��ʼ���J�dߵ��������1o@0���M�߫Ђ�����VԮU�=?�� �&�a�Wl9���).�g��ߏ��������q-���/�v��9��LC��J���t/.S���}���E��p`��؆��V�!J�eJĝR��x �Z: $�КT��|2;���ڳ0s��b$�rfL����T=�o�L¥p��$�ih^a�>B�ݪ*��(�4�Em������{b�^Y�l>T^���_Ǻ^�ޚ��ʵ��$�m��9�#���}p���O�U?;��ѡ������cտ�<s��܉O���3�X��ڃ����dp� -��E����)�4ξ��x���-�U+䯗�NI�*J�����k�b�x�h��"���8�_?��:f,���/Q�3�'d�'d��� -, -k�o�]�XPTEnD4uK`��L��äX(8����2���ta���;�����(�g���ֲ��&�ߏX�C,f'6�?Z��#u��ۘ�FB[���g� -�ޮ�D�R.ƏJ�f(gM������/Hǃ�M��1����6Z�\k� -3:^��ս�zm\�ē�gK���;����K�>�Nkd -�[��D%�S��$�+�H�_Q9?!�eb���{�5~�ZZp���u_u[�AC�I�7c1�{Aƣ�U�tȆ�O�����n������.�|�������"_>,<6�!0�; -�|aY��f�N�]�d -�W!�����L��J!�Ո��~ۃ=�ԅV�;>p�۪�zŤ���B;<o�7X7 ��W�&���\w��ӬK�z������O�}���r��3��_��a퉦��a؇����#�����;��f�64 �B�B�{J���4��� -��c�h�:�N'O'-��ܤ� ���$�[�&�YͦU�����b'qjFoAP���PGRi#=���q�p��,..�&B�,�-����@�/���A6� P���ަUH~��D�W#��Ol��&���H�����l��:F y��8g=\�Ǯ��8��-�z�E7�M�x���KhJ�O����-6��.���$�l��l�� J"͕��N����R�QLEMQ�%1��F�0�(H�!���Z#ƃ�G8/ -���|�WJ��D��7�Fq���G�����Z&Ļ�� -�ju��-�m����k[h#W�>j#m��� -~��T��/R�6 �~D��P�Cf�m��k�j�m���9�y]�����Z��1�GsV��<�k��j�-�Q�R;� -������;6���j�o͖��:��-�Te���V1��{�������Β��Dw��I˞g��=�����\�c�9������++�"�-R �Q�QHQt(TnB�@�X���)eVcF��cŘ���c1,��8 ���������;1y��[�C1�b߁��P�226L�����ڈƆ~�v�4�S�6}�:1��"ς�j -��717��a���+��3�@1,Ӄ�H��4)����iiZ��.�^�d��ִG d�v�����@�Ӡ�9+�\��4�α�'��\�����~�:��,]0\_BN_��*+w�3&Xb*+�.��?;����QG��cZD8 �}��O�A�dPbK�s��*yK��Ww����C��R51�K��m��.�o|O/M�[�ߛ�\��w� �9l�U2� -���{�vyQ�1�Fؑ���yn>�i�Sa^�Ź�#&|S8�l:��D��I��a�4*S���I��i�d�*Ln�AN�O9�h��&��n�n�~+��y��XN����0 7��!�u r@x�6�t4rT�a.�����g�ϗC�P���<��s���Ԉ�Gd�a��h�T���p �p�Ii�0F�����n��ڭۻM����Z�mԊ��8���`ʥ�R�(%v��i�����0 -�a�o�i�+hq��P� -����� d�D��|��E��+�*+���+�+4��TV�q�_��/�lt�-�`������g7n��h�$xs��t��"0����ד�r,T}a��x�f����.��&�3��������wy��|���؉}����)N���PJxI(�@���e�&������(Ю�n�,��UA�u��6$��EҺu�F��P���"���*����a�����O~���=������� �r~Yǎ�GV�X��;��n����A�t�t�_�PJ����h�/��'�4�(� �y6�`iH��a����G0 ���J��/�d;"�?ƍI_+�U�!XSQ�8]�ZaY�LVa��ZWuN�(VF���.�1?�߫GP$XF�DF�4�I��8�3�F���3��L��12�= �1��9YTk�p�K��u$ -pS|u:���:�YIA���`�c;-��@!#K�`�D���4��hp��bǷ��mH�u�W�/��\�c`�i|U�ٍY%V�l$z���с�?\�>���A�>��X}Ϝ�P�,��ʫ����3�e�+� -sb.�ɺ)}up{p���^����:��P����#8u��?z��]Xm���Z��eh@BUjTU�W�����j��.�r[!X�S��W�p�ZE����a�ɩI��jI�@��X�����ca7�t]�f4�i�tr� -ؠV:)��Gl�׳�6�X)p��[���os![iyt�2�6#ooER����p ����tT/�M�'t�#:&��W����d�` -�Xz�F��Z�ڗGe-�;���M~�I���dDT��hi.���� ͷ��ܿ~��Cf0�\ZX��$�ooǁ�o��v��b)��/a|-~�x�xf��O�=�v��C��"df�Ԣ�v�py��!5W�g8-�hl�RW$�.�k�VG�D��N��c����օ�F�L��4��x��F��.)$J"���zhr&�.��E5��0����2�m̶� s����Ң�ǡ:3����;P7ڄ��ȉa6�G�kz��V�S�ne(@�����a������_��` ol�$-�Y�f�{�p{����ۣ��.-\�^�VA�����_o�j���H}����O ��DC�������/<R��{���R��R���}�X30�ʢ/��V^�&W8וr���03��I�ѭk����WB]MCǮ~�c~�k����z����,��4�R�&������F0e��뼐V,.le�Ғb�]T)(pt�$�.�b�-� �k�pwrH$�L�Y��z�%\�T�pD7��XI|'��'x��$v���~�!�G1��O�.[���Ȗc��Dl+栓�0�P.$�,�B��H,�J']'�k�t�䦷$�-��|O~q�)��$W���>:�-��MVGR�7��BG��0_晀��ꕘ�����G�������"g�^��~?7��p��� -^���$G�F�K!ߑ�R��!/nP�{Q -���!L���8R�9�w�k����R����qw�Rf�3՛�yʙ�R$q2�v�Pl�>��ֲ��1��|8Z6#��(r������aO�ұ�� -��}!��ic�Y-�i��XFӷ�Um��k�'�>R�\��(��4d -[�h -<�d�����P��QmvNeŴ��U����1眰ܲ��fhۼ������1\8�LJ��/?<���O⇷fdi����y|���S�"ԥ���p�ᬊ�p(�}�;� -s?���@�Ü(���}�PMyB�$7�ǟ3�9�%Q 4A� F��9]�.U�G�.��R�QN')W�lr7d�����*� �y��8��Y%�&��Ј(�z�� -��&����+�>��9��t��,�6v�Mj�pZ! ��%M�1���^(��f�9�7E Bi�粜\E����/B��[�8϶���rI4ہ��/�86�dD����� -��M#wn;��ms��~&Tո�X��lh&'�J�������N��5b9����X6��l��kK�˼Hf��e�fg���I�D�ܹ��W�?'�f>K�3�������Y̭�~� -f��!4D��v�8~�8��������f��:�r��O����-������֯\�_��&�rS�o��a-��0�2�1k�4�7��4~c�Ѹf��^�5�L���R�j��P;�=�1�u���r{� �K5U�WDD -�1�Jo}o:�t�ͨ�fx���7���3���+��Nƛ^6��0�&.�����#��΄�0��t�4w����!���Y��a��ɚ���\c���8>wfw��ٝ����3��]ώ�Y�c�/v'&l0jB�f��J�x- -�2�!�6q*W��R� -�*�#Q!ui%J��ʪZ*P -������|��읕}��������H�4T"KP �������BE���b�UOI�VȂU�Z��kxYNjPb-� -�k��lm��|^��9W�-� ֦��SQ�s�L#7?7Ùj5�ŋ�;�v�����5�DkGW,��(�@Bj�tf܂G ��C@�TU.��3 K��[�6���4���?�U �A5���3 �CtM�g+��ŧ wX��R�f��zh�T[+�����7�P{Hoz.�eVu�_����!���D����������p�������卢����������wpe������$~��5����/-.IE�Ε�KzL�Ȣ�:�]i'B\�D|ؓCS�K=���lB���=ʲ\C� 8�-�!{״�wt/��Ld]�G�I��|]��n7���0�y�:� -�� -r:x�p�ښ�&k���@�É27��8nċ!��",��*WU�l����s������`��Pn��U�G$��*�3�H�<G&.I�d52a�p�E'�St&�".A v!�)�������u�1K�o?m=e�j��v�c�1�8&�oO��� yp�q��̂2kYܷ���E�N����Й�=7���HڜJ:D;���V�,�V@6�����G�σ���Y~������GO��Rݫ�����`V��3��Z)���c�h��0MN����O��iG�d������Mq�c�sT����O���W�k�i�ג�@A�cu��H�C��aH�@e�����i�%�, -����.�G�Eh]�7"��ؘ#c���s8^iR�� -�-n�Nw7$]�3�-'�t�Ό�s�������P��4`'���,�;7�>�T|ݔ.V�w���w�=���=�C!���^XU\Ӳ����(��g�����k_-��m?=��[Y��u�J/�"�|�GO}������j����� dH�;��IQ�N�^���N�"l�~ծb@���o�á݉��_Ev\7xA�'��q�n�!�C���դ�K���kP���:����A���(�s.��c?�U��w -)O��fM� vx����=���|MS2�D��LSVΒ�[J�2Y"�E�$�(�**Ƞ$gP���F|#ɑ���J��Ǽ;Cc�yo�H�X��xp��T�l�f�>�m��X�dЭ�t��t��t�o�dLxX�v�|=�[�v���g)/R�������y~��K�_�����ۻL����a��T-jڸ�����o�qKb�GJ�~9�`���c��#���O>�����YTqԮo��k�U����k�n�Mr�&� oxn���;�;��S�p9��/}m��ڑ�E�%RG��] 8r�� �; -.����W�� �V�P��h�g�N!�����6@v�z8�_'0A8ـ=������{ډ��,'�$$-ɸ�"0l��3��5c��U�@9��χ�Vq����`���zvn����nԌ -�l�x��$��$x� -`1�"��GU'��&����z!6���:�������������� -�g���2%RZ�=����-)8�r�g�Q�'?���m�4����U������"�'�I�&l"��,9�@H�p.��B�W8�I���$J�40��(u�Hk�@����ȱS�C�2���]�R�#_[!�xAN��'d�w�(� ��K�1u����!o�\^��w_���ʭZ��3$8���cN0�M03dl��C�Ƅ�jA%���J\C�"��!�k��-���fj`}�ݟ�'���=l��Ϝ7D�9q -��Ḹb�(�"̑%f�������&�;�)St h������ߗ��G���^k�2m�\�1K�z�w��KT:���~������/w�+K��� -8�B��][!M��ӕ������G��%��-7Ko9��(b��qQ���a�� -����Nw���V;`+;d�C�߱�M8N�O/o��ҕ�K�9�겥�%٥2�C�@��togI�d��.��x�PB��K^^+MQ=��cD���q�iTIJW[4j���Tp˸j��4�}j�2����x��㻦�F�uu��V~�F�QцT�n���^��-��V� -Y�Kp�!g<�ˉ�����m�,�����Ͽb�{g�?b�.���v�v��7���%�J���%����ֱ�Y�Ӡ-l&�i�P�&��j��.�A31 �&5Bb� -�HD'�Mhk2��u�c�~��{m?�<���,9�v��*�V�¢�ZIJS�f�}� -�9;��r��܉�|�1�[ɑ���ǜ� o�*�y��:d���Y?ubd�/�f3�+�fX�{�1��s�dp�m�G�Q`kb�m�IkLe{�=|��b��q�9����ռ��G��Y���:��`�����O���.�����p���_[�9r��'����b}߮ɉ��d���lj�ɗ��$ƿ����L������Y�@ -�3��K�J�-��s#���/~�wCg�^8���F���%����ᘤ�)�"Բjy�{ - ݾ�(��T��%d��R .�S�B��Gʩ~�ќ _\�8FAC -,�wlIK��kC��z�PSK�m���1Ԝ��8܊��-.-� -�^�����P�NժA{d��w��a�삃b �t3�f�Q��d�b1�;�7��q��T�r����.�d��c�[q�qr;q�+pk ���g]�4_�v;����镴�-5ʻ,n!'���/�$SV:�o"��<Мz�n7E UР1���b0�U��ʐ�/;�$�:'��L_5ſ#�Z -�4��a?���C�V�R���������Ĭ !+�7!��H\?��ě1��d�5�_87������Ξ�,��������I�!��~zx�������\��J����`�<�囉in�:��W��;��u�cȇ�;���"UQB2J��iB��� Q���&z�P������JV�uY���pkB�%��� ��C=�c;����_�W4b���]}�4:t��`�[�;_�#x>�y�y�V&�*G�eQi�V��<L��UEH�/����{��E������ve��s��6��Z���������ö==�fax�5�� -{����>�5�?Vn1�E� -�ා~�5�7���P ��5��m%�P/�-ΖNO���P�PZ,.��{W{}��b��J�Dr�Zb�k@���}_K�s"\�*x�9�m��C(N��bOƏ�O���=�%���i��ϑ����r&;'��u�\5 2�I���[����iʽv�ctm��:��Yg�[��Z����\���W_����r�NKe��{j�Z��zS���է���v�0�4I ^�����T�y�:�U���[�#s3{s�|����uI���>Y'{�j�kh�C��ς������m��e�&�E>�;��v_gB�4��8��?�?+��7�=����'�W���7�?h���io�3��@ -Z(�NQ��dBQUo��zÉ����I@ -�hHmS -U��.C-���:|Z��F�@n��x$��^�_I&� �]TQy=B`NH��<�4�Q���m�w��*��qh��!/~۳�O6�^�]����q�X�ÉI1�&I"RY�vue�3��n����Jv5ے�u_��B�x�q`H�V����k�k�ͿӍq�_P,}�Ѝ����ޱ�/�����Yg�:���Pc�������+��E>�}� i�~� �T� �\�pS�x�8\m�L���4�������7f���[ɎdJfh+��kw���ڮx�p����=7���7�de4����\��6��̀��If�vTƋ2�H@TuR�R�`�� -��� -�����p�������c��k�3��e��U�Y[[��yF>�#��TyA^��rU����U�)��K����|�����"�1�vW�`��d5�K����'P��~� ��� g�]Gɸ��%X�U۫��bUШ��6*��r�PCK䏯hyC���i5C��h�A]��X3�����nⲡ�����ꨮ��|ʅ[�J�l�2����ШP̤CA� -<�A���Yhlalqly�e> ��HĮ��E�qĥ��؍�Î��H�VJ�*��T���_���;��|��o!���I�kO��sR���Vkd��X[�9�aX�9j��cK�`#� -���Gx��Zټk�f20⬰s��N�Y.0�d�����Rݥx��w -��Dg�YP��J�����zoU��%���=���B�+��v�=n%�T=�4�H�]������Ï��ѱ�1"��V�=���9�p�{&|�cΝdB�h�@ha=ѩ�)�"cR�$wt��U����0�- -�r��Y��\ˏE_�X�>O��ˎ�@��迄���f��:������9����Iۗ�rI�N�Nm�������P�v�[7ue����ڣ��B�hWX�*�F���z�v�@;�ZG�g'�0�! -[�aU%���}[ِ��}l��k���|�σ�\��q�+���<��K,������w�M~or��e�|$-JVƺ���vz�2/U�}�J~S����ݾn���&�?�yl� -,0ӻЉC�s�F'�;��*�j�E'ZN!��wB�5"{i�Ȃ��CP��\}�"7�Š2Υ���d��u������)_��m��FJ�"q�Ԩ��s�k|�{��ʻ�mWk�07a�,f��miZ.���h(y��g��hfn!4�#QG(�bB���q c���K(+�)�Fp �[��-9���5K�6$�fp 3��\�����W���t�܄��.{�M,lR����v٣�G���@��^�똦�~�b,���������p��`�����P�pvÕ���)G�����>���m�?��Y������c��.�7�ٛ���c��?��0*�Y�ۢ@Y�l���霽��Ȗ��J��Y��J�3��K����G�t�������=����l�{`���4��9vs��2�a�ʡ�N�2�H�#5"�be�� -r�O�7Ȩ�1,��#J�h�N̨k�̍���u -}���-j4�9�=>8�3��*Ң��!Ҹ`_bakl_ -Gm.��=�hև�a�t���==!,�H7 T[۔��m"��QN�i]U� -�H��n�a�to�7��c��h¿�(��KT��1Q,5��*�;$+To@6)Oc,�d�J�� ��>4�6��p�ɴ�-��<�'M_VC-�i��1�p�0,D���CV' T-O�mQ�3�UV� �8����C�^�����\�Y�r�ʊ�=���k�y�[gPߥ+�����<8=:�̯�A�Z�8����#��*�')V�<C�TLeV�1� -f���b��0_0�k�夵����011��r���Sb͍/6s����:U����b��֜�d�Y��DK"�Fհ�/�Áp�:����>R,a�&��j�0��{AVq9L��'L�ך�Z�\k��ހ�P�v'+\�Q�K�f�����-#c�z�h"C���*���W7)���6�U�1jkxi%ZJ�h���Z�f�Z�lYߔ��NJ?H�RN�O~*�ͿPxI�eA\G�v��ҡ@{V�Z��8��$�9fo<�@=�sru��jB߮�ؼc��;w���[� -��w�f���3��6� ]�s�=�?�yovS������{���sG���ϩU'pL@�Ad`2y��Dqc����* �BeĂ*�`Z沚x=_0�l�?����~A��<SU*#ۗb�r���6�NSU7�^*`R�'��U�Y}�JW�>�(����5����v�_0Y���-b�D�!��7,�K$�m/�^L�V j�!#��gi�d0�����Q��]e��~e�+�%/ԥf��5��u��Pe��C-�Y�x|���T�G?���6pe ���e����U/�^*������P"�C+��c��)m�1w4�_YS߸�����^}t�P�鼐����m�q��з�>3b�V�y��*<}�O�<�r�o�[֑����_��~��{ݞε�w��d=NQ�/Aԋ�tB���pRXp��0ؿͥU��H��j��f�2/�R�-X�$wܢ�d$f�J��jFP�"��=�L�Ϩ -P��j�(ZA-��h�A�QVC��j�{0ZPEFɄ�i*�*���h����"�.�z��"/�2-����Zy��Ml:K,$r���G�<��B����4�9�(���d�-,�1���I��CYțf���&E���L<.c=&��i,�~b��� 6ɤ��,bÕ��� -����������X7�������ruxDH'}��#��dOo*�)���K�[�A��s7W� -�)JB��g��~�xG���/�- -ziXXY:�=�=U8��D��^Ը@8 ��Qn<�8���A�:M�a�@'6���68��i���VBM�N��n��r<�R��AGK���@�Ŋ�!r�z;b�F;E*'�������Y>�����(��xU�m���e�e��[�j�:p�{�O��S��(,k@_r��X@�����Y`#"2�t�\#�:��ң�)���K���؏�ý1�������;�>w�7�� -��=��m����N����I"�/_�7���%*��q��F?HQ������\Xr-x`{܉#�{� -E��P�1��W@Zv/����6%���j�m�:�߹/;�}�u��#}�$v��y�<HBȋ�X3�m(���@�1mA�[(�����G��J�M�B�itB#�C��G�h�%�j�V;���%��[�m�4�����{�>�������{�2R"Sj�HdJ$�p-�6zS�.�ϑ:���鋅���d��J��<S�F�S����薰��: -�~�Yw��ƣ@��+��uuD�n1>�Q�KhV�A -���Ֆ4ꎫ���B�;k�:�$�~f}�.�R骔Cu/�6��m}����Ӄ}>{��������������O��,�d�ȑe��m�k6n�VD�0%����S\<�|F|���+�<����9��0C��������=%㢅a'����-��^�8����1��<�p(�|�~OrE(�P��i�U<^�9������^��1��1��.t�g;�r�v��V����ľ�֣{c���4��a�-d�����ܹT]}i젽��/������ܘ���D�F�����)��؛���X��%�s"'���,j<mZcJ�>k̺�ʥ�����O���Lsf&���R���xP��p�Ȃ�`�ƇÒP�aU��a^�K=�%�R�B�1#'S*��p�6��6�*6��5��5�j7�*6�*�k�� ��T��jT j��4C�i�b��F���0�Y3�m3L�4�^ј��Kc4G�I�1�����b��m������t���|�)��8%N��� B�p�zh���ۣ!bVWr��u��dw�1\?{��X�(D�Fg��ܢw٫�����G�U-'���VQ�J�VN{e֡ѕ{�쥲*��MKU�;B�u�E@A�5���ɑ�����A��1�X����uF���T�mM*]x�Hu�F\��$�&�M�>L� -�> �dg�5�p<�M����J�C�dp�$�%�E� �A��Y6���}n�'K"���L&A����G�@���F%Vʊ7H��K��!�����ҙ]lI�3�Rj�&�d�A��:�r�J^�u0�'�+/㉋ؘߍ�.��Η�걚�Q�N���8����xH~�__��r�g�<U�����e�ԋ:U:Y�N����B+�vf.8�z��,R��yB=&��� -*���/x�~��Q:�#�������Ҥ���5����p�[��]jds��$�Xs���D��#�=��|/;�<'���$[��X��~Yq.爃����;�����m�m����}��+>�Z�v�B��zm[�-�-�����W�Ֆ�Y�`5��p�<� �آ1gU��^����z�6[9��@`��ʄ�#ڬ`rV%@�&�y�v#��*i7T�#/x��`r&y3��:��N%�n��L8'ҙq�55��TUO[�Ve�i�����]���C��ut��+�{~߳H���I��iF� m�������A9��|�6��6s����!�4�� -���!̅)y� �����t֓[���3;�%��t�Ҟ����[�n�K5�b6K���(�ڋ�"j�PytW��}mY����_ͭ�ض����R;E�"G���7�ь"L�Ɇ��N� !��;�����P���t��8I�������?w�}���}�ϣ �e���9�����'��p{�� <��an(�X&l�R5�|����_8�:Q�{��8�o3@�Q�J�i�Уa|_� :�ϣ�K(�j�Կ�0�� �kl� -@k@�+�.�}��ֵ��Ћ��/��0�S�!܃\��3w�����(��"�(��"�(��"�(��"��0@���"^��X�{lI��)'��A�D��kb��:H4$�@SsKk��xϊ�����GFW�Y��3�?{��������y�� -��v��K ��������`haǃP��;a���;������̸��Wؿ;r��a��<��1C� -��V#e�+�+��ʰ�a�x�I�����ah�7��38�_�Ў������ܱ�ڮ��7}��n��-�.��:xv�8�a���F���x����� ����"�`Ͽ��� �Ӽ�� -o�qgeH �`z�����91sh�ޝ63e��b�(�X ���I3}�Us��`�y�t�;��{@j{��1�w��nS/m/���|<����܄]ʻ���&R� -endstream -endobj -1551 0 obj -<< /Type /XObject /Subtype /Image /Width 357 /Height 132 /BitsPerComponent 8 -/ColorSpace 1542 0 R /Length 15894 /Filter /FlateDecode >> -stream -H��W{\�i�S�V�駐����P�dG#��L�.C.�It�HD��G���V.1�Xcw�N�Xsa�cvf���?����9����K��������y��y���>�7BH+Gprn�!|����͵�{[�j/x�N�{y��z9w�(;�t�.]���?�[ 1���������y��CQC�>�}Q�D��#��G���}" S>�����`益��!�C{㊆nj��)���s�rsu�K�]<��g,Jv���IU�G]ݜ'0���D�$� -�&M��3�p�<�^��Ӧ�w�$kg��!)�.3���Y�!uN߹|%�������LY�<��D}Pi��� �x����������i8]��1�q����~�l���Z� -R[)tg�� -�\M�@�b֬���Hʥ���N9*�~�������#��� -o0�u|���Ȥ�B��ٛ��1��g��$�[��b��_�[�6�$n&��d�W���B��\䭝�?���!��g��.���R�4�-| -�������(�m�7jAxȞ���z(b���P���֮']I{q���)Q���H(n�t~?�Tr`l�K*@�^�t�v>�vB�S�(���;}ȦW~d'T��9�U�dg`c@ֱL�j��P���no��_H��@� -�I�?��^��>]B�r8��Z��1���z�KQ�I&����+ �z�#�K6q���S��������CS.r��%#���CǢ�}��80=�RCY8��� -c�2����}֥c1$�-�#7@Ze��C��]пݵ�й�����ЅQ-����r��͖��8�˄��Wqr��r��F;�k=P�z��[Y< -q7���w�Y�L(�7��\����8y��r͐�7����Y�E1p<���3��-�Q7nlV�l -؈f��U:�~@'�շ{����¹�^������!�� �[hc?�i�(�;U� �7�@$�,��?����FA��Y�+�;/�����bXs��Ođ��b ������*֡�! s�ch�*@N����O8A�KS� -2�`�_���{��"�>��)��m/!����K�D�-n������b���C�����U� ӱ�>�J�^9�10��S�Y���{�t0��7N*)����YD9�x��FZ.�X��H7H�ϗb�&�ٕ�j�6����r��&���r>�|�!�0F�jS����&۶W��m���he����2Fɭ���p�cVJTG:��r�]�+r�kg���%ˑ��"���C��^��#d���L��U �:y~���na[�d���Qk�q�����M�E�rh�y�����ֲ�1�-�F�C�Xm�A�����%� ��@��� c���O��հ�?�(��~��c�Xȋd�rCSC�G1/�p�OTB����-1/�LD�"-��UNV�O��cG�>�}�=|$��v�~�NxQ"��P|���� -)��@��QH�x.G�����!�H�mćb���O)�j'H��t�a����aw�����0�a�w��� zh4𩊕�j���D"�Ě��dl8Ȅ����8|R -�'I��F2�bM���:�SV9����ǥ��"RyHc$o[Р�`�6y=�k�M[b���ux��6#;ӗUHBV}T4���О -_��~ω�"?f� � �aC��xfh嚌b��B��ͩ9��p�ם���/���ϟ�K�X{�!W��� �ߙ'�{d�u4�����X����xt�r����&jb.��!j>��袇J���ò���=C;VD�(��ތJ�?0\�� i[&�y�hN�ɗ�? -��u,���3�VOo������(HT�|$��}e.6w���r��Dz7�]i�)�u8J� -��Ɋ7mw.�lC{u�O�4�������%�����Iv��� -�9�ɤZ�`�x���-9��q��An����L@&k����w��� �T���9ߜ$��<�q:y��B��ms宐�}n��QS����p-�t������[�y�w[��`:���Ȯ��V|ڜpD��L�&����r�/^GK��� -=���H�s�N��9��� -�ך��{�����^ju�ɑ̔X���c�t��9�?5ڸK�"�����$��>UGܚ��/���֓2����L�rl�?�0�J�/��S�K�~�#����T� ���)����R��HƵ$If&4YL3��)�DV3<�V�A�X��ع��U:�X�Q���ss� -�g�'���m+ -�e���ϔ���L���bb�����f�k���-)~��ڴk�!�")�� Ѻn3=���K�T/Yb�&�]��ZfC-��4hüJ�<�PM;�Y����P�Է�:N�˓�{~�Ѣ�i�%S�Y��x.I�c�Vͣ[�b${�Z�%��� -��7)���� ����$d�f���04q�"Ȓ���M��j��t?J#��e,�]���Zd�*�t�Akf�JT+�XFŚ�X����ܼ�f��%9�TJ� -�f�6嚦�5��1m��VnT!c<�y�7����"Ѳ3��k�%��@J�X�o;�쨞��I�*�\�Q�\��墤�7�V��H -����rk���aI�y�Ee���& 5�%������jg�{����|#v5m;�P��7�#�b�����g��<l�H���ag����xf���im�/�UՑ�G��8�� -���8Ɋ$��QAa�z��QF�%�@��3Qt4���5� -�(�a�x�*"o�w���73$���ꮪ��կ���m+ݯ`��(�<P����.F��d����XWp3��K�&��=B�=A�BTo�v.x�;��$̛�.�A)�mb���>xHhw,��JtP��:N�]B�I�u�~��|�����$�#����-qo�O\-�:�yW���HM:&@h0Q!Q~�cݣ)���� J��#S�(�P^��V�$&%�n�5����Ν�x -D0��' -6@��� Q�L�Oh-=C����$�r���ϣ.�sF�J!�x�2'?DmB�A�|�X+&5�W@ ��!?��M��c��S �b0D -�0 -}#|�� Z�t�a��bTR��e�T�3�17�^p��$*;�TV���xN3�ƀ1�^pɟ)��J�V�eʴ0=�qW#��":kފ$C���e�D���(�3J�`7"x�X��� �����\� 9�'L��'�Q�n�P��$p��]F��dhۆ҉��v��~�t+�u�s+��'Q-�I -I�<������3D�<H1|n,��!��5�����窋}�7�<>�@f9=�;�I��Bt��7��h�yX��p��p���$x#��%������:I�S?���Vb�6S�$���!��(�7�6b���ѢE1��:�L�'�6�����J�HP -�T�J�9���A=4��`!�)��P��E�������K8.���e� >��U��#�l���c��Q����������! -Ɛ5\���i�/{WNV:X�Z��_o(�icv�z�J$���-���$��]F����:oh��Hwfp(�Ы{��H�v;^q��a�wL��P���K9�<Jm�����F����K^�uê�/�����p;巏�f�(��/ ��7�[���!BDf�6����~�=2����C�e���ݐ��d-���.�>7�yZ����r�� -� �2�mZ��pq�g����%�)p�k(�l�nq�����:��r�@�<�MS�l�����'�J`$�X���t�B��1�e-��n͊���ZƁ��_��qKgKUbʼn������?�[��YXS�#6k�i���"�@ZUh�P���$�'����装�F��Y��K4$�̬H�����Fz�}����M��K� �B`cZ��a߄K$U���2����GZs�}�ܿϸ/��K_w��cZ4�.PQ�������>�J�!$a)�����Xv���,��x���eG�RpC���ÚbĹ~w�_��]}�M6��d8�H}\4A&,��e�-�����P�6�q�C�i@G}%�~�s����RT%Ї��d6{�\�S"u�|���,n�u~������_���]w�S���DT�˾��f�B�?��TJR_�{��B -,���͋.F�\tٯ�`��]�Q������I�)j/To:ӎ�@�69O�P���u�t���%�?'������I�<�k��Sm���Ɖ�B�AjtP�X�E�Q��(�J�÷�j�q�&�5��>� �����QP����$�ص�CA�KD�'/ע��sӕ�υv�l��<U��sgY�&g��iM���w?�C"��[陯!��t��Q@�cUa/���yd<��:�?F�<5��{�MJ��g�zz�n�5}�|9+�0�x!����oFSo�V���skc��]u�\0�)�O�,���j'kk�ֿ�eg\�����d�>χfPD�^Q�Z�G�#�^ ?1�� -h\ّ�=j�h���oD���z9WߞS�\�B~�, *�M�Q�UP?� -WMJp*�ꗙ��ܹ�g�n�C�o1��%:?���_�V����?;��\ �-��mE):��G�J������.���0,��+���)�5-ԗ��;�����}8�m���U���+(�?�3��U�vF -��Fʧ�C�85�y7%�w7��hJ��A�|�CT�fC�����}xiFS�8��N�Nx,�%U�k��{c���ӛO�.𦝱���8U,�o^y,RD{�U�E�c����1b_��y��[1y�9OX4���$ĸ�n]2\�*iG��.�>��{��P���Of��(\kd@��Y���N��9O.F��1+�������"?y�~�l���p�w.�z�g�\��xq��(X�)>��qy���S7�t�D��~avsv�8оp���{����1�?�$gl��$?�L�57�*������D^�7��� [��h���dޣT3:������ �����Z$���!&�c��'h� -WQR����4�عHK��k��d�d�u�~�4��������"^��K]/T -����veѴl{F#/�I����BxGb���b��F���?��E}�S^Mb�u���S��PI��o���ӵ��p�������\-B�����s�W�pm�jҬm�~\�K� -As -\Jb���E:B̞A4S}w���=jt�9>�ٚըһOo��ހ3u��r��uGai�1n���/�o�m�z.P%�8�8�]�?��U1���D�=>2�C�Ov�ϝ��؍���e����`-���²iJ���v��tT�pb���vbe����܆ښ~ -�V�n���u�<� -�-�D -�5��Q�C$`ٙ��˪f�_(}Kj��E�A���n���C;�"�ߏ�j��Od��Rf����)k�oxU��w�a[�8K�������M���a*�ܮfQ����ueh[���0���'�T�0]c;T#�E��՜�jRU�t��z՚VStʺCj&�Su$�� -����iV�.9���u&�Ѹ&�ͺ�r�d���GC�8q0~쑊tqL�;hԒ%m�:(�ڑ�~�.h��v -�=���s��K}�Ow��5ue�F��ʢ�V���S�`���RZAP jQT v� �dk�l� RIX8$�4@U��\�����R�E�"e�[�������s�=���=�w��Y���נ8�n�`����o�6��7����qЁQ�yHO��ݦ�=��8��_u~���{�$m����GFR�yBIsv�2l���@��6��<��;ƃ���w�I+��u�`��8<R�B��(�P{6�H[k_K�#�ѡ���*���e5-`Ҽoe�3�l�oge�(R\+b۴jh�z�o���l�j���^��Gw�ؐ��3�z�g�q8��Sjz��`1_��Ie�F؝X��@츋�q�g�d�Ȧ�%X\�'��5Cz�����$�q���ٝˉq����[s�ʴ�� -Ʈv1���t�hHZ�Q7����.�7��͕�9>)��D:�� -�q��I �&�L')��O�%�u�q[VJ�n���l~b������9���u�,{�o��-�N�`{J -��%�q�D2(�ڇ��Gzu���x -�|�o����^����v��T���v�C -c�K�D&m��"��{���=�ITp��� -�zE_�;����|H�Wt�����1�tV�w/C��� -�1�_s8����,���0CD��n��`��Z.������;�~� Bcyiʑ��ϴF0�˾o<�0���*<�7Z����h�A���pbf����y�����V -���l̈Tnr�ㅆ��<����A����zB�1���l���j�k7Vyk��.��-b-�*�:g�y��A��F�X��~����r7�C�&��l����g�b((�c\�A�z�K����;HPP��E�1�*ba~q?�%`�����%\��W��oG��ڏ =)`�ԇ�dD���Ў�~1��cO�}rs21��=Q�J�5'�@UI�E�8 -�cS�+�$U�ɞ�2�2͞�)� oqk��AB�{�nBC�~r�Q����2%KRӏ��}�|QX�~Ԭ�[�9�F����\d��xF���[nKꇹ���گ)(�2���Sދ}�2�Q�}�ay�i� -�'Ф����"S ��ba+��¸�uKO�.����h�F�^�@��O�Nv���Q�<浧���s�n�T ���M�\��?��<T}A��oc4����t�=^d0�-���Ȫ\L嗄��@iK�'W�pO�-��E�D����!��:d��Q�2���T�e�����t��~돭�h�u�u�^��i�6��cI89�^���N�p��0��C39�t��&IVZ_��t�̹� ]w�� $P��C��.T�mm�%J�ś�R�D2��'��hJ���q��� -�=�j'�6}} -�1q������� -�j�v���b�dQά�������Es~�)����b�+u�Ħ���B��-�A�T�z���F���}FyJŲ�� <�2����)��}}�u/ ��_��ϒA1"-Yٔ��MK(��a��(o ���k��c�����SQO̦$DN�y�P���\���@�X�y������Z��s�Rk2�������no�a��/��C��님���K,�y���Lt~��9���.�<R.��^�Ҷ� �x`ް19l3ƭ� �+:��K����`5���Z,HoLA���Cٓ�">�����A-M,:�s*����¦�V��žˢW�?-k�D^��0рԎm�6��ʃ7���p -�W�{�e�ȹ-�-uEu&�pBF� -,.�XD>��@�K'N�Y55�C������$�Ǵ����ߒ&��+����.�gK��a:&�#�;��ض=��" N�4{���!/m��\G�����m�����s�H�)4ȥ��C�����s��u2�<�.�]+,��ל�x/{Y� ���$m���'�y�DO�D^�}�t� -C�bR�,��h����� �x�o�͘� -<GwOѲZ�������|ɶ��NY��G��D�B��8# @�����/(�Ht�G3L�ޞ�)����N��� -f�YK�5j"�S��u�6bN�ǗOY�D.��gLj�� -��Vwc(�T]w��iE�P�9\�͠�P�T �BA��rH�-Q��Eq������� �:�q]�ݮL j��O�fζ$����N�J�AS�����QKw>�)�C��3>�d�z����6Lӗ�t:��$�h� -� -/m�������_^v�H�_f�p��!B��ˁ�|�l��ɢ�5�zk�K�>�=ǃIJ,���H��^D/C�@�`��A��bJ�=�VD����$ǫ0��W�ӗ�[-�6�(����i=���l //�X�>�;Z�m�D!���T�_��}ڧX�p��َ�4��H]ӊJݼCtvA����.P��bx� -"A��ps��f��*ϐ -W -��ܺh_������b�6�'$|��i -�����<xֿ�3+��?�yg�V���S*�.2.Q:���D>��L �A�>F����}/��@�����;�K:@�x�2�h��e�'��� -f���9�-�@���J:]&�Xej{�R>�8B��Q������a��y��<�+���=���G�$�I7��ig> -a���|WX���z&$��.HV<���r�[� �h�LZr��C�����UYuJ��%�VmCTڴ����b�jذ=͙l�������y�������{�����+�UU�E$���#���=ug�&o^^!T@فgS�p�͓�r�F\�|I�|h��H�"��Ӗ�Hq!R$�r{k_Mۊ��/�r���r�7��U� -V���{�u)���m���^.�r�"��I&<��cufM.<��%F�����6J -ic�U�'�r�}imW|�����ųs9�Z��I��Ј'�y:A(w�9!�x���F��)��_5 -�Ѧ��Wء�4�A~�&r{����/j�����ybf�mܵF�vf�G���u����GK����N��5#�C���&��o�j�KӖ^sT -+u�D���L\ܸa�2Vlf�m�?>�௺y]��av����)�Lk>�ܗ+��Z��Ԭ=��'-���.��*ǂO��=*(5�uI܂�@�O���2�wmb%����&t�7z!_O$W�uK��c���`���SWpΈb2�2�g�*� �(#�F�G>G� �EC���g(���e$����/1}hG���,jRA�N��CO;�,�SFS���~�H/Z�g�.n�p�VwuD�S������ ��h#�$����<?t��s��^?T��˽SW$�2��3�������=�h���3i -@��l눜n�IR�io|�Jd��K���>�:���&�^���ޓZ�K'j(�k�v��2���Z���r��� -�ң�����@�w -�'%R���Y��0Jڭw�^�\�w��/�|���T������d�n�$K2�di�E�a�5:8�.�Y�H�������P������͖��:�M��JB7���a����(�� ����jFv��+gW�j��K�%��9T���?g7PlZХp�`~��~?l;��zRƷ{��r�: ��{<�<�fQ�GJꉔo�Eq����E*E�|vj����~��c�GM���ڠ�u��O�=\�:� -p�6P��O �L�'"���8�9����~eͿ����{�32����^�s�UۘP�8q�t�/M��ފy���� A�t�m�X`5:�j!�I��<�����R+e��̒i��'�&S��.��:���7������OR.KL�(�]� ML�7�뱏;�/���,�b@�8�@R��_�.ԣo�����f�q���Lf�a���یQR�iU0[g�Ի�6�E,ڴl�o�4Z�?Ѳ�Y���jW|�`Zǻ�M��I\�Ŵ��A7tьäk����E��Y��3�,M�Bw:��{��.�� -���0�8E�;߹²���$�xaQ�П����� ���4q\ZsS�@��=?���O�f����� -n���R��^fa�}c�?nFY���A��rq�o�'Aڟ���lg+Bhf5�ː -d -w����.I5Q,ɓ���� -Ѓ�S2s�Q!�Ey���:%d-J"v��m^&����a�A�Zd��B���7c���ant����C�w7�$i�a��T�zJ�;V�^RH���z&��8U�a�L2F���:�Q��y=G��S��J�&��1�2���ʨ�m��jBg+K��E(��,���5�5��EU�a�TtT��Wo��U�ҋ��q��! -���[��xʪ�}��OԼ���o�|�f�9�'se��t�0T�t��Q*����%(���=L�>�I�#+��!s��3�@�������Qo*"���P�Љ��P��ؖ�_�B���SV��3�(%���~��Eٔ�?-�_��hΆe��8"�i�$���:=L�pt�_����Zٰ��{�f��&����Zb��1If�����pt��ԅeP�v��-�����[�@:ȉ���V�5��ٻ�ŝ.��;?߳����ڞW��`��9�O:�b�!J����4Z&��>ͳ��� ��7d��|m�|��#���r=�y%�Ҁ&9�����V/CA��(�@{����h=�a=��kg�Lf�Pb�eG����1��&�_�M[��H3�=dO��0�q����@w��C7�^S -^��G�IN��lp���a>1��r�������\7�ZKk�����~��o�"M�㕿��%@F�|q�C-, -ltƮG?5�tr�d�������L�R�ˑn}O�$w�Xe���%(n��\��!Sw����^��a����,K��Z�/Wg�_Z�ᵃɋ���>�A�@��p�sg�!t|(�ގ�q���~WZC+�Si -�_��5h�iC� �Ѣk�g�]�\�<�+� �a��C��2����H��FQ���)�D�q���Wg�P�:�|ɁF�K����F�@���k�sP�I�u�����Lqj��т����T�y���'���Z���l��UM(6A~M�Ѥ�E&��Z�M�"�q�ِ�����m^�%���u�±`�PW_��X,��v�7W)�����@��fH��b'6<��I��eĉ�����w����r�qC��7Xa̬M��>�ke -Y�>,9��L��%0��bn��;Ž��MzF��4�s�˷�040G�_��=.�}�o�]y�Fr��t�W -**���t��\�+�"=y� ��(�}���2�w��4>q�"�{E�������3����?�����~�����]ν��� ���mh�G|�t}���+�ņt�F������7�j����D���G"����*�=���ˡD��]0��̦�$`2���`��D�,gn���5R*��35�7���9nV�L.�N�I�\�^*�������+�ʭ���t�y���7�;��?F -��U��?�) -�4e C��9���uɼ͆2&7 -��^�p6�����~�X��u���R�l|N�5yГޜO -Fd�Jʙ�N�).�i ���٧����\&F�.�Q��Lk��6S��!�r�2�L�<�Ik�LP�p�����e -}�Y��� �r ���4P�[�ܓa�������iF_sOtKQ�O�K�H�����zE(�7����ؓ��B���\�;�gz��p�"�bQ� -��V:�D��>�<�F.��Ht������cAO����jy�����\Z����0K�`�m��c, s�e�ac���ϿK�5���5��ft��wb�U��qk��c�T���F6�<\� -R=�(�9�P�cƤ��%s�,x~s���Ķ4�zwf]��s��`X� -P�:�;N�!�JYF��e������ -:��3aݴ�>�t�b���bƵ��[��A���P:��L�զܶl<�~<8�#Cyj��O�W��m"�s[?|Bř�+8�h�p셻��]�F͚��!�Z�Q.�r3�:*��pE��-O&)l��5�c�4�_�J&�Ļ���g9�䧝�S*��ڣx�����)�:�Z^.�<���`����s�*�]5���G�<��!G�<8��.�����p�D/��{0#��[�&�Ȯ�L�L'I�I�h�?����ދx��|Rb�V��-ʓ����WbU2�"���n\�yzGei��+�;�����I�#�qʮWʓ��ع�.��SvQU�i ����u1�#X,z�e!�؏�a��m>0�g�Vv1#����;�̀�gb��\ ���˭A�� d�ܿʟ��w0��p��+]��#����̷�z�7�Ŋo)�WDV!;B�����K�b��OAq -K{�<��iB!���ꊝJt�PjY��N����_w"I�&�3J�y���bW�������ӡ��!F_+�H����)P�3�!BG#n(]T����^�-���[a��&���u"������WGVzc_s4���.讋aJ5.��nA|�k5�l�aLcrO)*�]���� �-ɜo��/�N��jc��bW��,.��w.GAO�z�H{y��,g��~p�u2�"v7n�G�q̹�����zs'��X��Q�*l��V�P��Ş��6 f!%:믜dU� -X���)$��@����9�؟m��:�n'�̢��Q(Fq�RBַh -d� -��Ww���TF�@�`�%��j�k�'L�m2�es��ɗ-\�DžS��)W�_G��v�LĿ�SG�a9>��q����������C�btj��`y������v�!����P&t0�G1�p/�p)����c�Z -j%���R��Z��i�)Zw0�B��/��F�.�/����~��c�ZR/^��@�{�� -L��㴄<�´B�$�~���{�N�hC�ڸ�4y)�N�(�@��LAY�%�Z�<@��R�R����&Z N��f��UG����R�T~k�FH��rN��8ײ�:� -欭��d[U](���EɷAOڵ�i�0�.���?��N9]l���lI$�Y�e��]mSP����+�9Ȇ�t}hu��������@�phČIS�;�X�C�Sf)68��I��&m$~\�!���~�t�I��7tM��zhY��>^�1,�'�T�0O��i��V��-^�(�á�� -O#א���ʼoXk�V�|�t�0���Ԏ�a���7�`�$�^<��G�jh�|�* jG -M=#F5���i��%�UM�YǵX��� -x�v�4�m���"��-�X��� �� Ӫ�k��|f3��C{�ϋ�B���9���u;����SW�}��8M唥��lN�'��o F��g��v�3�ȅ��n$/��!�2�,��IЋ8h�t�`+b��(����Z^�*�UZ[x�r�?ܕe��t�A�]Mv#q[�[r�ŭ� @�y�T���w��\�d��+�S&z�,�c�q���}yD� -�D�g!����c�^�vB<�㳍d���)xr -Y������؍齶Ά�hV�F�\7���� �l>K�R�F����m(3���=|��t��ہtHg���`b%���n?��e�h�6�� -��g��P+;MTf�w?5B,� -��2p�{����8�6-Ͻ֍�0�@%��x�!���K?��E�[ڃ�֤��z�*�D�i��#(9��k8E�� 漦�0���%TjsB~f -�Ӯ: �Jw��AM���7�DfZ�]�V$���F_�#C�!r�N -B��@S^�UK�]�����w@V�\@��Z����ɧkR~�[[��s$IvS*���|��Eq]�ACl�l�_�����HPDX�G�.Y�P\�h��J@H�U��P��4�� -ؔZE|���VB$����ә�yܙ�3��/�z>ew�=�{�9���r�����c䃥�������lX�X\���U�I{�h;x�ˀ��Y�Kj8 m�8��r&�֒y���Z���Ԉ7�8��`��4��w1+P� l.{���:+�s8a�D��W��m��qE���{�!��'�)����>e�L�H9?���MT���+F���`̸K�AV��� -U�C��C��ÏѨ��H�)ͿXӬ��b��q��/b/�X���߀忣 -�˛�OS�#��I0� -��D#w<������<:T��~�b��qq�|*g�~�mL)�z�Z�W$��7G���ϟj�7�ݪ�i�]�d -�8ײ�ߌ���ܖ}@%-+���>=䰲����j�B�x����+�/�0�� -��jZ�ٍ�&���8�S��P��+��Ek�ۿ�����x�y�@PӖ��;�!��#qj�䳡.�oU��'�S�N����Q�ؔJ&�9O���k۔�Jo?7�y��+6��s=��-�)c���F���Ұ+$G�\�خ����jB�N�\�����;�6ݿ�5���}J����☋��)0x��H�20�u�����<=����5�&Q��G�����(��Tm���{�>�W���V c�ל1��7�!C5�q_�- -���/B/ -n�bV�����ؚ2�C��Y�pK�>+�ƾ��W�ca1M[�)s�˵��'�d����L�8k�w/=U��.e���$ -,�7���H7����{��cF�'��z���>Op���p!�7~�{e��s�d˚���|!b�'s~X���D��jﲺ����I�2�.�o���m[��H�M8G?���m{�n�2M�G��M���t�pTR�ϵ-�K@Q���ɷ0����eN|���GL�1�TWVQ�y�����@�%�?�q���������C��y����p�f�%�65��*`w^���������p -�TH�����Z���^\���ѣ�ѮzW��>aG[�/D�~����Q���P�K�^E�r��*����k��ǂ��c����!�;��w=q-�h�}��w�P��_Ɣa�*��mE���t��̝������*�����ڷ����De��O$T��Q�A�=piR'���C`A6=|@G�����q�O�;�h�+�NJ����|P��eI7郕�a1�zM:x;���7s�%�:��]ܱh�6��e��{z�Vn(�_+a���Q����]��27�� -��g�S���N7Zȣ�Wh2� -�]��i'���-a�H�2�z���z��6�/�c�h��:ˈ� � -�g���`���YA��q� �ecd�_���9�PM���Gz�cC�6n���F����^�ӣ�j}�=�n�v!E�;�EF�k�R�g��%�>#hD�M��������2X;E����T}���L|���=7a������8Hݹ��5��0��s�L��t�C�,c����?���J�p٤{0�/��,�_ $�DЅ�Y.X7�wLL|�/����������O�ml��ii-~P�����5'ݥ��-/��i�:xj -� ��w�u���.G]_� -2]<aȞ��[N��K=V��+���Xv3n�]J�5��i�^dRa\DO�����[qIx�1�*���oG���0r����ª� Z;�~1��K�.���{]ј���u�gE���w�r(�9Sذ("�5Ȍg@�r:/� ���@��Y)��/��+;T���I���]�i�W���Vj3ۏ"j5W�th1��.��MwSowO��a>ז�Y�;-���C20������Y��s��l�v�=Ř�&�����.Xz��*3">����7�s�O����r�IB�y���l{�y��s#+�u��*��](rŪ�j�%�������Ä���e���L� -�B^�0/���i@��"��M�x��hd�V:�D��h�w썦y�i���i�! ܟ��؈H�_�A��Y�r:6ed9Luf�z��9��jG�e�g��z&1�u��V��0=B�!)�`��N�� 3� -v2핰-kv�I0y��Tԣ��?E�W�+������I�%����?�h�� -endstream -endobj -1 0 obj -<< -/Type /Page -/Parent 1494 0 R -/Resources 3 0 R -/Contents 4 0 R -/CropBox [ 8 0 603 792 ] -/B [ 2 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -2 0 obj -<< -/T 1503 0 R -/P 1 0 R -/R [ 53 64 557 693 ] -/V 286 0 R -/N 230 0 R ->> -endobj -3 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -4 0 obj -<< /Length 3512 /Filter /FlateDecode >> -stream -H��W]�۸}�_��V*�Z��j���$���,:�S�(4m+�%A���O����${�)��b�1I������s�ӝITa�O�hn~��䫽�����z�����(?��@��fw�V�����U��^�h�x�F���������݂���d^��:j��0RI�zI�j{�Y{��:VۂZ�N7w����b/v��]E����on��?��[�r�=�V��s���]%^����c�pyN����{���v���� -��Ұ�}�{�N�ƞ�9�塢�ƨ��d��šiqU���r}5���O|�dr!�<l$�M�ær�����U�<��{w���7���Ӆ�h�:��:��l9�Ʌ�D,�ʂ���}�]���ݧ��d9����d������rh-�M���u��]�]�C�=������[���Gu1�Oy���Q\H��i��oǎ�ܪ��[�����TTg����a����بOUѷ�l>k�LA� -��� ��������χ�mȺ_"_a$-V�T�+l&��_�\�˽B������:.������׳���g���[,+�6 -@EKS������Ā�� ���������g�>��s����K7!� �5ଘ�H�mZQ\c�2�!3ͱ��ZI#)1p�@�ʨ��m�_�bG��EF�R�ة�bǨ��o�ѐ���3�M���n:OyAds|8�� a��Q��[��E�� -�R���nY�F^��?�e��ܡ0DNShu���A����4O��5�2�h��.��~c�܊㊃^WLޔ���e��Q�у�5������]˔��`Az.\wH3���V� -)�J�-7������-�v�E�9��҄O��D�ΆB�]��n���=�������'����8��2鸰%����pb�Q�N -�TSl����EjH@I�7g�#�4�O�#t�[�0�@�DN[ro,�q�5��A��c.E\�A�T��@���r���1D�a�ی��wn�¬��_`T�B��On��˲=&��{h�E.\p� ��I%�ujz��6�1��_�j��~6��'� � ���K�� l�l+��.o*HWDк^(U��~�4pȥ���?a{hV.� -���7^_�#劤���!i �B����!��zv?}ı�yvU>��ѿ5��H i�o�V��'�փ�W�^�� ,ȽeBO!�\���*�����5����u��D��C&��@8;=c@�l�Ծz)t�+����Cα��sӮ� g�4Vьݙ�*�l�"LbJ_��F|Bkj����x����G � %��c�x<.��!5���L����+"����;�J�b!���8r -���l��k�KS�ڬ@[��9P�R����&�`�:��"߅�%]����V3�ra��XQ�T��J�f����C��J�D�����ڈ`���L��1�Qݱ��L��G�Gxl���)��q���6��bXJ��[����2x�榕�dW0���y�h�a���$�u���s��q�����{-O�1(��G/�5���M{�-�"�4�9'��9�"��I#���eN7B�ᄬ2�@"kE��_��jʰ.��WBr�_�Lr�i䢘$݆@!�Ҩ-k�+p�J'*z���k'�sb�9�-�G�,l��F�.&ro�J��M�ȲpvZJ�|�F�Ù�m|G��Rp��壾�q�~�2%�L�{~9�=���j�unG1���4��̍�T}��u:ͯ�0Y�?���ȿ(\ D"AƮ�/��G`nkR��4i�4;��/5|�磼)���>uƼ�u�H��1֏�E�-� ���5�?�=�HL�� �eۚt��df�_j�Pd�ٽ��i�0k?����YB��T�V"PJ�i� �̆S��b�nfN�Y�� -�µ�C9qb���h������q��@��.�������^�� -����xϠA�R�!ZgK�7+���n�u<���:1�A���/,57��92FT� �2���Ę��K¬��ͥ��u'��56P3 f��v�8�D<���Q��M��N�~c�~#�����oh��AS!72�j+]ή\l��.~yv|�/�X�B�$S�#��"�u1"ð�T��lT�Bc��yP�Hyό9�<H�D��'��=�%�O���N�����'$n���N�jن,��B�C���L{ -|������ ���@3/J�l��Tq�T�y�`'��2A�`0zn�a�W17���?#�(�A(��� -uZō�A�_�����NU]���P�# �%Q$����I� L�t]ƾuZ|��j,t�kD�/+ -R�܀"��QY��|Y��\(�p�HFV5.v�������+ <Zl��U�S8 �>5?� �0�`���g��k��%J(�/M`�B��aC��.��eG+��B�2_�r�� Y%A5��!}T�� ;3�N�^@d��h;�h,^S�et����;3���״�*˗9 /0���qI�ձ����QƨT�"���!�Ϻ."]���Ђ��SH�U -(z(����jJ������>B�C�C4$O-A���� -���L(��5`|mX?�{���ۤa�*�&���Φ�4*y64�S_:&@u֦��2�X^̈��܃s����Jmdz��UŢ.�K�k�j.VA�s����j�M�w��G#�,�&����������!�MlÊ����c Ҋό��U�E��#��B��Hy��F坁$��|P�F�{.����"s�BTҽ��@ -QZ\�X��'>C��%G��_Ē/f��왹�k:��Nc��2\��^�av'T�E9T'��bg����w5����sպ9qʵ -��� -/U���5)����q����/��@��ؒ�A�>K��7�ё�=�e��7�<* -��)T&n��O����C�$|�\��h�5��*�?��٭�R^�uߖ�g���%YZ�y� -��#1ҋȕ�ThK^Z^��t'R%�:/��C1ʛϏw��vՁ��Fͳ�K�d��s���&w9e�=z�{��7{��T��^ɨ��r��<���F;w�؞(F �nD -�W�9%��3Y@�f.+P+�T��A������7�i�R��e2l���(���RB��7���mpp[0��:��Np��Q��LkI��[��b���\��~�i��Xt�{�� -�@t�� -g�ُL�38��X۵w*B�ê��S˰3��B�^��Y;N�7�:(�i�O�=U�I7� -���C.b"FC��5�2��5CIC^$�=�=�� <&U1�=���s]�^�R�Mh�J�6 -��f�"�(h����[;tPkb�#,<%�PZ��V>���&U�k��VTE���̱ ->v���p -YնbR�]�R-m�<��tq�i��;�K/�!��.�a�Ho���ā��U=ɲ�LQf�a�E%��l��,�s����Os���� -endstream -endobj -5 0 obj -<< -/Type /Page -/Parent 1494 0 R -/Resources 6 0 R -/Contents 7 0 R -/CropBox [ 8 0 603 792 ] -/B [ 230 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -6 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -7 0 obj -<< /Length 4030 /Filter /FlateDecode >> -stream -H�|W�s�J�_�u�����D�r������}`�Df��I����c&����t�>��wN�6��a�_��7_�!��c2�G�0F�p,��X��mS�����P��;�n�0t���ѭ��?��%7_�؈��f�O�Gsd�cK8��;����P͑H2Z -a��F��Џ���ƾ��8��i��XK~�@�h*�n -�i2�f=���o�+����GRh�<�Ԇ�+�S���.���;��N��I+>z�@��^Q4����c�OE��j�*��Rm>�gd��L -�&�A��Ȫ�.������!}kn�Z˄5�Nwyǹ�y1�p% -/���r�U��9�JQP�J���4��ӡ?���^��ɟ{�5�wzo;�m�A4mڒ�2̐y��d_4bWe���JE��G٦��D� -�w3K>)���w���5�/�=��Hq����m�B����U�g`�-!�����J/� ���p@Bd�z���&�_�4��.WH|�%�oE���l+��Rq@:~�����:�U�O��5���6:� -�;�P�i� -��ߙ,� -���c]�N[�{�� �N���u~t -g®�&�O˳x�j%ET5huᓖ�>M���`�\�G�-Kf�"?@,ꪼ���1$���rd�s^�.�J�p+�r(;�v|\��*_�{�Fm��器��ϷP!YU�:^�Ѧ�w_�)+��,ЦO5@�^�1+�9˦&!&�J[��s��2��y�d[�+P.� �s��8��`T3euR7�1�_���R1� -cyq+������kl����%�&�U���E�;,�5�<2@���y�ن�Iv���F�cXv/�OnC ��t�+?�{�U3� Y����C9c&�l@���=6 -��.��/�E�͖��nL��p�$p0%t��靿�&Ͱ��5���s�I��mԳ�oE�� �h��$�X���p�ǻ��L�<mb�G1]���:����.��EEY�G�:�Ś�+���l�'�ro� Lb���,�������� ���㓹�yl�Cw<��A���\�a"�^�6����{`M'b���f��F�Xd��3�c���gR�$�.��O���4{���pM�s�b���j�����B�|j9#�[��kC8.�����0�ɻ��'��Ul4Hޱ\�����5������4S ��_�H�ͽh�q���y�VD�w��%Q��l��dR��;��x~K�,��ő�e�a�lP�! ��̔ӥ���]����6W'7�_ ���>H���@cLT�10����`T`��2�JB���D�t�6p�/r�VV1�����줐?��tȫ�g�@ f���c�I|U���r�?�G��2ICA,��^��Qj�~ֈ)`U<�6A�)>��^��9L�Cn�`�)�Hl�͖��c������������? C��_��\���[.V-��JAA���UG9��[��G%��y�C�{PؖW`�A������a��+��KW�U� ^��ѽ�F!��]��Q�/��GxU�S�C�]�����:A�3��VE>B�&@ 2�Y�{Cޣ�g�#huΖ�svݮ�|��P�����������Y8�poE��3E���+�V�3v?V�ى5'�m�mb��[l�-ل:F�,9ŪT��t�{>�A{�0x�'���Z�/�ԅ��ǾA -����K��p.�k�{�-�$&4�0=��nŌ�+����Q@�.|�N�Ǟѣ��\ -ITqʈ���9$��#B�k4oyS�q -���a��f�o���}�8]��,w�/�X��n�x�ه>=g�� Y\&,�{5�Da/�G��#��h�/�Ə aWݤ4�9�c6O!c��>�E+v4��G�PN���ȴ���E�u�ľJ��x�� -�8���l�������J���3T���Ӝ�Ï�~b��`��d���l�:u����O�V�j��sJE{�9�g.f�ض��P_���y>/3f�sS=�o)�U�}����_�Ύn��<�G�������$�w�*�j<��$�h���yV<��>7x�$ ���7��T����*ϊ�&�=�O����"�+��&;��K^p2��i��K�lڢ=�9��� -g%�]�4�y�a"4�� �i�"S��#E��M.���A+��c�y&�l���Y=�N�q�Lm��Lt#�*u�<��}xߘ�CdH��'Q0�^�E�ϟ��LK~�k�Ȍị(��^��&g�ޝ���� -!ޓ�t���*���T1� r��Y�;�]�i�ա����k^�/x��ґeK4�K����#�Z���:ܿh�`�+���ikt�H�Y[0�A���U��T� -�����R4'LVy�uZ��D�����2�[c����6��ߪ�:Գ/�N�'k�ۮ��Cex��F�p"|@�P�|�6Q�VO�����m(��W`W�#kD�Ai�H��S��8�3��&a� M�$�?E?�o����$�H�qι.��d.sf%U�x2 -��$�,0�,�d�n�ۢ�XՕ��C;X�C%�_�1rZ.�4�N�jkئ��K��1��^4�V�o���؉�5��E�P�GT~�<W,kMVȐf8`4�qC&A�6��cw��=�����I�B�>��Y�5 - c$��-�NB@�G���E�Rh>3����`M���Ŭ�xdn�X�fBf�"���DN�M�t�7��M���5��EoFy?`�̮�:0�މ�wB�٣�c�!��1s�,���x��8ky���=h`��d��^�4�[ya��#;�gV� �0xD����J_Q�H��3������q/+w���&g�8p8�<�� kpu]�$��˪�Kha���h������cV<F� 3Y��4�e�"b�ن��˅{K��j�����Y�5��^��U?����s!i�$���w@,�v�Fb��ܱ��?i���D�?LI�߾���2�)�J� -W!�Qq�56����e:��H�<x8~�P� -_�MO�yp^6�3s��O=i�Hf�\vͶ*�1{��y����4f���\B���.��N�0�m���@�a�EYU7fыl�̠�=8���m��̃>%�,'�:UY����|,O}CT���H���ݻ��J��\�/�g���B�F�٩nm�YGG"���ה�6���O=��� �;s]nJ���>����굯�3���� -s��8�[������U��,R6v`��*�8P��_��D����zm�{}����}DDyWW7�rWn���~� -��J���"S���rt� -�zS�)���zs��H�9�(�y�!�$6�;ޥ)xX����f})�dM�� )��4�t�������%/v �g����wZxQ[zɼܨ&c�V��BSI� t%�9,�h�b�>+���L(�A��k�3h�=\V�Z]����Bt��ް���HT-�d�5p�Y����$thX���߿�{T�@��-;�b\l��bc>����#�����I -�d>�ӻ����H�K!�p�����>���'Z����9��#�@k�\*N_�x��fG]L�^OY�âp��Y�@�ȡj��CB��b�u���ct���_�Nb�1�vt�h�^�E��+��Ņ��Z_�/���˄.�O�R�S��"x�A�!3����3�=�#ׯ6%���B��I|�}���n�����M��|=�S��u C̪ʞ]�&�������������|*�x�Z�P�k���'�K��bȥY�R�� �B���H�M���\�s����l��0z[%4��Ī@[҅�P�uf���k�UNFE`Lm� �x���nt�GH���}�m)z����s� -g��mn����2���7�>�}jV���|��\��">>�ׁ��([�Y�ߓ��b��)e�� -Ho&0,K������f��v%5 -e������$*� \�� � �y�l �UYG�&��I�� -p.$u� ���H� -��_�z��� -endstream -endobj -8 0 obj -<< -/Type /Page -/Parent 1494 0 R -/Resources 9 0 R -/Contents 10 0 R -/CropBox [ 8 0 603 792 ] -/B [ 231 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -9 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -10 0 obj -<< /Length 1829 /Filter /FlateDecode >> -stream -H��W�r�6��+pJ�)���6��r*O���L��p+����F�$O&)WY �F�����;��Z�����_��?G�VQ�I̢$K�eP����Mb�_��p~+�(�S��y��l�3��fu�ـ�ٯ����:ӈ�8(K�E�WY�6�*�0J٦����������o>���y�xw����V�8 -����:�,mޛ�aeVB+�h���Ͻz��Yy�i����ڏ��c����4H���k��bGp!�R{�&����α�5������4~T�L���m�a� -N -n~���ɿD��#��At�Ԙ�5���y|���k-{�80��h�8`����Xf'58�Y���kPQqX�V)a�J�6��P_|&�����j��ۖ� �GK���:��V�C��L�nD���kEZ���q"C'��L2�0J��ՉA�=>k�u� -����Q����D;�=��aj�}�q 0��|� ��u��Hsn8�oc���G�=1�g-&r�dQy -rT,�����>� ��̌$�`����˚k9�8���+��'�#ϳ�J��;@�p��J6Ll��݀�j��-u��K�E��s�HBz���+���,����B����wx�*<�����`G�$���� \Q��. -�8K^�r��$�φ��dD��0w�o3u;6�4r�sJO�$uI�+;�tA���±'Q -ja-��4jw=���X��9��jauZ���9�hO=��aꖮ#��q�0��%�";��9C�M�-�hV����B� �~W>C�[��.�6� -��]M�n�_{@���4�����j�J�vG���ӵ H��G9���`���jͷ�pI�.� �qxN�d1S�pudR�M�+M�M1;�1�������^<W��ֱ��!`�������� {bvت��J���F�R=u�؉�Zt�1�Q��g��C��n]�9�!�l*?5W�]�vm�Ҏ0��i{�����0o~��+ -�G�1(!l[� ���p:A"g�@�&���a�Y�����'�g��%-��1!��%�K�_g:$:�����4�����I.���%75ͩ������qM�pL�@��Q�l�s�ِ�*�Y��ޯOz� -�O���P3�.��J@��$�(I�Bt0�D���%�d�b��t���D��|���K(�GM��A� -�[�7�y`�*�������͵�� -��|�Os�(8���������W�4ט�f�kE��<��V�t!���.�����f������f��VN -�<?��䋝�z'}<��'PK��?s�U�?�M�#Z�#�Q����Z�7|�f2�L��Cq��!YR4�\ړ�ʋ=ka�"c@4��+x��8\�?.\b �.��;KmX`K�&W9D6��l/z�>3���{��}���'�x������q�{��e�C���&�����MTQk+(b���RL�&�T�$���a� -I;۲zV�\�&ő�m(}������7�t�n�����%>�F>i'�{KMyqs�;38S����]��#����r:K:s��[�#q�@2�� -�YL�G7bz�m��.�BE�d*S�[���pxFx]U���%��9,{^��?,WX?�h�~U2۞(��U^-OD#�f>R�A�Y�O�ǁ_!�i�^�x�Y�N�������Ί%�IX�Ŗ��<j�`>�GYc�A������)�S�x�s�;���8����D1ķ'Y��5xaj����D��Ǻ��'#�ϣ���=Do�T('�$go��-�2�t����,;� -endstream -endobj -11 0 obj -<< -/Type /Page -/Parent 1494 0 R -/Resources 36 0 R -/Contents 37 0 R -/CropBox [ 8 0 603 792 ] -/Annots [ 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R -22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R -32 0 R 33 0 R 34 0 R 35 0 R ] -/B [ 232 0 R 233 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -12 0 obj -<< -/Dest (G3.509745) -/Type /Annot -/Subtype /Link -/Rect [ 62 456 566 470 ] -/Border [ 0 0 0 ] ->> -endobj -13 0 obj -<< -/Dest (G4.509745) -/Type /Annot -/Subtype /Link -/Rect [ 62 434 566 448 ] -/Border [ 0 0 0 ] ->> -endobj -14 0 obj -<< -/Dest (G4.517781) -/Type /Annot -/Subtype /Link -/Rect [ 62 417 566 429 ] -/Border [ 0 0 0 ] ->> -endobj -15 0 obj -<< -/Dest (G4.517782) -/Type /Annot -/Subtype /Link -/Rect [ 62 402 566 414 ] -/Border [ 0 0 0 ] ->> -endobj -16 0 obj -<< -/Dest (G4.517638) -/Type /Annot -/Subtype /Link -/Rect [ 62 385 566 397 ] -/Border [ 0 0 0 ] ->> -endobj -17 0 obj -<< -/Dest (G4.517648) -/Type /Annot -/Subtype /Link -/Rect [ 62 370 566 382 ] -/Border [ 0 0 0 ] ->> -endobj -18 0 obj -<< -/Dest (G5.509745) -/Type /Annot -/Subtype /Link -/Rect [ 62 348 566 362 ] -/Border [ 0 0 0 ] ->> -endobj -19 0 obj -<< -/Dest (G5.518301) -/Type /Annot -/Subtype /Link -/Rect [ 62 331 566 343 ] -/Border [ 0 0 0 ] ->> -endobj -20 0 obj -<< -/Dest (G5.519383) -/Type /Annot -/Subtype /Link -/Rect [ 62 314 566 326 ] -/Border [ 0 0 0 ] ->> -endobj -21 0 obj -<< -/Dest (G5.519409) -/Type /Annot -/Subtype /Link -/Rect [ 62 299 566 311 ] -/Border [ 0 0 0 ] ->> -endobj -22 0 obj -<< -/Dest (G5.519534) -/Type /Annot -/Subtype /Link -/Rect [ 62 284 566 296 ] -/Border [ 0 0 0 ] ->> -endobj -23 0 obj -<< -/Dest (G5.519553) -/Type /Annot -/Subtype /Link -/Rect [ 62 269 566 281 ] -/Border [ 0 0 0 ] ->> -endobj -24 0 obj -<< -/Dest (G5.519592) -/Type /Annot -/Subtype /Link -/Rect [ 62 254 566 266 ] -/Border [ 0 0 0 ] ->> -endobj -25 0 obj -<< -/Dest (G5.519604) -/Type /Annot -/Subtype /Link -/Rect [ 62 239 566 251 ] -/Border [ 0 0 0 ] ->> -endobj -26 0 obj -<< -/Dest (G5.519611) -/Type /Annot -/Subtype /Link -/Rect [ 62 224 566 236 ] -/Border [ 0 0 0 ] ->> -endobj -27 0 obj -<< -/Dest (G5.519616) -/Type /Annot -/Subtype /Link -/Rect [ 62 207 566 219 ] -/Border [ 0 0 0 ] ->> -endobj -28 0 obj -<< -/Dest (G5.519621) -/Type /Annot -/Subtype /Link -/Rect [ 62 192 566 204 ] -/Border [ 0 0 0 ] ->> -endobj -29 0 obj -<< -/Dest (G5.519723) -/Type /Annot -/Subtype /Link -/Rect [ 62 177 566 189 ] -/Border [ 0 0 0 ] ->> -endobj -30 0 obj -<< -/Dest (G5.519832) -/Type /Annot -/Subtype /Link -/Rect [ 62 162 566 174 ] -/Border [ 0 0 0 ] ->> -endobj -31 0 obj -<< -/Dest (G5.519863) -/Type /Annot -/Subtype /Link -/Rect [ 62 147 566 159 ] -/Border [ 0 0 0 ] ->> -endobj -32 0 obj -<< -/Dest (G5.519899) -/Type /Annot -/Subtype /Link -/Rect [ 62 132 566 144 ] -/Border [ 0 0 0 ] ->> -endobj -33 0 obj -<< -/Dest (G5.519934) -/Type /Annot -/Subtype /Link -/Rect [ 62 117 566 129 ] -/Border [ 0 0 0 ] ->> -endobj -34 0 obj -<< -/Dest (G5.519957) -/Type /Annot -/Subtype /Link -/Rect [ 62 102 566 114 ] -/Border [ 0 0 0 ] ->> -endobj -35 0 obj -<< -/Dest (G5.519960) -/Type /Annot -/Subtype /Link -/Rect [ 275 85 566 97 ] -/Border [ 0 0 0 ] ->> -endobj -36 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT4 1545 0 R /TT6 234 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -37 0 obj -<< /Length 1683 /Filter /FlateDecode >> -stream -H��W�n�F}�W��7{��v�"F�1�TF�$$��߹,I9V� ���]�{��s���I�xUUVQ����)Ef�Ʉ+��ډj�xu�gb��k#��n���+#��Zi�Q-)t3oE���7�S�MҠ -Y'����VsG������xo�P��5-�WԼ�E�fN岁6SV���\����^^'i��Q�8J��x7�V@k�����q�����⒦��KR�����*.��-l�[x?n+�ㄎV;��������9j�Y�f\�$���#�����+Un��k�-8P��8��@EH�Δ�"h�r+\����p�k�0{S:e�0�mu� -a�E��N�}TKUL���t0�������֝���� -= �����츎��sKf -�b�:�]b -~����� -"������\��8�DjT��sl�I�z�x���ov��;�a��p�R��V��$6O���gttFԨg=P��j�&�ۘb�w�=s���d����$o�H�`�>6� -~yÀ��r�Z��e=$|���8�%����#�l8��F��$���J�Gh]��ۙ�6�1Q��5J���N����� �z�WCx�v�hW�$���l����b��������"�!���Gy�*�h�l�Q|���|��cC�*��KiA�9�s��^��ɬ#L�N��v���|��w�H�7}��`�1q�s���l0&Lq)F6�� -�O� l{�A�S6�,�!�lרiP��������~դ�aN8�DA�ؓ���l�*!�3˳A��2A� -�MX�9(y)��OD�����Z\4C�m�� -��l:�,?���f��x+X�ٮ�8g�1&��C2���%�a��r�0�~���h��n�#��줇 �9@<t��I: -9f����ۣY���<���Ld��89J��ˉ= 'j���K�.��̙�ڃR�"Dcb' �G$dJ'#�&1��S��M��b�� @�2�#��8���G1��P�U����a�&��x��'/��vs�m����~�/`)Ԝ�����t��3L�@�$x��G�7�� -T2�d�����M!v�<�S)�#o�ݤ�a�Q��R����Er����M�hh���M���7C�!S�T�:u�<=?�$z���=~���lv L�N���C-f$�tAL -�_��px'�o�*3e� -;��>�YE��$P�l�{����Ȼ���u����n��P4E��D� �F�og -��S>��n�tT�ގR���ttFE��P8Mw�A��},sQN�z�?�X&�;�A�>���x -: -�22�?���5�q -jd����J�vXo)��߽��w5��P���d�t����sE��6����+ً��y��Ȟv�)��rw=P¼����� |�������Gr��˅?B�oe�7��;�tP������F�;����h�c%��%�u��тo���l��@Ր-K9�[�tt��n��5N>Vj�����͘�ٌ����L�ͪ�ݲ�z=��]ӷ�ݒj�Q�hg/��yG�[� =?�#���3N���z������ޅ�����r��o��}����[�a�K��֮�p9�$�y*�3�\5KC���q��K�46RKz��:����>�g����� -endstream -endobj -38 0 obj -<< -/Type /Page -/Parent 1494 0 R -/Resources 41 0 R -/Contents 42 0 R -/CropBox [ 8 0 603 792 ] -/Annots [ 39 0 R 40 0 R ] -/B [ 235 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -39 0 obj -<< -/Dest (G5.519962) -/Type /Annot -/Subtype /Link -/Rect [ 62 674 566 686 ] -/Border [ 0 0 0 ] ->> -endobj -40 0 obj -<< -/Dest (G5.520065) -/Type /Annot -/Subtype /Link -/Rect [ 325 659 566 671 ] -/Border [ 0 0 0 ] ->> -endobj -41 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -42 0 obj -<< /Length 517 /Filter /FlateDecode >> -stream -H��SMo1��W��>��c{m�5� E U*!$(�M�$��Ϯ��V=�ؕ<���|>ϋ��†l����C�g��z(�jvu��:�1�q�S�w ��Eks��R�O��[S�W�qtI���7�c`S�����^����e���g�p�{9���}D�M(X�yw����bt��^|: -7r}�����d3��N��$��-,4@�p���bB��<�wc>��y=e�|̧=�7"����@�粸 �w"OV�\�d�u�1�J�[�v��vM�X��eH�3]�Q[��F��<RM�����-ӱF��L����ޝ��z�E��R<z�ӣ��l��wpX�����zfG�G��b���*����Ӗ�h.��^L��7�G4���h?��ۄd:�y��ˇ%�J���~���)7D� -Gg�� -���LON^4�5��t����3�L�^4+�����Q��s�n�Y8o�����Z��ȯC*��#�G�<�����Rҍ(�H�l����9�[�DG -endstream -endobj -43 0 obj -<< -/Type /Page -/Parent 1494 0 R -/Resources 44 0 R -/Contents 45 0 R -/CropBox [ 8 0 603 792 ] -/B [ 236 0 R 237 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -44 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -45 0 obj -<< /Length 2173 /Filter /FlateDecode >> -stream -H��Wے۸}���[���������ZW�v+Q��<@$a�"U��d���n�i���T�x��O�n|�=���b����P����P�")CE��]��0���C�>���%N�CFQ��]����<���������)x��R��)����q�.�4���3�ΝoU�Q�*Yl�����;�FOyXH��?��&~�D���h#تRa�$���6��9v����~тl|���Q��0��`�Y�y���R�YKfri�������!h�(�Td� -�X$yƩ@���6*��PUI�R���a)Tf�[�a�E� -����W�)�T -�����R�_$��"PsԵq�d�P��fEXF����Z�W���n�x6�����ųn��\L;�O�P�Jv��B��;Jх�9M�d�F��J{g��M�����I��K�����SǏ⧶�W��gAE����Q�|0@�v4}�G��lu#�>@N -yҭ�=o��0]�]?��3�4�RHp1;Q��SY�����^L/�(�$# �|S�}@䐦K�L۞p���.���m� -�2Y��$�@��\ċiY�^��8�j��fՊ�*}�I���{#��4�q��Tn�1�+E�����&*��i(~���l���#���Cj���w�n4^�J���I-�}���7.�k����FtG�1M��ނ�kf�E�X�nә�M}n��;�Q���; �C���Е"�D��&�j��#����8�� -�YD}�{ -&��g:0 fށ�t�y5fT���Q�� -PZ���*���+y��Н&�Ŏ�1���Z�H�,�0�X]�%�c&&�xQ��jj{�5�Y4vHW��B��a�[���$�K��n�@�$J���y��� ��^�k���Qq�m6�-J]����ۋ&t:�Ę@L� P6z3 -zo;�9������$u�{��I�EV�7����!�^�0��� -����)E�FK&'�z�H��O ��82|2��a -����X�g�Ӌ�� -��v�vD9�б��l��̉�e6��MQ8��/.�#�X�j�F\�o��(��0�}æ]�x�ue��� -�ɔ'�-f´�`�z�%���E^�Ս�𤕟c�.�$����HEp�!�1�7\A|�ῒ=W�8k -w�WTx�w��ŵ�h���G�w�g���!����J&�Hmdx���<�_1"@ ����Yu��D̀f$�Ӿ�^���c7�fQ]���u<�Ʋ�������亲86�!n�qX���V�~��S0�tS�yÙ6x3��*����ݢ��`���EH�����k@j�@^�gR�B�_U�,߁��yX�����8a��f{�ҝ���J��\BU��u�z��\k�LWk �\M�`���}7��)Ԩt��v�X�r��'����;8<X��Q.���R�(��>s���$S�e��&�!��k(���3�2C6��ņc���I���FrP�Bc>$?����-�# �����]7�$�\�Hp*y���B�� -K]3���{�Q+ -�j�|=w�U���?&�}�Y�Y����\�e�Si���/x��H�����pu�v�p�a:�د��������wz��z�<[pT����i�;�^7��1~�7�Hi�gE�}���t�f��d�F,��V+;�>y�7<n���\��N1�,���RG��r4�g��;��N�ϑH%�X�(Z:hZ%�#��P��g��Ë�P�|����r=�.Lݸ.�Eܿ�ڨ�q��p��|�,_{��$����������eߎ�"i�ٖ�Eۆ{?�� -[f��X������ -.8�)�_���>G�R#�����:���s�q��H�@0Ij"4 -eP�R����_��[:�Te�����NF+'�oOE�R�$/X����9�oG��$c2ZZߦ� x*���n��D�;:RG��m��2�E~ -��2��b�.��4��Sⶁ�Xቀ�HR�IJ>;��V7���(�ʏ����1$x�ǺX�/��,�B�Z���Z�c`�睿?���x�ފ#�7���"�����ڇVn��� �&Sїd�vw��0��?�q, @;�R�0��^S7�UG�ۣE�+㨚J�{��������*$%� -endstream -endobj -46 0 obj -<< -/Type /Page -/Parent 1494 0 R -/Resources 47 0 R -/Contents 48 0 R -/CropBox [ 8 0 603 792 ] -/B [ 238 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -47 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT4 1545 0 R /TT6 234 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -48 0 obj -<< /Length 2807 /Filter /FlateDecode >> -stream -H��W�r�H��+�l�0��IҌ������ChJ�4j����;Y� -�"=��֎�A<������o�Wo��Pb��*����HC/�E�{~�Gb�^��RQ�8C�]�y������|?�ź�����ʩ����LM� ��"����'~���.Ӥ�O>;�jtW�9� -��iu�sCȮ���*>�.҉��%����{�A�%���[A�2G���ꇗ��W��?�T!��"9�,K���@�Nm��]%^�V�����9���+��F5CY�PdP�{a,4��B�D`K�!���s�˽\������U��a -]�~JlI��K�$#��D�A���* r���s]>����Pok5��Y�R�;ݩ�MP������Eݍ���R�v�G�#�� Ȗة��o� -�^��� -Ŗ#'\Rg��%��� �����a5/� -�N0�F�*v5rH2r�Q�1��O���O��V��+�R�{��/$ә�`v���tW����[�i��F�����8������#� -����%n4ɧ-Q��"k��xp}g�@ -���cR�(n{7��R�]�+�$֏����Z�4���h�E:�iP{�?�탱�ݰ��]�����e�z�~U\�^��ޫ�rX)ˣו[���n����]wB��ƾ�L��L,hV����gd��{ݵ����'~E=�r0_���c�;���lN([`ɗ�&&��T7�S�vM]r�Al{�rf�)4��H��K������h� -���itB�tY+3k� ʓ{K�T/7uS��Q�Rݱ8�q�i��$Q@��(Ί�>�V?�N��N3|�d�β�V��4��#f����m�H�_b�=t��zT%�����q�MX�9�_��%�N���y�������^H�U��G��ڥ�ӹ+*�"�vڅ��EqR�eÁ����'*f��%�w�m�����4�_d�bj`"R�7�C�Y�3� -��7�fZ��� �d�<��[��#��=�V�v��Ei=�~_�j8S���¼��E\�Y&$��i�: -�l<�Ü5��%��(��a�n5�w�L�a��t�h~q����Wn#��۩+m�����;�3�x�]��]ws{&�������uW��t��� ɣ��8�K~L�4?E78?�d`e�;�Sx��p٨� �vS��(N����B�6�$�K����?�1L��{���I6/�@�Q���?�HU>ѿc��lKL˘J��晚A:ޡ.4j�O03�E9�����J��T%��!*�K=�ۺ3�0O4&c��Bj������(�ӵ�������*�A�w��dyrHS&�z�ʜ=��(* -Jwu9�Q�g~�� ���<Q jNk��Js��I�&lHuI٨��U�>�L�[s��,JN,}��Mm�m{<0��4Vsɐ�"���b�C�h��vW���>���v5�°�L����"��7������R�Ϊ�ȿx��՛S}�ǝw�����0��i}G=��r�hSpS-�E.zM��%���B3/���\3/��L7s��۬��3-�9��p��q�,�-u���;VrS�b�k��Fy�IK��w� ��N�U�YvѨ9�����g�e��a.�M�Z�-Il����)њ/�ȃ�1;�E��H�7�n�e\bT��&B�r�͑`�S�l/\��@��v8�~S�G�� �u��D���M�Hш���T����R7��f8ؗ�zj�Ɓs.3��c��(v%[c�k. ��������Q -� �$��<�yJ��?�i���;7�F���A9�X�yA�4ͳ�� -�QfV�ٺ�X�)a�˩���fJ��# -c�<���Ӡ;�υJ��XM�U��Qs�lP�G���9ݦM��=�)�D)�(?Rcg*~P�7sF�$_�Gh��������ܳ�0����I��'#�bW0<#F���?`���yq����8�R9�6eu}����N_�۷A���G�x9X.57o����m}��iy�֙R[ի�T�^c�^r6�$����{xLZ�9.���{�ҝ���Os� -�S}�²2Y�3����3��3-��q4�s��� �C��٨#��ۓO���� -���`O�f��%��P�!���D�� -��� �|�#Y�"O��Tf��M��&G����% M��.}�g�KJ���uE���=�݃�8��&�V�*迢�屒�cܾ�;�D�F��"��拊�E�Z)���WwˑҮ�#퀶�;H�����mk���Z��_�K�_�V��% 0�l^�l+xq��»��}BF��� ������%nL�r��!�ʽ�����l����n���0Q�����v�^�� -��p�d;�:C��X��nd�>��S�Q����ū|��v�����. b�g��I����V��xR�+��J:�A|��t����$n�;2�S�����~M���j��@����i�Rs�`Ix�ź���x��iw-~�Jc|ˑi���a�{��a�{Q��-�㇋Վ�#���c�=���$���!����0�(�5��_��ǖ�a�wu��q3BfO=5馿�.{a ��>c���r��$�n����� �D ->��^&8�M��]zW��4=ږԌB4Ǻmd�u}k�nJ�A*���dt��GF$p9!�%Y�?��ygr�8`��`}c�jv/�ejA_3n6).�$����摌���Jy�R+�)I�?J���_��G���E_�&8��yu���̙_z�ϰ"�c2���7�q�����N��/Wg�� -endstream -endobj -49 0 obj -<< -/Type /Page -/Parent 1494 0 R -/Resources 50 0 R -/Contents 51 0 R -/CropBox [ 8 0 603 792 ] -/B [ 239 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -50 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /F1 240 0 R /TT2 1540 0 R /TT4 1545 0 R /TT6 234 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -51 0 obj -<< /Length 1479 /Filter /FlateDecode >> -stream -H��VMs�8��W�H��I}��|m�i��D=�{`d�VW5���?d�$;N�cgr������bv^8�Y�rH -#3�"B�8;�4 ����������{+3c��4�����1�ϳ��F=t�`ӌ�`.H��/ �`Q�w���N|l�����9���a��ݩ^>ꅪ!�'4%�Y���O�fL���8���,C����s�d�����|�`}\�8�'Nوf`B�C{@��SP��]3戰4 SB@��!f`�:5Ô�l�<�!�)ː��f�S��E��C�Y��*$i��bvq]^�PiBA��^u�]W���R7O��+ݘ�s�'���A��ŊM�8u�(�<w�S���*� -�m����Z0k������3 �Dv -6F-�j|5R�g2���dr���ue`���#B�^â2}լ6�YC��t�ݗw>x�s$��5f"��L/{eXv��6[N@w������U�n)|���Ia��4$g֏���_{�9i�w�ň|��� -"�(ݡ�^F���ab������?lg U`�4����d��a$`@�H'b��ءݍ*��F�J"+�k�z�ȴ���*�1�S�`�:�L�{��\�$���I>��I��f�녝�]wa7ű�X4A|�N��y0�l�_���ۦW�R� -�Բj*�}�I6��Vs#W -~��է�d�mz�k`h�� ��q��t5r��)�oF��=��I��G�G��_:\zӹ�R�D:܉����FI��"%�H��(k���1o���=�)g4ϼV��a�1q*2&�f�N����j(@�Sog��ل.��]�*U�,^(���Iħj��xI�uV���g!�_��ɳӂ�*�V����Τ��jh��VZ2�A��d�^�Ui^6&ιU���٫�;�ہN���U���n��8��#A�~� k�Q������5�scar8����H�Z ���9���V�����5��i�^��[�3��wcY���b���PJz���މ����ޱl�Ƈ�/�i�s�+??/(��f���l��^���n�)97��Ҡ��k���m`Iq�.u��G�%>%�]~�*e����qR½I�����`جSr��1��|4ݥ�* ���Jy�����j��W-t%{ �K+�x9H2�*���u�k�B������� -9�=�\���}q9X�9t�ŧr���q]K�����-vrA�աh���Ϫ7����7�Ɂ��.������x��S����c���ֵ߭n���ƨ;ʶ\`5���1T�������|iU3�-�ㅡ��^g��G�7 -�Ue������Ed�U�&R�t��r�[S!ko7Q���;�m��~���i�]��� -_�� 8ӽ�̒��'u\x����";��b�x�(��q��8]��ի��.��鏊ͳ� -:�v�Y�������%2r}������7�� -endstream -endobj -52 0 obj -<< -/Type /Page -/Parent 1494 0 R -/Resources 53 0 R -/Contents 54 0 R -/CropBox [ 8 0 603 792 ] -/B [ 241 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -53 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -54 0 obj -<< /Length 275 /Filter /FlateDecode >> -stream -H��Q=O�0��+nt��>&^��fBB���~H ��qb��������n�,F -���n��d,LMl� ��j�h��Vڣ��>(����W��`�!ϻ"���>[*O�Is�z=����ȓ\uoE��Ȧ��������q�����"�c�i��w�f�4�{,�s3)�9F��H�� �WZ���c(���*���9���/JGu -�Բ��h�予�����R�Z�R)58��-��A߉T�w�*2iC\'��j���κ/�nrn -endstream -endobj -55 0 obj -<< -/Type /Page -/Parent 1496 0 R -/Resources 60 0 R -/Contents 61 0 R -/CropBox [ 8 0 603 792 ] -/Annots [ 56 0 R 57 0 R 58 0 R 59 0 R ] -/B [ 242 0 R 243 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -56 0 obj -<< -/Dest (M5.9.48147.Heading2.12.The.Java.Metamodel) -/Type /Annot -/Subtype /Link -/Rect [ 386 188 566 200 ] -/Border [ 0 0 0 ] ->> -endobj -57 0 obj -<< -/Dest (M5.9.48147.Heading2.12.The.Java.Metamodel) -/Type /Annot -/Subtype /Link -/Rect [ 62 176 242 188 ] -/Border [ 0 0 0 ] ->> -endobj -58 0 obj -<< -/Dest (M5.9.78681.Heading2.13.The.Enterprise.JavaBeans.Metamodel) -/Type /Annot -/Subtype /Link -/Rect [ 385 116 566 128 ] -/Border [ 0 0 0 ] ->> -endobj -59 0 obj -<< -/Dest (M5.9.78681.Heading2.13.The.Enterprise.JavaBeans.Metamodel) -/Type /Annot -/Subtype /Link -/Rect [ 62 104 317 116 ] -/Border [ 0 0 0 ] ->> -endobj -60 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT4 1545 0 R /TT6 234 0 R /TT8 244 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -61 0 obj -<< /Length 1410 /Filter /FlateDecode >> -stream -H��W�n�F}�W��0�{���G�I�F� -�}��U�B".������ۙ�P�];A ZJ�\Μs���W�u-� �fU�*�K&r�J&8W�ޭ.�mNZ�~Ķ���Ý _�3�M�v��1�$��X����q<$�f%m�T���_���g�o� -��}nH�I��X�9`��ݚ�� -k�%I���6��|���|(S�a�m -q!�`�Rj-ӕ�Fr��Q�������XY@E欜� ����T$��w��;h�s�3��`�$*�Lf�+2��ID@PT������%$���wU/��XUz�� s^ZpV�� � -���+�~�'�����N�лޠ"�>�RLe.�c_��5(�O�I�YN2]����Y^7�0~�D�*���A�ڐi �7C����6]����=wP�$�T,�pY���U՜�`%���ӣ���M#�{����!����*���C@8��c -B��(} -�ߚ�dF��ֈ��.�]�b�����/e$v��q�Y<�D���OM�[G��ջ~ޏ�5��+�KV�둧к��� ١�P�����)K�G;�M;�5ٌI�����F_y��4eV��e��!�hl����1L�`��;g�w P�<�Y")"�o�)'xƐ0�!ZQ"β�9��d����b��<�0���yȜ�t�l�5�dޏ�y�%.|�%U�a��~%�&h�v���uƼŠ�����(ԎƱ�4���@����+k��q���mm���i��@�A��}�%$������/jF��%���Gl(x�|>9J[;��د@��(���D����= -�q�@�'��[���,�<�%�������$ڥf�FUVt�aI횾5䣵P��F)U�r�0�r6�|��RC F9���.ɨK�y�ml�m�9_�@r�V�٪E;��-̸!��Џ8���ȅ�<T�~���;��3����/���@�9I���Z0���_�����8E�� �̜_A.�&KM���4y�d��}��@�mN���1�נ'�$)0�NM?uN���<q�B��[����������І�0�/D�û�[�dƮ�vz�i,�Ʀ�Ax�O�Q P�؟��e�8��O� �8o/9Oy�rmö¾���ۏ{+\�)�L���Aʥ��!�:߫�'��>c?�_��^����qS�l!x��٤��o�VEކ��=X�%��L���v�>T�H��C��.��*���9I�U��%��o�_����~5��Q�x8�ϫ�C��}P{¼����z.��C�I -�!�8���!(X>�= -*�.���ܙDe�o1�e_)���H�XQ%��*R�_�������&(�?P�G��M�y4��p��ցc1;��j��L��bn -endstream -endobj -62 0 obj -<< -/Type /Page -/Parent 1496 0 R -/Resources 63 0 R -/Contents 64 0 R -/CropBox [ 8 0 603 792 ] -/B [ 245 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -63 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -64 0 obj -<< /Length 303 /Filter /FlateDecode >> -stream -H�\�[K1���+�1w:�dsy�V�X�O������j�ov��@fB�|�9�$f)i`H��@�Dp��,H;1����aX�����m�D�CZ��-�%W��R���ɮ�9de��ƣǫ�:W4����6�T���f����=<�*���{߶0!�1c��.��Zw�O�esl`�-��+82�}�6ք���cm�<�ݪ�C�4F�ګ��jJ�ɷ���B*�b.��� b%��+{�h9?s�t Q�Jb����h�d�)������з�4��9Gh2� CM�6ٓ -e�W��l� -endstream -endobj -65 0 obj -<< -/Type /Page -/Parent 1496 0 R -/Resources 74 0 R -/Contents 75 0 R -/CropBox [ 8 0 603 792 ] -/Annots [ 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R ] -/B [ 246 0 R 247 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -66 0 obj -<< -/Dest (G5.518301) -/Type /Annot -/Subtype /Link -/Rect [ 211 374 271 385 ] -/Border [ 0 0 0 ] ->> -endobj -67 0 obj -<< -/Dest (G5.519383) -/Type /Annot -/Subtype /Link -/Rect [ 211 356 307 367 ] -/Border [ 0 0 0 ] ->> -endobj -68 0 obj -<< -/Dest (G5.519616) -/Type /Annot -/Subtype /Link -/Rect [ 211 338 377 349 ] -/Border [ 0 0 0 ] ->> -endobj -69 0 obj -<< -/Dest (G5.519960) -/Type /Annot -/Subtype /Link -/Rect [ 211 320 274 331 ] -/Border [ 0 0 0 ] ->> -endobj -70 0 obj -<< -/Dest (G5.518301) -/Type /Annot -/Subtype /Link -/Rect [ 463 374 477 385 ] -/Border [ 0 0 0 ] ->> -endobj -71 0 obj -<< -/Dest (G5.519383) -/Type /Annot -/Subtype /Link -/Rect [ 463 356 477 367 ] -/Border [ 0 0 0 ] ->> -endobj -72 0 obj -<< -/Dest (G5.519616) -/Type /Annot -/Subtype /Link -/Rect [ 463 338 482 349 ] -/Border [ 0 0 0 ] ->> -endobj -73 0 obj -<< -/Dest (G5.519960) -/Type /Annot -/Subtype /Link -/Rect [ 463 320 482 331 ] -/Border [ 0 0 0 ] ->> -endobj -74 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT4 1545 0 R /TT6 234 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -75 0 obj -<< /Length 1827 /Filter /FlateDecode >> -stream -H��Wێ��}�W�#��}��1�q1`l�a6�5À"����7�?��̩��E�x�0`��ͺ�:u��~�������)�¿RdF�L�Bj���7~2Q���Pw���O�FI��T����Yb����C�g�x���TQoMt~�/�(��������;��P�ݟ�`ig����ōձV��L�Q���߿�U|=�3��C�:�&����vem2���ء?���K%�JL�>~���O/Z�)����d1[Ӗ�Ud)2[������(���1*�*��27�fJ�D��g�A�Bui�N����*�D�25~��n�M)��O�x��˲� --P�ʄ��Ir�4R�|9��ALHr�Jl5�n4e�eKK���H������Oj���щ,���T���T��2��. -�*IK���w�h��!���FoT���47E*'��J�*Ӝ��90A^힛A���itg��G�����w���8�m���tOqJkcj�A�[�>�T䩄�"��w�@�C�V��-�E�b-���j��~�Ǧ�~Of&��|�,�@f�\2��t$@gိ�}xj�{n��P��Q|d�y�tn&`�x ��a!�v1�C�8�|b-?$*��A�̃�����K�N5������ -��, -��0��zt{A-N��8�F�V��&an?D����N� 24O:�������_��i�:�ڦ���?����g��Gh�A�t^.t:\����]ա���s3�z��q1��I��<�P�5�X�Տ��MP����TD�X�s��N�n������Wq�:Ȅ����+۫��<�����p��]�*߄�e�"��2 -9�ު�M���@;K�>���N -�>Um��T��L�q&��G����(��~j\T��w �o�jtǓ뼒AYe��,|Y�����:�'UW���wx -�Q��*�gV�)�`��v�[���\��E]u��[`k(�#�f#$71���Δ����9N�(�6�����K#G_�_��#Ρ5L@�m�yk��I��:%3;��A|�9@ri��E��d��j������P���ͱ��/�el��U��E�2�L7�@rn��R'f�Hm8�x9������@=\|�@���~���7��^/2�.�S�� -9�k����?�0����Z��N4��;߬gǽ�zr4{"����I�R'�#�����8�p,��d����A":$x��ŏW�N�~�J�G�]<��U�t�����AO�+��+e`��w7W2�.Aѽx_+���Ĵo�*�$����Īe�|8��r0=W8��� -���,�8�Uǰ�,�Ԑ�����v�Җ��As����j���Rw�d�t��m���[41���/�!Q�Q��=\�"�7�J����ֆ�o;c�}��ω*��H9�y������i@�F -�o0т&�?�c2������%���E��� -M&z�2]j13[�!�pd�> ����S2�HW�7z���cc�=� �B���$��4��Vo��lf���@��/�י�&��\%u��� ����4hi�%�{r�0A����O&1�%�%�}��H����8x�mQ���%M��j1#g$�_�O -�%������k���77�0|��q=��Ф���~WJkp�K�< �fh�] -~�y�e�U`�"�i��9�Q�Fw�A��ԛM�e��1 -�a15&����ݬ��n�_��i*�;�s|Xn����nCW�C,���x�Bc�B���ęC�ٴ��$����V��6XN.�fR���-J�?\E�ﬦ��U���YE�o��o�"h� -endstream -endobj -76 0 obj -<< -/Type /Page -/Parent 1496 0 R -/Resources 82 0 R -/Contents 83 0 R -/CropBox [ 8 0 603 792 ] -/Annots [ 77 0 R 78 0 R 79 0 R 80 0 R 81 0 R ] -/B [ 248 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -77 0 obj -<< -/Dest (G5.519411) -/Type /Annot -/Subtype /Link -/Rect [ 206 500 302 511 ] -/Border [ 0 0 0 ] ->> -endobj -78 0 obj -<< -/Dest (G5.519536) -/Type /Annot -/Subtype /Link -/Rect [ 206 479 302 491 ] -/Border [ 0 0 0 ] ->> -endobj -79 0 obj -<< -/Dest (G5.519555) -/Type /Annot -/Subtype /Link -/Rect [ 206 459 302 470 ] -/Border [ 0 0 0 ] ->> -endobj -80 0 obj -<< -/Dest (G5.519606) -/Type /Annot -/Subtype /Link -/Rect [ 206 426 306 438 ] -/Border [ 0 0 0 ] ->> -endobj -81 0 obj -<< -/Dest (G5.519613) -/Type /Annot -/Subtype /Link -/Rect [ 206 406 307 417 ] -/Border [ 0 0 0 ] ->> -endobj -82 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -83 0 obj -<< /Length 1511 /Filter /FlateDecode >> -stream -H��WM��6��W�Q,Z��s�n6EM4��+ӻZ������ΐ�,���l�|�y�� -sW�e)�Cy���R�����qA���:�J��9��~���Y�B�ie��|����2O�����Zd����Y^D�<��ij�|V�l��j�R�y�;��/��A$^��s�GQ�A[��̢����<�����n�9a��e,B&� -�-x�|�A�����',�fi���o�0���m>�K|M@����g>Y�3����W�8\ID����C���ݼ�X�1G,�A�9��&F�;�BL�ҐE�1I�1�c�s���֬Hm��S�'�2��xk���QP,Lxb�(_���������4��MG���~�2��{.��zh��Z�xgg�y�� �����j�d�� �<j -è��&u���c�����:|��� �P>�N��V~�U�~ 0f�OP5r���9��y��[zAQ�o��Lj�ec~BvH6X -Iß�%�a����@��~�ch��V�ҕ<'Ѻ�q��'%�)r(.�����V���b�FBe&S��P��Q-��@6���[(��a�Ħ�qq�WA/R�Pg�a�}=��'��b���W&fM"�49Mj촑�M"g)������Wr���� X?�'�(|�(m�Ͽ�5r"��Pc.w¥�x���QwU3�I~��G�c_�����9���!�X�M�� -9X -U��"���ӋW����(�ΰ6��O�T�l���_� Y��*���B�6�8��V@�y�$�-�T��Z���ɖ�b�tt�=������QI(��#V�����)�A�0ju�xb��h����kc_&*i����l="�, h@bh��H��49KD�xϭiv��<�O�dM]�q��ɔ��of�}o�DzR�����v���⪔�0c�#<~�#��z"�o�T��1ᩕo����'�L���px�֏>9��|x������A��U�|L`����3z���d1�61����� d8-sHb3$��� C��u��ł �YD\��#o!m�=\��N�D�l�6��r��;�x;�l�5�_x�?�Gb�X.q�9�?,>.�-s�N)���T?�{�8���x�sp��x���p�H��}�M�A���m/mm1N����pMPdg[�*��G�@���wi_�==��X��i�e���3�y<�=�}(�6���.~4Cέ`k����5�����c�� �×�yo�q@n�F��M#�2t�XY�蠕y9�S�y���[�����m���(����{p\o]�*#�(�\�9�ka�kW����F2 -n�����"#�n#'�g� ����t �^�!���q -J�+��KV�KЧ�G�6'���>�I��7%#!<���J����ƞ������F�5T �������L�5��2��{���d�g�d5�#���L�MުBA'/n[�L`����xQ�5V��6r����4~� -endstream -endobj -84 0 obj -<< -/Type /Page -/Parent 1496 0 R -/Resources 85 0 R -/Contents 86 0 R -/CropBox [ 8 0 603 792 ] -/B [ 249 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -85 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R /TT10 250 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -86 0 obj -<< /Length 3069 /Filter /FlateDecode >> -stream -H��W�rI}�W�c7�j�^ռ�l�ca��ވyh�ƈ�%�e`��ߓuSKj�� �D���쪓�'o���糙d��>^���_ˬl�f�7\s�f�ϧ[��۰-�v��x��k�n����6�_L�h�d�o�����/��4��ꉬ���<>p]�1���m�[X�={l�y��������۸��fѯ�/X8�m��np�+GX�H��>�,����n�$A��rJ�β�S*9Q���v۴>�%<c��Q�m�x�>�$}�jv��0�V���1�p�H�X����2�,-Z�(`S -�0�o<��FF���v2��$�"��m����A!x��6@�8_�jZ�FW�n�e����_?l��;$�D�]�ǎx2&��zy�8p_+�}OT`rB���80�i�.��m<m���؊pŧ�n�ٴ6�#< ���3\&����Rn`�Fz���v7}>ڧ�y1uxʦ��N��m -c�W��m�~X�pp5'Ȯ�h�f��! -W+gʡ�G������5ŗ��v�AW쎀�Ǜ�U�?Y��[���>�,�r�r����B�|�H��������ӭo��X�]������{Xn��ӌ%lg,�w�Cd�|Y����y���]l��du�?ł��v`Aaw������/H������ -�hځ�.�@���o�~�>|Oǝ��5C�nr -�c��o$SJ2�xc�R��v�<8�DHԔ���X������-ο��3#���co��?8[��%��m���Q+�̄�Cʹ����J!E��R�Vīk�ܣD��{_k۴�i -$V0J�*!(5��BK�@u7���58��I���/mG��i�\�}�·81�#�Ɏ��y -��� -?]� ��xY#�Wˀ�T��Z۪_o�~�ٔ7�|@��A��f�Z�Ї�����Eс5Uft?�����X|���N��L�G!����F��%�}��"ݬ\�ꞮFD��Mv\�q'�Q$��u��LnU�m"�%L&<��0�ɚ:�X�D�5;7� -G�`\_]�p�W�$��q�>����.�����!�J�Q><��e�,�Ъ��a -CP�V]v%KJ����@��fU� ���*�l=F�^!�$��O$j�=�I��P��hg,����k-1 -��!&ӊ�Kx�!�l ����N�2���ME9+nZJ��(CEk��1���HQ�Fg�HRIK��h� �(9 I�ŤsE�(N���s(�a9��3�#���ĔmqE���'dd�3�ț&�y�t(��5��I!KW�"۔��@PD�w5E����!�|(�'��y�"�#��L1�h?��}�Ǘ)�"�f���m)���L�@�-�dQ���־�>�ז���y�x����_�� -x����(3ҋ ;6��[̡9��1e��u�JQv.��l� -�� -���.�V� -C���m�gq�JԌU�nc�`4ɖ�6��7ږF� �eq�-�n{�؛�Y�x�L�6f�t���QT�c�{Y���Q�~��<A%����P��,�HĒ�;`i9 -�:������>LMH -�$��3ȋ�I9�j�����.AObK_�0�,����0��L�9���MXD ��}#<� -��˘w��V�1�'��##g�$'�f���:�}�@�D�G�X��(4�&�~&�@W�ta��z�Ը��}���p���A_��kG�#�6>�A -�f�����2J�mh��2�؉����:@EY��{�m �Ɍ���@wB �J'UcZ��Z7�N���TvB�0T����ܵ�����} -ok*>����fZ�h'�K�1֏�ꨱvۘ��۷e=�p�.O�`���@��9�H,� ��ul�A�m$pI�Fc<%���&(I�*8і�� -������{/�%�AAo���>o�,�jv����Z��k-8M��Y�M��Qr,^���\�8e����j�&G#�m�ƨw� -]>�?���L�b�ӏ��q<�Ñ���ԍ��B��!TM3� "��>ZY�34*�q�g�7h�eh�y��O�E��o�e�曉��nλ�#qI�ur���$4�Mme���C�F� -/Ƈ��8^�ʖ�_k���?�/�x���x�7֜�e����z]���{�w�Y/S|��czp�Q�ބ�'�1b��3Ja\<>x̹ 8|y��`ž�o�&�;��z�Χ��o�� -�espD��[I)���� -�u��)��k�Q+ϺE��(>er<��'0�N����2�G^����ԁ��9�j�qUu4LF4q�tX��( �q�Td �����,�5ٟ%��t�Ѣ9���7r������mΠ����������f�_�H�8Z�p�-���FQ�_�p��=��FT�X�� -{�G;�,����.�]O��!JڦŒ���h;�RcpGʹ�l���Hm�~v4�����u^�l�ߔ�rV����d]������{=O�D��v�bNP4���ƯgIJ�'; N�B�.GmX�\�/D� Q�C�����U�+��{�9dY"���c Lk���a�-T���M��KI ��J�hD�ϻgZ(��U��A3s���e}X�4�qL!�z���Rcx=�%��� �m�a��̕���������Q������Xq���@U3��PM\��-��4\��.~RG�����i}Qa�,�{��o)dU��l�)��GY\�`MK�kw_r֙Ն:g��=~6�NM_�6���B�ŭ>�i����/�a �� -G�Q,���g��L<�ݙ¢����d������Y�SHc���q��`z�r�ў��s6�沶rI,ƚ���E���yD1��X@�2�I1=IV���4�����n�TD��H�J�w���:���i��q�Ƹuo8�9�o�H�� -���mv�r�� -�#�����a�.J��xz=�~�P�o���x�zA�Z�u�J�FYE��M;�?�9���u�Z�sa�"��:���T!��t��#°d���5"D{��*p�z���������, -endstream -endobj -87 0 obj -<< -/Type /Page -/Parent 1496 0 R -/Resources 88 0 R -/Contents 89 0 R -/CropBox [ 8 0 603 792 ] -/B [ 251 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -88 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -89 0 obj -<< /Length 1033 /Filter /FlateDecode >> -stream -H��Vێ�6}�W�*b�wQy�[�Ictէ \�v�ʲaɻؿd��N[���8<sf�.�d^1T��Q��Hs"$�PI*����ըl�c�ڲI��2�iJ(�*ʄ��!���,�eX�ߋ����gf`gq^υ}��q����n�j��4ɰmV��/����w�v(�d�!����Le��zw��,�E������g��W1����;���/�}J=�r��C���G���a�Å��-��_� '���+R���HK���$b�%7E���f� 0B -���`�����uB�c���D�WAR4# -`�&�vrmz@t,N�G���P�gј�oxy��]:S\£h� �X���!Yd�W�έ����5�$wq7�c�yc8���<��g��h�鼪m�zzN9�hj�1�X������Ζئ�2�P%� -�Sɵmxغp����VM��BU�:p��a]�m7� 2�6�����XF�Ms�k���udz*}�)�L�9�������;Zj$��V��OI�B��Aj p�N��(P�@�$�[��MWA���LB���4��`�R�<_���@? ۢ�[C���E퀈��O�β�K�D.z�l���n����Ui�jל�i�1��BF�M1��t��Gt[F� -��j��1���,Vh�KVB��\����G����~�9�����y�D���{���_�(rJشJŤ�= -�AK.}k���Zh�tv�Z��(�� -��]��|Gi^��nW;۠{[��*�N�A?��!hH(RT�hy^WAV3��(h��V�ŝ���{�(�L�hv8F�>��Pj=Nᩚ����608gW>�7�~V��;���>�G9�U��σ��8)$�tp-m��'Y+~�����T�݄��I)�;�AX"��6���_[gX�r������C�V�N����[��!�اnXC��x���O�P"�|n/��?B���ᠷ�JQs�t]�zՆ\��<x�8|{�#��c� -endstream -endobj -90 0 obj -<< -/Type /Page -/Parent 1496 0 R -/Resources 91 0 R -/Contents 92 0 R -/CropBox [ 8 0 603 792 ] -/B [ 252 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -91 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -92 0 obj -<< /Length 1057 /Filter /FlateDecode >> -stream -H��VMS�6��Wh)w�oK��2}S�c���86c(��W��^�X��L����s�=�i�:* -�*6+�(�Y�9 C�����٠Q9�34����+�n�%�� -�j -K-9*�V������Z�]��N�iAe�Wq���l���팧�w�rm��/OQ��$�_��7�1�8�p��B>Ch� �mŝG���6`�L"pKD.�KG:4�`�VY����%�$]�J)M�A9ˉP��h؎y�w^�h|8H*sOr����p���@�_.b��� -"�� Ԁ|�����Nc���?bujaXp�Cu��<�؝U1��k��g�0<�u��������I -�ET�PŒ�AЭ��Հ���1"�������Af�3�x�Fx�'4f�ew����?���%;�f��I.���O��?\���S�ު����ٳ���W}&�����{�t��O��/����$��wϙ"���0�����&�����������W�&���ٳ��y�d����[����bTձ<˳�@٩_� �e�Tj'OPu�����w�o������k���%�&�*���M6�����wu;����;hzi4�J̀<�;:y5�|�;����$$��N���$�b��.a0��o��)�$zW��R�u�XC]��Z��?W��Ey?��$��&��i&+��[_�6Ń�lƵZ8'��t������>�[���}Yoj��t�� -$�w����������yFWe���$.*Ժ`V����>BAL.���?�����8�t|����w�̂��3w�(��)({��2m�c�����/�N��+Lxx2H��/��� -'r�S����G1���c�)5����OWW�.�N=\ԭk>�R=�g��O���E��y�`����(z���� -ym� �7���=��OX��p5`�?�!�4:�)Q�"����tk��7�_|㷾��+���0 �c�M�|��|����%=9�ntq��M�8l -GC������5���61 �n���g�+���F�������*�� -endstream -endobj -93 0 obj -<< -/Type /Page -/Parent 1496 0 R -/Resources 94 0 R -/Contents 95 0 R -/CropBox [ 8 0 603 792 ] -/B [ 253 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -94 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -95 0 obj -<< /Length 998 /Filter /FlateDecode >> -stream -H��VMo�8��W����~���[����6XkOE�L�Z�T �ɦ�~IYVR#I�]�([��=�Nʒ�r@�S��D� rBS*��F'�VAm��lm��ߗnmD �*���(��ט/�E��[y�U@f9�,?���_�P�0�Jն[���"Y\��u���Iȸ[7��Ʌ3� Lfm��#�eu_���<{��P��sJ���1���=���q� 'E|�'��� -�G��b��B�V��ݤ� -(H���(X����o�c:���;�(#l����,́Ӝ�S%�^G�z`���D � $��ANi;CD� -?b8!KAeșS�y���#CR!�q� #)\�d!P߰�V{��(�N��S�4�T��E6a�YZ�z[��IR��:Y��l����3��=(�H���Y L%��=��o��Dl�+0O�$ -������U[7F��1c�8�TR��?�b�������[ -�;]7릮��3�m��"'�� -��f|cB�vm��:$���a�Si[��d�ɘ��C�.>|9?=ujNO�Ut����N^2�g�����x�/�ԛ��E~�Ȥ��e�����>o��&��CR^�I��<}��_��M���F���R4O������ƾ��C_��S}0Q��Ŕ�lJ��6�u]�+�U�Ә������� -��{p���R@c��y�*\��Lr�W�7�D��G)�|���D��~� -� -���E������I�w3�;������z����O�h�M�\qu\L�&1�E��1U�Z��?�o�yC�?���`4v���/��U*Գ%���^wL�d�����e֯�ƶ�YNR9ے'������w]�z��`�����06k -���uTlX�>_�$��4H.QQ�⮤p{�s�7���-����r��|:����90����j}���'�����!cN�u�W8O���U���c!,s��1��î7p��\�u�*��1"[�̌_ �G��9�� -endstream -endobj -96 0 obj -<< -/Type /Page -/Parent 1496 0 R -/Resources 97 0 R -/Contents 98 0 R -/CropBox [ 8 0 603 792 ] -/B [ 254 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -97 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -98 0 obj -<< /Length 1053 /Filter /FlateDecode >> -stream -H��VMs�6��W�v"� |�W:�ԍ����"A2[�Ԑ�=��}H���TI��A�H.��۷�e1;+ -�*V3�(|,Ҝ�DN�����U�Ѣ��j�������J�B�b6���/�G��n��\��l�q�~ Nӂ���6���Lvq툧L»u��j�nn/Q6���z�7�9�8�p����Z&����ɣ�v�;� -�^n�0B�t�C -�s�Ni[b�K\)��ȑa�em���1��3o�ʜÝ�(��$\" ,P�g��X�4���&�A����O�]3�:Q�+�)1i���' -æPK�R"�PI`B��ܻ�m}�A��������:�DK -��;l�ը�#~�[Wue��E6���Fn;����bXh~sD�T�������0D�'#ע�_��_��J���cS�#b�n0Ư���x�wk�v~Q�ʅ�ʺ"�i�lN�A������7�W��H��w>-��ra@8��S�R9%\M���s����<�t~M -��m�H���#��a -*�����%(�����o����]c#�S��A��$�r��7Q�н�+}�g��HN�~@��.ۏe�6ǕP4gD��~�<�u��B�n��`�e4L�F/OP�oPp�.�*�!a��-*3 -�mß��U��D�I -=�� �f���~�:�����`�% -��"�v��������o�Y���Q�4��C�nck�ab��3A�"���*��0��ė�nߡ�����Mu}���Ls�(��&D�A83)�ڮqeՁ\��}�j�����ś���I-���+��>!��4�5�h')�� �x��ӊ��d�Ӝ�:?��Tx�?�i���~�ܔ��C���������9��]"�������3�(���x�~-��9��Ȃ��w�Yv��&���r��0��-��OJf&�4�~ ��DG!DeBg�`��z]Ƴ�b_��J�A���i���B�K��5�IJ�u��;8oY��TCH[FkQ���Nރ���٬� -endstream -endobj -99 0 obj -<< -/Type /Page -/Parent 1496 0 R -/Resources 102 0 R -/Contents 103 0 R -/CropBox [ 8 0 603 792 ] -/Annots [ 100 0 R 101 0 R ] -/B [ 255 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -100 0 obj -<< -/Dest (G5.519536) -/Type /Annot -/Subtype /Link -/Rect [ 292 214 335 226 ] -/Border [ 0 0 0 ] ->> -endobj -101 0 obj -<< -/Dest (G5.519574) -/Type /Annot -/Subtype /Link -/Rect [ 224 295 393 306 ] -/Border [ 0 0 0 ] ->> -endobj -102 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT4 1545 0 R /TT6 234 0 R /TT8 244 0 R /TT10 250 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -103 0 obj -<< /Length 2128 /Filter /FlateDecode >> -stream -H��W�r��}�W�#����a��ZY�Vo\K�k(���E@v���oN�%J�]�KU"����>}�t��rv�\*&��zV1���Yŵa���͖���Egٺ�%�����?��t3����-�3���g25��.+�?��d�˲������J��9� -g���jw��[��-w�j�a���'{��p���Ͷfޤ���ZO� -� -�]�h�r�i���ϗo��'�K~ň�ઘ���${.�{��u�x�]�y�Mv� -���2����q��-�c*^�?� v�q#��b1S������L2ᖕ�>k.J�D�K���bm=�� o��Y�5�j.Y!G4�ɔa���2:$����<��q�+�=�.�kd��z��� -������ˬ�|��� -�C�Xh>�Sj���s�]uE;�D���V�2�D�X�=X�_��`ݱ���s��H^�i!c"W� -����m��5�}���y:4W }�����n��D痹3���]��ɋ��ѕ��� -���@'��0i�U0�7����YO�;�>���z�G_�\Q�\M37��Dڷ�f�#_&�����+]���d0������Dm=�㟤WKVh�K'�q��@p��sT��}����awh�n�nXU(��Mŕ:Dv�@�"��mss��̠T�u>W��9��B5[p;�3��ԓ�U(<Iԙ�k�`��yd�Ѻ�jH��G��BiO��c"��i�[��u���p�n���?/s$%��~�2�%�����a����7u�*�HTv�U7�l��W�vQ�V��Ywg���v����Da��Q*(��3�+ZFi+ґh��G���y#W��8K%��=��ۺ��K�A -��26��tz����1=դ�.WЂ*��I$�\D�� -v@! -�ZВ{$P� -�oagN�5{F�ok��?�m�!�:(�߆.gNWh��WEU<�>�=��G��U::R�)Q�wu{��_ͽT7��d����ݔ^(R�^�֓̾�t)P��?:q� �N_f��?��>�JEs��$f�����o|��Gg_�3�t��?:Q���j��27�*�nK|Y]��%ꀘ�u��J�a�m}���:6�Qf+w��KZa�Kz���%1����t�%��C�0L��9Uf�[����6x�F�����(k���~�7ܯ��:�@�m��Wi�#>Q8��2���/�"��߱/# -�������谓i�UJfJ��Zq�F�&0J���F����F����W�y��GF��>�j��}�C� -�6c���2�U40p�ws��N\�&N�R�hН���?Ȳ�}��T)"��;&�K*Z��S^R���i D�Ԛ�Gl����0 �襑�b�24rx���V�^��ҫ�����)�����x_��vX$��hʂ���2�b@>����a����i���4���@Z[��s��!��q��*���C�i�m��#�q=�����1�X'��|��� -�{�6�B�#KY���I��"V����W�v�Þ�����)A���x�f܃���hX�m����D -Jp�&�Ux�^vO}�Qd��B���w��,ĭ4ş��R *@RFH���6����h耆h���R&�_����$ -�I�E;��@�i�����d,y6*���;���z,cWX*]E��XX�.� -��N�B��%���0�ر/��F���',|{�=��d�q�J�ܖ�cU�3 -;^ 5��T��#}Y�0���N@L�y���W��2��eh�0a�0���Rea���t���7T���$�f������c80�� -l(�e��Y���fP^�/���q��#>X%t��Z��_r�i!�"6�Z��".���dod텬>���A���+��Q�24r��t+��im�zܛ�.h�3�����i+d\��p蒂��|X͞�?�����qm�3�*�wZ�m}g7 -���vj�?߬KG�b�~��y��� -�x�8�5&LJȭ}����uz4��N�K �@�:�h�I����^�y�-��� -��&��˓Ѱ�����}�GP��Ÿ#l�XـU�F�u<t -���� -W9�^ -endstream -endobj -104 0 obj -<< -/Type /Page -/Parent 1497 0 R -/Resources 105 0 R -/Contents 106 0 R -/CropBox [ 8 0 603 792 ] -/B [ 256 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -105 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R /TT10 250 0 R /TT12 257 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -106 0 obj -<< /Length 1904 /Filter /FlateDecode >> -stream -H��W�n�F}�W�#�F����o��0�6��D�$$�@�3{�.V-�\�rv�̙3÷����B1�g -��0��6L.��l����[q[�a�����N�O�Lp!�e��l�Gg[|�}�~�������P��\U�>-��A����-��������h���Y��ݶO-kw+vs���s�}��a�m�+�4\9�,�Ʉ3�D~m�c�ڻnl�d�8�AP -�^�-�d�R�^|9v��MH��'kׁy鹶MC� z�R���b&�a�(+���[f���08�Y��`�Ɍ�l4��Ms_����U����;Ņ�$�&�7�i�O.�K) )ɣ����yU�֊7�Y��qW���l��Ha��Mf�!�x�6�ԯ?����&�;"Ss�_U�nˏo'k>[C�깩��O\2բv -���O�M�)=dgM���gg�4żl���f�*�}۷[�57����!`^�s��؛�o��;4�"��-�1SR5�ct�穭���z�x���ھ���ժ�{ò_ߧ`?57y����z���S -�H����t[^#S�F� -�!sULD�O%ؑ��Pv����۶�q -U��@b8��e�M��1�~ -�%�oo�#[����ۑ�W.����;jI�(d3��e=|���J;�ϵ%�q��i���Z6�㏏xl��=|�uݺgu���z��;�B���������n6{v�L���Ƈ۵�"Um��(7G(���������1�� -5kR�FėE���"i����[��m��>������r�<����v�w���V~��B����I���G�e?�"1D��j�/�HN�H&���6�(� -�,�q�w�P�s�'�.�gQk ](�x.H�Dh�zu��"�/j:��U����\ï�2��kP��;'a��[2�k�@�����n��T��J�FRܑ�Y����N��L��c��v��ء�^X124�㏈��k���ɋ�yT��U��~s֞Uy;=I����mP��L��:7���d)�^�}�����N=�����Ū'v�II#��Z�d���V��l����}~H��_���sC�9��� � -�o�+Ғ�lc�9�NT�c�FY*� -*Ȣ;L1HT�i����:F������b����7��ޱ �»k6�>��cQ�Ȗ���๏��[� = �ЋD:�u����AN�#������yR@��D�����,�Q�P_�졥��� -�%�)G�V�<��\i��0>i#MI������2hF�u���U:�危�g��$6��r���vv��]�b�y�bؚ�x -��y.�%�4lM�3H�<���ϣ>G��������Tt5;�D>bP�����c��+Q��&�f�JXe��d.��A㶍����ǭ��.D��3R.%��T��yy�`%�`�"�������^�����5E��9��.gM�G���|��Ν��TxFF���*�>��Q�ʥ@ih#U�ȚJsm��v�����ɔ|B��!���H�=Ӕ�n��63����/��m�ҥ�63m���vZn2BI�Nߤ�N9 �)5X8Z�]t��tW*���ݛ�t��)|mX�f�#1�& -�b�>�����N� -&���K��h^��V7��X�O�(`{�����'�^*.My)�ړ����Q6"�����Ԃ��̔���� Ǽ:���d���� )���a��g!1��,��ӻ��x7.˦6�4%Qt{BX�3��9F��)R��^/+�n�s�>�,�Zѧ$粤&��N{� -�lL -$|sy� �Ӟ}��>��<$�")A�dd '��O;ąn�La�<֔�(��1�=�K~���n�ᡂOXIo`Z��i=��?lfGf -endstream -endobj -107 0 obj -<< -/Type /Page -/Parent 1497 0 R -/Resources 108 0 R -/Contents 109 0 R -/CropBox [ 8 0 603 792 ] -/B [ 258 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -108 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R /TT10 250 0 R /TT12 257 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -109 0 obj -<< /Length 2023 /Filter /FlateDecode >> -stream -H��WMo�6����j�4�DIEQ �ݢF��zrzPv����$�����j�v�P��%5|�f���]9;+K�+og��+���Xfr!�4�����;��_V�[lgg�\+��fRH�2V.f�������<�J&�Wd��*ǫ��_�?ǭs�u_mv�z͒���K����c�E�w�ͺfޤR"7�L����,X�ݵ��U�P12vy�� -{PB�WtYK�Ӊ9��`/����:Ѣ���$��W����g�_d�� -\���P�"���q�2aA�Y�:)��]�3�T�[F`6B�L�\�������v&�a��0�j�b���&��m�|��H�������,��Gz�t�1|ܯ�O�z8���p�d�*��B�M}�2<v!��f8)�Ef��$��$�./~?���_�_&.�O���W�Ѕp'�1�N�������}~"���)g�8��?V��U�|T�k���|�����0E�}Sw�E��؝!�1/���G�몇������ -�����~ �Ea�"�Y�E��? - (�d^����.�ʻ�'��q4�s��U=��xg�[��t�'��8��w4K�NQG�p�۶��JRC0�0�}���.�^T}uX~�����ы��������u��d��NQ�Rk!��*9UB����j�=������:j�kZ�A���ۘb�����S��ə)lLАbA!�B��.��$s!�5�,狶���6�N���Vdy�d1�K5hV���9�X� �5$qN��:�N�;hw���b'`@��FOd�q�q��oR�}����"� %z 4�)Haf���-���2�� -���\��+o��� Þ�ʧ[s��9���[��RȰ��2[j+�nW�(`bK�;ζ=C�T�'#k�,q�G���� -u�w~��~:c!�>Y~��͢�R�����=�5�;:`�&����Ș���j�E�It^+��m_����j0�`:�W��j�}���o�f"�yqh��2�����ׯ�(������� y槇~Ǡ��x�G��"6e�t�{��r��}�M��1D��������B0�)�<��%�)'x@��^� 6ەNHقbK�Þ�Z��O\�%|��C\��}[��2��}HQȃ.0&�"Sp��,k(iձ�z��+pƞ��R��kPţ�$EL+0��M�*��q�����f?F�_3�5��>� -5v���)>{�����/ɖ8�a�(��8C���,K�Nxg�0ʗ!]ѯ��)aC��$�#C�Iy�E�(Ǡ��]�j�_;�!����P���Ż�&��u;rq[t�7 -���h<ca�L�]�O�F7��o `�8ز4ָ((�a63�U~� Z�&�i"ɱ�� �PN:�td�3��"��9F%�B�F��!�@�������)��W)w'�m�r(��r�/A���{��qyǬC���8b�D�#�q1����� -��0��� -�?3 -��,c9� -�@y(7-���F���#-�f2�+�����pς���E p���6�q��� Ɓ����#��c<ʗa�3d7\�B���h袤|��)D_.����͚����!�4^���{3,���uu��,*��&����iY&�������>�\������})N���)|*rr?��zָ�?����p�3�(�4�x!����s��g�ka�F�x ��wZQ/���Z�qM��������*�1��9_Чo*���5���H�=�WK#�2h&�4ǯ�U)��(E�֖?Ž?M9� <����Z�@�䌹��at_��q��)-������!LO ����.c�����!u��!�NG�(u�G�a�E������`K��F7ã��t"oGk�7trj�{-�d��'�>�2���������|4����k�f��_U����!ɩ#ŧ2|�%�a�R�{�#�p�d��̰��L�4��@f||���5ڋt���D�Ol����M -endstream -endobj -110 0 obj -<< -/Type /Page -/Parent 1497 0 R -/Resources 111 0 R -/Contents 112 0 R -/CropBox [ 8 0 603 792 ] -/B [ 259 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -111 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT10 250 0 R /TT12 257 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -112 0 obj -<< /Length 2567 /Filter /FlateDecode >> -stream -H��W]o�}篘��6\���E�Zq�(u@D_�<P-�!)�������;������k�wv��q�ɛ�L%f&���� �c� ��҈�z��j�����J��7�7��Q�q7���������j1�:��~\�m?�Sׄj^Ou��_���A����5�����c���aW�sm��z�e.��������i��O���o����};ء-[x�H��>.��~���i�$9A���7[�i=m+U[����wM���9ߘ Z�6�u9Q�N��g�&�fɋɕ��X�'�������.&�W��qՙ��id�C6w:�{;�`��G���lZ+|�VK!�C�M)��kL -�4���o߭��f�.��Zz��l�*�֚�6*n-�L[Ӗ�kT����:����ծ��S������U\�����U���F��+�lZ�^3>��sm(�Sȧ�@�zڈ<?������%�߉��ӗ��bǛ�vӼN�Mo��r���q!�O�AW��n���\lw�q>������|��jT�`&��3}j�u�C��j�{S�Ŭn}�o�'ϋ]��T�):r�u�W'9 T���T���PM,�De��q�(��f(�u)�����y����i��X�#i�Q%��i�2h��˝xX���@��˻a��j��>�l�����z�_~Y�B��Vux�� [m�#��-�����c�*��0��H�qZ�rfq�J.^SrE�����rs�J��$���>?��X�����ң�Z?���f�K���! �����:|�A~ -�CB$X�I��n��1@��\�jp��O�TR|J����W)��R@���AخQ�%GV���8�%�*��«H�l�V`�l�=�R��遮^�G�.�/u���JoW�2� -9���7ȁw%���F�R�F�l�L�l�%�n���m��\�����C������n�Pn���OB�G�I*��'�mA�!s�("��"�)Ff��'ش�� -��2A�6��� -m$�㲞NJ�pE�_{ -��D��.�-2`�8Cf�E�/j� ��oBKl%h�htSnG�j-�e-)�:��ǻ�<L��W(��" -���lhI����_�N��]1J��R�8O��(B��1G*.=V\��qf�:��l���zB�˯w��s���ӏ!%b RaV��,�Ԯ���hK��L#�X��`H� -3���3vS�u�\���Kڈ3���B��h��^Ϲ�K9*����U>:���hk� Ŝ�h�%ӵ���}������_0@ Q��l�q��x�/M� ����1��Aڒ*�oK�F�P�������j4��y���TT�D�c���G���� -��b�TC�p�:/GGE(�_kJ�/h�Z-s)��: ��?=>C%�]xB���m����1�3��]���L��j��>19K�Ŷ�Z�Y���j��d�t���F�jZs}ֱ_���(� ��6��x ����$�MҰ�&#�hgcq� -���R�=�ƪ@��q6��SR�}��(��3�{2�sIԌ%�8K�T�qȉ��<j�P���yJ�����ym�� -�-�H�y$[�J:9�'��G�!~��S:����@ة_I�k��@�n;�O�����~M𡙖kR�ǖd��7m�x=�A���t=�Ω-�Jǵu�密�����D�>����c���>�b��CPVu ��`�X�l�4�b�G���)�B���A�-%�E_���f,GC -�.�j��˘$1�����Ӊ&�r(1(�u��O�h��� �[ԬF]xj���m�L���)�n��������K ��0�t���q|�Uh�P�̥���dT�a�$�t��߮� �T� T�Gf#;�8Ԩ<�������t[��_���w0���#GYM�>Oy8r�c#�!,���p�����`<nV|{{9�`����'Xc�W�J5Tx<�9���i -�Zh�C�*�0�~^��U��U���#Sߟ�s~��v$ -�����t�C���O��U��ַ�"��u���"�jF0��E�X�'�klL�Dij^�e�q&�c�e&�Q�mL�ďh�R��w#˿S@KBY��Z�Շ�p�~��%/�>H�� |�d�NH�q/Ѝ�D¢�Y'T̩p�B��q��v>�rqjd��>%b�����i$��ɖ�F�!ߣIL{K��=_1K�|����'��叆=��L�=O������xQQ���0Ժ�=��~�+�:�̴��٠�~i���G�#��!�m���W�̴<���WK�_�-�{�uS�B�a�t��YLw+�L����D%�H�6��Oj�āgT��c�5�m�F' ��RH@��@��P1$+����W�G84��M�!��(߶q��C-Y��%xs��@����E������z�F$���睩!..�q�1��'��=ŋډ�p ~IW��-A��0�b�/��^Ը�?�F�ҳ�~��md�7"�hzy� -n#gs2��p����:�g�q]��O���.��W��H�s�����r��4 -endstream -endobj -113 0 obj -<< -/Type /Page -/Parent 1497 0 R -/Resources 114 0 R -/Contents 115 0 R -/CropBox [ 8 0 603 792 ] -/B [ 260 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -114 0 obj -<< -/ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT10 250 0 R /TT12 257 0 R >> -/XObject << /Im2 261 0 R /Im3 262 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R /Cs10 263 0 R >> ->> -endobj -115 0 obj -<< /Length 1543 /Filter /FlateDecode >> -stream -H��V�n�F}�W�㲨6�;�G;NQ�RX} -�@Q��T�T��ѿ��%I��;{�̙���V+�$[�,jV�fN m��DiJ�V�Ż�ѱvf��vX���Z��qQ��t���E�V���\-���R_V���Eײ������ִ�G�⡫njv�M�e�� ϛa�����}:@a����v,��RTZ�o�3룷��1��lF�..�~fR�,�J!�R({�N*�����CA�B�������7�������S8V��%���H`x�{酑X��rf��b�uq�ZH&߲�B�e�TY���U��-nepL�\)4�j!�-�@4�d����#<I -�@�(��H���J�bii�*��1��ŢJG��vQ.�����*�����| ����X*p��\)�^d� -���J��T��>>!��`�!㱀^���3�����m������x��tױ�����~�e���b�EQz�P��O�2�,�O�LS����~}��i-�� ɛ�8��@W��F<H~_ S���m���}��2߾�Ȫ����Jjm����z6[ܦ�p��I��&֏���Us<Rgg��~h�����j��ö���G�R�6��2(�W� ��IءB�[HMB;�BȊ��aꎇc?v�j��k���]�2�̷���N��gb�I�ws���w�nr5l?�|@x�k���}�����j�����M7��~ -ښ������a�?vc�?ݓҚ�>K����v(5��0�<��=�[ʪ�l -�ߏ�g������4�Ii6j�{����� -ʗ놜5�öo��!���@͔C� pr�o���J�4� �d�C��؍"z~��$�c����=8Aë�e�VF�J4�0�h:�_cd!�>��]b�����#�%�b���l��=[(�8s\ѼZ��"�?�V ��Yq:+�I�s�`@����L���d ~�i�t�w��@��Yh��E~��j����u-$AT���0f����F��F���o*og��^�J�����T�m�����g���UO*�կ���q��|�F_�|r -[���^�πaaI:މ:��i��v -YI�����K��N�<�m���ʊ�6�k��p�A��H^��s��Y��KXOR�^��q(*�����P"�a]��G�@�3JQ�̨d��@5[%��h�T#!ݧ�)�AmBt5� -YY�e���l`V%�,�o���p�IҪ����6�f9'X���Ąj�F|�U�X��^�W#J��*D����P)F����)_&/J��~�j���(g�Z��D���6_>�h����e��I��W�' -Իq߉��M�⪣Z�1�s�X�]~����s@�����P�j -�.��6�n<�L%�V�U-��O��E�٨���:=�K�PUX`�o�I�2̧p�Qc��4�K�ã��b��o�]^;j���[�S��hh��mbN&9���-tY -�J������7��/��l��r��@�v���ٮ�;UY��y��|H��X�W'g��(���6[ -endstream -endobj -116 0 obj -<< -/Type /Page -/Parent 1497 0 R -/Resources 117 0 R -/Contents 118 0 R -/CropBox [ 8 0 603 792 ] -/B [ 265 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -117 0 obj -<< -/ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R /TT10 250 0 R /TT12 257 0 R >> -/XObject << /Im2 261 0 R /Im3 262 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R /Cs10 263 0 R >> ->> -endobj -118 0 obj -<< /Length 2516 /Filter /FlateDecode >> -stream -H��WMs�8��W�HfV�I�v�[qU2�k�\s�eƣ�DiIfR����P�,)>LM�\e��h�~��q���],�Pb�eV��Zx]+LUH+�Xlfo�/�+1,����*�8�d!e��b9���[-�gw�?���[>wE�5�\g�SxZ�i��7��{+ۋ�l�6�A��44��ć�+��}Qf���zx'����V|�ب����Z��悹��w}� -��r� -� �Wm� -�S;62����hx��ٛ�lV��Lϕ�_�Sؗ��'�|a*Q��0�� TI�3M�>,f�'�@_k�ԅN�B[���� -#�jC�T��`��J���a��b���?�{r����kUҦt"E�e@�P�M�>媰Y���G�M,��3Mj�y�g���"V��}n(V-QB�9ENg��0w��d�Gk�e�Ut��}���K�,�ҕ�%nE#tl2r��j�Juc�e�j|MߊL�oŦYub{��]V��7��5��ɪ���Ӯėm/���n۵XVg� V�ݺݴ��>�o� -;z�����Q���\!�崍I�����0a��)�~���M]������o�)=@�C&;:f�HB��@����$�C�ŗ~���+Ds?�}�����" -;�ݍb�n��o�L;:�8��"��ǩjp��R�Pː��5&JӹPP�@]��h����)�i�+[Ⱥ�h$ݔ�ĠMӍ!/�����pD������sSO���d7W70���-\�F"�$V�1S��v<1e��F�3���_!���� �s�&�a�C�� -_��n�B)#�Wℤ�{�d��*I����I�.�Vowmxx]C,���k�SUa̋�f -�����w��� A�컪�B�^��w�,�~��!e�K�)ҝC�ʽ{�j��mۨ�{���VօǏ�Qs�p��_B۹�R���;�]hq{��o��U���;�'>��ߤx�ڕ@�W���IP�'��5}��+*8���Xe��R���W��R��������P2���$�嘙��زF�� -$ -�Fg��K�=�<���rhE���������ϫ��$ִX�E�����v��Ù���lj����HϑQ5$��($[N�O;�Yۨ�9j2��d��� -�H�WM�A�ʺ!�(��j�k:�.~@�C��b5�,i^�봶�� �s��J��b���Y��gXUV:aU1��Bq�O���'Og�s$���!��[�/t�Խ`�?0�u�ܱ�s`�C���~�,��E�g#Q�{�lB̘�pHuF�Xg�z��d;Ы��G��LZ�G.9r���!E��H8�eh�LW�/���� �瑑2��rJ<GO -8��p�������C��>�,'�X���s�`�:`bSe )G -U������G`��j���:e�X�V�i�SG�2E� �_��K�ɍ!4U"!�;�e�,����6�2�-��U-�4�Մ���.=?�Q<h -�=_���,T�!wALHV�s�<�%��/��L�Plɓ4��U� E���/��\ϡ��sg&���oЦ2hnX��\!8�~[Ʒ4=9_�#ڨ�%D�>&�u��d��49E!��Y�W��NU�̺Ӷ*� -��]��KS�fI��� -�+�lB��tu��� --rE -m@3va�W�(�Ʋ6�E[C.��,���|}����d�Y�n���_s�j֔ԆY����Tõ��4�b�3��F%�)9��@d��E'� -$K� 3 -�'u�Mת�d�ۤ�[�&�y���%�%�UA�5WU��4�)̩�s��Ғ䑆��`3�֞@�@}мyk�!�<s�*�\zמ;/�O~x��;%s -��45]�s�B��aB<9�]����6�A�Ӡ#��g��wtq���Ԧ�=wۇ�>�A��2F8P�r8���9�@}�>G�٥>�D��t-Nmw|i��-���Z'����#�F�!8�hI�J�;{;0��a)X8 �O�/��<-f��/nޢV+CZ�ӴH -WU��*ҏ���,Rj_�tD���`�����B��:���*s�3ehjK=7,�t�;x}����d:��;��ʊ�.�b?�jЭ�1�%��� RI�����G�|9!ri:JluB�Rq/t�CH_��6SSN���M�5�k��������=�ӽ{䱇w�:��3��OjFԚ�+���Wt&4̒�>>s�p1�83Buu�4���w�/�<�H��yj2��٬�|��r��P��I��>�v�V,� -.�e��]0;Fx�hZ�����'��OiPs\UI4�E��� P�RU�[��{\��tu��M^I�;���y|�g�%fƋ��4�M*��K,'0�]_��By90i:���� ��$�¬���Gސw �玁��.ܡ�0O�0���5�U�Y���_�DuP6ˉið�[�:�ލ�'�d�Y��j?��\��8[_�SԢZ�{�����c��L�Q��>��<F��}P�t)�_��_�T��ewsT�(*�5�Z� -endstream -endobj -119 0 obj -<< -/Type /Page -/Parent 1497 0 R -/Resources 120 0 R -/Contents 121 0 R -/CropBox [ 8 0 603 792 ] -/B [ 266 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -120 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -121 0 obj -<< /Length 1731 /Filter /FlateDecode >> -stream -H��W�n�6}߯�#UX���� ���E�$ -��S�Y��2t�D�ٿ�̐��]7�Sa���rf��|�9�nC&�v�)XKC�,�E�v���sʪ�^K6W���+�n�M � �ض�l����C��3.c��%B�Z�t���/"�އ�45�>+]vC�Z����x����ϟ���+>�V1��R�Q��X���0Y���dvqy~���b�u9D���d/xق���6(/���D���4�{��q�O���~��(�(r@�21�d&b ���E����ns��H&m�e�l�D��0�E�`i�Imv����4�FB�$�x6Ź�윒�[�g]�A��Y&����"��o��4���ppҍ��=�$5���!�IJ\���Z��Ԍ�zt�)��H�0w�$24���*V+/�;�p�Zթ^��r>{~)a��pU��=ӷf%Sw��]i(����й��h��n91"�8�Ò�шטޜ�Wjbz���CS+����?�q����Uc�/���a���3�-0���nY�3xr~�{��ۚ5}�ރ%eo���;Ϗ�j����t0���s�ѷ��������FC�b0���c�������b���B�8�r�X5��}@Î֙��]��F(q��_@)d�!96���{5}�����K�b�cS�m��R|xB�z�(b�A_���`�D�x!�V�h�u��t��cӶ�n�-�Ͻ ԃ���@�K$���[�c�+5� -��f,=&w��, �zQO��});�Z �r�� -l�� ->�"@~�H1�Xs�9�˦7_����[Z6LڅZ�A� -�Q! ��h3���kH�Z�(c -� �S���0Ֆ��Gٍ�z��[���w�{�D��IK �)v�����J�=]A�����aF�x�J�U��X��160v�I)[6#5��W��AUS=�AX� -����j�*�c�ƀ����}>=��y�?X���]�]�o(�K����L��IŁID1hGeOݨ"ħ��:bթ����q�1F�&�tcT��)����T[j����R�'c5��EE�&k�T�g�k�t�B��ٵ�����v����s\�j�0ࡀ`���F��J��V�+]x~ -������8A�c�'���|�WG��z ���ijE��sU��/�*L��h����}�]O�ϴ ف�/f*�C��z�V��9=��Y$a��6W�[�%*6���ǎ�8�,�A: -�������� A:[? -Е�`�7�Z�5�*�<��^�#E[i���cH����è�g�aVѿ3S��X�yBO@OA��َ�Ldy�VqG���$V�_�X�8��ee'��;G�+G"��;c��� }��zeu���Q{��h7�����������Z횾!\���r�<GјUu?5zϦ�U��x�ҷC�@�[S�8��L6��k@���'t�:�����2�}1����DKڴ�eϛ�{:ii����<����V;H���5��Y��p}�[��G[j��s��N�U�L��5T�TY���@{.!�e�-{��m�cI���� -h�������Y��r:}O�8����+�L�h%f�5;�L-QoR��>��d���f�-kɊ�1Ju�u� � -�}���|x��R���_�Ke��ʅ�Yk�RE�*��6�@�X -I�Q�r�C�.Z;���$st��g!8��-lp�'v�]l7�N�c� -endstream -endobj -122 0 obj -<< -/Type /Page -/Parent 1497 0 R -/Resources 123 0 R -/Contents 124 0 R -/CropBox [ 8 0 603 792 ] -/B [ 267 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -123 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -124 0 obj -<< /Length 1572 /Filter /FlateDecode >> -stream -H��WMo�8��W�H1#R߹5M�h�n[��=��(�%A�����̐�e7��]H)�z�����v��^��l�Yḋ��B���������&f���%3E����dOf��O"�*K8ơb�����~�-#���[*��S�=�����m�ֶ�{uG�Y0��!�Yޔ���y�X$�S[���0��z��!P �ZzD�,ܠ���"�ʓ�h���:o���|�У.7 -��Ap�� �G@��2�V/�p2v)_t��X)Kd"�(�0�>���w�Z�tS�W -n*��� -8�^/�IW����BZS�2���wKuM�3����c��$~�%֙�<Ɩ+*SW�]]ؗ�f���=��ɱ��o�Y� �� -��(qY�29f����������;c�v]\R��D<Ɓ'�UBȟ��.�z����R -5sP�3n��"���8��(����)u��x?T�P�|���I�8nI�H�P�����|� t����B!�`�~3�(D�8�a����\�"��̹����X�f�6�*@b�������l��ꆶg��ֺn�'�ي�?OS�o�&����߷���[����_a�0��O��~�~w�O5�mO2�E�cӋ}u����z�������He4������h�Y�_�6�LC����B�E�k�Hl�|��98��2Ϭ�s���`V�����}�C_�w��w���J�z1�E��PA�N�$����mϕ ���]��m?��N�I:��5��.�#�3���Ű˱3���^uy��j�5��Р6}����Vm;��`gE*ʍ�����2b��8p���m`R䅆$}�o�q5O���E.OR�$��l�`�Џ�vo��n�w-���w�����Zzر}��KVW߬˙� �&�T�h�w�M�V�I0p��trd�%�2�Z� '���Vܐ�X>�����q�������1`#�,1v�p~�����{]%c�i�i�d]==WL���0�j,��;���r����K��p�2��G��ae�G0X�+Kl���u�&Jcc��-� -�|� 2���;e珥�U�D~�/[S����E�{�l�;W�2@��=9��+P{��Z�-UH�f�,��c��d��K��ͮ�>�4`�$5q,��;��e�AKZ��j�� ���nt�ߴ���o�o6�x's���:tw��㬧_2�U �L���C�,J���!�@$Ʌ�Ǜ��4���߹a������V�<�'K-����)����.�á�p+�QGL���/���$�����ɞ�0�g"/��w�}�Z��/���j�^��5���y�'����-W�� ���=������7��߫��w� -0��Pn)�B7�t"���F$4�Z�0IS�mI��a�0'!�G�:@8%3X@��m��vC�m�W^ -�N��#�Y��)E�E��MR�_=ay������� -��^�^�ж��vc[�ؐ�n���j�'�m�@ק��U]��2]�N� Գ(�I+ݤ��ӣ��g�[��(�� -&�����p�T -endstream -endobj -125 0 obj -<< -/Type /Page -/Parent 1497 0 R -/Resources 126 0 R -/Contents 127 0 R -/CropBox [ 8 0 603 792 ] -/B [ 268 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -126 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -127 0 obj -<< /Length 1294 /Filter /FlateDecode >> -stream -H��V�n�6��W�%Udh�z{'ia#/�*���5[�F�����|qI�Fvě"�G���8��{Q�ΪJ��j�*I�_I��qBq�E"b�v��7&���mI��Wg\K�5+���r�������S�h�3�E�TW:в���?_����Y.}ж� -�Q��x��~C}xO��V�lض�&)%/�8^��`iж�8�\�59�wW��ArAG�&���*]�I���#�AG���f�R���:��7g����p�ď[$OP��_!ƹ�y"�D��E�����]��$�x�2�1l��(H������Q��+�ݹL��1�����ؔ�Ov1%��Yȷ�P"s�dy�soB!}^٦5��>|�wڙu�����P�;�X|�2D��ӄ�Q���#����R��N�t�if�z[�}8M5��;m����B�|#���<ٻ�Rk����7zCv�o��nn}ă'*ɏ�";��Cg��y1{�x��l��{ήwu�]_Jf���>�m;�uG�AP�c�Dx&aCO��p,Z;niD&c�Ȱ�%�lQ����u���P}����%1Y[����R���&�y��3��cy'���]m�щ< ����,�S�KY�3���,\!.��U����ˍ�m�m��@ ���g�M3�{�i-� -�-N�''ɞ0�;���Ե6a}E��=�2-圖�Tn��)Yߌ�j2�7MW�-p����~l���u���$ -O�EV���f�Q��H�yb��IA_�Lg@%}�|<{=%㨚�x;|I�[�֔�:%�l� -�H�DMm�CyB���<f>�/s6N�KgӅ��zW#;�T9�'�����_8�c�^�d�����p�U7��д�8<�`�Q�pw�C�����_.�� ,�d,�ӥ�]�wd%�8l��Q�ci��ƫ#�v�գ�v ��s��E��:����5��N6^���K%E:��И��@�Mh��^�� -�����r�2t�r���B�����:q~>���N�3��:_&�j��`���а��c�y�>��liߩ�������/2J���(��/���C�6Z�ϵTf�l�j)8暺q٭��&�a�4�?�׳ӂG�)�Hf�'����09t�dN�--��,��ڟ1�)L~���v���:<�������N���"� �&"���OÉx:F�1�?;E�z��0�ERjB�a�\X��~��qz��J��;gr�lKٝ}W3���@�,,\����w�0��G��b���A|���چ:�B���P�h��D -endstream -endobj -128 0 obj -<< -/Type /Page -/Parent 1497 0 R -/Resources 129 0 R -/Contents 130 0 R -/CropBox [ 8 0 603 792 ] -/B [ 269 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -129 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -130 0 obj -<< /Length 927 /Filter /FlateDecode >> -stream -H��VMo�8��W̑Z@�%���bt[4�{�e6Qז�I��CR��t�h�=��73o�<{Y/.�Z��Ӣ�� -��R�,)SLB�[\\;��_spm����ý[0�X��n9�F ��w�]��Y�iI�,d|I X -����oBn�rs����X��$��橁����f YnhA� -�u�0]�V}�X�8A+�h:�y;��LSC��g!�/m�;xg}�Ї�&nVͥ<� 9/���i;ż��im�,������,<ODxnU/X<�E�����j�LQ���0���&�+�䒲i-i �E:��s-�b�\L�3a��((�U��9���8;R�x���6�n�n������x9��LN�Z���L�Ye����6\��ѹ,WT���r�l�W�`�sjXYM��,�#-ʔ�j��ؤ<m��v��s�{���v:�BfBy~@2m����Io�C2w�G�q�J�_�tŨ(�(x���W�%O��F|\�,û��1���v��r�Ҫ��9�K����.�I��v� �(� -��NYE˓Ny1 -N�^^�ގ�s��2�֟m;�����9� -��Q��0��PA:�,�Q��p)Wig�Ȍ���>4O�0"@g�y����î�;���5"� ��8ԟP�A~\��KM��G���GGB� ���>(� ��݀�۶�Ե���L*SR��ٰ�h�|Z�����ܶ�� �l�oB1���9S:���������D;Ʒ$����.8�k��\�("���]f}��nyLP��>4��ͽ=�(YHjN���#�Ȝ�}g��vR��l}���G��q[�l�+�WA�ik�ð -yj��崉"��������(/���8��?e;SI���ɖ��틒�����_���^H�?����ڈ���{�'���B� -endstream -endobj -131 0 obj -<< -/Type /Page -/Parent 1497 0 R -/Resources 133 0 R -/Contents 134 0 R -/CropBox [ 8 0 603 792 ] -/Annots [ 132 0 R ] -/B [ 270 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -132 0 obj -<< -/Dest (G5.519663) -/Type /Annot -/Subtype /Link -/Rect [ 62 243 405 254 ] -/Border [ 0 0 0 ] ->> -endobj -133 0 obj -<< -/ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R /TT10 250 0 R /TT12 257 0 R >> -/XObject << /Im2 261 0 R /Im3 262 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R /Cs10 263 0 R >> ->> -endobj -134 0 obj -<< /Length 3865 /Filter /FlateDecode >> -stream -H��W�n��}�W�# �8}a7���x����V��@˴��L:�<����Ω�n��)[�����bթS�������J,nf�����Ӆ)��,�����['�[~��v�����R���LR�J,�3)�f�3=��U�|����v���غ���kC��t.l���5��u���U�t���?�]�������պlR��cF�c� -�n�M����2v����� -)�_1d-mG�.��*��1'�\uv��mQf�M�}��*�d�m5~�|@]�>�W�JUE�p��b��ŗ��b���x��>�Bz��/��V�Ŧ���$�uNVM���U�h�S�ò3X4�|���Ҫ���J�3�fa -�ρP��s �OgY⊖�ɂ�.��T���Q�#���GX*|��Rr�|�ݜR�3�,1�p�G��Zbe4���W�"y��ڦp���~�x��n��ˮW����ۻ�?��8�v��a�ڶgm� �l��|u!u��l�.v6��s���\��UC�e�#n �k�m���6�X�ߊ�]��]GFl�\��q��W�m`�<��U���Oj`�$2�S���+Be�L[��|X�O�h��v�^Ж�c® -� � -k��d����6}w�v;����kn��f�l�۸j�S�{ -�fl9���g�_���J`T>:�9\)�*����:%ZF�����e�s��l�$��}�$�*���E���r�N���'q��Z��g�k��w��:@`t�n�={�,Fo��rG��1�?o`m�[� ���v�Y]�ܪKF����dW���r���'�ԅu -��¼����o��#HT�&[m��w��8�ʾ�-��)��se��������U��ں��~nh������K���x��&j�L�� -!���j�tѣ���E{�,�0s�ڠXʏl.u�b�D��b��՛v�v ��zbj��j -<>D��Ee�K�5��mR5��"����C���>��l���v�P�X�w�}z�߈�6"��r*��>?���4=�]T���U�ެaE�*Y;r5�n[l������"H�ۉ�� -IA�����k��[�5�o�]���:�B�KQ�5N���,C��e�� �>\ -�} -S����8� w_�Z|C����_���ޕ���,�ee�^���m��5h�d�$g��oiP�� u������K���cuAw��(R��-�nPb� -Ϳ��Hna&qɫ)$��;�(����������4��s_@mJ�fͦ�s�������5Zw���W��+_����@76J�ҵ��$2�y -LZ`�͕r�&PtM��a��vy�\绞�t�ܑH�����e�g��;�p��= �?�N��%�!� -N�=U�}f�*ecs� -�e�`N��[(B��+��L(T��!��|��q8�ĠO�DŽ�#q4�j�[�}�"_%����cˑ�`��Y`�z%9�0�E?��(�׳F�ע���4x�>\'�� -�|h����A�3��(H\hA|녰�1�<[925ܤ��b�l�K��H3�� -�8�B]x�ԭ�2(�7�-e4T蚈��{:�xk�d�D<�K��oo����@����_JI.Ǘ����E�KI��ĵKq����S�>�Z�%`ԩ*��[�ҡ�'ur�$��?C*Sh�5Q5q��R�,���[f� �CE���r�G]Q��:������]���tb^�xj�== �Jҁ�C�N���Yl�����x&��o#M��W��R]� -���i(�^�ޕ1��cH~L�]�K`0˒���ՖtGe���&w�r�,��Q�yhϘDM�۾�F�� ��ɉ6s��i� �83N�9M�s�U�����x�i-���&�M�ecm�����9㎢����iaU��Y�o���� -��9�N�y��D�A������cN�2�3t�� Q�L�T�ƫp�Ğ5&M����`x��_�æ��6�Np8���L/�W��v�<�w�LgLa&��,�v���ju -N(K��^���[b�&R����Q��-��nL��Ц�� -��T�8��З�eH)M:�bD�=vN��Bh�(nͽv^)RKj�$��+�h* -��@,t���r���wN�i/?�����qTn�M�(��t��Iո���%T��Ep���B�dx/,����zZI<�',�{BL�������{��+��h� -x��J�Լ���G���;���ʬ�F�'J��C�B�5���4���/����!$ǔX�'��O����1q"���GKK���t���=<ft�?��j~��r&&�<U>�ɀ��c5�W����Kڛ��Z�|�4 ����|��2&�C�P�/�p�O>PH -�z%���TFLZ>��,�:�8���A����\���h�F�M�s>���&g�?"v�s7��-N�о�O�{4�4?~/�?��qHo1�N�^�>��J�v�U���@5Aհ�p�13X���V9���.�pv�w=o�HD�0�.���ܳ�o��g?̓��B�[G==5���*���gjO�"�wo�7�aJ -1���eo�4LL���jl�q|jӀs��ۚ���� B1�tE��c���қ}��aʉ0}M�w���?e��0%1@,>���㬍��� -�8p�t|�n����WMo�0��+zL����8g�� -��qj�-j�-h%�=��|']��i���y�����:u� -�8%��Fؘ�ɓ�q�S& '`'S�ط�q�s}z1]Dmq��K�x����@��M�A�2{��Q&6?��[j����|����Ku|��X����c^��p��8,$%���� -[����4MU����2C>�٪��˱,����<��^���8�@K�Uӳ٦�����`It<���i������g��T�o�O��1�8c���5�#q�;Tj����s$�������U�|��U�ʇ��H�{��}j��\__��%Z��%��+�^J��B;�{}u��ҟ���L�%����e*���%��kH�'��̆�4���� -h[��IU��֭���a�@=���lb3P��������k�.f+��v0R��^���?J��tmq/y����R9Ca�$Yo;H��燐hM�D�C�X�qc�ot ,�w�'UkjM��%�Y�~�+����U��$5��pk1���~� -�R����kZp�]$���o(1�m��E�*��jZSY�he���q]� 둳#��ؑ�1g!z~��pw�t���I5�s��c3f���'0nP�)A52��8�.1�+�9f�(�<^R1�-��N�~��?�9^�+�̡92`~��0�I�q���Y�����`�0���q]:N�Qa^�R� � -�|.{@@�����-��k�bCU�k ;��u����Y��p^�>���B,#��d��G����W��Z�?ӘeXX -ذ��"���V�Y��Ja�-�9��DG��Զ�&o�PF�Nh%�2D/�I�� -^I��yJ��zf Q�s.��s$� ��M�'�Y:E��G���`���y -J��ϩ�8���r?� ����>*�X�k2�#����)�e��\�u+��GP��n�tu�AF�)���k����W�-�gd꘠�|�I�i��k����1/�h������ڦ����u+k���m���;��s����j��0�^��-,�.K-�|'���m����z�Tr��`S(����x� -n��<_UFu���qR��wMeڥ�A�A9;(�L���A��w�d+�,�J%��l���D� -endstream -endobj -135 0 obj -<< -/Type /Page -/Parent 1498 0 R -/Resources 136 0 R -/Contents 137 0 R -/CropBox [ 8 0 603 792 ] -/B [ 271 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -136 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -137 0 obj -<< /Length 1016 /Filter /FlateDecode >> -stream -H��VMo�6��W̑:��H��Չ[ �n�D==(6���M�[��I�R;5� �C��yo�ыjvUU8T���?��2YR�3 �nvu�kX������]����[?c��BA���q�sկ���>w��\ђ��\�n�6 XZ�<����u��5bW���#�Nxw��j��������Ү����a[}��t�c�b�V�h*�y۽t���4'����������.@���5�r���@"��dՏi9�b��W\)��,���ʘ@*����Ռ�ÁZd_<)��r*r��%tv������L.)+�֒���J�s��k9�J�N҆�`:ȫ��)�Cd,�#$��D���R��.�Q��;B�9լ4!���7�f�h����X����P�V��!Ʌ0J��s^�����Q_��kP�g�2����y\ -��jiR�ϊQ���������g�q�PG ���_�~{��8�N+�-rP%�e��1��̥�¾�(><�l���k���C��vsY�J��C� ���j��P�����<Y�����b��(�3�%N�!~þ����؋�Y�bjX�� u���������n�{x\%7h_lZ��ա���K��KM�iٓfY���\_�]_��'�$�?/"Wj=a�c"RJ�9�F�.�E�l����y�8X�e��Ms����"�a|;��)<��D���q5�������aܿ��24��D -�����ҡk����0���:����~�5/�i��dDy���}�Uoa=b���z��طQ�x�Q�m���?>��_=6�o!\��\��D=):�fb�ym7M�>ͮ"�����6�v�KS���_�ǽ����QN�7�01��9?����n -o;Ty�����L~|�C!�������C3����m��ff�t�ex#ކ]I��d�d1�����|�=M&8���^G�=2�Gʣ�A�@bNN���x!�1'_ç�s�#�EW��9�*�7��V#� -endstream -endobj -138 0 obj -<< -/Type /Page -/Parent 1498 0 R -/Resources 139 0 R -/Contents 140 0 R -/CropBox [ 8 0 603 792 ] -/B [ 272 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -139 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -140 0 obj -<< /Length 1087 /Filter /FlateDecode >> -stream -H��V�r�6��+�$;�7��*[�'��ٕ'���Rp�F��IQ�jk��X ���sϽ�H���!��:1���A�a.ט�Q�M��� -U�0MѾj��?�)��O&D娨��o�C��"O�>�ZEh�akq���/`�T��κrۭ�e��l���wo��>2��fcQ��k��m�yD��~��-��ȃ�n����4�Bf39��L�x���{�9،a�>���"}*��~��p!l3p�7�T����Q�8�9nAd2�����+Y EtЛ�9p�hĈ��V�Po�:!دSs@�"Ir�'��% B*�# -r�T�a���G@.ؐW�1����B`�.�l�c�z�L��#�G��IM>�A�Lso�e�L`�V6O�'�2#�0AY�s*'P�#m"i.�X����Ymʾ#�t-�jT�*���t[�+r8��e9�|A�K���0�h��G&�@�C�їnk�e"H��:�@�������<��*���8X������K���0W�`��͇�7o�"�ϝ���^�.)f3�f�HB���k��<��Ȏ���T#�#z��Q�%H}7±�s6xH?�A? Y�]c��� ���J��> -� p�"��B��i�˭��@���_�'�g�fL�s����'9���<���TN�����;[9ȈG8�c���;|�9x�UR�y˿��j"�H����MS7֛z;q�ml�Pf&WSG��r^H���>+Ӊ:������Hc9��W�?k��}tB���z�������K%�\>�!*�'Q��)r�q��u�� -q�?u�9��iڿ_ p<����¦}l��E���ez<t��n��;OS׳���؆����! -ǹI?�6� -��� 4�4� ��a�W�h�y������}�7;��e1e��&v�8U&��w�/�T�j,���S��wvS�������{�sQ٦��E��\]Ŭ��(�v��c�'��Z�'GK��YfM:x�]:Tu�+�v��B����HD��L����u��]/q ���#�rȩ��4���W� -_Y��_�' -endstream -endobj -141 0 obj -<< -/Type /Page -/Parent 1498 0 R -/Resources 142 0 R -/Contents 143 0 R -/CropBox [ 8 0 603 792 ] -/B [ 273 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -142 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -143 0 obj -<< /Length 1316 /Filter /FlateDecode >> -stream -H��V�n�6��WpI��DJ�҉S h�����B�9��j �v���>�pb��J"�=���y��PU�R�6%���DK�f$-�xJ�����A�f������ wÆ3�sE�f��Rg�TO�k�����V����V��9<�Âg��ꋻ[���v�����ޗ��&��%_�I��,�_�[��H|�� -��T�|�B+4�F��D1M�D���nj;��f�z�/r#a�H�V{X���J�T��)��|��R���E�RU��T��S��]T�7;j����)�"�gLfƧ�7�# �Թ)R��Z��\ɰ�r4�:��WBs�gD���`�t)<�Ǒ�,M���d�e��$ی�C�@�6����&���5���+ɵS��4�]��kze����`�����d�_LP2g�P����6s<�'P����گƶ���A>��D�7.��6�����x#(܅o}��M�:v�DŽb�=6�S 'nc���ʂ��X�HD_>?���� �&,n��]Iz0��� -ΤZHC��ҽ����������� � �wP�IQN���fd���=YsKn�#ܛ6��k��F;E���i�����͗�k�W�YT���ؚ��W -�@Z��T�I����o�NT/��d+��E��$MQ6�)H�v� ��1��.I"S]�H��ş5b���z�8:�!�sNM���lQ/�}�E���. -�%�`F��2�#6��3y����SX|�,�����|U1����n�b��4S;v�*�%uG]������/�����.�� RVЦ��4��'WLJD��]ʥ@�1xP@����� -�sn�;p����5c��.%k����ۑUR��y4M��|�ӽ����P�.��cC�6�F�\.],�裸�;�@0s컻>�&� -�{��6��G����Ƚ��x���e&f/��|(�H�dN��%��q��/���ٱn-����v�Yg��K�צ����Q� -����wgn7i Vh�����`��<��,��c��DP���J�}k�yGٿ&�8���V$��F�� b��K�1����ӌs�1�����aJ\�����(�-B�JK���S�Ƕ���Bۆ�NlxR�;�sM�� ̍Qؗf_��0fo�����-9�-�����'0�s(�=!#|oc�7��?��w���1�,�7A�CT��礯���$N$K` k��kH�a�q���er����'?TTV�8��1�)ҏ�ܟf*�y��]^���R��j���p'�hX�� h8�d�����Puܑ��e(�Se�Q=!f���cO;T -endstream -endobj -144 0 obj -<< -/Type /Page -/Parent 1498 0 R -/Resources 145 0 R -/Contents 146 0 R -/CropBox [ 8 0 603 792 ] -/B [ 274 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -145 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -146 0 obj -<< /Length 872 /Filter /FlateDecode >> -stream -H����n�6���sI5ÃH�{W'n��{@W�M�Ŧ[�dH�w�}�IIa�4]0I����73��.��Z��z_8����H�JP��+�O���``;��mq��gg�� -�m���R�����HI�o��I�����&�w*�_�Ԙt��S��G�+�*Ҵ;������B�n8z��B0����1]%�}�O:�ͥ� ��]�8̾�+KΤ��,g�j����J��}O5+�C��G���8p��aQ���� `�%ƕ�X)p���B�HZ�Ul�B��x��Bϊq�[f�j �/���a��L��b4��=�6m[�d��_ř�&82UŸrUt�x�^�b����>o����dmCW�Ir�/(�M��0�#i�*��HB�'������a��lڱH�߽t�d�ݒM#c6��/����,��A�5����v���?~����i+�̽�6�#���Pc�����ݫ�4�ι�H� �g���pi���]�3�˔� --1"�t{����5�>P<O����]�X�ikKC���5$�TL6��.�%��4s�<�7~����x��WM[��*g�¥��S�vO0��#{���4K|���� -op|xY��2 �Bm*��(�� -�B�&� !A">��3�� a IfR�G�$�T�Y��<G�3]���j9K�Z�%��׳ߢ�U?>�=thS�}H� !�UEr��J���T���&nˠ�]�ʪ�E85b99���]��Ǩ4��(~�O�̊���� �P����ʒ؟ដL߬�;�9���W+�.�s��FG^�ۮ�C;Ė����ؾCa��[�2���H��=<����a�1�HC� -��Jg����+)��������Cd�� -endstream -endobj -147 0 obj -<< -/Type /Page -/Parent 1498 0 R -/Resources 150 0 R -/Contents 151 0 R -/CropBox [ 8 0 603 792 ] -/Annots [ 148 0 R 149 0 R ] -/B [ 275 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -148 0 obj -<< -/Dest (G5.519705) -/Type /Annot -/Subtype /Link -/Rect [ 298 255 458 266 ] -/Border [ 0 0 0 ] ->> -endobj -149 0 obj -<< -/Dest (G5.519457) -/Type /Annot -/Subtype /Link -/Rect [ 62 243 358 254 ] -/Border [ 0 0 0 ] ->> -endobj -150 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R /TT10 250 0 R /TT12 257 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -151 0 obj -<< /Length 3917 /Filter /FlateDecode >> -stream -H��WKs����W�p�X`�ޛ%�R��&��rX��#^ -`�e� -;?8_? %�Ƈ�x 3��n\��V+k�zX�&Ư6���̤UgqjV��w7Ca�o'fXw�w�K�vX�Q��Y�K<�5���������eUA.mp<���X�,�y��lb;)�{�+��Ia!�>6�6��6���k.��>���]�v�|�Xi�홶j֖����0��� -�`p��_���'76��������:I�Ym�jcRإM��/�ש#��x�S�QZ�2)�4�k -jL�%��Ė)����8i���q������zM�Hꔮ��Q\!�UT(ϭ��^-��]�'xO.e�uR��(�(.�F�:���@F)�2�ڠ�0E��.���P�8R;6.<���g���\u߶[E�1L)���b��i��E���9����%� -�[x��^xՅ8F"�l���[�L�%�۵[7O���Lst���C;��Cr��8�����u��**�jv4I�I�B���ʌ;w2��Wg�MH1��N�5{�C�nZ�ƀ� 8��/��eX���r�����!\��"8P���ؘ�7wn�~��j�f�6�c�h�]�<��r�q*����W���伧P�;�בwU�gW?��o�lFi;ga�~q'.L�.3ܿO�8������ -��(��s�OM�l�F��=�s�tf��ܒ��Z���GӦS4%��5t�yf��1���~�7#����P2��:;�D1�/���H�����Q1�.�m���{�;2�qUz� �?���:���k��{pk<��e�DMi^7����{�s3<�q���E?���W�RE/����n��î=0�)_��HvOBr��R�=�+�p�2�����i4�;���HA~��Y�`�#���fu�n�`���{�m�� W���� -�EZ_��s�#�o���p�Q,�'�5�~tT�|���_ӛ��{9�Jʥ��xl����A�a�y����k�3Cm��������fJ[ڼF�Za$��$ʯ���J�i�|�BOaW!j ���6��3�6 -M�5�.�ʟ�N���&ޢ�qf��(��:�,|O��R���0��<��ܨ�F��u�oK�qTfƢO�,�җ���܅����fm%�5՚�!��u��b<����0����� c� -����V��#X�����Y���Y��d\�U���|@S;�7�cD��n�~B,|s1w�9����L�k��Th* �GhF�͟��qu!]�j��b�Y��4RH���u�H�ژ�����h�l7!���b�*�|��<Y�ڽ}"v�[����<l��4&�S���(K�2e�iW��_7��#���O�%��O|mj6~`đYL��IT�)0�-FYL�yQDY1�1�V���O��;���Ț����G���P�3�6���c��Nk@ ��du��x\�6��J�{,�(/L�C��e��K�\���w��m������fzd5�%�����IUAK�z.�,5�絟�$��� -s��]3�!\�S�0��3X-� � -�x -�ʂ'9�Y�����j��H��#&�x�d�����%J{�/t����C;��q��dS|�H͖�8��&dK.�D����1,R�������5������0�ҽ�a^G��lZa�U}Q)Ur��R?�U�c{�p/������λ�x��V��o�ݹ��t�s -]��a��ń�(�h�,��5�Y����Cx �lx���nw۽<: -� k;� -3:۔����}B� -╾0��H4�UB������Z��7p������C7y:�4�!�o+;(buI-i�~���x\�r�X@|Q�oxy�o�5���Fr!�����_C���q�l ^St��mT� -(��i+o)�4�nX�x�5'� -T+r�S�qt�k�����s�����ڌ0V�͏aJCj���1E����މWK1�@eQ��K.���G܉�o����QӋ��~o�N"�tl���x� ���ڪiu��Г�~Q���t���m���H�����;]�`D�u�g ~&m����4z��7-a�����/�^=�T��L��2��u٧�C(��F5���)�\R�;)jI�M�������71�O����8�M�ի��>�ވ��TPF�|}� ވ�DB�?iQ����.:�6�� -��V��J��^��f"�ʘLԥo%�������zR��(=����Hn�I�T���n4�����j-R+ S=d��B�ƹ3�8@�1��?� �Ÿ́�K�n:��H]�܀/�S2j&z��&�_)�r�^?S�Q|Sj��P�a<�-%I"^�� -PM������R5ͨ�K�Ʊ/� -cV��]H}�+%�:J"��zw�X�DS���P/N�Y��͈)������UɆ:+��̏n�D�N��X�� �8�I�8G��^k�=�y/���48Yϔ=7q3�o���= -��4�*i�9��so:$'�i�� -� p�H٭R���W��ъ@�(����~���iD`C��BIP(1]���=�!��� "rFb�#H���,h^���.��]��r��2�x&3U��@��»~��>��U��5��K|���mC�{�#��-��!@��1����A�����<�ZIK�[�pO2M.��8�ތk��4+�Ww�(�}'.�Љ$���)G2���l����l�=��9�Σ9,GdcJ<��E�*��DZ ���71�y�����fA�f��9)���FjU���x�/]��;;c�y�,�|R�˵[)�B|<*�m��e�ر�jh�( -�}�><L.F��M.揹<�,��-������5 -�e�5�$���1�K��~����E�Pp��J��5^�#��j�Yy���S�$�������ŝh�Z���c� �&�Sf��_b�@>M/��A��8�c$Ig���T�֒���OH�cGG�r##Z��YƇ�E] 8�|��sO�LEy�o -���i�����CN��f���[^����W�����rxv: -)_�C�5�m��LM;T���ٱN˟ -v��* V���́�)#�����o]���"�>S�P������]v�����4������:�I`�FqlD2��q������ur0��Vo���,��GjRI�%*U�}����F�Ku�(�H��O�Zo�� -Z��4���쌬W~D4�NY�חj^唗ӥ�w�[f���$��'��J�Fx&9i�%<t�픗խ���S|���mHD]9�f(n9-�Hu䣐�R�:iF�X�n�H�+>/+=�����������m���qv -��I{�{�/�D9xy}�b -G�m�^�w,�zy4$������Obn��Q�q�fL�9Y= o��)�C�y�of�)-�c -d��Ķ}Ǯ�8�ˊ���L`���0��Q�l��4�y��Q)a�*��f� ���Z��~IQx�۴ -��b����!�Y)ڳ��/K�2d����)�:�N{�EM|�ɺ�z~�V�ͪ D�m=�( -��lV�rtɦ�T�T/����}6����,��8 -�����iB����;���_6˛�<.D�ڪ-/�군�V�h��=lb�J�mB�{����a_�I�?�:Ӎ29PUb�qg5MQ�j���@��ʨ�z>'��~1�uuhz�9��A���C՛h��;���̱�R�ݣ�JQ}*� -�X�l9��WK��}ӑ �ur/� -2�$��BI5RD��;�a�s6e�}�"�M�LZ�`�ȼV��<�݅8�w�\�����Q�� �Y(E��I'����{W0¼�<��.Hjj#��;ŀ��Z���ɥO�4�I3�cUB��`[Ut�,��)���5�ӑ���{-�������� ) -endstream -endobj -152 0 obj -<< -/Type /Page -/Parent 1498 0 R -/Resources 153 0 R -/Contents 154 0 R -/CropBox [ 8 0 603 792 ] -/B [ 276 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -153 0 obj -<< -/ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R /TT10 250 0 R /TT12 257 0 R >> -/XObject << /Im2 261 0 R /Im3 262 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R /Cs10 263 0 R >> ->> -endobj -154 0 obj -<< /Length 3938 /Filter /FlateDecode >> -stream -H��Wے��}�W�#`���0�M�u*J�V�̓��+Q^��+��>�{.I��+��R��z�Ow�>�b2z6�h���~� -��p�2V_I+��,F�^n���������_n�x��JJ��H�ɧ��B��qSh[�6yM�]0�<>�������c<:>����j�=�r쪦�.g�_�o�%�������lR��czֲ�� ��W�h����T����/~U%E�+��e��9�m��${?��CW�-n�e]��i~?����d��Z���m�� ?��TV� ˌb��ɇ��d���x��T>�Jz��������nt?�l��9YX5��l*D���^p�}tHf��IKG����i����x8�x�|Zv3q��|��NպP>���վjL��)���������.Z���n+�w�+�m�f�z��q -���y�ḁ�J7@+���� -)�g�0�"��[t��V�؆�㨽��i�G���j��o���rҷ��.���{�r��N��n}=]�Y0#��ن��ؾ�ĺ�ʡ�L�8<_-7���Q�����U���x�ؼ_}Z��R���|�n=]P_�B�8`%�ۍ�<=�^5j�X�=L7��%�t�Ѷ�s����+ST��}�]W���~�_�)����9��v=�}�v -y]�bN���gn��n��o��r+���F��9Ҍ�xA��0�t������Ξ�Gl?�;�I]<�@�� -��}���l\ -�9�~�=�b!���uI�mя�����^@? ��w֭��t�^-8�1��d/����H)j�|^��'c{Չ>���r�*��ԣp�k������7�s�~Ԏ;�"[��Ϟ�^K�j�+�����0;e!P�t��neQ�� L]l6����sh�8����L4&�ԥ�x�D��)�xB�`���l��A����ܲ;y��8�}� ��"����Xp<:m�<�iF���;cYiq��g�����O|�%q-��&����H{�c縆f�X���`y'�����4#�FJ�/��2�����1�W�c�K�BͳE ������ ���z��CEy����-��"�H�L��!f)ےS1�2<��jM?q -�ü��1�A��Z�(�c���!���0ܔ�J����nP���%��Y�>�����:�Vm8��C�[.�ZJKT�*�*�ί�}�H�W%��.JeQ߅��?�/���K��m~��L����Qyt))��4F��~D���z�����GA�����$�����;FV0�hb�\F ���6{�L�(�aQ5���-e�����d.�3nYT���;H߿.�x������lW�����`������z�k�ɯNy��{��^�l���K���X*��ī)n�'4��ek���F�d�A�4��%��C!��w�1۳X��y -Ղab�%��{L@(��1��� -�A.��xS*�����%,�A���o�F/�X(J��ql�$�#R -�Ek� -g���D(��T�1qJjy@4!����. -�kT2Wr���!:��M��eذ�6�72�TMt��~z��F����x�!� -O)�7�bMm@U܅b��2V��AA>�M� -��PX>���x���\�k�o�̤��*Oaf+��њ�{���"�c������x,) t�C���`rǽ y{D�;U�� ��&� �,�<mH�á�u�p�[�틓S��r��Q��(����$�F��wY��TH�w�i��;�� -��8�����j����������HI$�9R0�ШC��ub�4P�&]�%�ˠ;���7R6�[��*7W":4���MZKn���ɪ��jI?��fL��\�&����6�(蘬Tb"C���\��s�m*R�n#�?=0����|APm�,\X r�Ic"���XUK���pg���eMDG�y"�mzZ����G��w�-�s�y�_�u����I*7���7�4V���/�nތ$ -J���!h5T�;R�� -^B�ւX���2��J;Y���.���PR�P�2:e����@�F;.�5�"�jf(L�s`���G}_j���Y���:�q��⫥�D��Dl�E]Rr�|��׃B7�6��P��{=D��!�&�a��"0\�k��$nV��~�h��Q�)�!]q��XZe���{~cv�7�'T[S�AK�g���pOV/��~ծ�qFOP#��$5ㆽ_FU7T��6�Ǚ�!�\�k紹�f�H(���c�*���i@����[��!`D\�4M�_p_���iG���˓���'�t6����H�reX�X������ @2��@�d��-�W~�E]���hY�BV(�cI*0xM�X��5�Q�1�S -�#�N"1�R��B�I��s��c������0g���/�.ݴ���JrV�]0H��w�cK���%o}z�{f�-���rw��qш��:�l���C� -��e>����~ݲ�'|���[:�s��إ4�#�r0���ѳ�>��s&O%��#&�st���6�Ā�4�Y�Y,��}ތ�_B�������=19�|BL�l�����ӻ�D��XP���8|�^d��Z�ա�(%�^�U������Y��q5�Q�d܀/��A���� -��^9m�P�_�'i��ղs��Xϻ/����Ηp� -��023Ng��r�Y��}��=-i�b���!zAK�����Ւ�<ݽ���rp�-�����f���S�&��r�=�������Zvۈa���E�@���cў�"��I��p��A���P�z_�m�'C-���p�*]���?�ǒo��X�����R���5���v*GZ�]�������P"�!5,t�~N�Լ���0��j֝y�o0� -��³0���̡ԸԢ�߁30 tYĒ�ؽ�'�t�J(��Ppt2\7o����M�~9�O{f�<�������AhI�M]Ϳ;Sͨ%G�BcS��،RifӞ��1M�7�Z<�d�"0cx#�bS[��RR�H�E��{��۩�R� -u��}\ըܥ5���![�Ԑ�0�������� y�?(B�a�pk�I0�6���᷸��+�i�0W��6�%�гS �$j�۾��b���g|�8a�]�x���9��( ��H,.����ȓ�U^�h�}(�s�\{�C_�cΘ�X�/�B�(�����I6�OT{'�U;��H��ЉW(�ǧ$�O��2[�@c�PKMi?��,�8�=d���o;�P*=fJt--g���Xz-@v�f�z۞��|d\8%xO���֩J����t��&��. �"��N��E˼��O*�!H� -�������6��F��}i��S�� -]:��x�\-��-�uer�hDm���G�3��ҟZ4ӜuZ!;-T�������Rz��n�� -T��ڑ�P��2M��v�6�����j�g�ջ��W/p&]�@xΒڹP���2!����u��S&���i8V�YBt��=�o��ϵd���Uɾ�(�61H��O��V���[�3�!�J���%b�!�$�QO9[�f:Y�!k���6��c��W����%����m��]o��r����"l-�b��(j�*�W���J�[H@�X�l�U�w�/�B�ׯ�|�BοPz� -��h�������a���Q���h�jǭ�?0B��$-d�� -}=����A��[�>���M��ѩQ��n^=A���Ԅ -�ߴ:���cm����bC+�r�lP�I�9q��\��E���q����a��7<I�_æC�g����/ <w���P��[k�����#z�69�t��x��Z0���C�V:!)����|(t��B�埴uY�f��'1;��������l� -endstream -endobj -155 0 obj -<< -/Type /Page -/Parent 1498 0 R -/Resources 156 0 R -/Contents 157 0 R -/CropBox [ 8 0 603 792 ] -/B [ 277 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -156 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -157 0 obj -<< /Length 1613 /Filter /FlateDecode >> -stream -H��W�n�F��W��x�^�\t�l9�ÂE ;�lys� ɱ�|F�8U��eF���cz���꽪�e�y��I��m2&�/c� -u�t�Hh��7/_1+�-�P�����H�e؈P�İ��l�G����O�����ք)/��������p���w�|�l�o�`�g������V����ջKl�0���6��?�eW-��ZYKkƙm�Ƽ$,C���h�ގ�MO�ylD-�^��dV�A����_�t��^t2&u����d�*�}��|#�a��W -�T�aFD���Yo7`�I_�iLS�P�k��垻<�k�Ů�xP"���IƙI\(�s�Lʈ2������ζl��n�Zێb��AMu���atE��(1ٌ���l5rV���ph�� -�Eo!��z`c�.n-�?�z����o'�[ %���;1�3���m�0�+�j`���a�H)�p6��6�P�p�c� �9~5�bD�L�6����%��x���.�È�"����tܕ�����G��G�9Qwgk�5��H� - 0���e��� -�P��>v���8��V���h� -4�����-qn\�!�f� -P����j�T��Xk1gͫ@��}毚�^���`�Q��(EɡNZƩX%݁~"!�B�n:��;�����b�����l�{{3tR���NA�3���!?{�`Bz��.G�+���,?Qr���/F Ů�<�;��K���������ifn@���!]�wMw�����+r\Q�b -G��R�R������ʍO;��fv���V'��&Z��F)�y��<�=������?!�A٢���}�{K(%�RL��w��~ Π3T -�OAK/3�H/R[�g���fDȯ��@��Uv���-qV�8ה������B��ӕi�� -�lF���WS{zc��Ho�e�t�EF�g�Y�E:bW�fِ�}���YW�[ׄ�o�=4����d3�w����h5�w�����(��* -�&�|"�}�y��ٔ, -=�q}��l�>9�`a��b��4�3��}юu9�`�}�k珶�M��Ȅ��xE|r:m잦��^A�;�ں�3 -�m5���kS��%�^�:��<�����`��$���'�E�bA'O���� �.;�$ڷ�xvS�} r���&���>�Q�f�B����7^_\��v1�zUd�� - -�^��Es�z�p�������n�0S�u���uQ~��y��=Mp�B�?&�b7�Q�<����C�9��v�u����w�]���S+�t��:z���=r)�ő������ ���'�[w��a)�;7�Ι�=�5����Z�ޫ�5��q�4����U͟�t�@��?���$�ZŨM�YVΔ�(i|X\�`+��i'�� ��7ҕ �,�l- -_S0�h�^!G�GHZM���&%?C��[�$p~�B��j×�y5�}��G�M&��j��+f�'d�le�?N��Y�l���$X -��@i�`�< ��@��U"�[2��B%2�N��*�p����y=K*Pw������ReQ�a������Q�W����W% -endstream -endobj -158 0 obj -<< -/Type /Page -/Parent 1498 0 R -/Resources 159 0 R -/Contents 160 0 R -/CropBox [ 8 0 603 792 ] -/B [ 278 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -159 0 obj -<< -/ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R /TT10 250 0 R /TT12 257 0 R >> -/XObject << /Im2 261 0 R /Im3 262 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R /Cs10 263 0 R >> ->> -endobj -160 0 obj -<< /Length 2316 /Filter /FlateDecode >> -stream -H��W�r�8}�W���1�����lŻ�Ɏ5O�y�e:�K��$忟� -��n��jS.�4�r���r4x7i���i���Fx]+L���F��wWk/&k�Vb=Y���N�O끬���MR�� -�=,�u�}���D�(Zl������C�z7ݶ��|���D9�U]��������Z�b�4���E*UcLOZ'��Q��r��܌�� ����I|U�Y�d���v=qJ�,���~)I���US<�JW���8>_�[B�C����A�jBt �Eת���N��]��ף�*�[5�2��T2-C�:-V��i Y0��2�j*%��+X�l��.!F���)l���5t�R����a��*ŵ2����mˡ�t���|���W��z=].�|���EKO{g�Z�k�I*�$at��Nj�t�� �_���ʹ��o�l�iE;k��b��q�C�T�u@��(�E��R�f)6�[1oIa���U]��9Fڴ�X�V�#�t��y?�5̇ -<[Ӊ���bӮ^V�u+n��x!�/�d�D�L'� -dV�B�����o�;��v wp��A�_f�Wq7����ˣX��]��s��[���m�����@�\\ܶ1�]��7�p�U�5Y�l���s�����|xM⾫�E��m��F��c����oǁ���g����c� �N���U�ʣ8�Ǔ͙p�p��k�2�s<��;E7=���C}�Q�?Y.6��]Q��^QҮ:�{(�2�*�C���L J�������l��5T�{uU���j�'3G,b��]?.GP�*c�B��0IFԫl�:���H(d�O�b�����:�4�y]���$D�f��D�;������/��j�{�Nw~S�(�L�tDݥ�A�撃� -%�5 ��K�a��7�G2#X�F&����q9��O_b>�!Pha�FR�u����c7Ȯ�{��dZeI`�H������X�n/�P�^X -^��v�"66ZZ'Ѣ�)w��Ø�Uiqw����gAa߀q+����{���G��g,jO�/���(%�U���=zj)����0�q:K�>�a)��4_��-�P�n�~.� -=� B�x�°o�Z���ۧRb6�B�4�c��ߒ1ʒn��fV�MJb6q�H�'�v<�QK�� -�n�� -�$�g�츢�A���pۡ'�� �ߒ�^���#C�e@�`Ot��盆"��3�ºY$Q�fm��Ę,G6��~����k`N�)�vL""��P�"����MˣH�ޛ� -���lo��ez�yg��% -jmV�%[�&C�g|��7��YLͽWyV{ލ��� -� n���ѕ�Ƴ付y;[I�c�� -I�-���1��n`t�2f�ǀO��w�@���0�j.��pV�'XKG��k�=_i����Ō���uə���Ө�*k��R���J��y�&C����>� �i�<��ȑ`!�y���s-�/��Y���`�k���7�墱���(�6ym[����4%��AYj��c�G_f�yZj��@Sg���|Y�\�bqZ�Rp����j�F|?�Dh���8"��?�1�s�;���u�!��� y�s9�C�̦���Hidt�I� -�v�%mY�I�g�c�m��6��q������Wo-d6������2��g���:�f1fdj��mq� ����EW8�Ut>�tP����n6t�$��? -\�,�Z�I��^Q+�7)q��J|����(�d#OZ����̻�u\�v�#�6*�F���uHU����y-�e -�����uB�8I�eG��T�����4Baz�w�]"tʼ��}�U=��C�v5t�}��](���l�tc�^�*��c����27����8mz* /�e�ȢΞ�D�,c�4> -4 -�)ם�vy�I�H_ -Ҫ�����&�t '�< -�7�<۴cA���bX�$��d� 6~_|^�3��2�[�"��vUZ\����Tn��fP��(I,*�} l�:ސ�;~����@��ё��cd�:v�@<q}2>��}=�� u� -���ݪ�DafyMÿc�ٶ����Y-Cu��9���Ք'�>Ƕ��.]|'��o�u�Ǻy��[�t�WHņ�Z��+Չ�[C�W��#4x[�p���H.n��5=��aV�ʐ�.�5߅�ny�ڻaX�*�Z���@���w��n���[J*��C�p������H�s��{84Cx#���m�k�!��mLQ�A6���-֓���3+`�+P_? �T���j8�j�* -u�Wz��_������̡���s��u���c�˿��9 -endstream -endobj -161 0 obj -<< -/Type /Page -/Parent 1498 0 R -/Resources 163 0 R -/Contents 164 0 R -/CropBox [ 8 0 603 792 ] -/Annots [ 162 0 R ] -/B [ 279 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -162 0 obj -<< -/Dest (G5.519663) -/Type /Annot -/Subtype /Link -/Rect [ 336 115 535 126 ] -/Border [ 0 0 0 ] ->> -endobj -163 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -164 0 obj -<< /Length 2236 /Filter /FlateDecode >> -stream -H��WM��8�����؊D}���M� ���{�e��D�����������,��I#@Z��bիW����ݛ�Z�P�ww����XD��A$և�7�C*���P�wo~����.�� Kĺ�[�1��X?�=����?y���e�-����E��<����{:;5g�)l�e�E4L����R��V<�_ o�����mu3��u���e�!�W3k��Zb̍�?�^⧲�B9hA�W�l�A��L;�,6 -^�Qt1��ـJ�T���2��q.��OI��Q.�0�(Ԁ�KE��w/&h��RX��D$A�X��H��vEh3�F~�����'ʬ[]��/R�ZzPAJ�M��O�$3���Y��$aa��s_7Z��#{r��,�}�~�i��hm�4Y��$�m� xE9b����ڋ��x��~��Pw�B��۾@fA�lr�2���"U*��>�v,G��ɝ���Gt-�j:[�hյ��W����Q��q� �j<�M�����oӔ��7GXO�n�4�<�'O-�@��I�/�ITM9'�w�܊��ܕ�|�\+�xb]Ha[��1K�?i �LvȒHXl��n��0tU�.3�T�_H��tL1�17`G�,[սn�QsqZj���Y�` ��LXi���p�KdZ�C��er�9 cg�z�W�ko=�f/.?��pŀ�|$���VpI���HxtM3l -~L�cSWlk��İ�N�V<w�W�\�{&�8��m^sA9�j� -ﻃf���#~: -�������:v�#�=X�@Z��H��^�������������'(,��6/���]�&�'O�km��-�Wi��ѥ��Jh S��$CV�E��勫����B���n�nKd�W -v[W�n�g��V����?cmU"}��]U�i~I}B�$�5l�<ħ��JR�Ţ[X���Y�M�A�9i[�Ul��R -�R���Q -N�*��3�p�Ou��bs�0���$�$TM�>�b�e_�)�{��e=j��-�>�Y$�Ǿ�ry0�XVRl�}*7>�F�^t -�gB*Q����3� -#@���[�}�uyI�� Sp�Gt���lŮ�H��v��шy��A1i��� <�s}�q��/��6]*�@���N�<!rI�$��$Y�6_��Q ����W�5Z��K�d@"��[�("��m7�o�1�dܠ�n���P�V�l�c��S�������ʕ���~jK��`ۣ����Bm��UqZ�QrE��,���XC]����� -��8�g���R�|ڡd�(dݔ�X��z��+��x��������-qg�z�i�(?^q6}uV����hV�/��L�Y*�( S�x�f�������fo9���2�pw0T�� -%hYM2�C�m�ָ��aq�%р<R`eT�k/C ��'K���[G�'T(>�;�Ϛ )0>��S���MBj��^����HW���/{�M,I�˚�,y��z��( -����FO^<)�8�vKCC�^�x�sC�������i֭�(�l��Oz>����s�Q��۪9m-c�@Ytㅠj>ި��QȌ�T�Tk4�^ʨ#�[r��2���7�)1�������y��L����A��"��N 0X�O��۬f_��`�Q�=S�([3�m���r�<��충�zd��L&P�b�@�a!��s}��L�?��%�gp�4��M�쎧ܽ�<�)`�EƸj�/V��l3���6I���]�Q��g�h�C)�cƦO]v'���`�U��E9��*�G|և�rS�2w���F��[a�$�V�]x��,�'��7�p�p [r\G��<�ԬcGD�D���i����������t$�,��� -�T�Դ]aG]�;���yA'���n0���'\?�<����p�p�J�� ��>�u���l���A���0⿒��� -�� g�`o�:4~;�]�sE#����V�%��h|CT�C]���Xr�����[d��3<A$J2Y��:��,!J���*E3�EW�St�ES~|�V}��_~@���,�Y6�GY}�Y+?q -�j�͜��(��[bt?�z�Ⱦ�"u=�rDa��MIs��K,�p����Ǭ����l�qx�8�Q��'HR6�$EmS�Ǿ4u����s8_��M�[=T}��ݗ/zho) -Z���$I�C���̅�����ԭ��D����|X����p� -endstream -endobj -165 0 obj -<< -/Type /Page -/Parent 1498 0 R -/Resources 167 0 R -/Contents 168 0 R -/CropBox [ 8 0 603 792 ] -/Annots [ 166 0 R ] -/B [ 280 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -166 0 obj -<< -/Dest (G5.519705) -/Type /Annot -/Subtype /Link -/Rect [ 298 479 458 490 ] -/Border [ 0 0 0 ] ->> -endobj -167 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R /TT10 250 0 R /TT12 257 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -168 0 obj -<< /Length 2674 /Filter /FlateDecode >> -stream -H��W�r��}�W�#�5�3x�#��ĩ��<��"A2/*������s�g�J���n�J$8����ݧ�\MF&-���G����E�c��҈�r��c_�i��J�����_��ڏd!e��d:�b�}�%��|�2��_'7d� -��ǫ�������1�VUx�s�m��Y���*\֬f�ߟ�!����E���ݢlR��c� -�J��כh�yi���z/^T!E�+��e��sJ�d�%{�r��uQg���,l�܄���Lh��9^��A����}����r�Ux�r@1���qt=)�"ު6��Ϧ�^h�/�j�Ŧ�G� -ӾJVM�D)]�h���a�'�G���Ӳ"�*� -ij���*�q�.�m;��]���*��."�B -їd�4�`N�}�������)�}J����ڧ����)d�bF&��~����֫��{��۵�bG�x?5� -W�}���"�c��E��)�>WHvOUF!���9��Y|Z�cMQ���O���eᇟ��ӆ -�̺�Z�7��*��U(�qr�i놢<h�>7��)�Y;���4��� (��h]����O�m�%9k�5U+9���7������ն�o@��O�πօvJ��F�P�bK��:2L����"J�A��-�z�kmߦS��m��%<�IGxu����=��O��9χ��+q��Lt}+��fU�8���B".�Q�X�[����Hؒ'j�L -��F!�n�!J|�y&�p��y��:Bڨ<�?B<�Zy%{{lmyP���a�u�Z -c�,v���ܷėႵ�,��u���y��^��v� (�x;s됨���к�.��j�n�}�мt jtP� -,z�/JU�փ�=�7����N&!��*;�$'�:�dɉ@�}�O�8�r�{?=�CA'����Y0�.J)�1ê1E���#�n�;�iY�zQ]D����2��D��|���A��RA�bʺ0M�Mg8ѿ��8�]^��=����'�y$ḌL<5_At�����۳Ȗ���ϜEVׅRD�?:�|�zMS?�n��f��6J�}�5�eȔ���0v,i���FI?��먔��P�S喚��uY+���a���8r�Y��F��i�i��lO�����%u<M��h�p -,�� -u�S�KJMHp\q�<���g�Ao��&��2P@^���3(��T�ި���f�;�h��7�4�j�rNn[ -D�COf�X�G��ډB8V -ʤ�:Ha:� -g���}}���L�R�i��1��͔>�P y"`ɘ5��n��C_�ϛ�ڱ*Q�N��m��+���(i8.v�����]�-w����ӣ����}���3�� �c� �y�+`>�* -J%CT��)�H-�h�[uh�A�Bxh������f/��ĞT��W9���έ�J���%�s�L;8G��Υղ���*�ci�.B� -8F�\dr�ˑ�,Y�ϋ����X27<JЎ�cz��9�}��>��������xG <ɚC�a$�Yֈx�L�R�#W��.z��* ���/�&iM�貒�2j�i��b��4Z(ٯ����k�-6��$^#)K�G�]�h}�x�a/�5jP�6��48f�q�S��&���Dh]�4�B���rCjv��;�CƂ°�(Ŋ4?�%�g�A�i�O�#8tT�t٩�Q�:xJ�>��6�-V�}�㾆��WT�f%���N��f��c�=I���0�'X�����_ޘ�UM���B[���ȓwa\�q��H`��qfE��V�����kW$�����ǜ��9 ��8$��g��F�$��8���bltQ�#�җ8ʠJ�(��3挤�)Iؠ#*ۊf��2�BU2��ǵ����M�X�x���95��iV��i�� 㪪��(,���TX��t�����D�����u�F������} ���V\S���{Z���p��������*~O���yؠTJ��2�=���ч!h0b`�F!�G\u�g�vW�rm�/�,������.����<v -N:�F93۾���P���4hm<��A��<U��I��[Q�헓,��a���qj�!��EG�_s�ց��4��4���nP@��\��ɩy�@�@� -hN;�ܠ!y���@n�qW�l�>C�����X��b�lh�:��w.v��E$�����1iQ�v*c�9 -�(�ۑ�v9П�>�(d7<�1E;:|�w\���s,`|͒'a��'M��G�R[�UTo�cحY&�@9�KLq�1AE��ʋ�u�+�H -Z�S�M}MLs1h��^C�Bg��ߊ:mGK������C��� -X6��%�1��FR���PPZA�DY2��ϓ|��=$I��� Ȓ�:'����7�� -�`W�;h�Zѕ�f���I���@ob�CN��:�w���� -W8��*C�M]'�O l�� ���u҆�=�p �&�M�����Wy$��7�4� �.��_�)kBO���-�A���<C��t,�]�~�5*�� -{N�Ea���q��fX�H-�T$X��g�I����o�b�^]�a�0�>gX��.I?...��"�D�Kf��"y��a]����7�$nׯ(�$i�!�X�u* W<I�d�����{��fњ�p��vj -�XL����ȟ���X��� -endstream -endobj -169 0 obj -<< -/Type /Page -/Parent 1499 0 R -/Resources 170 0 R -/Contents 171 0 R -/CropBox [ 8 0 603 792 ] -/B [ 281 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -170 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -171 0 obj -<< /Length 1829 /Filter /FlateDecode >> -stream -H��W�n�F}�W���6��uݧ�U�Z�zk�@K+��D -$�ֿ�/���.PbJڝ˙3g������Z1�ֻ�f1�i�+��,)E�� [��s���ϒ��f���;��E,���z�X�1O[����0��)Zf��U�T�{v���C�F��o�w�|���?Z�: -���M�T��ٲ��5���(��vk�����kT"|5�VN�2gn0ݱ�2��:��7��_����G3T2���(D-�d2�[�1�j�t��<OG��x٧,�ER�B"ɴ&Pc���[��=L�}�pR��eq*T�|�:��]&}�N(M�����(�gʝ�>��й+-=�8���E!r�.���I8�̐cY8�,���\��6ZJ�p�cu�N}�r�e��cm�&JqhI!y�UC�6����;V!>{d��t�ٸ'6�(13��9v�5Os����U�%���o��c{p? P -T`�-_�pU�������,����}�l�6}�=�0���j���MW�q�N�2 &=���w�jgv�#�K䁂qd˚�`p�{Қ^�6f�1��9شQ��)J�k=�:�6hXu<��Oi_��(s������u4���G�-S����-�E���u�D���µZݛ(� -V�wQA% -��5���-��J� uzGO��_ --A� �%CKL8�U�O����|v;1��+�-QJ%�Z��}Ҫ�ʒKF�)�+6I���C��=����r��,$'uY��y�k�J�Ȃ��Q�z�<'��}A��*$z$���.�>e���w\���R���3-.*~�6�kc 7��ps�]�N��PՍ�pB���U��&����t�B�_��䩏� 8<��T� 3����ss~�?P -$�"]#���L*��}S�bm�e��<��U����9a���v�V��&���*��PJ�A'��y0�T�l� -DVytu�#�A_vvi�ɹw��G߁`��y��<DA�� ()0��bT���po)�v/y \��=�@���\�M�)G�~�S� -��&��N��!�O�)f�O)����3���Ii���\�}�6��U3��ԜH=��4NB��T�S�j@�@4�x��`��� ��Q;����`�3�SѬ�� �� -����,'LO9�I6Z���lǜ�� -=,�y���9�m�d�"CC�>G9uֻH ?�̬��c�X_SO��d��֩�j�d�"�څu*��ݍ`>��K�.Ê)`����oN]=<߶{s�7��{�%�I�w���;s����;�k�M7�Ϸf_Ѹ6{��=�]���H9*��I��A�n5����t�d�}ۡ{!�{cݑ�����=�u�(ͫI�Â�')��N?�X�k���} -����u�,.���ڇ�~���6����-�H)h㛪���g�)�M��/?\]a����3�������гt:f�l��_�l�Xzs����_�k���z0o$/S=I!���H�bNu�n�juk�S�WCP��������۪�P�N�8�I!Sd�Fj���!~�fX|��O��J��� -`�*A��¤�~:�!�ʳ��}��a�Y�=B}[��ZH� -*U��!�ʔ(�\*_$�D��X���^)(��{g"}�_J�r��d�ƭ�x�[� -[��(�y��M!��¹4����~1iEF�G2V���vDB�FC�`�#���.�j��<.����YL��}{�����(�7 -��d��q�I䴀e����5�wЮ~8u�{�Pu��X.h�(nhg��K -�����P��z��C��� -endstream -endobj -172 0 obj -<< -/Type /Page -/Parent 1499 0 R -/Resources 173 0 R -/Contents 174 0 R -/CropBox [ 8 0 603 792 ] -/B [ 282 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -173 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R /TT10 250 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -174 0 obj -<< /Length 3510 /Filter /FlateDecode >> -stream -H��W�r��}�W�#P���<F^o'v�,�jh ��DE�����t���r�U����ӗ�=��ś�R%�w�NH��D�c� ��҈�����]+nvlVbw�x��+%������by��b�cq]���WF�-���m<Zl]���;C�/�g��M���~{�oD}�6�Z=܊??�[�� -Wm�֛^�J5�3:��|<�n���y���tػ����晴"�J��l������|�5a�k�t���5�z^�ߟ��WB��=ؗ�.D�_��^��*<�ɲx�������r��J�V�i0�F�eh��V��S��[H>�ֵ�18�4J8��&�K�h -�K�4�5�)�8�T����qmL����������V��6�Z�e�ۦ�3.|���{�&-[��<x�|�Ox�>�R����U�y�����J��*�"t�i�,��O�8��jO�Z�����>�L(���@鏌�aǟ�*���*�]~]���z��iu/n�����s������|�`�ډg~��c��[�c��s9P�E����q�}����*������������p��!�p�ֳ?"ěmM�'�H�j����~�kx�A�!<\�D봰�#�,�jۘ<�L"���I�^�}�hq��#��O�բ�!���_R�b�Z,t��a�є�xHN�Z�.);\%ct=������ơfP�!�PIy�Ui8��K�,�>�����kE. -���&=�kC.^�]���ò� ]:l{�%����ÂL���,V��B��Ձ�t�W�p��@ ����G�`�akN�<��>e����J�o=~V�%�z���.=��k� -��FkZ���Q� -��i�ڒ�s\�KK��ߗ$T�<�.1֦�KV$r��c��PYR��y�C��3>P]�'3�C}a�1e�x4`�u{_�Ër��A%��� -�fY6�+�]��d�����_�D�4�"�^g~���L#*<� �GơŞt�9��0�Eׅ_*��Kz )�Cf��C��*�Ggp����p�6ٸb���j���9�J��9MM���lF)b�#]U}�!�?�w���HGF$��[Q�'������VH�+`���-Y�!�(��MD�Mi�u)��z*T�<l�����ݢ�S�y -,M5?Ӣ�h�&���l���#�Sl5��E{M�Sl�J��ƃ�G�?�!�кD1��V -e�*��ה�wJW=o:���C0�̭�d�ɐ����nx\t���*�<;��1fY�q�e�%��ǎ�ե���+D��%�J2�Qܯ��B��⩧���=��Q�T��l��i�5�"6����p`�Վt��5r~sl'������4_,4R���q���E�|O�~Ů�C+�氺����خ�UgZ��sr^Z���r�GQ����r� -g�3�y��.I�?��oP4x�$BťO%N�bդ����rT:��%!� -w���-.0�*�DU|�_�����*q4������SAg�ń�X�3������i<8+z����#�`ƛR'�;̟����VT�(a���#n�4ܤ�뻺�.�N�˰��- -� *ݱk��_��,u8qS���M|�븻���+v�j��z�0�=�Pb��Qq��O�: -�01��ʰ=��ư�X�1�B!��K�j�ugV����������Q��5F}`�j�X�@�U����W�I�6�H�f���?����r�f�U�Nʝ+~}�;��b�Du��0qm���+� -=���� -���A?�7��I��qj.s���>�T$7A���Ar��9%�!��oO� -kʝ�mN��3[��o0�:���@:�ya<�*Y -��f���]#��V��"��Ȍ"n�@�W�AA�"����h�龡Ф {�ˉ���>��(f��� -��1���d�[�0,���a�ed��xYi٦��63�1�p�Y�F��Am<-���Q��$*��v��7}�u�Ҍi���19�"��!bDĴ�����<��Mr��'Tr��5_�BL_B�?�zv�xROVG��I�no9��'�a(v6�"����Sj���~�pbl��l��$�+�)��中��-���n�:�I�0F��߮�i���B%a�3��K�J#�u��Ez+˂�����$iX�����1O��kȖ��c�(�è�Q��9V��j�zrFԤ�9�H�0�6u�ZunӸ�Xi5��=���������e�j�)����S�Ρ>�k�\��ڐ7-r�[ѱ]R���F������r�; -��ư�q�"؆G�#��fX�1 ��t9���1�+V���.G��ͱϝ-�~����p'��� -��ojc'�5N��v�q�S�7�M��S�Q��!|�ITa�B�ү�2��,��a8�ĥ�$�,U��]̵u�҉�����E��:O�]"�����j�V��%"�QEr ��&���%�i��l3IW9�>;�:�i�`c#�e�k��gsd�����KFc�sn�m��i��w�ю�����Αْ`2��q�~Q|p�y8�k,V������Ȉ�#-�]:4������a>�i���՝��RV�i�ԃ�����VL/g&¤Y(b�L�heY�� j�B�ۘ;p��p���lQ�87���V -s�U�S��e�5���������xE�2F6�B̶iS�"��cn�|�3����$]S'�K�ƚ� 8�^+i�����6�' -���t!!�+�f_{���Z �+�Z�Xu�႖��{a6��H#��ec����W4��W��Y1�gy�:2�L��v���y�.�pBv����*���D��W1��0��Q���2�gR��$U���L��v��O���>{ �B������3�;6t��J���E:�C��c����5l��.U��~_�� ���G�߯(]ǘ��e2~�ʚA��B~��A��W]�%N�"���ѕ�y��ȓCY���[�S��+�n��`�0�T'ʧ[ʹP4I��4P5p��U��g�Ը�X�#7�K�W���x=y������?��j��(ޒ��m~/� a��W�h�n"��q�����>�e���O;|}�-��B��'�C�z�Z�~ra�����z���j���@:�ƪ��VmX5���E�%˴o<����N�=~��`n�v:��j�JLN��EҼ�ƶJZQᮒ�ǦS�7$�;-�ȃ�sӚ�|��+�� -`���夵������~Lxr����@��]��q��m�ojU���Vydޞ�jߡ<�X_'��N�����Ɉ6d�u`�|^�U���A��C�i��>㸝������Y���Ҍ�<�%݂8�&���Z���E}dԥ��� -Mn����jIߡ<�Х�+qi}��:�j�ty�@��MG�g�0jc�Ӡ�u�,F����=�:�jd�~�3�U~"�a�Fͣ:� -5֒�n6�K3|��zd�� -endstream -endobj -175 0 obj -<< -/Type /Page -/Parent 1499 0 R -/Resources 176 0 R -/Contents 177 0 R -/CropBox [ 8 0 603 792 ] -/B [ 283 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -176 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT4 1545 0 R /TT6 234 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -177 0 obj -<< /Length 2694 /Filter /FlateDecode >> -stream -H��W]s�H|���G�a��66&bgv|q���č�i��Ԗ�I��9����j�@�p���VUvUVV�����|���Ǜ\��˅VA�(�8��|{s���b��e)�eus��/R�ۛ0�4����:Vb���wg�ޟ%A��Ly�+*�0��5�'ߚ}K -��߬�|���l�x)DQ�ħ�� ��ٴ?��χ�ύ� ���rcz��l8�����Dg�%$���Eҟ?���A��y�S�� �D*� J���=E��4� �f - -��v� I*8K$s�B��< -"���0CX� 0�(��a~#���4 �L�4FZ����Q��P -�GL�?K#(�OʀOz188���Ӄ -5�_'*�)e`K��� a ���ؚ��R.�٘��:�,*�0b[�vf%�ZXo2b�C$2��sY.Į�g1�Q�I��G��ʮ1-�]YWbߖ���ݓ���LS��iֻ�I_�r�O��[�vٔ�,+k�ID�5l�X7��;��k��[Ni�����T���E�gf�|�JgK�?|����YB�5����,��r�gV>��.��1�@2��Q�{*[њ�4�7?��� 6o\�6{س����� c*��p2����O L��^vO�䲮ڮ)ʪ���k �fcܶz��qvir��\��K� -��5ek�1���|)>���j}�.��S��e�o�;��i �x�#�([g��D�ik��Χ�XBj�~6��|���41��Γ�2.�k���S� �0Sl�uuȅ͂�%�r(Gh{s�x�XЊ� ��R^c����S�w�Ŧ\�U��ǮG�<�0�0 �K�U��v����|/Mۊ}�2�����YHrdKS�����c�{����=u�������.�E%���s�ܮ�rs�t���!h��$�$W(�@�"�l��cA�Tb5<��� �6��⛏#6�~�$�=��( -�@������4� ��Cm"����3N�H$�s��G��(����� -"Y2��|�\̞�,��ܫ^@=�^��C�cKɧ��K?��A~lio��5-W����!�2�\Ҵ`�q sьJ�,���,]���z�X@AP���^�}�f";�QGI_���YtQ!hȨD(�ESn^)$TN��bU�ض�8��?���A���e�p�h'��(͎�D��!ʮa&��������P��b��D$�j���`�o����C�l�)X���x����ngga�j}��_�4���L���"y����ߐD�V"�X0� VB;�����qz���g�|$܋W�?���xM&y7�^#���k#8�}^��tL�p�*9��;�Qc������۶\p'1��QX���C!M<S��SG���t�0�5�p�1��0BՕ�����CF�mD/�3�e:w���s6�J���S�4���A����Ն�|�8P)����dɼ�'g�Qu�5Z�b��L>�~1��M�GKC�ъmU?���d5� -��u�lӄ �T�w�����0��;@���P��� Ň>�}iӔ����أI�~'-��<�a����S$�ap�g�C|2T�>�s�h2=��Υ�\`����}Aq�)<�P���u�(σH$S��2�n���hY�|.�YN6�$�7�T$+�m���̓'� -C�ផ -Q�]P�%zҚ�?p�`y6�� -͓K�㗝e�F��֨|(�/?�^��ݮ�������p���{n�҇�qk�E�C�6m�>���PgA�������Q���]���D);���C����1�S8 -�m�Ɠ�2�4ŧ����2$"��H��E]��ݞA�d~:h�g{���NT�H�<����- -��ц̖���:#�>�����g0�A���ӑ�1P\��r��[�� ] O�ZP{Rd ��:F�U�h���p�"�L�6LƴUc�^�i�4З��0W�+K�#=$T�ʎ3^�Փ�q9Ҫ��������8w��_~��'�rb>�̰�[���{?Mc��h<�'�$4��n.p�ǖ!3u)*=E]�E'};�N�>���~����3_�u�1Euh�Q��)a���m�]�/����weUl����ؗ�ӕ��1�b��B���A��׀B�����m6����W�{�n���}�忋��V;(L�kH���#���&M�4��I�0X��Ӥw���׀9�O��;� -�H�zw����R�*��*#ٽʆ4tr���צ)^�~Jc�/&sώ9������t|~eE�t��`\M6#�d_C�'{:?�l����Y��*C -��}����Ԗh�<��bȶw{�:��t3�P$+�5�=#/b��C��};�pJ�m���lVg�z�o���}�o{��`������=�v�]��1΅�팛�u2��8l�����N��:���ނ�;F�^�u�Ǧh�R��$�RR.߹{��h%���TMΞ��o��t���o�x�|C�U�������E�w�§�n -�M&�V��˷��ig �F�x -T�d^�[9�(��\'������Pyսc��{uzcE��.�Dm�D{�<������R9 �2\y�M0��x�$]�T)�&�hΎ�qM�EJ��ua����/�@RM,&�|�'1؈~�� ���".�Ӌ��&i���8��M���'�E��M��� -endstream -endobj -178 0 obj -<< -/Type /Page -/Parent 1499 0 R -/Resources 179 0 R -/Contents 180 0 R -/CropBox [ 8 0 603 792 ] -/B [ 284 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -179 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -180 0 obj -<< /Length 1351 /Filter /FlateDecode >> -stream -H��V�n�6}�W�Q,"�wIE�@�zݠhԾ��A��XY[2$%A��wx����-P$�h�3st��p���<�9b(�e��_�4'B"�*�@�f6��4*;��PWֳ�/w=v3J(� ��E���s�c'�����ƺ��5K�4�ٝτ=�Rko���ŦY�5±&IT�K�ǧ_�o-*j��A�%c$B�y���{{h���x)�u����@/�P4� -��)�j��r��>b��`N��Ŋ����7�L"�݃b0��a��C2���@��',!��W ��,F�O�E>c��Y&�̂�q�����5��u��9M���0�hB�m�L��+�(Fn��M��8��%��Y���T�+������^"�� - b>A��kj/(��T�� %:SC Ɔ@�I(_U��mۼTK�D�o�ǚ�he�e� ���^�xi���4����yH���WT�h�|��J�l���V� -~�W9�8o��.f@#�1���u��<�U�f!����e�s�4-���=6)���/Qg��w����z7�+�U�o�ϟ�-iZg��q�Ե�£��d T��\��n�$l^�u� -i�L�3 -b�//G�% X�)�� �����h�H"B:G��j�Gr挒$�e��t:���D�tL�Slty�|p���Q|aը��J�|2���=y>>W{9�^XB��p��#$c/�v9�̦e:��b"��.�:"U��}E٣��Y���4��8�(�Z7�E_��������+v����7��1tڨ\�M]}���G�Fܵ�S8̢�4V.F�Q�����ݲX��^��;^75p�c -���XBzoo��z��CԞ�.�!~�ۦ�X� ��w�ڷ58#W'�Mm��#���n��éf������N�*��8F7�=�X����v�b��k���04�.� p�u�G������f/�6��%g���٘���q\���8�L`�c���k�� �c*���39J2�-6㫓��؋&�[��o���(�����$��],<��`�8���oo_�tP�����7eo��]�]�ۢ�Z<�.P��5hQ?oL�֜��Aa����Ab'Q5���?��Q�U��F��M����<���ٍ���-����;Dv�Myh�L�Ћ��i��q�]Q��>h�i>�s���=ӈ�|����R��n+;�C�|��V��m�Ml;@�Q�ԥ��{7Pihΰ���"�v���-�j�w�?k�z��R�"4`ˣ����L�m�lʵg��p>��pyv�N�gmm}0~nW��S}����S����M{���l�t�b���w�*: -endstream -endobj -181 0 obj -<< -/Type /Page -/Parent 1499 0 R -/Resources 225 0 R -/Contents 226 0 R -/CropBox [ 8 0 603 792 ] -/Annots [ 182 0 R 183 0 R 184 0 R 185 0 R 186 0 R 187 0 R 188 0 R 189 0 R 190 0 R -191 0 R 192 0 R 193 0 R 194 0 R 195 0 R 196 0 R 197 0 R 198 0 R -199 0 R 200 0 R 201 0 R 202 0 R 203 0 R 204 0 R 205 0 R 206 0 R -207 0 R 208 0 R 209 0 R 210 0 R 211 0 R 212 0 R 213 0 R 214 0 R -215 0 R 216 0 R 217 0 R 218 0 R 219 0 R 220 0 R 221 0 R 222 0 R -223 0 R 224 0 R ] -/B [ 285 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -182 0 obj -<< -/Dest (I3.1.511264) -/Type /Annot -/Subtype /Link -/Rect [ 62 666 296 677 ] -/Border [ 0 0 0 ] ->> -endobj -183 0 obj -<< -/Dest (I5.1.528647) -/Type /Annot -/Subtype /Link -/Rect [ 62 656 296 667 ] -/Border [ 0 0 0 ] ->> -endobj -184 0 obj -<< -/Dest (I5.1.528675) -/Type /Annot -/Subtype /Link -/Rect [ 62 646 296 657 ] -/Border [ 0 0 0 ] ->> -endobj -185 0 obj -<< -/Dest (I5.1.528643) -/Type /Annot -/Subtype /Link -/Rect [ 62 618 296 629 ] -/Border [ 0 0 0 ] ->> -endobj -186 0 obj -<< -/Dest (I3.1.510694) -/Type /Annot -/Subtype /Link -/Rect [ 62 608 296 619 ] -/Border [ 0 0 0 ] ->> -endobj -187 0 obj -<< -/Dest (I4.1.518321) -/Type /Annot -/Subtype /Link -/Rect [ 62 598 296 609 ] -/Border [ 0 0 0 ] ->> -endobj -188 0 obj -<< -/Dest (I4.1.518320) -/Type /Annot -/Subtype /Link -/Rect [ 62 588 296 599 ] -/Border [ 0 0 0 ] ->> -endobj -189 0 obj -<< -/Dest (I5.1.528667) -/Type /Annot -/Subtype /Link -/Rect [ 62 578 296 589 ] -/Border [ 0 0 0 ] ->> -endobj -190 0 obj -<< -/Dest (I5.1.528654) -/Type /Annot -/Subtype /Link -/Rect [ 62 550 296 561 ] -/Border [ 0 0 0 ] ->> -endobj -191 0 obj -<< -/Dest (I5.1.528660) -/Type /Annot -/Subtype /Link -/Rect [ 62 522 296 533 ] -/Border [ 0 0 0 ] ->> -endobj -192 0 obj -<< -/Dest (I5.1.528668) -/Type /Annot -/Subtype /Link -/Rect [ 62 512 296 523 ] -/Border [ 0 0 0 ] ->> -endobj -193 0 obj -<< -/Dest (I5.1.528676) -/Type /Annot -/Subtype /Link -/Rect [ 62 502 296 513 ] -/Border [ 0 0 0 ] ->> -endobj -194 0 obj -<< -/Dest (I5.1.528657) -/Type /Annot -/Subtype /Link -/Rect [ 62 492 296 503 ] -/Border [ 0 0 0 ] ->> -endobj -195 0 obj -<< -/Dest (I5.1.528670) -/Type /Annot -/Subtype /Link -/Rect [ 62 482 296 493 ] -/Border [ 0 0 0 ] ->> -endobj -196 0 obj -<< -/Dest (I5.1.528663) -/Type /Annot -/Subtype /Link -/Rect [ 62 472 296 483 ] -/Border [ 0 0 0 ] ->> -endobj -197 0 obj -<< -/Dest (I5.1.528656) -/Type /Annot -/Subtype /Link -/Rect [ 62 462 296 473 ] -/Border [ 0 0 0 ] ->> -endobj -198 0 obj -<< -/Dest (I5.1.528661) -/Type /Annot -/Subtype /Link -/Rect [ 62 452 143 463 ] -/Border [ 0 0 0 ] ->> -endobj -199 0 obj -<< -/Dest (I5.1.528669) -/Type /Annot -/Subtype /Link -/Rect [ 143 452 296 463 ] -/Border [ 0 0 0 ] ->> -endobj -200 0 obj -<< -/Dest (I5.1.528666) -/Type /Annot -/Subtype /Link -/Rect [ 62 442 296 453 ] -/Border [ 0 0 0 ] ->> -endobj -201 0 obj -<< -/Dest (I5.1.528665) -/Type /Annot -/Subtype /Link -/Rect [ 62 432 296 443 ] -/Border [ 0 0 0 ] ->> -endobj -202 0 obj -<< -/Dest (I5.1.528673) -/Type /Annot -/Subtype /Link -/Rect [ 62 404 296 415 ] -/Border [ 0 0 0 ] ->> -endobj -203 0 obj -<< -/Dest (I5.1.528642) -/Type /Annot -/Subtype /Link -/Rect [ 62 394 296 405 ] -/Border [ 0 0 0 ] ->> -endobj -204 0 obj -<< -/Dest (I5.1.528645) -/Type /Annot -/Subtype /Link -/Rect [ 62 384 119 395 ] -/Border [ 0 0 0 ] ->> -endobj -205 0 obj -<< -/Dest (I5.1.528649) -/Type /Annot -/Subtype /Link -/Rect [ 119 384 296 395 ] -/Border [ 0 0 0 ] ->> -endobj -206 0 obj -<< -/Dest (I5.1.528644) -/Type /Annot -/Subtype /Link -/Rect [ 62 374 296 385 ] -/Border [ 0 0 0 ] ->> -endobj -207 0 obj -<< -/Dest (I5.1.528646) -/Type /Annot -/Subtype /Link -/Rect [ 62 364 296 375 ] -/Border [ 0 0 0 ] ->> -endobj -208 0 obj -<< -/Dest (I5.1.528650) -/Type /Annot -/Subtype /Link -/Rect [ 62 354 296 365 ] -/Border [ 0 0 0 ] ->> -endobj -209 0 obj -<< -/Dest (I5.1.528655) -/Type /Annot -/Subtype /Link -/Rect [ 62 326 296 337 ] -/Border [ 0 0 0 ] ->> -endobj -210 0 obj -<< -/Dest (I3.1.510687) -/Type /Annot -/Subtype /Link -/Rect [ 62 288 296 299 ] -/Border [ 0 0 0 ] ->> -endobj -211 0 obj -<< -/Dest (I3.1.510677) -/Type /Annot -/Subtype /Link -/Rect [ 62 278 296 289 ] -/Border [ 0 0 0 ] ->> -endobj -212 0 obj -<< -/Dest (I3.1.510688) -/Type /Annot -/Subtype /Link -/Rect [ 62 268 296 279 ] -/Border [ 0 0 0 ] ->> -endobj -213 0 obj -<< -/Dest (I3.1.510691) -/Type /Annot -/Subtype /Link -/Rect [ 62 258 296 269 ] -/Border [ 0 0 0 ] ->> -endobj -214 0 obj -<< -/Dest (I3.1.511265) -/Type /Annot -/Subtype /Link -/Rect [ 62 248 296 259 ] -/Border [ 0 0 0 ] ->> -endobj -215 0 obj -<< -/Dest (I5.1.528648) -/Type /Annot -/Subtype /Link -/Rect [ 62 220 296 231 ] -/Border [ 0 0 0 ] ->> -endobj -216 0 obj -<< -/Dest (I3.1.510687) -/Type /Annot -/Subtype /Link -/Rect [ 62 192 296 203 ] -/Border [ 0 0 0 ] ->> -endobj -217 0 obj -<< -/Dest (I5.1.528671) -/Type /Annot -/Subtype /Link -/Rect [ 62 182 296 193 ] -/Border [ 0 0 0 ] ->> -endobj -218 0 obj -<< -/Dest (I5.1.528664) -/Type /Annot -/Subtype /Link -/Rect [ 62 172 296 183 ] -/Border [ 0 0 0 ] ->> -endobj -219 0 obj -<< -/Dest (I5.1.528672) -/Type /Annot -/Subtype /Link -/Rect [ 62 144 296 155 ] -/Border [ 0 0 0 ] ->> -endobj -220 0 obj -<< -/Dest (I5.1.528662) -/Type /Annot -/Subtype /Link -/Rect [ 62 134 296 145 ] -/Border [ 0 0 0 ] ->> -endobj -221 0 obj -<< -/Dest (I5.1.528652) -/Type /Annot -/Subtype /Link -/Rect [ 62 106 296 117 ] -/Border [ 0 0 0 ] ->> -endobj -222 0 obj -<< -/Dest (I5.1.528653) -/Type /Annot -/Subtype /Link -/Rect [ 62 96 296 107 ] -/Border [ 0 0 0 ] ->> -endobj -223 0 obj -<< -/Dest (I5.1.528651) -/Type /Annot -/Subtype /Link -/Rect [ 62 86 296 97 ] -/Border [ 0 0 0 ] ->> -endobj -224 0 obj -<< -/Dest (I5.1.528674) -/Type /Annot -/Subtype /Link -/Rect [ 314 666 548 677 ] -/Border [ 0 0 0 ] ->> -endobj -225 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT4 1545 0 R /TT6 234 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -226 0 obj -<< /Length 1560 /Filter /FlateDecode >> -stream -H��WMs�H��W�q� -d>�<F���+ڸlrJ���C"��v�ﷻg@�6V�\%�t��~�^拷y��d�v�1�U�C��@�B�|�x��bVv�Z���o?�I��-D D��\���C��_�{�}��(Hy����'{Ô�z��xvlϖ1`�W��0�x�������A��}�|b7�fF��V;�R� �Z���t@�p�pۦe�ű`��!��z�Ʈ�2l0��� �FL�ĥ�����YjI�U$t��,�I��,C&� ����Ϳ���IG��t��X��J����b�Yl��q�H�T��4���K�����I���[W�;�sV0_�� :��,������p�Ue�WM�>�aʾ��0K�+w��#1HPRs#����-N���G�@b͕��� ��϶hi���ݴ�_?Ԅ&���S@�T��.�.����ծ�:�j����w$ ;���s� �˾U��b�G{�������W� -^��c�ԘW��\�cb�P���� (2��.�0��a8覩j.�v�˙HI5: -േ�n=�5��ٰ��Pr$"y�h%!T���n{L��e"�d��(��GB@/��צ�xP>��S{�Cw�t�v�U=}q�)C&�[_�s@�S�_�}bx"�]����`��K���'{Э�/�of��R��_A�P�_"�¥0��L�kL��\�5R5�qؙ=d,U-�� -^�"��E/�N�X1�������s�$�I�-��ט/��u -P|���_�`ޛ�{s����7 -5!��bϔH2A�����f�a��a�d�����om����൨;6�(KK��B�&nY6�1F�Sإ)\h�8��a`b�q��/;K�k�k*�22C�B�O�AxN�Kԫ�Z8��u}��蕯.k+D�����5%�`c2<�_-�5dy�<B�k���K��}A���D�T������B'���It���:�ɾ��;�sB�(d اf1*���pJB�|LM�fF6ȅ���٪�I0�PK��z��O�x�STxd"#����Sյ������Z�{C��^Z�)!Y�q�B�Y���+9*$�H$���^Μ?/6d��{㦎�\k���8�<SQ;�MQCBe$����{�ÛG�������bQn�ִ�a�% -��δ0�U_�t�*�����|:�����mCWoԠ9o����{�D;��fbj�� "G�����e�Ha긃�q��dm�UI?��jn^�����ϛl��U������]����7��o�����[�p�K^�!������倛���1l̈�tH�Yq��e�%�BȎ� -�-�1%�#2NFɤ�Z��{�yn��j?���.��%{g�Ƕ�O����Tc?���AZ��9��N�����ڃ�O����'Ѯ�4bT�0)7N3����rp�S�_Q� .�ԃ��zg���jx5<�-�8J���W�;@>̕�ʶ:���6��*�ы��S)��u�Ix&��%r�s���e� f@8!�� �h��'�=���oy0�c -endstream -endobj -227 0 obj -<< -/Type /Page -/Parent 1499 0 R -/Resources 228 0 R -/Contents 229 0 R -/CropBox [ 8 0 603 792 ] -/B [ 286 0 R ] -/MediaBox [ 0 0 612 792 ] -/Rotate 0 ->> -endobj -228 0 obj -<< -/ProcSet [ /PDF /Text ] -/Font << /TT2 1540 0 R /TT6 234 0 R >> -/ExtGState << /GS1 1546 0 R >> -/ColorSpace << /Cs6 1539 0 R >> ->> -endobj -229 0 obj -<< /Length 307 /Filter /FlateDecode >> -stream -H�L��N�0E���Y���8��BATTB�]!�M�)��$i+d�3��s��YVӜ=0�F% Y ���A��wjz�yXw�5C�ޫ���[�����Vi�ηz��L�t��륱�t�Y��zf�1�j����[#2^��mm^�BـމL��tF44��DYT��p��]�����eDZ,�s>\�l/�Ùzkz�xM��5�X����+{�`�BF�%)����N�q�ǐ�n�1p@�r� ������������1�Cͳb�S�� -,�|��R��(-��j -�;��e =��N��ݟ��i| -endstream -endobj -230 0 obj -<< -/P 5 0 R -/R [ 53 64 557 693 ] -/V 2 0 R -/N 231 0 R -/T 1503 0 R ->> -endobj -231 0 obj -<< -/P 8 0 R -/R [ 53 64 557 693 ] -/V 230 0 R -/N 232 0 R -/T 1503 0 R ->> -endobj -232 0 obj -<< -/P 11 0 R -/R [ 53 489 575 600 ] -/V 231 0 R -/N 233 0 R -/T 1503 0 R ->> -endobj -233 0 obj -<< -/P 11 0 R -/R [ 53 64 575 477 ] -/V 232 0 R -/N 235 0 R -/T 1503 0 R ->> -endobj -234 0 obj -<< -/Type /Font -/Subtype /TrueType -/FirstChar 32 -/LastChar 121 -/Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 250 333 250 0 500 500 500 500 500 500 500 -500 500 500 333 0 0 0 0 0 0 611 611 667 722 611 611 722 0 333 444 -0 556 833 667 722 611 0 611 500 556 722 0 0 0 0 0 0 0 0 0 0 0 500 -500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 -389 389 278 500 444 667 444 444 ] -/Encoding /WinAnsiEncoding -/BaseFont /MCDPHL+TimesNewRoman,Italic -/FontDescriptor 287 0 R ->> -endobj -235 0 obj -<< -/P 38 0 R -/R [ 53 64 575 693 ] -/V 233 0 R -/N 236 0 R -/T 1503 0 R ->> -endobj -236 0 obj -<< -/P 43 0 R -/R [ 53 489 575 600 ] -/V 235 0 R -/N 237 0 R -/T 1503 0 R ->> -endobj -237 0 obj -<< -/P 43 0 R -/R [ 53 64 575 477 ] -/V 236 0 R -/N 238 0 R -/T 1503 0 R ->> -endobj -238 0 obj -<< -/P 46 0 R -/R [ 53 64 575 693 ] -/V 237 0 R -/N 239 0 R -/T 1503 0 R ->> -endobj -239 0 obj -<< -/P 49 0 R -/R [ 53 64 575 693 ] -/V 238 0 R -/N 241 0 R -/T 1503 0 R ->> -endobj -240 0 obj -<< -/Type /Font -/Subtype /Type1 -/Encoding /WinAnsiEncoding -/BaseFont /Courier-Bold ->> -endobj -241 0 obj -<< -/P 52 0 R -/R [ 53 64 575 693 ] -/V 239 0 R -/N 242 0 R -/T 1503 0 R ->> -endobj -242 0 obj -<< -/P 55 0 R -/R [ 53 489 575 600 ] -/V 241 0 R -/N 243 0 R -/T 1503 0 R ->> -endobj -243 0 obj -<< -/P 55 0 R -/R [ 53 64 575 477 ] -/V 242 0 R -/N 245 0 R -/T 1503 0 R ->> -endobj -244 0 obj -<< -/Type /Font -/Subtype /TrueType -/FirstChar 32 -/LastChar 122 -/Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 667 667 667 722 667 667 0 0 389 500 0 611 889 722 722 611 0 -667 556 611 0 0 0 0 0 0 0 0 0 0 0 0 500 500 444 500 444 333 500 -556 278 278 500 278 778 556 500 500 0 389 389 278 556 444 667 0 -444 389 ] -/Encoding /WinAnsiEncoding -/BaseFont /MCEAOA+TimesNewRoman,BoldItalic -/FontDescriptor 289 0 R ->> -endobj -245 0 obj -<< -/P 62 0 R -/R [ 53 64 575 693 ] -/V 243 0 R -/N 246 0 R -/T 1503 0 R ->> -endobj -246 0 obj -<< -/P 65 0 R -/R [ 53 489 575 627 ] -/V 245 0 R -/N 247 0 R -/T 1503 0 R ->> -endobj -247 0 obj -<< -/P 65 0 R -/R [ 53 64 575 477 ] -/V 246 0 R -/N 248 0 R -/T 1503 0 R ->> -endobj -248 0 obj -<< -/P 76 0 R -/R [ 53 64 575 693 ] -/V 247 0 R -/N 249 0 R -/T 1503 0 R ->> -endobj -249 0 obj -<< -/P 84 0 R -/R [ 53 64 575 693 ] -/V 248 0 R -/N 251 0 R -/T 1503 0 R ->> -endobj -250 0 obj -<< -/Type /Font -/Subtype /TrueType -/FirstChar 32 -/LastChar 125 -/Widths [ 278 0 0 0 0 0 0 0 333 333 389 584 278 333 278 278 556 556 556 0 0 -0 0 0 0 0 278 0 584 0 584 0 0 667 667 722 722 667 611 0 722 278 -500 667 556 833 722 778 667 0 722 667 611 722 667 944 0 0 0 0 0 -0 0 0 0 556 556 500 556 556 278 556 556 222 222 500 222 833 556 -556 556 556 333 500 278 556 500 722 500 500 500 334 0 334 ] -/Encoding /WinAnsiEncoding -/BaseFont /MCEBHE+Arial -/FontDescriptor 291 0 R ->> -endobj -251 0 obj -<< -/P 87 0 R -/R [ 53 64 575 693 ] -/V 249 0 R -/N 252 0 R -/T 1503 0 R ->> -endobj -252 0 obj -<< -/P 90 0 R -/R [ 53 64 575 693 ] -/V 251 0 R -/N 253 0 R -/T 1503 0 R ->> -endobj -253 0 obj -<< -/P 93 0 R -/R [ 53 64 575 693 ] -/V 252 0 R -/N 254 0 R -/T 1503 0 R ->> -endobj -254 0 obj -<< -/P 96 0 R -/R [ 53 64 575 693 ] -/V 253 0 R -/N 255 0 R -/T 1503 0 R ->> -endobj -255 0 obj -<< -/P 99 0 R -/R [ 53 64 575 693 ] -/V 254 0 R -/N 256 0 R -/T 1503 0 R ->> -endobj -256 0 obj -<< -/P 104 0 R -/R [ 53 64 575 693 ] -/V 255 0 R -/N 258 0 R -/T 1503 0 R ->> -endobj -257 0 obj -<< -/Type /Font -/Subtype /TrueType -/FirstChar 32 -/LastChar 121 -/Widths [ 278 0 0 0 0 0 0 0 333 333 0 0 0 0 0 278 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 667 722 722 667 611 0 0 278 500 667 556 0 722 0 667 0 -722 0 611 0 667 0 0 0 0 0 0 0 0 0 0 556 556 500 556 556 278 556 -556 222 222 0 222 833 556 556 556 0 333 500 278 556 500 0 0 500 -] -/Encoding /WinAnsiEncoding -/BaseFont /MCECFM+Arial,Italic -/FontDescriptor 293 0 R ->> -endobj -258 0 obj -<< -/P 107 0 R -/R [ 53 64 575 693 ] -/V 256 0 R -/N 259 0 R -/T 1503 0 R ->> -endobj -259 0 obj -<< -/P 110 0 R -/R [ 53 64 575 693 ] -/V 258 0 R -/N 260 0 R -/T 1503 0 R ->> -endobj -260 0 obj -<< -/P 113 0 R -/R [ 53 64 575 693 ] -/V 259 0 R -/N 265 0 R -/T 1503 0 R ->> -endobj -261 0 obj -<< /Type /XObject /Subtype /Image /Width 16 /Height 15 /BitsPerComponent 8 -/ColorSpace 263 0 R /Length 57 /Filter /FlateDecode >> -stream -H���1 -0s��?�%�ҭ�)�V�iJaFl� -yCWx��ıx=��`?h -endstream -endobj -262 0 obj -<< /Type /XObject /Subtype /Image /Width 16 /Height 15 /BitsPerComponent 1 -/ImageMask true /Length 14 /Filter /CCITTFaxDecode /DecodeParms << /K -1 /Columns 16 >> >> -stream -�!S�MRիV� -endstream -endobj -263 0 obj -[ -/Indexed 1539 0 R 3 264 0 R -] -endobj -264 0 obj -<< /Length 13 >> -stream -����� -endstream -endobj -265 0 obj -<< -/P 116 0 R -/R [ 53 64 575 693 ] -/V 260 0 R -/N 266 0 R -/T 1503 0 R ->> -endobj -266 0 obj -<< -/P 119 0 R -/R [ 53 64 575 693 ] -/V 265 0 R -/N 267 0 R -/T 1503 0 R ->> -endobj -267 0 obj -<< -/P 122 0 R -/R [ 53 64 575 693 ] -/V 266 0 R -/N 268 0 R -/T 1503 0 R ->> -endobj -268 0 obj -<< -/P 125 0 R -/R [ 53 64 575 693 ] -/V 267 0 R -/N 269 0 R -/T 1503 0 R ->> -endobj -269 0 obj -<< -/P 128 0 R -/R [ 53 64 575 693 ] -/V 268 0 R -/N 270 0 R -/T 1503 0 R ->> -endobj -270 0 obj -<< -/P 131 0 R -/R [ 53 64 575 693 ] -/V 269 0 R -/N 271 0 R -/T 1503 0 R ->> -endobj -271 0 obj -<< -/P 135 0 R -/R [ 53 64 575 693 ] -/V 270 0 R -/N 272 0 R -/T 1503 0 R ->> -endobj -272 0 obj -<< -/P 138 0 R -/R [ 53 64 575 693 ] -/V 271 0 R -/N 273 0 R -/T 1503 0 R ->> -endobj -273 0 obj -<< -/P 141 0 R -/R [ 53 64 575 693 ] -/V 272 0 R -/N 274 0 R -/T 1503 0 R ->> -endobj -274 0 obj -<< -/P 144 0 R -/R [ 53 64 575 693 ] -/V 273 0 R -/N 275 0 R -/T 1503 0 R ->> -endobj -275 0 obj -<< -/P 147 0 R -/R [ 53 64 575 693 ] -/V 274 0 R -/N 276 0 R -/T 1503 0 R ->> -endobj -276 0 obj -<< -/P 152 0 R -/R [ 53 64 575 693 ] -/V 275 0 R -/N 277 0 R -/T 1503 0 R ->> -endobj -277 0 obj -<< -/P 155 0 R -/R [ 53 64 575 693 ] -/V 276 0 R -/N 278 0 R -/T 1503 0 R ->> -endobj -278 0 obj -<< -/P 158 0 R -/R [ 53 64 575 693 ] -/V 277 0 R -/N 279 0 R -/T 1503 0 R ->> -endobj -279 0 obj -<< -/P 161 0 R -/R [ 53 64 575 693 ] -/V 278 0 R -/N 280 0 R -/T 1503 0 R ->> -endobj -280 0 obj -<< -/P 165 0 R -/R [ 53 64 575 693 ] -/V 279 0 R -/N 281 0 R -/T 1503 0 R ->> -endobj -281 0 obj -<< -/P 169 0 R -/R [ 53 64 575 693 ] -/V 280 0 R -/N 282 0 R -/T 1503 0 R ->> -endobj -282 0 obj -<< -/P 172 0 R -/R [ 53 64 575 693 ] -/V 281 0 R -/N 283 0 R -/T 1503 0 R ->> -endobj -283 0 obj -<< -/P 175 0 R -/R [ 53 64 575 693 ] -/V 282 0 R -/N 284 0 R -/T 1503 0 R ->> -endobj -284 0 obj -<< -/P 178 0 R -/R [ 53 64 575 693 ] -/V 283 0 R -/N 285 0 R -/T 1503 0 R ->> -endobj -285 0 obj -<< -/P 181 0 R -/R [ 53 64 557 693 ] -/V 284 0 R -/N 286 0 R -/T 1503 0 R ->> -endobj -286 0 obj -<< -/P 227 0 R -/R [ 55 64 559 693 ] -/V 285 0 R -/N 2 0 R -/T 1503 0 R ->> -endobj -287 0 obj -<< -/Type /FontDescriptor -/Ascent 891 -/CapHeight 656 -/Descent -216 -/Flags 98 -/FontBBox [ -498 -307 1120 1023 ] -/FontName /MCDPHL+TimesNewRoman,Italic -/ItalicAngle -15 -/StemV 83.31799 -/XHeight 0 -/FontFile2 288 0 R ->> -endobj -288 0 obj -<< /Filter /FlateDecode /Length 24728 /Length1 38024 >> -stream -H�\VtMg���Ϲ7"����yx��g��K*M%Ē`Ln"!� -KZ�D��W����#47a������a,ef(U�VY��vҮY휽�Z��g�g{�o�����b($��'*31m�,╬Wa��`������u�{��U�Z�S�[P�R]x���ܙrZu*��&��e��}ZQ�#�K�=�d�u�u�8lv�WPT�}�{�\���9;�EQ�K��9��U\赗V믋�}�� {�`�a�<V�l+�=�H��������مK�~2�b�u�A�2����o�}����э�8<y�_*Fvo���� -�N�!�`)���_p -3P�Ta�%��!V��bфraE����)y3Y��[`l�<�<\D��Pc��p����?a5���ڃ��zF��b3����lF�hBC1>F���Ak$��" -�8`��4��*����S����{`T��ċ4���tC`(F�OR�M�D�i��g�Mbr�0�Ru���m�$a� ]� -��i��@J�>*��� -_��%(�<$o�H�\��zF�|�_����'cw 6Jt;pu�TrRO])�6�}�ȌjZ�9繮�C����Yx�R�wpW�<%����|E��6 -����%[�X��"�e��d��ԟ��"�r[�ɯq%�JU�����;�g��;��!�qR���Z��|���$���(�̧2��z���^�`4����M7�G����/���,l�J}�3�3���:�`z�V�*ZC�����x9��k�B�Rnu� #��7�����S�٢%:���M��0[�8W8��q�`{�ɋ�DLCi�"ZBk��t�8�gs�"�U9T��4*�s�s�Y� ����h捷�a��N�=r��B�2�C�&�:!��#l~���RgjOAԃ�"��i4�\�G%�>U���~܁��Z~����5G�W[�~u^ym��Q"�f��[i>�L��ZGZ3�;��l -k:�t�������3��G�_u���_����WW麖NU�ݮ�/�H���I�˘*�g`�pr��M��~�qa�9|�k�Z�nKe����SrP?�K4M�LʡBZ�"Kim��䦣TG��<]�z�.�=����s��x�cygq6�뼉��|����R�|�o�Gu�J8U����*Y����������� -�TrcH���b1r�e�u���i��o�+r��cɷTY�[N[n[-֞�k��C�>��N�B�t�.a�N�œ������3�ϸǾ�N8҈�'����Q��Y�� -��Jr���x����']�_x�j�7����S��7g�?�b�G���o��!�tT��,����Nz(���F����P��7���P��4�p��m8�EK=�aٹ7&a�Z)�BG�3M9��ڇ�\��|@��wr�M2F�f�.>l��<�R�a��4V0tQ^�m�V������Q��<�'�zd�S2 -�NːNw�{���R6�b��&��(���I��<:I'(��i��ߠLA�����8Z��"��ŻUm�y�j$��0���Fe�xJR��=�X��6�:�u�����dg.��*�pcjβ��U���yJ�e��u8p��geU!���N��@Y"���8]�=F1����HR��B.�[Sf��ϸRN�$5OΙ�8.l_$g�?gɜɣq`�F�<��<4�c��=$�c����u3?���3|��!�E�0�T��}zGF�����#4$��=�حk�Ν:v�����v~m}۴��n�e���bB��1*���p������g�K\�Z�p�ei�om���3�o-c�2��,c����%�هaXd��鰻��;�4)%M�7��v��=�E_ע�=(H6؝���nʰ;ݣ��rf���}��q�ޑ����G4��QXM�jQ��R��j#�ܝ�NwGG|3� -q����SҜ�##����t�1��6��q-nܖ8��ō}zs4(�WGԭZ]�̌���^5PQW��7��E���,� -"�U�h]ԥ*I���!v!h��`b����X{�_��55�I{�iV��E+�'��U�)�Sm{�'��ccJ�~w��u��1=�ʷw�w��ܹw^l������E<G�4�;9�gɥ�w�0��I������}���@`�+�c�/Z�ȿEE�]=)���ԫy�f�v��^�l��9�y��}�y~�G| H3'���{��(�� -��܉� ����w����Ż�y\��K҇����]]�Y��.э��j���ʛ�N�=rOE]O���ύ�d���, -<��a�W�A+X�cx2x�$ .���4��ܮ�'�cw���=���8��>!nrpD�r�LK��r\8'� ���UT���B�U��8���A�(;{��ȧ�*�2t�U3|ᾋ��ȓ�V��,9hKz��ʖD��n��⏀^����_���=�s��Z��"���=�ΛQ�sy~ko�������j{L��j� BI�%������$�9T$���1E��\��8���oQ���{T -�묥�5��`vZ�����܋ -8l$�y�Ł@�v�\��@ ��� -��!YU�vŹ�x��~�DCrߪ�`��",b�����5��ۼ�XLE���s�.��z.�c����m��+�DKƇ�K@����;�R������z�L4H�ߜC -:�+����W+�c�`)�&`*�}�c�a��,� -/ǘ���,�R���6)`6�#h�N�M��_c��b��g���B��n�| Ɲe�a����֡θ��q�E����*P},��H�,��5�F����h��y���Ƕm��8�C��C�=ў�n�Ø��鰝 -�-��3c�b=n�J k#i�>�Z�H�-#�zZ�~���k�פ��t`�m{�������8�~�,�����'�-#��Զ�ѓV1�gq�5� �(�~�r#|�b�Q�3f�пal�g�M�@��x�6�?E�D���:��tɁ�[�7�'ط�*�վ�������~�s���ڧm�7�5��ј�*�h1j�;��f0�s߫���Nw��aX��0�E�p5x970��k�3Q��^4��qΆ����j��_��C�R�}��à3��?��qq=��-� -����þ�5 �9���F[�ϡ������,�c�}�e?-�-[36�b�^�w3���ʢ��]���α��w��^Ɲf���r̲�mR�`�G�mr�Z���D�8��e*�b}�M��8�k�;�-u����H�~w �z��A籇O�4���&zE_A=�W(g9��t���fm��~6'h�f�Y��h�L�V^6Z��f����wӎ��2eD˾,����Y�7|����,��L�Vr^ц.��_T�1i�� --�,�8��M���P��A�� F/����/p�_�<�UZ���.�@Kv��|Q�;���h9��.��Q8ֲmzW,YԎ���|λ6Uwyբ�v�l����\8G3��*_���Ԑ��g�8�����%����Q�S�-�߹�`�Y�;l���W�9�s$�9�����iD�F;���W��Tl�k���ǐ=h��aڣ�a%=�(�"1�R�h -�2O�K� ��u�g*��>ٵT��f�.RG��|&��|sH���Tu��ܡ�0�S��+�W�����1W��rn�\^�����J�Jv��E�3�F���)JR��h��]!=Ƨ��o�VX��Psbo���\P�1B]�|�g����aG95��`=e�g��ڃ�lT���}d:�3_��d��V�u*d���Q�^���o -�tT�&����>���Ks.=���`.s<j�D�`N��*�:P�c��P�bi<ǽ�)� yҮâ���R��� wb�X����&���!�_r�!�s�N�a)�� -�#v+���o��|Q��i�0d�X��M�}�o�u_*�f��S>`��8�#ȥ��%9�U��N#s���Ӂـ���p$�Tx��C����Z�.A��z����@c�(ޗ��yT����ct@�������?ޓ����H�F�����x7-�&qL^G��3M����bU���x����ao=?���Z�NlB�~B��o� -#��5:��j�~H[���Vǃ��r��*Z���#N� -嫍�}.ӓ(���������Z�2�?^7�UzcL�iD�@R�����s^W9ˋ��\�8��<������1�p ���?� �<�q7af0�o����g*1> -���>?��@���>�#j��`ڷ�[M@7�`��2-�5���C�5�Gü��hw��>`#��ޯ�%��o�ѽ�u(�cM�R�{O�] -�����U[J��>����?ռv��`��z�������h�0E��'����!��O���Sl�w����۔B�0���w�� -�M�h5Fg��S�G�1��]�D= -k�<l����`h0��4@���jn�8�w�N~�-[�m�==��X֝l9~�dl����I��iJBHl3MxH<�0!�L�L[h�t�A4>�l#f:ә�����:�)4ui�p�#e�G�v�6�i�魾�w���{�ju��_�g�f)O��,r�&�@6��b�b��&��<�9�s��/���Y��A��^�c���-i+���<7|�3�_�n�z���_���e�#t�m�9��am'̈��daY*+ -��\bh -�j�W`Y�[��4��zH��l�ҩ^�O҆��h���v͛�yn���r�V ]�=�ʟ�%9�t�j۴M-��~�꧸�_-�!��b�HY�:�5��d��14'��:U�e؉��Gz�ܩy��m�CV��Mn�J!.���Wk�maM��|^�$�#[�rX�V���������n8�Rn�-W��!َt)'�x�u�& -f��,a�>N"@�"�aaB��m6��E�=����@h3�Rڬ��颤M��~w��T/,�X陇7���JK�?�����C��6M�l�O�R��N�Qc]ؔ,��Yh��uQ���|�@/���J�����/�� -$/Rj}ꩫ� -�iڐk$1b��6�,7�]���,g� ��.oyX/�<��|������D37_�0� 7Axy��&`a�4DDX'�J��t3��,���y�7�yh4����0j�:�0FE�Cv�vÃ�Ya�%�a.��HĝLǘ��k���Q7*��▨�`T\WFń�kF�Z��=���F�W�5��gI�*�ߐħ%�k��eI��IL���"u2��t�xq���]Ë���$,m"\��DI��4�8���^&�j��5V+HIJ�<":�Q�>�(�����4��I24f� -�C -��?F^,��2���0|} `��SH�����@�%9d*�`~̌<Ex?��{Q��za�P�/�L�r����]4�<M�_6�'ZΎM�q0�eL����-�^3�\zz �Md��y��B�qx��\�An�9/F�-����A���� �VΐW�O�YX̌����)���A�+��Q5`<r���� -\������ȣ�Oɐ5��+����!�H,�r5�{�&��2dE$C�]�?C>����O�#$]hZ�Ղ_� �v��a/��ڋ�v��n��1�^�������Q��A�f����ՠ�+��v�d�2>�%��X(���P�(ڸmp�R8i\�*J~E2�r�x�V��Ɔ3��[�=@6��sm��<��5�kᝅ��ӵS�S)�:�ĝ]����sI��_�п_�:�[ɁA�|]�P�M�.�4�H�g����ޞY����,���n�㸯'�9 -6����>R�����`w�mG�F�h2J;��|��`�Q�d���L�8��(�8��Gf���±:�mƹmu�tnF � Rʤ?�ɠ��7�7 -��Qf>p߬����`�������ѻo�'7N�Qwj�����>���<^{ /��JB)�8�m��Q<� 9:px�Vj�`L��v��X�%�%��R�L���ۙ��`�|��9��$�L��$��`_��5vzR�ӻ�>K0���������AH���N*J�Q��'�����/�GI����Iz -�FFB�/+�@lz��k�0ƨ(4��8�qGh��%����.go���QB�,��:1��(9�GF�7�*DaQ��M�YA�����S^� 9n��Y-<*,U�m�8w�u٢7ރo�n�b�z�G��(��{�"M� -_� -%��_��[ѧH�\��?�c�B�(�����;�2�.�e��(�p�QWIu���� p����Qx��y�;�&�%��]�(+��h����*mBU2�Y�x�}e}���_��+eg�������VS3*<�Z�3�n���-Ϣg9��+f�\���h��~� -/F����q��?����q����j͢䝅�yŴ���G���K�Y 3�3Ɗ �ia�C� - -���v�A�鉞���ͺ9Q���ov�K�� y7���-��.�.���_:T>�u#����q�i雮W�g�U��zݝ�NH��T��r���&�}���s�Q��X���X-�3��t����y+_�\�uh�w����!Z�||f<�i�` -�ǜ���� \U�?�.���3�����ww/����eY�ՕG!�$���Z5Z���X��T|�S�FQ�D�F�1��؈Sl -Hд&���Ig�δ��L��Z�6ES5����&)�{�=�s��;������dxyY�=�4�^���P7gQ���gY�yd��#'̌=Y=�q&_���$�����Ƶ������Yɫ�%��qբp5�����s=B��2ȥ�W���t��kػ�H7��q�M���$��*�2"�B3���:��BE�ۀ)��l�1���t��2KL�� �$jβ0щ��mY6�u���������M��RAk�D*"�y�܉�U�6�\Y��7Y#���4�u�v�+�M�~������@@Vj�,����i^NP����^_�%��N�u�7������!_u��O����P��va=�W�9a-w��FV�U&9�^PJ�*���ԭ}$}�Vn�p7]�N�2�EF�SO|�X̙�7��qә]`��@��4��-6�㾎��i稁��%��LJ߱{����Tˤ�~�N����>�&�+��'�`V%�C<A�-�l�4MIA`xYy �u"N��&m\�}VNɅU�Ngo���iS��\��\��Iߴ���P��ɿ���m�X���Ƞ�\�"��c��|��ek���(�_��,=+�+]�s�9��@8j���M��b��C'zn;E��pPG7ہ�h��*������B���[+1�J�Y��X�A�9x���2j�eAV��"r��&�%�zր� -}����hQ_�dUS5���F#e���e�c>t7�OK��_ʃ��O�������yu�_<Q����[7�����^}������'���҉�'/ڦ���^=���њ��_����q��us_��Ő�5~"Q��T,bUa� -6*i%��+WW+M|��[�g�Ȫ�-Pjn���d1<��� -��b8H���T��QU <]Pq�"��4աɒ�J��j�cT�U>��?���v&I<Aa�)JX!��-�,=�SJۈ�(�p�C� �y����e|�,w#}�B�f�h�z� -!2>O���5��!X��]p���{ ��*��p/�D_�����7NDRW����%1m ���4�>fڵ������T�6���?h�Ȫ��8�-@���r��� ��%�r�/~eI�5��Nt�.~�W[�K��Xu2�x5>���A�^l��G9|�Hv�X�=��*L��� -ϊ5\��Zl��-�.n�p�kڹ�l�$��7V<&������v���;#t2��$�`�9F8��c���2�M.�Y��Z���Ce̦�����`L �I�f�#�`囖h�ߤ���F�i�kH��5\FJ�ⷤ�S��Oux�0�x±����њ��¥y#F���̚���o��N����O_V1�_�[2"�ʟ�Y��VTŦ7�Rt��U�dw۩���D#�Ѡ���8�dO:����ԍ��Y��=�����r���?���vW���%eNw��H���sN/��(:�@[v�������,����Er�Lmr�Le�K�+��5Zl=xJ����x��v LYėHCP)b%%�4M4ą���8h$��vR^��kO����${Z=������9v���Z�d;�ǭ�p�ԜJ�*?�|����?�u�2���p�h�ʕ��`�_�6���@nũ�?�E��۞�R��9s�y<u��E��D�Tx��C1�Qc�c -%Jjݼ`���V���,����}�X�ٺ3�E��`�j�>�e ^��8�~��Le��Q?_�*'O��'�C (�9��6'�)��do��~b�^o�;R4����v��j0P���}<���Q1m��h4z8?��o�A�4�+���uś�ѽ9�q��a�����y{��Q|Ro�5�j-> -=Z��[?�9,;��p����ߵ%�Bl��ںq��p,�j���� -_���T:�:7:�:9�w8z�� -X�� �ĝ��H{��ڱ���M+Y���N�l01��0\� �4bNѶ�3���|�č��{��K����3�g���z��Ug�/�:f5��-5Z�lǸ��o�X~F�l��ڕ3�D��=q�iY�Ӻ��F!���y����$#����nj����<L���.?�O�f=��ښ�<�>��'x�?��Lk�����u��{w��%�V����ڇ$k���e�@k��BTJ- -��cH�5M�0C %)�$P�MFXii�%3��i��CC�@�@�nf: �wW&5�LgǾw��;��?�8�N��u�lݞYL���f@�nO�(�?�^a \̑e�%#���A�U[�X�h+.CED����5X�����N�_�c��jB��J gR��j��m[4m��Y���zf��{�t��w���/���ܲY-P_���OB��݄sn��~ee� -�\���5���Y篺�A,���y��'�M�ZSBi��]� `�:����3G�%D�]K>j��G�ao<��\�p���MxO[���m�6=��W0}Ǽ�_�6�4�5�Mp��Z#�g���e����)���/��Y4K�p���:�a����𤴚Z%�B���K���W��T���75���R�)�[3�ך��"II��|�P� ����K�M�!��Co�h��D��")�d�j�%��E��.��8��n��� @Ӕd"#iҺV9[3t ��'n� �FbB _z�D@ N�\P#Z3��3P[.�Ӌ������G�y�C*(C��]V -z)"Q*�]y�� -���R6���Q�7�M`�,�~ۮygu9���嬹�a�@V@ܨ��F4.�����j5�X�:���<��Ng�3����'����'�䜕e�)+�������l�ۻgc4��2�K�u��T>�W1Y��M�+���#b�$R�0H�,ܣ����#鼜O�H��|�q]���w:^��M��x��H��Tt��Ϧ}s�5aB6�L���A�0�L��b��$�T_\�YU@�ZM /�3|�لl"�4�X��ۣ�1%|co�u?���ƢE|�����-�3�O�ޡ�IF?ɣ�{�g�CEoS��L v�h�3~���� }���e����>|0蕜7��Uoį��zc��D�k���(sa�@yI��t^Zq5��=�m�.���y)� �қ�٘ -�9|+asa��S����#������s�ԣ - -�G��cB�Ea}O�&-�-c�pK�_���1�����7W���}4;�Q۔�=;���u+����[�k:�b���vzO���_�-5W~��q�~��@�j��Ӻ��:�Tw�[Xz2��1���t�M��R>��u�ܞ�>�o]�{�������D���$��G-��+��O��/� p��u��=�Y<+�N�n�v���8]�|}�'v�W1:�u#��p,ڭW�q�� �i��f8�j��Anal�3U�ԏ�� 1�J�<�� -^'�� -e -�*�Ҁ�UU�l��$ -��$݀�!�,M^:�w�3/�����ZZ:u`l�����uc)n^Ry`i���Ǟ8���][���7��y����[)�J!�=�y?�'$�G'7|Ek�"rb]�l�C��]�N��h4wҢ�J�s�(5FSDC?�X��Z�������Z��`�����!��㤇��N�j����5�W�Sq�ju}՜�uJ�P_彀Į�jt���w=�=\nYo"iʍ������r+e�V�)L��w��6��F��߸f�1/��2�`g��0M2��Aל�;.]lBn�|��ۻN<$c5^>��,�F�;��D�lo� -����7�'�u�z�h��A�����A|�5�2�+y�=�<e*�E�/�Xĭ���<�F�E��n ->z<�B�@Ak��o㭼����f�M�e2�-0��Y��ó�L� -�BMJ�䬚�T��C'0��ۤ�,�CVM$�)+�r�X�Ȱ��>~R�ݡ�H��2{�7�X�i���=�9^!��������?�� ��&��<�/U���S��/UO*U)�F(�W]�$�(�.]����9tGQRe�.����DA���{����v۾4��H�C�i#.ӟ(V�_c5x/Nb6l<�D#"�k��� y{��=�y�/�ky��+��l�d�\S']���%[�=�+3^���� -5>�d��|��P�#�m,�k�y<Q��I��IR�N�yD�\DT -N.҂�;�>=�[��1�i�����S���B�@tވ�K祖���ũԂ����x�$C9$�2�xB|���PJ�1��v�2VK��t,�#V�U�b�~dŬ� ��h��������c��������~>Ǐ��پ��w~����'!�M�Ay%�v -e �����*�PK���Uкn-���ƴ��kI -ma��M��j��N{I�V릂�G�4��}gt,�~�{8w���y}-���_�("R`�1Dt�J�Q�EB�7������, Ta@��'���"@����^��i}������;;�:��y����vKë��&����nt�m�G�v>�g�C�m��atoLC�U[�̏��1�$�[{��3���]���k~eӣ9����jF��9�)���������V�_��ܪ���3 ����{���jq�� -o��հ��K�o觘��������-�$�*&���� -b$�ʤ�L$�Ik��j�X�e�I�u���g�Z��zk��jf��� -�9�N*�[�� -�7�qm��X�*u1ʵ�����Q�Ƿ4)}h�M��µ�\]Di�%�*�5>|�qr,z����`ᗟ����~Ѿj���ڰ6)�%���������[�:�쟞�����J"��[џ{��?���l岨��ō9���(SО��T���}�����mR��2��p��I)�� � �(�07:!���C�"vXQ��#,����`��D�D -�e��b�e�uۏ��7Y�I��Q1�u܊G�!�ţ�\k��k�ر�%z����Q|� -_��o��Ɣ=:�1��:*��QP+��EN;�Ї9�RK,��>��b'%�g�Dw�p�F8�z(��c���?E�}x4����{��g��QK�c���r����Uy{���D��A�&g)%���; �(l\z*�?��;�A�)��^N���l@p��V�C#�m�$K����7�Ԝd�($/�z{XOd%����/��9���i����'����`0��2�|��!G�7L�n}/�|��ssr��9:/�B^��0p7�'���.edd��ĴȫbX�C��mg��wO]f-t�u�ƃ�V�3&�����3�N�'H�J�--�`�6b��/��֚^����+�g`r~�m���s�vnQ)^P�ZBe$M`d�Z�e���γKYE�4��R�}�{�=�_j�QӖѲn�L�����&Z�����yp�@�ޮ�����L��=��̲�I���|��V����Ӂ��͊+�C���~��sJ��m�C ]rEp�W<�yg -{�9i��o糌��/ؘ3�;l6g�oH��a�nFdx L�1������|q͆�b�������V��땪��&*1�a�{g}g�n����IH@rob��_�"=Q�q�*,c�W_1��m:��3U9� -�.ҋSR�^�Aֳ��"�[���Q��)�=4�[J.R�HZvr=۬d���v`�7krq%�ӺR�5S�;�0��Љ"z{<�"D��=Ћ��+f�N�H[H>�\I61�ߒ>�S�n$_&�gԜN0m���Q���9�!���D�����"�:��Q�TҟR5YU5xo6��ɤ��Ԕ�S���DIJZ�IH�/2�2,I"N��v[SSzylBIT�b��~I���{��랏ɝ�B������GUN=��g:�/c��Aw���Kz�z�tw"�$}O��c���/oq�� O�R������W���s(B�Q��Օ~n�d��%���^�kW>Bw�3���!�"X�P,1`�C0���u7�����b���L�qa�,+��>�'��/H�n㚢Y����~m�M��f��S�zX���uMF�����ށkoz�>_�=[���7�eb�Jx�aN�v³|��f��C�i�������L���]�T����v�m�K�k-d�Efw��� �#>��"$�"�CM��I��b�O*IR,�i�r�"He 1�h�rY��A� ~?/KX�lQ�*a�*Mr��,;�I*�}��U���y�k��a:�8�B���/(K����%w'9wwjg��\Q)�(^eO�bJLRfI -�q' ҍWi���?���n� �����9B��>(�nK�Ն��ラ,- -�h"� �3ҕ�*w�C+��W�)�$���� -���q�C]&���[�_��g����V�M�"i�ýRn�L�ev_��=�5�d��425b4H-��RbnrnfAbq�?3Ȯ�/���&kS��$�wH����O��su�J�L�@&�?"gR�/�Kl�����&!�FKΚ�h})�!kЫq�����q �x�����8�N�$��� -c( -�ᡫn3 �ҕ��`�0�K;@Gf=��͠�X��R��v��ʃ����{���]ɫ]iז��VB�w��:l��� �����114��BL0`� I�.Gi�@�ƌ!�Ɯ -=ҡӐ���!3�fꡝ�s���VrL�i-ۿ���1�}�;Xtsɿ��d�xv���Xv6=]����w`������+X��˭����=_��7�{�����;���Y��^��H� -@L�9��p!L��z�'��z�?���Nx� -C�Yo�2f���EeR�4��;����JÖ��e?�{���[�Ԉ!�Y�(�G� �lr�E�����(�`L��6@�6�Y��e!�g|��m@�A9t��mM �3l��6y�����GZ��|�7��o��u�&�:>7Ħ�ɪ6�՞�7i��t����¦kk���i%c�f4�kS��6(ሢG(��v�K��*�P%�O?��><��k����_R��cwB�~���^}m6�-C����ovo���~���nO�)?)��ya�&@��@���P �|C�4�`F��:��[�f������?�� ��h�vB�@�]��7L��� -�YD�ҙE�iG�,���� -�����9Ύ�c)�v��,�F�e���4E�W�@W��Cv�)Ǩ��N�b\�����������:����8\�|�素� ����.�<~�Ei|n�M���-�p�OўB���A3$���?�� -�y�=7���I�9�~�4o������t^�K�D�9��YU9�8��"G -��VC�FA�g�U�,�<����94<��ktǾ��oQ��������!�]�X%�F���mbt3�X����~�[bvþ����4��c����I|�_5���sg��(�زغ�p����Q��tZ�Y�ne��]�#���#�LȖd��� -�=��q�u}�K�>L�b��u���9� z^�/ZG���p�A���4Q�t�eQ���^o�u�\k���-�!$����9���ݗ$I\�@���$01 -k���b1"�.��x==��<9��H��s@<�K�x�%�`2*�J])9g*��I�X����;� p�EUH��d`��|WE��{��t� �?n�T���3����!�`���6���D^�S�`?�ւ�X��/�5�`�j��[_�����^_��<1=�^0Co���+�ҫ�Ɏ��7C�e��-����j� -�9/�����7�h�hZ�����+diE�&��r��9۲���hŕU�R؈���8R - *���{ς�z��T�R(�=��G"���if �jKK����#�*S��璲�e.�GT; �K�H�9���J�SV�Jm*�����f�'�K�E��6�1�J�#D�Y��)8��S�R�A�(��8U�)�$-�s��j�gY�Ɖ�Q^�ǔ\��(���f<��L��� -�6XU��ZLW�A�x��T��W�PC(���Th�>��>X��w������ �)B�D9��Ũ��6����4dί��w=l=U����m�&�fֿ�p�����K��w���`�-�|g�!�^�\�����ӧ3F��4[ԙ\J��zTIK<.���"�\o2��a�,�=^����Y�^�t"�&��~S!c��+`e6 -�v��êHvYM��k�T-�t�U�F�dX�^$�E���┬aJjS kSe+f$=2�_N�d��{�G���SQ3� D;�M+&��%c�����?�c�֦�c��O��P -��[����a%�K%'�7ib&�R��� -��K�t<�{9<���Tì�{�ӯ�?}�?�ѽ˕�P��'ĺ���+�Vm�Y��6��J�T��dM�w����Y�k��ڣ�2=rd��K^!{�#��-���1J)� -��>x�d�|0ҟV�FX������U�r�����)�� -%���4Z� -�%93i�(2��o�HH�t9�?p�>�����Q�#d�ʁ�4�B@�s;v�#��� ʺ�2�Z�N�rT���} �:���ɳ��]���Z}�$p0���|�ѩ���S�KD('����dR�� -�`R�jN�t�Js�jn��Wi�E��Z��A�a�Y�?FY����苈9jjt����{���S�h��c,g�D+�DR�j��/�-��ۖF�- ��n��Q��v -� �_��XPJn�?5���e�&n�$�M������O�̒�\��eUДѬ -Q[�UH�y���5� ��U�䕫<i6�G� �S�j�w�����y�F�oX>��1�����f�����I�w�u����&�|Wip��ow��V^i��,YkK���]Y��C�D>����Kq.'�0 �H�D��M�dh�mB�4�eHiB�چu������d���S�i�ԝ!0:C蔶V�~+����o�ձ�O����>O�&����X�����SgНSk��{{&*s3�g�1�{�{�ㄗ��I�7���"ƺ�Xoz���kv WRb�i��*�|�w���Z��-�8�#;A���rv7��CR Rh���K6U�(Q�ux?ƼÐA1�|�By�Dpp���4�eZՌ"ߞ3Tn��.�W��J��r��rQ�DRk�E͟//�o,�[�Td�k���#��~Z��}:�]9va���H�F���T��0�Qx$���!����؊��*�<q�Exo������c�r�s���Ba�ȉ�V~>W���?�b��}�a����ݳG@�{���ޫ�ӗ����U|h%(���9"��L9%�>J}S�@�@��$�Ap�~���W�������U·�z��朆������Q_PI��%D��$�L����A�Q�����4(����8���\�#9Kc0�Gy�y��n3���i��7��M�X|�a��]�+� -���<<�x@�����I#�ċ�1!`L+0��`@��h��h�.���F�YE�V���ݿ���3P���}rc,s�X�I������v����z�I�^�ԗK�ՀМt�<v�ѯ�:���N��(��?.�M�4@�p�#o�da��LO���/��mzG'����"��a�خ����q��D'}�pW:� -��'Zg���Oy�/�{���%;�@2B�h��_e����z��֫G$8i��nOD�ea�X[�"��'����� -wg�M�27%`�QD� - -2�/�Sjf���7�f�r�|>�M�Qe�3F]�_l�3���t�v��n(;�?��ԯ��|j�x��.�<=`�Dؤ�7Ii�JW\t'���"z J���~�� ������I�o~A|����'n_��I�u�Z�Vռ�48~/�wQ�!HU-���X!���1� ��^[�a��ʹ�+�C'�p"�|��գc�ן:xWf�����9<!�&�d�|��y��;�X����q�-��z��u�3�͢�S�N�9Z��=v']��������q�&�]�_���(Q�3���(MXx�ZcYe%UkKt��;0�[��C�&�z~"z��>��0G����{e�nt�-a����j ���Lu���&1%R�h�H.Ƥ�l�]O�Cz� -1LbZ{���aueޮ���#{���oq>��ѦPƶ�1w2^��D81����v�� -�[�b�q�yK�2�Z�r����D�&�E>{����Y�j �&��ơ#�xʿ=�x ՟��շ�G�\}|��A�}�_�tGhÃ�;�>*�=��^\fl{o��-yr�%�;ȳ�3���5�z?R�lgc2O�g(L��fݻ�ۗ%hנ������!��@�A����O⏓� -+J�"���D�~��SPq��g���^)I���)��� I�Y�������L��Y��s%���6A�]z�l��k�9�P^(N�}�=��y~~ѷ �T���W�WgL�U{��D�y(�0��VQ�:�ȓz�;'7�C�0��ni��e�E2j���jc ЀI�,��Ԇf�E~����u���Ȟ�͛{Z��Q1����2��>��}MߒDwf�����V)���\C��_��b_e�r����eR�ڜ -��v�jb2{w�|D>��]��+}6��6��OY��j�� �Ze9~��^b�z�D�Y����/����g�W���Y�?5:�O��}n��t8��w.7�p�F�\�'g�ZJT�\���ԃ�_vJ fP�9\N���-r[&���Yz����A4m�si�]���"�b˺_��I�@-[������z7�bW -o���N�J�y�No�`B1�ƪ�7ˀ~���f�oo3�wy4����h����xL8�5P���9���{1l7 i���1�W�Jȼ�=�F2ozV���֔斆�<��C��=j]�ȁß�3�5Y�0T<yG��}@��V��Yw���G�uS��3���u��9�;�!gRNk���Q�ޡ�'�mR\ݘ�_��@��Vn���¶�]���/����,��}8�A��~�Zf]�\��c�c�اL[�僊e -�W&�hx�k,�Ȗx"A��`�FUk�P$�Z �����nQl&D&L�������]��m[W�W��H"%��DѲII4)R�H�E�"]�I�Ī�<l7��(iͲ4��i^-�k��ڽ�aM�6,E�5�=5�#?�6`@�Àm?��@kd�je��d�[ -�G���%~�|����f�_�$Ǣk�=GA�����X -t]�Ĩ)�z��ì�Z�Y5�5�l��څ�n�TѪ���� ˖�L��������7��d�E9l +�4`�J�˖L��4�Ȋ�mJ�˄��;0�XD�r���z��z7�胭[���V^���@�t¦�i�Ƽ����wؚJ٬l���-���t������捎SLЇ�}|��TB� G�,�)MGΥ���"�yR���� -��K�w���I<��R�t��� ��h���SO��8�G����64i��W~�X� -#>D]F�9���g5�L��6�hq�2���2�!��j�y�s�XS<�9.�q)9��\z#�9�b5���x��_)HΈ�� ���xf5<M��c�����<�����p)��_ȱ6 ->��X���ɼY�j#�N�-./�%h[X�X#�����+U��у�_���/�e��L�����<��hP�>�銢k��i -�ʚ0�kh@)�/��hx��R��+)�~ty�&?A� f�&�[w��;�>������Wb�G>^ F�(̯MZ����=�q��3�ݼ�]�aiF���+`�17�cy�%Z�p-�ED���nY ���pR��(0�m��*`54}}��Y�8/q���^CU�'}�-2b�ʈ�[]�BK�q����''j�7�!��O�7?<0xH�O��1���S�زɄ-��:<*�KJ�S������~up]w�3L�~�aۏf�O�� κB�E�?�����&�9*@�S>���|�(r�H(L��� ȉ�BN�G�),A�UU#���z}^,�c�q��Ow�T72;gTd��, -o�MG �w%�8�r2(#��ys��XO=]FH.�{�:�$��KN�8M�S&�`0 ��ĒfOQzd^Iӊ�Ʊ6E�r�oO&|i���Un����"�]5zQ�-�� -�MDv�HܺV�P�(5ZTl.��Ф)�q�ի� -[T+x��k������?���w!�����"���&ڼ �Ӗ�J5u5�4�G�%��:���k�_6�ϛv�Oܹc5�5����!I�P���,��2�K��F!i6�α�����>2��{G��y"�#�(:�u�g�)F��>yl�p�S�ĩ���f�^Ir&����#/|$�Ai����������c{Y*�Z}���^��@1� �Dx���$2�q�����|y����s�:�C3rG�sB�"�(O�h�|$'�Hb��ޛ��e���"���6�'�Aրnx9ɐ���憪���$č����AҐiku]ۻ���q�k�D��{�m����]ܾz>R&�pӹ6�����Ϫ�K��&�U�D�ip��e���� @�|W(7���+���_f)?��2�g��J=1�K2���pf��AeV���������!��O\�;�p�`���e��g'���w�U�������}����3'���S����+�W�g7\@���{a���;��K?�Z��]��y���|߂�0"~�w_i�:�L������~0�>Q>�{L;=��ȥr��rrS�C��xb�>j��<��Cp� -*�p���bw0����xq�,�+y8�y�������21�WF�JeT�UFF �y�I(��h�H��M���b�f6+*�_}\���Pj���! -\ՀfF��n�nD;��t�o��8pE� n##����*�����Z���u�&k���T�ZL�X<T�WqT�I�љ -�L�:�]6Yb����*�R��oq\��^ -��.W�"Z��b?���,h;1��*�U��� =W?<�V~�^��˭��vA�� �0 -��HP��>�TjE0ۮ��R�qc�Ϲ�Zә�"F0�դ�$���S��Q��zfӥ�lߺV'vyڼ^�\��gf$!�����rs'���NG�����)����^�-��Ag�\��\_�(to����C��u��g�~��ʌ��Wy!�m��FA�������կƣ��C�X�����$� �99I�mW����l�mxW�|ü�Ʌ��#�snw�{ƹ����tv��i�m�����vɿ�g���YQa?g����� ���B�� Y;' @�${Q08wK`H#�i>��3�l&��̗��]�����&�;����>�>���]��w�8����! ���Bh��C�-�(*��������(P&� -T��l0�$C+��UӐ�����?�vLʨ&�۪��w�T6Kセ�E�~��>�1r13������F�����M���\}H���4��;I�T�C�ԇD�����ķ�3�&���.�T��?%�O-����3�·�n��X�yv}�/�.����KY�|���]LG���2<][:�[#f��B -��@Ԅ�T��O�K��k�)]Q���_������ݎj��K������C�XF6�¸-�0g.a�TW� 2Y�i�cnT�����3��z}�鷹�$w�M��E�b����y�{5MZ�vW�F"�� -l� �Wq�{:�s䞖�a�I�>ޡ>��A��JK(Y�y$��0 -������a���u���� -�gT�Q/�X��zp�S���ђ��m�nt�Ty���o���k��zC�������?�]�����ocy�����S��x -!���JG<d?i�_�0�����]R�czɱ��?�4_�����;Z�]`�e@.�+µY�0<�a�O�Z$L�G<� u�0��B �L�CJP=q�!����a� -����|]\���HL�t�Ty]�o1mS�R�T�� -*d�9J^%����I��B(4���>��y%�nV�+�J|#�swx(��x���N�����E~�P��WC���M���6���3O��9)WC�1���|��#��z��#��SG� -������Gڍ���-�z��wW����vf�6�i)WY��gYQ��^�����������E�س�ж��Le���eDW$bh܍�=B����K�C#�����m��h�іA -lS�&�TٔZ�2��1��4er����#�x�l�t�\�|�r�6=�>/��po��4Z�[*�����W�Qʚ����c�H2e�l��3�IH.*(s��'ЈB�H��W�P�dEɉ �V�^���2q����y2|����?��P��;O)Q��`�ҥN����x,9m�VN��`�b��5; ��FuN��nߝy���u<���VV]�U���I|ul�鮝sQ��A�`}�n�� -�s��F��'�#f�e��"� -�Zٶi��{�oX��//�,��%�Թ�$:����+�푈��l� -g~����cpٖ�E�^�����n�cy�lQ�|�Ʒ -�[Y@`��Z {�z�z몪sh�y�;�[��#��:h8n ��"���脄G"D�5�b�R�����8�/��${$I�Dk\���E�tY�e�Pv��U7%�4[��\SNR�yI ��K���JHH��O�[��d������f�6pw��%ӳ�ZJlI:<������7U�j3��`��zuT b�G���h�`�;����A.���4�\N>��Bu��$����ۈV6�y����,,�"m2�ʋ'v�����i�����?��M�K<��D g!d��l�����,ƌq[�y��W�~h�РX�7@�4��H����78���l�0����Bx�Q�%�U�JB���x~W%�4j.FG�a� -N���~/9��r���)� -7�@�S���ݾ�Y�w�3�V�K�3��OS+��(UUHc4�VJ�Bt���:�4�����}�eS��r��v����[�^v��HS�4�qY/Uy��Ы�p%�آ`gkF.��������4l}oW��x���-�Q�3�9<�͆� M����6�~g������>Da�u �䗈ݘHD8��`$I����8���ؓ|>��4�6�DƇE�LjqC�N$"��hPH�c -B@��aw3J}!w�����\E��TsM���ɨM�Q*]��uH+��������ֵF�����g�怩�ꝠP�Xl,� uS��ƨ��=3;�T�!��']'�*)����j,$��Y_y�y���Wͳ�+]�g�w�!ڐ��h�vQ�BM@�1_K��\� w�vq���� -�Nf�����ғ^=o�uxW�罨����*�-�m������y�3� -�g^�D[��Xc�Ȱ�:o��Ƅ�t]�\N�%`�t�C�%�a�&��K4e�l@j�J�4�H���r��͋� -��>L���4n���."(i��H#nAO��v �����'sڮ�B�\FP�Q �&���,����4��|�˂r7���*���<����e��{����������=|�lj{}�1q��IL0�Q���TB�Bzĭ����h��)� -�+QU�K���D�RpHX�6mS5��~��� ��T�G�3z�s���y��S@�#�YG�Bg9 .*O��h&)�f�,X�&��L% � -��� -g����i��DT#�'8 -��@���#�w�g�6���-�st&�\x)dЛk�W��ԇbS���˱�\n�t�{��t ����hw0.��>�ٽ�}�9�y��7�?��,���R����펃�h"�����G}Vv���~��XR-i --)���_���lJ�� -Dej����B��GU�jv�i&�te�T��R�i����8g��nQ�$,mƂy�Uc�#�����HJ�p�`�n��EN�s��[����)�A2_aK��ۂoU��qb�)���:J��5��p�A�8-��P*&EYd�9�u.Tw�#����":��i������C$C��E�MPHnA�$�Y�Ng��QB���H���J0�Q��i�U>��y��z_D6 �=g��z�&>����<�s�sΝ -W;���X���>����[�г�e�뾕�=��QjT�sv�I��eN:Bν� -CnDX��G��{����rnsn��u�vOF���-��ғM -�F�][�&�r+չ�¤�d] -B�"Eq�� -�G�A�Z����fTj���;��˭O���Y|E}�h��sLF����S�!:ׄ9�1��9� -���i����\s��a%�L4E*�O7�dO*�]�.�uY�1ٳ���f[ZZ4!�Ɛ���aXmSBl�,��%�#k��g��l,n�M��+�F�kT�o�{�"eU����.�C2E�TMVK1�ּ���\�q��5����� �/�i�F__UK�[,u�9�d�rn2�0��vw����v�wN/��g�z���Sd5��?Y>�>C��k�_G�鵔N�a �@��R98(?�(�ȏ�/D�o}��ԅ.hbwxx.�=�2_Ed�ǨxA�#�hNε�a��wX���r.�iҜZ5�v�D���M��M�7���^�s��z���ދza�y�d�?# �X�/��枆�\���:E�l���e�� t��s���֏�1$}���1�.�[KJa��H��HM�:S�ì�B�(T��4�?�zE�guܙ*CA�.�E�B��dN���)���\U�������yr�����ʄ|m�`�c_����ư����_���&N�95���V3��OM����`%_fr5<������w[��kQ5˟��U9��Ț�7��lO�~����̷��,e�7��(�kJ��_÷�g�Y��0���g�U��K�!�uN:��L$�U�jA̪d"^ -��:���h1��+t�*5�����1�6z�_��,�- -F��L���$N�'Yz�=���eD6�c�o����Pm��̶��c|�AuM"�F"�F"��b��NJ�H̠tX�E))�#� �x+��\t�!�(�~ږ>&1TQ?4����R]h)�Qj?�p�����3�FT% �h�U���������u�^S�J�c���W�y��w�=h3�:�Vc��dz��U�ts�i������GE�Y_i��������[n�8�p��2uB�.�vߛ���l�&��]���f`Cl-���p�����_�a(� -P>P�0t ���0�/�5`;���@��j�:U������ ���0�#������I�_�@=֩w2��2@s�� �+�`�������QHt��s�"��s���?��`����6?^B %�PB %�PB %�����RΕ6`H����m4��j�;X���� ?�k"��DR���T:��㥎5k;���=�}����߳ad���[���_ɥ��XZ������� -�pZY�9b��v�C/������w�ŝ���[������/�ˀK����x�l� c�2Iúb��J�v����Ŷ -ۗ�m -�)�ou�`Wotxr�ā���������=���MA��ܞ.(�$� 8�X>����7-�������8���k|�o�`�ß�v�w� �PA� ���MM�N�-һU���_�}}��6�@F�:�#�\�%�E�������ی-��:�����I=����T/}O�7]�����51�ȕ -endstream -endobj -289 0 obj -<< -/Type /FontDescriptor -/Ascent 891 -/CapHeight 656 -/Descent -216 -/Flags 98 -/FontBBox [ -547 -307 1206 1032 ] -/FontName /MCEAOA+TimesNewRoman,BoldItalic -/ItalicAngle -15 -/StemV 142.397 -/FontFile2 290 0 R ->> -endobj -290 0 obj -<< /Filter /FlateDecode /Length 20092 /Length1 31644 >> -stream -H�\Ut�g�����3��DB��Ƀ<<B!BfB�U{BD3�H�E��!M�,i�t�T+=�&[K�M5Q���Вu(�X��Ҫ����f���;�|s��}����}�A:b-R^�>0&sRj����N�����5'�XYК�+ -������2`.����{t�Gu�%�Gg/.�?�A����9�Y���|D_�ˑ��V1���CrrVE6��Q����ys��}X0\���:W�[��M��;��.q�λ�i�]����s2?oy��~�BK�}��y�[NUA��W�./���#+HmF `4˺)�{�Ѧ/�ͽи������_(��b�A -pF�I�Oc����"��?�Fw��<R�6�0���wх"P2�b�^��0#0SqC�&oѵ�,n�Q�wpM��\5MoB?�z�hΒ�K�Fk�#F��[i�h����@K}� ������c.ޥ�ufc�P����x$9^����A�r|��v��o�_!J<�C��^�J�F -�q�J4�0V�^���3�7]V��[��t,�A��,��M -�r���0L��f#%�#*�m���C�Ei4�^$mV��s��=$�8� ��Ќ�ԝ�)���xA/�jU�V���������h�E� �l��㉼�OE�2��y��1Sd� -.�j%+_S7�/ߡ�{Mӂ�հJ6���)��,�x -�p���2S -�1����9j�ڣ�&����Xe|d4���AhR�V��[�M�8���K���S� z�h��m�>5�9��#9��]UCT������4�^��6}�n4&J$��_,�#Qgc� ����q�wqߋo��b�F���4�����ʣ9�S�Ro�TO��j�ک -��B�vG���Z/�����w�`��h�7Z 9#�,��_�5����*�J�pI��[�A+H~$�x�E��Q��ݏ4ʢ<*�r���F��L���l�<��8��r�ළ��ܪ��p���2��:��i���u?�~���;� -S���n�`δ�Z�E<��ms����-�}F�1֘m8���.���1��㡧&�T���$])/����1Gh�t�j���� }�� ��%���38����$B"u��& x�x�'��t!�SR��[Jo�[�'z�C{��j�N2�.�5��ľ܍{q$��I�����+x�z>"�q���>?T�j�r�RU�>T��/�W��F=��h��5��>I_����G���8S���t�l2�4��S���4�p<�0��*~�S%��S -�T��m�Z��_a�c���8H�Q+��*��V�a'm��^ -;%s *��P� o�'9Y�S�fo�ƃ��J�u���j'��o��ʙ|��jC�������5[^���4{Im=���}��g��m@yI?����qm�{��}��´4ժ���pHeJ��p��B�Ee��-��0��#]D����*���i{�")��`�������2#��Iq �#]*9D��2*��Sgv.��dv*G�n:#s��竿�T�Û�λ��N.��Y�B&���T 6j��Iv�o����8�Ӵ\��p_�Bf�M���l=�:��P��j -���N�Q���� -m�۪Q�{���e�'��"�O�d�� G�����L��[w��@�#c����S�SE�<)�N�.��4G:}�tI:&�d��z���2�m3�TI��5-�H&���f���eN��B�p�ڭb���}76%$$��=*n��/�3x���Q���������[���سG�w�n]_��۹SG��^�I�����+,å��&L�n�ۜr���A��*GI��qY3<b�_K&�����L�I2�gI�¨�(��fu��۬54kZ��o�m3��?��o����VG@����Õ�"g�#�.�;x'��yGG�ڻ���s����?�<�;FV3,�)WO����a��{�R�g�+eZ��<3:�E�sm�.�ƹ:GzD��1�2%��3���`��:�nCY�/23"}�lY�٩.��n�K�ص���n����������.�����eVD4�? UV�LDƱ�`�� �6�5&����B[5I�M4�3�m\P�5 -5cl��L�XS3��8656�şT�����v�EۚL����{���s�=������gUl��& _ѨG]���6����VDJS�oe%ր����y��v⨉0���X��u�H�*�?�]�^�[U��H���l}jkb���3%�|��TA��r���-���l���+!Z�=�%n��͖!C�Ơ���ڰL��tn��ݩ�E�~�r,�pc#���6�|�s1 -�*5h�kp��cgU���1��~3-���]#�����#K�GZ�5�&G8� ��YY�q�8.��p��q��O��D@�s��>*��Ze�D�<5�Ous�C���חVX}-Kj%�ĬJ�^͒ΐ$~K�C��z��{��?������и�#�V�����E\kɋ绋K�*\E�j۷��Q=K���-��Y"I�[z�PRD���d�T�i�u�H� 8c�jDsy�q�s���RS�R) ����>5�L~Vt���~�y�|�zqy��7 J�E����n��W�[���ܮ8��8"��ꊪC'�onN�{*���Z~6�w 9S�E�(V���'�:^1Ψ*�ő��VֆH���Z�� *�9��cG-��>ԛ��I&`���s*� U���/�y� -�k������l����Sh�FD{�Ms�l�3��Iنvm2O��y�C$ˀA�*�;�Od�3YƼ�נ����:��� �A���t&SƟ�뽃}����k�d|�Xs.l���HS���l�)��|�XG ����m� -B�^���'���9�X�� -;%�c!�b�<ؐ��(=�]�O�"�8��Oə��X{ߍjg{Ol�m�m�������7�#�l�uT�1�����O��T��A�=��1F�^�I� -_2j(���O��^e5t/�)��b�"�E7̓,��2֪�I����Tj�W�e@7�Kb���]C�Зj��ʷ�!1D�l?5�o���x�~ �>ǜ0`�Hg}|"|>��][�y*l�3����~7b���� |g���@8�"a�O�!(�7�/�6`/l -lJ�NA��C����<"�W���}�_968`�d��ڃ|K��9����|��w��������1��-�-��s|�iz���c*�|�z)S�!��b��Tf#�bA4^ًx�cK9|�N�8d�O�̆���XG,���ť0wɣ�$�s�Џ�5��Jsh�QB��k��csM/�@�b��4g96�����.m��I�U�9M;��F^�]�i6�ό+Z�٬?��۹?Bs����;�M�h6� -��fv��t�V앜���W�1� -��b���1���s�!n���q�����T`ē~J���K���TU���X��:�i�X��o��b�~�/�T�M�cCٷ����s>��s<����k�s@��h� ��;.E�1�F��3*NgV|J��.�i����`�jbϺ����y�v~L��yw��ߟ���Z䆕*��*�^?4' o���^��cy��8�A�1ϑ�<�94�������������'`c��z����y�q�u��'l���XA�͛��*�p-�=Tw�V��e �E9�Mȧ���R��E�) �����k��ι�Y-��NBWd�YA��S�tƩ�0����~�f�ʹ�,�*���w�s�����pl����o����+��?���e<�嬐��p��Q�Xg����`E��cX�)x�ӴM�#k���X]�3�t�����.ϙS(&f��o>+��u�f�m4Y�M��q��)o�y��Ha�MI8� -r���~W���t����Lj����P:�h9�i1�i�m��*�^�L^2�b���lc"�i�(S�EZo~'�pN'�c������W�T�\2�Y&g,�ш�)V���SYd���8nA;c��t��Q��z�xJ�i�4�ȷE��'L�A<K͈�k�����(`�"a�h�>o�i�xA -��H�Ř"�����V��x�q�Uq����c%�_��}@t��*:b8���Uj3ڨ�x�Z��N<�Z2\���r��/�#b�<&�1�w��"���p��`���e��*[m;C6���M�C��պ���X ���@��A~�O缮rV1�8&!�K^��'�mvc�3���E{ -� ^��E���G�L)�����Dn�Z��p0X�y��߃?�n�E��.F�3�{�݂j��sX��l�����݁�<�@�6`��a{lq�E����%��s=�K��O����j�����:��š�ҟC~��{�S͋bJ��C3R=��.`p0d���_T�� ��&(n���9Ă����vщ��XJ�@G��$%io-,�Ss���q�9f����v�A���� 9W���o�6�����Iw�}�$ i}���,[�,�l -�j��cB�1�6SCJ��4Mf2m&���R'�|`,cCK[hQ�f&���L�L[�?��wO�0�����yv�}�}w��[��6�-�����M}�_M���k��R�� -�~(�^�BP��Q�<cԪ#PZ�M��Q5��U5�O�%v���=d�6�m�Ͼ��0�c1fz�fa�췌�I�M�7��/���B:���j� -��3�sMд��0d"Cd��<��������[�4�@���J�i/��ir�L�;D��P!cx� -�V�m��P�Ew!�z -�6������2��3�G�KW�yQ�����r -�\܃\�C�F�U���(�A�@�"�{p߂�&d��7��I��6��&�Q9�O���q$��(`1G�?~T��Q��Q9*�z���@��d`�Z��z�{��y�^���#����>h5r�<�#�n��~Wu���.��.�/.��K��Kp��]�N���'I -����ʠ��)Rx)/���&I!���&]s�i�5Ե��*�E�ܒ*��âYdb�m��F�Lc -B���߅�����[���J%K�_�hJ���B���*��D��:� -�e�x�: -pOx���I=0 �.��������)���?Օz�Ot%���l��?r��|"��|�O Z�2k�}y�������ofMx��?�C�B�ѿ� -^�k�|�-P�0��F�7�!�_� �JD�×%���#�d�4dRT�+��lz}HҵA ��F�Lz�ɿ�m������|�ȿ�� -�O+k�X�}-����b����쏆�2�*p�}�����!lPZ3�6��~�U��5���~�OA�l�s�]�7�/`�Wg��I��/��,���}�c%�>�O���<�!,�=H���a� ��� -���!�Z6ȕ�٫Z{&�a�.m -ۡ�d���lSx�?���0 ��a���hk�X�<�lu8E�$�N������?�ZĚ�v�l���,�Ǫ��F�����Z����Dg/���H�_BV��?���S�q�X'ֈK�E�W,$�d�r��"I�Y$"!� 5�@]��)0[9���Q����`��5����8����̧ �Xל�)q�=��K$Ŷ����'��v������u��|kS��n�I{%�7;@�$'`W��H�9>�Xi���1�U�؛������ى�}*:qD�+l���������r���r��ɟ$�u$�;;���2��L$+֕m� '��xl�s���r"����'� �C�{�;��'2�����`�m7d-�N�a���0l��Vĸ��r<�.`�C���wQ���w -��3aU���66*��AU�#h��� �d��h�n��?7+s[��f�C���sW��f������?K�{�5�D[Ǩ��;[�d�Ⱥ���lg_8Vz�үP��3iq7'���(q��M�:�����6�l�i��n�I�A*B�^��+��/9�-ϛ*��Qn����r�;o��x-�@�s�&+t� �#�'������c�������>_ܱ,4>B�X��@>_��}��xM�%�_"pïi�O�<dF"9�#���y�(���2���l�;A���A�!H��gMߴ�4iϚP�֧�k�b��逞��kOUz�ʄk��_͎��rdGQժ�$%��c�)]�r��`U�a�Sx��m1��QKw��k:Tm��z�"]Ϧ���.�*��u�*����E�fw�{^�n��R�e����ҍ�nwE���"��;������5�m�^�����j����J�XV˛,{-=���|I&����dg���,=[�M-���g�f7��R��r�m��Rt�8uP�.��:�| ��QU�������dKEL���gn�zQZ����۪��2�P%E�/z���/�kf���ٴu�j�;2muUCj�s�|����f�C!���z-����7r�L7x~�"�f�\XPT\�!SA�FS4��`0��[�o[([��ٽ��҆=�ze% -��gc��U����a<�r��U\�XB��,���¡'�7�c+L^�d��|e_�]���m�SKLk��Lk�C=n_P. /�>5+�����d�}l�ǟ��mǾ�}��ܝ_ξs��yqH>ʆm�PVB�$@`�`�ڠ�Q�B;�7Рce0Mk�Z�Z���f�6mS�Y7�� ��TbPu��=g(C����t�������~Z���>L�Oɚ��=�W�Q���k�b\�˚���dS\�A�E��ˢ�n�<j>�]ր�i��y�a�V]���He�m)@��R8h��W�Bq��)EH -Y܅�Ny�X��6z&�OZ7�9duO:Y(\\�J��fh;8�u:��im��U�AU�ں������ -p���Կ�;�Y���:.�S��eӁ����i�0�&�,\)���Ým� �*�p�6��q_{��$gc���ýo������ʇ�?9���Zl�:8����k�v�s���ؼo��z�ݽ�[��x����C!&g�2��D�/���[���o����ů -%���s�"9Qu��q6d�K�ũOL +�6�g�O�D7�Qc�d%D�A����A8Lv��;)5��8�.B�s��q9��l�S��?�a9�p��(C�ѳ���HO�����I1��d�g����/_�d�"��q{K��P�Àx4�F�*�H��v��F@Gʣ�#M��:ɉA�>4������#{�N�l/��Q��ex���v���vrceɯ�~��ߞ{k�[�;�&�\��o���(N"�"�y��*)�6s��4�vt�w�2rZ�腎���^��9������g$M��r��7�Ѡ�6کH -(i��ϧ$OZl٠�ź]D\' .�g�bϲ8���[�E���(!P" �H�}TZ�/X@F�5 -Vg8�<Ma�~U�fz���n���b�u�c8����ʦʇP�|R/ȳ^~�'��ecK����f6Ϡc��U�0v�q�����zG��<��e|i�i��z����C��1D��$�d�d����k�B�IKjI= -�j���s���b�O����M�&}kdW��$�7�YdR�����9>����j�X�`i��q��E�:��h@q����HJ������a版��e����|!����K(8�SW(�*�[rn�n%�#V����Xć�'zpnօbN��h� -��pBg9�C}���$<�@�E' �AI�$&ܪG� ��5�G��X�E�'�{9x8�ϵ��0�������.]�Fɘ��R#��eտd-貒�G��"j��LF�/��ڊ|h.�Fֶ&��-�"�UC��ZOE�o=#dB -���7�|�;�j�67ٸ�i�/��Mؼ-�muVǧ�g8��r�6�~���k���������H��eo�DZ�g������`�� -bh'bȀ?77zBTQ��-����`c�&h�Z�ƚ�n��F��� �-�.V{��T_hUt��NX'G��-�q��=�]��ݩ�W���8�4I^h���n>� B��(�0�3U^X����jD���D�yA@��L5�Z��| P�H`Z�$�,�}�>O_A��E,:!q�"ɼlQ$I��kLJP�D71` rT���!ULx=A?h��~��f��\��%�E|�ik�i����NF� -I� -���-S���]��鸊������m��AyX���W�� -�Wg�il�^���Q%�3^#���ľ�6?2��~����'FE2�Y�(�t��S��1,S��Vƨ�g���0;����dJ��0HTV|�/Fu�b~��y&m%b���3�?�h�'\2��ũ��h�ls��,*�����~�/�\�y6ǺS0���%��ry A�\�E%du��/��V��^��b�~���^��~{�{� -P+D���@vZs�ܰ��}�a��zˈe��0����J�t�A���ׯ~lP��~����B��b��n��JQ���<���F��թ���&*�hn�2L����·ק|�;����^f�m�<���t�v��8�8�=����uߑ�Mg9�P��&�,�h� -)�*�Op7��Nj�(r�Y�W�4�(�����1=$s&��xp���h��c���%�n� -wzZ�B��p֠�>�A�piڕ�]\�^wG7̚������j�E�Ǫ��Wo����;Wv�rF�%*݃��֤|���R�Ǟ'z�y�eF{��9<��y����]��Q�w|�����>s��{{�����= y@WsX%�!&<�<@y ( �Gp��H�b�����ZKa����:�)b;�i��i-3u��!N�PZ$����1�h�����]��|��G� -C��^���L5F}\ZW�DQFoeZ��N��[��s�|þa����(��;�����}�q�eX��F�!,������|A��kjL�/�#s�z}j�������x���E^�"~!��T�tëz��?TOM����-%�z�H���� -Pnz-�$�0a�U� -�������2��������1��ć���ɏf�7���sN��@G63��8�wh�oGa��2�3��E?; -�,Y����p�/HE\�y�8`ks�����.�K�� /T:�j?F -�]ʶ�!�C|��GC(B����xX�� �F<��c��V��:���Z��NRS�!��d�L&�hBfD -G��>ú��������+J�I&�#�u�i����h�E�S�"�"�Dh�\&RM���h�&1g�ȿ!�� �&h�{�J{��7�,D�"=:2ݐͅTM -i��N��m�b>t�Q= --�X6ҵQ���<�&ۢ��x �~��3��3�z�����DjS������Ҫ)�B6��U̹R�\ڿ?�>�ܘ�L+��㫸���c��Kw/ -TJ���"9���p�Ec�ӯ8���[�q�AӖя�|ѳ{lh���h��ٲ��xf�!9a�S���#�_Z"���%��X� -v+U����9���f�*ڝ�v���ےD�z�mRj�?�kY>`�Zm���7U��$�q��lQO�"Ja\@���,�%�,K�B̶)�a(��A�^�dIl�3�%ÛH%�$�a����۟�� ����^������a�+�O��*�������Q�|��E?�$��y�s�'�0m맠�/Q��u2 ���E�a;����G�[ "�v����<�:~Vl���:�ө�+�|��le!۪�z��l��»�sr -E��x��������3g���U��?�.@O�:q�{ֻ������F�i�\���� -rMᑉߔ�p��o»��Z����z3Ū�h�%1�h+y�'j��P88;�ǚ�k�U�&������P?I E��'u�|y�xJ -��B�}!K���j¥W.n���?ti���������}[7/}���_���×ѻH�wy�x��q�w^��e��>��M<����(��B�M�kAC�u�T&?D,;f�[��VK�u�;��&e��r�=��ƾ��ž�^bC���"F���'aUÆ���P���A�b�+�a�e� �߁ةP&ZC��D¯`PD!�)٭��t9�RmCS Qu�,��o�_֯�~��5���� -9� ,Mz�i��=̛��E7�~4��"���u�2��_$=~��k卵L� -�[llP "��&6G���w?�7�㛃���uS�sEG/=�|������qe(���M�,�� �V�F��;N#vZ�~|�2^fƞ.��O�\7E�S��5�X�Y؎Zz�8;:[o��$Z -��#�Q������M�M���=����B'ٓ���ًl�r -�p�@ -�5F�.nu��|�>C�N}�IR��b�8)��9�� �jm� �ܤqOĬ�]�A�K�v��k��i��:�1zV\�q�2<'�U�J }I=�b�� nv/���� -���ˀ��*���& -�,�bA@������Z1/���V����v�@�Q��)`?��� -����ȭ�T!�c��ܢ����!�J���F�E��;��\A�iM7|��o��y_e�D����~�~I8���lX�M�^,�Oo��er~���C�6V6|�.����;���]���d��A��:_Z�ĵ�p0L�R�O]�>U��: -��S��� -� �IS� x���fT������Fl�0��|���nP*R��M5��6�;�������&uc�X*��9��7�Ӊ�p� ��/�s�s#8{����h� GAֺG����A��i�zm�����5(xW���%ӧ���v* -�m��%jGu��ۡ�Z\�(��Fl7[���ܞ�s�����#{������ͼ5'�ޓ�[��ɮʿ�Oέ��R˘iz+M[�����>��[G64*������'��"fS��#M�Qr"�=ؿC�Q�Xj� 2�p�o3O����`���Na8�$HaِDV0D�eͰV��v��6q�������|~\�w~�ۉ}�c;��lǯ#O�R @G1 mW^j��S6XTQB�P�*`���)e�����-Q�mҶ?X3�����I}E�iq�����,�?�^�����[t+� -�k��bP�Y����������cp��i��!��I�ۺ�J��Q��=fi��6n��CM�'�D����jGC�p>>���Zq�6A��@,=���I�0�⎋�af��w�)C��py�z��4ԔWE@ -aʕ]fSz#�gs���[�����D ��Tm�}�ș�G�� �8�߽3���h[@���Z�e�A�CrK�7�����k(�@pi��G^H@��!Ì/����U� a&��B�,�Jy.�z��^f���pR��t6~A���[��>A%q�:��R�t��I2��J�$��$�H��Є��Q��d����&FA�\QL�J��K8Tp -x�4�s��"ѣX�t4�Ŝ�+'tz���K�{�磅�py7�� �Ly'���Je��+w밈f�2:��8�Y��H(?�P���Aay(�[�����������D�Hh��7.��Sk���7i��DB&�}��5� ���z���xl���:wl�ُ~;���6�9����u����ڼ�<��{���sC?��tc`���n��< -��Ύ�[�?��gw�J/����쿃�3#�f�cY�<T -,D����9�t��M��Pp�.��q�m�%��0�O -f�,a2�~�)� -U�z���C��0k��`}��Y,�c�b*�=�0�@�5������>��(�CŨA�"u���>�(J��Q��)�1��!�{v;4�� u�p��qɰ�c��G�oP��T��IQFT%��˕"�d���bX�$��X�Jnh(b�Z�����|x��E���;S�P��7�RG�Pg�۠8�5um�����ߥ�z�6#O���u �S�v��G^�^ւ�~i'�)�=�@ms�Ek6�\Q�����J���mA~�o��� �ǫ¢���4K�b���A#:;M��mo����,��}��|y�P���E��[SޤJӗ��b�����U�wg��2�v��y���S�S�wz���榬,�x�@��{�u+g��8$��;�}fo?�Ӷ3� �ǰ��K_���í�� -Ks��bd�O>��7���;�b��}L�1 -d���|x@�W�ƄC/�O�_Ό���gZނW͗B��W[��]�y24�����>��i���%Hg��� �c4:C��ɌL��}U'uPw��B�C��+q���)I\h6|, �榒���U���u���]10\P�N�7����#����W"�Y�>���'\u�e�ɣ<����_c��/��T8�B�a��I��5�m5r�j�5�;���p�B�}7K�X�f�髙��������ǯ�d} �q�\FA�K�c���z���n�P��כ{-[��`~�_���_���ga��=�����@v�D6Y����5y�Ã�U��/#�;�>W2�S�m�?U����qC?��z�5�5t�!��i9ZEk���D�= -�H����;�*fJ��2��z�v��z������7�TS��1˾1a��ySy,�b1�OL��]V�p��*x��� -�b��[�g�GN�{Õ��H -%�-����xYS�b�Q -C�� -@+YP��rXȑU�����������ǯ�N����Z&��>��B��˼�� -�no��8��K{/�u�y"�ݱ��9����� �)K�*�U�(�gZ��Q���Ƚ�/�KzZ�0M�mIG�Ht$�t$��$_�F�c����m���h���\c��:6��_�D"E�o�NN� �&�D�m7�!�\� -5W].:xGy| -�ۼ �N�Q�hx��zP�O�mj�� -:D�[oAǔ�M��rS�'`�\���b�H����9-�D{J��)]��G��o�>gCU��c�aq�0\.���Z�=2s���ڢb����Fد�_������<���FD.�ℂ�� �7aA���C�ˁ��"l�7��DZ-O�ʍ1�Z�u �"����z��/,�����L�t��/i,�.�.�?�6Ґi�z�jJm��5��t����O�����^{R��/��9�o=�Q��M���K%Ǥ6�TJ�n �~�F�3 [.S���,��x,�o�>��;� խt:���٬w��ǚ��Mw��6q�q�=��wg��9����/���α;�c�; !M$cԃMS�آ�A �Ք��5��`�J���i"����4i��n����ƴ��T��5�hG��g;!L��{}����<���~?Q-�oK9Ⱦ���D��M�IrX�qֆؔ�=���eH�[�4{5\�i�4jM��#�H�m�&3#�%�����:�G��52��<!9� -M��7T�GWV�)���c{_)���J�R�r6YE�buʒ�I[��"PF��W��х��,�X�:�@�Wڕ���ZE-��*�D�j|�P+�y^����w�ۤ� �c�u���уO�����i�sjfb|������]���I!�J�WN��{�'�y�^t��Ԗ=��5�hi�3�d�ON��I?�9���o��' -�oN4a�'�ѡhґx0!�=�k�ܓ���M0G��V�*8�[�}�o�ތP���|W�Jc�� �đ -���hm��7 R�l,۾ -x�B�4��n�7����{?�=;�~ ����ah.6�+�+��Џ7K���{���yC�p$�XJh[C�D�#R�j��� �^6���tXg0�],�*'��bE�a�+�pX���g�l��5h%c��̨�t(;�XWX2\�P�0���lq#1R;pu�R2�J��R��?n��:���v -PU��c�e`�� -��f�����-~K9N�Ơk� -����'Eٍ�z��h6����e���EG�c�29���d_zi�C�����Zd�f�щ_������XG���l ����g�4�\�h��:Q�����~����%���ڊj?<8��;���/��[�b�2(�İLVȻ��O �+ļe��*\w�20&�b�лs:D�#LiN�JT��$/p�4�&B�:h��-���p�8s�<�����z�e�2oQ[�U�l�A��:��q�n䝣�:��j������N}�E�JTU�Ed��6=.?�z��0�|��5���u�}ʄQT(�;�{;u�漤Y���L���c�Ui�"�nH����g�$��>��C �I+�*9��jM#���k��3����c������֡�N�$1�i=~��?˛���X}-v��y����:4�R9:��2�6�����D-�B��m5�\4�����9��Σ�����柙�5òBD2�pׂ�E�e$�ӺB,�\6V�.X.�N�����xu�T��Z�'�m�l���vS��Og����CO!�����[��v\��<���,RN�Ȩfj<�W>��?*?8;q�G�E��I4h�6j���#\�X���;І�*��0��s7y5�6�LR�v�)�p�D�!�F�x@��~a(2�m)F���"�EOFNF�q��7,��7N2BF�wT-��w����S��<��@8�9Q��%p+��u{F� ��y�TT�D>���@@J�T�ī�EJ��A`%o��8�N�u**G���p)ht���^ ���@�������D����X�9���$���j��q�٨(�*�[�*�eb�V!aC���C���ƚ�"�[�u@��ʝ�n���ƮFE�jk��e!2��)V�����Mf�;����ښr5�R��_�����v9����ؐWJ�N�-����l,��k{��2d��v����^��ԛ��,��+��md���сK��,�'�m����ix� -���� >�{�L9�7)D� �Y�����>�$�N&mO;��AЏ���1�)�����������ZD$���c��c2IC�#謌�a�����̣�n�fhdL4���aL��c��S ���[ q�+��l�+�����X!�E�G&���߫��8>˂�U�?�� ��_�����Ia&c$��}:���"�ّ���.��M�h��-������j�Q.+ˬ}��-̙#ȯ埘2}�I���x��]�4d�Oh1�p-�?a�'�yk�%ב����\.>u�x�k69��z�\�9�|�b�\�r�"��Z�a���a�ۗ��g3�cDB�\KI�"�d�*����9.�k�Aº�N1��3�6�ʀ\N�҃�6�.=53� -{c�(��������r�T'`���α���ax\ -��Lj0o,,�2���w��� -�/��&�;���������w��g���?$Γ��Đ($@CR���u�kU�BF+X�L��mZC� }Q�$ЊR���'�ۋ��t��E���������ě)�����������|�MSd3~�oF�9:�r������Yf��#o~�F�Y]D� -� �[�NzMs�j2i�b-���w-�<F����B"^N)���,zS��K�Xc2@�ے�ә�L��t��)}1m���Ȋ�<C!����DP��t����4~�y`4�L�+|43�L8�ʹ�sF�^��Z}:[��Q�D��ޟe�֥f#�{��ͥ�<�O��~b���n�M���������2\<��(���9�\�'6�)c��ٿ���3�N�N��)�c�ki�%5�lL�l��)g��u��`P�*�� �����d�m0��u;�w&�i�h~������u�H�v��2����ux&��7�h�݇�&pO`�H�A�F"�@���/$ƒI� -�e��`�1$3���Z� B��#�Ғ5����#�A.%0AFH=E�HFp��TD)d��dˮX�)I)E��'_��p�>�E�Q����&�3!�9�R�T��ϡ�m;�7%��qڬ��%Ƚէ�C�=l���'�l)�p��zh?��[ov<��������h��!e��*1y+���7y����gptw�Em0��Ks��`�0[~�x��f��}�|�}��*�f�b�5zw��T�SI��3���[oLN��H@�����z%�JN�o�^�"?�U�Q}��Q�գ�z�島|NK֬Z��T�+�y=O.?O.?O>�<����Y���T�XD��<������S�k�/μ����ܔ�:/7VC�[�ɍG{�o�8�ʩ_My���l���?£c�$�Re���VH�3�ꀸ)�/?h�tx�m�m���y��~�F�$M��'-�L� 2V��� ,��p�[X����,I��XҼ`��y^� -�$���q��P�1��k��\�uX�ħj����ZT�I-��V�ih'�B��hG�`�� Ćk)�Rp�n���zD��Vz -�gam�of�����&(r�`EyW"�Y{E܃�h٦���J=Q+��� ��t��1*�2���aY�6lO�b�����'�w -����d4ɇ6k���S��.Zl�r�D�u�����n%�5�zh�O_(�����0`�b��[��{��_,�tZ�9�b����^�I���p���n��;���īU3�����`8�8]<�a�f9;��Ͳ���(�!j��T"tS��`=�H�"�z+(VDZ�uR�����|�)iH�}�b�JvV�c�<����e$���s��\p��`s���k�0��(6^L��Q��s*�f[��^X�g���jAT���wYٟ��߯T3Yl�p�0u���ibʧ~�>���n˸3]^te���7���M�jV��ggw5��ɨ;P[KkuzGn�)��V��h��\�������=�r��Ґ���?��]��m�1����Cإ^����Wu��A2 -d�� �[��@K����$w�_$_�"�ߍ_�_��'n��¹j���C��P,���45��]q<^v���l0I���c<͋<��q����0%���p����|L�Ц^�I�JH� -�1���hp�k2f��20�%t��1Y�o�;_ɔ�%g��x+���K=(N.�K����e�j��k�d�Q������qp��℄ʬ��85��z� -�j��?j�T�x -h�uGZ�����Mnk�o�9���R�p�aC�����W?i�vհpc|z�d�Zl�]���N?C�Y��}���`�͎z��N�{s�<� �����҃i[�b��@y˜�s��@"�3�f���BĈZ -����z���6���v8�al/�K���;��a�e�2����M�qp����w�9&���p^">䮃��]�qW(`�� -��I���:�Յ99V��8NM���g����jnj��������)�ʚ�|�4MY�Y|#�i\�f�v�ƭz���Z��&�QSUh��,<���nH�S1��ɪY����Z�A�!�]A��f�Eh�p<�k�����y�R�N6Zn�J`D~{籍�D���5Yd$�`S�1��m�[��V��b��n�{o��/"O��å�i�h3I��:RM;���1"���)�SvP9amg�g�����M�f��Tϙ�����j�������><�ޙ}xg�������ά���m�w����]j�4vHCA��@����RB���UH-��U-���(��#E*j�U�X�"�=wfPZ5��ZU�Y;w�<<{�����7����/r����Y��L�J�ϔ��o �[o�E���ʁ����\��el�x������|�� )�jC�d��ꀒ/u>�ۦ{>����[�Y�P�{�ӊ��8�f�Z=�^��ԁ�j�|{A����z$��|51�O� �i��aG�R�c�/VÅ��X�hA�-z>Z�Х��Z��+P��s��X�F�&1CK��3�7Z^�z�� �<�Z��r�3�4�@�I-2�ƽ�N/6 -4�"��Ϋ��~�u����jV����l�&{��yd��[���KBϜn�*�zb�о�����B$�us�*�yF���?�T���56���['}���[}���Z���ג�C�� ,E���r>Q�;��q��#�"W��#7"y�7��a����N삠��b��̿㵛���~����I�Or"�����D#�DD]^�a#���5��VF10@�UwS�*�An3���C����P۲�[��nώ4 -�;P&^)�L`1D�bI�"����ͪzJի*��K]�@-�N���0��@�)V�ڈ���b�ͭ4��M�_ʄ=�b�߁�r3��G{M�_���}�xP�I�-���t���k��iSrCL��W�u<y��)��ƅ��>��LRuy�q��e��q&�)�5���ɸ)n��1)��C�r��D^��pu�:��P�K�G~R|F>f8�:�x�=�<�xC�U��*��$��,���xd�C�Q�I�[�dO�G,P� 1������Н�YE�5DVT��:������Q��s��R�T�Ѭʑp����!�ðjMD����ޓ^�Ko�Ҕ4-�Ĝ���J�_FfѬ�͙�h�]e���"3"�6SM6�?ʤ��b�b4&%���_+Z�l<��=��d{�8��|�Q�\�U-u�˥��ǜ���V Z�s롳f��������5w�֖$ޚ?k�PxW� -ɺb����(�����ɓ��\E�]�5����g[��ݗ;�2y��c�Hj�!�.�}�SSR�RkC���)�Ij�6&{���eH�Ƣ{���M|_P7K$�p�8�9r:>CN�%%|��Z�Gc!4)k4��*+��9���O������xC��&�?ɟ��& �d��ЌaV-,�S����4�:�2T�&SS���ɔ1E�ige��ńx{Do2#T1"�"[�ҙU�p6R��*墁=.�c?S -��`�b�2آ1Ѯ�2��HM�/�X���<*u�ԯZ���-W��U�UK�C�X����+-.w0C�x���������팖�z�4�]��|�w�;������*V����ڗ���d�A&�]d��A���%|c�m���e������K�[y[?e#��5@?t�����a��G�J�"ѽѣ��QW��\��)/�Yx�:e�G[�eF�ל`�h���IF���` �QS�֬����q!dn�u\�Tޝ]�F�����#�؉ r�F�ѭ/mz������pٚ_��:���K)w -� -�5��(ܰā�����ɈW$��i՛7=C6J�־�_A�X+j�� 1k.��8��S�.Lt��箫%�Ҥ$�,]���&���J�ŒO5��X�VV3�F]e�����.�W��n�S�W8��� ��A�|�a -�=�!��ܛ�`��_��~@� -���� -�t���)oݿ��Y�N����AD����c���@������P����V��w�^h�%@K@��X�m���r�!�r�!�r�!�����W���#�E��7�1��.(��Ecql�ʡ��*U -�u���o���Z�ݳbeo_�������ڇ��/������G�FE���B� =0k` -v�ޅ<Kg�A7��A���gaa�ϟ�d����p���ؒ����&�7+��>6ᨅ2���L�d��Ë�1��g�c��f�&h!��e�˔5���v�����6�=�:�us�c�[�7=�i�6���#�8l�1�}���6�ǣ��؊㭰���l�+7��1� -| -�hp�Y�˻u���]h� 0";Tࣀm�u��1C���#z���-'�����%�� -T\�{-�1oZZ�]ٕbx���o�^��7l)�hW���W����ȧ'��;ei�C�v�'�}� iW -endstream -endobj -291 0 obj -<< -/Type /FontDescriptor -/Ascent 905 -/CapHeight 718 -/Descent -211 -/Flags 32 -/FontBBox [ -665 -325 2028 1037 ] -/FontName /MCEBHE+Arial -/ItalicAngle 0 -/StemV 94 -/XHeight 515 -/FontFile2 292 0 R ->> -endobj -292 0 obj -<< /Filter /FlateDecode /Length 20459 /Length1 34352 >> -stream -H�\T XT��Ͻ�� �hPM|��,Q�č"۠��,+�0� �"v\�4cj�cՇE��YM?�X�&1MݒT�h��>��8�gFk��|�s�=��= AX�������-@]#K��+����K���x�l��uf.�}XLu�U�{r� -��F���S�Nݟ -�����Β#�u�-�y��]+����Oy�� ��Jx}6���I)��U?4��Y��t�6��J�ת����w&�,_��[��Y�9o~���������θ�8��]�"��Tw!B�F8`^�����0�x���=[���F� -�ş�.u��~F3>B2��؈zX0�%�A���a6�?�s>��ƺ�GН���u���c�{#9��c��$�W�a0Ơ -.Zl:̵��u��a��y�D1S��������b6�<m�Ԃ���5_�Ll�� -�e�m���y���,��q��Kq�©V����a��Z=Q�rl�J��¦N2��6t�5�u3� S+��K -T;���D �p=�8Eǥ���FLe��a(�T�m��i��Q�� j����)B1�9�]l��)2-�*�f����h�\�H�Oc�Y�OT�mr&�8�@�T0�/��sKE�h�;�=���f0�H4^��x���R�f�R����b�xE\�������~�X�=�I]i�ү��j��^���F��H����,�3�1%�)_��,SW��,W<����xn� � -�r?,��7aWv�8�t�H� -f��F��E����~O����9�i�D�ѿ��`���&z3�b��'6����鴸*�-�do+e�,�՜U�\��"/*�J�b2� j���ڨ�Q�U;,�֥~����wc�������9�i6/��a$��I���i�ww�~|B��]$�P2�ad&�4�A5��r�B;}����t�s=}9?%E����(3�z�A4���mi����&c�HY(K�l9_6HC~,�./ɟ��L���Rz+�J�2R���Q�)����$������RiYai�����5ٚc͵Z�YZ?�+��|-8��� �H�l�Z1H���)���(�Y�;U4�J���E��2\�lt(ь���5�.�h4�c�xϛ%Ty�I�{����N��K -�-�8@C9�r�+O�Ky���v�M�0�&v��cJ��Mn�>9��E�y:��[�}�Mo�\G tK��"��h���������o�D)�Z�Z\�|+��U�K7���P��1j�PvsuC�I5˩Pn�\g1�?��?p��b��R:�<*��+0�\���C9Ce��,��<�je�b��"�*�x���}��@��bI8w���<!�0��sB���;>���)4[ƉV����SPNz�0�|��2T���ެe�����Hu���|s��5S���f�p��"_4<z��v��{�}�D�������s��W��<a7c -~�o��9�(y�<٢�̔.��<r�]f/�G�9cq;�*��ؔ�ԔɿL>l�����0p@����bc��}2:���ۦ�z��="#�úw}�k����A�����U��g�3�4#��P��Q��k���C�"CcQ�:�V�S��Laͩ���rO3�&�hIH����f�e�Z+M�u0�&C/Ќk>>�ǯ��A��ll����34��4��9��m/�`wM��zz�|��� -`��]M�L>F�ه5 �qRF��a7"�o���;K��\�=���VgPz�>ŀ�ft��� �ư�V_��[ -ViMq�ݫ[C0�(6�D/qNr�Y���%��fa/|��%;��x��t��+4������:y��mETf�;�C�fG�kM�8�㐚�oU��+��^I�4�褧���iE|4�ny�m"#S�i������C/pf�l -�;o�#R��Gw��B���)��}&0�a������{��y�%oF�3��V�q&�k�����x��S@le���T�ҋ�!ür���F�����kW�8�K,Q!7�e�}��x���k��x[Ě�g�9&�։�qs[���B4�1|�al���3�6���W��` -/�Ź�{k -��Z�����:��s�B��R�yE��+"��VJ@�؊N[.�hEaR�4� 1��� -L��L�SЎ�j��Gfl�Xڡ�)����>���`�?f�o��_k������H:A��1�Q��kZݚ@!ׄݚX��TDr3�C6����K�8guNT��_w�� -R��C%�s"eʷyK�IN��X�*Eg�I�*�I��EP.�5f��OT��gɠ^���#*�FK&��u���NI��N-��%�f7ef4gLw����n���0�`ޒP$һ[B͙p�"D<-)II��B��4�Z��ɌҤh.�� -�J��&�r)�8:���"�E"��ɹ����;�"59!5rJ?���l�S�N�}zWR4���Z�����ҵ�f%еc]� 9r���̾�R�=��_��������w�"*�vPHo�'�P -���(�6B�>�}Ѿ�+0(�(�`9P�2ڞ�c�#y#���h�Yd��|{�6z8�r�x��)��!�;#�&q��k5R -�P�����u(/E�LU��Ʒ���qv���4��D��~k)Ř���p.��6������*�6��`���;X�V<�lC�t���!���R�Q�Q���^g`��κ�6Z�k�� �+�n�cc^<0�/�T}���g��3�).��|�UZ'�J����A�O�~�0M����5�Y`6�>�����Wi2�g��:�%�/G�c���A�VmF|���[����2V��?�-:dm�0�����7��`_c�O�ÍT} k�̟�>�}����;h��� ��c��p�����&S=�Tï �6��q����1�`����(r��Q��0�!�1ñ)��a����MƬ���r?�3S���yR��T���c�yᘅ-�ݱ�Lq̸,㻜�^����1c�=�I�� -�"�\�s��<����q\�1����~�X�>��P<5n��� -�T�.����j:�1ˬ�)�4W|o�� -q�f�i�� փ�Q�����^.����k�vm�يu6����,|�-Ѯ�i6��7���d��Bku��u����@�d6!g6��������3���2�d��?����c����+���*�^)��$ъ� ��,@_h�Ig�j�)��?ja -����������s门���7��Q���ƒ�n�z�s���a`���; -!�~�9sL��,��h`����X|����]n|z���}�q�ey� ���v�t����s�H�s�g��^���ǜ�_��:����Ʒ��G�~۶�k���c��`e�����`ݛbwj�ݥ����]���.�5�i��g�d���~,��"i_/�m6�cߑ������\����� -�l��y�X�>�{At7�|'{�g�����x��M��}1��a�y�Ý��:���N��ȵ���������������D;�?C��F�Z� �q�}����/|+ɇ�]�6<^������/d�E8��� -�b�����B*����*ęP�8�~�l� -���z���9�d����Fֳ y0��Q�m���r����ɱ;���t/Lj�y��{("�������6�'1�.���f���D�a*o�� =���o~#�y�)� -�wI�����w�ΘO����=��6J�}�!���;��S -U�.�a-�H�'�>�^����|��[�QDY�x,�S����'���G��+�_�P�"�Fx��x[��"=�z�5�5Sѿ��)��F�8b���[<��F?������!�U�ަ�Q����O��N��l3�\J��� mu�Yσ��cOa/���[cv�6��>�N����OS���@��]�z55���h�����5 ��\�8��s�+�8��;~��0NL��-(�� -8��x�M�7�m�,�$0��4���@ -��.<����0����<��U���~���&�i�'�X|�am���q��H�����d��iMO���"eJ:Ư����;��8NfVw�d���w3���?)�b��%.��&�tȥ�?���5F�H�c���+�w�4��+{��'Y?I����A,v�V�����W�����%Խt�,���g�6��1�l- �#`�٧��/�,�V��K�yv��a��' q~��~Ŝ���w_������]q�2��.��[�n1���{L�\��is�L�<������O��yh^�_��Y�sD��x�L�;�����rɧ�O����_��w�h�/�����Y����(��l]$Q�zW����_�W����k�k��kǜ���5(<���g�5h��m�s�o,��8�"�N�k����c�D`��e�{����:����No���s�4� �7����=��[�����T����|3��w_4��糾q\�~�?<S��1��l��a��,�?�,َ5������ �N����vI:�fm��;�҇�x�����Ϟ�4�q�����7��c��f��7�u�@c ����x�7q\�}{��$a�$YIJ�d�2X�c�?��H5ECm�0�k�`<�I��@˴�<S:���-tZ3�I�ӄ�YN]��cwܦ���LB�������\��l��I@i�Lo�{��{�ݷ����#�P���\� -A9S֣p���@e�8g �Q�>"-Np��qTF,t��'.�[�f&Bo����M��b��O�ܠ7�?w_g;�0�1����E��4��X>�#�#R�#v#��YO?B)���Kf��~�R��c}�Ҏ'D���5��{�PM�n+��T�5����U����VHi��A9(]���W����� -6~�ȈD'��U���"�"BC��J!�)�[��dBA� �N -Ӥ��T�Q�����O$���Ϻ~�����?��M�^�S�W"+� �Q��+0n��,vJ���PV f�nD�D�iQj���FF��{M�Ou�K�@�g$%�ט�D��-�r�*�s������D�{/��D�X/ZL�q-&��A��@�n��4���"M���R)��,�;=��tG�(��Qb�GY!sַ����p�.(�e�:��[A} �nP���j=��@ -�����(T�P�����m��u -�K�&A -�Zj1�2��4����FW1] -F�{��a}��������k?��2bQ�S�$e�˼L -��3�嵕#�$V��i�$���I\F���$6`GF�FL f�����}����@���!f&�;�Jf���ޱ�l�����R��G}J����F��v/4{�4D\x^'N��HC���9_|�C�3=C�H!NċYݗ�+����T`T�,���WԐ���ƣ�_K<�U�C_A]����j�T`�46VkH���H�z��xF���i�����ʐt�sJz�"-�g,�T#�N�TK��tj/.���L -I��4I�z�@w&�+�w�]�h�6b{Q�^IIb�CRسK�ϰֲ:C�*�B0c�agWx��~����P�++�s|�̯�+������B�����(%�E�`�@�����*�3�L��#��m�2�B��@�d�r�8�ok��6�E�{e��6,[�5��4g��[��`<�/n�B��Ʒ|�m�L�=��ږ�E�:Q�97� -lj�L/?q:� nב�;�\��R� �3+��.�cv�v.��M�uaB�d�ba"��x���6w����0�f*�6̭�;���ϭ�&�4��yD����s[� ^"3�o�w!�+���+f -yf3)�y%f��3� -$�cс�b��/���I���Ι*ANI��q�dJ�L�T�����)^�N���G�x�)����"K9��rJ���#�'�ə~�əFN�����A�Ktuĺ��N�ѩ���~���偮���۵��=�Z��պ�Qy��� ���GHG��m�C鎦ꔺ�O41��Rz,ש���Z��Xk���j -=!b�&�+�r�X�&�I�E�5��6 ��Ć���V���_��%Z�/�:��x���}4Z� m��Q�A��ӑ�#,����mφ���|#�lHD���H�=����;��h��]=�ـgd0��.��4eO4�CH\+���[��x��쑴�>�5�^��8��Y˜���|��g6g��=���z{T::�zH2�i�x+ŭ������m�K��!��LB��лM26a��=��Vvz�:S�$����V� -#�w�I��fL|��Wr��0�o��L0g(7FW3��r��w���"~V�y�����X����9JP�H����}�H��0����,l�����s�A���q�t�(�a� � ��o�E8��9�{���X���wo�wob�0������к��e�p��ۛ��z�]��Bpa�|�[��sx������?�/YN���l�8ͬ�~X�x��e�I6j{�����~�* -`Y��w-�|/�E -��z��7_^��pcl�����ޛ�vk�~�Ȼ����M��l���R�ż�f�� -��Z���'�;sx�dtc�N�h�Yb�3���J�(�A�H�/��pV�1�LGnY����%����61;�k*��5�GF3�zٙr��#��u�|����&�t](���o̅ry_;Q�ܱ��ߪm�T}����p�L���D��V�<Sf[{r{��ӛ���/c��Mr�Pk"VR�H䀙� �#o2���30m��U��u�߱�����lI���2X�ƊE��B�k�Cp6&d8p8LC26aʕ����%`��`�O���%���5:UqM���d&3���ەV;z�������B\���$�X�h4���Q�; -���˲�������[V�q�Qܬ���[mڽM} �9�^�[� ң9�z�mPP�1���8���١Q��=��Uhj���h��F�%�d�]���0�#�°î1P4����"Etp�~g�̵��0�t�CV����I����QR��`�"n�^p1uoj+�I7QnY8�����D��ݭ���&@OQ��$�h -�1Ĵ��L�X�O��L��[$ -��'��&���GHO��G�RL��1��E�o�����D�]���L�z��4�RZnb'�b?�4M�BƸ�E]�b���A��{��E�'9�K��$FN����( -��������0�0_0�:��$3mO;f�fd̳U9�\s3j�ZC��EG�kI�:� -�ְ������H�_�+��Wf�[fX�l4�7�`J�#��#��LK�̪��)�E>�3IS��idit�X=��b��0l��(\��f�r�q�A��.(�H��8��_;Ժ�Ě�:��u�z�7nlou�������.5�v���J�{g/�+���v-׀����5(>�-Sj�M�����CK���"��I�VmEky�-���<�}��<�X�%��Ї�xJ��>J�-�cK5G��X��p_J -��'���{=w -��y��b -_��>�R�J���=�����I�B�g�fZo]o�������Fƈ[<m��F2`/�d��$1�x�w]bDq�zIซ���q7hNp{�Q�z��g,v�n�lg��C�3&��!}�h����������]J�UdaH���㩀�:�4�&�Ji�al��(y5�&�L ؔ_ѣ(����r��S�����)ޤ�!�`i(��������iۿ�wp���φ���ȹw�������3�ܨ������_��s��S�w,�����L0Y!��"��.��(��o.*ED��!a,���Rp��3g~� -lLa�i����#`i���u���v����L7�hX� -��'���D��p9T�rŁ:p��!n��&��2��R -�#�C�\wY�[JM>���cG��@��4��]�z��/�ͤ���`ʳDCU� -��)\��(�܂�����1�?Z� �j'S�� z�4�K�p)�v�5`��C�B*�>`e�:Wʓ� �uK��E����;#�H���H����tW�k�k�1"cdLԠױ#M��"|8�����E;< ���o�d�d�r=�N�!A��LH6�~ʠXEz��s˙��5��0��=�b(���D�"bQ�.���<��o� ��|��T�]0�t���.)G�Ҩ;^:��M\K� ݦ��И�#�H�I0 -4��;�����O��O�d�T���}(�&� -��>�4�~j�S�^S��,�k�÷}����8O���n>���T�=��������m���<5*�3+� Ph�m�q/�_f�t -�-�������9ͫ�٬rN�ĉ�㕁�LY� ���eE�$��K�0*�J�P���Y���!� �:"8)-�A����U[�j"�/H7��`��$�y �]j�Y��y��o������O�z���^�lpF�c�~�����U�>����S��_�O�Z�jʞ\5�~+/�Κ�._�zM����(K�� -/���X -X��z[����o�'��@�^���x�4��`���2�0.�/t,p-gk��;��~�O>L�,6ِ�%��f��|bBk9>{BD2#�d�d�fȌN -�g��c��L�,��ꪱ�H�r,�"�4K��P(�6��sL`�x`�:>\�@Ϧ�:�[��Ɯ<7M��F\���cxƹ��I%���v���j����]'$������?���}��o����կ�~�乃��JЈ�٪}�x�� -�E��H�:�sgz��������=?o�:��f�'�#0���vΠ�F=�i�4[�2h�[Mpq -?N�[�������ш�"I����H��`,�g�0��tT�Z��a��]����8�����e{_�ө���sx�~N�<pDUۗt�ϼ������r���~��}�>n�{厽�# !�w8���R2�BrC�ء�I�0��-oq��0�`�� M�i�B3�E��� -t�XZ*S�@���ۻ�������f�����ό2+8�� �S�:�"EA�e����Y�a�����l�X�T*��=�3�(��UݺZy���9�o'hb�ER9�g��?�{�՜z��dV�V"q-�Lg%4�XȠ��qH��]��u��@���3��<D>��g�ج�Nf��^-�:�� -Ne��-��$*���?�X�1VDP��G�_E*V�S�C)�g�,Yj�ڭ��t~G�2�)�1��m�.ә9�-��:F�������31�u����5w��H�^~��X�{��36���a����|_U���+�}<��#�|�j�j�[�!�q��A��a��rlp�����`��b�cċ�V��9 �ѷ ����;�:�� Wa�MS��W�X�j��W]O�-���^�K�@�!;F��$�dYL)ˋ,��m�v{���sԙ������x�� -������%^��J��Y��|��g��:�Ƣ��$�N�.l��,�:��i��kHiSZ��� -�F�!���&���U~��/�r�����^y��z�bi�]2c��b?�F�i�����X�)�#Nn�,f�W�A�)�\(J��B�+I�D�'�Z���y�rA�u�2�c�����(�S��y��{�����_*�1�Z@$�a�cx��(V�农,�w��103[��5�}�]B�� ��@\�4�4�� -�N]���S��=R)�dV0MY+ -��~���X�v��*fZ,����K���I�X�����!��m�p}`4�PP�W�L��H���Nq��7��+��O'�����hA{t&h���l7���<'Z�9�˶&`Rpz�=���L>��2V���?'��#���}�b��.�pX�[ݻ���Dr/q/�IM���դ�nU������y1�6j�qY,�b��%M>���a@"/.�V�cP,ݪZ͋ ��� -d<��$+��j����6�Ml��!NE5��8�jl�-ɖ�ޡ e��S��t�Yz����X�3����y��-A�;D�lݡ*�C�W3�X`�=@�k�y�a-������_pP�\��0U˰�;&�N}vZ��(X�|o4��f����Mi����T�hU�:��@�N�B���&�X���s%Pguq��E���U�r���>����;���� -�û��A��N.�~�TXk�`+2rDp$���XDJ,���X -��6�[�U�^!I8a� -�Y���V���[���1������7�.��i�F�Ӣ]�k����� ��y����V�iA�A��[�^#y1b?;=�3�㜃F,1 �����=���y���L�����qan��ґ�����p�R������G�_k�����=˽��vh5�Zj7Vz�z���V������F0J�U����6�A=��*Xr/�e�9��x���kp�Z�`�!�&����<���A{Q�;��'��FϾ�:�"���������s���}"�ÿ�-w��y�旹���E�(<����>���E���p�v�:��>�b��:�NU�QpA��s��CV�7P1"x/��en��$N.P�? -��c1��,�+�>q��߹��������̲���}��f���f.�}��;��+Ra���R�a��h������ƒ53gPsl�#f���#�e�v)�7 -�^����H*�7 -=�oo!�--Yj=�t�l,�$=�m�w�{��W�1��nhn���}���ݒƱP��2=����T��~?+u�,�uM���AW�J�&�$Q(�]��ϡ -t�`4ˢI�a�(_��mv%)��t�Aزh�iݘ�1�1�F}N��MB��Ʉ��%i��Q:ڴgt�S�z�d6��M1U�c���_�v��?���\6ukb��ګb-G�w -<��r������/F������P��s!���5m{��,�tM]��� -���ك=��n&OR�,k �Ed��,���ʼn�GH��i/�����T'HY�Q��/N>8g��*�2���A}\[�[ئlW��O[����~e��_���+�\�:�E� MU��aQpQ�](�(�1@�p�A���\��,Ԇ�Q/:�\�Q�v�*-&|�J -�BK�W�*B����R棎���X��� -����� -��:�生\�<���u��j"Q�?����3�����M6�n�#��&,$BԀ��[�g�՜��Z��r�u<�zR�N��k��Ӫ��Z�ŏ��z#�����g�Ȝ�sEO�rzU�L�gm{Iv���ff�<�����7/w������n�%����ǻ�(���U�{�T-�]6�nɯ�����1n�{�w -����_v���I���K���\>�xI�\�������ug�X6n^3�2'g�o��֕}�W܄��u��@TY -'Ax����؍���BG�n��$"��0��8\����yM�|d t]�l�`�Ӧl�&�6D(v߾Ớ -v��j3��h��\���>C�$�uH�:ru������M����n|<��6/�%䖪$���v��X�ۄL�o��[SȮ��Ifh����î�J�m�@c�C^A>�8:r���S��V]:B{x�J���͈�IV><x��SȦ=�ܧ��D�N�S(��&?�ń���zc'���a�n���:e`�3�i�3 -нS6�)#��M� h��F��֞��TѨ���;BA}��m��0���MUQ8���E��;d����Ps��)�����NǠRT�����"��8�6��?�"������^��ඉ1(!F{b���A9q��Axj��h�xW�8��t擑/ۛ��t�9�A�VͧѦ�t�+��^%@L�D��(��R���'T���u�u�:@<�be23���pc���]���=Zx�"��2������@@��Æ�P4�dWlv�"2Fc�]�CQ`8��6�D#C+v�x�eg(R�9�h�O+�(�e'?Ոfn���� A��G�n���э6x��NGE�0�tD�YŵӮ��P�m(���S�c>����������G?�An8ȍ��P4)ݣC��Ɍ��9-p�����h ��ha��(z���ގ���U�����]�LQ�]�8�p<�y�A�E�@I���o=�Wg��ݍ�&�6�kKGvj1c�N�=A��|��ld�֙��fd���&e�e��PF=[����v��)mu���w;���8��z}��+>z��\�K����Ɩ馏}�~6�y�.��y�9�<`d -������\y���0�1��~K�e�e�e�Bm�tYn[H�E%�n�'()��T�@��&��9���!R�x��� �$������vy)ov@�HWRJnV�'��P@NU�����>=v��X�]��� �m�Ph�^a��5�i�#�h?\m�5f��#�G��j�s���;/7M�|C�8�$��&�)^Ro�-i7����\�u�t�����KPN�տHܯ4�_�nOo��O����^�{��ė疼�v֚Y6�����My�Yi�X��1�����)�O�}�����S~�j3O$��{�p*�*��"�~v����I�����O�J�Ι�Lg���\H����^ƾ�5H -��e�_�w��zK���&�kר����ߖEqAj&WE=O�'�� -�o����HPA�&�j1+��fě�0Z��u��D��q���Gw�΅�P%"�#�4?^��-�|��w�c�A�,�p�h���(�'R��H�91��q�������`����X�s���u�;+[�R�"��Tn�ly�v��[赓s7�����s�rU�7�AP��8,52ȥ>e}J�c�#��ay+�J����w9�u��qYO�d��vv7s�x�t�a$������\#��#9���,��MD'���������ЮE�lPT�Y��$'�Sx̙.p?�2���3 ��Ȁ -� ����<���9)�1�@�A��l�� -hU�y���c@A�&R�/D -K��-Xd����G��rs�������[�g�o�7����>��L{^ӵ#a鲏�v�ԯAY%���,!���MXǦ���4�ʳ���OLO��K�b���3[X�q]���^q\�^�ݖ�u\�)Hr�2���ʝ� -㱇/M�yl9.fKle�<�3������0�gᑝ��y�e6H�4+9�H�T�?/ ^ -a�]� +D�IC��aԠ�bWi -��ܪGªIB_��hB�~��V�c��d�l?H�,��]�����/�_�����l}�ݗ�vt��id�6Dn�=[�K�x���N��텘�C5&�������]�j�s�2�5גK�Fc��� �8M�L -ۆ��lq�#[�*V8��������Eg�ڦo��!�'$ı�\%i�DJ*����쪏m�<��{��{�;���W�`��y�NBXD�фv@������(UB�nÂ��蔡!�k��V�v���B���N�1!%L���Q5۠[�hcY)8��EZ�����>���}�����p�,"< �����T��vE��^�b�,a��R-�Ҋ�c-��EcYn��aLv�ˍY@���Y�'�ޱT�;�?[!�jb̲e8Vf�"����'�L}��������my���q+��V亮����.��YS7��ѳÛ�C�6�f���� -�#�Λ34 �B_� ���Џ��9�v؊��l����fER%6ow�������}��^�t�x�(�kI���\I��w�]��(�&����|�h����)O3s\��~|@�E{MMuSI�6�b$rSWب8p��Iw�*Y��a�損�/鋻���Ew-mϛ��ɑ��#�[R����.7�{�ȃ����N��?�@h�\�(��Ptm�ҠQ�$T�PʴD�V�־�4j��e�����x�|A|A����DB��UϮO4*���٫b�f?'�����.ѝ�V~;�I��rw�O}Cܹ̬b�h1��p���e�(b��2 -��.�af�]���zRփ��Vf`]�;@;\XG3#��\#�����D\��f`Ő��ci4Yy�E�N;&!r�3�M��j9�N`��v����d���[��}l<7�U�.��u8�Ļ>�x��+����A��?>y��3���s��h�>��������'0>r�����F�������t������ �߶���p�)�T� -����C�[fi � -��v����QSd�.���T^�Y KMV -��S� ?������~��4�B�郛'������6��[������Yh��R@A����NQwR{;l4H3 #��dA!s��n�+������������-�_�����[���r�z^���r����?!���L7K�R�4 e��҄$")"uH�R���[R^�#h�H8^��~��@�LE]@�����%�͒ �!%�pFH��� -�� -�Տ㇞�m��NoU���*g2�>Rv����x���t�\F]� -I -�!`��^� -�kv����B�b�������e�W��^iVx%��ލ-~H�<�T:Q�2�=��<��^ѝL�����&�TW�M��Xr�aT��f�k,T�l*Je�6ͬ��Tg��?M�\�z�œΧ������]��� -��kS��H���3�r�[���7��2�Qo,s⼧<%A�@�օ�u�|�PBBk����%�E���Q�4�qZ&�Z:O�w4;ZI+m[�.�W8)]��'�c��_z���Ȳ��T�X'��t�j�HyBtA�A�a� -�� -,�) -��v -3mP�x��/E� =��8|�����;>�-��E߁XAi&ӌ�/��@m���A �B -N� ���x��Y��b�R��V����ѡ����Z(�Z�\��`?���S�0���泃�Z��젟��j--��n�sJ�a�v�=hz�l���m�Vg��� {��� �q��2�lqC:���;S��S��A�"�ڕk�"���j,t����y)��S��P�T�Lݪ���"B�pS �p����!ty���_ ��,�)�C86�{�uȣ�4��TZ��Z [���0�yc�i(Q]�����̅��q��I��&�\��K�pT����b�+V`1��TyTǽz���0�N��C8�����a�d����xa旹bh�Q�T�{�1��rc`P��sMָ� MB������&ծy�4�;�=�C�d����WmY=v(p�%Ώ�穹�7�:�����s>��G����擲cMk�m>��\9��ֵ;� -�ٳ����<�#�n���+��˝Q�ԏ��{'�I/%lf+��{U|B -� -�$jӜ������!;�vg�b����Wi -Z�T%8�:����`6H�<��������x(*w� -Id&�)P�#]�S�$�dQ�Z��0vɞ�U`�lX��UOG��������N-W�LŖ�^�));~��c�ܮ�ܡ�-<z%wP�$��r���o̴G�C���)�j�j�6}�fK��=��U�u�g��!�&�I+մ'�_�&l���m�m���n쓨�XïV�k�[� -�y�]� -��JE� -o���#b$�b�m�M4�b�>;K� �0�q���_h�1�7=�NV�y�����q���՝�vuҽdI��%Y�%c�-��t����-Ʀ��!�G��)CB��t 3��tB�RO��0��ђL:qS�4ӡ��Z����c�n�i���~>�폛�&<�����TI+ -r,�f�ڃ[/|k�z;;x�x��㽛z�#ƶ���u����C?�~z��?^�� ��l�)�uQ(�]�%H#��R�Ĥ�G�(,¾��2�߲�� _����;�=���B�����/2ҋ�Ş��5��/�������p�f�R������g�f�o����d�m��Fg:�6�i�~%��6�M��rT��Gc�G᷐ �4l����*]0�U�Ʃ�`�9Z�t�Ьz�T���C}�d�;2�-&��*U���]?������5�;J�C+V�{�k��l�=�ʴiۆ��>|��ꡇ��W�_�q��?�zM�fLwh�$��{-(��ԀV�tAZk�v���ٔ����j��Im��S�y�������W毅{.���dA�&��f�A���]_:�־��������;mf;�)`s�ʁa�"�D]l�EF���u�����<�>���P�{Sj�#���r�$��8����k?�б��Ȫ��_��l�5Sa)��e7���D�{W�|����4����EZl�kF�Pb`�I1�&f!�Ř��c[U[�����6�w�U����)U�;��R���tZƤ(��Q H�zl��S섭�C6�=͊M��eҳ猛0�f���D��T}8V�n��n����]�1��G�[�&dU�z\�ZZ��㍑C�%�7Y���r�j(��d=hBR$����K��bm��q;i�����11��"ţ#�d�e~t~�+���&o -��{J~1� ��p v0��u�(芿��� �q�����6����Z��c�}��f���T��1m���ߢ����' �I��R� ��ylw�����)K[|K|��-�o�%�����v�>�E����U� �p�oEc�T[Y_J�u��2 B������1r,לS�a -vNͅ~G��Ur�3iJ��$M��\�v�e�s���zl�?LE3*K��J&s���<�A��>�� -[��bp<��9�x@@��FҀ��`�S2�\�ް��[�JG~�Ǣ�R�u��� -�?P��9�(���qq뚵�*�v_|�q���כ֝k�� -�3k�������33sq��[p�wq�ڱaWQ���S�V��Ik���L�{}*���_�����;-2�O�`�N�}�6��}�xzӭQ����C�I�Ш4YD)BЪ p���ϵq˸nn'�z���r}\?g�v����-�7M�A���L�[#�PH��J&���<�r�f@%홰l7J�$�c�.)ٸ���I5����4n�~4o�d_�6�{J�ۘ��5w�(p�sg���SBDAՑ -�(V쩤 -#����І��t@�����!��9�s�;��b��u�e�}��a7�~�$��� �&���m|L4�Y���!��܌d��VD]�̳<eF�+/��)�XO��\!bќ@9s�$'S���s4J���iӶלx�Ĥ+��]C��=S7�i�TEeZ�]Z眪`!�U��f�\�)^�xc@�����+|t�������)�}��cJ��A���~2^�A:�B1��(�d�#3�L4��^�����J���Wᕤ��ͦ����K��N����8�#����A�_���)!�%.� q%��P�auőbu -��JV&v� 0!�S�!}����y���#� ;R�B��uwc�OC�I�jb靎�H�!˽?K6�ֆZ�Zݮ��V#���~,_rμz֝��ՓKs*6�ɧ�@k!,W)=W��r~�]��@Q����L�%&:�q���@[��1���+��c�$�a�)&�^�-o�M��?q�0%y}y���DR�Y��ك5�ec�`��W$��윗�X|ފ����@W���jMuf���7X&�ur�2[��,�����r]��Y��_�8n�� n���bLiT*+���^��0|�c9$�������4��w���ߕ��W1�,��� �-�@$Y�����%xzx������G2�9YQ�,ggY�F��j�[�6^�$���u�>YE� �0�(6+� cR����g,�"�6��U�q�_�H�s��졕�X�B+���=��A\E�0$�dC�ab cpB8L.~8 -�*;��G����`�r�CH�)RN�9���B����r8N��G��c{��~�f���^���m�d��Vݪrj��eK�6���^����l��I�8_qR';��L�$Qr����m���m!�u$�!��@�w���a&+(�D����`�C3�84����-G��v�%@ߎ_����B���R�j]-G��v!~ᘣ�$��-G��,Lh�s�Z��%���!=��-D���}POO$�t�����J��_�`�x1�g�8dZP���/sY8�.�Y���,�y"�]Y,��rEi��<qxrF���ߩ�8t$6p�p�%�W������� ]~�2���O1�u�?c��a�$z~��3>ʶ�g�.����<şr������r8��Qs�� o#_��rsAF��K�ԾE�I��aUޓ�i��_�?Se\�L��9� �����w+IW%��2r6UeN1$^��d���"5B �D��gU��έ(�$�GyC�(��$�,u��/�ݼ�Ŗ�H�m����s|�N������Dg9{���H�[�Z�k����O���H*�"/g�Ś�����q`��(4&�4���X2��<�R�,������v&�c���%�~�Au%jV��SUc�:�ЃD'_������e��K�o��>���= -�؝�MUwc��y2�+a����n��rȎ~�Ot�o���{�~D�l�F�����hzU�Y$)Ej�R��h��r����]f��˳�\�Z��ȿ�ntnro�lWw;��{\������o'�'��~���:j�q���!(� 2��� -��Ot #$KnY�\��(2���u�~Z��O�Q:yPw٦��[�l�&]l�cR3J��t��s%v���m� -�M�ڕ�B�G�����r=H9���:L+ѫ(��#W���X����� |,���b]���TK�xG¡��H�ȓ��o��AZ������,)���p�X�|��rgbI�?]E,/�cǃ-��^q?^��,̔c_8�ai~^�G��S -*z�WǞ=l�rW�c2£�����E���{G���2?�q�^D?kd���Q�c����̪F�9o�(�I���i{6 -�4,���Yd�!�ی�I����j��.�d3� l_#ۅ]�2Bs��BR,����=�q��6<�w��v��A�� I!Bq��w�vg���n�RM�Q��&����)���w5��-Ѷjk����rH��8p���l�&*��V�&���#�i���5�0;��d�@*0�3��t��0?���I��ꙤYf$<;=���l��#Y�E" � -�Nu6��pc8�o�D���e1��l�kQ7"��`W�~l�&�!�ڪ�'L�|�3��-�њ�ϑ?��~�K��6��Vl���9��f�u�N¦�s�d�:db�-�BqI�� -���Hqy��\���n� -r -��%E -��%%���XO�,]�"�i���e/f�#�h�D1���M��479g�$j�M�u�U��c-c��^�'��2V<3\��;@3� ������VL����fS��?Sfwd�@w+]F�v�'j:�O4��-��>��jø�?��nhZ�A#��Cd��vʢ�g�>1�mǁ����yG�c!��g��{˶P� -gA1!j tj!�4���i���� -f�/j������V��e��f�4>����X�y� -�R�F�X,hX��^�7X�&TXܙ^/]�OF�%�/,�t<l�� -ھ+�W3�� -�`˗>��f{�n�һ�Sk��b�v�ý������p�a�5ч�����a�s�z�/��#�% R����0�EB�@�A|�����J���w~�� �>���[�D�-�쭈�����T�9��!o@�@�c,VF�B� -��/(n�"l��8/�x�C9�*�L�@%Z��@ -~o�^����qލ����wLٙD��4�H#�4�H#�4�H#�4�H#�4���P ��8&��l\j�U� -��r{R�1�A��PaQ�J�ƍ/��PY5�u�V��L�>cf��-�k}��}Γs;��_�ٵ�#�`ɣ��?o�{/8UP -��`���/��x=�~ -4Ó����>{�����o��k,O�ρ�=I}��GR�Q�1f���AAJ����%e��Sr�Ϥd�M�S�75O/��~e�?�������������+�6��E�@���ʐ�P -d%�p�"U�3V aϐ�� -��>P0䙁|�''e8X�,F3�1 Ѓ��qW�2���h�2͜ef�$�o�C��z�cu-�����_���Xq���p��i�N -endstream -endobj -293 0 obj -<< -/Type /FontDescriptor -/Ascent 905 -/CapHeight 718 -/Descent -211 -/Flags 96 -/FontBBox [ -517 -325 1082 1025 ] -/FontName /MCECFM+Arial,Italic -/ItalicAngle -15 -/StemV 93.856 -/FontFile2 294 0 R ->> -endobj -294 0 obj -<< /Filter /FlateDecode /Length 13395 /Length1 21724 >> -stream -H��Vyp��}�$_`�HY��d��r�#�T���9R��0��!��)M �C���4($4V`�!@B��ꆒL!)$�4��Pڱ����������������@za%$J�7s�����U`�,��̭��ʲj���A�u�y����P]}F�w��'�-l�]���Z@�3�k�'����絰�� c2�����74n~%�����p����;n��)|�cj}�1d��f����@}͎c�O3��?��� -�]�`�-~hIMh˦��>�}���Ң�.�+YH̿�s��F�7-^d������v=��(�A3`�0���MX���۱�Z������tL�P�YLA��$�3؋R/��@;��Fs=�E<�P�%8,Oʿ�7�K� ��B��!y�Hm���f.l����.���I�1��T�O����q��m�E����l� ��h��ωy�6��l�>)Y�bK-����qܢ8�K'�LU�D�D�V��`$���q4��4�� -�E��V��,RlJ���le��L�=��� -��ۊ��!�#�E�$r��1���+8W����(�2i�L�G��?�!ƉU�Eܗ6��{��!�O�Ey[)R���x3�,6�f�������t �1�Ϭ�8�� -�����[�:v��pG�!.�3��}�M#h<M�ZZH���_�tV<#b�h���`�- -�B�TY��� 26� G�d�6���7���́��L�h.|�a�?�Flb�{��#��3�g.����)��Pʥ�4�J��*����^�u��6�2�{s�ާ��}Ew83�f/�@1H�\�(ub�� ����(�3�#qN\W�m�@&�dރd�,�Se�\,e�|A��|����뗨d+9ʏ���>��K�-����U��;�N�D{�=h����~�!e�Z��/9� F�ً�<a���%*�>�����b���� -���X I��b�0h��/�I�h��7�.��P�9r+�i��$5��QI��+o*Ԡ�U���]�eǞ��fk�x��iCu��k"�EW�Y���c���zd�"��)Vm�-|�ӑDOb>�I��5�7h��&�4u��4�րZ���(���2O�Q�b -�qT�\��tU��t�;�:�G�)������rIN����x�\��ʓЎi�$*��<��)b1��c�Zi�R'��e�Ph5��^�EJ<&�U��8�J���ا4�"z��t<�{�]�[2l�0OE>��t�<"nc�yJΎ��%��rO��P<����1v!��L��uܯ��n��)���5 -s�O�j��h�F���)�jO��x����䤉��;f��������q�=$+s�6ȥ��c2��RS��K��'əػWB|\l��n�"r<�ׯY~C�Ҋ�r-\0!��o�L���1TTL�)�ϒ�ߐ����$�:rsT��텚�Fe>�V���ƍ(<= -+YQ�#.k���`�j�_��eA��/����qZAM\n�q��3d�h�0�L�( R<ya��^앑�z�4��r����@�QZ��f�\�9�ժh��DwTQ3���pDͨ�p�V -缫7�9Q�w'TkՁJ�!喍$7�-4R�_N������<�͐�'u�j���F5���庬wy9���"��l���b�pv�r� -�3��cQ��U#V����~.H�n`F�kzz�a��=�>˧��'3��@�p2�M��մ��ܜ�3�3��މ]@B�G��n^��[P��t��6���P��O�@�Z�����e1^��ZF5�a�[�םy��7l�NM��ˮݸޓ��3��`�Vst7��mf�����>N��rs����Zȩ�ӇR��� -眻\VU壊ce��WQ�������[�wr�Ͷ8+r����o+�w�����_��_O0Ϡ���]��/���U�T����m�X'l7�2��d��D��r�+��-ė`(���G;���í���5����wy���*��_YZ���j]ny���x�t�+Y�xV�����y���u��zu�h3WVi�S���b���V��<�6��6�sA�/��T�q���oD�Zg1Uk!�M�T0F��A���M|���hk[m�U+�֪�T0���k��t�R�،iPgb�̨%ɘ�U������$�ӹ����>Ξ={����aj��~��$��]��-�y��}�зY�L��F�P���F��ڽ��̦mb%މ���V�n�{S���|;my���HwƯ3��`p1�� ����@9�+��粌���H�of�'��t����@}�q�fZ#�G=e�\�(�O@�cV%墽��6 -�g|?���\����M{� �>�z+ړ!' -xz�����"�D���c�"�\`6��>�r���E���ð�X5�� -!��m���IlK|���zl5�mC��ȸs��8��v��+�����9�'���N�u��X������(Ûz���x���c4Ϙ��;C�s4��� ;�b��BZ���|�܋y���2�W��~�F��k#}�v҆_ѫZ�d�����/vC�b���8�Rr��Tmx��A;�m�G��^C�a��p%�N�z���eX��m��.��!g2�< -�A�|�"����\?����U?�q�iF�oC`�P~��}%�\�T>����Q�0F8X�'����W���_�|����J��Ӕ��;#L��9��]�nZ -T�0����,���w�}&�ʿ��Z�օ��>b�{DBw�d�w��̚�F����>��d������D�o�Յ~O+n�y_/2�S�E�����]C{Q�e,�|�g�a�� -��Tm��Y�qKxoZ3�ĩ��p�Y�.�M�A�6�蒲g���h��7�iV�LG�*�D���p�:3�}����@;aV�,ԛ���~�Ed��e@�3Plr��=�b,����2=4ܨ�T��Q?�O5?���54�h��2�iwC�H��Z� Z�`�����6��� �5�9�|Jq��x ��8>�������}.�G(�H�?o�S����@n�p�g�[߃���Fp�9�q��8�v�����|��{R���1� -��_��������/�X��>����z��ѿM�V.�k����}_ -��'ݖ@>M�R��[�y�L"Gųw)Gśw)Q�Q������Y���m�{���B���h̢��z���;� -��F�T���?s��n#�D}��A����Y�,|��>��3ߧW��T��c����[o�y{4w��� -�c>{g��d���ߦs�~��M�ͣ��`���t5w�[ʲ�lw�q� -�hԜens���m�|�m�������W@�3)��Ǻ��m���� ��ݣ*_�!�%R��|k�����r��G2���zܻ�)s�G�]1�>�zo�G�=x��{br|_��UAK��h�q���g0~(�ꭸG����@���-�_A̅��2���=�=emU�e(��RD/�Q���RK&;��*O�������H -�?���;}�[�� ����VitG[4�\c9=kdS�>q�3��i��F[�hr������Iq -y�}�W�}/�P���|�K�ާ1�&��1��*j4�T�]�?�f!�c���.�})vߢ!�8CMz65Y��-��A~>�O�j^;(]��Yˤb}��~�z�m�Bא���S��]�Sz�\��1�ZA������v��p��1�L+8/X%�y'����Ke�y��- -؏q��-h�� `�h[�wf�cܿ�-�腻�SK�6�>����7�VOt�"�ɏ���u�2`=0 ?_�ȯ��p � ��˘s�)��׀V`+�s>F���b���;�5�w�{>�W��z�G�6��{��y~�����{�����}�˥_�3�I���R������V��$�Y@��G�Y�R���ST;irr��G�շg��;D�9b���Rx\EmF1W�&������\��U���\F������+j���O����v�~�Wr�amF���J���Ͳ�l�5m�h����,Ue�*SU9X�с�&^]��U�G��U���,U�W�/.�ׂ_3~M��K ���I1Rx�G�"BD�< ��D�g�rP�X���=,�X?^&}���p�!4r�GQlg�����\ն2�"|"�&~�L���y�a�f���_$���8�I�U���>�]#�-}���פO�.�<+�ȃ�K9A���0js��I��Q���iU�h�Z>���b9W>����y"e&����iq>^eR�Z�a 1�d:��}B��K����&��}r�\$I�\����u��O~�ݯVɐS�"�"�{O��?�ޝ�������Ѷw��j{�l�`�;��������N��tr::DZ��r���O<V�2JC�c4.5~��?�p4�@�]�L-s��Efu]e��U5�;>��?�W}lS���/??<;N��8�qL� 1I?Bh��P�S�1���������TXQ�2�)����2�CFj�uC�`l�6F������N]�)� ~ٹ/B�I{��}����=�s~����V��H����}e�/��֞�&�K7h�iiŚ�a��'њ�{3@V�d���v���%=g1�Ż��Y?�{2I��$| �"Wck�iz����iO�+���,��H���qx� -��/�l��I�H�k��d ٞ>�Z�sN��Z���I�%{�rs�T�s���iN&�15&e��N�q�I�����C��.b�PvS�����HQ� \)�d� -�!��)5q�ޏ�ᆳ����H�ὲ&&;u�t܄� M�JЄ����ǐ�<���ʜ��ǘ��z�������x�I�Z60������䒵S}��i��w{������gDђik�)�D�H"���8T����& � ���Ǘ58n�mh��/U.�\�.�z�%���K����,�_R���9�����lh~�ݜ?��}iOWt��]�{�%�%��6'�V�Ц(-��sS�*4ƙ���d9�h�.�˃Ѐ.$��� -N4=�}�Y��?��K�m��{�1�tN��@��9b��� �Q`�)�`Ɉ���{�\�S�w��$���6sk®��)l���D�;7�� ��X��4��N� -q�z�9�8頒JܶNj�B���#�����Z��ƀO��w������ͭ�PW��P�P'Z�@�Ы�V����x�e��=����7{��0�mQ�0�ɃF����� -V8�8J�:8������6[��i5��5��˘�Rc̍\މ�]*�R����~u����b�f�q��k��vﵝp �܀6X�^���{��H�(F�K+��lǨ����%<|� 7�bTP ��k�gh�>�����$fn��%nRB�䪾�<��b��i����r��_ -�D��l�R- J �#(x -���Y�����7���@8�&o�%Cu����-/�-�N_V���zi@f�cI�l�����ݭ�eP������q�:���:� -t�{4U��� -�w�=g��r$��0�q���:���{�*m�z��\no���kZ�k����#JEE؊4�ϋ��G�\��a��H8����=�~O���}{���7N����_�]��cй�*����c�����?�ܚ��5�a덭ܲ�����ࠬv�lyi#j3;yK����##�(�=l�銙{��ኩ,�����1�\��}-�$�V��W���b��lt��@�����J�+��e� -2t��qnsU`N�%�b%�%��&���㩗;P�,Nc�1Oꦚw5b`�ؘ�3����+�H��Ԃ�p-�0&!Ity��j��+��G�l|n\��X�w{� -�yø����ݣ��0&�j`p��_q���'߾�kY��:��r�ySo�d k�'��=��!��W%A�C�P�� -Rռ���0@�҂F5uˌ -K�L�%IwMi�5� �ô�BIV9�YG^#7j�ą=�8�� �T��i���(����jq)���,T���쑕���j���_[����O���_:��5�{�9!� -��ְq���R��w��m�����b��"�ad����B����S]ZO+G�"Xd�b��'* -a�E�LJ��UGb����ʻ����yJ�\�<�Qކ��lS%���%d�M�������YN㩛��l��"� V@{ԋ�\0Z֊�[u���ď{�e���F��1��c�f �2_��erB�B��[�:�^��D�1,��R���;�#*��GA�:��>�W�m},���[Y�7��7S�$БÁ:~Se�MFR��'(��(>\$�LA-w6�S�q\d"�:�Vy,�2�GYoDfyK�U�p�)����/b��,Oa�r\�"���2�5�Ftw$Aúf̌�x�ü���?��Ô���,N1��jn -���P�Pw��@��o�;6O��A�O��-*�8u� -g��[����]"P8��Q��<�b�^����b�F�J�l��G�"��6٨�&+J��~����$<�=<�g�R���W)��n@��8�����0� -��;�K�4����=�*M�'!�"4��溃eXP��2=�|^�{T}q��}����꿜�� ��ѮuU�������CK�-[on�wA��� j��9��Z�X����*X~J>/�Q�T�z�*�b�l� T��!�J��8���}��չ���-ْ�95�����H0���Ԙ��ؘ#�����H8R����N�����:�iJ'ʹ3�f��4��N�2a���r�o�Ɛ�茵��4��}��}��5y��Y��.k���$�<2�]�L��Z�a`7.�MU���:�<�T^���}~���=I#�Y��X�KF�����YCB����rh&�A�"3 E}�0�^���4�<��z�gx�<|j�(��9 -�/�(��Y�Y��O>N�p��� -U?��~�rҍ���*�w��R���Ep��-� -h�� -M��8��+��M�v�����B�(�J�8k��ż��N��x��l�Q�lvY�$E�)z!V蛙w��D���y��yb1� � -~�U�I+H�f�¤�l]xP�YM�l�@]+}��j�c�U��'�0mj!2�h�DQ�҈�w$0�U��w���~Sg6\$���h@�E'���nUkw��ϱ/���;�4�Ч -�C5���X�?ק�c�-�B__�4zѨ� -��r��tT�$�q��㉿�φ�b��ُ.g�.�=��?�Y�� -S38���v���^�Z301�j�CG�I� -�R�LV�*{d� �DE$�_!v�(�]�Ka���ij-־.|A-p�Oq���k�Z9�kS߄��9i�����wEYOo�}T���b� �s��ozz��������6�x�`�гxf���&5��f{��S+{��&��O�o�Q���$����v�(����(���K�Y0�f�dYty�n�ǥ��`LqE�n�zp,��,Z��Zd������N�j��ń(�Q��=:h���L��!nG��q:pf� -P��6�ps#w�djĻ����J�|�Ӏ�@��昃�0�}�%a-��;J����D(�����k��>�E��U��?mL?\�����'�؛n���� -��g���37"S�;�fo`��'+SÛ���]���:�#���4�:�R?�!�K�0���x^Ǖ%a�b��q&���1�Ij���(�������� -��y��Y�1��Y:~Iʴ�!L�6K]��v����q���?b1�vF���-V9vlp�V��5̌~�*��,�(~T������#Mj�E��L�5��a�'���� x?�:d4m7����=� -��Z��!�]%?ce �ux}Ұ�o��~��'�7*rZ?�.��u!��Bi(1�d��w2%��B,���3����s�A+F�i(5LC��w�%u��p��D���ɰar)cڸ,�6l()o1�q#�X~$�d��ؗH&��6�b�+tc�"%����� cqgDvu����T�����|��"��W�r ʗ���^���8\���:9��j�Y ���w4&TWkAAЅ!=�5Jn�ӵ0�G�RH�2���?��tb���3,ܑ�I_ ��Q�H5o}�VO�K�:���r(��/��l�x�\�S��^�9�q��7�v-�<ݾ|�b�*���NE�xM������K��_?_U\S����IH֤�=V{��?�c��ACj�/{_>��U��ν��n;WhO�*bs�K� -N�0fd��@�C�L �pA�����9b�� �+ d�E�)$W0 -�����P-�"��Q_�¥��4�@U�Z�g�o9}����W�g ��i�d�r�u��p�XЕ����7�jQс��� -�@��� -��@����f��s뗾8��ly~����Ư�;W�v4�}���Bp��U����K_tԦ�Z������}O�>��0�k�ُ^T�i�ѱ��3x�F��K@���}v���(=k�&���r���4gH�ȉQa�G'�1��b���4XP&�-��\!>3H�"T�M����J[4o���Cd����Y���$��֙)Gi�|���� ��u���'{1���߾�7֬�\�5��)�����kW��~q�ú�eo��w����*�j~DǻQ�ȵ3P�L��^�N0�y�Fk�����G^!q�� �ÍS8l.r.57��ɸ�\��3�s��G!Z9LV��xQ0;��b�P�X?��Z�I� -b��K!6�w�6��i�B�p?��^����sZ�������E-�8\P>�RC �t�đ�7��f�ֳُ�e'�����mW��'��;�}|O�@����5�.i=9������D'l�1��E�b7 -&$H�EQ�PT�D�>�>����#<:��e�L��i_�π�w�߇��<�p�0��xc�� -~_����)Y6��V� -̐��˪�2�#y!Qu�J�(���g�Դh|Z��?r�h�����v��6q���}���;��}���8�؉q�Ò`B���єB'�MÒ@�NCK�2R�0J��h�e�n��D*BD�Y+��W�m�$�L+�Ti���s�f)��_����=-�����\�S�t��aWX@j�, -_��C����<�Q4s���w���O����kvo{��L1�ў��Q��ֆ�]�q����O��������9�s�����ܟ�}ftFxÏ:����� -��g��aAbX����n�G\�#�qN��A85� X!e��`���ۣ0=2�������f$�=`� �xF�rR.���䄛9�|�&q#k���� ��I��T�xN���dE�4 -��H�BЊ7U�/�#L˧G�Gu�����E��T&�b���{����?�*ۻ��]K�S�ibw{¨O��5M�G��;�?�T�g+� �U ��5ѾJ�$>���xJ|��Zg!L���(bRL"� -���b�d�#�GF���^����.�6=��4!h���X��]ź�P��1�mU1?!%'�HH��3f��~�'��h���1UU�B��f� m%-i�%����x��--�n��d%|�\L�{iMA�� �m`�i��d,����-�6'8��6��th�ɜiN�3NbQ֫��iEw�y�H�d�S,I�<��\�ͭmH��ϑ�K��N?w�W�iѪ�6�Z�zWr�����o�M��}u������~�n����̆dÊm��ʎ��\�YlH�㠂V�W�Y属�KD�%��x����m���w��^�س��n�`�D��NU#D�"V�J�dE�d/�*uX -��, �e,�BB���Kc+K˥Vi��B�$ی���fM�{0 -��l@�H��g%5UC�֬x�n�rj��6��<y`پh���dL�}�i -��QK:�my&��J�Cj�[�~�ۡû�K��XS� -�z�����'����:�~���}��pf���+�s�&� -� -4�?��[�\��F0(� -��X3%�L��|�� -�i���8cE@��7��l�2B����g k8\����,pY���8 9d�5f֚?&�FkY���|7�,j�:�����'b}�e� kU��*(�[�3�w'E���ת�9��N���.�s9�O�d9�������g]��r垗����zߞi"[�b��pBir�E��I�X - ��<���������Ƈ�.Q�B���*9GQ�#,����dBb��\dŔ zc�j�WL -�h��n�z�jE?Z����ʄ%���(��њy�"���I�Ix~�v�0�0��C5��Օ\�2>w��)�����a��uoplYL��&h��1Wsx9�Ǎs��\���Q�>���N���a^��89�4���C�@b��ck��֩�\궨��S�&��(��w$� -!J!��&���&��(u�]��r�����#��4E���4�M�t��90��/�3��0Z����/5�X��e� V�������"7���z8r�<<XvV��9S�Fg�g�s{�M�a{�Yi/w.����?�\�+�GK )-�H�\~ -�#zH э�����xE� -�z�����L���ꅴ����?��<͊����@��2$=(6���Nt��#"�6cyZ%Sq8���+����E<��� - -p�ns��aٌ�LP��3��T�N{�vZ)�T*� �yS(��+���� -��hi��[1Ծk���m���Z"�>(ϯh����z6:�N����ݳ��%��J*��~11A�,�+����1�_Up�*�c<]�W�$B��s�b{�4�%�ڷ��ۺl��v2~��6���yV�\��<��uɰ�-㬃1#8c� ��X�*I�� #�ԉ�f�O�Y� -�3�gN�͘ʇ7�l�i뢇A�>,iXL'3�Zu�����KYĩ3Y�S��u��M#���L�>��u�{o���{x�oiݛW�;��� -�[�>��iKT.��?3���+=' -����R�3�� �e��W�7���{ħ2��g}��ɷZ�-�p����Z~o�I�+�Yj��B�c� -- -�/�y�)]��� ś���4 -�^9i=1#{���2�i:N��_�8s��뗺���4���Χ��؟������cw/�ʜ?��g��X�Z}�so -���u��2��%�|nT��c������Y_��������RW��t�}I����#��+��(����Um/>��UdhѼ�x ��i6{�� T��OYv��cSu��CN!���[�I�)2� -8n7�=���4�?)�p��) -��j4�L���\�2�� ƼN���j�����Νٽ3��3�`��ky{iX6�b1�c0��f1�@-����&��";FJc;uKlBB$G�'�Z01�a[�L�M�YnS�*M+Z�?�v鹳�k�n�U��{عgf�.��=�|糃V��D�@��&H��� -g�#�s��L���c���=��=4e���\�ܻ)�+��\w��M��6�|=:O��Xӂ;/k8��x�v�YA+�a�<-��S"o�j�Iz����;1y�|�Wp[�>��6�#2�(k�c���|J��%�B6�(h -*.cJ��:Z����Aa�छ�q�CK\|���2B@&������&V-N1%nc�NO�K[�����/V��)h -e�T�k')x����֊�[}���ݼ�����׳~[��Y��yG�b��\���2�V33aBIg�z&�L$�ҟ��-�����̙l�fp�M��|N����dH>.�BKNfVv���Xd�L3��9Z��`\���4r�'��.��N�D�f3yRK2@3-S�Us��e�!f�)(C��q�kX��1|-����V:����/A9;OnGз�F�� �� ${\�`��g-MyY�7'� �7�^^&�$���]��#�C�rrc�ϯݼpq����W-I?�NE��Ʊ��� -�����_a�^�oˑ��_�t�?��7�bw��'�O����_�+wZx���J�2�S&l/:ϋ6\��''P -&HW�C.�[����,ہ���CN.u�-s\�u@�� -���DI�)�`U�Q��s��Lj%t�M��� -������hU5�T¢'�l쳼,�����7g��I��R_�4ed4m4����S���ª�����u�G�ޓX8;r2:�_�d���B\ -�^`�X�Nuq\~����A���"ŧ,O'��ǥ�7L4O -$����dS1��A{��Oғ�5ݥ> ǭ�ꢥ@�ET�D�6�+��'KBJ��SAuG4F{Jr�ZǪ�]�����n&2�1���T����� �'�n�-�H��寙%m����G�~��Ȅ�0$4)F�c��g֦���:>���[.�j`�O`YQ0z�l��/��ut�{��������Һf{�����}��m�嫪�z$x�y��+�a�z)���#K���XN���G-��I��M� i|�T��~*�(`o��c�C��5���*��$h."\��1هG1�W�+��;����~ұ�6]�`e��%T����"��2\ԖI�N����^hW��x�|�,�^�z��i�Ic?(��?�q���N�V*�,!�$�٪�n�P���(�6��$�Ĕ(��7�\f��j��*�R�f�$�D%�qB�Vm�lRD�W��( �����EߒJ�!y�]8�� T���?���1�2�eg��+`l 6�j�\Y�*.{pj�%َo�m��Ğ�Xϛ����(_����ß6]�G0��Dsw���1|����D7�&���.��n �LaS�,��{�^F�C��E�W�nK���� [6��y�\}������4� -�ϰW�m��m��m���ƨq�k���N�� }� �Y����W�z��*.��C_@~T�(��כ���Ұ�q[��u'�~8҆�W>��O���k:HR�l�O@�֣m���V�eF_�:��VWa����M���ݨ�����ϖ@��@���g���'�;9J�<�΄o��N��"�s��΄O��7>�X�7���������������a���w��=BM�����"T���X��d{�#���������sU5r.�h7N��N��=����7��ݭͨ����wƿO5���g~J�d"qJp��G;��O�N�կ�_�g�t��>��v�z���V\��O��� -endstream -endobj -295 0 obj -<< -/D [ 1505 0 R /XYZ null null null ] ->> -endobj -296 0 obj -<< -/D [ 1505 0 R /XYZ null null null ] ->> -endobj -297 0 obj -<< -/D [ 1505 0 R /XYZ 70 712 null ] ->> -endobj -298 0 obj -<< -/D [ 1505 0 R /XYZ 70 600 null ] ->> -endobj -299 0 obj -<< -/D [ 1505 0 R /XYZ 70 580 null ] ->> -endobj -300 0 obj -<< -/D [ 1505 0 R /XYZ 70 559 null ] ->> -endobj -301 0 obj -<< -/D [ 1505 0 R /XYZ 70 540 null ] ->> -endobj -302 0 obj -<< -/D [ 1505 0 R /XYZ 70 520 null ] ->> -endobj -303 0 obj -<< -/D [ 1505 0 R /XYZ 70 499 null ] ->> -endobj -304 0 obj -<< -/D [ 1505 0 R /XYZ 70 480 null ] ->> -endobj -305 0 obj -<< -/D [ 1505 0 R /XYZ 70 458 null ] ->> -endobj -306 0 obj -<< -/D [ 1505 0 R /XYZ 70 441 null ] ->> -endobj -307 0 obj -<< -/D [ 1505 0 R /XYZ 70 424 null ] ->> -endobj -308 0 obj -<< -/D [ 1505 0 R /XYZ 70 409 null ] ->> -endobj -309 0 obj -<< -/D [ 1505 0 R /XYZ 70 388 null ] ->> -endobj -310 0 obj -<< -/D [ 1505 0 R /XYZ 70 369 null ] ->> -endobj -311 0 obj -<< -/D [ 1505 0 R /XYZ 70 349 null ] ->> -endobj -312 0 obj -<< -/D [ 1505 0 R /XYZ 70 328 null ] ->> -endobj -313 0 obj -<< -/D [ 1505 0 R /XYZ 70 309 null ] ->> -endobj -314 0 obj -<< -/D [ 1505 0 R /XYZ 70 289 null ] ->> -endobj -315 0 obj -<< -/D [ 1505 0 R /XYZ 70 268 null ] ->> -endobj -316 0 obj -<< -/D [ 1505 0 R /XYZ 70 210 null ] ->> -endobj -317 0 obj -<< -/D [ 1505 0 R /XYZ 70 119 null ] ->> -endobj -318 0 obj -<< -/D [ 1505 0 R /XYZ 70 109 null ] ->> -endobj -319 0 obj -<< -/D [ 1 0 R /XYZ null null null ] ->> -endobj -320 0 obj -<< -/D [ 1 0 R /XYZ 61 47 null ] ->> -endobj -321 0 obj -<< -/D [ 1 0 R /XYZ 61 737 null ] ->> -endobj -322 0 obj -<< -/D [ 1 0 R /XYZ 192 34 null ] ->> -endobj -323 0 obj -<< -/D [ 1 0 R /XYZ 61 687 null ] ->> -endobj -324 0 obj -<< -/D [ 1 0 R /XYZ 61 675 null ] ->> -endobj -325 0 obj -<< -/D [ 1 0 R /XYZ 61 663 null ] ->> -endobj -326 0 obj -<< -/D [ 1 0 R /XYZ 61 651 null ] ->> -endobj -327 0 obj -<< -/D [ 1 0 R /XYZ 61 639 null ] ->> -endobj -328 0 obj -<< -/D [ 1 0 R /XYZ 61 627 null ] ->> -endobj -329 0 obj -<< -/D [ 1 0 R /XYZ 61 615 null ] ->> -endobj -330 0 obj -<< -/D [ 1 0 R /XYZ 61 603 null ] ->> -endobj -331 0 obj -<< -/D [ 1 0 R /XYZ 61 591 null ] ->> -endobj -332 0 obj -<< -/D [ 1 0 R /XYZ 61 579 null ] ->> -endobj -333 0 obj -<< -/D [ 1 0 R /XYZ 61 567 null ] ->> -endobj -334 0 obj -<< -/D [ 1 0 R /XYZ 61 555 null ] ->> -endobj -335 0 obj -<< -/D [ 1 0 R /XYZ 61 543 null ] ->> -endobj -336 0 obj -<< -/D [ 1 0 R /XYZ 61 531 null ] ->> -endobj -337 0 obj -<< -/D [ 1 0 R /XYZ 61 519 null ] ->> -endobj -338 0 obj -<< -/D [ 1 0 R /XYZ 61 507 null ] ->> -endobj -339 0 obj -<< -/D [ 1 0 R /XYZ 61 495 null ] ->> -endobj -340 0 obj -<< -/D [ 1 0 R /XYZ 61 459 null ] ->> -endobj -341 0 obj -<< -/D [ 1 0 R /XYZ 61 447 null ] ->> -endobj -342 0 obj -<< -/D [ 1 0 R /XYZ 61 435 null ] ->> -endobj -343 0 obj -<< -/D [ 1 0 R /XYZ 61 423 null ] ->> -endobj -344 0 obj -<< -/D [ 1 0 R /XYZ 61 411 null ] ->> -endobj -345 0 obj -<< -/D [ 1 0 R /XYZ 61 351 null ] ->> -endobj -346 0 obj -<< -/D [ 1 0 R /XYZ 61 339 null ] ->> -endobj -347 0 obj -<< -/D [ 1 0 R /XYZ 61 231 null ] ->> -endobj -348 0 obj -<< -/D [ 1 0 R /XYZ 61 219 null ] ->> -endobj -349 0 obj -<< -/D [ 1 0 R /XYZ 61 207 null ] ->> -endobj -350 0 obj -<< -/D [ 1 0 R /XYZ 61 195 null ] ->> -endobj -351 0 obj -<< -/D [ 1 0 R /XYZ 61 183 null ] ->> -endobj -352 0 obj -<< -/D [ 1 0 R /XYZ 61 123 null ] ->> -endobj -353 0 obj -<< -/D [ 1 0 R /XYZ 61 111 null ] ->> -endobj -354 0 obj -<< -/D [ 1 0 R /XYZ 61 99 null ] ->> -endobj -355 0 obj -<< -/D [ 1 0 R /XYZ 61 87 null ] ->> -endobj -356 0 obj -<< -/D [ 5 0 R /XYZ null null null ] ->> -endobj -357 0 obj -<< -/D [ 5 0 R /XYZ 61 47 null ] ->> -endobj -358 0 obj -<< -/D [ 5 0 R /XYZ 61 737 null ] ->> -endobj -359 0 obj -<< -/D [ 5 0 R /XYZ 192 34 null ] ->> -endobj -360 0 obj -<< -/D [ 5 0 R /XYZ 61 687 null ] ->> -endobj -361 0 obj -<< -/D [ 5 0 R /XYZ 61 675 null ] ->> -endobj -362 0 obj -<< -/D [ 5 0 R /XYZ 61 663 null ] ->> -endobj -363 0 obj -<< -/D [ 5 0 R /XYZ 61 603 null ] ->> -endobj -364 0 obj -<< -/D [ 5 0 R /XYZ 61 591 null ] ->> -endobj -365 0 obj -<< -/D [ 5 0 R /XYZ 61 579 null ] ->> -endobj -366 0 obj -<< -/D [ 5 0 R /XYZ 61 567 null ] ->> -endobj -367 0 obj -<< -/D [ 5 0 R /XYZ 61 555 null ] ->> -endobj -368 0 obj -<< -/D [ 5 0 R /XYZ 61 495 null ] ->> -endobj -369 0 obj -<< -/D [ 5 0 R /XYZ 61 423 null ] ->> -endobj -370 0 obj -<< -/D [ 5 0 R /XYZ 61 411 null ] ->> -endobj -371 0 obj -<< -/D [ 5 0 R /XYZ 61 387 null ] ->> -endobj -372 0 obj -<< -/D [ 5 0 R /XYZ 61 375 null ] ->> -endobj -373 0 obj -<< -/D [ 5 0 R /XYZ 61 363 null ] ->> -endobj -374 0 obj -<< -/D [ 5 0 R /XYZ 61 351 null ] ->> -endobj -375 0 obj -<< -/D [ 5 0 R /XYZ 61 339 null ] ->> -endobj -376 0 obj -<< -/D [ 5 0 R /XYZ 61 267 null ] ->> -endobj -377 0 obj -<< -/D [ 5 0 R /XYZ 61 255 null ] ->> -endobj -378 0 obj -<< -/D [ 5 0 R /XYZ 61 243 null ] ->> -endobj -379 0 obj -<< -/D [ 5 0 R /XYZ 61 231 null ] ->> -endobj -380 0 obj -<< -/D [ 5 0 R /XYZ 61 219 null ] ->> -endobj -381 0 obj -<< -/D [ 5 0 R /XYZ 61 123 null ] ->> -endobj -382 0 obj -<< -/D [ 5 0 R /XYZ 61 111 null ] ->> -endobj -383 0 obj -<< -/D [ 5 0 R /XYZ 61 99 null ] ->> -endobj -384 0 obj -<< -/D [ 5 0 R /XYZ 61 87 null ] ->> -endobj -385 0 obj -<< -/D [ 8 0 R /XYZ null null null ] ->> -endobj -386 0 obj -<< -/D [ 8 0 R /XYZ null null null ] ->> -endobj -387 0 obj -<< -/D [ 8 0 R /XYZ 61 687 null ] ->> -endobj -388 0 obj -<< -/D [ 8 0 R /XYZ 61 675 null ] ->> -endobj -389 0 obj -<< -/D [ 8 0 R /XYZ 61 663 null ] ->> -endobj -390 0 obj -<< -/D [ 8 0 R /XYZ 61 627 null ] ->> -endobj -391 0 obj -<< -/D [ 8 0 R /XYZ 61 615 null ] ->> -endobj -392 0 obj -<< -/D [ 8 0 R /XYZ 61 531 null ] ->> -endobj -393 0 obj -<< -/D [ 8 0 R /XYZ 61 519 null ] ->> -endobj -394 0 obj -<< -/D [ 8 0 R /XYZ 61 507 null ] ->> -endobj -395 0 obj -<< -/D [ 8 0 R /XYZ 61 495 null ] ->> -endobj -396 0 obj -<< -/D [ 8 0 R /XYZ 61 483 null ] ->> -endobj -397 0 obj -<< -/D [ 8 0 R /XYZ 61 447 null ] ->> -endobj -398 0 obj -<< -/D [ 8 0 R /XYZ 61 435 null ] ->> -endobj -399 0 obj -<< -/D [ 8 0 R /XYZ 61 423 null ] ->> -endobj -400 0 obj -<< -/D [ 8 0 R /XYZ 61 411 null ] ->> -endobj -401 0 obj -<< -/D [ 11 0 R /XYZ null null null ] ->> -endobj -402 0 obj -<< -/D [ 11 0 R /XYZ null null null ] ->> -endobj -403 0 obj -<< -/D [ 11 0 R /XYZ 205 479 null ] ->> -endobj -404 0 obj -<< -/D [ 11 0 R /XYZ 232 457 null ] ->> -endobj -405 0 obj -<< -/D [ 11 0 R /XYZ 274 438 null ] ->> -endobj -406 0 obj -<< -/D [ 11 0 R /XYZ 324 423 null ] ->> -endobj -407 0 obj -<< -/D [ 11 0 R /XYZ 274 406 null ] ->> -endobj -408 0 obj -<< -/D [ 11 0 R /XYZ 324 391 null ] ->> -endobj -409 0 obj -<< -/D [ 11 0 R /XYZ 232 371 null ] ->> -endobj -410 0 obj -<< -/D [ 11 0 R /XYZ 274 352 null ] ->> -endobj -411 0 obj -<< -/D [ 11 0 R /XYZ 274 335 null ] ->> -endobj -412 0 obj -<< -/D [ 11 0 R /XYZ 324 320 null ] ->> -endobj -413 0 obj -<< -/D [ 11 0 R /XYZ 324 305 null ] ->> -endobj -414 0 obj -<< -/D [ 11 0 R /XYZ 324 290 null ] ->> -endobj -415 0 obj -<< -/D [ 11 0 R /XYZ 324 275 null ] ->> -endobj -416 0 obj -<< -/D [ 11 0 R /XYZ 324 260 null ] ->> -endobj -417 0 obj -<< -/D [ 11 0 R /XYZ 324 245 null ] ->> -endobj -418 0 obj -<< -/D [ 11 0 R /XYZ 274 228 null ] ->> -endobj -419 0 obj -<< -/D [ 11 0 R /XYZ 324 213 null ] ->> -endobj -420 0 obj -<< -/D [ 11 0 R /XYZ 324 198 null ] ->> -endobj -421 0 obj -<< -/D [ 11 0 R /XYZ 324 183 null ] ->> -endobj -422 0 obj -<< -/D [ 11 0 R /XYZ 324 168 null ] ->> -endobj -423 0 obj -<< -/D [ 11 0 R /XYZ 324 153 null ] ->> -endobj -424 0 obj -<< -/D [ 11 0 R /XYZ 324 138 null ] ->> -endobj -425 0 obj -<< -/D [ 11 0 R /XYZ 324 123 null ] ->> -endobj -426 0 obj -<< -/D [ 11 0 R /XYZ 274 106 null ] ->> -endobj -427 0 obj -<< -/D [ 11 0 R /XYZ 61 47 null ] ->> -endobj -428 0 obj -<< -/D [ 11 0 R /XYZ 192 34 null ] ->> -endobj -429 0 obj -<< -/D [ 11 0 R /XYZ 61 530 null ] ->> -endobj -430 0 obj -<< -/D [ 11 0 R /XYZ 61 471 null ] ->> -endobj -431 0 obj -<< -/D [ 11 0 R /XYZ 61 449 null ] ->> -endobj -432 0 obj -<< -/D [ 11 0 R /XYZ 61 431 null ] ->> -endobj -433 0 obj -<< -/D [ 11 0 R /XYZ 61 416 null ] ->> -endobj -434 0 obj -<< -/D [ 11 0 R /XYZ 61 399 null ] ->> -endobj -435 0 obj -<< -/D [ 11 0 R /XYZ 61 384 null ] ->> -endobj -436 0 obj -<< -/D [ 11 0 R /XYZ 61 363 null ] ->> -endobj -437 0 obj -<< -/D [ 11 0 R /XYZ 61 345 null ] ->> -endobj -438 0 obj -<< -/D [ 11 0 R /XYZ 61 328 null ] ->> -endobj -439 0 obj -<< -/D [ 11 0 R /XYZ 61 313 null ] ->> -endobj -440 0 obj -<< -/D [ 11 0 R /XYZ 61 298 null ] ->> -endobj -441 0 obj -<< -/D [ 11 0 R /XYZ 61 283 null ] ->> -endobj -442 0 obj -<< -/D [ 11 0 R /XYZ 61 268 null ] ->> -endobj -443 0 obj -<< -/D [ 11 0 R /XYZ 61 253 null ] ->> -endobj -444 0 obj -<< -/D [ 11 0 R /XYZ 61 238 null ] ->> -endobj -445 0 obj -<< -/D [ 11 0 R /XYZ 61 221 null ] ->> -endobj -446 0 obj -<< -/D [ 11 0 R /XYZ 61 206 null ] ->> -endobj -447 0 obj -<< -/D [ 11 0 R /XYZ 61 191 null ] ->> -endobj -448 0 obj -<< -/D [ 11 0 R /XYZ 61 176 null ] ->> -endobj -449 0 obj -<< -/D [ 11 0 R /XYZ 61 161 null ] ->> -endobj -450 0 obj -<< -/D [ 11 0 R /XYZ 61 146 null ] ->> -endobj -451 0 obj -<< -/D [ 11 0 R /XYZ 61 131 null ] ->> -endobj -452 0 obj -<< -/D [ 11 0 R /XYZ 61 116 null ] ->> -endobj -453 0 obj -<< -/D [ 11 0 R /XYZ 61 99 null ] ->> -endobj -454 0 obj -<< -/D [ 38 0 R /XYZ null null null ] ->> -endobj -455 0 obj -<< -/D [ 38 0 R /XYZ null null null ] ->> -endobj -456 0 obj -<< -/D [ 38 0 R /XYZ 324 695 null ] ->> -endobj -457 0 obj -<< -/D [ 38 0 R /XYZ 324 680 null ] ->> -endobj -458 0 obj -<< -/D [ 38 0 R /XYZ 61 47 null ] ->> -endobj -459 0 obj -<< -/D [ 38 0 R /XYZ 61 737 null ] ->> -endobj -460 0 obj -<< -/D [ 38 0 R /XYZ 192 34 null ] ->> -endobj -461 0 obj -<< -/D [ 38 0 R /XYZ 61 688 null ] ->> -endobj -462 0 obj -<< -/D [ 38 0 R /XYZ 61 673 null ] ->> -endobj -463 0 obj -<< -/D [ 43 0 R /XYZ null null null ] ->> -endobj -464 0 obj -<< -/D [ 43 0 R /XYZ null null null ] ->> -endobj -465 0 obj -<< -/D [ 43 0 R /XYZ 221 452 null ] ->> -endobj -466 0 obj -<< -/D [ 43 0 R /XYZ 484 110 null ] ->> -endobj -467 0 obj -<< -/D [ 43 0 R /XYZ 61 47 null ] ->> -endobj -468 0 obj -<< -/D [ 43 0 R /XYZ 192 34 null ] ->> -endobj -469 0 obj -<< -/D [ 43 0 R /XYZ 61 530 null ] ->> -endobj -470 0 obj -<< -/D [ 43 0 R /XYZ 61 472 null ] ->> -endobj -471 0 obj -<< -/D [ 43 0 R /XYZ 61 446 null ] ->> -endobj -472 0 obj -<< -/D [ 43 0 R /XYZ 61 314 null ] ->> -endobj -473 0 obj -<< -/D [ 43 0 R /XYZ 61 260 null ] ->> -endobj -474 0 obj -<< -/D [ 43 0 R /XYZ 61 233 null ] ->> -endobj -475 0 obj -<< -/D [ 43 0 R /XYZ 61 167 null ] ->> -endobj -476 0 obj -<< -/D [ 43 0 R /XYZ 61 141 null ] ->> -endobj -477 0 obj -<< -/D [ 46 0 R /XYZ null null null ] ->> -endobj -478 0 obj -<< -/D [ 46 0 R /XYZ 227 421 null ] ->> -endobj -479 0 obj -<< -/D [ 46 0 R /XYZ 227 359 null ] ->> -endobj -480 0 obj -<< -/D [ 46 0 R /XYZ 227 657 null ] ->> -endobj -481 0 obj -<< -/D [ 46 0 R /XYZ 227 657 null ] ->> -endobj -482 0 obj -<< -/D [ 46 0 R /XYZ 227 570 null ] ->> -endobj -483 0 obj -<< -/D [ 46 0 R /XYZ 301 570 null ] ->> -endobj -484 0 obj -<< -/D [ 46 0 R /XYZ 227 471 null ] ->> -endobj -485 0 obj -<< -/D [ 46 0 R /XYZ 227 471 null ] ->> -endobj -486 0 obj -<< -/D [ 46 0 R /XYZ 61 47 null ] ->> -endobj -487 0 obj -<< -/D [ 46 0 R /XYZ 61 737 null ] ->> -endobj -488 0 obj -<< -/D [ 46 0 R /XYZ 192 34 null ] ->> -endobj -489 0 obj -<< -/D [ 46 0 R /XYZ 61 650 null ] ->> -endobj -490 0 obj -<< -/D [ 46 0 R /XYZ 61 563 null ] ->> -endobj -491 0 obj -<< -/D [ 46 0 R /XYZ 61 464 null ] ->> -endobj -492 0 obj -<< -/D [ 46 0 R /XYZ 61 414 null ] ->> -endobj -493 0 obj -<< -/D [ 46 0 R /XYZ 61 352 null ] ->> -endobj -494 0 obj -<< -/D [ 46 0 R /XYZ 61 295 null ] ->> -endobj -495 0 obj -<< -/D [ 46 0 R /XYZ 61 250 null ] ->> -endobj -496 0 obj -<< -/D [ 46 0 R /XYZ 61 237 null ] ->> -endobj -497 0 obj -<< -/D [ 46 0 R /XYZ 61 224 null ] ->> -endobj -498 0 obj -<< -/D [ 46 0 R /XYZ 61 211 null ] ->> -endobj -499 0 obj -<< -/D [ 46 0 R /XYZ 61 198 null ] ->> -endobj -500 0 obj -<< -/D [ 46 0 R /XYZ 61 185 null ] ->> -endobj -501 0 obj -<< -/D [ 46 0 R /XYZ 61 172 null ] ->> -endobj -502 0 obj -<< -/D [ 46 0 R /XYZ 61 159 null ] ->> -endobj -503 0 obj -<< -/D [ 46 0 R /XYZ 61 146 null ] ->> -endobj -504 0 obj -<< -/D [ 49 0 R /XYZ null null null ] ->> -endobj -505 0 obj -<< -/D [ 49 0 R /XYZ 61 47 null ] ->> -endobj -506 0 obj -<< -/D [ 49 0 R /XYZ 61 737 null ] ->> -endobj -507 0 obj -<< -/D [ 49 0 R /XYZ 192 34 null ] ->> -endobj -508 0 obj -<< -/D [ 49 0 R /XYZ 61 689 null ] ->> -endobj -509 0 obj -<< -/D [ 49 0 R /XYZ 61 662 null ] ->> -endobj -510 0 obj -<< -/D [ 49 0 R /XYZ 61 617 null ] ->> -endobj -511 0 obj -<< -/D [ 49 0 R /XYZ 61 584 null ] ->> -endobj -512 0 obj -<< -/D [ 49 0 R /XYZ 61 564 null ] ->> -endobj -513 0 obj -<< -/D [ 49 0 R /XYZ 61 543 null ] ->> -endobj -514 0 obj -<< -/D [ 49 0 R /XYZ 61 502 null ] ->> -endobj -515 0 obj -<< -/D [ 49 0 R /XYZ 61 476 null ] ->> -endobj -516 0 obj -<< -/D [ 49 0 R /XYZ 61 457 null ] ->> -endobj -517 0 obj -<< -/D [ 49 0 R /XYZ 61 439 null ] ->> -endobj -518 0 obj -<< -/D [ 49 0 R /XYZ 61 420 null ] ->> -endobj -519 0 obj -<< -/D [ 49 0 R /XYZ 61 402 null ] ->> -endobj -520 0 obj -<< -/D [ 49 0 R /XYZ 61 384 null ] ->> -endobj -521 0 obj -<< -/D [ 49 0 R /XYZ 61 365 null ] ->> -endobj -522 0 obj -<< -/D [ 49 0 R /XYZ 61 347 null ] ->> -endobj -523 0 obj -<< -/D [ 49 0 R /XYZ 61 328 null ] ->> -endobj -524 0 obj -<< -/D [ 49 0 R /XYZ 61 310 null ] ->> -endobj -525 0 obj -<< -/D [ 49 0 R /XYZ 61 292 null ] ->> -endobj -526 0 obj -<< -/D [ 49 0 R /XYZ 61 271 null ] ->> -endobj -527 0 obj -<< -/D [ 49 0 R /XYZ 61 253 null ] ->> -endobj -528 0 obj -<< -/D [ 49 0 R /XYZ 61 234 null ] ->> -endobj -529 0 obj -<< -/D [ 49 0 R /XYZ 61 216 null ] ->> -endobj -530 0 obj -<< -/D [ 49 0 R /XYZ 61 198 null ] ->> -endobj -531 0 obj -<< -/D [ 49 0 R /XYZ 61 185 null ] ->> -endobj -532 0 obj -<< -/D [ 52 0 R /XYZ null null null ] ->> -endobj -533 0 obj -<< -/D [ 52 0 R /XYZ null null null ] ->> -endobj -534 0 obj -<< -/D [ 55 0 R /XYZ null null null ] ->> -endobj -535 0 obj -<< -/D [ 55 0 R /XYZ 105 482 null ] ->> -endobj -536 0 obj -<< -/D [ 55 0 R /XYZ 105 482 null ] ->> -endobj -537 0 obj -<< -/D [ 55 0 R /XYZ 105 298 null ] ->> -endobj -538 0 obj -<< -/D [ 55 0 R /XYZ 105 298 null ] ->> -endobj -539 0 obj -<< -/D [ 55 0 R /XYZ 115 298 null ] ->> -endobj -540 0 obj -<< -/D [ 55 0 R /XYZ 168 263 null ] ->> -endobj -541 0 obj -<< -/D [ 55 0 R /XYZ 61 47 null ] ->> -endobj -542 0 obj -<< -/D [ 55 0 R /XYZ 192 34 null ] ->> -endobj -543 0 obj -<< -/D [ 55 0 R /XYZ 61 530 null ] ->> -endobj -544 0 obj -<< -/D [ 55 0 R /XYZ 61 534 null ] ->> -endobj -545 0 obj -<< -/D [ 55 0 R /XYZ 61 472 null ] ->> -endobj -546 0 obj -<< -/D [ 55 0 R /XYZ 61 437 null ] ->> -endobj -547 0 obj -<< -/D [ 55 0 R /XYZ 61 412 null ] ->> -endobj -548 0 obj -<< -/D [ 55 0 R /XYZ 61 391 null ] ->> -endobj -549 0 obj -<< -/D [ 55 0 R /XYZ 61 360 null ] ->> -endobj -550 0 obj -<< -/D [ 55 0 R /XYZ 61 330 null ] ->> -endobj -551 0 obj -<< -/D [ 55 0 R /XYZ 61 288 null ] ->> -endobj -552 0 obj -<< -/D [ 55 0 R /XYZ 61 253 null ] ->> -endobj -553 0 obj -<< -/D [ 55 0 R /XYZ 61 220 null ] ->> -endobj -554 0 obj -<< -/D [ 55 0 R /XYZ 61 201 null ] ->> -endobj -555 0 obj -<< -/D [ 55 0 R /XYZ 61 148 null ] ->> -endobj -556 0 obj -<< -/D [ 55 0 R /XYZ 61 129 null ] ->> -endobj -557 0 obj -<< -/D [ 62 0 R /XYZ null null null ] ->> -endobj -558 0 obj -<< -/D [ 62 0 R /XYZ 61 47 null ] ->> -endobj -559 0 obj -<< -/D [ 62 0 R /XYZ 61 737 null ] ->> -endobj -560 0 obj -<< -/D [ 62 0 R /XYZ 192 34 null ] ->> -endobj -561 0 obj -<< -/D [ 62 0 R /XYZ 61 687 null ] ->> -endobj -562 0 obj -<< -/D [ 65 0 R /XYZ null null null ] ->> -endobj -563 0 obj -<< -/D [ 65 0 R /XYZ 105 312 null ] ->> -endobj -564 0 obj -<< -/D [ 65 0 R /XYZ 105 312 null ] ->> -endobj -565 0 obj -<< -/D [ 65 0 R /XYZ 61 47 null ] ->> -endobj -566 0 obj -<< -/D [ 65 0 R /XYZ 192 34 null ] ->> -endobj -567 0 obj -<< -/D [ 65 0 R /XYZ 61 557 null ] ->> -endobj -568 0 obj -<< -/D [ 65 0 R /XYZ 61 538 null ] ->> -endobj -569 0 obj -<< -/D [ 65 0 R /XYZ 61 472 null ] ->> -endobj -570 0 obj -<< -/D [ 65 0 R /XYZ 61 447 null ] ->> -endobj -571 0 obj -<< -/D [ 65 0 R /XYZ 61 302 null ] ->> -endobj -572 0 obj -<< -/D [ 65 0 R /XYZ 61 275 null ] ->> -endobj -573 0 obj -<< -/D [ 65 0 R /XYZ 61 180 null ] ->> -endobj -574 0 obj -<< -/D [ 65 0 R /XYZ 205 419 null ] ->> -endobj -575 0 obj -<< -/D [ 65 0 R /XYZ 205 406 null ] ->> -endobj -576 0 obj -<< -/D [ 65 0 R /XYZ 457 419 null ] ->> -endobj -577 0 obj -<< -/D [ 65 0 R /XYZ 457 406 null ] ->> -endobj -578 0 obj -<< -/D [ 65 0 R /XYZ 205 387 null ] ->> -endobj -579 0 obj -<< -/D [ 65 0 R /XYZ 457 387 null ] ->> -endobj -580 0 obj -<< -/D [ 65 0 R /XYZ 205 369 null ] ->> -endobj -581 0 obj -<< -/D [ 65 0 R /XYZ 457 369 null ] ->> -endobj -582 0 obj -<< -/D [ 65 0 R /XYZ 205 351 null ] ->> -endobj -583 0 obj -<< -/D [ 65 0 R /XYZ 457 351 null ] ->> -endobj -584 0 obj -<< -/D [ 65 0 R /XYZ 205 333 null ] ->> -endobj -585 0 obj -<< -/D [ 65 0 R /XYZ 457 333 null ] ->> -endobj -586 0 obj -<< -/D [ 76 0 R /XYZ 105 569 null ] ->> -endobj -587 0 obj -<< -/D [ 76 0 R /XYZ 105 569 null ] ->> -endobj -588 0 obj -<< -/D [ 76 0 R /XYZ 130 569 null ] ->> -endobj -589 0 obj -<< -/D [ 76 0 R /XYZ 61 47 null ] ->> -endobj -590 0 obj -<< -/D [ 76 0 R /XYZ 61 737 null ] ->> -endobj -591 0 obj -<< -/D [ 76 0 R /XYZ 192 34 null ] ->> -endobj -592 0 obj -<< -/D [ 76 0 R /XYZ 61 687 null ] ->> -endobj -593 0 obj -<< -/D [ 76 0 R /XYZ 61 559 null ] ->> -endobj -594 0 obj -<< -/D [ 76 0 R /XYZ 61 533 null ] ->> -endobj -595 0 obj -<< -/D [ 76 0 R /XYZ 61 512 null ] ->> -endobj -596 0 obj -<< -/D [ 76 0 R /XYZ 61 492 null ] ->> -endobj -597 0 obj -<< -/D [ 76 0 R /XYZ 61 471 null ] ->> -endobj -598 0 obj -<< -/D [ 76 0 R /XYZ 61 439 null ] ->> -endobj -599 0 obj -<< -/D [ 76 0 R /XYZ 61 418 null ] ->> -endobj -600 0 obj -<< -/D [ 84 0 R /XYZ 168 698 null ] ->> -endobj -601 0 obj -<< -/D [ 84 0 R /XYZ 168 698 null ] ->> -endobj -602 0 obj -<< -/D [ 84 0 R /XYZ 256 302 null ] ->> -endobj -603 0 obj -<< -/D [ 84 0 R /XYZ 256 302 null ] ->> -endobj -604 0 obj -<< -/D [ 84 0 R /XYZ 177 698 null ] ->> -endobj -605 0 obj -<< -/D [ 84 0 R /XYZ 205 278 null ] ->> -endobj -606 0 obj -<< -/D [ 84 0 R /XYZ 61 47 null ] ->> -endobj -607 0 obj -<< -/D [ 84 0 R /XYZ 61 737 null ] ->> -endobj -608 0 obj -<< -/D [ 84 0 R /XYZ 192 34 null ] ->> -endobj -609 0 obj -<< -/D [ 84 0 R /XYZ 61 689 null ] ->> -endobj -610 0 obj -<< -/D [ 84 0 R /XYZ 61 665 null ] ->> -endobj -611 0 obj -<< -/D [ 84 0 R /XYZ 61 296 null ] ->> -endobj -612 0 obj -<< -/D [ 84 0 R /XYZ 61 269 null ] ->> -endobj -613 0 obj -<< -/D [ 84 0 R /XYZ 61 237 null ] ->> -endobj -614 0 obj -<< -/D [ 84 0 R /XYZ 61 218 null ] ->> -endobj -615 0 obj -<< -/D [ 84 0 R /XYZ 61 190 null ] ->> -endobj -616 0 obj -<< -/D [ 84 0 R /XYZ 61 170 null ] ->> -endobj -617 0 obj -<< -/D [ 84 0 R /XYZ 61 142 null ] ->> -endobj -618 0 obj -<< -/D [ 84 0 R /XYZ 61 123 null ] ->> -endobj -619 0 obj -<< -/D [ 87 0 R /XYZ 205 554 null ] ->> -endobj -620 0 obj -<< -/D [ 87 0 R /XYZ 61 688 null ] ->> -endobj -621 0 obj -<< -/D [ 87 0 R /XYZ 61 663 null ] ->> -endobj -622 0 obj -<< -/D [ 87 0 R /XYZ 61 638 null ] ->> -endobj -623 0 obj -<< -/D [ 87 0 R /XYZ 61 622 null ] ->> -endobj -624 0 obj -<< -/D [ 87 0 R /XYZ 61 594 null ] ->> -endobj -625 0 obj -<< -/D [ 87 0 R /XYZ 61 575 null ] ->> -endobj -626 0 obj -<< -/D [ 87 0 R /XYZ 61 545 null ] ->> -endobj -627 0 obj -<< -/D [ 87 0 R /XYZ 61 514 null ] ->> -endobj -628 0 obj -<< -/D [ 87 0 R /XYZ 61 494 null ] ->> -endobj -629 0 obj -<< -/D [ 87 0 R /XYZ 61 466 null ] ->> -endobj -630 0 obj -<< -/D [ 87 0 R /XYZ 61 447 null ] ->> -endobj -631 0 obj -<< -/D [ 87 0 R /XYZ 61 419 null ] ->> -endobj -632 0 obj -<< -/D [ 87 0 R /XYZ 61 400 null ] ->> -endobj -633 0 obj -<< -/D [ 87 0 R /XYZ 61 372 null ] ->> -endobj -634 0 obj -<< -/D [ 87 0 R /XYZ 61 347 null ] ->> -endobj -635 0 obj -<< -/D [ 87 0 R /XYZ 61 331 null ] ->> -endobj -636 0 obj -<< -/D [ 87 0 R /XYZ 61 304 null ] ->> -endobj -637 0 obj -<< -/D [ 87 0 R /XYZ 61 288 null ] ->> -endobj -638 0 obj -<< -/D [ 87 0 R /XYZ 61 260 null ] ->> -endobj -639 0 obj -<< -/D [ 87 0 R /XYZ 61 244 null ] ->> -endobj -640 0 obj -<< -/D [ 87 0 R /XYZ 61 216 null ] ->> -endobj -641 0 obj -<< -/D [ 87 0 R /XYZ 61 192 null ] ->> -endobj -642 0 obj -<< -/D [ 87 0 R /XYZ 61 176 null ] ->> -endobj -643 0 obj -<< -/D [ 87 0 R /XYZ 61 149 null ] ->> -endobj -644 0 obj -<< -/D [ 87 0 R /XYZ 61 133 null ] ->> -endobj -645 0 obj -<< -/D [ 87 0 R /XYZ 61 105 null ] ->> -endobj -646 0 obj -<< -/D [ 87 0 R /XYZ 61 89 null ] ->> -endobj -647 0 obj -<< -/D [ 90 0 R /XYZ null null null ] ->> -endobj -648 0 obj -<< -/D [ 90 0 R /XYZ 205 475 null ] ->> -endobj -649 0 obj -<< -/D [ 90 0 R /XYZ 205 475 null ] ->> -endobj -650 0 obj -<< -/D [ 90 0 R /XYZ 61 687 null ] ->> -endobj -651 0 obj -<< -/D [ 90 0 R /XYZ 61 671 null ] ->> -endobj -652 0 obj -<< -/D [ 90 0 R /XYZ 61 651 null ] ->> -endobj -653 0 obj -<< -/D [ 90 0 R /XYZ 61 623 null ] ->> -endobj -654 0 obj -<< -/D [ 90 0 R /XYZ 61 607 null ] ->> -endobj -655 0 obj -<< -/D [ 90 0 R /XYZ 61 580 null ] ->> -endobj -656 0 obj -<< -/D [ 90 0 R /XYZ 61 564 null ] ->> -endobj -657 0 obj -<< -/D [ 90 0 R /XYZ 61 544 null ] ->> -endobj -658 0 obj -<< -/D [ 90 0 R /XYZ 61 516 null ] ->> -endobj -659 0 obj -<< -/D [ 90 0 R /XYZ 61 496 null ] ->> -endobj -660 0 obj -<< -/D [ 90 0 R /XYZ 61 467 null ] ->> -endobj -661 0 obj -<< -/D [ 90 0 R /XYZ 61 435 null ] ->> -endobj -662 0 obj -<< -/D [ 90 0 R /XYZ 61 416 null ] ->> -endobj -663 0 obj -<< -/D [ 90 0 R /XYZ 61 388 null ] ->> -endobj -664 0 obj -<< -/D [ 90 0 R /XYZ 61 368 null ] ->> -endobj -665 0 obj -<< -/D [ 90 0 R /XYZ 61 340 null ] ->> -endobj -666 0 obj -<< -/D [ 90 0 R /XYZ 61 321 null ] ->> -endobj -667 0 obj -<< -/D [ 90 0 R /XYZ 61 293 null ] ->> -endobj -668 0 obj -<< -/D [ 90 0 R /XYZ 61 269 null ] ->> -endobj -669 0 obj -<< -/D [ 90 0 R /XYZ 61 253 null ] ->> -endobj -670 0 obj -<< -/D [ 90 0 R /XYZ 61 225 null ] ->> -endobj -671 0 obj -<< -/D [ 90 0 R /XYZ 61 209 null ] ->> -endobj -672 0 obj -<< -/D [ 90 0 R /XYZ 61 181 null ] ->> -endobj -673 0 obj -<< -/D [ 90 0 R /XYZ 61 157 null ] ->> -endobj -674 0 obj -<< -/D [ 90 0 R /XYZ 61 141 null ] ->> -endobj -675 0 obj -<< -/D [ 90 0 R /XYZ 61 113 null ] ->> -endobj -676 0 obj -<< -/D [ 90 0 R /XYZ 61 93 null ] ->> -endobj -677 0 obj -<< -/D [ 93 0 R /XYZ null null null ] ->> -endobj -678 0 obj -<< -/D [ 93 0 R /XYZ 61 688 null ] ->> -endobj -679 0 obj -<< -/D [ 93 0 R /XYZ 61 657 null ] ->> -endobj -680 0 obj -<< -/D [ 93 0 R /XYZ 61 637 null ] ->> -endobj -681 0 obj -<< -/D [ 93 0 R /XYZ 61 609 null ] ->> -endobj -682 0 obj -<< -/D [ 93 0 R /XYZ 61 590 null ] ->> -endobj -683 0 obj -<< -/D [ 93 0 R /XYZ 61 562 null ] ->> -endobj -684 0 obj -<< -/D [ 93 0 R /XYZ 61 542 null ] ->> -endobj -685 0 obj -<< -/D [ 93 0 R /XYZ 61 514 null ] ->> -endobj -686 0 obj -<< -/D [ 93 0 R /XYZ 61 490 null ] ->> -endobj -687 0 obj -<< -/D [ 93 0 R /XYZ 61 474 null ] ->> -endobj -688 0 obj -<< -/D [ 93 0 R /XYZ 61 447 null ] ->> -endobj -689 0 obj -<< -/D [ 93 0 R /XYZ 61 431 null ] ->> -endobj -690 0 obj -<< -/D [ 93 0 R /XYZ 61 403 null ] ->> -endobj -691 0 obj -<< -/D [ 93 0 R /XYZ 61 387 null ] ->> -endobj -692 0 obj -<< -/D [ 93 0 R /XYZ 61 360 null ] ->> -endobj -693 0 obj -<< -/D [ 93 0 R /XYZ 61 344 null ] ->> -endobj -694 0 obj -<< -/D [ 93 0 R /XYZ 61 316 null ] ->> -endobj -695 0 obj -<< -/D [ 93 0 R /XYZ 61 300 null ] ->> -endobj -696 0 obj -<< -/D [ 93 0 R /XYZ 61 273 null ] ->> -endobj -697 0 obj -<< -/D [ 93 0 R /XYZ 61 257 null ] ->> -endobj -698 0 obj -<< -/D [ 93 0 R /XYZ 61 229 null ] ->> -endobj -699 0 obj -<< -/D [ 93 0 R /XYZ 61 205 null ] ->> -endobj -700 0 obj -<< -/D [ 93 0 R /XYZ 61 189 null ] ->> -endobj -701 0 obj -<< -/D [ 93 0 R /XYZ 61 168 null ] ->> -endobj -702 0 obj -<< -/D [ 93 0 R /XYZ 61 141 null ] ->> -endobj -703 0 obj -<< -/D [ 93 0 R /XYZ 61 125 null ] ->> -endobj -704 0 obj -<< -/D [ 96 0 R /XYZ null null null ] ->> -endobj -705 0 obj -<< -/D [ 96 0 R /XYZ 205 697 null ] ->> -endobj -706 0 obj -<< -/D [ 96 0 R /XYZ 205 337 null ] ->> -endobj -707 0 obj -<< -/D [ 96 0 R /XYZ 61 688 null ] ->> -endobj -708 0 obj -<< -/D [ 96 0 R /XYZ 61 657 null ] ->> -endobj -709 0 obj -<< -/D [ 96 0 R /XYZ 61 637 null ] ->> -endobj -710 0 obj -<< -/D [ 96 0 R /XYZ 61 609 null ] ->> -endobj -711 0 obj -<< -/D [ 96 0 R /XYZ 61 590 null ] ->> -endobj -712 0 obj -<< -/D [ 96 0 R /XYZ 61 562 null ] ->> -endobj -713 0 obj -<< -/D [ 96 0 R /XYZ 61 542 null ] ->> -endobj -714 0 obj -<< -/D [ 96 0 R /XYZ 61 514 null ] ->> -endobj -715 0 obj -<< -/D [ 96 0 R /XYZ 61 490 null ] ->> -endobj -716 0 obj -<< -/D [ 96 0 R /XYZ 61 474 null ] ->> -endobj -717 0 obj -<< -/D [ 96 0 R /XYZ 61 446 null ] ->> -endobj -718 0 obj -<< -/D [ 96 0 R /XYZ 61 422 null ] ->> -endobj -719 0 obj -<< -/D [ 96 0 R /XYZ 61 406 null ] ->> -endobj -720 0 obj -<< -/D [ 96 0 R /XYZ 61 378 null ] ->> -endobj -721 0 obj -<< -/D [ 96 0 R /XYZ 61 358 null ] ->> -endobj -722 0 obj -<< -/D [ 96 0 R /XYZ 61 329 null ] ->> -endobj -723 0 obj -<< -/D [ 96 0 R /XYZ 61 297 null ] ->> -endobj -724 0 obj -<< -/D [ 96 0 R /XYZ 61 278 null ] ->> -endobj -725 0 obj -<< -/D [ 96 0 R /XYZ 61 250 null ] ->> -endobj -726 0 obj -<< -/D [ 96 0 R /XYZ 61 230 null ] ->> -endobj -727 0 obj -<< -/D [ 96 0 R /XYZ 61 202 null ] ->> -endobj -728 0 obj -<< -/D [ 96 0 R /XYZ 61 183 null ] ->> -endobj -729 0 obj -<< -/D [ 96 0 R /XYZ 61 155 null ] ->> -endobj -730 0 obj -<< -/D [ 96 0 R /XYZ 61 131 null ] ->> -endobj -731 0 obj -<< -/D [ 96 0 R /XYZ 61 115 null ] ->> -endobj -732 0 obj -<< -/D [ 99 0 R /XYZ null null null ] ->> -endobj -733 0 obj -<< -/D [ 99 0 R /XYZ 256 364 null ] ->> -endobj -734 0 obj -<< -/D [ 99 0 R /XYZ 256 364 null ] ->> -endobj -735 0 obj -<< -/D [ 99 0 R /XYZ 168 560 null ] ->> -endobj -736 0 obj -<< -/D [ 99 0 R /XYZ 205 340 null ] ->> -endobj -737 0 obj -<< -/D [ 99 0 R /XYZ 61 688 null ] ->> -endobj -738 0 obj -<< -/D [ 99 0 R /XYZ 61 663 null ] ->> -endobj -739 0 obj -<< -/D [ 99 0 R /XYZ 61 647 null ] ->> -endobj -740 0 obj -<< -/D [ 99 0 R /XYZ 61 627 null ] ->> -endobj -741 0 obj -<< -/D [ 99 0 R /XYZ 61 599 null ] ->> -endobj -742 0 obj -<< -/D [ 99 0 R /XYZ 61 579 null ] ->> -endobj -743 0 obj -<< -/D [ 99 0 R /XYZ 61 550 null ] ->> -endobj -744 0 obj -<< -/D [ 99 0 R /XYZ 61 527 null ] ->> -endobj -745 0 obj -<< -/D [ 99 0 R /XYZ 61 358 null ] ->> -endobj -746 0 obj -<< -/D [ 99 0 R /XYZ 61 331 null ] ->> -endobj -747 0 obj -<< -/D [ 99 0 R /XYZ 61 307 null ] ->> -endobj -748 0 obj -<< -/D [ 99 0 R /XYZ 61 267 null ] ->> -endobj -749 0 obj -<< -/D [ 99 0 R /XYZ 61 247 null ] ->> -endobj -750 0 obj -<< -/D [ 99 0 R /XYZ 61 227 null ] ->> -endobj -751 0 obj -<< -/D [ 99 0 R /XYZ 61 208 null ] ->> -endobj -752 0 obj -<< -/D [ 99 0 R /XYZ 61 190 null ] ->> -endobj -753 0 obj -<< -/D [ 99 0 R /XYZ 61 172 null ] ->> -endobj -754 0 obj -<< -/D [ 99 0 R /XYZ 61 131 null ] ->> -endobj -755 0 obj -<< -/D [ 99 0 R /XYZ 61 112 null ] ->> -endobj -756 0 obj -<< -/D [ 104 0 R /XYZ null null null ] ->> -endobj -757 0 obj -<< -/D [ 104 0 R /XYZ 256 536 null ] ->> -endobj -758 0 obj -<< -/D [ 104 0 R /XYZ 256 536 null ] ->> -endobj -759 0 obj -<< -/D [ 104 0 R /XYZ 205 160 null ] ->> -endobj -760 0 obj -<< -/D [ 104 0 R /XYZ 205 160 null ] ->> -endobj -761 0 obj -<< -/D [ 104 0 R /XYZ 168 698 null ] ->> -endobj -762 0 obj -<< -/D [ 104 0 R /XYZ 61 689 null ] ->> -endobj -763 0 obj -<< -/D [ 104 0 R /XYZ 61 530 null ] ->> -endobj -764 0 obj -<< -/D [ 104 0 R /XYZ 61 507 null ] ->> -endobj -765 0 obj -<< -/D [ 104 0 R /XYZ 61 479 null ] ->> -endobj -766 0 obj -<< -/D [ 104 0 R /XYZ 61 459 null ] ->> -endobj -767 0 obj -<< -/D [ 104 0 R /XYZ 61 431 null ] ->> -endobj -768 0 obj -<< -/D [ 104 0 R /XYZ 61 412 null ] ->> -endobj -769 0 obj -<< -/D [ 104 0 R /XYZ 61 384 null ] ->> -endobj -770 0 obj -<< -/D [ 104 0 R /XYZ 61 365 null ] ->> -endobj -771 0 obj -<< -/D [ 104 0 R /XYZ 61 336 null ] ->> -endobj -772 0 obj -<< -/D [ 104 0 R /XYZ 61 312 null ] ->> -endobj -773 0 obj -<< -/D [ 104 0 R /XYZ 61 287 null ] ->> -endobj -774 0 obj -<< -/D [ 104 0 R /XYZ 61 271 null ] ->> -endobj -775 0 obj -<< -/D [ 104 0 R /XYZ 61 244 null ] ->> -endobj -776 0 obj -<< -/D [ 104 0 R /XYZ 61 228 null ] ->> -endobj -777 0 obj -<< -/D [ 104 0 R /XYZ 61 200 null ] ->> -endobj -778 0 obj -<< -/D [ 104 0 R /XYZ 61 180 null ] ->> -endobj -779 0 obj -<< -/D [ 104 0 R /XYZ 61 151 null ] ->> -endobj -780 0 obj -<< -/D [ 104 0 R /XYZ 61 119 null ] ->> -endobj -781 0 obj -<< -/D [ 104 0 R /XYZ 61 100 null ] ->> -endobj -782 0 obj -<< -/D [ 107 0 R /XYZ null null null ] ->> -endobj -783 0 obj -<< -/D [ 107 0 R /XYZ 256 219 null ] ->> -endobj -784 0 obj -<< -/D [ 107 0 R /XYZ 256 219 null ] ->> -endobj -785 0 obj -<< -/D [ 107 0 R /XYZ 168 417 null ] ->> -endobj -786 0 obj -<< -/D [ 107 0 R /XYZ 205 195 null ] ->> -endobj -787 0 obj -<< -/D [ 107 0 R /XYZ 61 688 null ] ->> -endobj -788 0 obj -<< -/D [ 107 0 R /XYZ 61 668 null ] ->> -endobj -789 0 obj -<< -/D [ 107 0 R /XYZ 61 640 null ] ->> -endobj -790 0 obj -<< -/D [ 107 0 R /XYZ 61 621 null ] ->> -endobj -791 0 obj -<< -/D [ 107 0 R /XYZ 61 593 null ] ->> -endobj -792 0 obj -<< -/D [ 107 0 R /XYZ 61 568 null ] ->> -endobj -793 0 obj -<< -/D [ 107 0 R /XYZ 61 543 null ] ->> -endobj -794 0 obj -<< -/D [ 107 0 R /XYZ 61 527 null ] ->> -endobj -795 0 obj -<< -/D [ 107 0 R /XYZ 61 500 null ] ->> -endobj -796 0 obj -<< -/D [ 107 0 R /XYZ 61 484 null ] ->> -endobj -797 0 obj -<< -/D [ 107 0 R /XYZ 61 456 null ] ->> -endobj -798 0 obj -<< -/D [ 107 0 R /XYZ 61 437 null ] ->> -endobj -799 0 obj -<< -/D [ 107 0 R /XYZ 61 408 null ] ->> -endobj -800 0 obj -<< -/D [ 107 0 R /XYZ 61 213 null ] ->> -endobj -801 0 obj -<< -/D [ 107 0 R /XYZ 61 187 null ] ->> -endobj -802 0 obj -<< -/D [ 107 0 R /XYZ 61 163 null ] ->> -endobj -803 0 obj -<< -/D [ 110 0 R /XYZ null null null ] ->> -endobj -804 0 obj -<< -/D [ 110 0 R /XYZ 256 296 null ] ->> -endobj -805 0 obj -<< -/D [ 110 0 R /XYZ 256 296 null ] ->> -endobj -806 0 obj -<< -/D [ 110 0 R /XYZ 205 697 null ] ->> -endobj -807 0 obj -<< -/D [ 110 0 R /XYZ 168 632 null ] ->> -endobj -808 0 obj -<< -/D [ 110 0 R /XYZ 61 688 null ] ->> -endobj -809 0 obj -<< -/D [ 110 0 R /XYZ 61 664 null ] ->> -endobj -810 0 obj -<< -/D [ 110 0 R /XYZ 61 623 null ] ->> -endobj -811 0 obj -<< -/D [ 110 0 R /XYZ 61 290 null ] ->> -endobj -812 0 obj -<< -/D [ 110 0 R /XYZ 61 266 null ] ->> -endobj -813 0 obj -<< -/D [ 113 0 R /XYZ null null null ] ->> -endobj -814 0 obj -<< -/D [ 113 0 R /XYZ 256 492 null ] ->> -endobj -815 0 obj -<< -/D [ 113 0 R /XYZ 256 492 null ] ->> -endobj -816 0 obj -<< -/D [ 113 0 R /XYZ 105 431 null ] ->> -endobj -817 0 obj -<< -/D [ 113 0 R /XYZ 105 431 null ] ->> -endobj -818 0 obj -<< -/D [ 113 0 R /XYZ 168 698 null ] ->> -endobj -819 0 obj -<< -/D [ 113 0 R /XYZ 130 431 null ] ->> -endobj -820 0 obj -<< -/D [ 113 0 R /XYZ 61 689 null ] ->> -endobj -821 0 obj -<< -/D [ 113 0 R /XYZ 61 486 null ] ->> -endobj -822 0 obj -<< -/D [ 113 0 R /XYZ 61 462 null ] ->> -endobj -823 0 obj -<< -/D [ 113 0 R /XYZ 61 421 null ] ->> -endobj -824 0 obj -<< -/D [ 113 0 R /XYZ 61 394 null ] ->> -endobj -825 0 obj -<< -/D [ 116 0 R /XYZ null null null ] ->> -endobj -826 0 obj -<< -/D [ 116 0 R /XYZ 205 335 null ] ->> -endobj -827 0 obj -<< -/D [ 116 0 R /XYZ 61 689 null ] ->> -endobj -828 0 obj -<< -/D [ 116 0 R /XYZ 61 404 null ] ->> -endobj -829 0 obj -<< -/D [ 116 0 R /XYZ 61 380 null ] ->> -endobj -830 0 obj -<< -/D [ 116 0 R /XYZ 61 326 null ] ->> -endobj -831 0 obj -<< -/D [ 116 0 R /XYZ 61 295 null ] ->> -endobj -832 0 obj -<< -/D [ 116 0 R /XYZ 61 275 null ] ->> -endobj -833 0 obj -<< -/D [ 116 0 R /XYZ 61 247 null ] ->> -endobj -834 0 obj -<< -/D [ 116 0 R /XYZ 61 228 null ] ->> -endobj -835 0 obj -<< -/D [ 116 0 R /XYZ 61 200 null ] ->> -endobj -836 0 obj -<< -/D [ 116 0 R /XYZ 61 180 null ] ->> -endobj -837 0 obj -<< -/D [ 119 0 R /XYZ null null null ] ->> -endobj -838 0 obj -<< -/D [ 119 0 R /XYZ 61 688 null ] ->> -endobj -839 0 obj -<< -/D [ 119 0 R /XYZ 61 663 null ] ->> -endobj -840 0 obj -<< -/D [ 119 0 R /XYZ 61 647 null ] ->> -endobj -841 0 obj -<< -/D [ 119 0 R /XYZ 61 570 null ] ->> -endobj -842 0 obj -<< -/D [ 119 0 R /XYZ 61 554 null ] ->> -endobj -843 0 obj -<< -/D [ 119 0 R /XYZ 61 514 null ] ->> -endobj -844 0 obj -<< -/D [ 119 0 R /XYZ 61 498 null ] ->> -endobj -845 0 obj -<< -/D [ 119 0 R /XYZ 61 471 null ] ->> -endobj -846 0 obj -<< -/D [ 119 0 R /XYZ 61 455 null ] ->> -endobj -847 0 obj -<< -/D [ 119 0 R /XYZ 61 428 null ] ->> -endobj -848 0 obj -<< -/D [ 119 0 R /XYZ 61 412 null ] ->> -endobj -849 0 obj -<< -/D [ 119 0 R /XYZ 61 384 null ] ->> -endobj -850 0 obj -<< -/D [ 119 0 R /XYZ 61 359 null ] ->> -endobj -851 0 obj -<< -/D [ 119 0 R /XYZ 61 343 null ] ->> -endobj -852 0 obj -<< -/D [ 119 0 R /XYZ 61 316 null ] ->> -endobj -853 0 obj -<< -/D [ 119 0 R /XYZ 61 300 null ] ->> -endobj -854 0 obj -<< -/D [ 119 0 R /XYZ 61 272 null ] ->> -endobj -855 0 obj -<< -/D [ 119 0 R /XYZ 61 252 null ] ->> -endobj -856 0 obj -<< -/D [ 119 0 R /XYZ 61 223 null ] ->> -endobj -857 0 obj -<< -/D [ 119 0 R /XYZ 61 191 null ] ->> -endobj -858 0 obj -<< -/D [ 119 0 R /XYZ 61 172 null ] ->> -endobj -859 0 obj -<< -/D [ 122 0 R /XYZ null null null ] ->> -endobj -860 0 obj -<< -/D [ 122 0 R /XYZ 205 459 null ] ->> -endobj -861 0 obj -<< -/D [ 122 0 R /XYZ 205 459 null ] ->> -endobj -862 0 obj -<< -/D [ 122 0 R /XYZ 61 688 null ] ->> -endobj -863 0 obj -<< -/D [ 122 0 R /XYZ 61 668 null ] ->> -endobj -864 0 obj -<< -/D [ 122 0 R /XYZ 61 640 null ] ->> -endobj -865 0 obj -<< -/D [ 122 0 R /XYZ 61 621 null ] ->> -endobj -866 0 obj -<< -/D [ 122 0 R /XYZ 61 593 null ] ->> -endobj -867 0 obj -<< -/D [ 122 0 R /XYZ 61 568 null ] ->> -endobj -868 0 obj -<< -/D [ 122 0 R /XYZ 61 543 null ] ->> -endobj -869 0 obj -<< -/D [ 122 0 R /XYZ 61 527 null ] ->> -endobj -870 0 obj -<< -/D [ 122 0 R /XYZ 61 499 null ] ->> -endobj -871 0 obj -<< -/D [ 122 0 R /XYZ 61 480 null ] ->> -endobj -872 0 obj -<< -/D [ 122 0 R /XYZ 61 451 null ] ->> -endobj -873 0 obj -<< -/D [ 122 0 R /XYZ 61 419 null ] ->> -endobj -874 0 obj -<< -/D [ 122 0 R /XYZ 61 400 null ] ->> -endobj -875 0 obj -<< -/D [ 122 0 R /XYZ 61 342 null ] ->> -endobj -876 0 obj -<< -/D [ 122 0 R /XYZ 61 289 null ] ->> -endobj -877 0 obj -<< -/D [ 122 0 R /XYZ 61 270 null ] ->> -endobj -878 0 obj -<< -/D [ 122 0 R /XYZ 61 242 null ] ->> -endobj -879 0 obj -<< -/D [ 122 0 R /XYZ 61 222 null ] ->> -endobj -880 0 obj -<< -/D [ 122 0 R /XYZ 61 194 null ] ->> -endobj -881 0 obj -<< -/D [ 122 0 R /XYZ 61 170 null ] ->> -endobj -882 0 obj -<< -/D [ 122 0 R /XYZ 61 154 null ] ->> -endobj -883 0 obj -<< -/D [ 125 0 R /XYZ null null null ] ->> -endobj -884 0 obj -<< -/D [ 125 0 R /XYZ 61 687 null ] ->> -endobj -885 0 obj -<< -/D [ 125 0 R /XYZ 61 671 null ] ->> -endobj -886 0 obj -<< -/D [ 125 0 R /XYZ 61 631 null ] ->> -endobj -887 0 obj -<< -/D [ 125 0 R /XYZ 61 615 null ] ->> -endobj -888 0 obj -<< -/D [ 125 0 R /XYZ 61 588 null ] ->> -endobj -889 0 obj -<< -/D [ 125 0 R /XYZ 61 572 null ] ->> -endobj -890 0 obj -<< -/D [ 125 0 R /XYZ 61 544 null ] ->> -endobj -891 0 obj -<< -/D [ 125 0 R /XYZ 61 520 null ] ->> -endobj -892 0 obj -<< -/D [ 125 0 R /XYZ 61 504 null ] ->> -endobj -893 0 obj -<< -/D [ 125 0 R /XYZ 61 476 null ] ->> -endobj -894 0 obj -<< -/D [ 125 0 R /XYZ 61 460 null ] ->> -endobj -895 0 obj -<< -/D [ 125 0 R /XYZ 61 432 null ] ->> -endobj -896 0 obj -<< -/D [ 125 0 R /XYZ 61 413 null ] ->> -endobj -897 0 obj -<< -/D [ 125 0 R /XYZ 61 383 null ] ->> -endobj -898 0 obj -<< -/D [ 125 0 R /XYZ 61 352 null ] ->> -endobj -899 0 obj -<< -/D [ 125 0 R /XYZ 61 332 null ] ->> -endobj -900 0 obj -<< -/D [ 125 0 R /XYZ 61 292 null ] ->> -endobj -901 0 obj -<< -/D [ 125 0 R /XYZ 61 273 null ] ->> -endobj -902 0 obj -<< -/D [ 125 0 R /XYZ 61 245 null ] ->> -endobj -903 0 obj -<< -/D [ 125 0 R /XYZ 61 225 null ] ->> -endobj -904 0 obj -<< -/D [ 125 0 R /XYZ 61 197 null ] ->> -endobj -905 0 obj -<< -/D [ 125 0 R /XYZ 61 173 null ] ->> -endobj -906 0 obj -<< -/D [ 125 0 R /XYZ 61 157 null ] ->> -endobj -907 0 obj -<< -/D [ 125 0 R /XYZ 61 117 null ] ->> -endobj -908 0 obj -<< -/D [ 125 0 R /XYZ 61 101 null ] ->> -endobj -909 0 obj -<< -/D [ 128 0 R /XYZ null null null ] ->> -endobj -910 0 obj -<< -/D [ 128 0 R /XYZ 205 579 null ] ->> -endobj -911 0 obj -<< -/D [ 128 0 R /XYZ 205 579 null ] ->> -endobj -912 0 obj -<< -/D [ 128 0 R /XYZ 61 688 null ] ->> -endobj -913 0 obj -<< -/D [ 128 0 R /XYZ 61 663 null ] ->> -endobj -914 0 obj -<< -/D [ 128 0 R /XYZ 61 647 null ] ->> -endobj -915 0 obj -<< -/D [ 128 0 R /XYZ 61 619 null ] ->> -endobj -916 0 obj -<< -/D [ 128 0 R /XYZ 61 600 null ] ->> -endobj -917 0 obj -<< -/D [ 128 0 R /XYZ 61 570 null ] ->> -endobj -918 0 obj -<< -/D [ 128 0 R /XYZ 61 539 null ] ->> -endobj -919 0 obj -<< -/D [ 128 0 R /XYZ 61 519 null ] ->> -endobj -920 0 obj -<< -/D [ 128 0 R /XYZ 61 479 null ] ->> -endobj -921 0 obj -<< -/D [ 128 0 R /XYZ 61 460 null ] ->> -endobj -922 0 obj -<< -/D [ 128 0 R /XYZ 61 432 null ] ->> -endobj -923 0 obj -<< -/D [ 128 0 R /XYZ 61 412 null ] ->> -endobj -924 0 obj -<< -/D [ 128 0 R /XYZ 61 384 null ] ->> -endobj -925 0 obj -<< -/D [ 128 0 R /XYZ 61 360 null ] ->> -endobj -926 0 obj -<< -/D [ 128 0 R /XYZ 61 344 null ] ->> -endobj -927 0 obj -<< -/D [ 128 0 R /XYZ 61 316 null ] ->> -endobj -928 0 obj -<< -/D [ 128 0 R /XYZ 61 291 null ] ->> -endobj -929 0 obj -<< -/D [ 128 0 R /XYZ 61 275 null ] ->> -endobj -930 0 obj -<< -/D [ 128 0 R /XYZ 61 247 null ] ->> -endobj -931 0 obj -<< -/D [ 128 0 R /XYZ 61 228 null ] ->> -endobj -932 0 obj -<< -/D [ 131 0 R /XYZ null null null ] ->> -endobj -933 0 obj -<< -/D [ 131 0 R /XYZ 168 698 null ] ->> -endobj -934 0 obj -<< -/D [ 131 0 R /XYZ 205 300 null ] ->> -endobj -935 0 obj -<< -/D [ 131 0 R /XYZ 61 689 null ] ->> -endobj -936 0 obj -<< -/D [ 131 0 R /XYZ 61 369 null ] ->> -endobj -937 0 obj -<< -/D [ 131 0 R /XYZ 61 346 null ] ->> -endobj -938 0 obj -<< -/D [ 131 0 R /XYZ 61 292 null ] ->> -endobj -939 0 obj -<< -/D [ 131 0 R /XYZ 61 268 null ] ->> -endobj -940 0 obj -<< -/D [ 131 0 R /XYZ 61 227 null ] ->> -endobj -941 0 obj -<< -/D [ 131 0 R /XYZ 61 203 null ] ->> -endobj -942 0 obj -<< -/D [ 131 0 R /XYZ 61 187 null ] ->> -endobj -943 0 obj -<< -/D [ 131 0 R /XYZ 61 159 null ] ->> -endobj -944 0 obj -<< -/D [ 131 0 R /XYZ 61 143 null ] ->> -endobj -945 0 obj -<< -/D [ 131 0 R /XYZ 61 116 null ] ->> -endobj -946 0 obj -<< -/D [ 131 0 R /XYZ 61 100 null ] ->> -endobj -947 0 obj -<< -/D [ 135 0 R /XYZ null null null ] ->> -endobj -948 0 obj -<< -/D [ 135 0 R /XYZ 205 603 null ] ->> -endobj -949 0 obj -<< -/D [ 135 0 R /XYZ 61 687 null ] ->> -endobj -950 0 obj -<< -/D [ 135 0 R /XYZ 61 671 null ] ->> -endobj -951 0 obj -<< -/D [ 135 0 R /XYZ 61 643 null ] ->> -endobj -952 0 obj -<< -/D [ 135 0 R /XYZ 61 624 null ] ->> -endobj -953 0 obj -<< -/D [ 135 0 R /XYZ 61 594 null ] ->> -endobj -954 0 obj -<< -/D [ 135 0 R /XYZ 61 563 null ] ->> -endobj -955 0 obj -<< -/D [ 135 0 R /XYZ 61 543 null ] ->> -endobj -956 0 obj -<< -/D [ 135 0 R /XYZ 61 515 null ] ->> -endobj -957 0 obj -<< -/D [ 135 0 R /XYZ 61 496 null ] ->> -endobj -958 0 obj -<< -/D [ 135 0 R /XYZ 61 468 null ] ->> -endobj -959 0 obj -<< -/D [ 135 0 R /XYZ 61 449 null ] ->> -endobj -960 0 obj -<< -/D [ 135 0 R /XYZ 61 421 null ] ->> -endobj -961 0 obj -<< -/D [ 135 0 R /XYZ 61 396 null ] ->> -endobj -962 0 obj -<< -/D [ 135 0 R /XYZ 61 380 null ] ->> -endobj -963 0 obj -<< -/D [ 135 0 R /XYZ 61 353 null ] ->> -endobj -964 0 obj -<< -/D [ 135 0 R /XYZ 61 337 null ] ->> -endobj -965 0 obj -<< -/D [ 135 0 R /XYZ 61 309 null ] ->> -endobj -966 0 obj -<< -/D [ 135 0 R /XYZ 61 293 null ] ->> -endobj -967 0 obj -<< -/D [ 135 0 R /XYZ 61 253 null ] ->> -endobj -968 0 obj -<< -/D [ 135 0 R /XYZ 61 229 null ] ->> -endobj -969 0 obj -<< -/D [ 135 0 R /XYZ 61 213 null ] ->> -endobj -970 0 obj -<< -/D [ 135 0 R /XYZ 61 184 null ] ->> -endobj -971 0 obj -<< -/D [ 135 0 R /XYZ 61 165 null ] ->> -endobj -972 0 obj -<< -/D [ 138 0 R /XYZ null null null ] ->> -endobj -973 0 obj -<< -/D [ 138 0 R /XYZ 205 697 null ] ->> -endobj -974 0 obj -<< -/D [ 138 0 R /XYZ 61 688 null ] ->> -endobj -975 0 obj -<< -/D [ 138 0 R /XYZ 61 657 null ] ->> -endobj -976 0 obj -<< -/D [ 138 0 R /XYZ 61 637 null ] ->> -endobj -977 0 obj -<< -/D [ 138 0 R /XYZ 61 609 null ] ->> -endobj -978 0 obj -<< -/D [ 138 0 R /XYZ 61 590 null ] ->> -endobj -979 0 obj -<< -/D [ 138 0 R /XYZ 61 562 null ] ->> -endobj -980 0 obj -<< -/D [ 138 0 R /XYZ 61 542 null ] ->> -endobj -981 0 obj -<< -/D [ 138 0 R /XYZ 61 514 null ] ->> -endobj -982 0 obj -<< -/D [ 138 0 R /XYZ 61 490 null ] ->> -endobj -983 0 obj -<< -/D [ 138 0 R /XYZ 61 474 null ] ->> -endobj -984 0 obj -<< -/D [ 138 0 R /XYZ 61 447 null ] ->> -endobj -985 0 obj -<< -/D [ 138 0 R /XYZ 61 431 null ] ->> -endobj -986 0 obj -<< -/D [ 138 0 R /XYZ 61 403 null ] ->> -endobj -987 0 obj -<< -/D [ 138 0 R /XYZ 61 387 null ] ->> -endobj -988 0 obj -<< -/D [ 138 0 R /XYZ 61 360 null ] ->> -endobj -989 0 obj -<< -/D [ 138 0 R /XYZ 61 344 null ] ->> -endobj -990 0 obj -<< -/D [ 138 0 R /XYZ 61 316 null ] ->> -endobj -991 0 obj -<< -/D [ 138 0 R /XYZ 61 300 null ] ->> -endobj -992 0 obj -<< -/D [ 138 0 R /XYZ 61 273 null ] ->> -endobj -993 0 obj -<< -/D [ 138 0 R /XYZ 61 257 null ] ->> -endobj -994 0 obj -<< -/D [ 138 0 R /XYZ 61 229 null ] ->> -endobj -995 0 obj -<< -/D [ 138 0 R /XYZ 61 205 null ] ->> -endobj -996 0 obj -<< -/D [ 138 0 R /XYZ 61 189 null ] ->> -endobj -997 0 obj -<< -/D [ 138 0 R /XYZ 61 161 null ] ->> -endobj -998 0 obj -<< -/D [ 138 0 R /XYZ 61 141 null ] ->> -endobj -999 0 obj -<< -/D [ 141 0 R /XYZ null null null ] ->> -endobj -1000 0 obj -<< -/D [ 141 0 R /XYZ 205 697 null ] ->> -endobj -1001 0 obj -<< -/D [ 141 0 R /XYZ 205 149 null ] ->> -endobj -1002 0 obj -<< -/D [ 141 0 R /XYZ 61 688 null ] ->> -endobj -1003 0 obj -<< -/D [ 141 0 R /XYZ 61 657 null ] ->> -endobj -1004 0 obj -<< -/D [ 141 0 R /XYZ 61 637 null ] ->> -endobj -1005 0 obj -<< -/D [ 141 0 R /XYZ 61 609 null ] ->> -endobj -1006 0 obj -<< -/D [ 141 0 R /XYZ 61 590 null ] ->> -endobj -1007 0 obj -<< -/D [ 141 0 R /XYZ 61 562 null ] ->> -endobj -1008 0 obj -<< -/D [ 141 0 R /XYZ 61 542 null ] ->> -endobj -1009 0 obj -<< -/D [ 141 0 R /XYZ 61 514 null ] ->> -endobj -1010 0 obj -<< -/D [ 141 0 R /XYZ 61 490 null ] ->> -endobj -1011 0 obj -<< -/D [ 141 0 R /XYZ 61 474 null ] ->> -endobj -1012 0 obj -<< -/D [ 141 0 R /XYZ 61 447 null ] ->> -endobj -1013 0 obj -<< -/D [ 141 0 R /XYZ 61 431 null ] ->> -endobj -1014 0 obj -<< -/D [ 141 0 R /XYZ 61 403 null ] ->> -endobj -1015 0 obj -<< -/D [ 141 0 R /XYZ 61 387 null ] ->> -endobj -1016 0 obj -<< -/D [ 141 0 R /XYZ 61 360 null ] ->> -endobj -1017 0 obj -<< -/D [ 141 0 R /XYZ 61 344 null ] ->> -endobj -1018 0 obj -<< -/D [ 141 0 R /XYZ 61 292 null ] ->> -endobj -1019 0 obj -<< -/D [ 141 0 R /XYZ 61 276 null ] ->> -endobj -1020 0 obj -<< -/D [ 141 0 R /XYZ 61 235 null ] ->> -endobj -1021 0 obj -<< -/D [ 141 0 R /XYZ 61 211 null ] ->> -endobj -1022 0 obj -<< -/D [ 141 0 R /XYZ 61 195 null ] ->> -endobj -1023 0 obj -<< -/D [ 141 0 R /XYZ 61 167 null ] ->> -endobj -1024 0 obj -<< -/D [ 141 0 R /XYZ 61 140 null ] ->> -endobj -1025 0 obj -<< -/D [ 141 0 R /XYZ 61 109 null ] ->> -endobj -1026 0 obj -<< -/D [ 141 0 R /XYZ 61 89 null ] ->> -endobj -1027 0 obj -<< -/D [ 144 0 R /XYZ null null null ] ->> -endobj -1028 0 obj -<< -/D [ 144 0 R /XYZ 61 688 null ] ->> -endobj -1029 0 obj -<< -/D [ 144 0 R /XYZ 61 668 null ] ->> -endobj -1030 0 obj -<< -/D [ 144 0 R /XYZ 61 640 null ] ->> -endobj -1031 0 obj -<< -/D [ 144 0 R /XYZ 61 621 null ] ->> -endobj -1032 0 obj -<< -/D [ 144 0 R /XYZ 61 593 null ] ->> -endobj -1033 0 obj -<< -/D [ 144 0 R /XYZ 61 568 null ] ->> -endobj -1034 0 obj -<< -/D [ 144 0 R /XYZ 61 552 null ] ->> -endobj -1035 0 obj -<< -/D [ 144 0 R /XYZ 61 525 null ] ->> -endobj -1036 0 obj -<< -/D [ 144 0 R /XYZ 61 509 null ] ->> -endobj -1037 0 obj -<< -/D [ 144 0 R /XYZ 61 482 null ] ->> -endobj -1038 0 obj -<< -/D [ 144 0 R /XYZ 61 466 null ] ->> -endobj -1039 0 obj -<< -/D [ 144 0 R /XYZ 61 438 null ] ->> -endobj -1040 0 obj -<< -/D [ 144 0 R /XYZ 61 422 null ] ->> -endobj -1041 0 obj -<< -/D [ 144 0 R /XYZ 61 394 null ] ->> -endobj -1042 0 obj -<< -/D [ 144 0 R /XYZ 61 370 null ] ->> -endobj -1043 0 obj -<< -/D [ 144 0 R /XYZ 61 354 null ] ->> -endobj -1044 0 obj -<< -/D [ 144 0 R /XYZ 61 326 null ] ->> -endobj -1045 0 obj -<< -/D [ 144 0 R /XYZ 61 306 null ] ->> -endobj -1046 0 obj -<< -/D [ 147 0 R /XYZ null null null ] ->> -endobj -1047 0 obj -<< -/D [ 147 0 R /XYZ 168 698 null ] ->> -endobj -1048 0 obj -<< -/D [ 147 0 R /XYZ 205 234 null ] ->> -endobj -1049 0 obj -<< -/D [ 147 0 R /XYZ 61 689 null ] ->> -endobj -1050 0 obj -<< -/D [ 147 0 R /XYZ 61 398 null ] ->> -endobj -1051 0 obj -<< -/D [ 147 0 R /XYZ 61 375 null ] ->> -endobj -1052 0 obj -<< -/D [ 147 0 R /XYZ 61 268 null ] ->> -endobj -1053 0 obj -<< -/D [ 147 0 R /XYZ 61 226 null ] ->> -endobj -1054 0 obj -<< -/D [ 147 0 R /XYZ 61 194 null ] ->> -endobj -1055 0 obj -<< -/D [ 147 0 R /XYZ 61 175 null ] ->> -endobj -1056 0 obj -<< -/D [ 147 0 R /XYZ 61 134 null ] ->> -endobj -1057 0 obj -<< -/D [ 147 0 R /XYZ 61 115 null ] ->> -endobj -1058 0 obj -<< -/D [ 152 0 R /XYZ null null null ] ->> -endobj -1059 0 obj -<< -/D [ 152 0 R /XYZ 61 688 null ] ->> -endobj -1060 0 obj -<< -/D [ 152 0 R /XYZ 61 668 null ] ->> -endobj -1061 0 obj -<< -/D [ 152 0 R /XYZ 61 640 null ] ->> -endobj -1062 0 obj -<< -/D [ 152 0 R /XYZ 61 615 null ] ->> -endobj -1063 0 obj -<< -/D [ 152 0 R /XYZ 61 591 null ] ->> -endobj -1064 0 obj -<< -/D [ 152 0 R /XYZ 61 575 null ] ->> -endobj -1065 0 obj -<< -/D [ 152 0 R /XYZ 61 535 null ] ->> -endobj -1066 0 obj -<< -/D [ 152 0 R /XYZ 61 519 null ] ->> -endobj -1067 0 obj -<< -/D [ 152 0 R /XYZ 61 492 null ] ->> -endobj -1068 0 obj -<< -/D [ 152 0 R /XYZ 61 476 null ] ->> -endobj -1069 0 obj -<< -/D [ 152 0 R /XYZ 61 435 null ] ->> -endobj -1070 0 obj -<< -/D [ 152 0 R /XYZ 61 416 null ] ->> -endobj -1071 0 obj -<< -/D [ 152 0 R /XYZ 61 387 null ] ->> -endobj -1072 0 obj -<< -/D [ 152 0 R /XYZ 61 361 null ] ->> -endobj -1073 0 obj -<< -/D [ 152 0 R /XYZ 61 98 null ] ->> -endobj -1074 0 obj -<< -/D [ 155 0 R /XYZ null null null ] ->> -endobj -1075 0 obj -<< -/D [ 155 0 R /XYZ 61 687 null ] ->> -endobj -1076 0 obj -<< -/D [ 155 0 R /XYZ 61 559 null ] ->> -endobj -1077 0 obj -<< -/D [ 155 0 R /XYZ 61 535 null ] ->> -endobj -1078 0 obj -<< -/D [ 155 0 R /XYZ 61 494 null ] ->> -endobj -1079 0 obj -<< -/D [ 155 0 R /XYZ 61 475 null ] ->> -endobj -1080 0 obj -<< -/D [ 155 0 R /XYZ 61 447 null ] ->> -endobj -1081 0 obj -<< -/D [ 155 0 R /XYZ 61 427 null ] ->> -endobj -1082 0 obj -<< -/D [ 155 0 R /XYZ 61 398 null ] ->> -endobj -1083 0 obj -<< -/D [ 155 0 R /XYZ 61 374 null ] ->> -endobj -1084 0 obj -<< -/D [ 155 0 R /XYZ 61 334 null ] ->> -endobj -1085 0 obj -<< -/D [ 155 0 R /XYZ 61 314 null ] ->> -endobj -1086 0 obj -<< -/D [ 155 0 R /XYZ 61 286 null ] ->> -endobj -1087 0 obj -<< -/D [ 155 0 R /XYZ 61 267 null ] ->> -endobj -1088 0 obj -<< -/D [ 155 0 R /XYZ 61 237 null ] ->> -endobj -1089 0 obj -<< -/D [ 155 0 R /XYZ 61 213 null ] ->> -endobj -1090 0 obj -<< -/D [ 155 0 R /XYZ 61 173 null ] ->> -endobj -1091 0 obj -<< -/D [ 155 0 R /XYZ 61 154 null ] ->> -endobj -1092 0 obj -<< -/D [ 155 0 R /XYZ 61 126 null ] ->> -endobj -1093 0 obj -<< -/D [ 155 0 R /XYZ 61 106 null ] ->> -endobj -1094 0 obj -<< -/D [ 158 0 R /XYZ null null null ] ->> -endobj -1095 0 obj -<< -/D [ 158 0 R /XYZ 168 377 null ] ->> -endobj -1096 0 obj -<< -/D [ 158 0 R /XYZ 61 688 null ] ->> -endobj -1097 0 obj -<< -/D [ 158 0 R /XYZ 61 664 null ] ->> -endobj -1098 0 obj -<< -/D [ 158 0 R /XYZ 61 624 null ] ->> -endobj -1099 0 obj -<< -/D [ 158 0 R /XYZ 61 604 null ] ->> -endobj -1100 0 obj -<< -/D [ 158 0 R /XYZ 61 576 null ] ->> -endobj -1101 0 obj -<< -/D [ 158 0 R /XYZ 61 557 null ] ->> -endobj -1102 0 obj -<< -/D [ 158 0 R /XYZ 61 528 null ] ->> -endobj -1103 0 obj -<< -/D [ 158 0 R /XYZ 61 504 null ] ->> -endobj -1104 0 obj -<< -/D [ 158 0 R /XYZ 61 463 null ] ->> -endobj -1105 0 obj -<< -/D [ 158 0 R /XYZ 61 444 null ] ->> -endobj -1106 0 obj -<< -/D [ 158 0 R /XYZ 61 416 null ] ->> -endobj -1107 0 obj -<< -/D [ 158 0 R /XYZ 61 396 null ] ->> -endobj -1108 0 obj -<< -/D [ 158 0 R /XYZ 61 367 null ] ->> -endobj -1109 0 obj -<< -/D [ 158 0 R /XYZ 61 93 null ] ->> -endobj -1110 0 obj -<< -/D [ 161 0 R /XYZ null null null ] ->> -endobj -1111 0 obj -<< -/D [ 161 0 R /XYZ 205 160 null ] ->> -endobj -1112 0 obj -<< -/D [ 161 0 R /XYZ 205 435 null ] ->> -endobj -1113 0 obj -<< -/D [ 161 0 R /XYZ 61 687 null ] ->> -endobj -1114 0 obj -<< -/D [ 161 0 R /XYZ 61 481 null ] ->> -endobj -1115 0 obj -<< -/D [ 161 0 R /XYZ 61 427 null ] ->> -endobj -1116 0 obj -<< -/D [ 161 0 R /XYZ 61 395 null ] ->> -endobj -1117 0 obj -<< -/D [ 161 0 R /XYZ 61 376 null ] ->> -endobj -1118 0 obj -<< -/D [ 161 0 R /XYZ 61 323 null ] ->> -endobj -1119 0 obj -<< -/D [ 161 0 R /XYZ 61 303 null ] ->> -endobj -1120 0 obj -<< -/D [ 161 0 R /XYZ 61 275 null ] ->> -endobj -1121 0 obj -<< -/D [ 161 0 R /XYZ 61 256 null ] ->> -endobj -1122 0 obj -<< -/D [ 161 0 R /XYZ 61 228 null ] ->> -endobj -1123 0 obj -<< -/D [ 161 0 R /XYZ 61 203 null ] ->> -endobj -1124 0 obj -<< -/D [ 161 0 R /XYZ 61 178 null ] ->> -endobj -1125 0 obj -<< -/D [ 161 0 R /XYZ 61 152 null ] ->> -endobj -1126 0 obj -<< -/D [ 161 0 R /XYZ 61 128 null ] ->> -endobj -1127 0 obj -<< -/D [ 165 0 R /XYZ null null null ] ->> -endobj -1128 0 obj -<< -/D [ 165 0 R /XYZ 168 390 null ] ->> -endobj -1129 0 obj -<< -/D [ 165 0 R /XYZ 61 688 null ] ->> -endobj -1130 0 obj -<< -/D [ 165 0 R /XYZ 61 663 null ] ->> -endobj -1131 0 obj -<< -/D [ 165 0 R /XYZ 61 647 null ] ->> -endobj -1132 0 obj -<< -/D [ 165 0 R /XYZ 61 614 null ] ->> -endobj -1133 0 obj -<< -/D [ 165 0 R /XYZ 61 569 null ] ->> -endobj -1134 0 obj -<< -/D [ 165 0 R /XYZ 61 515 null ] ->> -endobj -1135 0 obj -<< -/D [ 165 0 R /XYZ 61 491 null ] ->> -endobj -1136 0 obj -<< -/D [ 165 0 R /XYZ 61 463 null ] ->> -endobj -1137 0 obj -<< -/D [ 165 0 R /XYZ 61 439 null ] ->> -endobj -1138 0 obj -<< -/D [ 165 0 R /XYZ 61 423 null ] ->> -endobj -1139 0 obj -<< -/D [ 165 0 R /XYZ 61 381 null ] ->> -endobj -1140 0 obj -<< -/D [ 165 0 R /XYZ 61 131 null ] ->> -endobj -1141 0 obj -<< -/D [ 169 0 R /XYZ null null null ] ->> -endobj -1142 0 obj -<< -/D [ 169 0 R /XYZ 205 530 null ] ->> -endobj -1143 0 obj -<< -/D [ 169 0 R /XYZ 205 369 null ] ->> -endobj -1144 0 obj -<< -/D [ 169 0 R /XYZ 61 687 null ] ->> -endobj -1145 0 obj -<< -/D [ 169 0 R /XYZ 61 521 null ] ->> -endobj -1146 0 obj -<< -/D [ 169 0 R /XYZ 61 497 null ] ->> -endobj -1147 0 obj -<< -/D [ 169 0 R /XYZ 61 457 null ] ->> -endobj -1148 0 obj -<< -/D [ 169 0 R /XYZ 61 438 null ] ->> -endobj -1149 0 obj -<< -/D [ 169 0 R /XYZ 61 410 null ] ->> -endobj -1150 0 obj -<< -/D [ 169 0 R /XYZ 61 390 null ] ->> -endobj -1151 0 obj -<< -/D [ 169 0 R /XYZ 61 361 null ] ->> -endobj -1152 0 obj -<< -/D [ 169 0 R /XYZ 61 329 null ] ->> -endobj -1153 0 obj -<< -/D [ 169 0 R /XYZ 61 310 null ] ->> -endobj -1154 0 obj -<< -/D [ 169 0 R /XYZ 61 282 null ] ->> -endobj -1155 0 obj -<< -/D [ 169 0 R /XYZ 61 262 null ] ->> -endobj -1156 0 obj -<< -/D [ 169 0 R /XYZ 61 234 null ] ->> -endobj -1157 0 obj -<< -/D [ 169 0 R /XYZ 61 215 null ] ->> -endobj -1158 0 obj -<< -/D [ 169 0 R /XYZ 61 187 null ] ->> -endobj -1159 0 obj -<< -/D [ 169 0 R /XYZ 61 162 null ] ->> -endobj -1160 0 obj -<< -/D [ 169 0 R /XYZ 61 138 null ] ->> -endobj -1161 0 obj -<< -/D [ 169 0 R /XYZ 61 122 null ] ->> -endobj -1162 0 obj -<< -/D [ 172 0 R /XYZ null null null ] ->> -endobj -1163 0 obj -<< -/D [ 172 0 R /XYZ 61 689 null ] ->> -endobj -1164 0 obj -<< -/D [ 172 0 R /XYZ 61 188 null ] ->> -endobj -1165 0 obj -<< -/D [ 172 0 R /XYZ 61 165 null ] ->> -endobj -1166 0 obj -<< -/D [ 175 0 R /XYZ null null null ] ->> -endobj -1167 0 obj -<< -/D [ 175 0 R /XYZ 105 699 null ] ->> -endobj -1168 0 obj -<< -/D [ 175 0 R /XYZ 105 699 null ] ->> -endobj -1169 0 obj -<< -/D [ 175 0 R /XYZ 116 699 null ] ->> -endobj -1170 0 obj -<< -/D [ 175 0 R /XYZ 174 568 null ] ->> -endobj -1171 0 obj -<< -/D [ 175 0 R /XYZ 61 689 null ] ->> -endobj -1172 0 obj -<< -/D [ 175 0 R /XYZ 61 662 null ] ->> -endobj -1173 0 obj -<< -/D [ 175 0 R /XYZ 61 559 null ] ->> -endobj -1174 0 obj -<< -/D [ 175 0 R /XYZ 61 533 null ] ->> -endobj -1175 0 obj -<< -/D [ 175 0 R /XYZ 61 463 null ] ->> -endobj -1176 0 obj -<< -/D [ 175 0 R /XYZ 61 418 null ] ->> -endobj -1177 0 obj -<< -/D [ 175 0 R /XYZ 61 408 null ] ->> -endobj -1178 0 obj -<< -/D [ 175 0 R /XYZ 61 379 null ] ->> -endobj -1179 0 obj -<< -/D [ 175 0 R /XYZ 61 365 null ] ->> -endobj -1180 0 obj -<< -/D [ 175 0 R /XYZ 210 379 null ] ->> -endobj -1181 0 obj -<< -/D [ 175 0 R /XYZ 210 365 null ] ->> -endobj -1182 0 obj -<< -/D [ 175 0 R /XYZ 306 393 null ] ->> -endobj -1183 0 obj -<< -/D [ 175 0 R /XYZ 360 379 null ] ->> -endobj -1184 0 obj -<< -/D [ 175 0 R /XYZ 360 365 null ] ->> -endobj -1185 0 obj -<< -/D [ 175 0 R /XYZ 491 379 null ] ->> -endobj -1186 0 obj -<< -/D [ 175 0 R /XYZ 491 365 null ] ->> -endobj -1187 0 obj -<< -/D [ 175 0 R /XYZ 61 347 null ] ->> -endobj -1188 0 obj -<< -/D [ 175 0 R /XYZ 210 347 null ] ->> -endobj -1189 0 obj -<< -/D [ 175 0 R /XYZ 306 347 null ] ->> -endobj -1190 0 obj -<< -/D [ 175 0 R /XYZ 360 347 null ] ->> -endobj -1191 0 obj -<< -/D [ 175 0 R /XYZ 360 334 null ] ->> -endobj -1192 0 obj -<< -/D [ 175 0 R /XYZ 360 321 null ] ->> -endobj -1193 0 obj -<< -/D [ 175 0 R /XYZ 491 347 null ] ->> -endobj -1194 0 obj -<< -/D [ 175 0 R /XYZ 61 305 null ] ->> -endobj -1195 0 obj -<< -/D [ 175 0 R /XYZ 210 305 null ] ->> -endobj -1196 0 obj -<< -/D [ 175 0 R /XYZ 306 305 null ] ->> -endobj -1197 0 obj -<< -/D [ 175 0 R /XYZ 360 305 null ] ->> -endobj -1198 0 obj -<< -/D [ 175 0 R /XYZ 491 305 null ] ->> -endobj -1199 0 obj -<< -/D [ 175 0 R /XYZ 61 289 null ] ->> -endobj -1200 0 obj -<< -/D [ 175 0 R /XYZ 210 289 null ] ->> -endobj -1201 0 obj -<< -/D [ 175 0 R /XYZ 306 289 null ] ->> -endobj -1202 0 obj -<< -/D [ 175 0 R /XYZ 360 289 null ] ->> -endobj -1203 0 obj -<< -/D [ 175 0 R /XYZ 491 289 null ] ->> -endobj -1204 0 obj -<< -/D [ 175 0 R /XYZ 61 260 null ] ->> -endobj -1205 0 obj -<< -/D [ 175 0 R /XYZ 210 260 null ] ->> -endobj -1206 0 obj -<< -/D [ 175 0 R /XYZ 306 260 null ] ->> -endobj -1207 0 obj -<< -/D [ 175 0 R /XYZ 360 260 null ] ->> -endobj -1208 0 obj -<< -/D [ 175 0 R /XYZ 360 247 null ] ->> -endobj -1209 0 obj -<< -/D [ 175 0 R /XYZ 491 260 null ] ->> -endobj -1210 0 obj -<< -/D [ 175 0 R /XYZ 61 231 null ] ->> -endobj -1211 0 obj -<< -/D [ 175 0 R /XYZ 210 231 null ] ->> -endobj -1212 0 obj -<< -/D [ 175 0 R /XYZ 306 231 null ] ->> -endobj -1213 0 obj -<< -/D [ 175 0 R /XYZ 360 231 null ] ->> -endobj -1214 0 obj -<< -/D [ 175 0 R /XYZ 491 231 null ] ->> -endobj -1215 0 obj -<< -/D [ 178 0 R /XYZ null null null ] ->> -endobj -1216 0 obj -<< -/D [ 178 0 R /XYZ null null null ] ->> -endobj -1217 0 obj -<< -/D [ 178 0 R /XYZ 61 449 null ] ->> -endobj -1218 0 obj -<< -/D [ 178 0 R /XYZ 61 449 null ] ->> -endobj -1219 0 obj -<< -/D [ 178 0 R /XYZ 168 515 null ] ->> -endobj -1220 0 obj -<< -/D [ 178 0 R /XYZ 61 506 null ] ->> -endobj -1221 0 obj -<< -/D [ 178 0 R /XYZ 61 480 null ] ->> -endobj -1222 0 obj -<< -/D [ 178 0 R /XYZ 61 439 null ] ->> -endobj -1223 0 obj -<< -/D [ 178 0 R /XYZ 61 671 null ] ->> -endobj -1224 0 obj -<< -/D [ 178 0 R /XYZ 210 671 null ] ->> -endobj -1225 0 obj -<< -/D [ 178 0 R /XYZ 306 671 null ] ->> -endobj -1226 0 obj -<< -/D [ 178 0 R /XYZ 360 671 null ] ->> -endobj -1227 0 obj -<< -/D [ 178 0 R /XYZ 360 658 null ] ->> -endobj -1228 0 obj -<< -/D [ 178 0 R /XYZ 360 645 null ] ->> -endobj -1229 0 obj -<< -/D [ 178 0 R /XYZ 360 619 null ] ->> -endobj -1230 0 obj -<< -/D [ 178 0 R /XYZ 360 606 null ] ->> -endobj -1231 0 obj -<< -/D [ 178 0 R /XYZ 360 580 null ] ->> -endobj -1232 0 obj -<< -/D [ 178 0 R /XYZ 491 671 null ] ->> -endobj -1233 0 obj -<< -/D [ 178 0 R /XYZ 61 564 null ] ->> -endobj -1234 0 obj -<< -/D [ 178 0 R /XYZ 210 564 null ] ->> -endobj -1235 0 obj -<< -/D [ 178 0 R /XYZ 306 564 null ] ->> -endobj -1236 0 obj -<< -/D [ 178 0 R /XYZ 360 564 null ] ->> -endobj -1237 0 obj -<< -/D [ 178 0 R /XYZ 491 564 null ] ->> -endobj -1238 0 obj -<< -/D [ 178 0 R /XYZ 61 548 null ] ->> -endobj -1239 0 obj -<< -/D [ 178 0 R /XYZ 210 548 null ] ->> -endobj -1240 0 obj -<< -/D [ 178 0 R /XYZ 306 548 null ] ->> -endobj -1241 0 obj -<< -/D [ 178 0 R /XYZ 360 548 null ] ->> -endobj -1242 0 obj -<< -/D [ 178 0 R /XYZ 491 548 null ] ->> -endobj -1243 0 obj -<< -/D [ 181 0 R /XYZ null null null ] ->> -endobj -1244 0 obj -<< -/D [ 181 0 R /XYZ 68 693 null ] ->> -endobj -1245 0 obj -<< -/D [ 181 0 R /XYZ 68 693 null ] ->> -endobj -1246 0 obj -<< -/D [ 181 0 R /XYZ 68 693 null ] ->> -endobj -1247 0 obj -<< -/D [ 181 0 R /XYZ 68 693 null ] ->> -endobj -1248 0 obj -<< -/D [ 181 0 R /XYZ 68 693 null ] ->> -endobj -1249 0 obj -<< -/D [ 181 0 R /XYZ 68 693 null ] ->> -endobj -1250 0 obj -<< -/D [ 181 0 R /XYZ 138 684 null ] ->> -endobj -1251 0 obj -<< -/D [ 181 0 R /XYZ 106 674 null ] ->> -endobj -1252 0 obj -<< -/D [ 181 0 R /XYZ 105 664 null ] ->> -endobj -1253 0 obj -<< -/D [ 181 0 R /XYZ 68 645 null ] ->> -endobj -1254 0 obj -<< -/D [ 181 0 R /XYZ 68 645 null ] ->> -endobj -1255 0 obj -<< -/D [ 181 0 R /XYZ 68 645 null ] ->> -endobj -1256 0 obj -<< -/D [ 181 0 R /XYZ 68 645 null ] ->> -endobj -1257 0 obj -<< -/D [ 181 0 R /XYZ 120 636 null ] ->> -endobj -1258 0 obj -<< -/D [ 181 0 R /XYZ 135 626 null ] ->> -endobj -1259 0 obj -<< -/D [ 181 0 R /XYZ 134 616 null ] ->> -endobj -1260 0 obj -<< -/D [ 181 0 R /XYZ 139 606 null ] ->> -endobj -1261 0 obj -<< -/D [ 181 0 R /XYZ 157 596 null ] ->> -endobj -1262 0 obj -<< -/D [ 181 0 R /XYZ 68 577 null ] ->> -endobj -1263 0 obj -<< -/D [ 181 0 R /XYZ 68 577 null ] ->> -endobj -1264 0 obj -<< -/D [ 181 0 R /XYZ 107 568 null ] ->> -endobj -1265 0 obj -<< -/D [ 181 0 R /XYZ 67 549 null ] ->> -endobj -1266 0 obj -<< -/D [ 181 0 R /XYZ 67 549 null ] ->> -endobj -1267 0 obj -<< -/D [ 181 0 R /XYZ 81 540 null ] ->> -endobj -1268 0 obj -<< -/D [ 181 0 R /XYZ 140 530 null ] ->> -endobj -1269 0 obj -<< -/D [ 181 0 R /XYZ 108 520 null ] ->> -endobj -1270 0 obj -<< -/D [ 181 0 R /XYZ 91 510 null ] ->> -endobj -1271 0 obj -<< -/D [ 181 0 R /XYZ 142 500 null ] ->> -endobj -1272 0 obj -<< -/D [ 181 0 R /XYZ 94 490 null ] ->> -endobj -1273 0 obj -<< -/D [ 181 0 R /XYZ 187 480 null ] ->> -endobj -1274 0 obj -<< -/D [ 181 0 R /XYZ 122 470 null ] ->> -endobj -1275 0 obj -<< -/D [ 181 0 R /XYZ 143 470 null ] ->> -endobj -1276 0 obj -<< -/D [ 181 0 R /XYZ 109 460 null ] ->> -endobj -1277 0 obj -<< -/D [ 181 0 R /XYZ 101 450 null ] ->> -endobj -1278 0 obj -<< -/D [ 181 0 R /XYZ 66 431 null ] ->> -endobj -1279 0 obj -<< -/D [ 181 0 R /XYZ 66 431 null ] ->> -endobj -1280 0 obj -<< -/D [ 181 0 R /XYZ 66 431 null ] ->> -endobj -1281 0 obj -<< -/D [ 181 0 R /XYZ 66 431 null ] ->> -endobj -1282 0 obj -<< -/D [ 181 0 R /XYZ 66 431 null ] ->> -endobj -1283 0 obj -<< -/D [ 181 0 R /XYZ 66 431 null ] ->> -endobj -1284 0 obj -<< -/D [ 181 0 R /XYZ 66 431 null ] ->> -endobj -1285 0 obj -<< -/D [ 181 0 R /XYZ 66 431 null ] ->> -endobj -1286 0 obj -<< -/D [ 181 0 R /XYZ 66 431 null ] ->> -endobj -1287 0 obj -<< -/D [ 181 0 R /XYZ 66 431 null ] ->> -endobj -1288 0 obj -<< -/D [ 181 0 R /XYZ 146 422 null ] ->> -endobj -1289 0 obj -<< -/D [ 181 0 R /XYZ 125 412 null ] ->> -endobj -1290 0 obj -<< -/D [ 181 0 R /XYZ 101 402 null ] ->> -endobj -1291 0 obj -<< -/D [ 181 0 R /XYZ 118 402 null ] ->> -endobj -1292 0 obj -<< -/D [ 181 0 R /XYZ 112 392 null ] ->> -endobj -1293 0 obj -<< -/D [ 181 0 R /XYZ 119 382 null ] ->> -endobj -1294 0 obj -<< -/D [ 181 0 R /XYZ 101 372 null ] ->> -endobj -1295 0 obj -<< -/D [ 181 0 R /XYZ 68 353 null ] ->> -endobj -1296 0 obj -<< -/D [ 181 0 R /XYZ 68 353 null ] ->> -endobj -1297 0 obj -<< -/D [ 181 0 R /XYZ 68 353 null ] ->> -endobj -1298 0 obj -<< -/D [ 181 0 R /XYZ 68 353 null ] ->> -endobj -1299 0 obj -<< -/D [ 181 0 R /XYZ 68 353 null ] ->> -endobj -1300 0 obj -<< -/D [ 181 0 R /XYZ 68 353 null ] ->> -endobj -1301 0 obj -<< -/D [ 181 0 R /XYZ 68 353 null ] ->> -endobj -1302 0 obj -<< -/D [ 181 0 R /XYZ 68 353 null ] ->> -endobj -1303 0 obj -<< -/D [ 181 0 R /XYZ 91 344 null ] ->> -endobj -1304 0 obj -<< -/D [ 181 0 R /XYZ 68 325 null ] ->> -endobj -1305 0 obj -<< -/D [ 181 0 R /XYZ 68 325 null ] ->> -endobj -1306 0 obj -<< -/D [ 181 0 R /XYZ 149 306 null ] ->> -endobj -1307 0 obj -<< -/D [ 181 0 R /XYZ 165 296 null ] ->> -endobj -1308 0 obj -<< -/D [ 181 0 R /XYZ 149 286 null ] ->> -endobj -1309 0 obj -<< -/D [ 181 0 R /XYZ 123 276 null ] ->> -endobj -1310 0 obj -<< -/D [ 181 0 R /XYZ 124 266 null ] ->> -endobj -1311 0 obj -<< -/D [ 181 0 R /XYZ 67 247 null ] ->> -endobj -1312 0 obj -<< -/D [ 181 0 R /XYZ 67 247 null ] ->> -endobj -1313 0 obj -<< -/D [ 181 0 R /XYZ 119 238 null ] ->> -endobj -1314 0 obj -<< -/D [ 181 0 R /XYZ 68 219 null ] ->> -endobj -1315 0 obj -<< -/D [ 181 0 R /XYZ 68 219 null ] ->> -endobj -1316 0 obj -<< -/D [ 181 0 R /XYZ 68 219 null ] ->> -endobj -1317 0 obj -<< -/D [ 181 0 R /XYZ 68 219 null ] ->> -endobj -1318 0 obj -<< -/D [ 181 0 R /XYZ 127 210 null ] ->> -endobj -1319 0 obj -<< -/D [ 181 0 R /XYZ 155 200 null ] ->> -endobj -1320 0 obj -<< -/D [ 181 0 R /XYZ 113 190 null ] ->> -endobj -1321 0 obj -<< -/D [ 181 0 R /XYZ 66 171 null ] ->> -endobj -1322 0 obj -<< -/D [ 181 0 R /XYZ 66 171 null ] ->> -endobj -1323 0 obj -<< -/D [ 181 0 R /XYZ 113 162 null ] ->> -endobj -1324 0 obj -<< -/D [ 181 0 R /XYZ 126 152 null ] ->> -endobj -1325 0 obj -<< -/D [ 181 0 R /XYZ 67 133 null ] ->> -endobj -1326 0 obj -<< -/D [ 181 0 R /XYZ 67 133 null ] ->> -endobj -1327 0 obj -<< -/D [ 181 0 R /XYZ 131 124 null ] ->> -endobj -1328 0 obj -<< -/D [ 181 0 R /XYZ 127 114 null ] ->> -endobj -1329 0 obj -<< -/D [ 181 0 R /XYZ 123 104 null ] ->> -endobj -1330 0 obj -<< -/D [ 181 0 R /XYZ 320 693 null ] ->> -endobj -1331 0 obj -<< -/D [ 181 0 R /XYZ 320 693 null ] ->> -endobj -1332 0 obj -<< -/D [ 181 0 R /XYZ 365 684 null ] ->> -endobj -1333 0 obj -<< -/D [ 181 0 R /XYZ 61 47 null ] ->> -endobj -1334 0 obj -<< -/D [ 181 0 R /XYZ 61 737 null ] ->> -endobj -1335 0 obj -<< -/D [ 181 0 R /XYZ 192 34 null ] ->> -endobj -1336 0 obj -<< -/D [ 181 0 R /XYZ 61 687 null ] ->> -endobj -1337 0 obj -<< -/D [ 181 0 R /XYZ 61 678 null ] ->> -endobj -1338 0 obj -<< -/D [ 181 0 R /XYZ 61 668 null ] ->> -endobj -1339 0 obj -<< -/D [ 181 0 R /XYZ 61 658 null ] ->> -endobj -1340 0 obj -<< -/D [ 181 0 R /XYZ 61 639 null ] ->> -endobj -1341 0 obj -<< -/D [ 181 0 R /XYZ 61 630 null ] ->> -endobj -1342 0 obj -<< -/D [ 181 0 R /XYZ 61 620 null ] ->> -endobj -1343 0 obj -<< -/D [ 181 0 R /XYZ 61 610 null ] ->> -endobj -1344 0 obj -<< -/D [ 181 0 R /XYZ 61 600 null ] ->> -endobj -1345 0 obj -<< -/D [ 181 0 R /XYZ 61 590 null ] ->> -endobj -1346 0 obj -<< -/D [ 181 0 R /XYZ 61 571 null ] ->> -endobj -1347 0 obj -<< -/D [ 181 0 R /XYZ 61 562 null ] ->> -endobj -1348 0 obj -<< -/D [ 181 0 R /XYZ 61 543 null ] ->> -endobj -1349 0 obj -<< -/D [ 181 0 R /XYZ 61 534 null ] ->> -endobj -1350 0 obj -<< -/D [ 181 0 R /XYZ 61 524 null ] ->> -endobj -1351 0 obj -<< -/D [ 181 0 R /XYZ 61 514 null ] ->> -endobj -1352 0 obj -<< -/D [ 181 0 R /XYZ 61 504 null ] ->> -endobj -1353 0 obj -<< -/D [ 181 0 R /XYZ 61 494 null ] ->> -endobj -1354 0 obj -<< -/D [ 181 0 R /XYZ 61 484 null ] ->> -endobj -1355 0 obj -<< -/D [ 181 0 R /XYZ 61 474 null ] ->> -endobj -1356 0 obj -<< -/D [ 181 0 R /XYZ 61 464 null ] ->> -endobj -1357 0 obj -<< -/D [ 181 0 R /XYZ 61 454 null ] ->> -endobj -1358 0 obj -<< -/D [ 181 0 R /XYZ 61 444 null ] ->> -endobj -1359 0 obj -<< -/D [ 181 0 R /XYZ 61 425 null ] ->> -endobj -1360 0 obj -<< -/D [ 181 0 R /XYZ 61 416 null ] ->> -endobj -1361 0 obj -<< -/D [ 181 0 R /XYZ 61 406 null ] ->> -endobj -1362 0 obj -<< -/D [ 181 0 R /XYZ 61 396 null ] ->> -endobj -1363 0 obj -<< -/D [ 181 0 R /XYZ 61 386 null ] ->> -endobj -1364 0 obj -<< -/D [ 181 0 R /XYZ 61 376 null ] ->> -endobj -1365 0 obj -<< -/D [ 181 0 R /XYZ 61 366 null ] ->> -endobj -1366 0 obj -<< -/D [ 181 0 R /XYZ 61 347 null ] ->> -endobj -1367 0 obj -<< -/D [ 181 0 R /XYZ 61 338 null ] ->> -endobj -1368 0 obj -<< -/D [ 181 0 R /XYZ 61 319 null ] ->> -endobj -1369 0 obj -<< -/D [ 181 0 R /XYZ 61 310 null ] ->> -endobj -1370 0 obj -<< -/D [ 181 0 R /XYZ 61 300 null ] ->> -endobj -1371 0 obj -<< -/D [ 181 0 R /XYZ 61 290 null ] ->> -endobj -1372 0 obj -<< -/D [ 181 0 R /XYZ 61 280 null ] ->> -endobj -1373 0 obj -<< -/D [ 181 0 R /XYZ 61 270 null ] ->> -endobj -1374 0 obj -<< -/D [ 181 0 R /XYZ 61 260 null ] ->> -endobj -1375 0 obj -<< -/D [ 181 0 R /XYZ 61 241 null ] ->> -endobj -1376 0 obj -<< -/D [ 181 0 R /XYZ 61 232 null ] ->> -endobj -1377 0 obj -<< -/D [ 181 0 R /XYZ 61 213 null ] ->> -endobj -1378 0 obj -<< -/D [ 181 0 R /XYZ 61 204 null ] ->> -endobj -1379 0 obj -<< -/D [ 181 0 R /XYZ 61 194 null ] ->> -endobj -1380 0 obj -<< -/D [ 181 0 R /XYZ 61 184 null ] ->> -endobj -1381 0 obj -<< -/D [ 181 0 R /XYZ 61 165 null ] ->> -endobj -1382 0 obj -<< -/D [ 181 0 R /XYZ 61 156 null ] ->> -endobj -1383 0 obj -<< -/D [ 181 0 R /XYZ 61 146 null ] ->> -endobj -1384 0 obj -<< -/D [ 181 0 R /XYZ 61 127 null ] ->> -endobj -1385 0 obj -<< -/D [ 181 0 R /XYZ 61 118 null ] ->> -endobj -1386 0 obj -<< -/D [ 181 0 R /XYZ 61 108 null ] ->> -endobj -1387 0 obj -<< -/D [ 181 0 R /XYZ 61 98 null ] ->> -endobj -1388 0 obj -<< -/D [ 181 0 R /XYZ 313 687 null ] ->> -endobj -1389 0 obj -<< -/D [ 181 0 R /XYZ 313 678 null ] ->> -endobj -1390 0 obj -<< -/D [ 181 0 R /XYZ 313 668 null ] ->> -endobj -1391 0 obj -<< -/D [ 181 0 R /XYZ 313 658 null ] ->> -endobj -1392 0 obj -<< -/D [ 181 0 R /XYZ 313 648 null ] ->> -endobj -1393 0 obj -<< -/D [ 181 0 R /XYZ 313 638 null ] ->> -endobj -1394 0 obj -<< -/D [ 181 0 R /XYZ 313 628 null ] ->> -endobj -1395 0 obj -<< -/D [ 181 0 R /XYZ 313 618 null ] ->> -endobj -1396 0 obj -<< -/D [ 181 0 R /XYZ 313 608 null ] ->> -endobj -1397 0 obj -<< -/D [ 181 0 R /XYZ 313 598 null ] ->> -endobj -1398 0 obj -<< -/D [ 181 0 R /XYZ 313 588 null ] ->> -endobj -1399 0 obj -<< -/D [ 181 0 R /XYZ 313 578 null ] ->> -endobj -1400 0 obj -<< -/D [ 181 0 R /XYZ 313 568 null ] ->> -endobj -1401 0 obj -<< -/D [ 181 0 R /XYZ 313 558 null ] ->> -endobj -1402 0 obj -<< -/D [ 181 0 R /XYZ 313 548 null ] ->> -endobj -1403 0 obj -<< -/D [ 181 0 R /XYZ 313 538 null ] ->> -endobj -1404 0 obj -<< -/D [ 181 0 R /XYZ 313 528 null ] ->> -endobj -1405 0 obj -<< -/D [ 181 0 R /XYZ 313 518 null ] ->> -endobj -1406 0 obj -<< -/D [ 181 0 R /XYZ 313 508 null ] ->> -endobj -1407 0 obj -<< -/D [ 181 0 R /XYZ 313 498 null ] ->> -endobj -1408 0 obj -<< -/D [ 181 0 R /XYZ 313 488 null ] ->> -endobj -1409 0 obj -<< -/D [ 181 0 R /XYZ 313 478 null ] ->> -endobj -1410 0 obj -<< -/D [ 181 0 R /XYZ 313 468 null ] ->> -endobj -1411 0 obj -<< -/D [ 181 0 R /XYZ 313 458 null ] ->> -endobj -1412 0 obj -<< -/D [ 181 0 R /XYZ 313 448 null ] ->> -endobj -1413 0 obj -<< -/D [ 181 0 R /XYZ 313 438 null ] ->> -endobj -1414 0 obj -<< -/D [ 181 0 R /XYZ 313 428 null ] ->> -endobj -1415 0 obj -<< -/D [ 181 0 R /XYZ 313 418 null ] ->> -endobj -1416 0 obj -<< -/D [ 181 0 R /XYZ 313 408 null ] ->> -endobj -1417 0 obj -<< -/D [ 181 0 R /XYZ 313 398 null ] ->> -endobj -1418 0 obj -<< -/D [ 181 0 R /XYZ 313 388 null ] ->> -endobj -1419 0 obj -<< -/D [ 181 0 R /XYZ 313 378 null ] ->> -endobj -1420 0 obj -<< -/D [ 181 0 R /XYZ 313 368 null ] ->> -endobj -1421 0 obj -<< -/D [ 181 0 R /XYZ 313 358 null ] ->> -endobj -1422 0 obj -<< -/D [ 181 0 R /XYZ 313 348 null ] ->> -endobj -1423 0 obj -<< -/D [ 181 0 R /XYZ 313 338 null ] ->> -endobj -1424 0 obj -<< -/D [ 181 0 R /XYZ 313 328 null ] ->> -endobj -1425 0 obj -<< -/D [ 181 0 R /XYZ 313 318 null ] ->> -endobj -1426 0 obj -<< -/D [ 181 0 R /XYZ 313 308 null ] ->> -endobj -1427 0 obj -<< -/D [ 181 0 R /XYZ 313 298 null ] ->> -endobj -1428 0 obj -<< -/D [ 181 0 R /XYZ 313 288 null ] ->> -endobj -1429 0 obj -<< -/D [ 181 0 R /XYZ 313 278 null ] ->> -endobj -1430 0 obj -<< -/D [ 181 0 R /XYZ 313 268 null ] ->> -endobj -1431 0 obj -<< -/D [ 181 0 R /XYZ 313 258 null ] ->> -endobj -1432 0 obj -<< -/D [ 181 0 R /XYZ 313 248 null ] ->> -endobj -1433 0 obj -<< -/D [ 181 0 R /XYZ 313 238 null ] ->> -endobj -1434 0 obj -<< -/D [ 181 0 R /XYZ 313 228 null ] ->> -endobj -1435 0 obj -<< -/D [ 181 0 R /XYZ 313 218 null ] ->> -endobj -1436 0 obj -<< -/D [ 181 0 R /XYZ 313 208 null ] ->> -endobj -1437 0 obj -<< -/D [ 181 0 R /XYZ 313 198 null ] ->> -endobj -1438 0 obj -<< -/D [ 181 0 R /XYZ 313 188 null ] ->> -endobj -1439 0 obj -<< -/D [ 181 0 R /XYZ 313 178 null ] ->> -endobj -1440 0 obj -<< -/D [ 181 0 R /XYZ 313 168 null ] ->> -endobj -1441 0 obj -<< -/D [ 181 0 R /XYZ 313 158 null ] ->> -endobj -1442 0 obj -<< -/D [ 181 0 R /XYZ 313 148 null ] ->> -endobj -1443 0 obj -<< -/D [ 181 0 R /XYZ 313 138 null ] ->> -endobj -1444 0 obj -<< -/D [ 181 0 R /XYZ 313 128 null ] ->> -endobj -1445 0 obj -<< -/D [ 181 0 R /XYZ 313 118 null ] ->> -endobj -1446 0 obj -<< -/D [ 181 0 R /XYZ 313 108 null ] ->> -endobj -1447 0 obj -<< -/D [ 181 0 R /XYZ 313 98 null ] ->> -endobj -1448 0 obj -<< -/D [ 181 0 R /XYZ 313 88 null ] ->> -endobj -1449 0 obj -<< -/D [ 227 0 R /XYZ null null null ] ->> -endobj -1450 0 obj -<< -/D [ 227 0 R /XYZ 61 47 null ] ->> -endobj -1451 0 obj -<< -/D [ 227 0 R /XYZ 61 737 null ] ->> -endobj -1452 0 obj -<< -/D [ 227 0 R /XYZ 192 34 null ] ->> -endobj -1453 0 obj -<< -/D [ 227 0 R /XYZ 63 687 null ] ->> -endobj -1454 0 obj -<< -/D [ 227 0 R /XYZ 63 677 null ] ->> -endobj -1455 0 obj -<< -/D [ 227 0 R /XYZ 63 667 null ] ->> -endobj -1456 0 obj -<< -/D [ 227 0 R /XYZ 63 657 null ] ->> -endobj -1457 0 obj -<< -/D [ 227 0 R /XYZ 63 647 null ] ->> -endobj -1458 0 obj -<< -/D [ 227 0 R /XYZ 63 637 null ] ->> -endobj -1459 0 obj -<< -/D [ 227 0 R /XYZ 63 627 null ] ->> -endobj -1460 0 obj -<< -/D [ 227 0 R /XYZ 63 617 null ] ->> -endobj -1461 0 obj -<< -/D [ 227 0 R /XYZ 63 607 null ] ->> -endobj -1462 0 obj -<< -/D [ 227 0 R /XYZ 63 597 null ] ->> -endobj -1463 0 obj -<< -/D [ 227 0 R /XYZ 63 587 null ] ->> -endobj -1464 0 obj -<< -/D [ 227 0 R /XYZ 63 577 null ] ->> -endobj -1465 0 obj -<< -/D [ 227 0 R /XYZ 63 567 null ] ->> -endobj -1466 0 obj -<< -/D [ 227 0 R /XYZ 63 557 null ] ->> -endobj -1467 0 obj -<< -/D [ 227 0 R /XYZ 63 547 null ] ->> -endobj -1468 0 obj -<< -/D [ 227 0 R /XYZ 63 537 null ] ->> -endobj -1469 0 obj -<< -/D [ 227 0 R /XYZ 63 527 null ] ->> -endobj -1470 0 obj -<< -/Limits [ (F1)(G1.1470)] -/Names [ (F1)296 0 R (F2)402 0 R (F3)464 0 R (F4)534 0 R (F5)562 0 R (F6)1243 0 R -(G1.1050)400 0 R (G1.1200)335 0 R (G1.1219)324 0 R (G1.1222)325 0 R -(G1.1313)326 0 R (G1.1314)327 0 R (G1.1322)331 0 R (G1.1323)332 0 R -(G1.1344)316 0 R (G1.1345)317 0 R (G1.1361)318 0 R (G1.1365)305 0 R -(G1.1366)306 0 R (G1.1367)307 0 R (G1.1376)330 0 R (G1.1421)398 0 R -(G1.1422)399 0 R (G1.1430)336 0 R (G1.1431)337 0 R (G1.1432)338 0 R -(G1.1433)339 0 R (G1.1434)342 0 R (G1.1435)343 0 R (G1.1436)344 0 R -(G1.1437)345 0 R (G1.1438)346 0 R (G1.1439)348 0 R (G1.1440)349 0 R -(G1.1441)350 0 R (G1.1442)351 0 R (G1.1443)355 0 R (G1.1444)360 0 R -(G1.1445)361 0 R (G1.1446)362 0 R (G1.1447)363 0 R (G1.1448)365 0 R -(G1.1449)366 0 R (G1.1450)367 0 R (G1.1451)368 0 R (G1.1452)369 0 R -(G1.1453)370 0 R (G1.1454)371 0 R (G1.1455)372 0 R (G1.1456)373 0 R -(G1.1457)374 0 R (G1.1458)375 0 R (G1.1459)376 0 R (G1.1460)378 0 R -(G1.1461)379 0 R (G1.1462)380 0 R (G1.1463)381 0 R (G1.1464)387 0 R -(G1.1465)388 0 R (G1.1466)389 0 R (G1.1467)390 0 R (G1.1468)391 0 R -(G1.1469)392 0 R (G1.1470)394 0 R ] ->> -endobj -1471 0 obj -<< -/Limits [ (G1.1471)(G2.2469)] -/Names [ (G1.1471)395 0 R (G1.1472)396 0 R (G1.1473)397 0 R (G1.1476)340 0 R -(G1.1477)341 0 R (G1.1478)347 0 R (G1.1479)352 0 R (G1.1480)353 0 R -(G1.1481)354 0 R (G1.1482)364 0 R (G1.1483)377 0 R (G1.1484)382 0 R -(G1.1485)383 0 R (G1.1486)384 0 R (G1.1487)393 0 R (G1.1492)297 0 R -(G1.542)320 0 R (G1.547)321 0 R (G1.548)322 0 R (G1.56)298 0 R (G1.568) -357 0 R (G1.573)358 0 R (G1.574)359 0 R (G1.757)333 0 R (G1.770) -334 0 R (G1.910)299 0 R (G1.911)300 0 R (G1.912)301 0 R (G1.913) -302 0 R (G1.914)303 0 R (G1.915)304 0 R (G1.916)308 0 R (G1.917) -309 0 R (G1.918)310 0 R (G1.919)311 0 R (G1.920)312 0 R (G1.921) -313 0 R (G1.922)314 0 R (G1.923)315 0 R (G1.943)323 0 R (G1.947) -328 0 R (G1.975)329 0 R (G2.1634)458 0 R (G2.1639)459 0 R (G2.1640) -460 0 R (G2.1684)427 0 R (G2.1685)428 0 R (G2.2429)430 0 R (G2.2439) -431 0 R (G2.2441)432 0 R (G2.2443)433 0 R (G2.2445)434 0 R (G2.2447) -435 0 R (G2.2449)436 0 R (G2.2451)437 0 R (G2.2453)438 0 R (G2.2455) -439 0 R (G2.2457)440 0 R (G2.2459)441 0 R (G2.2461)442 0 R (G2.2463) -443 0 R (G2.2465)444 0 R (G2.2467)445 0 R (G2.2469)446 0 R ] ->> -endobj -1472 0 obj -<< -/Limits [ (G2.2471)(G3.513159)] -/Names [ (G2.2471)447 0 R (G2.2473)448 0 R (G2.2475)449 0 R (G2.2477)450 0 R -(G2.2479)451 0 R (G2.2481)452 0 R (G2.2483)453 0 R (G2.2485)461 0 R -(G2.2487)462 0 R (G2.945)429 0 R (G3.509745)469 0 R (G3.510678)471 0 R -(G3.510679)472 0 R (G3.510683)473 0 R (G3.510684)474 0 R (G3.510685) -475 0 R (G3.510686)476 0 R (G3.510690)489 0 R (G3.510693)490 0 R -(G3.510696)491 0 R (G3.510756)531 0 R (G3.510898)514 0 R (G3.511059) -470 0 R (G3.511102)493 0 R (G3.511429)497 0 R (G3.511430)498 0 R -(G3.511431)499 0 R (G3.511432)500 0 R (G3.511433)501 0 R (G3.511434) -502 0 R (G3.511435)503 0 R (G3.511441)494 0 R (G3.511442)496 0 R -(G3.511445)495 0 R (G3.512132)492 0 R (G3.512825)508 0 R (G3.512826) -509 0 R (G3.512827)510 0 R (G3.512828)511 0 R (G3.512829)512 0 R -(G3.512830)513 0 R (G3.512841)515 0 R (G3.512842)516 0 R (G3.512843) -517 0 R (G3.512844)518 0 R (G3.512845)519 0 R (G3.512846)520 0 R -(G3.512847)521 0 R (G3.512848)522 0 R (G3.512849)523 0 R (G3.512850) -524 0 R (G3.512851)525 0 R (G3.512852)526 0 R (G3.512853)527 0 R -(G3.512854)529 0 R (G3.512855)530 0 R (G3.512885)528 0 R (G3.513108) -486 0 R (G3.513114)487 0 R (G3.513115)488 0 R (G3.513135)505 0 R -(G3.513140)506 0 R (G3.513141)507 0 R (G3.513159)467 0 R ] ->> -endobj -1473 0 obj -<< -/Limits [ (G3.513160)(G5.519439)] -/Names [ (G3.513160)468 0 R (G4.509745)543 0 R (G4.513240)558 0 R (G4.513245) -559 0 R (G4.513246)560 0 R (G4.513293)541 0 R (G4.513294)542 0 R -(G4.516614)544 0 R (G4.517638)551 0 R (G4.517648)552 0 R (G4.517779) -561 0 R (G4.517781)545 0 R (G4.517782)546 0 R (G4.517791)547 0 R -(G4.517803)548 0 R (G4.517804)549 0 R (G4.517805)550 0 R (G4.518270) -553 0 R (G4.518273)554 0 R (G4.518275)555 0 R (G4.518278)556 0 R -(G5.509745)567 0 R (G5.516614)568 0 R (G5.518301)571 0 R (G5.519379) -572 0 R (G5.519380)573 0 R (G5.519381)592 0 R (G5.519383)593 0 R -(G5.519384)594 0 R (G5.519388)595 0 R (G5.519392)596 0 R (G5.519396) -597 0 R (G5.519400)598 0 R (G5.519404)599 0 R (G5.519409)609 0 R -(G5.519411)611 0 R (G5.519412)612 0 R (G5.519413)613 0 R (G5.519414) -614 0 R (G5.519415)615 0 R (G5.519416)616 0 R (G5.519417)617 0 R -(G5.519418)618 0 R (G5.519419)620 0 R (G5.519420)621 0 R (G5.519421) -622 0 R (G5.519422)623 0 R (G5.519423)624 0 R (G5.519424)625 0 R -(G5.519425)626 0 R (G5.519426)627 0 R (G5.519427)628 0 R (G5.519428) -629 0 R (G5.519429)630 0 R (G5.519430)631 0 R (G5.519431)632 0 R -(G5.519432)633 0 R (G5.519433)634 0 R (G5.519434)635 0 R (G5.519435) -636 0 R (G5.519436)637 0 R (G5.519437)638 0 R (G5.519438)639 0 R -(G5.519439)640 0 R ] ->> -endobj -1474 0 obj -<< -/Limits [ (G5.519440)(G5.519504)] -/Names [ (G5.519440)641 0 R (G5.519441)642 0 R (G5.519442)643 0 R (G5.519443) -644 0 R (G5.519444)645 0 R (G5.519445)646 0 R (G5.519446)650 0 R -(G5.519447)651 0 R (G5.519448)652 0 R (G5.519449)653 0 R (G5.519450) -654 0 R (G5.519451)655 0 R (G5.519452)656 0 R (G5.519453)657 0 R -(G5.519454)658 0 R (G5.519455)659 0 R (G5.519457)660 0 R (G5.519458) -661 0 R (G5.519459)662 0 R (G5.519460)663 0 R (G5.519461)664 0 R -(G5.519462)665 0 R (G5.519463)666 0 R (G5.519464)667 0 R (G5.519465) -668 0 R (G5.519466)669 0 R (G5.519467)670 0 R (G5.519468)671 0 R -(G5.519469)672 0 R (G5.519470)673 0 R (G5.519471)674 0 R (G5.519472) -675 0 R (G5.519473)676 0 R (G5.519474)678 0 R (G5.519475)679 0 R -(G5.519476)680 0 R (G5.519477)681 0 R (G5.519478)682 0 R (G5.519479) -683 0 R (G5.519480)684 0 R (G5.519481)685 0 R (G5.519482)686 0 R -(G5.519483)687 0 R (G5.519484)688 0 R (G5.519485)689 0 R (G5.519486) -690 0 R (G5.519487)691 0 R (G5.519488)692 0 R (G5.519489)693 0 R -(G5.519490)694 0 R (G5.519491)695 0 R (G5.519492)696 0 R (G5.519493) -697 0 R (G5.519494)698 0 R (G5.519495)699 0 R (G5.519496)700 0 R -(G5.519497)701 0 R (G5.519498)702 0 R (G5.519499)703 0 R (G5.519500) -707 0 R (G5.519501)708 0 R (G5.519502)709 0 R (G5.519503)710 0 R -(G5.519504)711 0 R ] ->> -endobj -1475 0 obj -<< -/Limits [ (G5.519505)(G5.519583)] -/Names [ (G5.519505)712 0 R (G5.519506)713 0 R (G5.519507)714 0 R (G5.519508) -715 0 R (G5.519509)716 0 R (G5.519510)717 0 R (G5.519511)718 0 R -(G5.519512)719 0 R (G5.519513)720 0 R (G5.519514)721 0 R (G5.519515) -722 0 R (G5.519516)723 0 R (G5.519517)724 0 R (G5.519518)725 0 R -(G5.519519)726 0 R (G5.519520)727 0 R (G5.519521)728 0 R (G5.519522) -729 0 R (G5.519523)730 0 R (G5.519524)731 0 R (G5.519525)737 0 R -(G5.519526)738 0 R (G5.519527)739 0 R (G5.519528)740 0 R (G5.519529) -741 0 R (G5.519530)742 0 R (G5.519534)743 0 R (G5.519536)745 0 R -(G5.519537)746 0 R (G5.519538)747 0 R (G5.519539)748 0 R (G5.519540) -749 0 R (G5.519544)750 0 R (G5.519545)751 0 R (G5.519546)752 0 R -(G5.519547)753 0 R (G5.519548)754 0 R (G5.519549)755 0 R (G5.519553) -762 0 R (G5.519555)763 0 R (G5.519560)765 0 R (G5.519561)766 0 R -(G5.519562)767 0 R (G5.519563)768 0 R (G5.519564)769 0 R (G5.519565) -770 0 R (G5.519566)771 0 R (G5.519567)772 0 R (G5.519568)773 0 R -(G5.519569)774 0 R (G5.519570)775 0 R (G5.519571)776 0 R (G5.519572) -777 0 R (G5.519573)778 0 R (G5.519574)779 0 R (G5.519575)780 0 R -(G5.519576)781 0 R (G5.519577)787 0 R (G5.519578)788 0 R (G5.519579) -789 0 R (G5.519580)790 0 R (G5.519581)791 0 R (G5.519582)792 0 R -(G5.519583)793 0 R ] ->> -endobj -1476 0 obj -<< -/Limits [ (G5.519584)(G5.519666)] -/Names [ (G5.519584)794 0 R (G5.519585)795 0 R (G5.519586)796 0 R (G5.519587) -797 0 R (G5.519588)798 0 R (G5.519592)799 0 R (G5.519594)800 0 R -(G5.519595)801 0 R (G5.519596)802 0 R (G5.519598)808 0 R (G5.519599) -809 0 R (G5.519604)810 0 R (G5.519606)811 0 R (G5.519607)812 0 R -(G5.519611)820 0 R (G5.519613)821 0 R (G5.519614)822 0 R (G5.519616) -823 0 R (G5.519617)824 0 R (G5.519621)827 0 R (G5.519622)828 0 R -(G5.519623)829 0 R (G5.519624)830 0 R (G5.519625)831 0 R (G5.519626) -832 0 R (G5.519627)833 0 R (G5.519628)834 0 R (G5.519629)835 0 R -(G5.519630)836 0 R (G5.519631)838 0 R (G5.519632)839 0 R (G5.519633) -840 0 R (G5.519634)841 0 R (G5.519635)842 0 R (G5.519636)843 0 R -(G5.519637)844 0 R (G5.519638)845 0 R (G5.519639)846 0 R (G5.519640) -847 0 R (G5.519641)848 0 R (G5.519642)849 0 R (G5.519643)850 0 R -(G5.519644)851 0 R (G5.519645)852 0 R (G5.519646)853 0 R (G5.519647) -854 0 R (G5.519648)855 0 R (G5.519649)856 0 R (G5.519650)857 0 R -(G5.519651)858 0 R (G5.519652)862 0 R (G5.519653)863 0 R (G5.519654) -864 0 R (G5.519655)865 0 R (G5.519656)866 0 R (G5.519657)867 0 R -(G5.519658)868 0 R (G5.519659)869 0 R (G5.519660)870 0 R (G5.519661) -871 0 R (G5.519663)872 0 R (G5.519664)873 0 R (G5.519665)874 0 R -(G5.519666)875 0 R ] ->> -endobj -1477 0 obj -<< -/Limits [ (G5.519667)(G5.519737)] -/Names [ (G5.519667)876 0 R (G5.519668)877 0 R (G5.519669)878 0 R (G5.519670) -879 0 R (G5.519671)880 0 R (G5.519672)881 0 R (G5.519673)882 0 R -(G5.519674)884 0 R (G5.519675)885 0 R (G5.519676)886 0 R (G5.519677) -887 0 R (G5.519678)888 0 R (G5.519679)889 0 R (G5.519680)890 0 R -(G5.519681)891 0 R (G5.519682)892 0 R (G5.519683)893 0 R (G5.519684) -894 0 R (G5.519685)895 0 R (G5.519686)896 0 R (G5.519687)897 0 R -(G5.519688)898 0 R (G5.519689)899 0 R (G5.519690)900 0 R (G5.519691) -901 0 R (G5.519692)902 0 R (G5.519693)903 0 R (G5.519694)904 0 R -(G5.519695)905 0 R (G5.519696)906 0 R (G5.519697)907 0 R (G5.519698) -908 0 R (G5.519699)912 0 R (G5.519700)913 0 R (G5.519701)914 0 R -(G5.519702)915 0 R (G5.519703)916 0 R (G5.519705)917 0 R (G5.519706) -918 0 R (G5.519707)919 0 R (G5.519708)920 0 R (G5.519709)921 0 R -(G5.519710)922 0 R (G5.519711)923 0 R (G5.519712)924 0 R (G5.519713) -925 0 R (G5.519714)926 0 R (G5.519715)927 0 R (G5.519716)928 0 R -(G5.519717)929 0 R (G5.519718)930 0 R (G5.519719)931 0 R (G5.519723) -935 0 R (G5.519724)936 0 R (G5.519725)937 0 R (G5.519726)938 0 R -(G5.519729)939 0 R (G5.519731)940 0 R (G5.519732)941 0 R (G5.519733) -942 0 R (G5.519734)943 0 R (G5.519735)944 0 R (G5.519736)945 0 R -(G5.519737)946 0 R ] ->> -endobj -1478 0 obj -<< -/Limits [ (G5.519738)(G5.519801)] -/Names [ (G5.519738)949 0 R (G5.519739)950 0 R (G5.519740)951 0 R (G5.519741) -952 0 R (G5.519742)953 0 R (G5.519743)954 0 R (G5.519744)955 0 R -(G5.519745)956 0 R (G5.519746)957 0 R (G5.519747)958 0 R (G5.519748) -959 0 R (G5.519749)960 0 R (G5.519750)961 0 R (G5.519751)962 0 R -(G5.519752)963 0 R (G5.519753)964 0 R (G5.519754)965 0 R (G5.519755) -966 0 R (G5.519756)967 0 R (G5.519757)968 0 R (G5.519758)969 0 R -(G5.519759)970 0 R (G5.519760)971 0 R (G5.519761)974 0 R (G5.519762) -975 0 R (G5.519763)976 0 R (G5.519764)977 0 R (G5.519765)978 0 R -(G5.519766)979 0 R (G5.519767)980 0 R (G5.519768)981 0 R (G5.519769) -982 0 R (G5.519770)983 0 R (G5.519771)984 0 R (G5.519772)985 0 R -(G5.519773)986 0 R (G5.519774)987 0 R (G5.519775)988 0 R (G5.519776) -989 0 R (G5.519777)990 0 R (G5.519778)991 0 R (G5.519779)992 0 R -(G5.519780)993 0 R (G5.519781)994 0 R (G5.519782)995 0 R (G5.519783) -996 0 R (G5.519784)997 0 R (G5.519785)998 0 R (G5.519786)1002 0 R -(G5.519787)1003 0 R (G5.519788)1004 0 R (G5.519789)1005 0 R (G5.519790) -1006 0 R (G5.519791)1007 0 R (G5.519792)1008 0 R (G5.519793)1009 0 R -(G5.519794)1010 0 R (G5.519795)1011 0 R (G5.519796)1012 0 R (G5.519797) -1013 0 R (G5.519798)1014 0 R (G5.519799)1015 0 R (G5.519800)1016 0 R -(G5.519801)1017 0 R ] ->> -endobj -1479 0 obj -<< -/Limits [ (G5.519802)(G5.519878)] -/Names [ (G5.519802)1018 0 R (G5.519803)1019 0 R (G5.519804)1020 0 R (G5.519805) -1021 0 R (G5.519806)1022 0 R (G5.519807)1023 0 R (G5.519808)1024 0 R -(G5.519809)1025 0 R (G5.519810)1026 0 R (G5.519811)1028 0 R (G5.519812) -1029 0 R (G5.519813)1030 0 R (G5.519814)1031 0 R (G5.519815)1032 0 R -(G5.519816)1033 0 R (G5.519817)1034 0 R (G5.519818)1035 0 R (G5.519819) -1036 0 R (G5.519820)1037 0 R (G5.519821)1038 0 R (G5.519822)1039 0 R -(G5.519823)1040 0 R (G5.519824)1041 0 R (G5.519825)1042 0 R (G5.519826) -1043 0 R (G5.519827)1044 0 R (G5.519828)1045 0 R (G5.519832)1049 0 R -(G5.519833)1050 0 R (G5.519834)1051 0 R (G5.519842)1052 0 R (G5.519843) -1053 0 R (G5.519844)1054 0 R (G5.519845)1055 0 R (G5.519846)1056 0 R -(G5.519847)1057 0 R (G5.519848)1059 0 R (G5.519849)1060 0 R (G5.519850) -1061 0 R (G5.519851)1062 0 R (G5.519852)1063 0 R (G5.519853)1064 0 R -(G5.519854)1065 0 R (G5.519855)1066 0 R (G5.519856)1067 0 R (G5.519857) -1068 0 R (G5.519858)1069 0 R (G5.519859)1070 0 R (G5.519863)1071 0 R -(G5.519864)1073 0 R (G5.519865)1075 0 R (G5.519866)1076 0 R (G5.519867) -1077 0 R (G5.519868)1078 0 R (G5.519869)1079 0 R (G5.519870)1080 0 R -(G5.519871)1081 0 R (G5.519872)1082 0 R (G5.519873)1083 0 R (G5.519874) -1084 0 R (G5.519875)1085 0 R (G5.519876)1086 0 R (G5.519877)1087 0 R -(G5.519878)1088 0 R ] ->> -endobj -1480 0 obj -<< -/Limits [ (G5.519879)(G5.519957)] -/Names [ (G5.519879)1089 0 R (G5.519880)1090 0 R (G5.519881)1091 0 R (G5.519882) -1092 0 R (G5.519883)1093 0 R (G5.519884)1096 0 R (G5.519885)1097 0 R -(G5.519886)1098 0 R (G5.519887)1099 0 R (G5.519888)1100 0 R (G5.519889) -1101 0 R (G5.519890)1102 0 R (G5.519891)1103 0 R (G5.519892)1104 0 R -(G5.519893)1105 0 R (G5.519894)1106 0 R (G5.519895)1107 0 R (G5.519899) -1108 0 R (G5.519900)1109 0 R (G5.519901)1113 0 R (G5.519902)1114 0 R -(G5.519903)1115 0 R (G5.519904)1116 0 R (G5.519905)1117 0 R (G5.519906) -1118 0 R (G5.519907)1119 0 R (G5.519908)1120 0 R (G5.519909)1121 0 R -(G5.519910)1122 0 R (G5.519911)1123 0 R (G5.519912)1124 0 R (G5.519913) -1125 0 R (G5.519917)1126 0 R (G5.519918)1129 0 R (G5.519919)1130 0 R -(G5.519920)1131 0 R (G5.519921)1132 0 R (G5.519922)1133 0 R (G5.519923) -1134 0 R (G5.519927)1135 0 R (G5.519928)1136 0 R (G5.519929)1137 0 R -(G5.519930)1138 0 R (G5.519934)1139 0 R (G5.519935)1140 0 R (G5.519936) -1144 0 R (G5.519937)1145 0 R (G5.519938)1146 0 R (G5.519939)1147 0 R -(G5.519940)1148 0 R (G5.519941)1149 0 R (G5.519942)1150 0 R (G5.519943) -1151 0 R (G5.519944)1152 0 R (G5.519945)1153 0 R (G5.519946)1154 0 R -(G5.519947)1155 0 R (G5.519948)1156 0 R (G5.519949)1157 0 R (G5.519950) -1158 0 R (G5.519951)1159 0 R (G5.519952)1160 0 R (G5.519953)1161 0 R -(G5.519957)1163 0 R ] ->> -endobj -1481 0 obj -<< -/Limits [ (G5.519958)(G5.521954)] -/Names [ (G5.519958)1164 0 R (G5.519959)1165 0 R (G5.519960)1171 0 R (G5.519962) -1173 0 R (G5.519963)1174 0 R (G5.519964)1175 0 R (G5.519967)1178 0 R -(G5.519969)1180 0 R (G5.519971)1182 0 R (G5.519973)1183 0 R (G5.519975) -1185 0 R (G5.519977)1187 0 R (G5.519979)1188 0 R (G5.519981)1189 0 R -(G5.519983)1190 0 R (G5.519984)1191 0 R (G5.519985)1192 0 R (G5.519987) -1193 0 R (G5.519989)1194 0 R (G5.519991)1195 0 R (G5.519993)1196 0 R -(G5.519995)1197 0 R (G5.519997)1198 0 R (G5.519999)1199 0 R (G5.520001) -1200 0 R (G5.520003)1201 0 R (G5.520005)1202 0 R (G5.520007)1203 0 R -(G5.520009)1204 0 R (G5.520011)1205 0 R (G5.520013)1206 0 R (G5.520015) -1207 0 R (G5.520016)1208 0 R (G5.520018)1209 0 R (G5.520020)1210 0 R -(G5.520022)1211 0 R (G5.520024)1212 0 R (G5.520026)1213 0 R (G5.520028) -1214 0 R (G5.520030)1223 0 R (G5.520032)1224 0 R (G5.520034)1225 0 R -(G5.520036)1226 0 R (G5.520037)1227 0 R (G5.520038)1228 0 R (G5.520039) -1229 0 R (G5.520040)1230 0 R (G5.520041)1231 0 R (G5.520043)1232 0 R -(G5.520045)1233 0 R (G5.520047)1234 0 R (G5.520049)1235 0 R (G5.520051) -1236 0 R (G5.520053)1237 0 R (G5.520055)1238 0 R (G5.520057)1239 0 R -(G5.520059)1240 0 R (G5.520061)1241 0 R (G5.520063)1242 0 R (G5.520065) -1220 0 R (G5.520066)1221 0 R (G5.520068)1222 0 R (G5.520833)610 0 R -(G5.521954)744 0 R ] ->> -endobj -1482 0 obj -<< -/Limits [ (G5.522300)(G6.47978)] -/Names [ (G5.522300)1072 0 R (G5.522449)1176 0 R (G5.522450)1181 0 R (G5.522451) -1184 0 R (G5.522452)1179 0 R (G5.522453)1186 0 R (G5.522455)1177 0 R -(G5.522823)1172 0 R (G5.523004)764 0 R (G5.525253)589 0 R (G5.525258) -590 0 R (G5.525259)591 0 R (G5.525279)606 0 R (G5.525284)607 0 R -(G5.525285)608 0 R (G5.525309)565 0 R (G5.525310)566 0 R (G5.528680) -569 0 R (G5.528683)574 0 R (G5.528684)575 0 R (G5.528686)576 0 R -(G5.528687)577 0 R (G5.528692)580 0 R (G5.528697)581 0 R (G5.528702) -582 0 R (G5.528707)583 0 R (G5.528712)584 0 R (G5.528717)585 0 R -(G5.528718)570 0 R (G5.528722)578 0 R (G5.528724)579 0 R (G6.47512) -1450 0 R (G6.47517)1451 0 R (G6.47518)1452 0 R (G6.47533)1333 0 R -(G6.47538)1334 0 R (G6.47539)1335 0 R (G6.47918)1336 0 R (G6.47922) -1337 0 R (G6.47924)1338 0 R (G6.47926)1339 0 R (G6.47928)1340 0 R -(G6.47931)1341 0 R (G6.47933)1342 0 R (G6.47935)1343 0 R (G6.47937) -1344 0 R (G6.47939)1345 0 R (G6.47941)1346 0 R (G6.47943)1347 0 R -(G6.47945)1348 0 R (G6.47947)1349 0 R (G6.47949)1350 0 R (G6.47951) -1351 0 R (G6.47953)1352 0 R (G6.47955)1353 0 R (G6.47957)1354 0 R -(G6.47959)1355 0 R (G6.47961)1356 0 R (G6.47964)1357 0 R (G6.47966) -1358 0 R (G6.47968)1359 0 R (G6.47974)1360 0 R (G6.47976)1361 0 R -(G6.47978)1362 0 R ] ->> -endobj -1483 0 obj -<< -/Limits [ (G6.47981)(G6.48074)] -/Names [ (G6.47981)1363 0 R (G6.47983)1364 0 R (G6.47985)1365 0 R (G6.47987) -1366 0 R (G6.47992)1367 0 R (G6.47994)1368 0 R (G6.47996)1369 0 R -(G6.47997)1370 0 R (G6.47999)1371 0 R (G6.48001)1372 0 R (G6.48003) -1373 0 R (G6.48005)1374 0 R (G6.48007)1375 0 R (G6.48009)1376 0 R -(G6.48011)1377 0 R (G6.48014)1378 0 R (G6.48016)1379 0 R (G6.48018) -1380 0 R (G6.48020)1381 0 R (G6.48022)1382 0 R (G6.48024)1383 0 R -(G6.48026)1384 0 R (G6.48028)1385 0 R (G6.48030)1386 0 R (G6.48032) -1387 0 R (G6.48034)1388 0 R (G6.48036)1389 0 R (G6.48038)1390 0 R -(G6.48039)1391 0 R (G6.48040)1392 0 R (G6.48041)1393 0 R (G6.48042) -1394 0 R (G6.48043)1395 0 R (G6.48044)1396 0 R (G6.48045)1397 0 R -(G6.48046)1398 0 R (G6.48047)1399 0 R (G6.48048)1400 0 R (G6.48049) -1401 0 R (G6.48050)1402 0 R (G6.48051)1403 0 R (G6.48052)1404 0 R -(G6.48053)1405 0 R (G6.48054)1406 0 R (G6.48055)1407 0 R (G6.48056) -1408 0 R (G6.48057)1409 0 R (G6.48058)1410 0 R (G6.48059)1411 0 R -(G6.48060)1412 0 R (G6.48061)1413 0 R (G6.48062)1414 0 R (G6.48063) -1415 0 R (G6.48064)1416 0 R (G6.48065)1417 0 R (G6.48066)1418 0 R -(G6.48067)1419 0 R (G6.48068)1420 0 R (G6.48069)1421 0 R (G6.48070) -1422 0 R (G6.48071)1423 0 R (G6.48072)1424 0 R (G6.48073)1425 0 R -(G6.48074)1426 0 R ] ->> -endobj -1484 0 obj -<< -/Limits [ (G6.48075)(I2.1.2484)] -/Names [ (G6.48075)1427 0 R (G6.48076)1428 0 R (G6.48077)1429 0 R (G6.48078) -1430 0 R (G6.48079)1431 0 R (G6.48080)1432 0 R (G6.48081)1433 0 R -(G6.48082)1434 0 R (G6.48083)1435 0 R (G6.48084)1436 0 R (G6.48085) -1437 0 R (G6.48086)1438 0 R (G6.48087)1439 0 R (G6.48088)1440 0 R -(G6.48089)1441 0 R (G6.48090)1442 0 R (G6.48091)1443 0 R (G6.48092) -1444 0 R (G6.48093)1445 0 R (G6.48094)1446 0 R (G6.48095)1447 0 R -(G6.48096)1448 0 R (G6.48097)1453 0 R (G6.48106)1454 0 R (G6.48107) -1455 0 R (G6.48108)1456 0 R (G6.48109)1457 0 R (G6.48110)1458 0 R -(G6.48111)1459 0 R (G6.48112)1460 0 R (G6.48113)1461 0 R (G6.48114) -1462 0 R (G6.48115)1463 0 R (G6.48116)1464 0 R (G6.48117)1465 0 R -(G6.48118)1466 0 R (G6.48119)1467 0 R (G6.48120)1468 0 R (G6.48121) -1469 0 R (I2.1.2428)403 0 R (I2.1.2438)404 0 R (I2.1.2440)405 0 R -(I2.1.2442)406 0 R (I2.1.2444)407 0 R (I2.1.2446)408 0 R (I2.1.2448) -409 0 R (I2.1.2450)410 0 R (I2.1.2452)411 0 R (I2.1.2454)412 0 R -(I2.1.2456)413 0 R (I2.1.2458)414 0 R (I2.1.2460)415 0 R (I2.1.2462) -416 0 R (I2.1.2464)417 0 R (I2.1.2466)418 0 R (I2.1.2468)419 0 R -(I2.1.2470)420 0 R (I2.1.2472)421 0 R (I2.1.2474)422 0 R (I2.1.2476) -423 0 R (I2.1.2478)424 0 R (I2.1.2480)425 0 R (I2.1.2482)426 0 R -(I2.1.2484)456 0 R ] ->> -endobj -1485 0 obj -<< -/Limits [ (I2.1.2486)(I5.1.528676)] -/Names [ (I2.1.2486)457 0 R (I3.1.510677)465 0 R (I3.1.510687)466 0 R (I3.1.510688) -480 0 R (I3.1.510689)481 0 R (I3.1.510691)482 0 R (I3.1.510692)483 0 R -(I3.1.510694)484 0 R (I3.1.510695)485 0 R (I3.1.511264)478 0 R (I3.1.511265) -479 0 R (I4.1.518211)536 0 R (I4.1.518215)538 0 R (I4.1.518320)539 0 R -(I4.1.518321)540 0 R (I5.1.519382)587 0 R (I5.1.519405)601 0 R (I5.1.519410) -603 0 R (I5.1.519456)649 0 R (I5.1.519535)734 0 R (I5.1.519554)758 0 R -(I5.1.519593)784 0 R (I5.1.519605)805 0 R (I5.1.519612)815 0 R (I5.1.519615) -817 0 R (I5.1.519662)861 0 R (I5.1.519704)911 0 R (I5.1.520067)1218 0 R -(I5.1.522807)760 0 R (I5.1.522835)564 0 R (I5.1.522845)1168 0 R -(I5.1.528642)588 0 R (I5.1.528643)604 0 R (I5.1.528644)605 0 R (I5.1.528645) -619 0 R (I5.1.528646)705 0 R (I5.1.528647)706 0 R (I5.1.528648)735 0 R -(I5.1.528649)736 0 R (I5.1.528650)761 0 R (I5.1.528651)785 0 R (I5.1.528652) -786 0 R (I5.1.528653)806 0 R (I5.1.528654)807 0 R (I5.1.528655)818 0 R -(I5.1.528656)819 0 R (I5.1.528657)826 0 R (I5.1.528660)933 0 R (I5.1.528661) -934 0 R (I5.1.528662)948 0 R (I5.1.528663)973 0 R (I5.1.528664)1000 0 R -(I5.1.528665)1001 0 R (I5.1.528666)1047 0 R (I5.1.528667)1048 0 R -(I5.1.528668)1095 0 R (I5.1.528669)1111 0 R (I5.1.528670)1112 0 R -(I5.1.528671)1128 0 R (I5.1.528672)1142 0 R (I5.1.528673)1143 0 R -(I5.1.528674)1169 0 R (I5.1.528675)1170 0 R (I5.1.528676)1219 0 R -] ->> -endobj -1486 0 obj -<< -/Limits [ (I6.1.47919)(I6.1.48033)] -/Names [ (I6.1.47919)1245 0 R (I6.1.47920)1247 0 R (I6.1.47921)1249 0 R (I6.1.47923) -1250 0 R (I6.1.47925)1251 0 R (I6.1.47927)1252 0 R (I6.1.47929)1254 0 R -(I6.1.47930)1256 0 R (I6.1.47932)1257 0 R (I6.1.47934)1258 0 R (I6.1.47936) -1259 0 R (I6.1.47938)1260 0 R (I6.1.47940)1261 0 R (I6.1.47942)1263 0 R -(I6.1.47944)1264 0 R (I6.1.47946)1266 0 R (I6.1.47948)1267 0 R (I6.1.47950) -1268 0 R (I6.1.47952)1269 0 R (I6.1.47954)1270 0 R (I6.1.47956)1271 0 R -(I6.1.47958)1272 0 R (I6.1.47960)1273 0 R (I6.1.47962)1274 0 R (I6.1.47963) -1275 0 R (I6.1.47965)1276 0 R (I6.1.47967)1277 0 R (I6.1.47969)1279 0 R -(I6.1.47970)1281 0 R (I6.1.47971)1283 0 R (I6.1.47972)1285 0 R (I6.1.47973) -1287 0 R (I6.1.47975)1288 0 R (I6.1.47977)1289 0 R (I6.1.47979)1290 0 R -(I6.1.47980)1291 0 R (I6.1.47982)1292 0 R (I6.1.47984)1293 0 R (I6.1.47986) -1294 0 R (I6.1.47988)1296 0 R (I6.1.47989)1298 0 R (I6.1.47990)1300 0 R -(I6.1.47991)1302 0 R (I6.1.47993)1303 0 R (I6.1.47995)1305 0 R (I6.1.47998) -1306 0 R (I6.1.48000)1307 0 R (I6.1.48002)1308 0 R (I6.1.48004)1309 0 R -(I6.1.48006)1310 0 R (I6.1.48008)1312 0 R (I6.1.48010)1313 0 R (I6.1.48012) -1315 0 R (I6.1.48013)1317 0 R (I6.1.48015)1318 0 R (I6.1.48017)1319 0 R -(I6.1.48019)1320 0 R (I6.1.48021)1322 0 R (I6.1.48023)1323 0 R (I6.1.48025) -1324 0 R (I6.1.48027)1326 0 R (I6.1.48029)1327 0 R (I6.1.48031)1328 0 R -(I6.1.48033)1329 0 R ] ->> -endobj -1487 0 obj -<< -/Limits [ (I6.1.48035)(P.22)] -/Names [ (I6.1.48035)1331 0 R (I6.1.48037)1332 0 R (L1)386 0 R (L2)455 0 R -(L3)533 0 R (L4)557 0 R (L5)1216 0 R (L6)1449 0 R (M4.9.20701.Head1.11.Guide.to.the.Specification) -535 0 R (M4.9.20852.Head1.12.Conformance.Issues)537 0 R (M5.9.14558.Head1.51.Introduction) -563 0 R (M5.9.16347.Heading4.1213.Field)648 0 R (M5.9.29028.Heading3.121.Class.Contents) -600 0 R (M5.9.32771.Heading4.1315.Entity)910 0 R (M5.9.34774.Head3.5231.JavaType) -759 0 R (M5.9.38683.Head1.54.UML.Profile)1167 0 R (M5.9.46120.Caption.Figure.108.Names) -814 0 R (M5.9.48147.Heading2.12.The.Java.Metamodel)586 0 R (M5.9.58005.Caption.Figure.105.JavaType) -757 0 R (M5.9.67291.Caption.Figure.103.Class.Contents)602 0 R (M5.9.72362.Caption.Figure.104.Polymorphism) -733 0 R (M5.9.78681.Heading2.13.The.Enterprise.JavaBeans.Metamodel) -816 0 R (M5.9.84071.Heading1.2.Flow.Composition.Model)1217 0 R (M5.9.85264.Heading4.1313.EnterpriseBean) -860 0 R (M5.9.90516.Caption.Figure.107.Data.Types)804 0 R (M5.9.94832.Caption.Figure.106.TypeDescriptor) -783 0 R (M6.8.newlink.A)1248 0 R (M6.8.newlink.B)1253 0 R (M6.8.newlink.C) -1255 0 R (M6.8.newlink.D)1262 0 R (M6.8.newlink.E)1265 0 R (M6.8.newlink.F) -1278 0 R (M6.8.newlink.G)1280 0 R (M6.8.newlink.H)1282 0 R (M6.8.newlink.I) -1284 0 R (M6.8.newlink.J)1286 0 R (M6.8.newlink.K)1295 0 R (M6.8.newlink.L) -1297 0 R (M6.8.newlink.M)1299 0 R (M6.8.newlink.N)1301 0 R (M6.8.newlink.Numerics) -1246 0 R (M6.8.newlink.O)1304 0 R (M6.8.newlink.P)1311 0 R (M6.8.newlink.Q) -1314 0 R (M6.8.newlink.R)1316 0 R (M6.8.newlink.S)1321 0 R (M6.8.newlink.Symbols) -1244 0 R (M6.8.newlink.T)1325 0 R (M6.8.newlink.U)1330 0 R (P.1) -295 0 R (P.10)782 0 R (P.11)803 0 R (P.12)813 0 R (P.13)825 0 R -(P.14)837 0 R (P.15)859 0 R (P.16)883 0 R (P.17)909 0 R (P.18)932 0 R -(P.19)947 0 R (P.2)319 0 R (P.20)972 0 R (P.21)999 0 R (P.22)1027 0 R -] ->> -endobj -1488 0 obj -<< -/Limits [ (P.23)(P.vi)] -/Names [ (P.23)1046 0 R (P.24)1058 0 R (P.25)1074 0 R (P.26)1094 0 R (P.27) -1110 0 R (P.28)1127 0 R (P.29)1141 0 R (P.3)356 0 R (P.30)1162 0 R -(P.31)1166 0 R (P.32)1215 0 R (P.4)385 0 R (P.5)647 0 R (P.6)677 0 R -(P.7)704 0 R (P.8)732 0 R (P.9)756 0 R (P.i)401 0 R (P.ii)454 0 R -(P.iii)463 0 R (P.iv)477 0 R (P.v)504 0 R (P.vi)532 0 R ] ->> -endobj -1489 0 obj -<< -/Kids [ 1470 0 R 1471 0 R 1472 0 R 1473 0 R 1474 0 R 1475 0 R 1476 0 R 1477 0 R -1478 0 R 1479 0 R 1480 0 R 1481 0 R 1482 0 R 1483 0 R 1484 0 R 1485 0 R -1486 0 R 1487 0 R 1488 0 R ] ->> -endobj -1490 0 obj -<< -/S /D ->> -endobj -1491 0 obj -<< -/Nums [ 0 1490 0 R ] ->> -endobj -1492 0 obj -<< -/Producer (Acrobat Distiller 5.0.5 \(Windows\)) -/Author (linda) -/Title (edoc.bk) -/ModDate (D:20040210154631Z00'00') -/CreationDate (D:20040210151451Z00'00') -/Creator (FrameMaker 6.0) ->> -endobj -1493 0 obj -<< /Type /Metadata /Subtype /XML /Length 990 >> -stream -<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d' bytes='989'?><rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'><rdf:Description about='' xmlns='http://ns.adobe.com/pdf/1.3/' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:CreationDate='2004-02-10T15:14:51Z' pdf:ModDate='2004-02-10T15:46:31Z' pdf:Producer='Acrobat Distiller 5.0.5 (Windows)' pdf:Author='linda' pdf:Creator='FrameMaker 6.0' pdf:Title='edoc.bk'/> -<rdf:Description about='' xmlns='http://ns.adobe.com/xap/1.0/' xmlns:xap='http://ns.adobe.com/xap/1.0/' xap:CreateDate='2004-02-10T15:14:51Z' xap:ModifyDate='2004-02-10T15:46:31Z' xap:Author='linda' xap:MetadataDate='2004-02-10T15:46:31Z'><xap:Title><rdf:Alt><rdf:li xml:lang='x-default'>edoc.bk</rdf:li></rdf:Alt></xap:Title></rdf:Description> -<rdf:Description about='' xmlns='http://purl.org/dc/elements/1.1/' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:creator='linda' dc:title='edoc.bk'/> -</rdf:RDF><?xpacket end='r'?> -endstream -endobj -1494 0 obj -<< -/Type /Pages -/Kids [ 1505 0 R 1 0 R 5 0 R 8 0 R 11 0 R 38 0 R 43 0 R 46 0 R 49 0 R 52 0 R -] -/Count 10 -/Parent 1495 0 R ->> -endobj -1495 0 obj -<< -/Type /Pages -/Kids [ 1494 0 R 1496 0 R 1497 0 R 1498 0 R 1499 0 R ] -/Count 46 ->> -endobj -1496 0 obj -<< -/Type /Pages -/Kids [ 55 0 R 62 0 R 65 0 R 76 0 R 84 0 R 87 0 R 90 0 R 93 0 R 96 0 R 99 0 R -] -/Count 10 -/Parent 1495 0 R ->> -endobj -1497 0 obj -<< -/Type /Pages -/Kids [ 104 0 R 107 0 R 110 0 R 113 0 R 116 0 R 119 0 R 122 0 R 125 0 R 128 0 R -131 0 R ] -/Count 10 -/Parent 1495 0 R ->> -endobj -1498 0 obj -<< -/Type /Pages -/Kids [ 135 0 R 138 0 R 141 0 R 144 0 R 147 0 R 152 0 R 155 0 R 158 0 R 161 0 R -165 0 R ] -/Count 10 -/Parent 1495 0 R ->> -endobj -1499 0 obj -<< -/Type /Pages -/Kids [ 169 0 R 172 0 R 175 0 R 178 0 R 181 0 R 227 0 R ] -/Count 6 -/Parent 1495 0 R ->> -endobj -xref -0 1500 -0000000000 65535 f -0000091208 00000 n -0000091375 00000 n -0000091467 00000 n -0000091607 00000 n -0000095193 00000 n -0000095362 00000 n -0000095502 00000 n -0000099606 00000 n -0000099776 00000 n -0000099916 00000 n -0000101820 00000 n -0000102183 00000 n -0000102300 00000 n -0000102417 00000 n -0000102534 00000 n -0000102651 00000 n -0000102768 00000 n -0000102885 00000 n -0000103002 00000 n -0000103119 00000 n -0000103236 00000 n -0000103353 00000 n -0000103470 00000 n -0000103587 00000 n -0000103704 00000 n -0000103821 00000 n -0000103938 00000 n -0000104055 00000 n -0000104172 00000 n -0000104289 00000 n -0000104406 00000 n -0000104523 00000 n -0000104640 00000 n -0000104757 00000 n -0000104874 00000 n -0000104990 00000 n -0000105158 00000 n -0000106916 00000 n -0000107115 00000 n -0000107232 00000 n -0000107350 00000 n -0000107504 00000 n -0000108095 00000 n -0000108275 00000 n -0000108429 00000 n -0000110677 00000 n -0000110849 00000 n -0000111017 00000 n -0000113899 00000 n -0000114071 00000 n -0000114251 00000 n -0000115805 00000 n -0000115977 00000 n -0000116131 00000 n -0000116480 00000 n -0000116701 00000 n -0000116851 00000 n -0000117000 00000 n -0000117166 00000 n -0000117331 00000 n -0000117512 00000 n -0000118997 00000 n -0000119169 00000 n -0000119323 00000 n -0000119700 00000 n -0000119949 00000 n -0000120067 00000 n -0000120185 00000 n -0000120303 00000 n -0000120421 00000 n -0000120539 00000 n -0000120657 00000 n -0000120775 00000 n -0000120893 00000 n -0000121061 00000 n -0000122963 00000 n -0000123183 00000 n -0000123301 00000 n -0000123419 00000 n -0000123537 00000 n -0000123655 00000 n -0000123773 00000 n -0000123927 00000 n -0000125513 00000 n -0000125685 00000 n -0000125866 00000 n -0000129010 00000 n -0000129182 00000 n -0000129349 00000 n -0000130457 00000 n -0000130629 00000 n -0000130796 00000 n -0000131928 00000 n -0000132100 00000 n -0000132267 00000 n -0000133339 00000 n -0000133511 00000 n -0000133678 00000 n -0000134806 00000 n -0000135009 00000 n -0000135128 00000 n -0000135247 00000 n -0000135443 00000 n -0000137647 00000 n -0000137822 00000 n -0000138018 00000 n -0000139998 00000 n -0000140173 00000 n -0000140369 00000 n -0000142468 00000 n -0000142643 00000 n -0000142826 00000 n -0000145469 00000 n -0000145644 00000 n -0000145907 00000 n -0000147526 00000 n -0000147701 00000 n -0000147977 00000 n -0000150569 00000 n -0000150744 00000 n -0000150912 00000 n -0000152719 00000 n -0000152894 00000 n -0000153062 00000 n -0000154710 00000 n -0000154885 00000 n -0000155053 00000 n -0000156423 00000 n -0000156598 00000 n -0000156766 00000 n -0000157768 00000 n -0000157964 00000 n -0000158082 00000 n -0000158358 00000 n -0000162299 00000 n -0000162474 00000 n -0000162642 00000 n -0000163734 00000 n -0000163909 00000 n -0000164077 00000 n -0000165240 00000 n -0000165415 00000 n -0000165583 00000 n -0000166975 00000 n -0000167150 00000 n -0000167318 00000 n -0000168265 00000 n -0000168469 00000 n -0000168588 00000 n -0000168706 00000 n -0000168902 00000 n -0000172895 00000 n -0000173070 00000 n -0000173346 00000 n -0000177360 00000 n -0000177535 00000 n -0000177703 00000 n -0000179392 00000 n -0000179567 00000 n -0000179843 00000 n -0000182235 00000 n -0000182431 00000 n -0000182550 00000 n -0000182718 00000 n -0000185030 00000 n -0000185226 00000 n -0000185345 00000 n -0000185541 00000 n -0000188291 00000 n -0000188466 00000 n -0000188634 00000 n -0000190539 00000 n -0000190714 00000 n -0000190883 00000 n -0000194469 00000 n -0000194644 00000 n -0000194813 00000 n -0000197583 00000 n -0000197758 00000 n -0000197913 00000 n -0000199340 00000 n -0000199877 00000 n -0000199997 00000 n -0000200117 00000 n -0000200237 00000 n -0000200357 00000 n -0000200477 00000 n -0000200597 00000 n -0000200717 00000 n -0000200837 00000 n -0000200957 00000 n -0000201077 00000 n -0000201197 00000 n -0000201317 00000 n -0000201437 00000 n -0000201557 00000 n -0000201677 00000 n -0000201797 00000 n -0000201917 00000 n -0000202038 00000 n -0000202158 00000 n -0000202278 00000 n -0000202398 00000 n -0000202518 00000 n -0000202638 00000 n -0000202759 00000 n -0000202879 00000 n -0000202999 00000 n -0000203119 00000 n -0000203239 00000 n -0000203359 00000 n -0000203479 00000 n -0000203599 00000 n -0000203719 00000 n -0000203839 00000 n -0000203959 00000 n -0000204079 00000 n -0000204199 00000 n -0000204319 00000 n -0000204439 00000 n -0000204559 00000 n -0000204679 00000 n -0000204798 00000 n -0000204916 00000 n -0000205037 00000 n -0000205206 00000 n -0000206842 00000 n -0000207017 00000 n -0000207172 00000 n -0000207554 00000 n -0000207646 00000 n -0000207740 00000 n -0000207836 00000 n -0000207931 00000 n -0000208425 00000 n -0000208520 00000 n -0000208616 00000 n -0000208711 00000 n -0000208806 00000 n -0000208901 00000 n -0000209009 00000 n -0000209104 00000 n -0000209200 00000 n -0000209295 00000 n -0000209763 00000 n -0000209858 00000 n -0000209954 00000 n -0000210049 00000 n -0000210144 00000 n -0000210239 00000 n -0000210738 00000 n -0000210833 00000 n -0000210928 00000 n -0000211023 00000 n -0000211118 00000 n -0000211213 00000 n -0000211309 00000 n -0000211757 00000 n -0000211853 00000 n -0000211949 00000 n -0000212045 00000 n -0000212269 00000 n -0000212486 00000 n -0000212537 00000 n -0000212603 00000 n -0000212699 00000 n -0000212795 00000 n -0000212891 00000 n -0000212987 00000 n -0000213083 00000 n -0000213179 00000 n -0000213275 00000 n -0000213371 00000 n -0000213467 00000 n -0000213563 00000 n -0000213659 00000 n -0000213755 00000 n -0000213851 00000 n -0000213947 00000 n -0000214043 00000 n -0000214139 00000 n -0000214235 00000 n -0000214331 00000 n -0000214427 00000 n -0000214523 00000 n -0000214619 00000 n -0000214713 00000 n -0000214958 00000 n -0000239778 00000 n -0000240014 00000 n -0000260198 00000 n -0000260422 00000 n -0000280973 00000 n -0000281196 00000 n -0000294683 00000 n -0000294745 00000 n -0000294807 00000 n -0000294866 00000 n -0000294925 00000 n -0000294984 00000 n -0000295043 00000 n -0000295102 00000 n -0000295161 00000 n -0000295220 00000 n -0000295279 00000 n -0000295338 00000 n -0000295397 00000 n -0000295456 00000 n -0000295515 00000 n -0000295574 00000 n -0000295633 00000 n -0000295692 00000 n -0000295751 00000 n -0000295810 00000 n -0000295869 00000 n -0000295928 00000 n -0000295987 00000 n -0000296046 00000 n -0000296105 00000 n -0000296164 00000 n -0000296219 00000 n -0000296275 00000 n -0000296331 00000 n -0000296387 00000 n -0000296443 00000 n -0000296499 00000 n -0000296555 00000 n -0000296611 00000 n -0000296667 00000 n -0000296723 00000 n -0000296779 00000 n -0000296835 00000 n -0000296891 00000 n -0000296947 00000 n -0000297003 00000 n -0000297059 00000 n -0000297115 00000 n -0000297171 00000 n -0000297227 00000 n -0000297283 00000 n -0000297339 00000 n -0000297395 00000 n -0000297451 00000 n -0000297507 00000 n -0000297563 00000 n -0000297619 00000 n -0000297675 00000 n -0000297731 00000 n -0000297787 00000 n -0000297843 00000 n -0000297899 00000 n -0000297955 00000 n -0000298011 00000 n -0000298067 00000 n -0000298122 00000 n -0000298177 00000 n -0000298236 00000 n -0000298291 00000 n -0000298347 00000 n -0000298403 00000 n -0000298459 00000 n -0000298515 00000 n -0000298571 00000 n -0000298627 00000 n -0000298683 00000 n -0000298739 00000 n -0000298795 00000 n -0000298851 00000 n -0000298907 00000 n -0000298963 00000 n -0000299019 00000 n -0000299075 00000 n -0000299131 00000 n -0000299187 00000 n -0000299243 00000 n -0000299299 00000 n -0000299355 00000 n -0000299411 00000 n -0000299467 00000 n -0000299523 00000 n -0000299579 00000 n -0000299635 00000 n -0000299691 00000 n -0000299746 00000 n -0000299801 00000 n -0000299860 00000 n -0000299919 00000 n -0000299975 00000 n -0000300031 00000 n -0000300087 00000 n -0000300143 00000 n -0000300199 00000 n -0000300255 00000 n -0000300311 00000 n -0000300367 00000 n -0000300423 00000 n -0000300479 00000 n -0000300535 00000 n -0000300591 00000 n -0000300647 00000 n -0000300703 00000 n -0000300763 00000 n -0000300823 00000 n -0000300881 00000 n -0000300939 00000 n -0000300997 00000 n -0000301055 00000 n -0000301113 00000 n -0000301171 00000 n -0000301229 00000 n -0000301287 00000 n -0000301345 00000 n -0000301403 00000 n -0000301461 00000 n -0000301519 00000 n -0000301577 00000 n -0000301635 00000 n -0000301693 00000 n -0000301751 00000 n -0000301809 00000 n -0000301867 00000 n -0000301925 00000 n -0000301983 00000 n -0000302041 00000 n -0000302099 00000 n -0000302157 00000 n -0000302215 00000 n -0000302271 00000 n -0000302328 00000 n -0000302385 00000 n -0000302442 00000 n -0000302499 00000 n -0000302556 00000 n -0000302613 00000 n -0000302670 00000 n -0000302727 00000 n -0000302784 00000 n -0000302841 00000 n -0000302898 00000 n -0000302955 00000 n -0000303012 00000 n -0000303069 00000 n -0000303126 00000 n -0000303183 00000 n -0000303240 00000 n -0000303297 00000 n -0000303354 00000 n -0000303411 00000 n -0000303468 00000 n -0000303525 00000 n -0000303582 00000 n -0000303639 00000 n -0000303696 00000 n -0000303752 00000 n -0000303812 00000 n -0000303872 00000 n -0000303930 00000 n -0000303988 00000 n -0000304044 00000 n -0000304101 00000 n -0000304158 00000 n -0000304215 00000 n -0000304272 00000 n -0000304332 00000 n -0000304392 00000 n -0000304450 00000 n -0000304508 00000 n -0000304564 00000 n -0000304621 00000 n -0000304678 00000 n -0000304735 00000 n -0000304792 00000 n -0000304849 00000 n -0000304906 00000 n -0000304963 00000 n -0000305020 00000 n -0000305077 00000 n -0000305137 00000 n -0000305195 00000 n -0000305253 00000 n -0000305311 00000 n -0000305369 00000 n -0000305427 00000 n -0000305485 00000 n -0000305543 00000 n -0000305601 00000 n -0000305657 00000 n -0000305714 00000 n -0000305771 00000 n -0000305828 00000 n -0000305885 00000 n -0000305942 00000 n -0000305999 00000 n -0000306056 00000 n -0000306113 00000 n -0000306170 00000 n -0000306227 00000 n -0000306284 00000 n -0000306341 00000 n -0000306398 00000 n -0000306455 00000 n -0000306512 00000 n -0000306569 00000 n -0000306626 00000 n -0000306686 00000 n -0000306742 00000 n -0000306799 00000 n -0000306856 00000 n -0000306913 00000 n -0000306970 00000 n -0000307027 00000 n -0000307084 00000 n -0000307141 00000 n -0000307198 00000 n -0000307255 00000 n -0000307312 00000 n -0000307369 00000 n -0000307426 00000 n -0000307483 00000 n -0000307540 00000 n -0000307597 00000 n -0000307654 00000 n -0000307711 00000 n -0000307768 00000 n -0000307825 00000 n -0000307882 00000 n -0000307939 00000 n -0000307996 00000 n -0000308053 00000 n -0000308110 00000 n -0000308167 00000 n -0000308224 00000 n -0000308284 00000 n -0000308344 00000 n -0000308404 00000 n -0000308462 00000 n -0000308520 00000 n -0000308578 00000 n -0000308636 00000 n -0000308694 00000 n -0000308752 00000 n -0000308808 00000 n -0000308865 00000 n -0000308922 00000 n -0000308979 00000 n -0000309036 00000 n -0000309093 00000 n -0000309150 00000 n -0000309207 00000 n -0000309264 00000 n -0000309321 00000 n -0000309378 00000 n -0000309435 00000 n -0000309492 00000 n -0000309549 00000 n -0000309606 00000 n -0000309663 00000 n -0000309723 00000 n -0000309779 00000 n -0000309836 00000 n -0000309893 00000 n -0000309950 00000 n -0000310010 00000 n -0000310068 00000 n -0000310126 00000 n -0000310182 00000 n -0000310239 00000 n -0000310296 00000 n -0000310353 00000 n -0000310410 00000 n -0000310467 00000 n -0000310524 00000 n -0000310581 00000 n -0000310638 00000 n -0000310696 00000 n -0000310754 00000 n -0000310812 00000 n -0000310870 00000 n -0000310928 00000 n -0000310986 00000 n -0000311044 00000 n -0000311102 00000 n -0000311160 00000 n -0000311218 00000 n -0000311276 00000 n -0000311334 00000 n -0000311392 00000 n -0000311450 00000 n -0000311508 00000 n -0000311564 00000 n -0000311621 00000 n -0000311678 00000 n -0000311735 00000 n -0000311792 00000 n -0000311849 00000 n -0000311906 00000 n -0000311963 00000 n -0000312020 00000 n -0000312077 00000 n -0000312134 00000 n -0000312192 00000 n -0000312250 00000 n -0000312308 00000 n -0000312366 00000 n -0000312424 00000 n -0000312482 00000 n -0000312538 00000 n -0000312595 00000 n -0000312652 00000 n -0000312709 00000 n -0000312766 00000 n -0000312823 00000 n -0000312880 00000 n -0000312937 00000 n -0000312994 00000 n -0000313051 00000 n -0000313108 00000 n -0000313165 00000 n -0000313222 00000 n -0000313280 00000 n -0000313337 00000 n -0000313394 00000 n -0000313451 00000 n -0000313508 00000 n -0000313565 00000 n -0000313622 00000 n -0000313679 00000 n -0000313736 00000 n -0000313793 00000 n -0000313850 00000 n -0000313907 00000 n -0000313964 00000 n -0000314021 00000 n -0000314078 00000 n -0000314135 00000 n -0000314192 00000 n -0000314249 00000 n -0000314306 00000 n -0000314363 00000 n -0000314420 00000 n -0000314477 00000 n -0000314534 00000 n -0000314591 00000 n -0000314648 00000 n -0000314705 00000 n -0000314762 00000 n -0000314818 00000 n -0000314878 00000 n -0000314936 00000 n -0000314994 00000 n -0000315051 00000 n -0000315108 00000 n -0000315165 00000 n -0000315222 00000 n -0000315279 00000 n -0000315336 00000 n -0000315393 00000 n -0000315450 00000 n -0000315507 00000 n -0000315564 00000 n -0000315621 00000 n -0000315678 00000 n -0000315735 00000 n -0000315792 00000 n -0000315849 00000 n -0000315906 00000 n -0000315963 00000 n -0000316020 00000 n -0000316077 00000 n -0000316134 00000 n -0000316191 00000 n -0000316248 00000 n -0000316305 00000 n -0000316362 00000 n -0000316419 00000 n -0000316476 00000 n -0000316532 00000 n -0000316592 00000 n -0000316649 00000 n -0000316706 00000 n -0000316763 00000 n -0000316820 00000 n -0000316877 00000 n -0000316934 00000 n -0000316991 00000 n -0000317048 00000 n -0000317105 00000 n -0000317162 00000 n -0000317219 00000 n -0000317276 00000 n -0000317333 00000 n -0000317390 00000 n -0000317447 00000 n -0000317504 00000 n -0000317561 00000 n -0000317618 00000 n -0000317675 00000 n -0000317732 00000 n -0000317789 00000 n -0000317846 00000 n -0000317903 00000 n -0000317960 00000 n -0000318017 00000 n -0000318074 00000 n -0000318134 00000 n -0000318192 00000 n -0000318250 00000 n -0000318307 00000 n -0000318364 00000 n -0000318421 00000 n -0000318478 00000 n -0000318535 00000 n -0000318592 00000 n -0000318649 00000 n -0000318706 00000 n -0000318763 00000 n -0000318820 00000 n -0000318877 00000 n -0000318934 00000 n -0000318991 00000 n -0000319048 00000 n -0000319105 00000 n -0000319162 00000 n -0000319219 00000 n -0000319276 00000 n -0000319333 00000 n -0000319390 00000 n -0000319447 00000 n -0000319504 00000 n -0000319561 00000 n -0000319618 00000 n -0000319675 00000 n -0000319735 00000 n -0000319793 00000 n -0000319851 00000 n -0000319909 00000 n -0000319967 00000 n -0000320024 00000 n -0000320081 00000 n -0000320138 00000 n -0000320195 00000 n -0000320252 00000 n -0000320309 00000 n -0000320366 00000 n -0000320423 00000 n -0000320480 00000 n -0000320537 00000 n -0000320594 00000 n -0000320651 00000 n -0000320708 00000 n -0000320765 00000 n -0000320822 00000 n -0000320879 00000 n -0000320936 00000 n -0000320993 00000 n -0000321050 00000 n -0000321111 00000 n -0000321170 00000 n -0000321229 00000 n -0000321288 00000 n -0000321347 00000 n -0000321406 00000 n -0000321464 00000 n -0000321522 00000 n -0000321580 00000 n -0000321638 00000 n -0000321696 00000 n -0000321754 00000 n -0000321812 00000 n -0000321870 00000 n -0000321928 00000 n -0000321986 00000 n -0000322044 00000 n -0000322102 00000 n -0000322160 00000 n -0000322218 00000 n -0000322276 00000 n -0000322334 00000 n -0000322392 00000 n -0000322450 00000 n -0000322508 00000 n -0000322566 00000 n -0000322627 00000 n -0000322686 00000 n -0000322745 00000 n -0000322804 00000 n -0000322863 00000 n -0000322921 00000 n -0000322979 00000 n -0000323037 00000 n -0000323095 00000 n -0000323153 00000 n -0000323211 00000 n -0000323269 00000 n -0000323327 00000 n -0000323385 00000 n -0000323443 00000 n -0000323501 00000 n -0000323559 00000 n -0000323617 00000 n -0000323675 00000 n -0000323733 00000 n -0000323791 00000 n -0000323852 00000 n -0000323911 00000 n -0000323970 00000 n -0000324029 00000 n -0000324088 00000 n -0000324146 00000 n -0000324204 00000 n -0000324262 00000 n -0000324320 00000 n -0000324378 00000 n -0000324439 00000 n -0000324498 00000 n -0000324557 00000 n -0000324616 00000 n -0000324675 00000 n -0000324734 00000 n -0000324793 00000 n -0000324851 00000 n -0000324909 00000 n -0000324967 00000 n -0000325025 00000 n -0000325083 00000 n -0000325144 00000 n -0000325203 00000 n -0000325261 00000 n -0000325319 00000 n -0000325377 00000 n -0000325435 00000 n -0000325493 00000 n -0000325551 00000 n -0000325609 00000 n -0000325667 00000 n -0000325725 00000 n -0000325783 00000 n -0000325844 00000 n -0000325902 00000 n -0000325960 00000 n -0000326018 00000 n -0000326076 00000 n -0000326134 00000 n -0000326192 00000 n -0000326250 00000 n -0000326308 00000 n -0000326366 00000 n -0000326424 00000 n -0000326482 00000 n -0000326540 00000 n -0000326598 00000 n -0000326656 00000 n -0000326714 00000 n -0000326772 00000 n -0000326830 00000 n -0000326888 00000 n -0000326946 00000 n -0000327004 00000 n -0000327062 00000 n -0000327123 00000 n -0000327182 00000 n -0000327241 00000 n -0000327299 00000 n -0000327357 00000 n -0000327415 00000 n -0000327473 00000 n -0000327531 00000 n -0000327589 00000 n -0000327647 00000 n -0000327705 00000 n -0000327763 00000 n -0000327821 00000 n -0000327879 00000 n -0000327937 00000 n -0000327995 00000 n -0000328053 00000 n -0000328111 00000 n -0000328169 00000 n -0000328227 00000 n -0000328285 00000 n -0000328343 00000 n -0000328401 00000 n -0000328459 00000 n -0000328520 00000 n -0000328578 00000 n -0000328636 00000 n -0000328694 00000 n -0000328752 00000 n -0000328810 00000 n -0000328868 00000 n -0000328926 00000 n -0000328984 00000 n -0000329042 00000 n -0000329100 00000 n -0000329158 00000 n -0000329216 00000 n -0000329274 00000 n -0000329332 00000 n -0000329390 00000 n -0000329448 00000 n -0000329506 00000 n -0000329564 00000 n -0000329622 00000 n -0000329680 00000 n -0000329738 00000 n -0000329796 00000 n -0000329854 00000 n -0000329912 00000 n -0000329970 00000 n -0000330031 00000 n -0000330090 00000 n -0000330149 00000 n -0000330207 00000 n -0000330265 00000 n -0000330323 00000 n -0000330381 00000 n -0000330439 00000 n -0000330497 00000 n -0000330555 00000 n -0000330613 00000 n -0000330671 00000 n -0000330729 00000 n -0000330787 00000 n -0000330845 00000 n -0000330903 00000 n -0000330961 00000 n -0000331019 00000 n -0000331077 00000 n -0000331135 00000 n -0000331193 00000 n -0000331251 00000 n -0000331309 00000 n -0000331370 00000 n -0000331429 00000 n -0000331488 00000 n -0000331546 00000 n -0000331604 00000 n -0000331662 00000 n -0000331720 00000 n -0000331778 00000 n -0000331836 00000 n -0000331894 00000 n -0000331952 00000 n -0000332010 00000 n -0000332068 00000 n -0000332126 00000 n -0000332184 00000 n -0000332245 00000 n -0000332304 00000 n -0000332362 00000 n -0000332420 00000 n -0000332478 00000 n -0000332536 00000 n -0000332594 00000 n -0000332652 00000 n -0000332710 00000 n -0000332768 00000 n -0000332826 00000 n -0000332884 00000 n -0000332942 00000 n -0000333000 00000 n -0000333058 00000 n -0000333116 00000 n -0000333174 00000 n -0000333232 00000 n -0000333290 00000 n -0000333348 00000 n -0000333406 00000 n -0000333464 00000 n -0000333522 00000 n -0000333580 00000 n -0000333638 00000 n -0000333699 00000 n -0000333758 00000 n -0000333816 00000 n -0000333874 00000 n -0000333932 00000 n -0000333990 00000 n -0000334048 00000 n -0000334106 00000 n -0000334164 00000 n -0000334222 00000 n -0000334280 00000 n -0000334338 00000 n -0000334396 00000 n -0000334454 00000 n -0000334512 00000 n -0000334570 00000 n -0000334628 00000 n -0000334686 00000 n -0000334744 00000 n -0000334802 00000 n -0000334860 00000 n -0000334918 00000 n -0000334976 00000 n -0000335034 00000 n -0000335092 00000 n -0000335150 00000 n -0000335208 00000 n -0000335269 00000 n -0000335329 00000 n -0000335389 00000 n -0000335448 00000 n -0000335507 00000 n -0000335566 00000 n -0000335625 00000 n -0000335684 00000 n -0000335743 00000 n -0000335802 00000 n -0000335861 00000 n -0000335920 00000 n -0000335979 00000 n -0000336038 00000 n -0000336097 00000 n -0000336156 00000 n -0000336215 00000 n -0000336274 00000 n -0000336333 00000 n -0000336392 00000 n -0000336451 00000 n -0000336510 00000 n -0000336569 00000 n -0000336628 00000 n -0000336687 00000 n -0000336746 00000 n -0000336805 00000 n -0000336863 00000 n -0000336925 00000 n -0000336984 00000 n -0000337043 00000 n -0000337102 00000 n -0000337161 00000 n -0000337220 00000 n -0000337279 00000 n -0000337338 00000 n -0000337397 00000 n -0000337456 00000 n -0000337515 00000 n -0000337574 00000 n -0000337633 00000 n -0000337692 00000 n -0000337751 00000 n -0000337810 00000 n -0000337869 00000 n -0000337928 00000 n -0000337987 00000 n -0000338049 00000 n -0000338109 00000 n -0000338169 00000 n -0000338228 00000 n -0000338287 00000 n -0000338346 00000 n -0000338405 00000 n -0000338464 00000 n -0000338523 00000 n -0000338582 00000 n -0000338641 00000 n -0000338700 00000 n -0000338762 00000 n -0000338821 00000 n -0000338880 00000 n -0000338939 00000 n -0000338998 00000 n -0000339057 00000 n -0000339116 00000 n -0000339175 00000 n -0000339234 00000 n -0000339293 00000 n -0000339352 00000 n -0000339411 00000 n -0000339470 00000 n -0000339529 00000 n -0000339588 00000 n -0000339646 00000 n -0000339708 00000 n -0000339767 00000 n -0000339826 00000 n -0000339885 00000 n -0000339944 00000 n -0000340003 00000 n -0000340062 00000 n -0000340121 00000 n -0000340180 00000 n -0000340239 00000 n -0000340298 00000 n -0000340357 00000 n -0000340416 00000 n -0000340475 00000 n -0000340534 00000 n -0000340593 00000 n -0000340652 00000 n -0000340711 00000 n -0000340770 00000 n -0000340829 00000 n -0000340891 00000 n -0000340951 00000 n -0000341010 00000 n -0000341069 00000 n -0000341128 00000 n -0000341187 00000 n -0000341246 00000 n -0000341305 00000 n -0000341364 00000 n -0000341423 00000 n -0000341482 00000 n -0000341541 00000 n -0000341600 00000 n -0000341659 00000 n -0000341718 00000 n -0000341776 00000 n -0000341838 00000 n -0000341898 00000 n -0000341958 00000 n -0000342017 00000 n -0000342076 00000 n -0000342135 00000 n -0000342194 00000 n -0000342253 00000 n -0000342312 00000 n -0000342371 00000 n -0000342430 00000 n -0000342489 00000 n -0000342548 00000 n -0000342607 00000 n -0000342666 00000 n -0000342725 00000 n -0000342784 00000 n -0000342846 00000 n -0000342906 00000 n -0000342965 00000 n -0000343024 00000 n -0000343083 00000 n -0000343142 00000 n -0000343201 00000 n -0000343260 00000 n -0000343319 00000 n -0000343378 00000 n -0000343437 00000 n -0000343496 00000 n -0000343555 00000 n -0000343614 00000 n -0000343676 00000 n -0000343736 00000 n -0000343796 00000 n -0000343855 00000 n -0000343914 00000 n -0000343973 00000 n -0000344032 00000 n -0000344091 00000 n -0000344150 00000 n -0000344209 00000 n -0000344268 00000 n -0000344327 00000 n -0000344386 00000 n -0000344445 00000 n -0000344504 00000 n -0000344563 00000 n -0000344622 00000 n -0000344681 00000 n -0000344740 00000 n -0000344799 00000 n -0000344858 00000 n -0000344920 00000 n -0000344979 00000 n -0000345038 00000 n -0000345097 00000 n -0000345159 00000 n -0000345219 00000 n -0000345279 00000 n -0000345339 00000 n -0000345399 00000 n -0000345458 00000 n -0000345517 00000 n -0000345576 00000 n -0000345635 00000 n -0000345694 00000 n -0000345753 00000 n -0000345812 00000 n -0000345871 00000 n -0000345930 00000 n -0000345990 00000 n -0000346050 00000 n -0000346110 00000 n -0000346170 00000 n -0000346230 00000 n -0000346290 00000 n -0000346350 00000 n -0000346409 00000 n -0000346469 00000 n -0000346529 00000 n -0000346589 00000 n -0000346649 00000 n -0000346709 00000 n -0000346769 00000 n -0000346828 00000 n -0000346888 00000 n -0000346948 00000 n -0000347008 00000 n -0000347068 00000 n -0000347127 00000 n -0000347187 00000 n -0000347247 00000 n -0000347307 00000 n -0000347367 00000 n -0000347426 00000 n -0000347486 00000 n -0000347546 00000 n -0000347606 00000 n -0000347666 00000 n -0000347726 00000 n -0000347785 00000 n -0000347845 00000 n -0000347905 00000 n -0000347965 00000 n -0000348025 00000 n -0000348087 00000 n -0000348149 00000 n -0000348208 00000 n -0000348267 00000 n -0000348327 00000 n -0000348386 00000 n -0000348445 00000 n -0000348504 00000 n -0000348563 00000 n -0000348623 00000 n -0000348683 00000 n -0000348743 00000 n -0000348803 00000 n -0000348863 00000 n -0000348923 00000 n -0000348983 00000 n -0000349043 00000 n -0000349103 00000 n -0000349162 00000 n -0000349222 00000 n -0000349282 00000 n -0000349342 00000 n -0000349402 00000 n -0000349461 00000 n -0000349521 00000 n -0000349581 00000 n -0000349641 00000 n -0000349701 00000 n -0000349763 00000 n -0000349822 00000 n -0000349881 00000 n -0000349940 00000 n -0000349999 00000 n -0000350058 00000 n -0000350117 00000 n -0000350177 00000 n -0000350237 00000 n -0000350297 00000 n -0000350356 00000 n -0000350415 00000 n -0000350474 00000 n -0000350533 00000 n -0000350593 00000 n -0000350653 00000 n -0000350713 00000 n -0000350773 00000 n -0000350833 00000 n -0000350892 00000 n -0000350951 00000 n -0000351011 00000 n -0000351070 00000 n -0000351129 00000 n -0000351188 00000 n -0000351248 00000 n -0000351308 00000 n -0000351367 00000 n -0000351427 00000 n -0000351486 00000 n -0000351546 00000 n -0000351606 00000 n -0000351666 00000 n -0000351726 00000 n -0000351786 00000 n -0000351845 00000 n -0000351904 00000 n -0000351963 00000 n -0000352022 00000 n -0000352081 00000 n -0000352140 00000 n -0000352199 00000 n -0000352258 00000 n -0000352317 00000 n -0000352376 00000 n -0000352436 00000 n -0000352496 00000 n -0000352556 00000 n -0000352616 00000 n -0000352676 00000 n -0000352736 00000 n -0000352796 00000 n -0000352855 00000 n -0000352914 00000 n -0000352973 00000 n -0000353032 00000 n -0000353091 00000 n -0000353150 00000 n -0000353209 00000 n -0000353268 00000 n -0000353327 00000 n -0000353386 00000 n -0000353445 00000 n -0000353505 00000 n -0000353565 00000 n -0000353625 00000 n -0000353685 00000 n -0000353745 00000 n -0000353804 00000 n -0000353863 00000 n -0000353923 00000 n -0000353982 00000 n -0000354041 00000 n -0000354100 00000 n -0000354159 00000 n -0000354219 00000 n -0000354279 00000 n -0000354339 00000 n -0000354398 00000 n -0000354457 00000 n -0000354517 00000 n -0000354577 00000 n -0000354636 00000 n -0000354695 00000 n -0000354755 00000 n -0000354815 00000 n -0000354875 00000 n -0000354935 00000 n -0000354995 00000 n -0000355055 00000 n -0000355113 00000 n -0000355172 00000 n -0000355231 00000 n -0000355290 00000 n -0000355349 00000 n -0000355408 00000 n -0000355467 00000 n -0000355526 00000 n -0000355585 00000 n -0000355644 00000 n -0000355703 00000 n -0000355762 00000 n -0000355821 00000 n -0000355880 00000 n -0000355939 00000 n -0000355998 00000 n -0000356057 00000 n -0000356116 00000 n -0000356175 00000 n -0000356234 00000 n -0000356293 00000 n -0000356352 00000 n -0000356411 00000 n -0000356470 00000 n -0000356529 00000 n -0000356588 00000 n -0000356647 00000 n -0000356706 00000 n -0000356765 00000 n -0000356824 00000 n -0000356883 00000 n -0000356942 00000 n -0000357001 00000 n -0000357060 00000 n -0000357119 00000 n -0000357178 00000 n -0000357237 00000 n -0000357296 00000 n -0000357355 00000 n -0000357414 00000 n -0000357473 00000 n -0000357532 00000 n -0000357591 00000 n -0000357650 00000 n -0000357709 00000 n -0000357768 00000 n -0000357827 00000 n -0000357886 00000 n -0000357945 00000 n -0000358004 00000 n -0000358063 00000 n -0000358122 00000 n -0000358181 00000 n -0000358240 00000 n -0000358298 00000 n -0000358358 00000 n -0000358418 00000 n -0000358478 00000 n -0000358538 00000 n -0000358598 00000 n -0000358658 00000 n -0000358718 00000 n -0000358778 00000 n -0000358838 00000 n -0000358898 00000 n -0000358958 00000 n -0000359018 00000 n -0000359078 00000 n -0000359138 00000 n -0000359198 00000 n -0000359258 00000 n -0000359318 00000 n -0000359378 00000 n -0000359438 00000 n -0000359498 00000 n -0000359558 00000 n -0000359618 00000 n -0000359678 00000 n -0000359738 00000 n -0000359798 00000 n -0000359858 00000 n -0000359918 00000 n -0000359978 00000 n -0000360038 00000 n -0000360098 00000 n -0000360158 00000 n -0000360218 00000 n -0000360278 00000 n -0000360338 00000 n -0000360398 00000 n -0000360458 00000 n -0000360518 00000 n -0000360578 00000 n -0000360638 00000 n -0000360698 00000 n -0000360758 00000 n -0000360818 00000 n -0000360878 00000 n -0000360938 00000 n -0000360998 00000 n -0000361058 00000 n -0000361118 00000 n -0000361178 00000 n -0000361238 00000 n -0000361298 00000 n -0000361358 00000 n -0000361418 00000 n -0000361478 00000 n -0000361538 00000 n -0000361598 00000 n -0000361658 00000 n -0000361718 00000 n -0000361778 00000 n -0000361838 00000 n -0000361897 00000 n -0000361956 00000 n -0000362018 00000 n -0000362076 00000 n -0000362135 00000 n -0000362194 00000 n -0000362253 00000 n -0000362312 00000 n -0000362371 00000 n -0000362430 00000 n -0000362489 00000 n -0000362548 00000 n -0000362607 00000 n -0000362666 00000 n -0000362725 00000 n -0000362784 00000 n -0000362843 00000 n -0000362902 00000 n -0000362961 00000 n -0000363020 00000 n -0000363079 00000 n -0000363138 00000 n -0000363197 00000 n -0000364335 00000 n -0000365480 00000 n -0000366763 00000 n -0000368070 00000 n -0000369377 00000 n -0000370684 00000 n -0000371991 00000 n -0000373298 00000 n -0000374621 00000 n -0000375992 00000 n -0000377363 00000 n -0000378732 00000 n -0000380046 00000 n -0000381351 00000 n -0000382657 00000 n -0000384108 00000 n -0000385545 00000 n -0000387431 00000 n -0000387822 00000 n -0000388032 00000 n -0000388065 00000 n -0000388113 00000 n -0000388321 00000 n -0000389396 00000 n -0000389546 00000 n -0000389653 00000 n -0000389804 00000 n -0000389965 00000 n -0000390126 00000 n -trailer -<< -/Size 1500 -/ID[<846d44fe7593241f873354de26712b8d><d80b811e7a0ee19b4b37a85a0ca79341>] ->> -startxref -173 -%%EOF Copied: trunk/eugene/doc/1-javamodel/Metamodel_Java_04-02-02.pdf (from rev 754, branches/eugene-2.0/eugene/doc/1-javamodel/Metamodel_Java_04-02-02.pdf) =================================================================== --- trunk/eugene/doc/1-javamodel/Metamodel_Java_04-02-02.pdf (rev 0) +++ trunk/eugene/doc/1-javamodel/Metamodel_Java_04-02-02.pdf 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,12946 @@ +%PDF-1.3 +%���� +1500 0 obj +<< +/Linearized 1 +/O 1505 +/H [ 1794 1240 ] +/L 420385 +/E 91375 +/N 46 +/T 390265 +>> +endobj + xref +1500 54 +0000000016 00000 n +0000001435 00000 n +0000001662 00000 n +0000001695 00000 n +0000001751 00000 n +0000003034 00000 n +0000003196 00000 n +0000003266 00000 n +0000003359 00000 n +0000003529 00000 n +0000003688 00000 n +0000003792 00000 n +0000003939 00000 n +0000004125 00000 n +0000004231 00000 n +0000004336 00000 n +0000004506 00000 n +0000004604 00000 n +0000004708 00000 n +0000004841 00000 n +0000004969 00000 n +0000005087 00000 n +0000005208 00000 n +0000005321 00000 n +0000005429 00000 n +0000005528 00000 n +0000005648 00000 n +0000005772 00000 n +0000005890 00000 n +0000006012 00000 n +0000006166 00000 n +0000006328 00000 n +0000006482 00000 n +0000006577 00000 n +0000006693 00000 n +0000006814 00000 n +0000006917 00000 n +0000007044 00000 n +0000007173 00000 n +0000007390 00000 n +0000007433 00000 n +0000008087 00000 n +0000008319 00000 n +0000008374 00000 n +0000008982 00000 n +0000009208 00000 n +0000009749 00000 n +0000009829 00000 n +0000046821 00000 n +0000047680 00000 n +0000050359 00000 n +0000075140 00000 n +0000001794 00000 n +0000003010 00000 n +trailer +<< +/Size 1554 +/Info 1492 0 R +/Root 1501 0 R +/Prev 390253 +/ID[<846d44fe7593241f873354de26712b8d><d80b811e7a0ee19b4b37a85a0ca79341>] +>> +startxref +0 +%%EOF + +1501 0 obj +<< +/Type /Catalog +/Pages 1495 0 R +/Metadata 1493 0 R +/Outlines 1506 0 R +/Threads 1502 0 R +/Names 1504 0 R +/OpenAction [ 1505 0 R /XYZ null null null ] +/PageMode /UseOutlines +/PageLabels 1491 0 R +>> +endobj +1502 0 obj +[ +1503 0 R +] +endobj +1503 0 obj +<< +/I << /Title (A)>> +/F 2 0 R +>> +endobj +1504 0 obj +<< +/Dests 1489 0 R +>> +endobj +1552 0 obj +<< /S 1259 /O 1521 /E 1537 /L 1553 /Filter /FlateDecode /Length 1553 0 R >> +stream +H��T{L�W?_.�v�@f�P��M�_��(�+��m�u��IR�c@"�fÈ��+P�$��!�үP�t!aJ�#k��i�@j1sl��ݾq1�?�7��s~��w� +E��(�����@X� �z�0HR �Vǡ�p�p.��v._�Ֆ�}}%�9�8ҭ�cw�ٱT��@9��p]b,���֏�ݵ5�{Y��ӟQR��3�T���3${�:�%P��ޝ���/h��Ͼ���ؤ9���\�g}2'����K�e����'s��З���=��r�٘���+��Kֽ5�?�^�����W%]�Y/ +��S�ߝ!1��b�pw�����Bf��+��w��2Wh�Z���'S��9��Dg�[jv�r�=��Ob�pc�O���UlRlb��F���N�EMN�v� +U�f�T�?�z�mV��i��_����Pʄ�>�ɒ6�ͻ8��F��E�N����]I��g���S�K�|u���|����K*���zS�Ƴ�?��o5���7؏?N���p�tK�lc�rM�]����y���խ�3Zu��#2Z�m��]�^�Q�]�U6�-����� ��⩬��v���䑔T��)ݲV�T6z8�'��άwj�,���S{�H�b�>�u�����Կ�������z{۵��;�ym�[��B�Ζ~�_��t�?t�+�N�dž�$���8�3 ��(�������!�zrH��Vn��s�y��_�H�)��L9��9R�>9�Q��p�Lz��>U�a���i+G;�� ��x���K��}��h�U#��hD��7�<oyFz�0�<G� j����$[l�-%%'��W!��K�'D����B�`Y"�:���>�!j �W���H<`0"��a�Ï �p���D[��D���wm�\?�{Ъ��L��`'�/�r�p$-��� Fm.dP���P�,j�B�9JP�5Tj9L@,E��߀۩�fm+� +���^��p��@48�x��İ�ú�`f��� +o���2������`L��x3�4迢���$���˦���6X��g���P�/�[�z�� +endstream +endobj +1553 0 obj +1102 +endobj +1505 0 obj +<< +/Type /Page +/Parent 1494 0 R +/Resources 1538 0 R +/Contents 1543 0 R +/CropBox [ 8 0 603 792 ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +1506 0 obj +<< +/Count 14 +/First 1507 0 R +/Last 1508 0 R +>> +endobj +1507 0 obj +<< +/Title (Contents) +/Dest (G2.945) +/Parent 1506 0 R +/Next 1529 0 R +>> +endobj +1508 0 obj +<< +/Title (EJB and Java Metamodels and UML Profile) +/Dest (G5.509745) +/Parent 1506 0 R +/Prev 1509 0 R +/First 1510 0 R +/Last 1511 0 R +/Count 4 +>> +endobj +1509 0 obj +<< +/Title (Introduction) +/Dest (G4.509745) +/Parent 1506 0 R +/Prev 1529 0 R +/Next 1508 0 R +/First 1530 0 R +/Last 1531 0 R +/Count 2 +>> +endobj +1510 0 obj +<< +/Title (2.1 Introduction) +/Dest (G5.518301) +/Parent 1508 0 R +/Next 1515 0 R +>> +endobj +1511 0 obj +<< +/Title (2.4 UML Profile) +/Dest (G5.519960) +/Parent 1508 0 R +/Prev 1512 0 R +/First 1513 0 R +/Last 1514 0 R +/Count -2 +>> +endobj +1512 0 obj +<< +/Title (2.3 The Enterprise JavaBeans Metamodel) +/Dest (G5.519616) +/Parent 1508 0 R +/Prev 1515 0 R +/Next 1511 0 R +/First 1516 0 R +/Last 1517 0 R +/Count -7 +>> +endobj +1513 0 obj +<< +/Title (2.4.1 Java Profile) +/Dest (G5.519962) +/Parent 1511 0 R +/Next 1514 0 R +>> +endobj +1514 0 obj +<< +/Title (2.4.2 EJB Profile) +/Dest (G5.520065) +/Parent 1511 0 R +/Prev 1513 0 R +>> +endobj +1515 0 obj +<< +/Title (2.2 The Java Metamodel) +/Dest (G5.519383) +/Parent 1508 0 R +/Prev 1510 0 R +/Next 1512 0 R +/First 1523 0 R +/Last 1524 0 R +/Count -6 +>> +endobj +1516 0 obj +<< +/Title (2.3.1 Main) +/Dest (G5.519621) +/Parent 1512 0 R +/Next 1522 0 R +>> +endobj +1517 0 obj +<< +/Title (2.3.7 Data Types) +/Dest (G5.519957) +/Parent 1512 0 R +/Prev 1518 0 R +>> +endobj +1518 0 obj +<< +/Title (2.3.6 References to Resources) +/Dest (G5.519934) +/Parent 1512 0 R +/Prev 1519 0 R +/Next 1517 0 R +>> +endobj +1519 0 obj +<< +/Title (2.3.5 EJB Implementation) +/Dest (G5.519899) +/Parent 1512 0 R +/Prev 1520 0 R +/Next 1518 0 R +>> +endobj +1520 0 obj +<< +/Title (2.3.4 Assembly) +/Dest (G5.519863) +/Parent 1512 0 R +/Prev 1521 0 R +/Next 1519 0 R +>> +endobj +1521 0 obj +<< +/Title (2.3.3 Entity Bean) +/Dest (G5.519832) +/Parent 1512 0 R +/Prev 1522 0 R +/Next 1520 0 R +>> +endobj +1522 0 obj +<< +/Title (2.3.2 EJB) +/Dest (G5.519723) +/Parent 1512 0 R +/Prev 1516 0 R +/Next 1521 0 R +>> +endobj +1523 0 obj +<< +/Title (2.2.1 Class Contents) +/Dest (G5.519409) +/Parent 1515 0 R +/Next 1528 0 R +>> +endobj +1524 0 obj +<< +/Title (2.2.6 Names) +/Dest (G5.519611) +/Parent 1515 0 R +/Prev 1525 0 R +>> +endobj +1525 0 obj +<< +/Title (2.2.5 Data Types) +/Dest (G5.519604) +/Parent 1515 0 R +/Prev 1526 0 R +/Next 1524 0 R +>> +endobj +1526 0 obj +<< +/Title (2.2.4 TypeDescriptor) +/Dest (G5.519592) +/Parent 1515 0 R +/Prev 1527 0 R +/Next 1525 0 R +>> +endobj +1527 0 obj +<< +/Title (2.2.3 JavaType) +/Dest (G5.519553) +/Parent 1515 0 R +/Prev 1528 0 R +/Next 1526 0 R +>> +endobj +1528 0 obj +<< +/Title (2.2.2 Polymorphism) +/Dest (G5.519534) +/Parent 1515 0 R +/Prev 1523 0 R +/Next 1527 0 R +>> +endobj +1529 0 obj +<< +/Title (Preface) +/Dest (G3.509745) +/Parent 1506 0 R +/Prev 1507 0 R +/Next 1509 0 R +/First 1534 0 R +/Last 1535 0 R +/Count 4 +>> +endobj +1530 0 obj +<< +/Title (1.1 Guide to the Specification) +/Dest (G4.517781) +/Parent 1509 0 R +/Next 1531 0 R +/First 1533 0 R +/Last 1533 0 R +/Count -1 +>> +endobj +1531 0 obj +<< +/Title (1.2 Conformance Issues) +/Dest (G4.517638) +/Parent 1509 0 R +/Prev 1530 0 R +/First 1532 0 R +/Last 1532 0 R +/Count -1 +>> +endobj +1532 0 obj +<< +/Title (1.2.1 Compliance Points) +/Dest (G4.517648) +/Parent 1531 0 R +>> +endobj +1533 0 obj +<< +/Title (1.1.1 Overall Structure of the Specification) +/Dest (G4.517782) +/Parent 1530 0 R +>> +endobj +1534 0 obj +<< +/Title (About the Object Management Group) +/Dest (G3.511059) +/Parent 1529 0 R +/Next 1537 0 R +>> +endobj +1535 0 obj +<< +/Title (Acknowledgments) +/Dest (G3.510898) +/Parent 1529 0 R +/Prev 1536 0 R +>> +endobj +1536 0 obj +<< +/Title (Context of OMG Modeling) +/Dest (G3.510685) +/Parent 1529 0 R +/Prev 1537 0 R +/Next 1535 0 R +>> +endobj +1537 0 obj +<< +/Title (Intended Audience and Use) +/Dest (G3.510683) +/Parent 1529 0 R +/Prev 1534 0 R +/Next 1536 0 R +>> +endobj +1538 0 obj +<< +/ProcSet [ /PDF /Text /ImageC /ImageI ] +/Font << /TT2 1540 0 R /TT4 1545 0 R >> +/XObject << /Im1 1551 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R /Cs9 1542 0 R >> +>> +endobj +1539 0 obj +[ +/ICCBased 1549 0 R +] +endobj +1540 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 174 +/Widths [ 250 0 408 0 0 0 778 180 333 333 0 564 250 333 250 278 500 500 500 +500 500 500 500 500 500 500 278 278 564 0 564 0 921 722 667 667 +722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 +611 722 722 944 722 722 0 0 0 0 0 500 0 444 500 444 500 444 333 +500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 +722 500 500 444 480 0 480 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 333 444 444 0 0 0 0 980 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 760 0 0 +0 0 760 ] +/Encoding /WinAnsiEncoding +/BaseFont /MCDLFK+TimesNewRoman +/FontDescriptor 1541 0 R +>> +endobj +1541 0 obj +<< +/Type /FontDescriptor +/Ascent 891 +/CapHeight 656 +/Descent -216 +/Flags 34 +/FontBBox [ -568 -307 2028 1007 ] +/FontName /MCDLFK+TimesNewRoman +/ItalicAngle 0 +/StemV 94 +/XHeight 0 +/FontFile2 1547 0 R +>> +endobj +1542 0 obj +[ +/Indexed 1539 0 R 255 1548 0 R +] +endobj +1543 0 obj +<< /Length 532 /Filter /FlateDecode >> +stream +H�|SMo�0��W�ё���8�8��T]���!�:%�n�dS*�=cg?���w5����{�����@��־�����a�,�B�-�(A[���!��Fa*;��[T�"LղbnK�+��SB*���<O +)㻆�R�*5Tό��To�u�@ݯ���=|���h������)�9 +$*�UlA��ԭ�[�q����]h��k�����:�@�$%Rh��VE�d���ճX,�wI֜)S +K����+�m�3U&�����T��AI�#=)�C��js�8l�Ѹg�� Y��������Y ˻5�{���C��EI�}���&I��<��811-��D���֛�ԹT�{�"���m�2U��@/�I��m)�O\==�㙲��5�}Fs�X�8�0gt�)��<I��G�|Ԇ�|���������#@f�����L1[e�!����~��Op3fh����� +���HSȒ�v�҅@�S����OBup8{�3�+�C�Er�*Sx��ٲ���j`�h�-;|į��?O3� +endstream +endobj +1544 0 obj +<< +/Type /FontDescriptor +/Ascent 891 +/CapHeight 656 +/Descent -216 +/Flags 34 +/FontBBox [ -558 -307 2034 1026 ] +/FontName /MCDLJB+TimesNewRoman,Bold +/ItalicAngle 0 +/StemV 160 +/FontFile2 1550 0 R +>> +endobj +1545 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 149 +/Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 250 333 250 278 500 500 500 0 500 0 0 0 +0 0 0 0 0 0 0 0 0 722 667 722 722 667 611 778 778 389 500 0 667 +944 722 778 611 0 722 556 667 722 722 0 0 0 0 0 0 0 0 0 0 500 556 +444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 +389 333 556 500 0 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 350 ] +/Encoding /WinAnsiEncoding +/BaseFont /MCDLJB+TimesNewRoman,Bold +/FontDescriptor 1544 0 R +>> +endobj +1546 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/TR2 /Default +>> +endobj +1547 0 obj +<< /Filter /FlateDecode /Length 36899 /Length1 55524 >> +stream +H�\UTUU���Ϲ� _)^RG.\A1|!) I|���S�EDȫ�iciY���ZJ:-�&/���L��&3SK �D��Ǥ�5�R��jη�Y����������m�X�܉S����-�w +������@�XX��~���9��<X�/��X]� +���/.^�zu�� +X;�t�o���{���)eG�~]j�����SZQ���w�=�Z>w�O5f�4d;�·�V)���4���U��/�h��|r�sT�7������g�?)��DӧS�����!�o/�=s���|/ǚ[�x�e�������`#^F\�d@�����X�18���r<�D=b$ +Yp���8��0pq��Y�����n.f/�B��7�O�e +�hg��g䵦 .ę������ }L#�i}�.若xw��[mD�d�\F +Qm�XUfF`NI��Xl�ܱ�����ɴ����%��?=��d�Mj�ΰ���X܋ �q�78-]%Y���f����:|�����I�ӱۙ�f|�$L�Vi N�5���r��`]me���:�J�$+�r1[.�C�֢����qɑi����e��ps��G>����qC҇t���z[����Os�3��q�<�2�?�'�O�WO���ASo.�K"1�0 +s���w��8���Mu=�Y��'��fs���>��S��j��N�!���.��*���,%�V6�9-��CE�y��#�k�m�T��;z3���;������!�p��D����T#T&�:�����Z��|�\���� +NV���1��,�M��C?)�������ug�у�}�]�W�����5�j�����>���><ar̳̅�A^}��e���搟���%xUX�zY�mh���a���;�"�ٌ^��{N���u�/�䰜�۠��85D�R*K�����jV�t/=C/�ˈ�[��`Y���v�]�8�sf;�B>�u�v������upcp�j�1�LW��f�`-�+q7��G����w��f�G��Ր�]%c�~b�L"�e�")%��2yF�˳�Z6�c�V+��n�m�G��V�F��w�E�4�9F�UIj8W��ƨ�j2Q��~5_-�թ7�^լ����}z�ެ���I�OKY V��fM�J���1��bݴ#m�]j��=)�<G�c�c������u9�8O:MH���\�.��Ir�v7k�j幈�~{��1c��.�k�'v�\�n9#Uz��c^�Y�'=W���$ZGک��`�A�W7�E+\P�%�zQ�Vsu�r��?���%@}�T��4�Cz�^n��T�FZ�un��V���%N�X�V�ȷR웘ͼ�j/b�G���_��jpA{��r]6R5��X��zD +�*�m鍫2~ـtyG��=��u2N��� +�2���Q%'u( +�8J� +�\u]��w��`��'xB�d��� �Q����/5�K5�T!/Q�o�mSl�Ůf�m� ���xXA*��"�c��Wb�ڄ%f�̤~*�2$I��EnKy_tW�������C�~�\�����jB��6���R� +����L<���s�?�Dq�;X�*�������{ ���a��@�n*�<���F:�<���<��<�ʦ�n4e\�l�Q�x'�l�2�w��rS��f�y%�bꩿ�N� +�@M��j�a9���s��ng��(F"p�x��F������9ʬ2��|D3CE�E�F�1oٺ �'�F�����Z1�ԙH E�)��Z�M�Y��vmzz������H>l��)�J�4 1!�����1}<�Q���ճ����ݺ�եs����#��-� ^OV�;[�b=�ىmm����u�����O�]�����g:=���3�ߞ�����4�%&��w�h�ǽG�Mʧ�:�S�\m�Ƿ�/��hGEq��Q��H���ZXZ�-����B3<�B�F3�V���7�k����MmT�@R��Lo�nOf�����fr'�{3{FE$&$c��(��@��vd������qE�{����xm��!�^��?̧6�)����i�?�]�i�`"����OJ�Đ<� +iDBm�p������Q�PZ�*��i��Ж6�A%���s��[�-���wf�|��9w�<S�5�r_����^Z�(��tv��L��5r˰n�9�O�]��y��m��aD&v��j�|���X��Ͽ�8�0�`4aD�����ه���x�Tz�����{�w�*����@���jcM�o�Դ�$??|����#>�%�����d4m::)�4RSQ��͵��?:'Y��N/�J�dIv�RCSʯ +[X:���>X`Os�g�\2V�E7���2;q]�� �[�v/�7]Ao�g� ���OF�t$[���q�Y�"�N�,+3KK� �Z�(l\ �U�T3��냀��q��#^S ���|��´��1f�}����+�⦚`͠���5=�&5<��Y�3=ũ���1��5�2�?�W����@Cc[�1I�6������)]��� +8�Ԃ�Ԣ��������@�+Q�P���ژ(P�vI-r*�=53WbY<��%�;�X�(���M�ۿ�Q~�}�>�QR��ܓYS6�>oD}�yY���Z����f�F袸�#�E���1`����㸈���6�p�����3�#�M�Vj*��Hn�p��{����M�yXi�l=�rIu�ש��^ +�O���CT����N�е�ѾK{����4�͐�� �/>ʁf��b��9�}M��<�����_��i�Z�X�r@��J�u�G���Xo��L�(AW➌���K�G�"ٯ��Q�P�s��`��1�A��A��ZWQ�;��9d��A.A�R����E5d�D9���M.�Y@�n��φ��ЏE]�X7���b�qA)P��=r����h �����g�� +�l_:l�$�V��mw@��*1[�Ֆ�^��gh��o]C9����}��`�!��&�'[���\Ǩ +u0Q���K[�u +CW���t�u&U�-�[4Yң�/�M�`{��.LE�f9���h�(�0�C�生��}d-�~�C֧����y�'1~֯d�+��}�{�g�u��$`��%�1��c��y +��+90��Y����A���$��9����1�{��G�)��y�s���ܐ��$g���7�1;f~�>I/c�r<�&Q��2^��f����Ŝq$��6�O�T�����2�[i����R��J�A�f�ھv��!���1�H��O#���ư�����"%�S�%�w�Qm&-���v�����1xU�>}�����r�%���r7�=���|��e�v�^�rH-҆��Ϻ��S����e&�A[ǒ���o����]}�$�s +Y�6D�b����2�9�G���S���t+�e�o��ha|��i�6H�q2�h_��+�n��q_9/�et@�/�!�#�R���rm�G����KR:|����v�����W!�2&Cְ-)Ĺ��g�H�_S�|��ō4~f�4���0Λ��49�e2�d;q�1�9������*�I�s�q�g���C4��ޗ��js�� ��e��=��朹�jן���b����� +�uT�f��rj�f%�|'���\g�0�G��4y�9�j���<:F�Ͽ�D�5y�͒�rrV�ޛ�<�떖GO�������F�i'��;w1���߉]���a��2�0��g]*��cH��} ����5��z�qVν�g�ߢl`�� +�V�9$����n��~�c7 �`.w�i*�%�嘧�^�����dn^�s�M��9r�l�'�BכT���r�z����j]��<zL����B9_�~rT �e=�# >��M�]��ZJ����e>�rU�r��`�NS�����%�B��y��n���e����)��F{4�>�w�*���Up�� +2߰={��s��D��pǠ��߅�<��� +��4��l+���WߥV�k���a�����@�}U��w��� +��r�<�����o(&\��}�F���S��C��"�͂n-Ɲ��glŘ ߢ��W�%�>��o�k ��V�1u�7�[�FN�g�!�g���,qy�brl�Vw�y�vw�Wښn'�x�x�W�CM�"� h��Fu'������K�I9�g�^�*���I����cU�s�t��~lA��pخ��}�s��<��S��>>C�m����K�u��t� +hd�m�a(22�k[��Uk��2���7S�{#� ��̙Q�:���iͽ��s4C��F�~�x���������~���<!m������h�<A�B�� +� +���*��5�A��lO��������ўY�<�{�գx���A��ҋm!��u�;�"C?ݩ;�ڏ�6�Q�H�Hr,��/���Tؚ/��`����p_9>�v2d��1�b��U�����j�+֔z�|�s�<���mxϞ��͐;2���}1��6�Su�K.e���c��/�6����s�smcnl�@���CBL̺������%���0H���)%F�.Y@�� +V�v +��d���6�Nkժ�4iӄ l�ۏ����-�=���CZ+uf�y�s��=�{�����/����yxx�]��� �@�Qג��0Ξ� ^Wo~@�d6�<�ϛG�wh7�h� �q�A(�Lނ} +�l�[�lq~'� ���Rco��M�y���!�=��/���.�<`�N��`�t����+�7�rM�}��] K����w����yd����U����i5�����x��,��S�=�ӿ���w�T�Cz��]��;�=���L} �e��h�HB��j��Z�(�vM K ��5/Gz�X����W��e�Wó��W@aW�UR��(|(0�`��[�M)�'YP����(X��>��}��*��gisH�.{�d��{��M{�&2�Hx7��Q�0L6��~J:�.`�́�ZXX?��<�0� +.Z�.�F6�7`F0��N�1�Ev�̅��K}��싡��/�'�? �i���σO�1�s�G���t/ +bܞ�����b� /����#h��Ok0e�f;d�ah�3�X�+O��QG���^,i��+ׁ�� 6�ڧc�S1�Y;b�ӎ�v�J)ۍz���{/����n�G�1i���=�,ֱ�:Ķ[��l[b��gOa� +�TbAn��N�9KlDhfZ�"�Ez[���ڒX��RD=�d�䛀B����`c�VA �=Fv:���;�N�i�̰�Fh�E 5��r�Ŗ� �x<H��m�}N�qz��N�Y��he���1�JX�U�8�HN�Z�5+!�u��nW��t���\�:����ꄚ�UKUC�Q�6u�ڭ���n�ۮ4��\�\���J]��ƕ���7|�5����݀ +k��˞��5�X�'�L��ch�C3�s#87�nXݰ��� +@[ګ��L�����J&��X�q��h��i�i�i�S&1C��L����4�oT韐1�>C�U&�ƥ�E�,��E����P8`䃲���z�/���Z�V_kak��Z��UV��Bz�*��J�_IaI�����y���j��bե*[��������KXť��>�g�e��#x7�$�����(B@+��I� ����j d`Ԡ�ŀy�'�=�'Z¯��g��k���pn�q�`�=���N�����K{u:�W�E�lj�`�����oXOB@h2�%��\�́6`��z|��-� ���ڊ��̛�#M��'�Qfc/h8>.����#�R�Q���R{�R[��RH�p��g��ڙ�V֊��=H�̕� +����d����}��}��}�����������?�)ْ]��Qɕ��.��õ-\+�ZX��(��rɋ%���qG��y�~D"�D�`O*D +���a�-+�r� +���� +��'T>�� +��:ϥ�6��8�� +���n��&Aꃾn����`� �_#��*���zh�����c�߄�'-�7P��˪�,�uX[�C�Z��.�'&�� +.��9t)PDl3�)b&U�_B�� +��Q�/FED�$]g�+ K�,/P���r���E�]�XDt9�ⓚI�r�ɗ���Ȣ��]���N�N��)��������VX���#b�,~ɟ��s�7�y��$�l�Q��ER�g�0�D�B��!�6>�Ko�/~��r~R��/�з�~�1 +�W��:���*�����n#�b�,�F�_ +�$�H��I1�R��?Ǘ��]N��eo);����7�7������/�{���E�lG����t�v�r8���Pđ��7p��$[�Qm�m��Q���_���Sb˩�#�M�fYq,i�z�\U35_����u���$%�j�A��@����v�PZr���^���1s��Ě�捍��Y�כz�|2ooh~(��9��Gf��4���/��3?�<�Xk��[gDc*�.fn���j툲Ki�FF�6!u�#�9eW� a��E�n��|� +a8����$_��|��aU2�4?��O�M+D���2h[*WJ W��)�I��U�,a��d�&�-��g�l��������2�}e��ǭ�Rө#>Y�G�dJ���b��1�1ş秥�3�D����=ڠG[��O�7�5y��[/��dK�����b^�["�V=�nl���,܍zd�4G7�7-��h�ꍑ����u�{j�]k]��:E�u�����p��b�ֿɮ�ئ�3~�~Ŏ_�v ~�v�a;�!��oB-&QBh3L�C����+i� +kEф�1� +mB���TЮ����i��(ۢ ����Q� +q�;�:������sν���|7��:/���]׆��}��P[l���&J�C�j����{[���l/=l�.Cpl)��)��mJ +`S5�5�l +��Mi`�xq��p��z��8��a�� +yQi���oZ*�fH��@�ӥ��aZ{otjUφ���T�cJJ��03Gz�Z�'io��I2<�O�/��t:�%7w�ߑt�:&����Ml�*�'_8h� ��ў�3 +�N�`����7�]���@�AՋ�B�Az�P�p�6���� + CG��� `���Z�Q�����SJӾ``y�����;� +<�(~9R�h-���@?| +��kG4�y�൱Jy1���f���w{�����S^/b`��^��~�p*�@``�(?�b���f��4�jf$G���AޅbUNn^F�,CB�B�:oa$��M�'��J$��x*�j����.�l�s>�"��>���uv��~��F�{,q���ރ�R'y�� +Ո����UT�Y�ϴ�Ր�5��Yx0]l@��;�舥@,ˁ<Ta�ʬ"������e��i9�h�_6P���+j�B���d�X�:��m��ú�ֲW���Cr����eu%�u�"��܋���c�w�!T0 +rj�ߺ!R�D��z���-�L���&K�:qň(F���O?��3~b���������8���|��@O��F��Q��b^#X�6��j[��UI+��ɶ�V^�QV�L +�K՚��J��㋮�l�'�����{�+>��Tj��o �V��Ԥ��3x��h)3���QYum��N��˪�jo��U��9 +�N��\Y��I�����wM&��ޑ��i���߁2��DTI~u�,R5�-�>"��r7v������K��� +������8!N�ś�]�3�Q!�k��82m_�L�5����Yۧ�������N�l��9p$�Oڬ6���y��^��zi��`6hyh��a�����!l7�<��L���23�;nO������.+X���̡`���q�����h0��l5t�i��{�wj0��� ��unϺ�m=���Oo��_u��[=�dft|j��2�����gc��|o���#i��%��n���>e=�Rl���S�G�|a��6�:6��l�_���� ++�l>���M#M��y����7��q��I=�S�ꑬ +��ҁ����BFyG�G��L�b�O5`���P��=tL����,xx��)E:���}���o;��!sCMMsމ�8����N2���+���#=j���to��K���ⴠC����BxS���1?fX��m�·���}̂�n���h3��`^J���8�s^�[��%]k�����!�0X���ܩ�pq���� �3y��JYUѓ��u �j?A�x/�3���!p\4�M%F-�C�0|-�=�m�L�����v1z��Z������>��AW��x��L��g��1�wd��MJ�:RGmE6AV�l���S&QR�'@��{��z��"�C�z���T���w`NXF��N��2C=��K�v7l�G$(*��F0٨�+hvh6v&��3ڙ�6�2��3�]:{Ю��ٍv1�4���x6�:��Z����˩�Us�G�2�^�#1��&*��=� +�e��t�DR)eM��r㘑3� +~,���I�Xz��?�9����)i��472M�!}0�-�C�y���r����o���&r��z�`����R���t�x��3d͈d#�ؒ��Q���)J��n��'�Y|��Bc2�T sę��@�YAj�%��#b~�����N�[`�T�$^I%Aj + +R$�/�I�@��*vFh� Lط�}���/��Nj��mm����u{/]�!-����}\>�dUj Ć���H-�6� �����)Oo�_��e���Y>Zg�BÑ��\>ձC ;1i�������~�Bk�k��E����E6����qF��jKK%��%7�� �Y�}�̭cÚ~�D�h���_t]�KA��քD���.���i-�pV8*O0ń��ʬK�K���]Jw�h o�����j�m����������}��{��Il�;�0~���xf i�c���Ѝ��`�Y���1qK��1���P�[U�1�1i�(�&2�v�-��(-��kB[K�}tmY���}��)��P����Ī�V(���u�ݎG~�ZG<���7k)�e�~���"�山n�=�7�)Dg�^������������'?���V�.\][�P9~j��=x +�5��\�����}��[�k��-k? +��?]k>4?w{t'"b>�+`��@&0�I��3�G��&i� +&a�ɐR�9Vm�:� +������� ��1�*�)��I92��糘��R���V�T{Ԍʫ��������<7�6���L�9|n&y�5iѤ�����uh��u�0���Ks�e��.E������~��>.L�Q�A��B��X<�w<�w�t�E +8���R��nj�竔��,�$2c �ضĿ8�ڶγ�{��3�+�����y�o�����m����B�.�>� +H��p�R�}��!tJ�Aݩ� +�SA�����V2YfΉ]2�Y.ɜn!�W+P}�K"p{��:�Y��"^mԚ�5Z��kY����RAb0���Z��A +�,�F�)�XA3]C;�^��H���R�K�<����y(+�%��Mm��C�_�ۀ!��]�n��� +�ڛ�VJNg�r?H����)JT2���7��e`|���XT�����jg�=Z�X0=B�(L���n>����o�Գb�k�s7ƹG[K�|��w�[c`�b�7�g�l���a�<�>�1���(Ce�J�jI]L +�n�%��Irg���Xٙ�����W"W���W���s��2��**�$K���P�Y.u��>�e��t�%jR�,L�s+�ga%) 2�s<�Ӟ<�ا��Npf��WuUў�L��秛�N�{�~��,�ԯRS:Lx�i�iTӓ��\��<�����c74��p���a+x����&���XjF�23j�u�bv�����*V����r�X� +%J��wzd��o�W^A�� +�M}�Q�O�|�̑�GiYޒO}(���2�����Z0y`S���s���X��=?�G��_�K/>l4���ܲ%?{Ǿ�5.~����gOn~sjyh�M�(:>�8g\�bR��ݭ�+:�Xm��`w���\b>T2Ma*�T�;�PB;ND����N�� +j��y%[�$�l/�N)Q@9p;s@/Se�(������,T� +�3�,��roq���-��y�Ђn4�r��$�t��Җ�w(�������Ml��\a���iO�'����?�UUE�jǬ���O$��3���O�?u8W�>��),����M_��l�S+�}�0�� �)���]^�:���n~OH��u�ܣ�su�3�n�3�������FT���j�>���*gA�1L��a��9)�����0Lm}"�i1���^5M�\0����]R��1�DG�EZ"4����L�O�l0w�M�z���yĆ����M:yj}��� ��n�J��:! \d$���LY��9V�k���� +kCB�"�J�)�SE�kIi����r�6<�[����l���:�TG��5s�?upד�/�=�_~p{vuW���c�n3u���?����j�p!b~ +Y d�����ؿ��"_�^��"���÷�ϧm��E� +]�f���.x1#֞���ѧ*� 2����8�So�g�q>����"�[3�Z�i=ZF�4��qc��H��[�2���������aTqT�����T�D�XT����E��taUf��B��h%�N<ȃha�A����Iۊ����> �z�btu�ŭoZ]���]Vl��kٻσ����3�'g-ر}Sl��2�4����O�}li��afn�ݩ��[�>�����nX��{o�;��v���!���>�h���7�X�6��<�0�E�(����#��*"8�(L��c� r���(�)�Q'\E�̨�8��g�Н��F8�O�$��g�#|��w�'�9��� +��Sk�%�É���۵���kG�0%c�41jI忧�r鵰/�����ɐ07��������وlډl�I�$�� +,��+Y����Iv�v9��]���-Ѯ��������>�/�o�Ζ���s\R|���Р\�S���ú��Ce��(q}���9d̪h�%��g�̃���8������C���$[��d�$^ c���bl�`H�����9I$��v�6��i aZl�2)�Ns�ii''�1��8.�}�R(L�hW�}��=�����[�@� ������'}� +��ҽL\W������{����+�i�k����G}G� ���F��Y7�7|7���*_%���S�j%ʲ�hyÛd��2�%��vDT@g䵴�>D�QH1����P��p��χ�(6��>e����7�x�$�����/�S*ZJg���)�"��1�J����dV8V�}� +T���榡� �d'�@E�ɩ�N'�T�$�tJQ����RM���'�y��Ė�\�J&]���WZ.y��c��2tnMc7.�"nZ�** Ϗ=��5;�3��3�Ϝ����wկ��Խ|â�O�<����M +��E�k5�Zw�o]X[���Y�:� �p������}�G����Sʭ��Y[��u���*��e���~2U���.�����i�82c�M_�pGTy�y@�"A +��=��Ʉ��_��AZ^��R�^ ������������c�P.�L�8�A2,�R%c)Y2�bwU=�8�J����x���,/�{s�9ٮ��I������7ظU��#J&�)k�R\/KK(�R�R�9�f��G����^^���k�����+6�=��g͑e�?�{�F������?{d���/��;:ȩ���?�2p��͍�c���Qǀ=&�, ��m�>�4h"Rd�9� +oi�a�@ocT��1J�b\��rۇ[���W��>vIM/�E��d�c�!��hj/*՝��8A +�|r����9�i���w��l�����N���y�T��#��LF�Q�m|%��q�]��͒ױUܜ �� $Q�̲��R��*��Є�PXNx�y�_U�,��'���S�Pdz����Y�h[/5$��.S���UzUe��fò�! ��E/������YFa2��g*A��L�ѳa�:V!�G�0{�WP�a�I�/��r�}�!���B��U�:f;gh�`L#FdH�cL+CZa���z�@�e�~>�矢q�,Y���d��%�E�R�x���{-��9 +4*j��Z&&�f0���,���HR����G��[A�{���?^�\��X�?�*�Y~��b��X�*���$y��=@�=���D���:��1��p����:�9\C�����?���E������(�b��֣8ԩ%J�!ߥ<!����Kx�!�O7߽L���.%�'�^�q2�{y�FQ������3��0:�&BAY���=fY`�dT`M�����6~7�n�66~�H;cι�y�̴91t[ +t;ZI�=��F{��5��D��(j�W�Dg����H���m(AEE�(~�M���h$��xQTa\mA6j��;�B�)A�Ê���pƼ6���dAcfM~����Vlm���XQ����H��J���-�cn�mYИ�W��^ZjNಟ�2�۫wJ� +������j|�1���j���e���C�"�b��&stj���G�♵5�3j)vj�J�xU����x�@�U?Rׅf��9[D;�rrf6��x�qdvX��`��b�=Ҙ�@j\Q[9�?V>ہ�b�e]H�2�wY�)������Y~��4�%ZK}N�%??Ud����tb��� +���\7Mz-t"]� �;��x- +N���4�ٔՖ�j�L! ��C�e���ƈ=����C�ON^Kv]����+��EIo���/n�3w����W�vϞ��7\=s�;/mX<��w�7kNgl�̂��s��:��d��<g�^\;<����&Ko}��uC�L�L��9~�V�&GN�$_|�6R��x��������3f��5t������id��F�!�y��c�jdG9� +ѦTs\6�!�rb.���x��j���֕���aOH2Nj�Je(���?5�����Bj�$d#��וfs��� +�1���\��B~��I����va�{�{��G�[ؕ����/j��S�)��)�����W���߹��u�6w����-��Y6�r8G �!v�:æ2�M6��(lJ�Fo3l8��v�[��5�5X�sju�\5D�"�8Y�Q�� 1K�s��hT*UJ{�U�C�EM�o�� ߈j�������ԯ9W�qd�d�J�㘤>��q�''���SMcO�X��<�~���1̟��mϿ���&�;~��|g;�}6�ם}�����9%gb<rP@|�%]I�@�V�� +K�Z��*Q�0�Q1$Zy*���ZM��Uƀm�i�� [�2:5����R�~�~�%�������7��v����<�:��^1�6��x�,� '^�~�*:��ZooИ�,���OU�>٩}��}�ޕnUHӊ� +d�����~Ң(dJL�\�� ��(���a��1���43�X?����1������e��~�n��mS�����7���U��f'��G']:��h��_���a� ��l�)ip�����|e{ +\�������hg/ű-�O�i�L�}��$� +�"د�����{A��&_̏��l�m���fe^�I +'x?�m���:�7�=�A|�XcYC���d��!v�+��!u��"���ɏ�����������J�K�lb�8�(2t������g%"�r9�/���><�!���@�>��o��6z�kn�=����n���;� �^Rf%��̂�DŽ +���&I����pga����Ƌ�Q�u�3�p�� �T�R�>Pzb���H�����J(D��d�;�F�O��u�O����^�鬤x@�\��)*&ØnĴ@�i��3�,h3�� cI���N��J����zk��@�-��X����`0@�F��$1g�C�t�L'�D��ѹ�+j����F˩�j����U5zX]f�K~2���w�/(�;_���wϮ��T:u��ݱ9+8�-~ު�֟�U:�2��{bB �oo~�5Mw}��㾩縣[�_YNZPZ��_,.��26eγ�i���DZ��:�u��v��i���߃���-�����W��l�8Gؚ '��+ K�ʸe���r +�8�}���!�"�~�[?�f��{j��c� �f�ņW0@;Sy� +w�w�&$�� W@���ʺ�F�)/��=�\��]Bѹ�`����������z��k��Qʹ�ƚb>��lI��kВv�#�� +x�ܔK`�T�6�C4��~��"��zdTvd3ɋ�0��k��o�<���[�gj���yf�i���}c���m�<[3>8��v��D�_��-��v�����-���2Ѝ$�F[��� �?0���5�w2?d~�X���]́���ˌ5����y���]�n��A���!J~1(hN�j>f +�=�Q%3�c�,�еb�r�"(JG��!�~hᇣkC-,��� +Y���~qm:��I��]^Fi��P`�p ��>���MOr��.�%����$�Д��bP� �%�O���5�_y��N��?������}�?�����#����v�R����O��B�A0?��� +��-8=���k�6�6�~�y=Pɜ���Y��E�H�XGl��(=f��d��QE�tQ��N�`㬴����!�Á�@����),�$��~�\�H���ܝP(l�U�V��E��8F3t7M�éJB�i���l%S� +�C���sGrDc��|8{��U���jRw`����U��'L}���WV7M�T�k� 2��1�ߠ�!�~��Xh��� +�*�[�f ��3��*_L��кI�R��tz��[��h�n}+3g���ԽLF��Yyy���T�Ѯ����;RjSMIZmn�ꏤ�l�U?c������l���!D" ��i� ��3�u6�f?�&�g���k�%�.y�>EN�mEK��،ZF�1�����ZqZln�1�a�����(�A'qG9��\L��f�6�n !kv8�IL�a��BLQ���[U]�`q��3q3^���q�h�M�_рF�ǎ9�|�p��^��4������F%� +D��;�J�#�F8@dR�$�[�P� +����O�?G?��v( +P���a�$2mճ�局�.@��:$v��oC$�-}���^���6�AO@Q�"ۈ��+�Wj�>,�����,P��vra +���3&�G:̎5[��@1��u<0<8lJ���v5����Q���S�f�L�l�u�� +��$�AXHٺ���+:8 ��RSo;��QJKN-j��G��ϸwy�=8Ҡ������c2�BO�bB�-έ�;��Շ��ԫ8�ɮI4mfZ���=وN3VES�j�JP�Т]�{6�����I�!���8gc6�J�&řľT�Z��/2��^5�M\w��w�8;�s>;�w���;��NH�p��_HC�ҕlP�@=��1ڂ�3�B�-��1�nTZ�˶fk�������v�m]'�2i��D&A��P��Vbg��@�R5�����l�����e2=�f�"��L�m 匜�>���3TY��z��O־�'�]�}�Z�l���y���������#���{恁͋�~�c�r�s[�����)L� +�o�ϐ��dxS�gq���>:��o�±�P=렩/2��������Ɏ���c��h�dC�ZQBt]U*��T�:����b�#Uq��_Ub�VKB +��BB�'C��)�[ZJJܨ����R�E��^С�S�O�'�)ݡ�#ͨ:�uLtpZ�h� +��uI�]�s�|V��oBD��[(ɧg�>;��m����ְB��=o������ ��[_�/�m5���,�b�Oi�u��J�[��_�v�/�5�2� +���Ih��;��bᱻ���]��X��`�P���%F�A&=��F^Uѱ��D�U��KU|$$��X�]}�?�s3<�|'������$��=Z"S�����#��$�,�C����U\�t��� JEn���ĢY9�b��as<��5�ts��-��"\�_@�R��t�O�&�vC6¨�/.w��� ��2������8�6�r��S��\�7�=�����S�~�-�"|���y�q����o���Y�\��0�z�j6�I[^���*wiEie3,q+%r3`����ϼs�?[�O݂�mp�.�Y����-_�(��Z}D��ĭ��#V5�V6�@V��4.Yɍ��h��M2�zOz�F� +��A�6:а�������hk�c�=�����n�94b���{��D۟=o'<b �ȁ�g���(8ǼL�%��d/U]s=� 㮌k��Y�f�p=Y�*�K(l@������#��qsZ�8&��9� +�����J�{p�>�L&hr%�{�%�&]�Sq��M���D��nmQ�v�M��Y\��J����MJ3@�z�<�0�N+i2@i@O���NAk��䁨���r:�}�S^�rڜ�`P>�����h���)�:���p�#�Χ�c�R� +�a����"���tzА�@�8���2]�;z_��0m;�v�˧��g�����BF(�ia�(N����Y�c/��]���7��WL��=�P̦�\�#�+^_�_R�f�vgk�}�p7�'�������1!e���|؛���l�`�&~�.E�cz�m& �`0(1[�-�/����V�3?�"�Éz���u���� +����˟��K���U� +c��� +�ϿÃ���Z�l��y��UI��²{|���\g�z���&:W +1�, +g(�1?�*C��a(�4h�]�Kh;�F��q�����F����a��\Ę�#zp��k�ݪ"���j�p��>U��3lD�� +�$(1�p����-��z����q1k2�)#���H�7O�Wݒ��6���-7߭_.����]�P���c?����Yx.�H��=i��0�6��P�u[��w\gk�����2�����'Z+��Q��[��x3܀7���{�3���2��=�R��.�\#n������۩$q5 �f͠IJ���f��N� +�[�0؍��#�z�B��g��x"q^zO&�J����ć�c�#�~FZ_ +��U�'���w�>G/�K��0�"��*D�����OB�嘉�uӦXP���bP,�8��8��R�,K���P��t +�@9^�k#��)XS�AF�L@���DŽ�����I�f���x�5�R����ӗ�����M|�����&�9�Ǭ ?%.J3��&�0��� ��S����Q)%�@�L��xvC��Bٽ3 +�w��]�!�4C w�B��,�.[���E8�b�4��OЮP0��m������p8��s�VG�D�7�f����wn�|�)�̥���DఱlX�����a��#�ֿȿ��]t� �_�E�4p:1 +�Ι��~�D��E= �:��~�,r�].�� +^tqf�����*'��!B���A-�bS1����:�С.G{��wQ�Y�r�5f��wMe��v��b��=)�WN!m�P�5�.Qc0R�r����7�'ĝ����<*��C�}M�� +X8ʱ�h��G������]��M�w~��9;~;�%���پ���g'~;�c�@�V�( ���h�!�K a�- +�ҭ�� +�]{���H�e��i�:�!m���K��mZ?�s'+������>_�d��^&�P��xazc����@�J=�Vl����Q���|�'�w�T �frj��%W+��V��b�G�*QD��@��rՎ�B5G-=�VE!<�͊�D!�"��4��Ҕu����}��;Op�z��GKc/�4fF,z[iq��g��0�a+=�i�|�EB�[�2z�9*EaD1T�JS +��Zj}-�P@ ����1���f��������T^�l$e#-9i��-j}�S���IĂ' .��j���T[���dq�IT�skA���J�"V$�Π����ג�egT�rؙ���`�=�m�O*�����?.o>���ħ�H�������8�0�go��V�W�sq?��<�>�_}7���]���W�L��b.%o����H}�1?��sE�&�a��?��1F��B�k��rW�X�<(�n!����6���wX��?>��H�0v[�D��+|@2X�f���<i��0������·��iw�TS����@>Ɨ�)�>���*O�ɠ��e|R�!Oʔ\����</^�Z�Zf<�d>ѸH%?f���\cz�LH%U"����l�T~!^��D%1^+f@�%��@�%yp�$�v����A��&]$j"��h�%vi��O"mI�\��U�7�'t����HY +�N��%�G�%s�Œ� ����w~��?/�\`�Ȣ��g����A������N=�]�vzҺ�����#mNU�^�V�u7�#%�t�ǀ���2r�-���?��u6}��jD7�'���Fb(3TZ�C�H��3,T"��9SN���3�L;���*��BR$,��KȂm-����ߓ�^.w4���SQ�b(�M�j3��D>��*�IB��#���E��˰+�$OŚ�f4x�5I�d!٬�i�#��U(�U�Ae;��r����k3���S9P�U�c��mCpJ���Q�.�<����MC_(�c;��?���U��i8ZY_y���~ݟw�Y9_�rax�����Ӄ[U_�$��!��P&��8^o�7�T��$�p�r�@��Q'��^a;lǛ�M�-���`(t<y�F��ד�wUh/��No�)|Z8��H�N�K>NZ�|�!�4�b�Gx!U]g�~?�9�����"� �$;r�?�+�>*.�A�!L��ߢ�z%M�ߠ1��1v�(�F)�c��J��VY�3�nJ�=���¸�` _b����y*�5Djܯ�V]ղ�4�0�~2� Օ�)W��]9 +'�2ClY�O����c�3��g:.$���4�=�m� +A��&�T�d�#���PcЌ0Hf�'���*���`VC������ +�6����%��fldp�Լ"4�����gZ��8�hbh���k�\&d 2~qqNs�F������ͳ�Yy��������'�W�m����n9�yǸXپ�ӌ_���;O: '>��NO<>/S��c�`6QȦ�P\�h�vl��a�2����Q�n�g�w�o[��譨�FQ7`�X����}\_�/=l�g�Y�چ����d,YK.� d9��8�C\<��̅��E����i.����[dYT�aZjY�,�/M8�0��rl������-o��tg�s���YV�d�;Ml�7��M�t�������S_O��nH���J�(�/��6�fQ/f���a'\C�T�bɝh�^� +��;Y� 1~���2�� s�U'����G$UH +/��x�`$�� ��0)��ߵC�~�~�N����n,�`�3�/p'e���ɏɰQ��rA!9$�����a*��L��TJl$���A�@���� +h3G�n�I'�*o#�/���$i��0��m1/�i�$�����I:M.���2��1��'�5^u�eHU��Oh�H[�(�H��DѸ��c�2�:�+-/��h#��l�� +����I�4b[v^�|��M_�ڼR�=RE��LO�<& +����3�j?�Ϣ�F���5�s?��W��]o�r���:�u^Z��Ȭb�r�ſ�����k}�j�(��7���ٹ��=�_}��]��%���=�roWcO}G��r)B�h.�����X)vA� +t��Z�6�6hH�[�����vT�ߌW}l�������r��w�_���}9.��;8�4��RH۰F"�� �t�e# ʠ4��QJ5il�����n�#hk��i�Ie����ؤJU����h��R�eh��}}�f�&͖ߟ����^?��{��AK��j,RA�N�X�#�:�_�D0/� ��^�M��&q�m���R��A�F���ٜ9�!2�q������D��=3�t,Ր���/r�2\��M�k�k�_q��*�?˷�]�N�����������!/�����#9N�~��h~��� '���Vy-��ɞ����v.�;s������IЍV���"/��j�K�~�]v��WZ���I�EuR=Ծa膹T_j��W��L:o�&�����GN����Q]a�BpU�f太�ee��bVN�:�������Ķ�Q�X��B.�Aw�8Τ��Sj�#�I�3�NV��v�@L�31hЏA�Amd5�B$�{D#��[���r�$�Z�fM�U����V�ߜ勀��Q�,�@�4\����N�� �D)_�sP������Lu�b�?���[����|m��5������y�;i����ُ��x�ķ����F�u��ǯ�Z���q㠲}��7��/��`�������1 �M6�7��JٯKl�z?T��߅��i5p9~)q%u^�C�c�_�~MNP�h�w�Pc�����1},rL8!S�m����ľ�!��(m���C�6��D0��O�b���b}� +���e��2�H�4�<m1V̒Hh�TGݢ^WI�2��r$�4��l<#g'�x�M)M���}��(���W�lz�)�n�?v$O:&MK���b�����Ķ�Fb�bDl�tBQ_S�}6~�����A,�;x�!2 +k�?)@AE��GH���_l~c��|?6�܈'�����0�K�8;!�AKD�^���t FѰ���ք@��L�PD�B��ƨ��Lc�0��#�x�S�v0<�s5"{�&�4t��ѬN���{4�.�T8�"� +y�= +���g�$K5�!&����C��N�n2Öa=�jVo�,c+�Zv��gϰT�*0K8+d�V*/�Yfi�����*z�F���~f ��O�;}�m�Vz;7�����C���{�{�������hz��}���r�%�%�h���q����ԏ�W�د:g�s�9�\�<�>�r��Ǚ����_9p�0w�{-w�����3\:�Uy{fG�Eb�b���:�'��Zg�{��{��\��� � +i�nK�%��X6�fX6��N �a0 +�QLEe/&Zv^��P�,���l����NΏ��\P����E�VB���y9�Ng�`�4&��D�naͱ��c�(�Fw�N ^�D��,1��fW��:U��~ѫ�c;���N�)*+/m.m)��S��S����� +'���.� +��{�� +]Bg:WL�ό7{�I�f����Msa������G��]D��͊�#͇���|�JTI(��H �D-Kj�eР8p�&��?Р����j44��h���E���+�h�K�ha�Ek�sj��z1]��NT�Kw�Rb�&1��8�Z-�%-R�!H�\Y���+���� ��x�0G�����]����&���T���l��'n1aio��7!�j��<~_3hJ��N���J +PǦ�pĵ����W��G�(���`{���F +�Oh����4?��ic���}E�b\�]�N���ߕ�U�s��?>P�p���`�)��ݶ��QV��L��0�[]�;��u��E����}�p�&VBj�Փ��]��K�4)!�Zۇ�S�)�=U��f^j( +5��e*�@T�EB��)�$ d2)$�dN3�\�^.W��k��h�A�[���b����@s�U���T2IQ$3\�`�P��[�8��)0 +�`�܋�R�P�*e)���pm�݄W�>�g�)� +� ���7� +K��7�������J6m�E�0�>��Ε�6�kvw�^dɶ�[;�-ud�a� a;��% �u���a/�Đ�'8����9��:!��%��0uQr�(=rn���i��"#��"�U����l6X�F)4J��w�����EKh�-�>�3P�y0��E�HO5f������6�^�L�d�vn��, +�z�F�����쪏M���{���q8��݁0��`s6)$v�|���I?�Y%ڴ�k�ҏ�6I��k�i]U���YՒ*N/��}hY���M��I��I���Cu���d�{_p��C��ww����<��i�=z�Qb�8���i�ɷ'6ÿ�]�&>i윟@# +rV���8��Í��".5F�:-x<_��s��+2!�c�`�@��\�n�{v~�͉���=;O(6��[�L!uP:�YLQq��������Iw2H�XWTMS4M�]D]�v��HWTO�R�`!u?<�>8-���)v*:�L�`�9ɞ��b��\� +�q>�����S�)f�����%|����S@4������@WX�xP��@�g-L��H]E��'eS�( K�"@%�#��,X���5ўQ#�H!R�LFj���F����<�D���6�_d�C4M|LSk��Z�p(�kt0�x�sgS*U*8��*�P^4�/d��� C�Ƕ���fЃk��)�H��A0��O�� +� ���ڝk,����EI�ِ��&F�]��r��$щ4��<���D�P_Ȧ��x���6�����p���&Jl�H�.��젝4�Pc�Qປ�� ���e4J��7*�شlY���ɋ��#���3���g��b��oY��H��O�?f����CB�����vz;�Q��>Tȟ�[lm� +�[�6�nKf���Жu��#�)�I�I�}����P�y�l��\��'}y�H�&�L��;��X'�l/��,�x�ϡn�*ts�.iBzL"���!}�I�l*W��85�S�!z2���5rS�Aq���S�A���������:���6�^�gu��/�DM��ub���,�b���#��/i���6Se�l�%.���Bv侑o��W�Z5v��� + u�@A�e3��J��YY* �J�^E��0�u�Y���cc�a9D;�Y��Zl�тj�`2����)�ٮ�e +Ӧ��� +3iN���2��dM������b1۞AGH��*�*���hl��{��X��f��f�mXm1�U<�9��*gz�!c��r��s�`W�6T��ZM�%9~�t$B(f�Xp����Ѻ7���q{�(-�ݘ9��f�t`�EB��G�=�5�n�@����O^ɰ��4���aY�y�ޕ�<�;�5:��~��ٯ��~k����`0>��K���v+�S�Nw��\����`)�/��'V�.������\8.���*s��H�����4���I��#��7�w,��,�zg�cT����ʠ��ӭ\�W�gi�LאY"�y7R���}�>k�jh�d'�]���:]�ߴ�v��s{Y�ն&���� ��R��8�P�wx̻����M�D;U�c�*P��&ɠS�xق�JSa'瓁��%[���g���&��ɶ�<�� ��ܒ�����S/?���g�)�p�]��Xt��5z��C�L��l��?��~mh����f��\������w���s_�d��ފtF���[((�0ӧb=i���c�O�s/�����e����]5mY�m��:�ิO����|L��g����Y�Mx��� o�7:�eY�?R�@�!����eF���C�C�?[� +Tt(���F�P��ZM#�&h�V��ڤ6���.i��M����ٵ���a� +�ne�t������%9� +w�/��@ +@L�Yp ,����o��)� /Q��9/�^�|A\f `FeRL�������]�l}���^�VV*��J��+M�Y�hd�Y��ls����@�p�]��4iA0!NV&��{B��M� +rA� �I�f��y�9�01;Z4$��N��O��8�P�C����#;���+��̇�`ۋ;�ɰ����k�$��2��DшM +聉�\]�<6�N�o0�r�I�I�UK^L.&�B��$@�s��}���Y���B59h����Q?��O���e�PU�j?E��*m̩�ԃ�a�����90���.���qa�3¯�Q�?�^/�� +�G�]@G�S�0WHN�ƫX�EW�]s_t��{�M�?�.2�^�&Ҹ�?�aF#O��d~�ZB�_Ȇ 6�1�&!��?^z�e��aK� + +-QVWa��7�[,eqQ+�Z)�δtQ�/�e��y��{��{�s>���_�;ljs�M�`�$>b'�!2��X�Ե��*�C��������AaZ�6�GS�W�B�v-]7�m��� +*��.R�"T�%��ݗ�z���s��~����|�.ƿ.Ū::���)��'���\���/~��X� +�z`R�>�K��\���������?4�s��7���_�L����|�h����g�ɑo����Q�v� +�K,cV�O��y�9%���=B/xE��bҮ�IJ#���h*\����1m9���H���O;&�� +I1�Ao{��ǟ&O��O6��y��7���]�s�b�=��)�.P���<�:��q�2�U�N0(�$L{���w0#�Q|�9���y˼�hy�y��З�e�-���m�]�J�R�V)�K����2��~��b� +=�Ŝ4Oێٖl�l:���W��dֵ�> +遲�.ZW���dE�Kۃ���f���v�~�j��A�.�x�^�o�O�4� �2}�&鋜M��÷[!�Ts�S�G`�y9b�z�L.�N�$����,���)� 2��KHB%S�����h AH"�� lv +��WH��섆�)*ixK�V�OT%Y��!��t�/��3W��ڌ�����f*�$m����d=ډ���?a!�lu��ƌ�F�A�����:tj�ⱽ�������?l������ν'�m�>���Ǭ���g���Ůq)��}dÈ����hT{��.�D�����I����+�|e�L-�K�9��iYax������.�܊�>�V�T��U�߽����&Iv�P�d���l"i��a�+`�++��K�5T�Zlf��?m4 %�B!�Ů�jL��Q�jQ���X�(��\��έr$'��J�U��j������ +çSwJ�����(u�6 8��B����f�= ��=(b�VI5EA2���MCm���ᖦ�U���e밁�ܻw��`�p����هǻbnGG�� �U�_�sMm���'��_;�Q��K�������� >��}�6��C}�l��4��I` +�Ǐ�ًc�d���W��:���z8P�/��'O8�O���_���3�g��#�o�+��؍�������z���u�qk�'��%��L�0;��˺0!m6�F��P�2��beh�f��jH���A/�$�$_� �Ω�xh��K��|�|���U�p�m1�� ��լ +��9+�V}����i��Q� d�v�9���H�!��n�KR�n����8��@���$6LDT'3���R��ēabn�ʞ ��lt4��`$X^�u���|$���×��k����sg�@�kF{�~ +Q��ZS �9�#x'�/c(^�wO�_�Ac_�w�B�B15c�V�Çf�A�)A̸���VS��O����x�"(C+7}�|��D��l^h.ߒ��a�١�8�_Z��Cc]�R\lt8�> o�vDcQ�� ����>yT�6�� +Ň�XHy�}J�rʰ�� �zA�9 �o5��`�Xc�nwm�vF�^0��w�x���W�-�]��Elo�n/��H�W����p��k�5t\sLSHLg5�T�0�@�7#����Yc� �9�l��I��T�}qh�[7k~��@��vs�ߜ�y|t�O�O~�ROC�K��BfG���y�����3ũ�X( l�C�Xn����/�#]�����;� ������I��������k i5y)�g�{f����t�}�AO��ߏ�:r��X_���d��w�����`�n�����C���]'��=����DB�Q6��n9q=�� B$�% +�"ZR�K;[ܦ +aTMMJ��9�Ķ������TN +�����1w<�͝�ئ�`�0�xVpJL��,0�Ev����Xt�e�Ia��S +JQ��)e_V庲�������{S�Amh�E��(�ٺMɪ�BY�Υ�A�Ӥ� +�zA�@5"Y��%0[�� +�#LHG��f���[��j�FR��U�_.B��3�o�UtY86�n���-,��D��dmɁͮ��i�4��9`��x����}�7;͖$5�] sf{ldS��H��M�#z�D��"3S�5a�BY�(���Һ��J9 W�EBz�eKL���jT"�藵����̘%�T��6�<5۽n_� ,e�Ik2P3[f�D�r)G���}lw��w~9��}w~��ߝc;��R�����s�&m�^Ӽ��(��9��B�ua�TUk@Ӥ-Ah��ҬA)*�ڤ��?�?�j[�F�4�9<��Ӧ$�{���,K�>��}>��4�q�v]qAW����� �,��Pj�P�+���������l���w�8�l3:�6Fe��xXmN,���O�6tNn ��r�T*���.��a;%�Z���g��_�S�\=��<�eC� t��9��A�ͯև���Q!>}�'!d +"��lFs�+��ZVk�;�w"K�U�����κj +�ړr1)��!{*�� +�"��a���T�,��E^<yt��#�)��|��KRMF��*��P6�+)��Q����^��~�������ǥG 83xt��W�|�3���$¶�n&�ha�$����+��ϊ�\aV�����j>���,}i�; +sG�B:�T�+�딚�ˏ�~��X��EM%�~H^zC�*#�#3 +ٚ!s�&������"8~l�Qs��̛�Uϛ�b�=�#̆��G�#ҋ�K�K�U�~_ܐ��wݷL��{�=f���c+p� +ȅ�0s�q��u�)VN�m��4�R~vd��;����ٿ��������oo�RD�v����c��aD�d7M��-3�!��d"Q'�,�H����A)$��l�Vi�ؒ��dgQ���N��eٸ,�dD���>�H�3^dN���eG� �U�@菜N�t���^�ɇ4Z��J�Uz�&�N�_���(^H�;;�4�^N���Ӗr-�ki2]Ȯ�3�E�m#��ax-ι�=��|4����U!���-�ς��/�ӂ�~��y��\��Y��b���M���=qbHt��5>�<1o!�槺���XgD���3Yۈ3��7.�4n�ƍ��5Hlc�i�t_`\�O�����[��5�-v�~�H��aę�N|��>�mC�~�x��WZ�����m���'�t������[�Sb-�W�4�i_��e2��S��h���#���E���3��9'}��kq$��p�?��@�������k�C����p��;��>į����<��2_�|�_�/R�"R�Z�"Z�1_�U�!?APV��.��3�a�Z��F�2�*t���K�C�B��l���O-���Q�u�-���F�B:䖄P;�8��'"�c���#F�iԲ�� + +�-}���g���f0�.T��QX%_o�(b7,tg�"��k���S�k��+*�0,��c�R�81dS2%=���*129E�;,��f52��%��0O��G�dT��eR^E��d���ʠjf9Cf�^�4U���I�r�\(�J$QbKd �/�W�LϬ���\^V��k�d�-�ea��۸��c&�t��3%�v0�b&���_��iƕ����hr3���v��Px1����2�ilLn�? +ܓmj}<cܽ�<�������c�G��G.G�s��7��prR;>F�������8Я��v��s���a�I�T��Ӗ�;rfttb����I90³1���_M���Z5 +� �u둎L��?��s��ot4�� +<�Oȝ^d�wj��6 +gM�V�*ZU�i�f��xZ֬�ںF.k�k�)b("�@KE��Zm����(b�����T�K�j!b=�T����ø| N�lhن[նh�m3�0Z���H<%)e��T�RS��� +��r�C�(��^��?^z���jNM|�XKh+���y8/�T��dK���ͧ�ڋF�����ٽ����s�t��Ӎ����lFo���d�|�;SRРJ�:������l ��C���2�C�7�~ +�a���w{�����G�oF�ح�Oh�}w`���d�s'LIz�f�!�����0D��kc�'lN�+�������:���s�\3/����/uzܠ88*���G'���xut�}|t����k����d�{���o zs�0�)m� +�N���z3�3��c=B��`X�0"ҏ"����L��9�6����OC2 +�a%P��X�Mp�;y�Z���?O>P�{,� +N��I�������L�p��6;}O���ˆ���!��"{��hm���|+�=�Q�$�/?u���g���Ѹv|��G/|s���[�=�x�����秋���P����]�@�6?����2�m�<�8_R�$R/Q&)J"MQ�AI�e١��Ls9�a+�c�h�e����mԭM����%h깨����=ؔi�X�tMv4;0��` �ݐ�{I�����H�������^�M�71��z +��aR[�=�I�u�]Fw�Vc�q�>l�{��njg�?�����h�(�ێ���.P�b�4�B�N4�P�uѕ>=�l@�l +s�v�^n𠞼$>���'qt��8�(��Fd�_QЊ�R�K�uŭw^ٺbQP���l�r`�n��� e���3�P��Z[ҟl�J�Vp)��e�B�eȶ��q2��,��v�g��ǩ�������4w}�Z;���j�1�y��{G�y��=��hn]����(5�k��|l硵��� ��ql��g~W�>Α�����1Ma��v����/�~T�����ߌ��{�6,��ح�M��9�cS�9�)�z�r�ܫ��9W�جtg�d�(K���LOv��˱~ewf({�: P�f��F��Q�x�Y�[ٗ�ŗc/*/e^ɾ���������[�_e�������ȹqm<5��aτ.�<;Y�� +B��W�#�8��i�.3��Ey��!� �x���$@�A�|�l��~��]�>�0n����3ƣc�k��P&m�tx�ֽh7�1W4�O���DcRFR,\��*=���M�M���,�)����-l�������R8Jv����{�Z�5����-���~n';K_�u����x�^l�ޣ���Q� m�H�?���,K��8U���/�g`�~��B^��B� [�V�B-�k.��C�G�!��a2�o@p"C�d +����(?�1�@vjL��xd濸*�"2Y�|]v��i��a������SE�6V���a"ԧ�7f{ +gJ=ޭ�����/o?��ӖPwq�kf�]�njpw@�:8l����z��Pz�Җm:4�D�q��g?#Փݡ��}X��g�}�`����H&*�w'��� 7��Sxz�8R��b��s�}��|;��{�F��M�M�f�A0�Ơ��ܓ��@'� +W+��t27���Dq��o�p㝦_�^ �)�c�7�O˧�S ��RF��W*>�~�8|M�-��nJ���%�\@c +0�UAv���Ѣ3|L���qP�,��}R��O61LB +.Rwv���/dZĭe<�S0�U�MV(\�i����\S>P>R0���,b���9Ibd�[�. +��x��#zE�d�YG�7aNl�O���{m������0X6�a�<�Z[����4�@�V��ф��C�I�P @�X焹2�Pw��`V�jwk�c�ЙI)�������[�^ ��1 ��XL�a��}�<�P���R��2Z����0��`3���ܤ8����Ψ39?tF��4OxQP�oӉi�=X���Nɂ�K &�p�[Ď��)�!�f�d8���S1�;(�4�����3Q]�5Ϛj}�ҭ������{1�{�0�Z|c2c��c�$�e��Q���}��-&������� +����M� ��h����Yt�E�����6ḿmQ6J�+{7=,LJ�{�>{D��"�r`��K�妿ھ�HS��]z����ܚT:��������"��·27��4w���Hy��C�Gp]F"ȍ�H`����o�!�N�S�E�b�*�<3QpR}����(�O�*��<�xAĀ��"g�5�� bIkFQ��/y +�_�>pT��P�]���;�!C���sQ4��r��~TX��;�^b��e�a鍓�4��`45xw|�!X/.�BG���q|����c�cY@9�v����A�D��v�r��ƍbJYK�jeC~ ��\c�uy鷛ϕצS���S�I>��B�]�N#�g�tیeݞ�9��Ft�;�x���l��EJ_L�U��yb� +2�E�U��bqDӠ4D�`'p�Pd�2��$3�p;vh� &���d� +\�X̮��R!X����mP`�`���Q�G{��'g~��D�)JEG���8����{ ��1�֎F�ZZ-4OIY)$��������������������֕���m5wc�ߟ�,���ʃ�*`j]kh�ӕ��m�gG��zҰ�5XO��|�N|��#`Bu��D�ɞ��\)$�D�ׄ+��$xY���]u�m[W�W?&��I����$�Iђ%ǒlS�`m~�6�W,�AH�6[2hl,HD�����0�ڭ-68(��ð��۩���!/��m^��[�x�,��R���$\~�^Ju��}��R�8j�ֵ'�Q�8٭� �'«���kɹ�_po?ï�7������.ҷ���J�M���~���aľe��h���]mL�mܻ�����l����Bץ�U��,�� �I�Y�����n\���:��w�t���3�:M���}�'���Q.����ӑ��snkTW)��$�1IjZ0���'�E#�\�F�J��#I$G����&N���������ҖQ��9�+F���7M��r��b�����K��Mu���b� F�]�|T�6f�n��.mS��B��w�u��z�l���1p�����ښ@F֑���LHZ��z�ʹ���~��Јy��,m5��$�:i-7ϵJi�+�.��hˡ��ZW�< +�"�d���i��!�]E�j,۹�lo]K�3r��%�Գ}[��P*�ŀa�������X�m���@��ݗ"%��w��1ٰ�ґ� |����i��q?d.Gk�}ד�jW�d?;��4��J%1Sf�t̃�E�z��`n�:�=������k~�=�OIS������=UzMz�m6��kƵ�;�����������q�� +�����<&=&�����O���Ҍz����3�TI���i��_G��Ӳ2 +��a�C�I����lWZ��b�I8-fh:��T��t]���/`>g�c����lX}� ]��1b��\�O�1U����`j!� ��ZFw 5���|�2[I\T���$���9"�[ ��e�m(���+�]��\.����KWV�cvv n�M��(�@�o��PK~�+i���h �@K�@�j,#�3�8�&�����1A���U�� d�4���{�p�U�4�ou�c6��gK�n��[��}������֫����8��7��9�?d�4�iuMc�Q�HcJ����w{��6k��6���-a�d£������yI�[4G�y�`��Q`4�Xp���y�(c_�Q���ˊc0��V��mB��cG��c_��;�|�FYo��!4�����j%�ѕ}�p�ݘ堮��[��o��غ���ҝ���?Я�����0�����7?C��Ѵ�0B'��3�����VB�<I���X;�=�nGv4� +����t�V��rۺ]�b�$F � ������xx�W�H#�9�w�}���逼'=j>�����C�X�?��&��Ĥ�2?'���e3���(�Ō��3E��J�N��A|x`��3��iY�j����J0�S�Z�VjFd6Q��\�B�`�I��(]6��Nf=��,�R�Tr*��ٶU�ج������s5#V���e�U��J%�Z�A�b40Tv{L�x�U�&v��L�X.���g�H����|���7�N� x���'P�d,��Ne�,(�\���nP0U�˞����[�k%8�UPe��.�pu����? +��5H��Fa|�[;�;�^�u���Um�8��ІL����f�F�fY�#�5`[y�`4� +�H��t��xAO�����*�Ua� +)?�h0���!ۯqHb����/bGa���2tq�<r�҈ʢ�`�F���ߍFxlVg� +h�E�i�c�"ӭ�/�Ϙ#:�!8jEX�a�l���u�|ZZMH��%C��_��@?"I�#�(�q'ڦa� +�=q��l�Ѹ3 ĝ|_̱a�B���K8�+È;�l�7+��a��/��!�_��֠/�`��ig�wt��&J���Ϣ�ŊAk�,� ��$z���_~r_��v�vl�}u��5�K��>�ۻu3�4�����| JA���K�Ǐ?��SP�[Kgvys�XXQ��ߐU˓��c����d���ՠ=��K�W�/۞h��xv�{�;<�#4\�i&�Er�YB�Zro�8>NN�oj�$�_ΐ3��������<}�{�X�Qa��Q��#�Z({zj�7�_����3�jZ_���b���z���G�>")Ȥ�}��,ƽ0ܭU�:)��(eR��%�C�A<G�I�w�%�|�^܄� +�D�����g��x��Fq]q|��Y{���}�ή +ޝ}�ݝ���z�=�5~�8� hؚ6�@��66��4����(K��}H��85K�x���$��j���4_,��zg�)��Jm�;g�V>{��~�?�Hs�8��s�P��A��=_�_ZD +Uah�g��O����p�d�Cԓ�]Qv�U9����<�,`H9f�/�3���bE��b�y:e���\���A�?�rʯ��i�J��LHW��k�/���b�H����r�kM�R�7"~s���{_=��K�ɦ-����(��Tv#Р_��h 1AL'L�Q9�#3j����f���5c��� 6����d%�9E�еJ��{�Z=a"I$lP�$0�#$qѫ���PA����\G^��0F�MRn�7\�Č�q���<�̬g c����ig~^�Оš�����9ڵ��<�~��. +g�)��D5O�塁���9�X�}��X6F������M� +����PDfD))w>{�,=�ˬ=C�lJxg֖!-Jxj֒!�~:K��T�i�q�@��@V�G�ko���PN<ܪp�&��f�ZC�* ��г�i����7�sz�d���ވ�trA +:������^���C����2�[�[G,����t@����63�Xk����>����eM�5M�z��>�fs�1Z�{�AZC��� +LV��\�Q�ʪԵ��E�j�yA)-��L<�4*�(�UIFT.�&����UTڕŰ��-����!����=��y��y������kB�Q�ӑN�j����Uc] +7Zw\M ���z��k�bZn��9�K�Z�_�� +��Zv�;�|�cue�n�[n�^oCi�Q�(u�E1�W�6�a6]��������d�DѤ&��;TN�U�")�Q��r���^�0w��SEn�f�k���j9�µ��3����n��~E���}x_sS3����a]x@�II�L�$!4�hph���-������.]��a)Lи8��!�ë,���Z^���h�������\x�k�y{ͽL�����5����� �qӡ�- +�8��H0����)15%���b c��Tt�[n��f���-�ɀE9Nt ��g�B��jà�M[%`)*�N���x�N�D �ΎG@d�8¯ݮv@���i��}��>�+�n�F����.*�Ӎ|�G�SY�Ef +�ڮ�(A��������{�s��� +hG�;�7�0�P�/ VB���BV�l�Iv����i��W���e� +�q,s�I}�� ��o���6`G]���ړ����̤m��6� +E�J���I,��kV#5VC4�z�V�AS�.�l�I�x�%ԧ�l��aTV��# �B�p����B��c<N�,D2�)ܧa�`�v�%4�h�ݞT`y�`V�5���멄��w�}�B�$_|��{�����$�_�?\� +^~����[�Z��$������7b��JX�.�������$��\�/\�6�.���'��M���B�u�'o�R����,�����Z�e�T7�_gd��+�ׄg�R|�\�^��`����aAӞ���R�+�|tW�(=�����kc%�������X�3ɦ�$���M��S��X�ʸ3��)�>�R�ɵ�IW�O6'����6V��n�S�X��@T�!�Ӥ�y�Y$�O�F�C\'>#U�FE���a<����BTǼ��*=�:-f�Բ*���x �)�zRTHJ#��F)�(R�R�<��lT�� +y0V/R�R�gK&��LHaɄ�L%_��+���{7��� +͞�ݨ��������\c��@�����˟m̈́O����/�x�: +�Z�*�1��V�ZӅ1X����}˱߱�9=�}��� �w6:���Nn�f�V��j�p����8\W�(��T�9�{.WSU�y�r9%�s9���r�Ql.'�+ٹ\R��<�3������{mN.�v8c�#�����?�� EQ�/��#���z�x 6���HQ̑[U��i)�r�`x��mpo;�Yb��l$�nE��#�ᝳ��3X ϫ�,ZX��EF�p��a��Wp#��Z��v�a��DP;�Jr0��,� +�e#T�6�w/���r�\�d�oI}�ϖ���/� +�����U��`eEI^�ro��E���K�pzy� ��Н=Y�!Ņ*N�w������-�f��c���8�}}m}��=Z��P(?�ҟPK�*С��'�D�P�2�����m�Ӹĸ��2ݢ1�[2%�&�f.�˲-�,Ιe�v�uQ��-�cK�m?��{{��=��w�=����@��hc���lK��U���+y��Zk�%z��H��W*B�f>n�P�t���k�/�L��V&���r���;17fFd����=eI��ZȞa��UǮc�������Wv�<�`�6�8��(�4h�IX�^��`5['�,�g@���g���� ���>���~:C��{�?�/nb��m �$ӌڰ��7�d��#?c��y�;�#X��;C)*�ƭsT/��[�K�*P�S�n��:\�xp�b�Q�WU��jwI�x{�I���Uc���*Wi�h��I�b��������� �7�N���Ȝ�.�[�!?e#�-�U�rTF��i�tLj鬉��� �a����3i�l�9Ɖ|\c��C��Z�'ZI��E4�\|���B �*��Q��Κ�N�պ,������ +��b#��r[�Y���2�mSۖހ���i���@��h���ދ���m�f�~~�A�i4����35s���1���KkM�#x̞ 뉇�XStA�2�l�h�`,)�?��Qw�g�A9��o�+ZuL7��=h^2��G�EjSԚ�^��+�a�v�SRR5z��B��~���saw5������ю�S�'RU�k8��U�L�F�l�+�ȃ��)�6�]@�NrP!nsB�'���P�4k~����n>�����~5`�12�� L�@��' +� +�t������ � +w +�JJ������@�;@�VҼ�:���� `�YG�i�K9 T�,��\Zɞ6�#�< +t� �.z�k����}4���gw�4����Q`�#`� +#?��X[��4��I��aǯ��7������;�>����]^�"v$x���x�RBBBBBBBBBBBBBBBB�~ ���%&�Pⱅ��jU�:�����M��2�Y٦�\3�Qh�ڊ����)����͛_���r����}1��O5.Y� +7/ky�uy[���ΕϬ��^�5���3���������O��9>�چ<��T�?j�=؎����a���<c�)/'� #}Q��H�7���l����X��9�u�鷦M�j0�')�c58�'�c)�H�r�ӓ��$���*걓� Y}I���Ѥ,'�HRV�|>\W +6���#c͑���{G��aԡ!�D�k�����ފVl�v/FH�`6c=�F���[�<�H�-��zdH���� +�����U����$��]�/ӑ��,��TK��MNq�0�9�KFKv��]ut�G��������9����i���3�|OM1~�����< +endstream +endobj +1548 0 obj +<< /Length 783 /Filter /FlateDecode >> +stream +H���������kkkMMM���������JJJPPPOOO^^^������KKKqqq���������QQQNNNUUU������ooo + + +ZZZ������IIISSSwww������}}}???�����䄄����AAA������___������999000vvv������HHH��㣣����������������DDD�����興�)))LLL���~~~���fff���222iii\\\���aaa������666TTT���EEE BBB���YYY������@@@������***777���������bbb������GGGyyy��� + + +...��ڼ��������������RRR���ddd---������������(((���!!!��𐐐{{{��``` <<<���,,,���������jjjnnn888xxx���hhhWWW���������>>>���mmm������cccFFF���111������===���tttCCCggg������$$$333������[[[rrrsss+++��흝����������:::���%%%���uuu���###���444��Ӝ�����ppplll������eee&&&'''��ۛ�����������;;;��Է�����VVV���///������]]]���������555��͏��"""zzz���|||������������������XXX���K~� +endstream +endobj +1549 0 obj +<< /N 3 /Alternate /DeviceRGB /Length 2575 /Filter /FlateDecode >> +stream +H���yTSw�oɞ����c +[���5la�QIBH�ADED���2�mtFOE�.�c��}���0��8��8G�Ng�����9�w���߽����'����0�֠�J��b� + 2y�.-;!���K�Z� ���^�i�"L��0���-�� +@8(��r�;q��7�L��y��&�Q��q�4�j���|�9�� +�V��)g�B�0�i�W��8#�8wթ��8_�٥ʨQ����Q�j@�&�A)/��g�>'K���t�;\�� +ӥ$պF�ZUn����(4T�%)뫔�0C&�����Z��i���8��bx��E���B�;�����P���ӓ̹�A�om?�W= +�x������-�����[���0����}��y)7ta�����>j���T�7���@���tܛ�`q�2��ʀ��&���6�Z�L�Ą?�_��yxg)˔z���çL�U���*�u�Sk�Se�O4?�c����.����R� +߁��-��2�5������ ��S�>ӣV����d�`r��n~��Y�&�+`��;�A4�� ���A9�=�-�t��l�`;��~p���� �Gp| ��[`L��`<� "A�YA�+��Cb(��R�,�*�T�2B-� +�ꇆ��n���Q�t�}MA�0�al������S�x ��k�&�^���>�0|>_�'��,�G!"F$H:R��!z��F�Qd?r9�\A&�G���rQ��h������E��]�a�4z�Bg�����E#H �*B=��0H�I��p�p�0MxJ$�D1��D, V���ĭ����KĻ�Y�dE�"E��I2���E�B�G��t�4MzN�����r!YK� ���?%_&�#���(��0J:EAi��Q�(�()ӔWT6U@���P+���!�~��m���D�e�Դ�!��h�Ӧh/��']B/����ҏӿ�?a0n�hF!��X���8����܌k�c&5S�����6�l��Ia�2c�K�M�A�!�E�#��ƒ�d�V��(�k��e���l +����}�}�C�q�9 +N'��)�].�u�J�r� +��w�G� xR^���[�oƜch�g�`>b���$���*~� �:����E���b��~���,m,�-��ݖ,�Y��¬�*�6X�[ݱF�=�3�뭷Y��~dó ���t���i�z�f�6�~`{�v���.�Ng����#{�}�}��������j������c1X6���fm���;'_9 �r�:�8�q�:��˜�O:ϸ8������u��Jq���nv=���M����m����R 4 � +n�3ܣ�k�Gݯz=��[=��=�<�=G</z�^�^j��^�� ޡ�Z�Q�B�0FX'�+������t���<�u�-���{���_�_�ߘ�-G�,�}���/���Hh8�m�W�2p[����AiA��N�#8$X�?�A�KHI�{!7�<q��W�y(!46�-���a�a���a�W�� ��@�@�`l���YĎ��H,�$����(�(Y�h�7��ъ���b<b*b��<�����~�L&Y&9��%�u�M�s�s��NpJP%�M�IJlN<�DHJIڐtCj'�KwKg�C��%�N��d��|�ꙪO=��%�mL���u�v�x:H��oL��!Ȩ��C&13#s$�/Y����������=�Osbs�rn��sO�1��v�=ˏ��ϟ\�h٢���#��¼����oZ<]T�Ut}�`IÒsK��V-���Y,+>TB(�/�S�,]6*�-���W:#��7�*���e��^YDY�}U�j��AyT�`�#�D=���"�b{ų���+�ʯ:�!kJ4G�m��t�}uC�%���K7YV��fF���Y�.�=b��?S��ƕƩ�Ⱥ����y��� +چ���k�5%4��m�7�lqlio�Z�lG+�Z�z���mzy��]�����?u�u�w|�"űN���wW&���e֥ﺱ*|����j��5k��yݭ���ǯg��^y�kEk�����l�D_p߶������7Dm����o꿻1m��l�{��Mś� +n�L�l�<9��O�[����$�����h�՛B��������d�Ҟ@��������i�ءG���&����v��V�ǥ8��������n��R�ĩ7�������u��\�ЭD���-�������u��`�ֲK�³8���%�������y��h��Y�ѹJ�º;���.���!������ +�����z���p���g���_���X���Q���K���F���Aǿ�=ȼ�:ɹ�8ʷ�6˶�5̵�5͵�6ζ�7ϸ�9к�<Ѿ�?���D���I���N���U���\���d���l���v��ۀ�܊�ݖ�ޢ�)߯�6��D���S���c���s���� +����2��F���[���p������(��@���X���r������4���P���m��������8���W���w����)���K���m������ +endstream +endobj +1550 0 obj +<< /Filter /FlateDecode /Length 24688 /Length1 41036 >> +stream +H�\Ut�W��9��7B"� �&7�������ȽAD���HB<�)Y�c<��`CS�� +�i�&7�x�G1e�x�0Aj�3�ZM�{f�ꚶ����u������A"m�k1���H�>:ͫ���Yh|�V���y��,��: xxL-���o��<�5�<mւ�UA!�X;���ܬ���?�v��3��x�wx�݀w�C���*���<O���fvm����=?�����g�Y�2;+?7i��F�C֡w +ޜ[�~e�`Nn���'���u@�����F��@� �}��URt�� �k����l-������E=�p��p��H�A�A0�|�E���#�?���B%z�[J�r +�hlCR� 4L?�r\���ӟ� +�0���m�A�>�w��>> ot�O��[la.��a\�F6�l% +�b�>���D4Ab8fc 6c'���V� C�L���!3�R�,֟ N]k�_�����;��#i$�ǰ�� ���E���ոI�W&��|�$,F��`���c;L��Rz�r��?���TD'D�����x��eOKP��q +�Z����x� +�"���V�m��3w��4��`Ζ?�[tGΖ���р��"h:-�X�n^��#�#�����Y����F��61_,Ke��iDOt�>bX��r\�q��z%�(�*�Ƚ�m����AG��q�HQ+jC��B}�?G��N��EXE��"+�:�@�G0cer����*���C4P'>�'�)��ӻtZ\���DYf،2��8i4�v�뒫���b�'F�L�T,�\d9��$�3��!�&�TZL����=TMg�"=�'����&qD�M\e�C��G��6�?����������:R�ѥz����Ud��#��5��`%J��s����0�n��O�?���ԑ= +!+u�(�n��|*��TN_���&�F����D��(��#�$=�U&�"���Z6To� +�_=5ՙ�<j��6�r�5�U�ڪ�2M�<_�Xe̥p�s����|��B��6FN%��#8����`�j�Ep%�C3\$���<X^�ޓ+��hɤ\��YDŴ�6�l�i'��}M��6ݣgD�H�8�41ALb�,��r�V�c9/���h�>���*�I��&W����?�#�H0�����G�����*[�U;�.uR}��6m4}l:h�7{�����c�k�21�4k�n��Q�}w��m� F�(%-r��D��Jl��_i@��9�,ʣb��RyW~&�����,V���F]6�T=ΈNx�|�If�cb��~r��ʨa�Y�~���YT��C��d�N�� +<��_P%��$q�*�"��| +���`r�?{���h�:$-T[��x��_�5b���xS��g�:Dc��]?䮿C�pC62�ߠT����_�X�j��θ������a/���F(w�3���0j��1�w�U�\Aߋ.����G��1s�f��F%#�Y���q�B8��M����a�0�[,Z�5,�j�H��w�O�˖����a��]�la�GS(v�IF��g��0��D�E�W�8O#�Ǚ�8�e����5�q�@2��^WN�@aԛ�Ԡ�R��ڧ��s�^(���U����հP6��[��X������^$�6K��G�H�P���=�s�����V����i7�!��|h"��w�?�y6���vF�u��\�av\A{y%A��yj$o��|_ϖ1Ϟ`�n�>3�v�E������-��7�CU!IW3Ra�5�����-�s�� +ot�u��\�:NL�G���ތ������؋�G3�h4���a��ː�v�l��W�4p@\���}z���rtTd�����B�!���A];w�������K�|�z{�i����lR��(�5)���t����薹5��~����R�ou��L��巚6֜������i��e0GGYV���j9Hc�y��noq6�ǣ��R�؋���|��ȳ[��iq8���82�l���g�51�3: +U��yؚGNkA��B��w���b����v������S�9�r�ic��e�ڃ�:������B6��Pv�$!� +P�K$�d! ��@w#��2�E�� +\��tl�f(ӱ>-�iS�t���N��Zұԁh봎��\��{��3��|�;��|��}��������%U�mˬ̐B�bK��<b��V> +� +�=~j��|FG�ƨ���x�����&�ʔ[*Ϯ�N��*f픭VM�p�:�M��o,�50WΏ����A���|(��C�2�'�S%ηɨ�����a,3���⸚i�EM{��M�z�~���������֚����ٴ���U���-%���D`�N�t��MI�h���jhJFVb��:� +��I�����Ϧ22��0?1 ����V+�:n�+���[Z����`ܸ>��������7�'I��P�*.f�x�q���KB_T�3 ?c�� >Z�ض�*�"�� _�*j�bu7Fz��r�Q��P̒�lt-9����Z�����"��'9�� ���4�vK�%M��M {�:���%�5�Nl�Gi {Y�洬��Q%WvZr�"� ���`V�>K�ǯ.H�1�G +D,|E�ol\0x���y���9nZ��z�(}�{>S��j����b��F�"�@�13n���mF�o���k���Ywot��ձ\+��!�H%lOp����?��4�kE�S�3���R�d}tF�E�J4X�%���GMr9��,�h*���>F�1~���-���� ��V:r���Nb�"^GH���]�Q{��� +A6�h������!e�; �9�x�S�M�����^�v�6��ў�k�ِ�l���%��Z� =��}���sC�qZ +�r +������}�hנBlVr�8{�1�~6���h l�o�\ �����^�g ���O�cĹ7�:�r��`ٿT�Or�� ���[�m`�RAԮ,�J�n����8sI�Wh��J����q�+�$��2�_���ڋ��u`��§Oi5l!�I�����}��f�#����|���Z0���c.tP3�Æ��O�`���8q�sl����|�G��:�4�[�_���s��,i��i_��+��p�J�~ؿ���Ǻ���`�`6�����E�#���x +8<�6��[��̓N�Y}&����d��E�c�7�Cı�d�x[�cl��x/x�G�sƕ�o��~�e>'�y���.�:�A��J��3�� YL����7W�7��߄+���}�a��(��*s1)�N9I9����*�Y��Mz@-�z����-T�X�?#��}C����R�3(8�3��i����gHڦ +�K�e�z���4�!y�:$iZ�}M�$�Se:����%#�����/�/i����!��!:����Cip%���@�7$��vJ��xOD�;�*��**U�r� +q�G�z��\'b���*z�7��J���^�%��ׇ\�£Q��KB�|C�. �|F^{ˑo;�&d�,�������h`E��./)���3��?W;�������j��p���w��<Λ����s�H�s�����29�����y�"�&�� �a����a��ȇ�nO�ޭ�ػ�r���!�{���ޞ��*��䲠[KE=On�:���i\wj��M�:*ꧾ~l�-}�C��Q��q-�qj)mV.���F�D�Z��̶]4K�Iy�Q�'����X���I�S9�U�Q��0�?����?�q���>�_�LK9h�E�����0߽W'�W�B1�"r�0e�YD�i���}_?X�s�f��"���7�q<8F�b����b�a��&������hC�A����3y��ϐ9/�W��]�zZ�<�� ���E�)���Zq�\ݏ�wal��]�y_����U��v����۾��Wi9C��Y���J��ݔ�OG����^���u����'�{YL>=��x��7�v��m8��;���2�>I��ķ_�O���R�}�//!��|U�W�ݔ/�g�v����V~���r����TZ,�S�lR���o�/��*S~�@����d����8�y@<3a�c~��{�~�����L{z>��:�0�w���(�S��Cr�}B���7�W��d_]���O�7��5��L�8���+��R{������#��q�N�oa� ��$�pO��@��_� +!�����`-���d ����n�����*�:�U`�(���_�][*x���S���F��|z�!��M��ǟ��귐k��[P��Z�>�vx��C�3�7`^��ͦ��t������<����w�F����Z�n��}xP��4����{(C:O_�ޥ�J/�d8z\���s� �GD���+�+MT�ޏ�#WO��;�X�L*\��̧G�e��uo7=�Йca��g�zr��fZ�8E Ip,MG�͐wB?I��팤ތ��?��VbH�=�@숁�)q�r\�'�%�~\���������q_��M]w�<�ǹ���L���&5�ݛ�h�:�<Z��&�i+#YUy�C$m�M0Z�NS7i*֘D�j$-�`�*ɹ��)��ї�dդ�����6[�x$�;ǁ��M������~�����9�\�s`W]�����������~�VV�%�����������r���O���6�p�=������� uF݀��z��FB�҄\:H�e슱��h�U��Q���0�:����;�#�x�UE�O�+�6�~O�B��k�#`'�SԟR@P~wO�Q�+���'(_�~xu�ї����'�?�@���.�W��C��z��ǿ���1���w��H7|�^����L��%n�z&�M����fw�/(����#�����;+VXv:o�V�k�Y5��sq�Nn%TN��-D.]:a,ZR0��N����\�EI��ˉ,�F�L�8�Q�j�e�?��1�Wi� ?��/��H7�!y��V�)I�{e�mj ��))���! p���l�ĩ��¿/}�߰���?�jJL�ǐ�[�="��:�t��:����`��p��7��h��D,�n���n�eYa��2bZ���o�.��GH=�a���D����Lm~��xU~g����?�l2�N�k���� +$ +����ae�<�i�,9Rҩ���I�x��2m�|�}�?)��|/?��>SQ0��N�c�Y��w �?�?�G��S��"��3�$������Ā&�H����h�>Q~���$t�v!�F�<��p�:�盱�^�E���Le�YVTj��Ni�����"�͇�iӭ�^���J֙^�:�QzJ�t?,<tܤ�A��'�Jl�+��:�����t�+Ni����_�b+x+0�.���֒f�ý�)�Y�^�m�����N���J�Z+唠��.ƚ^�5l��|��_ �5�U�*gI����WI*T��ڸSz +�g�SR��[����2]=o��3y�%������W�2�Q+n9� +l����ӶH�t.<H��EN�_�9-e���o#��V� p��k[��Fhg��Q��`h2@�F�"��k1N-�c�� +.<���c>�*x����)pm�h��i��yڕ����ˋ�s�[���(���x�<�ylO���=�]�ˢ�:�]�n�;�<�������l�O��r2���S?J~���S�?>����pr$���9��k�kGj���n�7�V��[�K�(m�������4��]�Gy#�������xy�k{���� +xY�������I��{�}�=���nq��3��EѢ�"��M,cG��]�n��8�-�nɃt9��-�6]��M� +�c�B��I�z�~��T�/�0���Y�����`,l��?3��a:>f��|�� +lHg9�,�t�C�9��B\X@�j�A� +j�A�)�Fu-�6m��&m��1e�AZ�K�`�"b3�8���V]��س`�u8�η29�!k�g dvAfjqfTY� �@���Ё:��Q��g�r��m�w��n8q;>�*�v�tڑ�jp����Fm��>�k�n� m�����k֖����.ց_;,ۄ�M����8��{U>P!r��C��H%�J�����5wj���oj��ސq!d�>d� +�v7 �zT�����a�P��6���$ ���*h� +��ƋAc[�X4��{�*T���f)��5ϴ�����㝀�f�x.`|+`4�N���i�6�x���� +Qo̪7^eXz��O/c�^b�i�E�{��[drd�L& �2�uH�L> +���m"�a>ڃ��`e��Xi�4���[�bi��L���"Gǥ�\��Y��25�L�C>U��I1����Oϐ� +K�'5l4'����_��B�t�%�U�%i"9�[��.i�!�.�Ni +�s2��C��A~)S� 2��N":�3�F�c2Y��GdREh��(�U&B��w!��)��{��bw�1u�ߕ)������ud��|�L�%�SIt��D��e�G��Ŗfnqi�@�(��Wdjd��`��bف�[41�\�|^�a�����NB��Bf�� +H�ꉤ*'F� q�T�4��_��:����XBjh�>1����9� +).ڹb*��d�8��O|���x+��5O��x����S�h*(�6�aW����w5E.�+��lуĺS���)��t�bw$�(zw��Ϙ��������p~J��@?67�_��M]g�|�����m'�#N�+vBn ��P���a`9B��b��D�i�LL*�N�PD�6m��u��V]3l�tDc�4�h����X6e��i0u�c߹�H+���ٱ�w�=���q�w�w_ +�sM�V�%/�&j\/�v�X��\'��Fѐ�8g��q�p÷]C!E�� +�]!ņ�1Ţ�a��c�]}�2"��t�l��͡��G� zgﻞo�C�6��X_���O�3BV8 D�ީ��G�"T��$D��EQ-�D*��,�(�/���Bmb�ZŨJ�(�HXnBA�dɗs ���ۥDQXߟ�ya�WS�7Ґ��!��;�d�W;Cy���%A�v��"��"���yKoj�4���dm����4�NG�K���{ڠ�Y������w���5�|�פ������/�cs�$kҩ9�c��lFci�u)0�'F��A$a���/���ñB8\= yN*�z��.A���.)��KP(�a�iP6�c +��`�@W:`�BK�@��ɮ/�gJ��.l�C����$�H�z�H��2�&�l���T|���G��/M���g�nw��4c��\`({d���#�i�H,�szR�`���+�T�@���Gb�{䞸o8���?�1�%Y���8���α�:����g�'��ɚ`�&��~�_������TA$�t�`���Z +Fːӓ�ZM/�������8o�|@�R:��E�z��մ�i'caH3���,��.��|��2��%9{�D��Xr�),���ɒ��%FN�+|䰗S +"���2��ϑ��"I%,��zS�d2n?sb2?��o)=I$�$P��D���ߪ$�Z�5��䟓��ܼ��/`]T2�y���.b����/���|r!��؇r�MM�M\��LTP��ߔ49ņ%P�U��ǜ4)1���|��(� +�Ҹ2O�U��s���d�9�L)�N>ݿx��Ɋ���"�� +��B��r«�qD#��q�j����NR~8H��I�jw��Qwr��D�oZA�c���1���9NV����̓ω[5����U���F�e�g�2��|j٭Ө���Z��`�i���2e�.���e0wv����P[[��.�� +j�7jm�X++��r'AP�j����:������-?0���y0=z>��C�A���4��V�:��!U<8TLX�i���-��b<!=�:Gw��oجC�����h��٭�rE(����e�̡��f�d�LU��(TRH�p6�V��dzʵ��G�O�mr +�;�UPL�9��1���F՝8��r�� [�;���,�b����Z�Y�˟��4�:�I�g}��ɏ+�`��(s�]j�V�`wV�+���e�_k�n�n�밙U�-�"���D� +�YjFlC���*����&����R/C�ԃ^.�l�;���Dz9���M�6�\[��e�x�"^�ȸ&�fK#P�$�ٝk��C��� ����&��m�B�2���������<Tm4�T]����Z����t�N���VX��a��;휚*�� +�V�����Y�T�۲P�#�j����e�݊= ���4l�sd&�B0P|�u�����g��&�̶��l�Y�����v�f�w�[�o�4z�pp!7}{�ڧ*M��!9�UƎ�G�����������&�����������p�����WX���bv�vw��+�ah��j#C0!"�{{�&�0ef#|�_\Vx?d�E*q�J�l0����~��&�a�q�x�ș0�v��0��/����J\/aTg2�I�j�Ev���xyK��p�+��`�'l�H4�����{־�k����=U���n����'����������mw��h��Ѣj�7���)����t��F��w�7��ZMQ'�V�.��ǖm���ڊ��m��U,r�7<�0 �Nx�?���X +w���j��.8jnA +�%�3�'������D��Y/���Ue��ÈDߩ�?tB���~E��O��N��^�6G��QfK'`͘;-��h�;�H�� K�U����A���+���z����m��ph���G���୵�Mh�r��[�������_�[�i��,ރ�������U��C�#**�ixQ�#*Q��j�0(�T��Q�� ++x�k�I։��:=�����2\X�!پMQQ�ʥ��*#aO��j`�8��}��w�ž�w�K���$g_�'q���� � Yc]�� +ejJY"��P@�g���R�M*Tt-B�4&��vݤ�+��TK���n,f�g��Y~���lٺ�y��}��2�6�b�0��tH7ws�f�:�ۅ4���AVȊ:������v��S.�ŵ��On���� s�菑�w�Ew� �����@�:~�ߥ��c�/�y�g�s~��'�Na�DX���=�WDECh���U�H� ��a"-�!A�u�'`#˅X���,`��H<���B�uN3Q����y�D�f����t�%t��u��d�Ak���u��̢L�R������Z��T�!�8�fKE"ܝ�ѫ;ż�E�2.��QD��1�:�� +�a�)^�q;ut� ��w���`B��C3�(�"R�M�!Y�9Q[�f�� �&<3�I�$�(':�NlS��Տ�σ�Β��5;�Q% +�7��&ػo���=�Y���]�M����6M�������h* ��f��&b�A��'�/�A���0Μ�*u��r������la�|�<{�Ş�cp_f|��(5]�W�n����a��2㆑dUūi���4=c֓ᨙ�f¬7�� +���GC���x�B�U�~y9��f�V.ِ��4�FڲS�u.ѹ +=�-�6�x�ū.�@�p�{�)��f:�~�n)Ep��r��#�#4��p��,j�� ] +�i��,٤���Kj�p�i�$�::�������\m���ytaذ�vg��3Z_j,�������B���j;7QQʍO�-tH��2r�e��-6۳zq,�p�su���[/�/}t�!�>o���U'��t��/������Jn������?����ߑ�'˅�y폎�Xs4�5���-�J�X�\"����̜�Tu�j���>��E��y�BtL�it"�?��,l�#���ij�J�@�c(��K�G���c�}�w�kC�.j�?^��vV +��@���ěB�uoRHv��kZ D-`̭�@[E��rL�B$2��>Wݕ�)�-nWl"��Y��^X���b��6�א�߇��xi/�b�_bL���PfM�u�� +f3����P[ �x"R���J�H!/h��sF�M��W&S;��G���N�~<���S*��x�]�xu �������k���^�P��������X2u��e�d�����*��A]~ :� +����`�>�!��<�4��^/lD�Q��z�z��U��4����w8jsc1�H�9�A�J�'C��4���<�K:S�B��',ނV��L��C%EE�`2!P�J}5J�l�Z�ո���6 +� ��M��$I�/��$�bX��.�0m�2A3z�d0����lS���Tuj6�4��I{�,�-�C,D�$2/rũ �K/����4\�����r��~>˞^��wZ��4Uq#�gÜ����<uc��/���\��}���p�O������TbHA����h��%��B5��ff'�OB����W�w��)�q���B���1�sX�$'J +="�˳#��!f�!_��I�뮷�o��>@н>�u�B���4����VJ��^��*�*M�(�G� ��(�!Q"eZ���pkcp|�p{(��{h؍�}��A���8�&���� +[�n��^co���'�Wm��/ +J%R������7���+�F�j�Qi���C� +mo��*�^�\m�!oTV����-ߤ$ﮍ4{��.��hV��W�'N��\�]q�j�=��N����e� +���,����mf��Q���ĬEi�6K����'\��?���삝G�彃m��_�{M�����=�������h}�� |�@��@"_�]^&Eju�)7� 2���b�:��C.az��1����n:�w�g�w��L������Vƛ�*��Y���l�oJ*��W� F�Bx�R�zU14�C����a������u�C?�6���R8�iBW}�I��T�A���7B�ҁL��4��I;��N@#��B9�On&��^�TI@Q�T�^%W����t�K5��Q��ska� +f��<2�?��o��&����t=��椌�8�� +&��&vǖ�k��n�]����jc����9��v�{}��������cߐ�$vb�3��#���������i�ʖU�a�USUkʏ��V�N��#ma��뺵S�jR�?c�FŏU#q��k�d������{����4(�q�؏���h�ʂ=i;���a#�fmI���<�8�8�<���9�u�u�jz@��T�a0��{ƓW,��V엓�S��� +�ƌ��ʼ���J�dߵ��������1o@0���M�߫Ђ�����VԮU�=?�� �&�a�Wl9���).�g��ߏ��������q-���/�v��9��LC��J���t/.S���}���E��p`��؆��V�!J�eJĝR��x �Z: $�КT��|2;���ڳ0s��b$�rfL����T=�o�L¥p��$�ih^a�>B�ݪ*��(�4�Em������{b�^Y�l>T^���_Ǻ^�ޚ��ʵ��$�m��9�#���}p���O�U?;��ѡ������cտ�<s��܉O���3�X��ڃ����dp� +��E����)�4ξ��x���-�U+䯗�NI�*J�����k�b�x�h��"���8�_?��:f,���/Q�3�'d�'d��� +, +k�o�]�XPTEnD4uK`��L��äX(8����2���ta���;�����(�g���ֲ��&�ߏX�C,f'6�?Z��#u��ۘ�FB[���g� +�ޮ�D�R.ƏJ�f(gM������/Hǃ�M��1����6Z�\k� +3:^��ս�zm\�ē�gK���;����K�>�Nkd +�[��D%�S��$�+�H�_Q9?!�eb���{�5~�ZZp���u_u[�AC�I�7c1�{Aƣ�U�tȆ�O�����n������.�|�������"_>,<6�!0�; +�|aY��f�N�]�d +�W!�����L��J!�Ո��~ۃ=�ԅV�;>p�۪�zŤ���B;<o�7X7 ��W�&���\w��ӬK�z������O�}���r��3��_��a퉦��a؇����#�����;��f�64 �B�B�{J���4��� +��c�h�:�N'O'-��ܤ� ���$�[�&�YͦU�����b'qjFoAP���PGRi#=���q�p��,..�&B�,�-����@�/���A6� P���ަUH~��D�W#��Ol��&���H�����l��:F y��8g=\�Ǯ��8��-�z�E7�M�x���KhJ�O����-6��.���$�l��l�� J"͕��N����R�QLEMQ�%1��F�0�(H�!���Z#ƃ�G8/ +���|�WJ��D��7�Fq���G�����Z&Ļ�� +�ju��-�m����k[h#W�>j#m��� +~��T��/R�6 �~D��P�Cf�m��k�j�m���9�y]�����Z��1�GsV��<�k��j�-�Q�R;� +������;6���j�o͖��:��-�Te���V1��{�������Β��Dw��I˞g��=�����\�c�9������++�"�-R �Q�QHQt(TnB�@�X���)eVcF��cŘ���c1,��8 ���������;1y��[�C1�b߁��P�226L�����ڈƆ~�v�4�S�6}�:1��"ς�j +��717��a���+��3�@1,Ӄ�H��4)����iiZ��.�^�d��ִG d�v�����@�Ӡ�9+�\��4�α�'��\�����~�:��,]0\_BN_��*+w�3&Xb*+�.��?;����QG��cZD8 �}��O�A�dPbK�s��*yK��Ww����C��R51�K��m��.�o|O/M�[�ߛ�\��w� �9l�U2� +���{�vyQ�1�Fؑ���yn>�i�Sa^�Ź�#&|S8�l:��D��I��a�4*S���I��i�d�*Ln�AN�O9�h��&��n�n�~+��y��XN����0 7��!�u r@x�6�t4rT�a.�����g�ϗC�P���<��s���Ԉ�Gd�a��h�T���p �p�Ii�0F�����n��ڭۻM����Z�mԊ��8���`ʥ�R�(%v��i�����0 +�a�o�i�+hq��P� +����� d�D��|��E��+�*+���+�+4��TV�q�_��/�lt�-�`������g7n��h�$xs��t��"0����ד�r,T}a��x�f����.��&�3��������wy��|���؉}����)N���PJxI(�@���e�&������(Ю�n�,��UA�u��6$��EҺu�F��P���"���*����a�����O~���=������� �r~Yǎ�GV�X��;��n����A�t�t�_�PJ����h�/��'�4�(� �y6�`iH��a����G0 ���J��/�d;"�?ƍI_+�U�!XSQ�8]�ZaY�LVa��ZWuN�(VF���.�1?�߫GP$XF�DF�4�I��8�3�F���3��L��12�= �1��9YTk�p�K��u$ +pS|u:���:�YIA���`�c;-��@!#K�`�D���4��hp��bǷ��mH�u�W�/��\�c`�i|U�ٍY%V�l$z���с�?\�>���A�>��X}Ϝ�P�,��ʫ����3�e�+� +sb.�ɺ)}up{p���^����:��P����#8u��?z��]Xm���Z��eh@BUjTU�W�����j��.�r[!X�S��W�p�ZE����a�ɩI��jI�@��X�����ca7�t]�f4�i�tr� +ؠV:)��Gl�׳�6�X)p��[���os![iyt�2�6#ooER����p ����tT/�M�'t�#:&��W����d�` +�Xz�F��Z�ڗGe-�;���M~�I���dDT��hi.���� ͷ��ܿ~��Cf0�\ZX��$�ooǁ�o��v��b)��/a|-~�x�xf��O�=�v��C��"df�Ԣ�v�py��!5W�g8-�hl�RW$�.�k�VG�D��N��c����օ�F�L��4��x��F��.)$J"���zhr&�.��E5��0����2�m̶� s����Ң�ǡ:3����;P7ڄ��ȉa6�G�kz��V�S�ne(@�����a������_��` ol�$-�Y�f�{�p{����ۣ��.-\�^�VA�����_o�j���H}����O ��DC�������/<R��{���R��R���}�X30�ʢ/��V^�&W8וr���03��I�ѭk����WB]MCǮ~�c~�k����z����,��4�R�&������F0e��뼐V,.le�Ғb�]T)(pt�$�.�b�-� �k�pwrH$�L�Y��z�%\�T�pD7��XI|'��'x��$v���~�!�G1��O�.[���Ȗc��Dl+栓�0�P.$�,�B��H,�J']'�k�t�䦷$�-��|O~q�)��$W���>:�-��MVGR�7��BG��0_晀��ꕘ�����G�������"g�^��~?7��p��� +^���$G�F�K!ߑ�R��!/nP�{Q +���!L���8R�9�w�k����R����qw�Rf�3՛�yʙ�R$q2�v�Pl�>��ֲ��1��|8Z6#��(r������aO�ұ�� +��}!��ic�Y-�i��XFӷ�Um��k�'�>R�\��(��4d +[�h +<�d�����P��QmvNeŴ��U����1眰ܲ��fhۼ������1\8�LJ��/?<���O⇷fdi����y|���S�"ԥ���p�ᬊ�p(�}�;� +s?���@�Ü(���}�PMyB�$7�ǟ3�9�%Q 4A� F��9]�.U�G�.��R�QN')W�lr7d�����*� �y��8��Y%�&��Ј(�z�� +��&����+�>��9��t��,�6v�Mj�pZ! ��%M�1���^(��f�9�7E Bi�粜\E����/B��[�8϶���rI4ہ��/�86�dD����� +��M#wn;��ms��~&Tո�X��lh&'�J�������N��5b9����X6��l��kK�˼Hf��e�fg���I�D�ܹ��W�?'�f>K�3�������Y̭�~� +f��!4D��v�8~�8��������f��:�r��O����-������֯\�_��&�rS�o��a-��0�2�1k�4�7��4~c�Ѹf��^�5�L���R�j��P;�=�1�u���r{� �K5U�WDD +�1�Jo}o:�t�ͨ�fx���7���3���+��Nƛ^6��0�&.�����#��΄�0��t�4w����!���Y��a��ɚ���\c���8>wfw��ٝ����3��]ώ�Y�c�/v'&l0jB�f��J�x- +�2�!�6q*W��R� +�*�#Q!ui%J��ʪZ*P +������|��읕}��������H�4T"KP �������BE���b�UOI�VȂU�Z��kxYNjPb-� +�k��lm��|^��9W�-� ֦��SQ�s�L#7?7Ùj5�ŋ�;�v�����5�DkGW,��(�@Bj�tf܂G ��C@�TU.��3 K��[�6���4���?�U �A5���3 �CtM�g+��ŧ wX��R�f��zh�T[+�����7�P{Hoz.�eVu�_����!���D����������p�������卢����������wpe������$~��5����/-.IE�Ε�KzL�Ȣ�:�]i'B\�D|ؓCS�K=���lB���=ʲ\C� 8�-�!{״�wt/��Ld]�G�I��|]��n7���0�y�:� +�� +r:x�p�ښ�&k���@�É27��8nċ!��",��*WU�l����s������`��Pn��U�G$��*�3�H�<G&.I�d52a�p�E'�St&�".A v!�)�������u�1K�o?m=e�j��v�c�1�8&�oO��� yp�q��̂2kYܷ���E�N����Й�=7���HڜJ:D;���V�,�V@6�����G�σ���Y~������GO��Rݫ�����`V��3��Z)���c�h��0MN����O��iG�d������Mq�c�sT����O���W�k�i�ג�@A�cu��H�C��aH�@e�����i�%�, +����.�G�Eh]�7"��ؘ#c���s8^iR�� +�-n�Nw7$]�3�-'�t�Ό�s�������P��4`'���,�;7�>�T|ݔ.V�w���w�=���=�C!���^XU\Ӳ����(��g�����k_-��m?=��[Y��u�J/�"�|�GO}������j����� dH�;��IQ�N�^���N�"l�~ծb@���o�á݉��_Ev\7xA�'��q�n�!�C���դ�K���kP���:����A���(�s.��c?�U��w +)O��fM� vx����=���|MS2�D��LSVΒ�[J�2Y"�E�$�(�**Ƞ$gP���F|#ɑ���J��Ǽ;Cc�yo�H�X��xp��T�l�f�>�m��X�dЭ�t��t��t�o�dLxX�v�|=�[�v���g)/R�������y~��K�_�����ۻL����a��T-jڸ�����o�qKb�GJ�~9�`���c��#���O>�����YTqԮo��k�U����k�n�Mr�&� oxn���;�;��S�p9��/}m��ڑ�E�%RG��] 8r�� �; +.����W�� �V�P��h�g�N!�����6@v�z8�_'0A8ـ=������{ډ��,'�$$-ɸ�"0l��3��5c��U�@9��χ�Vq����`���zvn����nԌ +�l�x��$��$x� +`1�"��GU'��&����z!6���:�������������� +�g���2%RZ�=����-)8�r�g�Q�'?���m�4����U������"�'�I�&l"��,9�@H�p.��B�W8�I���$J�40��(u�Hk�@����ȱS�C�2���]�R�#_[!�xAN��'d�w�(� ��K�1u����!o�\^��w_���ʭZ��3$8���cN0�M03dl��C�Ƅ�jA%���J\C�"��!�k��-���fj`}�ݟ�'���=l��Ϝ7D�9q +��Ḹb�(�"̑%f�������&�;�)St h������ߗ��G���^k�2m�\�1K�z�w��KT:���~������/w�+K��� +8�B��][!M��ӕ������G��%��-7Ko9��(b��qQ���a�� +����Nw���V;`+;d�C�߱�M8N�O/o��ҕ�K�9�겥�%٥2�C�@��togI�d��.��x�PB��K^^+MQ=��cD���q�iTIJW[4j���Tp˸j��4�}j�2����x��㻦�F�uu��V~�F�QцT�n���^��-��V� +Y�Kp�!g<�ˉ�����m�,�����Ͽb�{g�?b�.���v�v��7���%�J���%����ֱ�Y�Ӡ-l&�i�P�&��j��.�A31 �&5Bb� +�HD'�Mhk2��u�c�~��{m?�<���,9�v��*�V�¢�ZIJS�f�}� +�9;��r��܉�|�1�[ɑ���ǜ� o�*�y��:d���Y?ubd�/�f3�+�fX�{�1��s�dp�m�G�Q`kb�m�IkLe{�=|��b��q�9����ռ��G��Y���:��`�����O���.�����p���_[�9r��'����b}߮ɉ��d���lj�ɗ��$ƿ����L������Y�@ +�3��K�J�-��s#���/~�wCg�^8���F���%����ᘤ�)�"Բjy�{ + ݾ�(��T��%d��R .�S�B��Gʩ~�ќ _\�8FAC +,�wlIK��kC��z�PSK�m���1Ԝ��8܊��-.-� +�^�����P�NժA{d��w��a�삃b �t3�f�Q��d�b1�;�7��q��T�r����.�d��c�[q�qr;q�+pk ���g]�4_�v;����镴�-5ʻ,n!'���/�$SV:�o"��<Мz�n7E UР1���b0�U��ʐ�/;�$�:'��L_5ſ#�Z +�4��a?���C�V�R���������Ĭ !+�7!��H\?��ě1��d�5�_87������Ξ�,��������I�!��~zx�������\��J����`�<�囉in�:��W��;��u�cȇ�;���"UQB2J��iB��� Q���&z�P������JV�uY���pkB�%��� ��C=�c;����_�W4b���]}�4:t��`�[�;_�#x>�y�y�V&�*G�eQi�V��<L��UEH�/����{��E������ve��s��6��Z���������ö==�fax�5�� +{����>�5�?Vn1�E� +�ා~�5�7���P ��5��m%�P/�-ΖNO���P�PZ,.��{W{}��b��J�Dr�Zb�k@���}_K�s"\�*x�9�m��C(N��bOƏ�O���=�%���i��ϑ����r&;'��u�\5 2�I���[����iʽv�ctm��:��Yg�[��Z����\���W_����r�NKe��{j�Z��zS���է���v�0�4I ^�����T�y�:�U���[�#s3{s�|����uI���>Y'{�j�kh�C��ς������m��e�&�E>�;��v_gB�4��8��?�?+��7�=����'�W���7�?h���io�3��@ +Z(�NQ��dBQUo��zÉ����I@ +�hHmS +U��.C-���:|Z��F�@n��x$��^�_I&� �]TQy=B`NH��<�4�Q���m�w��*��qh��!/~۳�O6�^�]����q�X�ÉI1�&I"RY�vue�3��n����Jv5ے�u_��B�x�q`H�V����k�k�ͿӍq�_P,}�Ѝ����ޱ�/�����Yg�:���Pc�������+��E>�}� i�~� �T� �\�pS�x�8\m�L���4�������7f���[ɎdJfh+��kw���ڮx�p����=7���7�de4����\��6��̀��If�vTƋ2�H@TuR�R�`�� +��� +�����p�������c��k�3��e��U�Y[[��yF>�#��TyA^��rU����U�)��K����|�����"�1�vW�`��d5�K����'P��~� ��� g�]Gɸ��%X�U۫��bUШ��6*��r�PCK䏯hyC���i5C��h�A]��X3�����nⲡ�����ꨮ��|ʅ[�J�l�2����ШP̤CA� +<�A���Yhlalqly�e> ��HĮ��E�qĥ��؍�Î��H�VJ�*��T���_���;��|��o!���I�kO��sR���Vkd��X[�9�aX�9j��cK�`#� +���Gx��Zټk�f20⬰s��N�Y.0�d�����Rݥx��w +��Dg�YP��J�����zoU��%���=���B�+��v�=n%�T=�4�H�]������Ï��ѱ�1"��V�=���9�p�{&|�cΝdB�h�@ha=ѩ�)�"cR�$wt��U����0�- +�r��Y��\ˏE_�X�>O��ˎ�@��迄���f��:������9����Iۗ�rI�N�Nm�������P�v�[7ue����ڣ��B�hWX�*�F���z�v�@;�ZG�g'�0�! +[�aU%���}[ِ��}l��k���|�σ�\��q�+���<��K,������w�M~or��e�|$-JVƺ���vz�2/U�}�J~S����ݾn���&�?�yl� +,0ӻЉC�s�F'�;��*�j�E'ZN!��wB�5"{i�Ȃ��CP��\}�"7�Š2Υ���d��u������)_��m��FJ�"q�Ԩ��s�k|�{��ʻ�mWk�07a�,f��miZ.���h(y��g��hfn!4�#QG(�bB���q c���K(+�)�Fp �[��-9���5K�6$�fp 3��\�����W���t�܄��.{�M,lR����v٣�G���@��^�똦�~�b,���������p��`�����P�pvÕ���)G�����>���m�?��Y������c��.�7�ٛ���c��?��0*�Y�ۢ@Y�l���霽��Ȗ��J��Y��J�3��K����G�t�������=����l�{`���4��9vs��2�a�ʡ�N�2�H�#5"�be�� +r�O�7Ȩ�1,��#J�h�N̨k�̍���u +}���-j4�9�=>8�3��*Ң��!Ҹ`_bakl_ +Gm.��=�hև�a�t���==!,�H7 T[۔��m"��QN�i]U� +�H��n�a�to�7��c��h¿�(��KT��1Q,5��*�;$+To@6)Oc,�d�J�� ��>4�6��p�ɴ�-��<�'M_VC-�i��1�p�0,D���CV' T-O�mQ�3�UV� �8����C�^�����\�Y�r�ʊ�=���k�y�[gPߥ+�����<8=:�̯�A�Z�8����#��*�')V�<C�TLeV�1� +f���b��0_0�k�夵����011��r���Sb͍/6s����:U����b��֜�d�Y��DK"�Fհ�/�Áp�:����>R,a�&��j�0��{AVq9L��'L�ך�Z�\k��ހ�P�v'+\�Q�K�f�����-#c�z�h"C���*���W7)���6�U�1jkxi%ZJ�h���Z�f�Z�lYߔ��NJ?H�RN�O~*�ͿPxI�eA\G�v��ҡ@{V�Z��8��$�9fo<�@=�sru��jB߮�ؼc��;w���[� +��w�f���3��6� ]�s�=�?�yovS������{���sG���ϩU'pL@�Ad`2y��Dqc����* �BeĂ*�`Z沚x=_0�l�?����~A��<SU*#ۗb�r���6�NSU7�^*`R�'��U�Y}�JW�>�(����5����v�_0Y���-b�D�!��7,�K$�m/�^L�V j�!#��gi�d0�����Q��]e��~e�+�%/ԥf��5��u��Pe��C-�Y�x|���T�G?���6pe ���e����U/�^*������P"�C+��c��)m�1w4�_YS߸�����^}t�P�鼐����m�q��з�>3b�V�y��*<}�O�<�r�o�[֑����_��~��{ݞε�w��d=NQ�/Aԋ�tB���pRXp��0ؿͥU��H��j��f�2/�R�-X�$wܢ�d$f�J��jFP�"��=�L�Ϩ +P��j�(ZA-��h�A�QVC��j�{0ZPEFɄ�i*�*���h����"�.�z��"/�2-����Zy��Ml:K,$r���G�<��B����4�9�(���d�-,�1���I��CYțf���&E���L<.c=&��i,�~b��� 6ɤ��,bÕ��� +����������X7�������ruxDH'}��#��dOo*�)���K�[�A��s7W� +�)JB��g��~�xG���/�- +ziXXY:�=�=U8��D��^Ը@8 ��Qn<�8���A�:M�a�@'6���68��i���VBM�N��n��r<�R��AGK���@�Ŋ�!r�z;b�F;E*'�������Y>�����(��xU�m���e�e��[�j�:p�{�O��S��(,k@_r��X@�����Y`#"2�t�\#�:��ң�)���K���؏�ý1�������;�>w�7�� +��=��m����N����I"�/_�7���%*��q��F?HQ������\Xr-x`{܉#�{� +E��P�1��W@Zv/����6%���j�m�:�߹/;�}�u��#}�$v��y�<HBȋ�X3�m(���@�1mA�[(�����G��J�M�B�itB#�C��G�h�%�j�V;���%��[�m�4�����{�>�������{�2R"Sj�HdJ$�p-�6zS�.�ϑ:���鋅���d��J��<S�F�S����薰��: +�~�Yw��ƣ@��+��uuD�n1>�Q�KhV�A +���Ֆ4ꎫ���B�;k�:�$�~f}�.�R骔Cu/�6��m}����Ӄ}>{��������������O��,�d�ȑe��m�k6n�VD�0%����S\<�|F|���+�<����9��0C��������=%㢅a'����-��^�8����1��<�p(�|�~OrE(�P��i�U<^�9������^��1��1��.t�g;�r�v��V����ľ�֣{c���4��a�-d�����ܹT]}i젽��/������ܘ���D�F�����)��؛���X��%�s"'���,j<mZcJ�>k̺�ʥ�����O���Lsf&���R���xP��p�Ȃ�`�ƇÒP�aU��a^�K=�%�R�B�1#'S*��p�6��6�*6��5��5�j7�*6�*�k�� ��T��jT j��4C�i�b��F���0�Y3�m3L�4�^ј��Kc4G�I�1�����b��m������t���|�)��8%N��� B�p�zh���ۣ!bVWr��u��dw�1\?{��X�(D�Fg��ܢw٫�����G�U-'���VQ�J�VN{e֡ѕ{�쥲*��MKU�;B�u�E@A�5���ɑ�����A��1�X����uF���T�mM*]x�Hu�F\��$�&�M�>L� +�> �dg�5�p<�M����J�C�dp�$�%�E� �A��Y6���}n�'K"���L&A����G�@���F%Vʊ7H��K��!�����ҙ]lI�3�Rj�&�d�A��:�r�J^�u0�'�+/㉋ؘߍ�.��Η�걚�Q�N���8����xH~�__��r�g�<U�����e�ԋ:U:Y�N����B+�vf.8�z��,R��yB=&��� +*���/x�~��Q:�#�������Ҥ���5����p�[��]jds��$�Xs���D��#�=��|/;�<'���$[��X��~Yq.爃����;�����m�m����}��+>�Z�v�B��zm[�-�-�����W�Ֆ�Y�`5��p�<� �آ1gU��^����z�6[9��@`��ʄ�#ڬ`rV%@�&�y�v#��*i7T�#/x��`r&y3��:��N%�n��L8'ҙq�55��TUO[�Ve�i�����]���C��ut��+�{~߳H���I��iF� m�������A9��|�6��6s����!�4�� +���!̅)y� �����t֓[���3;�%��t�Ҟ����[�n�K5�b6K���(�ڋ�"j�PytW��}mY����_ͭ�ض����R;E�"G���7�ь"L�Ɇ��N� !��;�����P���t��8I�������?w�}���}�ϣ �e���9�����'��p{�� <��an(�X&l�R5�|����_8�:Q�{��8�o3@�Q�J�i�Уa|_� :�ϣ�K(�j�Կ�0�� �kl� +@k@�+�.�}��ֵ��Ћ��/��0�S�!܃\��3w�����(��"�(��"�(��"�(��"��0@���"^��X�{lI��)'��A�D��kb��:H4$�@SsKk��xϊ�����GFW�Y��3�?{��������y�� +��v��K ��������`haǃP��;a���;������̸��Wؿ;r��a��<��1C� +��V#e�+�+��ʰ�a�x�I�����ah�7��38�_�Ў������ܱ�ڮ��7}��n��-�.��:xv�8�a���F���x����� ����"�`Ͽ��� �Ӽ�� +o�qgeH �`z�����91sh�ޝ63e��b�(�X ���I3}�Us��`�y�t�;��{@j{��1�w��nS/m/���|<����܄]ʻ���&R� +endstream +endobj +1551 0 obj +<< /Type /XObject /Subtype /Image /Width 357 /Height 132 /BitsPerComponent 8 +/ColorSpace 1542 0 R /Length 15894 /Filter /FlateDecode >> +stream +H��W{\�i�S�V�駐����P�dG#��L�.C.�It�HD��G���V.1�Xcw�N�Xsa�cvf���?����9����K��������y��y���>�7BH+Gprn�!|����͵�{[�j/x�N�{y��z9w�(;�t�.]���?�[ 1���������y��CQC�>�}Q�D��#��G���}" S>�����`益��!�C{㊆nj��)���s�rsu�K�]<��g,Jv���IU�G]ݜ'0���D�$� +�&M��3�p�<�^��Ӧ�w�$kg��!)�.3���Y�!uN߹|%�������LY�<��D}Pi��� �x����������i8]��1�q����~�l���Z� +R[)tg�� +�\M�@�b֬���Hʥ���N9*�~�������#��� +o0�u|���Ȥ�B��ٛ��1��g��$�[��b��_�[�6�$n&��d�W���B��\䭝�?���!��g��.���R�4�-| +�������(�m�7jAxȞ���z(b���P���֮']I{q���)Q���H(n�t~?�Tr`l�K*@�^�t�v>�vB�S�(���;}ȦW~d'T��9�U�dg`c@ֱL�j��P���no��_H��@� +�I�?��^��>]B�r8��Z��1���z�KQ�I&����+ �z�#�K6q���S��������CS.r��%#���CǢ�}��80=�RCY8��� +c�2����}֥c1$�-�#7@Ze��C��]пݵ�й�����ЅQ-����r��͖��8�˄��Wqr��r��F;�k=P�z��[Y< +q7���w�Y�L(�7��\����8y��r͐�7����Y�E1p<���3��-�Q7nlV�l +؈f��U:�~@'�շ{����¹�^������!�� �[hc?�i�(�;U� �7�@$�,��?����FA��Y�+�;/�����bXs��Ođ��b ������*֡�! s�ch�*@N����O8A�KS� +2�`�_���{��"�>��)��m/!����K�D�-n������b���C�����U� ӱ�>�J�^9�10��S�Y���{�t0��7N*)����YD9�x��FZ.�X��H7H�ϗb�&�ٕ�j�6����r��&���r>�|�!�0F�jS����&۶W��m���he����2Fɭ���p�cVJTG:��r�]�+r�kg���%ˑ��"���C��^��#d���L��U �:y~���na[�d���Qk�q�����M�E�rh�y�����ֲ�1�-�F�C�Xm�A�����%� ��@��� c���O��հ�?�(��~��c�Xȋd�rCSC�G1/�p�OTB����-1/�LD�"-��UNV�O��cG�>�}�=|$��v�~�NxQ"��P|���� +)��@��QH�x.G�����!�H�mćb���O)�j'H��t�a����aw�����0�a�w��� zh4𩊕�j���D"�Ě��dl8Ȅ����8|R +�'I��F2�bM���:�SV9����ǥ��"RyHc$o[Р�`�6y=�k�M[b���ux��6#;ӗUHBV}T4���О +_��~ω�"?f� � �aC��xfh嚌b��B��ͩ9��p�ם���/���ϟ�K�X{�!W��� �ߙ'�{d�u4�����X����xt�r����&jb.��!j>��袇J���ò���=C;VD�(��ތJ�?0\�� i[&�y�hN�ɗ�? +��u,���3�VOo������(HT�|$��}e.6w���r��Dz7�]i�)�u8J� +��Ɋ7mw.�lC{u�O�4�������%�����Iv��� +�9�ɤZ�`�x���-9��q��An����L@&k����w��� �T���9ߜ$��<�q:y��B��ms宐�}n��QS����p-�t������[�y�w[��`:���Ȯ��V|ڜpD��L�&����r�/^GK��� +=���H�s�N��9��� +�ך��{�����^ju�ɑ̔X���c�t��9�?5ڸK�"�����$��>UGܚ��/���֓2����L�rl�?�0�J�/��S�K�~�#����T� ���)����R��HƵ$If&4YL3��)�DV3<�V�A�X��ع��U:�X�Q���ss� +�g�'���m+ +�e���ϔ���L���bb�����f�k���-)~��ڴk�!�")�� Ѻn3=���K�T/Yb�&�]��ZfC-��4hüJ�<�PM;�Y����P�Է�:N�˓�{~�Ѣ�i�%S�Y��x.I�c�Vͣ[�b${�Z�%��� +��7)���� ����$d�f���04q�"Ȓ���M��j��t?J#��e,�]���Zd�*�t�Akf�JT+�XFŚ�X����ܼ�f��%9�TJ� +�f�6嚦�5��1m��VnT!c<�y�7����"Ѳ3��k�%��@J�X�o;�쨞��I�*�\�Q�\��墤�7�V��H +����rk���aI�y�Ee���& 5�%������jg�{����|#v5m;�P��7�#�b�����g��<l�H���ag����xf���im�/�UՑ�G��8�� +���8Ɋ$��QAa�z��QF�%�@��3Qt4���5� +�(�a�x�*"o�w���73$���ꮪ��կ���m+ݯ`��(�<P����.F��d����XWp3��K�&��=B�=A�BTo�v.x�;��$̛�.�A)�mb���>xHhw,��JtP��:N�]B�I�u�~��|�����$�#����-qo�O\-�:�yW���HM:&@h0Q!Q~�cݣ)���� J��#S�(�P^��V�$&%�n�5����Ν�x +D0��' +6@��� Q�L�Oh-=C����$�r���ϣ.�sF�J!�x�2'?DmB�A�|�X+&5�W@ ��!?��M��c��S �b0D +�0 +}#|�� Z�t�a��bTR��e�T�3�17�^p��$*;�TV���xN3�ƀ1�^pɟ)��J�V�eʴ0=�qW#��":kފ$C���e�D���(�3J�`7"x�X��� �����\� 9�'L��'�Q�n�P��$p��]F��dhۆ҉��v��~�t+�u�s+��'Q-�I +I�<������3D�<H1|n,��!��5�����窋}�7�<>�@f9=�;�I��Bt��7��h�yX��p��p���$x#��%������:I�S?���Vb�6S�$���!��(�7�6b���ѢE1��:�L�'�6�����J�HP +�T�J�9���A=4��`!�)��P��E�������K8.���e� >��U��#�l���c��Q����������! +Ɛ5\���i�/{WNV:X�Z��_o(�icv�z�J$���-���$��]F����:oh��Hwfp(�Ы{��H�v;^q��a�wL��P���K9�<Jm�����F����K^�uê�/�����p;巏�f�(��/ ��7�[���!BDf�6����~�=2����C�e���ݐ��d-���.�>7�yZ����r�� +� �2�mZ��pq�g����%�)p�k(�l�nq�����:��r�@�<�MS�l�����'�J`$�X���t�B��1�e-��n͊���ZƁ��_��qKgKUbʼn������?�[��YXS�#6k�i���"�@ZUh�P���$�'����装�F��Y��K4$�̬H�����Fz�}����M��K� �B`cZ��a߄K$U���2����GZs�}�ܿϸ/��K_w��cZ4�.PQ�������>�J�!$a)�����Xv���,��x���eG�RpC���ÚbĹ~w�_��]}�M6��d8�H}\4A&,��e�-�����P�6�q�C�i@G}%�~�s����RT%Ї��d6{�\�S"u�|���,n�u~������_���]w�S���DT�˾��f�B�?��TJR_�{��B +,���͋.F�\tٯ�`��]�Q������I�)j/To:ӎ�@�69O�P���u�t���%�?'������I�<�k��Sm���Ɖ�B�AjtP�X�E�Q��(�J�÷�j�q�&�5��>� �����QP����$�ص�CA�KD�'/ע��sӕ�υv�l��<U��sgY�&g��iM���w?�C"��[陯!��t��Q@�cUa/���yd<��:�?F�<5��{�MJ��g�zz�n�5}�|9+�0�x!����oFSo�V���skc��]u�\0�)�O�,���j'kk�ֿ�eg\�����d�>χfPD�^Q�Z�G�#�^ ?1�� +h\ّ�=j�h���oD���z9WߞS�\�B~�, *�M�Q�UP?� +WMJp*�ꗙ��ܹ�g�n�C�o1��%:?���_�V����?;��\ �-��mE):��G�J������.���0,��+���)�5-ԗ��;�����}8�m���U���+(�?�3��U�vF +��Fʧ�C�85�y7%�w7��hJ��A�|�CT�fC�����}xiFS�8��N�Nx,�%U�k��{c���ӛO�.𦝱���8U,�o^y,RD{�U�E�c����1b_��y��[1y�9OX4���$ĸ�n]2\�*iG��.�>��{��P���Of��(\kd@��Y���N��9O.F��1+�������"?y�~�l���p�w.�z�g�\��xq��(X�)>��qy���S7�t�D��~avsv�8оp���{����1�?�$gl��$?�L�57�*������D^�7��� [��h���dޣT3:������ �����Z$���!&�c��'h� +WQR����4�عHK��k��d�d�u�~�4��������"^��K]/T +����veѴl{F#/�I����BxGb���b��F���?��E}�S^Mb�u���S��PI��o���ӵ��p�������\-B�����s�W�pm�jҬm�~\�K� +As +\Jb���E:B̞A4S}w���=jt�9>�ٚըһOo��ހ3u��r��uGai�1n���/�o�m�z.P%�8�8�]�?��U1���D�=>2�C�Ov�ϝ��؍���e����`-���²iJ���v��tT�pb���vbe����܆ښ~ +�V�n���u�<� +�-�D +�5��Q�C$`ٙ��˪f�_(}Kj��E�A���n���C;�"�ߏ�j��Od��Rf����)k�oxU��w�a[�8K�������M���a*�ܮfQ����ueh[���0���'�T�0]c;T#�E��՜�jRU�t��z՚VStʺCj&�Su$�� +����iV�.9���u&�Ѹ&�ͺ�r�d���GC�8q0~쑊tqL�;hԒ%m�:(�ڑ�~�.h��v +�=���s��K}�Ow��5ue�F��ʢ�V���S�`���RZAP jQT v� �dk�l� RIX8$�4@U��\�����R�E�"e�[�������s�=���=�w��Y���נ8�n�`����o�6��7����qЁQ�yHO��ݦ�=��8��_u~���{�$m����GFR�yBIsv�2l���@��6��<��;ƃ���w�I+��u�`��8<R�B��(�P{6�H[k_K�#�ѡ���*���e5-`Ҽoe�3�l�oge�(R\+b۴jh�z�o���l�j���^��Gw�ؐ��3�z�g�q8��Sjz��`1_��Ie�F؝X��@츋�q�g�d�Ȧ�%X\�'��5Cz�����$�q���ٝˉq����[s�ʴ�� +Ʈv1���t�hHZ�Q7����.�7��͕�9>)��D:�� +�q��I �&�L')��O�%�u�q[VJ�n���l~b������9���u�,{�o��-�N�`{J +��%�q�D2(�ڇ��Gzu���x +�|�o����^����v��T���v�C +c�K�D&m��"��{���=�ITp��� +�zE_�;����|H�Wt�����1�tV�w/C��� +�1�_s8����,���0CD��n��`��Z.������;�~� Bcyiʑ��ϴF0�˾o<�0���*<�7Z����h�A���pbf����y�����V +���l̈Tnr�ㅆ��<����A����zB�1���l���j�k7Vyk��.��-b-�*�:g�y��A��F�X��~����r7�C�&��l����g�b((�c\�A�z�K����;HPP��E�1�*ba~q?�%`�����%\��W��oG��ڏ =)`�ԇ�dD���Ў�~1��cO�}rs21��=Q�J�5'�@UI�E�8 +�cS�+�$U�ɞ�2�2͞�)� oqk��AB�{�nBC�~r�Q����2%KRӏ��}�|QX�~Ԭ�[�9�F����\d��xF���[nKꇹ���گ)(�2���Sދ}�2�Q�}�ay�i� +�'Ф����"S ��ba+��¸�uKO�.����h�F�^�@��O�Nv���Q�<浧���s�n�T ���M�\��?��<T}A��oc4����t�=^d0�-���Ȫ\L嗄��@iK�'W�pO�-��E�D����!��:d��Q�2���T�e�����t��~돭�h�u�u�^��i�6��cI89�^���N�p��0��C39�t��&IVZ_��t�̹� ]w�� $P��C��.T�mm�%J�ś�R�D2��'��hJ���q��� +�=�j'�6}} +�1q������� +�j�v���b�dQά�������Es~�)����b�+u�Ħ���B��-�A�T�z���F���}FyJŲ�� <�2����)��}}�u/ ��_��ϒA1"-Yٔ��MK(��a��(o ���k��c�����SQO̦$DN�y�P���\���@�X�y������Z��s�Rk2�������no�a��/��C��님���K,�y���Lt~��9���.�<R.��^�Ҷ� �x`ް19l3ƭ� �+:��K����`5���Z,HoLA���Cٓ�">�����A-M,:�s*����¦�V��žˢW�?-k�D^��0рԎm�6��ʃ7���p +�W�{�e�ȹ-�-uEu&�pBF� +,.�XD>��@�K'N�Y55�C������$�Ǵ����ߒ&��+����.�gK��a:&�#�;��ض=��" N�4{���!/m��\G�����m�����s�H�)4ȥ��C�����s��u2�<�.�]+,��ל�x/{Y� ���$m���'�y�DO�D^�}�t� +C�bR�,��h����� �x�o�͘� +<GwOѲZ�������|ɶ��NY��G��D�B��8# @�����/(�Ht�G3L�ޞ�)����N��� +f�YK�5j"�S��u�6bN�ǗOY�D.��gLj�� +��Vwc(�T]w��iE�P�9\�͠�P�T �BA��rH�-Q��Eq������� �:�q]�ݮL j��O�fζ$����N�J�AS�����QKw>�)�C��3>�d�z����6Lӗ�t:��$�h� +� +/m�������_^v�H�_f�p��!B��ˁ�|�l��ɢ�5�zk�K�>�=ǃIJ,���H��^D/C�@�`��A��bJ�=�VD����$ǫ0��W�ӗ�[-�6�(����i=���l //�X�>�;Z�m�D!���T�_��}ڧX�p��َ�4��H]ӊJݼCtvA����.P��bx� +"A��ps��f��*ϐ +W +��ܺh_������b�6�'$|��i +�����<xֿ�3+��?�yg�V���S*�.2.Q:���D>��L �A�>F����}/��@�����;�K:@�x�2�h��e�'��� +f���9�-�@���J:]&�Xej{�R>�8B��Q������a��y��<�+���=���G�$�I7��ig> +a���|WX���z&$��.HV<���r�[� �h�LZr��C�����UYuJ��%�VmCTڴ����b�jذ=͙l�������y�������{�����+�UU�E$���#���=ug�&o^^!T@فgS�p�͓�r�F\�|I�|h��H�"��Ӗ�Hq!R$�r{k_Mۊ��/�r���r�7��U� +V���{�u)���m���^.�r�"��I&<��cufM.<��%F�����6J +ic�U�'�r�}imW|�����ųs9�Z��I��Ј'�y:A(w�9!�x���F��)��_5 +�Ѧ��Wء�4�A~�&r{����/j�����ybf�mܵF�vf�G���u����GK����N��5#�C���&��o�j�KӖ^sT ++u�D���L\ܸa�2Vlf�m�?>�௺y]��av����)�Lk>�ܗ+��Z��Ԭ=��'-���.��*ǂO��=*(5�uI܂�@�O���2�wmb%����&t�7z!_O$W�uK��c���`���SWpΈb2�2�g�*� �(#�F�G>G� �EC���g(���e$����/1}hG���,jRA�N��CO;�,�SFS���~�H/Z�g�.n�p�VwuD�S������ ��h#�$����<?t��s��^?T��˽SW$�2��3�������=�h���3i +@��l눜n�IR�io|�Jd��K���>�:���&�^���ޓZ�K'j(�k�v��2���Z���r��� +�ң�����@�w +�'%R���Y��0Jڭw�^�\�w��/�|���T������d�n�$K2�di�E�a�5:8�.�Y�H�������P������͖��:�M��JB7���a����(�� ����jFv��+gW�j��K�%��9T���?g7PlZХp�`~��~?l;��zRƷ{��r�: ��{<�<�fQ�GJꉔo�Eq����E*E�|vj����~��c�GM���ڠ�u��O�=\�:� +p�6P��O �L�'"���8�9����~eͿ����{�32����^�s�UۘP�8q�t�/M��ފy���� A�t�m�X`5:�j!�I��<�����R+e��̒i��'�&S��.��:���7������OR.KL�(�]� ML�7�뱏;�/���,�b@�8�@R��_�.ԣo�����f�q���Lf�a���یQR�iU0[g�Ի�6�E,ڴl�o�4Z�?Ѳ�Y���jW|�`Zǻ�M��I\�Ŵ��A7tьäk����E��Y��3�,M�Bw:��{��.�� +���0�8E�;߹²���$�xaQ�П����� ���4q\ZsS�@��=?���O�f����� +n���R��^fa�}c�?nFY���A��rq�o�'Aڟ���lg+Bhf5�ː +d +w����.I5Q,ɓ���� +Ѓ�S2s�Q!�Ey���:%d-J"v��m^&����a�A�Zd��B���7c���ant����C�w7�$i�a��T�zJ�;V�^RH���z&��8U�a�L2F���:�Q��y=G��S��J�&��1�2���ʨ�m��jBg+K��E(��,���5�5��EU�a�TtT��Wo��U�ҋ��q��! +���[��xʪ�}��OԼ���o�|�f�9�'se��t�0T�t��Q*����%(���=L�>�I�#+��!s��3�@�������Qo*"���P�Љ��P��ؖ�_�B���SV��3�(%���~��Eٔ�?-�_��hΆe��8"�i�$���:=L�pt�_����Zٰ��{�f��&����Zb��1If�����pt��ԅeP�v��-�����[�@:ȉ���V�5��ٻ�ŝ.��;?߳����ڞW��`��9�O:�b�!J����4Z&��>ͳ��� ��7d��|m�|��#���r=�y%�Ҁ&9�����V/CA��(�@{����h=�a=��kg�Lf�Pb�eG����1��&�_�M[��H3�=dO��0�q����@w��C7�^S +^��G�IN��lp���a>1��r�������\7�ZKk�����~��o�"M�㕿��%@F�|q�C-, +ltƮG?5�tr�d�������L�R�ˑn}O�$w�Xe���%(n��\��!Sw����^��a����,K��Z�/Wg�_Z�ᵃɋ���>�A�@��p�sg�!t|(�ގ�q���~WZC+�Si +�_��5h�iC� �Ѣk�g�]�\�<�+� �a��C��2����H��FQ���)�D�q���Wg�P�:�|ɁF�K����F�@���k�sP�I�u�����Lqj��т����T�y���'���Z���l��UM(6A~M�Ѥ�E&��Z�M�"�q�ِ�����m^�%���u�±`�PW_��X,��v�7W)�����@��fH��b'6<��I��eĉ�����w����r�qC��7Xa̬M��>�ke +Y�>,9��L��%0��bn��;Ž��MzF��4�s�˷�040G�_��=.�}�o�]y�Fr��t�W +**���t��\�+�"=y� ��(�}���2�w��4>q�"�{E�������3����?�����~�����]ν��� ���mh�G|�t}���+�ņt�F������7�j����D���G"����*�=���ˡD��]0��̦�$`2���`��D�,gn���5R*��35�7���9nV�L.�N�I�\�^*�������+�ʭ���t�y���7�;��?F +��U��?�) +�4e C��9���uɼ͆2&7 +��^�p6�����~�X��u���R�l|N�5yГޜO +Fd�Jʙ�N�).�i ���٧����\&F�.�Q��Lk��6S��!�r�2�L�<�Ik�LP�p�����e +}�Y��� �r ���4P�[�ܓa�������iF_sOtKQ�O�K�H�����zE(�7����ؓ��B���\�;�gz��p�"�bQ� +��V:�D��>�<�F.��Ht������cAO����jy�����\Z����0K�`�m��c, s�e�ac���ϿK�5���5��ft��wb�U��qk��c�T���F6�<\� +R=�(�9�P�cƤ��%s�,x~s���Ķ4�zwf]��s��`X� +P�:�;N�!�JYF��e������ +:��3aݴ�>�t�b���bƵ��[��A���P:��L�զܶl<�~<8�#Cyj��O�W��m"�s[?|Bř�+8�h�p셻��]�F͚��!�Z�Q.�r3�:*��pE��-O&)l��5�c�4�_�J&�Ļ���g9�䧝�S*��ڣx�����)�:�Z^.�<���`����s�*�]5���G�<��!G�<8��.�����p�D/��{0#��[�&�Ȯ�L�L'I�I�h�?����ދx��|Rb�V��-ʓ����WbU2�"���n\�yzGei��+�;�����I�#�qʮWʓ��ع�.��SvQU�i ����u1�#X,z�e!�؏�a��m>0�g�Vv1#����;�̀�gb��\ ���˭A�� d�ܿʟ��w0��p��+]��#����̷�z�7�Ŋo)�WDV!;B�����K�b��OAq +K{�<��iB!���ꊝJt�PjY��N����_w"I�&�3J�y���bW�������ӡ��!F_+�H����)P�3�!BG#n(]T����^�-���[a��&���u"������WGVzc_s4���.讋aJ5.��nA|�k5�l�aLcrO)*�]���� �-ɜo��/�N��jc��bW��,.��w.GAO�z�H{y��,g��~p�u2�"v7n�G�q̹�����zs'��X��Q�*l��V�P��Ş��6 f!%:믜dU� +X���)$��@����9�؟m��:�n'�̢��Q(Fq�RBַh +d� +��Ww���TF�@�`�%��j�k�'L�m2�es��ɗ-\�DžS��)W�_G��v�LĿ�SG�a9>��q����������C�btj��`y������v�!����P&t0�G1�p/�p)����c�Z +j%���R��Z��i�)Zw0�B��/��F�.�/����~��c�ZR/^��@�{�� +L��㴄<�´B�$�~���{�N�hC�ڸ�4y)�N�(�@��LAY�%�Z�<@��R�R����&Z N��f��UG����R�T~k�FH��rN��8ײ�:� +欭��d[U](���EɷAOڵ�i�0�.���?��N9]l���lI$�Y�e��]mSP����+�9Ȇ�t}hu��������@�phČIS�;�X�C�Sf)68��I��&m$~\�!���~�t�I��7tM��zhY��>^�1,�'�T�0O��i��V��-^�(�á�� +O#א���ʼoXk�V�|�t�0���Ԏ�a���7�`�$�^<��G�jh�|�* jG +M=#F5���i��%�UM�YǵX��� +x�v�4�m���"��-�X��� �� Ӫ�k��|f3��C{�ϋ�B���9���u;����SW�}��8M唥��lN�'��o F��g��v�3�ȅ��n$/��!�2�,��IЋ8h�t�`+b��(����Z^�*�UZ[x�r�?ܕe��t�A�]Mv#q[�[r�ŭ� @�y�T���w��\�d��+�S&z�,�c�q���}yD� +�D�g!����c�^�vB<�㳍d���)xr +Y������؍齶Ά�hV�F�\7���� �l>K�R�F����m(3���=|��t��ہtHg���`b%���n?��e�h�6�� +��g��P+;MTf�w?5B,� +��2p�{����8�6-Ͻ֍�0�@%��x�!���K?��E�[ڃ�֤��z�*�D�i��#(9��k8E�� 漦�0���%TjsB~f +�Ӯ: �Jw��AM���7�DfZ�]�V$���F_�#C�!r�N +B��@S^�UK�]�����w@V�\@��Z����ɧkR~�[[��s$IvS*���|��Eq]�ACl�l�_�����HPDX�G�.Y�P\�h��J@H�U��P��4�� +ؔZE|���VB$����ә�yܙ�3��/�z>ew�=�{�9���r�����c䃥�������lX�X\���U�I{�h;x�ˀ��Y�Kj8 m�8��r&�֒y���Z���Ԉ7�8��`��4��w1+P� l.{���:+�s8a�D��W��m��qE���{�!��'�)����>e�L�H9?���MT���+F���`̸K�AV��� +U�C��C��ÏѨ��H�)ͿXӬ��b��q��/b/�X���߀忣 +�˛�OS�#��I0� +��D#w<������<:T��~�b��qq�|*g�~�mL)�z�Z�W$��7G���ϟj�7�ݪ�i�]�d +�8ײ�ߌ���ܖ}@%-+���>=䰲����j�B�x����+�/�0�� +��jZ�ٍ�&���8�S��P��+��Ek�ۿ�����x�y�@PӖ��;�!��#qj�䳡.�oU��'�S�N����Q�ؔJ&�9O���k۔�Jo?7�y��+6��s=��-�)c���F���Ұ+$G�\�خ����jB�N�\�����;�6ݿ�5���}J����☋��)0x��H�20�u�����<=����5�&Q��G�����(��Tm���{�>�W���V c�ל1��7�!C5�q_�- +���/B/ +n�bV�����ؚ2�C��Y�pK�>+�ƾ��W�ca1M[�)s�˵��'�d����L�8k�w/=U��.e���$ +,�7���H7����{��cF�'��z���>Op���p!�7~�{e��s�d˚���|!b�'s~X���D��jﲺ����I�2�.�o���m[��H�M8G?���m{�n�2M�G��M���t�pTR�ϵ-�K@Q���ɷ0����eN|���GL�1�TWVQ�y�����@�%�?�q���������C��y����p�f�%�65��*`w^���������p +�TH�����Z���^\���ѣ�ѮzW��>aG[�/D�~����Q���P�K�^E�r��*����k��ǂ��c����!�;��w=q-�h�}��w�P��_Ɣa�*��mE���t��̝������*�����ڷ����De��O$T��Q�A�=piR'���C`A6=|@G�����q�O�;�h�+�NJ����|P��eI7郕�a1�zM:x;���7s�%�:��]ܱh�6��e��{z�Vn(�_+a���Q����]��27�� +��g�S���N7Zȣ�Wh2� +�]��i'���-a�H�2�z���z��6�/�c�h��:ˈ� � +�g���`���YA��q� �ecd�_���9�PM���Gz�cC�6n���F����^�ӣ�j}�=�n�v!E�;�EF�k�R�g��%�>#hD�M��������2X;E����T}���L|���=7a������8Hݹ��5��0��s�L��t�C�,c����?���J�p٤{0�/��,�_ $�DЅ�Y.X7�wLL|�/����������O�ml��ii-~P�����5'ݥ��-/��i�:xj +� ��w�u���.G]_� +2]<aȞ��[N��K=V��+���Xv3n�]J�5��i�^dRa\DO�����[qIx�1�*���oG���0r����ª� Z;�~1��K�.���{]ј���u�gE���w�r(�9Sذ("�5Ȍg@�r:/� ���@��Y)��/��+;T���I���]�i�W���Vj3ۏ"j5W�th1��.��MwSowO��a>ז�Y�;-���C20������Y��s��l�v�=Ř�&�����.Xz��*3">����7�s�O����r�IB�y���l{�y��s#+�u��*��](rŪ�j�%�������Ä���e���L� +�B^�0/���i@��"��M�x��hd�V:�D��h�w썦y�i���i�! ܟ��؈H�_�A��Y�r:6ed9Luf�z��9��jG�e�g��z&1�u��V��0=B�!)�`��N�� 3� +v2핰-kv�I0y��Tԣ��?E�W�+������I�%����?�h�� +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 1494 0 R +/Resources 3 0 R +/Contents 4 0 R +/CropBox [ 8 0 603 792 ] +/B [ 2 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +2 0 obj +<< +/T 1503 0 R +/P 1 0 R +/R [ 53 64 557 693 ] +/V 286 0 R +/N 230 0 R +>> +endobj +3 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +4 0 obj +<< /Length 3512 /Filter /FlateDecode >> +stream +H��W]�۸}�_��V*�Z��j���$���,:�S�(4m+�%A���O����${�)��b�1I������s�ӝITa�O�hn~��䫽�����z�����(?��@��fw�V�����U��^�h�x�F���������݂���d^��:j��0RI�zI�j{�Y{��:VۂZ�N7w����b/v��]E����on��?��[�r�=�V��s���]%^����c�pyN����{���v���� +��Ұ�}�{�N�ƞ�9�塢�ƨ��d��šiqU���r}5���O|�dr!�<l$�M�ær�����U�<��{w���7���Ӆ�h�:��:��l9�Ʌ�D,�ʂ���}�]���ݧ��d9����d������rh-�M���u��]�]�C�=������[���Gu1�Oy���Q\H��i��oǎ�ܪ��[�����TTg����a����بOUѷ�l>k�LA� +��� ��������χ�mȺ_"_a$-V�T�+l&��_�\�˽B������:.������׳���g���[,+�6 +@EKS������Ā�� ���������g�>��s����K7!� �5ଘ�H�mZQ\c�2�!3ͱ��ZI#)1p�@�ʨ��m�_�bG��EF�R�ة�bǨ��o�ѐ���3�M���n:OyAds|8�� a��Q��[��E�� +�R���nY�F^��?�e��ܡ0DNShu���A����4O��5�2�h��.��~c�܊㊃^WLޔ���e��Q�у�5������]˔��`Az.\wH3���V� +)�J�-7������-�v�E�9��҄O��D�ΆB�]��n���=�������'����8��2鸰%����pb�Q�N +�TSl����EjH@I�7g�#�4�O�#t�[�0�@�DN[ro,�q�5��A��c.E\�A�T��@���r���1D�a�ی��wn�¬��_`T�B��On��˲=&��{h�E.\p� ��I%�ujz��6�1��_�j��~6��'� � ���K�� l�l+��.o*HWDк^(U��~�4pȥ���?a{hV.� +���7^_�#劤���!i �B����!��zv?}ı�yvU>��ѿ5��H i�o�V��'�փ�W�^�� ,ȽeBO!�\���*�����5����u��D��C&��@8;=c@�l�Ծz)t�+����Cα��sӮ� g�4Vьݙ�*�l�"LbJ_��F|Bkj����x����G � %��c�x<.��!5���L����+"����;�J�b!���8r +���l��k�KS�ڬ@[��9P�R����&�`�:��"߅�%]����V3�ra��XQ�T��J�f����C��J�D�����ڈ`���L��1�Qݱ��L��G�Gxl���)��q���6��bXJ��[����2x�榕�dW0���y�h�a���$�u���s��q�����{-O�1(��G/�5���M{�-�"�4�9'��9�"��I#���eN7B�ᄬ2�@"kE��_��jʰ.��WBr�_�Lr�i䢘$݆@!�Ҩ-k�+p�J'*z���k'�sb�9�-�G�,l��F�.&ro�J��M�ȲpvZJ�|�F�Ù�m|G��Rp��壾�q�~�2%�L�{~9�=���j�unG1���4��̍�T}��u:ͯ�0Y�?���ȿ(\ D"AƮ�/��G`nkR��4i�4;��/5|�磼)���>uƼ�u�H��1֏�E�-� ���5�?�=�HL�� �eۚt��df�_j�Pd�ٽ��i�0k?����YB��T�V"PJ�i� �̆S��b�nfN�Y�� +�µ�C9qb���h������q��@��.�������^�� +����xϠA�R�!ZgK�7+���n�u<���:1�A���/,57��92FT� �2���Ę��K¬��ͥ��u'��56P3 f��v�8�D<���Q��M��N�~c�~#�����oh��AS!72�j+]ή\l��.~yv|�/�X�B�$S�#��"�u1"ð�T��lT�Bc��yP�Hyό9�<H�D��'��=�%�O���N�����'$n���N�jن,��B�C���L{ +|������ ���@3/J�l��Tq�T�y�`'��2A�`0zn�a�W17���?#�(�A(��� +uZō�A�_�����NU]���P�# �%Q$����I� L�t]ƾuZ|��j,t�kD�/+ +R�܀"��QY��|Y��\(�p�HFV5.v�������+ <Zl��U�S8 �>5?� �0�`���g��k��%J(�/M`�B��aC��.��eG+��B�2_�r�� Y%A5��!}T�� ;3�N�^@d��h;�h,^S�et����;3���״�*˗9 /0���qI�ձ����QƨT�"���!�Ϻ."]���Ђ��SH�U +(z(����jJ������>B�C�C4$O-A���� +���L(��5`|mX?�{���ۤa�*�&���Φ�4*y64�S_:&@u֦��2�X^̈��܃s����Jmdz��UŢ.�K�k�j.VA�s����j�M�w��G#�,�&����������!�MlÊ����c Ҋό��U�E��#��B��Hy��F坁$��|P�F�{.����"s�BTҽ��@ +QZ\�X��'>C��%G��_Ē/f��왹�k:��Nc��2\��^�av'T�E9T'��bg����w5����sպ9qʵ +��� +/U���5)����q����/��@��ؒ�A�>K��7�ё�=�e��7�<* +��)T&n��O����C�$|�\��h�5��*�?��٭�R^�uߖ�g���%YZ�y� +��#1ҋȕ�ThK^Z^��t'R%�:/��C1ʛϏw��vՁ��Fͳ�K�d��s���&w9e�=z�{��7{��T��^ɨ��r��<���F;w�؞(F �nD +�W�9%��3Y@�f.+P+�T��A������7�i�R��e2l���(���RB��7���mpp[0��:��Np��Q��LkI��[��b���\��~�i��Xt�{�� +�@t�� +g�ُL�38��X۵w*B�ê��S˰3��B�^��Y;N�7�:(�i�O�=U�I7� +���C.b"FC��5�2��5CIC^$�=�=�� <&U1�=���s]�^�R�Mh�J�6 +��f�"�(h����[;tPkb�#,<%�PZ��V>���&U�k��VTE���̱ +>v���p +YնbR�]�R-m�<��tq�i��;�K/�!��.�a�Ho���ā��U=ɲ�LQf�a�E%��l��,�s����Os���� +endstream +endobj +5 0 obj +<< +/Type /Page +/Parent 1494 0 R +/Resources 6 0 R +/Contents 7 0 R +/CropBox [ 8 0 603 792 ] +/B [ 230 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +6 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +7 0 obj +<< /Length 4030 /Filter /FlateDecode >> +stream +H�|W�s�J�_�u�����D�r������}`�Df��I����c&����t�>��wN�6��a�_��7_�!��c2�G�0F�p,��X��mS�����P��;�n�0t���ѭ��?��%7_�؈��f�O�Gsd�cK8��;����P͑H2Z +a��F��Џ���ƾ��8��i��XK~�@�h*�n +�i2�f=���o�+����GRh�<�Ԇ�+�S���.���;��N��I+>z�@��^Q4����c�OE��j�*��Rm>�gd��L +�&�A��Ȫ�.������!}kn�Z˄5�Nwyǹ�y1�p% +/���r�U��9�JQP�J���4��ӡ?���^��ɟ{�5�wzo;�m�A4mڒ�2̐y��d_4bWe���JE��G٦��D� +�w3K>)���w���5�/�=��Hq����m�B����U�g`�-!�����J/� ���p@Bd�z���&�_�4��.WH|�%�oE���l+��Rq@:~�����:�U�O��5���6:� +�;�P�i� +��ߙ,� +���c]�N[�{�� �N���u~t +g®�&�O˳x�j%ET5huᓖ�>M���`�\�G�-Kf�"?@,ꪼ���1$���rd�s^�.�J�p+�r(;�v|\��*_�{�Fm��器��ϷP!YU�:^�Ѧ�w_�)+��,ЦO5@�^�1+�9˦&!&�J[��s��2��y�d[�+P.� �s��8��`T3euR7�1�_���R1� +cyq+������kl����%�&�U���E�;,�5�<2@���y�ن�Iv���F�cXv/�OnC ��t�+?�{�U3� Y����C9c&�l@���=6 +��.��/�E�͖��nL��p�$p0%t��靿�&Ͱ��5���s�I��mԳ�oE�� �h��$�X���p�ǻ��L�<mb�G1]���:����.��EEY�G�:�Ś�+���l�'�ro� Lb���,�������� ���㓹�yl�Cw<��A���\�a"�^�6����{`M'b���f��F�Xd��3�c���gR�$�.��O���4{���pM�s�b���j�����B�|j9#�[��kC8.�����0�ɻ��'��Ul4Hޱ\�����5������4S ��_�H�ͽh�q���y�VD�w��%Q��l��dR��;��x~K�,��ő�e�a�lP�! ��̔ӥ���]����6W'7�_ ���>H���@cLT�10����`T`��2�JB���D�t�6p�/r�VV1�����줐?��tȫ�g�@ f���c�I|U���r�?�G��2ICA,��^��Qj�~ֈ)`U<�6A�)>��^��9L�Cn�`�)�Hl�͖��c������������? C��_��\���[.V-��JAA���UG9��[��G%��y�C�{PؖW`�A������a��+��KW�U� ^��ѽ�F!��]��Q�/��GxU�S�C�]�����:A�3��VE>B�&@ 2�Y�{Cޣ�g�#huΖ�svݮ�|��P�����������Y8�poE��3E���+�V�3v?V�ى5'�m�mb��[l�-ل:F�,9ŪT��t�{>�A{�0x�'���Z�/�ԅ��ǾA +����K��p.�k�{�-�$&4�0=��nŌ�+����Q@�.|�N�Ǟѣ��\ +ITqʈ���9$��#B�k4oyS�q +���a��f�o���}�8]��,w�/�X��n�x�ه>=g�� Y\&,�{5�Da/�G��#��h�/�Ə aWݤ4�9�c6O!c��>�E+v4��G�PN���ȴ���E�u�ľJ��x�� +�8���l�������J���3T���Ӝ�Ï�~b��`��d���l�:u����O�V�j��sJE{�9�g.f�ض��P_���y>/3f�sS=�o)�U�}����_�Ύn��<�G�������$�w�*�j<��$�h���yV<��>7x�$ ���7��T����*ϊ�&�=�O����"�+��&;��K^p2��i��K�lڢ=�9��� +g%�]�4�y�a"4�� �i�"S��#E��M.���A+��c�y&�l���Y=�N�q�Lm��Lt#�*u�<��}xߘ�CdH��'Q0�^�E�ϟ��LK~�k�Ȍị(��^��&g�ޝ���� +!ޓ�t���*���T1� r��Y�;�]�i�ա����k^�/x��ґeK4�K����#�Z���:ܿh�`�+���ikt�H�Y[0�A���U��T� +�����R4'LVy�uZ��D�����2�[c����6��ߪ�:Գ/�N�'k�ۮ��Cex��F�p"|@�P�|�6Q�VO�����m(��W`W�#kD�Ai�H��S��8�3��&a� M�$�?E?�o����$�H�qι.��d.sf%U�x2 +��$�,0�,�d�n�ۢ�XՕ��C;X�C%�_�1rZ.�4�N�jkئ��K��1��^4�V�o���؉�5��E�P�GT~�<W,kMVȐf8`4�qC&A�6��cw��=�����I�B�>��Y�5 + c$��-�NB@�G���E�Rh>3����`M���Ŭ�xdn�X�fBf�"���DN�M�t�7��M���5��EoFy?`�̮�:0�މ�wB�٣�c�!��1s�,���x��8ky���=h`��d��^�4�[ya��#;�gV� �0xD����J_Q�H��3������q/+w���&g�8p8�<�� kpu]�$��˪�Kha���h������cV<F� 3Y��4�e�"b�ن��˅{K��j�����Y�5��^��U?����s!i�$���w@,�v�Fb��ܱ��?i���D�?LI�߾���2�)�J� +W!�Qq�56����e:��H�<x8~�P� +_�MO�yp^6�3s��O=i�Hf�\vͶ*�1{��y����4f���\B���.��N�0�m���@�a�EYU7fыl�̠�=8���m��̃>%�,'�:UY����|,O}CT���H���ݻ��J��\�/�g���B�F�٩nm�YGG"���ה�6���O=��� �;s]nJ���>����굯�3���� +s��8�[������U��,R6v`��*�8P��_��D����zm�{}����}DDyWW7�rWn���~� +��J���"S���rt� +�zS�)���zs��H�9�(�y�!�$6�;ޥ)xX����f})�dM�� )��4�t�������%/v �g����wZxQ[zɼܨ&c�V��BSI� t%�9,�h�b�>+���L(�A��k�3h�=\V�Z]����Bt��ް���HT-�d�5p�Y����$thX���߿�{T�@��-;�b\l��bc>����#�����I +�d>�ӻ����H�K!�p�����>���'Z����9��#�@k�\*N_�x��fG]L�^OY�âp��Y�@�ȡj��CB��b�u���ct���_�Nb�1�vt�h�^�E��+��Ņ��Z_�/���˄.�O�R�S��"x�A�!3����3�=�#ׯ6%���B��I|�}���n�����M��|=�S��u C̪ʞ]�&�������������|*�x�Z�P�k���'�K��bȥY�R�� �B���H�M���\�s����l��0z[%4��Ī@[҅�P�uf���k�UNFE`Lm� �x���nt�GH���}�m)z����s� +g��mn����2���7�>�}jV���|��\��">>�ׁ��([�Y�ߓ��b��)e�� +Ho&0,K������f��v%5 +e������$*� \�� � �y�l �UYG�&��I�� +p.$u� ���H� +��_�z��� +endstream +endobj +8 0 obj +<< +/Type /Page +/Parent 1494 0 R +/Resources 9 0 R +/Contents 10 0 R +/CropBox [ 8 0 603 792 ] +/B [ 231 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +9 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +10 0 obj +<< /Length 1829 /Filter /FlateDecode >> +stream +H��W�r�6��+pJ�)���6��r*O���L��p+����F�$O&)WY �F�����;��Z�����_��?G�VQ�I̢$K�eP����Mb�_��p~+�(�S��y��l�3��fu�ـ�ٯ����:ӈ�8(K�E�WY�6�*�0J٦����������o>���y�xw����V�8 +����:�,mޛ�aeVB+�h���Ͻz��Yy�i����ڏ��c����4H���k��bGp!�R{�&����α�5������4~T�L���m�a� +N +n~���ɿD��#��At�Ԙ�5���y|���k-{�80��h�8`����Xf'58�Y���kPQqX�V)a�J�6��P_|&�����j��ۖ� �GK���:��V�C��L�nD���kEZ���q"C'��L2�0J��ՉA�=>k�u� +����Q����D;�=��aj�}�q 0��|� ��u��Hsn8�oc���G�=1�g-&r�dQy +rT,�����>� ��̌$�`����˚k9�8���+��'�#ϳ�J��;@�p��J6Ll��݀�j��-u��K�E��s�HBz���+���,����B����wx�*<�����`G�$���� \Q��. +�8K^�r��$�φ��dD��0w�o3u;6�4r�sJO�$uI�+;�tA���±'Q +ja-��4jw=���X��9��jauZ���9�hO=��aꖮ#��q�0��%�";��9C�M�-�hV����B� �~W>C�[��.�6� +��]M�n�_{@���4�����j�J�vG���ӵ H��G9���`���jͷ�pI�.� �qxN�d1S�pudR�M�+M�M1;�1�������^<W��ֱ��!`�������� {bvت��J���F�R=u�؉�Zt�1�Q��g��C��n]�9�!�l*?5W�]�vm�Ҏ0��i{�����0o~��+ +�G�1(!l[� ���p:A"g�@�&���a�Y�����'�g��%-��1!��%�K�_g:$:�����4�����I.���%75ͩ������qM�pL�@��Q�l�s�ِ�*�Y��ޯOz� +�O���P3�.��J@��$�(I�Bt0�D���%�d�b��t���D��|���K(�GM��A� +�[�7�y`�*�������͵�� +��|�Os�(8���������W�4ט�f�kE��<��V�t!���.�����f������f��VN +�<?��䋝�z'}<��'PK��?s�U�?�M�#Z�#�Q����Z�7|�f2�L��Cq��!YR4�\ړ�ʋ=ka�"c@4��+x��8\�?.\b �.��;KmX`K�&W9D6��l/z�>3���{��}���'�x������q�{��e�C���&�����MTQk+(b���RL�&�T�$���a� +I;۲zV�\�&ő�m(}������7�t�n�����%>�F>i'�{KMyqs�;38S����]��#����r:K:s��[�#q�@2�� +�YL�G7bz�m��.�BE�d*S�[���pxFx]U���%��9,{^��?,WX?�h�~U2۞(��U^-OD#�f>R�A�Y�O�ǁ_!�i�^�x�Y�N�������Ί%�IX�Ŗ��<j�`>�GYc�A������)�S�x�s�;���8����D1ķ'Y��5xaj����D��Ǻ��'#�ϣ���=Do�T('�$go��-�2�t����,;� +endstream +endobj +11 0 obj +<< +/Type /Page +/Parent 1494 0 R +/Resources 36 0 R +/Contents 37 0 R +/CropBox [ 8 0 603 792 ] +/Annots [ 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R +22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R +32 0 R 33 0 R 34 0 R 35 0 R ] +/B [ 232 0 R 233 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +12 0 obj +<< +/Dest (G3.509745) +/Type /Annot +/Subtype /Link +/Rect [ 62 456 566 470 ] +/Border [ 0 0 0 ] +>> +endobj +13 0 obj +<< +/Dest (G4.509745) +/Type /Annot +/Subtype /Link +/Rect [ 62 434 566 448 ] +/Border [ 0 0 0 ] +>> +endobj +14 0 obj +<< +/Dest (G4.517781) +/Type /Annot +/Subtype /Link +/Rect [ 62 417 566 429 ] +/Border [ 0 0 0 ] +>> +endobj +15 0 obj +<< +/Dest (G4.517782) +/Type /Annot +/Subtype /Link +/Rect [ 62 402 566 414 ] +/Border [ 0 0 0 ] +>> +endobj +16 0 obj +<< +/Dest (G4.517638) +/Type /Annot +/Subtype /Link +/Rect [ 62 385 566 397 ] +/Border [ 0 0 0 ] +>> +endobj +17 0 obj +<< +/Dest (G4.517648) +/Type /Annot +/Subtype /Link +/Rect [ 62 370 566 382 ] +/Border [ 0 0 0 ] +>> +endobj +18 0 obj +<< +/Dest (G5.509745) +/Type /Annot +/Subtype /Link +/Rect [ 62 348 566 362 ] +/Border [ 0 0 0 ] +>> +endobj +19 0 obj +<< +/Dest (G5.518301) +/Type /Annot +/Subtype /Link +/Rect [ 62 331 566 343 ] +/Border [ 0 0 0 ] +>> +endobj +20 0 obj +<< +/Dest (G5.519383) +/Type /Annot +/Subtype /Link +/Rect [ 62 314 566 326 ] +/Border [ 0 0 0 ] +>> +endobj +21 0 obj +<< +/Dest (G5.519409) +/Type /Annot +/Subtype /Link +/Rect [ 62 299 566 311 ] +/Border [ 0 0 0 ] +>> +endobj +22 0 obj +<< +/Dest (G5.519534) +/Type /Annot +/Subtype /Link +/Rect [ 62 284 566 296 ] +/Border [ 0 0 0 ] +>> +endobj +23 0 obj +<< +/Dest (G5.519553) +/Type /Annot +/Subtype /Link +/Rect [ 62 269 566 281 ] +/Border [ 0 0 0 ] +>> +endobj +24 0 obj +<< +/Dest (G5.519592) +/Type /Annot +/Subtype /Link +/Rect [ 62 254 566 266 ] +/Border [ 0 0 0 ] +>> +endobj +25 0 obj +<< +/Dest (G5.519604) +/Type /Annot +/Subtype /Link +/Rect [ 62 239 566 251 ] +/Border [ 0 0 0 ] +>> +endobj +26 0 obj +<< +/Dest (G5.519611) +/Type /Annot +/Subtype /Link +/Rect [ 62 224 566 236 ] +/Border [ 0 0 0 ] +>> +endobj +27 0 obj +<< +/Dest (G5.519616) +/Type /Annot +/Subtype /Link +/Rect [ 62 207 566 219 ] +/Border [ 0 0 0 ] +>> +endobj +28 0 obj +<< +/Dest (G5.519621) +/Type /Annot +/Subtype /Link +/Rect [ 62 192 566 204 ] +/Border [ 0 0 0 ] +>> +endobj +29 0 obj +<< +/Dest (G5.519723) +/Type /Annot +/Subtype /Link +/Rect [ 62 177 566 189 ] +/Border [ 0 0 0 ] +>> +endobj +30 0 obj +<< +/Dest (G5.519832) +/Type /Annot +/Subtype /Link +/Rect [ 62 162 566 174 ] +/Border [ 0 0 0 ] +>> +endobj +31 0 obj +<< +/Dest (G5.519863) +/Type /Annot +/Subtype /Link +/Rect [ 62 147 566 159 ] +/Border [ 0 0 0 ] +>> +endobj +32 0 obj +<< +/Dest (G5.519899) +/Type /Annot +/Subtype /Link +/Rect [ 62 132 566 144 ] +/Border [ 0 0 0 ] +>> +endobj +33 0 obj +<< +/Dest (G5.519934) +/Type /Annot +/Subtype /Link +/Rect [ 62 117 566 129 ] +/Border [ 0 0 0 ] +>> +endobj +34 0 obj +<< +/Dest (G5.519957) +/Type /Annot +/Subtype /Link +/Rect [ 62 102 566 114 ] +/Border [ 0 0 0 ] +>> +endobj +35 0 obj +<< +/Dest (G5.519960) +/Type /Annot +/Subtype /Link +/Rect [ 275 85 566 97 ] +/Border [ 0 0 0 ] +>> +endobj +36 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT4 1545 0 R /TT6 234 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +37 0 obj +<< /Length 1683 /Filter /FlateDecode >> +stream +H��W�n�F}�W��7{��v�"F�1�TF�$$��߹,I9V� ���]�{��s���I�xUUVQ����)Ef�Ʉ+��ډj�xu�gb��k#��n���+#��Zi�Q-)t3oE���7�S�MҠ +Y'����VsG������xo�P��5-�WԼ�E�fN岁6SV���\����^^'i��Q�8J��x7�V@k�����q�����⒦��KR�����*.��-l�[x?n+�ㄎV;��������9j�Y�f\�$���#�����+Un��k�-8P��8��@EH�Δ�"h�r+\����p�k�0{S:e�0�mu� +a�E��N�}TKUL���t0�������֝���� += �����츎��sKf +�b�:�]b +~����� +"������\��8�DjT��sl�I�z�x���ov��;�a��p�R��V��$6O���gttFԨg=P��j�&�ۘb�w�=s���d����$o�H�`�>6� +~yÀ��r�Z��e=$|���8�%����#�l8��F��$���J�Gh]��ۙ�6�1Q��5J���N����� �z�WCx�v�hW�$���l����b��������"�!���Gy�*�h�l�Q|���|��cC�*��KiA�9�s��^��ɬ#L�N��v���|��w�H�7}��`�1q�s���l0&Lq)F6�� +�O� l{�A�S6�,�!�lרiP��������~դ�aN8�DA�ؓ���l�*!�3˳A��2A� +�MX�9(y)��OD�����Z\4C�m�� +��l:�,?���f��x+X�ٮ�8g�1&��C2���%�a��r�0�~���h��n�#��줇 �9@<t��I: +9f����ۣY���<���Ld��89J��ˉ= 'j���K�.��̙�ڃR�"Dcb' �G$dJ'#�&1��S��M��b�� @�2�#��8���G1��P�U����a�&��x��'/��vs�m����~�/`)Ԝ�����t��3L�@�$x��G�7�� +T2�d�����M!v�<�S)�#o�ݤ�a�Q��R����Er����M�hh���M���7C�!S�T�:u�<=?�$z���=~���lv L�N���C-f$�tAL +�_��px'�o�*3e� +;��>�YE��$P�l�{����Ȼ���u����n��P4E��D� �F�og +��S>��n�tT�ގR���ttFE��P8Mw�A��},sQN�z�?�X&�;�A�>���x +: +�22�?���5�q +jd����J�vXo)��߽��w5��P���d�t����sE��6����+ً��y��Ȟv�)��rw=P¼����� |�������Gr��˅?B�oe�7��;�tP������F�;����h�c%��%�u��тo���l��@Ր-K9�[�tt��n��5N>Vj�����͘�ٌ����L�ͪ�ݲ�z=��]ӷ�ݒj�Q�hg/��yG�[� =?�#���3N���z������ޅ�����r��o��}����[�a�K��֮�p9�$�y*�3�\5KC���q��K�46RKz��:����>�g����� +endstream +endobj +38 0 obj +<< +/Type /Page +/Parent 1494 0 R +/Resources 41 0 R +/Contents 42 0 R +/CropBox [ 8 0 603 792 ] +/Annots [ 39 0 R 40 0 R ] +/B [ 235 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +39 0 obj +<< +/Dest (G5.519962) +/Type /Annot +/Subtype /Link +/Rect [ 62 674 566 686 ] +/Border [ 0 0 0 ] +>> +endobj +40 0 obj +<< +/Dest (G5.520065) +/Type /Annot +/Subtype /Link +/Rect [ 325 659 566 671 ] +/Border [ 0 0 0 ] +>> +endobj +41 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +42 0 obj +<< /Length 517 /Filter /FlateDecode >> +stream +H��SMo1��W��>��c{m�5� E U*!$(�M�$��Ϯ��V=�ؕ<���|>ϋ��†l����C�g��z(�jvu��:�1�q�S�w ��Eks��R�O��[S�W�qtI���7�c`S�����^����e���g�p�{9���}D�M(X�yw����bt��^|: +7r}�����d3��N��$��-,4@�p���bB��<�wc>��y=e�|̧=�7"����@�粸 �w"OV�\�d�u�1�J�[�v��vM�X��eH�3]�Q[��F��<RM�����-ӱF��L����ޝ��z�E��R<z�ӣ��l��wpX�����zfG�G��b���*����Ӗ�h.��^L��7�G4���h?��ۄd:�y��ˇ%�J���~���)7D� +Gg�� +���LON^4�5��t����3�L�^4+�����Q��s�n�Y8o�����Z��ȯC*��#�G�<�����Rҍ(�H�l����9�[�DG +endstream +endobj +43 0 obj +<< +/Type /Page +/Parent 1494 0 R +/Resources 44 0 R +/Contents 45 0 R +/CropBox [ 8 0 603 792 ] +/B [ 236 0 R 237 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +44 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +45 0 obj +<< /Length 2173 /Filter /FlateDecode >> +stream +H��Wے۸}���[���������ZW�v+Q��<@$a�"U��d���n�i���T�x��O�n|�=���b����P����P�")CE��]��0���C�>���%N�CFQ��]����<���������)x��R��)����q�.�4���3�ΝoU�Q�*Yl�����;�FOyXH��?��&~�D���h#تRa�$���6��9v����~тl|���Q��0��`�Y�y���R�YKfri�������!h�(�Td� +�X$yƩ@���6*��PUI�R���a)Tf�[�a�E� +����W�)�T +�����R�_$��"PsԵq�d�P��fEXF����Z�W���n�x6�����ųn��\L;�O�P�Jv��B��;Jх�9M�d�F��J{g��M�����I��K�����SǏ⧶�W��gAE����Q�|0@�v4}�G��lu#�>@N +yҭ�=o��0]�]?��3�4�RHp1;Q��SY�����^L/�(�$# �|S�}@䐦K�L۞p���.���m� +�2Y��$�@��\ċiY�^��8�j��fՊ�*}�I���{#��4�q��Tn�1�+E�����&*��i(~���l���#���Cj���w�n4^�J���I-�}���7.�k����FtG�1M��ނ�kf�E�X�nә�M}n��;�Q���; �C���Е"�D��&�j��#����8�� +�YD}�{ +&��g:0 fށ�t�y5fT���Q�� +PZ���*���+y��Н&�Ŏ�1���Z�H�,�0�X]�%�c&&�xQ��jj{�5�Y4vHW��B��a�[���$�K��n�@�$J���y��� ��^�k���Qq�m6�-J]����ۋ&t:�Ę@L� P6z3 +zo;�9������$u�{��I�EV�7����!�^�0��� +����)E�FK&'�z�H��O ��82|2��a +����X�g�Ӌ�� +��v�vD9�б��l��̉�e6��MQ8��/.�#�X�j�F\�o��(��0�}æ]�x�ue��� +�ɔ'�-f´�`�z�%���E^�Ս�𤕟c�.�$����HEp�!�1�7\A|�ῒ=W�8k +w�WTx�w��ŵ�h���G�w�g���!����J&�Hmdx���<�_1"@ ����Yu��D̀f$�Ӿ�^���c7�fQ]���u<�Ʋ�������亲86�!n�qX���V�~��S0�tS�yÙ6x3��*����ݢ��`���EH�����k@j�@^�gR�B�_U�,߁��yX�����8a��f{�ҝ���J��\BU��u�z��\k�LWk �\M�`���}7��)Ԩt��v�X�r��'����;8<X��Q.���R�(��>s���$S�e��&�!��k(���3�2C6��ņc���I���FrP�Bc>$?����-�# �����]7�$�\�Hp*y���B�� +K]3���{�Q+ +�j�|=w�U���?&�}�Y�Y����\�e�Si���/x��H�����pu�v�p�a:�د��������wz��z�<[pT����i�;�^7��1~�7�Hi�gE�}���t�f��d�F,��V+;�>y�7<n���\��N1�,���RG��r4�g��;��N�ϑH%�X�(Z:hZ%�#��P��g��Ë�P�|����r=�.Lݸ.�Eܿ�ڨ�q��p��|�,_{��$����������eߎ�"i�ٖ�Eۆ{?�� +[f��X������ +.8�)�_���>G�R#�����:���s�q��H�@0Ij"4 +eP�R����_��[:�Te�����NF+'�oOE�R�$/X����9�oG��$c2ZZߦ� x*���n��D�;:RG��m��2�E~ +��2��b�.��4��Sⶁ�Xቀ�HR�IJ>;��V7���(�ʏ����1$x�ǺX�/��,�B�Z���Z�c`�睿?���x�ފ#�7���"�����ڇVn��� �&Sїd�vw��0��?�q, @;�R�0��^S7�UG�ۣE�+㨚J�{��������*$%� +endstream +endobj +46 0 obj +<< +/Type /Page +/Parent 1494 0 R +/Resources 47 0 R +/Contents 48 0 R +/CropBox [ 8 0 603 792 ] +/B [ 238 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +47 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT4 1545 0 R /TT6 234 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +48 0 obj +<< /Length 2807 /Filter /FlateDecode >> +stream +H��W�r�H��+�l�0��IҌ������ChJ�4j����;Y� +�"=��֎�A<������o�Wo��Pb��*����HC/�E�{~�Gb�^��RQ�8C�]�y������|?�ź�����ʩ����LM� ��"����'~���.Ӥ�O>;�jtW�9� +��iu�sCȮ���*>�.҉��%����{�A�%���[A�2G���ꇗ��W��?�T!��"9�,K���@�Nm��]%^�V�����9���+��F5CY�PdP�{a,4��B�D`K�!���s�˽\������U��a +]�~JlI��K�$#��D�A���* r���s]>����Pok5��Y�R�;ݩ�MP������Eݍ���R�v�G�#�� Ȗة��o� +�^��� +Ŗ#'\Rg��%��� �����a5/� +�N0�F�*v5rH2r�Q�1��O���O��V��+�R�{��/$ә�`v���tW����[�i��F�����8������#� +����%n4ɧ-Q��"k��xp}g�@ +���cR�(n{7��R�]�+�$֏����Z�4���h�E:�iP{�?�탱�ݰ��]�����e�z�~U\�^��ޫ�rX)ˣו[���n����]wB��ƾ�L��L,hV����gd��{ݵ����'~E=�r0_���c�;���lN([`ɗ�&&��T7�S�vM]r�Al{�rf�)4��H��K������h� +���itB�tY+3k� ʓ{K�T/7uS��Q�Rݱ8�q�i��$Q@��(Ί�>�V?�N��N3|�d�β�V��4��#f����m�H�_b�=t��zT%�����q�MX�9�_��%�N���y�������^H�U��G��ڥ�ӹ+*�"�vڅ��EqR�eÁ����'*f��%�w�m�����4�_d�bj`"R�7�C�Y�3� +��7�fZ��� �d�<��[��#��=�V�v��Ei=�~_�j8S���¼��E\�Y&$��i�: +�l<�Ü5��%��(��a�n5�w�L�a��t�h~q����Wn#��۩+m�����;�3�x�]��]ws{&�������uW��t��� ɣ��8�K~L�4?E78?�d`e�;�Sx��p٨� �vS��(N����B�6�$�K����?�1L��{���I6/�@�Q���?�HU>ѿc��lKL˘J��晚A:ޡ.4j�O03�E9�����J��T%��!*�K=�ۺ3�0O4&c��Bj������(�ӵ�������*�A�w��dyrHS&�z�ʜ=��(* +Jwu9�Q�g~�� ���<Q jNk��Js��I�&lHuI٨��U�>�L�[s��,JN,}��Mm�m{<0��4Vsɐ�"���b�C�h��vW���>���v5�°�L����"��7������R�Ϊ�ȿx��՛S}�ǝw�����0��i}G=��r�hSpS-�E.zM��%���B3/���\3/��L7s��۬��3-�9��p��q�,�-u���;VrS�b�k��Fy�IK��w� ��N�U�YvѨ9�����g�e��a.�M�Z�-Il����)њ/�ȃ�1;�E��H�7�n�e\bT��&B�r�͑`�S�l/\��@��v8�~S�G�� �u��D���M�Hш���T����R7��f8ؗ�zj�Ɓs.3��c��(v%[c�k. ��������Q +� �$��<�yJ��?�i���;7�F���A9�X�yA�4ͳ�� +�QfV�ٺ�X�)a�˩���fJ��# +c�<���Ӡ;�υJ��XM�U��Qs�lP�G���9ݦM��=�)�D)�(?Rcg*~P�7sF�$_�Gh��������ܳ�0����I��'#�bW0<#F���?`���yq����8�R9�6eu}����N_�۷A���G�x9X.57o����m}��iy�֙R[ի�T�^c�^r6�$����{xLZ�9.���{�ҝ���Os� +�S}�²2Y�3����3��3-��q4�s��� �C��٨#��ۓO���� +���`O�f��%��P�!���D�� +��� �|�#Y�"O��Tf��M��&G����% M��.}�g�KJ���uE���=�݃�8��&�V�*迢�屒�cܾ�;�D�F��"��拊�E�Z)���WwˑҮ�#퀶�;H�����mk���Z��_�K�_�V��% 0�l^�l+xq��»��}BF��� ������%nL�r��!�ʽ�����l����n���0Q�����v�^�� +��p�d;�:C��X��nd�>��S�Q����ū|��v�����. b�g��I����V��xR�+��J:�A|��t����$n�;2�S�����~M���j��@����i�Rs�`Ix�ź���x��iw-~�Jc|ˑi���a�{��a�{Q��-�㇋Վ�#���c�=���$���!����0�(�5��_��ǖ�a�wu��q3BfO=5馿�.{a ��>c���r��$�n����� �D +>��^&8�M��]zW��4=ږԌB4Ǻmd�u}k�nJ�A*���dt��GF$p9!�%Y�?��ygr�8`��`}c�jv/�ejA_3n6).�$����摌���Jy�R+�)I�?J���_��G���E_�&8��yu���̙_z�ϰ"�c2���7�q�����N��/Wg�� +endstream +endobj +49 0 obj +<< +/Type /Page +/Parent 1494 0 R +/Resources 50 0 R +/Contents 51 0 R +/CropBox [ 8 0 603 792 ] +/B [ 239 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +50 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /F1 240 0 R /TT2 1540 0 R /TT4 1545 0 R /TT6 234 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +51 0 obj +<< /Length 1479 /Filter /FlateDecode >> +stream +H��VMs�8��W�H��I}��|m�i��D=�{`d�VW5���?d�$;N�cgr������bv^8�Y�rH +#3�"B�8;�4 ����������{+3c��4�����1�ϳ��F=t�`ӌ�`.H��/ �`Q�w���N|l�����9���a��ݩ^>ꅪ!�'4%�Y���O�fL���8���,C����s�d�����|�`}\�8�'Nوf`B�C{@��SP��]3戰4 SB@��!f`�:5Ô�l�<�!�)ː��f�S��E��C�Y��*$i��bvq]^�PiBA��^u�]W���R7O��+ݘ�s�'���A��ŊM�8u�(�<w�S���*� +�m����Z0k������3 �Dv +6F-�j|5R�g2���dr���ue`���#B�^â2}լ6�YC��t�ݗw>x�s$��5f"��L/{eXv��6[N@w������U�n)|���Ia��4$g֏���_{�9i�w�ň|��� +"�(ݡ�^F���ab������?lg U`�4����d��a$`@�H'b��ءݍ*��F�J"+�k�z�ȴ���*�1�S�`�:�L�{��\�$���I>��I��f�녝�]wa7ű�X4A|�N��y0�l�_���ۦW�R� +�Բj*�}�I6��Vs#W +~��է�d�mz�k`h�� ��q��t5r��)�oF��=��I��G�G��_:\zӹ�R�D:܉����FI��"%�H��(k���1o���=�)g4ϼV��a�1q*2&�f�N����j(@�Sog��ل.��]�*U�,^(���Iħj��xI�uV���g!�_��ɳӂ�*�V����Τ��jh��VZ2�A��d�^�Ui^6&ιU���٫�;�ہN���U���n��8��#A�~� k�Q������5�scar8����H�Z ���9���V�����5��i�^��[�3��wcY���b���PJz���މ����ޱl�Ƈ�/�i�s�+??/(��f���l��^���n�)97��Ҡ��k���m`Iq�.u��G�%>%�]~�*e����qR½I�����`جSr��1��|4ݥ�* ���Jy�����j��W-t%{ �K+�x9H2�*���u�k�B������� +9�=�\���}q9X�9t�ŧr���q]K�����-vrA�աh���Ϫ7����7�Ɂ��.������x��S����c���ֵ߭n���ƨ;ʶ\`5���1T�������|iU3�-�ㅡ��^g��G�7 +�Ue������Ed�U�&R�t��r�[S!ko7Q���;�m��~���i�]��� +_�� 8ӽ�̒��'u\x����";��b�x�(��q��8]��ի��.��鏊ͳ� +:�v�Y�������%2r}������7�� +endstream +endobj +52 0 obj +<< +/Type /Page +/Parent 1494 0 R +/Resources 53 0 R +/Contents 54 0 R +/CropBox [ 8 0 603 792 ] +/B [ 241 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +53 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +54 0 obj +<< /Length 275 /Filter /FlateDecode >> +stream +H��Q=O�0��+nt��>&^��fBB���~H ��qb��������n�,F +���n��d,LMl� ��j�h��Vڣ��>(����W��`�!ϻ"���>[*O�Is�z=����ȓ\uoE��Ȧ��������q�����"�c�i��w�f�4�{,�s3)�9F��H�� �WZ���c(���*���9���/JGu +�Բ��h�予�����R�Z�R)58��-��A߉T�w�*2iC\'��j���κ/�nrn +endstream +endobj +55 0 obj +<< +/Type /Page +/Parent 1496 0 R +/Resources 60 0 R +/Contents 61 0 R +/CropBox [ 8 0 603 792 ] +/Annots [ 56 0 R 57 0 R 58 0 R 59 0 R ] +/B [ 242 0 R 243 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +56 0 obj +<< +/Dest (M5.9.48147.Heading2.12.The.Java.Metamodel) +/Type /Annot +/Subtype /Link +/Rect [ 386 188 566 200 ] +/Border [ 0 0 0 ] +>> +endobj +57 0 obj +<< +/Dest (M5.9.48147.Heading2.12.The.Java.Metamodel) +/Type /Annot +/Subtype /Link +/Rect [ 62 176 242 188 ] +/Border [ 0 0 0 ] +>> +endobj +58 0 obj +<< +/Dest (M5.9.78681.Heading2.13.The.Enterprise.JavaBeans.Metamodel) +/Type /Annot +/Subtype /Link +/Rect [ 385 116 566 128 ] +/Border [ 0 0 0 ] +>> +endobj +59 0 obj +<< +/Dest (M5.9.78681.Heading2.13.The.Enterprise.JavaBeans.Metamodel) +/Type /Annot +/Subtype /Link +/Rect [ 62 104 317 116 ] +/Border [ 0 0 0 ] +>> +endobj +60 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT4 1545 0 R /TT6 234 0 R /TT8 244 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +61 0 obj +<< /Length 1410 /Filter /FlateDecode >> +stream +H��W�n�F}�W��0�{���G�I�F� +�}��U�B".������ۙ�P�];A ZJ�\Μs���W�u-� �fU�*�K&r�J&8W�ޭ.�mNZ�~Ķ���Ý _�3�M�v��1�$��X����q<$�f%m�T���_���g�o� +��}nH�I��X�9`��ݚ�� +k�%I���6��|���|(S�a�m +q!�`�Rj-ӕ�Fr��Q�������XY@E欜� ����T$��w��;h�s�3��`�$*�Lf�+2��ID@PT������%$���wU/��XUz�� s^ZpV�� � +���+�~�'�����N�лޠ"�>�RLe.�c_��5(�O�I�YN2]����Y^7�0~�D�*���A�ڐi �7C����6]����=wP�$�T,�pY���U՜�`%���ӣ���M#�{����!����*���C@8��c +B��(} +�ߚ�dF��ֈ��.�]�b�����/e$v��q�Y<�D���OM�[G��ջ~ޏ�5��+�KV�둧к��� ١�P�����)K�G;�M;�5ٌI�����F_y��4eV��e��!�hl����1L�`��;g�w P�<�Y")"�o�)'xƐ0�!ZQ"β�9��d����b��<�0���yȜ�t�l�5�dޏ�y�%.|�%U�a��~%�&h�v���uƼŠ�����(ԎƱ�4���@����+k��q���mm���i��@�A��}�%$������/jF��%���Gl(x�|>9J[;��د@��(���D����= +�q�@�'��[���,�<�%�������$ڥf�FUVt�aI횾5䣵P��F)U�r�0�r6�|��RC F9���.ɨK�y�ml�m�9_�@r�V�٪E;��-̸!��Џ8���ȅ�<T�~���;��3����/���@�9I���Z0���_�����8E�� �̜_A.�&KM���4y�d��}��@�mN���1�נ'�$)0�NM?uN���<q�B��[����������І�0�/D�û�[�dƮ�vz�i,�Ʀ�Ax�O�Q P�؟��e�8��O� �8o/9Oy�rmö¾���ۏ{+\�)�L���Aʥ��!�:߫�'��>c?�_��^����qS�l!x��٤��o�VEކ��=X�%��L���v�>T�H��C��.��*���9I�U��%��o�_����~5��Q�x8�ϫ�C��}P{¼����z.��C�I +�!�8���!(X>�= +*�.���ܙDe�o1�e_)���H�XQ%��*R�_�������&(�?P�G��M�y4��p��ցc1;��j��L��bn +endstream +endobj +62 0 obj +<< +/Type /Page +/Parent 1496 0 R +/Resources 63 0 R +/Contents 64 0 R +/CropBox [ 8 0 603 792 ] +/B [ 245 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +63 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +64 0 obj +<< /Length 303 /Filter /FlateDecode >> +stream +H�\�[K1���+�1w:�dsy�V�X�O������j�ov��@fB�|�9�$f)i`H��@�Dp��,H;1����aX�����m�D�CZ��-�%W��R���ɮ�9de��ƣǫ�:W4����6�T���f����=<�*���{߶0!�1c��.��Zw�O�esl`�-��+82�}�6ք���cm�<�ݪ�C�4F�ګ��jJ�ɷ���B*�b.��� b%��+{�h9?s�t Q�Jb����h�d�)������з�4��9Gh2� CM�6ٓ +e�W��l� +endstream +endobj +65 0 obj +<< +/Type /Page +/Parent 1496 0 R +/Resources 74 0 R +/Contents 75 0 R +/CropBox [ 8 0 603 792 ] +/Annots [ 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R ] +/B [ 246 0 R 247 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +66 0 obj +<< +/Dest (G5.518301) +/Type /Annot +/Subtype /Link +/Rect [ 211 374 271 385 ] +/Border [ 0 0 0 ] +>> +endobj +67 0 obj +<< +/Dest (G5.519383) +/Type /Annot +/Subtype /Link +/Rect [ 211 356 307 367 ] +/Border [ 0 0 0 ] +>> +endobj +68 0 obj +<< +/Dest (G5.519616) +/Type /Annot +/Subtype /Link +/Rect [ 211 338 377 349 ] +/Border [ 0 0 0 ] +>> +endobj +69 0 obj +<< +/Dest (G5.519960) +/Type /Annot +/Subtype /Link +/Rect [ 211 320 274 331 ] +/Border [ 0 0 0 ] +>> +endobj +70 0 obj +<< +/Dest (G5.518301) +/Type /Annot +/Subtype /Link +/Rect [ 463 374 477 385 ] +/Border [ 0 0 0 ] +>> +endobj +71 0 obj +<< +/Dest (G5.519383) +/Type /Annot +/Subtype /Link +/Rect [ 463 356 477 367 ] +/Border [ 0 0 0 ] +>> +endobj +72 0 obj +<< +/Dest (G5.519616) +/Type /Annot +/Subtype /Link +/Rect [ 463 338 482 349 ] +/Border [ 0 0 0 ] +>> +endobj +73 0 obj +<< +/Dest (G5.519960) +/Type /Annot +/Subtype /Link +/Rect [ 463 320 482 331 ] +/Border [ 0 0 0 ] +>> +endobj +74 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT4 1545 0 R /TT6 234 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +75 0 obj +<< /Length 1827 /Filter /FlateDecode >> +stream +H��Wێ��}�W�#��}��1�q1`l�a6�5À"����7�?��̩��E�x�0`��ͺ�:u��~�������)�¿RdF�L�Bj���7~2Q���Pw���O�FI��T����Yb����C�g�x���TQoMt~�/�(��������;��P�ݟ�`ig����ōձV��L�Q���߿�U|=�3��C�:�&����vem2���ء?���K%�JL�>~���O/Z�)����d1[Ӗ�Ud)2[������(���1*�*��27�fJ�D��g�A�Bui�N����*�D�25~��n�M)��O�x��˲� +-P�ʄ��Ir�4R�|9��ALHr�Jl5�n4e�eKK���H������Oj���щ,���T���T��2��. +�*IK���w�h��!���FoT���47E*'��J�*Ӝ��90A^힛A���itg��G�����w���8�m���tOqJkcj�A�[�>�T䩄�"��w�@�C�V��-�E�b-���j��~�Ǧ�~Of&��|�,�@f�\2��t$@gိ�}xj�{n��P��Q|d�y�tn&`�x ��a!�v1�C�8�|b-?$*��A�̃�����K�N5������ +��, +��0��zt{A-N��8�F�V��&an?D����N� 24O:�������_��i�:�ڦ���?����g��Gh�A�t^.t:\����]ա���s3�z��q1��I��<�P�5�X�Տ��MP����TD�X�s��N�n������Wq�:Ȅ����+۫��<�����p��]�*߄�e�"��2 +9�ު�M���@;K�>���N +�>Um��T��L�q&��G����(��~j\T��w �o�jtǓ뼒AYe��,|Y�����:�'UW���wx +�Q��*�gV�)�`��v�[���\��E]u��[`k(�#�f#$71���Δ����9N�(�6�����K#G_�_��#Ρ5L@�m�yk��I��:%3;��A|�9@ri��E��d��j������P���ͱ��/�el��U��E�2�L7�@rn��R'f�Hm8�x9������@=\|�@���~���7��^/2�.�S�� +9�k����?�0����Z��N4��;߬gǽ�zr4{"����I�R'�#�����8�p,��d����A":$x��ŏW�N�~�J�G�]<��U�t�����AO�+��+e`��w7W2�.Aѽx_+���Ĵo�*�$����Īe�|8��r0=W8��� +���,�8�Uǰ�,�Ԑ�����v�Җ��As����j���Rw�d�t��m���[41���/�!Q�Q��=\�"�7�J����ֆ�o;c�}��ω*��H9�y������i@�F +�o0т&�?�c2������%���E��� +M&z�2]j13[�!�pd�> ����S2�HW�7z���cc�=� �B���$��4��Vo��lf���@��/�י�&��\%u��� ����4hi�%�{r�0A����O&1�%�%�}��H����8x�mQ���%M��j1#g$�_�O +�%������k���77�0|��q=��Ф���~WJkp�K�< �fh�] +~�y�e�U`�"�i��9�Q�Fw�A��ԛM�e��1 +�a15&����ݬ��n�_��i*�;�s|Xn����nCW�C,���x�Bc�B���ęC�ٴ��$����V��6XN.�fR���-J�?\E�ﬦ��U���YE�o��o�"h� +endstream +endobj +76 0 obj +<< +/Type /Page +/Parent 1496 0 R +/Resources 82 0 R +/Contents 83 0 R +/CropBox [ 8 0 603 792 ] +/Annots [ 77 0 R 78 0 R 79 0 R 80 0 R 81 0 R ] +/B [ 248 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +77 0 obj +<< +/Dest (G5.519411) +/Type /Annot +/Subtype /Link +/Rect [ 206 500 302 511 ] +/Border [ 0 0 0 ] +>> +endobj +78 0 obj +<< +/Dest (G5.519536) +/Type /Annot +/Subtype /Link +/Rect [ 206 479 302 491 ] +/Border [ 0 0 0 ] +>> +endobj +79 0 obj +<< +/Dest (G5.519555) +/Type /Annot +/Subtype /Link +/Rect [ 206 459 302 470 ] +/Border [ 0 0 0 ] +>> +endobj +80 0 obj +<< +/Dest (G5.519606) +/Type /Annot +/Subtype /Link +/Rect [ 206 426 306 438 ] +/Border [ 0 0 0 ] +>> +endobj +81 0 obj +<< +/Dest (G5.519613) +/Type /Annot +/Subtype /Link +/Rect [ 206 406 307 417 ] +/Border [ 0 0 0 ] +>> +endobj +82 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +83 0 obj +<< /Length 1511 /Filter /FlateDecode >> +stream +H��WM��6��W�Q,Z��s�n6EM4��+ӻZ������ΐ�,���l�|�y�� +sW�e)�Cy���R�����qA���:�J��9��~���Y�B�ie��|����2O�����Zd����Y^D�<��ij�|V�l��j�R�y�;��/��A$^��s�GQ�A[��̢����<�����n�9a��e,B&� +�-x�|�A�����',�fi���o�0���m>�K|M@����g>Y�3����W�8\ID����C���ݼ�X�1G,�A�9��&F�;�BL�ҐE�1I�1�c�s���֬Hm��S�'�2��xk���QP,Lxb�(_���������4��MG���~�2��{.��zh��Z�xgg�y�� �����j�d�� �<j +è��&u���c�����:|��� �P>�N��V~�U�~ 0f�OP5r���9��y��[zAQ�o��Lj�ec~BvH6X +Iß�%�a����@��~�ch��V�ҕ<'Ѻ�q��'%�)r(.�����V���b�FBe&S��P��Q-��@6���[(��a�Ħ�qq�WA/R�Pg�a�}=��'��b���W&fM"�49Mj촑�M"g)������Wr���� X?�'�(|�(m�Ͽ�5r"��Pc.w¥�x���QwU3�I~��G�c_�����9���!�X�M�� +9X +U��"���ӋW����(�ΰ6��O�T�l���_� Y��*���B�6�8��V@�y�$�-�T��Z���ɖ�b�tt�=������QI(��#V�����)�A�0ju�xb��h����kc_&*i����l="�, h@bh��H��49KD�xϭiv��<�O�dM]�q��ɔ��of�}o�DzR�����v���⪔�0c�#<~�#��z"�o�T��1ᩕo����'�L���px�֏>9��|x������A��U�|L`����3z���d1�61����� d8-sHb3$��� C��u��ł �YD\��#o!m�=\��N�D�l�6��r��;�x;�l�5�_x�?�Gb�X.q�9�?,>.�-s�N)���T?�{�8���x�sp��x���p�H��}�M�A���m/mm1N����pMPdg[�*��G�@���wi_�==��X��i�e���3�y<�=�}(�6���.~4Cέ`k����5�����c�� �×�yo�q@n�F��M#�2t�XY�蠕y9�S�y���[�����m���(����{p\o]�*#�(�\�9�ka�kW����F2 +n�����"#�n#'�g� ����t �^�!���q +J�+��KV�KЧ�G�6'���>�I��7%#!<���J����ƞ������F�5T �������L�5��2��{���d�g�d5�#���L�MުBA'/n[�L`����xQ�5V��6r����4~� +endstream +endobj +84 0 obj +<< +/Type /Page +/Parent 1496 0 R +/Resources 85 0 R +/Contents 86 0 R +/CropBox [ 8 0 603 792 ] +/B [ 249 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +85 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R /TT10 250 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +86 0 obj +<< /Length 3069 /Filter /FlateDecode >> +stream +H��W�rI}�W�c7�j�^ռ�l�ca��ވyh�ƈ�%�e`��ߓuSKj�� �D���쪓�'o���糙d��>^���_ˬl�f�7\s�f�ϧ[��۰-�v��x��k�n����6�_L�h�d�o�����/��4��ꉬ���<>p]�1���m�[X�={l�y��������۸��fѯ�/X8�m��np�+GX�H��>�,����n�$A��rJ�β�S*9Q���v۴>�%<c��Q�m�x�>�$}�jv��0�V���1�p�H�X����2�,-Z�(`S +�0�o<��FF���v2��$�"��m����A!x��6@�8_�jZ�FW�n�e����_?l��;$�D�]�ǎx2&��zy�8p_+�}OT`rB���80�i�.��m<m���؊pŧ�n�ٴ6�#< ���3\&����Rn`�Fz���v7}>ڧ�y1uxʦ��N��m +c�W��m�~X�pp5'Ȯ�h�f��! +W+gʡ�G������5ŗ��v�AW쎀�Ǜ�U�?Y��[���>�,�r�r����B�|�H��������ӭo��X�]������{Xn��ӌ%lg,�w�Cd�|Y����y���]l��du�?ł��v`Aaw������/H������ +�hځ�.�@���o�~�>|Oǝ��5C�nr +�c��o$SJ2�xc�R��v�<8�DHԔ���X������-ο��3#���co��?8[��%��m���Q+�̄�Cʹ����J!E��R�Vīk�ܣD��{_k۴�i +$V0J�*!(5��BK�@u7���58��I���/mG��i�\�}�·81�#�Ɏ��y +��� +?]� ��xY#�Wˀ�T��Z۪_o�~�ٔ7�|@��A��f�Z�Ї�����Eс5Uft?�����X|���N��L�G!����F��%�}��"ݬ\�ꞮFD��Mv\�q'�Q$��u��LnU�m"�%L&<��0�ɚ:�X�D�5;7� +G�`\_]�p�W�$��q�>����.�����!�J�Q><��e�,�Ъ��a +CP�V]v%KJ����@��fU� ���*�l=F�^!�$��O$j�=�I��P��hg,����k-1 -��!&ӊ�Kx�!�l ����N�2���ME9+nZJ��(CEk��1���HQ�Fg�HRIK��h� �(9 I�ŤsE�(N���s(�a9��3�#���ĔmqE���'dd�3�ț&�y�t(��5��I!KW�"۔��@PD�w5E����!�|(�'��y�"�#��L1�h?��}�Ǘ)�"�f���m)���L�@�-�dQ���־�>�ז���y�x����_�� +x����(3ҋ ;6��[̡9��1e��u�JQv.��l� +�� +���.�V� +C���m�gq�JԌU�nc�`4ɖ�6��7ږF� �eq�-�n{�؛�Y�x�L�6f�t���QT�c�{Y���Q�~��<A%����P��,�HĒ�;`i9 +�:������>LMH +�$��3ȋ�I9�j�����.AObK_�0�,����0��L�9���MXD ��}#<� +��˘w��V�1�'��##g�$'�f���:�}�@�D�G�X��(4�&�~&�@W�ta��z�Ը��}���p���A_��kG�#�6>�A +�f�����2J�mh��2�؉����:@EY��{�m �Ɍ���@wB �J'UcZ��Z7�N���TvB�0T����ܵ�����} +ok*>����fZ�h'�K�1֏�ꨱvۘ��۷e=�p�.O�`���@��9�H,� ��ul�A�m$pI�Fc<%���&(I�*8і�� +������{/�%�AAo���>o�,�jv����Z��k-8M��Y�M��Qr,^���\�8e����j�&G#�m�ƨw� +]>�?���L�b�ӏ��q<�Ñ���ԍ��B��!TM3� "��>ZY�34*�q�g�7h�eh�y��O�E��o�e�曉��nλ�#qI�ur���$4�Mme���C�F� +/Ƈ��8^�ʖ�_k���?�/�x���x�7֜�e����z]���{�w�Y/S|��czp�Q�ބ�'�1b��3Ja\<>x̹ 8|y��`ž�o�&�;��z�Χ��o�� +�espD��[I)���� +�u��)��k�Q+ϺE��(>er<��'0�N����2�G^����ԁ��9�j�qUu4LF4q�tX��( �q�Td �����,�5ٟ%��t�Ѣ9���7r������mΠ����������f�_�H�8Z�p�-���FQ�_�p��=��FT�X�� +{�G;�,����.�]O��!JڦŒ���h;�RcpGʹ�l���Hm�~v4�����u^�l�ߔ�rV����d]������{=O�D��v�bNP4���ƯgIJ�'; N�B�.GmX�\�/D� Q�C�����U�+��{�9dY"���c Lk���a�-T���M��KI ��J�hD�ϻgZ(��U��A3s���e}X�4�qL!�z���Rcx=�%��� �m�a��̕���������Q������Xq���@U3��PM\��-��4\��.~RG�����i}Qa�,�{��o)dU��l�)��GY\�`MK�kw_r֙Ն:g��=~6�NM_�6���B�ŭ>�i����/�a �� +G�Q,���g��L<�ݙ¢����d������Y�SHc���q��`z�r�ў��s6�沶rI,ƚ���E���yD1��X@�2�I1=IV���4�����n�TD��H�J�w���:���i��q�Ƹuo8�9�o�H�� +���mv�r�� +�#�����a�.J��xz=�~�P�o���x�zA�Z�u�J�FYE��M;�?�9���u�Z�sa�"��:���T!��t��#°d���5"D{��*p�z���������, +endstream +endobj +87 0 obj +<< +/Type /Page +/Parent 1496 0 R +/Resources 88 0 R +/Contents 89 0 R +/CropBox [ 8 0 603 792 ] +/B [ 251 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +88 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +89 0 obj +<< /Length 1033 /Filter /FlateDecode >> +stream +H��Vێ�6}�W�*b�wQy�[�Ictէ \�v�ʲaɻؿd��N[���8<sf�.�d^1T��Q��Hs"$�PI*����ըl�c�ڲI��2�iJ(�*ʄ��!���,�eX�ߋ����gf`gq^υ}��q����n�j��4ɰmV��/����w�v(�d�!����Le��zw��,�E������g��W1����;���/�}J=�r��C���G���a�Å��-��_� '���+R���HK���$b�%7E���f� 0B +���`�����uB�c���D�WAR4# +`�&�vrmz@t,N�G���P�gј�oxy��]:S\£h� �X���!Yd�W�έ����5�$wq7�c�yc8���<��g��h�鼪m�zzN9�hj�1�X������Ζئ�2�P%� +�Sɵmxغp����VM��BU�:p��a]�m7� 2�6�����XF�Ms�k���udz*}�)�L�9�������;Zj$��V��OI�B��Aj p�N��(P�@�$�[��MWA���LB���4��`�R�<_���@? ۢ�[C���E퀈��O�β�K�D.z�l���n����Ui�jל�i�1��BF�M1��t��Gt[F� +��j��1���,Vh�KVB��\����G����~�9�����y�D���{���_�(rJشJŤ�= -�AK.}k���Zh�tv�Z��(�� +��]��|Gi^��nW;۠{[��*�N�A?��!hH(RT�hy^WAV3��(h��V�ŝ���{�(�L�hv8F�>��Pj=Nᩚ����608gW>�7�~V��;���>�G9�U��σ��8)$�tp-m��'Y+~�����T�݄��I)�;�AX"��6���_[gX�r������C�V�N����[��!�اnXC��x���O�P"�|n/��?B���ᠷ�JQs�t]�zՆ\��<x�8|{�#��c� +endstream +endobj +90 0 obj +<< +/Type /Page +/Parent 1496 0 R +/Resources 91 0 R +/Contents 92 0 R +/CropBox [ 8 0 603 792 ] +/B [ 252 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +91 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +92 0 obj +<< /Length 1057 /Filter /FlateDecode >> +stream +H��VMS�6��Wh)w�oK��2}S�c���86c(��W��^�X��L����s�=�i�:* +�*6+�(�Y�9 C�����٠Q9�34����+�n�%�� +�j +K-9*�V������Z�]��N�iAe�Wq���l���팧�w�rm��/OQ��$�_��7�1�8�p��B>Ch� �mŝG���6`�L"pKD.�KG:4�`�VY����%�$]�J)M�A9ˉP��h؎y�w^�h|8H*sOr����p���@�_.b��� +"�� Ԁ|�����Nc���?bujaXp�Cu��<�؝U1��k��g�0<�u��������I +�ET�PŒ�AЭ��Հ���1"�������Af�3�x�Fx�'4f�ew����?���%;�f��I.���O��?\���S�ު����ٳ���W}&�����{�t��O��/����$��wϙ"���0�����&�����������W�&���ٳ��y�d����[����bTձ<˳�@٩_� �e�Tj'OPu�����w�o������k���%�&�*���M6�����wu;����;hzi4�J̀<�;:y5�|�;����$$��N���$�b��.a0��o��)�$zW��R�u�XC]��Z��?W��Ey?��$��&��i&+��[_�6Ń�lƵZ8'��t������>�[���}Yoj��t�� +$�w����������yFWe���$.*Ժ`V����>BAL.���?�����8�t|����w�̂��3w�(��)({��2m�c�����/�N��+Lxx2H��/��� +'r�S����G1���c�)5����OWW�.�N=\ԭk>�R=�g��O���E��y�`����(z���� +ym� �7���=��OX��p5`�?�!�4:�)Q�"����tk��7�_|㷾��+���0 �c�M�|��|����%=9�ntq��M�8l +GC������5���61 �n���g�+���F�������*�� +endstream +endobj +93 0 obj +<< +/Type /Page +/Parent 1496 0 R +/Resources 94 0 R +/Contents 95 0 R +/CropBox [ 8 0 603 792 ] +/B [ 253 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +94 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +95 0 obj +<< /Length 998 /Filter /FlateDecode >> +stream +H��VMo�8��W����~���[����6XkOE�L�Z�T �ɦ�~IYVR#I�]�([��=�Nʒ�r@�S��D� rBS*��F'�VAm��lm��ߗnmD �*���(��ט/�E��[y�U@f9�,?���_�P�0�Jն[���"Y\��u���Iȸ[7��Ʌ3� Lfm��#�eu_���<{��P��sJ���1���=���q� 'E|�'��� +�G��b��B�V��ݤ� +(H���(X����o�c:���;�(#l����,́Ӝ�S%�^G�z`���D � $��ANi;CD� +?b8!KAeșS�y���#CR!�q� #)\�d!P߰�V{��(�N��S�4�T��E6a�YZ�z[��IR��:Y��l����3��=(�H���Y L%��=��o��Dl�+0O�$ +������U[7F��1c�8�TR��?�b�������[ +�;]7릮��3�m��"'�� +��f|cB�vm��:$���a�Si[��d�ɘ��C�.>|9?=ujNO�Ut����N^2�g�����x�/�ԛ��E~�Ȥ��e�����>o��&��CR^�I��<}��_��M���F���R4O������ƾ��C_��S}0Q��Ŕ�lJ��6�u]�+�U�Ә������� +��{p���R@c��y�*\��Lr�W�7�D��G)�|���D��~� +� +���E������I�w3�;������z����O�h�M�\qu\L�&1�E��1U�Z��?�o�yC�?���`4v���/��U*Գ%���^wL�d�����e֯�ƶ�YNR9ے'������w]�z��`�����06k +���uTlX�>_�$��4H.QQ�⮤p{�s�7���-����r��|:����90����j}���'�����!cN�u�W8O���U���c!,s��1��î7p��\�u�*��1"[�̌_ �G��9�� +endstream +endobj +96 0 obj +<< +/Type /Page +/Parent 1496 0 R +/Resources 97 0 R +/Contents 98 0 R +/CropBox [ 8 0 603 792 ] +/B [ 254 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +97 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +98 0 obj +<< /Length 1053 /Filter /FlateDecode >> +stream +H��VMs�6��W�v"� |�W:�ԍ����"A2[�Ԑ�=��}H���TI��A�H.��۷�e1;+ +�*V3�(|,Ҝ�DN�����U�Ѣ��j�������J�B�b6���/�G��n��\��l�q�~ Nӂ���6���Lvq툧L»u��j�nn/Q6���z�7�9�8�p����Z&����ɣ�v�;� +�^n�0B�t�C +�s�Ni[b�K\)��ȑa�em���1��3o�ʜÝ�(��$\" ,P�g��X�4���&�A����O�]3�:Q�+�)1i���' +æPK�R"�PI`B��ܻ�m}�A��������:�DK +��;l�ը�#~�[Wue��E6���Fn;����bXh~sD�T�������0D�'#ע�_��_��J���cS�#b�n0Ư���x�wk�v~Q�ʅ�ʺ"�i�lN�A������7�W��H��w>-��ra@8��S�R9%\M���s����<�t~M +��m�H���#��a +*�����%(�����o����]c#�S��A��$�r��7Q�н�+}�g��HN�~@��.ۏe�6ǕP4gD��~�<�u��B�n��`�e4L�F/OP�oPp�.�*�!a��-*3 +�mß��U��D�I +=�� �f���~�:�����`�% +��"�v��������o�Y���Q�4��C�nck�ab��3A�"���*��0��ė�nߡ�����Mu}���Ls�(��&D�A83)�ڮqeՁ\��}�j�����ś���I-���+��>!��4�5�h')�� �x��ӊ��d�Ӝ�:?��Tx�?�i���~�ܔ��C���������9��]"�������3�(���x�~-��9��Ȃ��w�Yv��&���r��0��-��OJf&�4�~ ��DG!DeBg�`��z]Ƴ�b_��J�A���i���B�K��5�IJ�u��;8oY��TCH[FkQ���Nރ���٬� +endstream +endobj +99 0 obj +<< +/Type /Page +/Parent 1496 0 R +/Resources 102 0 R +/Contents 103 0 R +/CropBox [ 8 0 603 792 ] +/Annots [ 100 0 R 101 0 R ] +/B [ 255 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +100 0 obj +<< +/Dest (G5.519536) +/Type /Annot +/Subtype /Link +/Rect [ 292 214 335 226 ] +/Border [ 0 0 0 ] +>> +endobj +101 0 obj +<< +/Dest (G5.519574) +/Type /Annot +/Subtype /Link +/Rect [ 224 295 393 306 ] +/Border [ 0 0 0 ] +>> +endobj +102 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT4 1545 0 R /TT6 234 0 R /TT8 244 0 R /TT10 250 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +103 0 obj +<< /Length 2128 /Filter /FlateDecode >> +stream +H��W�r��}�W�#����a��ZY�Vo\K�k(���E@v���oN�%J�]�KU"����>}�t��rv�\*&��zV1���Yŵa���͖���Egٺ�%�����?��t3����-�3���g25��.+�?��d�˲������J��9� +g���jw��[��-w�j�a���'{��p���Ͷfޤ���ZO� +� +�]�h�r�i���ϗo��'�K~ň�ઘ���${.�{��u�x�]�y�Mv� +���2����q��-�c*^�?� v�q#��b1S������L2ᖕ�>k.J�D�K���bm=�� o��Y�5�j.Y!G4�ɔa���2:$����<��q�+�=�.�kd��z��� +������ˬ�|��� +�C�Xh>�Sj���s�]uE;�D���V�2�D�X�=X�_��`ݱ���s��H^�i!c"W� +����m��5�}���y:4W }�����n��D痹3���]��ɋ��ѕ��� +���@'��0i�U0�7����YO�;�>���z�G_�\Q�\M37��Dڷ�f�#_&�����+]���d0������Dm=�㟤WKVh�K'�q��@p��sT��}����awh�n�nXU(��Mŕ:Dv�@�"��mss��̠T�u>W��9��B5[p;�3��ԓ�U(<Iԙ�k�`��yd�Ѻ�jH��G��BiO��c"��i�[��u���p�n���?/s$%��~�2�%�����a����7u�*�HTv�U7�l��W�vQ�V��Ywg���v����Da��Q*(��3�+ZFi+ґh��G���y#W��8K%��=��ۺ��K�A +��26��tz����1=դ�.WЂ*��I$�\D�� +v@! +�ZВ{$P� +�oagN�5{F�ok��?�m�!�:(�߆.gNWh��WEU<�>�=��G��U::R�)Q�wu{��_ͽT7��d����ݔ^(R�^�֓̾�t)P��?:q� �N_f��?��>�JEs��$f�����o|��Gg_�3�t��?:Q���j��27�*�nK|Y]��%ꀘ�u��J�a�m}���:6�Qf+w��KZa�Kz���%1����t�%��C�0L��9Uf�[����6x�F�����(k���~�7ܯ��:�@�m��Wi�#>Q8��2���/�"��߱/# +�������谓i�UJfJ��Zq�F�&0J���F����F����W�y��GF��>�j��}�C� +�6c���2�U40p�ws��N\�&N�R�hН���?Ȳ�}��T)"��;&�K*Z��S^R���i D�Ԛ�Gl����0 �襑�b�24rx���V�^��ҫ�����)�����x_��vX$��hʂ���2�b@>����a����i���4���@Z[��s��!��q��*���C�i�m��#�q=�����1�X'��|��� +�{�6�B�#KY���I��"V����W�v�Þ�����)A���x�f܃���hX�m����D +Jp�&�Ux�^vO}�Qd��B���w��,ĭ4ş��R *@RFH���6����h耆h���R&�_����$ +�I�E;��@�i�����d,y6*���;���z,cWX*]E��XX�.� +��N�B��%���0�ر/��F���',|{�=��d�q�J�ܖ�cU�3 +;^ 5��T��#}Y�0���N@L�y���W��2��eh�0a�0���Rea���t���7T���$�f������c80�� +l(�e��Y���fP^�/���q��#>X%t��Z��_r�i!�"6�Z��".���dod텬>���A���+��Q�24r��t+��im�zܛ�.h�3�����i+d\��p蒂��|X͞�?�����qm�3�*�wZ�m}g7 +���vj�?߬KG�b�~��y��� +�x�8�5&LJȭ}����uz4��N�K �@�:�h�I����^�y�-��� +��&��˓Ѱ�����}�GP��Ÿ#l�XـU�F�u<t +���� +W9�^ +endstream +endobj +104 0 obj +<< +/Type /Page +/Parent 1497 0 R +/Resources 105 0 R +/Contents 106 0 R +/CropBox [ 8 0 603 792 ] +/B [ 256 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +105 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R /TT10 250 0 R /TT12 257 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +106 0 obj +<< /Length 1904 /Filter /FlateDecode >> +stream +H��W�n�F}�W�#�F����o��0�6��D�$$�@�3{�.V-�\�rv�̙3÷����B1�g +��0��6L.��l����[q[�a�����N�O�Lp!�e��l�Gg[|�}�~�������P��\U�>-��A����-��������h���Y��ݶO-kw+vs���s�}��a�m�+�4\9�,�Ʉ3�D~m�c�ڻnl�d�8�AP +�^�-�d�R�^|9v��MH��'kׁy鹶MC� z�R���b&�a�(+���[f���08�Y��`�Ɍ�l4��Ms_����U����;Ņ�$�&�7�i�O.�K) )ɣ����yU�֊7�Y��qW���l��Ha��Mf�!�x�6�ԯ?����&�;"Ss�_U�nˏo'k>[C�깩��O\2բv +���O�M�)=dgM���gg�4żl���f�*�}۷[�57����!`^�s��؛�o��;4�"��-�1SR5�ct�穭���z�x���ھ���ժ�{ò_ߧ`?57y����z���S +�H����t[^#S�F� +�!sULD�O%ؑ��Pv����۶�q +U��@b8��e�M��1�~ +�%�oo�#[����ۑ�W.����;jI�(d3��e=|���J;�ϵ%�q��i���Z6�㏏xl��=|�uݺgu���z��;�B���������n6{v�L���Ƈ۵�"Um��(7G(���������1�� +5kR�FėE���"i����[��m��>������r�<����v�w���V~��B����I���G�e?�"1D��j�/�HN�H&���6�(� +�,�q�w�P�s�'�.�gQk ](�x.H�Dh�zu��"�/j:��U����\ï�2��kP��;'a��[2�k�@�����n��T��J�FRܑ�Y����N��L��c��v��ء�^X124�㏈��k���ɋ�yT��U��~s֞Uy;=I����mP��L��:7���d)�^�}�����N=�����Ū'v�II#��Z�d���V��l����}~H��_���sC�9��� � +�o�+Ғ�lc�9�NT�c�FY*� +*Ȣ;L1HT�i����:F������b����7��ޱ �»k6�>��cQ�Ȗ���๏��[� = �ЋD:�u����AN�#������yR@��D�����,�Q�P_�졥��� +�%�)G�V�<��\i��0>i#MI������2hF�u���U:�危�g��$6��r���vv��]�b�y�bؚ�x +��y.�%�4lM�3H�<���ϣ>G��������Tt5;�D>bP�����c��+Q��&�f�JXe��d.��A㶍����ǭ��.D��3R.%��T��yy�`%�`�"�������^�����5E��9��.gM�G���|��Ν��TxFF���*�>��Q�ʥ@ih#U�ȚJsm��v�����ɔ|B��!���H�=Ӕ�n��63����/��m�ҥ�63m���vZn2BI�Nߤ�N9 �)5X8Z�]t��tW*���ݛ�t��)|mX�f�#1�& +�b�>�����N� +&���K��h^��V7��X�O�(`{�����'�^*.My)�ړ����Q6"�����Ԃ��̔���� Ǽ:���d���� )���a��g!1��,��ӻ��x7.˦6�4%Qt{BX�3��9F��)R��^/+�n�s�>�,�Zѧ$粤&��N{� +�lL +$|sy� �Ӟ}��>��<$�")A�dd '��O;ąn�La�<֔�(��1�=�K~���n�ᡂOXIo`Z��i=��?lfGf +endstream +endobj +107 0 obj +<< +/Type /Page +/Parent 1497 0 R +/Resources 108 0 R +/Contents 109 0 R +/CropBox [ 8 0 603 792 ] +/B [ 258 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +108 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R /TT10 250 0 R /TT12 257 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +109 0 obj +<< /Length 2023 /Filter /FlateDecode >> +stream +H��WMo�6����j�4�DIEQ �ݢF��zrzPv����$�����j�v�P��%5|�f���]9;+K�+og��+���Xfr!�4�����;��_V�[lgg�\+��fRH�2V.f�������<�J&�Wd��*ǫ��_�?ǭs�u_mv�z͒���K����c�E�w�ͺfޤR"7�L����,X�ݵ��U�P12vy�� +{PB�WtYK�Ӊ9��`/����:Ѣ���$��W����g�_d�� +\���P�"���q�2aA�Y�:)��]�3�T�[F`6B�L�\�������v&�a��0�j�b���&��m�|��H�������,��Gz�t�1|ܯ�O�z8���p�d�*��B�M}�2<v!��f8)�Ef��$��$�./~?���_�_&.�O���W�Ѕp'�1�N�������}~"���)g�8��?V��U�|T�k���|�����0E�}Sw�E��؝!�1/���G�몇������ +�����~ �Ea�"�Y�E��? + (�d^����.�ʻ�'��q4�s��U=��xg�[��t�'��8��w4K�NQG�p�۶��JRC0�0�}���.�^T}uX~�����ы��������u��d��NQ�Rk!��*9UB����j�=������:j�kZ�A���ۘb�����S��ə)lLАbA!�B��.��$s!�5�,狶���6�N���Vdy�d1�K5hV���9�X� �5$qN��:�N�;hw���b'`@��FOd�q�q��oR�}����"� %z 4�)Haf���-���2�� +���\��+o��� Þ�ʧ[s��9���[��RȰ��2[j+�nW�(`bK�;ζ=C�T�'#k�,q�G���� +u�w~��~:c!�>Y~��͢�R�����=�5�;:`�&����Ș���j�E�It^+��m_����j0�`:�W��j�}���o�f"�yqh��2�����ׯ�(������� y槇~Ǡ��x�G��"6e�t�{��r��}�M��1D��������B0�)�<��%�)'x@��^� 6ەNHقbK�Þ�Z��O\�%|��C\��}[��2��}HQȃ.0&�"Sp��,k(iձ�z��+pƞ��R��kPţ�$EL+0��M�*��q�����f?F�_3�5��>� +5v���)>{�����/ɖ8�a�(��8C���,K�Nxg�0ʗ!]ѯ��)aC��$�#C�Iy�E�(Ǡ��]�j�_;�!����P���Ż�&��u;rq[t�7 +���h<ca�L�]�O�F7��o `�8ز4ָ((�a63�U~� Z�&�i"ɱ�� �PN:�td�3��"��9F%�B�F��!�@�������)��W)w'�m�r(��r�/A���{��qyǬC���8b�D�#�q1����� +��0��� +�?3 +��,c9� +�@y(7-���F���#-�f2�+�����pς���E p���6�q��� Ɓ����#��c<ʗa�3d7\�B���h袤|��)D_.����͚����!�4^���{3,���uu��,*��&����iY&�������>�\������})N���)|*rr?��zָ�?����p�3�(�4�x!����s��g�ka�F�x ��wZQ/���Z�qM��������*�1��9_Чo*���5���H�=�WK#�2h&�4ǯ�U)��(E�֖?Ž?M9� <����Z�@�䌹��at_��q��)-������!LO ����.c�����!u��!�NG�(u�G�a�E������`K��F7ã��t"oGk�7trj�{-�d��'�>�2���������|4����k�f��_U����!ɩ#ŧ2|�%�a�R�{�#�p�d��̰��L�4��@f||���5ڋt���D�Ol����M +endstream +endobj +110 0 obj +<< +/Type /Page +/Parent 1497 0 R +/Resources 111 0 R +/Contents 112 0 R +/CropBox [ 8 0 603 792 ] +/B [ 259 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +111 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT10 250 0 R /TT12 257 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +112 0 obj +<< /Length 2567 /Filter /FlateDecode >> +stream +H��W]o�}篘��6\���E�Zq�(u@D_�<P-�!)�������;������k�wv��q�ɛ�L%f&���� �c� ��҈�z��j�����J��7�7��Q�q7���������j1�:��~\�m?�Sׄj^Ou��_���A����5�����c���aW�sm��z�e.��������i��O���o����};ء-[x�H��>.��~���i�$9A���7[�i=m+U[����wM���9ߘ Z�6�u9Q�N��g�&�fɋɕ��X�'�������.&�W��qՙ��id�C6w:�{;�`��G���lZ+|�VK!�C�M)��kL +�4���o߭��f�.��Zz��l�*�֚�6*n-�L[Ӗ�kT����:����ծ��S������U\�����U���F��+�lZ�^3>��sm(�Sȧ�@�zڈ<?������%�߉��ӗ��bǛ�vӼN�Mo��r���q!�O�AW��n���\lw�q>������|��jT�`&��3}j�u�C��j�{S�Ŭn}�o�'ϋ]��T�):r�u�W'9 T���T���PM,�De��q�(��f(�u)�����y����i��X�#i�Q%��i�2h��˝xX���@��˻a��j��>�l�����z�_~Y�B��Vux�� [m�#��-�����c�*��0��H�qZ�rfq�J.^SrE�����rs�J��$���>?��X�����ң�Z?���f�K���! �����:|�A~ +�CB$X�I��n��1@��\�jp��O�TR|J����W)��R@���AخQ�%GV���8�%�*��«H�l�V`�l�=�R��遮^�G�.�/u���JoW�2� +9���7ȁw%���F�R�F�l�L�l�%�n���m��\�����C������n�Pn���OB�G�I*��'�mA�!s�("��"�)Ff��'ش�� +��2A�6��� +m$�㲞NJ�pE�_{ +��D��.�-2`�8Cf�E�/j� ��oBKl%h�htSnG�j-�e-)�:��ǻ�<L��W(��" +���lhI����_�N��]1J��R�8O��(B��1G*.=V\��qf�:��l���zB�˯w��s���ӏ!%b RaV��,�Ԯ���hK��L#�X��`H� +3���3vS�u�\���Kڈ3���B��h��^Ϲ�K9*����U>:���hk� Ŝ�h�%ӵ���}������_0@ Q��l�q��x�/M� ����1��Aڒ*�oK�F�P�������j4��y���TT�D�c���G���� +��b�TC�p�:/GGE(�_kJ�/h�Z-s)��: ��?=>C%�]xB���m����1�3��]���L��j��>19K�Ŷ�Z�Y���j��d�t���F�jZs}ֱ_���(� ��6��x ����$�MҰ�&#�hgcq� +���R�=�ƪ@��q6��SR�}��(��3�{2�sIԌ%�8K�T�qȉ��<j�P���yJ�����ym�� +�-�H�y$[�J:9�'��G�!~��S:����@ة_I�k��@�n;�O�����~M𡙖kR�ǖd��7m�x=�A���t=�Ω-�Jǵu�密�����D�>����c���>�b��CPVu ��`�X�l�4�b�G���)�B���A�-%�E_���f,GC +�.�j��˘$1�����Ӊ&�r(1(�u��O�h��� �[ԬF]xj���m�L���)�n��������K ��0�t���q|�Uh�P�̥���dT�a�$�t��߮� �T� T�Gf#;�8Ԩ<�������t[��_���w0���#GYM�>Oy8r�c#�!,���p�����`<nV|{{9�`����'Xc�W�J5Tx<�9���i +�Zh�C�*�0�~^��U��U���#Sߟ�s~��v$ +�����t�C���O��U��ַ�"��u���"�jF0��E�X�'�klL�Dij^�e�q&�c�e&�Q�mL�ďh�R��w#˿S@KBY��Z�Շ�p�~��%/�>H�� |�d�NH�q/Ѝ�D¢�Y'T̩p�B��q��v>�rqjd��>%b�����i$��ɖ�F�!ߣIL{K��=_1K�|����'��叆=��L�=O������xQQ���0Ժ�=��~�+�:�̴��٠�~i���G�#��!�m���W�̴<���WK�_�-�{�uS�B�a�t��YLw+�L����D%�H�6��Oj�āgT��c�5�m�F' ��RH@��@��P1$+����W�G84��M�!��(߶q��C-Y��%xs��@����E������z�F$���睩!..�q�1��'��=ŋډ�p ~IW��-A��0�b�/��^Ը�?�F�ҳ�~��md�7"�hzy� +n#gs2��p����:�g�q]��O���.��W��H�s�����r��4 +endstream +endobj +113 0 obj +<< +/Type /Page +/Parent 1497 0 R +/Resources 114 0 R +/Contents 115 0 R +/CropBox [ 8 0 603 792 ] +/B [ 260 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +114 0 obj +<< +/ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT10 250 0 R /TT12 257 0 R >> +/XObject << /Im2 261 0 R /Im3 262 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R /Cs10 263 0 R >> +>> +endobj +115 0 obj +<< /Length 1543 /Filter /FlateDecode >> +stream +H��V�n�F}�W�㲨6�;�G;NQ�RX} +�@Q��T�T��ѿ��%I��;{�̙���V+�$[�,jV�fN m��DiJ�V�Ż�ѱvf��vX���Z��qQ��t���E�V���\-���R_V���Eײ������ִ�G�⡫njv�M�e�� ϛa�����}:@a����v,��RTZ�o�3룷��1��lF�..�~fR�,�J!�R({�N*�����CA�B�������7�������S8V��%���H`x�{酑X��rf��b�uq�ZH&߲�B�e�TY���U��-nepL�\)4�j!�-�@4�d����#<I +�@�(��H���J�bii�*��1��ŢJG��vQ.�����*�����| ����X*p��\)�^d� +���J��T��>>!��`�!㱀^���3�����m������x��tױ�����~�e���b�EQz�P��O�2�,�O�LS����~}��i-�� ɛ�8��@W��F<H~_ S���m���}��2߾�Ȫ����Jjm����z6[ܦ�p��I��&֏���Us<Rgg��~h�����j��ö���G�R�6��2(�W� ��IءB�[HMB;�BȊ��aꎇc?v�j��k���]�2�̷���N��gb�I�ws���w�nr5l?�|@x�k���}�����j�����M7��~ +ښ������a�?vc�?ݓҚ�>K����v(5��0�<��=�[ʪ�l +�ߏ�g������4�Ii6j�{����� +ʗ놜5�öo��!���@͔C� pr�o���J�4� �d�C��؍"z~��$�c����=8Aë�e�VF�J4�0�h:�_cd!�>��]b�����#�%�b���l��=[(�8s\ѼZ��"�?�V ��Yq:+�I�s�`@����L���d ~�i�t�w��@��Yh��E~��j����u-$AT���0f����F��F���o*og��^�J�����T�m�����g���UO*�կ���q��|�F_�|r +[���^�πaaI:މ:��i��v +YI�����K��N�<�m���ʊ�6�k��p�A��H^��s��Y��KXOR�^��q(*�����P"�a]��G�@�3JQ�̨d��@5[%��h�T#!ݧ�)�AmBt5� +YY�e���l`V%�,�o���p�IҪ����6�f9'X���Ąj�F|�U�X��^�W#J��*D����P)F����)_&/J��~�j���(g�Z��D���6_>�h����e��I��W�' +Իq߉��M�⪣Z�1�s�X�]~����s@�����P�j +�.��6�n<�L%�V�U-��O��E�٨���:=�K�PUX`�o�I�2̧p�Qc��4�K�ã��b��o�]^;j���[�S��hh��mbN&9���-tY +�J������7��/��l��r��@�v���ٮ�;UY��y��|H��X�W'g��(���6[ +endstream +endobj +116 0 obj +<< +/Type /Page +/Parent 1497 0 R +/Resources 117 0 R +/Contents 118 0 R +/CropBox [ 8 0 603 792 ] +/B [ 265 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +117 0 obj +<< +/ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R /TT10 250 0 R /TT12 257 0 R >> +/XObject << /Im2 261 0 R /Im3 262 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R /Cs10 263 0 R >> +>> +endobj +118 0 obj +<< /Length 2516 /Filter /FlateDecode >> +stream +H��WMs�8��W�HfV�I�v�[qU2�k�\s�eƣ�DiIfR����P�,)>LM�\e��h�~��q���],�Pb�eV��Zx]+LUH+�Xlfo�/�+1,����*�8�d!e��b9���[-�gw�?���[>wE�5�\g�SxZ�i��7��{+ۋ�l�6�A��44��ć�+��}Qf���zx'����V|�ب����Z��悹��w}� +��r� +� �Wm� +�S;62����hx��ٛ�lV��Lϕ�_�Sؗ��'�|a*Q��0�� TI�3M�>,f�'�@_k�ԅN�B[���� +#�jC�T��`��J���a��b���?�{r����kUҦt"E�e@�P�M�>媰Y���G�M,��3Mj�y�g���"V��}n(V-QB�9ENg��0w��d�Gk�e�Ut��}���K�,�ҕ�%nE#tl2r��j�Juc�e�j|MߊL�oŦYub{��]V��7��5��ɪ���Ӯėm/���n۵XVg� V�ݺݴ��>�o� +;z�����Q���\!�崍I�����0a��)�~���M]������o�)=@�C&;:f�HB��@����$�C�ŗ~���+Ds?�}�����" +;�ݍb�n��o�L;:�8��"��ǩjp��R�Pː��5&JӹPP�@]��h����)�i�+[Ⱥ�h$ݔ�ĠMӍ!/�����pD������sSO���d7W70���-\�F"�$V�1S��v<1e��F�3���_!���� �s�&�a�C�� +_��n�B)#�Wℤ�{�d��*I����I�.�Vowmxx]C,���k�SUa̋�f +�����w��� A�컪�B�^��w�,�~��!e�K�)ҝC�ʽ{�j��mۨ�{���VօǏ�Qs�p��_B۹�R���;�]hq{��o��U���;�'>��ߤx�ڕ@�W���IP�'��5}��+*8���Xe��R���W��R��������P2���$�嘙��زF�� +$ +�Fg��K�=�<���rhE���������ϫ��$ִX�E�����v��Ù���lj����HϑQ5$��($[N�O;�Yۨ�9j2��d��� +�H�WM�A�ʺ!�(��j�k:�.~@�C��b5�,i^�봶�� �s��J��b���Y��gXUV:aU1��Bq�O���'Og�s$���!��[�/t�Խ`�?0�u�ܱ�s`�C���~�,��E�g#Q�{�lB̘�pHuF�Xg�z��d;Ы��G��LZ�G.9r���!E��H8�eh�LW�/���� �瑑2��rJ<GO +8��p�������C��>�,'�X���s�`�:`bSe )G +U������G`��j���:e�X�V�i�SG�2E� �_��K�ɍ!4U"!�;�e�,����6�2�-��U-�4�Մ���.=?�Q<h +�=_���,T�!wALHV�s�<�%��/��L�Plɓ4��U� E���/��\ϡ��sg&���oЦ2hnX��\!8�~[Ʒ4=9_�#ڨ�%D�>&�u��d��49E!��Y�W��NU�̺Ӷ*� +��]��KS�fI��� +�+�lB��tu��� +-rE +m@3va�W�(�Ʋ6�E[C.��,���|}����d�Y�n���_s�j֔ԆY����Tõ��4�b�3��F%�)9��@d��E'� +$K� 3 +�'u�Mת�d�ۤ�[�&�y���%�%�UA�5WU��4�)̩�s��Ғ䑆��`3�֞@�@}мyk�!�<s�*�\zמ;/�O~x��;%s +��45]�s�B��aB<9�]����6�A�Ӡ#��g��wtq���Ԧ�=wۇ�>�A��2F8P�r8���9�@}�>G�٥>�D��t-Nmw|i��-���Z'����#�F�!8�hI�J�;{;0��a)X8 �O�/��<-f��/nޢV+CZ�ӴH +WU��*ҏ���,Rj_�tD���`�����B��:���*s�3ehjK=7,�t�;x}����d:��;��ʊ�.�b?�jЭ�1�%��� RI�����G�|9!ri:JluB�Rq/t�CH_��6SSN���M�5�k��������=�ӽ{䱇w�:��3��OjFԚ�+���Wt&4̒�>>s�p1�83Buu�4���w�/�<�H��yj2��٬�|��r��P��I��>�v�V,� +.�e��]0;Fx�hZ�����'��OiPs\UI4�E��� P�RU�[��{\��tu��M^I�;���y|�g�%fƋ��4�M*��K,'0�]_��By90i:���� ��$�¬���Gސw �玁��.ܡ�0O�0���5�U�Y���_�DuP6ˉið�[�:�ލ�'�d�Y��j?��\��8[_�SԢZ�{�����c��L�Q��>��<F��}P�t)�_��_�T��ewsT�(*�5�Z� +endstream +endobj +119 0 obj +<< +/Type /Page +/Parent 1497 0 R +/Resources 120 0 R +/Contents 121 0 R +/CropBox [ 8 0 603 792 ] +/B [ 266 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +120 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +121 0 obj +<< /Length 1731 /Filter /FlateDecode >> +stream +H��W�n�6}߯�#UX���� ���E�$ +��S�Y��2t�D�ٿ�̐��]7�Sa���rf��|�9�nC&�v�)XKC�,�E�v���sʪ�^K6W���+�n�M � �ض�l����C��3.c��%B�Z�t���/"�އ�45�>+]vC�Z����x����ϟ���+>�V1��R�Q��X���0Y���dvqy~���b�u9D���d/xق���6(/���D���4�{��q�O���~��(�(r@�21�d&b ���E����ns��H&m�e�l�D��0�E�`i�Imv����4�FB�$�x6Ź�윒�[�g]�A��Y&����"��o��4���ppҍ��=�$5���!�IJ\���Z��Ԍ�zt�)��H�0w�$24���*V+/�;�p�Zթ^��r>{~)a��pU��=ӷf%Sw��]i(����й��h��n91"�8�Ò�шטޜ�Wjbz���CS+����?�q����Uc�/���a���3�-0���nY�3xr~�{��ۚ5}�ރ%eo���;Ϗ�j����t0���s�ѷ��������FC�b0���c�������b���B�8�r�X5��}@Î֙��]��F(q��_@)d�!96���{5}�����K�b�cS�m��R|xB�z�(b�A_���`�D�x!�V�h�u��t��cӶ�n�-�Ͻ ԃ���@�K$���[�c�+5� +��f,=&w��, �zQO��});�Z �r�� +l�� +>�"@~�H1�Xs�9�˦7_����[Z6LڅZ�A� +�Q! ��h3���kH�Z�(c +� �S���0Ֆ��Gٍ�z��[���w�{�D��IK �)v�����J�=]A�����aF�x�J�U��X��160v�I)[6#5��W��AUS=�AX� +����j�*�c�ƀ����}>=��y�?X���]�]�o(�K����L��IŁID1hGeOݨ"ħ��:bթ����q�1F�&�tcT��)����T[j����R�'c5��EE�&k�T�g�k�t�B��ٵ�����v����s\�j�0ࡀ`���F��J��V�+]x~ +������8A�c�'���|�WG��z ���ijE��sU��/�*L��h����}�]O�ϴ ف�/f*�C��z�V��9=��Y$a��6W�[�%*6���ǎ�8�,�A: +�������� A:[? +Е�`�7�Z�5�*�<��^�#E[i���cH����è�g�aVѿ3S��X�yBO@OA��َ�Ldy�VqG���$V�_�X�8��ee'��;G�+G"��;c��� }��zeu���Q{��h7�����������Z횾!\���r�<GјUu?5zϦ�U��x�ҷC�@�[S�8��L6��k@���'t�:�����2�}1����DKڴ�eϛ�{:ii����<����V;H���5��Y��p}�[��G[j��s��N�U�L��5T�TY���@{.!�e�-{��m�cI���� +h�������Y��r:}O�8����+�L�h%f�5;�L-QoR��>��d���f�-kɊ�1Ju�u� � +�}���|x��R���_�Ke��ʅ�Yk�RE�*��6�@�X +I�Q�r�C�.Z;���$st��g!8��-lp�'v�]l7�N�c� +endstream +endobj +122 0 obj +<< +/Type /Page +/Parent 1497 0 R +/Resources 123 0 R +/Contents 124 0 R +/CropBox [ 8 0 603 792 ] +/B [ 267 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +123 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +124 0 obj +<< /Length 1572 /Filter /FlateDecode >> +stream +H��WMo�8��W�H1#R߹5M�h�n[��=��(�%A�����̐�e7��]H)�z�����v��^��l�Yḋ��B���������&f���%3E����dOf��O"�*K8ơb�����~�-#���[*��S�=�����m�ֶ�{uG�Y0��!�Yޔ���y�X$�S[���0��z��!P �ZzD�,ܠ���"�ʓ�h���:o���|�У.7 +��Ap�� �G@��2�V/�p2v)_t��X)Kd"�(�0�>���w�Z�tS�W +n*��� +8�^/�IW����BZS�2���wKuM�3����c��$~�%֙�<Ɩ+*SW�]]ؗ�f���=��ɱ��o�Y� �� +��(qY�29f����������;c�v]\R��D<Ɓ'�UBȟ��.�z����R +5sP�3n��"���8��(����)u��x?T�P�|���I�8nI�H�P�����|� t����B!�`�~3�(D�8�a����\�"��̹����X�f�6�*@b�������l��ꆶg��ֺn�'�ي�?OS�o�&����߷���[����_a�0��O��~�~w�O5�mO2�E�cӋ}u����z�������He4������h�Y�_�6�LC����B�E�k�Hl�|��98��2Ϭ�s���`V�����}�C_�w��w���J�z1�E��PA�N�$����mϕ ���]��m?��N�I:��5��.�#�3���Ű˱3���^uy��j�5��Р6}����Vm;��`gE*ʍ�����2b��8p���m`R䅆$}�o�q5O���E.OR�$��l�`�Џ�vo��n�w-���w�����Zzر}��KVW߬˙� �&�T�h�w�M�V�I0p��trd�%�2�Z� '���Vܐ�X>�����q�������1`#�,1v�p~�����{]%c�i�i�d]==WL���0�j,��;���r����K��p�2��G��ae�G0X�+Kl���u�&Jcc��-� +�|� 2���;e珥�U�D~�/[S����E�{�l�;W�2@��=9��+P{��Z�-UH�f�,��c��d��K��ͮ�>�4`�$5q,��;��e�AKZ��j�� ���nt�ߴ���o�o6�x's���:tw��㬧_2�U �L���C�,J���!�@$Ʌ�Ǜ��4���߹a������V�<�'K-����)����.�á�p+�QGL���/���$�����ɞ�0�g"/��w�}�Z��/���j�^��5���y�'����-W�� ���=������7��߫��w� +0��Pn)�B7�t"���F$4�Z�0IS�mI��a�0'!�G�:@8%3X@��m��vC�m�W^ -�N��#�Y��)E�E��MR�_=ay������� +��^�^�ж��vc[�ؐ�n���j�'�m�@ק��U]��2]�N� Գ(�I+ݤ��ӣ��g�[��(�� +&�����p�T +endstream +endobj +125 0 obj +<< +/Type /Page +/Parent 1497 0 R +/Resources 126 0 R +/Contents 127 0 R +/CropBox [ 8 0 603 792 ] +/B [ 268 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +126 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +127 0 obj +<< /Length 1294 /Filter /FlateDecode >> +stream +H��V�n�6��W�%Udh�z{'ia#/�*���5[�F�����|qI�Fvě"�G���8��{Q�ΪJ��j�*I�_I��qBq�E"b�v��7&���mI��Wg\K�5+���r�������S�h�3�E�TW:в���?_����Y.}ж� +�Q��x��~C}xO��V�lض�&)%/�8^��`iж�8�\�59�wW��ArAG�&���*]�I���#�AG���f�R���:��7g����p�ď[$OP��_!ƹ�y"�D��E�����]��$�x�2�1l��(H������Q��+�ݹL��1�����ؔ�Ov1%��Yȷ�P"s�dy�soB!}^٦5��>|�wڙu�����P�;�X|�2D��ӄ�Q���#����R��N�t�if�z[�}8M5��;m����B�|#���<ٻ�Rk����7zCv�o��nn}ă'*ɏ�";��Cg��y1{�x��l��{ήwu�]_Jf���>�m;�uG�AP�c�Dx&aCO��p,Z;niD&c�Ȱ�%�lQ����u���P}����%1Y[����R���&�y��3��cy'���]m�щ< ����,�S�KY�3���,\!.��U����ˍ�m�m��@ ���g�M3�{�i-� +�-N�''ɞ0�;���Ե6a}E��=�2-圖�Tn��)Yߌ�j2�7MW�-p����~l���u���$ +O�EV���f�Q��H�yb��IA_�Lg@%}�|<{=%㨚�x;|I�[�֔�:%�l� +�H�DMm�CyB���<f>�/s6N�KgӅ��zW#;�T9�'�����_8�c�^�d�����p�U7��д�8<�`�Q�pw�C�����_.�� ,�d,�ӥ�]�wd%�8l��Q�ci��ƫ#�v�գ�v ��s��E��:����5��N6^���K%E:��И��@�Mh��^�� +�����r�2t�r���B�����:q~>���N�3��:_&�j��`���а��c�y�>��liߩ�������/2J���(��/���C�6Z�ϵTf�l�j)8暺q٭��&�a�4�?�׳ӂG�)�Hf�'����09t�dN�--��,��ڟ1�)L~���v���:<�������N���"� �&"���OÉx:F�1�?;E�z��0�ERjB�a�\X��~��qz��J��;gr�lKٝ}W3���@�,,\����w�0��G��b���A|���چ:�B���P�h��D +endstream +endobj +128 0 obj +<< +/Type /Page +/Parent 1497 0 R +/Resources 129 0 R +/Contents 130 0 R +/CropBox [ 8 0 603 792 ] +/B [ 269 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +129 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +130 0 obj +<< /Length 927 /Filter /FlateDecode >> +stream +H��VMo�8��W̑Z@�%���bt[4�{�e6Qז�I��CR��t�h�=��73o�<{Y/.�Z��Ӣ�� +��R�,)SLB�[\\;��_spm����ý[0�X��n9�F ��w�]��Y�iI�,d|I X +����oBn�rs����X��$��橁����f YnhA� +�u�0]�V}�X�8A+�h:�y;��LSC��g!�/m�;xg}�Ї�&nVͥ<� 9/���i;ż��im�,������,<ODxnU/X<�E�����j�LQ���0���&�+�䒲i-i �E:��s-�b�\L�3a��((�U��9���8;R�x���6�n�n������x9��LN�Z���L�Ye����6\��ѹ,WT���r�l�W�`�sjXYM��,�#-ʔ�j��ؤ<m��v��s�{���v:�BfBy~@2m����Io�C2w�G�q�J�_�tŨ(�(x���W�%O��F|\�,û��1���v��r�Ҫ��9�K����.�I��v� �(� +��NYE˓Ny1 +N�^^�ގ�s��2�֟m;�����9� +��Q��0��PA:�,�Q��p)Wig�Ȍ���>4O�0"@g�y����î�;���5"� ��8ԟP�A~\��KM��G���GGB� ���>(� ��݀�۶�Ե���L*SR��ٰ�h�|Z�����ܶ�� �l�oB1���9S:���������D;Ʒ$����.8�k��\�("���]f}��nyLP��>4��ͽ=�(YHjN���#�Ȝ�}g��vR��l}���G��q[�l�+�WA�ik�ð +yj��崉"��������(/���8��?e;SI���ɖ��틒�����_���^H�?����ڈ���{�'���B� +endstream +endobj +131 0 obj +<< +/Type /Page +/Parent 1497 0 R +/Resources 133 0 R +/Contents 134 0 R +/CropBox [ 8 0 603 792 ] +/Annots [ 132 0 R ] +/B [ 270 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +132 0 obj +<< +/Dest (G5.519663) +/Type /Annot +/Subtype /Link +/Rect [ 62 243 405 254 ] +/Border [ 0 0 0 ] +>> +endobj +133 0 obj +<< +/ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R /TT10 250 0 R /TT12 257 0 R >> +/XObject << /Im2 261 0 R /Im3 262 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R /Cs10 263 0 R >> +>> +endobj +134 0 obj +<< /Length 3865 /Filter /FlateDecode >> +stream +H��W�n��}�W�# �8}a7���x����V��@˴��L:�<����Ω�n��)[�����bթS�������J,nf�����Ӆ)��,�����['�[~��v�����R���LR�J,�3)�f�3=��U�|����v���غ���kC��t.l���5��u���U�t���?�]�������պlR��cF�c� +�n�M����2v����� +)�_1d-mG�.��*��1'�\uv��mQf�M�}��*�d�m5~�|@]�>�W�JUE�p��b��ŗ��b���x��>�Bz��/��V�Ŧ���$�uNVM���U�h�S�ò3X4�|���Ҫ���J�3�fa +�ρP��s �OgY⊖�ɂ�.��T���Q�#���GX*|��Rr�|�ݜR�3�,1�p�G��Zbe4���W�"y��ڦp���~�x��n��ˮW����ۻ�?��8�v��a�ڶgm� �l��|u!u��l�.v6��s���\��UC�e�#n �k�m���6�X�ߊ�]��]GFl�\��q��W�m`�<��U���Oj`�$2�S���+Be�L[��|X�O�h��v�^Ж�c® +� � +k��d����6}w�v;����kn��f�l�۸j�S�{ +�fl9���g�_���J`T>:�9\)�*����:%ZF�����e�s��l�$��}�$�*���E���r�N���'q��Z��g�k��w��:@`t�n�={�,Fo��rG��1�?o`m�[� ���v�Y]�ܪKF����dW���r���'�ԅu +��¼����o��#HT�&[m��w��8�ʾ�-��)��se��������U��ں��~nh������K���x��&j�L�� +!���j�tѣ���E{�,�0s�ڠXʏl.u�b�D��b��՛v�v ��zbj��j +<>D��Ee�K�5��mR5��"����C���>��l���v�P�X�w�}z�߈�6"��r*��>?���4=�]T���U�ެaE�*Y;r5�n[l������"H�ۉ�� +IA�����k��[�5�o�]���:�B�KQ�5N���,C��e�� �>\ +�} +S����8� w_�Z|C����_���ޕ���,�ee�^���m��5h�d�$g��oiP�� u������K���cuAw��(R��-�nPb� +Ϳ��Hna&qɫ)$��;�(����������4��s_@mJ�fͦ�s�������5Zw���W��+_����@76J�ҵ��$2�y +LZ`�͕r�&PtM��a��vy�\绞�t�ܑH�����e�g��;�p��= �?�N��%�!� +N�=U�}f�*ecs� +�e�`N��[(B��+��L(T��!��|��q8�ĠO�DŽ�#q4�j�[�}�"_%����cˑ�`��Y`�z%9�0�E?��(�׳F�ע���4x�>\'�� +�|h����A�3��(H\hA|녰�1�<[925ܤ��b�l�K��H3�� +�8�B]x�ԭ�2(�7�-e4T蚈��{:�xk�d�D<�K��oo����@����_JI.Ǘ����E�KI��ĵKq����S�>�Z�%`ԩ*��[�ҡ�'ur�$��?C*Sh�5Q5q��R�,���[f� �CE���r�G]Q��:������]���tb^�xj�== �Jҁ�C�N���Yl�����x&��o#M��W��R]� +���i(�^�ޕ1��cH~L�]�K`0˒���ՖtGe���&w�r�,��Q�yhϘDM�۾�F�� ��ɉ6s��i� �83N�9M�s�U�����x�i-���&�M�ecm�����9㎢����iaU��Y�o���� +��9�N�y��D�A������cN�2�3t�� Q�L�T�ƫp�Ğ5&M����`x��_�æ��6�Np8���L/�W��v�<�w�LgLa&��,�v���ju +N(K��^���[b�&R����Q��-��nL��Ц�� +��T�8��З�eH)M:�bD�=vN��Bh�(nͽv^)RKj�$��+�h* +��@,t���r���wN�i/?�����qTn�M�(��t��Iո���%T��Ep���B�dx/,����zZI<�',�{BL�������{��+��h� +x��J�Լ���G���;���ʬ�F�'J��C�B�5���4���/����!$ǔX�'��O����1q"���GKK���t���=<ft�?��j~��r&&�<U>�ɀ��c5�W����Kڛ��Z�|�4 ����|��2&�C�P�/�p�O>PH +�z%���TFLZ>��,�:�8���A����\���h�F�M�s>���&g�?"v�s7��-N�о�O�{4�4?~/�?��qHo1�N�^�>��J�v�U���@5Aհ�p�13X���V9���.�pv�w=o�HD�0�.���ܳ�o��g?̓��B�[G==5���*���gjO�"�wo�7�aJ +1���eo�4LL���jl�q|jӀs��ۚ���� B1�tE��c���қ}��aʉ0}M�w���?e��0%1@,>���㬍��� +�8p�t|�n����WMo�0��+zL����8g�� +��qj�-j�-h%�=��|']��i���y�����:u� +�8%��Fؘ�ɓ�q�S& '`'S�ط�q�s}z1]Dmq��K�x����@��M�A�2{��Q&6?��[j����|����Ku|��X����c^��p��8,$%���� +[����4MU����2C>�٪��˱,����<��^���8�@K�Uӳ٦�����`It<���i������g��T�o�O��1�8c���5�#q�;Tj����s$�������U�|��U�ʇ��H�{��}j��\__��%Z��%��+�^J��B;�{}u��ҟ���L�%����e*���%��kH�'��̆�4���� +h[��IU��֭���a�@=���lb3P��������k�.f+��v0R��^���?J��tmq/y����R9Ca�$Yo;H��燐hM�D�C�X�qc�ot ,�w�'UkjM��%�Y�~�+����U��$5��pk1���~� +�R����kZp�]$���o(1�m��E�*��jZSY�he���q]� 둳#��ؑ�1g!z~��pw�t���I5�s��c3f���'0nP�)A52��8�.1�+�9f�(�<^R1�-��N�~��?�9^�+�̡92`~��0�I�q���Y�����`�0���q]:N�Qa^�R� � +�|.{@@�����-��k�bCU�k ;��u����Y��p^�>���B,#��d��G����W��Z�?ӘeXX +ذ��"���V�Y��Ja�-�9��DG��Զ�&o�PF�Nh%�2D/�I�� +^I��yJ��zf Q�s.��s$� ��M�'�Y:E��G���`���y +J��ϩ�8���r?� ����>*�X�k2�#����)�e��\�u+��GP��n�tu�AF�)���k����W�-�gd꘠�|�I�i��k����1/�h������ڦ����u+k���m���;��s����j��0�^��-,�.K-�|'���m����z�Tr��`S(����x� +n��<_UFu���qR��wMeڥ�A�A9;(�L���A��w�d+�,�J%��l���D� +endstream +endobj +135 0 obj +<< +/Type /Page +/Parent 1498 0 R +/Resources 136 0 R +/Contents 137 0 R +/CropBox [ 8 0 603 792 ] +/B [ 271 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +136 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +137 0 obj +<< /Length 1016 /Filter /FlateDecode >> +stream +H��VMo�6��W̑:��H��Չ[ �n�D==(6���M�[��I�R;5� �C��yo�ыjvUU8T���?��2YR�3 �nvu�kX������]����[?c��BA���q�sկ���>w��\ђ��\�n�6 XZ�<����u��5bW���#�Nxw��j��������Ү����a[}��t�c�b�V�h*�y۽t���4'����������.@���5�r���@"��dՏi9�b��W\)��,���ʘ@*����Ռ�ÁZd_<)��r*r��%tv������L.)+�֒���J�s��k9�J�N҆�`:ȫ��)�Cd,�#$��D���R��.�Q��;B�9լ4!���7�f�h����X����P�V��!Ʌ0J��s^�����Q_��kP�g�2����y\ +��jiR�ϊQ���������g�q�PG ���_�~{��8�N+�-rP%�e��1��̥�¾�(><�l���k���C��vsY�J��C� ���j��P�����<Y�����b��(�3�%N�!~þ����؋�Y�bjX�� u���������n�{x\%7h_lZ��ա���K��KM�iٓfY���\_�]_��'�$�?/"Wj=a�c"RJ�9�F�.�E�l����y�8X�e��Ms����"�a|;��)<��D���q5�������aܿ��24��D +�����ҡk����0���:����~�5/�i��dDy���}�Uoa=b���z��طQ�x�Q�m���?>��_=6�o!\��\��D=):�fb�ym7M�>ͮ"�����6�v�KS���_�ǽ����QN�7�01��9?����n +o;Ty�����L~|�C!�������C3����m��ff�t�ex#ކ]I��d�d1�����|�=M&8���^G�=2�Gʣ�A�@bNN���x!�1'_ç�s�#�EW��9�*�7��V#� +endstream +endobj +138 0 obj +<< +/Type /Page +/Parent 1498 0 R +/Resources 139 0 R +/Contents 140 0 R +/CropBox [ 8 0 603 792 ] +/B [ 272 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +139 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +140 0 obj +<< /Length 1087 /Filter /FlateDecode >> +stream +H��V�r�6��+�$;�7��*[�'��ٕ'���Rp�F��IQ�jk��X ���sϽ�H���!��:1���A�a.ט�Q�M��� +U�0MѾj��?�)��O&D娨��o�C��"O�>�ZEh�akq���/`�T��κrۭ�e��l���wo��>2��fcQ��k��m�yD��~��-��ȃ�n����4�Bf39��L�x���{�9،a�>���"}*��~��p!l3p�7�T����Q�8�9nAd2�����+Y EtЛ�9p�hĈ��V�Po�:!دSs@�"Ir�'��% B*�# +r�T�a���G@.ؐW�1����B`�.�l�c�z�L��#�G��IM>�A�Lso�e�L`�V6O�'�2#�0AY�s*'P�#m"i.�X����Ymʾ#�t-�jT�*���t[�+r8��e9�|A�K���0�h��G&�@�C�їnk�e"H��:�@�������<��*���8X������K���0W�`��͇�7o�"�ϝ���^�.)f3�f�HB���k��<��Ȏ���T#�#z��Q�%H}7±�s6xH?�A? Y�]c��� ���J��> +� p�"��B��i�˭��@���_�'�g�fL�s����'9���<���TN�����;[9ȈG8�c���;|�9x�UR�y˿��j"�H����MS7֛z;q�ml�Pf&WSG��r^H���>+Ӊ:������Hc9��W�?k��}tB���z�������K%�\>�!*�'Q��)r�q��u�� +q�?u�9��iڿ_ p<����¦}l��E���ez<t��n��;OS׳���؆����! +ǹI?�6� +��� 4�4� ��a�W�h�y������}�7;��e1e��&v�8U&��w�/�T�j,���S��wvS�������{�sQ٦��E��\]Ŭ��(�v��c�'��Z�'GK��YfM:x�]:Tu�+�v��B����HD��L����u��]/q ���#�rȩ��4���W� +_Y��_�' +endstream +endobj +141 0 obj +<< +/Type /Page +/Parent 1498 0 R +/Resources 142 0 R +/Contents 143 0 R +/CropBox [ 8 0 603 792 ] +/B [ 273 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +142 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +143 0 obj +<< /Length 1316 /Filter /FlateDecode >> +stream +H��V�n�6��WpI��DJ�҉S h�����B�9��j �v���>�pb��J"�=���y��PU�R�6%���DK�f$-�xJ�����A�f������ wÆ3�sE�f��Rg�TO�k�����V����V��9<�Âg��ꋻ[���v�����ޗ��&��%_�I��,�_�[��H|�� +��T�|�B+4�F��D1M�D���nj;��f�z�/r#a�H�V{X���J�T��)��|��R���E�RU��T��S��]T�7;j����)�"�gLfƧ�7�# �Թ)R��Z��\ɰ�r4�:��WBs�gD���`�t)<�Ǒ�,M���d�e��$ی�C�@�6����&���5���+ɵS��4�]��kze����`�����d�_LP2g�P����6s<�'P����گƶ���A>��D�7.��6�����x#(܅o}��M�:v�DŽb�=6�S 'nc���ʂ��X�HD_>?���� �&,n��]Iz0��� +ΤZHC��ҽ����������� � �wP�IQN���fd���=YsKn�#ܛ6��k��F;E���i�����͗�k�W�YT���ؚ��W +�@Z��T�I����o�NT/��d+��E��$MQ6�)H�v� ��1��.I"S]�H��ş5b���z�8:�!�sNM���lQ/�}�E���. +�%�`F��2�#6��3y����SX|�,�����|U1����n�b��4S;v�*�%uG]������/�����.�� RVЦ��4��'WLJD��]ʥ@�1xP@����� +�sn�;p����5c��.%k����ۑUR��y4M��|�ӽ����P�.��cC�6�F�\.],�裸�;�@0s컻>�&� +�{��6��G����Ƚ��x���e&f/��|(�H�dN��%��q��/���ٱn-����v�Yg��K�צ����Q� +����wgn7i Vh�����`��<��,��c��DP���J�}k�yGٿ&�8���V$��F�� b��K�1����ӌs�1�����aJ\�����(�-B�JK���S�Ƕ���Bۆ�NlxR�;�sM�� ̍Qؗf_��0fo�����-9�-�����'0�s(�=!#|oc�7��?��w���1�,�7A�CT��礯���$N$K` k��kH�a�q���er����'?TTV�8��1�)ҏ�ܟf*�y��]^���R��j���p'�hX�� h8�d�����Puܑ��e(�Se�Q=!f���cO;T +endstream +endobj +144 0 obj +<< +/Type /Page +/Parent 1498 0 R +/Resources 145 0 R +/Contents 146 0 R +/CropBox [ 8 0 603 792 ] +/B [ 274 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +145 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +146 0 obj +<< /Length 872 /Filter /FlateDecode >> +stream +H����n�6���sI5ÃH�{W'n��{@W�M�Ŧ[�dH�w�}�IIa�4]0I����73��.��Z��z_8����H�JP��+�O���``;��mq��gg�� +�m���R�����HI�o��I�����&�w*�_�Ԙt��S��G�+�*Ҵ;������B�n8z��B0����1]%�}�O:�ͥ� ��]�8̾�+KΤ��,g�j����J��}O5+�C��G���8p��aQ���� `�%ƕ�X)p���B�HZ�Ul�B��x��Bϊq�[f�j �/���a��L��b4��=�6m[�d��_ř�&82UŸrUt�x�^�b����>o����dmCW�Ir�/(�M��0�#i�*��HB�'������a��lڱH�߽t�d�ݒM#c6��/����,��A�5����v���?~����i+�̽�6�#���Pc�����ݫ�4�ι�H� �g���pi���]�3�˔� +-1"�t{����5�>P<O����]�X�ikKC���5$�TL6��.�%��4s�<�7~����x��WM[��*g�¥��S�vO0��#{���4K|���� +op|xY��2 �Bm*��(�� +�B�&� !A">��3�� a IfR�G�$�T�Y��<G�3]���j9K�Z�%��׳ߢ�U?>�=thS�}H� !�UEr��J���T���&nˠ�]�ʪ�E85b99���]��Ǩ4��(~�O�̊���� �P����ʒ؟ដL߬�;�9���W+�.�s��FG^�ۮ�C;Ė����ؾCa��[�2���H��=<����a�1�HC� +��Jg����+)��������Cd�� +endstream +endobj +147 0 obj +<< +/Type /Page +/Parent 1498 0 R +/Resources 150 0 R +/Contents 151 0 R +/CropBox [ 8 0 603 792 ] +/Annots [ 148 0 R 149 0 R ] +/B [ 275 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +148 0 obj +<< +/Dest (G5.519705) +/Type /Annot +/Subtype /Link +/Rect [ 298 255 458 266 ] +/Border [ 0 0 0 ] +>> +endobj +149 0 obj +<< +/Dest (G5.519457) +/Type /Annot +/Subtype /Link +/Rect [ 62 243 358 254 ] +/Border [ 0 0 0 ] +>> +endobj +150 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R /TT10 250 0 R /TT12 257 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +151 0 obj +<< /Length 3917 /Filter /FlateDecode >> +stream +H��WKs����W�p�X`�ޛ%�R��&��rX��#^ +`�e� +;?8_? %�Ƈ�x 3��n\��V+k�zX�&Ư6���̤UgqjV��w7Ca�o'fXw�w�K�vX�Q��Y�K<�5���������eUA.mp<���X�,�y��lb;)�{�+��Ia!�>6�6��6���k.��>���]�v�|�Xi�홶j֖����0��� +�`p��_���'76��������:I�Ym�jcRإM��/�ש#��x�S�QZ�2)�4�k +jL�%��Ė)����8i���q������zM�Hꔮ��Q\!�UT(ϭ��^-��]�'xO.e�uR��(�(.�F�:���@F)�2�ڠ�0E��.���P�8R;6.<���g���\u߶[E�1L)���b��i��E���9����%� +�[x��^xՅ8F"�l���[�L�%�۵[7O���Lst���C;��Cr��8�����u��**�jv4I�I�B���ʌ;w2��Wg�MH1��N�5{�C�nZ�ƀ� 8��/��eX���r�����!\��"8P���ؘ�7wn�~��j�f�6�c�h�]�<��r�q*����W���伧P�;�בwU�gW?��o�lFi;ga�~q'.L�.3ܿO�8������ +��(��s�OM�l�F��=�s�tf��ܒ��Z���GӦS4%��5t�yf��1���~�7#����P2��:;�D1�/���H�����Q1�.�m���{�;2�qUz� �?���:���k��{pk<��e�DMi^7����{�s3<�q���E?���W�RE/����n��î=0�)_��HvOBr��R�=�+�p�2�����i4�;���HA~��Y�`�#���fu�n�`���{�m�� W���� +�EZ_��s�#�o���p�Q,�'�5�~tT�|���_ӛ��{9�Jʥ��xl����A�a�y����k�3Cm��������fJ[ڼF�Za$��$ʯ���J�i�|�BOaW!j ���6��3�6 +M�5�.�ʟ�N���&ޢ�qf��(��:�,|O��R���0��<��ܨ�F��u�oK�qTfƢO�,�җ���܅����fm%�5՚�!��u��b<����0����� c� +����V��#X�����Y���Y��d\�U���|@S;�7�cD��n�~B,|s1w�9����L�k��Th* �GhF�͟��qu!]�j��b�Y��4RH���u�H�ژ�����h�l7!���b�*�|��<Y�ڽ}"v�[����<l��4&�S���(K�2e�iW��_7��#���O�%��O|mj6~`đYL��IT�)0�-FYL�yQDY1�1�V���O��;���Ț����G���P�3�6���c��Nk@ ��du��x\�6��J�{,�(/L�C��e��K�\���w��m������fzd5�%�����IUAK�z.�,5�絟�$��� +s��]3�!\�S�0��3X-� � +�x +�ʂ'9�Y�����j��H��#&�x�d�����%J{�/t����C;��q��dS|�H͖�8��&dK.�D����1,R�������5������0�ҽ�a^G��lZa�U}Q)Ur��R?�U�c{�p/������λ�x��V��o�ݹ��t�s +]��a��ń�(�h�,��5�Y����Cx �lx���nw۽<: +� k;� +3:۔����}B� +╾0��H4�UB������Z��7p������C7y:�4�!�o+;(buI-i�~���x\�r�X@|Q�oxy�o�5���Fr!�����_C���q�l ^St��mT� +(��i+o)�4�nX�x�5'� +T+r�S�qt�k�����s�����ڌ0V�͏aJCj���1E����މWK1�@eQ��K.���G܉�o����QӋ��~o�N"�tl���x� ���ڪiu��Г�~Q���t���m���H�����;]�`D�u�g ~&m����4z��7-a�����/�^=�T��L��2��u٧�C(��F5���)�\R�;)jI�M�������71�O����8�M�ի��>�ވ��TPF�|}� ވ�DB�?iQ����.:�6�� +��V��J��^��f"�ʘLԥo%�������zR��(=����Hn�I�T���n4�����j-R+ S=d��B�ƹ3�8@�1��?� �Ÿ́�K�n:��H]�܀/�S2j&z��&�_)�r�^?S�Q|Sj��P�a<�-%I"^�� +PM������R5ͨ�K�Ʊ/� +cV��]H}�+%�:J"��zw�X�DS���P/N�Y��͈)������UɆ:+��̏n�D�N��X�� �8�I�8G��^k�=�y/���48Yϔ=7q3�o���= +��4�*i�9��so:$'�i�� +� p�H٭R���W��ъ@�(����~���iD`C��BIP(1]���=�!��� "rFb�#H���,h^���.��]��r��2�x&3U��@��»~��>��U��5��K|���mC�{�#��-��!@��1����A�����<�ZIK�[�pO2M.��8�ތk��4+�Ww�(�}'.�Љ$���)G2���l����l�=��9�Σ9,GdcJ<��E�*��DZ ���71�y�����fA�f��9)���FjU���x�/]��;;c�y�,�|R�˵[)�B|<*�m��e�ر�jh�( +�}�><L.F��M.揹<�,��-������5 +�e�5�$���1�K��~����E�Pp��J��5^�#��j�Yy���S�$�������ŝh�Z���c� �&�Sf��_b�@>M/��A��8�c$Ig���T�֒���OH�cGG�r##Z��YƇ�E] 8�|��sO�LEy�o +���i�����CN��f���[^����W�����rxv: +)_�C�5�m��LM;T���ٱN˟ +v��* V���́�)#�����o]���"�>S�P������]v�����4������:�I`�FqlD2��q������ur0��Vo���,��GjRI�%*U�}����F�Ku�(�H��O�Zo�� +Z��4���쌬W~D4�NY�חj^唗ӥ�w�[f���$��'��J�Fx&9i�%<t�픗խ���S|���mHD]9�f(n9-�Hu䣐�R�:iF�X�n�H�+>/+=�����������m���qv +��I{�{�/�D9xy}�b +G�m�^�w,�zy4$������Obn��Q�q�fL�9Y= o��)�C�y�of�)-�c +d��Ķ}Ǯ�8�ˊ���L`���0��Q�l��4�y��Q)a�*��f� ���Z��~IQx�۴ +��b����!�Y)ڳ��/K�2d����)�:�N{�EM|�ɺ�z~�V�ͪ D�m=�( +��lV�rtɦ�T�T/����}6����,��8 +�����iB����;���_6˛�<.D�ڪ-/�군�V�h��=lb�J�mB�{����a_�I�?�:Ӎ29PUb�qg5MQ�j���@��ʨ�z>'��~1�uuhz�9��A���C՛h��;���̱�R�ݣ�JQ}*� +�X�l9��WK��}ӑ �ur/� +2�$��BI5RD��;�a�s6e�}�"�M�LZ�`�ȼV��<�݅8�w�\�����Q�� �Y(E��I'����{W0¼�<��.Hjj#��;ŀ��Z���ɥO�4�I3�cUB��`[Ut�,��)���5�ӑ���{-�������� ) +endstream +endobj +152 0 obj +<< +/Type /Page +/Parent 1498 0 R +/Resources 153 0 R +/Contents 154 0 R +/CropBox [ 8 0 603 792 ] +/B [ 276 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +153 0 obj +<< +/ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R /TT10 250 0 R /TT12 257 0 R >> +/XObject << /Im2 261 0 R /Im3 262 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R /Cs10 263 0 R >> +>> +endobj +154 0 obj +<< /Length 3938 /Filter /FlateDecode >> +stream +H��Wے��}�W�#`���0�M�u*J�V�̓��+Q^��+��>�{.I��+��R��z�Ow�>�b2z6�h���~� +��p�2V_I+��,F�^n���������_n�x��JJ��H�ɧ��B��qSh[�6yM�]0�<>�������c<:>����j�=�r쪦�.g�_�o�%�������lR��czֲ�� ��W�h����T����/~U%E�+��e��9�m��${?��CW�-n�e]��i~?����d��Z���m�� ?��TV� ˌb��ɇ��d���x��T>�Jz��������nt?�l��9YX5��l*D���^p�}tHf��IKG����i����x8�x�|Zv3q��|��NպP>���վjL��)���������.Z���n+�w�+�m�f�z��q +���y�ḁ�J7@+���� +)�g�0�"��[t��V�؆�㨽��i�G���j��o���rҷ��.���{�r��N��n}=]�Y0#��ن��ؾ�ĺ�ʡ�L�8<_-7���Q�����U���x�ؼ_}Z��R���|�n=]P_�B�8`%�ۍ�<=�^5j�X�=L7��%�t�Ѷ�s����+ST��}�]W���~�_�)����9��v=�}�v +y]�bN���gn��n��o��r+���F��9Ҍ�xA��0�t������Ξ�Gl?�;�I]<�@�� +��}���l\ +�9�~�=�b!���uI�mя�����^@? ��w֭��t�^-8�1��d/����H)j�|^��'c{Չ>���r�*��ԣp�k������7�s�~Ԏ;�"[��Ϟ�^K�j�+�����0;e!P�t��neQ�� L]l6����sh�8����L4&�ԥ�x�D��)�xB�`���l��A����ܲ;y��8�}� ��"����Xp<:m�<�iF���;cYiq��g�����O|�%q-��&����H{�c縆f�X���`y'�����4#�FJ�/��2�����1�W�c�K�BͳE ������ ���z��CEy����-��"�H�L��!f)ےS1�2<��jM?q +�ü��1�A��Z�(�c���!���0ܔ�J����nP���%��Y�>�����:�Vm8��C�[.�ZJKT�*�*�ί�}�H�W%��.JeQ߅��?�/���K��m~��L����Qyt))��4F��~D���z�����GA�����$�����;FV0�hb�\F ���6{�L�(�aQ5���-e�����d.�3nYT���;H߿.�x������lW�����`������z�k�ɯNy��{��^�l���K���X*��ī)n�'4��ek���F�d�A�4��%��C!��w�1۳X��y +Ղab�%��{L@(��1��� +�A.��xS*�����%,�A���o�F/�X(J��ql�$�#R +�Ek� +g���D(��T�1qJjy@4!����. +�kT2Wr���!:��M��eذ�6�72�TMt��~z��F����x�!� +O)�7�bMm@U܅b��2V��AA>�M� +��PX>���x���\�k�o�̤��*Oaf+��њ�{���"�c������x,) t�C���`rǽ y{D�;U�� ��&� �,�<mH�á�u�p�[�틓S��r��Q��(����$�F��wY��TH�w�i��;�� +��8�����j����������HI$�9R0�ШC��ub�4P�&]�%�ˠ;���7R6�[��*7W":4���MZKn���ɪ��jI?��fL��\�&����6�(蘬Tb"C���\��s�m*R�n#�?=0����|APm�,\X r�Ic"���XUK���pg���eMDG�y"�mzZ����G��w�-�s�y�_�u����I*7���7�4V���/�nތ$ +J���!h5T�;R�� +^B�ւX���2��J;Y���.���PR�P�2:e����@�F;.�5�"�jf(L�s`���G}_j���Y���:�q��⫥�D��Dl�E]Rr�|��׃B7�6��P��{=D��!�&�a��"0\�k��$nV��~�h��Q�)�!]q��XZe���{~cv�7�'T[S�AK�g���pOV/��~ծ�qFOP#��$5ㆽ_FU7T��6�Ǚ�!�\�k紹�f�H(���c�*���i@����[��!`D\�4M�_p_���iG���˓���'�t6����H�reX�X������ @2��@�d��-�W~�E]���hY�BV(�cI*0xM�X��5�Q�1�S +�#�N"1�R��B�I��s��c������0g���/�.ݴ���JrV�]0H��w�cK���%o}z�{f�-���rw��qш��:�l���C� +��e>����~ݲ�'|���[:�s��إ4�#�r0���ѳ�>��s&O%��#&�st���6�Ā�4�Y�Y,��}ތ�_B�������=19�|BL�l�����ӻ�D��XP���8|�^d��Z�ա�(%�^�U������Y��q5�Q�d܀/��A���� +��^9m�P�_�'i��ղs��Xϻ/����Ηp� +��023Ng��r�Y��}��=-i�b���!zAK�����Ւ�<ݽ���rp�-�����f���S�&��r�=�������Zvۈa���E�@���cў�"��I��p��A���P�z_�m�'C-���p�*]���?�ǒo��X�����R���5���v*GZ�]�������P"�!5,t�~N�Լ���0��j֝y�o0� +��³0���̡ԸԢ�߁30 tYĒ�ؽ�'�t�J(��Ppt2\7o����M�~9�O{f�<�������AhI�M]Ϳ;Sͨ%G�BcS��،RifӞ��1M�7�Z<�d�"0cx#�bS[��RR�H�E��{��۩�R� +u��}\ըܥ5���![�Ԑ�0�������� y�?(B�a�pk�I0�6���᷸��+�i�0W��6�%�гS �$j�۾��b���g|�8a�]�x���9��( ��H,.����ȓ�U^�h�}(�s�\{�C_�cΘ�X�/�B�(�����I6�OT{'�U;��H��ЉW(�ǧ$�O��2[�@c�PKMi?��,�8�=d���o;�P*=fJt--g���Xz-@v�f�z۞��|d\8%xO���֩J����t��&��. �"��N��E˼��O*�!H� +�������6��F��}i��S�� +]:��x�\-��-�uer�hDm���G�3��ҟZ4ӜuZ!;-T�������Rz��n�� +T��ڑ�P��2M��v�6�����j�g�ջ��W/p&]�@xΒڹP���2!����u��S&���i8V�YBt��=�o��ϵd���Uɾ�(�61H��O��V���[�3�!�J���%b�!�$�QO9[�f:Y�!k���6��c��W����%����m��]o��r����"l-�b��(j�*�W���J�[H@�X�l�U�w�/�B�ׯ�|�BοPz� +��h�������a���Q���h�jǭ�?0B��$-d�� +}=����A��[�>���M��ѩQ��n^=A���Ԅ +�ߴ:���cm����bC+�r�lP�I�9q��\��E���q����a��7<I�_æC�g����/ <w���P��[k�����#z�69�t��x��Z0���C�V:!)����|(t��B�埴uY�f��'1;��������l� +endstream +endobj +155 0 obj +<< +/Type /Page +/Parent 1498 0 R +/Resources 156 0 R +/Contents 157 0 R +/CropBox [ 8 0 603 792 ] +/B [ 277 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +156 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +157 0 obj +<< /Length 1613 /Filter /FlateDecode >> +stream +H��W�n�F��W��x�^�\t�l9�ÂE ;�lys� ɱ�|F�8U��eF���cz���꽪�e�y��I��m2&�/c� +u�t�Hh��7/_1+�-�P�����H�e؈P�İ��l�G����O�����ք)/��������p���w�|�l�o�`�g������V����ջKl�0���6��?�eW-��ZYKkƙm�Ƽ$,C���h�ގ�MO�ylD-�^��dV�A����_�t��^t2&u����d�*�}��|#�a��W +�T�aFD���Yo7`�I_�iLS�P�k��垻<�k�Ů�xP"���IƙI\(�s�Lʈ2������ζl��n�Zێb��AMu���atE��(1ٌ���l5rV���ph�� +�Eo!��z`c�.n-�?�z����o'�[ %���;1�3���m�0�+�j`���a�H)�p6��6�P�p�c� �9~5�bD�L�6����%��x���.�È�"����tܕ�����G��G�9Qwgk�5��H� + 0���e��� +�P��>v���8��V���h� +4�����-qn\�!�f� +P����j�T��Xk1gͫ@��}毚�^���`�Q��(EɡNZƩX%݁~"!�B�n:��;�����b�����l�{{3tR���NA�3���!?{�`Bz��.G�+���,?Qr���/F Ů�<�;��K���������ifn@���!]�wMw�����+r\Q�b +G��R�R������ʍO;��fv���V'��&Z��F)�y��<�=������?!�A٢���}�{K(%�RL��w��~ Π3T +�OAK/3�H/R[�g���fDȯ��@��Uv���-qV�8ה������B��ӕi�� +�lF���WS{zc��Ho�e�t�EF�g�Y�E:bW�fِ�}���YW�[ׄ�o�=4����d3�w����h5�w�����(��* +�&�|"�}�y��ٔ, +=�q}��l�>9�`a��b��4�3��}юu9�`�}�k珶�M��Ȅ��xE|r:m잦��^A�;�ں�3 +�m5���kS��%�^�:��<�����`��$���'�E�bA'O���� �.;�$ڷ�xvS�} r���&���>�Q�f�B����7^_\��v1�zUd�� + +�^��Es�z�p�������n�0S�u���uQ~��y��=Mp�B�?&�b7�Q�<����C�9��v�u����w�]���S+�t��:z���=r)�ő������ ���'�[w��a)�;7�Ι�=�5����Z�ޫ�5��q�4����U͟�t�@��?���$�ZŨM�YVΔ�(i|X\�`+��i'�� ��7ҕ �,�l- +_S0�h�^!G�GHZM���&%?C��[�$p~�B��j×�y5�}��G�M&��j��+f�'d�le�?N��Y�l���$X +��@i�`�< ��@��U"�[2��B%2�N��*�p����y=K*Pw������ReQ�a������Q�W����W% +endstream +endobj +158 0 obj +<< +/Type /Page +/Parent 1498 0 R +/Resources 159 0 R +/Contents 160 0 R +/CropBox [ 8 0 603 792 ] +/B [ 278 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +159 0 obj +<< +/ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R /TT10 250 0 R /TT12 257 0 R >> +/XObject << /Im2 261 0 R /Im3 262 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R /Cs10 263 0 R >> +>> +endobj +160 0 obj +<< /Length 2316 /Filter /FlateDecode >> +stream +H��W�r�8}�W���1�����lŻ�Ɏ5O�y�e:�K��$忟� +��n��jS.�4�r���r4x7i���i���Fx]+L���F��wWk/&k�Vb=Y���N�O끬���MR�� +�=,�u�}���D�(Zl������C�z7ݶ��|���D9�U]��������Z�b�4���E*UcLOZ'��Q��r��܌�� ����I|U�Y�d���v=qJ�,���~)I���US<�JW���8>_�[B�C����A�jBt �Eת���N��]��ף�*�[5�2��T2-C�:-V��i Y0��2�j*%��+X�l��.!F���)l���5t�R����a��*ŵ2����mˡ�t���|���W��z=].�|���EKO{g�Z�k�I*�$at��Nj�t�� �_���ʹ��o�l�iE;k��b��q�C�T�u@��(�E��R�f)6�[1oIa���U]��9Fڴ�X�V�#�t��y?�5̇ +<[Ӊ���bӮ^V�u+n��x!�/�d�D�L'� +dV�B�����o�;��v wp��A�_f�Wq7����ˣX��]��s��[���m�����@�\\ܶ1�]��7�p�U�5Y�l���s�����|xM⾫�E��m��F��c����oǁ���g����c� �N���U�ʣ8�Ǔ͙p�p��k�2�s<��;E7=���C}�Q�?Y.6��]Q��^QҮ:�{(�2�*�C���L J�������l��5T�{uU���j�'3G,b��]?.GP�*c�B��0IFԫl�:���H(d�O�b�����:�4�y]���$D�f��D�;������/��j�{�Nw~S�(�L�tDݥ�A�撃� +%�5 ��K�a��7�G2#X�F&����q9��O_b>�!Pha�FR�u����c7Ȯ�{��dZeI`�H������X�n/�P�^X +^��v�"66ZZ'Ѣ�)w��Ø�Uiqw����gAa߀q+����{���G��g,jO�/���(%�U���=zj)����0�q:K�>�a)��4_��-�P�n�~.� +=� B�x�°o�Z���ۧRb6�B�4�c��ߒ1ʒn��fV�MJb6q�H�'�v<�QK�� +�n�� +�$�g�츢�A���pۡ'�� �ߒ�^���#C�e@�`Ot��盆"��3�ºY$Q�fm��Ę,G6��~����k`N�)�vL""��P�"����MˣH�ޛ� +���lo��ez�yg��% +jmV�%[�&C�g|��7��YLͽWyV{ލ��� +� n���ѕ�Ƴ付y;[I�c�� +I�-���1��n`t�2f�ǀO��w�@���0�j.��pV�'XKG��k�=_i����Ō���uə���Ө�*k��R���J��y�&C����>� �i�<��ȑ`!�y���s-�/��Y���`�k���7�墱���(�6ym[����4%��AYj��c�G_f�yZj��@Sg���|Y�\�bqZ�Rp����j�F|?�Dh���8"��?�1�s�;���u�!��� y�s9�C�̦���Hidt�I� +�v�%mY�I�g�c�m��6��q������Wo-d6������2��g���:�f1fdj��mq� ����EW8�Ut>�tP����n6t�$��? +\�,�Z�I��^Q+�7)q��J|����(�d#OZ����̻�u\�v�#�6*�F���uHU����y-�e +�����uB�8I�eG��T�����4Baz�w�]"tʼ��}�U=��C�v5t�}��](���l�tc�^�*��c����27����8mz* /�e�ȢΞ�D�,c�4> +4 +�)ם�vy�I�H_ +Ҫ�����&�t '�< +�7�<۴cA���bX�$��d� 6~_|^�3��2�[�"��vUZ\����Tn��fP��(I,*�} l�:ސ�;~����@��ё��cd�:v�@<q}2>��}=�� u� +���ݪ�DafyMÿc�ٶ����Y-Cu��9���Ք'�>Ƕ��.]|'��o�u�Ǻy��[�t�WHņ�Z��+Չ�[C�W��#4x[�p���H.n��5=��aV�ʐ�.�5߅�ny�ڻaX�*�Z���@���w��n���[J*��C�p������H�s��{84Cx#���m�k�!��mLQ�A6���-֓���3+`�+P_? �T���j8�j�* +u�Wz��_������̡���s��u���c�˿��9 +endstream +endobj +161 0 obj +<< +/Type /Page +/Parent 1498 0 R +/Resources 163 0 R +/Contents 164 0 R +/CropBox [ 8 0 603 792 ] +/Annots [ 162 0 R ] +/B [ 279 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +162 0 obj +<< +/Dest (G5.519663) +/Type /Annot +/Subtype /Link +/Rect [ 336 115 535 126 ] +/Border [ 0 0 0 ] +>> +endobj +163 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +164 0 obj +<< /Length 2236 /Filter /FlateDecode >> +stream +H��WM��8�����؊D}���M� ���{�e��D�����������,��I#@Z��bիW����ݛ�Z�P�ww����XD��A$և�7�C*���P�wo~����.�� Kĺ�[�1��X?�=����?y���e�-����E��<����{:;5g�)l�e�E4L����R��V<�_ o�����mu3��u���e�!�W3k��Zb̍�?�^⧲�B9hA�W�l�A��L;�,6 +^�Qt1��ـJ�T���2��q.��OI��Q.�0�(Ԁ�KE��w/&h��RX��D$A�X��H��vEh3�F~�����'ʬ[]��/R�ZzPAJ�M��O�$3���Y��$aa��s_7Z��#{r��,�}�~�i��hm�4Y��$�m� xE9b����ڋ��x��~��Pw�B��۾@fA�lr�2���"U*��>�v,G��ɝ���Gt-�j:[�hյ��W����Q��q� �j<�M�����oӔ��7GXO�n�4�<�'O-�@��I�/�ITM9'�w�܊��ܕ�|�\+�xb]Ha[��1K�?i �LvȒHXl��n��0tU�.3�T�_H��tL1�17`G�,[սn�QsqZj���Y�` ��LXi���p�KdZ�C��er�9 cg�z�W�ko=�f/.?��pŀ�|$���VpI���HxtM3l +~L�cSWlk��İ�N�V<w�W�\�{&�8��m^sA9�j� +ﻃf���#~: +�������:v�#�=X�@Z��H��^�������������'(,��6/���]�&�'O�km��-�Wi��ѥ��Jh S��$CV�E��勫����B���n�nKd�W +v[W�n�g��V����?cmU"}��]U�i~I}B�$�5l�<ħ��JR�Ţ[X���Y�M�A�9i[�Ul��R +�R���Q +N�*��3�p�Ou��bs�0���$�$TM�>�b�e_�)�{��e=j��-�>�Y$�Ǿ�ry0�XVRl�}*7>�F�^t +�gB*Q����3� +#@���[�}�uyI�� Sp�Gt���lŮ�H��v��шy��A1i��� <�s}�q��/��6]*�@���N�<!rI�$��$Y�6_��Q ����W�5Z��K�d@"��[�("��m7�o�1�dܠ�n���P�V�l�c��S�������ʕ���~jK��`ۣ����Bm��UqZ�QrE��,���XC]����� +��8�g���R�|ڡd�(dݔ�X��z��+��x��������-qg�z�i�(?^q6}uV����hV�/��L�Y*�( S�x�f�������fo9���2�pw0T�� +%hYM2�C�m�ָ��aq�%р<R`eT�k/C ��'K���[G�'T(>�;�Ϛ )0>��S���MBj��^����HW���/{�M,I�˚�,y��z��( +����FO^<)�8�vKCC�^�x�sC�������i֭�(�l��Oz>����s�Q��۪9m-c�@Ytㅠj>ި��QȌ�T�Tk4�^ʨ#�[r��2���7�)1�������y��L����A��"��N 0X�O��۬f_��`�Q�=S�([3�m���r�<��충�zd��L&P�b�@�a!��s}��L�?��%�gp�4��M�쎧ܽ�<�)`�EƸj�/V��l3���6I���]�Q��g�h�C)�cƦO]v'���`�U��E9��*�G|և�rS�2w���F��[a�$�V�]x��,�'��7�p�p [r\G��<�ԬcGD�D���i����������t$�,��� +�T�Դ]aG]�;���yA'���n0���'\?�<����p�p�J�� ��>�u���l���A���0⿒��� +�� g�`o�:4~;�]�sE#����V�%��h|CT�C]���Xr�����[d��3<A$J2Y��:��,!J���*E3�EW�St�ES~|�V}��_~@���,�Y6�GY}�Y+?q +�j�͜��(��[bt?�z�Ⱦ�"u=�rDa��MIs��K,�p����Ǭ����l�qx�8�Q��'HR6�$EmS�Ǿ4u����s8_��M�[=T}��ݗ/zho) +Z���$I�C���̅�����ԭ��D����|X����p� +endstream +endobj +165 0 obj +<< +/Type /Page +/Parent 1498 0 R +/Resources 167 0 R +/Contents 168 0 R +/CropBox [ 8 0 603 792 ] +/Annots [ 166 0 R ] +/B [ 280 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +166 0 obj +<< +/Dest (G5.519705) +/Type /Annot +/Subtype /Link +/Rect [ 298 479 458 490 ] +/Border [ 0 0 0 ] +>> +endobj +167 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R /TT10 250 0 R /TT12 257 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +168 0 obj +<< /Length 2674 /Filter /FlateDecode >> +stream +H��W�r��}�W�#�5�3x�#��ĩ��<��"A2/*������s�g�J���n�J$8����ݧ�\MF&-���G����E�c��҈�r��c_�i��J�����_��ڏd!e��d:�b�}�%��|�2��_'7d� +��ǫ�������1�VUx�s�m��Y���*\֬f�ߟ�!����E���ݢlR��c� +�J��כh�yi���z/^T!E�+��e��sJ�d�%{�r��uQg���,l�܄���Lh��9^��A����}����r�Ux�r@1���qt=)�"ު6��Ϧ�^h�/�j�Ŧ�G� +ӾJVM�D)]�h���a�'�G���Ӳ"�*� +ij���*�q�.�m;��]���*��."�B +їd�4�`N�}�������)�}J����ڧ����)d�bF&��~����֫��{��۵�bG�x?5� +W�}���"�c��E��)�>WHvOUF!���9��Y|Z�cMQ���O���eᇟ��ӆ +�̺�Z�7��*��U(�qr�i놢<h�>7��)�Y;���4��� (��h]����O�m�%9k�5U+9���7������ն�o@��O�πօvJ��F�P�bK��:2L����"J�A��-�z�kmߦS��m��%<�IGxu����=��O��9χ��+q��Lt}+��fU�8���B".�Q�X�[����Hؒ'j�L +��F!�n�!J|�y&�p��y��:Bڨ<�?B<�Zy%{{lmyP���a�u�Z +c�,v���ܷėႵ�,��u���y��^��v� (�x;s됨���к�.��j�n�}�мt jtP� +,z�/JU�փ�=�7����N&!��*;�$'�:�dɉ@�}�O�8�r�{?=�CA'����Y0�.J)�1ê1E���#�n�;�iY�zQ]D����2��D��|���A��RA�bʺ0M�Mg8ѿ��8�]^��=����'�y$ḌL<5_At�����۳Ȗ���ϜEVׅRD�?:�|�zMS?�n��f��6J�}�5�eȔ���0v,i���FI?��먔��P�S喚��uY+���a���8r�Y��F��i�i��lO�����%u<M��h�p +,�� +u�S�KJMHp\q�<���g�Ao��&��2P@^���3(��T�ި���f�;�h��7�4�j�rNn[ +D�COf�X�G��ډB8V +ʤ�:Ha:� +g���}}���L�R�i��1��͔>�P y"`ɘ5��n��C_�ϛ�ڱ*Q�N��m��+���(i8.v�����]�-w����ӣ����}���3�� �c� �y�+`>�* +J%CT��)�H-�h�[uh�A�Bxh������f/��ĞT��W9���έ�J���%�s�L;8G��Υղ���*�ci�.B� +8F�\dr�ˑ�,Y�ϋ����X27<JЎ�cz��9�}��>��������xG <ɚC�a$�Yֈx�L�R�#W��.z��* ���/�&iM�貒�2j�i��b��4Z(ٯ����k�-6��$^#)K�G�]�h}�x�a/�5jP�6��48f�q�S��&���Dh]�4�B���rCjv��;�CƂ°�(Ŋ4?�%�g�A�i�O�#8tT�t٩�Q�:xJ�>��6�-V�}�㾆��WT�f%���N��f��c�=I���0�'X�����_ޘ�UM���B[���ȓwa\�q��H`��qfE��V�����kW$�����ǜ��9 ��8$��g��F�$��8���bltQ�#�җ8ʠJ�(��3挤�)Iؠ#*ۊf��2�BU2��ǵ����M�X�x���95��iV��i�� 㪪��(,���TX��t�����D�����u�F������} ���V\S���{Z���p��������*~O���yؠTJ��2�=���ч!h0b`�F!�G\u�g�vW�rm�/�,������.����<v +N:�F93۾���P���4hm<��A��<U��I��[Q�헓,��a���qj�!��EG�_s�ց��4��4���nP@��\��ɩy�@�@� +hN;�ܠ!y���@n�qW�l�>C�����X��b�lh�:��w.v��E$�����1iQ�v*c�9 +�(�ۑ�v9П�>�(d7<�1E;:|�w\���s,`|͒'a��'M��G�R[�UTo�cحY&�@9�KLq�1AE��ʋ�u�+�H +Z�S�M}MLs1h��^C�Bg��ߊ:mGK������C��� +X6��%�1��FR���PPZA�DY2��ϓ|��=$I��� Ȓ�:'����7�� +�`W�;h�Zѕ�f���I���@ob�CN��:�w���� +W8��*C�M]'�O l�� ���u҆�=�p �&�M�����Wy$��7�4� �.��_�)kBO���-�A���<C��t,�]�~�5*�� +{N�Ea���q��fX�H-�T$X��g�I����o�b�^]�a�0�>gX��.I?...��"�D�Kf��"y��a]����7�$nׯ(�$i�!�X�u* W<I�d�����{��fњ�p��vj +�XL����ȟ���X��� +endstream +endobj +169 0 obj +<< +/Type /Page +/Parent 1499 0 R +/Resources 170 0 R +/Contents 171 0 R +/CropBox [ 8 0 603 792 ] +/B [ 281 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +170 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT8 244 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +171 0 obj +<< /Length 1829 /Filter /FlateDecode >> +stream +H��W�n�F}�W���6��uݧ�U�Z�zk�@K+��D +$�ֿ�/���.PbJڝ˙3g������Z1�ֻ�f1�i�+��,)E�� [��s���ϒ��f���;��E,���z�X�1O[����0��)Zf��U�T�{v���C�F��o�w�|���?Z�: +���M�T��ٲ��5���(��vk�����kT"|5�VN�2gn0ݱ�2��:��7��_����G3T2���(D-�d2�[�1�j�t��<OG��x٧,�ER�B"ɴ&Pc���[��=L�}�pR��eq*T�|�:��]&}�N(M�����(�gʝ�>��й+-=�8���E!r�.���I8�̐cY8�,���\��6ZJ�p�cu�N}�r�e��cm�&JqhI!y�UC�6����;V!>{d��t�ٸ'6�(13��9v�5Os����U�%���o��c{p? P +T`�-_�pU�������,����}�l�6}�=�0���j���MW�q�N�2 &=���w�jgv�#�K䁂qd˚�`p�{Қ^�6f�1��9شQ��)J�k=�:�6hXu<��Oi_��(s������u4���G�-S����-�E���u�D���µZݛ(� +V�wQA% +��5���-��J� uzGO��_ +-A� �%CKL8�U�O����|v;1��+�-QJ%�Z��}Ҫ�ʒKF�)�+6I���C��=����r��,$'uY��y�k�J�Ȃ��Q�z�<'��}A��*$z$���.�>e���w\���R���3-.*~�6�kc 7��ps�]�N��PՍ�pB���U��&����t�B�_��䩏� 8<��T� 3����ss~�?P +$�"]#���L*��}S�bm�e��<��U����9a���v�V��&���*��PJ�A'��y0�T�l� +DVytu�#�A_vvi�ɹw��G߁`��y��<DA�� ()0��bT���po)�v/y \��=�@���\�M�)G�~�S� +��&��N��!�O�)f�O)����3���Ii���\�}�6��U3��ԜH=��4NB��T�S�j@�@4�x��`��� ��Q;����`�3�SѬ�� �� +����,'LO9�I6Z���lǜ�� +=,�y���9�m�d�"CC�>G9uֻH ?�̬��c�X_SO��d��֩�j�d�"�څu*��ݍ`>��K�.Ê)`����oN]=<߶{s�7��{�%�I�w���;s����;�k�M7�Ϸf_Ѹ6{��=�]���H9*��I��A�n5����t�d�}ۡ{!�{cݑ�����=�u�(ͫI�Â�')��N?�X�k���} +����u�,.���ڇ�~���6����-�H)h㛪���g�)�M��/?\]a����3�������гt:f�l��_�l�Xzs����_�k���z0o$/S=I!���H�bNu�n�juk�S�WCP��������۪�P�N�8�I!Sd�Fj���!~�fX|��O��J��� +`�*A��¤�~:�!�ʳ��}��a�Y�=B}[��ZH� +*U��!�ʔ(�\*_$�D��X���^)(��{g"}�_J�r��d�ƭ�x�[� +[��(�y��M!��¹4����~1iEF�G2V���vDB�FC�`�#���.�j��<.����YL��}{�����(�7 +��d��q�I䴀e����5�wЮ~8u�{�Pu��X.h�(nhg��K +�����P��z��C��� +endstream +endobj +172 0 obj +<< +/Type /Page +/Parent 1499 0 R +/Resources 173 0 R +/Contents 174 0 R +/CropBox [ 8 0 603 792 ] +/B [ 282 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +173 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R /TT10 250 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +174 0 obj +<< /Length 3510 /Filter /FlateDecode >> +stream +H��W�r��}�W�#P���<F^o'v�,�jh ��DE�����t���r�U����ӗ�=��ś�R%�w�NH��D�c� ��҈�����]+nvlVbw�x��+%������by��b�cq]���WF�-���m<Zl]���;C�/�g��M���~{�oD}�6�Z=܊??�[�� +Wm�֛^�J5�3:��|<�n���y���tػ����晴"�J��l������|�5a�k�t���5�z^�ߟ��WB��=ؗ�.D�_��^��*<�ɲx�������r��J�V�i0�F�eh��V��S��[H>�ֵ�18�4J8��&�K�h +�K�4�5�)�8�T����qmL����������V��6�Z�e�ۦ�3.|���{�&-[��<x�|�Ox�>�R����U�y�����J��*�"t�i�,��O�8��jO�Z�����>�L(���@鏌�aǟ�*���*�]~]���z��iu/n�����s������|�`�ډg~��c��[�c��s9P�E����q�}����*������������p��!�p�ֳ?"ěmM�'�H�j����~�kx�A�!<\�D봰�#�,�jۘ<�L"���I�^�}�hq��#��O�բ�!���_R�b�Z,t��a�є�xHN�Z�.);\%ct=������ơfP�!�PIy�Ui8��K�,�>�����kE. +���&=�kC.^�]���ò� ]:l{�%����ÂL���,V��B��Ձ�t�W�p��@ ����G�`�akN�<��>e����J�o=~V�%�z���.=��k� +��FkZ���Q� +��i�ڒ�s\�KK��ߗ$T�<�.1֦�KV$r��c��PYR��y�C��3>P]�'3�C}a�1e�x4`�u{_�Ër��A%��� +�fY6�+�]��d�����_�D�4�"�^g~���L#*<� �GơŞt�9��0�Eׅ_*��Kz )�Cf��C��*�Ggp����p�6ٸb���j���9�J��9MM���lF)b�#]U}�!�?�w���HGF$��[Q�'������VH�+`���-Y�!�(��MD�Mi�u)��z*T�<l�����ݢ�S�y +,M5?Ӣ�h�&���l���#�Sl5��E{M�Sl�J��ƃ�G�?�!�кD1��V +e�*��ה�wJW=o:���C0�̭�d�ɐ����nx\t���*�<;��1fY�q�e�%��ǎ�ե���+D��%�J2�Qܯ��B��⩧���=��Q�T��l��i�5�"6����p`�Վt��5r~sl'������4_,4R���q���E�|O�~Ů�C+�氺����خ�UgZ��sr^Z���r�GQ����r� +g�3�y��.I�?��oP4x�$BťO%N�bդ����rT:��%!� +w���-.0�*�DU|�_�����*q4������SAg�ń�X�3������i<8+z����#�`ƛR'�;̟����VT�(a���#n�4ܤ�뻺�.�N�˰��- +� *ݱk��_��,u8qS���M|�븻���+v�j��z�0�=�Pb��Qq��O�: +�01��ʰ=��ư�X�1�B!��K�j�ugV����������Q��5F}`�j�X�@�U����W�I�6�H�f���?����r�f�U�Nʝ+~}�;��b�Du��0qm���+� +=���� +���A?�7��I��qj.s���>�T$7A���Ar��9%�!��oO� +kʝ�mN��3[��o0�:���@:�ya<�*Y +��f���]#��V��"��Ȍ"n�@�W�AA�"����h�龡Ф {�ˉ���>��(f��� +��1���d�[�0,���a�ed��xYi٦��63�1�p�Y�F��Am<-���Q��$*��v��7}�u�Ҍi���19�"��!bDĴ�����<��Mr��'Tr��5_�BL_B�?�zv�xROVG��I�no9��'�a(v6�"����Sj���~�pbl��l��$�+�)��中��-���n�:�I�0F��߮�i���B%a�3��K�J#�u��Ez+˂�����$iX�����1O��kȖ��c�(�è�Q��9V��j�zrFԤ�9�H�0�6u�ZunӸ�Xi5��=���������e�j�)����S�Ρ>�k�\��ڐ7-r�[ѱ]R���F������r�; +��ư�q�"؆G�#��fX�1 ��t9���1�+V���.G��ͱϝ-�~����p'��� +��ojc'�5N��v�q�S�7�M��S�Q��!|�ITa�B�ү�2��,��a8�ĥ�$�,U��]̵u�҉�����E��:O�]"�����j�V��%"�QEr ��&���%�i��l3IW9�>;�:�i�`c#�e�k��gsd�����KFc�sn�m��i��w�ю�����Αْ`2��q�~Q|p�y8�k,V������Ȉ�#-�]:4������a>�i���՝��RV�i�ԃ�����VL/g&¤Y(b�L�heY�� j�B�ۘ;p��p���lQ�87���V +s�U�S��e�5���������xE�2F6�B̶iS�"��cn�|�3����$]S'�K�ƚ� 8�^+i�����6�' +���t!!�+�f_{���Z �+�Z�Xu�႖��{a6��H#��ec����W4��W��Y1�gy�:2�L��v���y�.�pBv����*���D��W1��0��Q���2�gR��$U���L��v��O���>{ �B������3�;6t��J���E:�C��c����5l��.U��~_�� ���G�߯(]ǘ��e2~�ʚA��B~��A��W]�%N�"���ѕ�y��ȓCY���[�S��+�n��`�0�T'ʧ[ʹP4I��4P5p��U��g�Ը�X�#7�K�W���x=y������?��j��(ޒ��m~/� a��W�h�n"��q�����>�e���O;|}�-��B��'�C�z�Z�~ra�����z���j���@:�ƪ��VmX5���E�%˴o<����N�=~��`n�v:��j�JLN��EҼ�ƶJZQᮒ�ǦS�7$�;-�ȃ�sӚ�|��+�� +`���夵������~Lxr����@��]��q��m�ojU���Vydޞ�jߡ<�X_'��N�����Ɉ6d�u`�|^�U���A��C�i��>㸝������Y���Ҍ�<�%݂8�&���Z���E}dԥ��� +Mn����jIߡ<�Х�+qi}��:�j�ty�@��MG�g�0jc�Ӡ�u�,F����=�:�jd�~�3�U~"�a�Fͣ:� +5֒�n6�K3|��zd�� +endstream +endobj +175 0 obj +<< +/Type /Page +/Parent 1499 0 R +/Resources 176 0 R +/Contents 177 0 R +/CropBox [ 8 0 603 792 ] +/B [ 283 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +176 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT4 1545 0 R /TT6 234 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +177 0 obj +<< /Length 2694 /Filter /FlateDecode >> +stream +H��W]s�H|���G�a��66&bgv|q���č�i��Ԗ�I��9����j�@�p���VUvUVV�����|���Ǜ\��˅VA�(�8��|{s���b��e)�eus��/R�ۛ0�4����:Vb���wg�ޟ%A��Ly�+*�0��5�'ߚ}K +��߬�|���l�x)DQ�ħ�� ��ٴ?��χ�ύ� ���rcz��l8�����Dg�%$���Eҟ?���A��y�S�� �D*� J���=E��4� �f + +��v� I*8K$s�B��< +"���0CX� 0�(��a~#���4 �L�4FZ����Q��P +�GL�?K#(�OʀOz188���Ӄ +5�_'*�)e`K��� a ���ؚ��R.�٘��:�,*�0b[�vf%�ZXo2b�C$2��sY.Į�g1�Q�I��G��ʮ1-�]YWbߖ���ݓ���LS��iֻ�I_�r�O��[�vٔ�,+k�ID�5l�X7��;��k��[Ni�����T���E�gf�|�JgK�?|����YB�5����,��r�gV>��.��1�@2��Q�{*[њ�4�7?��� 6o\�6{س����� c*��p2����O L��^vO�䲮ڮ)ʪ���k �fcܶz��qvir��\��K� +��5ek�1���|)>���j}�.��S��e�o�;��i �x�#�([g��D�ik��Χ�XBj�~6��|���41��Γ�2.�k���S� �0Sl�uuȅ͂�%�r(Gh{s�x�XЊ� ��R^c����S�w�Ŧ\�U��ǮG�<�0�0 �K�U��v����|/Mۊ}�2�����YHrdKS�����c�{����=u�������.�E%���s�ܮ�rs�t���!h��$�$W(�@�"�l��cA�Tb5<��� �6��⛏#6�~�$�=��( +�@������4� ��Cm"����3N�H$�s��G��(����� +"Y2��|�\̞�,��ܫ^@=�^��C�cKɧ��K?��A~lio��5-W����!�2�\Ҵ`�q sьJ�,���,]���z�X@AP���^�}�f";�QGI_���YtQ!hȨD(�ESn^)$TN��bU�ض�8��?���A���e�p�h'��(͎�D��!ʮa&��������P��b��D$�j���`�o����C�l�)X���x����ngga�j}��_�4���L���"y����ߐD�V"�X0� VB;�����qz���g�|$܋W�?���xM&y7�^#���k#8�}^��tL�p�*9��;�Qc������۶\p'1��QX���C!M<S��SG���t�0�5�p�1��0BՕ�����CF�mD/�3�e:w���s6�J���S�4���A����Ն�|�8P)����dɼ�'g�Qu�5Z�b��L>�~1��M�GKC�ъmU?���d5� +��u�lӄ �T�w�����0��;@���P��� Ň>�}iӔ����أI�~'-��<�a����S$�ap�g�C|2T�>�s�h2=��Υ�\`����}Aq�)<�P���u�(σH$S��2�n���hY�|.�YN6�$�7�T$+�m���̓'� +C�ផ +Q�]P�%zҚ�?p�`y6�� +͓K�㗝e�F��֨|(�/?�^��ݮ�������p���{n�҇�qk�E�C�6m�>���PgA�������Q���]���D);���C����1�S8 +�m�Ɠ�2�4ŧ����2$"��H��E]��ݞA�d~:h�g{���NT�H�<����- +��ц̖���:#�>�����g0�A���ӑ�1P\��r��[�� ] O�ZP{Rd ��:F�U�h���p�"�L�6LƴUc�^�i�4З��0W�+K�#=$T�ʎ3^�Փ�q9Ҫ��������8w��_~��'�rb>�̰�[���{?Mc��h<�'�$4��n.p�ǖ!3u)*=E]�E'};�N�>���~����3_�u�1Euh�Q��)a���m�]�/����weUl����ؗ�ӕ��1�b��B���A��׀B�����m6����W�{�n���}�忋��V;(L�kH���#���&M�4��I�0X��Ӥw���׀9�O��;� +�H�zw����R�*��*#ٽʆ4tr���צ)^�~Jc�/&sώ9������t|~eE�t��`\M6#�d_C�'{:?�l����Y��*C +��}����Ԗh�<��bȶw{�:��t3�P$+�5�=#/b��C��};�pJ�m���lVg�z�o���}�o{��`������=�v�]��1΅�팛�u2��8l�����N��:���ނ�;F�^�u�Ǧh�R��$�RR.߹{��h%���TMΞ��o��t���o�x�|C�U�������E�w�§�n +�M&�V��˷��ig �F�x +T�d^�[9�(��\'������Pyսc��{uzcE��.�Dm�D{�<������R9 �2\y�M0��x�$]�T)�&�hΎ�qM�EJ��ua����/�@RM,&�|�'1؈~�� ���".�Ӌ��&i���8��M���'�E��M��� +endstream +endobj +178 0 obj +<< +/Type /Page +/Parent 1499 0 R +/Resources 179 0 R +/Contents 180 0 R +/CropBox [ 8 0 603 792 ] +/B [ 284 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +179 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +180 0 obj +<< /Length 1351 /Filter /FlateDecode >> +stream +H��V�n�6}�W�Q,"�wIE�@�zݠhԾ��A��XY[2$%A��wx����-P$�h�3st��p���<�9b(�e��_�4'B"�*�@�f6��4*;��PWֳ�/w=v3J(� ��E���s�c'�����ƺ��5K�4�ٝτ=�Rko���ŦY�5±&IT�K�ǧ_�o-*j��A�%c$B�y���{{h���x)�u����@/�P4� +��)�j��r��>b��`N��Ŋ����7�L"�݃b0��a��C2���@��',!��W ��,F�O�E>c��Y&�̂�q�����5��u��9M���0�hB�m�L��+�(Fn��M��8��%��Y���T�+������^"�� + b>A��kj/(��T�� %:SC Ɔ@�I(_U��mۼTK�D�o�ǚ�he�e� ���^�xi���4����yH���WT�h�|��J�l���V� +~�W9�8o��.f@#�1���u��<�U�f!����e�s�4-���=6)���/Qg��w����z7�+�U�o�ϟ�-iZg��q�Ե�£��d T��\��n�$l^�u� +i�L�3 +b�//G�% X�)�� �����h�H"B:G��j�Gr挒$�e��t:���D�tL�Slty�|p���Q|aը��J�|2���=y>>W{9�^XB��p��#$c/�v9�̦e:��b"��.�:"U��}E٣��Y���4��8�(�Z7�E_��������+v����7��1tڨ\�M]}���G�Fܵ�S8̢�4V.F�Q�����ݲX��^��;^75p�c +���XBzoo��z��CԞ�.�!~�ۦ�X� ��w�ڷ58#W'�Mm��#���n��éf������N�*��8F7�=�X����v�b��k���04�.� p�u�G������f/�6��%g���٘���q\���8�L`�c���k�� �c*���39J2�-6㫓��؋&�[��o���(�����$��],<��`�8���oo_�tP�����7eo��]�]�ۢ�Z<�.P��5hQ?oL�֜��Aa����Ab'Q5���?��Q�U��F��M����<���ٍ���-����;Dv�Myh�L�Ћ��i��q�]Q��>h�i>�s���=ӈ�|����R��n+;�C�|��V��m�Ml;@�Q�ԥ��{7Pihΰ���"�v���-�j�w�?k�z��R�"4`ˣ����L�m�lʵg��p>��pyv�N�gmm}0~nW��S}����S����M{���l�t�b���w�*: +endstream +endobj +181 0 obj +<< +/Type /Page +/Parent 1499 0 R +/Resources 225 0 R +/Contents 226 0 R +/CropBox [ 8 0 603 792 ] +/Annots [ 182 0 R 183 0 R 184 0 R 185 0 R 186 0 R 187 0 R 188 0 R 189 0 R 190 0 R +191 0 R 192 0 R 193 0 R 194 0 R 195 0 R 196 0 R 197 0 R 198 0 R +199 0 R 200 0 R 201 0 R 202 0 R 203 0 R 204 0 R 205 0 R 206 0 R +207 0 R 208 0 R 209 0 R 210 0 R 211 0 R 212 0 R 213 0 R 214 0 R +215 0 R 216 0 R 217 0 R 218 0 R 219 0 R 220 0 R 221 0 R 222 0 R +223 0 R 224 0 R ] +/B [ 285 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +182 0 obj +<< +/Dest (I3.1.511264) +/Type /Annot +/Subtype /Link +/Rect [ 62 666 296 677 ] +/Border [ 0 0 0 ] +>> +endobj +183 0 obj +<< +/Dest (I5.1.528647) +/Type /Annot +/Subtype /Link +/Rect [ 62 656 296 667 ] +/Border [ 0 0 0 ] +>> +endobj +184 0 obj +<< +/Dest (I5.1.528675) +/Type /Annot +/Subtype /Link +/Rect [ 62 646 296 657 ] +/Border [ 0 0 0 ] +>> +endobj +185 0 obj +<< +/Dest (I5.1.528643) +/Type /Annot +/Subtype /Link +/Rect [ 62 618 296 629 ] +/Border [ 0 0 0 ] +>> +endobj +186 0 obj +<< +/Dest (I3.1.510694) +/Type /Annot +/Subtype /Link +/Rect [ 62 608 296 619 ] +/Border [ 0 0 0 ] +>> +endobj +187 0 obj +<< +/Dest (I4.1.518321) +/Type /Annot +/Subtype /Link +/Rect [ 62 598 296 609 ] +/Border [ 0 0 0 ] +>> +endobj +188 0 obj +<< +/Dest (I4.1.518320) +/Type /Annot +/Subtype /Link +/Rect [ 62 588 296 599 ] +/Border [ 0 0 0 ] +>> +endobj +189 0 obj +<< +/Dest (I5.1.528667) +/Type /Annot +/Subtype /Link +/Rect [ 62 578 296 589 ] +/Border [ 0 0 0 ] +>> +endobj +190 0 obj +<< +/Dest (I5.1.528654) +/Type /Annot +/Subtype /Link +/Rect [ 62 550 296 561 ] +/Border [ 0 0 0 ] +>> +endobj +191 0 obj +<< +/Dest (I5.1.528660) +/Type /Annot +/Subtype /Link +/Rect [ 62 522 296 533 ] +/Border [ 0 0 0 ] +>> +endobj +192 0 obj +<< +/Dest (I5.1.528668) +/Type /Annot +/Subtype /Link +/Rect [ 62 512 296 523 ] +/Border [ 0 0 0 ] +>> +endobj +193 0 obj +<< +/Dest (I5.1.528676) +/Type /Annot +/Subtype /Link +/Rect [ 62 502 296 513 ] +/Border [ 0 0 0 ] +>> +endobj +194 0 obj +<< +/Dest (I5.1.528657) +/Type /Annot +/Subtype /Link +/Rect [ 62 492 296 503 ] +/Border [ 0 0 0 ] +>> +endobj +195 0 obj +<< +/Dest (I5.1.528670) +/Type /Annot +/Subtype /Link +/Rect [ 62 482 296 493 ] +/Border [ 0 0 0 ] +>> +endobj +196 0 obj +<< +/Dest (I5.1.528663) +/Type /Annot +/Subtype /Link +/Rect [ 62 472 296 483 ] +/Border [ 0 0 0 ] +>> +endobj +197 0 obj +<< +/Dest (I5.1.528656) +/Type /Annot +/Subtype /Link +/Rect [ 62 462 296 473 ] +/Border [ 0 0 0 ] +>> +endobj +198 0 obj +<< +/Dest (I5.1.528661) +/Type /Annot +/Subtype /Link +/Rect [ 62 452 143 463 ] +/Border [ 0 0 0 ] +>> +endobj +199 0 obj +<< +/Dest (I5.1.528669) +/Type /Annot +/Subtype /Link +/Rect [ 143 452 296 463 ] +/Border [ 0 0 0 ] +>> +endobj +200 0 obj +<< +/Dest (I5.1.528666) +/Type /Annot +/Subtype /Link +/Rect [ 62 442 296 453 ] +/Border [ 0 0 0 ] +>> +endobj +201 0 obj +<< +/Dest (I5.1.528665) +/Type /Annot +/Subtype /Link +/Rect [ 62 432 296 443 ] +/Border [ 0 0 0 ] +>> +endobj +202 0 obj +<< +/Dest (I5.1.528673) +/Type /Annot +/Subtype /Link +/Rect [ 62 404 296 415 ] +/Border [ 0 0 0 ] +>> +endobj +203 0 obj +<< +/Dest (I5.1.528642) +/Type /Annot +/Subtype /Link +/Rect [ 62 394 296 405 ] +/Border [ 0 0 0 ] +>> +endobj +204 0 obj +<< +/Dest (I5.1.528645) +/Type /Annot +/Subtype /Link +/Rect [ 62 384 119 395 ] +/Border [ 0 0 0 ] +>> +endobj +205 0 obj +<< +/Dest (I5.1.528649) +/Type /Annot +/Subtype /Link +/Rect [ 119 384 296 395 ] +/Border [ 0 0 0 ] +>> +endobj +206 0 obj +<< +/Dest (I5.1.528644) +/Type /Annot +/Subtype /Link +/Rect [ 62 374 296 385 ] +/Border [ 0 0 0 ] +>> +endobj +207 0 obj +<< +/Dest (I5.1.528646) +/Type /Annot +/Subtype /Link +/Rect [ 62 364 296 375 ] +/Border [ 0 0 0 ] +>> +endobj +208 0 obj +<< +/Dest (I5.1.528650) +/Type /Annot +/Subtype /Link +/Rect [ 62 354 296 365 ] +/Border [ 0 0 0 ] +>> +endobj +209 0 obj +<< +/Dest (I5.1.528655) +/Type /Annot +/Subtype /Link +/Rect [ 62 326 296 337 ] +/Border [ 0 0 0 ] +>> +endobj +210 0 obj +<< +/Dest (I3.1.510687) +/Type /Annot +/Subtype /Link +/Rect [ 62 288 296 299 ] +/Border [ 0 0 0 ] +>> +endobj +211 0 obj +<< +/Dest (I3.1.510677) +/Type /Annot +/Subtype /Link +/Rect [ 62 278 296 289 ] +/Border [ 0 0 0 ] +>> +endobj +212 0 obj +<< +/Dest (I3.1.510688) +/Type /Annot +/Subtype /Link +/Rect [ 62 268 296 279 ] +/Border [ 0 0 0 ] +>> +endobj +213 0 obj +<< +/Dest (I3.1.510691) +/Type /Annot +/Subtype /Link +/Rect [ 62 258 296 269 ] +/Border [ 0 0 0 ] +>> +endobj +214 0 obj +<< +/Dest (I3.1.511265) +/Type /Annot +/Subtype /Link +/Rect [ 62 248 296 259 ] +/Border [ 0 0 0 ] +>> +endobj +215 0 obj +<< +/Dest (I5.1.528648) +/Type /Annot +/Subtype /Link +/Rect [ 62 220 296 231 ] +/Border [ 0 0 0 ] +>> +endobj +216 0 obj +<< +/Dest (I3.1.510687) +/Type /Annot +/Subtype /Link +/Rect [ 62 192 296 203 ] +/Border [ 0 0 0 ] +>> +endobj +217 0 obj +<< +/Dest (I5.1.528671) +/Type /Annot +/Subtype /Link +/Rect [ 62 182 296 193 ] +/Border [ 0 0 0 ] +>> +endobj +218 0 obj +<< +/Dest (I5.1.528664) +/Type /Annot +/Subtype /Link +/Rect [ 62 172 296 183 ] +/Border [ 0 0 0 ] +>> +endobj +219 0 obj +<< +/Dest (I5.1.528672) +/Type /Annot +/Subtype /Link +/Rect [ 62 144 296 155 ] +/Border [ 0 0 0 ] +>> +endobj +220 0 obj +<< +/Dest (I5.1.528662) +/Type /Annot +/Subtype /Link +/Rect [ 62 134 296 145 ] +/Border [ 0 0 0 ] +>> +endobj +221 0 obj +<< +/Dest (I5.1.528652) +/Type /Annot +/Subtype /Link +/Rect [ 62 106 296 117 ] +/Border [ 0 0 0 ] +>> +endobj +222 0 obj +<< +/Dest (I5.1.528653) +/Type /Annot +/Subtype /Link +/Rect [ 62 96 296 107 ] +/Border [ 0 0 0 ] +>> +endobj +223 0 obj +<< +/Dest (I5.1.528651) +/Type /Annot +/Subtype /Link +/Rect [ 62 86 296 97 ] +/Border [ 0 0 0 ] +>> +endobj +224 0 obj +<< +/Dest (I5.1.528674) +/Type /Annot +/Subtype /Link +/Rect [ 314 666 548 677 ] +/Border [ 0 0 0 ] +>> +endobj +225 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT4 1545 0 R /TT6 234 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +226 0 obj +<< /Length 1560 /Filter /FlateDecode >> +stream +H��WMs�H��W�q� +d>�<F���+ڸlrJ���C"��v�ﷻg@�6V�\%�t��~�^拷y��d�v�1�U�C��@�B�|�x��bVv�Z���o?�I��-D D��\���C��_�{�}��(Hy����'{Ô�z��xvlϖ1`�W��0�x�������A��}�|b7�fF��V;�R� �Z���t@�p�pۦe�ű`��!��z�Ʈ�2l0��� �FL�ĥ�����YjI�U$t��,�I��,C&� ����Ϳ���IG��t��X��J����b�Yl��q�H�T��4���K�����I���[W�;�sV0_�� :��,������p�Ue�WM�>�aʾ��0K�+w��#1HPRs#����-N���G�@b͕��� ��϶hi���ݴ�_?Ԅ&���S@�T��.�.����ծ�:�j����w$ ;���s� �˾U��b�G{�������W� +^��c�ԘW��\�cb�P���� (2��.�0��a8覩j.�v�˙HI5: +േ�n=�5��ٰ��Pr$"y�h%!T���n{L��e"�d��(��GB@/��צ�xP>��S{�Cw�t�v�U=}q�)C&�[_�s@�S�_�}bx"�]����`��K���'{Э�/�of��R��_A�P�_"�¥0��L�kL��\�5R5�qؙ=d,U-�� +^�"��E/�N�X1�������s�$�I�-��ט/��u +P|���_�`ޛ�{s����7 +5!��bϔH2A�����f�a��a�d�����om����൨;6�(KK��B�&nY6�1F�Sإ)\h�8��a`b�q��/;K�k�k*�22C�B�O�AxN�Kԫ�Z8��u}��蕯.k+D�����5%�`c2<�_-�5dy�<B�k���K��}A���D�T������B'���It���:�ɾ��;�sB�(d اf1*���pJB�|LM�fF6ȅ���٪�I0�PK��z��O�x�STxd"#����Sյ������Z�{C��^Z�)!Y�q�B�Y���+9*$�H$���^Μ?/6d��{㦎�\k���8�<SQ;�MQCBe$����{�ÛG�������bQn�ִ�a�% +��δ0�U_�t�*�����|:�����mCWoԠ9o����{�D;��fbj�� "G�����e�Ha긃�q��dm�UI?��jn^�����ϛl��U������]����7��o�����[�p�K^�!������倛���1l̈�tH�Yq��e�%�BȎ� +�-�1%�#2NFɤ�Z��{�yn��j?���.��%{g�Ƕ�O����Tc?���AZ��9��N�����ڃ�O����'Ѯ�4bT�0)7N3����rp�S�_Q� .�ԃ��zg���jx5<�-�8J���W�;@>̕�ʶ:���6��*�ы��S)��u�Ix&��%r�s���e� f@8!�� �h��'�=���oy0�c +endstream +endobj +227 0 obj +<< +/Type /Page +/Parent 1499 0 R +/Resources 228 0 R +/Contents 229 0 R +/CropBox [ 8 0 603 792 ] +/B [ 286 0 R ] +/MediaBox [ 0 0 612 792 ] +/Rotate 0 +>> +endobj +228 0 obj +<< +/ProcSet [ /PDF /Text ] +/Font << /TT2 1540 0 R /TT6 234 0 R >> +/ExtGState << /GS1 1546 0 R >> +/ColorSpace << /Cs6 1539 0 R >> +>> +endobj +229 0 obj +<< /Length 307 /Filter /FlateDecode >> +stream +H�L��N�0E���Y���8��BATTB�]!�M�)��$i+d�3��s��YVӜ=0�F% Y ���A��wjz�yXw�5C�ޫ���[�����Vi�ηz��L�t��륱�t�Y��zf�1�j����[#2^��mm^�BـމL��tF44��DYT��p��]�����eDZ,�s>\�l/�Ùzkz�xM��5�X����+{�`�BF�%)����N�q�ǐ�n�1p@�r� ������������1�Cͳb�S�� +,�|��R��(-��j +�;��e =��N��ݟ��i| +endstream +endobj +230 0 obj +<< +/P 5 0 R +/R [ 53 64 557 693 ] +/V 2 0 R +/N 231 0 R +/T 1503 0 R +>> +endobj +231 0 obj +<< +/P 8 0 R +/R [ 53 64 557 693 ] +/V 230 0 R +/N 232 0 R +/T 1503 0 R +>> +endobj +232 0 obj +<< +/P 11 0 R +/R [ 53 489 575 600 ] +/V 231 0 R +/N 233 0 R +/T 1503 0 R +>> +endobj +233 0 obj +<< +/P 11 0 R +/R [ 53 64 575 477 ] +/V 232 0 R +/N 235 0 R +/T 1503 0 R +>> +endobj +234 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 250 333 250 0 500 500 500 500 500 500 500 +500 500 500 333 0 0 0 0 0 0 611 611 667 722 611 611 722 0 333 444 +0 556 833 667 722 611 0 611 500 556 722 0 0 0 0 0 0 0 0 0 0 0 500 +500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 +389 389 278 500 444 667 444 444 ] +/Encoding /WinAnsiEncoding +/BaseFont /MCDPHL+TimesNewRoman,Italic +/FontDescriptor 287 0 R +>> +endobj +235 0 obj +<< +/P 38 0 R +/R [ 53 64 575 693 ] +/V 233 0 R +/N 236 0 R +/T 1503 0 R +>> +endobj +236 0 obj +<< +/P 43 0 R +/R [ 53 489 575 600 ] +/V 235 0 R +/N 237 0 R +/T 1503 0 R +>> +endobj +237 0 obj +<< +/P 43 0 R +/R [ 53 64 575 477 ] +/V 236 0 R +/N 238 0 R +/T 1503 0 R +>> +endobj +238 0 obj +<< +/P 46 0 R +/R [ 53 64 575 693 ] +/V 237 0 R +/N 239 0 R +/T 1503 0 R +>> +endobj +239 0 obj +<< +/P 49 0 R +/R [ 53 64 575 693 ] +/V 238 0 R +/N 241 0 R +/T 1503 0 R +>> +endobj +240 0 obj +<< +/Type /Font +/Subtype /Type1 +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +>> +endobj +241 0 obj +<< +/P 52 0 R +/R [ 53 64 575 693 ] +/V 239 0 R +/N 242 0 R +/T 1503 0 R +>> +endobj +242 0 obj +<< +/P 55 0 R +/R [ 53 489 575 600 ] +/V 241 0 R +/N 243 0 R +/T 1503 0 R +>> +endobj +243 0 obj +<< +/P 55 0 R +/R [ 53 64 575 477 ] +/V 242 0 R +/N 245 0 R +/T 1503 0 R +>> +endobj +244 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 122 +/Widths [ 250 0 0 0 0 0 0 0 0 0 0 0 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 667 667 667 722 667 667 0 0 389 500 0 611 889 722 722 611 0 +667 556 611 0 0 0 0 0 0 0 0 0 0 0 0 500 500 444 500 444 333 500 +556 278 278 500 278 778 556 500 500 0 389 389 278 556 444 667 0 +444 389 ] +/Encoding /WinAnsiEncoding +/BaseFont /MCEAOA+TimesNewRoman,BoldItalic +/FontDescriptor 289 0 R +>> +endobj +245 0 obj +<< +/P 62 0 R +/R [ 53 64 575 693 ] +/V 243 0 R +/N 246 0 R +/T 1503 0 R +>> +endobj +246 0 obj +<< +/P 65 0 R +/R [ 53 489 575 627 ] +/V 245 0 R +/N 247 0 R +/T 1503 0 R +>> +endobj +247 0 obj +<< +/P 65 0 R +/R [ 53 64 575 477 ] +/V 246 0 R +/N 248 0 R +/T 1503 0 R +>> +endobj +248 0 obj +<< +/P 76 0 R +/R [ 53 64 575 693 ] +/V 247 0 R +/N 249 0 R +/T 1503 0 R +>> +endobj +249 0 obj +<< +/P 84 0 R +/R [ 53 64 575 693 ] +/V 248 0 R +/N 251 0 R +/T 1503 0 R +>> +endobj +250 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 125 +/Widths [ 278 0 0 0 0 0 0 0 333 333 389 584 278 333 278 278 556 556 556 0 0 +0 0 0 0 0 278 0 584 0 584 0 0 667 667 722 722 667 611 0 722 278 +500 667 556 833 722 778 667 0 722 667 611 722 667 944 0 0 0 0 0 +0 0 0 0 556 556 500 556 556 278 556 556 222 222 500 222 833 556 +556 556 556 333 500 278 556 500 722 500 500 500 334 0 334 ] +/Encoding /WinAnsiEncoding +/BaseFont /MCEBHE+Arial +/FontDescriptor 291 0 R +>> +endobj +251 0 obj +<< +/P 87 0 R +/R [ 53 64 575 693 ] +/V 249 0 R +/N 252 0 R +/T 1503 0 R +>> +endobj +252 0 obj +<< +/P 90 0 R +/R [ 53 64 575 693 ] +/V 251 0 R +/N 253 0 R +/T 1503 0 R +>> +endobj +253 0 obj +<< +/P 93 0 R +/R [ 53 64 575 693 ] +/V 252 0 R +/N 254 0 R +/T 1503 0 R +>> +endobj +254 0 obj +<< +/P 96 0 R +/R [ 53 64 575 693 ] +/V 253 0 R +/N 255 0 R +/T 1503 0 R +>> +endobj +255 0 obj +<< +/P 99 0 R +/R [ 53 64 575 693 ] +/V 254 0 R +/N 256 0 R +/T 1503 0 R +>> +endobj +256 0 obj +<< +/P 104 0 R +/R [ 53 64 575 693 ] +/V 255 0 R +/N 258 0 R +/T 1503 0 R +>> +endobj +257 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [ 278 0 0 0 0 0 0 0 333 333 0 0 0 0 0 278 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 667 722 722 667 611 0 0 278 500 667 556 0 722 0 667 0 +722 0 611 0 667 0 0 0 0 0 0 0 0 0 0 556 556 500 556 556 278 556 +556 222 222 0 222 833 556 556 556 0 333 500 278 556 500 0 0 500 +] +/Encoding /WinAnsiEncoding +/BaseFont /MCECFM+Arial,Italic +/FontDescriptor 293 0 R +>> +endobj +258 0 obj +<< +/P 107 0 R +/R [ 53 64 575 693 ] +/V 256 0 R +/N 259 0 R +/T 1503 0 R +>> +endobj +259 0 obj +<< +/P 110 0 R +/R [ 53 64 575 693 ] +/V 258 0 R +/N 260 0 R +/T 1503 0 R +>> +endobj +260 0 obj +<< +/P 113 0 R +/R [ 53 64 575 693 ] +/V 259 0 R +/N 265 0 R +/T 1503 0 R +>> +endobj +261 0 obj +<< /Type /XObject /Subtype /Image /Width 16 /Height 15 /BitsPerComponent 8 +/ColorSpace 263 0 R /Length 57 /Filter /FlateDecode >> +stream +H���1 +0s��?�%�ҭ�)�V�iJaFl� +yCWx��ıx=��`?h +endstream +endobj +262 0 obj +<< /Type /XObject /Subtype /Image /Width 16 /Height 15 /BitsPerComponent 1 +/ImageMask true /Length 14 /Filter /CCITTFaxDecode /DecodeParms << /K -1 /Columns 16 >> >> +stream +�!S�MRիV� +endstream +endobj +263 0 obj +[ +/Indexed 1539 0 R 3 264 0 R +] +endobj +264 0 obj +<< /Length 13 >> +stream +����� +endstream +endobj +265 0 obj +<< +/P 116 0 R +/R [ 53 64 575 693 ] +/V 260 0 R +/N 266 0 R +/T 1503 0 R +>> +endobj +266 0 obj +<< +/P 119 0 R +/R [ 53 64 575 693 ] +/V 265 0 R +/N 267 0 R +/T 1503 0 R +>> +endobj +267 0 obj +<< +/P 122 0 R +/R [ 53 64 575 693 ] +/V 266 0 R +/N 268 0 R +/T 1503 0 R +>> +endobj +268 0 obj +<< +/P 125 0 R +/R [ 53 64 575 693 ] +/V 267 0 R +/N 269 0 R +/T 1503 0 R +>> +endobj +269 0 obj +<< +/P 128 0 R +/R [ 53 64 575 693 ] +/V 268 0 R +/N 270 0 R +/T 1503 0 R +>> +endobj +270 0 obj +<< +/P 131 0 R +/R [ 53 64 575 693 ] +/V 269 0 R +/N 271 0 R +/T 1503 0 R +>> +endobj +271 0 obj +<< +/P 135 0 R +/R [ 53 64 575 693 ] +/V 270 0 R +/N 272 0 R +/T 1503 0 R +>> +endobj +272 0 obj +<< +/P 138 0 R +/R [ 53 64 575 693 ] +/V 271 0 R +/N 273 0 R +/T 1503 0 R +>> +endobj +273 0 obj +<< +/P 141 0 R +/R [ 53 64 575 693 ] +/V 272 0 R +/N 274 0 R +/T 1503 0 R +>> +endobj +274 0 obj +<< +/P 144 0 R +/R [ 53 64 575 693 ] +/V 273 0 R +/N 275 0 R +/T 1503 0 R +>> +endobj +275 0 obj +<< +/P 147 0 R +/R [ 53 64 575 693 ] +/V 274 0 R +/N 276 0 R +/T 1503 0 R +>> +endobj +276 0 obj +<< +/P 152 0 R +/R [ 53 64 575 693 ] +/V 275 0 R +/N 277 0 R +/T 1503 0 R +>> +endobj +277 0 obj +<< +/P 155 0 R +/R [ 53 64 575 693 ] +/V 276 0 R +/N 278 0 R +/T 1503 0 R +>> +endobj +278 0 obj +<< +/P 158 0 R +/R [ 53 64 575 693 ] +/V 277 0 R +/N 279 0 R +/T 1503 0 R +>> +endobj +279 0 obj +<< +/P 161 0 R +/R [ 53 64 575 693 ] +/V 278 0 R +/N 280 0 R +/T 1503 0 R +>> +endobj +280 0 obj +<< +/P 165 0 R +/R [ 53 64 575 693 ] +/V 279 0 R +/N 281 0 R +/T 1503 0 R +>> +endobj +281 0 obj +<< +/P 169 0 R +/R [ 53 64 575 693 ] +/V 280 0 R +/N 282 0 R +/T 1503 0 R +>> +endobj +282 0 obj +<< +/P 172 0 R +/R [ 53 64 575 693 ] +/V 281 0 R +/N 283 0 R +/T 1503 0 R +>> +endobj +283 0 obj +<< +/P 175 0 R +/R [ 53 64 575 693 ] +/V 282 0 R +/N 284 0 R +/T 1503 0 R +>> +endobj +284 0 obj +<< +/P 178 0 R +/R [ 53 64 575 693 ] +/V 283 0 R +/N 285 0 R +/T 1503 0 R +>> +endobj +285 0 obj +<< +/P 181 0 R +/R [ 53 64 557 693 ] +/V 284 0 R +/N 286 0 R +/T 1503 0 R +>> +endobj +286 0 obj +<< +/P 227 0 R +/R [ 55 64 559 693 ] +/V 285 0 R +/N 2 0 R +/T 1503 0 R +>> +endobj +287 0 obj +<< +/Type /FontDescriptor +/Ascent 891 +/CapHeight 656 +/Descent -216 +/Flags 98 +/FontBBox [ -498 -307 1120 1023 ] +/FontName /MCDPHL+TimesNewRoman,Italic +/ItalicAngle -15 +/StemV 83.31799 +/XHeight 0 +/FontFile2 288 0 R +>> +endobj +288 0 obj +<< /Filter /FlateDecode /Length 24728 /Length1 38024 >> +stream +H�\VtMg���Ϲ7"����yx��g��K*M%Ē`Ln"!� +KZ�D��W����#47a������a,ef(U�VY��vҮY휽�Z��g�g{�o�����b($��'*31m�,╬Wa��`������u�{��U�Z�S�[P�R]x���ܙrZu*��&��e��}ZQ�#�K�=�d�u�u�8lv�WPT�}�{�\���9;�EQ�K��9��U\赗V믋�}�� {�`�a�<V�l+�=�H��������مK�~2�b�u�A�2����o�}����э�8<y�_*Fvo���� +�N�!�`)���_p +3P�Ta�%��!V��bфraE����)y3Y��[`l�<�<\D��Pc��p����?a5���ڃ��zF��b3����lF�hBC1>F���Ak$��" +�8`��4��*����S����{`T��ċ4���tC`(F�OR�M�D�i��g�Mbr�0�Ru���m�$a� ]� +��i��@J�>*��� +_��%(�<$o�H�\��zF�|�_����'cw 6Jt;pu�TrRO])�6�}�ȌjZ�9繮�C����Yx�R�wpW�<%����|E��6 +����%[�X��"�e��d��ԟ��"�r[�ɯq%�JU�����;�g��;��!�qR���Z��|���$���(�̧2��z���^�`4����M7�G����/���,l�J}�3�3���:�`z�V�*ZC�����x9��k�B�Rnu� #��7�����S�٢%:���M��0[�8W8��q�`{�ɋ�DLCi�"ZBk��t�8�gs�"�U9T��4*�s�s�Y� ����h捷�a��N�=r��B�2�C�&�:!��#l~���RgjOAԃ�"��i4�\�G%�>U���~܁��Z~����5G�W[�~u^ym��Q"�f��[i>�L��ZGZ3�;��l +k:�t�������3��G�_u���_����WW麖NU�ݮ�/�H���I�˘*�g`�pr��M��~�qa�9|�k�Z�nKe����SrP?�K4M�LʡBZ�"Kim��䦣TG��<]�z�.�=����s��x�cygq6�뼉��|����R�|�o�Gu�J8U����*Y����������� +�TrcH���b1r�e�u���i��o�+r��cɷTY�[N[n[-֞�k��C�>��N�B�t�.a�N�œ������3�ϸǾ�N8҈�'����Q��Y�� +��Jr���x����']�_x�j�7����S��7g�?�b�G���o��!�tT��,����Nz(���F����P��7���P��4�p��m8�EK=�aٹ7&a�Z)�BG�3M9��ڇ�\��|@��wr�M2F�f�.>l��<�R�a��4V0tQ^�m�V������Q��<�'�zd�S2 +�NːNw�{���R6�b��&��(���I��<:I'(��i��ߠLA�����8Z��"��ŻUm�y�j$��0���Fe�xJR��=�X��6�:�u�����dg.��*�pcjβ��U���yJ�e��u8p��geU!���N��@Y"���8]�=F1����HR��B.�[Sf��ϸRN�$5OΙ�8.l_$g�?gɜɣq`�F�<��<4�c��=$�c����u3?���3|��!�E�0�T��}zGF�����#4$��=�حk�Ν:v�����v~m}۴��n�e���bB��1*���p������g�K\�Z�p�ei�om���3�o-c�2��,c����%�هaXd��鰻��;�4)%M�7��v��=�E_ע�=(H6؝���nʰ;ݣ��rf���}��q�ޑ����G4��QXM�jQ��R��j#�ܝ�NwGG|3� +q����SҜ�##����t�1��6��q-nܖ8��ō}zs4(�WGԭZ]�̌���^5PQW��7��E���,� +"�U�h]ԥ*I���!v!h��`b����X{�_��55�I{�iV��E+�'��U�)�Sm{�'��ccJ�~w��u��1=�ʷw�w��ܹw^l������E<G�4�;9�gɥ�w�0��I������}���@`�+�c�/Z�ȿEE�]=)���ԫy�f�v��^�l��9�y��}�y~�G| H3'���{��(�� +��܉� ����w����Ż�y\��K҇����]]�Y��.э��j���ʛ�N�=rOE]O���ύ�d���, +<��a�W�A+X�cx2x�$ .���4��ܮ�'�cw���=���8��>!nrpD�r�LK��r\8'� ���UT���B�U��8���A�(;{��ȧ�*�2t�U3|ᾋ��ȓ�V��,9hKz��ʖD��n��⏀^����_���=�s��Z��"���=�ΛQ�sy~ko�������j{L��j� BI�%������$�9T$���1E��\��8���oQ���{T +�묥�5��`vZ�����܋ +8l$�y�Ł@�v�\��@ ��� +��!YU�vŹ�x��~�DCrߪ�`��",b�����5��ۼ�XLE���s�.��z.�c����m��+�DKƇ�K@����;�R������z�L4H�ߜC +:�+����W+�c�`)�&`*�}�c�a��,� +/ǘ���,�R���6)`6�#h�N�M��_c��b��g���B��n�| Ɲe�a����֡θ��q�E����*P},��H�,��5�F����h��y���Ƕm��8�C��C�=ў�n�Ø��鰝 +�-��3c�b=n�J k#i�>�Z�H�-#�zZ�~���k�פ��t`�m{�������8�~�,�����'�-#��Զ�ѓV1�gq�5� �(�~�r#|�b�Q�3f�пal�g�M�@��x�6�?E�D���:��tɁ�[�7�'ط�*�վ�������~�s���ڧm�7�5��ј�*�h1j�;��f0�s߫���Nw��aX��0�E�p5x970��k�3Q��^4��qΆ����j��_��C�R�}��à3��?��qq=��-� +����þ�5 �9���F[�ϡ������,�c�}�e?-�-[36�b�^�w3���ʢ��]���α��w��^Ɲf���r̲�mR�`�G�mr�Z���D�8��e*�b}�M��8�k�;�-u����H�~w �z��A籇O�4���&zE_A=�W(g9��t���fm��~6'h�f�Y��h�L�V^6Z��f����wӎ��2eD˾,����Y�7|����,��L�Vr^ц.��_T�1i�� +-�,�8��M���P��A�� F/����/p�_�<�UZ���.�@Kv��|Q�;���h9��.��Q8ֲmzW,YԎ���|λ6Uwyբ�v�l����\8G3��*_���Ԑ��g�8�����%����Q�S�-�߹�`�Y�;l���W�9�s$�9�����iD�F;���W��Tl�k���ǐ=h��aڣ�a%=�(�"1�R�h +�2O�K� ��u�g*��>ٵT��f�.RG��|&��|sH���Tu��ܡ�0�S��+�W�����1W��rn�\^�����J�Jv��E�3�F���)JR��h��]!=Ƨ��o�VX��Psbo���\P�1B]�|�g����aG95��`=e�g��ڃ�lT���}d:�3_��d��V�u*d���Q�^���o +�tT�&����>���Ks.=���`.s<j�D�`N��*�:P�c��P�bi<ǽ�)� yҮâ���R��� wb�X����&���!�_r�!�s�N�a)�� +�#v+���o��|Q��i�0d�X��M�}�o�u_*�f��S>`��8�#ȥ��%9�U��N#s���Ӂـ���p$�Tx��C����Z�.A��z����@c�(ޗ��yT����ct@�������?ޓ����H�F�����x7-�&qL^G��3M����bU���x����ao=?���Z�NlB�~B��o� +#��5:��j�~H[���Vǃ��r��*Z���#N� +嫍�}.ӓ(���������Z�2�?^7�UzcL�iD�@R�����s^W9ˋ��\�8��<������1�p ���?� �<�q7af0�o����g*1> +���>?��@���>�#j��`ڷ�[M@7�`��2-�5���C�5�Gü��hw��>`#��ޯ�%��o�ѽ�u(�cM�R�{O�] +�����U[J��>����?ռv��`��z�������h�0E��'����!��O���Sl�w����۔B�0���w�� +�M�h5Fg��S�G�1��]�D= +k�<l����`h0��4@���jn�8�w�N~�-[�m�==��X֝l9~�dl����I��iJBHl3MxH<�0!�L�L[h�t�A4>�l#f:ә�����:�)4ui�p�#e�G�v�6�i�魾�w���{�ju��_�g�f)O��,r�&�@6��b�b��&��<�9�s��/���Y��A��^�c���-i+���<7|�3�_�n�z���_���e�#t�m�9��am'̈��daY*+ +��\bh +�j�W`Y�[��4��zH��l�ҩ^�O҆��h���v͛�yn���r�V ]�=�ʟ�%9�t�j۴M-��~�꧸�_-�!��b�HY�:�5��d��14'��:U�e؉��Gz�ܩy��m�CV��Mn�J!.���Wk�maM��|^�$�#[�rX�V���������n8�Rn�-W��!َt)'�x�u�& +f��,a�>N"@�"�aaB��m6��E�=����@h3�Rڬ��颤M��~w��T/,�X陇7���JK�?�����C��6M�l�O�R��N�Qc]ؔ,��Yh��uQ���|�@/���J�����/�� +$/Rj}ꩫ� +�iڐk$1b��6�,7�]���,g� ��.oyX/�<��|������D37_�0� 7Axy��&`a�4DDX'�J��t3��,���y�7�yh4����0j�:�0FE�Cv�vÃ�Ya�%�a.��HĝLǘ��k���Q7*��▨�`T\WFń�kF�Z��=���F�W�5��gI�*�ߐħ%�k��eI��IL���"u2��t�xq���]Ë���$,m"\��DI��4�8���^&�j��5V+HIJ�<":�Q�>�(�����4��I24f� +�C +��?F^,��2���0|} `��SH�����@�%9d*�`~̌<Ex?��{Q��za�P�/�L�r����]4�<M�_6�'ZΎM�q0�eL����-�^3�\zz �Md��y��B�qx��\�An�9/F�-����A���� �VΐW�O�YX̌����)���A�+��Q5`<r���� +\������ȣ�Oɐ5��+����!�H,�r5�{�&��2dE$C�]�?C>����O�#$]hZ�Ղ_� �v��a/��ڋ�v��n��1�^�������Q��A�f����ՠ�+��v�d�2>�%��X(���P�(ڸmp�R8i\�*J~E2�r�x�V��Ɔ3��[�=@6��sm��<��5�kᝅ��ӵS�S)�:�ĝ]����sI��_�п_�:�[ɁA�|]�P�M�.�4�H�g����ޞY����,���n�㸯'�9 +6����>R�����`w�mG�F�h2J;��|��`�Q�d���L�8��(�8��Gf���±:�mƹmu�tnF � Rʤ?�ɠ��7�7 +��Qf>p߬����`�������ѻo�'7N�Qwj�����>���<^{ /��JB)�8�m��Q<� 9:px�Vj�`L��v��X�%�%��R�L���ۙ��`�|��9��$�L��$��`_��5vzR�ӻ�>K0���������AH���N*J�Q��'�����/�GI����Iz +�FFB�/+�@lz��k�0ƨ(4��8�qGh��%����.go���QB�,��:1��(9�GF�7�*DaQ��M�YA�����S^� 9n��Y-<*,U�m�8w�u٢7ރo�n�b�z�G��(��{�"M� +_� +%��_��[ѧH�\��?�c�B�(�����;�2�.�e��(�p�QWIu���� p����Qx��y�;�&�%��]�(+��h����*mBU2�Y�x�}e}���_��+eg�������VS3*<�Z�3�n���-Ϣg9��+f�\���h��~� +/F����q��?����q����j͢䝅�yŴ���G���K�Y 3�3Ɗ �ia�C� + +���v�A�鉞���ͺ9Q���ov�K�� y7���-��.�.���_:T>�u#����q�i雮W�g�U��zݝ�NH��T��r���&�}���s�Q��X���X-�3��t����y+_�\�uh�w����!Z�||f<�i�` +�ǜ���� \U�?�.���3�����ww/����eY�ՕG!�$���Z5Z���X��T|�S�FQ�D�F�1��؈Sl +Hд&���Ig�δ��L��Z�6ES5����&)�{�=�s��;������dxyY�=�4�^���P7gQ���gY�yd��#'̌=Y=�q&_���$�����Ƶ������Yɫ�%��qբp5�����s=B��2ȥ�W���t��kػ�H7��q�M���$��*�2"�B3���:��BE�ۀ)��l�1���t��2KL�� �$jβ0щ��mY6�u���������M��RAk�D*"�y�܉�U�6�\Y��7Y#���4�u�v�+�M�~������@@Vj�,����i^NP����^_�%��N�u�7������!_u��O����P��va=�W�9a-w��FV�U&9�^PJ�*���ԭ}$}�Vn�p7]�N�2�EF�SO|�X̙�7��qә]`��@��4��-6�㾎��i稁��%��LJ߱{����Tˤ�~�N����>�&�+��'�`V%�C<A�-�l�4MIA`xYy �u"N��&m\�}VNɅU�Ngo���iS��\��\��Iߴ���P��ɿ���m�X���Ƞ�\�"��c��|��ek���(�_��,=+�+]�s�9��@8j���M��b��C'zn;E��pPG7ہ�h��*������B���[+1�J�Y��X�A�9x���2j�eAV��"r��&�%�zր� +}����hQ_�dUS5���F#e���e�c>t7�OK��_ʃ��O�������yu�_<Q����[7�����^}������'���҉�'/ڦ���^=���њ��_����q��us_��Ő�5~"Q��T,bUa� +6*i%��+WW+M|��[�g�Ȫ�-Pjn���d1<��� +��b8H���T��QU <]Pq�"��4աɒ�J��j�cT�U>��?���v&I<Aa�)JX!��-�,=�SJۈ�(�p�C� �y����e|�,w#}�B�f�h�z� +!2>O���5��!X��]p���{ ��*��p/�D_�����7NDRW����%1m ���4�>fڵ������T�6���?h�Ȫ��8�-@���r��� ��%�r�/~eI�5��Nt�.~�W[�K��Xu2�x5>���A�^l��G9|�Hv�X�=��*L��� +ϊ5\��Zl��-�.n�p�kڹ�l�$��7V<&������v���;#t2��$�`�9F8��c���2�M.�Y��Z���Ce̦�����`L �I�f�#�`囖h�ߤ���F�i�kH��5\FJ�ⷤ�S��Oux�0�x±����њ��¥y#F���̚���o��N����O_V1�_�[2"�ʟ�Y��VTŦ7�Rt��U�dw۩���D#�Ѡ���8�dO:����ԍ��Y��=�����r���?���vW���%eNw��H���sN/��(:�@[v�������,����Er�Lmr�Le�K�+��5Zl=xJ����x��v LYėHCP)b%%�4M4ą���8h$��vR^��kO����${Z=������9v���Z�d;�ǭ�p�ԜJ�*?�|����?�u�2���p�h�ʕ��`�_�6���@nũ�?�E��۞�R��9s�y<u��E��D�Tx��C1�Qc�c +%Jjݼ`���V���,����}�X�ٺ3�E��`�j�>�e ^��8�~��Le��Q?_�*'O��'�C (�9��6'�)��do��~b�^o�;R4����v��j0P���}<���Q1m��h4z8?��o�A�4�+���uś�ѽ9�q��a�����y{��Q|Ro�5�j-> +=Z��[?�9,;��p����ߵ%�Bl��ںq��p,�j���� +_���T:�:7:�:9�w8z�� +X�� �ĝ��H{��ڱ���M+Y���N�l01��0\� �4bNѶ�3���|�č��{��K����3�g���z��Ug�/�:f5��-5Z�lǸ��o�X~F�l��ڕ3�D��=q�iY�Ӻ��F!���y����$#����nj����<L���.?�O�f=��ښ�<�>��'x�?��Lk�����u��{w��%�V����ڇ$k���e�@k��BTJ- +��cH�5M�0C %)�$P�MFXii�%3��i��CC�@�@�nf: �wW&5�LgǾw��;��?�8�N��u�lݞYL���f@�nO�(�?�^a \̑e�%#���A�U[�X�h+.CED����5X�����N�_�c��jB��J gR��j��m[4m��Y���zf��{�t��w���/���ܲY-P_���OB��݄sn��~ee� +�\���5���Y篺�A,���y��'�M�ZSBi��]� `�:����3G�%D�]K>j��G�ao<��\�p���MxO[���m�6=��W0}Ǽ�_�6�4�5�Mp��Z#�g���e����)���/��Y4K�p���:�a����𤴚Z%�B���K���W��T���75���R�)�[3�ך��"II��|�P� ����K�M�!��Co�h��D��")�d�j�%��E��.��8��n��� @Ӕd"#iҺV9[3t ��'n� �FbB _z�D@ N�\P#Z3��3P[.�Ӌ������G�y�C*(C��]V +z)"Q*�]y�� +���R6���Q�7�M`�,�~ۮygu9���嬹�a�@V@ܨ��F4.�����j5�X�:���<��Ng�3����'����'�䜕e�)+�������l�ۻgc4��2�K�u��T>�W1Y��M�+���#b�$R�0H�,ܣ����#鼜O�H��|�q]���w:^��M��x��H��Tt��Ϧ}s�5aB6�L���A�0�L��b��$�T_\�YU@�ZM /�3|�لl"�4�X��ۣ�1%|co�u?���ƢE|�����-�3�O�ޡ�IF?ɣ�{�g�CEoS��L v�h�3~���� }���e����>|0蕜7��Uoį��zc��D�k���(sa�@yI��t^Zq5��=�m�.���y)� �қ�٘ +�9|+asa��S����#������s�ԣ + +�G��cB�Ea}O�&-�-c�pK�_���1�����7W���}4;�Q۔�=;���u+����[�k:�b���vzO���_�-5W~��q�~��@�j��Ӻ��:�Tw�[Xz2��1���t�M��R>��u�ܞ�>�o]�{�������D���$��G-��+��O��/� p��u��=�Y<+�N�n�v���8]�|}�'v�W1:�u#��p,ڭW�q�� �i��f8�j��Anal�3U�ԏ�� 1�J�<�� +^'�� +e +�*�Ҁ�UU�l��$ +��$݀�!�,M^:�w�3/�����ZZ:u`l�����uc)n^Ry`i���Ǟ8���][���7��y����[)�J!�=�y?�'$�G'7|Ek�"rb]�l�C��]�N��h4wҢ�J�s�(5FSDC?�X��Z�������Z��`�����!��㤇��N�j����5�W�Sq�ju}՜�uJ�P_彀Į�jt���w=�=\nYo"iʍ������r+e�V�)L��w��6��F��߸f�1/��2�`g��0M2��Aל�;.]lBn�|��ۻN<$c5^>��,�F�;��D�lo� +����7�'�u�z�h��A�����A|�5�2�+y�=�<e*�E�/�Xĭ���<�F�E��n +>z<�B�@Ak��o㭼����f�M�e2�-0��Y��ó�L� +�BMJ�䬚�T��C'0��ۤ�,�CVM$�)+�r�X�Ȱ��>~R�ݡ�H��2{�7�X�i���=�9^!��������?�� ��&��<�/U���S��/UO*U)�F(�W]�$�(�.]����9tGQRe�.����DA���{����v۾4��H�C�i#.ӟ(V�_c5x/Nb6l<�D#"�k��� y{��=�y�/�ky��+��l�d�\S']���%[�=�+3^���� +5>�d��|��P�#�m,�k�y<Q��I��IR�N�yD�\DT +N.҂�;�>=�[��1�i�����S���B�@tވ�K祖���ũԂ����x�$C9$�2�xB|���PJ�1��v�2VK��t,�#V�U�b�~dŬ� ��h��������c��������~>Ǐ��پ��w~����'!�M�Ay%�v +e �����*�PK���Uкn-���ƴ��kI +ma��M��j��N{I�V릂�G�4��}gt,�~�{8w���y}-���_�("R`�1Dt�J�Q�EB�7������, Ta@��'���"@����^��i}������;;�:��y����vKë��&����nt�m�G�v>�g�C�m��atoLC�U[�̏��1�$�[{��3���]���k~eӣ9����jF��9�)���������V�_��ܪ���3 ����{���jq�� +o��հ��K�o觘��������-�$�*&���� +b$�ʤ�L$�Ik��j�X�e�I�u���g�Z��zk��jf��� +�9�N*�[�� +�7�qm��X�*u1ʵ�����Q�Ƿ4)}h�M��µ�\]Di�%�*�5>|�qr,z����`ᗟ����~Ѿj���ڰ6)�%���������[�:�쟞�����J"��[џ{��?���l岨��ō9���(SО��T���}�����mR��2��p��I)�� � �(�07:!���C�"vXQ��#,����`��D�D +�e��b�e�uۏ��7Y�I��Q1�u܊G�!�ţ�\k��k�ر�%z����Q|� +_��o��Ɣ=:�1��:*��QP+��EN;�Ї9�RK,��>��b'%�g�Dw�p�F8�z(��c���?E�}x4����{��g��QK�c���r����Uy{���D��A�&g)%���; �(l\z*�?��;�A�)��^N���l@p��V�C#�m�$K����7�Ԝd�($/�z{XOd%����/��9���i����'����`0��2�|��!G�7L�n}/�|��ssr��9:/�B^��0p7�'���.edd��ĴȫbX�C��mg��wO]f-t�u�ƃ�V�3&�����3�N�'H�J�--�`�6b��/��֚^����+�g`r~�m���s�vnQ)^P�ZBe$M`d�Z�e���γKYE�4��R�}�{�=�_j�QӖѲn�L�����&Z�����yp�@�ޮ�����L��=��̲�I���|��V����Ӂ��͊+�C���~��sJ��m�C ]rEp�W<�yg +{�9i��o糌��/ؘ3�;l6g�oH��a�nFdx L�1������|q͆�b�������V��땪��&*1�a�{g}g�n����IH@rob��_�"=Q�q�*,c�W_1��m:��3U9� +�.ҋSR�^�Aֳ��"�[���Q��)�=4�[J.R�HZvr=۬d���v`�7krq%�ӺR�5S�;�0��Љ"z{<�"D��=Ћ��+f�N�H[H>�\I61�ߒ>�S�n$_&�gԜN0m���Q���9�!���D�����"�:��Q�TҟR5YU5xo6��ɤ��Ԕ�S���DIJZ�IH�/2�2,I"N��v[SSzylBIT�b��~I���{��랏ɝ�B������GUN=��g:�/c��Aw���Kz�z�tw"�$}O��c���/oq�� O�R������W���s(B�Q��Օ~n�d��%���^�kW>Bw�3���!�"X�P,1`�C0���u7�����b���L�qa�,+��>�'��/H�n㚢Y����~m�M��f��S�zX���uMF�����ށkoz�>_�=[���7�eb�Jx�aN�v³|��f��C�i�������L���]�T����v�m�K�k-d�Efw��� �#>��"$�"�CM��I��b�O*IR,�i�r�"He 1�h�rY��A� ~?/KX�lQ�*a�*Mr��,;�I*�}��U���y�k��a:�8�B���/(K����%w'9wwjg��\Q)�(^eO�bJLRfI +�q' ҍWi���?���n� �����9B��>(�nK�Ն��ラ,- +�h"� �3ҕ�*w�C+��W�)�$���� +���q�C]&���[�_��g����V�M�"i�ýRn�L�ev_��=�5�d��425b4H-��RbnrnfAbq�?3Ȯ�/���&kS��$�wH����O��su�J�L�@&�?"gR�/�Kl�����&!�FKΚ�h})�!kЫq�����q �x�����8�N�$��� +c( +�ᡫn3 �ҕ��`�0�K;@Gf=��͠�X��R��v��ʃ����{���]ɫ]iז��VB�w��:l��� �����114��BL0`� I�.Gi�@�ƌ!�Ɯ +=ҡӐ���!3�fꡝ�s���VrL�i-ۿ���1�}�;Xtsɿ��d�xv���Xv6=]����w`������+X��˭����=_��7�{�����;���Y��^��H� +@L�9��p!L��z�'��z�?���Nx� +C�Yo�2f���EeR�4��;����JÖ��e?�{���[�Ԉ!�Y�(�G� �lr�E�����(�`L��6@�6�Y��e!�g|��m@�A9t��mM �3l��6y�����GZ��|�7��o��u�&�:>7Ħ�ɪ6�՞�7i��t����¦kk���i%c�f4�kS��6(ሢG(��v�K��*�P%�O?��><��k����_R��cwB�~���^}m6�-C����ovo���~���nO�)?)��ya�&@��@���P �|C�4�`F��:��[�f������?�� ��h�vB�@�]��7L��� +�YD�ҙE�iG�,���� +�����9Ύ�c)�v��,�F�e���4E�W�@W��Cv�)Ǩ��N�b\�����������:����8\�|�素� ����.�<~�Ei|n�M���-�p�OўB���A3$���?�� +�y�=7���I�9�~�4o������t^�K�D�9��YU9�8��"G +��VC�FA�g�U�,�<����94<��ktǾ��oQ��������!�]�X%�F���mbt3�X����~�[bvþ����4��c����I|�_5���sg��(�زغ�p����Q��tZ�Y�ne��]�#���#�LȖd��� +�=��q�u}�K�>L�b��u���9� z^�/ZG���p�A���4Q�t�eQ���^o�u�\k���-�!$����9���ݗ$I\�@���$01 +k���b1"�.��x==��<9��H��s@<�K�x�%�`2*�J])9g*��I�X����;� p�EUH��d`��|WE��{��t� �?n�T���3����!�`���6���D^�S�`?�ւ�X��/�5�`�j��[_�����^_��<1=�^0Co���+�ҫ�Ɏ��7C�e��-����j� +�9/�����7�h�hZ�����+diE�&��r��9۲���hŕU�R؈���8R + *���{ς�z��T�R(�=��G"���if �jKK����#�*S��璲�e.�GT; �K�H�9���J�SV�Jm*�����f�'�K�E��6�1�J�#D�Y��)8��S�R�A�(��8U�)�$-�s��j�gY�Ɖ�Q^�ǔ\��(���f<��L��� +�6XU��ZLW�A�x��T��W�PC(���Th�>��>X��w������ �)B�D9��Ũ��6����4dί��w=l=U����m�&�fֿ�p�����K��w���`�-�|g�!�^�\�����ӧ3F��4[ԙ\J��zTIK<.���"�\o2��a�,�=^����Y�^�t"�&��~S!c��+`e6 +�v��êHvYM��k�T-�t�U�F�dX�^$�E���┬aJjS kSe+f$=2�_N�d��{�G���SQ3� D;�M+&��%c�����?�c�֦�c��O��P +��[����a%�K%'�7ib&�R��� +��K�t<�{9<���Tì�{�ӯ�?}�?�ѽ˕�P��'ĺ���+�Vm�Y��6��J�T��dM�w����Y�k��ڣ�2=rd��K^!{�#��-���1J)� +��>x�d�|0ҟV�FX������U�r�����)�� +%���4Z� +�%93i�(2��o�HH�t9�?p�>�����Q�#d�ʁ�4�B@�s;v�#��� ʺ�2�Z�N�rT���} �:���ɳ��]���Z}�$p0���|�ѩ���S�KD('����dR�� +�`R�jN�t�Js�jn��Wi�E��Z��A�a�Y�?FY����苈9jjt����{���S�h��c,g�D+�DR�j��/�-��ۖF�- ��n��Q��v +� �_��XPJn�?5���e�&n�$�M������O�̒�\��eUДѬ +Q[�UH�y���5� ��U�䕫<i6�G� �S�j�w�����y�F�oX>��1�����f�����I�w�u����&�|Wip��ow��V^i��,YkK���]Y��C�D>����Kq.'�0 �H�D��M�dh�mB�4�eHiB�چu������d���S�i�ԝ!0:C蔶V�~+����o�ձ�O����>O�&����X�����SgНSk��{{&*s3�g�1�{�{�ㄗ��I�7���"ƺ�Xoz���kv WRb�i��*�|�w���Z��-�8�#;A���rv7��CR Rh���K6U�(Q�ux?ƼÐA1�|�By�Dpp���4�eZՌ"ߞ3Tn��.�W��J��r��rQ�DRk�E͟//�o,�[�Td�k���#��~Z��}:�]9va���H�F���T��0�Qx$���!����؊��*�<q�Exo������c�r�s���Ba�ȉ�V~>W���?�b��}�a����ݳG@�{���ޫ�ӗ����U|h%(���9"��L9%�>J}S�@�@��$�Ap�~���W�������U·�z��朆������Q_PI��%D��$�L����A�Q�����4(����8���\�#9Kc0�Gy�y��n3���i��7��M�X|�a��]�+� +���<<�x@�����I#�ċ�1!`L+0��`@��h��h�.���F�YE�V���ݿ���3P���}rc,s�X�I������v����z�I�^�ԗK�ՀМt�<v�ѯ�:���N��(��?.�M�4@�p�#o�da��LO���/��mzG'����"��a�خ����q��D'}�pW:� +��'Zg���Oy�/�{���%;�@2B�h��_e����z��֫G$8i��nOD�ea�X[�"��'����� +wg�M�27%`�QD� + +2�/�Sjf���7�f�r�|>�M�Qe�3F]�_l�3���t�v��n(;�?��ԯ��|j�x��.�<=`�Dؤ�7Ii�JW\t'���"z J���~�� ������I�o~A|����'n_��I�u�Z�Vռ�48~/�wQ�!HU-���X!���1� ��^[�a��ʹ�+�C'�p"�|��գc�ן:xWf�����9<!�&�d�|��y��;�X����q�-��z��u�3�͢�S�N�9Z��=v']��������q�&�]�_���(Q�3���(MXx�ZcYe%UkKt��;0�[��C�&�z~"z��>��0G����{e�nt�-a����j ���Lu���&1%R�h�H.Ƥ�l�]O�Cz� +1LbZ{���aueޮ���#{���oq>��ѦPƶ�1w2^��D81����v�� +�[�b�q�yK�2�Z�r����D�&�E>{����Y�j �&��ơ#�xʿ=�x ՟��շ�G�\}|��A�}�_�tGhÃ�;�>*�=��^\fl{o��-yr�%�;ȳ�3���5�z?R�lgc2O�g(L��fݻ�ۗ%hנ������!��@�A����O⏓� ++J�"���D�~��SPq��g���^)I���)��� I�Y�������L��Y��s%���6A�]z�l��k�9�P^(N�}�=��y~~ѷ �T���W�WgL�U{��D�y(�0��VQ�:�ȓz�;'7�C�0��ni��e�E2j���jc ЀI�,��Ԇf�E~����u���Ȟ�͛{Z��Q1����2��>��}MߒDwf�����V)���\C��_��b_e�r����eR�ڜ +��v�jb2{w�|D>��]��+}6��6��OY��j�� �Ze9~��^b�z�D�Y����/����g�W���Y�?5:�O��}n��t8��w.7�p�F�\�'g�ZJT�\���ԃ�_vJ fP�9\N���-r[&���Yz����A4m�si�]���"�b˺_��I�@-[������z7�bW +o���N�J�y�No�`B1�ƪ�7ˀ~���f�oo3�wy4����h����xL8�5P���9���{1l7 i���1�W�Jȼ�=�F2ozV���֔斆�<��C��=j]�ȁß�3�5Y�0T<yG��}@��V��Yw���G�uS��3���u��9�;�!gRNk���Q�ޡ�'�mR\ݘ�_��@��Vn���¶�]���/����,��}8�A��~�Zf]�\��c�c�اL[�僊e +�W&�hx�k,�Ȗx"A��`�FUk�P$�Z �����nQl&D&L�������]��m[W�W��H"%��DѲII4)R�H�E�"]�I�Ī�<l7��(iͲ4��i^-�k��ڽ�aM�6,E�5�=5�#?�6`@�Àm?��@kd�je��d�[ +�G���%~�|����f�_�$Ǣk�=GA�����X +t]�Ĩ)�z��ì�Z�Y5�5�l��څ�n�TѪ���� ˖�L��������7��d�E9l +�4`�J�˖L��4�Ȋ�mJ�˄��;0�XD�r���z��z7�胭[���V^���@�t¦�i�Ƽ����wؚJ٬l���-���t������捎SLЇ�}|��TB� G�,�)MGΥ���"�yR���� +��K�w���I<��R�t��� ��h���SO��8�G����64i��W~�X� +#>D]F�9���g5�L��6�hq�2���2�!��j�y�s�XS<�9.�q)9��\z#�9�b5���x��_)HΈ�� ���xf5<M��c�����<�����p)��_ȱ6 +>��X���ɼY�j#�N�-./�%h[X�X#�����+U��у�_���/�e��L�����<��hP�>�銢k��i +�ʚ0�kh@)�/��hx��R��+)�~ty�&?A� f�&�[w��;�>������Wb�G>^ F�(̯MZ����=�q��3�ݼ�]�aiF���+`�17�cy�%Z�p-�ED���nY ���pR��(0�m��*`54}}��Y�8/q���^CU�'}�-2b�ʈ�[]�BK�q����''j�7�!��O�7?<0xH�O��1���S�زɄ-��:<*�KJ�S������~up]w�3L�~�aۏf�O�� κB�E�?�����&�9*@�S>���|�(r�H(L��� ȉ�BN�G�),A�UU#���z}^,�c�q��Ow�T72;gTd��, +o�MG �w%�8�r2(#��ys��XO=]FH.�{�:�$��KN�8M�S&�`0 ��ĒfOQzd^Iӊ�Ʊ6E�r�oO&|i���Un����"�]5zQ�-�� +�MDv�HܺV�P�(5ZTl.��Ф)�q�ի� +[T+x��k������?���w!�����"���&ڼ �Ӗ�J5u5�4�G�%��:���k�_6�ϛv�Oܹc5�5����!I�P���,��2�K��F!i6�α�����>2��{G��y"�#�(:�u�g�)F��>yl�p�S�ĩ���f�^Ir&����#/|$�Ai����������c{Y*�Z}���^��@1� �Dx���$2�q�����|y����s�:�C3rG�sB�"�(O�h�|$'�Hb��ޛ��e���"���6�'�Aրnx9ɐ���憪���$č����AҐiku]ۻ���q�k�D��{�m����]ܾz>R&�pӹ6�����Ϫ�K��&�U�D�ip��e���� @�|W(7���+���_f)?��2�g��J=1�K2���pf��AeV���������!��O\�;�p�`���e��g'���w�U�������}����3'���S����+�W�g7\@���{a���;��K?�Z��]��y���|߂�0"~�w_i�:�L������~0�>Q>�{L;=��ȥr��rrS�C��xb�>j��<��Cp� +*�p���bw0����xq�,�+y8�y�������21�WF�JeT�UFF �y�I(��h�H��M���b�f6+*�_}\���Pj���! +\ՀfF��n�nD;��t�o��8pE� n##����*�����Z���u�&k���T�ZL�X<T�WqT�I�љ +�L�:�]6Yb����*�R��oq\��^ +��.W�"Z��b?���,h;1��*�U��� =W?<�V~�^��˭��vA�� �0 +��HP��>�TjE0ۮ��R�qc�Ϲ�Zә�"F0�դ�$���S��Q��zfӥ�lߺV'vyڼ^�\��gf$!�����rs'���NG�����)����^�-��Ag�\��\_�(to����C��u��g�~��ʌ��Wy!�m��FA�������կƣ��C�X�����$� �99I�mW����l�mxW�|ü�Ʌ��#�snw�{ƹ����tv��i�m�����vɿ�g���YQa?g����� ���B�� Y;' @�${Q08wK`H#�i>��3�l&��̗��]�����&�;����>�>���]��w�8����! ���Bh��C�-�(*��������(P&� +T��l0�$C+��UӐ�����?�vLʨ&�۪��w�T6Kセ�E�~��>�1r13������F�����M���\}H���4��;I�T�C�ԇD�����ķ�3�&���.�T��?%�O-����3�·�n��X�yv}�/�.����KY�|���]LG���2<][:�[#f��B +��@Ԅ�T��O�K��k�)]Q���_������ݎj��K������C�XF6�¸-�0g.a�TW� 2Y�i�cnT�����3��z}�鷹�$w�M��E�b����y�{5MZ�vW�F"�� +l� �Wq�{:�s䞖�a�I�>ޡ>��A��JK(Y�y$��0 +������a���u���� +�gT�Q/�X��zp�S���ђ��m�nt�Ty���o���k��zC�������?�]�����ocy�����S��x +!���JG<d?i�_�0�����]R�czɱ��?�4_�����;Z�]`�e@.�+µY�0<�a�O�Z$L�G<� u�0��B �L�CJP=q�!����a� +����|]\���HL�t�Ty]�o1mS�R�T�� +*d�9J^%����I��B(4���>��y%�nV�+�J|#�swx(��x���N�����E~�P��WC���M���6���3O��9)WC�1���|��#��z��#��SG� +������Gڍ���-�z��wW����vf�6�i)WY��gYQ��^�����������E�س�ж��Le���eDW$bh܍�=B����K�C#�����m��h�іA +lS�&�TٔZ�2��1��4er����#�x�l�t�\�|�r�6=�>/��po��4Z�[*�����W�Qʚ����c�H2e�l��3�IH.*(s��'ЈB�H��W�P�dEɉ �V�^���2q����y2|����?��P��;O)Q��`�ҥN����x,9m�VN��`�b��5; ��FuN��nߝy���u<���VV]�U���I|ul�鮝sQ��A�`}�n�� +�s��F��'�#f�e��"� +�Zٶi��{�oX��//�,��%�Թ�$:����+�푈��l� +g~����cpٖ�E�^�����n�cy�lQ�|�Ʒ +�[Y@`��Z {�z�z몪sh�y�;�[��#��:h8n ��"���脄G"D�5�b�R�����8�/��${$I�Dk\���E�tY�e�Pv��U7%�4[��\SNR�yI ��K���JHH��O�[��d������f�6pw��%ӳ�ZJlI:<������7U�j3��`��zuT b�G���h�`�;����A.���4�\N>��Bu��$����ۈV6�y����,,�"m2�ʋ'v�����i�����?��M�K<��D g!d��l�����,ƌq[�y��W�~h�РX�7@�4��H����78���l�0����Bx�Q�%�U�JB���x~W%�4j.FG�a� +N���~/9��r���)� +7�@�S���ݾ�Y�w�3�V�K�3��OS+��(UUHc4�VJ�Bt���:�4�����}�eS��r��v����[�^v��HS�4�qY/Uy��Ы�p%�آ`gkF.��������4l}oW��x���-�Q�3�9<�͆� M����6�~g������>Da�u �䗈ݘHD8��`$I����8���ؓ|>��4�6�DƇE�LjqC�N$"��hPH�c +B@��aw3J}!w�����\E��TsM���ɨM�Q*]��uH+��������ֵF�����g�怩�ꝠP�Xl,� uS��ƨ��=3;�T�!��']'�*)����j,$��Y_y�y���Wͳ�+]�g�w�!ڐ��h�vQ�BM@�1_K��\� w�vq���� +�Nf�����ғ^=o�uxW�罨����*�-�m������y�3� +�g^�D[��Xc�Ȱ�:o��Ƅ�t]�\N�%`�t�C�%�a�&��K4e�l@j�J�4�H���r��͋� +��>L���4n���."(i��H#nAO��v �����'sڮ�B�\FP�Q �&���,����4��|�˂r7���*���<����e��{����������=|�lj{}�1q��IL0�Q���TB�Bzĭ����h��)� +�+QU�K���D�RpHX�6mS5��~��� ��T�G�3z�s���y��S@�#�YG�Bg9 .*O��h&)�f�,X�&��L% � +��� +g����i��DT#�'8 +��@���#�w�g�6���-�st&�\x)dЛk�W��ԇbS���˱�\n�t�{��t ����hw0.��>�ٽ�}�9�y��7�?��,���R����펃�h"�����G}Vv���~��XR-i +-)���_���lJ�� +Dej����B��GU�jv�i&�te�T��R�i����8g��nQ�$,mƂy�Uc�#�����HJ�p�`�n��EN�s��[����)�A2_aK��ۂoU��qb�)���:J��5��p�A�8-��P*&EYd�9�u.Tw�#����":��i������C$C��E�MPHnA�$�Y�Ng��QB���H���J0�Q��i�U>��y��z_D6 �=g��z�&>����<�s�sΝ +W;���X���>����[�г�e�뾕�=��QjT�sv�I��eN:Bν� +CnDX��G��{����rnsn��u�vOF���-��ғM +�F�][�&�r+չ�¤�d] +B�"Eq�� +�G�A�Z����fTj���;��˭O���Y|E}�h��sLF����S�!:ׄ9�1��9� +���i����\s��a%�L4E*�O7�dO*�]�.�uY�1ٳ���f[ZZ4!�Ɛ���aXmSBl�,��%�#k��g��l,n�M��+�F�kT�o�{�"eU����.�C2E�TMVK1�ּ���\�q��5����� �/�i�F__UK�[,u�9�d�rn2�0��vw����v�wN/��g�z���Sd5��?Y>�>C��k�_G�鵔N�a �@��R98(?�(�ȏ�/D�o}��ԅ.hbwxx.�=�2_Ed�ǨxA�#�hNε�a��wX���r.�iҜZ5�v�D���M��M�7���^�s��z���ދza�y�d�?# �X�/��枆�\���:E�l���e�� t��s���֏�1$}���1�.�[KJa��H��HM�:S�ì�B�(T��4�?�zE�guܙ*CA�.�E�B��dN���)���\U�������yr�����ʄ|m�`�c_����ư����_���&N�95���V3��OM����`%_fr5<������w[��kQ5˟��U9��Ț�7��lO�~����̷��,e�7��(�kJ��_÷�g�Y��0���g�U��K�!�uN:��L$�U�jA̪d"^ +��:���h1��+t�*5�����1�6z�_��,�- +F��L���$N�'Yz�=���eD6�c�o����Pm��̶��c|�AuM"�F"�F"��b��NJ�H̠tX�E))�#� �x+��\t�!�(�~ږ>&1TQ?4����R]h)�Qj?�p�����3�FT% �h�U���������u�^S�J�c���W�y��w�=h3�:�Vc��dz��U�ts�i������GE�Y_i��������[n�8�p��2uB�.�vߛ���l�&��]���f`Cl-���p�����_�a(� +P>P�0t ���0�/�5`;���@��j�:U������ ���0�#������I�_�@=֩w2��2@s�� �+�`�������QHt��s�"��s���?��`����6?^B %�PB %�PB %�����RΕ6`H����m4��j�;X���� ?�k"��DR���T:��㥎5k;���=�}����߳ad���[���_ɥ��XZ������� +�pZY�9b��v�C/������w�ŝ���[������/�ˀK����x�l� c�2Iúb��J�v����Ŷ +ۗ�m +�)�ou�`Wotxr�ā���������=���MA��ܞ.(�$� 8�X>����7-�������8���k|�o�`�ß�v�w� �PA� ���MM�N�-һU���_�}}��6�@F�:�#�\�%�E�������ی-��:�����I=����T/}O�7]�����51�ȕ +endstream +endobj +289 0 obj +<< +/Type /FontDescriptor +/Ascent 891 +/CapHeight 656 +/Descent -216 +/Flags 98 +/FontBBox [ -547 -307 1206 1032 ] +/FontName /MCEAOA+TimesNewRoman,BoldItalic +/ItalicAngle -15 +/StemV 142.397 +/FontFile2 290 0 R +>> +endobj +290 0 obj +<< /Filter /FlateDecode /Length 20092 /Length1 31644 >> +stream +H�\Ut�g�����3��DB��Ƀ<<B!BfB�U{BD3�H�E��!M�,i�t�T+=�&[K�M5Q���Вu(�X��Ҫ����f���;�|s��}����}�A:b-R^�>0&sRj����N�����5'�XYК�+ +������2`.����{t�Gu�%�Gg/.�?�A����9�Y���|D_�ˑ��V1���CrrVE6��Q����ys��}X0\���:W�[��M��;��.q�λ�i�]����s2?oy��~�BK�}��y�[NUA��W�./���#+HmF `4˺)�{�Ѧ/�ͽи������_(��b�A +pF�I�Oc����"��?�Fw��<R�6�0���wх"P2�b�^��0#0SqC�&oѵ�,n�Q�wpM��\5MoB?�z�hΒ�K�Fk�#F��[i�h����@K}� ������c.ޥ�ufc�P����x$9^����A�r|��v��o�_!J<�C��^�J�F +�q�J4�0V�^���3�7]V��[��t,�A��,��M +�r���0L��f#%�#*�m���C�Ei4�^$mV��s��=$�8� ��Ќ�ԝ�)���xA/�jU�V���������h�E� �l��㉼�OE�2��y��1Sd� +.�j%+_S7�/ߡ�{Mӂ�հJ6���)��,�x +�p���2S +�1����9j�ڣ�&����Xe|d4���AhR�V��[�M�8���K���S� z�h��m�>5�9��#9��]UCT������4�^��6}�n4&J$��_,�#Qgc� ����q�wqߋo��b�F���4�����ʣ9�S�Ro�TO��j�ک +��B�vG���Z/�����w�`��h�7Z 9#�,��_�5����*�J�pI��[�A+H~$�x�E��Q��ݏ4ʢ<*�r���F��L���l�<��8��r�ළ��ܪ��p���2��:��i���u?�~���;� +S���n�`δ�Z�E<��ms����-�}F�1֘m8���.���1��㡧&�T���$])/����1Gh�t�j���� }�� ��%���38����$B"u��& x�x�'��t!�SR��[Jo�[�'z�C{��j�N2�.�5��ľ܍{q$��I�����+x�z>"�q���>?T�j�r�RU�>T��/�W��F=��h��5��>I_����G���8S���t�l2�4��S���4�p<�0��*~�S%��S +�T��m�Z��_a�c���8H�Q+��*��V�a'm��^ +;%s *��P� o�'9Y�S�fo�ƃ��J�u���j'��o��ʙ|��jC�������5[^���4{Im=���}��g��m@yI?����qm�{��}��´4ժ���pHeJ��p��B�Ee��-��0��#]D����*���i{�")��`�������2#��Iq �#]*9D��2*��Sgv.��dv*G�n:#s��竿�T�Û�λ��N.��Y�B&���T 6j��Iv�o����8�Ӵ\��p_�Bf�M���l=�:��P��j +���N�Q���� +m�۪Q�{���e�'��"�O�d�� G�����L��[w��@�#c����S�SE�<)�N�.��4G:}�tI:&�d��z���2�m3�TI��5-�H&���f���eN��B�p�ڭb���}76%$$��=*n��/�3x���Q���������[���سG�w�n]_��۹SG��^�I�����+,å��&L�n�ۜr���A��*GI��qY3<b�_K&�����L�I2�gI�¨�(��fu��۬54kZ��o�m3��?��o����VG@����Õ�"g�#�.�;x'��yGG�ڻ���s����?�<�;FV3,�)WO����a��{�R�g�+eZ��<3:�E�sm�.�ƹ:GzD��1�2%��3���`��:�nCY�/23"}�lY�٩.��n�K�ص���n����������.�����eVD4�? UV�LDƱ�`�� �6�5&����B[5I�M4�3�m\P�5 +5cl��L�XS3��8656�şT�����v�EۚL����{���s�=������gUl��& _ѨG]���6����VDJS�oe%ր����y��v⨉0���X��u�H�*�?�]�^�[U��H���l}jkb���3%�|��TA��r���-���l���+!Z�=�%n��͖!C�Ơ���ڰL��tn��ݩ�E�~�r,�pc#���6�|�s1 +�*5h�kp��cgU���1��~3-���]#�����#K�GZ�5�&G8� ��YY�q�8.��p��q��O��D@�s��>*��Ze�D�<5�Ous�C���חVX}-Kj%�ĬJ�^͒ΐ$~K�C��z��{��?������и�#�V�����E\kɋ绋K�*\E�j۷��Q=K���-��Y"I�[z�PRD���d�T�i�u�H� 8c�jDsy�q�s���RS�R) ����>5�L~Vt���~�y�|�zqy��7 J�E����n��W�[���ܮ8��8"��ꊪC'�onN�{*���Z~6�w 9S�E�(V���'�:^1Ψ*�ő��VֆH���Z�� *�9��cG-��>ԛ��I&`���s*� U���/�y� +�k������l����Sh�FD{�Ms�l�3��Iنvm2O��y�C$ˀA�*�;�Od�3YƼ�נ����:��� �A���t&SƟ�뽃}����k�d|�Xs.l���HS���l�)��|�XG ����m� +B�^���'���9�X�� +;%�c!�b�<ؐ��(=�]�O�"�8��Oə��X{ߍjg{Ol�m�m�������7�#�l�uT�1�����O��T��A�=��1F�^�I� +_2j(���O��^e5t/�)��b�"�E7̓,��2֪�I����Tj�W�e@7�Kb���]C�Зj��ʷ�!1D�l?5�o���x�~ �>ǜ0`�Hg}|"|>��][�y*l�3����~7b���� |g���@8�"a�O�!(�7�/�6`/l +lJ�NA��C����<"�W���}�_968`�d��ڃ|K��9����|��w��������1��-�-��s|�iz���c*�|�z)S�!��b��Tf#�bA4^ًx�cK9|�N�8d�O�̆���XG,���ť0wɣ�$�s�Џ�5��Jsh�QB��k��csM/�@�b��4g96�����.m��I�U�9M;��F^�]�i6�ό+Z�٬?��۹?Bs����;�M�h6� +��fv��t�V앜���W�1� +��b���1���s�!n���q�����T`ē~J���K���TU���X��:�i�X��o��b�~�/�T�M�cCٷ����s>��s<����k�s@��h� ��;.E�1�F��3*NgV|J��.�i����`�jbϺ����y�v~L��yw��ߟ���Z䆕*��*�^?4' o���^��cy��8�A�1ϑ�<�94�������������'`c��z����y�q�u��'l���XA�͛��*�p-�=Tw�V��e �E9�Mȧ���R��E�) �����k��ι�Y-��NBWd�YA��S�tƩ�0����~�f�ʹ�,�*���w�s�����pl����o����+��?���e<�嬐��p��Q�Xg����`E��cX�)x�ӴM�#k���X]�3�t�����.ϙS(&f��o>+��u�f�m4Y�M��q��)o�y��Ha�MI8� +r���~W���t����Lj����P:�h9�i1�i�m��*�^�L^2�b���lc"�i�(S�EZo~'�pN'�c������W�T�\2�Y&g,�ш�)V���SYd���8nA;c��t��Q��z�xJ�i�4�ȷE��'L�A<K͈�k�����(`�"a�h�>o�i�xA +��H�Ř"�����V��x�q�Uq����c%�_��}@t��*:b8���Uj3ڨ�x�Z��N<�Z2\���r��/�#b�<&�1�w��"���p��`���e��*[m;C6���M�C��պ���X ���@��A~�O缮rV1�8&!�K^��'�mvc�3���E{ +� ^��E���G�L)�����Dn�Z��p0X�y��߃?�n�E��.F�3�{�݂j��sX��l�����݁�<�@�6`��a{lq�E����%��s=�K��O����j�����:��š�ҟC~��{�S͋bJ��C3R=��.`p0d���_T�� ��&(n���9Ă����vщ��XJ�@G��$%io-,�Ss���q�9f����v�A���� 9W���o�6�����Iw�}�$ i}���,[�,�l +�j��cB�1�6SCJ��4Mf2m&���R'�|`,cCK[hQ�f&���L�L[�?��wO�0�����yv�}�}w��[��6�-�����M}�_M���k��R�� +�~(�^�BP��Q�<cԪ#PZ�M��Q5��U5�O�%v���=d�6�m�Ͼ��0�c1fz�fa�췌�I�M�7��/���B:���j� +��3�sMд��0d"Cd��<��������[�4�@���J�i/��ir�L�;D��P!cx� +�V�m��P�Ew!�z +�6������2��3�G�KW�yQ�����r +�\܃\�C�F�U���(�A�@�"�{p߂�&d��7��I��6��&�Q9�O���q$��(`1G�?~T��Q��Q9*�z���@��d`�Z��z�{��y�^���#����>h5r�<�#�n��~Wu���.��.�/.��K��Kp��]�N���'I +����ʠ��)Rx)/���&I!���&]s�i�5Ե��*�E�ܒ*��âYdb�m��F�Lc +B���߅�����[���J%K�_�hJ���B���*��D��:� +�e�x�: +pOx���I=0 �.��������)���?Օz�Ot%���l��?r��|"��|�O Z�2k�}y�������ofMx��?�C�B�ѿ� +^�k�|�-P�0��F�7�!�_� �JD�×%���#�d�4dRT�+��lz}HҵA ��F�Lz�ɿ�m������|�ȿ�� +�O+k�X�}-����b����쏆�2�*p�}�����!lPZ3�6��~�U��5���~�OA�l�s�]�7�/`�Wg��I��/��,���}�c%�>�O���<�!,�=H���a� ��� +���!�Z6ȕ�٫Z{&�a�.m +ۡ�d���lSx�?���0 ��a���hk�X�<�lu8E�$�N������?�ZĚ�v�l���,�Ǫ��F�����Z����Dg/���H�_BV��?���S�q�X'ֈK�E�W,$�d�r��"I�Y$"!� 5�@]��)0[9���Q����`��5����8����̧ �Xל�)q�=��K$Ŷ����'��v������u��|kS��n�I{%�7;@�$'`W��H�9>�Xi���1�U�؛������ى�}*:qD�+l���������r���r��ɟ$�u$�;;���2��L$+֕m� '��xl�s���r"����'� �C�{�;��'2�����`�m7d-�N�a���0l��Vĸ��r<�.`�C���wQ���w +��3aU���66*��AU�#h��� �d��h�n��?7+s[��f�C���sW��f������?K�{�5�D[Ǩ��;[�d�Ⱥ���lg_8Vz�үP��3iq7'���(q��M�:�����6�l�i��n�I�A*B�^��+��/9�-ϛ*��Qn����r�;o��x-�@�s�&+t� �#�'������c�������>_ܱ,4>B�X��@>_��}��xM�%�_"pïi�O�<dF"9�#���y�(���2���l�;A���A�!H��gMߴ�4iϚP�֧�k�b��逞��kOUz�ʄk��_͎��rdGQժ�$%��c�)]�r��`U�a�Sx��m1��QKw��k:Tm��z�"]Ϧ���.�*��u�*����E�fw�{^�n��R�e����ҍ�nwE���"��;������5�m�^�����j����J�XV˛,{-=���|I&����dg���,=[�M-���g�f7��R��r�m��Rt�8uP�.��:�| ��QU�������dKEL���gn�zQZ����۪��2�P%E�/z���/�kf���ٴu�j�;2muUCj�s�|����f�C!���z-����7r�L7x~�"�f�\XPT\�!SA�FS4��`0��[�o[([��ٽ��҆=�ze% +��gc��U����a<�r��U\�XB��,���¡'�7�c+L^�d��|e_�]���m�SKLk��Lk�C=n_P. /�>5+�����d�}l�ǟ��mǾ�}��ܝ_ξs��yqH>ʆm�PVB�$@`�`�ڠ�Q�B;�7Рce0Mk�Z�Z���f�6mS�Y7�� ��TbPu��=g(C����t�������~Z���>L�Oɚ��=�W�Q���k�b\�˚���dS\�A�E��ˢ�n�<j>�]ր�i��y�a�V]���He�m)@��R8h��W�Bq��)EH +Y܅�Ny�X��6z&�OZ7�9duO:Y(\\�J��fh;8�u:��im��U�AU�ں������ +p���Կ�;�Y���:.�S��eӁ����i�0�&�,\)���Ým� �*�p�6��q_{��$gc���ýo������ʇ�?9���Zl�:8����k�v�s���ؼo��z�ݽ�[��x����C!&g�2��D�/���[���o����ů +%���s�"9Qu��q6d�K�ũOL +�6�g�O�D7�Qc�d%D�A����A8Lv��;)5��8�.B�s��q9��l�S��?�a9�p��(C�ѳ���HO�����I1��d�g����/_�d�"��q{K��P�Àx4�F�*�H��v��F@Gʣ�#M��:ɉA�>4������#{�N�l/��Q��ex���v���vrceɯ�~��ߞ{k�[�;�&�\��o���(N"�"�y��*)�6s��4�vt�w�2rZ�腎���^��9������g$M��r��7�Ѡ�6کH +(i��ϧ$OZl٠�ź]D\' .�g�bϲ8���[�E���(!P" �H�}TZ�/X@F�5 +Vg8�<Ma�~U�fz���n���b�u�c8����ʦʇP�|R/ȳ^~�'��ecK����f6Ϡc��U�0v�q�����zG��<��e|i�i��z����C��1D��$�d�d����k�B�IKjI= +�j���s���b�O����M�&}kdW��$�7�YdR�����9>����j�X�`i��q��E�:��h@q����HJ������a版��e����|!����K(8�SW(�*�[rn�n%�#V����Xć�'zpnօbN��h� +��pBg9�C}���$<�@�E' �AI�$&ܪG� ��5�G��X�E�'�{9x8�ϵ��0�������.]�Fɘ��R#��eտd-貒�G��"j��LF�/��ڊ|h.�Fֶ&��-�"�UC��ZOE�o=#dB +���7�|�;�j�67ٸ�i�/��Mؼ-�muVǧ�g8��r�6�~���k���������H��eo�DZ�g������`�� +bh'bȀ?77zBTQ��-����`c�&h�Z�ƚ�n��F��� �-�.V{��T_hUt��NX'G��-�q��=�]��ݩ�W���8�4I^h���n>� B��(�0�3U^X����jD���D�yA@��L5�Z��| P�H`Z�$�,�}�>O_A��E,:!q�"ɼlQ$I��kLJP�D71` rT���!ULx=A?h��~��f��\��%�E|�ik�i����NF� +I� +���-S���]��鸊������m��AyX���W�� +�Wg�il�^���Q%�3^#���ľ�6?2��~����'FE2�Y�(�t��S��1,S��Vƨ�g���0;����dJ��0HTV|�/Fu�b~��y&m%b���3�?�h�'\2��ũ��h�ls��,*�����~�/�\�y6ǺS0���%��ry A�\�E%du��/��V��^��b�~���^��~{�{� +P+D���@vZs�ܰ��}�a��zˈe��0����J�t�A���ׯ~lP��~����B��b��n��JQ���<���F��թ���&*�hn�2L����·ק|�;����^f�m�<���t�v��8�8�=����uߑ�Mg9�P��&�,�h� +)�*�Op7��Nj�(r�Y�W�4�(�����1=$s&��xp���h��c���%�n� +wzZ�B��p֠�>�A�piڕ�]\�^wG7̚������j�E�Ǫ��Wo����;Wv�rF�%*݃��֤|���R�Ǟ'z�y�eF{��9<��y����]��Q�w|�����>s��{{�����= y@WsX%�!&<�<@y ( �Gp��H�b�����ZKa����:�)b;�i��i-3u��!N�PZ$����1�h�����]��|��G� +C��^���L5F}\ZW�DQFoeZ��N��[��s�|þa����(��;�����}�q�eX��F�!,������|A��kjL�/�#s�z}j�������x���E^�"~!��T�tëz��?TOM����-%�z�H���� +Pnz-�$�0a�U� +�������2��������1��ć���ɏf�7���sN��@G63��8�wh�oGa��2�3��E?; +�,Y����p�/HE\�y�8`ks�����.�K�� /T:�j?F +�]ʶ�!�C|��GC(B����xX�� �F<��c��V��:���Z��NRS�!��d�L&�hBfD +G��>ú��������+J�I&�#�u�i����h�E�S�"�"�Dh�\&RM���h�&1g�ȿ!�� �&h�{�J{��7�,D�"=:2ݐͅTM +i��N��m�b>t�Q= +-�X6ҵQ���<�&ۢ��x �~��3��3�z�����DjS������Ҫ)�B6��U̹R�\ڿ?�>�ܘ�L+��㫸���c��Kw/ +TJ���"9���p�Ec�ӯ8���[�q�AӖя�|ѳ{lh���h��ٲ��xf�!9a�S���#�_Z"���%��X� +v+U����9���f�*ڝ�v���ےD�z�mRj�?�kY>`�Zm���7U��$�q��lQO�"Ja\@���,�%�,K�B̶)�a(��A�^�dIl�3�%ÛH%�$�a����۟�� ����^������a�+�O��*�������Q�|��E?�$��y�s�'�0m맠�/Q��u2 ���E�a;����G�[ "�v����<�:~Vl���:�ө�+�|��le!۪�z��l��»�sr +E��x��������3g���U��?�.@O�:q�{ֻ������F�i�\���� +rMᑉߔ�p��o»��Z����z3Ū�h�%1�h+y�'j��P88;�ǚ�k�U�&������P?I E��'u�|y�xJ +��B�}!K���j¥W.n���?ti���������}[7/}���_���×ѻH�wy�x��q�w^��e��>��M<����(��B�M�kAC�u�T&?D,;f�[��VK�u�;��&e��r�=��ƾ��ž�^bC���"F���'aUÆ���P���A�b�+�a�e� �߁ةP&ZC��D¯`PD!�)٭��t9�RmCS Qu�,��o�_֯�~��5���� +9� ,Mz�i��=̛��E7�~4��"���u�2��_$=~��k卵L� +�[llP "��&6G���w?�7�㛃���uS�sEG/=�|������qe(���M�,�� �V�F��;N#vZ�~|�2^fƞ.��O�\7E�S��5�X�Y؎Zz�8;:[o��$Z +��#�Q������M�M���=����B'ٓ���ًl�r +�p�@ +�5F�.nu��|�>C�N}�IR��b�8)��9�� �jm� �ܤqOĬ�]�A�K�v��k��i��:�1zV\�q�2<'�U�J }I=�b�� nv/���� +���ˀ��*���& +�,�bA@������Z1/���V����v�@�Q��)`?��� +����ȭ�T!�c��ܢ����!�J���F�E��;��\A�iM7|��o��y_e�D����~�~I8���lX�M�^,�Oo��er~���C�6V6|�.����;���]���d��A��:_Z�ĵ�p0L�R�O]�>U��: +��S��� +� �IS� x���fT������Fl�0��|���nP*R��M5��6�;�������&uc�X*��9��7�Ӊ�p� ��/�s�s#8{����h� GAֺG����A��i�zm�����5(xW���%ӧ���v* +�m��%jGu��ۡ�Z\�(��Fl7[���ܞ�s�����#{������ͼ5'�ޓ�[��ɮʿ�Oέ��R˘iz+M[�����>��[G64*������'��"fS��#M�Qr"�=ؿC�Q�Xj� 2�p�o3O����`���Na8�$HaِDV0D�eͰV��v��6q�������|~\�w~�ۉ}�c;��lǯ#O�R @G1 mW^j��S6XTQB�P�*`���)e�����-Q�mҶ?X3�����I}E�iq�����,�?�^�����[t+� +�k��bP�Y����������cp��i��!��I�ۺ�J��Q��=fi��6n��CM�'�D����jGC�p>>���Zq�6A��@,=���I�0�⎋�af��w�)C��py�z��4ԔWE@ +aʕ]fSz#�gs���[�����D ��Tm�}�ș�G�� �8�߽3���h[@���Z�e�A�CrK�7�����k(�@pi��G^H@��!Ì/����U� a&��B�,�Jy.�z��^f���pR��t6~A���[��>A%q�:��R�t��I2��J�$��$�H��Є��Q��d����&FA�\QL�J��K8Tp +x�4�s��"ѣX�t4�Ŝ�+'tz���K�{�磅�py7�� �Ly'���Je��+w밈f�2:��8�Y��H(?�P���Aay(�[�����������D�Hh��7.��Sk���7i��DB&�}��5� ���z���xl���:wl�ُ~;���6�9����u����ڼ�<��{���sC?��tc`���n��< +��Ύ�[�?��gw�J/����쿃�3#�f�cY�<T +,D����9�t��M��Pp�.��q�m�%��0�O +f�,a2�~�)� +U�z���C��0k��`}��Y,�c�b*�=�0�@�5������>��(�CŨA�"u���>�(J��Q��)�1��!�{v;4�� u�p��qɰ�c��G�oP��T��IQFT%��˕"�d���bX�$��X�Jnh(b�Z�����|x��E���;S�P��7�RG�Pg�۠8�5um�����ߥ�z�6#O���u �S�v��G^�^ւ�~i'�)�=�@ms�Ek6�\Q�����J���mA~�o��� �ǫ¢���4K�b���A#:;M��mo����,��}��|y�P���E��[SޤJӗ��b�����U�wg��2�v��y���S�S�wz���榬,�x�@��{�u+g��8$��;�}fo?�Ӷ3� �ǰ��K_���í�� +Ks��bd�O>��7���;�b��}L�1 +d���|x@�W�ƄC/�O�_Ό���gZނW͗B��W[��]�y24�����>��i���%Hg��� �c4:C��ɌL��}U'uPw��B�C��+q���)I\h6|, �榒���U���u���]10\P�N�7����#����W"�Y�>���'\u�e�ɣ<����_c��/��T8�B�a��I��5�m5r�j�5�;���p�B�}7K�X�f�髙��������ǯ�d} �q�\FA�K�c���z���n�P��כ{-[��`~�_���_���ga��=�����@v�D6Y����5y�Ã�U��/#�;�>W2�S�m�?U����qC?��z�5�5t�!��i9ZEk���D�= +�H����;�*fJ��2��z�v��z������7�TS��1˾1a��ySy,�b1�OL��]V�p��*x��� +�b��[�g�GN�{Õ��H +%�-����xYS�b�Q +C�� +@+YP��rXȑU�����������ǯ�N����Z&��>��B��˼�� +�no��8��K{/�u�y"�ݱ��9����� �)K�*�U�(�gZ��Q���Ƚ�/�KzZ�0M�mIG�Ht$�t$��$_�F�c����m���h���\c��:6��_�D"E�o�NN� �&�D�m7�!�\� +5W].:xGy| +�ۼ �N�Q�hx��zP�O�mj�� +:D�[oAǔ�M��rS�'`�\���b�H����9-�D{J��)]��G��o�>gCU��c�aq�0\.���Z�=2s���ڢb����Fد�_������<���FD.�ℂ�� �7aA���C�ˁ��"l�7��DZ-O�ʍ1�Z�u �"����z��/,�����L�t��/i,�.�.�?�6Ґi�z�jJm��5��t����O�����^{R��/��9�o=�Q��M���K%Ǥ6�TJ�n �~�F�3 [.S���,��x,�o�>��;� խt:���٬w��ǚ��Mw��6q�q�=��wg��9����/���α;�c�; !M$cԃMS�آ�A �Ք��5��`�J���i"����4i��n����ƴ��T��5�hG��g;!L��{}����<���~?Q-�oK9Ⱦ���D��M�IrX�qֆؔ�=���eH�[�4{5\�i�4jM��#�H�m�&3#�%�����:�G��52��<!9� +M��7T�GWV�)���c{_)���J�R�r6YE�buʒ�I[��"PF��W��х��,�X�:�@�Wڕ���ZE-��*�D�j|�P+�y^����w�ۤ� �c�u���уO�����i�sjfb|������]���I!�J�WN��{�'�y�^t��Ԗ=��5�hi�3�d�ON��I?�9���o��' +�oN4a�'�ѡhґx0!�=�k�ܓ���M0G��V�*8�[�}�o�ތP���|W�Jc�� �đ +���hm��7 R�l,۾ +x�B�4��n�7����{?�=;�~ ����ah.6�+�+��Џ7K���{���yC�p$�XJh[C�D�#R�j��� �^6���tXg0�],�*'��bE�a�+�pX���g�l��5h%c��̨�t(;�XWX2\�P�0���lq#1R;pu�R2�J��R��?n��:���v +PU��c�e`�� +��f�����-~K9N�Ơk� +����'Eٍ�z��h6����e���EG�c�29���d_zi�C�����Zd�f�щ_������XG���l ����g�4�\�h��:Q�����~����%���ڊj?<8��;���/��[�b�2(�İLVȻ��O �+ļe��*\w�20&�b�лs:D�#LiN�JT��$/p�4�&B�:h��-���p�8s�<�����z�e�2oQ[�U�l�A��:��q�n䝣�:��j������N}�E�JTU�Ed��6=.?�z��0�|��5���u�}ʄQT(�;�{;u�漤Y���L���c�Ui�"�nH����g�$��>��C �I+�*9��jM#���k��3����c������֡�N�$1�i=~��?˛���X}-v��y����:4�R9:��2�6�����D-�B��m5�\4�����9��Σ�����柙�5òBD2�pׂ�E�e$�ӺB,�\6V�.X.�N�����xu�T��Z�'�m�l���vS��Og����CO!�����[��v\��<���,RN�Ȩfj<�W>��?*?8;q�G�E��I4h�6j���#\�X���;І�*��0��s7y5�6�LR�v�)�p�D�!�F�x@��~a(2�m)F���"�EOFNF�q��7,��7N2BF�wT-��w����S��<��@8�9Q��%p+��u{F� ��y�TT�D>���@@J�T�ī�EJ��A`%o��8�N�u**G���p)ht���^ ���@�������D����X�9���$���j��q�٨(�*�[�*�eb�V!aC���C���ƚ�"�[�u@��ʝ�n���ƮFE�jk��e!2��)V�����Mf�;����ښr5�R��_�����v9����ؐWJ�N�-����l,��k{��2d��v����^��ԛ��,��+��md���сK��,�'�m����ix� +���� >�{�L9�7)D� �Y�����>�$�N&mO;��AЏ���1�)�����������ZD$���c��c2IC�#謌�a�����̣�n�fhdL4���aL��c��S ���[ q�+��l�+�����X!�E�G&���߫��8>˂�U�?�� ��_�����Ia&c$��}:���"�ّ���.��M�h��-������j�Q.+ˬ}��-̙#ȯ埘2}�I���x��]�4d�Oh1�p-�?a�'�yk�%ב����\.>u�x�k69��z�\�9�|�b�\�r�"��Z�a���a�ۗ��g3�cDB�\KI�"�d�*����9.�k�Aº�N1��3�6�ʀ\N�҃�6�.=53� +{c�(��������r�T'`���α���ax\ +��Lj0o,,�2���w��� +�/��&�;���������w��g���?$Γ��Đ($@CR���u�kU�BF+X�L��mZC� }Q�$ЊR���'�ۋ��t��E���������ě)�����������|�MSd3~�oF�9:�r������Yf��#o~�F�Y]D� +� �[�NzMs�j2i�b-���w-�<F����B"^N)���,zS��K�Xc2@�ے�ә�L��t��)}1m���Ȋ�<C!����DP��t����4~�y`4�L�+|43�L8�ʹ�sF�^��Z}:[��Q�D��ޟe�֥f#�{��ͥ�<�O��~b���n�M���������2\<��(���9�\�'6�)c��ٿ���3�N�N��)�c�ki�%5�lL�l��)g��u��`P�*�� �����d�m0��u;�w&�i�h~������u�H�v��2����ux&��7�h�݇�&pO`�H�A�F"�@���/$ƒI� +�e��`�1$3���Z� B��#�Ғ5����#�A.%0AFH=E�HFp��TD)d��dˮX�)I)E��'_��p�>�E�Q����&�3!�9�R�T��ϡ�m;�7%��qڬ��%Ƚէ�C�=l���'�l)�p��zh?��[ov<��������h��!e��*1y+���7y����gptw�Em0��Ks��`�0[~�x��f��}�|�}��*�f�b�5zw��T�SI��3���[oLN��H@�����z%�JN�o�^�"?�U�Q}��Q�գ�z�島|NK֬Z��T�+�y=O.?O.?O>�<����Y���T�XD��<������S�k�/μ����ܔ�:/7VC�[�ɍG{�o�8�ʩ_My���l���?£c�$�Re���VH�3�ꀸ)�/?h�tx�m�m���y��~�F�$M��'-�L� 2V��� ,��p�[X����,I��XҼ`��y^� +�$���q��P�1��k��\�uX�ħj����ZT�I-��V�ih'�B��hG�`�� Ćk)�Rp�n���zD��Vz +�gam�of�����&(r�`EyW"�Y{E܃�h٦���J=Q+��� ��t��1*�2���aY�6lO�b�����'�w +����d4ɇ6k���S��.Zl�r�D�u�����n%�5�zh�O_(�����0`�b��[��{��_,�tZ�9�b����^�I���p���n��;���īU3�����`8�8]<�a�f9;��Ͳ���(�!j��T"tS��`=�H�"�z+(VDZ�uR�����|�)iH�}�b�JvV�c�<����e$���s��\p��`s���k�0��(6^L��Q��s*�f[��^X�g���jAT���wYٟ��߯T3Yl�p�0u���ibʧ~�>���n˸3]^te���7���M�jV��ggw5��ɨ;P[KkuzGn�)��V��h��\�������=�r��Ґ���?��]��m�1����Cإ^����Wu��A2 +d�� �[��@K����$w�_$_�"�ߍ_�_��'n��¹j���C��P,���45��]q<^v���l0I���c<͋<��q����0%���p����|L�Ц^�I�JH� +�1���hp�k2f��20�%t��1Y�o�;_ɔ�%g��x+���K=(N.�K����e�j��k�d�Q������qp��℄ʬ��85��z� +�j��?j�T�x +h�uGZ�����Mnk�o�9���R�p�aC�����W?i�vհpc|z�d�Zl�]���N?C�Y��}���`�͎z��N�{s�<� �����҃i[�b��@y˜�s��@"�3�f���BĈZ +����z���6���v8�al/�K���;��a�e�2����M�qp����w�9&���p^">䮃��]�qW(`�� +��I���:�Յ99V��8NM���g����jnj��������)�ʚ�|�4MY�Y|#�i\�f�v�ƭz���Z��&�QSUh��,<���nH�S1��ɪY����Z�A�!�]A��f�Eh�p<�k�����y�R�N6Zn�J`D~{籍�D���5Yd$�`S�1��m�[��V��b��n�{o��/"O��å�i�h3I��:RM;���1"���)�SvP9amg�g�����M�f��Tϙ�����j�������><�ޙ}xg�������ά���m�w����]j�4vHCA��@����RB���UH-��U-���(��#E*j�U�X�"�=wfPZ5��ZU�Y;w�<<{�����7����/r����Y��L�J�ϔ��o �[o�E���ʁ����\��el�x������|�� )�jC�d��ꀒ/u>�ۦ{>����[�Y�P�{�ӊ��8�f�Z=�^��ԁ�j�|{A����z$��|51�O� �i��aG�R�c�/VÅ��X�hA�-z>Z�Х��Z��+P��s��X�F�&1CK��3�7Z^�z�� �<�Z��r�3�4�@�I-2�ƽ�N/6 +4�"��Ϋ��~�u����jV����l�&{��yd��[���KBϜn�*�zb�о�����B$�us�*�yF���?�T���56���['}���[}���Z���ג�C�� ,E���r>Q�;��q��#�"W��#7"y�7��a����N삠��b��̿㵛���~����I�Or"�����D#�DD]^�a#���5��VF10@�UwS�*�An3���C����P۲�[��nώ4 +�;P&^)�L`1D�bI�"����ͪzJի*��K]�@-�N���0��@�)V�ڈ���b�ͭ4��M�_ʄ=�b�߁�r3��G{M�_���}�xP�I�-���t���k��iSrCL��W�u<y��)��ƅ��>��LRuy�q��e��q&�)�5���ɸ)n��1)��C�r��D^��pu�:��P�K�G~R|F>f8�:�x�=�<�xC�U��*��$��,���xd�C�Q�I�[�dO�G,P� 1������Н�YE�5DVT��:������Q��s��R�T�Ѭʑp����!�ðjMD����ޓ^�Ko�Ҕ4-�Ĝ���J�_FfѬ�͙�h�]e���"3"�6SM6�?ʤ��b�b4&%���_+Z�l<��=��d{�8��|�Q�\�U-u�˥��ǜ���V Z�s롳f��������5w�֖$ޚ?k�PxW� +ɺb����(�����ɓ��\E�]�5����g[��ݗ;�2y��c�Hj�!�.�}�SSR�RkC���)�Ij�6&{���eH�Ƣ{���M|_P7K$�p�8�9r:>CN�%%|��Z�Gc!4)k4��*+��9���O������xC��&�?ɟ��& �d��ЌaV-,�S����4�:�2T�&SS���ɔ1E�ige��ńx{Do2#T1"�"[�ҙU�p6R��*墁=.�c?S +��`�b�2آ1Ѯ�2��HM�/�X���<*u�ԯZ���-W��U�UK�C�X����+-.w0C�x���������팖�z�4�]��|�w�;������*V����ڗ���d�A&�]d��A���%|c�m���e������K�[y[?e#��5@?t�����a��G�J�"ѽѣ��QW��\��)/�Yx�:e�G[�eF�ל`�h���IF���` �QS�֬����q!dn�u\�Tޝ]�F�����#�؉ r�F�ѭ/mz������pٚ_��:���K)w +� +�5��(ܰā�����ɈW$��i՛7=C6J�־�_A�X+j�� 1k.��8��S�.Lt��箫%�Ҥ$�,]���&���J�ŒO5��X�VV3�F]e�����.�W��n�S�W8��� ��A�|�a +�=�!��ܛ�`��_��~@� +���� +�t���)oݿ��Y�N����AD����c���@������P����V��w�^h�%@K@��X�m���r�!�r�!�r�!�����W���#�E��7�1��.(��Ecql�ʡ��*U +�u���o���Z�ݳbeo_�������ڇ��/������G�FE���B� =0k` +v�ޅ<Kg�A7��A���gaa�ϟ�d����p���ؒ����&�7+��>6ᨅ2���L�d��Ë�1��g�c��f�&h!��e�˔5���v�����6�=�:�us�c�[�7=�i�6���#�8l�1�}���6�ǣ��؊㭰���l�+7��1� +| +�hp�Y�˻u���]h� 0";Tࣀm�u��1C���#z���-'�����%�� +T\�{-�1oZZ�]ٕbx���o�^��7l)�hW���W����ȧ'��;ei�C�v�'�}� iW +endstream +endobj +291 0 obj +<< +/Type /FontDescriptor +/Ascent 905 +/CapHeight 718 +/Descent -211 +/Flags 32 +/FontBBox [ -665 -325 2028 1037 ] +/FontName /MCEBHE+Arial +/ItalicAngle 0 +/StemV 94 +/XHeight 515 +/FontFile2 292 0 R +>> +endobj +292 0 obj +<< /Filter /FlateDecode /Length 20459 /Length1 34352 >> +stream +H�\T XT��Ͻ�� �hPM|��,Q�č"۠��,+�0� �"v\�4cj�cՇE��YM?�X�&1MݒT�h��>��8�gFk��|�s�=��= AX�������-@]#K��+����K���x�l��uf.�}XLu�U�{r� +��F���S�Nݟ +�����Β#�u�-�y��]+����Oy�� ��Jx}6���I)��U?4��Y��t�6��J�ת����w&�,_��[��Y�9o~���������θ�8��]�"��Tw!B�F8`^�����0�x���=[���F� +�ş�.u��~F3>B2��؈zX0�%�A���a6�?�s>��ƺ�GН���u���c�{#9��c��$�W�a0Ơ +.Zl:̵��u��a��y�D1S��������b6�<m�Ԃ���5_�Ll�� +�e�m���y���,��q��Kq�©V����a��Z=Q�rl�J��¦N2��6t�5�u3� S+��K +T;���D �p=�8Eǥ���FLe��a(�T�m��i��Q�� j����)B1�9�]l��)2-�*�f����h�\�H�Oc�Y�OT�mr&�8�@�T0�/��sKE�h�;�=���f0�H4^��x���R�f�R����b�xE\�������~�X�=�I]i�ү��j��^���F��H����,�3�1%�)_��,SW��,W<����xn� � +�r?,��7aWv�8�t�H� +f��F��E����~O����9�i�D�ѿ��`���&z3�b��'6����鴸*�-�do+e�,�՜U�\��"/*�J�b2� j���ڨ�Q�U;,�֥~����wc�������9�i6/��a$��I���i�ww�~|B��]$�P2�ad&�4�A5��r�B;}����t�s=}9?%E����(3�z�A4���mi����&c�HY(K�l9_6HC~,�./ɟ��L���Rz+�J�2R���Q�)����$������RiYai�����5ٚc͵Z�YZ?�+��|-8��� �H�l�Z1H���)���(�Y�;U4�J���E��2\�lt(ь���5�.�h4�c�xϛ%Ty�I�{����N��K -�-�8@C9�r�+O�Ky���v�M�0�&v��cJ��Mn�>9��E�y:��[�}�Mo�\G tK��"��h���������o�D)�Z�Z\�|+��U�K7���P��1j�PvsuC�I5˩Pn�\g1�?��?p��b��R:�<*��+0�\���C9Ce��,��<�je�b��"�*�x���}��@��bI8w���<!�0��sB���;>���)4[ƉV����SPNz�0�|��2T���ެe�����Hu���|s��5S���f�p��"_4<z��v��{�}�D�������s��W��<a7c +~�o��9�(y�<٢�̔.��<r�]f/�G�9cq;�*��ؔ�ԔɿL>l�����0p@����bc��}2:���ۦ�z��="#�úw}�k����A�����U��g�3�4#��P��Q��k���C�"CcQ�:�V�S��Laͩ���rO3�&�hIH����f�e�Z+M�u0�&C/Ќk>>�ǯ��A��ll����34��4��9��m/�`wM��zz�|��� +`��]M�L>F�ه5 �qRF��a7"�o���;K��\�=���VgPz�>ŀ�ft��� �ư�V_��[ +ViMq�ݫ[C0�(6�D/qNr�Y���%��fa/|��%;��x��t��+4������:y��mETf�;�C�fG�kM�8�㐚�oU��+��^I�4�褧���iE|4�ny�m"#S�i������C/pf�l +�;o�#R��Gw��B���)��}&0�a������{��y�%oF�3��V�q&�k�����x��S@le���T�ҋ�!ür���F�����kW�8�K,Q!7�e�}��x���k��x[Ě�g�9&�։�qs[���B4�1|�al���3�6���W��` +/�Ź�{k +��Z�����:��s�B��R�yE��+"��VJ@�؊N[.�hEaR�4� 1��� +L��L�SЎ�j��Gfl�Xڡ�)����>���`�?f�o��_k������H:A��1�Q��kZݚ@!ׄݚX��TDr3�C6����K�8guNT��_w�� +R��C%�s"eʷyK�IN��X�*Eg�I�*�I��EP.�5f��OT��gɠ^���#*�FK&��u���NI��N-��%�f7ef4gLw����n���0�`ޒP$һ[B͙p�"D<-)II��B��4�Z��ɌҤh.�� +�J��&�r)�8:���"�E"��ɹ����;�"59!5rJ?���l�S�N�}zWR4���Z�����ҵ�f%еc]� 9r���̾�R�=��_��������w�"*�vPHo�'�P +���(�6B�>�}Ѿ�+0(�(�`9P�2ڞ�c�#y#���h�Yd��|{�6z8�r�x��)��!�;#�&q��k5R +�P�����u(/E�LU��Ʒ���qv���4��D��~k)Ř���p.��6������*�6��`���;X�V<�lC�t���!���R�Q�Q���^g`��κ�6Z�k�� �+�n�cc^<0�/�T}���g��3�).��|�UZ'�J����A�O�~�0M����5�Y`6�>�����Wi2�g��:�%�/G�c���A�VmF|���[����2V��?�-:dm�0�����7��`_c�O�ÍT} k�̟�>�}����;h��� ��c��p�����&S=�Tï �6��q����1�`����(r��Q��0�!�1ñ)��a����MƬ���r?�3S���yR��T���c�yᘅ-�ݱ�Lq̸,㻜�^����1c�=�I�� +�"�\�s��<����q\�1����~�X�>��P<5n��� +�T�.����j:�1ˬ�)�4W|o�� +q�f�i�� փ�Q�����^.����k�vm�يu6����,|�-Ѯ�i6��7���d��Bku��u����@�d6!g6��������3���2�d��?����c����+���*�^)��$ъ� ��,@_h�Ig�j�)��?ja +����������s门���7��Q���ƒ�n�z�s���a`���; +!�~�9sL��,��h`����X|����]n|z���}�q�ey� ���v�t����s�H�s�g��^���ǜ�_��:����Ʒ��G�~۶�k���c��`e�����`ݛbwj�ݥ����]���.�5�i��g�d���~,��"i_/�m6�cߑ������\����� +�l��y�X�>�{At7�|'{�g�����x��M��}1��a�y�Ý��:���N��ȵ���������������D;�?C��F�Z� �q�}����/|+ɇ�]�6<^������/d�E8��� +�b�����B*����*ęP�8�~�l� +���z���9�d����Fֳ y0��Q�m���r����ɱ;���t/Lj�y��{("�������6�'1�.���f���D�a*o�� =���o~#�y�)� +�wI�����w�ΘO����=��6J�}�!���;��S +U�.�a-�H�'�>�^����|��[�QDY�x,�S����'���G��+�_�P�"�Fx��x[��"=�z�5�5Sѿ��)��F�8b���[<��F?������!�U�ަ�Q����O��N��l3�\J��� mu�Yσ��cOa/���[cv�6��>�N����OS���@��]�z55���h�����5 ��\�8��s�+�8��;~��0NL��-(�� +8��x�M�7�m�,�$0��4���@ +��.<����0����<��U���~���&�i�'�X|�am���q��H�����d��iMO���"eJ:Ư����;��8NfVw�d���w3���?)�b��%.��&�tȥ�?���5F�H�c���+�w�4��+{��'Y?I����A,v�V�����W�����%Խt�,���g�6��1�l- �#`�٧��/�,�V��K�yv��a��' q~��~Ŝ���w_������]q�2��.��[�n1���{L�\��is�L�<������O��yh^�_��Y�sD��x�L�;�����rɧ�O����_��w�h�/�����Y����(��l]$Q�zW����_�W����k�k��kǜ���5(<���g�5h��m�s�o,��8�"�N�k����c�D`��e�{����:����No���s�4� �7����=��[�����T����|3��w_4��糾q\�~�?<S��1��l��a��,�?�,َ5������ �N����vI:�fm��;�҇�x�����Ϟ�4�q�����7��c��f��7�u�@c ����x�7q\�}{��$a�$YIJ�d�2X�c�?��H5ECm�0�k�`<�I��@˴�<S:���-tZ3�I�ӄ�YN]��cwܦ���LB�������\��l��I@i�Lo�{��{�ݷ����#�P���\� +A9S֣p���@e�8g �Q�>"-Np��qTF,t��'.�[�f&Bo����M��b��O�ܠ7�?w_g;�0�1����E��4��X>�#�#R�#v#��YO?B)���Kf��~�R��c}�Ҏ'D���5��{�PM�n+��T�5����U����VHi��A9(]���W����� +6~�ȈD'��U���"�"BC��J!�)�[��dBA� �N +Ӥ��T�Q�����O$���Ϻ~�����?��M�^�S�W"+� �Q��+0n��,vJ���PV f�nD�D�iQj���FF��{M�Ou�K�@�g$%�ט�D��-�r�*�s������D�{/��D�X/ZL�q-&��A��@�n��4���"M���R)��,�;=��tG�(��Qb�GY!sַ����p�.(�e�:��[A} �nP���j=��@ +�����(T�P�����m��u +�K�&A +�Zj1�2��4����FW1] +F�{��a}��������k?��2bQ�S�$e�˼L +��3�嵕#�$V��i�$���I\F���$6`GF�FL f�����}����@���!f&�;�Jf���ޱ�l�����R��G}J����F��v/4{�4D\x^'N��HC���9_|�C�3=C�H!NċYݗ�+����T`T�,���WԐ���ƣ�_K<�U�C_A]����j�T`�46VkH���H�z��xF���i�����ʐt�sJz�"-�g,�T#�N�TK��tj/.���L +I��4I�z�@w&�+�w�]�h�6b{Q�^IIb�CRسK�ϰֲ:C�*�B0c�agWx��~����P�++�s|�̯�+������B�����(%�E�`�@�����*�3�L��#��m�2�B��@�d�r�8�ok��6�E�{e��6,[�5��4g��[��`<�/n�B��Ʒ|�m�L�=��ږ�E�:Q�97� +lj�L/?q:� nב�;�\��R� �3+��.�cv�v.��M�uaB�d�ba"��x���6w����0�f*�6̭�;���ϭ�&�4��yD����s[� ^"3�o�w!�+���+f +yf3)�y%f��3� +$�cс�b��/���I���Ι*ANI��q�dJ�L�T�����)^�N���G�x�)����"K9��rJ���#�'�ə~�əFN�����A�Ktuĺ��N�ѩ���~���偮���۵��=�Z��պ�Qy��� ���GHG��m�C鎦ꔺ�O41��Rz,ש���Z��Xk���j +=!b�&�+�r�X�&�I�E�5��6 ��Ć���V���_��%Z�/�:��x���}4Z� m��Q�A��ӑ�#,����mφ���|#�lHD���H�=����;��h��]=�ـgd0��.��4eO4�CH\+���[��x��쑴�>�5�^��8��Y˜���|��g6g��=���z{T::�zH2�i�x+ŭ������m�K��!��LB��лM26a��=��Vvz�:S�$����V� +#�w�I��fL|��Wr��0�o��L0g(7FW3��r��w���"~V�y�����X����9JP�H����}�H��0����,l�����s�A���q�t�(�a� � ��o�E8��9�{���X���wo�wob�0������к��e�p��ۛ��z�]��Bpa�|�[��sx������?�/YN���l�8ͬ�~X�x��e�I6j{�����~�* +`Y��w-�|/�E +��z��7_^��pcl�����ޛ�vk�~�Ȼ����M��l���R�ż�f�� +��Z���'�;sx�dtc�N�h�Yb�3���J�(�A�H�/��pV�1�LGnY����%����61;�k*��5�GF3�zٙr��#��u�|����&�t](���o̅ry_;Q�ܱ��ߪm�T}����p�L���D��V�<Sf[{r{��ӛ���/c��Mr�Pk"VR�H䀙� �#o2���30m��U��u�߱�����lI���2X�ƊE��B�k�Cp6&d8p8LC26aʕ����%`��`�O���%���5:UqM���d&3���ەV;z�������B\���$�X�h4���Q�; +���˲�������[V�q�Qܬ���[mڽM} �9�^�[� ң9�z�mPP�1���8���١Q��=��Uhj���h��F�%�d�]���0�#�°î1P4����"Etp�~g�̵��0�t�CV����I����QR��`�"n�^p1uoj+�I7QnY8�����D��ݭ���&@OQ��$�h +�1Ĵ��L�X�O��L��[$ +��'��&���GHO��G�RL��1��E�o�����D�]���L�z��4�RZnb'�b?�4M�BƸ�E]�b���A��{��E�'9�K��$FN����( +��������0�0_0�:��$3mO;f�fd̳U9�\s3j�ZC��EG�kI�:� +�ְ������H�_�+��Wf�[fX�l4�7�`J�#��#��LK�̪��)�E>�3IS��idit�X=��b��0l��(\��f�r�q�A��.(�H��8��_;Ժ�Ě�:��u�z�7nlou�������.5�v���J�{g/�+���v-׀����5(>�-Sj�M�����CK���"��I�VmEky�-���<�}��<�X�%��Ї�xJ��>J�-�cK5G��X��p_J +��'���{=w +��y��b +_��>�R�J���=�����I�B�g�fZo]o�������Fƈ[<m��F2`/�d��$1�x�w]bDq�zIซ���q7hNp{�Q�z��g,v�n�lg��C�3&��!}�h����������]J�UdaH���㩀�:�4�&�Ji�al��(y5�&�L ؔ_ѣ(����r��S�����)ޤ�!�`i(��������iۿ�wp���φ���ȹw�������3�ܨ������_��s��S�w,�����L0Y!��"��.��(��o.*ED��!a,���Rp��3g~� +lLa�i����#`i���u���v����L7�hX� +��'���D��p9T�rŁ:p��!n��&��2��R -�#�C�\wY�[JM>���cG��@��4��]�z��/�ͤ���`ʳDCU� +��)\��(�܂�����1�?Z� �j'S�� z�4�K�p)�v�5`��C�B*�>`e�:Wʓ� �uK��E����;#�H���H����tW�k�k�1"cdLԠױ#M��"|8�����E;< ���o�d�d�r=�N�!A��LH6�~ʠXEz��s˙��5��0��=�b(���D�"bQ�.���<��o� ��|��T�]0�t���.)G�Ҩ;^:��M\K� ݦ��И�#�H�I0 +4��;�����O��O�d�T���}(�&� +��>�4�~j�S�^S��,�k�÷}����8O���n>���T�=��������m���<5*�3+� Ph�m�q/�_f�t +�-�������9ͫ�٬rN�ĉ�㕁�LY� ���eE�$��K�0*�J�P���Y���!� �:"8)-�A����U[�j"�/H7��`��$�y �]j�Y��y��o������O�z���^�lpF�c�~�����U�>����S��_�O�Z�jʞ\5�~+/�Κ�._�zM����(K�� +/���X +X��z[����o�'��@�^���x�4��`���2�0.�/t,p-gk��;��~�O>L�,6ِ�%��f��|bBk9>{BD2#�d�d�fȌN +�g��c��L�,��ꪱ�H�r,�"�4K��P(�6��sL`�x`�:>\�@Ϧ�:�[��Ɯ<7M��F\���cxƹ��I%���v���j����]'$������?���}��o����կ�~�乃��JЈ�٪}�x�� +�E��H�:�sgz��������=?o�:��f�'�#0���vΠ�F=�i�4[�2h�[Mpq +?N�[�������ш�"I����H��`,�g�0��tT�Z��a��]����8�����e{_�ө���sx�~N�<pDUۗt�ϼ������r���~��}�>n�{厽�# !�w8���R2�BrC�ء�I�0��-oq��0�`�� M�i�B3�E��� +t�XZ*S�@���ۻ�������f�����ό2+8�� �S�:�"EA�e����Y�a�����l�X�T*��=�3�(��UݺZy���9�o'hb�ER9�g��?�{�՜z��dV�V"q-�Lg%4�XȠ��qH��]��u��@���3��<D>��g�ج�Nf��^-�:�� +Ne��-��$*���?�X�1VDP��G�_E*V�S�C)�g�,Yj�ڭ��t~G�2�)�1��m�.ә9�-��:F�������31�u����5w��H�^~��X�{��36���a����|_U���+�}<��#�|�j�j�[�!�q��A��a��rlp�����`��b�cċ�V��9 �ѷ ����;�:�� Wa�MS��W�X�j��W]O�-���^�K�@�!;F��$�dYL)ˋ,��m�v{���sԙ������x�� +������%^��J��Y��|��g��:�Ƣ��$�N�.l��,�:��i��kHiSZ��� +�F�!���&���U~��/�r�����^y��z�bi�]2c��b?�F�i�����X�)�#Nn�,f�W�A�)�\(J��B�+I�D�'�Z���y�rA�u�2�c�����(�S��y��{�����_*�1�Z@$�a�cx��(V�农,�w��103[��5�}�]B�� ��@\�4�4�� +�N]���S��=R)�dV0MY+ +��~���X�v��*fZ,����K���I�X�����!��m�p}`4�PP�W�L��H���Nq��7��+��O'�����hA{t&h���l7���<'Z�9�˶&`Rpz�=���L>��2V���?'��#���}�b��.�pX�[ݻ���Dr/q/�IM���դ�nU������y1�6j�qY,�b��%M>���a@"/.�V�cP,ݪZ͋ ��� +d<��$+��j����6�Ml��!NE5��8�jl�-ɖ�ޡ e��S��t�Yz����X�3����y��-A�;D�lݡ*�C�W3�X`�=@�k�y�a-������_pP�\��0U˰�;&�N}vZ��(X�|o4��f����Mi����T�hU�:��@�N�B���&�X���s%Pguq��E���U�r���>����;���� +�û��A��N.�~�TXk�`+2rDp$���XDJ,���X +��6�[�U�^!I8a� +�Y���V���[���1������7�.��i�F�Ӣ]�k����� ��y����V�iA�A��[�^#y1b?;=�3�㜃F,1 �����=���y���L�����qan��ґ�����p�R������G�_k�����=˽��vh5�Zj7Vz�z���V������F0J�U����6�A=��*Xr/�e�9��x���kp�Z�`�!�&����<���A{Q�;��'��FϾ�:�"���������s���}"�ÿ�-w��y�旹���E�(<����>���E���p�v�:��>�b��:�NU�QpA��s��CV�7P1"x/��en��$N.P�? +��c1��,�+�>q��߹��������̲���}��f���f.�}��;��+Ra���R�a��h������ƒ53gPsl�#f���#�e�v)�7 +�^����H*�7 +=�oo!�--Yj=�t�l,�$=�m�w�{��W�1��nhn���}���ݒƱP��2=����T��~?+u�,�uM���AW�J�&�$Q(�]��ϡ +t�`4ˢI�a�(_��mv%)��t�Aزh�iݘ�1�1�F}N��MB��Ʉ��%i��Q:ڴgt�S�z�d6��M1U�c���_�v��?���\6ukb��ګb-G�w +<��r������/F������P��s!���5m{��,�tM]��� +���ك=��n&OR�,k �Ed��,���ʼn�GH��i/�����T'HY�Q��/N>8g��*�2���A}\[�[ئlW��O[����~e��_���+�\�:�E� MU��aQpQ�](�(�1@�p�A���\��,Ԇ�Q/:�\�Q�v�*-&|�J +�BK�W�*B����R棎���X��� +����� +��:�生\�<���u��j"Q�?����3�����M6�n�#��&,$BԀ��[�g�՜��Z��r�u<�zR�N��k��Ӫ��Z�ŏ��z#�����g�Ȝ�sEO�rzU�L�gm{Iv���ff�<�����7/w������n�%����ǻ�(���U�{�T-�]6�nɯ�����1n�{�w +����_v���I���K���\>�xI�\�������ug�X6n^3�2'g�o��֕}�W܄��u��@TY +'Ax����؍���BG�n��$"��0��8\����yM�|d t]�l�`�Ӧl�&�6D(v߾Ớ +v��j3��h��\���>C�$�uH�:ru������M����n|<��6/�%䖪$���v��X�ۄL�o��[SȮ��Ifh����î�J�m�@c�C^A>�8:r���S��V]:B{x�J���͈�IV><x��SȦ=�ܧ��D�N�S(��&?�ń���zc'���a�n���:e`�3�i�3 +нS6�)#��M� h��F��֞��TѨ���;BA}��m��0���MUQ8���E��;d����Ps��)�����NǠRT�����"��8�6��?�"������^��ඉ1(!F{b���A9q��Axj��h�xW�8��t擑/ۛ��t�9�A�VͧѦ�t�+��^%@L�D��(��R���'T���u�u�:@<�be23���pc���]���=Zx�"��2������@@��Æ�P4�dWlv�"2Fc�]�CQ`8��6�D#C+v�x�eg(R�9�h�O+�(�e'?Ոfn���� A��G�n���э6x��NGE�0�tD�YŵӮ��P�m(���S�c>����������G?�An8ȍ��P4)ݣC��Ɍ��9-p�����h ��ha��(z���ގ���U�����]�LQ�]�8�p<�y�A�E�@I���o=�Wg��ݍ�&�6�kKGvj1c�N�=A��|��ld�֙��fd���&e�e��PF=[����v��)mu���w;���8��z}��+>z��\�K����Ɩ馏}�~6�y�.��y�9�<`d +������\y���0�1��~K�e�e�e�Bm�tYn[H�E%�n�'()��T�@��&��9���!R�x��� �$������vy)ov@�HWRJnV�'��P@NU�����>=v��X�]��� �m�Ph�^a��5�i�#�h?\m�5f��#�G��j�s���;/7M�|C�8�$��&�)^Ro�-i7����\�u�t�����KPN�տHܯ4�_�nOo��O����^�{��ė疼�v֚Y6�����My�Yi�X��1�����)�O�}�����S~�j3O$��{�p*�*��"�~v����I�����O�J�Ι�Lg���\H����^ƾ�5H +��e�_�w��zK���&�kר����ߖEqAj&WE=O�'�� +�o����HPA�&�j1+��fě�0Z��u��D��q���Gw�΅�P%"�#�4?^��-�|��w�c�A�,�p�h���(�'R��H�91��q�������`����X�s���u�;+[�R�"��Tn�ly�v��[赓s7�����s�rU�7�AP��8,52ȥ>e}J�c�#��ay+�J����w9�u��qYO�d��vv7s�x�t�a$������\#��#9���,��MD'���������ЮE�lPT�Y��$'�Sx̙.p?�2���3 ��Ȁ +� ����<���9)�1�@�A��l�� +hU�y���c@A�&R�/D +K��-Xd����G��rs�������[�g�o�7����>��L{^ӵ#a鲏�v�ԯAY%���,!���MXǦ���4�ʳ���OLO��K�b���3[X�q]���^q\�^�ݖ�u\�)Hr�2���ʝ� +㱇/M�yl9.fKle�<�3������0�gᑝ��y�e6H�4+9�H�T�?/ ^ +a�]� +D�IC��aԠ�bWi +��ܪGªIB_��hB�~��V�c��d�l?H�,��]�����/�_�����l}�ݗ�vt��id�6Dn�=[�K�x���N��텘�C5&�������]�j�s�2�5גK�Fc��� �8M�L +ۆ��lq�#[�*V8��������Eg�ڦo��!�'$ı�\%i�DJ*����쪏m�<��{��{�;���W�`��y�NBXD�фv@������(UB�nÂ��蔡!�k��V�v���B���N�1!%L���Q5۠[�hcY)8��EZ�����>���}�����p�,"< �����T��vE��^�b�,a��R-�Ҋ�c-��EcYn��aLv�ˍY@���Y�'�ޱT�;�?[!�jb̲e8Vf�"����'�L}��������my���q+��V亮����.��YS7��ѳÛ�C�6�f���� +�#�Λ34 �B_� ���Џ��9�v؊��l����fER%6ow�������}��^�t�x�(�kI���\I��w�]��(�&����|�h����)O3s\��~|@�E{MMuSI�6�b$rSWب8p��Iw�*Y��a�損�/鋻���Ew-mϛ��ɑ��#�[R����.7�{�ȃ����N��?�@h�\�(��Ptm�ҠQ�$T�PʴD�V�־�4j��e�����x�|A|A����DB��UϮO4*���٫b�f?'�����.ѝ�V~;�I��rw�O}Cܹ̬b�h1��p���e�(b��2 +��.�af�]���zRփ��Vf`]�;@;\XG3#��\#�����D\��f`Ő��ci4Yy�E�N;&!r�3�M��j9�N`��v����d���[��}l<7�U�.��u8�Ļ>�x��+����A��?>y��3���s��h�>��������'0>r�����F�������t������ �߶���p�)�T� +����C�[fi � +��v����QSd�.���T^�Y KMV +��S� ?������~��4�B�郛'������6��[������Yh��R@A����NQwR{;l4H3 #��dA!s��n�+������������-�_�����[���r�z^���r����?!���L7K�R�4 e��҄$")"uH�R���[R^�#h�H8^��~��@�LE]@�����%�͒ �!%�pFH��� +�� +�Տ㇞�m��NoU���*g2�>Rv����x���t�\F]� +I +�!`��^� +�kv����B�b�������e�W��^iVx%��ލ-~H�<�T:Q�2�=��<��^ѝL�����&�TW�M��Xr�aT��f�k,T�l*Je�6ͬ��Tg��?M�\�z�œΧ������]��� +��kS��H���3�r�[���7��2�Qo,s⼧<%A�@�օ�u�|�PBBk����%�E���Q�4�qZ&�Z:O�w4;ZI+m[�.�W8)]��'�c��_z���Ȳ��T�X'��t�j�HyBtA�A�a� +�� +,�) +��v +3mP�x��/E� =��8|�����;>�-��E߁XAi&ӌ�/��@m���A �B +N� ���x��Y��b�R��V����ѡ����Z(�Z�\��`?���S�0���泃�Z��젟��j--��n�sJ�a�v�=hz�l���m�Vg��� {��� �q��2�lqC:���;S��S��A�"�ڕk�"���j,t����y)��S��P�T�Lݪ���"B�pS �p����!ty���_ ��,�)�C86�{�uȣ�4��TZ��Z [���0�yc�i(Q]�����̅��q��I��&�\��K�pT����b�+V`1��TyTǽz���0�N��C8�����a�d����xa旹bh�Q�T�{�1��rc`P��sMָ� MB������&ծy�4�;�=�C�d����WmY=v(p�%Ώ�穹�7�:�����s>��G����擲cMk�m>��\9��ֵ;� +�ٳ����<�#�n���+��˝Q�ԏ��{'�I/%lf+��{U|B +� +�$jӜ������!;�vg�b����Wi +Z�T%8�:����`6H�<��������x(*w� +Id&�)P�#]�S�$�dQ�Z��0vɞ�U`�lX��UOG��������N-W�LŖ�^�));~��c�ܮ�ܡ�-<z%wP�$��r���o̴G�C���)�j�j�6}�fK��=��U�u�g��!�&�I+մ'�_�&l���m�m���n쓨�XïV�k�[� +�y�]� +��JE� +o���#b$�b�m�M4�b�>;K� �0�q���_h�1�7=�NV�y�����q���՝�vuҽdI��%Y�%c�-��t����-Ʀ��!�G��)CB��t 3��tB�RO��0��ђL:qS�4ӡ��Z����c�n�i���~>�폛�&<�����TI+ +r,�f�ڃ[/|k�z;;x�x��㽛z�#ƶ���u����C?�~z��?^�� ��l�)�uQ(�]�%H#��R�Ĥ�G�(,¾��2�߲�� _����;�=���B�����/2ҋ�Ş��5��/�������p�f�R������g�f�o����d�m��Fg:�6�i�~%��6�M��rT��Gc�G᷐ �4l����*]0�U�Ʃ�`�9Z�t�Ьz�T���C}�d�;2�-&��*U���]?������5�;J�C+V�{�k��l�=�ʴiۆ��>|��ꡇ��W�_�q��?�zM�fLwh�$��{-(��ԀV�tAZk�v���ٔ����j��Im��S�y�������W毅{.���dA�&��f�A���]_:�־��������;mf;�)`s�ʁa�"�D]l�EF���u�����<�>���P�{Sj�#���r�$��8����k?�б��Ȫ��_��l�5Sa)��e7���D�{W�|����4����EZl�kF�Pb`�I1�&f!�Ř��c[U[�����6�w�U����)U�;��R���tZƤ(��Q H�zl��S섭�C6�=͊M��eҳ猛0�f���D��T}8V�n��n����]�1��G�[�&dU�z\�ZZ��㍑C�%�7Y���r�j(��d=hBR$����K��bm��q;i�����11��"ţ#�d�e~t~�+���&o +��{J~1� ��p v0��u�(芿��� �q�����6����Z��c�}��f���T��1m���ߢ����' �I��R� ��ylw�����)K[|K|��-�o�%�����v�>�E����U� �p�oEc�T[Y_J�u��2 B������1r,לS�a +vNͅ~G��Ur�3iJ��$M��\�v�e�s���zl�?LE3*K��J&s���<�A��>�� +[��bp<��9�x@@��FҀ��`�S2�\�ް��[�JG~�Ǣ�R�u��� +�?P��9�(���qq뚵�*�v_|�q���כ֝k�� +�3k�������33sq��[p�wq�ڱaWQ���S�V��Ik���L�{}*���_�����;-2�O�`�N�}�6��}�xzӭQ����C�I�Ш4YD)BЪ p���ϵq˸nn'�z���r}\?g�v����-�7M�A���L�[#�PH��J&���<�r�f@%홰l7J�$�c�.)ٸ���I5����4n�~4o�d_�6�{J�ۘ��5w�(p�sg���SBDAՑ +�(V쩤 +#����І��t@�����!��9�s�;��b��u�e�}��a7�~�$��� �&���m|L4�Y���!��܌d��VD]�̳<eF�+/��)�XO��\!bќ@9s�$'S���s4J���iӶלx�Ĥ+��]C��=S7�i�TEeZ�]Z眪`!�U��f�\�)^�xc@�����+|t�������)�}��cJ��A���~2^�A:�B1��(�d�#3�L4��^�����J���Wᕤ��ͦ����K��N����8�#����A�_���)!�%.� q%��P�auőbu +��JV&v� 0!�S�!}����y���#� ;R�B��uwc�OC�I�jb靎�H�!˽?K6�ֆZ�Zݮ��V#���~,_rμz֝��ՓKs*6�ɧ�@k!,W)=W��r~�]��@Q����L�%&:�q���@[��1���+��c�$�a�)&�^�-o�M��?q�0%y}y���DR�Y��ك5�ec�`��W$��윗�X|ފ����@W���jMuf���7X&�ur�2[��,�����r]��Y��_�8n�� n���bLiT*+���^��0|�c9$�������4��w���ߕ��W1�,��� �-�@$Y�����%xzx������G2�9YQ�,ggY�F��j�[�6^�$���u�>YE� �0�(6+� cR����g,�"�6��U�q�_�H�s��졕�X�B+���=��A\E�0$�dC�ab cpB8L.~8 +�*;��G����`�r�CH�)RN�9���B����r8N��G��c{��~�f���^���m�d��Vݪrj��eK�6���^����l��I�8_qR';��L�$Qr����m���m!�u$�!��@�w���a&+(�D����`�C3�84����-G��v�%@ߎ_����B���R�j]-G��v!~ᘣ�$��-G��,Lh�s�Z��%���!=��-D���}POO$�t�����J��_�`�x1�g�8dZP���/sY8�.�Y���,�y"�]Y,��rEi��<qxrF���ߩ�8t$6p�p�%�W������� ]~�2���O1�u�?c��a�$z~��3>ʶ�g�.����<şr������r8��Qs�� o#_��rsAF��K�ԾE�I��aUޓ�i��_�?Se\�L��9� �����w+IW%��2r6UeN1$^��d���"5B �D��gU��έ(�$�GyC�(��$�,u��/�ݼ�Ŗ�H�m����s|�N������Dg9{���H�[�Z�k����O���H*�"/g�Ś�����q`��(4&�4���X2��<�R�,������v&�c���%�~�Au%jV��SUc�:�ЃD'_������e��K�o��>���= +�؝�MUwc��y2�+a����n��rȎ~�Ot�o���{�~D�l�F�����hzU�Y$)Ej�R��h��r����]f��˳�\�Z��ȿ�ntnro�lWw;��{\������o'�'��~���:j�q���!(� 2��� +��Ot #$KnY�\��(2���u�~Z��O�Q:yPw٦��[�l�&]l�cR3J��t��s%v���m� +�M�ڕ�B�G�����r=H9���:L+ѫ(��#W���X����� |,���b]���TK�xG¡��H�ȓ��o��AZ������,)���p�X�|��rgbI�?]E,/�cǃ-��^q?^��,̔c_8�ai~^�G��S +*z�WǞ=l�rW�c2£�����E���{G���2?�q�^D?kd���Q�c����̪F�9o�(�I���i{6 +�4,���Yd�!�ی�I����j��.�d3� l_#ۅ]�2Bs��BR,����=�q��6<�w��v��A�� I!Bq��w�vg���n�RM�Q��&����)���w5��-Ѷjk����rH��8p���l�&*��V�&���#�i���5�0;��d�@*0�3��t��0?���I��ꙤYf$<;=���l��#Y�E" � +�Nu6��pc8�o�D���e1��l�kQ7"��`W�~l�&�!�ڪ�'L�|�3��-�њ�ϑ?��~�K��6��Vl���9��f�u�N¦�s�d�:db�-�BqI�� +���Hqy��\���n� +r +��%E +��%%���XO�,]�"�i���e/f�#�h�D1���M��479g�$j�M�u�U��c-c��^�'��2V<3\��;@3� ������VL����fS��?Sfwd�@w+]F�v�'j:�O4��-��>��jø�?��nhZ�A#��Cd��vʢ�g�>1�mǁ����yG�c!��g��{˶P� +gA1!j tj!�4���i���� +f�/j������V��e��f�4>����X�y� +�R�F�X,hX��^�7X�&TXܙ^/]�OF�%�/,�t<l�� +ھ+�W3�� +�`˗>��f{�n�һ�Sk��b�v�ý������p�a�5ч�����a�s�z�/��#�% R����0�EB�@�A|�����J���w~�� �>���[�D�-�쭈�����T�9��!o@�@�c,VF�B� +��/(n�"l��8/�x�C9�*�L�@%Z��@ +~o�^����qލ����wLٙD��4�H#�4�H#�4�H#�4�H#�4���P ��8&��l\j�U� +��r{R�1�A��PaQ�J�ƍ/��PY5�u�V��L�>cf��-�k}��}Γs;��_�ٵ�#�`ɣ��?o�{/8UP +��`���/��x=�~ +4Ó����>{�����o��k,O�ρ�=I}��GR�Q�1f���AAJ����%e��Sr�Ϥd�M�S�75O/��~e�?�������������+�6��E�@���ʐ�P +d%�p�"U�3V aϐ�� +��>P0䙁|�''e8X�,F3�1 Ѓ��qW�2���h�2͜ef�$�o�C��z�cu-�����_���Xq���p��i�N +endstream +endobj +293 0 obj +<< +/Type /FontDescriptor +/Ascent 905 +/CapHeight 718 +/Descent -211 +/Flags 96 +/FontBBox [ -517 -325 1082 1025 ] +/FontName /MCECFM+Arial,Italic +/ItalicAngle -15 +/StemV 93.856 +/FontFile2 294 0 R +>> +endobj +294 0 obj +<< /Filter /FlateDecode /Length 13395 /Length1 21724 >> +stream +H��Vyp��}�$_`�HY��d��r�#�T���9R��0��!��)M �C���4($4V`�!@B��ꆒL!)$�4��Pڱ����������������@za%$J�7s�����U`�,��̭��ʲj���A�u�y����P]}F�w��'�-l�]���Z@�3�k�'����絰�� c2�����74n~%�����p����;n��)|�cj}�1d��f����@}͎c�O3��?��� +�]�`�-~hIMh˦��>�}���Ң�.�+YH̿�s��F�7-^d������v=��(�A3`�0���MX���۱�Z������tL�P�YLA��$�3؋R/��@;��Fs=�E<�P�%8,Oʿ�7�K� ��B��!y�Hm���f.l����.���I�1��T�O����q��m�E����l� ��h��ωy�6��l�>)Y�bK-����qܢ8�K'�LU�D�D�V��`$���q4��4�� +�E��V��,RlJ���le��L�=��� +��ۊ��!�#�E�$r��1���+8W����(�2i�L�G��?�!ƉU�Eܗ6��{��!�O�Ey[)R���x3�,6�f�������t �1�Ϭ�8�� +�����[�:v��pG�!.�3��}�M#h<M�ZZH���_�tV<#b�h���`�- +�B�TY��� 26� G�d�6���7���́��L�h.|�a�?�Flb�{��#��3�g.����)��Pʥ�4�J��*����^�u��6�2�{s�ާ��}Ew83�f/�@1H�\�(ub�� ����(�3�#qN\W�m�@&�dރd�,�Se�\,e�|A��|����뗨d+9ʏ���>��K�-����U��;�N�D{�=h����~�!e�Z��/9� F�ً�<a���%*�>�����b���� +���X I��b�0h��/�I�h��7�.��P�9r+�i��$5��QI��+o*Ԡ�U���]�eǞ��fk�x��iCu��k"�EW�Y���c���zd�"��)Vm�-|�ӑDOb>�I��5�7h��&�4u��4�րZ���(���2O�Q�b +�qT�\��tU��t�;�:�G�)������rIN����x�\��ʓЎi�$*��<��)b1��c�Zi�R'��e�Ph5��^�EJ<&�U��8�J���ا4�"z��t<�{�]�[2l�0OE>��t�<"nc�yJΎ��%��rO��P<����1v!��L��uܯ��n��)���5 +s�O�j��h�F���)�jO��x����䤉��;f��������q�=$+s�6ȥ��c2��RS��K��'əػWB|\l��n�"r<�ׯY~C�Ҋ�r-\0!��o�L���1TTL�)�ϒ�ߐ����$�:rsT��텚�Fe>�V���ƍ(<= ++YQ�#.k���`�j�_��eA��/����qZAM\n�q��3d�h�0�L�( R<ya��^앑�z�4��r����@�QZ��f�\�9�ժh��DwTQ3���pDͨ�p�V +缫7�9Q�w'TkՁJ�!喍$7�-4R�_N������<�͐�'u�j���F5���庬wy9���"��l���b�pv�r� +�3��cQ��U#V����~.H�n`F�kzz�a��=�>˧��'3��@�p2�M��մ��ܜ�3�3��މ]@B�G��n^��[P��t��6���P��O�@�Z�����e1^��ZF5�a�[�םy��7l�NM��ˮݸޓ��3��`�Vst7��mf�����>N��rs����Zȩ�ӇR��� +眻\VU壊ce��WQ�������[�wr�Ͷ8+r����o+�w�����_��_O0Ϡ���]��/���U�T����m�X'l7�2��d��D��r�+��-ė`(���G;���í���5����wy���*��_YZ���j]ny���x�t�+Y�xV�����y���u��zu�h3WVi�S���b���V��<�6��6�sA�/��T�q���oD�Zg1Uk!�M�T0F��A���M|���hk[m�U+�֪�T0���k��t�R�،iPgb�̨%ɘ�U������$�ӹ����>Ξ={����aj��~��$��]��-�y��}�зY�L��F�P���F��ڽ��̦mb%މ���V�n�{S���|;my���HwƯ3��`p1�� ����@9�+��粌���H�of�'��t����@}�q�fZ#�G=e�\�(�O@�cV%墽��6 +�g|?���\����M{� �>�z+ړ!' +xz�����"�D���c�"�\`6��>�r���E���ð�X5�� +!��m���IlK|���zl5�mC��ȸs��8��v��+�����9�'���N�u��X������(Ûz���x���c4Ϙ��;C�s4��� ;�b��BZ���|�܋y���2�W��~�F��k#}�v҆_ѫZ�d�����/vC�b���8�Rr��Tmx��A;�m�G��^C�a��p%�N�z���eX��m��.��!g2�< +�A�|�"����\?����U?�q�iF�oC`�P~��}%�\�T>����Q�0F8X�'����W���_�|����J��Ӕ��;#L��9��]�nZ +T�0����,���w�}&�ʿ��Z�օ��>b�{DBw�d�w��̚�F����>��d������D�o�Յ~O+n�y_/2�S�E�����]C{Q�e,�|�g�a�� +��Tm��Y�qKxoZ3�ĩ��p�Y�.�M�A�6�蒲g���h��7�iV�LG�*�D���p�:3�}����@;aV�,ԛ���~�Ed��e@�3Plr��=�b,����2=4ܨ�T��Q?�O5?���54�h��2�iwC�H��Z� Z�`�����6��� �5�9�|Jq��x ��8>�������}.�G(�H�?o�S����@n�p�g�[߃���Fp�9�q��8�v�����|��{R���1� +��_��������/�X��>����z��ѿM�V.�k����}_ +��'ݖ@>M�R��[�y�L"Gųw)Gśw)Q�Q������Y���m�{���B���h̢��z���;� +��F�T���?s��n#�D}��A����Y�,|��>��3ߧW��T��c����[o�y{4w��� +�c>{g��d���ߦs�~��M�ͣ��`���t5w�[ʲ�lw�q� +�hԜens���m�|�m�������W@�3)��Ǻ��m���� ��ݣ*_�!�%R��|k�����r��G2���zܻ�)s�G�]1�>�zo�G�=x��{br|_��UAK��h�q���g0~(�ꭸG����@���-�_A̅��2���=�=emU�e(��RD/�Q���RK&;��*O�������H +�?���;}�[�� ����VitG[4�\c9=kdS�>q�3��i��F[�hr������Iq +y�}�W�}/�P���|�K�ާ1�&��1��*j4�T�]�?�f!�c���.�})vߢ!�8CMz65Y��-��A~>�O�j^;(]��Yˤb}��~�z�m�Bא���S��]�Sz�\��1�ZA������v��p��1�L+8/X%�y'����Ke�y��- +؏q��-h�� `�h[�wf�cܿ�-�腻�SK�6�>����7�VOt�"�ɏ���u�2`=0 ?_�ȯ��p � ��˘s�)��׀V`+�s>F���b���;�5�w�{>�W��z�G�6��{��y~�����{�����}�˥_�3�I���R������V��$�Y@��G�Y�R���ST;irr��G�շg��;D�9b���Rx\EmF1W�&������\��U���\F������+j���O����v�~�Wr�amF���J���Ͳ�l�5m�h����,Ue�*SU9X�с�&^]��U�G��U���,U�W�/.�ׂ_3~M��K ���I1Rx�G�"BD�< ��D�g�rP�X���=,�X?^&}���p�!4r�GQlg�����\ն2�"|"�&~�L���y�a�f���_$���8�I�U���>�]#�-}���פO�.�<+�ȃ�K9A���0js��I��Q���iU�h�Z>���b9W>����y"e&����iq>^eR�Z�a 1�d:��}B��K����&��}r�\$I�\����u��O~�ݯVɐS�"�"�{O��?�ޝ�������Ѷw��j{�l�`�;��������N��tr::DZ��r���O<V�2JC�c4.5~��?�p4�@�]�L-s��Efu]e��U5�;>��?�W}lS���/??<;N��8�qL� 1I?Bh��P�S�1���������TXQ�2�)����2�CFj�uC�`l�6F������N]�)� ~ٹ/B�I{��}����=�s~����V��H����}e�/��֞�&�K7h�iiŚ�a��'њ�{3@V�d���v���%=g1�Ż��Y?�{2I��$| �"Wck�iz����iO�+���,��H���qx� +��/�l��I�H�k��d ٞ>�Z�sN��Z���I�%{�rs�T�s���iN&�15&e��N�q�I�����C��.b�PvS�����HQ� \)�d� +�!��)5q�ޏ�ᆳ����H�ὲ&&;u�t܄� M�JЄ����ǐ�<���ʜ��ǘ��z�������x�I�Z60������䒵S}��i��w{������gDђik�)�D�H"���8T����& � ���Ǘ58n�mh��/U.�\�.�z�%���K����,�_R���9�����lh~�ݜ?��}iOWt��]�{�%�%��6'�V�Ц(-��sS�*4ƙ���d9�h�.�˃Ѐ.$��� +N4=�}�Y��?��K�m��{�1�tN��@��9b��� �Q`�)�`Ɉ���{�\�S�w��$���6sk®��)l���D�;7�� ��X��4��N� +q�z�9�8頒JܶNj�B���#�����Z��ƀO��w������ͭ�PW��P�P'Z�@�Ы�V����x�e��=����7{��0�mQ�0�ɃF����� +V8�8J�:8������6[��i5��5��˘�Rc̍\މ�]*�R����~u����b�f�q��k��vﵝp �܀6X�^���{��H�(F�K+��lǨ����%<|� 7�bTP ��k�gh�>�����$fn��%nRB�䪾�<��b��i����r��_ +�D��l�R- J �#(x +���Y�����7���@8�&o�%Cu����-/�-�N_V���zi@f�cI�l�����ݭ�eP������q�:���:� +t�{4U��� +�w�=g��r$��0�q���:���{�*m�z��\no���kZ�k����#JEE؊4�ϋ��G�\��a��H8����=�~O���}{���7N����_�]��cй�*����c�����?�ܚ��5�a덭ܲ�����ࠬv�lyi#j3;yK����##�(�=l�銙{��ኩ,�����1�\��}-�$�V��W���b��lt��@�����J�+��e� +2t��qnsU`N�%�b%�%��&���㩗;P�,Nc�1Oꦚw5b`�ؘ�3����+�H��Ԃ�p-�0&!Ity��j��+��G�l|n\��X�w{� +�yø����ݣ��0&�j`p��_q���'߾�kY��:��r�ySo�d k�'��=��!��W%A�C�P�� +Rռ���0@�҂F5uˌ +K�L�%IwMi�5� �ô�BIV9�YG^#7j�ą=�8�� �T��i���(����jq)���,T���쑕���j���_[����O���_:��5�{�9!� +��ְq���R��w��m�����b��"�ad����B����S]ZO+G�"Xd�b��'* +a�E�LJ��UGb����ʻ����yJ�\�<�Qކ��lS%���%d�M�������YN㩛��l��"� V@{ԋ�\0Z֊�[u���ď{�e���F��1��c�f �2_��erB�B��[�:�^��D�1,��R���;�#*��GA�:��>�W�m},���[Y�7��7S�$БÁ:~Se�MFR��'(��(>\$�LA-w6�S�q\d"�:�Vy,�2�GYoDfyK�U�p�)����/b��,Oa�r\�"���2�5�Ftw$Aúf̌�x�ü���?��Ô���,N1��jn +���P�Pw��@��o�;6O��A�O��-*�8u� +g��[����]"P8��Q��<�b�^����b�F�J�l��G�"��6٨�&+J��~����$<�=<�g�R���W)��n@��8�����0� +��;�K�4����=�*M�'!�"4��溃eXP��2=�|^�{T}q��}����꿜�� ��ѮuU�������CK�-[on�wA��� j��9��Z�X����*X~J>/�Q�T�z�*�b�l� T��!�J��8���}��չ���-ْ�95�����H0���Ԙ��ؘ#�����H8R����N�����:�iJ'ʹ3�f��4��N�2a���r�o�Ɛ�茵��4��}��}��5y��Y��.k���$�<2�]�L��Z�a`7.�MU���:�<�T^���}~���=I#�Y��X�KF�����YCB����rh&�A�"3 E}�0�^���4�<��z�gx�<|j�(��9 +�/�(��Y�Y��O>N�p��� +U?��~�rҍ���*�w��R���Ep��-� +h�� +M��8��+��M�v�����B�(�J�8k��ż��N��x��l�Q�lvY�$E�)z!V蛙w��D���y��yb1� � +~�U�I+H�f�¤�l]xP�YM�l�@]+}��j�c�U��'�0mj!2�h�DQ�҈�w$0�U��w���~Sg6\$���h@�E'���nUkw��ϱ/���;�4�Ч +�C5���X�?ק�c�-�B__�4zѨ� +��r��tT�$�q��㉿�φ�b��ُ.g�.�=��?�Y�� +S38���v���^�Z301�j�CG�I� +�R�LV�*{d� �DE$�_!v�(�]�Ka���ij-־.|A-p�Oq���k�Z9�kS߄��9i�����wEYOo�}T���b� �s��ozz��������6�x�`�гxf���&5��f{��S+{��&��O�o�Q���$����v�(����(���K�Y0�f�dYty�n�ǥ��`LqE�n�zp,��,Z��Zd������N�j��ń(�Q��=:h���L��!nG��q:pf� +P��6�ps#w�djĻ����J�|�Ӏ�@��昃�0�}�%a-��;J����D(�����k��>�E��U��?mL?\�����'�؛n���� +��g���37"S�;�fo`��'+SÛ���]���:�#���4�:�R?�!�K�0���x^Ǖ%a�b��q&���1�Ij���(�������� +��y��Y�1��Y:~Iʴ�!L�6K]��v����q���?b1�vF���-V9vlp�V��5̌~�*��,�(~T������#Mj�E��L�5��a�'���� x?�:d4m7����=� +��Z��!�]%?ce �ux}Ұ�o��~��'�7*rZ?�.��u!��Bi(1�d��w2%��B,���3����s�A+F�i(5LC��w�%u��p��D���ɰar)cڸ,�6l()o1�q#�X~$�d��ؗH&��6�b�+tc�"%����� cqgDvu����T�����|��"��W�r ʗ���^���8\���:9��j�Y ���w4&TWkAAЅ!=�5Jn�ӵ0�G�RH�2���?��tb���3,ܑ�I_ ��Q�H5o}�VO�K�:���r(��/��l�x�\�S��^�9�q��7�v-�<ݾ|�b�*���NE�xM������K��_?_U\S����IH֤�=V{��?�c��ACj�/{_>��U��ν��n;WhO�*bs�K� +N�0fd��@�C�L �pA�����9b�� �+ d�E�)$W0 +�����P-�"��Q_�¥��4�@U�Z�g�o9}����W�g ��i�d�r�u��p�XЕ����7�jQс��� +�@��� +��@����f��s뗾8��ly~����Ư�;W�v4�}���Bp��U����K_tԦ�Z������}O�>��0�k�ُ^T�i�ѱ��3x�F��K@���}v���(=k�&���r���4gH�ȉQa�G'�1��b���4XP&�-��\!>3H�"T�M����J[4o���Cd����Y���$��֙)Gi�|���� ��u���'{1���߾�7֬�\�5��)�����kW��~q�ú�eo��w����*�j~DǻQ�ȵ3P�L��^�N0�y�Fk�����G^!q�� �ÍS8l.r.57��ɸ�\��3�s��G!Z9LV��xQ0;��b�P�X?��Z�I� +b��K!6�w�6��i�B�p?��^����sZ�������E-�8\P>�RC �t�đ�7��f�ֳُ�e'�����mW��'��;�}|O�@����5�.i=9������D'l�1��E�b7 +&$H�EQ�PT�D�>�>����#<:��e�L��i_�π�w�߇��<�p�0��xc�� +~_����)Y6��V� +̐��˪�2�#y!Qu�J�(���g�Դh|Z��?r�h�����v��6q���}���;��}���8�؉q�Ò`B���єB'�MÒ@�NCK�2R�0J��h�e�n��D*BD�Y+��W�m�$�L+�Ti���s�f)��_����=-�����\�S�t��aWX@j�, +_��C����<�Q4s���w���O����kvo{��L1�ў��Q��ֆ�]�q����O��������9�s�����ܟ�}ftFxÏ:����� +��g��aAbX����n�G\�#�qN��A85� X!e��`���ۣ0=2�������f$�=`� �xF�rR.���䄛9�|�&q#k���� ��I��T�xN���dE�4 +��H�BЊ7U�/�#L˧G�Gu�����E��T&�b���{����?�*ۻ��]K�S�ibw{¨O��5M�G��;�?�T�g+� �U ��5ѾJ�$>���xJ|��Zg!L���(bRL"� +���b�d�#�GF���^����.�6=��4!h���X��]ź�P��1�mU1?!%'�HH��3f��~�'��h���1UU�B��f� m%-i�%����x��--�n��d%|�\L�{iMA�� �m`�i��d,����-�6'8��6��th�ɜiN�3NbQ֫��iEw�y�H�d�S,I�<��\�ͭmH��ϑ�K��N?w�W�iѪ�6�Z�zWr�����o�M��}u������~�n����̆dÊm��ʎ��\�YlH�㠂V�W�Y属�KD�%��x����m���w��^�س��n�`�D��NU#D�"V�J�dE�d/�*uX -��, �e,�BB���Kc+K˥Vi��B�$ی���fM�{0 +��l@�H��g%5UC�֬x�n�rj��6��<y`پh���dL�}�i +��QK:�my&��J�Cj�[�~�ۡû�K��XS� +�z�����'����:�~���}��pf���+�s�&� +� +4�?��[�\��F0(� +��X3%�L��|�� +�i���8cE@��7��l�2B����g k8\����,pY���8 9d�5f֚?&�FkY���|7�,j�:�����'b}�e� kU��*(�[�3�w'E���ת�9��N���.�s9�O�d9�������g]��r垗����zߞi"[�b��pBir�E��I�X + ��<���������Ƈ�.Q�B���*9GQ�#,����dBb��\dŔ zc�j�WL +�h��n�z�jE?Z����ʄ%���(��њy�"���I�Ix~�v�0�0��C5��Օ\�2>w��)�����a��uoplYL��&h��1Wsx9�Ǎs��\���Q�>���N���a^��89�4���C�@b��ck��֩�\궨��S�&��(��w$� +!J!��&���&��(u�]��r�����#��4E���4�M�t��90��/�3��0Z����/5�X��e� V�������"7���z8r�<<XvV��9S�Fg�g�s{�M�a{�Yi/w.����?�\�+�GK )-�H�\~ +�#zH э�����xE� +�z�����L���ꅴ����?��<͊����@��2$=(6���Nt��#"�6cyZ%Sq8���+����E<��� + +p�ns��aٌ�LP��3��T�N{�vZ)�T*� �yS(��+���� +��hi��[1Ծk���m���Z"�>(ϯh����z6:�N����ݳ��%��J*��~11A�,�+����1�_Up�*�c<]�W�$B��s�b{�4�%�ڷ��ۺl��v2~��6���yV�\��<��uɰ�-㬃1#8c� ��X�*I�� #�ԉ�f�O�Y� +�3�gN�͘ʇ7�l�i뢇A�>,iXL'3�Zu�����KYĩ3Y�S��u��M#���L�>��u�{o���{x�oiݛW�;��� +�[�>��iKT.��?3���+=' +����R�3�� �e��W�7���{ħ2��g}��ɷZ�-�p����Z~o�I�+�Yj��B�c� +- +�/�y�)]��� ś���4 +�^9i=1#{���2�i:N��_�8s��뗺���4���Χ��؟������cw/�ʜ?��g��X�Z}�so +���u��2��%�|nT��c������Y_��������RW��t�}I����#��+��(����Um/>��UdhѼ�x ��i6{�� T��OYv��cSu��CN!���[�I�)2� +8n7�=���4�?)�p��) +��j4�L���\�2�� ƼN���j�����Νٽ3��3�`��ky{iX6�b1�c0��f1�@-����&��";FJc;uKlBB$G�'�Z01�a[�L�M�YnS�*M+Z�?�v鹳�k�n�U��{عgf�.��=�|糃V��D�@��&H��� +g�#�s��L���c���=��=4e���\�ܻ)�+��\w��M��6�|=:O��Xӂ;/k8��x�v�YA+�a�<-��S"o�j�Iz����;1y�|�Wp[�>��6�#2�(k�c���|J��%�B6�(h +*.cJ��:Z����Aa�छ�q�CK\|���2B@&������&V-N1%nc�NO�K[�����/V��)h +e�T�k')x����֊�[}���ݼ�����׳~[��Y��yG�b��\���2�V33aBIg�z&�L$�ҟ��-�����̙l�fp�M��|N����dH>.�BKNfVv���Xd�L3��9Z��`\���4r�'��.��N�D�f3yRK2@3-S�Us��e�!f�)(C��q�kX��1|-����V:����/A9;OnGз�F�� �� ${\�`��g-MyY�7'� �7�^^&�$���]��#�C�rrc�ϯݼpq����W-I?�NE��Ʊ��� +�����_a�^�oˑ��_�t�?��7�bw��'�O����_�+wZx���J�2�S&l/:ϋ6\��''P +&HW�C.�[����,ہ���CN.u�-s\�u@�� +���DI�)�`U�Q��s��Lj%t�M��� +������hU5�T¢'�l쳼,�����7g��I��R_�4ed4m4����S���ª�����u�G�ޓX8;r2:�_�d���B\ +�^`�X�Nuq\~����A���"ŧ,O'��ǥ�7L4O +$����dS1��A{��Oғ�5ݥ> ǭ�ꢥ@�ET�D�6�+��'KBJ��SAuG4F{Jr�ZǪ�]�����n&2�1���T����� �'�n�-�H��寙%m����G�~��Ȅ�0$4)F�c��g֦���:>���[.�j`�O`YQ0z�l��/��ut�{��������Һf{�����}��m�嫪�z$x�y��+�a�z)���#K���XN���G-��I��M� i|�T��~*�(`o��c�C��5���*��$h."\��1هG1�W�+��;����~ұ�6]�`e��%T����"��2\ԖI�N����^hW��x�|�,�^�z��i�Ic?(��?�q���N�V*�,!�$�٪�n�P���(�6��$�Ĕ(��7�\f��j��*�R�f�$�D%�qB�Vm�lRD�W��( �����EߒJ�!y�]8�� T���?���1�2�eg��+`l 6�j�\Y�*.{pj�%َo�m��Ğ�Xϛ����(_����ß6]�G0��Dsw���1|����D7�&���.��n �LaS�,��{�^F�C��E�W�nK���� [6��y�\}������4� +�ϰW�m��m��m���ƨq�k���N�� }� �Y����W�z��*.��C_@~T�(��כ���Ұ�q[��u'�~8҆�W>��O���k:HR�l�O@�֣m���V�eF_�:��VWa����M���ݨ�����ϖ@��@���g���'�;9J�<�΄o��N��"�s��΄O��7>�X�7���������������a���w��=BM�����"T���X��d{�#���������sU5r.�h7N��N��=����7��ݭͨ����wƿO5���g~J�d"qJp��G;��O�N�կ�_�g�t��>��v�z���V\��O��� +endstream +endobj +295 0 obj +<< +/D [ 1505 0 R /XYZ null null null ] +>> +endobj +296 0 obj +<< +/D [ 1505 0 R /XYZ null null null ] +>> +endobj +297 0 obj +<< +/D [ 1505 0 R /XYZ 70 712 null ] +>> +endobj +298 0 obj +<< +/D [ 1505 0 R /XYZ 70 600 null ] +>> +endobj +299 0 obj +<< +/D [ 1505 0 R /XYZ 70 580 null ] +>> +endobj +300 0 obj +<< +/D [ 1505 0 R /XYZ 70 559 null ] +>> +endobj +301 0 obj +<< +/D [ 1505 0 R /XYZ 70 540 null ] +>> +endobj +302 0 obj +<< +/D [ 1505 0 R /XYZ 70 520 null ] +>> +endobj +303 0 obj +<< +/D [ 1505 0 R /XYZ 70 499 null ] +>> +endobj +304 0 obj +<< +/D [ 1505 0 R /XYZ 70 480 null ] +>> +endobj +305 0 obj +<< +/D [ 1505 0 R /XYZ 70 458 null ] +>> +endobj +306 0 obj +<< +/D [ 1505 0 R /XYZ 70 441 null ] +>> +endobj +307 0 obj +<< +/D [ 1505 0 R /XYZ 70 424 null ] +>> +endobj +308 0 obj +<< +/D [ 1505 0 R /XYZ 70 409 null ] +>> +endobj +309 0 obj +<< +/D [ 1505 0 R /XYZ 70 388 null ] +>> +endobj +310 0 obj +<< +/D [ 1505 0 R /XYZ 70 369 null ] +>> +endobj +311 0 obj +<< +/D [ 1505 0 R /XYZ 70 349 null ] +>> +endobj +312 0 obj +<< +/D [ 1505 0 R /XYZ 70 328 null ] +>> +endobj +313 0 obj +<< +/D [ 1505 0 R /XYZ 70 309 null ] +>> +endobj +314 0 obj +<< +/D [ 1505 0 R /XYZ 70 289 null ] +>> +endobj +315 0 obj +<< +/D [ 1505 0 R /XYZ 70 268 null ] +>> +endobj +316 0 obj +<< +/D [ 1505 0 R /XYZ 70 210 null ] +>> +endobj +317 0 obj +<< +/D [ 1505 0 R /XYZ 70 119 null ] +>> +endobj +318 0 obj +<< +/D [ 1505 0 R /XYZ 70 109 null ] +>> +endobj +319 0 obj +<< +/D [ 1 0 R /XYZ null null null ] +>> +endobj +320 0 obj +<< +/D [ 1 0 R /XYZ 61 47 null ] +>> +endobj +321 0 obj +<< +/D [ 1 0 R /XYZ 61 737 null ] +>> +endobj +322 0 obj +<< +/D [ 1 0 R /XYZ 192 34 null ] +>> +endobj +323 0 obj +<< +/D [ 1 0 R /XYZ 61 687 null ] +>> +endobj +324 0 obj +<< +/D [ 1 0 R /XYZ 61 675 null ] +>> +endobj +325 0 obj +<< +/D [ 1 0 R /XYZ 61 663 null ] +>> +endobj +326 0 obj +<< +/D [ 1 0 R /XYZ 61 651 null ] +>> +endobj +327 0 obj +<< +/D [ 1 0 R /XYZ 61 639 null ] +>> +endobj +328 0 obj +<< +/D [ 1 0 R /XYZ 61 627 null ] +>> +endobj +329 0 obj +<< +/D [ 1 0 R /XYZ 61 615 null ] +>> +endobj +330 0 obj +<< +/D [ 1 0 R /XYZ 61 603 null ] +>> +endobj +331 0 obj +<< +/D [ 1 0 R /XYZ 61 591 null ] +>> +endobj +332 0 obj +<< +/D [ 1 0 R /XYZ 61 579 null ] +>> +endobj +333 0 obj +<< +/D [ 1 0 R /XYZ 61 567 null ] +>> +endobj +334 0 obj +<< +/D [ 1 0 R /XYZ 61 555 null ] +>> +endobj +335 0 obj +<< +/D [ 1 0 R /XYZ 61 543 null ] +>> +endobj +336 0 obj +<< +/D [ 1 0 R /XYZ 61 531 null ] +>> +endobj +337 0 obj +<< +/D [ 1 0 R /XYZ 61 519 null ] +>> +endobj +338 0 obj +<< +/D [ 1 0 R /XYZ 61 507 null ] +>> +endobj +339 0 obj +<< +/D [ 1 0 R /XYZ 61 495 null ] +>> +endobj +340 0 obj +<< +/D [ 1 0 R /XYZ 61 459 null ] +>> +endobj +341 0 obj +<< +/D [ 1 0 R /XYZ 61 447 null ] +>> +endobj +342 0 obj +<< +/D [ 1 0 R /XYZ 61 435 null ] +>> +endobj +343 0 obj +<< +/D [ 1 0 R /XYZ 61 423 null ] +>> +endobj +344 0 obj +<< +/D [ 1 0 R /XYZ 61 411 null ] +>> +endobj +345 0 obj +<< +/D [ 1 0 R /XYZ 61 351 null ] +>> +endobj +346 0 obj +<< +/D [ 1 0 R /XYZ 61 339 null ] +>> +endobj +347 0 obj +<< +/D [ 1 0 R /XYZ 61 231 null ] +>> +endobj +348 0 obj +<< +/D [ 1 0 R /XYZ 61 219 null ] +>> +endobj +349 0 obj +<< +/D [ 1 0 R /XYZ 61 207 null ] +>> +endobj +350 0 obj +<< +/D [ 1 0 R /XYZ 61 195 null ] +>> +endobj +351 0 obj +<< +/D [ 1 0 R /XYZ 61 183 null ] +>> +endobj +352 0 obj +<< +/D [ 1 0 R /XYZ 61 123 null ] +>> +endobj +353 0 obj +<< +/D [ 1 0 R /XYZ 61 111 null ] +>> +endobj +354 0 obj +<< +/D [ 1 0 R /XYZ 61 99 null ] +>> +endobj +355 0 obj +<< +/D [ 1 0 R /XYZ 61 87 null ] +>> +endobj +356 0 obj +<< +/D [ 5 0 R /XYZ null null null ] +>> +endobj +357 0 obj +<< +/D [ 5 0 R /XYZ 61 47 null ] +>> +endobj +358 0 obj +<< +/D [ 5 0 R /XYZ 61 737 null ] +>> +endobj +359 0 obj +<< +/D [ 5 0 R /XYZ 192 34 null ] +>> +endobj +360 0 obj +<< +/D [ 5 0 R /XYZ 61 687 null ] +>> +endobj +361 0 obj +<< +/D [ 5 0 R /XYZ 61 675 null ] +>> +endobj +362 0 obj +<< +/D [ 5 0 R /XYZ 61 663 null ] +>> +endobj +363 0 obj +<< +/D [ 5 0 R /XYZ 61 603 null ] +>> +endobj +364 0 obj +<< +/D [ 5 0 R /XYZ 61 591 null ] +>> +endobj +365 0 obj +<< +/D [ 5 0 R /XYZ 61 579 null ] +>> +endobj +366 0 obj +<< +/D [ 5 0 R /XYZ 61 567 null ] +>> +endobj +367 0 obj +<< +/D [ 5 0 R /XYZ 61 555 null ] +>> +endobj +368 0 obj +<< +/D [ 5 0 R /XYZ 61 495 null ] +>> +endobj +369 0 obj +<< +/D [ 5 0 R /XYZ 61 423 null ] +>> +endobj +370 0 obj +<< +/D [ 5 0 R /XYZ 61 411 null ] +>> +endobj +371 0 obj +<< +/D [ 5 0 R /XYZ 61 387 null ] +>> +endobj +372 0 obj +<< +/D [ 5 0 R /XYZ 61 375 null ] +>> +endobj +373 0 obj +<< +/D [ 5 0 R /XYZ 61 363 null ] +>> +endobj +374 0 obj +<< +/D [ 5 0 R /XYZ 61 351 null ] +>> +endobj +375 0 obj +<< +/D [ 5 0 R /XYZ 61 339 null ] +>> +endobj +376 0 obj +<< +/D [ 5 0 R /XYZ 61 267 null ] +>> +endobj +377 0 obj +<< +/D [ 5 0 R /XYZ 61 255 null ] +>> +endobj +378 0 obj +<< +/D [ 5 0 R /XYZ 61 243 null ] +>> +endobj +379 0 obj +<< +/D [ 5 0 R /XYZ 61 231 null ] +>> +endobj +380 0 obj +<< +/D [ 5 0 R /XYZ 61 219 null ] +>> +endobj +381 0 obj +<< +/D [ 5 0 R /XYZ 61 123 null ] +>> +endobj +382 0 obj +<< +/D [ 5 0 R /XYZ 61 111 null ] +>> +endobj +383 0 obj +<< +/D [ 5 0 R /XYZ 61 99 null ] +>> +endobj +384 0 obj +<< +/D [ 5 0 R /XYZ 61 87 null ] +>> +endobj +385 0 obj +<< +/D [ 8 0 R /XYZ null null null ] +>> +endobj +386 0 obj +<< +/D [ 8 0 R /XYZ null null null ] +>> +endobj +387 0 obj +<< +/D [ 8 0 R /XYZ 61 687 null ] +>> +endobj +388 0 obj +<< +/D [ 8 0 R /XYZ 61 675 null ] +>> +endobj +389 0 obj +<< +/D [ 8 0 R /XYZ 61 663 null ] +>> +endobj +390 0 obj +<< +/D [ 8 0 R /XYZ 61 627 null ] +>> +endobj +391 0 obj +<< +/D [ 8 0 R /XYZ 61 615 null ] +>> +endobj +392 0 obj +<< +/D [ 8 0 R /XYZ 61 531 null ] +>> +endobj +393 0 obj +<< +/D [ 8 0 R /XYZ 61 519 null ] +>> +endobj +394 0 obj +<< +/D [ 8 0 R /XYZ 61 507 null ] +>> +endobj +395 0 obj +<< +/D [ 8 0 R /XYZ 61 495 null ] +>> +endobj +396 0 obj +<< +/D [ 8 0 R /XYZ 61 483 null ] +>> +endobj +397 0 obj +<< +/D [ 8 0 R /XYZ 61 447 null ] +>> +endobj +398 0 obj +<< +/D [ 8 0 R /XYZ 61 435 null ] +>> +endobj +399 0 obj +<< +/D [ 8 0 R /XYZ 61 423 null ] +>> +endobj +400 0 obj +<< +/D [ 8 0 R /XYZ 61 411 null ] +>> +endobj +401 0 obj +<< +/D [ 11 0 R /XYZ null null null ] +>> +endobj +402 0 obj +<< +/D [ 11 0 R /XYZ null null null ] +>> +endobj +403 0 obj +<< +/D [ 11 0 R /XYZ 205 479 null ] +>> +endobj +404 0 obj +<< +/D [ 11 0 R /XYZ 232 457 null ] +>> +endobj +405 0 obj +<< +/D [ 11 0 R /XYZ 274 438 null ] +>> +endobj +406 0 obj +<< +/D [ 11 0 R /XYZ 324 423 null ] +>> +endobj +407 0 obj +<< +/D [ 11 0 R /XYZ 274 406 null ] +>> +endobj +408 0 obj +<< +/D [ 11 0 R /XYZ 324 391 null ] +>> +endobj +409 0 obj +<< +/D [ 11 0 R /XYZ 232 371 null ] +>> +endobj +410 0 obj +<< +/D [ 11 0 R /XYZ 274 352 null ] +>> +endobj +411 0 obj +<< +/D [ 11 0 R /XYZ 274 335 null ] +>> +endobj +412 0 obj +<< +/D [ 11 0 R /XYZ 324 320 null ] +>> +endobj +413 0 obj +<< +/D [ 11 0 R /XYZ 324 305 null ] +>> +endobj +414 0 obj +<< +/D [ 11 0 R /XYZ 324 290 null ] +>> +endobj +415 0 obj +<< +/D [ 11 0 R /XYZ 324 275 null ] +>> +endobj +416 0 obj +<< +/D [ 11 0 R /XYZ 324 260 null ] +>> +endobj +417 0 obj +<< +/D [ 11 0 R /XYZ 324 245 null ] +>> +endobj +418 0 obj +<< +/D [ 11 0 R /XYZ 274 228 null ] +>> +endobj +419 0 obj +<< +/D [ 11 0 R /XYZ 324 213 null ] +>> +endobj +420 0 obj +<< +/D [ 11 0 R /XYZ 324 198 null ] +>> +endobj +421 0 obj +<< +/D [ 11 0 R /XYZ 324 183 null ] +>> +endobj +422 0 obj +<< +/D [ 11 0 R /XYZ 324 168 null ] +>> +endobj +423 0 obj +<< +/D [ 11 0 R /XYZ 324 153 null ] +>> +endobj +424 0 obj +<< +/D [ 11 0 R /XYZ 324 138 null ] +>> +endobj +425 0 obj +<< +/D [ 11 0 R /XYZ 324 123 null ] +>> +endobj +426 0 obj +<< +/D [ 11 0 R /XYZ 274 106 null ] +>> +endobj +427 0 obj +<< +/D [ 11 0 R /XYZ 61 47 null ] +>> +endobj +428 0 obj +<< +/D [ 11 0 R /XYZ 192 34 null ] +>> +endobj +429 0 obj +<< +/D [ 11 0 R /XYZ 61 530 null ] +>> +endobj +430 0 obj +<< +/D [ 11 0 R /XYZ 61 471 null ] +>> +endobj +431 0 obj +<< +/D [ 11 0 R /XYZ 61 449 null ] +>> +endobj +432 0 obj +<< +/D [ 11 0 R /XYZ 61 431 null ] +>> +endobj +433 0 obj +<< +/D [ 11 0 R /XYZ 61 416 null ] +>> +endobj +434 0 obj +<< +/D [ 11 0 R /XYZ 61 399 null ] +>> +endobj +435 0 obj +<< +/D [ 11 0 R /XYZ 61 384 null ] +>> +endobj +436 0 obj +<< +/D [ 11 0 R /XYZ 61 363 null ] +>> +endobj +437 0 obj +<< +/D [ 11 0 R /XYZ 61 345 null ] +>> +endobj +438 0 obj +<< +/D [ 11 0 R /XYZ 61 328 null ] +>> +endobj +439 0 obj +<< +/D [ 11 0 R /XYZ 61 313 null ] +>> +endobj +440 0 obj +<< +/D [ 11 0 R /XYZ 61 298 null ] +>> +endobj +441 0 obj +<< +/D [ 11 0 R /XYZ 61 283 null ] +>> +endobj +442 0 obj +<< +/D [ 11 0 R /XYZ 61 268 null ] +>> +endobj +443 0 obj +<< +/D [ 11 0 R /XYZ 61 253 null ] +>> +endobj +444 0 obj +<< +/D [ 11 0 R /XYZ 61 238 null ] +>> +endobj +445 0 obj +<< +/D [ 11 0 R /XYZ 61 221 null ] +>> +endobj +446 0 obj +<< +/D [ 11 0 R /XYZ 61 206 null ] +>> +endobj +447 0 obj +<< +/D [ 11 0 R /XYZ 61 191 null ] +>> +endobj +448 0 obj +<< +/D [ 11 0 R /XYZ 61 176 null ] +>> +endobj +449 0 obj +<< +/D [ 11 0 R /XYZ 61 161 null ] +>> +endobj +450 0 obj +<< +/D [ 11 0 R /XYZ 61 146 null ] +>> +endobj +451 0 obj +<< +/D [ 11 0 R /XYZ 61 131 null ] +>> +endobj +452 0 obj +<< +/D [ 11 0 R /XYZ 61 116 null ] +>> +endobj +453 0 obj +<< +/D [ 11 0 R /XYZ 61 99 null ] +>> +endobj +454 0 obj +<< +/D [ 38 0 R /XYZ null null null ] +>> +endobj +455 0 obj +<< +/D [ 38 0 R /XYZ null null null ] +>> +endobj +456 0 obj +<< +/D [ 38 0 R /XYZ 324 695 null ] +>> +endobj +457 0 obj +<< +/D [ 38 0 R /XYZ 324 680 null ] +>> +endobj +458 0 obj +<< +/D [ 38 0 R /XYZ 61 47 null ] +>> +endobj +459 0 obj +<< +/D [ 38 0 R /XYZ 61 737 null ] +>> +endobj +460 0 obj +<< +/D [ 38 0 R /XYZ 192 34 null ] +>> +endobj +461 0 obj +<< +/D [ 38 0 R /XYZ 61 688 null ] +>> +endobj +462 0 obj +<< +/D [ 38 0 R /XYZ 61 673 null ] +>> +endobj +463 0 obj +<< +/D [ 43 0 R /XYZ null null null ] +>> +endobj +464 0 obj +<< +/D [ 43 0 R /XYZ null null null ] +>> +endobj +465 0 obj +<< +/D [ 43 0 R /XYZ 221 452 null ] +>> +endobj +466 0 obj +<< +/D [ 43 0 R /XYZ 484 110 null ] +>> +endobj +467 0 obj +<< +/D [ 43 0 R /XYZ 61 47 null ] +>> +endobj +468 0 obj +<< +/D [ 43 0 R /XYZ 192 34 null ] +>> +endobj +469 0 obj +<< +/D [ 43 0 R /XYZ 61 530 null ] +>> +endobj +470 0 obj +<< +/D [ 43 0 R /XYZ 61 472 null ] +>> +endobj +471 0 obj +<< +/D [ 43 0 R /XYZ 61 446 null ] +>> +endobj +472 0 obj +<< +/D [ 43 0 R /XYZ 61 314 null ] +>> +endobj +473 0 obj +<< +/D [ 43 0 R /XYZ 61 260 null ] +>> +endobj +474 0 obj +<< +/D [ 43 0 R /XYZ 61 233 null ] +>> +endobj +475 0 obj +<< +/D [ 43 0 R /XYZ 61 167 null ] +>> +endobj +476 0 obj +<< +/D [ 43 0 R /XYZ 61 141 null ] +>> +endobj +477 0 obj +<< +/D [ 46 0 R /XYZ null null null ] +>> +endobj +478 0 obj +<< +/D [ 46 0 R /XYZ 227 421 null ] +>> +endobj +479 0 obj +<< +/D [ 46 0 R /XYZ 227 359 null ] +>> +endobj +480 0 obj +<< +/D [ 46 0 R /XYZ 227 657 null ] +>> +endobj +481 0 obj +<< +/D [ 46 0 R /XYZ 227 657 null ] +>> +endobj +482 0 obj +<< +/D [ 46 0 R /XYZ 227 570 null ] +>> +endobj +483 0 obj +<< +/D [ 46 0 R /XYZ 301 570 null ] +>> +endobj +484 0 obj +<< +/D [ 46 0 R /XYZ 227 471 null ] +>> +endobj +485 0 obj +<< +/D [ 46 0 R /XYZ 227 471 null ] +>> +endobj +486 0 obj +<< +/D [ 46 0 R /XYZ 61 47 null ] +>> +endobj +487 0 obj +<< +/D [ 46 0 R /XYZ 61 737 null ] +>> +endobj +488 0 obj +<< +/D [ 46 0 R /XYZ 192 34 null ] +>> +endobj +489 0 obj +<< +/D [ 46 0 R /XYZ 61 650 null ] +>> +endobj +490 0 obj +<< +/D [ 46 0 R /XYZ 61 563 null ] +>> +endobj +491 0 obj +<< +/D [ 46 0 R /XYZ 61 464 null ] +>> +endobj +492 0 obj +<< +/D [ 46 0 R /XYZ 61 414 null ] +>> +endobj +493 0 obj +<< +/D [ 46 0 R /XYZ 61 352 null ] +>> +endobj +494 0 obj +<< +/D [ 46 0 R /XYZ 61 295 null ] +>> +endobj +495 0 obj +<< +/D [ 46 0 R /XYZ 61 250 null ] +>> +endobj +496 0 obj +<< +/D [ 46 0 R /XYZ 61 237 null ] +>> +endobj +497 0 obj +<< +/D [ 46 0 R /XYZ 61 224 null ] +>> +endobj +498 0 obj +<< +/D [ 46 0 R /XYZ 61 211 null ] +>> +endobj +499 0 obj +<< +/D [ 46 0 R /XYZ 61 198 null ] +>> +endobj +500 0 obj +<< +/D [ 46 0 R /XYZ 61 185 null ] +>> +endobj +501 0 obj +<< +/D [ 46 0 R /XYZ 61 172 null ] +>> +endobj +502 0 obj +<< +/D [ 46 0 R /XYZ 61 159 null ] +>> +endobj +503 0 obj +<< +/D [ 46 0 R /XYZ 61 146 null ] +>> +endobj +504 0 obj +<< +/D [ 49 0 R /XYZ null null null ] +>> +endobj +505 0 obj +<< +/D [ 49 0 R /XYZ 61 47 null ] +>> +endobj +506 0 obj +<< +/D [ 49 0 R /XYZ 61 737 null ] +>> +endobj +507 0 obj +<< +/D [ 49 0 R /XYZ 192 34 null ] +>> +endobj +508 0 obj +<< +/D [ 49 0 R /XYZ 61 689 null ] +>> +endobj +509 0 obj +<< +/D [ 49 0 R /XYZ 61 662 null ] +>> +endobj +510 0 obj +<< +/D [ 49 0 R /XYZ 61 617 null ] +>> +endobj +511 0 obj +<< +/D [ 49 0 R /XYZ 61 584 null ] +>> +endobj +512 0 obj +<< +/D [ 49 0 R /XYZ 61 564 null ] +>> +endobj +513 0 obj +<< +/D [ 49 0 R /XYZ 61 543 null ] +>> +endobj +514 0 obj +<< +/D [ 49 0 R /XYZ 61 502 null ] +>> +endobj +515 0 obj +<< +/D [ 49 0 R /XYZ 61 476 null ] +>> +endobj +516 0 obj +<< +/D [ 49 0 R /XYZ 61 457 null ] +>> +endobj +517 0 obj +<< +/D [ 49 0 R /XYZ 61 439 null ] +>> +endobj +518 0 obj +<< +/D [ 49 0 R /XYZ 61 420 null ] +>> +endobj +519 0 obj +<< +/D [ 49 0 R /XYZ 61 402 null ] +>> +endobj +520 0 obj +<< +/D [ 49 0 R /XYZ 61 384 null ] +>> +endobj +521 0 obj +<< +/D [ 49 0 R /XYZ 61 365 null ] +>> +endobj +522 0 obj +<< +/D [ 49 0 R /XYZ 61 347 null ] +>> +endobj +523 0 obj +<< +/D [ 49 0 R /XYZ 61 328 null ] +>> +endobj +524 0 obj +<< +/D [ 49 0 R /XYZ 61 310 null ] +>> +endobj +525 0 obj +<< +/D [ 49 0 R /XYZ 61 292 null ] +>> +endobj +526 0 obj +<< +/D [ 49 0 R /XYZ 61 271 null ] +>> +endobj +527 0 obj +<< +/D [ 49 0 R /XYZ 61 253 null ] +>> +endobj +528 0 obj +<< +/D [ 49 0 R /XYZ 61 234 null ] +>> +endobj +529 0 obj +<< +/D [ 49 0 R /XYZ 61 216 null ] +>> +endobj +530 0 obj +<< +/D [ 49 0 R /XYZ 61 198 null ] +>> +endobj +531 0 obj +<< +/D [ 49 0 R /XYZ 61 185 null ] +>> +endobj +532 0 obj +<< +/D [ 52 0 R /XYZ null null null ] +>> +endobj +533 0 obj +<< +/D [ 52 0 R /XYZ null null null ] +>> +endobj +534 0 obj +<< +/D [ 55 0 R /XYZ null null null ] +>> +endobj +535 0 obj +<< +/D [ 55 0 R /XYZ 105 482 null ] +>> +endobj +536 0 obj +<< +/D [ 55 0 R /XYZ 105 482 null ] +>> +endobj +537 0 obj +<< +/D [ 55 0 R /XYZ 105 298 null ] +>> +endobj +538 0 obj +<< +/D [ 55 0 R /XYZ 105 298 null ] +>> +endobj +539 0 obj +<< +/D [ 55 0 R /XYZ 115 298 null ] +>> +endobj +540 0 obj +<< +/D [ 55 0 R /XYZ 168 263 null ] +>> +endobj +541 0 obj +<< +/D [ 55 0 R /XYZ 61 47 null ] +>> +endobj +542 0 obj +<< +/D [ 55 0 R /XYZ 192 34 null ] +>> +endobj +543 0 obj +<< +/D [ 55 0 R /XYZ 61 530 null ] +>> +endobj +544 0 obj +<< +/D [ 55 0 R /XYZ 61 534 null ] +>> +endobj +545 0 obj +<< +/D [ 55 0 R /XYZ 61 472 null ] +>> +endobj +546 0 obj +<< +/D [ 55 0 R /XYZ 61 437 null ] +>> +endobj +547 0 obj +<< +/D [ 55 0 R /XYZ 61 412 null ] +>> +endobj +548 0 obj +<< +/D [ 55 0 R /XYZ 61 391 null ] +>> +endobj +549 0 obj +<< +/D [ 55 0 R /XYZ 61 360 null ] +>> +endobj +550 0 obj +<< +/D [ 55 0 R /XYZ 61 330 null ] +>> +endobj +551 0 obj +<< +/D [ 55 0 R /XYZ 61 288 null ] +>> +endobj +552 0 obj +<< +/D [ 55 0 R /XYZ 61 253 null ] +>> +endobj +553 0 obj +<< +/D [ 55 0 R /XYZ 61 220 null ] +>> +endobj +554 0 obj +<< +/D [ 55 0 R /XYZ 61 201 null ] +>> +endobj +555 0 obj +<< +/D [ 55 0 R /XYZ 61 148 null ] +>> +endobj +556 0 obj +<< +/D [ 55 0 R /XYZ 61 129 null ] +>> +endobj +557 0 obj +<< +/D [ 62 0 R /XYZ null null null ] +>> +endobj +558 0 obj +<< +/D [ 62 0 R /XYZ 61 47 null ] +>> +endobj +559 0 obj +<< +/D [ 62 0 R /XYZ 61 737 null ] +>> +endobj +560 0 obj +<< +/D [ 62 0 R /XYZ 192 34 null ] +>> +endobj +561 0 obj +<< +/D [ 62 0 R /XYZ 61 687 null ] +>> +endobj +562 0 obj +<< +/D [ 65 0 R /XYZ null null null ] +>> +endobj +563 0 obj +<< +/D [ 65 0 R /XYZ 105 312 null ] +>> +endobj +564 0 obj +<< +/D [ 65 0 R /XYZ 105 312 null ] +>> +endobj +565 0 obj +<< +/D [ 65 0 R /XYZ 61 47 null ] +>> +endobj +566 0 obj +<< +/D [ 65 0 R /XYZ 192 34 null ] +>> +endobj +567 0 obj +<< +/D [ 65 0 R /XYZ 61 557 null ] +>> +endobj +568 0 obj +<< +/D [ 65 0 R /XYZ 61 538 null ] +>> +endobj +569 0 obj +<< +/D [ 65 0 R /XYZ 61 472 null ] +>> +endobj +570 0 obj +<< +/D [ 65 0 R /XYZ 61 447 null ] +>> +endobj +571 0 obj +<< +/D [ 65 0 R /XYZ 61 302 null ] +>> +endobj +572 0 obj +<< +/D [ 65 0 R /XYZ 61 275 null ] +>> +endobj +573 0 obj +<< +/D [ 65 0 R /XYZ 61 180 null ] +>> +endobj +574 0 obj +<< +/D [ 65 0 R /XYZ 205 419 null ] +>> +endobj +575 0 obj +<< +/D [ 65 0 R /XYZ 205 406 null ] +>> +endobj +576 0 obj +<< +/D [ 65 0 R /XYZ 457 419 null ] +>> +endobj +577 0 obj +<< +/D [ 65 0 R /XYZ 457 406 null ] +>> +endobj +578 0 obj +<< +/D [ 65 0 R /XYZ 205 387 null ] +>> +endobj +579 0 obj +<< +/D [ 65 0 R /XYZ 457 387 null ] +>> +endobj +580 0 obj +<< +/D [ 65 0 R /XYZ 205 369 null ] +>> +endobj +581 0 obj +<< +/D [ 65 0 R /XYZ 457 369 null ] +>> +endobj +582 0 obj +<< +/D [ 65 0 R /XYZ 205 351 null ] +>> +endobj +583 0 obj +<< +/D [ 65 0 R /XYZ 457 351 null ] +>> +endobj +584 0 obj +<< +/D [ 65 0 R /XYZ 205 333 null ] +>> +endobj +585 0 obj +<< +/D [ 65 0 R /XYZ 457 333 null ] +>> +endobj +586 0 obj +<< +/D [ 76 0 R /XYZ 105 569 null ] +>> +endobj +587 0 obj +<< +/D [ 76 0 R /XYZ 105 569 null ] +>> +endobj +588 0 obj +<< +/D [ 76 0 R /XYZ 130 569 null ] +>> +endobj +589 0 obj +<< +/D [ 76 0 R /XYZ 61 47 null ] +>> +endobj +590 0 obj +<< +/D [ 76 0 R /XYZ 61 737 null ] +>> +endobj +591 0 obj +<< +/D [ 76 0 R /XYZ 192 34 null ] +>> +endobj +592 0 obj +<< +/D [ 76 0 R /XYZ 61 687 null ] +>> +endobj +593 0 obj +<< +/D [ 76 0 R /XYZ 61 559 null ] +>> +endobj +594 0 obj +<< +/D [ 76 0 R /XYZ 61 533 null ] +>> +endobj +595 0 obj +<< +/D [ 76 0 R /XYZ 61 512 null ] +>> +endobj +596 0 obj +<< +/D [ 76 0 R /XYZ 61 492 null ] +>> +endobj +597 0 obj +<< +/D [ 76 0 R /XYZ 61 471 null ] +>> +endobj +598 0 obj +<< +/D [ 76 0 R /XYZ 61 439 null ] +>> +endobj +599 0 obj +<< +/D [ 76 0 R /XYZ 61 418 null ] +>> +endobj +600 0 obj +<< +/D [ 84 0 R /XYZ 168 698 null ] +>> +endobj +601 0 obj +<< +/D [ 84 0 R /XYZ 168 698 null ] +>> +endobj +602 0 obj +<< +/D [ 84 0 R /XYZ 256 302 null ] +>> +endobj +603 0 obj +<< +/D [ 84 0 R /XYZ 256 302 null ] +>> +endobj +604 0 obj +<< +/D [ 84 0 R /XYZ 177 698 null ] +>> +endobj +605 0 obj +<< +/D [ 84 0 R /XYZ 205 278 null ] +>> +endobj +606 0 obj +<< +/D [ 84 0 R /XYZ 61 47 null ] +>> +endobj +607 0 obj +<< +/D [ 84 0 R /XYZ 61 737 null ] +>> +endobj +608 0 obj +<< +/D [ 84 0 R /XYZ 192 34 null ] +>> +endobj +609 0 obj +<< +/D [ 84 0 R /XYZ 61 689 null ] +>> +endobj +610 0 obj +<< +/D [ 84 0 R /XYZ 61 665 null ] +>> +endobj +611 0 obj +<< +/D [ 84 0 R /XYZ 61 296 null ] +>> +endobj +612 0 obj +<< +/D [ 84 0 R /XYZ 61 269 null ] +>> +endobj +613 0 obj +<< +/D [ 84 0 R /XYZ 61 237 null ] +>> +endobj +614 0 obj +<< +/D [ 84 0 R /XYZ 61 218 null ] +>> +endobj +615 0 obj +<< +/D [ 84 0 R /XYZ 61 190 null ] +>> +endobj +616 0 obj +<< +/D [ 84 0 R /XYZ 61 170 null ] +>> +endobj +617 0 obj +<< +/D [ 84 0 R /XYZ 61 142 null ] +>> +endobj +618 0 obj +<< +/D [ 84 0 R /XYZ 61 123 null ] +>> +endobj +619 0 obj +<< +/D [ 87 0 R /XYZ 205 554 null ] +>> +endobj +620 0 obj +<< +/D [ 87 0 R /XYZ 61 688 null ] +>> +endobj +621 0 obj +<< +/D [ 87 0 R /XYZ 61 663 null ] +>> +endobj +622 0 obj +<< +/D [ 87 0 R /XYZ 61 638 null ] +>> +endobj +623 0 obj +<< +/D [ 87 0 R /XYZ 61 622 null ] +>> +endobj +624 0 obj +<< +/D [ 87 0 R /XYZ 61 594 null ] +>> +endobj +625 0 obj +<< +/D [ 87 0 R /XYZ 61 575 null ] +>> +endobj +626 0 obj +<< +/D [ 87 0 R /XYZ 61 545 null ] +>> +endobj +627 0 obj +<< +/D [ 87 0 R /XYZ 61 514 null ] +>> +endobj +628 0 obj +<< +/D [ 87 0 R /XYZ 61 494 null ] +>> +endobj +629 0 obj +<< +/D [ 87 0 R /XYZ 61 466 null ] +>> +endobj +630 0 obj +<< +/D [ 87 0 R /XYZ 61 447 null ] +>> +endobj +631 0 obj +<< +/D [ 87 0 R /XYZ 61 419 null ] +>> +endobj +632 0 obj +<< +/D [ 87 0 R /XYZ 61 400 null ] +>> +endobj +633 0 obj +<< +/D [ 87 0 R /XYZ 61 372 null ] +>> +endobj +634 0 obj +<< +/D [ 87 0 R /XYZ 61 347 null ] +>> +endobj +635 0 obj +<< +/D [ 87 0 R /XYZ 61 331 null ] +>> +endobj +636 0 obj +<< +/D [ 87 0 R /XYZ 61 304 null ] +>> +endobj +637 0 obj +<< +/D [ 87 0 R /XYZ 61 288 null ] +>> +endobj +638 0 obj +<< +/D [ 87 0 R /XYZ 61 260 null ] +>> +endobj +639 0 obj +<< +/D [ 87 0 R /XYZ 61 244 null ] +>> +endobj +640 0 obj +<< +/D [ 87 0 R /XYZ 61 216 null ] +>> +endobj +641 0 obj +<< +/D [ 87 0 R /XYZ 61 192 null ] +>> +endobj +642 0 obj +<< +/D [ 87 0 R /XYZ 61 176 null ] +>> +endobj +643 0 obj +<< +/D [ 87 0 R /XYZ 61 149 null ] +>> +endobj +644 0 obj +<< +/D [ 87 0 R /XYZ 61 133 null ] +>> +endobj +645 0 obj +<< +/D [ 87 0 R /XYZ 61 105 null ] +>> +endobj +646 0 obj +<< +/D [ 87 0 R /XYZ 61 89 null ] +>> +endobj +647 0 obj +<< +/D [ 90 0 R /XYZ null null null ] +>> +endobj +648 0 obj +<< +/D [ 90 0 R /XYZ 205 475 null ] +>> +endobj +649 0 obj +<< +/D [ 90 0 R /XYZ 205 475 null ] +>> +endobj +650 0 obj +<< +/D [ 90 0 R /XYZ 61 687 null ] +>> +endobj +651 0 obj +<< +/D [ 90 0 R /XYZ 61 671 null ] +>> +endobj +652 0 obj +<< +/D [ 90 0 R /XYZ 61 651 null ] +>> +endobj +653 0 obj +<< +/D [ 90 0 R /XYZ 61 623 null ] +>> +endobj +654 0 obj +<< +/D [ 90 0 R /XYZ 61 607 null ] +>> +endobj +655 0 obj +<< +/D [ 90 0 R /XYZ 61 580 null ] +>> +endobj +656 0 obj +<< +/D [ 90 0 R /XYZ 61 564 null ] +>> +endobj +657 0 obj +<< +/D [ 90 0 R /XYZ 61 544 null ] +>> +endobj +658 0 obj +<< +/D [ 90 0 R /XYZ 61 516 null ] +>> +endobj +659 0 obj +<< +/D [ 90 0 R /XYZ 61 496 null ] +>> +endobj +660 0 obj +<< +/D [ 90 0 R /XYZ 61 467 null ] +>> +endobj +661 0 obj +<< +/D [ 90 0 R /XYZ 61 435 null ] +>> +endobj +662 0 obj +<< +/D [ 90 0 R /XYZ 61 416 null ] +>> +endobj +663 0 obj +<< +/D [ 90 0 R /XYZ 61 388 null ] +>> +endobj +664 0 obj +<< +/D [ 90 0 R /XYZ 61 368 null ] +>> +endobj +665 0 obj +<< +/D [ 90 0 R /XYZ 61 340 null ] +>> +endobj +666 0 obj +<< +/D [ 90 0 R /XYZ 61 321 null ] +>> +endobj +667 0 obj +<< +/D [ 90 0 R /XYZ 61 293 null ] +>> +endobj +668 0 obj +<< +/D [ 90 0 R /XYZ 61 269 null ] +>> +endobj +669 0 obj +<< +/D [ 90 0 R /XYZ 61 253 null ] +>> +endobj +670 0 obj +<< +/D [ 90 0 R /XYZ 61 225 null ] +>> +endobj +671 0 obj +<< +/D [ 90 0 R /XYZ 61 209 null ] +>> +endobj +672 0 obj +<< +/D [ 90 0 R /XYZ 61 181 null ] +>> +endobj +673 0 obj +<< +/D [ 90 0 R /XYZ 61 157 null ] +>> +endobj +674 0 obj +<< +/D [ 90 0 R /XYZ 61 141 null ] +>> +endobj +675 0 obj +<< +/D [ 90 0 R /XYZ 61 113 null ] +>> +endobj +676 0 obj +<< +/D [ 90 0 R /XYZ 61 93 null ] +>> +endobj +677 0 obj +<< +/D [ 93 0 R /XYZ null null null ] +>> +endobj +678 0 obj +<< +/D [ 93 0 R /XYZ 61 688 null ] +>> +endobj +679 0 obj +<< +/D [ 93 0 R /XYZ 61 657 null ] +>> +endobj +680 0 obj +<< +/D [ 93 0 R /XYZ 61 637 null ] +>> +endobj +681 0 obj +<< +/D [ 93 0 R /XYZ 61 609 null ] +>> +endobj +682 0 obj +<< +/D [ 93 0 R /XYZ 61 590 null ] +>> +endobj +683 0 obj +<< +/D [ 93 0 R /XYZ 61 562 null ] +>> +endobj +684 0 obj +<< +/D [ 93 0 R /XYZ 61 542 null ] +>> +endobj +685 0 obj +<< +/D [ 93 0 R /XYZ 61 514 null ] +>> +endobj +686 0 obj +<< +/D [ 93 0 R /XYZ 61 490 null ] +>> +endobj +687 0 obj +<< +/D [ 93 0 R /XYZ 61 474 null ] +>> +endobj +688 0 obj +<< +/D [ 93 0 R /XYZ 61 447 null ] +>> +endobj +689 0 obj +<< +/D [ 93 0 R /XYZ 61 431 null ] +>> +endobj +690 0 obj +<< +/D [ 93 0 R /XYZ 61 403 null ] +>> +endobj +691 0 obj +<< +/D [ 93 0 R /XYZ 61 387 null ] +>> +endobj +692 0 obj +<< +/D [ 93 0 R /XYZ 61 360 null ] +>> +endobj +693 0 obj +<< +/D [ 93 0 R /XYZ 61 344 null ] +>> +endobj +694 0 obj +<< +/D [ 93 0 R /XYZ 61 316 null ] +>> +endobj +695 0 obj +<< +/D [ 93 0 R /XYZ 61 300 null ] +>> +endobj +696 0 obj +<< +/D [ 93 0 R /XYZ 61 273 null ] +>> +endobj +697 0 obj +<< +/D [ 93 0 R /XYZ 61 257 null ] +>> +endobj +698 0 obj +<< +/D [ 93 0 R /XYZ 61 229 null ] +>> +endobj +699 0 obj +<< +/D [ 93 0 R /XYZ 61 205 null ] +>> +endobj +700 0 obj +<< +/D [ 93 0 R /XYZ 61 189 null ] +>> +endobj +701 0 obj +<< +/D [ 93 0 R /XYZ 61 168 null ] +>> +endobj +702 0 obj +<< +/D [ 93 0 R /XYZ 61 141 null ] +>> +endobj +703 0 obj +<< +/D [ 93 0 R /XYZ 61 125 null ] +>> +endobj +704 0 obj +<< +/D [ 96 0 R /XYZ null null null ] +>> +endobj +705 0 obj +<< +/D [ 96 0 R /XYZ 205 697 null ] +>> +endobj +706 0 obj +<< +/D [ 96 0 R /XYZ 205 337 null ] +>> +endobj +707 0 obj +<< +/D [ 96 0 R /XYZ 61 688 null ] +>> +endobj +708 0 obj +<< +/D [ 96 0 R /XYZ 61 657 null ] +>> +endobj +709 0 obj +<< +/D [ 96 0 R /XYZ 61 637 null ] +>> +endobj +710 0 obj +<< +/D [ 96 0 R /XYZ 61 609 null ] +>> +endobj +711 0 obj +<< +/D [ 96 0 R /XYZ 61 590 null ] +>> +endobj +712 0 obj +<< +/D [ 96 0 R /XYZ 61 562 null ] +>> +endobj +713 0 obj +<< +/D [ 96 0 R /XYZ 61 542 null ] +>> +endobj +714 0 obj +<< +/D [ 96 0 R /XYZ 61 514 null ] +>> +endobj +715 0 obj +<< +/D [ 96 0 R /XYZ 61 490 null ] +>> +endobj +716 0 obj +<< +/D [ 96 0 R /XYZ 61 474 null ] +>> +endobj +717 0 obj +<< +/D [ 96 0 R /XYZ 61 446 null ] +>> +endobj +718 0 obj +<< +/D [ 96 0 R /XYZ 61 422 null ] +>> +endobj +719 0 obj +<< +/D [ 96 0 R /XYZ 61 406 null ] +>> +endobj +720 0 obj +<< +/D [ 96 0 R /XYZ 61 378 null ] +>> +endobj +721 0 obj +<< +/D [ 96 0 R /XYZ 61 358 null ] +>> +endobj +722 0 obj +<< +/D [ 96 0 R /XYZ 61 329 null ] +>> +endobj +723 0 obj +<< +/D [ 96 0 R /XYZ 61 297 null ] +>> +endobj +724 0 obj +<< +/D [ 96 0 R /XYZ 61 278 null ] +>> +endobj +725 0 obj +<< +/D [ 96 0 R /XYZ 61 250 null ] +>> +endobj +726 0 obj +<< +/D [ 96 0 R /XYZ 61 230 null ] +>> +endobj +727 0 obj +<< +/D [ 96 0 R /XYZ 61 202 null ] +>> +endobj +728 0 obj +<< +/D [ 96 0 R /XYZ 61 183 null ] +>> +endobj +729 0 obj +<< +/D [ 96 0 R /XYZ 61 155 null ] +>> +endobj +730 0 obj +<< +/D [ 96 0 R /XYZ 61 131 null ] +>> +endobj +731 0 obj +<< +/D [ 96 0 R /XYZ 61 115 null ] +>> +endobj +732 0 obj +<< +/D [ 99 0 R /XYZ null null null ] +>> +endobj +733 0 obj +<< +/D [ 99 0 R /XYZ 256 364 null ] +>> +endobj +734 0 obj +<< +/D [ 99 0 R /XYZ 256 364 null ] +>> +endobj +735 0 obj +<< +/D [ 99 0 R /XYZ 168 560 null ] +>> +endobj +736 0 obj +<< +/D [ 99 0 R /XYZ 205 340 null ] +>> +endobj +737 0 obj +<< +/D [ 99 0 R /XYZ 61 688 null ] +>> +endobj +738 0 obj +<< +/D [ 99 0 R /XYZ 61 663 null ] +>> +endobj +739 0 obj +<< +/D [ 99 0 R /XYZ 61 647 null ] +>> +endobj +740 0 obj +<< +/D [ 99 0 R /XYZ 61 627 null ] +>> +endobj +741 0 obj +<< +/D [ 99 0 R /XYZ 61 599 null ] +>> +endobj +742 0 obj +<< +/D [ 99 0 R /XYZ 61 579 null ] +>> +endobj +743 0 obj +<< +/D [ 99 0 R /XYZ 61 550 null ] +>> +endobj +744 0 obj +<< +/D [ 99 0 R /XYZ 61 527 null ] +>> +endobj +745 0 obj +<< +/D [ 99 0 R /XYZ 61 358 null ] +>> +endobj +746 0 obj +<< +/D [ 99 0 R /XYZ 61 331 null ] +>> +endobj +747 0 obj +<< +/D [ 99 0 R /XYZ 61 307 null ] +>> +endobj +748 0 obj +<< +/D [ 99 0 R /XYZ 61 267 null ] +>> +endobj +749 0 obj +<< +/D [ 99 0 R /XYZ 61 247 null ] +>> +endobj +750 0 obj +<< +/D [ 99 0 R /XYZ 61 227 null ] +>> +endobj +751 0 obj +<< +/D [ 99 0 R /XYZ 61 208 null ] +>> +endobj +752 0 obj +<< +/D [ 99 0 R /XYZ 61 190 null ] +>> +endobj +753 0 obj +<< +/D [ 99 0 R /XYZ 61 172 null ] +>> +endobj +754 0 obj +<< +/D [ 99 0 R /XYZ 61 131 null ] +>> +endobj +755 0 obj +<< +/D [ 99 0 R /XYZ 61 112 null ] +>> +endobj +756 0 obj +<< +/D [ 104 0 R /XYZ null null null ] +>> +endobj +757 0 obj +<< +/D [ 104 0 R /XYZ 256 536 null ] +>> +endobj +758 0 obj +<< +/D [ 104 0 R /XYZ 256 536 null ] +>> +endobj +759 0 obj +<< +/D [ 104 0 R /XYZ 205 160 null ] +>> +endobj +760 0 obj +<< +/D [ 104 0 R /XYZ 205 160 null ] +>> +endobj +761 0 obj +<< +/D [ 104 0 R /XYZ 168 698 null ] +>> +endobj +762 0 obj +<< +/D [ 104 0 R /XYZ 61 689 null ] +>> +endobj +763 0 obj +<< +/D [ 104 0 R /XYZ 61 530 null ] +>> +endobj +764 0 obj +<< +/D [ 104 0 R /XYZ 61 507 null ] +>> +endobj +765 0 obj +<< +/D [ 104 0 R /XYZ 61 479 null ] +>> +endobj +766 0 obj +<< +/D [ 104 0 R /XYZ 61 459 null ] +>> +endobj +767 0 obj +<< +/D [ 104 0 R /XYZ 61 431 null ] +>> +endobj +768 0 obj +<< +/D [ 104 0 R /XYZ 61 412 null ] +>> +endobj +769 0 obj +<< +/D [ 104 0 R /XYZ 61 384 null ] +>> +endobj +770 0 obj +<< +/D [ 104 0 R /XYZ 61 365 null ] +>> +endobj +771 0 obj +<< +/D [ 104 0 R /XYZ 61 336 null ] +>> +endobj +772 0 obj +<< +/D [ 104 0 R /XYZ 61 312 null ] +>> +endobj +773 0 obj +<< +/D [ 104 0 R /XYZ 61 287 null ] +>> +endobj +774 0 obj +<< +/D [ 104 0 R /XYZ 61 271 null ] +>> +endobj +775 0 obj +<< +/D [ 104 0 R /XYZ 61 244 null ] +>> +endobj +776 0 obj +<< +/D [ 104 0 R /XYZ 61 228 null ] +>> +endobj +777 0 obj +<< +/D [ 104 0 R /XYZ 61 200 null ] +>> +endobj +778 0 obj +<< +/D [ 104 0 R /XYZ 61 180 null ] +>> +endobj +779 0 obj +<< +/D [ 104 0 R /XYZ 61 151 null ] +>> +endobj +780 0 obj +<< +/D [ 104 0 R /XYZ 61 119 null ] +>> +endobj +781 0 obj +<< +/D [ 104 0 R /XYZ 61 100 null ] +>> +endobj +782 0 obj +<< +/D [ 107 0 R /XYZ null null null ] +>> +endobj +783 0 obj +<< +/D [ 107 0 R /XYZ 256 219 null ] +>> +endobj +784 0 obj +<< +/D [ 107 0 R /XYZ 256 219 null ] +>> +endobj +785 0 obj +<< +/D [ 107 0 R /XYZ 168 417 null ] +>> +endobj +786 0 obj +<< +/D [ 107 0 R /XYZ 205 195 null ] +>> +endobj +787 0 obj +<< +/D [ 107 0 R /XYZ 61 688 null ] +>> +endobj +788 0 obj +<< +/D [ 107 0 R /XYZ 61 668 null ] +>> +endobj +789 0 obj +<< +/D [ 107 0 R /XYZ 61 640 null ] +>> +endobj +790 0 obj +<< +/D [ 107 0 R /XYZ 61 621 null ] +>> +endobj +791 0 obj +<< +/D [ 107 0 R /XYZ 61 593 null ] +>> +endobj +792 0 obj +<< +/D [ 107 0 R /XYZ 61 568 null ] +>> +endobj +793 0 obj +<< +/D [ 107 0 R /XYZ 61 543 null ] +>> +endobj +794 0 obj +<< +/D [ 107 0 R /XYZ 61 527 null ] +>> +endobj +795 0 obj +<< +/D [ 107 0 R /XYZ 61 500 null ] +>> +endobj +796 0 obj +<< +/D [ 107 0 R /XYZ 61 484 null ] +>> +endobj +797 0 obj +<< +/D [ 107 0 R /XYZ 61 456 null ] +>> +endobj +798 0 obj +<< +/D [ 107 0 R /XYZ 61 437 null ] +>> +endobj +799 0 obj +<< +/D [ 107 0 R /XYZ 61 408 null ] +>> +endobj +800 0 obj +<< +/D [ 107 0 R /XYZ 61 213 null ] +>> +endobj +801 0 obj +<< +/D [ 107 0 R /XYZ 61 187 null ] +>> +endobj +802 0 obj +<< +/D [ 107 0 R /XYZ 61 163 null ] +>> +endobj +803 0 obj +<< +/D [ 110 0 R /XYZ null null null ] +>> +endobj +804 0 obj +<< +/D [ 110 0 R /XYZ 256 296 null ] +>> +endobj +805 0 obj +<< +/D [ 110 0 R /XYZ 256 296 null ] +>> +endobj +806 0 obj +<< +/D [ 110 0 R /XYZ 205 697 null ] +>> +endobj +807 0 obj +<< +/D [ 110 0 R /XYZ 168 632 null ] +>> +endobj +808 0 obj +<< +/D [ 110 0 R /XYZ 61 688 null ] +>> +endobj +809 0 obj +<< +/D [ 110 0 R /XYZ 61 664 null ] +>> +endobj +810 0 obj +<< +/D [ 110 0 R /XYZ 61 623 null ] +>> +endobj +811 0 obj +<< +/D [ 110 0 R /XYZ 61 290 null ] +>> +endobj +812 0 obj +<< +/D [ 110 0 R /XYZ 61 266 null ] +>> +endobj +813 0 obj +<< +/D [ 113 0 R /XYZ null null null ] +>> +endobj +814 0 obj +<< +/D [ 113 0 R /XYZ 256 492 null ] +>> +endobj +815 0 obj +<< +/D [ 113 0 R /XYZ 256 492 null ] +>> +endobj +816 0 obj +<< +/D [ 113 0 R /XYZ 105 431 null ] +>> +endobj +817 0 obj +<< +/D [ 113 0 R /XYZ 105 431 null ] +>> +endobj +818 0 obj +<< +/D [ 113 0 R /XYZ 168 698 null ] +>> +endobj +819 0 obj +<< +/D [ 113 0 R /XYZ 130 431 null ] +>> +endobj +820 0 obj +<< +/D [ 113 0 R /XYZ 61 689 null ] +>> +endobj +821 0 obj +<< +/D [ 113 0 R /XYZ 61 486 null ] +>> +endobj +822 0 obj +<< +/D [ 113 0 R /XYZ 61 462 null ] +>> +endobj +823 0 obj +<< +/D [ 113 0 R /XYZ 61 421 null ] +>> +endobj +824 0 obj +<< +/D [ 113 0 R /XYZ 61 394 null ] +>> +endobj +825 0 obj +<< +/D [ 116 0 R /XYZ null null null ] +>> +endobj +826 0 obj +<< +/D [ 116 0 R /XYZ 205 335 null ] +>> +endobj +827 0 obj +<< +/D [ 116 0 R /XYZ 61 689 null ] +>> +endobj +828 0 obj +<< +/D [ 116 0 R /XYZ 61 404 null ] +>> +endobj +829 0 obj +<< +/D [ 116 0 R /XYZ 61 380 null ] +>> +endobj +830 0 obj +<< +/D [ 116 0 R /XYZ 61 326 null ] +>> +endobj +831 0 obj +<< +/D [ 116 0 R /XYZ 61 295 null ] +>> +endobj +832 0 obj +<< +/D [ 116 0 R /XYZ 61 275 null ] +>> +endobj +833 0 obj +<< +/D [ 116 0 R /XYZ 61 247 null ] +>> +endobj +834 0 obj +<< +/D [ 116 0 R /XYZ 61 228 null ] +>> +endobj +835 0 obj +<< +/D [ 116 0 R /XYZ 61 200 null ] +>> +endobj +836 0 obj +<< +/D [ 116 0 R /XYZ 61 180 null ] +>> +endobj +837 0 obj +<< +/D [ 119 0 R /XYZ null null null ] +>> +endobj +838 0 obj +<< +/D [ 119 0 R /XYZ 61 688 null ] +>> +endobj +839 0 obj +<< +/D [ 119 0 R /XYZ 61 663 null ] +>> +endobj +840 0 obj +<< +/D [ 119 0 R /XYZ 61 647 null ] +>> +endobj +841 0 obj +<< +/D [ 119 0 R /XYZ 61 570 null ] +>> +endobj +842 0 obj +<< +/D [ 119 0 R /XYZ 61 554 null ] +>> +endobj +843 0 obj +<< +/D [ 119 0 R /XYZ 61 514 null ] +>> +endobj +844 0 obj +<< +/D [ 119 0 R /XYZ 61 498 null ] +>> +endobj +845 0 obj +<< +/D [ 119 0 R /XYZ 61 471 null ] +>> +endobj +846 0 obj +<< +/D [ 119 0 R /XYZ 61 455 null ] +>> +endobj +847 0 obj +<< +/D [ 119 0 R /XYZ 61 428 null ] +>> +endobj +848 0 obj +<< +/D [ 119 0 R /XYZ 61 412 null ] +>> +endobj +849 0 obj +<< +/D [ 119 0 R /XYZ 61 384 null ] +>> +endobj +850 0 obj +<< +/D [ 119 0 R /XYZ 61 359 null ] +>> +endobj +851 0 obj +<< +/D [ 119 0 R /XYZ 61 343 null ] +>> +endobj +852 0 obj +<< +/D [ 119 0 R /XYZ 61 316 null ] +>> +endobj +853 0 obj +<< +/D [ 119 0 R /XYZ 61 300 null ] +>> +endobj +854 0 obj +<< +/D [ 119 0 R /XYZ 61 272 null ] +>> +endobj +855 0 obj +<< +/D [ 119 0 R /XYZ 61 252 null ] +>> +endobj +856 0 obj +<< +/D [ 119 0 R /XYZ 61 223 null ] +>> +endobj +857 0 obj +<< +/D [ 119 0 R /XYZ 61 191 null ] +>> +endobj +858 0 obj +<< +/D [ 119 0 R /XYZ 61 172 null ] +>> +endobj +859 0 obj +<< +/D [ 122 0 R /XYZ null null null ] +>> +endobj +860 0 obj +<< +/D [ 122 0 R /XYZ 205 459 null ] +>> +endobj +861 0 obj +<< +/D [ 122 0 R /XYZ 205 459 null ] +>> +endobj +862 0 obj +<< +/D [ 122 0 R /XYZ 61 688 null ] +>> +endobj +863 0 obj +<< +/D [ 122 0 R /XYZ 61 668 null ] +>> +endobj +864 0 obj +<< +/D [ 122 0 R /XYZ 61 640 null ] +>> +endobj +865 0 obj +<< +/D [ 122 0 R /XYZ 61 621 null ] +>> +endobj +866 0 obj +<< +/D [ 122 0 R /XYZ 61 593 null ] +>> +endobj +867 0 obj +<< +/D [ 122 0 R /XYZ 61 568 null ] +>> +endobj +868 0 obj +<< +/D [ 122 0 R /XYZ 61 543 null ] +>> +endobj +869 0 obj +<< +/D [ 122 0 R /XYZ 61 527 null ] +>> +endobj +870 0 obj +<< +/D [ 122 0 R /XYZ 61 499 null ] +>> +endobj +871 0 obj +<< +/D [ 122 0 R /XYZ 61 480 null ] +>> +endobj +872 0 obj +<< +/D [ 122 0 R /XYZ 61 451 null ] +>> +endobj +873 0 obj +<< +/D [ 122 0 R /XYZ 61 419 null ] +>> +endobj +874 0 obj +<< +/D [ 122 0 R /XYZ 61 400 null ] +>> +endobj +875 0 obj +<< +/D [ 122 0 R /XYZ 61 342 null ] +>> +endobj +876 0 obj +<< +/D [ 122 0 R /XYZ 61 289 null ] +>> +endobj +877 0 obj +<< +/D [ 122 0 R /XYZ 61 270 null ] +>> +endobj +878 0 obj +<< +/D [ 122 0 R /XYZ 61 242 null ] +>> +endobj +879 0 obj +<< +/D [ 122 0 R /XYZ 61 222 null ] +>> +endobj +880 0 obj +<< +/D [ 122 0 R /XYZ 61 194 null ] +>> +endobj +881 0 obj +<< +/D [ 122 0 R /XYZ 61 170 null ] +>> +endobj +882 0 obj +<< +/D [ 122 0 R /XYZ 61 154 null ] +>> +endobj +883 0 obj +<< +/D [ 125 0 R /XYZ null null null ] +>> +endobj +884 0 obj +<< +/D [ 125 0 R /XYZ 61 687 null ] +>> +endobj +885 0 obj +<< +/D [ 125 0 R /XYZ 61 671 null ] +>> +endobj +886 0 obj +<< +/D [ 125 0 R /XYZ 61 631 null ] +>> +endobj +887 0 obj +<< +/D [ 125 0 R /XYZ 61 615 null ] +>> +endobj +888 0 obj +<< +/D [ 125 0 R /XYZ 61 588 null ] +>> +endobj +889 0 obj +<< +/D [ 125 0 R /XYZ 61 572 null ] +>> +endobj +890 0 obj +<< +/D [ 125 0 R /XYZ 61 544 null ] +>> +endobj +891 0 obj +<< +/D [ 125 0 R /XYZ 61 520 null ] +>> +endobj +892 0 obj +<< +/D [ 125 0 R /XYZ 61 504 null ] +>> +endobj +893 0 obj +<< +/D [ 125 0 R /XYZ 61 476 null ] +>> +endobj +894 0 obj +<< +/D [ 125 0 R /XYZ 61 460 null ] +>> +endobj +895 0 obj +<< +/D [ 125 0 R /XYZ 61 432 null ] +>> +endobj +896 0 obj +<< +/D [ 125 0 R /XYZ 61 413 null ] +>> +endobj +897 0 obj +<< +/D [ 125 0 R /XYZ 61 383 null ] +>> +endobj +898 0 obj +<< +/D [ 125 0 R /XYZ 61 352 null ] +>> +endobj +899 0 obj +<< +/D [ 125 0 R /XYZ 61 332 null ] +>> +endobj +900 0 obj +<< +/D [ 125 0 R /XYZ 61 292 null ] +>> +endobj +901 0 obj +<< +/D [ 125 0 R /XYZ 61 273 null ] +>> +endobj +902 0 obj +<< +/D [ 125 0 R /XYZ 61 245 null ] +>> +endobj +903 0 obj +<< +/D [ 125 0 R /XYZ 61 225 null ] +>> +endobj +904 0 obj +<< +/D [ 125 0 R /XYZ 61 197 null ] +>> +endobj +905 0 obj +<< +/D [ 125 0 R /XYZ 61 173 null ] +>> +endobj +906 0 obj +<< +/D [ 125 0 R /XYZ 61 157 null ] +>> +endobj +907 0 obj +<< +/D [ 125 0 R /XYZ 61 117 null ] +>> +endobj +908 0 obj +<< +/D [ 125 0 R /XYZ 61 101 null ] +>> +endobj +909 0 obj +<< +/D [ 128 0 R /XYZ null null null ] +>> +endobj +910 0 obj +<< +/D [ 128 0 R /XYZ 205 579 null ] +>> +endobj +911 0 obj +<< +/D [ 128 0 R /XYZ 205 579 null ] +>> +endobj +912 0 obj +<< +/D [ 128 0 R /XYZ 61 688 null ] +>> +endobj +913 0 obj +<< +/D [ 128 0 R /XYZ 61 663 null ] +>> +endobj +914 0 obj +<< +/D [ 128 0 R /XYZ 61 647 null ] +>> +endobj +915 0 obj +<< +/D [ 128 0 R /XYZ 61 619 null ] +>> +endobj +916 0 obj +<< +/D [ 128 0 R /XYZ 61 600 null ] +>> +endobj +917 0 obj +<< +/D [ 128 0 R /XYZ 61 570 null ] +>> +endobj +918 0 obj +<< +/D [ 128 0 R /XYZ 61 539 null ] +>> +endobj +919 0 obj +<< +/D [ 128 0 R /XYZ 61 519 null ] +>> +endobj +920 0 obj +<< +/D [ 128 0 R /XYZ 61 479 null ] +>> +endobj +921 0 obj +<< +/D [ 128 0 R /XYZ 61 460 null ] +>> +endobj +922 0 obj +<< +/D [ 128 0 R /XYZ 61 432 null ] +>> +endobj +923 0 obj +<< +/D [ 128 0 R /XYZ 61 412 null ] +>> +endobj +924 0 obj +<< +/D [ 128 0 R /XYZ 61 384 null ] +>> +endobj +925 0 obj +<< +/D [ 128 0 R /XYZ 61 360 null ] +>> +endobj +926 0 obj +<< +/D [ 128 0 R /XYZ 61 344 null ] +>> +endobj +927 0 obj +<< +/D [ 128 0 R /XYZ 61 316 null ] +>> +endobj +928 0 obj +<< +/D [ 128 0 R /XYZ 61 291 null ] +>> +endobj +929 0 obj +<< +/D [ 128 0 R /XYZ 61 275 null ] +>> +endobj +930 0 obj +<< +/D [ 128 0 R /XYZ 61 247 null ] +>> +endobj +931 0 obj +<< +/D [ 128 0 R /XYZ 61 228 null ] +>> +endobj +932 0 obj +<< +/D [ 131 0 R /XYZ null null null ] +>> +endobj +933 0 obj +<< +/D [ 131 0 R /XYZ 168 698 null ] +>> +endobj +934 0 obj +<< +/D [ 131 0 R /XYZ 205 300 null ] +>> +endobj +935 0 obj +<< +/D [ 131 0 R /XYZ 61 689 null ] +>> +endobj +936 0 obj +<< +/D [ 131 0 R /XYZ 61 369 null ] +>> +endobj +937 0 obj +<< +/D [ 131 0 R /XYZ 61 346 null ] +>> +endobj +938 0 obj +<< +/D [ 131 0 R /XYZ 61 292 null ] +>> +endobj +939 0 obj +<< +/D [ 131 0 R /XYZ 61 268 null ] +>> +endobj +940 0 obj +<< +/D [ 131 0 R /XYZ 61 227 null ] +>> +endobj +941 0 obj +<< +/D [ 131 0 R /XYZ 61 203 null ] +>> +endobj +942 0 obj +<< +/D [ 131 0 R /XYZ 61 187 null ] +>> +endobj +943 0 obj +<< +/D [ 131 0 R /XYZ 61 159 null ] +>> +endobj +944 0 obj +<< +/D [ 131 0 R /XYZ 61 143 null ] +>> +endobj +945 0 obj +<< +/D [ 131 0 R /XYZ 61 116 null ] +>> +endobj +946 0 obj +<< +/D [ 131 0 R /XYZ 61 100 null ] +>> +endobj +947 0 obj +<< +/D [ 135 0 R /XYZ null null null ] +>> +endobj +948 0 obj +<< +/D [ 135 0 R /XYZ 205 603 null ] +>> +endobj +949 0 obj +<< +/D [ 135 0 R /XYZ 61 687 null ] +>> +endobj +950 0 obj +<< +/D [ 135 0 R /XYZ 61 671 null ] +>> +endobj +951 0 obj +<< +/D [ 135 0 R /XYZ 61 643 null ] +>> +endobj +952 0 obj +<< +/D [ 135 0 R /XYZ 61 624 null ] +>> +endobj +953 0 obj +<< +/D [ 135 0 R /XYZ 61 594 null ] +>> +endobj +954 0 obj +<< +/D [ 135 0 R /XYZ 61 563 null ] +>> +endobj +955 0 obj +<< +/D [ 135 0 R /XYZ 61 543 null ] +>> +endobj +956 0 obj +<< +/D [ 135 0 R /XYZ 61 515 null ] +>> +endobj +957 0 obj +<< +/D [ 135 0 R /XYZ 61 496 null ] +>> +endobj +958 0 obj +<< +/D [ 135 0 R /XYZ 61 468 null ] +>> +endobj +959 0 obj +<< +/D [ 135 0 R /XYZ 61 449 null ] +>> +endobj +960 0 obj +<< +/D [ 135 0 R /XYZ 61 421 null ] +>> +endobj +961 0 obj +<< +/D [ 135 0 R /XYZ 61 396 null ] +>> +endobj +962 0 obj +<< +/D [ 135 0 R /XYZ 61 380 null ] +>> +endobj +963 0 obj +<< +/D [ 135 0 R /XYZ 61 353 null ] +>> +endobj +964 0 obj +<< +/D [ 135 0 R /XYZ 61 337 null ] +>> +endobj +965 0 obj +<< +/D [ 135 0 R /XYZ 61 309 null ] +>> +endobj +966 0 obj +<< +/D [ 135 0 R /XYZ 61 293 null ] +>> +endobj +967 0 obj +<< +/D [ 135 0 R /XYZ 61 253 null ] +>> +endobj +968 0 obj +<< +/D [ 135 0 R /XYZ 61 229 null ] +>> +endobj +969 0 obj +<< +/D [ 135 0 R /XYZ 61 213 null ] +>> +endobj +970 0 obj +<< +/D [ 135 0 R /XYZ 61 184 null ] +>> +endobj +971 0 obj +<< +/D [ 135 0 R /XYZ 61 165 null ] +>> +endobj +972 0 obj +<< +/D [ 138 0 R /XYZ null null null ] +>> +endobj +973 0 obj +<< +/D [ 138 0 R /XYZ 205 697 null ] +>> +endobj +974 0 obj +<< +/D [ 138 0 R /XYZ 61 688 null ] +>> +endobj +975 0 obj +<< +/D [ 138 0 R /XYZ 61 657 null ] +>> +endobj +976 0 obj +<< +/D [ 138 0 R /XYZ 61 637 null ] +>> +endobj +977 0 obj +<< +/D [ 138 0 R /XYZ 61 609 null ] +>> +endobj +978 0 obj +<< +/D [ 138 0 R /XYZ 61 590 null ] +>> +endobj +979 0 obj +<< +/D [ 138 0 R /XYZ 61 562 null ] +>> +endobj +980 0 obj +<< +/D [ 138 0 R /XYZ 61 542 null ] +>> +endobj +981 0 obj +<< +/D [ 138 0 R /XYZ 61 514 null ] +>> +endobj +982 0 obj +<< +/D [ 138 0 R /XYZ 61 490 null ] +>> +endobj +983 0 obj +<< +/D [ 138 0 R /XYZ 61 474 null ] +>> +endobj +984 0 obj +<< +/D [ 138 0 R /XYZ 61 447 null ] +>> +endobj +985 0 obj +<< +/D [ 138 0 R /XYZ 61 431 null ] +>> +endobj +986 0 obj +<< +/D [ 138 0 R /XYZ 61 403 null ] +>> +endobj +987 0 obj +<< +/D [ 138 0 R /XYZ 61 387 null ] +>> +endobj +988 0 obj +<< +/D [ 138 0 R /XYZ 61 360 null ] +>> +endobj +989 0 obj +<< +/D [ 138 0 R /XYZ 61 344 null ] +>> +endobj +990 0 obj +<< +/D [ 138 0 R /XYZ 61 316 null ] +>> +endobj +991 0 obj +<< +/D [ 138 0 R /XYZ 61 300 null ] +>> +endobj +992 0 obj +<< +/D [ 138 0 R /XYZ 61 273 null ] +>> +endobj +993 0 obj +<< +/D [ 138 0 R /XYZ 61 257 null ] +>> +endobj +994 0 obj +<< +/D [ 138 0 R /XYZ 61 229 null ] +>> +endobj +995 0 obj +<< +/D [ 138 0 R /XYZ 61 205 null ] +>> +endobj +996 0 obj +<< +/D [ 138 0 R /XYZ 61 189 null ] +>> +endobj +997 0 obj +<< +/D [ 138 0 R /XYZ 61 161 null ] +>> +endobj +998 0 obj +<< +/D [ 138 0 R /XYZ 61 141 null ] +>> +endobj +999 0 obj +<< +/D [ 141 0 R /XYZ null null null ] +>> +endobj +1000 0 obj +<< +/D [ 141 0 R /XYZ 205 697 null ] +>> +endobj +1001 0 obj +<< +/D [ 141 0 R /XYZ 205 149 null ] +>> +endobj +1002 0 obj +<< +/D [ 141 0 R /XYZ 61 688 null ] +>> +endobj +1003 0 obj +<< +/D [ 141 0 R /XYZ 61 657 null ] +>> +endobj +1004 0 obj +<< +/D [ 141 0 R /XYZ 61 637 null ] +>> +endobj +1005 0 obj +<< +/D [ 141 0 R /XYZ 61 609 null ] +>> +endobj +1006 0 obj +<< +/D [ 141 0 R /XYZ 61 590 null ] +>> +endobj +1007 0 obj +<< +/D [ 141 0 R /XYZ 61 562 null ] +>> +endobj +1008 0 obj +<< +/D [ 141 0 R /XYZ 61 542 null ] +>> +endobj +1009 0 obj +<< +/D [ 141 0 R /XYZ 61 514 null ] +>> +endobj +1010 0 obj +<< +/D [ 141 0 R /XYZ 61 490 null ] +>> +endobj +1011 0 obj +<< +/D [ 141 0 R /XYZ 61 474 null ] +>> +endobj +1012 0 obj +<< +/D [ 141 0 R /XYZ 61 447 null ] +>> +endobj +1013 0 obj +<< +/D [ 141 0 R /XYZ 61 431 null ] +>> +endobj +1014 0 obj +<< +/D [ 141 0 R /XYZ 61 403 null ] +>> +endobj +1015 0 obj +<< +/D [ 141 0 R /XYZ 61 387 null ] +>> +endobj +1016 0 obj +<< +/D [ 141 0 R /XYZ 61 360 null ] +>> +endobj +1017 0 obj +<< +/D [ 141 0 R /XYZ 61 344 null ] +>> +endobj +1018 0 obj +<< +/D [ 141 0 R /XYZ 61 292 null ] +>> +endobj +1019 0 obj +<< +/D [ 141 0 R /XYZ 61 276 null ] +>> +endobj +1020 0 obj +<< +/D [ 141 0 R /XYZ 61 235 null ] +>> +endobj +1021 0 obj +<< +/D [ 141 0 R /XYZ 61 211 null ] +>> +endobj +1022 0 obj +<< +/D [ 141 0 R /XYZ 61 195 null ] +>> +endobj +1023 0 obj +<< +/D [ 141 0 R /XYZ 61 167 null ] +>> +endobj +1024 0 obj +<< +/D [ 141 0 R /XYZ 61 140 null ] +>> +endobj +1025 0 obj +<< +/D [ 141 0 R /XYZ 61 109 null ] +>> +endobj +1026 0 obj +<< +/D [ 141 0 R /XYZ 61 89 null ] +>> +endobj +1027 0 obj +<< +/D [ 144 0 R /XYZ null null null ] +>> +endobj +1028 0 obj +<< +/D [ 144 0 R /XYZ 61 688 null ] +>> +endobj +1029 0 obj +<< +/D [ 144 0 R /XYZ 61 668 null ] +>> +endobj +1030 0 obj +<< +/D [ 144 0 R /XYZ 61 640 null ] +>> +endobj +1031 0 obj +<< +/D [ 144 0 R /XYZ 61 621 null ] +>> +endobj +1032 0 obj +<< +/D [ 144 0 R /XYZ 61 593 null ] +>> +endobj +1033 0 obj +<< +/D [ 144 0 R /XYZ 61 568 null ] +>> +endobj +1034 0 obj +<< +/D [ 144 0 R /XYZ 61 552 null ] +>> +endobj +1035 0 obj +<< +/D [ 144 0 R /XYZ 61 525 null ] +>> +endobj +1036 0 obj +<< +/D [ 144 0 R /XYZ 61 509 null ] +>> +endobj +1037 0 obj +<< +/D [ 144 0 R /XYZ 61 482 null ] +>> +endobj +1038 0 obj +<< +/D [ 144 0 R /XYZ 61 466 null ] +>> +endobj +1039 0 obj +<< +/D [ 144 0 R /XYZ 61 438 null ] +>> +endobj +1040 0 obj +<< +/D [ 144 0 R /XYZ 61 422 null ] +>> +endobj +1041 0 obj +<< +/D [ 144 0 R /XYZ 61 394 null ] +>> +endobj +1042 0 obj +<< +/D [ 144 0 R /XYZ 61 370 null ] +>> +endobj +1043 0 obj +<< +/D [ 144 0 R /XYZ 61 354 null ] +>> +endobj +1044 0 obj +<< +/D [ 144 0 R /XYZ 61 326 null ] +>> +endobj +1045 0 obj +<< +/D [ 144 0 R /XYZ 61 306 null ] +>> +endobj +1046 0 obj +<< +/D [ 147 0 R /XYZ null null null ] +>> +endobj +1047 0 obj +<< +/D [ 147 0 R /XYZ 168 698 null ] +>> +endobj +1048 0 obj +<< +/D [ 147 0 R /XYZ 205 234 null ] +>> +endobj +1049 0 obj +<< +/D [ 147 0 R /XYZ 61 689 null ] +>> +endobj +1050 0 obj +<< +/D [ 147 0 R /XYZ 61 398 null ] +>> +endobj +1051 0 obj +<< +/D [ 147 0 R /XYZ 61 375 null ] +>> +endobj +1052 0 obj +<< +/D [ 147 0 R /XYZ 61 268 null ] +>> +endobj +1053 0 obj +<< +/D [ 147 0 R /XYZ 61 226 null ] +>> +endobj +1054 0 obj +<< +/D [ 147 0 R /XYZ 61 194 null ] +>> +endobj +1055 0 obj +<< +/D [ 147 0 R /XYZ 61 175 null ] +>> +endobj +1056 0 obj +<< +/D [ 147 0 R /XYZ 61 134 null ] +>> +endobj +1057 0 obj +<< +/D [ 147 0 R /XYZ 61 115 null ] +>> +endobj +1058 0 obj +<< +/D [ 152 0 R /XYZ null null null ] +>> +endobj +1059 0 obj +<< +/D [ 152 0 R /XYZ 61 688 null ] +>> +endobj +1060 0 obj +<< +/D [ 152 0 R /XYZ 61 668 null ] +>> +endobj +1061 0 obj +<< +/D [ 152 0 R /XYZ 61 640 null ] +>> +endobj +1062 0 obj +<< +/D [ 152 0 R /XYZ 61 615 null ] +>> +endobj +1063 0 obj +<< +/D [ 152 0 R /XYZ 61 591 null ] +>> +endobj +1064 0 obj +<< +/D [ 152 0 R /XYZ 61 575 null ] +>> +endobj +1065 0 obj +<< +/D [ 152 0 R /XYZ 61 535 null ] +>> +endobj +1066 0 obj +<< +/D [ 152 0 R /XYZ 61 519 null ] +>> +endobj +1067 0 obj +<< +/D [ 152 0 R /XYZ 61 492 null ] +>> +endobj +1068 0 obj +<< +/D [ 152 0 R /XYZ 61 476 null ] +>> +endobj +1069 0 obj +<< +/D [ 152 0 R /XYZ 61 435 null ] +>> +endobj +1070 0 obj +<< +/D [ 152 0 R /XYZ 61 416 null ] +>> +endobj +1071 0 obj +<< +/D [ 152 0 R /XYZ 61 387 null ] +>> +endobj +1072 0 obj +<< +/D [ 152 0 R /XYZ 61 361 null ] +>> +endobj +1073 0 obj +<< +/D [ 152 0 R /XYZ 61 98 null ] +>> +endobj +1074 0 obj +<< +/D [ 155 0 R /XYZ null null null ] +>> +endobj +1075 0 obj +<< +/D [ 155 0 R /XYZ 61 687 null ] +>> +endobj +1076 0 obj +<< +/D [ 155 0 R /XYZ 61 559 null ] +>> +endobj +1077 0 obj +<< +/D [ 155 0 R /XYZ 61 535 null ] +>> +endobj +1078 0 obj +<< +/D [ 155 0 R /XYZ 61 494 null ] +>> +endobj +1079 0 obj +<< +/D [ 155 0 R /XYZ 61 475 null ] +>> +endobj +1080 0 obj +<< +/D [ 155 0 R /XYZ 61 447 null ] +>> +endobj +1081 0 obj +<< +/D [ 155 0 R /XYZ 61 427 null ] +>> +endobj +1082 0 obj +<< +/D [ 155 0 R /XYZ 61 398 null ] +>> +endobj +1083 0 obj +<< +/D [ 155 0 R /XYZ 61 374 null ] +>> +endobj +1084 0 obj +<< +/D [ 155 0 R /XYZ 61 334 null ] +>> +endobj +1085 0 obj +<< +/D [ 155 0 R /XYZ 61 314 null ] +>> +endobj +1086 0 obj +<< +/D [ 155 0 R /XYZ 61 286 null ] +>> +endobj +1087 0 obj +<< +/D [ 155 0 R /XYZ 61 267 null ] +>> +endobj +1088 0 obj +<< +/D [ 155 0 R /XYZ 61 237 null ] +>> +endobj +1089 0 obj +<< +/D [ 155 0 R /XYZ 61 213 null ] +>> +endobj +1090 0 obj +<< +/D [ 155 0 R /XYZ 61 173 null ] +>> +endobj +1091 0 obj +<< +/D [ 155 0 R /XYZ 61 154 null ] +>> +endobj +1092 0 obj +<< +/D [ 155 0 R /XYZ 61 126 null ] +>> +endobj +1093 0 obj +<< +/D [ 155 0 R /XYZ 61 106 null ] +>> +endobj +1094 0 obj +<< +/D [ 158 0 R /XYZ null null null ] +>> +endobj +1095 0 obj +<< +/D [ 158 0 R /XYZ 168 377 null ] +>> +endobj +1096 0 obj +<< +/D [ 158 0 R /XYZ 61 688 null ] +>> +endobj +1097 0 obj +<< +/D [ 158 0 R /XYZ 61 664 null ] +>> +endobj +1098 0 obj +<< +/D [ 158 0 R /XYZ 61 624 null ] +>> +endobj +1099 0 obj +<< +/D [ 158 0 R /XYZ 61 604 null ] +>> +endobj +1100 0 obj +<< +/D [ 158 0 R /XYZ 61 576 null ] +>> +endobj +1101 0 obj +<< +/D [ 158 0 R /XYZ 61 557 null ] +>> +endobj +1102 0 obj +<< +/D [ 158 0 R /XYZ 61 528 null ] +>> +endobj +1103 0 obj +<< +/D [ 158 0 R /XYZ 61 504 null ] +>> +endobj +1104 0 obj +<< +/D [ 158 0 R /XYZ 61 463 null ] +>> +endobj +1105 0 obj +<< +/D [ 158 0 R /XYZ 61 444 null ] +>> +endobj +1106 0 obj +<< +/D [ 158 0 R /XYZ 61 416 null ] +>> +endobj +1107 0 obj +<< +/D [ 158 0 R /XYZ 61 396 null ] +>> +endobj +1108 0 obj +<< +/D [ 158 0 R /XYZ 61 367 null ] +>> +endobj +1109 0 obj +<< +/D [ 158 0 R /XYZ 61 93 null ] +>> +endobj +1110 0 obj +<< +/D [ 161 0 R /XYZ null null null ] +>> +endobj +1111 0 obj +<< +/D [ 161 0 R /XYZ 205 160 null ] +>> +endobj +1112 0 obj +<< +/D [ 161 0 R /XYZ 205 435 null ] +>> +endobj +1113 0 obj +<< +/D [ 161 0 R /XYZ 61 687 null ] +>> +endobj +1114 0 obj +<< +/D [ 161 0 R /XYZ 61 481 null ] +>> +endobj +1115 0 obj +<< +/D [ 161 0 R /XYZ 61 427 null ] +>> +endobj +1116 0 obj +<< +/D [ 161 0 R /XYZ 61 395 null ] +>> +endobj +1117 0 obj +<< +/D [ 161 0 R /XYZ 61 376 null ] +>> +endobj +1118 0 obj +<< +/D [ 161 0 R /XYZ 61 323 null ] +>> +endobj +1119 0 obj +<< +/D [ 161 0 R /XYZ 61 303 null ] +>> +endobj +1120 0 obj +<< +/D [ 161 0 R /XYZ 61 275 null ] +>> +endobj +1121 0 obj +<< +/D [ 161 0 R /XYZ 61 256 null ] +>> +endobj +1122 0 obj +<< +/D [ 161 0 R /XYZ 61 228 null ] +>> +endobj +1123 0 obj +<< +/D [ 161 0 R /XYZ 61 203 null ] +>> +endobj +1124 0 obj +<< +/D [ 161 0 R /XYZ 61 178 null ] +>> +endobj +1125 0 obj +<< +/D [ 161 0 R /XYZ 61 152 null ] +>> +endobj +1126 0 obj +<< +/D [ 161 0 R /XYZ 61 128 null ] +>> +endobj +1127 0 obj +<< +/D [ 165 0 R /XYZ null null null ] +>> +endobj +1128 0 obj +<< +/D [ 165 0 R /XYZ 168 390 null ] +>> +endobj +1129 0 obj +<< +/D [ 165 0 R /XYZ 61 688 null ] +>> +endobj +1130 0 obj +<< +/D [ 165 0 R /XYZ 61 663 null ] +>> +endobj +1131 0 obj +<< +/D [ 165 0 R /XYZ 61 647 null ] +>> +endobj +1132 0 obj +<< +/D [ 165 0 R /XYZ 61 614 null ] +>> +endobj +1133 0 obj +<< +/D [ 165 0 R /XYZ 61 569 null ] +>> +endobj +1134 0 obj +<< +/D [ 165 0 R /XYZ 61 515 null ] +>> +endobj +1135 0 obj +<< +/D [ 165 0 R /XYZ 61 491 null ] +>> +endobj +1136 0 obj +<< +/D [ 165 0 R /XYZ 61 463 null ] +>> +endobj +1137 0 obj +<< +/D [ 165 0 R /XYZ 61 439 null ] +>> +endobj +1138 0 obj +<< +/D [ 165 0 R /XYZ 61 423 null ] +>> +endobj +1139 0 obj +<< +/D [ 165 0 R /XYZ 61 381 null ] +>> +endobj +1140 0 obj +<< +/D [ 165 0 R /XYZ 61 131 null ] +>> +endobj +1141 0 obj +<< +/D [ 169 0 R /XYZ null null null ] +>> +endobj +1142 0 obj +<< +/D [ 169 0 R /XYZ 205 530 null ] +>> +endobj +1143 0 obj +<< +/D [ 169 0 R /XYZ 205 369 null ] +>> +endobj +1144 0 obj +<< +/D [ 169 0 R /XYZ 61 687 null ] +>> +endobj +1145 0 obj +<< +/D [ 169 0 R /XYZ 61 521 null ] +>> +endobj +1146 0 obj +<< +/D [ 169 0 R /XYZ 61 497 null ] +>> +endobj +1147 0 obj +<< +/D [ 169 0 R /XYZ 61 457 null ] +>> +endobj +1148 0 obj +<< +/D [ 169 0 R /XYZ 61 438 null ] +>> +endobj +1149 0 obj +<< +/D [ 169 0 R /XYZ 61 410 null ] +>> +endobj +1150 0 obj +<< +/D [ 169 0 R /XYZ 61 390 null ] +>> +endobj +1151 0 obj +<< +/D [ 169 0 R /XYZ 61 361 null ] +>> +endobj +1152 0 obj +<< +/D [ 169 0 R /XYZ 61 329 null ] +>> +endobj +1153 0 obj +<< +/D [ 169 0 R /XYZ 61 310 null ] +>> +endobj +1154 0 obj +<< +/D [ 169 0 R /XYZ 61 282 null ] +>> +endobj +1155 0 obj +<< +/D [ 169 0 R /XYZ 61 262 null ] +>> +endobj +1156 0 obj +<< +/D [ 169 0 R /XYZ 61 234 null ] +>> +endobj +1157 0 obj +<< +/D [ 169 0 R /XYZ 61 215 null ] +>> +endobj +1158 0 obj +<< +/D [ 169 0 R /XYZ 61 187 null ] +>> +endobj +1159 0 obj +<< +/D [ 169 0 R /XYZ 61 162 null ] +>> +endobj +1160 0 obj +<< +/D [ 169 0 R /XYZ 61 138 null ] +>> +endobj +1161 0 obj +<< +/D [ 169 0 R /XYZ 61 122 null ] +>> +endobj +1162 0 obj +<< +/D [ 172 0 R /XYZ null null null ] +>> +endobj +1163 0 obj +<< +/D [ 172 0 R /XYZ 61 689 null ] +>> +endobj +1164 0 obj +<< +/D [ 172 0 R /XYZ 61 188 null ] +>> +endobj +1165 0 obj +<< +/D [ 172 0 R /XYZ 61 165 null ] +>> +endobj +1166 0 obj +<< +/D [ 175 0 R /XYZ null null null ] +>> +endobj +1167 0 obj +<< +/D [ 175 0 R /XYZ 105 699 null ] +>> +endobj +1168 0 obj +<< +/D [ 175 0 R /XYZ 105 699 null ] +>> +endobj +1169 0 obj +<< +/D [ 175 0 R /XYZ 116 699 null ] +>> +endobj +1170 0 obj +<< +/D [ 175 0 R /XYZ 174 568 null ] +>> +endobj +1171 0 obj +<< +/D [ 175 0 R /XYZ 61 689 null ] +>> +endobj +1172 0 obj +<< +/D [ 175 0 R /XYZ 61 662 null ] +>> +endobj +1173 0 obj +<< +/D [ 175 0 R /XYZ 61 559 null ] +>> +endobj +1174 0 obj +<< +/D [ 175 0 R /XYZ 61 533 null ] +>> +endobj +1175 0 obj +<< +/D [ 175 0 R /XYZ 61 463 null ] +>> +endobj +1176 0 obj +<< +/D [ 175 0 R /XYZ 61 418 null ] +>> +endobj +1177 0 obj +<< +/D [ 175 0 R /XYZ 61 408 null ] +>> +endobj +1178 0 obj +<< +/D [ 175 0 R /XYZ 61 379 null ] +>> +endobj +1179 0 obj +<< +/D [ 175 0 R /XYZ 61 365 null ] +>> +endobj +1180 0 obj +<< +/D [ 175 0 R /XYZ 210 379 null ] +>> +endobj +1181 0 obj +<< +/D [ 175 0 R /XYZ 210 365 null ] +>> +endobj +1182 0 obj +<< +/D [ 175 0 R /XYZ 306 393 null ] +>> +endobj +1183 0 obj +<< +/D [ 175 0 R /XYZ 360 379 null ] +>> +endobj +1184 0 obj +<< +/D [ 175 0 R /XYZ 360 365 null ] +>> +endobj +1185 0 obj +<< +/D [ 175 0 R /XYZ 491 379 null ] +>> +endobj +1186 0 obj +<< +/D [ 175 0 R /XYZ 491 365 null ] +>> +endobj +1187 0 obj +<< +/D [ 175 0 R /XYZ 61 347 null ] +>> +endobj +1188 0 obj +<< +/D [ 175 0 R /XYZ 210 347 null ] +>> +endobj +1189 0 obj +<< +/D [ 175 0 R /XYZ 306 347 null ] +>> +endobj +1190 0 obj +<< +/D [ 175 0 R /XYZ 360 347 null ] +>> +endobj +1191 0 obj +<< +/D [ 175 0 R /XYZ 360 334 null ] +>> +endobj +1192 0 obj +<< +/D [ 175 0 R /XYZ 360 321 null ] +>> +endobj +1193 0 obj +<< +/D [ 175 0 R /XYZ 491 347 null ] +>> +endobj +1194 0 obj +<< +/D [ 175 0 R /XYZ 61 305 null ] +>> +endobj +1195 0 obj +<< +/D [ 175 0 R /XYZ 210 305 null ] +>> +endobj +1196 0 obj +<< +/D [ 175 0 R /XYZ 306 305 null ] +>> +endobj +1197 0 obj +<< +/D [ 175 0 R /XYZ 360 305 null ] +>> +endobj +1198 0 obj +<< +/D [ 175 0 R /XYZ 491 305 null ] +>> +endobj +1199 0 obj +<< +/D [ 175 0 R /XYZ 61 289 null ] +>> +endobj +1200 0 obj +<< +/D [ 175 0 R /XYZ 210 289 null ] +>> +endobj +1201 0 obj +<< +/D [ 175 0 R /XYZ 306 289 null ] +>> +endobj +1202 0 obj +<< +/D [ 175 0 R /XYZ 360 289 null ] +>> +endobj +1203 0 obj +<< +/D [ 175 0 R /XYZ 491 289 null ] +>> +endobj +1204 0 obj +<< +/D [ 175 0 R /XYZ 61 260 null ] +>> +endobj +1205 0 obj +<< +/D [ 175 0 R /XYZ 210 260 null ] +>> +endobj +1206 0 obj +<< +/D [ 175 0 R /XYZ 306 260 null ] +>> +endobj +1207 0 obj +<< +/D [ 175 0 R /XYZ 360 260 null ] +>> +endobj +1208 0 obj +<< +/D [ 175 0 R /XYZ 360 247 null ] +>> +endobj +1209 0 obj +<< +/D [ 175 0 R /XYZ 491 260 null ] +>> +endobj +1210 0 obj +<< +/D [ 175 0 R /XYZ 61 231 null ] +>> +endobj +1211 0 obj +<< +/D [ 175 0 R /XYZ 210 231 null ] +>> +endobj +1212 0 obj +<< +/D [ 175 0 R /XYZ 306 231 null ] +>> +endobj +1213 0 obj +<< +/D [ 175 0 R /XYZ 360 231 null ] +>> +endobj +1214 0 obj +<< +/D [ 175 0 R /XYZ 491 231 null ] +>> +endobj +1215 0 obj +<< +/D [ 178 0 R /XYZ null null null ] +>> +endobj +1216 0 obj +<< +/D [ 178 0 R /XYZ null null null ] +>> +endobj +1217 0 obj +<< +/D [ 178 0 R /XYZ 61 449 null ] +>> +endobj +1218 0 obj +<< +/D [ 178 0 R /XYZ 61 449 null ] +>> +endobj +1219 0 obj +<< +/D [ 178 0 R /XYZ 168 515 null ] +>> +endobj +1220 0 obj +<< +/D [ 178 0 R /XYZ 61 506 null ] +>> +endobj +1221 0 obj +<< +/D [ 178 0 R /XYZ 61 480 null ] +>> +endobj +1222 0 obj +<< +/D [ 178 0 R /XYZ 61 439 null ] +>> +endobj +1223 0 obj +<< +/D [ 178 0 R /XYZ 61 671 null ] +>> +endobj +1224 0 obj +<< +/D [ 178 0 R /XYZ 210 671 null ] +>> +endobj +1225 0 obj +<< +/D [ 178 0 R /XYZ 306 671 null ] +>> +endobj +1226 0 obj +<< +/D [ 178 0 R /XYZ 360 671 null ] +>> +endobj +1227 0 obj +<< +/D [ 178 0 R /XYZ 360 658 null ] +>> +endobj +1228 0 obj +<< +/D [ 178 0 R /XYZ 360 645 null ] +>> +endobj +1229 0 obj +<< +/D [ 178 0 R /XYZ 360 619 null ] +>> +endobj +1230 0 obj +<< +/D [ 178 0 R /XYZ 360 606 null ] +>> +endobj +1231 0 obj +<< +/D [ 178 0 R /XYZ 360 580 null ] +>> +endobj +1232 0 obj +<< +/D [ 178 0 R /XYZ 491 671 null ] +>> +endobj +1233 0 obj +<< +/D [ 178 0 R /XYZ 61 564 null ] +>> +endobj +1234 0 obj +<< +/D [ 178 0 R /XYZ 210 564 null ] +>> +endobj +1235 0 obj +<< +/D [ 178 0 R /XYZ 306 564 null ] +>> +endobj +1236 0 obj +<< +/D [ 178 0 R /XYZ 360 564 null ] +>> +endobj +1237 0 obj +<< +/D [ 178 0 R /XYZ 491 564 null ] +>> +endobj +1238 0 obj +<< +/D [ 178 0 R /XYZ 61 548 null ] +>> +endobj +1239 0 obj +<< +/D [ 178 0 R /XYZ 210 548 null ] +>> +endobj +1240 0 obj +<< +/D [ 178 0 R /XYZ 306 548 null ] +>> +endobj +1241 0 obj +<< +/D [ 178 0 R /XYZ 360 548 null ] +>> +endobj +1242 0 obj +<< +/D [ 178 0 R /XYZ 491 548 null ] +>> +endobj +1243 0 obj +<< +/D [ 181 0 R /XYZ null null null ] +>> +endobj +1244 0 obj +<< +/D [ 181 0 R /XYZ 68 693 null ] +>> +endobj +1245 0 obj +<< +/D [ 181 0 R /XYZ 68 693 null ] +>> +endobj +1246 0 obj +<< +/D [ 181 0 R /XYZ 68 693 null ] +>> +endobj +1247 0 obj +<< +/D [ 181 0 R /XYZ 68 693 null ] +>> +endobj +1248 0 obj +<< +/D [ 181 0 R /XYZ 68 693 null ] +>> +endobj +1249 0 obj +<< +/D [ 181 0 R /XYZ 68 693 null ] +>> +endobj +1250 0 obj +<< +/D [ 181 0 R /XYZ 138 684 null ] +>> +endobj +1251 0 obj +<< +/D [ 181 0 R /XYZ 106 674 null ] +>> +endobj +1252 0 obj +<< +/D [ 181 0 R /XYZ 105 664 null ] +>> +endobj +1253 0 obj +<< +/D [ 181 0 R /XYZ 68 645 null ] +>> +endobj +1254 0 obj +<< +/D [ 181 0 R /XYZ 68 645 null ] +>> +endobj +1255 0 obj +<< +/D [ 181 0 R /XYZ 68 645 null ] +>> +endobj +1256 0 obj +<< +/D [ 181 0 R /XYZ 68 645 null ] +>> +endobj +1257 0 obj +<< +/D [ 181 0 R /XYZ 120 636 null ] +>> +endobj +1258 0 obj +<< +/D [ 181 0 R /XYZ 135 626 null ] +>> +endobj +1259 0 obj +<< +/D [ 181 0 R /XYZ 134 616 null ] +>> +endobj +1260 0 obj +<< +/D [ 181 0 R /XYZ 139 606 null ] +>> +endobj +1261 0 obj +<< +/D [ 181 0 R /XYZ 157 596 null ] +>> +endobj +1262 0 obj +<< +/D [ 181 0 R /XYZ 68 577 null ] +>> +endobj +1263 0 obj +<< +/D [ 181 0 R /XYZ 68 577 null ] +>> +endobj +1264 0 obj +<< +/D [ 181 0 R /XYZ 107 568 null ] +>> +endobj +1265 0 obj +<< +/D [ 181 0 R /XYZ 67 549 null ] +>> +endobj +1266 0 obj +<< +/D [ 181 0 R /XYZ 67 549 null ] +>> +endobj +1267 0 obj +<< +/D [ 181 0 R /XYZ 81 540 null ] +>> +endobj +1268 0 obj +<< +/D [ 181 0 R /XYZ 140 530 null ] +>> +endobj +1269 0 obj +<< +/D [ 181 0 R /XYZ 108 520 null ] +>> +endobj +1270 0 obj +<< +/D [ 181 0 R /XYZ 91 510 null ] +>> +endobj +1271 0 obj +<< +/D [ 181 0 R /XYZ 142 500 null ] +>> +endobj +1272 0 obj +<< +/D [ 181 0 R /XYZ 94 490 null ] +>> +endobj +1273 0 obj +<< +/D [ 181 0 R /XYZ 187 480 null ] +>> +endobj +1274 0 obj +<< +/D [ 181 0 R /XYZ 122 470 null ] +>> +endobj +1275 0 obj +<< +/D [ 181 0 R /XYZ 143 470 null ] +>> +endobj +1276 0 obj +<< +/D [ 181 0 R /XYZ 109 460 null ] +>> +endobj +1277 0 obj +<< +/D [ 181 0 R /XYZ 101 450 null ] +>> +endobj +1278 0 obj +<< +/D [ 181 0 R /XYZ 66 431 null ] +>> +endobj +1279 0 obj +<< +/D [ 181 0 R /XYZ 66 431 null ] +>> +endobj +1280 0 obj +<< +/D [ 181 0 R /XYZ 66 431 null ] +>> +endobj +1281 0 obj +<< +/D [ 181 0 R /XYZ 66 431 null ] +>> +endobj +1282 0 obj +<< +/D [ 181 0 R /XYZ 66 431 null ] +>> +endobj +1283 0 obj +<< +/D [ 181 0 R /XYZ 66 431 null ] +>> +endobj +1284 0 obj +<< +/D [ 181 0 R /XYZ 66 431 null ] +>> +endobj +1285 0 obj +<< +/D [ 181 0 R /XYZ 66 431 null ] +>> +endobj +1286 0 obj +<< +/D [ 181 0 R /XYZ 66 431 null ] +>> +endobj +1287 0 obj +<< +/D [ 181 0 R /XYZ 66 431 null ] +>> +endobj +1288 0 obj +<< +/D [ 181 0 R /XYZ 146 422 null ] +>> +endobj +1289 0 obj +<< +/D [ 181 0 R /XYZ 125 412 null ] +>> +endobj +1290 0 obj +<< +/D [ 181 0 R /XYZ 101 402 null ] +>> +endobj +1291 0 obj +<< +/D [ 181 0 R /XYZ 118 402 null ] +>> +endobj +1292 0 obj +<< +/D [ 181 0 R /XYZ 112 392 null ] +>> +endobj +1293 0 obj +<< +/D [ 181 0 R /XYZ 119 382 null ] +>> +endobj +1294 0 obj +<< +/D [ 181 0 R /XYZ 101 372 null ] +>> +endobj +1295 0 obj +<< +/D [ 181 0 R /XYZ 68 353 null ] +>> +endobj +1296 0 obj +<< +/D [ 181 0 R /XYZ 68 353 null ] +>> +endobj +1297 0 obj +<< +/D [ 181 0 R /XYZ 68 353 null ] +>> +endobj +1298 0 obj +<< +/D [ 181 0 R /XYZ 68 353 null ] +>> +endobj +1299 0 obj +<< +/D [ 181 0 R /XYZ 68 353 null ] +>> +endobj +1300 0 obj +<< +/D [ 181 0 R /XYZ 68 353 null ] +>> +endobj +1301 0 obj +<< +/D [ 181 0 R /XYZ 68 353 null ] +>> +endobj +1302 0 obj +<< +/D [ 181 0 R /XYZ 68 353 null ] +>> +endobj +1303 0 obj +<< +/D [ 181 0 R /XYZ 91 344 null ] +>> +endobj +1304 0 obj +<< +/D [ 181 0 R /XYZ 68 325 null ] +>> +endobj +1305 0 obj +<< +/D [ 181 0 R /XYZ 68 325 null ] +>> +endobj +1306 0 obj +<< +/D [ 181 0 R /XYZ 149 306 null ] +>> +endobj +1307 0 obj +<< +/D [ 181 0 R /XYZ 165 296 null ] +>> +endobj +1308 0 obj +<< +/D [ 181 0 R /XYZ 149 286 null ] +>> +endobj +1309 0 obj +<< +/D [ 181 0 R /XYZ 123 276 null ] +>> +endobj +1310 0 obj +<< +/D [ 181 0 R /XYZ 124 266 null ] +>> +endobj +1311 0 obj +<< +/D [ 181 0 R /XYZ 67 247 null ] +>> +endobj +1312 0 obj +<< +/D [ 181 0 R /XYZ 67 247 null ] +>> +endobj +1313 0 obj +<< +/D [ 181 0 R /XYZ 119 238 null ] +>> +endobj +1314 0 obj +<< +/D [ 181 0 R /XYZ 68 219 null ] +>> +endobj +1315 0 obj +<< +/D [ 181 0 R /XYZ 68 219 null ] +>> +endobj +1316 0 obj +<< +/D [ 181 0 R /XYZ 68 219 null ] +>> +endobj +1317 0 obj +<< +/D [ 181 0 R /XYZ 68 219 null ] +>> +endobj +1318 0 obj +<< +/D [ 181 0 R /XYZ 127 210 null ] +>> +endobj +1319 0 obj +<< +/D [ 181 0 R /XYZ 155 200 null ] +>> +endobj +1320 0 obj +<< +/D [ 181 0 R /XYZ 113 190 null ] +>> +endobj +1321 0 obj +<< +/D [ 181 0 R /XYZ 66 171 null ] +>> +endobj +1322 0 obj +<< +/D [ 181 0 R /XYZ 66 171 null ] +>> +endobj +1323 0 obj +<< +/D [ 181 0 R /XYZ 113 162 null ] +>> +endobj +1324 0 obj +<< +/D [ 181 0 R /XYZ 126 152 null ] +>> +endobj +1325 0 obj +<< +/D [ 181 0 R /XYZ 67 133 null ] +>> +endobj +1326 0 obj +<< +/D [ 181 0 R /XYZ 67 133 null ] +>> +endobj +1327 0 obj +<< +/D [ 181 0 R /XYZ 131 124 null ] +>> +endobj +1328 0 obj +<< +/D [ 181 0 R /XYZ 127 114 null ] +>> +endobj +1329 0 obj +<< +/D [ 181 0 R /XYZ 123 104 null ] +>> +endobj +1330 0 obj +<< +/D [ 181 0 R /XYZ 320 693 null ] +>> +endobj +1331 0 obj +<< +/D [ 181 0 R /XYZ 320 693 null ] +>> +endobj +1332 0 obj +<< +/D [ 181 0 R /XYZ 365 684 null ] +>> +endobj +1333 0 obj +<< +/D [ 181 0 R /XYZ 61 47 null ] +>> +endobj +1334 0 obj +<< +/D [ 181 0 R /XYZ 61 737 null ] +>> +endobj +1335 0 obj +<< +/D [ 181 0 R /XYZ 192 34 null ] +>> +endobj +1336 0 obj +<< +/D [ 181 0 R /XYZ 61 687 null ] +>> +endobj +1337 0 obj +<< +/D [ 181 0 R /XYZ 61 678 null ] +>> +endobj +1338 0 obj +<< +/D [ 181 0 R /XYZ 61 668 null ] +>> +endobj +1339 0 obj +<< +/D [ 181 0 R /XYZ 61 658 null ] +>> +endobj +1340 0 obj +<< +/D [ 181 0 R /XYZ 61 639 null ] +>> +endobj +1341 0 obj +<< +/D [ 181 0 R /XYZ 61 630 null ] +>> +endobj +1342 0 obj +<< +/D [ 181 0 R /XYZ 61 620 null ] +>> +endobj +1343 0 obj +<< +/D [ 181 0 R /XYZ 61 610 null ] +>> +endobj +1344 0 obj +<< +/D [ 181 0 R /XYZ 61 600 null ] +>> +endobj +1345 0 obj +<< +/D [ 181 0 R /XYZ 61 590 null ] +>> +endobj +1346 0 obj +<< +/D [ 181 0 R /XYZ 61 571 null ] +>> +endobj +1347 0 obj +<< +/D [ 181 0 R /XYZ 61 562 null ] +>> +endobj +1348 0 obj +<< +/D [ 181 0 R /XYZ 61 543 null ] +>> +endobj +1349 0 obj +<< +/D [ 181 0 R /XYZ 61 534 null ] +>> +endobj +1350 0 obj +<< +/D [ 181 0 R /XYZ 61 524 null ] +>> +endobj +1351 0 obj +<< +/D [ 181 0 R /XYZ 61 514 null ] +>> +endobj +1352 0 obj +<< +/D [ 181 0 R /XYZ 61 504 null ] +>> +endobj +1353 0 obj +<< +/D [ 181 0 R /XYZ 61 494 null ] +>> +endobj +1354 0 obj +<< +/D [ 181 0 R /XYZ 61 484 null ] +>> +endobj +1355 0 obj +<< +/D [ 181 0 R /XYZ 61 474 null ] +>> +endobj +1356 0 obj +<< +/D [ 181 0 R /XYZ 61 464 null ] +>> +endobj +1357 0 obj +<< +/D [ 181 0 R /XYZ 61 454 null ] +>> +endobj +1358 0 obj +<< +/D [ 181 0 R /XYZ 61 444 null ] +>> +endobj +1359 0 obj +<< +/D [ 181 0 R /XYZ 61 425 null ] +>> +endobj +1360 0 obj +<< +/D [ 181 0 R /XYZ 61 416 null ] +>> +endobj +1361 0 obj +<< +/D [ 181 0 R /XYZ 61 406 null ] +>> +endobj +1362 0 obj +<< +/D [ 181 0 R /XYZ 61 396 null ] +>> +endobj +1363 0 obj +<< +/D [ 181 0 R /XYZ 61 386 null ] +>> +endobj +1364 0 obj +<< +/D [ 181 0 R /XYZ 61 376 null ] +>> +endobj +1365 0 obj +<< +/D [ 181 0 R /XYZ 61 366 null ] +>> +endobj +1366 0 obj +<< +/D [ 181 0 R /XYZ 61 347 null ] +>> +endobj +1367 0 obj +<< +/D [ 181 0 R /XYZ 61 338 null ] +>> +endobj +1368 0 obj +<< +/D [ 181 0 R /XYZ 61 319 null ] +>> +endobj +1369 0 obj +<< +/D [ 181 0 R /XYZ 61 310 null ] +>> +endobj +1370 0 obj +<< +/D [ 181 0 R /XYZ 61 300 null ] +>> +endobj +1371 0 obj +<< +/D [ 181 0 R /XYZ 61 290 null ] +>> +endobj +1372 0 obj +<< +/D [ 181 0 R /XYZ 61 280 null ] +>> +endobj +1373 0 obj +<< +/D [ 181 0 R /XYZ 61 270 null ] +>> +endobj +1374 0 obj +<< +/D [ 181 0 R /XYZ 61 260 null ] +>> +endobj +1375 0 obj +<< +/D [ 181 0 R /XYZ 61 241 null ] +>> +endobj +1376 0 obj +<< +/D [ 181 0 R /XYZ 61 232 null ] +>> +endobj +1377 0 obj +<< +/D [ 181 0 R /XYZ 61 213 null ] +>> +endobj +1378 0 obj +<< +/D [ 181 0 R /XYZ 61 204 null ] +>> +endobj +1379 0 obj +<< +/D [ 181 0 R /XYZ 61 194 null ] +>> +endobj +1380 0 obj +<< +/D [ 181 0 R /XYZ 61 184 null ] +>> +endobj +1381 0 obj +<< +/D [ 181 0 R /XYZ 61 165 null ] +>> +endobj +1382 0 obj +<< +/D [ 181 0 R /XYZ 61 156 null ] +>> +endobj +1383 0 obj +<< +/D [ 181 0 R /XYZ 61 146 null ] +>> +endobj +1384 0 obj +<< +/D [ 181 0 R /XYZ 61 127 null ] +>> +endobj +1385 0 obj +<< +/D [ 181 0 R /XYZ 61 118 null ] +>> +endobj +1386 0 obj +<< +/D [ 181 0 R /XYZ 61 108 null ] +>> +endobj +1387 0 obj +<< +/D [ 181 0 R /XYZ 61 98 null ] +>> +endobj +1388 0 obj +<< +/D [ 181 0 R /XYZ 313 687 null ] +>> +endobj +1389 0 obj +<< +/D [ 181 0 R /XYZ 313 678 null ] +>> +endobj +1390 0 obj +<< +/D [ 181 0 R /XYZ 313 668 null ] +>> +endobj +1391 0 obj +<< +/D [ 181 0 R /XYZ 313 658 null ] +>> +endobj +1392 0 obj +<< +/D [ 181 0 R /XYZ 313 648 null ] +>> +endobj +1393 0 obj +<< +/D [ 181 0 R /XYZ 313 638 null ] +>> +endobj +1394 0 obj +<< +/D [ 181 0 R /XYZ 313 628 null ] +>> +endobj +1395 0 obj +<< +/D [ 181 0 R /XYZ 313 618 null ] +>> +endobj +1396 0 obj +<< +/D [ 181 0 R /XYZ 313 608 null ] +>> +endobj +1397 0 obj +<< +/D [ 181 0 R /XYZ 313 598 null ] +>> +endobj +1398 0 obj +<< +/D [ 181 0 R /XYZ 313 588 null ] +>> +endobj +1399 0 obj +<< +/D [ 181 0 R /XYZ 313 578 null ] +>> +endobj +1400 0 obj +<< +/D [ 181 0 R /XYZ 313 568 null ] +>> +endobj +1401 0 obj +<< +/D [ 181 0 R /XYZ 313 558 null ] +>> +endobj +1402 0 obj +<< +/D [ 181 0 R /XYZ 313 548 null ] +>> +endobj +1403 0 obj +<< +/D [ 181 0 R /XYZ 313 538 null ] +>> +endobj +1404 0 obj +<< +/D [ 181 0 R /XYZ 313 528 null ] +>> +endobj +1405 0 obj +<< +/D [ 181 0 R /XYZ 313 518 null ] +>> +endobj +1406 0 obj +<< +/D [ 181 0 R /XYZ 313 508 null ] +>> +endobj +1407 0 obj +<< +/D [ 181 0 R /XYZ 313 498 null ] +>> +endobj +1408 0 obj +<< +/D [ 181 0 R /XYZ 313 488 null ] +>> +endobj +1409 0 obj +<< +/D [ 181 0 R /XYZ 313 478 null ] +>> +endobj +1410 0 obj +<< +/D [ 181 0 R /XYZ 313 468 null ] +>> +endobj +1411 0 obj +<< +/D [ 181 0 R /XYZ 313 458 null ] +>> +endobj +1412 0 obj +<< +/D [ 181 0 R /XYZ 313 448 null ] +>> +endobj +1413 0 obj +<< +/D [ 181 0 R /XYZ 313 438 null ] +>> +endobj +1414 0 obj +<< +/D [ 181 0 R /XYZ 313 428 null ] +>> +endobj +1415 0 obj +<< +/D [ 181 0 R /XYZ 313 418 null ] +>> +endobj +1416 0 obj +<< +/D [ 181 0 R /XYZ 313 408 null ] +>> +endobj +1417 0 obj +<< +/D [ 181 0 R /XYZ 313 398 null ] +>> +endobj +1418 0 obj +<< +/D [ 181 0 R /XYZ 313 388 null ] +>> +endobj +1419 0 obj +<< +/D [ 181 0 R /XYZ 313 378 null ] +>> +endobj +1420 0 obj +<< +/D [ 181 0 R /XYZ 313 368 null ] +>> +endobj +1421 0 obj +<< +/D [ 181 0 R /XYZ 313 358 null ] +>> +endobj +1422 0 obj +<< +/D [ 181 0 R /XYZ 313 348 null ] +>> +endobj +1423 0 obj +<< +/D [ 181 0 R /XYZ 313 338 null ] +>> +endobj +1424 0 obj +<< +/D [ 181 0 R /XYZ 313 328 null ] +>> +endobj +1425 0 obj +<< +/D [ 181 0 R /XYZ 313 318 null ] +>> +endobj +1426 0 obj +<< +/D [ 181 0 R /XYZ 313 308 null ] +>> +endobj +1427 0 obj +<< +/D [ 181 0 R /XYZ 313 298 null ] +>> +endobj +1428 0 obj +<< +/D [ 181 0 R /XYZ 313 288 null ] +>> +endobj +1429 0 obj +<< +/D [ 181 0 R /XYZ 313 278 null ] +>> +endobj +1430 0 obj +<< +/D [ 181 0 R /XYZ 313 268 null ] +>> +endobj +1431 0 obj +<< +/D [ 181 0 R /XYZ 313 258 null ] +>> +endobj +1432 0 obj +<< +/D [ 181 0 R /XYZ 313 248 null ] +>> +endobj +1433 0 obj +<< +/D [ 181 0 R /XYZ 313 238 null ] +>> +endobj +1434 0 obj +<< +/D [ 181 0 R /XYZ 313 228 null ] +>> +endobj +1435 0 obj +<< +/D [ 181 0 R /XYZ 313 218 null ] +>> +endobj +1436 0 obj +<< +/D [ 181 0 R /XYZ 313 208 null ] +>> +endobj +1437 0 obj +<< +/D [ 181 0 R /XYZ 313 198 null ] +>> +endobj +1438 0 obj +<< +/D [ 181 0 R /XYZ 313 188 null ] +>> +endobj +1439 0 obj +<< +/D [ 181 0 R /XYZ 313 178 null ] +>> +endobj +1440 0 obj +<< +/D [ 181 0 R /XYZ 313 168 null ] +>> +endobj +1441 0 obj +<< +/D [ 181 0 R /XYZ 313 158 null ] +>> +endobj +1442 0 obj +<< +/D [ 181 0 R /XYZ 313 148 null ] +>> +endobj +1443 0 obj +<< +/D [ 181 0 R /XYZ 313 138 null ] +>> +endobj +1444 0 obj +<< +/D [ 181 0 R /XYZ 313 128 null ] +>> +endobj +1445 0 obj +<< +/D [ 181 0 R /XYZ 313 118 null ] +>> +endobj +1446 0 obj +<< +/D [ 181 0 R /XYZ 313 108 null ] +>> +endobj +1447 0 obj +<< +/D [ 181 0 R /XYZ 313 98 null ] +>> +endobj +1448 0 obj +<< +/D [ 181 0 R /XYZ 313 88 null ] +>> +endobj +1449 0 obj +<< +/D [ 227 0 R /XYZ null null null ] +>> +endobj +1450 0 obj +<< +/D [ 227 0 R /XYZ 61 47 null ] +>> +endobj +1451 0 obj +<< +/D [ 227 0 R /XYZ 61 737 null ] +>> +endobj +1452 0 obj +<< +/D [ 227 0 R /XYZ 192 34 null ] +>> +endobj +1453 0 obj +<< +/D [ 227 0 R /XYZ 63 687 null ] +>> +endobj +1454 0 obj +<< +/D [ 227 0 R /XYZ 63 677 null ] +>> +endobj +1455 0 obj +<< +/D [ 227 0 R /XYZ 63 667 null ] +>> +endobj +1456 0 obj +<< +/D [ 227 0 R /XYZ 63 657 null ] +>> +endobj +1457 0 obj +<< +/D [ 227 0 R /XYZ 63 647 null ] +>> +endobj +1458 0 obj +<< +/D [ 227 0 R /XYZ 63 637 null ] +>> +endobj +1459 0 obj +<< +/D [ 227 0 R /XYZ 63 627 null ] +>> +endobj +1460 0 obj +<< +/D [ 227 0 R /XYZ 63 617 null ] +>> +endobj +1461 0 obj +<< +/D [ 227 0 R /XYZ 63 607 null ] +>> +endobj +1462 0 obj +<< +/D [ 227 0 R /XYZ 63 597 null ] +>> +endobj +1463 0 obj +<< +/D [ 227 0 R /XYZ 63 587 null ] +>> +endobj +1464 0 obj +<< +/D [ 227 0 R /XYZ 63 577 null ] +>> +endobj +1465 0 obj +<< +/D [ 227 0 R /XYZ 63 567 null ] +>> +endobj +1466 0 obj +<< +/D [ 227 0 R /XYZ 63 557 null ] +>> +endobj +1467 0 obj +<< +/D [ 227 0 R /XYZ 63 547 null ] +>> +endobj +1468 0 obj +<< +/D [ 227 0 R /XYZ 63 537 null ] +>> +endobj +1469 0 obj +<< +/D [ 227 0 R /XYZ 63 527 null ] +>> +endobj +1470 0 obj +<< +/Limits [ (F1)(G1.1470)] +/Names [ (F1)296 0 R (F2)402 0 R (F3)464 0 R (F4)534 0 R (F5)562 0 R (F6)1243 0 R +(G1.1050)400 0 R (G1.1200)335 0 R (G1.1219)324 0 R (G1.1222)325 0 R +(G1.1313)326 0 R (G1.1314)327 0 R (G1.1322)331 0 R (G1.1323)332 0 R +(G1.1344)316 0 R (G1.1345)317 0 R (G1.1361)318 0 R (G1.1365)305 0 R +(G1.1366)306 0 R (G1.1367)307 0 R (G1.1376)330 0 R (G1.1421)398 0 R +(G1.1422)399 0 R (G1.1430)336 0 R (G1.1431)337 0 R (G1.1432)338 0 R +(G1.1433)339 0 R (G1.1434)342 0 R (G1.1435)343 0 R (G1.1436)344 0 R +(G1.1437)345 0 R (G1.1438)346 0 R (G1.1439)348 0 R (G1.1440)349 0 R +(G1.1441)350 0 R (G1.1442)351 0 R (G1.1443)355 0 R (G1.1444)360 0 R +(G1.1445)361 0 R (G1.1446)362 0 R (G1.1447)363 0 R (G1.1448)365 0 R +(G1.1449)366 0 R (G1.1450)367 0 R (G1.1451)368 0 R (G1.1452)369 0 R +(G1.1453)370 0 R (G1.1454)371 0 R (G1.1455)372 0 R (G1.1456)373 0 R +(G1.1457)374 0 R (G1.1458)375 0 R (G1.1459)376 0 R (G1.1460)378 0 R +(G1.1461)379 0 R (G1.1462)380 0 R (G1.1463)381 0 R (G1.1464)387 0 R +(G1.1465)388 0 R (G1.1466)389 0 R (G1.1467)390 0 R (G1.1468)391 0 R +(G1.1469)392 0 R (G1.1470)394 0 R ] +>> +endobj +1471 0 obj +<< +/Limits [ (G1.1471)(G2.2469)] +/Names [ (G1.1471)395 0 R (G1.1472)396 0 R (G1.1473)397 0 R (G1.1476)340 0 R +(G1.1477)341 0 R (G1.1478)347 0 R (G1.1479)352 0 R (G1.1480)353 0 R +(G1.1481)354 0 R (G1.1482)364 0 R (G1.1483)377 0 R (G1.1484)382 0 R +(G1.1485)383 0 R (G1.1486)384 0 R (G1.1487)393 0 R (G1.1492)297 0 R +(G1.542)320 0 R (G1.547)321 0 R (G1.548)322 0 R (G1.56)298 0 R (G1.568) +357 0 R (G1.573)358 0 R (G1.574)359 0 R (G1.757)333 0 R (G1.770) +334 0 R (G1.910)299 0 R (G1.911)300 0 R (G1.912)301 0 R (G1.913) +302 0 R (G1.914)303 0 R (G1.915)304 0 R (G1.916)308 0 R (G1.917) +309 0 R (G1.918)310 0 R (G1.919)311 0 R (G1.920)312 0 R (G1.921) +313 0 R (G1.922)314 0 R (G1.923)315 0 R (G1.943)323 0 R (G1.947) +328 0 R (G1.975)329 0 R (G2.1634)458 0 R (G2.1639)459 0 R (G2.1640) +460 0 R (G2.1684)427 0 R (G2.1685)428 0 R (G2.2429)430 0 R (G2.2439) +431 0 R (G2.2441)432 0 R (G2.2443)433 0 R (G2.2445)434 0 R (G2.2447) +435 0 R (G2.2449)436 0 R (G2.2451)437 0 R (G2.2453)438 0 R (G2.2455) +439 0 R (G2.2457)440 0 R (G2.2459)441 0 R (G2.2461)442 0 R (G2.2463) +443 0 R (G2.2465)444 0 R (G2.2467)445 0 R (G2.2469)446 0 R ] +>> +endobj +1472 0 obj +<< +/Limits [ (G2.2471)(G3.513159)] +/Names [ (G2.2471)447 0 R (G2.2473)448 0 R (G2.2475)449 0 R (G2.2477)450 0 R +(G2.2479)451 0 R (G2.2481)452 0 R (G2.2483)453 0 R (G2.2485)461 0 R +(G2.2487)462 0 R (G2.945)429 0 R (G3.509745)469 0 R (G3.510678)471 0 R +(G3.510679)472 0 R (G3.510683)473 0 R (G3.510684)474 0 R (G3.510685) +475 0 R (G3.510686)476 0 R (G3.510690)489 0 R (G3.510693)490 0 R +(G3.510696)491 0 R (G3.510756)531 0 R (G3.510898)514 0 R (G3.511059) +470 0 R (G3.511102)493 0 R (G3.511429)497 0 R (G3.511430)498 0 R +(G3.511431)499 0 R (G3.511432)500 0 R (G3.511433)501 0 R (G3.511434) +502 0 R (G3.511435)503 0 R (G3.511441)494 0 R (G3.511442)496 0 R +(G3.511445)495 0 R (G3.512132)492 0 R (G3.512825)508 0 R (G3.512826) +509 0 R (G3.512827)510 0 R (G3.512828)511 0 R (G3.512829)512 0 R +(G3.512830)513 0 R (G3.512841)515 0 R (G3.512842)516 0 R (G3.512843) +517 0 R (G3.512844)518 0 R (G3.512845)519 0 R (G3.512846)520 0 R +(G3.512847)521 0 R (G3.512848)522 0 R (G3.512849)523 0 R (G3.512850) +524 0 R (G3.512851)525 0 R (G3.512852)526 0 R (G3.512853)527 0 R +(G3.512854)529 0 R (G3.512855)530 0 R (G3.512885)528 0 R (G3.513108) +486 0 R (G3.513114)487 0 R (G3.513115)488 0 R (G3.513135)505 0 R +(G3.513140)506 0 R (G3.513141)507 0 R (G3.513159)467 0 R ] +>> +endobj +1473 0 obj +<< +/Limits [ (G3.513160)(G5.519439)] +/Names [ (G3.513160)468 0 R (G4.509745)543 0 R (G4.513240)558 0 R (G4.513245) +559 0 R (G4.513246)560 0 R (G4.513293)541 0 R (G4.513294)542 0 R +(G4.516614)544 0 R (G4.517638)551 0 R (G4.517648)552 0 R (G4.517779) +561 0 R (G4.517781)545 0 R (G4.517782)546 0 R (G4.517791)547 0 R +(G4.517803)548 0 R (G4.517804)549 0 R (G4.517805)550 0 R (G4.518270) +553 0 R (G4.518273)554 0 R (G4.518275)555 0 R (G4.518278)556 0 R +(G5.509745)567 0 R (G5.516614)568 0 R (G5.518301)571 0 R (G5.519379) +572 0 R (G5.519380)573 0 R (G5.519381)592 0 R (G5.519383)593 0 R +(G5.519384)594 0 R (G5.519388)595 0 R (G5.519392)596 0 R (G5.519396) +597 0 R (G5.519400)598 0 R (G5.519404)599 0 R (G5.519409)609 0 R +(G5.519411)611 0 R (G5.519412)612 0 R (G5.519413)613 0 R (G5.519414) +614 0 R (G5.519415)615 0 R (G5.519416)616 0 R (G5.519417)617 0 R +(G5.519418)618 0 R (G5.519419)620 0 R (G5.519420)621 0 R (G5.519421) +622 0 R (G5.519422)623 0 R (G5.519423)624 0 R (G5.519424)625 0 R +(G5.519425)626 0 R (G5.519426)627 0 R (G5.519427)628 0 R (G5.519428) +629 0 R (G5.519429)630 0 R (G5.519430)631 0 R (G5.519431)632 0 R +(G5.519432)633 0 R (G5.519433)634 0 R (G5.519434)635 0 R (G5.519435) +636 0 R (G5.519436)637 0 R (G5.519437)638 0 R (G5.519438)639 0 R +(G5.519439)640 0 R ] +>> +endobj +1474 0 obj +<< +/Limits [ (G5.519440)(G5.519504)] +/Names [ (G5.519440)641 0 R (G5.519441)642 0 R (G5.519442)643 0 R (G5.519443) +644 0 R (G5.519444)645 0 R (G5.519445)646 0 R (G5.519446)650 0 R +(G5.519447)651 0 R (G5.519448)652 0 R (G5.519449)653 0 R (G5.519450) +654 0 R (G5.519451)655 0 R (G5.519452)656 0 R (G5.519453)657 0 R +(G5.519454)658 0 R (G5.519455)659 0 R (G5.519457)660 0 R (G5.519458) +661 0 R (G5.519459)662 0 R (G5.519460)663 0 R (G5.519461)664 0 R +(G5.519462)665 0 R (G5.519463)666 0 R (G5.519464)667 0 R (G5.519465) +668 0 R (G5.519466)669 0 R (G5.519467)670 0 R (G5.519468)671 0 R +(G5.519469)672 0 R (G5.519470)673 0 R (G5.519471)674 0 R (G5.519472) +675 0 R (G5.519473)676 0 R (G5.519474)678 0 R (G5.519475)679 0 R +(G5.519476)680 0 R (G5.519477)681 0 R (G5.519478)682 0 R (G5.519479) +683 0 R (G5.519480)684 0 R (G5.519481)685 0 R (G5.519482)686 0 R +(G5.519483)687 0 R (G5.519484)688 0 R (G5.519485)689 0 R (G5.519486) +690 0 R (G5.519487)691 0 R (G5.519488)692 0 R (G5.519489)693 0 R +(G5.519490)694 0 R (G5.519491)695 0 R (G5.519492)696 0 R (G5.519493) +697 0 R (G5.519494)698 0 R (G5.519495)699 0 R (G5.519496)700 0 R +(G5.519497)701 0 R (G5.519498)702 0 R (G5.519499)703 0 R (G5.519500) +707 0 R (G5.519501)708 0 R (G5.519502)709 0 R (G5.519503)710 0 R +(G5.519504)711 0 R ] +>> +endobj +1475 0 obj +<< +/Limits [ (G5.519505)(G5.519583)] +/Names [ (G5.519505)712 0 R (G5.519506)713 0 R (G5.519507)714 0 R (G5.519508) +715 0 R (G5.519509)716 0 R (G5.519510)717 0 R (G5.519511)718 0 R +(G5.519512)719 0 R (G5.519513)720 0 R (G5.519514)721 0 R (G5.519515) +722 0 R (G5.519516)723 0 R (G5.519517)724 0 R (G5.519518)725 0 R +(G5.519519)726 0 R (G5.519520)727 0 R (G5.519521)728 0 R (G5.519522) +729 0 R (G5.519523)730 0 R (G5.519524)731 0 R (G5.519525)737 0 R +(G5.519526)738 0 R (G5.519527)739 0 R (G5.519528)740 0 R (G5.519529) +741 0 R (G5.519530)742 0 R (G5.519534)743 0 R (G5.519536)745 0 R +(G5.519537)746 0 R (G5.519538)747 0 R (G5.519539)748 0 R (G5.519540) +749 0 R (G5.519544)750 0 R (G5.519545)751 0 R (G5.519546)752 0 R +(G5.519547)753 0 R (G5.519548)754 0 R (G5.519549)755 0 R (G5.519553) +762 0 R (G5.519555)763 0 R (G5.519560)765 0 R (G5.519561)766 0 R +(G5.519562)767 0 R (G5.519563)768 0 R (G5.519564)769 0 R (G5.519565) +770 0 R (G5.519566)771 0 R (G5.519567)772 0 R (G5.519568)773 0 R +(G5.519569)774 0 R (G5.519570)775 0 R (G5.519571)776 0 R (G5.519572) +777 0 R (G5.519573)778 0 R (G5.519574)779 0 R (G5.519575)780 0 R +(G5.519576)781 0 R (G5.519577)787 0 R (G5.519578)788 0 R (G5.519579) +789 0 R (G5.519580)790 0 R (G5.519581)791 0 R (G5.519582)792 0 R +(G5.519583)793 0 R ] +>> +endobj +1476 0 obj +<< +/Limits [ (G5.519584)(G5.519666)] +/Names [ (G5.519584)794 0 R (G5.519585)795 0 R (G5.519586)796 0 R (G5.519587) +797 0 R (G5.519588)798 0 R (G5.519592)799 0 R (G5.519594)800 0 R +(G5.519595)801 0 R (G5.519596)802 0 R (G5.519598)808 0 R (G5.519599) +809 0 R (G5.519604)810 0 R (G5.519606)811 0 R (G5.519607)812 0 R +(G5.519611)820 0 R (G5.519613)821 0 R (G5.519614)822 0 R (G5.519616) +823 0 R (G5.519617)824 0 R (G5.519621)827 0 R (G5.519622)828 0 R +(G5.519623)829 0 R (G5.519624)830 0 R (G5.519625)831 0 R (G5.519626) +832 0 R (G5.519627)833 0 R (G5.519628)834 0 R (G5.519629)835 0 R +(G5.519630)836 0 R (G5.519631)838 0 R (G5.519632)839 0 R (G5.519633) +840 0 R (G5.519634)841 0 R (G5.519635)842 0 R (G5.519636)843 0 R +(G5.519637)844 0 R (G5.519638)845 0 R (G5.519639)846 0 R (G5.519640) +847 0 R (G5.519641)848 0 R (G5.519642)849 0 R (G5.519643)850 0 R +(G5.519644)851 0 R (G5.519645)852 0 R (G5.519646)853 0 R (G5.519647) +854 0 R (G5.519648)855 0 R (G5.519649)856 0 R (G5.519650)857 0 R +(G5.519651)858 0 R (G5.519652)862 0 R (G5.519653)863 0 R (G5.519654) +864 0 R (G5.519655)865 0 R (G5.519656)866 0 R (G5.519657)867 0 R +(G5.519658)868 0 R (G5.519659)869 0 R (G5.519660)870 0 R (G5.519661) +871 0 R (G5.519663)872 0 R (G5.519664)873 0 R (G5.519665)874 0 R +(G5.519666)875 0 R ] +>> +endobj +1477 0 obj +<< +/Limits [ (G5.519667)(G5.519737)] +/Names [ (G5.519667)876 0 R (G5.519668)877 0 R (G5.519669)878 0 R (G5.519670) +879 0 R (G5.519671)880 0 R (G5.519672)881 0 R (G5.519673)882 0 R +(G5.519674)884 0 R (G5.519675)885 0 R (G5.519676)886 0 R (G5.519677) +887 0 R (G5.519678)888 0 R (G5.519679)889 0 R (G5.519680)890 0 R +(G5.519681)891 0 R (G5.519682)892 0 R (G5.519683)893 0 R (G5.519684) +894 0 R (G5.519685)895 0 R (G5.519686)896 0 R (G5.519687)897 0 R +(G5.519688)898 0 R (G5.519689)899 0 R (G5.519690)900 0 R (G5.519691) +901 0 R (G5.519692)902 0 R (G5.519693)903 0 R (G5.519694)904 0 R +(G5.519695)905 0 R (G5.519696)906 0 R (G5.519697)907 0 R (G5.519698) +908 0 R (G5.519699)912 0 R (G5.519700)913 0 R (G5.519701)914 0 R +(G5.519702)915 0 R (G5.519703)916 0 R (G5.519705)917 0 R (G5.519706) +918 0 R (G5.519707)919 0 R (G5.519708)920 0 R (G5.519709)921 0 R +(G5.519710)922 0 R (G5.519711)923 0 R (G5.519712)924 0 R (G5.519713) +925 0 R (G5.519714)926 0 R (G5.519715)927 0 R (G5.519716)928 0 R +(G5.519717)929 0 R (G5.519718)930 0 R (G5.519719)931 0 R (G5.519723) +935 0 R (G5.519724)936 0 R (G5.519725)937 0 R (G5.519726)938 0 R +(G5.519729)939 0 R (G5.519731)940 0 R (G5.519732)941 0 R (G5.519733) +942 0 R (G5.519734)943 0 R (G5.519735)944 0 R (G5.519736)945 0 R +(G5.519737)946 0 R ] +>> +endobj +1478 0 obj +<< +/Limits [ (G5.519738)(G5.519801)] +/Names [ (G5.519738)949 0 R (G5.519739)950 0 R (G5.519740)951 0 R (G5.519741) +952 0 R (G5.519742)953 0 R (G5.519743)954 0 R (G5.519744)955 0 R +(G5.519745)956 0 R (G5.519746)957 0 R (G5.519747)958 0 R (G5.519748) +959 0 R (G5.519749)960 0 R (G5.519750)961 0 R (G5.519751)962 0 R +(G5.519752)963 0 R (G5.519753)964 0 R (G5.519754)965 0 R (G5.519755) +966 0 R (G5.519756)967 0 R (G5.519757)968 0 R (G5.519758)969 0 R +(G5.519759)970 0 R (G5.519760)971 0 R (G5.519761)974 0 R (G5.519762) +975 0 R (G5.519763)976 0 R (G5.519764)977 0 R (G5.519765)978 0 R +(G5.519766)979 0 R (G5.519767)980 0 R (G5.519768)981 0 R (G5.519769) +982 0 R (G5.519770)983 0 R (G5.519771)984 0 R (G5.519772)985 0 R +(G5.519773)986 0 R (G5.519774)987 0 R (G5.519775)988 0 R (G5.519776) +989 0 R (G5.519777)990 0 R (G5.519778)991 0 R (G5.519779)992 0 R +(G5.519780)993 0 R (G5.519781)994 0 R (G5.519782)995 0 R (G5.519783) +996 0 R (G5.519784)997 0 R (G5.519785)998 0 R (G5.519786)1002 0 R +(G5.519787)1003 0 R (G5.519788)1004 0 R (G5.519789)1005 0 R (G5.519790) +1006 0 R (G5.519791)1007 0 R (G5.519792)1008 0 R (G5.519793)1009 0 R +(G5.519794)1010 0 R (G5.519795)1011 0 R (G5.519796)1012 0 R (G5.519797) +1013 0 R (G5.519798)1014 0 R (G5.519799)1015 0 R (G5.519800)1016 0 R +(G5.519801)1017 0 R ] +>> +endobj +1479 0 obj +<< +/Limits [ (G5.519802)(G5.519878)] +/Names [ (G5.519802)1018 0 R (G5.519803)1019 0 R (G5.519804)1020 0 R (G5.519805) +1021 0 R (G5.519806)1022 0 R (G5.519807)1023 0 R (G5.519808)1024 0 R +(G5.519809)1025 0 R (G5.519810)1026 0 R (G5.519811)1028 0 R (G5.519812) +1029 0 R (G5.519813)1030 0 R (G5.519814)1031 0 R (G5.519815)1032 0 R +(G5.519816)1033 0 R (G5.519817)1034 0 R (G5.519818)1035 0 R (G5.519819) +1036 0 R (G5.519820)1037 0 R (G5.519821)1038 0 R (G5.519822)1039 0 R +(G5.519823)1040 0 R (G5.519824)1041 0 R (G5.519825)1042 0 R (G5.519826) +1043 0 R (G5.519827)1044 0 R (G5.519828)1045 0 R (G5.519832)1049 0 R +(G5.519833)1050 0 R (G5.519834)1051 0 R (G5.519842)1052 0 R (G5.519843) +1053 0 R (G5.519844)1054 0 R (G5.519845)1055 0 R (G5.519846)1056 0 R +(G5.519847)1057 0 R (G5.519848)1059 0 R (G5.519849)1060 0 R (G5.519850) +1061 0 R (G5.519851)1062 0 R (G5.519852)1063 0 R (G5.519853)1064 0 R +(G5.519854)1065 0 R (G5.519855)1066 0 R (G5.519856)1067 0 R (G5.519857) +1068 0 R (G5.519858)1069 0 R (G5.519859)1070 0 R (G5.519863)1071 0 R +(G5.519864)1073 0 R (G5.519865)1075 0 R (G5.519866)1076 0 R (G5.519867) +1077 0 R (G5.519868)1078 0 R (G5.519869)1079 0 R (G5.519870)1080 0 R +(G5.519871)1081 0 R (G5.519872)1082 0 R (G5.519873)1083 0 R (G5.519874) +1084 0 R (G5.519875)1085 0 R (G5.519876)1086 0 R (G5.519877)1087 0 R +(G5.519878)1088 0 R ] +>> +endobj +1480 0 obj +<< +/Limits [ (G5.519879)(G5.519957)] +/Names [ (G5.519879)1089 0 R (G5.519880)1090 0 R (G5.519881)1091 0 R (G5.519882) +1092 0 R (G5.519883)1093 0 R (G5.519884)1096 0 R (G5.519885)1097 0 R +(G5.519886)1098 0 R (G5.519887)1099 0 R (G5.519888)1100 0 R (G5.519889) +1101 0 R (G5.519890)1102 0 R (G5.519891)1103 0 R (G5.519892)1104 0 R +(G5.519893)1105 0 R (G5.519894)1106 0 R (G5.519895)1107 0 R (G5.519899) +1108 0 R (G5.519900)1109 0 R (G5.519901)1113 0 R (G5.519902)1114 0 R +(G5.519903)1115 0 R (G5.519904)1116 0 R (G5.519905)1117 0 R (G5.519906) +1118 0 R (G5.519907)1119 0 R (G5.519908)1120 0 R (G5.519909)1121 0 R +(G5.519910)1122 0 R (G5.519911)1123 0 R (G5.519912)1124 0 R (G5.519913) +1125 0 R (G5.519917)1126 0 R (G5.519918)1129 0 R (G5.519919)1130 0 R +(G5.519920)1131 0 R (G5.519921)1132 0 R (G5.519922)1133 0 R (G5.519923) +1134 0 R (G5.519927)1135 0 R (G5.519928)1136 0 R (G5.519929)1137 0 R +(G5.519930)1138 0 R (G5.519934)1139 0 R (G5.519935)1140 0 R (G5.519936) +1144 0 R (G5.519937)1145 0 R (G5.519938)1146 0 R (G5.519939)1147 0 R +(G5.519940)1148 0 R (G5.519941)1149 0 R (G5.519942)1150 0 R (G5.519943) +1151 0 R (G5.519944)1152 0 R (G5.519945)1153 0 R (G5.519946)1154 0 R +(G5.519947)1155 0 R (G5.519948)1156 0 R (G5.519949)1157 0 R (G5.519950) +1158 0 R (G5.519951)1159 0 R (G5.519952)1160 0 R (G5.519953)1161 0 R +(G5.519957)1163 0 R ] +>> +endobj +1481 0 obj +<< +/Limits [ (G5.519958)(G5.521954)] +/Names [ (G5.519958)1164 0 R (G5.519959)1165 0 R (G5.519960)1171 0 R (G5.519962) +1173 0 R (G5.519963)1174 0 R (G5.519964)1175 0 R (G5.519967)1178 0 R +(G5.519969)1180 0 R (G5.519971)1182 0 R (G5.519973)1183 0 R (G5.519975) +1185 0 R (G5.519977)1187 0 R (G5.519979)1188 0 R (G5.519981)1189 0 R +(G5.519983)1190 0 R (G5.519984)1191 0 R (G5.519985)1192 0 R (G5.519987) +1193 0 R (G5.519989)1194 0 R (G5.519991)1195 0 R (G5.519993)1196 0 R +(G5.519995)1197 0 R (G5.519997)1198 0 R (G5.519999)1199 0 R (G5.520001) +1200 0 R (G5.520003)1201 0 R (G5.520005)1202 0 R (G5.520007)1203 0 R +(G5.520009)1204 0 R (G5.520011)1205 0 R (G5.520013)1206 0 R (G5.520015) +1207 0 R (G5.520016)1208 0 R (G5.520018)1209 0 R (G5.520020)1210 0 R +(G5.520022)1211 0 R (G5.520024)1212 0 R (G5.520026)1213 0 R (G5.520028) +1214 0 R (G5.520030)1223 0 R (G5.520032)1224 0 R (G5.520034)1225 0 R +(G5.520036)1226 0 R (G5.520037)1227 0 R (G5.520038)1228 0 R (G5.520039) +1229 0 R (G5.520040)1230 0 R (G5.520041)1231 0 R (G5.520043)1232 0 R +(G5.520045)1233 0 R (G5.520047)1234 0 R (G5.520049)1235 0 R (G5.520051) +1236 0 R (G5.520053)1237 0 R (G5.520055)1238 0 R (G5.520057)1239 0 R +(G5.520059)1240 0 R (G5.520061)1241 0 R (G5.520063)1242 0 R (G5.520065) +1220 0 R (G5.520066)1221 0 R (G5.520068)1222 0 R (G5.520833)610 0 R +(G5.521954)744 0 R ] +>> +endobj +1482 0 obj +<< +/Limits [ (G5.522300)(G6.47978)] +/Names [ (G5.522300)1072 0 R (G5.522449)1176 0 R (G5.522450)1181 0 R (G5.522451) +1184 0 R (G5.522452)1179 0 R (G5.522453)1186 0 R (G5.522455)1177 0 R +(G5.522823)1172 0 R (G5.523004)764 0 R (G5.525253)589 0 R (G5.525258) +590 0 R (G5.525259)591 0 R (G5.525279)606 0 R (G5.525284)607 0 R +(G5.525285)608 0 R (G5.525309)565 0 R (G5.525310)566 0 R (G5.528680) +569 0 R (G5.528683)574 0 R (G5.528684)575 0 R (G5.528686)576 0 R +(G5.528687)577 0 R (G5.528692)580 0 R (G5.528697)581 0 R (G5.528702) +582 0 R (G5.528707)583 0 R (G5.528712)584 0 R (G5.528717)585 0 R +(G5.528718)570 0 R (G5.528722)578 0 R (G5.528724)579 0 R (G6.47512) +1450 0 R (G6.47517)1451 0 R (G6.47518)1452 0 R (G6.47533)1333 0 R +(G6.47538)1334 0 R (G6.47539)1335 0 R (G6.47918)1336 0 R (G6.47922) +1337 0 R (G6.47924)1338 0 R (G6.47926)1339 0 R (G6.47928)1340 0 R +(G6.47931)1341 0 R (G6.47933)1342 0 R (G6.47935)1343 0 R (G6.47937) +1344 0 R (G6.47939)1345 0 R (G6.47941)1346 0 R (G6.47943)1347 0 R +(G6.47945)1348 0 R (G6.47947)1349 0 R (G6.47949)1350 0 R (G6.47951) +1351 0 R (G6.47953)1352 0 R (G6.47955)1353 0 R (G6.47957)1354 0 R +(G6.47959)1355 0 R (G6.47961)1356 0 R (G6.47964)1357 0 R (G6.47966) +1358 0 R (G6.47968)1359 0 R (G6.47974)1360 0 R (G6.47976)1361 0 R +(G6.47978)1362 0 R ] +>> +endobj +1483 0 obj +<< +/Limits [ (G6.47981)(G6.48074)] +/Names [ (G6.47981)1363 0 R (G6.47983)1364 0 R (G6.47985)1365 0 R (G6.47987) +1366 0 R (G6.47992)1367 0 R (G6.47994)1368 0 R (G6.47996)1369 0 R +(G6.47997)1370 0 R (G6.47999)1371 0 R (G6.48001)1372 0 R (G6.48003) +1373 0 R (G6.48005)1374 0 R (G6.48007)1375 0 R (G6.48009)1376 0 R +(G6.48011)1377 0 R (G6.48014)1378 0 R (G6.48016)1379 0 R (G6.48018) +1380 0 R (G6.48020)1381 0 R (G6.48022)1382 0 R (G6.48024)1383 0 R +(G6.48026)1384 0 R (G6.48028)1385 0 R (G6.48030)1386 0 R (G6.48032) +1387 0 R (G6.48034)1388 0 R (G6.48036)1389 0 R (G6.48038)1390 0 R +(G6.48039)1391 0 R (G6.48040)1392 0 R (G6.48041)1393 0 R (G6.48042) +1394 0 R (G6.48043)1395 0 R (G6.48044)1396 0 R (G6.48045)1397 0 R +(G6.48046)1398 0 R (G6.48047)1399 0 R (G6.48048)1400 0 R (G6.48049) +1401 0 R (G6.48050)1402 0 R (G6.48051)1403 0 R (G6.48052)1404 0 R +(G6.48053)1405 0 R (G6.48054)1406 0 R (G6.48055)1407 0 R (G6.48056) +1408 0 R (G6.48057)1409 0 R (G6.48058)1410 0 R (G6.48059)1411 0 R +(G6.48060)1412 0 R (G6.48061)1413 0 R (G6.48062)1414 0 R (G6.48063) +1415 0 R (G6.48064)1416 0 R (G6.48065)1417 0 R (G6.48066)1418 0 R +(G6.48067)1419 0 R (G6.48068)1420 0 R (G6.48069)1421 0 R (G6.48070) +1422 0 R (G6.48071)1423 0 R (G6.48072)1424 0 R (G6.48073)1425 0 R +(G6.48074)1426 0 R ] +>> +endobj +1484 0 obj +<< +/Limits [ (G6.48075)(I2.1.2484)] +/Names [ (G6.48075)1427 0 R (G6.48076)1428 0 R (G6.48077)1429 0 R (G6.48078) +1430 0 R (G6.48079)1431 0 R (G6.48080)1432 0 R (G6.48081)1433 0 R +(G6.48082)1434 0 R (G6.48083)1435 0 R (G6.48084)1436 0 R (G6.48085) +1437 0 R (G6.48086)1438 0 R (G6.48087)1439 0 R (G6.48088)1440 0 R +(G6.48089)1441 0 R (G6.48090)1442 0 R (G6.48091)1443 0 R (G6.48092) +1444 0 R (G6.48093)1445 0 R (G6.48094)1446 0 R (G6.48095)1447 0 R +(G6.48096)1448 0 R (G6.48097)1453 0 R (G6.48106)1454 0 R (G6.48107) +1455 0 R (G6.48108)1456 0 R (G6.48109)1457 0 R (G6.48110)1458 0 R +(G6.48111)1459 0 R (G6.48112)1460 0 R (G6.48113)1461 0 R (G6.48114) +1462 0 R (G6.48115)1463 0 R (G6.48116)1464 0 R (G6.48117)1465 0 R +(G6.48118)1466 0 R (G6.48119)1467 0 R (G6.48120)1468 0 R (G6.48121) +1469 0 R (I2.1.2428)403 0 R (I2.1.2438)404 0 R (I2.1.2440)405 0 R +(I2.1.2442)406 0 R (I2.1.2444)407 0 R (I2.1.2446)408 0 R (I2.1.2448) +409 0 R (I2.1.2450)410 0 R (I2.1.2452)411 0 R (I2.1.2454)412 0 R +(I2.1.2456)413 0 R (I2.1.2458)414 0 R (I2.1.2460)415 0 R (I2.1.2462) +416 0 R (I2.1.2464)417 0 R (I2.1.2466)418 0 R (I2.1.2468)419 0 R +(I2.1.2470)420 0 R (I2.1.2472)421 0 R (I2.1.2474)422 0 R (I2.1.2476) +423 0 R (I2.1.2478)424 0 R (I2.1.2480)425 0 R (I2.1.2482)426 0 R +(I2.1.2484)456 0 R ] +>> +endobj +1485 0 obj +<< +/Limits [ (I2.1.2486)(I5.1.528676)] +/Names [ (I2.1.2486)457 0 R (I3.1.510677)465 0 R (I3.1.510687)466 0 R (I3.1.510688) +480 0 R (I3.1.510689)481 0 R (I3.1.510691)482 0 R (I3.1.510692)483 0 R +(I3.1.510694)484 0 R (I3.1.510695)485 0 R (I3.1.511264)478 0 R (I3.1.511265) +479 0 R (I4.1.518211)536 0 R (I4.1.518215)538 0 R (I4.1.518320)539 0 R +(I4.1.518321)540 0 R (I5.1.519382)587 0 R (I5.1.519405)601 0 R (I5.1.519410) +603 0 R (I5.1.519456)649 0 R (I5.1.519535)734 0 R (I5.1.519554)758 0 R +(I5.1.519593)784 0 R (I5.1.519605)805 0 R (I5.1.519612)815 0 R (I5.1.519615) +817 0 R (I5.1.519662)861 0 R (I5.1.519704)911 0 R (I5.1.520067)1218 0 R +(I5.1.522807)760 0 R (I5.1.522835)564 0 R (I5.1.522845)1168 0 R +(I5.1.528642)588 0 R (I5.1.528643)604 0 R (I5.1.528644)605 0 R (I5.1.528645) +619 0 R (I5.1.528646)705 0 R (I5.1.528647)706 0 R (I5.1.528648)735 0 R +(I5.1.528649)736 0 R (I5.1.528650)761 0 R (I5.1.528651)785 0 R (I5.1.528652) +786 0 R (I5.1.528653)806 0 R (I5.1.528654)807 0 R (I5.1.528655)818 0 R +(I5.1.528656)819 0 R (I5.1.528657)826 0 R (I5.1.528660)933 0 R (I5.1.528661) +934 0 R (I5.1.528662)948 0 R (I5.1.528663)973 0 R (I5.1.528664)1000 0 R +(I5.1.528665)1001 0 R (I5.1.528666)1047 0 R (I5.1.528667)1048 0 R +(I5.1.528668)1095 0 R (I5.1.528669)1111 0 R (I5.1.528670)1112 0 R +(I5.1.528671)1128 0 R (I5.1.528672)1142 0 R (I5.1.528673)1143 0 R +(I5.1.528674)1169 0 R (I5.1.528675)1170 0 R (I5.1.528676)1219 0 R +] +>> +endobj +1486 0 obj +<< +/Limits [ (I6.1.47919)(I6.1.48033)] +/Names [ (I6.1.47919)1245 0 R (I6.1.47920)1247 0 R (I6.1.47921)1249 0 R (I6.1.47923) +1250 0 R (I6.1.47925)1251 0 R (I6.1.47927)1252 0 R (I6.1.47929)1254 0 R +(I6.1.47930)1256 0 R (I6.1.47932)1257 0 R (I6.1.47934)1258 0 R (I6.1.47936) +1259 0 R (I6.1.47938)1260 0 R (I6.1.47940)1261 0 R (I6.1.47942)1263 0 R +(I6.1.47944)1264 0 R (I6.1.47946)1266 0 R (I6.1.47948)1267 0 R (I6.1.47950) +1268 0 R (I6.1.47952)1269 0 R (I6.1.47954)1270 0 R (I6.1.47956)1271 0 R +(I6.1.47958)1272 0 R (I6.1.47960)1273 0 R (I6.1.47962)1274 0 R (I6.1.47963) +1275 0 R (I6.1.47965)1276 0 R (I6.1.47967)1277 0 R (I6.1.47969)1279 0 R +(I6.1.47970)1281 0 R (I6.1.47971)1283 0 R (I6.1.47972)1285 0 R (I6.1.47973) +1287 0 R (I6.1.47975)1288 0 R (I6.1.47977)1289 0 R (I6.1.47979)1290 0 R +(I6.1.47980)1291 0 R (I6.1.47982)1292 0 R (I6.1.47984)1293 0 R (I6.1.47986) +1294 0 R (I6.1.47988)1296 0 R (I6.1.47989)1298 0 R (I6.1.47990)1300 0 R +(I6.1.47991)1302 0 R (I6.1.47993)1303 0 R (I6.1.47995)1305 0 R (I6.1.47998) +1306 0 R (I6.1.48000)1307 0 R (I6.1.48002)1308 0 R (I6.1.48004)1309 0 R +(I6.1.48006)1310 0 R (I6.1.48008)1312 0 R (I6.1.48010)1313 0 R (I6.1.48012) +1315 0 R (I6.1.48013)1317 0 R (I6.1.48015)1318 0 R (I6.1.48017)1319 0 R +(I6.1.48019)1320 0 R (I6.1.48021)1322 0 R (I6.1.48023)1323 0 R (I6.1.48025) +1324 0 R (I6.1.48027)1326 0 R (I6.1.48029)1327 0 R (I6.1.48031)1328 0 R +(I6.1.48033)1329 0 R ] +>> +endobj +1487 0 obj +<< +/Limits [ (I6.1.48035)(P.22)] +/Names [ (I6.1.48035)1331 0 R (I6.1.48037)1332 0 R (L1)386 0 R (L2)455 0 R +(L3)533 0 R (L4)557 0 R (L5)1216 0 R (L6)1449 0 R (M4.9.20701.Head1.11.Guide.to.the.Specification) +535 0 R (M4.9.20852.Head1.12.Conformance.Issues)537 0 R (M5.9.14558.Head1.51.Introduction) +563 0 R (M5.9.16347.Heading4.1213.Field)648 0 R (M5.9.29028.Heading3.121.Class.Contents) +600 0 R (M5.9.32771.Heading4.1315.Entity)910 0 R (M5.9.34774.Head3.5231.JavaType) +759 0 R (M5.9.38683.Head1.54.UML.Profile)1167 0 R (M5.9.46120.Caption.Figure.108.Names) +814 0 R (M5.9.48147.Heading2.12.The.Java.Metamodel)586 0 R (M5.9.58005.Caption.Figure.105.JavaType) +757 0 R (M5.9.67291.Caption.Figure.103.Class.Contents)602 0 R (M5.9.72362.Caption.Figure.104.Polymorphism) +733 0 R (M5.9.78681.Heading2.13.The.Enterprise.JavaBeans.Metamodel) +816 0 R (M5.9.84071.Heading1.2.Flow.Composition.Model)1217 0 R (M5.9.85264.Heading4.1313.EnterpriseBean) +860 0 R (M5.9.90516.Caption.Figure.107.Data.Types)804 0 R (M5.9.94832.Caption.Figure.106.TypeDescriptor) +783 0 R (M6.8.newlink.A)1248 0 R (M6.8.newlink.B)1253 0 R (M6.8.newlink.C) +1255 0 R (M6.8.newlink.D)1262 0 R (M6.8.newlink.E)1265 0 R (M6.8.newlink.F) +1278 0 R (M6.8.newlink.G)1280 0 R (M6.8.newlink.H)1282 0 R (M6.8.newlink.I) +1284 0 R (M6.8.newlink.J)1286 0 R (M6.8.newlink.K)1295 0 R (M6.8.newlink.L) +1297 0 R (M6.8.newlink.M)1299 0 R (M6.8.newlink.N)1301 0 R (M6.8.newlink.Numerics) +1246 0 R (M6.8.newlink.O)1304 0 R (M6.8.newlink.P)1311 0 R (M6.8.newlink.Q) +1314 0 R (M6.8.newlink.R)1316 0 R (M6.8.newlink.S)1321 0 R (M6.8.newlink.Symbols) +1244 0 R (M6.8.newlink.T)1325 0 R (M6.8.newlink.U)1330 0 R (P.1) +295 0 R (P.10)782 0 R (P.11)803 0 R (P.12)813 0 R (P.13)825 0 R +(P.14)837 0 R (P.15)859 0 R (P.16)883 0 R (P.17)909 0 R (P.18)932 0 R +(P.19)947 0 R (P.2)319 0 R (P.20)972 0 R (P.21)999 0 R (P.22)1027 0 R +] +>> +endobj +1488 0 obj +<< +/Limits [ (P.23)(P.vi)] +/Names [ (P.23)1046 0 R (P.24)1058 0 R (P.25)1074 0 R (P.26)1094 0 R (P.27) +1110 0 R (P.28)1127 0 R (P.29)1141 0 R (P.3)356 0 R (P.30)1162 0 R +(P.31)1166 0 R (P.32)1215 0 R (P.4)385 0 R (P.5)647 0 R (P.6)677 0 R +(P.7)704 0 R (P.8)732 0 R (P.9)756 0 R (P.i)401 0 R (P.ii)454 0 R +(P.iii)463 0 R (P.iv)477 0 R (P.v)504 0 R (P.vi)532 0 R ] +>> +endobj +1489 0 obj +<< +/Kids [ 1470 0 R 1471 0 R 1472 0 R 1473 0 R 1474 0 R 1475 0 R 1476 0 R 1477 0 R +1478 0 R 1479 0 R 1480 0 R 1481 0 R 1482 0 R 1483 0 R 1484 0 R 1485 0 R +1486 0 R 1487 0 R 1488 0 R ] +>> +endobj +1490 0 obj +<< +/S /D +>> +endobj +1491 0 obj +<< +/Nums [ 0 1490 0 R ] +>> +endobj +1492 0 obj +<< +/Producer (Acrobat Distiller 5.0.5 \(Windows\)) +/Author (linda) +/Title (edoc.bk) +/ModDate (D:20040210154631Z00'00') +/CreationDate (D:20040210151451Z00'00') +/Creator (FrameMaker 6.0) +>> +endobj +1493 0 obj +<< /Type /Metadata /Subtype /XML /Length 990 >> +stream +<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d' bytes='989'?><rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'><rdf:Description about='' xmlns='http://ns.adobe.com/pdf/1.3/' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:CreationDate='2004-02-10T15:14:51Z' pdf:ModDate='2004-02-10T15:46:31Z' pdf:Producer='Acrobat Distiller 5.0.5 (Windows)' pdf:Author='linda' pdf:Creator='FrameMaker 6.0' pdf:Title='edoc.bk'/> +<rdf:Description about='' xmlns='http://ns.adobe.com/xap/1.0/' xmlns:xap='http://ns.adobe.com/xap/1.0/' xap:CreateDate='2004-02-10T15:14:51Z' xap:ModifyDate='2004-02-10T15:46:31Z' xap:Author='linda' xap:MetadataDate='2004-02-10T15:46:31Z'><xap:Title><rdf:Alt><rdf:li xml:lang='x-default'>edoc.bk</rdf:li></rdf:Alt></xap:Title></rdf:Description> +<rdf:Description about='' xmlns='http://purl.org/dc/elements/1.1/' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:creator='linda' dc:title='edoc.bk'/> +</rdf:RDF><?xpacket end='r'?> +endstream +endobj +1494 0 obj +<< +/Type /Pages +/Kids [ 1505 0 R 1 0 R 5 0 R 8 0 R 11 0 R 38 0 R 43 0 R 46 0 R 49 0 R 52 0 R +] +/Count 10 +/Parent 1495 0 R +>> +endobj +1495 0 obj +<< +/Type /Pages +/Kids [ 1494 0 R 1496 0 R 1497 0 R 1498 0 R 1499 0 R ] +/Count 46 +>> +endobj +1496 0 obj +<< +/Type /Pages +/Kids [ 55 0 R 62 0 R 65 0 R 76 0 R 84 0 R 87 0 R 90 0 R 93 0 R 96 0 R 99 0 R +] +/Count 10 +/Parent 1495 0 R +>> +endobj +1497 0 obj +<< +/Type /Pages +/Kids [ 104 0 R 107 0 R 110 0 R 113 0 R 116 0 R 119 0 R 122 0 R 125 0 R 128 0 R +131 0 R ] +/Count 10 +/Parent 1495 0 R +>> +endobj +1498 0 obj +<< +/Type /Pages +/Kids [ 135 0 R 138 0 R 141 0 R 144 0 R 147 0 R 152 0 R 155 0 R 158 0 R 161 0 R +165 0 R ] +/Count 10 +/Parent 1495 0 R +>> +endobj +1499 0 obj +<< +/Type /Pages +/Kids [ 169 0 R 172 0 R 175 0 R 178 0 R 181 0 R 227 0 R ] +/Count 6 +/Parent 1495 0 R +>> +endobj +xref +0 1500 +0000000000 65535 f +0000091208 00000 n +0000091375 00000 n +0000091467 00000 n +0000091607 00000 n +0000095193 00000 n +0000095362 00000 n +0000095502 00000 n +0000099606 00000 n +0000099776 00000 n +0000099916 00000 n +0000101820 00000 n +0000102183 00000 n +0000102300 00000 n +0000102417 00000 n +0000102534 00000 n +0000102651 00000 n +0000102768 00000 n +0000102885 00000 n +0000103002 00000 n +0000103119 00000 n +0000103236 00000 n +0000103353 00000 n +0000103470 00000 n +0000103587 00000 n +0000103704 00000 n +0000103821 00000 n +0000103938 00000 n +0000104055 00000 n +0000104172 00000 n +0000104289 00000 n +0000104406 00000 n +0000104523 00000 n +0000104640 00000 n +0000104757 00000 n +0000104874 00000 n +0000104990 00000 n +0000105158 00000 n +0000106916 00000 n +0000107115 00000 n +0000107232 00000 n +0000107350 00000 n +0000107504 00000 n +0000108095 00000 n +0000108275 00000 n +0000108429 00000 n +0000110677 00000 n +0000110849 00000 n +0000111017 00000 n +0000113899 00000 n +0000114071 00000 n +0000114251 00000 n +0000115805 00000 n +0000115977 00000 n +0000116131 00000 n +0000116480 00000 n +0000116701 00000 n +0000116851 00000 n +0000117000 00000 n +0000117166 00000 n +0000117331 00000 n +0000117512 00000 n +0000118997 00000 n +0000119169 00000 n +0000119323 00000 n +0000119700 00000 n +0000119949 00000 n +0000120067 00000 n +0000120185 00000 n +0000120303 00000 n +0000120421 00000 n +0000120539 00000 n +0000120657 00000 n +0000120775 00000 n +0000120893 00000 n +0000121061 00000 n +0000122963 00000 n +0000123183 00000 n +0000123301 00000 n +0000123419 00000 n +0000123537 00000 n +0000123655 00000 n +0000123773 00000 n +0000123927 00000 n +0000125513 00000 n +0000125685 00000 n +0000125866 00000 n +0000129010 00000 n +0000129182 00000 n +0000129349 00000 n +0000130457 00000 n +0000130629 00000 n +0000130796 00000 n +0000131928 00000 n +0000132100 00000 n +0000132267 00000 n +0000133339 00000 n +0000133511 00000 n +0000133678 00000 n +0000134806 00000 n +0000135009 00000 n +0000135128 00000 n +0000135247 00000 n +0000135443 00000 n +0000137647 00000 n +0000137822 00000 n +0000138018 00000 n +0000139998 00000 n +0000140173 00000 n +0000140369 00000 n +0000142468 00000 n +0000142643 00000 n +0000142826 00000 n +0000145469 00000 n +0000145644 00000 n +0000145907 00000 n +0000147526 00000 n +0000147701 00000 n +0000147977 00000 n +0000150569 00000 n +0000150744 00000 n +0000150912 00000 n +0000152719 00000 n +0000152894 00000 n +0000153062 00000 n +0000154710 00000 n +0000154885 00000 n +0000155053 00000 n +0000156423 00000 n +0000156598 00000 n +0000156766 00000 n +0000157768 00000 n +0000157964 00000 n +0000158082 00000 n +0000158358 00000 n +0000162299 00000 n +0000162474 00000 n +0000162642 00000 n +0000163734 00000 n +0000163909 00000 n +0000164077 00000 n +0000165240 00000 n +0000165415 00000 n +0000165583 00000 n +0000166975 00000 n +0000167150 00000 n +0000167318 00000 n +0000168265 00000 n +0000168469 00000 n +0000168588 00000 n +0000168706 00000 n +0000168902 00000 n +0000172895 00000 n +0000173070 00000 n +0000173346 00000 n +0000177360 00000 n +0000177535 00000 n +0000177703 00000 n +0000179392 00000 n +0000179567 00000 n +0000179843 00000 n +0000182235 00000 n +0000182431 00000 n +0000182550 00000 n +0000182718 00000 n +0000185030 00000 n +0000185226 00000 n +0000185345 00000 n +0000185541 00000 n +0000188291 00000 n +0000188466 00000 n +0000188634 00000 n +0000190539 00000 n +0000190714 00000 n +0000190883 00000 n +0000194469 00000 n +0000194644 00000 n +0000194813 00000 n +0000197583 00000 n +0000197758 00000 n +0000197913 00000 n +0000199340 00000 n +0000199877 00000 n +0000199997 00000 n +0000200117 00000 n +0000200237 00000 n +0000200357 00000 n +0000200477 00000 n +0000200597 00000 n +0000200717 00000 n +0000200837 00000 n +0000200957 00000 n +0000201077 00000 n +0000201197 00000 n +0000201317 00000 n +0000201437 00000 n +0000201557 00000 n +0000201677 00000 n +0000201797 00000 n +0000201917 00000 n +0000202038 00000 n +0000202158 00000 n +0000202278 00000 n +0000202398 00000 n +0000202518 00000 n +0000202638 00000 n +0000202759 00000 n +0000202879 00000 n +0000202999 00000 n +0000203119 00000 n +0000203239 00000 n +0000203359 00000 n +0000203479 00000 n +0000203599 00000 n +0000203719 00000 n +0000203839 00000 n +0000203959 00000 n +0000204079 00000 n +0000204199 00000 n +0000204319 00000 n +0000204439 00000 n +0000204559 00000 n +0000204679 00000 n +0000204798 00000 n +0000204916 00000 n +0000205037 00000 n +0000205206 00000 n +0000206842 00000 n +0000207017 00000 n +0000207172 00000 n +0000207554 00000 n +0000207646 00000 n +0000207740 00000 n +0000207836 00000 n +0000207931 00000 n +0000208425 00000 n +0000208520 00000 n +0000208616 00000 n +0000208711 00000 n +0000208806 00000 n +0000208901 00000 n +0000209009 00000 n +0000209104 00000 n +0000209200 00000 n +0000209295 00000 n +0000209763 00000 n +0000209858 00000 n +0000209954 00000 n +0000210049 00000 n +0000210144 00000 n +0000210239 00000 n +0000210738 00000 n +0000210833 00000 n +0000210928 00000 n +0000211023 00000 n +0000211118 00000 n +0000211213 00000 n +0000211309 00000 n +0000211757 00000 n +0000211853 00000 n +0000211949 00000 n +0000212045 00000 n +0000212269 00000 n +0000212486 00000 n +0000212537 00000 n +0000212603 00000 n +0000212699 00000 n +0000212795 00000 n +0000212891 00000 n +0000212987 00000 n +0000213083 00000 n +0000213179 00000 n +0000213275 00000 n +0000213371 00000 n +0000213467 00000 n +0000213563 00000 n +0000213659 00000 n +0000213755 00000 n +0000213851 00000 n +0000213947 00000 n +0000214043 00000 n +0000214139 00000 n +0000214235 00000 n +0000214331 00000 n +0000214427 00000 n +0000214523 00000 n +0000214619 00000 n +0000214713 00000 n +0000214958 00000 n +0000239778 00000 n +0000240014 00000 n +0000260198 00000 n +0000260422 00000 n +0000280973 00000 n +0000281196 00000 n +0000294683 00000 n +0000294745 00000 n +0000294807 00000 n +0000294866 00000 n +0000294925 00000 n +0000294984 00000 n +0000295043 00000 n +0000295102 00000 n +0000295161 00000 n +0000295220 00000 n +0000295279 00000 n +0000295338 00000 n +0000295397 00000 n +0000295456 00000 n +0000295515 00000 n +0000295574 00000 n +0000295633 00000 n +0000295692 00000 n +0000295751 00000 n +0000295810 00000 n +0000295869 00000 n +0000295928 00000 n +0000295987 00000 n +0000296046 00000 n +0000296105 00000 n +0000296164 00000 n +0000296219 00000 n +0000296275 00000 n +0000296331 00000 n +0000296387 00000 n +0000296443 00000 n +0000296499 00000 n +0000296555 00000 n +0000296611 00000 n +0000296667 00000 n +0000296723 00000 n +0000296779 00000 n +0000296835 00000 n +0000296891 00000 n +0000296947 00000 n +0000297003 00000 n +0000297059 00000 n +0000297115 00000 n +0000297171 00000 n +0000297227 00000 n +0000297283 00000 n +0000297339 00000 n +0000297395 00000 n +0000297451 00000 n +0000297507 00000 n +0000297563 00000 n +0000297619 00000 n +0000297675 00000 n +0000297731 00000 n +0000297787 00000 n +0000297843 00000 n +0000297899 00000 n +0000297955 00000 n +0000298011 00000 n +0000298067 00000 n +0000298122 00000 n +0000298177 00000 n +0000298236 00000 n +0000298291 00000 n +0000298347 00000 n +0000298403 00000 n +0000298459 00000 n +0000298515 00000 n +0000298571 00000 n +0000298627 00000 n +0000298683 00000 n +0000298739 00000 n +0000298795 00000 n +0000298851 00000 n +0000298907 00000 n +0000298963 00000 n +0000299019 00000 n +0000299075 00000 n +0000299131 00000 n +0000299187 00000 n +0000299243 00000 n +0000299299 00000 n +0000299355 00000 n +0000299411 00000 n +0000299467 00000 n +0000299523 00000 n +0000299579 00000 n +0000299635 00000 n +0000299691 00000 n +0000299746 00000 n +0000299801 00000 n +0000299860 00000 n +0000299919 00000 n +0000299975 00000 n +0000300031 00000 n +0000300087 00000 n +0000300143 00000 n +0000300199 00000 n +0000300255 00000 n +0000300311 00000 n +0000300367 00000 n +0000300423 00000 n +0000300479 00000 n +0000300535 00000 n +0000300591 00000 n +0000300647 00000 n +0000300703 00000 n +0000300763 00000 n +0000300823 00000 n +0000300881 00000 n +0000300939 00000 n +0000300997 00000 n +0000301055 00000 n +0000301113 00000 n +0000301171 00000 n +0000301229 00000 n +0000301287 00000 n +0000301345 00000 n +0000301403 00000 n +0000301461 00000 n +0000301519 00000 n +0000301577 00000 n +0000301635 00000 n +0000301693 00000 n +0000301751 00000 n +0000301809 00000 n +0000301867 00000 n +0000301925 00000 n +0000301983 00000 n +0000302041 00000 n +0000302099 00000 n +0000302157 00000 n +0000302215 00000 n +0000302271 00000 n +0000302328 00000 n +0000302385 00000 n +0000302442 00000 n +0000302499 00000 n +0000302556 00000 n +0000302613 00000 n +0000302670 00000 n +0000302727 00000 n +0000302784 00000 n +0000302841 00000 n +0000302898 00000 n +0000302955 00000 n +0000303012 00000 n +0000303069 00000 n +0000303126 00000 n +0000303183 00000 n +0000303240 00000 n +0000303297 00000 n +0000303354 00000 n +0000303411 00000 n +0000303468 00000 n +0000303525 00000 n +0000303582 00000 n +0000303639 00000 n +0000303696 00000 n +0000303752 00000 n +0000303812 00000 n +0000303872 00000 n +0000303930 00000 n +0000303988 00000 n +0000304044 00000 n +0000304101 00000 n +0000304158 00000 n +0000304215 00000 n +0000304272 00000 n +0000304332 00000 n +0000304392 00000 n +0000304450 00000 n +0000304508 00000 n +0000304564 00000 n +0000304621 00000 n +0000304678 00000 n +0000304735 00000 n +0000304792 00000 n +0000304849 00000 n +0000304906 00000 n +0000304963 00000 n +0000305020 00000 n +0000305077 00000 n +0000305137 00000 n +0000305195 00000 n +0000305253 00000 n +0000305311 00000 n +0000305369 00000 n +0000305427 00000 n +0000305485 00000 n +0000305543 00000 n +0000305601 00000 n +0000305657 00000 n +0000305714 00000 n +0000305771 00000 n +0000305828 00000 n +0000305885 00000 n +0000305942 00000 n +0000305999 00000 n +0000306056 00000 n +0000306113 00000 n +0000306170 00000 n +0000306227 00000 n +0000306284 00000 n +0000306341 00000 n +0000306398 00000 n +0000306455 00000 n +0000306512 00000 n +0000306569 00000 n +0000306626 00000 n +0000306686 00000 n +0000306742 00000 n +0000306799 00000 n +0000306856 00000 n +0000306913 00000 n +0000306970 00000 n +0000307027 00000 n +0000307084 00000 n +0000307141 00000 n +0000307198 00000 n +0000307255 00000 n +0000307312 00000 n +0000307369 00000 n +0000307426 00000 n +0000307483 00000 n +0000307540 00000 n +0000307597 00000 n +0000307654 00000 n +0000307711 00000 n +0000307768 00000 n +0000307825 00000 n +0000307882 00000 n +0000307939 00000 n +0000307996 00000 n +0000308053 00000 n +0000308110 00000 n +0000308167 00000 n +0000308224 00000 n +0000308284 00000 n +0000308344 00000 n +0000308404 00000 n +0000308462 00000 n +0000308520 00000 n +0000308578 00000 n +0000308636 00000 n +0000308694 00000 n +0000308752 00000 n +0000308808 00000 n +0000308865 00000 n +0000308922 00000 n +0000308979 00000 n +0000309036 00000 n +0000309093 00000 n +0000309150 00000 n +0000309207 00000 n +0000309264 00000 n +0000309321 00000 n +0000309378 00000 n +0000309435 00000 n +0000309492 00000 n +0000309549 00000 n +0000309606 00000 n +0000309663 00000 n +0000309723 00000 n +0000309779 00000 n +0000309836 00000 n +0000309893 00000 n +0000309950 00000 n +0000310010 00000 n +0000310068 00000 n +0000310126 00000 n +0000310182 00000 n +0000310239 00000 n +0000310296 00000 n +0000310353 00000 n +0000310410 00000 n +0000310467 00000 n +0000310524 00000 n +0000310581 00000 n +0000310638 00000 n +0000310696 00000 n +0000310754 00000 n +0000310812 00000 n +0000310870 00000 n +0000310928 00000 n +0000310986 00000 n +0000311044 00000 n +0000311102 00000 n +0000311160 00000 n +0000311218 00000 n +0000311276 00000 n +0000311334 00000 n +0000311392 00000 n +0000311450 00000 n +0000311508 00000 n +0000311564 00000 n +0000311621 00000 n +0000311678 00000 n +0000311735 00000 n +0000311792 00000 n +0000311849 00000 n +0000311906 00000 n +0000311963 00000 n +0000312020 00000 n +0000312077 00000 n +0000312134 00000 n +0000312192 00000 n +0000312250 00000 n +0000312308 00000 n +0000312366 00000 n +0000312424 00000 n +0000312482 00000 n +0000312538 00000 n +0000312595 00000 n +0000312652 00000 n +0000312709 00000 n +0000312766 00000 n +0000312823 00000 n +0000312880 00000 n +0000312937 00000 n +0000312994 00000 n +0000313051 00000 n +0000313108 00000 n +0000313165 00000 n +0000313222 00000 n +0000313280 00000 n +0000313337 00000 n +0000313394 00000 n +0000313451 00000 n +0000313508 00000 n +0000313565 00000 n +0000313622 00000 n +0000313679 00000 n +0000313736 00000 n +0000313793 00000 n +0000313850 00000 n +0000313907 00000 n +0000313964 00000 n +0000314021 00000 n +0000314078 00000 n +0000314135 00000 n +0000314192 00000 n +0000314249 00000 n +0000314306 00000 n +0000314363 00000 n +0000314420 00000 n +0000314477 00000 n +0000314534 00000 n +0000314591 00000 n +0000314648 00000 n +0000314705 00000 n +0000314762 00000 n +0000314818 00000 n +0000314878 00000 n +0000314936 00000 n +0000314994 00000 n +0000315051 00000 n +0000315108 00000 n +0000315165 00000 n +0000315222 00000 n +0000315279 00000 n +0000315336 00000 n +0000315393 00000 n +0000315450 00000 n +0000315507 00000 n +0000315564 00000 n +0000315621 00000 n +0000315678 00000 n +0000315735 00000 n +0000315792 00000 n +0000315849 00000 n +0000315906 00000 n +0000315963 00000 n +0000316020 00000 n +0000316077 00000 n +0000316134 00000 n +0000316191 00000 n +0000316248 00000 n +0000316305 00000 n +0000316362 00000 n +0000316419 00000 n +0000316476 00000 n +0000316532 00000 n +0000316592 00000 n +0000316649 00000 n +0000316706 00000 n +0000316763 00000 n +0000316820 00000 n +0000316877 00000 n +0000316934 00000 n +0000316991 00000 n +0000317048 00000 n +0000317105 00000 n +0000317162 00000 n +0000317219 00000 n +0000317276 00000 n +0000317333 00000 n +0000317390 00000 n +0000317447 00000 n +0000317504 00000 n +0000317561 00000 n +0000317618 00000 n +0000317675 00000 n +0000317732 00000 n +0000317789 00000 n +0000317846 00000 n +0000317903 00000 n +0000317960 00000 n +0000318017 00000 n +0000318074 00000 n +0000318134 00000 n +0000318192 00000 n +0000318250 00000 n +0000318307 00000 n +0000318364 00000 n +0000318421 00000 n +0000318478 00000 n +0000318535 00000 n +0000318592 00000 n +0000318649 00000 n +0000318706 00000 n +0000318763 00000 n +0000318820 00000 n +0000318877 00000 n +0000318934 00000 n +0000318991 00000 n +0000319048 00000 n +0000319105 00000 n +0000319162 00000 n +0000319219 00000 n +0000319276 00000 n +0000319333 00000 n +0000319390 00000 n +0000319447 00000 n +0000319504 00000 n +0000319561 00000 n +0000319618 00000 n +0000319675 00000 n +0000319735 00000 n +0000319793 00000 n +0000319851 00000 n +0000319909 00000 n +0000319967 00000 n +0000320024 00000 n +0000320081 00000 n +0000320138 00000 n +0000320195 00000 n +0000320252 00000 n +0000320309 00000 n +0000320366 00000 n +0000320423 00000 n +0000320480 00000 n +0000320537 00000 n +0000320594 00000 n +0000320651 00000 n +0000320708 00000 n +0000320765 00000 n +0000320822 00000 n +0000320879 00000 n +0000320936 00000 n +0000320993 00000 n +0000321050 00000 n +0000321111 00000 n +0000321170 00000 n +0000321229 00000 n +0000321288 00000 n +0000321347 00000 n +0000321406 00000 n +0000321464 00000 n +0000321522 00000 n +0000321580 00000 n +0000321638 00000 n +0000321696 00000 n +0000321754 00000 n +0000321812 00000 n +0000321870 00000 n +0000321928 00000 n +0000321986 00000 n +0000322044 00000 n +0000322102 00000 n +0000322160 00000 n +0000322218 00000 n +0000322276 00000 n +0000322334 00000 n +0000322392 00000 n +0000322450 00000 n +0000322508 00000 n +0000322566 00000 n +0000322627 00000 n +0000322686 00000 n +0000322745 00000 n +0000322804 00000 n +0000322863 00000 n +0000322921 00000 n +0000322979 00000 n +0000323037 00000 n +0000323095 00000 n +0000323153 00000 n +0000323211 00000 n +0000323269 00000 n +0000323327 00000 n +0000323385 00000 n +0000323443 00000 n +0000323501 00000 n +0000323559 00000 n +0000323617 00000 n +0000323675 00000 n +0000323733 00000 n +0000323791 00000 n +0000323852 00000 n +0000323911 00000 n +0000323970 00000 n +0000324029 00000 n +0000324088 00000 n +0000324146 00000 n +0000324204 00000 n +0000324262 00000 n +0000324320 00000 n +0000324378 00000 n +0000324439 00000 n +0000324498 00000 n +0000324557 00000 n +0000324616 00000 n +0000324675 00000 n +0000324734 00000 n +0000324793 00000 n +0000324851 00000 n +0000324909 00000 n +0000324967 00000 n +0000325025 00000 n +0000325083 00000 n +0000325144 00000 n +0000325203 00000 n +0000325261 00000 n +0000325319 00000 n +0000325377 00000 n +0000325435 00000 n +0000325493 00000 n +0000325551 00000 n +0000325609 00000 n +0000325667 00000 n +0000325725 00000 n +0000325783 00000 n +0000325844 00000 n +0000325902 00000 n +0000325960 00000 n +0000326018 00000 n +0000326076 00000 n +0000326134 00000 n +0000326192 00000 n +0000326250 00000 n +0000326308 00000 n +0000326366 00000 n +0000326424 00000 n +0000326482 00000 n +0000326540 00000 n +0000326598 00000 n +0000326656 00000 n +0000326714 00000 n +0000326772 00000 n +0000326830 00000 n +0000326888 00000 n +0000326946 00000 n +0000327004 00000 n +0000327062 00000 n +0000327123 00000 n +0000327182 00000 n +0000327241 00000 n +0000327299 00000 n +0000327357 00000 n +0000327415 00000 n +0000327473 00000 n +0000327531 00000 n +0000327589 00000 n +0000327647 00000 n +0000327705 00000 n +0000327763 00000 n +0000327821 00000 n +0000327879 00000 n +0000327937 00000 n +0000327995 00000 n +0000328053 00000 n +0000328111 00000 n +0000328169 00000 n +0000328227 00000 n +0000328285 00000 n +0000328343 00000 n +0000328401 00000 n +0000328459 00000 n +0000328520 00000 n +0000328578 00000 n +0000328636 00000 n +0000328694 00000 n +0000328752 00000 n +0000328810 00000 n +0000328868 00000 n +0000328926 00000 n +0000328984 00000 n +0000329042 00000 n +0000329100 00000 n +0000329158 00000 n +0000329216 00000 n +0000329274 00000 n +0000329332 00000 n +0000329390 00000 n +0000329448 00000 n +0000329506 00000 n +0000329564 00000 n +0000329622 00000 n +0000329680 00000 n +0000329738 00000 n +0000329796 00000 n +0000329854 00000 n +0000329912 00000 n +0000329970 00000 n +0000330031 00000 n +0000330090 00000 n +0000330149 00000 n +0000330207 00000 n +0000330265 00000 n +0000330323 00000 n +0000330381 00000 n +0000330439 00000 n +0000330497 00000 n +0000330555 00000 n +0000330613 00000 n +0000330671 00000 n +0000330729 00000 n +0000330787 00000 n +0000330845 00000 n +0000330903 00000 n +0000330961 00000 n +0000331019 00000 n +0000331077 00000 n +0000331135 00000 n +0000331193 00000 n +0000331251 00000 n +0000331309 00000 n +0000331370 00000 n +0000331429 00000 n +0000331488 00000 n +0000331546 00000 n +0000331604 00000 n +0000331662 00000 n +0000331720 00000 n +0000331778 00000 n +0000331836 00000 n +0000331894 00000 n +0000331952 00000 n +0000332010 00000 n +0000332068 00000 n +0000332126 00000 n +0000332184 00000 n +0000332245 00000 n +0000332304 00000 n +0000332362 00000 n +0000332420 00000 n +0000332478 00000 n +0000332536 00000 n +0000332594 00000 n +0000332652 00000 n +0000332710 00000 n +0000332768 00000 n +0000332826 00000 n +0000332884 00000 n +0000332942 00000 n +0000333000 00000 n +0000333058 00000 n +0000333116 00000 n +0000333174 00000 n +0000333232 00000 n +0000333290 00000 n +0000333348 00000 n +0000333406 00000 n +0000333464 00000 n +0000333522 00000 n +0000333580 00000 n +0000333638 00000 n +0000333699 00000 n +0000333758 00000 n +0000333816 00000 n +0000333874 00000 n +0000333932 00000 n +0000333990 00000 n +0000334048 00000 n +0000334106 00000 n +0000334164 00000 n +0000334222 00000 n +0000334280 00000 n +0000334338 00000 n +0000334396 00000 n +0000334454 00000 n +0000334512 00000 n +0000334570 00000 n +0000334628 00000 n +0000334686 00000 n +0000334744 00000 n +0000334802 00000 n +0000334860 00000 n +0000334918 00000 n +0000334976 00000 n +0000335034 00000 n +0000335092 00000 n +0000335150 00000 n +0000335208 00000 n +0000335269 00000 n +0000335329 00000 n +0000335389 00000 n +0000335448 00000 n +0000335507 00000 n +0000335566 00000 n +0000335625 00000 n +0000335684 00000 n +0000335743 00000 n +0000335802 00000 n +0000335861 00000 n +0000335920 00000 n +0000335979 00000 n +0000336038 00000 n +0000336097 00000 n +0000336156 00000 n +0000336215 00000 n +0000336274 00000 n +0000336333 00000 n +0000336392 00000 n +0000336451 00000 n +0000336510 00000 n +0000336569 00000 n +0000336628 00000 n +0000336687 00000 n +0000336746 00000 n +0000336805 00000 n +0000336863 00000 n +0000336925 00000 n +0000336984 00000 n +0000337043 00000 n +0000337102 00000 n +0000337161 00000 n +0000337220 00000 n +0000337279 00000 n +0000337338 00000 n +0000337397 00000 n +0000337456 00000 n +0000337515 00000 n +0000337574 00000 n +0000337633 00000 n +0000337692 00000 n +0000337751 00000 n +0000337810 00000 n +0000337869 00000 n +0000337928 00000 n +0000337987 00000 n +0000338049 00000 n +0000338109 00000 n +0000338169 00000 n +0000338228 00000 n +0000338287 00000 n +0000338346 00000 n +0000338405 00000 n +0000338464 00000 n +0000338523 00000 n +0000338582 00000 n +0000338641 00000 n +0000338700 00000 n +0000338762 00000 n +0000338821 00000 n +0000338880 00000 n +0000338939 00000 n +0000338998 00000 n +0000339057 00000 n +0000339116 00000 n +0000339175 00000 n +0000339234 00000 n +0000339293 00000 n +0000339352 00000 n +0000339411 00000 n +0000339470 00000 n +0000339529 00000 n +0000339588 00000 n +0000339646 00000 n +0000339708 00000 n +0000339767 00000 n +0000339826 00000 n +0000339885 00000 n +0000339944 00000 n +0000340003 00000 n +0000340062 00000 n +0000340121 00000 n +0000340180 00000 n +0000340239 00000 n +0000340298 00000 n +0000340357 00000 n +0000340416 00000 n +0000340475 00000 n +0000340534 00000 n +0000340593 00000 n +0000340652 00000 n +0000340711 00000 n +0000340770 00000 n +0000340829 00000 n +0000340891 00000 n +0000340951 00000 n +0000341010 00000 n +0000341069 00000 n +0000341128 00000 n +0000341187 00000 n +0000341246 00000 n +0000341305 00000 n +0000341364 00000 n +0000341423 00000 n +0000341482 00000 n +0000341541 00000 n +0000341600 00000 n +0000341659 00000 n +0000341718 00000 n +0000341776 00000 n +0000341838 00000 n +0000341898 00000 n +0000341958 00000 n +0000342017 00000 n +0000342076 00000 n +0000342135 00000 n +0000342194 00000 n +0000342253 00000 n +0000342312 00000 n +0000342371 00000 n +0000342430 00000 n +0000342489 00000 n +0000342548 00000 n +0000342607 00000 n +0000342666 00000 n +0000342725 00000 n +0000342784 00000 n +0000342846 00000 n +0000342906 00000 n +0000342965 00000 n +0000343024 00000 n +0000343083 00000 n +0000343142 00000 n +0000343201 00000 n +0000343260 00000 n +0000343319 00000 n +0000343378 00000 n +0000343437 00000 n +0000343496 00000 n +0000343555 00000 n +0000343614 00000 n +0000343676 00000 n +0000343736 00000 n +0000343796 00000 n +0000343855 00000 n +0000343914 00000 n +0000343973 00000 n +0000344032 00000 n +0000344091 00000 n +0000344150 00000 n +0000344209 00000 n +0000344268 00000 n +0000344327 00000 n +0000344386 00000 n +0000344445 00000 n +0000344504 00000 n +0000344563 00000 n +0000344622 00000 n +0000344681 00000 n +0000344740 00000 n +0000344799 00000 n +0000344858 00000 n +0000344920 00000 n +0000344979 00000 n +0000345038 00000 n +0000345097 00000 n +0000345159 00000 n +0000345219 00000 n +0000345279 00000 n +0000345339 00000 n +0000345399 00000 n +0000345458 00000 n +0000345517 00000 n +0000345576 00000 n +0000345635 00000 n +0000345694 00000 n +0000345753 00000 n +0000345812 00000 n +0000345871 00000 n +0000345930 00000 n +0000345990 00000 n +0000346050 00000 n +0000346110 00000 n +0000346170 00000 n +0000346230 00000 n +0000346290 00000 n +0000346350 00000 n +0000346409 00000 n +0000346469 00000 n +0000346529 00000 n +0000346589 00000 n +0000346649 00000 n +0000346709 00000 n +0000346769 00000 n +0000346828 00000 n +0000346888 00000 n +0000346948 00000 n +0000347008 00000 n +0000347068 00000 n +0000347127 00000 n +0000347187 00000 n +0000347247 00000 n +0000347307 00000 n +0000347367 00000 n +0000347426 00000 n +0000347486 00000 n +0000347546 00000 n +0000347606 00000 n +0000347666 00000 n +0000347726 00000 n +0000347785 00000 n +0000347845 00000 n +0000347905 00000 n +0000347965 00000 n +0000348025 00000 n +0000348087 00000 n +0000348149 00000 n +0000348208 00000 n +0000348267 00000 n +0000348327 00000 n +0000348386 00000 n +0000348445 00000 n +0000348504 00000 n +0000348563 00000 n +0000348623 00000 n +0000348683 00000 n +0000348743 00000 n +0000348803 00000 n +0000348863 00000 n +0000348923 00000 n +0000348983 00000 n +0000349043 00000 n +0000349103 00000 n +0000349162 00000 n +0000349222 00000 n +0000349282 00000 n +0000349342 00000 n +0000349402 00000 n +0000349461 00000 n +0000349521 00000 n +0000349581 00000 n +0000349641 00000 n +0000349701 00000 n +0000349763 00000 n +0000349822 00000 n +0000349881 00000 n +0000349940 00000 n +0000349999 00000 n +0000350058 00000 n +0000350117 00000 n +0000350177 00000 n +0000350237 00000 n +0000350297 00000 n +0000350356 00000 n +0000350415 00000 n +0000350474 00000 n +0000350533 00000 n +0000350593 00000 n +0000350653 00000 n +0000350713 00000 n +0000350773 00000 n +0000350833 00000 n +0000350892 00000 n +0000350951 00000 n +0000351011 00000 n +0000351070 00000 n +0000351129 00000 n +0000351188 00000 n +0000351248 00000 n +0000351308 00000 n +0000351367 00000 n +0000351427 00000 n +0000351486 00000 n +0000351546 00000 n +0000351606 00000 n +0000351666 00000 n +0000351726 00000 n +0000351786 00000 n +0000351845 00000 n +0000351904 00000 n +0000351963 00000 n +0000352022 00000 n +0000352081 00000 n +0000352140 00000 n +0000352199 00000 n +0000352258 00000 n +0000352317 00000 n +0000352376 00000 n +0000352436 00000 n +0000352496 00000 n +0000352556 00000 n +0000352616 00000 n +0000352676 00000 n +0000352736 00000 n +0000352796 00000 n +0000352855 00000 n +0000352914 00000 n +0000352973 00000 n +0000353032 00000 n +0000353091 00000 n +0000353150 00000 n +0000353209 00000 n +0000353268 00000 n +0000353327 00000 n +0000353386 00000 n +0000353445 00000 n +0000353505 00000 n +0000353565 00000 n +0000353625 00000 n +0000353685 00000 n +0000353745 00000 n +0000353804 00000 n +0000353863 00000 n +0000353923 00000 n +0000353982 00000 n +0000354041 00000 n +0000354100 00000 n +0000354159 00000 n +0000354219 00000 n +0000354279 00000 n +0000354339 00000 n +0000354398 00000 n +0000354457 00000 n +0000354517 00000 n +0000354577 00000 n +0000354636 00000 n +0000354695 00000 n +0000354755 00000 n +0000354815 00000 n +0000354875 00000 n +0000354935 00000 n +0000354995 00000 n +0000355055 00000 n +0000355113 00000 n +0000355172 00000 n +0000355231 00000 n +0000355290 00000 n +0000355349 00000 n +0000355408 00000 n +0000355467 00000 n +0000355526 00000 n +0000355585 00000 n +0000355644 00000 n +0000355703 00000 n +0000355762 00000 n +0000355821 00000 n +0000355880 00000 n +0000355939 00000 n +0000355998 00000 n +0000356057 00000 n +0000356116 00000 n +0000356175 00000 n +0000356234 00000 n +0000356293 00000 n +0000356352 00000 n +0000356411 00000 n +0000356470 00000 n +0000356529 00000 n +0000356588 00000 n +0000356647 00000 n +0000356706 00000 n +0000356765 00000 n +0000356824 00000 n +0000356883 00000 n +0000356942 00000 n +0000357001 00000 n +0000357060 00000 n +0000357119 00000 n +0000357178 00000 n +0000357237 00000 n +0000357296 00000 n +0000357355 00000 n +0000357414 00000 n +0000357473 00000 n +0000357532 00000 n +0000357591 00000 n +0000357650 00000 n +0000357709 00000 n +0000357768 00000 n +0000357827 00000 n +0000357886 00000 n +0000357945 00000 n +0000358004 00000 n +0000358063 00000 n +0000358122 00000 n +0000358181 00000 n +0000358240 00000 n +0000358298 00000 n +0000358358 00000 n +0000358418 00000 n +0000358478 00000 n +0000358538 00000 n +0000358598 00000 n +0000358658 00000 n +0000358718 00000 n +0000358778 00000 n +0000358838 00000 n +0000358898 00000 n +0000358958 00000 n +0000359018 00000 n +0000359078 00000 n +0000359138 00000 n +0000359198 00000 n +0000359258 00000 n +0000359318 00000 n +0000359378 00000 n +0000359438 00000 n +0000359498 00000 n +0000359558 00000 n +0000359618 00000 n +0000359678 00000 n +0000359738 00000 n +0000359798 00000 n +0000359858 00000 n +0000359918 00000 n +0000359978 00000 n +0000360038 00000 n +0000360098 00000 n +0000360158 00000 n +0000360218 00000 n +0000360278 00000 n +0000360338 00000 n +0000360398 00000 n +0000360458 00000 n +0000360518 00000 n +0000360578 00000 n +0000360638 00000 n +0000360698 00000 n +0000360758 00000 n +0000360818 00000 n +0000360878 00000 n +0000360938 00000 n +0000360998 00000 n +0000361058 00000 n +0000361118 00000 n +0000361178 00000 n +0000361238 00000 n +0000361298 00000 n +0000361358 00000 n +0000361418 00000 n +0000361478 00000 n +0000361538 00000 n +0000361598 00000 n +0000361658 00000 n +0000361718 00000 n +0000361778 00000 n +0000361838 00000 n +0000361897 00000 n +0000361956 00000 n +0000362018 00000 n +0000362076 00000 n +0000362135 00000 n +0000362194 00000 n +0000362253 00000 n +0000362312 00000 n +0000362371 00000 n +0000362430 00000 n +0000362489 00000 n +0000362548 00000 n +0000362607 00000 n +0000362666 00000 n +0000362725 00000 n +0000362784 00000 n +0000362843 00000 n +0000362902 00000 n +0000362961 00000 n +0000363020 00000 n +0000363079 00000 n +0000363138 00000 n +0000363197 00000 n +0000364335 00000 n +0000365480 00000 n +0000366763 00000 n +0000368070 00000 n +0000369377 00000 n +0000370684 00000 n +0000371991 00000 n +0000373298 00000 n +0000374621 00000 n +0000375992 00000 n +0000377363 00000 n +0000378732 00000 n +0000380046 00000 n +0000381351 00000 n +0000382657 00000 n +0000384108 00000 n +0000385545 00000 n +0000387431 00000 n +0000387822 00000 n +0000388032 00000 n +0000388065 00000 n +0000388113 00000 n +0000388321 00000 n +0000389396 00000 n +0000389546 00000 n +0000389653 00000 n +0000389804 00000 n +0000389965 00000 n +0000390126 00000 n +trailer +<< +/Size 1500 +/ID[<846d44fe7593241f873354de26712b8d><d80b811e7a0ee19b4b37a85a0ca79341>] +>> +startxref +173 +%%EOF Deleted: trunk/eugene/doc/1-javamodel/sources/JavaModel.png =================================================================== (Binary files differ) Copied: trunk/eugene/doc/1-javamodel/sources/JavaModel.png (from rev 754, branches/eugene-2.0/eugene/doc/1-javamodel/sources/JavaModel.png) =================================================================== (Binary files differ) Deleted: trunk/eugene/doc/1-javamodel/sources/ObjectModel.png =================================================================== (Binary files differ) Copied: trunk/eugene/doc/1-javamodel/sources/ObjectModel.png (from rev 754, branches/eugene-2.0/eugene/doc/1-javamodel/sources/ObjectModel.png) =================================================================== (Binary files differ) Deleted: trunk/eugene/doc/1-javamodel/sources/ObjectModel_Interfaces.png =================================================================== (Binary files differ) Copied: trunk/eugene/doc/1-javamodel/sources/ObjectModel_Interfaces.png (from rev 754, branches/eugene-2.0/eugene/doc/1-javamodel/sources/ObjectModel_Interfaces.png) =================================================================== (Binary files differ) Deleted: trunk/eugene/doc/1-javamodel/sources/Todo.rst =================================================================== --- branches/eugene-2.0/eugene/doc/1-javamodel/sources/Todo.rst 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/doc/1-javamodel/sources/Todo.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -1,108 +0,0 @@ -==== -TODO -==== - - -:Revision: $Revision: 626 $ -:Date: $Date: 2009-09-04 16:54:57 +0200 (Fri, 04 Sep 2009) $ - - -Idées ou choses à faire -======================= - -- support des InnerClasses (en xmi argo: la classe est declarer dans une classe - dans un element UML:Namespace.ownedElement) - -- support des static (tout element declarer dans une class/interface: methode, - attribut, enumeration, class, ...) - (en xmi argo: ownerScope='classifier' ou ownerScope='instance') - -- peut-etre faire des tests unitaires avec http://juxy.tigris.org/ pour le xls - -- Permettre de faire du 'model to model' avant la generation - -Model to Model -============== - -Pour tout ce qui est génération de classe Java, le principe de base d'Eugene -est de dire que le développeur écrit directement ce qu'il souhaite voir dans -le fichier final. - -Cela pose quelques difficultés: - -- difficulté de prévoir les imports -- difficulté d'éviter la génération de deux méthodes ayant le même nom - -L'idée serait alors de constuire la classe Java souhaitée au final en appelant -des méthodes (addImport, addMethod, addAttribute, ...). Ceci nous donnerait -alors un nouveau modèle mémoire dont on demanderait la génération à un -générateur sans inteligence qui se contenterait d'écrire le code Java modélisé. - -L'avantage est que pour chaque méthode à ajouter on peut demander avant si elle -n'a pas déjà été ajoutée et ainsi potentiellement la renomé avant de l'inclure. -D'ajouter de façon automatique tous les imports des arguments des méthodes, ... - -Pour pouvoir faire cela, nous pourrions nous baser sur ObjectModel, mais des -ajouter doivent être fait: - -- pouvoir indiquer sur une Class une série d'import. -- pouvoir ajouter un message de licence -- pouvoir ajouter sur une méthode sont code source - -Ce dernier élément est le plus problèmatique, car il deviendrait pénible de -devoir instancier tout le code de la méthode en objet et on perdrait l'idée -de départ d'Eugene. - -Dans eugène il est déjà possible de modifier la transformation des tags de -génération '/\*{' et '}\*/' qui par défaut génère un 'ouput.write("...");' -Dans notre cas, il faudrait quelque chose comme 'method.addCode("...");' ou -encore plus simplement '"..." +' ce qui pourrait donner:: - - addImport(MonObject.class); - method.addCode( - /*{ int i = 0; - i = 1+2; - MonObject result = new MonObject(result); - return result; - }*/ - ); - -qui deviendrait:: - - addImport(MonObject.class); - method.addCode( - "int i = 0;\n" + - "i = 1+2;\n" + - "MonObject result = new MonObject(result);\n" + - "return result;\n" - ); - -On garde la facilte d'écriture du code à générer et on permet d'ajouter -facilement des imports dont on aurait besoin dans le coprs de la méthode. Aucun -traitement complexe du code de la méthode n'est donc nécessaire. - -Ce nouveau mode de génération ne serait qu'une moyen complémentaire de la -génération actuelle. - -Travail a faire: - -- ajout d'objet dans ObjectModel -- ajout de méthode de modification dans ObjectModel -- création d'un template de génération d'un POJO (génération direct d'un modèle) - -Il serait toute fois dommage d'ajouter tout un ensemnble de setter sur les -interfaces d'ObjectModel qui le rendrait moins clair pour les générateurs. -Il faut donc trouver une solution pour permettre l'instanciation et la -modification de classe implantant l'ObjectModel sans pour autant les ajouter -au interface. - -Une idée pourrait-être l'utilisation de Helper qui permette de créer et modifier -le modèle:: - - ObjectModelClass clazz = ObjectModelHelper.createClass(); - ObjectModelOperation method = ObjectModelHelper.addMethod( - clazz, "name", "typeRetour", "paramName", "typeParam"); - ObjectModelHelper.addImport("java.util.List"); - ObjectModelHelper.addCode(method, - /*{ blablabla - }*/ Copied: trunk/eugene/doc/1-javamodel/sources/Todo.rst (from rev 754, branches/eugene-2.0/eugene/doc/1-javamodel/sources/Todo.rst) =================================================================== --- trunk/eugene/doc/1-javamodel/sources/Todo.rst (rev 0) +++ trunk/eugene/doc/1-javamodel/sources/Todo.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,108 @@ +==== +TODO +==== + + +:Revision: $Revision: 626 $ +:Date: $Date: 2009-09-04 16:54:57 +0200 (Fri, 04 Sep 2009) $ + + +Idées ou choses à faire +======================= + +- support des InnerClasses (en xmi argo: la classe est declarer dans une classe + dans un element UML:Namespace.ownedElement) + +- support des static (tout element declarer dans une class/interface: methode, + attribut, enumeration, class, ...) + (en xmi argo: ownerScope='classifier' ou ownerScope='instance') + +- peut-etre faire des tests unitaires avec http://juxy.tigris.org/ pour le xls + +- Permettre de faire du 'model to model' avant la generation + +Model to Model +============== + +Pour tout ce qui est génération de classe Java, le principe de base d'Eugene +est de dire que le développeur écrit directement ce qu'il souhaite voir dans +le fichier final. + +Cela pose quelques difficultés: + +- difficulté de prévoir les imports +- difficulté d'éviter la génération de deux méthodes ayant le même nom + +L'idée serait alors de constuire la classe Java souhaitée au final en appelant +des méthodes (addImport, addMethod, addAttribute, ...). Ceci nous donnerait +alors un nouveau modèle mémoire dont on demanderait la génération à un +générateur sans inteligence qui se contenterait d'écrire le code Java modélisé. + +L'avantage est que pour chaque méthode à ajouter on peut demander avant si elle +n'a pas déjà été ajoutée et ainsi potentiellement la renomé avant de l'inclure. +D'ajouter de façon automatique tous les imports des arguments des méthodes, ... + +Pour pouvoir faire cela, nous pourrions nous baser sur ObjectModel, mais des +ajouter doivent être fait: + +- pouvoir indiquer sur une Class une série d'import. +- pouvoir ajouter un message de licence +- pouvoir ajouter sur une méthode sont code source + +Ce dernier élément est le plus problèmatique, car il deviendrait pénible de +devoir instancier tout le code de la méthode en objet et on perdrait l'idée +de départ d'Eugene. + +Dans eugène il est déjà possible de modifier la transformation des tags de +génération '/\*{' et '}\*/' qui par défaut génère un 'ouput.write("...");' +Dans notre cas, il faudrait quelque chose comme 'method.addCode("...");' ou +encore plus simplement '"..." +' ce qui pourrait donner:: + + addImport(MonObject.class); + method.addCode( + /*{ int i = 0; + i = 1+2; + MonObject result = new MonObject(result); + return result; + }*/ + ); + +qui deviendrait:: + + addImport(MonObject.class); + method.addCode( + "int i = 0;\n" + + "i = 1+2;\n" + + "MonObject result = new MonObject(result);\n" + + "return result;\n" + ); + +On garde la facilte d'écriture du code à générer et on permet d'ajouter +facilement des imports dont on aurait besoin dans le coprs de la méthode. Aucun +traitement complexe du code de la méthode n'est donc nécessaire. + +Ce nouveau mode de génération ne serait qu'une moyen complémentaire de la +génération actuelle. + +Travail a faire: + +- ajout d'objet dans ObjectModel +- ajout de méthode de modification dans ObjectModel +- création d'un template de génération d'un POJO (génération direct d'un modèle) + +Il serait toute fois dommage d'ajouter tout un ensemnble de setter sur les +interfaces d'ObjectModel qui le rendrait moins clair pour les générateurs. +Il faut donc trouver une solution pour permettre l'instanciation et la +modification de classe implantant l'ObjectModel sans pour autant les ajouter +au interface. + +Une idée pourrait-être l'utilisation de Helper qui permette de créer et modifier +le modèle:: + + ObjectModelClass clazz = ObjectModelHelper.createClass(); + ObjectModelOperation method = ObjectModelHelper.addMethod( + clazz, "name", "typeRetour", "paramName", "typeParam"); + ObjectModelHelper.addImport("java.util.List"); + ObjectModelHelper.addCode(method, + /*{ blablabla + }*/ Deleted: trunk/eugene/doc/1-javamodel/sources/description_metamodel_java =================================================================== --- branches/eugene-2.0/eugene/doc/1-javamodel/sources/description_metamodel_java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/doc/1-javamodel/sources/description_metamodel_java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,215 +0,0 @@ -========================================== -Etude pour generateur stupide de code Java -========================================== - -:Date: 2009-10-13 -:Author: fdesbois (fdesbois@codelutin.com) - -.. contents:: Contenu - -JavaModel -========= - -Documents de référence ----------------------- - -- Todo d'EUGene du 2009-09-04 (a la suite de ce document) -- Modèle d'EUgene (diagrammes de classes) -- Metamodel Java de l'OMG (2004-02-02) : Metamodel_Java_04-02-02.pdf - -Besoin/Contexte ---------------- - -A l'heure actuelle, les générations de code Java sont faites depuis EUGene en passant par des modeles UML (ArgoUML XMI 1.2 ou TopCased XMI 2.1). Il n'est -pas possible de générer simplement un fichier java sans passer par le modèle UML. De plus, les templates de génération peuvent être fastidieuse lors de la création de fichier Java pour tout ce qui concerne les imports (cf ToPIA-persistence). Il a été initié l'idée de créer un autre générateur sans intelligence permettant de simplement généré du code Java sans contraintes particulières et de mainère simplet et intuitive. Pour cela l'ObjectModel d'EUGene semble non adapté à une génération purement Java car basé sur l'UML/XMI. - -Présentation ------------- - -L'idée est de créer un autre Modèle indépendant d'EUGene basé uniquement sur la génération Java (donc rien de spécifique à UML mais plus à Java). Le but étant de pouvoir générer n'importe quel fichier java assez simplement sans contrainte de model UML ni d'EUGene. Par la suite il sera intéressant d'écrire une sorte de transformation Model To Model entre l'ObjectModel d'EUGene et ce modele specifique à Java, qu'on pourrait appeler pour simplifier JavaModel. - -.. image:: JavaModel.png - -Les éléments de base --------------------- - -- JavaPackage : Package contenant un ensemble de fichiers java (JavaFile) -- JavaFile : Fichier contenu dans un package et pouvant potentiellement contenir une ou plusieurs classes/interfaces (cet élément comprendra la liste des imports) -- JavaClass : Classe Java contenant méthodes (JavaMethod) et attributs (JavaField) -- JavaInterface : Interface Java contenant méthodes (JavaMethod) et attributs (JavaField) -- JavaMethod : Methode Java contenant un ensemble de paramètres (JavaParameter) -- JavaField : un attribut Java (pour une classe ou une interface) -- JavaParameter : un parametre d'une methode - -Abstraction des comportements communs -------------------------------------- - -- AbstractNamedElement : Tout élément du modèle possède au minimum un nom et des commentaires (javadoc) -- AbstractClassifier : Les classes et interfaces ont un fort comportement en commun (methodes, attributs, heritage, ...) -- AbstractTypedElement : Gestion du typage communs aux champs (JavaField) et paramètres de méthodes (JavaMethod) - -Concernant les imports ----------------------- - -Les imports seront gérés de manière simple par une liste de String. Un manager des imports pourra etre utiliser pour optimiser la gestion des imports (utilisation ImportsManager ?) - -Concernant les exceptions -------------------------- - -Pour un même soucis de simplicité que les imports les exceptions seront gérés par une liste de String. - -Ajouts a venir --------------- - -- Gestion plus poussé du Typage, notamment pour gérer les Generic et peut etre specifies plus precisemment les types primitifs -- Gestion des énumérations (pour le moment non bloquant pour une première version) -- Gestion plus poussé des Exceptions (a voir...) - -Resultat attendu ----------------- - -Obtenir un modele simple basé sur le langage Java sans complexité lié à une technologie (EJB, ...). Ce générateur aura pour but de creer des fichiers java directement a partir du code sans passer obligatoirement par un modele UML comme le préconise EUGene. Un générateur sans intelligence se chargera de générer les fichiers java tel que décrit dans le modele mémoire (JavaModel). - -Interaction avec EUGene -> ToPIA ? ----------------------------------- - -Par la suite des générateurs pourront etre créés pour passer de l'ObjectModel au Java (avec plus ou moins de spécificités : DAO, DTO, Bean, ...) et peut-être intégrables dans une v3 de ToPIA. - -Remplissage du modèle ---------------------- - -Le remplissage de base se fait en utilisant directement le modèle (via des getter, setter, add), cad, le remplissage se fait au fur et a mesure en partant de l'element racine, le package ou le model en lui meme. - -:: - - JavaBuilder builder = new JavaBuilder(); - - JavaPackage package = builder.getPackage("org.nuiton.eugene.javamodel.test"); // nouvelle instanciantion si n'existe pas dans le Builder. - JavaFile javaFile = package.addFile("Personne"); - - javaFile.addImport("java.util.List"); - JavaClass personne = javaFile.addClass("Personne"); - JavaMethod method = personne.addMethod("init"); - method.addInputParameter("nom", "String"); - method.addBodyCode(/*{ - ... - }*/); - - - JavaField fieldNom = personne.addProperty("noms", "List<String>", JavaBuilder.ADD_SETTER, JavaBuilder.ADD_GETTER); // ou 4 methodes (sans getter/setter, avec getter, avec setter et avec les deux) - - addPropertyWithGetterSetter - addPropertyWithGetter - addPropertyWithSetter - addField - - -Ou placer le modele ? ---------------------- - -La question se pose pour garder une indépendance avec EUGene, où placer ce modele ? Etant donné que certaines classes d'EUGene seront surement utiles comme le Generator ou l'ImportsManager. - -Model to Model (Reference TODO du 2009-09-04) -============================================= - -Pour tout ce qui est génération de classe Java, le principe de base d'Eugene -est de dire que le développeur écrit directement ce qu'il souhaite voir dans -le fichier final. - -Cela pose quelques difficultés: - -- difficulté de prévoir les imports -- difficulté d'éviter la génération de deux méthodes ayant le même nom - -L'idée serait alors de constuire la classe Java souhaitée au final en appelant -des méthodes (addImport, addMethod, addAttribute, ...). Ceci nous donnerait -alors un nouveau modèle mémoire dont on demanderait la génération à un -générateur sans inteligence qui se contenterait d'écrire le code Java modélisé. - -L'avantage est que pour chaque méthode à ajouter on peut demander avant si elle -n'a pas déjà été ajoutée et ainsi potentiellement la renomé avant de l'inclure. -D'ajouter de façon automatique tous les imports des arguments des méthodes, ... - -Pour pouvoir faire cela, nous pourrions nous baser sur ObjectModel, mais des -ajouter doivent être fait: - -- pouvoir indiquer sur une Class une série d'import. -- pouvoir ajouter un message de licence -- pouvoir ajouter sur une méthode sont code source - -Ce dernier élément est le plus problèmatique, car il deviendrait pénible de -devoir instancier tout le code de la méthode en objet et on perdrait l'idée -de départ d'Eugene. - -Dans eugène il est déjà possible de modifier la transformation des tags de -génération '/\*{' et '}\*/' qui par défaut génère un 'ouput.write("...");' -Dans notre cas, il faudrait quelque chose comme 'method.addCode("...");' ou -encore plus simplement '"..." +' ce qui pourrait donner:: - - addImport(MonObject.class); - method.addCode( - /*{ int i = 0; - i = 1+2; - MonObject result = new MonObject(result); - return result; - }*/ - ); - -qui deviendrait:: - - addImport(MonObject.class); - method.addCode( - "int i = 0;\n" + - "i = 1+2;\n" + - "MonObject result = new MonObject(result);\n" + - "return result;\n" - ); - -On garde la facilte d'écriture du code à générer et on permet d'ajouter -facilement des imports dont on aurait besoin dans le coprs de la méthode. Aucun -traitement complexe du code de la méthode n'est donc nécessaire. - -Ce nouveau mode de génération ne serait qu'une moyen complémentaire de la -génération actuelle. - -Travail a faire: - -- ajout d'objet dans ObjectModel -- ajout de méthode de modification dans ObjectModel -- création d'un template de génération d'un POJO (génération direct d'un modèle) - -Il serait toute fois dommage d'ajouter tout un ensemnble de setter sur les -interfaces d'ObjectModel qui le rendrait moins clair pour les générateurs. -Il faut donc trouver une solution pour permettre l'instanciation et la -modification de classe implantant l'ObjectModel sans pour autant les ajouter -au interface. - -Une idée pourrait-être l'utilisation de Helper qui permette de créer et modifier -le modèle:: - - ObjectModelClass clazz = ObjectModelHelper.createClass(); - ObjectModelOperation method = ObjectModelHelper.addMethod( - clazz, "name", "typeRetour", "paramName", "typeParam"); - ObjectModelHelper.addImport("java.util.List"); - ObjectModelHelper.addCode(method, - /*{ blablabla - }*/ - - -Modèle d'EUGene (ObjectModel) -============================= - -Modele théorique ObjectModel - -.. image:: ObjectModel.png - -Interfaces Java pour le modèle mémoire (implémentées dans EUGene) - -.. image:: ObjectModel_Interfaces.png - - - - - - - Copied: trunk/eugene/doc/1-javamodel/sources/description_metamodel_java (from rev 754, branches/eugene-2.0/eugene/doc/1-javamodel/sources/description_metamodel_java) =================================================================== --- trunk/eugene/doc/1-javamodel/sources/description_metamodel_java (rev 0) +++ trunk/eugene/doc/1-javamodel/sources/description_metamodel_java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,215 @@ +========================================== +Etude pour generateur stupide de code Java +========================================== + +:Date: 2009-10-13 +:Author: fdesbois (fdesbois@codelutin.com) + +.. contents:: Contenu + +JavaModel +========= + +Documents de référence +---------------------- + +- Todo d'EUGene du 2009-09-04 (a la suite de ce document) +- Modèle d'EUgene (diagrammes de classes) +- Metamodel Java de l'OMG (2004-02-02) : Metamodel_Java_04-02-02.pdf + +Besoin/Contexte +--------------- + +A l'heure actuelle, les générations de code Java sont faites depuis EUGene en passant par des modeles UML (ArgoUML XMI 1.2 ou TopCased XMI 2.1). Il n'est +pas possible de générer simplement un fichier java sans passer par le modèle UML. De plus, les templates de génération peuvent être fastidieuse lors de la création de fichier Java pour tout ce qui concerne les imports (cf ToPIA-persistence). Il a été initié l'idée de créer un autre générateur sans intelligence permettant de simplement généré du code Java sans contraintes particulières et de mainère simplet et intuitive. Pour cela l'ObjectModel d'EUGene semble non adapté à une génération purement Java car basé sur l'UML/XMI. + +Présentation +------------ + +L'idée est de créer un autre Modèle indépendant d'EUGene basé uniquement sur la génération Java (donc rien de spécifique à UML mais plus à Java). Le but étant de pouvoir générer n'importe quel fichier java assez simplement sans contrainte de model UML ni d'EUGene. Par la suite il sera intéressant d'écrire une sorte de transformation Model To Model entre l'ObjectModel d'EUGene et ce modele specifique à Java, qu'on pourrait appeler pour simplifier JavaModel. + +.. image:: JavaModel.png + +Les éléments de base +-------------------- + +- JavaPackage : Package contenant un ensemble de fichiers java (JavaFile) +- JavaFile : Fichier contenu dans un package et pouvant potentiellement contenir une ou plusieurs classes/interfaces (cet élément comprendra la liste des imports) +- JavaClass : Classe Java contenant méthodes (JavaMethod) et attributs (JavaField) +- JavaInterface : Interface Java contenant méthodes (JavaMethod) et attributs (JavaField) +- JavaMethod : Methode Java contenant un ensemble de paramètres (JavaParameter) +- JavaField : un attribut Java (pour une classe ou une interface) +- JavaParameter : un parametre d'une methode + +Abstraction des comportements communs +------------------------------------- + +- AbstractNamedElement : Tout élément du modèle possède au minimum un nom et des commentaires (javadoc) +- AbstractClassifier : Les classes et interfaces ont un fort comportement en commun (methodes, attributs, heritage, ...) +- AbstractTypedElement : Gestion du typage communs aux champs (JavaField) et paramètres de méthodes (JavaMethod) + +Concernant les imports +---------------------- + +Les imports seront gérés de manière simple par une liste de String. Un manager des imports pourra etre utiliser pour optimiser la gestion des imports (utilisation ImportsManager ?) + +Concernant les exceptions +------------------------- + +Pour un même soucis de simplicité que les imports les exceptions seront gérés par une liste de String. + +Ajouts a venir +-------------- + +- Gestion plus poussé du Typage, notamment pour gérer les Generic et peut etre specifies plus precisemment les types primitifs +- Gestion des énumérations (pour le moment non bloquant pour une première version) +- Gestion plus poussé des Exceptions (a voir...) + +Resultat attendu +---------------- + +Obtenir un modele simple basé sur le langage Java sans complexité lié à une technologie (EJB, ...). Ce générateur aura pour but de creer des fichiers java directement a partir du code sans passer obligatoirement par un modele UML comme le préconise EUGene. Un générateur sans intelligence se chargera de générer les fichiers java tel que décrit dans le modele mémoire (JavaModel). + +Interaction avec EUGene -> ToPIA ? +---------------------------------- + +Par la suite des générateurs pourront etre créés pour passer de l'ObjectModel au Java (avec plus ou moins de spécificités : DAO, DTO, Bean, ...) et peut-être intégrables dans une v3 de ToPIA. + +Remplissage du modèle +--------------------- + +Le remplissage de base se fait en utilisant directement le modèle (via des getter, setter, add), cad, le remplissage se fait au fur et a mesure en partant de l'element racine, le package ou le model en lui meme. + +:: + + JavaBuilder builder = new JavaBuilder(); + + JavaPackage package = builder.getPackage("org.nuiton.eugene.javamodel.test"); // nouvelle instanciantion si n'existe pas dans le Builder. + JavaFile javaFile = package.addFile("Personne"); + + javaFile.addImport("java.util.List"); + JavaClass personne = javaFile.addClass("Personne"); + JavaMethod method = personne.addMethod("init"); + method.addInputParameter("nom", "String"); + method.addBodyCode(/*{ + ... + }*/); + + + JavaField fieldNom = personne.addProperty("noms", "List<String>", JavaBuilder.ADD_SETTER, JavaBuilder.ADD_GETTER); // ou 4 methodes (sans getter/setter, avec getter, avec setter et avec les deux) + + addPropertyWithGetterSetter + addPropertyWithGetter + addPropertyWithSetter + addField + + +Ou placer le modele ? +--------------------- + +La question se pose pour garder une indépendance avec EUGene, où placer ce modele ? Etant donné que certaines classes d'EUGene seront surement utiles comme le Generator ou l'ImportsManager. + +Model to Model (Reference TODO du 2009-09-04) +============================================= + +Pour tout ce qui est génération de classe Java, le principe de base d'Eugene +est de dire que le développeur écrit directement ce qu'il souhaite voir dans +le fichier final. + +Cela pose quelques difficultés: + +- difficulté de prévoir les imports +- difficulté d'éviter la génération de deux méthodes ayant le même nom + +L'idée serait alors de constuire la classe Java souhaitée au final en appelant +des méthodes (addImport, addMethod, addAttribute, ...). Ceci nous donnerait +alors un nouveau modèle mémoire dont on demanderait la génération à un +générateur sans inteligence qui se contenterait d'écrire le code Java modélisé. + +L'avantage est que pour chaque méthode à ajouter on peut demander avant si elle +n'a pas déjà été ajoutée et ainsi potentiellement la renomé avant de l'inclure. +D'ajouter de façon automatique tous les imports des arguments des méthodes, ... + +Pour pouvoir faire cela, nous pourrions nous baser sur ObjectModel, mais des +ajouter doivent être fait: + +- pouvoir indiquer sur une Class une série d'import. +- pouvoir ajouter un message de licence +- pouvoir ajouter sur une méthode sont code source + +Ce dernier élément est le plus problèmatique, car il deviendrait pénible de +devoir instancier tout le code de la méthode en objet et on perdrait l'idée +de départ d'Eugene. + +Dans eugène il est déjà possible de modifier la transformation des tags de +génération '/\*{' et '}\*/' qui par défaut génère un 'ouput.write("...");' +Dans notre cas, il faudrait quelque chose comme 'method.addCode("...");' ou +encore plus simplement '"..." +' ce qui pourrait donner:: + + addImport(MonObject.class); + method.addCode( + /*{ int i = 0; + i = 1+2; + MonObject result = new MonObject(result); + return result; + }*/ + ); + +qui deviendrait:: + + addImport(MonObject.class); + method.addCode( + "int i = 0;\n" + + "i = 1+2;\n" + + "MonObject result = new MonObject(result);\n" + + "return result;\n" + ); + +On garde la facilte d'écriture du code à générer et on permet d'ajouter +facilement des imports dont on aurait besoin dans le coprs de la méthode. Aucun +traitement complexe du code de la méthode n'est donc nécessaire. + +Ce nouveau mode de génération ne serait qu'une moyen complémentaire de la +génération actuelle. + +Travail a faire: + +- ajout d'objet dans ObjectModel +- ajout de méthode de modification dans ObjectModel +- création d'un template de génération d'un POJO (génération direct d'un modèle) + +Il serait toute fois dommage d'ajouter tout un ensemnble de setter sur les +interfaces d'ObjectModel qui le rendrait moins clair pour les générateurs. +Il faut donc trouver une solution pour permettre l'instanciation et la +modification de classe implantant l'ObjectModel sans pour autant les ajouter +au interface. + +Une idée pourrait-être l'utilisation de Helper qui permette de créer et modifier +le modèle:: + + ObjectModelClass clazz = ObjectModelHelper.createClass(); + ObjectModelOperation method = ObjectModelHelper.addMethod( + clazz, "name", "typeRetour", "paramName", "typeParam"); + ObjectModelHelper.addImport("java.util.List"); + ObjectModelHelper.addCode(method, + /*{ blablabla + }*/ + + +Modèle d'EUGene (ObjectModel) +============================= + +Modele théorique ObjectModel + +.. image:: ObjectModel.png + +Interfaces Java pour le modèle mémoire (implémentées dans EUGene) + +.. image:: ObjectModel_Interfaces.png + + + + + + + Deleted: trunk/eugene/doc/1-javamodel/sources/eugen_java.zargo =================================================================== (Binary files differ) Copied: trunk/eugene/doc/1-javamodel/sources/eugen_java.zargo (from rev 754, branches/eugene-2.0/eugene/doc/1-javamodel/sources/eugen_java.zargo) =================================================================== (Binary files differ) Deleted: trunk/eugene/doc/1-javamodel/sources/eugene_objectmodel.zargo =================================================================== (Binary files differ) Copied: trunk/eugene/doc/1-javamodel/sources/eugene_objectmodel.zargo (from rev 754, branches/eugene-2.0/eugene/doc/1-javamodel/sources/eugene_objectmodel.zargo) =================================================================== (Binary files differ) Property changes on: trunk/eugene/doc/2-javabuilder ___________________________________________________________________ Added: svn:mergeinfo + /branches/1.0.1-Javabuilder/eugene/doc/2-javabuilder:641-651 /branches/eugene-2.0/eugene/doc/2-javabuilder:682-754 Deleted: trunk/eugene/doc/2-javabuilder/JavaBuilder.pdf =================================================================== (Binary files differ) Copied: trunk/eugene/doc/2-javabuilder/JavaBuilder.pdf (from rev 754, branches/eugene-2.0/eugene/doc/2-javabuilder/JavaBuilder.pdf) =================================================================== (Binary files differ) Deleted: trunk/eugene/doc/2-javabuilder/sources/JavaBuilder.png =================================================================== (Binary files differ) Copied: trunk/eugene/doc/2-javabuilder/sources/JavaBuilder.png (from rev 754, branches/eugene-2.0/eugene/doc/2-javabuilder/sources/JavaBuilder.png) =================================================================== (Binary files differ) Deleted: trunk/eugene/doc/2-javabuilder/sources/ObjectModel.png =================================================================== (Binary files differ) Copied: trunk/eugene/doc/2-javabuilder/sources/ObjectModel.png (from rev 754, branches/eugene-2.0/eugene/doc/2-javabuilder/sources/ObjectModel.png) =================================================================== (Binary files differ) Deleted: trunk/eugene/doc/2-javabuilder/sources/ObjectModelBuilderHelper.png =================================================================== (Binary files differ) Copied: trunk/eugene/doc/2-javabuilder/sources/ObjectModelBuilderHelper.png (from rev 754, branches/eugene-2.0/eugene/doc/2-javabuilder/sources/ObjectModelBuilderHelper.png) =================================================================== (Binary files differ) Deleted: trunk/eugene/doc/2-javabuilder/sources/description_javabuilder =================================================================== --- branches/eugene-2.0/eugene/doc/2-javabuilder/sources/description_javabuilder 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/doc/2-javabuilder/sources/description_javabuilder 2009-12-14 23:50:27 UTC (rev 755) @@ -1,148 +0,0 @@ -=========== -JavaBuilder -=========== - -:Date: 2009-10-21 -:Author: fdesbois (fdesbois@codelutin.com) - -.. contents:: Contenu - -Besoin/Contexte ---------------- - -A l'heure actuelle, les générations de code Java sont faites depuis EUGene en passant par des modeles UML (ArgoUML XMI 1.2 ou TopCased XMI 2.1). Il n'est -pas possible de générer simplement un fichier java sans passer par le modèle UML. De plus, les templates de génération peuvent être fastidieuse lors de la création de fichier Java pour tout ce qui concerne les imports (cf ToPIA-persistence). Il a été initié l'idée de créer un autre générateur sans intelligence permettant de simplement généré du code Java sans contraintes particulières et de manière simple et intuitive. - -Utilisation de l'ObjectModel existant -------------------------------------- - -Il n'est pas nécessaire de définir un nouveau modèle spécifique au langage Java, le modèle ObjectModel d'EUGene contient les éléments nécessaires à la construction de n'importe quel fichier java. Cependant les méthodes 'setter' ne sont pas accessibles à partir des interfaces (pour éviter les modifications du modèle en cours de génération). Ainsi il doit être mis en place une classe Helper permettant de remplir l'ObjectModel directement en Java. - -Ce Helper (ObjectModelBuilderHelper) permettra simplement de construire et de remplir les objets de l'ObjectModel (classes, interfaces, operations, ...) sans définir précisément le but de ce remplissage. Pour faire simple, il remplit simplement le modele sans se préoccuper de la future génération. Ainsi il reste complètement indépendant de la génération ou des futurs 'builders'. - -.. image:: ObjectModelBuilderHelper.png - -Mise en place du JavaBuilder ----------------------------- - -L'idée est de permettre aux utilisateurs voulant faire de la génération de ne pas être obliger de passer par les fichiers XML 'objectmodel'. Ainsi le développeur aura à sa charge de le faire manuellement. - -Sur le même principe que les Generator, le développeur devra créer ses propres Builder pour remplir le modèle et ainsi utiliser un Generator simple qui ne souci pas de conversion et génère tel quel l'ObjectModel (également à créer). Une classe abstraite JavaBuilder doit être ainsi créer pour permettre son utilisation dans le processus de génération (à l'instar des Generator). - -Le développeur va surcharger cette classe abstraite JavaBuilder pour remplir son modèle comme il le souhaite. - -Note - Il sera possible d'utiliser des templates pour faciliter la mise en place du corps des operations (modification de processor nécessaire) - -Le développeur devra ensuite configurer la génération (via maven bien entendu) pour ajouter ces builders dans le processus de génération. Ainsi les builders remplacent en quelque sorte la transformation du XMI en objectmodel. - -Principe des JavaFile ---------------------- - -Pour permettre l'utilisation du ImportsManager facilement, il sera nécessaire d'ajouter des méthodes dans le builder pour l'ajout des imports. En effet, l'objectmodel ne comprend pas la notion d'imports et les classes ne peuvent pas connaitre les imports nécessaire au futur fichier générer. Le développeur devra donc utiliser une autre classe intégrer au builder pour faciliter la gestion des imports : JavaFile. - -En principe le développeur ne se préoccupera pas de construire un objectModel pour le remanipuler à l'aide des templates de générations comme dans ToPIA, il souhaitera directement créer des fichiers qui seront après automatiquement générés, avec les imports ! - -Le JavaBuilder contient donc l'ObjectModel global (contenant toutes les classes, ...) et une liste de JavaFile, contenant chacun : - -- le classifier associé (classe, interface, enumeration, ...) qui sera l'élément principal du fichier : son nom et son package determinerons l'endroit ou sera généré le fichier et son futur nom. - -- l'imports manager contenant les imports propre au fichier - -Une idée plus simple sera peut-être d'utiliser une map contenant tous les importsManager des classifier contenu à la racine du modèle. Mais ne mélangeons pas tout (quoique), l'ObjectModel construit ne sera potentiellement pas censé servir à autre chose qu'une génération basique (donc avec un seul générateur stupide). - -Note - Le développeur devra nommé directement les classes comme il souhaite les générer, les méthodes getFilenameFrom... ne semble pas avoir leur place dans - ce type de génération. - -Autre idée pour les imports ---------------------------- - -Pour éviter l'utilisation de JavaFile, il serait intéressant d'ajouter directement dans l'ObjectModel racine une map contenant les importsManager lié à chaque fichier à générer :: - - Map<String, ImportsManager> importsManagers; // key = classifierQualifiedName, value = associated ImportsManager to the Classifier - -Libre ensuite au generator de prendre en compte ces manager ou non ! - -Note - Pour une meilleure prise en charge des enumerations, il semble nécessaire de les faires dériver d'un Classifier. A voir si cela peut poser des problèmes. - -Résumé ------- - -Le développeur pourra créer plusieurs 'builder' héritant du JavaBuilder pour créer son modèle et donc les fichiers qu'il souhaitent générer basiquement. - -.. image:: JavaBuilder.png - -Ex :: - - public class MyBuilder extends JavaBuilder { - - @Override - public void build() { - ObjectModelClass clazz = helper.createClass("Personne", "org.chorem.bonzoms"); - helper.addAttribute(clazz, "nom", "String"); - helper.addAttribute(clazz, "prenom", "String"); - - ObjectModelOperation setNom = helper.addOperation(clazz, "setNom", null, "String", "nom"); - helper.setOperationBody(setNom, "" /*{ - this.nom = nom; - }*/); - - ObjectModelOperation getNom = helper.addOperation(clazz, "getNom", "String"); - helper.setOperationBody(getNom, "" /*{ - return this.nom; - }*/); - - this.createJavaClassFile(clazz); // Creation du JavaFile et ajout à l'ObjectModel lié au Builder - } - - } - -A noter qu'il sera intéressant de créer plusieurs Builder abstrait pour simplifier l'utilisation pour des cas spécifiques, ex : BeanBuilder qui pourrait contenir des méthodes ajoutant automatiquement les setter/getter et les property listener. - -Pour aller plus loin --------------------- - -La question se pose : Où placer l'interpretation des builder (cad les builder.build() ) dans le processus de génération ? - -Tout dépend de comment sera manipulé l'ObjectModel résultant ! Il peut être imaginé également de passer en paramètre au JavaBuilder un ObjectModel existant (provenant d'un autre Builder ou de fichiers XML), qui se chargera de faire une manip comme créer les JavaFile, ajouter automatiquement les imports et permettre au développeur d'ajouter/modifier des éléments au modèle. Ceci dans un soucis de réutilisabilité des templates de génération existant. L'ObjectModel résultant du builder pourra être passé à un Generator existant (et pas celui stupide) pour ajouter des éléments. - -En principe il sera possible de : - -- créer un modèle UML/XMI qui sera généré en XML objectModel puis en ObjectModel mémoire -- utiliser un Builder pour rajouter des éléments à cet ObjectModel -- utiliser un Generator existant avec ses templates pour générer les classes finales (potentiels conflits ?) - -Le cas simple sera : - -- utiliser un Builder pour créer et remplir un ObjectModel -- utiliser le Generator stupide pour générer le contenu de l'ObjectModel - -A voir si d'autres cas de figures peuvent être intéressants. - -Travail à fournir ------------------ - -- Créer un ObjectModelBuilderHelper exhaustif des possibilités de remplissage de l'ObjectModel (y compris les éléments UML comme les stéréotypes, etc...) - ou peut être deux Helper : un simple spécifique au remplissage pour le générateur stupide et un plus complet pour le remplissage manuel de l'ObjectModel - -- Déterminer les limites du passage de l'ObjectModel de builder en builder en generator en builder en ce qu'on veut !!?! - -- Définir précisement les éléments à apporter au plugin maven pour prendre en compte les Builder - -- Créer une template de génération basique pour faire une simple génération Java - -- Fournir des Builder un peu plus intéressant pour faciliter leurs utilisations (BeanBuilder, DAOBuilder, ...) qui remplaceront a terme les templates - existantes - -Annexe ------- - -.. figure:: ObjectModel.png - - Metamodel ObjectModel - - - - Copied: trunk/eugene/doc/2-javabuilder/sources/description_javabuilder (from rev 754, branches/eugene-2.0/eugene/doc/2-javabuilder/sources/description_javabuilder) =================================================================== --- trunk/eugene/doc/2-javabuilder/sources/description_javabuilder (rev 0) +++ trunk/eugene/doc/2-javabuilder/sources/description_javabuilder 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,148 @@ +=========== +JavaBuilder +=========== + +:Date: 2009-10-21 +:Author: fdesbois (fdesbois@codelutin.com) + +.. contents:: Contenu + +Besoin/Contexte +--------------- + +A l'heure actuelle, les générations de code Java sont faites depuis EUGene en passant par des modeles UML (ArgoUML XMI 1.2 ou TopCased XMI 2.1). Il n'est +pas possible de générer simplement un fichier java sans passer par le modèle UML. De plus, les templates de génération peuvent être fastidieuse lors de la création de fichier Java pour tout ce qui concerne les imports (cf ToPIA-persistence). Il a été initié l'idée de créer un autre générateur sans intelligence permettant de simplement généré du code Java sans contraintes particulières et de manière simple et intuitive. + +Utilisation de l'ObjectModel existant +------------------------------------- + +Il n'est pas nécessaire de définir un nouveau modèle spécifique au langage Java, le modèle ObjectModel d'EUGene contient les éléments nécessaires à la construction de n'importe quel fichier java. Cependant les méthodes 'setter' ne sont pas accessibles à partir des interfaces (pour éviter les modifications du modèle en cours de génération). Ainsi il doit être mis en place une classe Helper permettant de remplir l'ObjectModel directement en Java. + +Ce Helper (ObjectModelBuilderHelper) permettra simplement de construire et de remplir les objets de l'ObjectModel (classes, interfaces, operations, ...) sans définir précisément le but de ce remplissage. Pour faire simple, il remplit simplement le modele sans se préoccuper de la future génération. Ainsi il reste complètement indépendant de la génération ou des futurs 'builders'. + +.. image:: ObjectModelBuilderHelper.png + +Mise en place du JavaBuilder +---------------------------- + +L'idée est de permettre aux utilisateurs voulant faire de la génération de ne pas être obliger de passer par les fichiers XML 'objectmodel'. Ainsi le développeur aura à sa charge de le faire manuellement. + +Sur le même principe que les Generator, le développeur devra créer ses propres Builder pour remplir le modèle et ainsi utiliser un Generator simple qui ne souci pas de conversion et génère tel quel l'ObjectModel (également à créer). Une classe abstraite JavaBuilder doit être ainsi créer pour permettre son utilisation dans le processus de génération (à l'instar des Generator). + +Le développeur va surcharger cette classe abstraite JavaBuilder pour remplir son modèle comme il le souhaite. + +Note + Il sera possible d'utiliser des templates pour faciliter la mise en place du corps des operations (modification de processor nécessaire) + +Le développeur devra ensuite configurer la génération (via maven bien entendu) pour ajouter ces builders dans le processus de génération. Ainsi les builders remplacent en quelque sorte la transformation du XMI en objectmodel. + +Principe des JavaFile +--------------------- + +Pour permettre l'utilisation du ImportsManager facilement, il sera nécessaire d'ajouter des méthodes dans le builder pour l'ajout des imports. En effet, l'objectmodel ne comprend pas la notion d'imports et les classes ne peuvent pas connaitre les imports nécessaire au futur fichier générer. Le développeur devra donc utiliser une autre classe intégrer au builder pour faciliter la gestion des imports : JavaFile. + +En principe le développeur ne se préoccupera pas de construire un objectModel pour le remanipuler à l'aide des templates de générations comme dans ToPIA, il souhaitera directement créer des fichiers qui seront après automatiquement générés, avec les imports ! + +Le JavaBuilder contient donc l'ObjectModel global (contenant toutes les classes, ...) et une liste de JavaFile, contenant chacun : + +- le classifier associé (classe, interface, enumeration, ...) qui sera l'élément principal du fichier : son nom et son package determinerons l'endroit ou sera généré le fichier et son futur nom. + +- l'imports manager contenant les imports propre au fichier + +Une idée plus simple sera peut-être d'utiliser une map contenant tous les importsManager des classifier contenu à la racine du modèle. Mais ne mélangeons pas tout (quoique), l'ObjectModel construit ne sera potentiellement pas censé servir à autre chose qu'une génération basique (donc avec un seul générateur stupide). + +Note + Le développeur devra nommé directement les classes comme il souhaite les générer, les méthodes getFilenameFrom... ne semble pas avoir leur place dans + ce type de génération. + +Autre idée pour les imports +--------------------------- + +Pour éviter l'utilisation de JavaFile, il serait intéressant d'ajouter directement dans l'ObjectModel racine une map contenant les importsManager lié à chaque fichier à générer :: + + Map<String, ImportsManager> importsManagers; // key = classifierQualifiedName, value = associated ImportsManager to the Classifier + +Libre ensuite au generator de prendre en compte ces manager ou non ! + +Note + Pour une meilleure prise en charge des enumerations, il semble nécessaire de les faires dériver d'un Classifier. A voir si cela peut poser des problèmes. + +Résumé +------ + +Le développeur pourra créer plusieurs 'builder' héritant du JavaBuilder pour créer son modèle et donc les fichiers qu'il souhaitent générer basiquement. + +.. image:: JavaBuilder.png + +Ex :: + + public class MyBuilder extends JavaBuilder { + + @Override + public void build() { + ObjectModelClass clazz = helper.createClass("Personne", "org.chorem.bonzoms"); + helper.addAttribute(clazz, "nom", "String"); + helper.addAttribute(clazz, "prenom", "String"); + + ObjectModelOperation setNom = helper.addOperation(clazz, "setNom", null, "String", "nom"); + helper.setOperationBody(setNom, "" /*{ + this.nom = nom; + }*/); + + ObjectModelOperation getNom = helper.addOperation(clazz, "getNom", "String"); + helper.setOperationBody(getNom, "" /*{ + return this.nom; + }*/); + + this.createJavaClassFile(clazz); // Creation du JavaFile et ajout à l'ObjectModel lié au Builder + } + + } + +A noter qu'il sera intéressant de créer plusieurs Builder abstrait pour simplifier l'utilisation pour des cas spécifiques, ex : BeanBuilder qui pourrait contenir des méthodes ajoutant automatiquement les setter/getter et les property listener. + +Pour aller plus loin +-------------------- + +La question se pose : Où placer l'interpretation des builder (cad les builder.build() ) dans le processus de génération ? + +Tout dépend de comment sera manipulé l'ObjectModel résultant ! Il peut être imaginé également de passer en paramètre au JavaBuilder un ObjectModel existant (provenant d'un autre Builder ou de fichiers XML), qui se chargera de faire une manip comme créer les JavaFile, ajouter automatiquement les imports et permettre au développeur d'ajouter/modifier des éléments au modèle. Ceci dans un soucis de réutilisabilité des templates de génération existant. L'ObjectModel résultant du builder pourra être passé à un Generator existant (et pas celui stupide) pour ajouter des éléments. + +En principe il sera possible de : + +- créer un modèle UML/XMI qui sera généré en XML objectModel puis en ObjectModel mémoire +- utiliser un Builder pour rajouter des éléments à cet ObjectModel +- utiliser un Generator existant avec ses templates pour générer les classes finales (potentiels conflits ?) + +Le cas simple sera : + +- utiliser un Builder pour créer et remplir un ObjectModel +- utiliser le Generator stupide pour générer le contenu de l'ObjectModel + +A voir si d'autres cas de figures peuvent être intéressants. + +Travail à fournir +----------------- + +- Créer un ObjectModelBuilderHelper exhaustif des possibilités de remplissage de l'ObjectModel (y compris les éléments UML comme les stéréotypes, etc...) + ou peut être deux Helper : un simple spécifique au remplissage pour le générateur stupide et un plus complet pour le remplissage manuel de l'ObjectModel + +- Déterminer les limites du passage de l'ObjectModel de builder en builder en generator en builder en ce qu'on veut !!?! + +- Définir précisement les éléments à apporter au plugin maven pour prendre en compte les Builder + +- Créer une template de génération basique pour faire une simple génération Java + +- Fournir des Builder un peu plus intéressant pour faciliter leurs utilisations (BeanBuilder, DAOBuilder, ...) qui remplaceront a terme les templates + existantes + +Annexe +------ + +.. figure:: ObjectModel.png + + Metamodel ObjectModel + + + + Deleted: trunk/eugene/doc/2-javabuilder/sources/eugene_javabuilder.zargo =================================================================== (Binary files differ) Copied: trunk/eugene/doc/2-javabuilder/sources/eugene_javabuilder.zargo (from rev 754, branches/eugene-2.0/eugene/doc/2-javabuilder/sources/eugene_javabuilder.zargo) =================================================================== (Binary files differ) Deleted: trunk/eugene/doc/2-javabuilder/sources.tar.gz =================================================================== (Binary files differ) Copied: trunk/eugene/doc/2-javabuilder/sources.tar.gz (from rev 754, branches/eugene-2.0/eugene/doc/2-javabuilder/sources.tar.gz) =================================================================== (Binary files differ) Deleted: trunk/eugene/doc/3-v2.0/eugene2.0.pdf =================================================================== (Binary files differ) Copied: trunk/eugene/doc/3-v2.0/eugene2.0.pdf (from rev 754, branches/eugene-2.0/eugene/doc/3-v2.0/eugene2.0.pdf) =================================================================== (Binary files differ) Property changes on: trunk/eugene/doc/3-v2.0/sources ___________________________________________________________________ Added: svn:ignore + EUGene-generate.vpp~1 Deleted: trunk/eugene/doc/3-v2.0/sources/DiagActivite_EUGene1.0.1_Generation.png =================================================================== (Binary files differ) Copied: trunk/eugene/doc/3-v2.0/sources/DiagActivite_EUGene1.0.1_Generation.png (from rev 754, branches/eugene-2.0/eugene/doc/3-v2.0/sources/DiagActivite_EUGene1.0.1_Generation.png) =================================================================== (Binary files differ) Deleted: trunk/eugene/doc/3-v2.0/sources/DiagActivite_EUGene2.0_Generation.png =================================================================== (Binary files differ) Copied: trunk/eugene/doc/3-v2.0/sources/DiagActivite_EUGene2.0_Generation.png (from rev 754, branches/eugene-2.0/eugene/doc/3-v2.0/sources/DiagActivite_EUGene2.0_Generation.png) =================================================================== (Binary files differ) Deleted: trunk/eugene/doc/3-v2.0/sources/DiagActivite_EUGene2.0_GenerationJava.png =================================================================== (Binary files differ) Copied: trunk/eugene/doc/3-v2.0/sources/DiagActivite_EUGene2.0_GenerationJava.png (from rev 754, branches/eugene-2.0/eugene/doc/3-v2.0/sources/DiagActivite_EUGene2.0_GenerationJava.png) =================================================================== (Binary files differ) Deleted: trunk/eugene/doc/3-v2.0/sources/DiagClasses_Generators.png =================================================================== (Binary files differ) Copied: trunk/eugene/doc/3-v2.0/sources/DiagClasses_Generators.png (from rev 754, branches/eugene-2.0/eugene/doc/3-v2.0/sources/DiagClasses_Generators.png) =================================================================== (Binary files differ) Deleted: trunk/eugene/doc/3-v2.0/sources/EUGene-generate.vpp =================================================================== (Binary files differ) Copied: trunk/eugene/doc/3-v2.0/sources/EUGene-generate.vpp (from rev 754, branches/eugene-2.0/eugene/doc/3-v2.0/sources/EUGene-generate.vpp) =================================================================== (Binary files differ) Deleted: trunk/eugene/doc/3-v2.0/sources/eugene2.0 =================================================================== --- branches/eugene-2.0/eugene/doc/3-v2.0/sources/eugene2.0 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/doc/3-v2.0/sources/eugene2.0 2009-12-14 23:50:27 UTC (rev 755) @@ -1,322 +0,0 @@ -========== -EUGene 2.0 -========== - -:Date: 2009-11-02 -:Author: fdesbois (fdesbois@codelutin.com) - -.. contents:: Contenu - -Avant-propos ------------- - -Ce document regroupe les nouvelles évolutions apportés à EUGene pour sa version 2.0. Certaines évolutions pourront potentiellement changés lors de leurs développements. Suivre la `RoadMap`_ . Le développement est en cours sur la branche `eugene-2.0`_ . - -.. _eugene-2.0: http://nuiton.org/repositories/browse/eugene/branches/eugene-2.0 - -.. _RoadMap: http://nuiton.org/versions/show/38 - -Contexte de départ ------------------- - -L'évolution majeure d'EUGene de la 1.0.1 à la 2.0.0 concerne une simplification de la génération de fichiers Java. Pour ce faire, plusieurs évolutions sont à prendre en compte : - -- Modification du processus de génération (modification du point de lecture dans le processus) -- Permettre une transformation Model To Model -- Création d'une template de génération simple et sans intelligence (sans interprétation du modèle) pour génération uniquement Java - -La version 2.0 modifie donc le processus sur trois niveaux différents : Lecture, Transformation et Génération. - -Contraintes de non régression ------------------------------ - -- La config du plugin maven ne doit quasimment pas changer : Les transformations seront considérés comme des templates de générations -- L'ObjectModel ne doit pas prendre en compte des spécificités Java (pas d'importsManager, pas d'attributs "synchronized", ...), le comportement doit rester identique (et indépendant du langage). -- Les templates de génération existantes doivent fonctionner toujours de la même manière : même résultat à la génération - - -Modification du processus de génération ---------------------------------------- - -Version 1.0.1 -~~~~~~~~~~~~~ - -Dans la version 1.0.1, les possibilités de fichiers en entrée du processus sont assez limités. Il est possible d'utiliser différents goal du maven-eugene-plugin pour pouvoir avoir en entrée -d'autres fichiers que ceux spécifiques à un des modèles supportés par EUGene (StateModel, ObjectModel, ...). Les goals existants sont : zargo2xmi, xmi2objectmodel et xmi2statemodel. Sur le diagramme ci-dessous est représenté une génération à partir de fichiers **.zargo** pour obtenir des fichiers **.java**. En beige sont représentés les points d'extension possible dans le processus de génération. Ces derniers sont très limités : - -- **ObjectModel** : Modele représentant les données extraites à partir des fichiers sources (le modèle étend la classe << *Model* >>) - -- **Generator** : Template de génération qui interprète le modèle pour effectuer une génération de fichiers en sorties, ici java. (la template étend la classe << *Generator* >>) - - -.. figure:: DiagActivite_EUGene1.0.1_Generation.png - - Processus de génération v1.0.1 - -Version 2.0 -~~~~~~~~~~~ - -Deux nouveautés : - -- Possibilité d'étendre le point de lecture en début de processus : Cela permettra ainsi d'avoir n'importe quel type de fichier en entrée, du moment qu'un Reader existe pour les interpréter et rendre un Model. - -- Possibilité de transformer un modèle pour spécifier un langage (ex Java) ou tout autre transformation : Un Transformer est alors considéré comme un Generator pour simplifier le processus. - -Ces deux nouveautés forment les nouveaux points d'extension du processus, à noter également la possibilité d'inclure dans le processus la transformation de n'importe quel modèle en un autre modèle. - -.. figure:: DiagActivite_EUGene2.0_Generation.png - - Processus de génération v2.0 - -Génération spécifique à Java -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Voici le cas spécifique à la génération Java. Nous voulons en entrée lire des fichiers Objectmodel (utilisation d'un ObjectModelReader), puis transformer ce modèle complet (avec notions UML) en un nouveau ObjectModel simple uniquement dédié à la génération Java (utilisation d'un ObjectModelTransformerToJava associé à la template JavaGenerator). - -.. figure:: DiagActivite_EUGene2.0_GenerationJava.png - - Processus de génération v2.0 pour Java - -Le développeur se chargera d'intepréter le modèle d'entrée (lu par l'ObjectModelReader) pour le transformer en ObjectModel Java : extension de l'ObjectModelTransformerToJava. Ce transformer sera une sorte d'équivalent à un template de génération qui étend Generator. - -Liste des Evolutions --------------------- - -1 - `Evol #112`_ : Ajout d'un point d'entrée dans le processus de génération : ModelReader - -2 - `Evol #114`_ : Ajout d'extensions à l'ObjectModel - -3 - `Evol #115`_ : Remplissage de l'ObjectModel directement a partir du code : Builder - -4 - `Evol #113`_ : Possibilité de faire du Model To Model : Transformer - -5 - `Evol #116`_ : Modification hiérarchie des Generator pour prise en charge des Transformer - -6 - `Evol #117`_ : Création d'une template de génération sans intelligence pour Java : JavaGenerator - -7 - `Evol #107`_ : Remplacer les attributs (static, abstract, visibility, ...) par une liste de "modifier" - - -.. _Evol #112: http://nuiton.org/issues/show/112 -.. _Evol #114: http://nuiton.org/issues/show/114 -.. _Evol #113: http://nuiton.org/issues/show/113 -.. _Evol #115: http://nuiton.org/issues/show/115 -.. _Evol #116: http://nuiton.org/issues/show/116 -.. _Evol #117: http://nuiton.org/issues/show/117 -.. _Evol #107: http://nuiton.org/issues/show/107 - -Evolution #112 : ModelReader ----------------------------- - -Besoin/Contexte -~~~~~~~~~~~~~~~ - -Les types de fichier en entrée du processus de génération sont limités : .xmi, .objectmodel, .statemodel, .zargo ou .uml sont les différentes possibilités. Il serait intéressant de pouvoir modifier le point d'entrée pour pouvoir par exemple gérer un autre type de fichier (un autre fichier xml que du objectmodel par exemple). De plus cela permettra de simplifier les goal maven en créant des Reader en entrée pour chaque type de fichier supporté (zargo, xmi, uml, ...). - -Mise en place -~~~~~~~~~~~~~ - -Extraction de la lecture des fichiers d'entrée depuis les Generator. Un Reader est créé pour prendre en entrée une liste de fichiers et obtenir en sortie un Model qui sera par la suite interprété par un Generator. Un Reader par type de model supporté dans EUGene sera créé : ObjectModelReader et StateModelReader. - -Extension -~~~~~~~~~ - -Il est possible d'étendre un Reader pour pouvoir gérer soit un autre format d'entrée de fichiers, soit un autre modèle de sortie (ou potentiellement les deux). - -- extension d'ObjectModelReader pour gérer d'autres fichiers d'entrée (xmi, zargo, uml, ...) -- extension du Reader<M extends Model> pour gérer un autre modèle de sortie. - - -Evolution #114 : Extensions ObjectModel ---------------------------------------- - -Besoin/Contexte -~~~~~~~~~~~~~~~ - -La génération Java nécessite une manipulation simple pour l'ajout des imports qui seront rajoutés en début de fichier. Il existe dans la 1.0.1, la classe ImportsManager qui remplit cette tâche : -Elle permet de lui ajouter différents imports à effectuer sous forme de String ou de Class. Ces imports sont ensuite récupérer suivant un nom de package. -Pour simplifier la génération Java, il suffirait d'ajouter les ImportsManager (un par classifier) directement dans l'ObjectModel racine. Cependant, pour ne pas ajouter de notion spécifique à Java, -cet ajout sera considéré comme une extension à l'ObjectModel. - -Mise en place -~~~~~~~~~~~~~ - -Une *Map<String, Object> extensions* est ajoutée dans l'ObjectModel racine. La méthode -getExtension(String reference, Class extensionClass) permettra de récupérer l'extension souhaité (avec son type) et sera disponible dans l'interface ObjectModel. Cette méthode créera automatiquement l'extension si elle n'est pas encore définie dans l'ObjectModel. - -Cas des ImportsManager -~~~~~~~~~~~~~~~~~~~~~~ - -Pour les ImportsManager, il est nécessaire d'avoir une Map<String, ImportsManager>, la clé étant le nom complet (full qualified name) d'un classifier, et la valeur l'ImportsManager associé à ce classifier. -Pour simplifier l'utilisation des ImportsManager, une classe ImportsManagerExtension est créé comprenant la map des managers et des méthodes accesseurs : - -- **ImportsManager getManager(ObjectModelClassifier classifier)** : Permet de récupérer (ou créer s'il n'existe pas) l'ImportsManager lié à un classifier. Méthode utilisée pour les transformations du modèle (ObjectModelTransformer, JavaBuilder) - -- **List<String> getImports(ObjectModelClassifier classifier)** : Permet de récupérer tous les imports liés à un classifier. Méthode utilisée pour la génération (ObjectModelGenerator, JavaGenerator) - -L'ImportsManagerExtension forme donc l'extension spécifique aux imports ajouté à l'ObjectModel:: - - // Utilisation dans Transformer ou Builder - ImportsManagerExtension managers = model.getExtension(ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); - ImportsManager maClassManager = managers.getImportsManager(maClass); - maClassManager.addImport("java.util.List"); - - // Utilisation dans Generator - ImportsManagerExtension managers = model.getExtension(ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); - managers.getImports(maClass); - - -Extension -~~~~~~~~~ - -Il est désormais possible d'utiliser les extensions comme moyen d'enrichir l'ObjectModel lors des transformations et des générations. - -Evolution #115 : Builder ------------------------- - -Besoin/Contexte -~~~~~~~~~~~~~~~ - -Il est intéressant de pouvoir, dans certains cas, remplir un ObjectModel vide. L'utilisation se fait directement à partir du code d'une autre application qui souhaite utiliser l'ObjectModel ou à partir d'un Reader pour remplir l'ObjectModel. Cependant la version 1.0.1 ne permet pas de faire cela car les interfaces des classes de l'ObjectModel ne comprennent pas de setter. Il est donc nécessaire de créer une nouvelle classe permettant de remplir un ObjectModel vide avec potentiellement une finesse d'interprétation spécifique à Java (gestion des imports, doublon sur les méthodes, ...). - -Mise en place -~~~~~~~~~~~~~ - -Création d'une classe ObjectModelBuilder qui initialise à l'instanciation un ObjectModel vide (A noter que le nom du modèle est indispensable à la génération). Ce builder permet de remplir complètement l'ObjectModel (stéréotypes, multiplicités, ...) - - -Création d'une classe JavaBuilder qui initialise à l'instanciation un ObjectModel vide. Le JavaBuilder propose un panel de méthodes permettant : - -- Ajout de classes/interfaces au modèle -- Ajout d'une superclass -- Ajout d'interface à une classe -- Ajout de méthodes à une classe/interface -- Ajout du corps des méthodes -- Ajout de paramètres à une méthode -- Ajout d'exception à une méthode -- Ajout d'attributs à une classe/interface -- ... - -Ces méthodes comprendront une gestion automatique des imports (types des paramètres/attributs, retour des méthodes, exceptions, ...). - -Evolution #113 : Transformer ----------------------------- - -Besoin/Contexte -~~~~~~~~~~~~~~~ - -Dans le cas d'une génération java, l'écriture des templates de génération actuelles (v1.0.1) peut être fastidieuse et difficile à maintenir. Il est donc préférable d'utiliser une tranformation du modèle ObjectModel source (provenant d'un diagramme UML) en un ObjectModel représentant basiquement le Java qui sera généré. Ce qui implique pour ce cas, la suppression des éléments spécifiques à UML (mutliplicités, stéréotypes, ...) pour un ObjectModel épuré spécifique à une génération Java. - -Mise en place -~~~~~~~~~~~~~ - -Un Transformer est considéré comme un *Generator* pour être intégré plus facilement dans le processus de génération (templates). Cependant il possède un modèle en entrée et un en sortie, donc **aucune sortie fichiers**. Pour ce faire, il est obligatoirement associé à un *Generator*. Ainsi un *Transformer* prendra en entrée un modèle, le transformera en un nouveau (potentiellement de type différent) et utilisera le generator de sortie pour générer ce nouveau modèle. Il est donc nécessaire d'instancier un *Transformer* en lui fournissant son *Generator* de sortie compatible avec le modèle de sortie. - -Conversion existant -~~~~~~~~~~~~~~~~~~~ - -Pour une génération Java, il est nécessaire d'étendre l'ObjectModelTransformerToJava qui utilise un JavaBuilder pour la construction d'un ObjectModel spécifique à Java. - -Ex : BeanGenerator permet la génération de bean (stéréotype <<bean>>) en leurs ajoutants les getter/setter adéquat et des listeners. Cette template de génération existe dans ToPIA. Elle sera remplacée par un BeanTransformer qui étend ObjectModelTransformerToJava. Au lieu d'écrire la template du fichier généré, le transformer remplira un nouveau modèle avec les classes, opérations, attributs à générer. - -Note - Les noms complets des éléments ajoutés au modèle devront être impérativement utilisés pour la gestion des imports. - (ex : java.io.Serializable, org.chorem.bonzoms.Role, java.util.List<java.lang.String>, ...) - -Extension -~~~~~~~~~ - -Les Transformer sont étendables pour transformer un modèle en un autre comme on le souhaite. Plusieurs transformer sont disponibles dans EUGene : - -- abstract Transformer<Input extends Model, Output extends Model> -- abstract ObjectModelTransformer<Output extends Model> extends Transformer<ObjectModel, Output> -- abstract ObjectModelTransformerToJava extends ObjectModelTransformer<ObjectModel> - -Il est nécessaire d'étendre l'un de ces Transformer pour créer une transformation spécifique à son modèle métier. - -Evolution #116 : Generator --------------------------- - -Besoin/Contexte -~~~~~~~~~~~~~~~ - -Des modifications sont nécessaires sur les Generator racines (abstraits) pour permettre les autres évolutions. Les générateurs de la version 1.0.1, ne permettent pas la modification du modèle d'entrée. De plus les générateurs sont spécifiques à un type de fichier d'entrée (.objectmodel pour ObjectModelGenerator, .statemodel pour StateModelGenerator). - -Mise en place -~~~~~~~~~~~~~ - -Extraction de la lecture en entrée des générateurs. Les générateurs ne prennent désormais qu'un modèle en entrée (qui peut potentiellement provenir de plusieurs fichiers sources à la charge du Reader). Le type du modèle est également connu à l'instanciation : *ObjectModelGenerator extends AbstractGenerator<ObjectModel>*. Un générateur est donc obligatoirement associé à un Model d'entrée. Voir diagramme en annexe pour plus de précision sur les modifications d'héritage. - -Extension -~~~~~~~~~ - -Un Generator est associé à un modèle. La création d'un nouveau modèle implique la création d'un Generator abstrait associé. - -- super parent : Generator<M extends Model> -- classe abstraite commune aux templates actuelles : AbstractGenerator<M extends Model> extends Generator<M> -- cas du ObjectModel en entrée : ObjectModelGenerator extends AbstractGenerator<ObjectModel> -- idem pour un autre modèle MonModel : MonModelGenerator extends AbstractGenerator<MonModel> - - -Evolution #117 : JavaGenerator ------------------------------- - -Besoin/Contexte -~~~~~~~~~~~~~~~ - -Les templates de génération (Generator) doivent être écrites pour générer des fichiers. Il est possible grâce à l'ajout de Transformer de pouvoir désormais remplir un modèle spécifique au langage Java (utilisation d'ObjectModel). Cependant il n'existe aucune template de base permettant d'interpréter un ObjectModel simplement sans prise en compte de spécificités du au métier de l'application (entités, daos, ...) qui seront interprétés dans les Transformer. - -Mise en place -~~~~~~~~~~~~~ - -Création d'une template JavaGenerator toute simple qui parcourt l'ObjectModel, génère les classes, méthodes interfaces sans prise en compte des spécificités UML (stéréotypes, multiplicités, ...). - -Note - JavaGenerator extends ObjectModelGenerator - - -Evolution #107 : ObjectModelModifier ------------------------------------- - -Besoin/Contexte -~~~~~~~~~~~~~~~ - -En java, les modifier concernent certains paramètres pouvant être mis sur les attributs, méthodes comme "static", "abstract", "public", ... Dans l'ObjectModel de la version 1.0.1, ces modifier sont représentés par des attributs ce qui implique un attribut par modifier : static, visibility, ... Pour simplifier la génération et la manipulation de ces modifiers, il serait intéressant d'avoir simplement une liste d'ObjectModelModifier. De plus cela permettra d'ajouter plus facilement certains modifier comme "synchronized". Cela permettra également de simplifier l'écriture de certaines méthodes des builder :: - - public ObjectModelOperation addOperation(String operationName, String returnType, - ObjectModelModifier... modifiers) { - ... - } - -exemple :: - - ObjectModelOperation setter = addOperation("setName", "void", ObjectModelModifier.PUBLIC); - // correspond a : public void setName(...) - - -Contraintes -~~~~~~~~~~~ - -- Les méthodes isStatic, isAbstract, etc... seront maintenus pour connaitre précisemment les modifier associés à la classe, méthode, attribut ou autre. -- Les nouveaux modifiers auront un nom générique indépendant du langage. - -Mise en place -~~~~~~~~~~~~~ - -Création d'une enumération ObjectModelModifier comprenant les différents modifiers existants (STATIC, ABSTRACT, PUBLIC, PRIVATE, ...). Il sera possible de récupérer la valeur chaîné (String) de chaque ObjectModelModifier possible. - -Conversion existant -~~~~~~~~~~~~~~~~~~~ - -Les attributs correspondant aux modifiers seront supprimés pour mettre en place une List<ObjectModelModifier> sur les objets qui le nécessitent (classifier, classe, interface, attribute, operation, ...). - - -Annexe : Hiérarchie des Generator/Transformer ---------------------------------------------- - -.. figure:: DiagClasses_Generators.png - - Hiérarchie des Generator/Transformer - - - Copied: trunk/eugene/doc/3-v2.0/sources/eugene2.0 (from rev 754, branches/eugene-2.0/eugene/doc/3-v2.0/sources/eugene2.0) =================================================================== --- trunk/eugene/doc/3-v2.0/sources/eugene2.0 (rev 0) +++ trunk/eugene/doc/3-v2.0/sources/eugene2.0 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,322 @@ +========== +EUGene 2.0 +========== + +:Date: 2009-11-02 +:Author: fdesbois (fdesbois@codelutin.com) + +.. contents:: Contenu + +Avant-propos +------------ + +Ce document regroupe les nouvelles évolutions apportés à EUGene pour sa version 2.0. Certaines évolutions pourront potentiellement changés lors de leurs développements. Suivre la `RoadMap`_ . Le développement est en cours sur la branche `eugene-2.0`_ . + +.. _eugene-2.0: http://nuiton.org/repositories/browse/eugene/branches/eugene-2.0 + +.. _RoadMap: http://nuiton.org/versions/show/38 + +Contexte de départ +------------------ + +L'évolution majeure d'EUGene de la 1.0.1 à la 2.0.0 concerne une simplification de la génération de fichiers Java. Pour ce faire, plusieurs évolutions sont à prendre en compte : + +- Modification du processus de génération (modification du point de lecture dans le processus) +- Permettre une transformation Model To Model +- Création d'une template de génération simple et sans intelligence (sans interprétation du modèle) pour génération uniquement Java + +La version 2.0 modifie donc le processus sur trois niveaux différents : Lecture, Transformation et Génération. + +Contraintes de non régression +----------------------------- + +- La config du plugin maven ne doit quasimment pas changer : Les transformations seront considérés comme des templates de générations +- L'ObjectModel ne doit pas prendre en compte des spécificités Java (pas d'importsManager, pas d'attributs "synchronized", ...), le comportement doit rester identique (et indépendant du langage). +- Les templates de génération existantes doivent fonctionner toujours de la même manière : même résultat à la génération + + +Modification du processus de génération +--------------------------------------- + +Version 1.0.1 +~~~~~~~~~~~~~ + +Dans la version 1.0.1, les possibilités de fichiers en entrée du processus sont assez limités. Il est possible d'utiliser différents goal du maven-eugene-plugin pour pouvoir avoir en entrée +d'autres fichiers que ceux spécifiques à un des modèles supportés par EUGene (StateModel, ObjectModel, ...). Les goals existants sont : zargo2xmi, xmi2objectmodel et xmi2statemodel. Sur le diagramme ci-dessous est représenté une génération à partir de fichiers **.zargo** pour obtenir des fichiers **.java**. En beige sont représentés les points d'extension possible dans le processus de génération. Ces derniers sont très limités : + +- **ObjectModel** : Modele représentant les données extraites à partir des fichiers sources (le modèle étend la classe << *Model* >>) + +- **Generator** : Template de génération qui interprète le modèle pour effectuer une génération de fichiers en sorties, ici java. (la template étend la classe << *Generator* >>) + + +.. figure:: DiagActivite_EUGene1.0.1_Generation.png + + Processus de génération v1.0.1 + +Version 2.0 +~~~~~~~~~~~ + +Deux nouveautés : + +- Possibilité d'étendre le point de lecture en début de processus : Cela permettra ainsi d'avoir n'importe quel type de fichier en entrée, du moment qu'un Reader existe pour les interpréter et rendre un Model. + +- Possibilité de transformer un modèle pour spécifier un langage (ex Java) ou tout autre transformation : Un Transformer est alors considéré comme un Generator pour simplifier le processus. + +Ces deux nouveautés forment les nouveaux points d'extension du processus, à noter également la possibilité d'inclure dans le processus la transformation de n'importe quel modèle en un autre modèle. + +.. figure:: DiagActivite_EUGene2.0_Generation.png + + Processus de génération v2.0 + +Génération spécifique à Java +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Voici le cas spécifique à la génération Java. Nous voulons en entrée lire des fichiers Objectmodel (utilisation d'un ObjectModelReader), puis transformer ce modèle complet (avec notions UML) en un nouveau ObjectModel simple uniquement dédié à la génération Java (utilisation d'un ObjectModelTransformerToJava associé à la template JavaGenerator). + +.. figure:: DiagActivite_EUGene2.0_GenerationJava.png + + Processus de génération v2.0 pour Java + +Le développeur se chargera d'intepréter le modèle d'entrée (lu par l'ObjectModelReader) pour le transformer en ObjectModel Java : extension de l'ObjectModelTransformerToJava. Ce transformer sera une sorte d'équivalent à un template de génération qui étend Generator. + +Liste des Evolutions +-------------------- + +1 - `Evol #112`_ : Ajout d'un point d'entrée dans le processus de génération : ModelReader + +2 - `Evol #114`_ : Ajout d'extensions à l'ObjectModel + +3 - `Evol #115`_ : Remplissage de l'ObjectModel directement a partir du code : Builder + +4 - `Evol #113`_ : Possibilité de faire du Model To Model : Transformer + +5 - `Evol #116`_ : Modification hiérarchie des Generator pour prise en charge des Transformer + +6 - `Evol #117`_ : Création d'une template de génération sans intelligence pour Java : JavaGenerator + +7 - `Evol #107`_ : Remplacer les attributs (static, abstract, visibility, ...) par une liste de "modifier" + + +.. _Evol #112: http://nuiton.org/issues/show/112 +.. _Evol #114: http://nuiton.org/issues/show/114 +.. _Evol #113: http://nuiton.org/issues/show/113 +.. _Evol #115: http://nuiton.org/issues/show/115 +.. _Evol #116: http://nuiton.org/issues/show/116 +.. _Evol #117: http://nuiton.org/issues/show/117 +.. _Evol #107: http://nuiton.org/issues/show/107 + +Evolution #112 : ModelReader +---------------------------- + +Besoin/Contexte +~~~~~~~~~~~~~~~ + +Les types de fichier en entrée du processus de génération sont limités : .xmi, .objectmodel, .statemodel, .zargo ou .uml sont les différentes possibilités. Il serait intéressant de pouvoir modifier le point d'entrée pour pouvoir par exemple gérer un autre type de fichier (un autre fichier xml que du objectmodel par exemple). De plus cela permettra de simplifier les goal maven en créant des Reader en entrée pour chaque type de fichier supporté (zargo, xmi, uml, ...). + +Mise en place +~~~~~~~~~~~~~ + +Extraction de la lecture des fichiers d'entrée depuis les Generator. Un Reader est créé pour prendre en entrée une liste de fichiers et obtenir en sortie un Model qui sera par la suite interprété par un Generator. Un Reader par type de model supporté dans EUGene sera créé : ObjectModelReader et StateModelReader. + +Extension +~~~~~~~~~ + +Il est possible d'étendre un Reader pour pouvoir gérer soit un autre format d'entrée de fichiers, soit un autre modèle de sortie (ou potentiellement les deux). + +- extension d'ObjectModelReader pour gérer d'autres fichiers d'entrée (xmi, zargo, uml, ...) +- extension du Reader<M extends Model> pour gérer un autre modèle de sortie. + + +Evolution #114 : Extensions ObjectModel +--------------------------------------- + +Besoin/Contexte +~~~~~~~~~~~~~~~ + +La génération Java nécessite une manipulation simple pour l'ajout des imports qui seront rajoutés en début de fichier. Il existe dans la 1.0.1, la classe ImportsManager qui remplit cette tâche : +Elle permet de lui ajouter différents imports à effectuer sous forme de String ou de Class. Ces imports sont ensuite récupérer suivant un nom de package. +Pour simplifier la génération Java, il suffirait d'ajouter les ImportsManager (un par classifier) directement dans l'ObjectModel racine. Cependant, pour ne pas ajouter de notion spécifique à Java, +cet ajout sera considéré comme une extension à l'ObjectModel. + +Mise en place +~~~~~~~~~~~~~ + +Une *Map<String, Object> extensions* est ajoutée dans l'ObjectModel racine. La méthode +getExtension(String reference, Class extensionClass) permettra de récupérer l'extension souhaité (avec son type) et sera disponible dans l'interface ObjectModel. Cette méthode créera automatiquement l'extension si elle n'est pas encore définie dans l'ObjectModel. + +Cas des ImportsManager +~~~~~~~~~~~~~~~~~~~~~~ + +Pour les ImportsManager, il est nécessaire d'avoir une Map<String, ImportsManager>, la clé étant le nom complet (full qualified name) d'un classifier, et la valeur l'ImportsManager associé à ce classifier. +Pour simplifier l'utilisation des ImportsManager, une classe ImportsManagerExtension est créé comprenant la map des managers et des méthodes accesseurs : + +- **ImportsManager getManager(ObjectModelClassifier classifier)** : Permet de récupérer (ou créer s'il n'existe pas) l'ImportsManager lié à un classifier. Méthode utilisée pour les transformations du modèle (ObjectModelTransformer, JavaBuilder) + +- **List<String> getImports(ObjectModelClassifier classifier)** : Permet de récupérer tous les imports liés à un classifier. Méthode utilisée pour la génération (ObjectModelGenerator, JavaGenerator) + +L'ImportsManagerExtension forme donc l'extension spécifique aux imports ajouté à l'ObjectModel:: + + // Utilisation dans Transformer ou Builder + ImportsManagerExtension managers = model.getExtension(ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); + ImportsManager maClassManager = managers.getImportsManager(maClass); + maClassManager.addImport("java.util.List"); + + // Utilisation dans Generator + ImportsManagerExtension managers = model.getExtension(ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); + managers.getImports(maClass); + + +Extension +~~~~~~~~~ + +Il est désormais possible d'utiliser les extensions comme moyen d'enrichir l'ObjectModel lors des transformations et des générations. + +Evolution #115 : Builder +------------------------ + +Besoin/Contexte +~~~~~~~~~~~~~~~ + +Il est intéressant de pouvoir, dans certains cas, remplir un ObjectModel vide. L'utilisation se fait directement à partir du code d'une autre application qui souhaite utiliser l'ObjectModel ou à partir d'un Reader pour remplir l'ObjectModel. Cependant la version 1.0.1 ne permet pas de faire cela car les interfaces des classes de l'ObjectModel ne comprennent pas de setter. Il est donc nécessaire de créer une nouvelle classe permettant de remplir un ObjectModel vide avec potentiellement une finesse d'interprétation spécifique à Java (gestion des imports, doublon sur les méthodes, ...). + +Mise en place +~~~~~~~~~~~~~ + +Création d'une classe ObjectModelBuilder qui initialise à l'instanciation un ObjectModel vide (A noter que le nom du modèle est indispensable à la génération). Ce builder permet de remplir complètement l'ObjectModel (stéréotypes, multiplicités, ...) + + +Création d'une classe JavaBuilder qui initialise à l'instanciation un ObjectModel vide. Le JavaBuilder propose un panel de méthodes permettant : + +- Ajout de classes/interfaces au modèle +- Ajout d'une superclass +- Ajout d'interface à une classe +- Ajout de méthodes à une classe/interface +- Ajout du corps des méthodes +- Ajout de paramètres à une méthode +- Ajout d'exception à une méthode +- Ajout d'attributs à une classe/interface +- ... + +Ces méthodes comprendront une gestion automatique des imports (types des paramètres/attributs, retour des méthodes, exceptions, ...). + +Evolution #113 : Transformer +---------------------------- + +Besoin/Contexte +~~~~~~~~~~~~~~~ + +Dans le cas d'une génération java, l'écriture des templates de génération actuelles (v1.0.1) peut être fastidieuse et difficile à maintenir. Il est donc préférable d'utiliser une tranformation du modèle ObjectModel source (provenant d'un diagramme UML) en un ObjectModel représentant basiquement le Java qui sera généré. Ce qui implique pour ce cas, la suppression des éléments spécifiques à UML (mutliplicités, stéréotypes, ...) pour un ObjectModel épuré spécifique à une génération Java. + +Mise en place +~~~~~~~~~~~~~ + +Un Transformer est considéré comme un *Generator* pour être intégré plus facilement dans le processus de génération (templates). Cependant il possède un modèle en entrée et un en sortie, donc **aucune sortie fichiers**. Pour ce faire, il est obligatoirement associé à un *Generator*. Ainsi un *Transformer* prendra en entrée un modèle, le transformera en un nouveau (potentiellement de type différent) et utilisera le generator de sortie pour générer ce nouveau modèle. Il est donc nécessaire d'instancier un *Transformer* en lui fournissant son *Generator* de sortie compatible avec le modèle de sortie. + +Conversion existant +~~~~~~~~~~~~~~~~~~~ + +Pour une génération Java, il est nécessaire d'étendre l'ObjectModelTransformerToJava qui utilise un JavaBuilder pour la construction d'un ObjectModel spécifique à Java. + +Ex : BeanGenerator permet la génération de bean (stéréotype <<bean>>) en leurs ajoutants les getter/setter adéquat et des listeners. Cette template de génération existe dans ToPIA. Elle sera remplacée par un BeanTransformer qui étend ObjectModelTransformerToJava. Au lieu d'écrire la template du fichier généré, le transformer remplira un nouveau modèle avec les classes, opérations, attributs à générer. + +Note + Les noms complets des éléments ajoutés au modèle devront être impérativement utilisés pour la gestion des imports. + (ex : java.io.Serializable, org.chorem.bonzoms.Role, java.util.List<java.lang.String>, ...) + +Extension +~~~~~~~~~ + +Les Transformer sont étendables pour transformer un modèle en un autre comme on le souhaite. Plusieurs transformer sont disponibles dans EUGene : + +- abstract Transformer<Input extends Model, Output extends Model> +- abstract ObjectModelTransformer<Output extends Model> extends Transformer<ObjectModel, Output> +- abstract ObjectModelTransformerToJava extends ObjectModelTransformer<ObjectModel> + +Il est nécessaire d'étendre l'un de ces Transformer pour créer une transformation spécifique à son modèle métier. + +Evolution #116 : Generator +-------------------------- + +Besoin/Contexte +~~~~~~~~~~~~~~~ + +Des modifications sont nécessaires sur les Generator racines (abstraits) pour permettre les autres évolutions. Les générateurs de la version 1.0.1, ne permettent pas la modification du modèle d'entrée. De plus les générateurs sont spécifiques à un type de fichier d'entrée (.objectmodel pour ObjectModelGenerator, .statemodel pour StateModelGenerator). + +Mise en place +~~~~~~~~~~~~~ + +Extraction de la lecture en entrée des générateurs. Les générateurs ne prennent désormais qu'un modèle en entrée (qui peut potentiellement provenir de plusieurs fichiers sources à la charge du Reader). Le type du modèle est également connu à l'instanciation : *ObjectModelGenerator extends AbstractGenerator<ObjectModel>*. Un générateur est donc obligatoirement associé à un Model d'entrée. Voir diagramme en annexe pour plus de précision sur les modifications d'héritage. + +Extension +~~~~~~~~~ + +Un Generator est associé à un modèle. La création d'un nouveau modèle implique la création d'un Generator abstrait associé. + +- super parent : Generator<M extends Model> +- classe abstraite commune aux templates actuelles : AbstractGenerator<M extends Model> extends Generator<M> +- cas du ObjectModel en entrée : ObjectModelGenerator extends AbstractGenerator<ObjectModel> +- idem pour un autre modèle MonModel : MonModelGenerator extends AbstractGenerator<MonModel> + + +Evolution #117 : JavaGenerator +------------------------------ + +Besoin/Contexte +~~~~~~~~~~~~~~~ + +Les templates de génération (Generator) doivent être écrites pour générer des fichiers. Il est possible grâce à l'ajout de Transformer de pouvoir désormais remplir un modèle spécifique au langage Java (utilisation d'ObjectModel). Cependant il n'existe aucune template de base permettant d'interpréter un ObjectModel simplement sans prise en compte de spécificités du au métier de l'application (entités, daos, ...) qui seront interprétés dans les Transformer. + +Mise en place +~~~~~~~~~~~~~ + +Création d'une template JavaGenerator toute simple qui parcourt l'ObjectModel, génère les classes, méthodes interfaces sans prise en compte des spécificités UML (stéréotypes, multiplicités, ...). + +Note + JavaGenerator extends ObjectModelGenerator + + +Evolution #107 : ObjectModelModifier +------------------------------------ + +Besoin/Contexte +~~~~~~~~~~~~~~~ + +En java, les modifier concernent certains paramètres pouvant être mis sur les attributs, méthodes comme "static", "abstract", "public", ... Dans l'ObjectModel de la version 1.0.1, ces modifier sont représentés par des attributs ce qui implique un attribut par modifier : static, visibility, ... Pour simplifier la génération et la manipulation de ces modifiers, il serait intéressant d'avoir simplement une liste d'ObjectModelModifier. De plus cela permettra d'ajouter plus facilement certains modifier comme "synchronized". Cela permettra également de simplifier l'écriture de certaines méthodes des builder :: + + public ObjectModelOperation addOperation(String operationName, String returnType, + ObjectModelModifier... modifiers) { + ... + } + +exemple :: + + ObjectModelOperation setter = addOperation("setName", "void", ObjectModelModifier.PUBLIC); + // correspond a : public void setName(...) + + +Contraintes +~~~~~~~~~~~ + +- Les méthodes isStatic, isAbstract, etc... seront maintenus pour connaitre précisemment les modifier associés à la classe, méthode, attribut ou autre. +- Les nouveaux modifiers auront un nom générique indépendant du langage. + +Mise en place +~~~~~~~~~~~~~ + +Création d'une enumération ObjectModelModifier comprenant les différents modifiers existants (STATIC, ABSTRACT, PUBLIC, PRIVATE, ...). Il sera possible de récupérer la valeur chaîné (String) de chaque ObjectModelModifier possible. + +Conversion existant +~~~~~~~~~~~~~~~~~~~ + +Les attributs correspondant aux modifiers seront supprimés pour mettre en place une List<ObjectModelModifier> sur les objets qui le nécessitent (classifier, classe, interface, attribute, operation, ...). + + +Annexe : Hiérarchie des Generator/Transformer +--------------------------------------------- + +.. figure:: DiagClasses_Generators.png + + Hiérarchie des Generator/Transformer + + + Deleted: trunk/eugene/doc/3-v2.0/sources/eugene_v2.0.zargo =================================================================== (Binary files differ) Copied: trunk/eugene/doc/3-v2.0/sources/eugene_v2.0.zargo (from rev 754, branches/eugene-2.0/eugene/doc/3-v2.0/sources/eugene_v2.0.zargo) =================================================================== (Binary files differ) Modified: trunk/eugene/pom.xml =================================================================== --- trunk/eugene/pom.xml 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/pom.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> @@ -9,9 +10,9 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>eugene</artifactId> - <version>1.0.2-SNAPSHOT</version> + <version>2.0.0-beta-2-SNAPSHOT</version> </parent> - + <groupId>org.nuiton.eugene</groupId> <artifactId>eugene</artifactId> @@ -70,7 +71,7 @@ </exclusion> </exclusions--> </dependency> - + <!-- Meta model uml d'eclipse --> <dependency> <groupId>org.eclipse.uml2.uml</groupId> @@ -86,14 +87,21 @@ <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> + <scope>test</scope> </dependency> + + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <scope>test</scope> + </dependency> </dependencies> <!-- ************************************************************* --> <!-- *** Project Information ************************************* --> <!-- ************************************************************* --> - <name>EUGene</name> + <name>EUGene :: EUGene</name> <description>Efficient Universal Generator.</description> <inceptionYear>2004</inceptionYear> @@ -179,7 +187,7 @@ </roles> </developer> </developers> - + <!-- ************************************************************* --> <!-- *** Build Settings ****************************************** --> <!-- ************************************************************* --> @@ -189,26 +197,59 @@ <!-- extra files to include in release --> <redmine.releaseFiles>${redmine.libReleaseFiles}</redmine.releaseFiles> </properties> - + <build> <defaultGoal>install</defaultGoal> <resources> <resource> - <directory>${maven.src.dir}/main/xsl</directory> + <directory>${basedir}/src/main/xsl</directory> <includes> <include>**/*.xsl</include> </includes> </resource> </resources> + <plugins> + <plugin> + <groupId>org.nuiton.processor</groupId> + <artifactId>maven-processor-plugin</artifactId> + <executions> + <execution> + <phase>generate-sources</phase> + <goals> + <goal>process</goal> + </goals> + </execution> + </executions> + <configuration> + <includes>**/*.java</includes> + <!--<includes>org/nuiton/eugene/java/JavaGenerator.java</includes>--> + <filters>org.nuiton.processor.filters.GeneratorTemplatesFilter</filters> + </configuration> + </plugin> + + <!-- expose new plexus components --> + <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-metadata</artifactId> + <executions> + <execution> + <goals> + <goal>generate-metadata</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> <!-- ************************************************************* --> <!-- *** Build Environment ************************************** --> <!-- ************************************************************* --> - + <profiles> <!-- perform only on a release stage when using the maven-release-plugin --> <profile> @@ -221,7 +262,7 @@ </activation> <build> <plugins> - + <!-- launch in a release the assembly automaticly --> <plugin> <artifactId>maven-assembly-plugin</artifactId> @@ -242,7 +283,8 @@ </descriptorRefs> </configuration> </plugin> - + + </plugins> </build> </profile> @@ -250,3 +292,5 @@ </project> + + Property changes on: trunk/eugene/src/main/java/org/nuiton ___________________________________________________________________ Deleted: svn:mergeinfo - Copied: trunk/eugene/src/main/java/org/nuiton/eugene/AbstractGenerator.java (from rev 754, branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/AbstractGenerator.java) =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/AbstractGenerator.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/AbstractGenerator.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,183 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ +package org.nuiton.eugene; + +import org.nuiton.eugene.models.Model; + +import java.io.*; + +/** + * AbstractGenerator + * + * Created: 28 oct. 2009 + * + * @param <M> + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public abstract class AbstractGenerator<M extends Model> extends Template<M> { + + protected AbstractGenerator<M> parent = null; + + public AbstractGenerator() { + super(); + } + + public AbstractGenerator(AbstractGenerator<M> parent) { + super(); + setParent(parent); + } + + public void setParent(AbstractGenerator<M> parent) { + this.parent = parent; + setEncoding(parent.getEncoding()); + } + + @Override + public boolean getOverwrite() { + if (parent != null) { + return parent.getOverwrite(); + } + return super.getOverwrite(); + } + + /** + * Permet de recuperer la proprieté passé en argument + * + * @param name le nom de la propriete + * @return la valeur de la propriété + */ + @Override + public String getProperty(String name) { + if (parent != null) { + return parent.getProperty(name); + } + return super.getProperty(name); + } + + @Override + public long getLastModifiedSource() { + if (parent != null) { + return parent.getLastModifiedSource(); + } + return super.getLastModifiedSource(); + } + + /** + * @param file fichier a tester + * @return vrai si le fichier passé en parametre est plus recent que + * les sources sur generateur. + */ + protected boolean isNewerThanSource(File file) { + if (log.isDebugEnabled()) { + log.debug("source date: " + getLastModifiedSource() + + " file date: " + file.lastModified() + "(" + file + ")"); + } + return file.lastModified() > getLastModifiedSource(); + } + + protected File getDestinationFile(File destDir, String filename) { + return new File(destDir, filename); + } + + /** + * Test if given package is allowed for generation. + * + * An element can be generated if his package is in the {@link #generatedPackages} list + * or if {@link #generatedPackages} is null or empty. + * + * @param packageName package name to test + * @return generation allowed + */ + protected boolean canGeneratePackage(String packageName) { + boolean canGenerate = true; + if (parent != null) { + return parent.canGeneratePackage(packageName); + } + // if not generation restriction, generate everything + if (getGeneratedPackages() != null && !getGeneratedPackages().isEmpty()) { + canGenerate = false; + + // on doit donc tester que le package courant + // soit est egal a un des element de la liste + // soit commence par ca + for (String generatedPackage : getGeneratedPackages()) { + + // cas egalité parfaites + if (packageName != null && packageName.equals(generatedPackage)) { + canGenerate = true; + } + + // cas commence par (on ajout un point à la fin) + String localGeneratedPackage = generatedPackage; + if (!localGeneratedPackage.endsWith(".")) { + localGeneratedPackage += "."; + } + if (packageName != null && packageName.startsWith(localGeneratedPackage)) { + canGenerate = true; + } + + } + } + + return canGenerate; + } + + protected void write(File outputFile, MonitorWriter out) { + File write0utputFile = outputFile; + if (out.isModified()) { + try { + write0utputFile = outputFile.getCanonicalFile(); + + if (!write0utputFile.getParentFile().exists()) { + boolean b = write0utputFile.getParentFile().mkdirs(); + if (!b) { + throw new IllegalStateException("could not create directory " + write0utputFile.getParentFile()); + } + } + + Writer output; + + if (encoding != null) { + if (log.isDebugEnabled()) { + log.debug("Force encoding to " + encoding + " : " + this); + } + output = new OutputStreamWriter(new FileOutputStream( + write0utputFile), encoding); + } else { + output = new OutputStreamWriter(new FileOutputStream( + write0utputFile)); + } + + output.write(out.getBuffer().toString()); + output.close(); + } catch (IOException eee) { + if (log.isWarnEnabled()) { + log.warn("Unable to write file : " + write0utputFile.getAbsolutePath(), eee); + } + throw new RuntimeException(eee); + } + } + } +} Copied: trunk/eugene/src/main/java/org/nuiton/eugene/AbstractModelFileWriter.java (from rev 754, branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/AbstractModelFileWriter.java) =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/AbstractModelFileWriter.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/AbstractModelFileWriter.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,170 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ +package org.nuiton.eugene; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import static org.nuiton.eugene.ModelFileWriterUtil.ModelFileWriterEntry; +import org.nuiton.eugene.models.Model; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * Abstract implementation of the {@link org.nuiton.eugene.ModelFileWriter}. + * + * @author tchemit + * @since 2.0.0 + */ +public abstract class AbstractModelFileWriter implements ModelFileWriter { + + private static final Log log = LogFactory.getLog(AbstractModelFileWriter.class); + /** + * entries to treate + */ + protected List<ModelFileWriterEntry> entries; + /** + * previous writer (can be null) + */ + protected ModelFileWriter previousWriter; + /** + * next writer (can be null) + */ + protected ModelFileWriter nextWriter; + + /** + * common configuration of all writers available in generate method scope + */ + protected ModelFileWriterConfiguration configuration; + + protected AbstractModelFileWriter() { + entries = new ArrayList<ModelFileWriterEntry>(); + } + + /** + * Generates some files for a given input, output and include pattern. + * + * @param outputDir where to generate files + * @param inputDirectory where to pick up files + * @param includePattern pattern of files to include + * @param overwrite {@code true} if should regenerate even if files are up to date + * @throws IOException for any IO pb. + */ + protected abstract void generate(File outputDir, File inputDirectory, String includePattern, boolean overwrite) throws IOException; + + @Override + public void clear() { + entries.clear(); + } + + @Override + public void addEntry(ModelFileWriterEntry entry) { + entries.add(entry); + } + + @Override + public <T> T getProperty(String key, Class<T> type) { + return (T) getConfiguration().getProperties().get(key); + } + + @Override + public void generate(ModelFileWriterConfiguration configuration) throws IOException { + if (log.isDebugEnabled()) { + log.debug("[" + getInputProtocol() + "] Start generate with writer " + this); + } + this.configuration = configuration; + try { + File outputDir = getOutputDirectory(configuration.getOutputDirectory()); + + if (!outputDir.exists()) { + if (log.isDebugEnabled()) { + log.debug("[" + getInputProtocol() + "] Create output directory " + outputDir); + } + boolean b = outputDir.mkdirs(); + if (!b) { + throw new IOException("Could not creat directory " + outputDir); + } + } + + for (ModelFileWriterEntry e : entries) { + if (log.isDebugEnabled()) { + log.debug("[" + getInputProtocol() + "] Will generate entry " + e.getInputDirectory() + " : " + e.getIncludePattern()); + } + generate(outputDir, e.getInputDirectory(), e.getIncludePattern(), configuration.isOverwrite()); + } + } finally { + this.configuration = null; + } + } + + @Override + public <M extends Model> String getInputProtocol(Class<M> modelType) { + // input protocol is the same for all model + return acceptModel(modelType) ? getInputProtocol() : null; + } + + @Override + public File getOutputDirectory(File outputBasedir) { + return new File(outputBasedir, getDefaultOutputDirectory()); + } + + @Override + public List<ModelFileWriterEntry> getEntries() { + return entries; + } + + /** + * @return the shared configuration used by the writer + */ + protected ModelFileWriterConfiguration getConfiguration() { + return configuration; + } +// +// protected File createOutputDirectory(File outputDir) throws IOException { +// +// outputDir = getOutputDirectory(outputDir); +// +// if (!outputDir.exists()) { +// if (log.isDebugEnabled()) { +// log.debug("[" + getInputProtocol() + "] Create output directory " + outputDir); +// } +// boolean b = outputDir.mkdirs(); +// if (!b) { +// throw new IOException("Could not creat directory " + outputDir); +// } +// } +// return outputDir; +// } + + protected ModelFileWriter getNextWriter() { + return nextWriter; + } + + protected ModelFileWriter getPreviousWriter() { + return previousWriter; + } + + protected void setNextWriter(ModelFileWriter nextWriter) { + this.nextWriter = nextWriter; + } +} \ No newline at end of file Deleted: trunk/eugene/src/main/java/org/nuiton/eugene/AbstractObjectModelGenerator.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/AbstractObjectModelGenerator.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/AbstractObjectModelGenerator.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,54 +0,0 @@ -/* *##% Eugene - * Copyright (C) 2004 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ - -package org.nuiton.eugene; - -import org.nuiton.eugene.models.object.ObjectModelElement; - -/** - * AbstractObjectModelGenerator. - * - * Created: Jun 25, 2004 - * - * @author Benjamin Poussin <poussin@codelutin.com> - * Copyright Code Lutin - * @version $Revision$ - * - * Mise a jour: $Date$ - * par : $Author$ - */ -public class AbstractObjectModelGenerator extends ObjectModelGenerator { // AbstractObjectModelGenerator - - public AbstractObjectModelGenerator() { - super(); - } - - public AbstractObjectModelGenerator(Generator parent) { - super(parent); - } - - public String capitalizeName(ObjectModelElement e) { - String name = e.getName(); - if (name == null) { - throw new GeneratorException("Element " + e - + " must have an valid name"); - } - return GeneratorUtil.capitalize(name); - } - -} // AbstractObjectModelGenerator - Deleted: trunk/eugene/src/main/java/org/nuiton/eugene/ChildGenerator.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/ChildGenerator.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/ChildGenerator.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,94 +0,0 @@ -/* *##% Eugene - * Copyright (C) 2004 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ - -package org.nuiton.eugene; - -/** - * ChildGenerator. - * - * Created: 5 août 2004 - * - * @author Benjamin Poussin <poussin@codelutin.com> - * @version $Revision$ - * - * Mise a jour: $Date$ - * par : $Author$ - */ -public abstract class ChildGenerator extends Generator { // ChildGenerator - - protected Generator parent = null; - - public ChildGenerator() { - super(); - } - - public ChildGenerator(Generator parent) { - setParent(parent); - } - - @Override - public String getProperty(String name) { - String propName = null; - if (parent == null) { - propName = super.getProperty(name); - } else { - propName = parent.getProperty(name); - } - return propName; - } - - @Override - public boolean getOverwrite() { - boolean result; - if (parent == null) { - result = super.getOverwrite(); - } else { - result = parent.getOverwrite(); - } - return result; - } - - @Override - protected long getLastModifiedSource() { - long lastModified = 0; - if (parent == null) { - lastModified = super.getLastModifiedSource(); - } else { - lastModified = parent.getLastModifiedSource(); - } - return lastModified; - } - - @Override - protected boolean canGeneratePackage(String packageName) { - boolean canGenerate = true; - - if (parent == null) { - canGenerate = super.canGeneratePackage(packageName); - } else { - canGenerate = parent.canGeneratePackage(packageName); - } - - return canGenerate; - } - - public void setParent(Generator parent) { - this.parent = parent; - setEncoding(parent.getEncoding()); - } - -} // ChildGenerator Deleted: trunk/eugene/src/main/java/org/nuiton/eugene/Generator.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/Generator.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/Generator.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,231 +0,0 @@ -/* *##% Eugene - * Copyright (C) 2004 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* - */ - -package org.nuiton.eugene; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.io.Writer; -import java.util.List; -import java.util.Properties; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Generator. - * - * Created: 5 août 2004 - * - * @author Cedric Pineau <pineau@codelutin.com> - * @version $Revision$ - * - * Mise a jour: $Date$ - * par : $Author$ - */ -public abstract class Generator { - - protected static Log log = LogFactory.getLog(Generator.class); - - protected Properties properties = new Properties(); - protected boolean overwrite = true; - /** date de derniere modification de la source la plus recente */ - protected long lastModifiedSource = 0; - - protected List<String> excludeTemplates; - - /** - * List of package to allow generation. - * - * If {@code null} or empty, generate all packages. - */ - protected List<String> generatedPackages; - - protected String encoding; - - public Generator() { - } - - public void generate(File file, File destDir) { - generate(new File[] { file }, destDir); - } - - public void generate(File file) { - generate(new File[] { file }, new File(".")); - } - - public void setProperties(Properties p) { - this.properties = p; - } - - public void setOverwrite(boolean v) { - overwrite = v; - } - - public boolean getOverwrite() { - return overwrite; - } - - public String getEncoding() { - return encoding; - } - - public void setEncoding(String encoding) { - this.encoding = encoding; - } - - /** - * Set list of package to allow generation. - * - * If {@code null} or empty, generate all packages. - * - * @param generatedPackages list of package to generate - */ - public void setGeneratedPackages(List<String> generatedPackages) { - this.generatedPackages = generatedPackages; - } - - /** - * Permet de recuperer la proprieté passé en argument - * - * @param name le nom de la propriete - * @return la valeur de la propriété - */ - public String getProperty(String name) { - return properties.getProperty(name); - } - - protected void setLastModifiedSource(File[] files) { - for (File file : files) { - if (isNewerThanSource(file)) { - lastModifiedSource = file.lastModified(); - log.debug("source date: " + lastModifiedSource - + " files[i] date: " + file.lastModified() + "(" + file - + ")"); - } - } - } - - protected long getLastModifiedSource() { - - return lastModifiedSource; - } - - /** - * @param file fichier a tester - * @return vrai si le fichier passé en parametre est plus recent que - * les sources sur generateur. - */ - protected boolean isNewerThanSource(File file) { - if (log.isDebugEnabled()) { - log.debug("source date: " + getLastModifiedSource() - + " file date: " + file.lastModified() + "(" + file + ")"); - } - return file.lastModified() > getLastModifiedSource(); - } - - protected File getDestinationFile(File destDir, String filename) { - return new File(destDir, filename); - } - - protected void write(File outputFile, MonitorWriter out) { - File write0utputFile = outputFile; - if (out.isModified()) { - try { - write0utputFile = outputFile.getCanonicalFile(); - write0utputFile.getParentFile().mkdirs(); - - Writer output = null; - - if (encoding != null) { - if (log.isDebugEnabled()) { - log.debug("Force encoding to " + encoding + " : " - + this); - } - output = new OutputStreamWriter(new FileOutputStream( - write0utputFile), encoding); - } else { - output = new OutputStreamWriter(new FileOutputStream( - write0utputFile)); - } - - output.write(out.getBuffer().toString()); - output.close(); - } catch (IOException eee) { - if (log.isWarnEnabled()) { - log.warn("Unable to write file : " - + write0utputFile.getAbsolutePath(), eee); - } - throw new RuntimeException(eee); - } - } - } - - public List<String> getExcludeTemplates() { - return excludeTemplates; - } - - public void setExcludeTemplates(List<String> excludeTemplates) { - this.excludeTemplates = excludeTemplates; - } - - public abstract void generate(File[] file, File destDir); - - /** - * Test if given package is allowed for generation. - * - * An element can be generated if his package is in the {@link generatedPackages} list - * or if {@link generatedPackages} is null or empty. - * - * @param packageName package name to test - * @return generation allowed - */ - protected boolean canGeneratePackage(String packageName) { - boolean canGenerate = true; - - // if not generation restriction, generate everything - if (generatedPackages != null && !generatedPackages.isEmpty()) { - canGenerate = false; - - // on doit donc tester que le package courant - // soit est egal a un des element de la liste - // soit commence par ca - for (String generatedPackage : generatedPackages) { - - // cas egalité parfaites - if (packageName != null && packageName.equals(generatedPackage)) { - canGenerate = true; - } - - // cas commence par (on ajout un point à la fin) - String localGeneratedPackage = generatedPackage; - if (!localGeneratedPackage.endsWith(".")) { - localGeneratedPackage += "."; - } - if (packageName != null && packageName.startsWith(localGeneratedPackage)) { - canGenerate = true; - } - - } - } - - return canGenerate; - } -} Modified: trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorException.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorException.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorException.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorTask.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorTask.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorTask.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene; @@ -286,11 +288,11 @@ } String[] templateGenerators = templates.split(","); - Generator[] generators = new Generator[templateGenerators.length]; + Template[] generators = new Template[templateGenerators.length]; for (int i = 0; i < templateGenerators.length; i++) { String templateName = templateGenerators[i].trim(); try { - generators[i] = (Generator) Class.forName(templateName) + generators[i] = (Template) Class.forName(templateName) .newInstance(); generators[i].setEncoding(encoding); generators[i].setProperties(properties); @@ -342,7 +344,7 @@ * @throws BuildException * if can't generate */ - protected void doExecute(File srcFile, File destDir, Generator[] generators) + protected void doExecute(File srcFile, File destDir, Template[] generators) throws BuildException { doExecute(Collections.singletonList(srcFile), destDir, generators); } @@ -360,16 +362,16 @@ * if can't generate */ protected void doExecute(List<File> srcFiles, File destDir, - Generator[] generators) throws BuildException { + Template[] generators) throws BuildException { // log classpath log("Using classpath : " + classpath); List<File> modelFiles = doConvertFiles(srcFiles, destDir); - for (Generator generator : generators) { + for (Template generator : generators) { if (generator != null) { - File[] modelFilesArray = modelFiles.toArray(new File[modelFiles.size()]); + File[] modelFilesArray = modelFiles.toArray(new File[0]); log("Applying " + generator.getClass().getSimpleName() + " on " + Arrays.toString(modelFilesArray), Project.MSG_INFO); Modified: trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,27 +14,21 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* */ package org.nuiton.eugene; -import java.io.File; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; - import org.apache.commons.lang.StringUtils; import org.nuiton.eugene.models.Model; -import org.nuiton.eugene.models.object.ObjectModel; -import org.nuiton.eugene.models.object.ObjectModelAttribute; -import org.nuiton.eugene.models.object.ObjectModelClass; -import org.nuiton.eugene.models.object.ObjectModelClassifier; -import org.nuiton.eugene.models.object.ObjectModelElement; -import org.nuiton.eugene.models.object.ObjectModelOperation; -import org.nuiton.eugene.models.object.ObjectModelParameter; +import org.nuiton.eugene.models.object.*; +import java.io.File; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + /** * GeneratorUtil. * @@ -329,19 +324,23 @@ /** * + * @deprecated use StringUtils.capitalize instead * @param word * @return */ + @Deprecated public static String toUpperCaseFirstLetter(String word) { return capitalize(word); } /** * Capitalizes a String changing the first letter to title case. - * + * + * @deprecated use StringUtils.capitalize instead * @param word word to Capitalize * @return Capitalized word */ + @Deprecated public static String capitalize(String word) { return StringUtils.capitalize(word); } @@ -580,4 +579,95 @@ return result; } + + /** + * Suppress packageName from a fullQualifiedName, even if it contains List, Map or other generics. + * See JUnit test for matching expressions. + * //@see org.nuiton.eugene.GeneratorUtilTest + * @param str FullQualifiedName for an attribute type (for exemple) + * @return the simple name associated to the str given + */ + public static String getSimpleName(String str) { + // variable array type + boolean variableArrayType=false; + if (str.endsWith("...")) { + variableArrayType = true; + str = str.substring(0, str.length() - 3); + } + if (str.startsWith("\"") && str.endsWith("\"")) { + return str; + } + //return str.replaceAll("[a-zA-Z]\\w*\\.",""); + String result = str.replaceAll("\\p{Alpha}\\w*\\.", ""); + if (variableArrayType) { + result += "..."; + } + return result; + } + + public static Set<String> getTypesList(String str) { + + String regex = "^(([\\w\\s\\?]*\\s))?([\\w\\.]+)((<)(.*)(>))?(\\(\\))?$"; + Pattern p = Pattern.compile(regex); + Matcher m = p.matcher(str); + + Set<String> results = new HashSet<String>(); + + if (m.find()) { + results.add(m.group(3)); + if (m.group(6) != null) { // cas du type generic + for (String onepart : m.group(6).split("(\\s*,\\s*)")) { + results.addAll(getTypesList(onepart)); + } + } + /*if (m.group(2) != null) { // cas du extend ou du new + result += m.group(2); + } + result += m.group(4); + if (m.group(7) != null) { // cas du type generic + result += m.group(6); // < + String sep = ""; + for (String onepart : m.group(7).split("(\\s*,\\s*)")) { + result += sep + getSimpleName(onepart); + sep = ", "; + } + result += m.group(8); // > + } + if (m.group(9) != null) { // cas des () pour un new + result += m.group(9); + }*/ + } + + return results; + } + + /** + * Convertit un nom de variable en nom de constante. + * + * @param variableName le nom de variable a convertir + * @return le nom de la constante à partir du nom de la variable + */ + public static String convertVariableNameToConstantName(String variableName) { + //TODO Faire des tests pour savoir si variableName est non null et valide + //TODO Ameliorer l'algo pour tenir compte des caractères non alpha + //TODO pour le moment cela convient, donc... + StringBuilder buffer = new StringBuilder(); + boolean lastCarIsUp = false; + for (int i = 0, j = variableName.length(); i < j; i++) { + char c = variableName.charAt(i); + boolean carIsUp = Character.isUpperCase(c); + if (i > 0 && !lastCarIsUp && carIsUp) { + // ajout d'un _ + buffer.append('_'); + } + if (carIsUp) { + buffer.append(c); + } else { + buffer.append(Character.toUpperCase(c)); + } + lastCarIsUp = carIsUp; + } + return buffer.toString(); + } + } // GeneratorUtil Modified: trunk/eugene/src/main/java/org/nuiton/eugene/ImportsManager.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/ImportsManager.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/ImportsManager.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,3 +1,23 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ package org.nuiton.eugene; import java.util.ArrayList; Copied: trunk/eugene/src/main/java/org/nuiton/eugene/ModelFileWriter.java (from rev 754, branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelFileWriter.java) =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/ModelFileWriter.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/ModelFileWriter.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,140 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ +package org.nuiton.eugene; + +import org.nuiton.eugene.models.Model; + +import java.io.File; +import java.io.IOException; +import java.util.List; + +/** + * Contract to generate model files from any incoming sources (zargo, xmi, ...). + * + * User: chemit + * Date: 27 nov. 2009 + * Time: 11:20:39 + * @since 2.0.0 + */ +public interface ModelFileWriter { + + /** + * @return the accepted incoming protocol + */ + String getInputProtocol(); + + /** + * Obtain the input protocol of this writer given the passed {@code modelType}. + * + * @param modelType the type of model used + * @param <M> the type of model used + * @return the input protocol or {@code null} if this writer does not accept the type of model + */ + <M extends Model> String getInputProtocol(Class<M> modelType); + + /** + * Obtain the output protocol of this writer given the passed {@code modelType}. + * + * @param modelType the type of model used + * @param <M> the type of model used + * @return the output protocol or {@code null} if should not be chained + */ + <M extends Model> String getOutputProtocol(Class<M> modelType); + + /** + * Test if a type of model can be treated by this writer. + * + * @param modelType model type to test + * @param <M> model type to test + * @return {@code true} if this writer accept the given type of model, {@code false} otherwise. + */ + <M extends Model> boolean acceptModel(Class<M> modelType); + + /** + * Test in a entry can be treated by this writer. + * + * @param include the include to test + * @return {@code true} if the writer accept the entry, {@code false} otherwise. + */ + boolean acceptInclude(String include); + + /** + * @return the default includes files to be treated by the writer (can be an ant-like expression) + */ + String getDefaultIncludes(); + + /** + * @return the defalt relative path where to pick files to treate. + */ + String getDefaultInputDirectory(); + + /** + * @return the default relative path to add to output basedir + */ + String getDefaultOutputDirectory(); + + /** + * Obtain the real directory where to write files. + * <p/> + * //FIXME-TC20091126 make this configurable (via the properties) + * + * @param outputBasedir the output base directory + * @return the real output directory where to generate for this particular writer + */ + File getOutputDirectory(File outputBasedir); + + /** + * Generates. + * + * @param configuration the share configuration of all writers. + * @throws IOException if any io pb. + */ + void generate(ModelFileWriterConfiguration configuration) throws IOException; + + /** + * Clear all internal states + */ + void clear(); + + /** + * Add an entry to treate. + * + * @param entry the entry to add to writer + */ + void addEntry(ModelFileWriterUtil.ModelFileWriterEntry entry); + + /** + * Obtain a writer extra property. + * + * @param key the key of required property + * @param type the type of property + * @param <T> the type of property + * @return the property found or {@code null} if not found. + */ + <T> T getProperty(String key, Class<T> type); + +// ModelFileWriterConfiguration getConfiguration(); + + /** + * @return the list of all entries registered + */ + List<ModelFileWriterUtil.ModelFileWriterEntry> getEntries(); +} Copied: trunk/eugene/src/main/java/org/nuiton/eugene/ModelFileWriterConfiguration.java (from rev 754, branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelFileWriterConfiguration.java) =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/ModelFileWriterConfiguration.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/ModelFileWriterConfiguration.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,83 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ +package org.nuiton.eugene; + +import org.nuiton.eugene.models.Model; + +import java.io.File; +import java.util.Map; +import java.util.Set; + +/** + * Shared configuration of a {@link ModelFileWriter}, should be the same for all writers + * to use at a time. + * + * @author tchemit + * @since 2.0.0 + */ +public interface ModelFileWriterConfiguration { + + /** + * @return the type of model used + */ + Class<? extends Model> getModelClass(); + + /** + * @return project base directory + */ + File getBasedir(); + + /** + * @return base directory where to generate + */ + File getOutputDirectory(); + + /** + * @return {@code true} if must regenerate files even if they are up to date + */ + boolean isOverwrite(); + + /** + * @return {@code true} if build is off-line and should not be able to access outside resources. + */ + boolean isOffline(); + + /** + * @return {@code true} if build is verbose. + */ + boolean isVerbose(); + + /** + * @return encoding to use to read and write files + */ + String getEncoding(); + + /** + * @return Set of all availables writers + */ + Set<ModelFileWriter> getAvailableWriters(); + + /** + * @return properties to pass to writers + */ + Map<String, Object> getProperties(); + +} Copied: trunk/eugene/src/main/java/org/nuiton/eugene/ModelFileWriterUtil.java (from rev 754, branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelFileWriterUtil.java) =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/ModelFileWriterUtil.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/ModelFileWriterUtil.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,331 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ +package org.nuiton.eugene; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.models.Model; + +import java.io.File; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * User: chemit + * Date: 26 nov. 2009 + * Time: 00:18:29 + */ +public class ModelFileWriterUtil { + + private static final Log log = LogFactory.getLog(ModelFileWriterUtil.class); + + public static void registerInclude(ModelFileWriterConfiguration configuration, String include, List<ModelFileWriter> selectedWriters) { + if (log.isDebugEnabled()) { + log.debug(">>>>>>>>>>>>>>>>> [" + include + "]"); + log.debug("Will register include " + "[" + include + "]"); + log.debug("actual selected writers : " + selectedWriters); + } + ModelFileWriterEntryType selectedType = null; + Matcher matcher = null; + + // obtain the good type of entry and the corresponding matcher + + for (ModelFileWriterEntryType type : ModelFileWriterEntryType.values()) { + matcher = type.getMatcher(include); + if (matcher != null) { + // get a matcher + selectedType = type; + break; + } + } + + if (selectedType == null) { + // no writer + throw new IllegalArgumentException("could not find a writer for include pattern : " + include); + } + + // obtain the writer + ModelFileWriter writer = selectedType.getWriter(configuration, include, matcher); + + // create the new entry + + ModelFileWriterEntry writerEntry = selectedType.newEntry(configuration, include, matcher, writer); + + // register the new entry + + writer.addEntry(writerEntry); + if (!selectedWriters.contains(writer)) { + // register the writer as to be used + if (log.isDebugEnabled()) { + log.debug("[" + include + "] Associated with writer " + writer); + } + selectedWriters.add(writer); + } + + Class<? extends Model> modelType = configuration.getModelClass(); + + String outpoutProtocol = writer.getOutputProtocol(modelType); + + if (outpoutProtocol == null) { + // nothing more to do + if (log.isDebugEnabled()) { + log.debug("<<<<<<<<<<<<<<<<< [" + include + "]"); + } + return; + } + + // the writer need the includes of another writer + + if (log.isDebugEnabled()) { + log.debug("[" + include + "]" + " writer " + writer.getClass().getSimpleName() + " require a next writer of protocol " + outpoutProtocol); + } + + ModelFileWriter nextWriter = ((AbstractModelFileWriter)writer).getNextWriter(); + if (nextWriter == null) { + // the next writer was not initialize, just have to add new entry + + nextWriter = getWriterForInputProtocole(configuration.getAvailableWriters(), outpoutProtocol, modelType); + + if (nextWriter == null) { + throw new IllegalArgumentException("could not find a writer for protocole " + outpoutProtocol + " on model " + modelType); + } + // chain writer + ((AbstractModelFileWriter)writer).setNextWriter(nextWriter); + } + + // build the next include to do + + String basedirpath = configuration.getBasedir().getAbsolutePath(); + + String outputpath = writer.getOutputDirectory(configuration.getOutputDirectory()).getAbsolutePath(); + + String path = outputpath.substring(basedirpath.length() + 1); + + String newInclude = outpoutProtocol + ":" + path + ":" + nextWriter.getDefaultIncludes(); + + registerInclude(configuration, newInclude, selectedWriters); + + if (log.isDebugEnabled()) { + log.debug("<<<<<<<<<<<<<<<<< [" + include + "]"); + } + } + + public static Set<ModelFileWriter> filterWriterForModelType(Map<String, ModelFileWriter> universe, Class<? extends Model> modelType) { + Set<ModelFileWriter> result = new HashSet<ModelFileWriter>(); + for (ModelFileWriter w : universe.values()) { + if (w.acceptModel(modelType)) { + if (log.isDebugEnabled()) { + log.debug("writer [" + w + "] accept model " + modelType); + } + result.add(w); + } + } + return result; + } + + public static ModelFileWriter getWriterForInputProtocole(Set<ModelFileWriter> universe, String inputProtocol, Class<? extends Model> modelType) { + for (ModelFileWriter writer : universe) { + if (inputProtocol.equals(writer.getInputProtocol(modelType))) { + return writer; + } + } + return null; + } + + public static ModelFileWriter getWriterForInclude(Set<ModelFileWriter> universe, String include, Class<? extends Model> modelType) { + for (ModelFileWriter w : universe) { + if (w.acceptInclude(include)) { + return w; + } + } + return null; + } + + /** + * + */ + public static class ModelFileWriterEntry { + + /** + * + */ + protected File inputDirectory; + /** + * + */ + protected String includePattern; + + public ModelFileWriterEntry(File inputDirectory, String includePattern) { + this.inputDirectory = inputDirectory; + this.includePattern = includePattern; + } + + public String getIncludePattern() { + return includePattern; + } + + public File getInputDirectory() { + return inputDirectory; + } + + } + + /** + * + */ + public enum ModelFileWriterEntryType { + + ONLY_PROTOCOL_PATTERN(Pattern.compile("^([a-zA-Z]+)$")) { + + @Override + public ModelFileWriter getWriter(ModelFileWriterConfiguration configuration, String include, Matcher matcher) { + Set<ModelFileWriter> universe = configuration.getAvailableWriters(); + + String protocol = matcher.group(1).toLowerCase(); + ModelFileWriter writer = getWriterForInputProtocole(universe, protocol, configuration.getModelClass()); + if (writer == null) { + throw new IllegalArgumentException("could not find the writer named '" + protocol + "', use one of " + universe); + } + if (log.isDebugEnabled()) { + log.debug("[" + include + "] " + "writer = (" + writer + ")"); + } + return writer; + } + + @Override + public ModelFileWriterEntry newEntry(ModelFileWriterConfiguration configuration, String include, Matcher matcher, ModelFileWriter writer) { + + if (log.isDebugEnabled()) { + log.debug("[" + include + "] " + "detected pattern (" + name() + ")"); + } + + ModelFileWriterEntry writerEntry = new ModelFileWriterEntry( + new File(configuration.getBasedir(), writer.getDefaultInputDirectory()), + writer.getDefaultIncludes() + ); + return writerEntry; + } + }, + + NO_PROTOCOL_PATTERN(Pattern.compile("^([^:]+):([^:]+)$")) { + @Override + public ModelFileWriter getWriter(ModelFileWriterConfiguration configuration, String include, Matcher matcher) { + Set<ModelFileWriter> universe = configuration.getAvailableWriters(); + + Class<? extends Model> modelType = configuration.getModelClass(); + // with no protocol pattern + // pattern is discover from the includes + + // discover the writer from the given pattern + ModelFileWriter writer = getWriterForInclude(universe, include, modelType); + if (writer == null) { + throw new IllegalArgumentException("could not find a writer for include " + include); + } + if (log.isDebugEnabled()) { + log.debug("[" + include + "] " + "writer = (" + writer + ")"); + } + return writer; + } + + @Override + public ModelFileWriterEntry newEntry(ModelFileWriterConfiguration configuration, String include, Matcher matcher, ModelFileWriter writer) { + // with no protocol pattern + // pattern is discover from the includes + if (log.isDebugEnabled()) { + log.debug("[" + include + "] " + "detected pattern (" + name() + ")"); + } + + String inputPath = matcher.group(1); + String includes = matcher.group(2); + + ModelFileWriterEntry writerEntry = new ModelFileWriterEntry( + new File(configuration.getBasedir(), inputPath), + includes + ); + return writerEntry; + } + }, + + FULL_PATTERN(Pattern.compile("^(\\w+):([^:]+):([^:]+)$")) { + @Override + public ModelFileWriter getWriter(ModelFileWriterConfiguration configuration, String include, Matcher matcher) { + // with full pattern (protocol + directory + includes) + // pattern is discover from the includes + + Set<ModelFileWriter> universe = configuration.getAvailableWriters(); + + String protocol = matcher.group(1).toLowerCase(); + ModelFileWriter writer = getWriterForInputProtocole(universe, protocol, configuration.getModelClass()); + + if (writer == null) { + throw new IllegalArgumentException("could not find the writer named '" + protocol + "', use one of " + universe); + } + if (log.isDebugEnabled()) { + log.debug("[" + include + "] " + "writer = (" + writer + ")"); + } + return writer; + } + + @Override + public ModelFileWriterEntry newEntry(ModelFileWriterConfiguration configuration, String include, Matcher matcher, ModelFileWriter writer) { + + // with full pattern (protocol + directory + includes) + // pattern is discover from the includes + if (log.isDebugEnabled()) { + log.debug("[" + include + "] " + "detected pattern (" + name() + ")"); + } + + String inputPath = matcher.group(2); + String includes = matcher.group(3); + ModelFileWriterEntry writerEntry = new ModelFileWriterEntry( + new File(configuration.getBasedir(), inputPath), + includes + ); + return writerEntry; + } + }; + + private final Pattern pattern; + + ModelFileWriterEntryType(Pattern pattern) { + this.pattern = pattern; + } + + public Pattern getPattern() { + return pattern; + } + + public Matcher getMatcher(String include) { + Matcher matcher = getPattern().matcher(include); + return matcher.matches() ? matcher : null; + } + + public abstract ModelFileWriterEntry newEntry(ModelFileWriterConfiguration configuration, String include, Matcher matcher, ModelFileWriter writer); + + public abstract ModelFileWriter getWriter(ModelFileWriterConfiguration configuration, String include, Matcher matcher); + } + + +} Copied: trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java (from rev 754, branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelReader.java) =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,73 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ + +package org.nuiton.eugene; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.models.Model; + +import java.io.File; + +/** + * FileReader TODO real doc :) + * + * Created: 26 oct. 2009 + * + * @param <M> Model to create from reading input files + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public abstract class ModelReader<M extends Model> { + + private static final Log log = LogFactory.getLog(ModelReader.class); + + /** date de derniere modification de la source la plus recente */ + protected long lastModifiedSource = 0; + + protected void setLastModifiedSource(File[] files) { + for (File file : files) { + if (file.lastModified() > getLastModifiedSource()) { + lastModifiedSource = file.lastModified(); + log.debug("source date: " + lastModifiedSource + + " files[i] date: " + file.lastModified() + "(" + file + + ")"); + } + } + } + + public long getLastModifiedSource() { + return lastModifiedSource; + } + + //TODO-TC : il vaut mieux directement un type dit variable + // example : public abstract M read(File... file) {} + + public M read(File file) { + return read(new File[] { file }); + } + + public abstract M read(File[] file); + +} Modified: trunk/eugene/src/main/java/org/nuiton/eugene/MonitorWriter.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/MonitorWriter.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/MonitorWriter.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,5 +1,6 @@ -/* *##% Eugene - * Copyright (C) 2004 - 2008 CodeLutin +/* *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/ObjectModelGenerator.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/ObjectModelGenerator.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/ObjectModelGenerator.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,23 +14,17 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.io.StringWriter; import java.io.Writer; -import java.util.ArrayList; import java.util.Collection; -import java.util.Enumeration; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import org.apache.commons.digester.Digester; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.models.object.ObjectModel; @@ -38,16 +33,6 @@ import org.nuiton.eugene.models.object.ObjectModelElement; import org.nuiton.eugene.models.object.ObjectModelEnumeration; import org.nuiton.eugene.models.object.ObjectModelInterface; -import org.nuiton.eugene.models.object.xml.DigesterObjectModelRuleSet; -import org.nuiton.eugene.models.object.xml.ObjectModelClassifierImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelElementImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelImplRef; -import org.nuiton.eugene.models.object.xml.ObjectModelImplTagValue; -import org.nuiton.util.FileUtil; -import org.nuiton.util.RecursiveProperties; -import org.nuiton.util.StringUtil; -import org.xml.sax.SAXException; /** * Pour utiliser ce type de générateur il faut implanter au moins une des trois @@ -84,196 +69,28 @@ * * Mise a jour: $Date$ par : $Author$ */ -public class ObjectModelGenerator extends ChildGenerator { +public class ObjectModelGenerator extends AbstractGenerator<ObjectModel> { /** Logger for this class. */ private static Log log = LogFactory.getLog(ObjectModelGenerator.class); - protected ObjectModel model = null; - /** - * L'expression réguliere match les chaines de type - * <package.ClassName>.<class|attribute|operation>.[name].<stereotype|tagvalue>.[tag] - * fr.isisfish.entities.Population.class.stereotype=entity - * fr.isisfish.entities.Population.class.tagvalue.persistenceType=flatfile - * fr.isisfish.entities.Population.attribute.name.stereotype=... - * fr.isisfish.entities.Population.attribute.name.tagvalue.pk=topiaId - * fr.isisfish.entities.Population.operation.getRegion.stereotype=... - * fr.isisfish.entities.Population.operation.getRegion.tagvalue.pk=... - */ - protected Pattern propertiesPattern = Pattern - .compile("((?:[_a-zA-Z0-9]+\\.)+(?:_?[A-Z][_a-zA-Z0-9]*\\.)+)(?:(class|attribute|operation)\\.)(?:([_a-z0-9][_a-zA-Z0-9]*)\\.)?(?:(stereotype|tagvalue)\\.?)([_a-z0-9][_a-zA-Z0-9]*)?"); - public ObjectModelGenerator() { super(); } - public ObjectModelGenerator(Generator parent) { + public ObjectModelGenerator(AbstractGenerator<ObjectModel> parent) { super(parent); } - public ObjectModel getModel() { - return model; - } - - /** - * @param files les noms des fichiers existant contenant du XML représentant - * des ObjectModel. Il est automatiquement recherche un fichier de - * propriété associé a ce fichier pour pouvoir ajouter des - * stereotype ou des tag value sur les class, attribute ou operation - * @param destDir le répertoire dans lequel il faudra mettre les fichiers - * générés - */ @Override + @Deprecated public void generate(File[] files, File destDir) { - setLastModifiedSource(files); - ObjectModel objectModel = new ObjectModelImpl(); - - // Digester parser configuration - Digester digester = new Digester(); - digester.addRuleSet(new DigesterObjectModelRuleSet()); - - for (File file : files) { - try { - digester.push(objectModel); - objectModel = (ObjectModel) digester.parse(file); - } catch (IOException e) { - log.warn("Unable to parse ObjectModel input file : " + file, e); - } catch (SAXException e) { - log.warn("Unable to parse ObjectModel input file : " + file, e); - } - - // recherche est charge le fichier propriete associe au modele - File dir = file.getParentFile(); - String ext = FileUtil.extension(file); - String name = FileUtil.basename(file, "." + ext); - File propFile = new File(dir, name + ".properties"); - RecursiveProperties prop = new RecursiveProperties(); - if (!propFile.exists()) { - if (log.isInfoEnabled()) { - log.info("Pas de fichier de propriete " + propFile - + " associé au model"); - } - } else { - if (log.isInfoEnabled()) { - log.info("Lecture du fichier de propriete " + propFile - + " associé au model"); - } - try { - prop.load(new FileInputStream(propFile)); - } catch (IOException eee) { - log.warn("Impossible de lire le fichier de propriete " - + propFile, eee); - } - - // on ajoute les proprietes du fichier associe au model - for (Enumeration<Object> e = prop.keys(); e.hasMoreElements();) { - String key = (String) e.nextElement(); - String value = prop.getProperty(key); - - if (key.startsWith("model")) { - if (!key.startsWith("model.tagvalue.")) { - log.warn("only tagvalue is allowed on model in properties"); - } else { - String tag = key.substring("model.tagvalue." - .length()); - - ObjectModelImplTagValue tagvalue = new ObjectModelImplTagValue(); - tagvalue.setName(tag); - tagvalue.setValue(value); - ((ObjectModelImpl) objectModel) - .addTagValue(tagvalue); - } - } else { - - Matcher matcher = propertiesPattern.matcher(key); - - if (log.isDebugEnabled()) { - log.debug("Propriete: '" + key + "'"); - } - - if (matcher.find()) { - // fqn is fully qualified name of class - String fqn = matcher.group(1); - fqn = StringUtil.substring(fqn, 0, -1); // remove ended - // . - // target is class, attribute or operation - String target = matcher.group(2); - String targetName = matcher.group(3); - // type is stereotype or tagvalue - String type = matcher.group(4); - String tag = matcher.group(5); - - if (log.isDebugEnabled()) { - log.debug("Propriete: '" + key + "' => " - + "fqn:" + fqn + " target:" + target - + " targetName:" + targetName - + " type:" + type + " tag:" + tag); - } - - ObjectModelClassifier omc = objectModel - .getClassifier(fqn); - if (omc instanceof ObjectModelClassifierImpl) { - // on utilise une liste car il peut y avoir plusieur - // operation avec le nom donné - List<ObjectModelElement> elems = new ArrayList<ObjectModelElement>(); - if ("class".equals(target)) { - elems.add(omc); - } else if ("attribute".equals(target)) { - ObjectModelClass classmodel = (ObjectModelClass) omc; - elems.add(classmodel - .getAttribute(targetName)); - } else if ("operation".equals(target)) { - elems.addAll(omc.getOperations(targetName)); - } - for (Object elem1 : elems) { - ObjectModelElementImpl elem = (ObjectModelElementImpl) elem1; - if ("stereotype".equals(type)) { - // pour les stereotypes - ObjectModelImplRef stereotype = new ObjectModelImplRef(); - stereotype.setName(value); - elem.addStereotype(stereotype); - continue; - } - - if ("tagvalue".equals(type)) { - // pour les tagvalues - ObjectModelImplTagValue tagvalue = new ObjectModelImplTagValue(); - tagvalue.setName(tag); - tagvalue.setValue(value); - if (log.isDebugEnabled()) { - log.debug("tagValue:" + tagvalue - + ", tag:" + tag - + ", value:" + value - + ", element:" + elem); - } - if (elem == null) { - log.warn("can not attach tagValue " - + key); - } else { - elem.addTagValue(tagvalue); - } - } - } - } else { - // TODO il faudra avoir des methodes d'acces en - // Set sur l'interface pour eviter ce message - if (log.isWarnEnabled()) { - log.warn("Can't add properties to model, it's not an ObjectModelClassifierImpl"); - } - } - } - } - } - } - } - if (log.isDebugEnabled()) { - for (ObjectModelClass m : objectModel.getClasses()) { - log.debug("loaded class in objectmodel : " + m.getName()); - } - } + ObjectModelReader reader = new ObjectModelReader(); + ObjectModel objectModel = reader.read(files); + setLastModifiedSource(reader.getLastModifiedSource()); try { - generate(objectModel, destDir); + applyTemplate(objectModel, destDir); } catch (IOException eee) { if (log.isWarnEnabled()) { log.warn("Unable to generate for file", eee); @@ -296,32 +113,31 @@ * écrire alors le fichier sera généré. * @param model * @param destDir - * @throws IOException + * @throws IOException */ - public void generate(ObjectModel model, File destDir) throws IOException { + @Override + public void applyTemplate(ObjectModel model, File destDir) throws IOException { // generateFromModel this.model = model; String filename = getFilenameForModel(model); - generateFromElement(model, destDir, filename, - ObjectModelType.OBJECT_MODEL); + // generateFromModel + generateFromElement(model, destDir, filename, ObjectModelType.OBJECT_MODEL); + // generateFromClassifier - generateFromElements(model.getClassifiers(), destDir, - ObjectModelType.OBJECT_MODEL_CLASSIFIER); + generateFromElements(model.getClassifiers(), destDir, ObjectModelType.OBJECT_MODEL_CLASSIFIER); // generateFromInterface - generateFromElements(model.getInterfaces(), destDir, - ObjectModelType.OBJECT_MODEL_INTERFACE); + generateFromElements(model.getInterfaces(), destDir, ObjectModelType.OBJECT_MODEL_INTERFACE); // generateFromClass - generateFromElements(model.getClasses(), destDir, - ObjectModelType.OBJECT_MODEL_CLASS); + generateFromElements(model.getClasses(), destDir, ObjectModelType.OBJECT_MODEL_CLASS); // generateFromEnumeration - generateFromElements(model.getEnumerations(), destDir, - ObjectModelType.OBJECT_MODEL_ENUMERATION); + generateFromElements(model.getEnumerations(), destDir, ObjectModelType.OBJECT_MODEL_ENUMERATION); + } /** @@ -345,11 +161,14 @@ // Filename depends on type of element (Classifier, Class, Interface or Enumeration) switch (type) { case OBJECT_MODEL_CLASSIFIER: - filename = getFilenameForClassifier((ObjectModelClassifier)element); break; + filename = getFilenameForClassifier((ObjectModelClassifier)element); + break; case OBJECT_MODEL_INTERFACE: - filename = getFilenameForInterface((ObjectModelInterface)element); break; + filename = getFilenameForInterface((ObjectModelInterface)element); + break; case OBJECT_MODEL_CLASS: - filename = getFilenameForClass((ObjectModelClass)element); break; + filename = getFilenameForClass((ObjectModelClass)element); + break; case OBJECT_MODEL_ENUMERATION: filename = getFilenameForEnumeration((ObjectModelEnumeration)element); } @@ -382,45 +201,44 @@ File outputFile = getDestinationFile(destDir, filename); if (!getOverwrite() && isNewerThanSource(outputFile)) { - if (log.isDebugEnabled()) { - log.debug("file " + outputFile + " is up-to-date"); + if (log.isTraceEnabled()) { + log.trace("file " + outputFile + " is up-to-date"); } return; - } else { - if (!outputFile.exists() && log.isDebugEnabled()) { - log.debug("not up-to-date " + outputFile.lastModified() - + " <" + outputFile + ">"); + } + if (!outputFile.exists() && log.isTraceEnabled()) { + log.trace("not up-to-date " + outputFile.lastModified() + + " <" + outputFile + ">"); + } + try { + StringWriter out = new StringWriter(); + MonitorWriter monitorOut = new MonitorWriter(out); + + switch (type) { + case OBJECT_MODEL: + generateFromModel(monitorOut,(ObjectModel)element); + break; + case OBJECT_MODEL_CLASSIFIER: + generateFromClassifier(monitorOut, (ObjectModelClassifier)element); + break; + case OBJECT_MODEL_INTERFACE: + generateFromInterface(monitorOut, (ObjectModelInterface)element); + break; + case OBJECT_MODEL_CLASS: + generateFromClass(monitorOut, (ObjectModelClass)element); + break; + case OBJECT_MODEL_ENUMERATION: + generateFromEnumeration(monitorOut, (ObjectModelEnumeration)element); + break; } - try { - StringWriter out = new StringWriter(); - MonitorWriter monitorOut = new MonitorWriter(out); - - switch (type) { - case OBJECT_MODEL: - generateFromModel(monitorOut,(ObjectModel)element); - break; - case OBJECT_MODEL_CLASSIFIER: - generateFromClassifier(monitorOut, (ObjectModelClassifier)element); - break; - case OBJECT_MODEL_INTERFACE: - generateFromInterface(monitorOut, (ObjectModelInterface)element); - break; - case OBJECT_MODEL_CLASS: - generateFromClass(monitorOut, (ObjectModelClass)element); - break; - case OBJECT_MODEL_ENUMERATION: - generateFromEnumeration(monitorOut, (ObjectModelEnumeration)element); - break; - } - - write(outputFile, monitorOut); - } catch (Exception eee) { - log.warn("Erreur lors de la génération du fichier " - + outputFile); - throw new RuntimeException( - "Erreur lors de la génération du fichier " - + outputFile, eee); - } + + write(outputFile, monitorOut); + } catch (Exception eee) { + log.warn("Erreur lors de la génération du fichier " + + outputFile); + throw new RuntimeException( + "Erreur lors de la génération du fichier " + + outputFile, eee); } } } @@ -428,8 +246,8 @@ /** * Test if given element can be generated. * - * An element can be generated if his package is in the {@link generatedPackages} list - * or if {@link generatedPackages} is null or empty. + * An element can be generated if his package is in the {@link #generatedPackages} list + * or if {@link #generatedPackages} is null or empty. * * @param element element to test * @return generation allowed @@ -457,6 +275,7 @@ * @return */ public String getFilenameForModel(ObjectModel model) { + // TODO throw exception when model.getName() == null or empty return model.getName(); } @@ -478,7 +297,8 @@ * @return */ public String getFilenameForInterface(ObjectModelInterface interfacez) { - return interfacez.getQualifiedName().replace('.', File.separatorChar); + return getFilenameForClassifier(interfacez); +// return interfacez.getQualifiedName().replace('.', File.separatorChar); } /** @@ -488,7 +308,8 @@ * @return */ public String getFilenameForClass(ObjectModelClass clazz) { - return clazz.getQualifiedName().replace('.', File.separatorChar); + return getFilenameForClassifier(clazz); +// return clazz.getQualifiedName().replace('.', File.separatorChar); } /** @@ -502,26 +323,25 @@ } public String getFilenameForEnumeration(ObjectModelEnumeration enumeration) { - return enumeration.getQualifiedName().replace('.', File.separatorChar); + return getFilenameForClassifier(enumeration); +// return enumeration.getQualifiedName().replace('.', File.separatorChar); } - public void generateFromModel(Writer output, ObjectModel model) - throws IOException { + public void generateFromModel(Writer output, ObjectModel model) throws IOException { } - public void generateFromInterface(Writer output, - ObjectModelInterface interfacez) throws IOException { + public void generateFromInterface(Writer output, ObjectModelInterface interfacez) throws IOException { } - public void generateFromClass(Writer output, ObjectModelClass clazz) - throws IOException { + public void generateFromEnum(Writer output, ObjectModelEnumeration interfacez) throws IOException { } - public void generateFromClassifier(Writer output, - ObjectModelClassifier clazz) throws IOException { + public void generateFromClass(Writer output, ObjectModelClass clazz) throws IOException { } - public void generateFromEnumeration(Writer output, - ObjectModelEnumeration enumeration) throws IOException { + public void generateFromClassifier(Writer output, ObjectModelClassifier clazz) throws IOException { } + + public void generateFromEnumeration(Writer output, ObjectModelEnumeration enumeration) throws IOException { + } } Copied: trunk/eugene/src/main/java/org/nuiton/eugene/ObjectModelReader.java (from rev 754, branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ObjectModelReader.java) =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/ObjectModelReader.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/ObjectModelReader.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,242 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ + +package org.nuiton.eugene; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import org.apache.commons.digester.Digester; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelElement; +import org.nuiton.eugene.models.object.xml.DigesterObjectModelRuleSet; +import org.nuiton.eugene.models.object.xml.ObjectModelClassifierImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelElementImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelImplRef; +import org.nuiton.eugene.models.object.xml.ObjectModelImplTagValue; +import org.nuiton.util.FileUtil; +import org.nuiton.util.RecursiveProperties; +import org.nuiton.util.StringUtil; +import org.xml.sax.SAXException; + +/** + * ObjectModelReader + * + * Created: 26 oct. 2009 + * + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class ObjectModelReader extends ModelReader<ObjectModel> { + + private static final Log log = LogFactory.getLog(ObjectModelReader.class); + + /** + * L'expression réguliere match les chaines de type + * <package.ClassName>.<class|attribute|operation>.[name].<stereotype|tagvalue>.[tag] + * fr.isisfish.entities.Population.class.stereotype=entity + * fr.isisfish.entities.Population.class.tagvalue.persistenceType=flatfile + * fr.isisfish.entities.Population.attribute.name.stereotype=... + * fr.isisfish.entities.Population.attribute.name.tagvalue.pk=topiaId + * fr.isisfish.entities.Population.operation.getRegion.stereotype=... + * fr.isisfish.entities.Population.operation.getRegion.tagvalue.pk=... + */ + protected Pattern propertiesPattern = Pattern + .compile("((?:[_a-zA-Z0-9]+\\.)+(?:_?[A-Z][_a-zA-Z0-9]*\\.)+)(?:(class|attribute|operation)\\.)(?:([_a-z0-9][_a-zA-Z0-9]*)\\.)?(?:(stereotype|tagvalue)\\.?)([_a-z0-9][_a-zA-Z0-9]*)?"); + + + /** + * @param files les noms des fichiers existant contenant du XML représentant + * des ObjectModel. Il est automatiquement recherche un fichier de + * propriété associé a ce fichier pour pouvoir ajouter des + * stereotype ou des tag value sur les class, attribute ou operation + */ + @Override + public ObjectModel read(File[] files) { + setLastModifiedSource(files); + ObjectModel objectModel = new ObjectModelImpl(); + + // Digester parser configuration + Digester digester = new Digester(); + digester.addRuleSet(new DigesterObjectModelRuleSet()); + + for (File file : files) { + try { + digester.push(objectModel); + objectModel = (ObjectModel) digester.parse(file); + } catch (IOException e) { + log.warn("Unable to parse ObjectModel input file : " + file, e); + } catch (SAXException e) { + log.warn("Unable to parse ObjectModel input file : " + file, e); + } + + // recherche est charge le fichier propriete associe au modele + File dir = file.getParentFile(); + String ext = FileUtil.extension(file); + String name = FileUtil.basename(file, "." + ext); + File propFile = new File(dir, name + ".properties"); + RecursiveProperties prop = new RecursiveProperties(); + if (!propFile.exists()) { + if (log.isInfoEnabled()) { + log.info("Pas de fichier de propriete " + propFile + + " associé au model"); + } + } else { + if (log.isInfoEnabled()) { + log.info("Lecture du fichier de propriete " + propFile + + " associé au model"); + } + try { + prop.load(new FileInputStream(propFile)); + } catch (IOException eee) { + log.warn("Impossible de lire le fichier de propriete " + + propFile, eee); + } + + // on ajoute les proprietes du fichier associe au model + for (Enumeration<Object> e = prop.keys(); e.hasMoreElements();) { + String key = (String) e.nextElement(); + String value = prop.getProperty(key); + + if (key.startsWith("model")) { + if (!key.startsWith("model.tagvalue.")) { + log.warn("only tagvalue is allowed on model in properties"); + } else { + String tag = key.substring("model.tagvalue." + .length()); + + ObjectModelImplTagValue tagvalue = new ObjectModelImplTagValue(); + tagvalue.setName(tag); + tagvalue.setValue(value); + ((ObjectModelImpl) objectModel) + .addTagValue(tagvalue); + } + } else { + + Matcher matcher = propertiesPattern.matcher(key); + + if (log.isDebugEnabled()) { + log.debug("Propriete: '" + key + "'"); + } + + if (matcher.find()) { + // fqn is fully qualified name of class + String fqn = matcher.group(1); + fqn = StringUtil.substring(fqn, 0, -1); // remove ended + // . + // target is class, attribute or operation + String target = matcher.group(2); + String targetName = matcher.group(3); + // type is stereotype or tagvalue + String type = matcher.group(4); + String tag = matcher.group(5); + + if (log.isDebugEnabled()) { + log.debug("Propriete: '" + key + "' => " + + "fqn:" + fqn + " target:" + target + + " targetName:" + targetName + + " type:" + type + " tag:" + tag); + } + + ObjectModelClassifier omc = objectModel + .getClassifier(fqn); + if (omc instanceof ObjectModelClassifierImpl) { + // on utilise une liste car il peut y avoir plusieur + // operation avec le nom donné + List<ObjectModelElement> elems = new ArrayList<ObjectModelElement>(); + if ("class".equals(target)) { + elems.add(omc); + } else if ("attribute".equals(target)) { + ObjectModelClass classmodel = (ObjectModelClass) omc; + elems.add(classmodel + .getAttribute(targetName)); + } else if ("operation".equals(target)) { + elems.addAll(omc.getOperations(targetName)); + } + for (Object elem1 : elems) { + ObjectModelElementImpl elem = (ObjectModelElementImpl) elem1; + if ("stereotype".equals(type)) { + // pour les stereotypes + ObjectModelImplRef stereotype = new ObjectModelImplRef(); + stereotype.setName(value); + elem.addStereotype(stereotype); + continue; + } + + if ("tagvalue".equals(type)) { + // pour les tagvalues + ObjectModelImplTagValue tagvalue = new ObjectModelImplTagValue(); + tagvalue.setName(tag); + tagvalue.setValue(value); + if (log.isDebugEnabled()) { + log.debug("tagValue:" + tagvalue + + ", tag:" + tag + + ", value:" + value + + ", element:" + elem); + } + if (elem == null) { + log.warn("can not attach tagValue " + + key); + } else { + elem.addTagValue(tagvalue); + } + } + } + } else { + // TODO il faudra avoir des methodes d'acces en + // Set sur l'interface pour eviter ce message + if (log.isWarnEnabled()) { + log.warn("Can't add properties to model, it's not an ObjectModelClassifierImpl"); + } + } + } + } + } + } + } + if (log.isDebugEnabled()) { + for (ObjectModelClass m : objectModel.getClasses()) { + log.debug("loaded class in objectmodel : " + m.getName()); + } + } + return objectModel; + /*try { + generate(objectModel, destDir); + } catch (IOException eee) { + if (log.isWarnEnabled()) { + log.warn("Unable to generate for file", eee); + } + }*/ + } +} Copied: trunk/eugene/src/main/java/org/nuiton/eugene/ObjectModelTransformer.java (from rev 754, branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ObjectModelTransformer.java) =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/ObjectModelTransformer.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/ObjectModelTransformer.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,148 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ +package org.nuiton.eugene; + +import org.nuiton.eugene.models.Model; +import org.nuiton.eugene.models.object.*; + +import java.util.Collection; + +/** + * ObjectModelTransformer + * <p/> + * Created: 28 oct. 2009 + * + * + * L'initialisation du modèle de sortie et du générateur de sortie associée, + * se fait dans la superclass grâce à la méthode init. + * + * @author fdesbois + * @version $Revision$ + * <p/> + * Mise a jour: $Date$ + * par : $Author$ + * @param <O> + */ +public abstract class ObjectModelTransformer<O extends Model> extends Transformer<ObjectModel, O> { + + /** + * Le model associé au transformer est le model d'entree. Le modele de sortie + * peut etre initialiser via la methode {@link org.nuiton.eugene.Transformer#initOutputModel()}. + * Il est également possible de surcharger la methode {@link #debugOutputModel()} + * pour verifier le resultat de la transformation. + * Par defaut la methode appelle la methode + * {@link #transformFromModel(ObjectModel)} puis boucle sur chaque + * class en appelant la methode + * {@link #transformFromClass(ObjectModelClass)} puis boucle sur chaque + * interface en appelant a methode + * {@link #transformFromInterface(ObjectModelInterface)} et enfin sur chaque + * enumeration en appelant la methode + * {@link #transformFromEnumeration(ObjectModelEnumeration)} + */ + @Override + public void transform() { + + // transformFromModel + transformFromElement(getModel(), ObjectModelType.OBJECT_MODEL); + + // transformFromClassifier + transformFromElements(getModel().getClassifiers(), ObjectModelType.OBJECT_MODEL_CLASSIFIER); + + // transformFromInterface + transformFromElements(getModel().getInterfaces(), ObjectModelType.OBJECT_MODEL_INTERFACE); + + // transformFromClass + transformFromElements(getModel().getClasses(), ObjectModelType.OBJECT_MODEL_CLASS); + + // transformFromEnumeration + transformFromElements(getModel().getEnumerations(), ObjectModelType.OBJECT_MODEL_ENUMERATION); + + debugOutputModel(); + } + + protected abstract void debugOutputModel(); + + /** + * Parcours une collection d'éléments pour la transformation suivant un type d'éléments. + * Types possibles : ObjectModelClassifier, ObjectModelClass, ObjectModelInterface et + * ObjectModelEnumeration. + * Une méthode dépend du type et peut être surchargée : + * transformFromXXX (XXX étant un type prédéfini pour une méthode existante). + * + * @param elements Collection d'éléments d'un des types ci-dessus + * @param type type explicite d'ObjectModel + * @see ObjectModelType + */ + private void transformFromElements(Collection<? extends ObjectModelElement> elements, + ObjectModelType type) { + + for (ObjectModelElement element : elements) { + transformFromElement(element, type); + } + } + + /** + * Génération pour un élément du modèle (ou le modèle lui-même). + * Types possibles : ObjectModel, ObjectModelClassifier, ObjectModelClass, + * ObjectModelInterface et ObjectModelEnumeration. + * La méthode transformFromXXX dépend du type d'élément et peut être surchargée. + * + * @param element element à généré + * @param type type d'ObjectModel + * @see ObjectModelType + */ + protected void transformFromElement(Object element, ObjectModelType type) { + + switch (type) { + case OBJECT_MODEL: + transformFromModel((ObjectModel) element); + break; + case OBJECT_MODEL_CLASSIFIER: + transformFromClassifier((ObjectModelClassifier) element); + break; + case OBJECT_MODEL_INTERFACE: + transformFromInterface((ObjectModelInterface) element); + break; + case OBJECT_MODEL_CLASS: + transformFromClass((ObjectModelClass) element); + break; + case OBJECT_MODEL_ENUMERATION: + transformFromEnumeration((ObjectModelEnumeration) element); + break; + } + } + + public void transformFromModel(ObjectModel model) { + } + + public void transformFromInterface(ObjectModelInterface interfacez) { + } + + public void transformFromClass(ObjectModelClass clazz) { + } + + public void transformFromClassifier(ObjectModelClassifier clazz) { + } + + public void transformFromEnumeration(ObjectModelEnumeration enumeration) { + } + +} Modified: trunk/eugene/src/main/java/org/nuiton/eugene/ObjectModelType.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/ObjectModelType.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/ObjectModelType.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene; @@ -22,14 +24,31 @@ * Contains all types available for generating specific ObjectModelElement file. * Needed because of inheritance between class, interface and classifier. * Method instanceof (previously used) is inadequat so expliciting the ObjectModel type is much better. - * + * <p/> * Created: may 4th 2009 * * @author Florian DESBOIS <fdesbois@codelutin.com> - * * @version $Revision: 496 $ */ public enum ObjectModelType { - OBJECT_MODEL, OBJECT_MODEL_ENUMERATION, OBJECT_MODEL_CLASSIFIER, - OBJECT_MODEL_CLASS, OBJECT_MODEL_INTERFACE + /** + * a model + */ + OBJECT_MODEL, + /** + * an enumration + */ + OBJECT_MODEL_ENUMERATION, + /** + * a generic classifier + */ + OBJECT_MODEL_CLASSIFIER, + /** + * a class + */ + OBJECT_MODEL_CLASS, + /** + * an interface + */ + OBJECT_MODEL_INTERFACE } Modified: trunk/eugene/src/main/java/org/nuiton/eugene/PackageValidator.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/PackageValidator.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/PackageValidator.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/StateModelGenerator.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/StateModelGenerator.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/StateModelGenerator.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,169 +14,94 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.StringWriter; -import java.io.Writer; -import java.util.Enumeration; - -import org.apache.commons.digester.Digester; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.eugene.models.object.ObjectModelClassifier; import org.nuiton.eugene.models.state.StateModel; import org.nuiton.eugene.models.state.StateModelState; import org.nuiton.eugene.models.state.StateModelStateChart; -import org.nuiton.eugene.models.state.xml.DigesterStateModelRuleSet; -import org.nuiton.eugene.models.state.xml.StateModelImpl; -import org.nuiton.util.FileUtil; -import org.nuiton.util.RecursiveProperties; -import org.xml.sax.SAXException; +import java.io.File; +import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; + /** * StateModelGenerator. - * + * <p/> * Pour utiliser ce type de générateur, il faut implanter au moins une des * méthodes generateFrom... et le getFilenameFor... associé si l'on souhaite un * nom de fichier convenable. Si dans une méthode generateFrom... on utilise pas * le writer (output) alors aucun fichier n'est généré. - * + * <p/> * Le nom de l'argument writer doit absolument etre output et pas autre chose si * vous souhaitez utiliser le processeur - * {@link org.codelutin.processor.filters.GeneratorTemplatesFilter} pour vous + * {@code org.nuiton.processor.filters.GeneratorTemplatesFilter} pour vous * s'implifier l'écriture des templates. - * + * * @author chatellier * @version $Revision$ - * - * Last update : $Date$ By : $Author$ + * <p/> + * Last update : $Date$ By : $Author$ */ -public class StateModelGenerator extends ChildGenerator { +public class StateModelGenerator extends AbstractGenerator<StateModel> { - /** Logger for this class */ + /** + * Logger for this class + */ private static Log log = LogFactory.getLog(StateModelGenerator.class); - /** Model */ - protected StateModel model; - /** * Empty constructor */ public StateModelGenerator() { + super(); } /** - * Constructor with parent generator. - * + * Constructor with parent generator. + * * @param parent parent generator */ - public StateModelGenerator(Generator parent) { + public StateModelGenerator(AbstractGenerator<StateModel> parent) { super(parent); } - /** - * @return the model - */ - public StateModel getModel() { - return model; - } - /* * @see org.nuiton.eugene.Generator#generate(java.io.File[], java.io.File) */ @Override + @Deprecated public void generate(File[] files, File destDir) { - Digester digester = new Digester(); - digester.addRuleSet(new DigesterStateModelRuleSet()); + StateModelReader reader = new StateModelReader(); + StateModel stateModel = reader.read(files); + setLastModifiedSource(reader.getLastModifiedSource()); - StateModelImpl stateModel = new StateModelImpl(); - - // process each file - for (File file : files) { - - // fin a deplacer - try { - digester.push(stateModel); - digester.parse(file); - - // try to load property file - loadPropertyFile(file, stateModel); - } catch (IOException e) { - log.warn("Can't read model file", e); - } catch (SAXException e) { - log.warn("Can't read model file", e); - } - } - // generate code try { - generate(stateModel, destDir); + applyTemplate(stateModel, destDir); } catch (IOException e) { log.warn("Can't generate code for files", e); } } - /** - * Try to load property file, associated to current statemodel file - * - * @param stateModelFile - * @param stateModel - */ - protected void loadPropertyFile(File stateModelFile, - StateModelImpl stateModel) { - // recherche et charge le fichier propriete associe au modele - File dir = stateModelFile.getParentFile(); - String ext = FileUtil.extension(stateModelFile); - String name = FileUtil.basename(stateModelFile, "." + ext); - File propFile = new File(dir, name + ".properties"); - RecursiveProperties prop = new RecursiveProperties(); - if (!propFile.exists()) { - if (log.isInfoEnabled()) { - log.info("No property file associated to model : " + propFile); - } - } else { - if (log.isInfoEnabled()) { - log.info("Reading model property file " + propFile); - } - try { - prop.load(new FileInputStream(propFile)); - } catch (IOException e) { - log.warn("Cannot read property file " + propFile, e); - } - - // on ajoute les proprietes du fichier associe au model - for (Enumeration<Object> e = prop.keys(); e.hasMoreElements();) { - String key = (String) e.nextElement(); - String value = prop.getProperty(key); - - if (!key.startsWith("model.tagvalue.")) { - log.warn("only tagvalue is allowed on model in properties"); - } else { - String tag = key.substring("model.tagvalue.".length()); - stateModel.addTagValue(tag, value); - } - } - } - } - /** * Par défaut, appel {@link #generateFromModel(MonitorWriter, org.nuiton.eugene.models.state.StateModel)} pour le * model et {@link #generateFromState(Writer,StateModelState)} pour tous les * etats du modele. - * + * * @param stateModel Le modele d'état - * @param destDir le dossier de destination + * @param destDir le dossier de destination * @throws IOException */ - public void generate(StateModel stateModel, File destDir) - throws IOException { + @Override + public void applyTemplate(StateModel stateModel, File destDir) throws IOException { model = stateModel; @@ -229,35 +155,34 @@ /** * Test if given element can be generated. - * + * * @param chart chart to test * @return generation allowed */ protected boolean canGenerateElement(StateModelStateChart chart) { - + boolean canGenerate = true; // disabled until tested //String chartPackage = chart.getPackageName(); //canGenerate = super.canGeneratePackage(chartPackage); - + return canGenerate; } /** * Generate model code - * + * * @param monitorOut * @param stateModel */ - protected void generateFromModel(MonitorWriter monitorOut, - StateModel stateModel) { + protected void generateFromModel(MonitorWriter monitorOut, StateModel stateModel) { } /** * Return filename from model - * + * * @param stateModel * @return model file name */ @@ -267,28 +192,23 @@ /** * Return filename from state - * - * @param state - * the state + * + * @param state the state * @param packageName * @return the filename */ public String getFilenameFromState(StateModelState state, String packageName) { - return (packageName + '.' + state.getName()).replace('.', - File.separatorChar); + return (packageName + '.' + state.getName()).replace('.', File.separatorChar); } /** * Generate a state code - * - * @param monitorOut - * the output writer - * @param state - * the state + * + * @param monitorOut the output writer + * @param state the state * @throws IOException */ - public void generateFromState(Writer monitorOut, StateModelState state) - throws IOException { + public void generateFromState(Writer monitorOut, StateModelState state) throws IOException { } } Copied: trunk/eugene/src/main/java/org/nuiton/eugene/StateModelReader.java (from rev 754, branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/StateModelReader.java) =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/StateModelReader.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/StateModelReader.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,122 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ + +package org.nuiton.eugene; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Enumeration; +import org.apache.commons.digester.Digester; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.models.state.StateModel; +import org.nuiton.eugene.models.state.xml.DigesterStateModelRuleSet; +import org.nuiton.eugene.models.state.xml.StateModelImpl; +import org.nuiton.util.FileUtil; +import org.nuiton.util.RecursiveProperties; +import org.xml.sax.SAXException; + +/** + * StateModelReader + * + * Created: 26 oct. 2009 + * + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class StateModelReader extends ModelReader<StateModel> { + + private static final Log log = LogFactory.getLog(StateModelReader.class); + + @Override + public StateModel read(File[] files) { + Digester digester = new Digester(); + digester.addRuleSet(new DigesterStateModelRuleSet()); + + StateModelImpl stateModel = new StateModelImpl(); + + // process each file + for (File file : files) { + + // fin a deplacer + try { + digester.push(stateModel); + digester.parse(file); + + // try to load property file + loadPropertyFile(file, stateModel); + } catch (IOException e) { + log.warn("Can't read model file", e); + } catch (SAXException e) { + log.warn("Can't read model file", e); + } + } + return stateModel; + } + + /** + * Try to load property file, associated to current statemodel file + * + * @param stateModelFile + * @param stateModel + */ + protected void loadPropertyFile(File stateModelFile, + StateModelImpl stateModel) { + // recherche et charge le fichier propriete associe au modele + File dir = stateModelFile.getParentFile(); + String ext = FileUtil.extension(stateModelFile); + String name = FileUtil.basename(stateModelFile, "." + ext); + File propFile = new File(dir, name + ".properties"); + RecursiveProperties prop = new RecursiveProperties(); + + if (!propFile.exists()) { + if (log.isInfoEnabled()) { + log.info("No property file associated to model : " + propFile); + } + } else { + if (log.isInfoEnabled()) { + log.info("Reading model property file " + propFile); + } + try { + prop.load(new FileInputStream(propFile)); + } catch (IOException e) { + log.warn("Cannot read property file " + propFile, e); + } + + // on ajoute les proprietes du fichier associe au model + for (Enumeration<Object> e = prop.keys(); e.hasMoreElements();) { + String key = (String) e.nextElement(); + String value = prop.getProperty(key); + + if (!key.startsWith("model.tagvalue.")) { + log.warn("only tagvalue is allowed on model in properties"); + } else { + String tag = key.substring("model.tagvalue.".length()); + stateModel.addTagValue(tag, value); + } + } + } + } +} Copied: trunk/eugene/src/main/java/org/nuiton/eugene/Template.java (from rev 754, branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/Template.java) =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/Template.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/Template.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,182 @@ +/* *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ + +package org.nuiton.eugene; + +import org.apache.commons.lang.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.models.Model; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Properties; + +/** + * Generator. TODO javadoc + * + * Created: 5 août 2004 + * + * @param <M> Model associated to the generator (input model) + * + * @author Cedric Pineau <pineau@codelutin.com> + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public abstract class Template<M extends Model> { + + protected static Log log = LogFactory.getLog(Template.class); + + public static final String PROP_DEFAULT_PACKAGE = "defaultPackage"; + public static final String PROP_OVERWRITE = "overwrite"; + public static final String PROP_ENCODING = "encoding"; + public static final String PROP_LAST_MODIFIED_SOURCE = "lastModifiedSource"; + public static final String PROP_GENERATED_PACKAGES = "generatedPackages"; + public static final String PROP_EXCLUDE_TEMPLATES = "excludeTemplates"; + + protected Properties properties = new Properties(); + //protected boolean overwrite = true; + + protected List<String> excludeTemplates; + + /** + * List of package to allow generation. + * + * If {@code null} or empty, generate all packages. + */ + protected List<String> generatedPackages; + + protected String encoding; + + /** date de derniere modification de la source la plus recente */ + //protected long lastModifiedSource = 0; + + /** Model */ + protected M model; + + //TODO when deprecate methods, says what to use now or why it was deprecated for + @Deprecated + public abstract void generate(File[] file, File destDir); + + public abstract void applyTemplate(M model, File destDir) throws IOException; + + //TODO when deprecate methods, says what to use now or why it was deprecated for + @Deprecated + public void setOverwrite(boolean v) { + //overwrite = v; + properties.setProperty(PROP_OVERWRITE, String.valueOf(v)); + } + + public boolean getOverwrite() { + return Boolean.parseBoolean(properties.getProperty(PROP_OVERWRITE, "true")); + } + + public String getEncoding() { + return properties.getProperty(PROP_ENCODING, ""); + } + + //TODO when deprecate methods, says what to use now or why it was deprecated for + @Deprecated + public void setEncoding(String encoding) { + //this.encoding = encoding; + properties.setProperty(PROP_ENCODING, encoding); + } + + public void setProperties(Properties p) { + this.properties = p; + } + + /** + * Permet de recuperer la proprieté passé en argument + * + * @param name le nom de la propriete + * @return la valeur de la propriété + */ + public String getProperty(String name) { + return properties.getProperty(name); + } + + /** + * Set list of package to allow generation. + * + * If {@code null} or empty, generate all packages. + * + * @param generatedPackages list of package to generate + * @deprecated + */ + @Deprecated + public void setGeneratedPackages(List<String> generatedPackages) { + this.generatedPackages = generatedPackages; + } + + protected List<String> getGeneratedPackages() { + if (generatedPackages == null) { + generatedPackages = new ArrayList<String>(); + String genPackages = getProperty(PROP_GENERATED_PACKAGES); + if (!StringUtils.isEmpty(genPackages)) { + //TC-20091125 avoid manual array copy + generatedPackages.addAll(Arrays.asList(genPackages.split(","))); +// for (String s : genPackages.split(",")) { +// generatedPackages.add(s); +// } + } + } + return this.generatedPackages; + } + + @Deprecated + public void setLastModifiedSource(long lastModifiedSource) { + properties.setProperty(PROP_LAST_MODIFIED_SOURCE, String.valueOf(lastModifiedSource)); + } + + public long getLastModifiedSource() { + return Long.parseLong(properties.getProperty(PROP_LAST_MODIFIED_SOURCE, "0")); + } + + public List<String> getExcludeTemplates() { + if (excludeTemplates == null) { + excludeTemplates = new ArrayList<String>(); + String excludes = getProperty(PROP_EXCLUDE_TEMPLATES); + if (!StringUtils.isEmpty(excludes)) { + //TC-20091125 avoid manual array copy + excludeTemplates.addAll(Arrays.asList(excludes.split(","))); +// for (String s : excludes.split(",")) { +// excludeTemplates.add(s); +// } + } + } + return excludeTemplates; + } + + @Deprecated + public void setExcludeTemplates(List<String> excludeTemplates) { + this.excludeTemplates = excludeTemplates; + } + + public M getModel() { + return this.model; + } + +} Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/Template.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Copied: trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java (from rev 754, branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/Transformer.java) =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,191 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ + +package org.nuiton.eugene; + +import java.io.File; +import java.io.IOException; +import java.util.Properties; +import org.nuiton.eugene.models.Model; + +/** + * Transformer + * + * Created: 28 oct. 2009 + * + * @param <I> input model to transform + * @param <O> output model transformed + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public abstract class Transformer<I extends Model, O extends Model> extends Template<I> { + + /** + * Output generator, to generate files from Output model. Could be an other Transformer. + */ + protected Template<O> outputTemplate; + + /** + * Previous transformer to modify input model + */ + protected Transformer<I, I> previousTransformer; + + /** + * Output model. + */ + protected O outputModel; + + /** + * Properties for output generator. + */ + protected Properties outputProperties; + + public Transformer() { + super(); + } + + /** + * Initialization of the Transformer : + * <pre> + * - initOutputModel : default, do nothing + * - initOutputGenerator : must be override to instanciate output Generator + * - initOutputModel : must be override to instanciate output Model + * </pre> + * @param model input model + * @since 2.0.0 + */ + protected void init(I model) { + this.model = model; + this.previousTransformer = initPreviousTransformer(); + this.outputTemplate = initOutputTemplate(); + this.outputTemplate.setProperties(getOutputProperties()); + this.outputModel = initOutputModel(); + } + + protected Transformer<I, I> initPreviousTransformer() { + return null; + } + + /** + * Initialization of the Output generator. Must be override to instanciate the Generator that will + * make the generation of the Output model. + * @return the output generator + * @since 2.0.0 + */ + protected abstract Template<O> initOutputTemplate(); + + /** + * Initialization of the Output model. Must be override to instanciate and initialize the output model. + * For ObjectModel you can use, ObjectModelBuilder to build easily an empty ObjectModel. + * @return the output model + * @since 2.0.0 + */ + protected abstract O initOutputModel(); + + @Override + public void setProperties(Properties outputProperties) { + this.outputProperties = outputProperties; + } + + /** + * Output properties for output generator. Initially set from build configuration. + * @return output properties + * @since 2.0.0 + */ + protected Properties getOutputProperties() { + if (outputProperties == null) { + outputProperties = new Properties(); + } + return outputProperties; + } + + public Template<O> getOutputTemplate() { + return this.outputTemplate; + } + + public O getOutputModel() { + return this.outputModel; + } + + /** + * Old method from previous EUGene 1.0.1 version. Used before creation of ModelReader. + * @param file + * @param destDir + * @deprecated no need to manage list of files in input, prefer use input model. + */ + @Override + @Deprecated + public void generate(File[] file, File destDir) { + this.outputTemplate = initOutputTemplate(); + this.outputTemplate.setProperties(getOutputProperties()); + getOutputTemplate().generate(file, destDir); + } + + + /** + * This method apply the current transformation. You can use an other transformer for previous transformation + * by overriding {@link #initPreviousTransformer} method. In this case, the current transformation will be apply + * on the output model of the previous one. In the simple other case, the current transformation transform the input model + * into an output model. You must override {@link #initOutputModel} and {@link #initOutputTemplate } methods to initialize + * output model and output template to apply (generally a generator). + * @param model input model to transform and generate + * @param destDir destination directory to put generated files + * @throws IOException + * @since 2.0.0 + */ + @Override + public void applyTemplate(I model, File destDir) throws IOException { + // previous transformation + if (previousTransformer != null) { + // transformation only, no application of next template + previousTransformer.transform(model); + // current transformation + transform(previousTransformer.getOutputModel()); + } else { + // current transformation + transform(model); + } + // after template application + getOutputTemplate().applyTemplate(getOutputModel(), destDir); + } + + /** + * Transformation method from an input Model. This method also initialize previous transformer, output model + * and output generator with ${@link #init(org.nuiton.eugene.models.Model) } method. + * @param model input model + * @since 2.0.0 + */ + public void transform(I model) { + init(model); + transform(); + } + + /** + * Method to override for the transformation. Initialization (PreviousTransformer, OutputModel, OutputGenerator) + * is made before transformation call. This method only transform an input model into an output model. + * No generation is done neither outputGenerator call. + * @since 2.0.0 + */ + protected abstract void transform(); +} Deleted: trunk/eugene/src/main/java/org/nuiton/eugene/UIModelGenerator.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/UIModelGenerator.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/UIModelGenerator.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,176 +0,0 @@ -/* - * \*##% Eugene - * Copyright (C) 2004 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* - */ - -package org.nuiton.eugene; - -import java.io.File; -import java.io.IOException; -import java.io.StringWriter; -import java.io.Writer; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.apache.commons.digester.Digester; -import org.dom4j.DocumentException; -import org.nuiton.eugene.models.ui.UIModel; -import org.nuiton.eugene.models.ui.UIModelObject; -import org.nuiton.eugene.models.ui.UIModelProperty; -import org.nuiton.eugene.models.ui.impl.UIModelImpl; -import org.nuiton.eugene.models.ui.javaxml.JavaXMLParser; -import org.nuiton.util.ResourceNotFoundException; -import org.xml.sax.SAXException; - -/** - * UIModelGenerator.java - * - * @author cecrid - * @version $Revision$ - * - * Last update : $Date$ - * By : $Author$ - */ -public class UIModelGenerator extends ChildGenerator { - - protected UIModel model = null; - - public UIModelGenerator() { - super(); - - } - - public UIModelGenerator(Generator parent) { - super(parent); - - } - - public UIModel getModel() { - return model; - } - - @Override - public void generate(File[] tabUIFilesName, File destDir) { - setLastModifiedSource(tabUIFilesName); - for (int i = 0; i < tabUIFilesName.length; i++) { - try { - String fileName = tabUIFilesName[i].getName(); - UIModel ui = null; - if (fileName.endsWith(".javaxml")) { - JavaXMLParser parser = new JavaXMLParser(); - ui = parser.parse(tabUIFilesName[i]); - } else { - - // New parser : commons-digester - Digester digester = new Digester(); - ui = new UIModelImpl(); - digester.push(ui); - digester.parse(tabUIFilesName[i]); - } - if (ui != null) { - generate(ui, destDir); - } - } catch (ResourceNotFoundException eee) { - System.out.println("Unable to parse topiaUI input file : " + i); - eee.printStackTrace(); - } catch (IOException eee) { - System.out.println("Unable to generate for file"); - eee.printStackTrace(); - } catch (DocumentException eee) { - System.out.println("Error during the processing of a DOM4J"); - eee.printStackTrace(); - } catch (SAXException e) { - System.out.println("Error during the parsing with digester"); - e.printStackTrace(); - } - } - } - - public void generate(UIModel ui, File destDir) throws IOException { - { - this.model = ui; - - String filename = getFilenameForUIModel(ui); - File outputFile = getDestinationFile(destDir, filename); - if (getOverwrite() || !isNewerThanSource(outputFile)) { - StringWriter out = new StringWriter(); - MonitorWriter monitorOut = new MonitorWriter(out); - generateFromUIModel(monitorOut, model); - write(outputFile, monitorOut); - } else { - Logger.getLogger(getClass().getName() + ".generate").log( - Level.FINE, "file " + outputFile + "is up-to-date"); - } - } - - for (UIModelObject uimodelobject : ui.getObjects()) { - - String filename = getFilenameForUIModelObject(uimodelobject); - File outputFile = getDestinationFile(destDir, filename); - if (getOverwrite() || !isNewerThanSource(outputFile)) { - StringWriter out = new StringWriter(); - MonitorWriter monitorOut = new MonitorWriter(out); - generateFromUIModelObject(monitorOut, uimodelobject); - write(outputFile, monitorOut); - } else { - Logger.getLogger(getClass().getName() + ".generate").log( - Level.FINE, "file " + outputFile + "is up-to-date"); - } - } - } - - /** - * Par defaut cette methode retourne le getName du model. Si l'on souhaite - * utiliser la methode generateFromUIModel il vaut mieux surcharger cette - * methode - * @param model le modele a utiliser - * @return le getName du model - */ - public String getFilenameForUIModel(UIModel model) { - return model.getRoot().getName().concat(".java"); - } - - public String getFilenameForUIModelObject(UIModelObject object) { - return object.getName().concat(".java"); - } - - public void generateFromUIModel(Writer output, UIModel model) - throws IOException { - } - - public void generateFromUIModelObject(Writer output, UIModelObject object) - throws IOException { - } - - public String capitalizeName(UIModelObject o) { - String name = o.getName(); - if (name == null) { - throw new GeneratorException("L'objet " + o.getType() - + " doit avoir un nom valide"); - } - return GeneratorUtil.capitalize(name); - } - - public String capitalizeName(UIModelProperty p) { - String name = p.getName(); - if (name == null) { - throw new GeneratorException("La propriete " + p - + " doit avoir un nom valide"); - } - return GeneratorUtil.capitalize(name); - } -} Deleted: trunk/eugene/src/main/java/org/nuiton/eugene/java/ImportsManagerExtension.java =================================================================== --- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/ImportsManagerExtension.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/ImportsManagerExtension.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,93 +0,0 @@ -/* - * *##% - * EUGene :: EUGene - * Copyright (C) 2004 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%* - */ - -package org.nuiton.eugene.java; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.eugene.ImportsManager; -import org.nuiton.eugene.models.object.ObjectModelClassifier; - -/** - * ImportsManagerExtension - * - * Created: 2 nov. 2009 - * - * @author fdesbois - * @version $Revision$ - * - * Extension for ObjectModel to manage imports for all classifiers in the model. - * - * Mise a jour: $Date$ - * par : $Author$ - */ -public class ImportsManagerExtension { - - private static final Log log = LogFactory.getLog(ImportsManagerExtension.class); - - /** - * Extension static used to identify ImportsManagerExtension in ObjectModel - */ - public static final String OBJECTMODEL_EXTENSION = "imports"; - - /** - * Map of ImportsManager with key equals to the classifier qualified name associated to - * the ImportsManager - */ - protected Map<String, ImportsManager> managers; - - /** - * Public constructor for ImportsManagerExtension - */ - public ImportsManagerExtension() { - this.managers = new HashMap<String, ImportsManager>(); - } - - /** - * Get the ImportsManager associated to the classifier. If not exist, it will be created. - * @param classifier reference for the ImportsManager - * @return the importsManager associated to the classifier (never null) - */ - public ImportsManager getManager(ObjectModelClassifier classifier) { - ImportsManager manager = this.managers.get(classifier.getQualifiedName()); - if (manager == null) { - manager = new ImportsManager(); - this.managers.put(classifier.getQualifiedName(), manager); - if (log.isDebugEnabled()) { - log.debug("Add new importsManager for : " + classifier.getQualifiedName()); - } - } - return manager; - } - - /** - * Get imports for a classifier. The ImportsManager must be defined in the model. - * @param classifier reference for the imports - * @return a List of String which contains all imports for the classifier - */ - public List<String> getImports(ObjectModelClassifier classifier) throws IllegalArgumentException { - ImportsManager manager = getManager(classifier); - return manager.getImports(classifier.getPackageName()); - } -} Copied: trunk/eugene/src/main/java/org/nuiton/eugene/java/ImportsManagerExtension.java (from rev 754, branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/ImportsManagerExtension.java) =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/ImportsManagerExtension.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/ImportsManagerExtension.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,93 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ + +package org.nuiton.eugene.java; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.ImportsManager; +import org.nuiton.eugene.models.object.ObjectModelClassifier; + +/** + * ImportsManagerExtension + * + * Created: 2 nov. 2009 + * + * @author fdesbois + * @version $Revision$ + * + * Extension for ObjectModel to manage imports for all classifiers in the model. + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class ImportsManagerExtension { + + private static final Log log = LogFactory.getLog(ImportsManagerExtension.class); + + /** + * Extension static used to identify ImportsManagerExtension in ObjectModel + */ + public static final String OBJECTMODEL_EXTENSION = "imports"; + + /** + * Map of ImportsManager with key equals to the classifier qualified name associated to + * the ImportsManager + */ + protected Map<String, ImportsManager> managers; + + /** + * Public constructor for ImportsManagerExtension + */ + public ImportsManagerExtension() { + this.managers = new HashMap<String, ImportsManager>(); + } + + /** + * Get the ImportsManager associated to the classifier. If not exist, it will be created. + * @param classifier reference for the ImportsManager + * @return the importsManager associated to the classifier (never null) + */ + public ImportsManager getManager(ObjectModelClassifier classifier) { + ImportsManager manager = this.managers.get(classifier.getQualifiedName()); + if (manager == null) { + manager = new ImportsManager(); + this.managers.put(classifier.getQualifiedName(), manager); + if (log.isDebugEnabled()) { + log.debug("Add new importsManager for : " + classifier.getQualifiedName()); + } + } + return manager; + } + + /** + * Get imports for a classifier. The ImportsManager must be defined in the model. + * @param classifier reference for the imports + * @return a List of String which contains all imports for the classifier + */ + public List<String> getImports(ObjectModelClassifier classifier) throws IllegalArgumentException { + ImportsManager manager = getManager(classifier); + return manager.getImports(classifier.getPackageName()); + } +} Deleted: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java =================================================================== --- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,378 +0,0 @@ -/* - * *##% - * EUGene :: EUGene - * Copyright (C) 2004 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%* - */ -package org.nuiton.eugene.java; - -import java.util.HashSet; -import java.util.Set; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.eugene.GeneratorUtil; -import org.nuiton.eugene.ImportsManager; -import org.nuiton.eugene.ObjectModelType; -import org.nuiton.eugene.models.object.*; -import org.nuiton.eugene.models.object.ObjectModelModifier; -import org.nuiton.eugene.models.object.xml.*; - -/** - * JavaBuilder TODO heritates it from ModelBuilder - * <p/> - * Created: 29 oct. 2009 - * - * @author fdesbois - * @version $Revision$ - * <p/> - * Builder to fill an empty ObjectModel with java specificities (imports, only one inheritance, constructor, ...). - * JavaBuilder uses ImportsManagerExtension to manage imports in the model. - * JavaBuilder is also based on ObjectModelBuilder for the simple filling of the model. - * <p/> - * Mise a jour: $Date$ - * par : $Author$ - */ -public class JavaBuilder { - - private static final Log log = LogFactory.getLog(JavaBuilder.class); - - /** - * Builder where the filling is based on - */ - protected ObjectModelBuilder modelBuilder; - - /** - * ObjectModel extension to manage imports : one ImportsManager by classifier - */ - protected ImportsManagerExtension managers; - - @SuppressWarnings("unchecked") - public JavaBuilder(String modelName) { - this.modelBuilder = new ObjectModelBuilder(modelName); - - this.managers = getModel().getExtension( - ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); - } - - /** - * Get the model which is built - * - * @return an ObjectModel - */ - public ObjectModel getModel() { - return this.modelBuilder.getModel(); - } - - public void setDocumentation(ObjectModelElement element, String documentation) { - modelBuilder.setDocumentation(element, documentation); - } - - /** - * Add an import to a classifier. Imports are automatic for lots of JavaBuilder's methods except body - * code of operations. - * <pre> - * You can have some complex imports like : - * - new java.util.List<org.chorem.bonzoms.Role>() - * --> two imports 'java.util.List' and 'org.chorem.bonzoms.Role' - * - java.util.Collection<T extends org.nuiton.topia.TopiaEntity> - * --> two imports 'java.util.Collection' and 'org.nuiton.topia.TopiaEntity' - * </pre> - * - * @param classifier where the imports will be added. - * @param imports to add - * @see org.nuiton.eugene.GeneratorUtil#getTypesList(java.lang.String) - */ - public void addImport(ObjectModelClassifier classifier, String imports) { - if (imports == null) { - return; - } - ImportsManager manager = managers.getManager(classifier); - imports = imports.trim(); - // remove ... operator - if (imports.endsWith("...")) { - imports = imports.substring(0, imports.length() - 3); - } - for (String oneType : GeneratorUtil.getTypesList(imports)) { - manager.addImport(oneType); - if (log.isDebugEnabled()) { - log.debug("Add import for : " + classifier.getQualifiedName() + " _ import: " + oneType); - } - } - } - - /** - * Create a new class in the model. - * - * @param name - * @param packageName - * @return a new ObjectModelClass - * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilder#createClass(java.lang.String, java.lang.String,org.nuiton.eugene.models.object.ObjectModelModifier...) - */ - public ObjectModelClass createClass(String name, String packageName) { - return modelBuilder.createClass(name, packageName); - } - - /** - * Create a new abstract class in the model. - * - * @param name - * @param packageName - * @return a new ObjectModelClass - * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilder#createClass(java.lang.String,java.lang.String, org.nuiton.eugene.models.object.ObjectModelModifier...) - */ - public ObjectModelClass createAbstractClass(String name, String packageName) { - return modelBuilder.createClass(name, packageName, ObjectModelModifier.ABSTRACT); - } - - /** - * Create a new interface in the model - * - * @param name - * @param packageName - * @return a new ObjectModelInterface - * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilder#createInterface(java.lang.String, java.lang.String) - */ - public ObjectModelInterface createInterface(String name, String packageName) { - return modelBuilder.createInterface(name, packageName); - } - - /** - * Create a new enumration in the model - * - * @param name - * @param packageName - * @return a new ObjectModelEnumeration - */ - public ObjectModelEnumeration createEnumeration(String name, String packageName) { - return modelBuilder.createEnumeration(name, packageName); - } - - /** - * Set the superclass of an other class. Only one superclass can be set to the class. - * IMPORTS superclassQualifiedName. - * - * @param classifier - * @param superclassQualifiedName - * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilder#addInterface( - *org.nuiton.eugene.models.object.ObjectModelClassifier, java.lang.String) - */ - public void setSuperClass(ObjectModelClass classifier, String superclassQualifiedName) { - ObjectModelClassImpl impl = (ObjectModelClassImpl) classifier; - impl.clearSuperclasses(); // suppress all existing superclass: only one can be set for java - modelBuilder.addSuperclass(impl, superclassQualifiedName); - this.addImport(classifier, superclassQualifiedName); - } - - /** - * Add an interface to a classifier (interface, class, enum). - * IMPORTS interfaceQualifiedName. - * - * @param classifier - * @param interfaceQualifiedName - * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilder#addInterface( - *org.nuiton.eugene.models.object.ObjectModelClassifier, java.lang.String) - */ - public void addInterface(ObjectModelClassifier classifier, String interfaceQualifiedName) { - modelBuilder.addInterface(classifier, interfaceQualifiedName); - this.addImport(classifier, interfaceQualifiedName); - } - - /** - * Add a new attribute to a classifier. - * IMPORTS type, value. - * - * @param classifier - * @param name - * @param type - * @param value - * @param modifiers - * @return a new ObjectModelAttribute - * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilder#addAttribute(org.nuiton.eugene.models.object.ObjectModelClassifier, java.lang.String,java.lang.String, java.lang.String, org.nuiton.eugene.models.object.ObjectModelModifier...) - */ - public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type, String value, - ObjectModelModifier... modifiers) { - this.addImport(classifier, type); - this.addImport(classifier, value); - return modelBuilder.addAttribute(classifier, name, type, value, modifiers); - } - - /** - * Add a new constant to a classifier. A constant is static and final and have a value. - * IMPORTS type, value. - * - * @param classifier - * @param name - * @param type - * @param value - * @param visibility modifier allowed : PUBLIC, PRIVATE, PROTECTED, PACKAGE - * @return a new ObjectModelAttribute - * @throws IllegalArgumentException if the modifier is not a visibility - */ - public ObjectModelAttribute addConstant(ObjectModelClassifier classifier, String name, String type, String value, - ObjectModelModifier visibility) throws IllegalArgumentException { - if (!visibility.isVisibility()) { - throw new IllegalArgumentException("Illegal visibility type : " + visibility.name() + - " for " + classifier.getQualifiedName()); - } - - return addAttribute(classifier, name, type, value, visibility, - ObjectModelModifier.STATIC, ObjectModelModifier.FINAL); - } - - /** - * Add a new attribute to a classifier with no default value. Default visibility is set to PROTECTED. - * IMPORTS type. - * - * @param classifier - * @param name - * @param type - * @return a new ObjectModelAttribute - */ - public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type) { - return addAttribute(classifier, name, type, "", ObjectModelModifier.PROTECTED); - } - - /** - * Add a new attribute to a classifier from an existing attribute. - * IMPORTS attribute.getType() and attribute.getDefaultValue(). - * - * @param classifier - * @param attribute - * @return a new ObjectModelAttribute - */ - public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, ObjectModelAttribute attribute) { - - Set<ObjectModelModifier> modifiers = new HashSet<ObjectModelModifier>(); - - if (attribute.isStatic()) { - modifiers.add(ObjectModelModifier.STATIC); - } - if (attribute.isFinal()) { - modifiers.add(ObjectModelModifier.FINAL); - } - if (attribute.getVisibility().equals("public")) { - modifiers.add(ObjectModelModifier.PUBLIC); - } else if (attribute.getVisibility().equals("protected")) { - modifiers.add(ObjectModelModifier.PROTECTED); - } else if (attribute.getVisibility().equals("private")) { - modifiers.add(ObjectModelModifier.PRIVATE); - } else if (attribute.getVisibility().equals("")) { - modifiers.add(ObjectModelModifier.PACKAGE); - } - - return addAttribute(classifier, attribute.getName(), attribute.getType(), - attribute.getDefaultValue(), modifiers.toArray(new ObjectModelModifier[modifiers.size()])); - } - - /** - * Add a new operation to a classifier. - * - * @param classifier - * @param name - * @param type - * @param modifiers - * @return a new ObjectModelOperation - * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilder#addOperation(org.nuiton.eugene.models.object.ObjectModelClassifier, java.lang.String,java.lang.String, org.nuiton.eugene.models.object.ObjectModelModifier...) - */ - public ObjectModelOperation addOperation(ObjectModelClassifier classifier, String name, String type, - ObjectModelModifier... modifiers) { - this.addImport(classifier, type); - return modelBuilder.addOperation(classifier, name, type, modifiers); - } - - /** - * Add a constructor to a class. - * - * @param clazz - * @param visibility - * @return a new ObjectModelOperation - * @throws IllegalArgumentException if the modifier is not a visibility - */ - public ObjectModelOperation addConstructor(ObjectModelClass clazz, ObjectModelModifier visibility) - throws IllegalArgumentException { - if (!visibility.isVisibility()) { - throw new IllegalArgumentException("Illegal visibility type : " + visibility.name() + - " for " + clazz.getQualifiedName()); - } - - return addOperation(clazz, clazz.getName(), null, visibility); - } - - /** - * Add a new parameter to an existing operation. - * - * @param operation - * @param type - * @param name - * @return a new ObjectModelParameter - * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilder#addParameter( - *org.nuiton.eugene.models.object.ObjectModelOperation, java.lang.String, java.lang.String) - */ - public ObjectModelParameter addParameter(ObjectModelOperation operation, String type, String name) { - this.addImport((ObjectModelClassifier) operation.getDeclaringElement(), type); - return modelBuilder.addParameter(operation, type, name); - } - - /** - * Add an exception to an operation. - * - * @param operation - * @param exception - * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilder#addException( - *org.nuiton.eugene.models.object.ObjectModelOperation, java.lang.String) - */ - public void addException(ObjectModelOperation operation, String exception) { - this.addImport((ObjectModelClassifier) operation.getDeclaringElement(), exception); - modelBuilder.addException(operation, exception); - } - - /** - * Set the operation body code. - * - * @param operation - * @param body - * @throws IllegalArgumentException if operation is abstract - * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilder#setOperationBody( - *org.nuiton.eugene.models.object.ObjectModelOperation, java.lang.String) - */ - public void setOperationBody(ObjectModelOperation operation, String body) - throws IllegalArgumentException { - if (operation.isAbstract()) { - throw new IllegalArgumentException("Unable to add body for an abstract method"); - } - modelBuilder.setOperationBody(operation, body); - } - - public ObjectModelClassifier addInnerClassifier(ObjectModelClass clazz, ObjectModelType type, String name) throws IllegalArgumentException { - return modelBuilder.addInnerClassifier(clazz, type, name); - } - - public ObjectModelOperation addConstructor(ObjectModelEnumeration enumeration, ObjectModelModifier visibility) - throws IllegalArgumentException { - if (!visibility.isVisibility()) { - throw new IllegalArgumentException("Illegal visibility type : " + visibility.name() + - " for " + enumeration.getQualifiedName()); - } - - return addOperation(enumeration, enumeration.getName(), null, visibility); - } - - public void addLiteral(ObjectModelEnumeration classifier, String name) { - modelBuilder.addLiteral(classifier,name); - } -} Copied: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java (from rev 754, branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java) =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,378 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ +package org.nuiton.eugene.java; + +import java.util.HashSet; +import java.util.Set; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.GeneratorUtil; +import org.nuiton.eugene.ImportsManager; +import org.nuiton.eugene.ObjectModelType; +import org.nuiton.eugene.models.object.*; +import org.nuiton.eugene.models.object.ObjectModelModifier; +import org.nuiton.eugene.models.object.xml.*; + +/** + * JavaBuilder TODO heritates it from ModelBuilder + * <p/> + * Created: 29 oct. 2009 + * + * @author fdesbois + * @version $Revision$ + * <p/> + * Builder to fill an empty ObjectModel with java specificities (imports, only one inheritance, constructor, ...). + * JavaBuilder uses ImportsManagerExtension to manage imports in the model. + * JavaBuilder is also based on ObjectModelBuilder for the simple filling of the model. + * <p/> + * Mise a jour: $Date$ + * par : $Author$ + */ +public class JavaBuilder { + + private static final Log log = LogFactory.getLog(JavaBuilder.class); + + /** + * Builder where the filling is based on + */ + protected ObjectModelBuilder modelBuilder; + + /** + * ObjectModel extension to manage imports : one ImportsManager by classifier + */ + protected ImportsManagerExtension managers; + + @SuppressWarnings("unchecked") + public JavaBuilder(String modelName) { + this.modelBuilder = new ObjectModelBuilder(modelName); + + this.managers = getModel().getExtension( + ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); + } + + /** + * Get the model which is built + * + * @return an ObjectModel + */ + public ObjectModel getModel() { + return this.modelBuilder.getModel(); + } + + public void setDocumentation(ObjectModelElement element, String documentation) { + modelBuilder.setDocumentation(element, documentation); + } + + /** + * Add an import to a classifier. Imports are automatic for lots of JavaBuilder's methods except body + * code of operations. + * <pre> + * You can have some complex imports like : + * - new java.util.List<org.chorem.bonzoms.Role>() + * --> two imports 'java.util.List' and 'org.chorem.bonzoms.Role' + * - java.util.Collection<T extends org.nuiton.topia.TopiaEntity> + * --> two imports 'java.util.Collection' and 'org.nuiton.topia.TopiaEntity' + * </pre> + * + * @param classifier where the imports will be added. + * @param imports to add + * @see org.nuiton.eugene.GeneratorUtil#getTypesList(java.lang.String) + */ + public void addImport(ObjectModelClassifier classifier, String imports) { + if (imports == null) { + return; + } + ImportsManager manager = managers.getManager(classifier); + imports = imports.trim(); + // remove ... operator + if (imports.endsWith("...")) { + imports = imports.substring(0, imports.length() - 3); + } + for (String oneType : GeneratorUtil.getTypesList(imports)) { + manager.addImport(oneType); + if (log.isDebugEnabled()) { + log.debug("Add import for : " + classifier.getQualifiedName() + " _ import: " + oneType); + } + } + } + + /** + * Create a new class in the model. + * + * @param name + * @param packageName + * @return a new ObjectModelClass + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilder#createClass(java.lang.String, java.lang.String,org.nuiton.eugene.models.object.ObjectModelModifier...) + */ + public ObjectModelClass createClass(String name, String packageName) { + return modelBuilder.createClass(name, packageName); + } + + /** + * Create a new abstract class in the model. + * + * @param name + * @param packageName + * @return a new ObjectModelClass + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilder#createClass(java.lang.String,java.lang.String, org.nuiton.eugene.models.object.ObjectModelModifier...) + */ + public ObjectModelClass createAbstractClass(String name, String packageName) { + return modelBuilder.createClass(name, packageName, ObjectModelModifier.ABSTRACT); + } + + /** + * Create a new interface in the model + * + * @param name + * @param packageName + * @return a new ObjectModelInterface + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilder#createInterface(java.lang.String, java.lang.String) + */ + public ObjectModelInterface createInterface(String name, String packageName) { + return modelBuilder.createInterface(name, packageName); + } + + /** + * Create a new enumration in the model + * + * @param name + * @param packageName + * @return a new ObjectModelEnumeration + */ + public ObjectModelEnumeration createEnumeration(String name, String packageName) { + return modelBuilder.createEnumeration(name, packageName); + } + + /** + * Set the superclass of an other class. Only one superclass can be set to the class. + * IMPORTS superclassQualifiedName. + * + * @param classifier + * @param superclassQualifiedName + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilder#addInterface( + *org.nuiton.eugene.models.object.ObjectModelClassifier, java.lang.String) + */ + public void setSuperClass(ObjectModelClass classifier, String superclassQualifiedName) { + ObjectModelClassImpl impl = (ObjectModelClassImpl) classifier; + impl.clearSuperclasses(); // suppress all existing superclass: only one can be set for java + modelBuilder.addSuperclass(impl, superclassQualifiedName); + this.addImport(classifier, superclassQualifiedName); + } + + /** + * Add an interface to a classifier (interface, class, enum). + * IMPORTS interfaceQualifiedName. + * + * @param classifier + * @param interfaceQualifiedName + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilder#addInterface( + *org.nuiton.eugene.models.object.ObjectModelClassifier, java.lang.String) + */ + public void addInterface(ObjectModelClassifier classifier, String interfaceQualifiedName) { + modelBuilder.addInterface(classifier, interfaceQualifiedName); + this.addImport(classifier, interfaceQualifiedName); + } + + /** + * Add a new attribute to a classifier. + * IMPORTS type, value. + * + * @param classifier + * @param name + * @param type + * @param value + * @param modifiers + * @return a new ObjectModelAttribute + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilder#addAttribute(org.nuiton.eugene.models.object.ObjectModelClassifier, java.lang.String,java.lang.String, java.lang.String, org.nuiton.eugene.models.object.ObjectModelModifier...) + */ + public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type, String value, + ObjectModelModifier... modifiers) { + this.addImport(classifier, type); + this.addImport(classifier, value); + return modelBuilder.addAttribute(classifier, name, type, value, modifiers); + } + + /** + * Add a new constant to a classifier. A constant is static and final and have a value. + * IMPORTS type, value. + * + * @param classifier + * @param name + * @param type + * @param value + * @param visibility modifier allowed : PUBLIC, PRIVATE, PROTECTED, PACKAGE + * @return a new ObjectModelAttribute + * @throws IllegalArgumentException if the modifier is not a visibility + */ + public ObjectModelAttribute addConstant(ObjectModelClassifier classifier, String name, String type, String value, + ObjectModelModifier visibility) throws IllegalArgumentException { + if (!visibility.isVisibility()) { + throw new IllegalArgumentException("Illegal visibility type : " + visibility.name() + + " for " + classifier.getQualifiedName()); + } + + return addAttribute(classifier, name, type, value, visibility, + ObjectModelModifier.STATIC, ObjectModelModifier.FINAL); + } + + /** + * Add a new attribute to a classifier with no default value. Default visibility is set to PROTECTED. + * IMPORTS type. + * + * @param classifier + * @param name + * @param type + * @return a new ObjectModelAttribute + */ + public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type) { + return addAttribute(classifier, name, type, "", ObjectModelModifier.PROTECTED); + } + + /** + * Add a new attribute to a classifier from an existing attribute. + * IMPORTS attribute.getType() and attribute.getDefaultValue(). + * + * @param classifier + * @param attribute + * @return a new ObjectModelAttribute + */ + public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, ObjectModelAttribute attribute) { + + Set<ObjectModelModifier> modifiers = new HashSet<ObjectModelModifier>(); + + if (attribute.isStatic()) { + modifiers.add(ObjectModelModifier.STATIC); + } + if (attribute.isFinal()) { + modifiers.add(ObjectModelModifier.FINAL); + } + if (attribute.getVisibility().equals("public")) { + modifiers.add(ObjectModelModifier.PUBLIC); + } else if (attribute.getVisibility().equals("protected")) { + modifiers.add(ObjectModelModifier.PROTECTED); + } else if (attribute.getVisibility().equals("private")) { + modifiers.add(ObjectModelModifier.PRIVATE); + } else if (attribute.getVisibility().equals("")) { + modifiers.add(ObjectModelModifier.PACKAGE); + } + + return addAttribute(classifier, attribute.getName(), attribute.getType(), + attribute.getDefaultValue(), modifiers.toArray(new ObjectModelModifier[modifiers.size()])); + } + + /** + * Add a new operation to a classifier. + * + * @param classifier + * @param name + * @param type + * @param modifiers + * @return a new ObjectModelOperation + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilder#addOperation(org.nuiton.eugene.models.object.ObjectModelClassifier, java.lang.String,java.lang.String, org.nuiton.eugene.models.object.ObjectModelModifier...) + */ + public ObjectModelOperation addOperation(ObjectModelClassifier classifier, String name, String type, + ObjectModelModifier... modifiers) { + this.addImport(classifier, type); + return modelBuilder.addOperation(classifier, name, type, modifiers); + } + + /** + * Add a constructor to a class. + * + * @param clazz + * @param visibility + * @return a new ObjectModelOperation + * @throws IllegalArgumentException if the modifier is not a visibility + */ + public ObjectModelOperation addConstructor(ObjectModelClass clazz, ObjectModelModifier visibility) + throws IllegalArgumentException { + if (!visibility.isVisibility()) { + throw new IllegalArgumentException("Illegal visibility type : " + visibility.name() + + " for " + clazz.getQualifiedName()); + } + + return addOperation(clazz, clazz.getName(), null, visibility); + } + + /** + * Add a new parameter to an existing operation. + * + * @param operation + * @param type + * @param name + * @return a new ObjectModelParameter + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilder#addParameter( + *org.nuiton.eugene.models.object.ObjectModelOperation, java.lang.String, java.lang.String) + */ + public ObjectModelParameter addParameter(ObjectModelOperation operation, String type, String name) { + this.addImport((ObjectModelClassifier) operation.getDeclaringElement(), type); + return modelBuilder.addParameter(operation, type, name); + } + + /** + * Add an exception to an operation. + * + * @param operation + * @param exception + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilder#addException( + *org.nuiton.eugene.models.object.ObjectModelOperation, java.lang.String) + */ + public void addException(ObjectModelOperation operation, String exception) { + this.addImport((ObjectModelClassifier) operation.getDeclaringElement(), exception); + modelBuilder.addException(operation, exception); + } + + /** + * Set the operation body code. + * + * @param operation + * @param body + * @throws IllegalArgumentException if operation is abstract + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilder#setOperationBody( + *org.nuiton.eugene.models.object.ObjectModelOperation, java.lang.String) + */ + public void setOperationBody(ObjectModelOperation operation, String body) + throws IllegalArgumentException { + if (operation.isAbstract()) { + throw new IllegalArgumentException("Unable to add body for an abstract method"); + } + modelBuilder.setOperationBody(operation, body); + } + + public ObjectModelClassifier addInnerClassifier(ObjectModelClass clazz, ObjectModelType type, String name) throws IllegalArgumentException { + return modelBuilder.addInnerClassifier(clazz, type, name); + } + + public ObjectModelOperation addConstructor(ObjectModelEnumeration enumeration, ObjectModelModifier visibility) + throws IllegalArgumentException { + if (!visibility.isVisibility()) { + throw new IllegalArgumentException("Illegal visibility type : " + visibility.name() + + " for " + enumeration.getQualifiedName()); + } + + return addOperation(enumeration, enumeration.getName(), null, visibility); + } + + public void addLiteral(ObjectModelEnumeration classifier, String name) { + modelBuilder.addLiteral(classifier,name); + } +} Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java ___________________________________________________________________ Added: svn:keywords + Author Date Revision Added: svn:mergeinfo + /branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java:641-651 /branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java:682-754 Deleted: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java =================================================================== --- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,425 +0,0 @@ -/* - * *##% - * EUGene :: EUGene - * Copyright (C) 2004 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%* - */ - -package org.nuiton.eugene.java; - -import java.io.File; -import java.io.IOException; -import java.io.Writer; -import java.util.Arrays; -import java.util.Collection; -import java.util.Iterator; -import java.util.Set; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.eugene.GeneratorUtil; -import org.nuiton.eugene.ObjectModelGenerator; -import org.nuiton.eugene.models.object.*; - -/** - * JavaGenerator - * - * Created: 22 oct. 2009 - * - * @author fdesbois - * @version $Revision$ - * - * Stupid generation of an ObjectModel with Java classes and interfaces. - * Use of ImportsManager to get imports for a classifier (added in model in the JavaBuilder which construct - * the ObjectModel). - * - * The JavaGenerator is based on a ObjectModelGenerator : Java classes are represented by ObjectModelClass, ... - * - * Mise a jour: $Date$ - * par : $Author$ - */ -public class JavaGenerator extends ObjectModelGenerator { - - private static final Log log = LogFactory.getLog(JavaGenerator.class); - - protected int innerLevel; - protected String prefix; - - @Override - public String getFilenameForClass(ObjectModelClass clazz) { - return getFilenameForClassifier(clazz); - } - - @Override - public String getFilenameForInterface(ObjectModelInterface interfacez) { - return getFilenameForClassifier(interfacez); - } - - @Override - public String getFilenameForEnumeration(ObjectModelEnumeration enumeration) { - return getFilenameForClassifier(enumeration); - } - - @Override - public String getFilenameForClassifier(ObjectModelClassifier clazz) { - String s = clazz.getQualifiedName(); - int index = s.indexOf("<"); - if (index > -1) { - s = s.substring(0, index); - } - return s.replace('.', File.separatorChar) + ".java"; - } - - /** - * Generate from all classes. - * @param output Writer for generating the java file - * @param clazz Class to manage for creating an output file - * @throws IOException - */ - @Override - public void generateFromClass(Writer output, ObjectModelClass clazz) throws IOException { - - if (log.isInfoEnabled()) { - log.info("generate class : " + clazz.getName()); - } - preparePrefix(clazz); - - // Imports, package et documentation - this.generateHeader(output, clazz); - - String abstractStr = clazz.isAbstract() ? " abstract " : " "; - String className = clazz.getName(); - - String extend = ""; - Iterator<ObjectModelClass> j = clazz.getSuperclasses().iterator(); - if (j.hasNext()) { - ObjectModelClassifier p = j.next(); - extend += GeneratorUtil.getSimpleName(p.getQualifiedName()); - } - - String implement = ""; - for (Iterator<ObjectModelInterface> i = clazz.getInterfaces().iterator(); i.hasNext();) { - ObjectModelClassifier parentInterface = i.next(); - String interfaceName = GeneratorUtil.getSimpleName(parentInterface.getQualifiedName()); - implement += interfaceName; - if (i.hasNext()) { - implement += ", "; - } - } - if (log.isInfoEnabled()) { - log.info(className+" : super : "+extend+", interfaces : "+implement); - } - -/*{ -<%=prefix%>public<%=abstractStr%>class <%=className%>}*/ - -/* - * Définition de la super classe : il ne doit y avoir qu'une - */ - if (extend.length() > 0) { -/*{ extends <%=extend%>}*/ - } - - if (implement.length() > 0) { -/*{ implements <%=implement%> { - -}*/ - } else { - /*{ { - -}*/ - } - - generateInnerClassifiers(output, clazz.getInnerClassifiers()); - generateAttributes(output, clazz.getAttributes()); - generateOperations(output, clazz.getOperations()); - -/*{ -<%=prefix%>} //<%=className%> -}*/ - } - - @Override - public void generateFromInterface(Writer output, ObjectModelInterface interfacez) throws IOException { - if (log.isInfoEnabled()) { - log.info("generate interface : " + interfacez.getName()); - } - preparePrefix(interfacez); - - // Imports, package et documentation - generateHeader(output, interfacez); - - String interfaceName = interfacez.getName(); - - String extend = ""; - Iterator<ObjectModelInterface> j = interfacez.getInterfaces().iterator(); - while (j.hasNext()) { - ObjectModelClassifier p = j.next(); - extend += GeneratorUtil.getSimpleName(p.getQualifiedName()); - if (j.hasNext()) { - extend += ", "; - } - } -/*{ -<%=prefix%>public interface <%=interfaceName%>}*/ - -/* - * Définition de la super interface : il peut y en avoir autant qu'on veut - */ - if (extend.length() > 0) { -/*{ extends <%=extend%> {}*/ - } else { - /*{ { - -}*/ - } - generateAttributes(output, interfacez.getAttributes()); - generateOperations(output, interfacez.getOperations()); -/*{ -<%=prefix%>} //<%=interfaceName%> -}*/ - } - - - @Override - public void generateFromEnum(Writer output, ObjectModelEnumeration enumz) throws IOException { - if (log.isInfoEnabled()) { - log.info("generate enumeration : " + enumz.getName()); - } - preparePrefix(enumz); - generateHeader(output, enumz); // Imports, package et documentation - - String enumzName = enumz.getName(); - - String extend = ""; - Iterator<ObjectModelInterface> j = enumz.getInterfaces().iterator(); - if (j.hasNext()) { - ObjectModelClassifier p = j.next(); - extend += GeneratorUtil.getSimpleName(p.getQualifiedName()); - } -/*{ -<%=prefix%>public enum <%=enumzName%>}*/ - - if (extend.length() > 0) { -/*{ implements <%=extend%> { - -}*/ - } - else { - /*{ { - -}*/ - } - // generation of literal - if (enumz.getLiterals().isEmpty()) { - /*{ ; }*/ - } else { - Iterator<String> i = enumz.getLiterals().iterator(); - while (i.hasNext()) { - String literal = i.next(); -/*{<%=prefix%> <%=literal%><%=(i.hasNext() ? "," : ";")%> -}*/ - } - } - this.generateAttributes(output, enumz.getAttributes()); - this.generateOperations(output, enumz.getOperations()); -/*{ -<%=prefix%>} //<%=enumzName%> -}*/ - } - - public void generateInnerClassifiers(Writer output, Collection<ObjectModelClassifier> innerClassifiers) throws IOException { - if (innerClassifiers == null || innerClassifiers.isEmpty()) { - return; - } - for (ObjectModelClassifier innerClassifier : innerClassifiers) { - if (innerClassifier.isClass()) { - generateFromClass(output, (ObjectModelClass) innerClassifier); - innerLevel--; - continue; - } - if (innerClassifier.isInterface()) { - generateFromInterface(output, (ObjectModelInterface) innerClassifier); - innerLevel--; - continue; - } - if (innerClassifier.isEnum()) { - generateFromEnum(output, (ObjectModelEnumeration) innerClassifier); - innerLevel--; - continue; - } - } - } - - protected void preparePrefix(ObjectModelClassifier clazz) { - if (!clazz.isInner()) { - innerLevel = 0; - prefix = ""; - } else { - innerLevel++; - char[] tmp = new char[innerLevel * 4]; - Arrays.fill(tmp, ' '); - prefix = new String(tmp); - } - if (log.isDebugEnabled()) { - log.debug("prefix to use for classifier " + clazz.getName() + " : [" + prefix + "]"); - } - } - - - /** - * Generate Header for a classifier : Package, Documentation, Imports and Classifier signature. - * @param output Writer for generating the java file - * @param classifier Classifier for generate header - * @throws IOException - */ - protected void generateHeader(Writer output, ObjectModelClassifier classifier) throws IOException { - if (classifier.isInner()) { - return; - } - String packageName = classifier.getPackageName(); -/*{package <%=packageName%>; - -}*/ - // potentiel crash si imports non defini -> IllegalArgumentException on "imports" - ImportsManagerExtension managers = getModel().getExtension(ImportsManagerExtension.OBJECTMODEL_EXTENSION, - ImportsManagerExtension.class); - - for (String imports : managers.getImports(classifier)) { -/*{import <%=imports%>; -}*/ - } - - } - - /** - * Generate attributes from a collection of ObjectModelAttribute. - * @param output Writer for generating the java file - * @param attributes Collection of ObjectModelAttribute to generate - * @throws IOException - */ - protected void generateAttributes(Writer output, Collection<ObjectModelAttribute> attributes) throws IOException { - - for (ObjectModelAttribute attr : attributes) { - - if (attr.getDocumentation() != null && !attr.getDocumentation().isEmpty()) { -/*{<%=prefix%> /** -<%=prefix%> * <%=attr.getDocumentation()%> -<%=prefix%> *) -}*/ - } - -// String annotation = attr.getTagValue(TAG_ANNOTATION); -// if (annotation != null && annotation.length() > 0) { -///* <%=annotation%> -//*/ -// } - - String attrName = attr.getName(); - String attrVisibility = attr.getVisibility(); - String attrType = GeneratorUtil.getSimpleName(attr.getType()); - String attrStatic = attr.isStatic() ? " static" : ""; - String attrFinal = attr.isFinal() ? " final" : ""; - String attrValue = attr.getDefaultValue() != null && !attr.getDefaultValue().isEmpty() ? - " = " + GeneratorUtil.getSimpleName(attr.getDefaultValue()) : ""; - -/*{<%=prefix%> <%=attrVisibility%><%=attrStatic%><%=attrFinal%> <%=attrType%> <%=attrName%><%=attrValue%>; -}*/ - } - } - - /** - * Generate operations from a collection of ObjectModelOperation - * @param output Writer for generating the java file - * @param operations Collection of ObjectModelOperation to generate - * @throws IOException - */ - protected void generateOperations(Writer output, Collection<ObjectModelOperation> operations) throws IOException { - for (ObjectModelOperation op : operations) { - String opName = op.getName(); -/*{<%=prefix%> /** -<%=prefix%> * <%=opName%> : -<%=prefix%>}*/ - if (op.getDocumentation() != null && !op.getDocumentation().isEmpty()) { - String opDocumentation = op.getDocumentation(); -/*{<%=prefix%> * <%=opDocumentation%> -}*/ - } - Collection<ObjectModelParameter> params = op.getParameters(); - for (ObjectModelParameter param : params) { - String paramName = param.getName(); - String paramDocumentation = param.getDocumentation(); - if (paramDocumentation == null) { - paramDocumentation = ""; - } -/*{<%=prefix%> * @param <%=paramName%> <%=paramDocumentation%> -}*/ - } - String opVisibility = op.getVisibility(); - String opStatic = op.isStatic() ? "static " : ""; - String opAbstract = op.isAbstract() ? "abstract " : ""; - - ObjectModelParameter returnParam = op.getReturnParameter(); - String opReturn = ""; - if (returnParam != null) { - opReturn = GeneratorUtil.getSimpleName(returnParam.getType()) + " "; - if (!opReturn.contains("void")) { - String paramDocumentation = returnParam.getDocumentation(); - if (paramDocumentation == null) { - paramDocumentation = opReturn; - } -/*{<%=prefix%> * @return <%=paramDocumentation%> -}*/ - } - } - Set<String> exceptions = op.getExceptions(); - for (String exception : exceptions) { - String exceptionName = GeneratorUtil.getSimpleName(exception); -/*{<%=prefix%> * @throws <%=exceptionName%> -}*/ - } - -/*{ *) -<%=prefix%> <%=opVisibility%> <%=opStatic%><%=opAbstract%><%=opReturn%><%=opName%>(}*/ - String comma = ""; - for (ObjectModelParameter param : params) { - String paramName = param.getName(); - String paramType = GeneratorUtil.getSimpleName(param.getType()); -/*{<%=comma%><%=paramType%> <%=paramName%>}*/ - comma = ", "; - } -/*{)}*/ - - comma = " throws "; - for (String exception : exceptions) { - String exceptionName = GeneratorUtil.getSimpleName(exception); -/*{<%=comma%><%=exceptionName%>}*/ - comma = ", "; - } - - if (!op.getBodyCode().isEmpty()) { -/*{<%=prefix%> {<%=op.getBodyCode()%>} - -}*/ - } else { -/*{; - -}*/ - } - } - } - -} Copied: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java (from rev 754, branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java) =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,425 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ + +package org.nuiton.eugene.java; + +import java.io.File; +import java.io.IOException; +import java.io.Writer; +import java.util.Arrays; +import java.util.Collection; +import java.util.Iterator; +import java.util.Set; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.GeneratorUtil; +import org.nuiton.eugene.ObjectModelGenerator; +import org.nuiton.eugene.models.object.*; + +/** + * JavaGenerator + * + * Created: 22 oct. 2009 + * + * @author fdesbois + * @version $Revision$ + * + * Stupid generation of an ObjectModel with Java classes and interfaces. + * Use of ImportsManager to get imports for a classifier (added in model in the JavaBuilder which construct + * the ObjectModel). + * + * The JavaGenerator is based on a ObjectModelGenerator : Java classes are represented by ObjectModelClass, ... + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class JavaGenerator extends ObjectModelGenerator { + + private static final Log log = LogFactory.getLog(JavaGenerator.class); + + protected int innerLevel; + protected String prefix; + + @Override + public String getFilenameForClass(ObjectModelClass clazz) { + return getFilenameForClassifier(clazz); + } + + @Override + public String getFilenameForInterface(ObjectModelInterface interfacez) { + return getFilenameForClassifier(interfacez); + } + + @Override + public String getFilenameForEnumeration(ObjectModelEnumeration enumeration) { + return getFilenameForClassifier(enumeration); + } + + @Override + public String getFilenameForClassifier(ObjectModelClassifier clazz) { + String s = clazz.getQualifiedName(); + int index = s.indexOf("<"); + if (index > -1) { + s = s.substring(0, index); + } + return s.replace('.', File.separatorChar) + ".java"; + } + + /** + * Generate from all classes. + * @param output Writer for generating the java file + * @param clazz Class to manage for creating an output file + * @throws IOException + */ + @Override + public void generateFromClass(Writer output, ObjectModelClass clazz) throws IOException { + + if (log.isInfoEnabled()) { + log.info("generate class : " + clazz.getName()); + } + preparePrefix(clazz); + + // Imports, package et documentation + this.generateHeader(output, clazz); + + String abstractStr = clazz.isAbstract() ? " abstract " : " "; + String className = clazz.getName(); + + String extend = ""; + Iterator<ObjectModelClass> j = clazz.getSuperclasses().iterator(); + if (j.hasNext()) { + ObjectModelClassifier p = j.next(); + extend += GeneratorUtil.getSimpleName(p.getQualifiedName()); + } + + String implement = ""; + for (Iterator<ObjectModelInterface> i = clazz.getInterfaces().iterator(); i.hasNext();) { + ObjectModelClassifier parentInterface = i.next(); + String interfaceName = GeneratorUtil.getSimpleName(parentInterface.getQualifiedName()); + implement += interfaceName; + if (i.hasNext()) { + implement += ", "; + } + } + if (log.isInfoEnabled()) { + log.info(className+" : super : "+extend+", interfaces : "+implement); + } + +/*{ +<%=prefix%>public<%=abstractStr%>class <%=className%>}*/ + +/* + * Définition de la super classe : il ne doit y avoir qu'une + */ + if (extend.length() > 0) { +/*{ extends <%=extend%>}*/ + } + + if (implement.length() > 0) { +/*{ implements <%=implement%> { + +}*/ + } else { + /*{ { + +}*/ + } + + generateInnerClassifiers(output, clazz.getInnerClassifiers()); + generateAttributes(output, clazz.getAttributes()); + generateOperations(output, clazz.getOperations()); + +/*{ +<%=prefix%>} //<%=className%> +}*/ + } + + @Override + public void generateFromInterface(Writer output, ObjectModelInterface interfacez) throws IOException { + if (log.isInfoEnabled()) { + log.info("generate interface : " + interfacez.getName()); + } + preparePrefix(interfacez); + + // Imports, package et documentation + generateHeader(output, interfacez); + + String interfaceName = interfacez.getName(); + + String extend = ""; + Iterator<ObjectModelInterface> j = interfacez.getInterfaces().iterator(); + while (j.hasNext()) { + ObjectModelClassifier p = j.next(); + extend += GeneratorUtil.getSimpleName(p.getQualifiedName()); + if (j.hasNext()) { + extend += ", "; + } + } +/*{ +<%=prefix%>public interface <%=interfaceName%>}*/ + +/* + * Définition de la super interface : il peut y en avoir autant qu'on veut + */ + if (extend.length() > 0) { +/*{ extends <%=extend%> {}*/ + } else { + /*{ { + +}*/ + } + generateAttributes(output, interfacez.getAttributes()); + generateOperations(output, interfacez.getOperations()); +/*{ +<%=prefix%>} //<%=interfaceName%> +}*/ + } + + + @Override + public void generateFromEnum(Writer output, ObjectModelEnumeration enumz) throws IOException { + if (log.isInfoEnabled()) { + log.info("generate enumeration : " + enumz.getName()); + } + preparePrefix(enumz); + generateHeader(output, enumz); // Imports, package et documentation + + String enumzName = enumz.getName(); + + String extend = ""; + Iterator<ObjectModelInterface> j = enumz.getInterfaces().iterator(); + if (j.hasNext()) { + ObjectModelClassifier p = j.next(); + extend += GeneratorUtil.getSimpleName(p.getQualifiedName()); + } +/*{ +<%=prefix%>public enum <%=enumzName%>}*/ + + if (extend.length() > 0) { +/*{ implements <%=extend%> { + +}*/ + } + else { + /*{ { + +}*/ + } + // generation of literal + if (enumz.getLiterals().isEmpty()) { + /*{ ; }*/ + } else { + Iterator<String> i = enumz.getLiterals().iterator(); + while (i.hasNext()) { + String literal = i.next(); +/*{<%=prefix%> <%=literal%><%=(i.hasNext() ? "," : ";")%> +}*/ + } + } + this.generateAttributes(output, enumz.getAttributes()); + this.generateOperations(output, enumz.getOperations()); +/*{ +<%=prefix%>} //<%=enumzName%> +}*/ + } + + public void generateInnerClassifiers(Writer output, Collection<ObjectModelClassifier> innerClassifiers) throws IOException { + if (innerClassifiers == null || innerClassifiers.isEmpty()) { + return; + } + for (ObjectModelClassifier innerClassifier : innerClassifiers) { + if (innerClassifier.isClass()) { + generateFromClass(output, (ObjectModelClass) innerClassifier); + innerLevel--; + continue; + } + if (innerClassifier.isInterface()) { + generateFromInterface(output, (ObjectModelInterface) innerClassifier); + innerLevel--; + continue; + } + if (innerClassifier.isEnum()) { + generateFromEnum(output, (ObjectModelEnumeration) innerClassifier); + innerLevel--; + continue; + } + } + } + + protected void preparePrefix(ObjectModelClassifier clazz) { + if (!clazz.isInner()) { + innerLevel = 0; + prefix = ""; + } else { + innerLevel++; + char[] tmp = new char[innerLevel * 4]; + Arrays.fill(tmp, ' '); + prefix = new String(tmp); + } + if (log.isDebugEnabled()) { + log.debug("prefix to use for classifier " + clazz.getName() + " : [" + prefix + "]"); + } + } + + + /** + * Generate Header for a classifier : Package, Documentation, Imports and Classifier signature. + * @param output Writer for generating the java file + * @param classifier Classifier for generate header + * @throws IOException + */ + protected void generateHeader(Writer output, ObjectModelClassifier classifier) throws IOException { + if (classifier.isInner()) { + return; + } + String packageName = classifier.getPackageName(); +/*{package <%=packageName%>; + +}*/ + // potentiel crash si imports non defini -> IllegalArgumentException on "imports" + ImportsManagerExtension managers = getModel().getExtension(ImportsManagerExtension.OBJECTMODEL_EXTENSION, + ImportsManagerExtension.class); + + for (String imports : managers.getImports(classifier)) { +/*{import <%=imports%>; +}*/ + } + + } + + /** + * Generate attributes from a collection of ObjectModelAttribute. + * @param output Writer for generating the java file + * @param attributes Collection of ObjectModelAttribute to generate + * @throws IOException + */ + protected void generateAttributes(Writer output, Collection<ObjectModelAttribute> attributes) throws IOException { + + for (ObjectModelAttribute attr : attributes) { + + if (attr.getDocumentation() != null && !attr.getDocumentation().isEmpty()) { +/*{<%=prefix%> /** +<%=prefix%> * <%=attr.getDocumentation()%> +<%=prefix%> *) +}*/ + } + +// String annotation = attr.getTagValue(TAG_ANNOTATION); +// if (annotation != null && annotation.length() > 0) { +///* <%=annotation%> +//*/ +// } + + String attrName = attr.getName(); + String attrVisibility = attr.getVisibility(); + String attrType = GeneratorUtil.getSimpleName(attr.getType()); + String attrStatic = attr.isStatic() ? " static" : ""; + String attrFinal = attr.isFinal() ? " final" : ""; + String attrValue = attr.getDefaultValue() != null && !attr.getDefaultValue().isEmpty() ? + " = " + GeneratorUtil.getSimpleName(attr.getDefaultValue()) : ""; + +/*{<%=prefix%> <%=attrVisibility%><%=attrStatic%><%=attrFinal%> <%=attrType%> <%=attrName%><%=attrValue%>; +}*/ + } + } + + /** + * Generate operations from a collection of ObjectModelOperation + * @param output Writer for generating the java file + * @param operations Collection of ObjectModelOperation to generate + * @throws IOException + */ + protected void generateOperations(Writer output, Collection<ObjectModelOperation> operations) throws IOException { + for (ObjectModelOperation op : operations) { + String opName = op.getName(); +/*{<%=prefix%> /** +<%=prefix%> * <%=opName%> : +<%=prefix%>}*/ + if (op.getDocumentation() != null && !op.getDocumentation().isEmpty()) { + String opDocumentation = op.getDocumentation(); +/*{<%=prefix%> * <%=opDocumentation%> +}*/ + } + Collection<ObjectModelParameter> params = op.getParameters(); + for (ObjectModelParameter param : params) { + String paramName = param.getName(); + String paramDocumentation = param.getDocumentation(); + if (paramDocumentation == null) { + paramDocumentation = ""; + } +/*{<%=prefix%> * @param <%=paramName%> <%=paramDocumentation%> +}*/ + } + String opVisibility = op.getVisibility(); + String opStatic = op.isStatic() ? "static " : ""; + String opAbstract = op.isAbstract() ? "abstract " : ""; + + ObjectModelParameter returnParam = op.getReturnParameter(); + String opReturn = ""; + if (returnParam != null) { + opReturn = GeneratorUtil.getSimpleName(returnParam.getType()) + " "; + if (!opReturn.contains("void")) { + String paramDocumentation = returnParam.getDocumentation(); + if (paramDocumentation == null) { + paramDocumentation = opReturn; + } +/*{<%=prefix%> * @return <%=paramDocumentation%> +}*/ + } + } + Set<String> exceptions = op.getExceptions(); + for (String exception : exceptions) { + String exceptionName = GeneratorUtil.getSimpleName(exception); +/*{<%=prefix%> * @throws <%=exceptionName%> +}*/ + } + +/*{ *) +<%=prefix%> <%=opVisibility%> <%=opStatic%><%=opAbstract%><%=opReturn%><%=opName%>(}*/ + String comma = ""; + for (ObjectModelParameter param : params) { + String paramName = param.getName(); + String paramType = GeneratorUtil.getSimpleName(param.getType()); +/*{<%=comma%><%=paramType%> <%=paramName%>}*/ + comma = ", "; + } +/*{)}*/ + + comma = " throws "; + for (String exception : exceptions) { + String exceptionName = GeneratorUtil.getSimpleName(exception); +/*{<%=comma%><%=exceptionName%>}*/ + comma = ", "; + } + + if (!op.getBodyCode().isEmpty()) { +/*{<%=prefix%> {<%=op.getBodyCode()%>} + +}*/ + } else { +/*{; + +}*/ + } + } + } + +} Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java ___________________________________________________________________ Added: svn:keywords + Author Date Revision Added: svn:mergeinfo + /branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java:641-651 /branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java:682-754 Deleted: trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java =================================================================== --- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,206 +0,0 @@ -/* - * *##% - * EUGene :: EUGene - * Copyright (C) 2004 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%* - */ -package org.nuiton.eugene.java; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.eugene.ObjectModelType; -import org.nuiton.eugene.Template; -import org.nuiton.eugene.ImportsManager; -import org.nuiton.eugene.ObjectModelTransformer; -import org.nuiton.eugene.models.object.*; - -/** - * OM2JavaTransformer - * <p/> - * Created: 28 oct. 2009 - * - * @author fdesbois - * @version $Revision$ - * <p/> - * Mise a jour: $Date$ - * par : $Author$ - */ -public abstract class ObjectModelTransformerToJava extends ObjectModelTransformer<ObjectModel> { - - private static final Log log = LogFactory.getLog(ObjectModelTransformerToJava.class); - - protected JavaBuilder builder; - - @Override - protected Template<ObjectModel> initOutputTemplate() { - return new JavaGenerator(); - } - - @Override - protected ObjectModel initOutputModel() { - if (log.isDebugEnabled()) { - log.debug("inputModelName = " + getModel().getName()); - } - this.builder = new JavaBuilder(getModel().getName()); - return builder.getModel(); - } - - @Override - protected void debugOutputModel() { - if (log.isDebugEnabled()) { - log.debug("classes : " + getOutputModel().getClasses().size()); - for (ObjectModelClass clazz : getOutputModel().getClasses()) { - log.debug(" class : " + clazz.getQualifiedName()); - ImportsManager manager = getOutputModel().getExtension(clazz.getQualifiedName(), ImportsManager.class); - for (String imports : manager.getImports(clazz.getPackageName())) { - log.debug(" import : " + imports); - } - for (ObjectModelAttribute attribute : clazz.getAttributes()) { - log.debug(" attribute : " + attribute.getType() + " " + attribute.getName()); - } - for (ObjectModelOperation operation : clazz.getOperations()) { - log.debug(" operation : " + operation.getReturnType() + " " + operation.getName()); - } - } - } - } - - protected ObjectModelClass createClass(String name, String packageName) { - return builder.createClass(name, packageName); - } - - public ObjectModelEnumeration createEnumeration(String name, String packageName) { - return builder.createEnumeration(name, packageName); - } - - protected ObjectModelClass createAbstractClass(String name, String packageName) { - return builder.createAbstractClass(name, packageName); - } - - protected ObjectModelInterface createInterface(String name, String packageName) { - return builder.createInterface(name, packageName); - } - - protected void setSuperClass(ObjectModelClass classifier, String superclassQualifiedName) { - builder.setSuperClass(classifier, superclassQualifiedName); - } - - protected void setSuperClass(ObjectModelClass classifier, Class<?> superclassQualifiedName) { - builder.setSuperClass(classifier, superclassQualifiedName.getName()); - } - - protected void addInterface(ObjectModelClassifier classifier, String interfaceQualifiedName) { - builder.addInterface(classifier, interfaceQualifiedName); - } - - protected void addInterface(ObjectModelClassifier classifier, Class<?> interfaceQualifiedName) { - builder.addInterface(classifier, interfaceQualifiedName.getName()); - } - - protected void addImport(ObjectModelClassifier classifier, String imports) { - builder.addImport(classifier, imports); - } - - protected void addImport(ObjectModelClassifier classifier, ObjectModelClass imports) { - builder.addImport(classifier, imports.getPackageName() + "." + imports.getName()); - } - - protected void addImport(ObjectModelClassifier classifier, Class<?> imports) { - builder.addImport(classifier, imports.getName()); - } - - protected ObjectModelAttribute addConstant(ObjectModelClassifier classifier, String name, String type, String value, - ObjectModelModifier visibility) throws IllegalArgumentException { - return builder.addConstant(classifier, name, type, value, visibility); - } - - protected ObjectModelAttribute addConstant(ObjectModelClassifier classifier, String name, Class<?> type, String value, - ObjectModelModifier visibility) throws IllegalArgumentException { - return builder.addConstant(classifier, name, type.getName(), value, visibility); - } - - protected ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type, String value, - ObjectModelModifier... modifiers) { - return builder.addAttribute(classifier, name, type, value, modifiers); - } - - protected ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, Class<?> type, String value, - ObjectModelModifier... modifiers) { - return builder.addAttribute(classifier, name, type.getName(), value, modifiers); - } - - protected ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, ObjectModelAttribute attribute) { - return builder.addAttribute(classifier, attribute); - } - - public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type) { - return builder.addAttribute(classifier, name, type); - } - - protected ObjectModelOperation addConstructor(ObjectModelClass clazz, ObjectModelModifier visibility) - throws IllegalArgumentException { - return builder.addConstructor(clazz, visibility); - } - - protected ObjectModelOperation addConstructor(ObjectModelEnumeration clazz, ObjectModelModifier visibility) - throws IllegalArgumentException { - return builder.addConstructor(clazz, visibility); - } - - protected ObjectModelOperation addOperation(ObjectModelClassifier classifier, String name, String type, - ObjectModelModifier... modifiers) { - return builder.addOperation(classifier, name, type, modifiers); - } - - protected ObjectModelOperation addOperation(ObjectModelClassifier classifier, String name, Class<?> type, - ObjectModelModifier... modifiers) { - return builder.addOperation(classifier, name, type == null ? null : type.getName(), modifiers); - } - - protected void addLiteral(ObjectModelEnumeration classifier, String name) { - builder.addLiteral(classifier, name); - } - - protected ObjectModelParameter addParameter(ObjectModelOperation operation, String type, String name) { - return builder.addParameter(operation, type, name); - } - - protected ObjectModelParameter addParameter(ObjectModelOperation operation, Class<?> type, String name) { - return builder.addParameter(operation, type.getName(), name); - } - - protected void addException(ObjectModelOperation operation, String exception) { - builder.addException(operation, exception); - } - - protected void addException(ObjectModelOperation operation, Class<?> exception) { - builder.addException(operation, exception.getName()); - } - - protected void setOperationBody(ObjectModelOperation operation, String body) - throws IllegalArgumentException { - builder.setOperationBody(operation, body); - } - - public ObjectModelClassifier addInnerClassifier(ObjectModelClass clazz, ObjectModelType type, String name) throws IllegalArgumentException { - return builder.addInnerClassifier(clazz, type, name); - } - - public void setDocumentation(ObjectModelElement element, String documentation) { - builder.setDocumentation(element, documentation); - } -} Copied: trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java (from rev 754, branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java) =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,206 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ +package org.nuiton.eugene.java; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.ObjectModelType; +import org.nuiton.eugene.Template; +import org.nuiton.eugene.ImportsManager; +import org.nuiton.eugene.ObjectModelTransformer; +import org.nuiton.eugene.models.object.*; + +/** + * OM2JavaTransformer + * <p/> + * Created: 28 oct. 2009 + * + * @author fdesbois + * @version $Revision$ + * <p/> + * Mise a jour: $Date$ + * par : $Author$ + */ +public abstract class ObjectModelTransformerToJava extends ObjectModelTransformer<ObjectModel> { + + private static final Log log = LogFactory.getLog(ObjectModelTransformerToJava.class); + + protected JavaBuilder builder; + + @Override + protected Template<ObjectModel> initOutputTemplate() { + return new JavaGenerator(); + } + + @Override + protected ObjectModel initOutputModel() { + if (log.isDebugEnabled()) { + log.debug("inputModelName = " + getModel().getName()); + } + this.builder = new JavaBuilder(getModel().getName()); + return builder.getModel(); + } + + @Override + protected void debugOutputModel() { + if (log.isDebugEnabled()) { + log.debug("classes : " + getOutputModel().getClasses().size()); + for (ObjectModelClass clazz : getOutputModel().getClasses()) { + log.debug(" class : " + clazz.getQualifiedName()); + ImportsManager manager = getOutputModel().getExtension(clazz.getQualifiedName(), ImportsManager.class); + for (String imports : manager.getImports(clazz.getPackageName())) { + log.debug(" import : " + imports); + } + for (ObjectModelAttribute attribute : clazz.getAttributes()) { + log.debug(" attribute : " + attribute.getType() + " " + attribute.getName()); + } + for (ObjectModelOperation operation : clazz.getOperations()) { + log.debug(" operation : " + operation.getReturnType() + " " + operation.getName()); + } + } + } + } + + protected ObjectModelClass createClass(String name, String packageName) { + return builder.createClass(name, packageName); + } + + public ObjectModelEnumeration createEnumeration(String name, String packageName) { + return builder.createEnumeration(name, packageName); + } + + protected ObjectModelClass createAbstractClass(String name, String packageName) { + return builder.createAbstractClass(name, packageName); + } + + protected ObjectModelInterface createInterface(String name, String packageName) { + return builder.createInterface(name, packageName); + } + + protected void setSuperClass(ObjectModelClass classifier, String superclassQualifiedName) { + builder.setSuperClass(classifier, superclassQualifiedName); + } + + protected void setSuperClass(ObjectModelClass classifier, Class<?> superclassQualifiedName) { + builder.setSuperClass(classifier, superclassQualifiedName.getName()); + } + + protected void addInterface(ObjectModelClassifier classifier, String interfaceQualifiedName) { + builder.addInterface(classifier, interfaceQualifiedName); + } + + protected void addInterface(ObjectModelClassifier classifier, Class<?> interfaceQualifiedName) { + builder.addInterface(classifier, interfaceQualifiedName.getName()); + } + + protected void addImport(ObjectModelClassifier classifier, String imports) { + builder.addImport(classifier, imports); + } + + protected void addImport(ObjectModelClassifier classifier, ObjectModelClass imports) { + builder.addImport(classifier, imports.getPackageName() + "." + imports.getName()); + } + + protected void addImport(ObjectModelClassifier classifier, Class<?> imports) { + builder.addImport(classifier, imports.getName()); + } + + protected ObjectModelAttribute addConstant(ObjectModelClassifier classifier, String name, String type, String value, + ObjectModelModifier visibility) throws IllegalArgumentException { + return builder.addConstant(classifier, name, type, value, visibility); + } + + protected ObjectModelAttribute addConstant(ObjectModelClassifier classifier, String name, Class<?> type, String value, + ObjectModelModifier visibility) throws IllegalArgumentException { + return builder.addConstant(classifier, name, type.getName(), value, visibility); + } + + protected ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type, String value, + ObjectModelModifier... modifiers) { + return builder.addAttribute(classifier, name, type, value, modifiers); + } + + protected ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, Class<?> type, String value, + ObjectModelModifier... modifiers) { + return builder.addAttribute(classifier, name, type.getName(), value, modifiers); + } + + protected ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, ObjectModelAttribute attribute) { + return builder.addAttribute(classifier, attribute); + } + + public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type) { + return builder.addAttribute(classifier, name, type); + } + + protected ObjectModelOperation addConstructor(ObjectModelClass clazz, ObjectModelModifier visibility) + throws IllegalArgumentException { + return builder.addConstructor(clazz, visibility); + } + + protected ObjectModelOperation addConstructor(ObjectModelEnumeration clazz, ObjectModelModifier visibility) + throws IllegalArgumentException { + return builder.addConstructor(clazz, visibility); + } + + protected ObjectModelOperation addOperation(ObjectModelClassifier classifier, String name, String type, + ObjectModelModifier... modifiers) { + return builder.addOperation(classifier, name, type, modifiers); + } + + protected ObjectModelOperation addOperation(ObjectModelClassifier classifier, String name, Class<?> type, + ObjectModelModifier... modifiers) { + return builder.addOperation(classifier, name, type == null ? null : type.getName(), modifiers); + } + + protected void addLiteral(ObjectModelEnumeration classifier, String name) { + builder.addLiteral(classifier, name); + } + + protected ObjectModelParameter addParameter(ObjectModelOperation operation, String type, String name) { + return builder.addParameter(operation, type, name); + } + + protected ObjectModelParameter addParameter(ObjectModelOperation operation, Class<?> type, String name) { + return builder.addParameter(operation, type.getName(), name); + } + + protected void addException(ObjectModelOperation operation, String exception) { + builder.addException(operation, exception); + } + + protected void addException(ObjectModelOperation operation, Class<?> exception) { + builder.addException(operation, exception.getName()); + } + + protected void setOperationBody(ObjectModelOperation operation, String body) + throws IllegalArgumentException { + builder.setOperationBody(operation, body); + } + + public ObjectModelClassifier addInnerClassifier(ObjectModelClass clazz, ObjectModelType type, String name) throws IllegalArgumentException { + return builder.addInnerClassifier(clazz, type, name); + } + + public void setDocumentation(ObjectModelElement element, String documentation) { + builder.setDocumentation(element, documentation); + } +} Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java ___________________________________________________________________ Added: svn:keywords + Author Date Revision Added: svn:mergeinfo + /branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java:641-651 /branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java:682-754 Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/Model.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/Model.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/Model.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models; @@ -30,18 +32,23 @@ public interface Model { /** + * Plexus role name + */ + String ROLE_NAME = Model.class.getName(); + + /** * Returns the name of this model. * * @return the name of this model. */ - public abstract String getName(); + String getName(); /** * Returns the version of this model. * * @return the version of this model. */ - public abstract String getVersion(); + String getVersion(); /** * Returns the tagValues associated with this element. @@ -49,7 +56,7 @@ * * @return a Map containing all tagValues associated with this element */ - public abstract Map<String, String> getTagValues(); + Map<String, String> getTagValues(); /** * Returns the tagValue corresponding to the given name, or null if the element has no associated tagValue for this name. @@ -57,6 +64,6 @@ * @param tagValue tag value key * @return the value of the found tagValue, or null if the element has no associated tagValue for this name. */ - public abstract String getTagValue(String tagValue); + String getTagValue(String tagValue); } //Model Deleted: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/JavaClassBuilder.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/JavaClassBuilder.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/JavaClassBuilder.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,60 +0,0 @@ -/* *##% - * Copyright (c) 2009 poussin. All rights reserved. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - *##%*/ - -package org.nuiton.eugene.models.object; - - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelClassifierImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelInterfaceImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl; - -/** - * class that help to build java class or interface object. - * - * - * @author poussin - * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ - */ -public class JavaClassBuilder { - - /** to use log facility, just put in your code: log.info(\"...\"); */ - static private Log log = LogFactory.getLog(JavaClassBuilder.class); - - public ObjectModelClass createClass(String name) { - ObjectModelClassImpl result = new ObjectModelClassImpl(); - return result; - } - - public ObjectModelInterface createInterface(String name) { - ObjectModelInterfaceImpl result = new ObjectModelInterfaceImpl(); - return result; - } - - public ObjectModelOperation addOperation(ObjectModelClassifier clazz, - String name, String failbackName) { - ObjectModelOperationImpl result = new ObjectModelOperationImpl(); - result.setName(name); - ((ObjectModelClassifierImpl)clazz).addOperation(result); - return result; - } -} Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModel.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModel.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModel.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,13 +14,15 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object; import java.util.Collection; import java.util.List; +import org.nuiton.eugene.ImportsManager; import org.nuiton.eugene.models.Model; /** @@ -44,7 +47,7 @@ * * @return a Collection containing all ObjectModelClassifier for this model. */ - public Collection<ObjectModelClassifier> getClassifiers(); + Collection<ObjectModelClassifier> getClassifiers(); /** * Returns the classifier corresponding to the given qualified name, or null if the model contains no classifier for this qualified name. @@ -52,8 +55,7 @@ * * @return the ObjectModelClassifier of the found classifier, or null if the model contains no classifier for this qualified name. */ - public ObjectModelClassifier getClassifier( - String qualifiedClassifierName); + ObjectModelClassifier getClassifier(String qualifiedClassifierName); /** * Returns all classes defined in this model. (Except innerClasses) @@ -61,7 +63,7 @@ * * @return a Collection containing all ObjectModelClass for this model. */ - public Collection<ObjectModelClass> getClasses(); + Collection<ObjectModelClass> getClasses(); /** * Returns the class corresponding to the given qualified name, or null if the model contains no class for this qualified name. @@ -69,7 +71,7 @@ * * @return the ObjectModelClass of the found class, or null if the model contains no class for this qualified name. */ - public ObjectModelClass getClass(String qualifiedClassName); + ObjectModelClass getClass(String qualifiedClassName); /** @@ -78,7 +80,7 @@ * * @return true if the class has been found. */ - public boolean hasClass(String qualifiedClassName); + boolean hasClass(String qualifiedClassName); /** * Returns all interfaces defined in this model. @@ -86,7 +88,7 @@ * * @return a Collection containing all ObjectModelInterface for this model. */ - public Collection<ObjectModelInterface> getInterfaces(); + Collection<ObjectModelInterface> getInterfaces(); /** * Returns the interface corresponding to the given qualified name, or null if the model contains no interface for this qualified name. @@ -94,8 +96,7 @@ * * @return the ObjectModelInterface of the found interface, or null if the model contains no interface for this qualified name. */ - public ObjectModelInterface getInterface( - String qualifiedInterfaceName); + ObjectModelInterface getInterface(String qualifiedInterfaceName); /** @@ -104,20 +105,32 @@ * * @return a Collection containing all ObjectModelEnumeration for this model. */ - public Collection<ObjectModelEnumeration> getEnumerations(); + Collection<ObjectModelEnumeration> getEnumerations(); /** * Return the enumeration corresponding to the given qualified name * @param qualifiedEnumerationName * @return the ObjectModelEnumeration of the found enumeration or null if the model contains no enumeration for this qualified name. */ - public ObjectModelEnumeration getEnumeration(String qualifiedEnumerationName); + ObjectModelEnumeration getEnumeration(String qualifiedEnumerationName); /** * Returns all comments not lied to a particular model element * * @return a List containing all comments for this model as Strings. */ - public List<String> getComments(); + List<String> getComments(); + /** + * Get the extension associated to the reference (unique) + * @param <O> object type returned + * @param reference unique corresponding to the extension to get + * @param extensionClass class of the extension + * @return the object value for the extension + * @throws ClassCastException when extensionClass is not valid + * @throws IllegalArgumentException for non existing extension with reference + */ + <O> O getExtension(String reference, Class<O> extensionClass) + throws ClassCastException, IllegalArgumentException; + } //ObjectModel Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelAssociationClass.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelAssociationClass.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelAssociationClass.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelAttribute.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelAttribute.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelAttribute.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClass.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClass.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClass.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object; @@ -48,7 +50,7 @@ * * @return a Collection containing all inner ObjectModelClass for this class. */ - Collection<ObjectModelClass> getInnerClasses(); + Collection<ObjectModelClassifier> getInnerClassifiers(); /** * Returns the discriminator for the given superclass. @@ -82,12 +84,12 @@ */ boolean isAbstract(); - /** - * Returns whether this class is inner an other class or not. - * - * @return a boolean indicating whether this class is inner an other class or not. - */ - boolean isInner(); +// /** +// * Returns whether this class is inner an other class or not. +// * +// * @return a boolean indicating whether this class is inner an other class or not. +// */ +// boolean isInner(); /** * Returns all operations defined on all Super class extended by this Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClassifier.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClassifier.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelClassifier.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object; @@ -155,4 +157,19 @@ */ public boolean isInterface(); + /** + * Returns whether this classifier is an enumeration or not + * @see ObjectModelEnumeration + * + * @return a boolean indicating whether this classifier is an enumeration or not. + */ + public boolean isEnum(); + + /** + * Returns whether this class is inner an other class or not. + * + * @return a boolean indicating whether this class is inner an other class or not. + */ + boolean isInner(); + } //ObjectModelClassifier Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelDependency.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelDependency.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelDependency.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelElement.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelEnumeration.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelEnumeration.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelEnumeration.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object; @@ -23,39 +25,38 @@ * ObjectModelEnumeration. * * @author Florian Desbois <fdesbois@codelutin.com> - * Copyright Code Lutin + * Copyright Code Lutin * @version $Revision: 483 $ - * */ -public interface ObjectModelEnumeration extends ObjectModelElement { +public interface ObjectModelEnumeration extends ObjectModelClassifier { - /** - * Returns the package name of this enumeration. - * - * @return the package name of this enumeration. - */ - public String getPackageName(); +// /** +// * Returns the package name of this enumeration. +// * +// * @return the package name of this enumeration. +// */ +// public String getPackageName(); +// +// /** +// * Returns the qualified name of this enumeration. +// * Class qualified name is composed of the package name and the enumeration name. +// * +// * @return the qualified name of this enumeration. +// */ +// public String getQualifiedName(); /** - * Returns the qualified name of this enumeration. - * Class qualified name is composed of the package name and the enumeration name. - * - * @return the qualified name of this enumeration. - */ - public String getQualifiedName(); - - /** * Returns literals of this enumeration. * * @return a Collection of String */ public Collection<String> getLiterals(); - /** - * Returns all operations defined on this en enumeration. - * @see ObjectModelOperation - * - * @return a Collection containing all ObjectModelOperation for this enumeration. - */ - public Collection<ObjectModelOperation> getOperations(); +// /** +// * Returns all operations defined on this en enumeration. +// * @see ObjectModelOperation +// * +// * @return a Collection containing all ObjectModelOperation for this enumeration. +// */ +// public Collection<ObjectModelOperation> getOperations(); } Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelInterface.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelInterface.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelInterface.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object; Copied: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelModifier.java (from rev 754, branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelModifier.java) =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelModifier.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelModifier.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,92 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ + +package org.nuiton.eugene.models.object; + +/** + * ObjectModelModifier + * + * Created: 3 nov. 2009 + * + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public enum ObjectModelModifier { + + STATIC("static"), + FINAL("final"), + ABSTRACT("abstract"), + + PUBLIC("public"), + PROTECTED("protected"), + PRIVATE("private"), + PACKAGE(""), + + AGGREGATE("aggregate"), + COMPOSITE("composite"), + UNIQUE("unique"), + + ORDERED("ordered"), + NAVIGABLE("navigable"); + + private String stringValue; + + ObjectModelModifier(String stringValue) { + this.stringValue = stringValue; + } + + public boolean isVisibility() { + return this == PUBLIC || + this == PROTECTED || + this == PRIVATE || + this == PACKAGE; + } + + public boolean isAssociationType() { + return this == AGGREGATE || + this == COMPOSITE; + } + + @Override + public String toString() { + return stringValue; + } + + public static ObjectModelModifier toValue(String name) { + if (name.equals(PUBLIC.toString())) { + return PUBLIC; + } else if (name.equals(PRIVATE.toString())) { + return PRIVATE; + } else if (name.equals(PROTECTED.toString())) { + return PROTECTED; + } else if (name.equals(PACKAGE.toString())) { + return PACKAGE; + } else { + return null; + } + } + + + +} Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelOperation.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelOperation.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelOperation.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelParameter.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelParameter.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelParameter.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object; Copied: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelVisibility.java (from rev 754, branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelVisibility.java) =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelVisibility.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelVisibility.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,35 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.nuiton.eugene.models.object; + +/** + * + * @author fdesbois + */ +@Deprecated +public enum ObjectModelVisibility { + PUBLIC, PROTECTED, PRIVATE, PACKAGE +} Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/validator/AttributeNamesValidator.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/validator/AttributeNamesValidator.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/validator/AttributeNamesValidator.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object.validator; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/validator/ClassNamesValidator.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/validator/ClassNamesValidator.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/validator/ClassNamesValidator.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object.validator; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/validator/NameBasedValidator.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/validator/NameBasedValidator.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/validator/NameBasedValidator.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object.validator; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/validator/ObjectModelValidator.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/validator/ObjectModelValidator.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/validator/ObjectModelValidator.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object.validator; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/DigesterObjectModelRuleSet.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/DigesterObjectModelRuleSet.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/DigesterObjectModelRuleSet.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object.xml; @@ -69,10 +71,14 @@ // root element must be present on stask d.addSetProperties("objectModel"); - d.addObjectCreate("*/class", ObjectModelClassImpl.class); - d.addSetProperties("*/class"); - d.addSetNext("*/class", "addClass"); + d.addObjectCreate("objectModel/class", ObjectModelClassImpl.class); + d.addSetProperties("objectModel/class"); + d.addSetNext("objectModel/class", "addClass"); + d.addObjectCreate("objectModel/class/class", ObjectModelClassImpl.class); + d.addSetProperties("objectModel/class/class"); + d.addSetNext("objectModel/class/class", "addInnerClassifier"); + d.addObjectCreate("objectModel/interface", ObjectModelInterfaceImpl.class); d.addSetProperties("objectModel/interface"); Copied: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtension.java (from rev 754, branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtension.java) =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtension.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtension.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,93 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ + +package org.nuiton.eugene.models.object.xml; + +import java.util.HashMap; +import java.util.Map; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.GeneratorUtil; + +/** + * ExternalCacheExtension + * + * Created: 2 nov. 2009 + * + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class ExternalCacheExtension { + + private static final Log log = LogFactory.getLog(ExternalCacheExtension.class); + + public static final String OBJECTMODEL_EXTENSION = "externalClassifiers"; + + protected Map<String, ObjectModelClassifierImpl> cache; + + public ExternalCacheExtension() { + this.cache = new HashMap<String, ObjectModelClassifierImpl>(); + } + + @SuppressWarnings("unchecked") + public <C extends ObjectModelClassifierImpl> C getCache(ObjectModelImplRef reference, Class<C> classifierClass) + throws RuntimeException { + ObjectModelClassifierImpl classifier = cache.get(reference.getName()); + C result; + if (classifier != null && !classifierClass.isAssignableFrom(classifier.getClass())) { + throw new ClassCastException("Invalid cast for " + classifierClass.getName()); + } + if (classifier == null) { + try { + result = classifierClass.newInstance(); + addClassifierToCache(reference, result); + if (log.isDebugEnabled()) { + log.debug("Add '" + reference.getName() + "' to external cache"); + } + } catch (Exception eee) { // IllegalAccessException and InstantiationException + throw new RuntimeException("Unable to add new '" + classifierClass.getName() + + "' to cache for '" + reference.getName() + "'", eee); + } + } else { + if (log.isDebugEnabled()) { + log.debug("Get '" + reference.getName() + "' from external cache"); + } + result = (C) classifier; + } + return result; + } + + protected void addClassifierToCache(ObjectModelImplRef reference, ObjectModelClassifierImpl classifier) { + String fqn = reference.getName(); + String packageName = GeneratorUtil.getParentPackageName(fqn); + String name = GeneratorUtil.getClassNameFromQualifiedName(fqn); + classifier.setName(name); + classifier.setPackage(packageName); + classifier.postInit(); // to create qualifiedName + classifier.setExtern(true); + cache.put(reference.getName(), classifier); + } + + +} Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModeImplAssociationClassParticipant.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModeImplAssociationClassParticipant.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModeImplAssociationClassParticipant.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object.xml; @@ -31,8 +33,10 @@ public class ObjectModeImplAssociationClassParticipant extends ObjectModelImplRef { + // class protected ObjectModelAssociationClassImpl associationClass = null; + // role protected String attributeName = null; public ObjectModeImplAssociationClassParticipant() { Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAssociationClassImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAssociationClassImpl.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAssociationClassImpl.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,5 +1,6 @@ /* - * \*##% Eugene + * \*##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -14,7 +15,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* */ package org.nuiton.eugene.models.object.xml; @@ -99,9 +101,10 @@ .getClassifier(ref.getName()); participantsClassifiers.add(classifier); ObjectModelAttribute attribute = null; - if (classifier.isClass()) { - attribute = ((ObjectModelClass) classifier).getAttribute(ref - .getAttributeName()); + //TODO this +// if (classifier.isClass()) { + if (classifier instanceof ObjectModelClass) { + attribute = classifier.getAttribute(ref.getAttributeName()); if (attribute == null) { log.warn("WARNING : Attribute " + ref.getAttributeName() + " not found on " + classifier.getQualifiedName()); Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAttributeImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAttributeImpl.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAttributeImpl.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,12 +14,11 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object.xml; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.GeneratorUtil; import org.nuiton.eugene.models.object.ObjectModelAttribute; import org.nuiton.eugene.models.object.ObjectModelClass; @@ -38,8 +38,6 @@ public class ObjectModelAttributeImpl extends ObjectModelParameterImpl implements ObjectModelAttribute { - private static final Log log = LogFactory.getLog(ObjectModelAttributeImpl.class); - protected String reverseAttributeName = null; protected int reverseMaxMultiplicity = -1; protected String associationType = null; @@ -54,7 +52,6 @@ super(); } - @Override public void postInit() { if (name == null) { name = GeneratorUtil.toLowerCaseFirstLetter(GeneratorUtil @@ -83,7 +80,6 @@ this.isFinal = isFinal; } - @Override public void setStatic(boolean isStatic) { this.isStatic = isStatic; } @@ -98,7 +94,6 @@ * @return a boolean indicating whether this attribute is an aggregate or * not. */ - @Override public boolean isAggregate() { return "aggregate".equals(associationType) || "shared".equals(associationType); } @@ -109,12 +104,10 @@ * @return a boolean indicating whether this attribute is an composite or * not. */ - @Override public boolean isComposite() { return "composite".equals(associationType); } - @Override public String getVisibility() { return visibility; } @@ -129,7 +122,6 @@ * @return a boolean indicating whether this attribute reference a model * classifier or not. */ - @Override public boolean referenceClassifier() { return (getClassifier() != null); } @@ -141,7 +133,6 @@ * @return the ObjectModelClassfifier referenced by this attribute or null * if it does not reference a model classifier. */ - @Override public ObjectModelClassifier getClassifier() { return getModel().getClassifier(type); } @@ -155,7 +146,6 @@ * other end of the association or null if this is not an * association, or if it is not bi-directionnal. */ - @Override public ObjectModelAttribute getReverseAttribute() { ObjectModelAttribute reverseAttribute = null; ObjectModelClassifier classifier = getClassifier(); @@ -166,7 +156,6 @@ return reverseAttribute; } - @Override public String getReverseAttributeName() { if ((reverseAttributeName == null) || ("".equals(reverseAttributeName))) { reverseAttributeName = GeneratorUtil @@ -175,15 +164,10 @@ return reverseAttributeName; } - @Override public String getName() { - if (getModel() != null) { - // impossible de recuperer le classifier si le model est null - // En mode DEBUG Digester appel les toString et le model peut etre null lors du parse - if ((name == null || "".equals(name)) && getClassifier() != null) { - name = GeneratorUtil.toLowerCaseFirstLetter(getClassifier() - .getName()); - } + if ((name == null || "".equals(name)) && getClassifier() != null) { + name = GeneratorUtil.toLowerCaseFirstLetter(getClassifier() + .getName()); } return name; } @@ -193,7 +177,6 @@ * * @see org.nuiton.eugene.models.object.ObjectModelAttribute#getReverseMaxMultiplicity() */ - @Override public int getReverseMaxMultiplicity() { return reverseMaxMultiplicity; } @@ -205,7 +188,6 @@ * @return a ObjectModelClass corresponding to the association class * associated with this association, or null if there is none. */ - @Override public ObjectModelClass getAssociationClass() { return getModel().getClass(associationClassName); } @@ -217,7 +199,6 @@ * @return a boolean indicating whether this association has an associated * association class, ot not. */ - @Override public boolean hasAssociationClass() { return (getAssociationClass() != null); } @@ -227,7 +208,6 @@ * * @return a boolean indicating whether this attribute is static or not. */ - @Override public boolean isStatic() { return isStatic; } @@ -237,7 +217,6 @@ * * @return a boolean indicating whether this attribute is final or not. */ - @Override public boolean isFinal() { return isFinal; } @@ -245,7 +224,6 @@ /* * @see org.nuiton.eugene.models.object.ObjectModelAttribute#isNavigable() */ - @Override public boolean isNavigable() { return isNavigable; } @@ -261,6 +239,7 @@ /* * @see org.nuiton.eugene.models.object.ObjectModelAttribute#isIndexed() */ + @Deprecated @Override public boolean isIndexed() { return hasStereotype("indexed"); Copied: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilder.java (from rev 754, branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilder.java) =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilder.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilder.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,543 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ + +package org.nuiton.eugene.models.object.xml; + +import org.nuiton.eugene.ObjectModelType; +import org.nuiton.eugene.models.object.*; + +/** + * ObjectModelBuilder + * <p/> + * Created: 3 nov. 2009 + * + * @author fdesbois + * @version $Revision$ + * <p/> + * Builder to fill an empty ObjectModel. The object model name is important if you want to use the model + * in generators. + * <p/> + * Mise a jour: $Date$ + * par : $Author$ + */ +public class ObjectModelBuilder { + + protected ObjectModelImpl model; + + /** + * Constructor. Must have a name for the new model created. + * + * @param name model name + */ + public ObjectModelBuilder(String name) { + this.model = new ObjectModelImpl(); + this.model.setName(name); + } + + /** + * Get the building model + * + * @return the ObjectModel which is currently built + */ + public ObjectModel getModel() { + return this.model; + } + + /** + * Add a tagValue to the model. + * + * @param name tagValue name + * @param value tagValue value + */ + public void addTagValue(String name, String value) { + ObjectModelImplTagValue tagValue = new ObjectModelImplTagValue(); + tagValue.setName(name); + tagValue.setValue(value); + model.addTagValue(tagValue); + } + + /** + * Add a tagValue to an element + * + * @param element where the tag value will be added + * @param name tagValue name + * @param value tagValue value + */ + public void addTagValue(ObjectModelElement element, String name, String value) { + ObjectModelElementImpl impl = (ObjectModelElementImpl) element; + + ObjectModelImplTagValue tagValue = new ObjectModelImplTagValue(); + tagValue.setName(name); + tagValue.setValue(value); + impl.addTagValue(tagValue); + } + + /** + * Create a new class in the model. + * Modifiers allowed : ABSTRACT, STATIC. + * + * @param name class name + * @param packageName class package + * @param modifiers class modifiers + * @return the new ObjectModelClass added to the model + */ + public ObjectModelClass createClass(String name, String packageName, ObjectModelModifier... modifiers) { + ObjectModelClassImpl result = new ObjectModelClassImpl(); + return createClass(result, name, packageName, modifiers); + } + + protected ObjectModelClass createClass(ObjectModelClassImpl clazz, String name, String packageName, ObjectModelModifier... modifiers) + throws IllegalArgumentException { + clazz.setName(name); + clazz.setPackage(packageName); + for (ObjectModelModifier modifier : modifiers) { + switch (modifier) { + case ABSTRACT: + clazz.setAbstract(true); + break; + case STATIC: + clazz.setStatic(true); + break; + default: + throw new IllegalArgumentException("Unsupported modifier type '" + modifier.name() + "'"); + } + } + model.addClass(clazz); + return clazz; + } + + /** + * Create a new interface in the model. + * + * @param name interface name + * @param packageName interface package + * @return the new ObjectModelInterface added to the model + */ + public ObjectModelInterface createInterface(String name, String packageName) { + ObjectModelInterfaceImpl result = new ObjectModelInterfaceImpl(); + result.setName(name); + result.setPackage(packageName); + model.addInterface(result); + return result; + } + + /** + * Create a new interface in the model. + * + * @param name interface name + * @param packageName interface package + * @return the new ObjectModelInterface added to the model + */ + public ObjectModelEnumeration createEnumeration(String name, String packageName) { + ObjectModelEnumerationImpl result = new ObjectModelEnumerationImpl(); + result.setName(name); + result.setPackage(packageName); + model.addEnumeration(result); + return result; + } + + + /** + * Add an attribute to a classifier (interface, class, enum) without default value. + * Default visibility is set to PUBLIC. + * + * @param classifier where the attribute will be added + * @param name attribute name + * @param type attribute type (full qualified name) + * @return the new ObjectModelAttribute added + */ + public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type) { + return addAttribute(classifier, name, type, ""); + } + + /** + * Add an attribute to a classifier (interface, class, enum). + * Modifiers allowed : STATIC, FINAL, PUBLIC, PRIVATE, PROTECTED, PACKAGE, ORDERED, UNIQUE. + * The last visibility set will be keeped. + * + * @param classifier where the attribute will be added + * @param name attribute name + * @param type attribute type (full qualified name) + * @param value default value for the attribute + * @param modifiers attribute modifiers + * @return the new ObjectModelAttribute added + * @throws IllegalArgumentException illegal Modifier + * @see org.nuiton.eugene.models.object.ObjectModelModifier#isVisibility() + */ + public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type, String value, + ObjectModelModifier... modifiers) throws IllegalArgumentException { + ObjectModelAttributeImpl attribute = new ObjectModelAttributeImpl(); + attribute.setName(name); + attribute.setType(type); + attribute.setDefaultValue(value); + + for (ObjectModelModifier modifier : modifiers) { + if (modifier.isVisibility()) { + attribute.setVisibility(modifier.toString()); + } else { + switch (modifier) { + case STATIC: + attribute.setStatic(true); + break; + case FINAL: + attribute.setFinal(true); + break; + case ORDERED: + attribute.setOrdering(modifier.toString()); + break; + case UNIQUE: + attribute.setUnique(true); + break; + default: + throw new IllegalArgumentException("Unsupported modifier type '" + modifier.name() + "'"); + } + } + } + + ObjectModelClassifierImpl classifierImpl = (ObjectModelClassifierImpl) classifier; + classifierImpl.addAttribute(attribute); + return attribute; + } + + /** + * Add an association A to B. Create only attribute association for classifierA. + * MODIFIERS allowed : PUBLIC, PRIVATE, PACKAGE, PROTECTED, AGGREGATE, COMPOSITE, ORDERED, UNIQUE + * STATIC, NAVIGABLE. + * You have to use method {@link #addReverseAssociation(org.nuiton.eugene.models.object.ObjectModelAttribute,java.lang.String, int, int, org.nuiton.eugene.models.object.ObjectModelModifier...)} + * to create attribute association for classifierB. + * + * @param classifierA classifier from + * @param classifierB classifier to + * @param roleName role of A in association + * @param minMultiplicity minimum multiplicity of A in association + * @param maxMultiplicity maximum multiplicity of A in association + * @param modifiers for the association + * @return the attribute corresponding to the association for classifierA + * @throws IllegalArgumentException illegal modifier + */ + public ObjectModelAttribute addAssociation(ObjectModelClassifier classifierA, ObjectModelClassifier classifierB, String roleName, + int minMultiplicity, int maxMultiplicity, ObjectModelModifier... modifiers) + throws IllegalArgumentException { + + ObjectModelAttributeImpl attribute = new ObjectModelAttributeImpl(); + + attribute.setName(roleName); + attribute.setMinMultiplicity(minMultiplicity); + attribute.setMaxMultiplicity(maxMultiplicity); + attribute.setType(classifierB.getQualifiedName()); + + for (ObjectModelModifier modifier : modifiers) { + + if (modifier.isVisibility()) { + attribute.setVisibility(modifier.toString()); + } else if (modifier.isAssociationType()) { + attribute.setAssociationType(modifier.toString()); + } else { + switch (modifier) { + case ORDERED: + attribute.setOrdering(modifier.toString()); + break; + case UNIQUE: + attribute.setUnique(true); + break; + case STATIC: + attribute.setStatic(true); + break; + case NAVIGABLE: + attribute.setNavigable(true); + break; + default: + throw new IllegalArgumentException("Unsupported modifier type '" + modifier.name() + "'"); + } + } + } + ObjectModelClassifierImpl impl = (ObjectModelClassifierImpl) classifierA; + impl.addAttribute(attribute); + return attribute; + } + + /** + * Create reverse association from an other association. + * MODIFIERS allowed : PUBLIC, PRIVATE, PACKAGE, PROTECTED, AGGREGATE, COMPOSITE, ORDERED, UNIQUE + * STATIC, NAVIGABLE. + * + * @param attrAssociation other association A to B + * @param roleName role of B in association + * @param minMultiplicity minimum multiplicity of B in association + * @param maxMultiplicity maximum multiplicity of B in association + * @param modifiers for the association + * @return the attribute corresponding to the association for classifierB + * @see #addAssociation(org.nuiton.eugene.models.object.ObjectModelClassifier, org.nuiton.eugene.models.object.ObjectModelClassifier,java.lang.String, int, int, org.nuiton.eugene.models.object.ObjectModelModifier...) + */ + public ObjectModelAttribute addReverseAssociation(ObjectModelAttribute attrAssociation, String roleName, + int minMultiplicity, int maxMultiplicity, ObjectModelModifier... modifiers) { + + ObjectModelAttributeImpl associationA = (ObjectModelAttributeImpl) attrAssociation; + // Add reverse parameters + associationA.setReverseAttributeName(roleName); + associationA.setReverseMaxMultiplicity(maxMultiplicity); + + ObjectModelClassifierImpl classifierA = + (ObjectModelClassifierImpl) associationA.getDeclaringElement(); + + String typeB = associationA.getType(); + // Get classifierB from model + ObjectModelClassifierImpl classifierB = (ObjectModelClassifierImpl) model.getClassifier(typeB); + + // Create reverse association + ObjectModelAttributeImpl associationB = + (ObjectModelAttributeImpl) addAssociation(classifierB, classifierA, roleName, + minMultiplicity, maxMultiplicity, modifiers); + + associationB.setReverseAttributeName(associationA.getName()); + associationB.setReverseMaxMultiplicity(associationA.getMaxMultiplicity()); + + return associationB; + } + + /** + * Create association class. The two extremities of the association must be existing before creating + * the association class. + * Modifiers allowed : ABSTRACT, STATIC. + * + * @param name association class name + * @param packageName association package name + * @param attrAssociationA attribute association for classifierA involved in association class + * @param attrAssociationB attribute association for classifierB involved in association class + * @param modifiers for the association class + * @return the new association class created with participants A and B + */ + public ObjectModelAssociationClass createAssociationClass(String name, String packageName, ObjectModelAttribute attrAssociationA, + ObjectModelAttribute attrAssociationB, ObjectModelModifier... modifiers) { + + ObjectModelAssociationClassImpl associationClass = new ObjectModelAssociationClassImpl(); + createClass(associationClass, name, packageName, modifiers); + + // Add associationClass in attrAssociationA + ObjectModelAttributeImpl attrA = (ObjectModelAttributeImpl) attrAssociationA; + attrA.setAssociationClassName(associationClass.getQualifiedName()); + + // Add associationClass in attrAssociationB + ObjectModelAttributeImpl attrB = (ObjectModelAttributeImpl) attrAssociationB; + attrB.setAssociationClassName(associationClass.getQualifiedName()); + + // Create participantA + ObjectModeImplAssociationClassParticipant participantA = + new ObjectModeImplAssociationClassParticipant(); + + participantA.setAttribute(attrA.getName()); + ObjectModelClassifier classifierA = (ObjectModelClassifier) attrA.getDeclaringElement(); + participantA.setName(classifierA.getQualifiedName()); + + associationClass.addParticipant(participantA); + + // Create participantB + ObjectModeImplAssociationClassParticipant participantB = + new ObjectModeImplAssociationClassParticipant(); + + participantB.setAttribute(attrB.getName()); + ObjectModelClassifier classifierB = (ObjectModelClassifier) attrB.getDeclaringElement(); + participantB.setName(classifierB.getQualifiedName()); + + associationClass.addParticipant(participantB); + + return associationClass; + } + + /** + * Add an operation to a classifier. + * Modifiers allowed : STATIC, ABSTRACT, PUBLIC, PRIVATE, PROTECTED, PACKAGE. + * The last visibility set will be keeped. + * + * @param classifier where the operation will be added + * @param name operation name + * @param returnType operation type (full qualified name) + * @param modifiers operation modifiers + * @return the new ObjectModelOperation added + * @throws IllegalArgumentException illegal Modifier + */ + public ObjectModelOperation addOperation(ObjectModelClassifier classifier, + String name, String returnType, ObjectModelModifier... modifiers) + throws IllegalArgumentException { + ObjectModelOperationImpl result = new ObjectModelOperationImpl(); + result.setName(name); + + if (returnType != null) { + ObjectModelParameterImpl returnParameter = new ObjectModelParameterImpl(); + returnParameter.setType(returnType); + result.setReturnParameter(returnParameter); + } + + for (ObjectModelModifier modifier : modifiers) { + if (modifier.isVisibility()) { + result.setVisibility(modifier.toString()); + } else { + switch (modifier) { + case STATIC: + result.setStatic(true); + break; + case ABSTRACT: + result.setAbstract(true); + break; + default: + throw new IllegalArgumentException("Unsupported modifier type '" + modifier.name() + "'"); + } + } + } + + ((ObjectModelClassifierImpl) classifier).addOperation(result); + return result; + } + + /** + * Set the body code for an Operation. + * + * @param operation where the code will be added + * @param body code to add to the operation + */ + public void setOperationBody(ObjectModelOperation operation, String body) { + ObjectModelOperationImpl operationImpl = (ObjectModelOperationImpl) operation; + operationImpl.setBodyCode(body); + } + + /** + * Add an interface to a classifier. The interface may not exist in model. + * + * @param classifier where the interface will be added + * @param interfaceQualifiedName interface qualified name + */ + public void addInterface(ObjectModelClassifier classifier, String interfaceQualifiedName) { + ObjectModelClassifierImpl impl = (ObjectModelClassifierImpl) classifier; + + ObjectModelImplRef interfacez = new ObjectModelImplRef(); + interfacez.setName(interfaceQualifiedName); + + impl.addInterface(interfacez); + } + + /** + * Add a superclass to an other class. The superclass may not exist in model. + * + * @param clazz where the superclass will be added + * @param superclassQualifiedName superclass qualified name + */ + public void addSuperclass(ObjectModelClass clazz, String superclassQualifiedName) { + ObjectModelClassImpl impl = (ObjectModelClassImpl) clazz; + + ObjectModelImplSuperClassRef superclass = new ObjectModelImplSuperClassRef(); + superclass.setName(superclassQualifiedName); + + impl.addSuperclass(superclass); + } + + /** + * Add a superclass to an other class. The superclass may not exist in model. + * + * @param clazz where the superclass will be added + * @param type type of inner classifier to create + * @param name superclass qualified name + * @return the new instanciated inner classifier + * @throws IllegalArgumentException if given {@code type} is not a concrete classifier type + */ + public ObjectModelClassifier addInnerClassifier(ObjectModelClass clazz, ObjectModelType type, String name) throws IllegalArgumentException { + ObjectModelClassImpl impl = (ObjectModelClassImpl) clazz; + ObjectModelClassifierImpl inner; + switch (type) { + + case OBJECT_MODEL_ENUMERATION: + inner = new ObjectModelEnumerationImpl(); + break; + case OBJECT_MODEL_CLASS: + inner = new ObjectModelClassImpl(); + break; + case OBJECT_MODEL_INTERFACE: + inner = new ObjectModelInterfaceImpl(); + break; + default: + throw new IllegalArgumentException("can not add a none classifier type " + type); + } + inner.setName(name); + impl.addInnerClassifier(inner); + inner.setObjectModelImpl(impl.getModel()); + return inner; + } + + /** + * Add a parameter to an operation. + * + * @param operation where the parameter will be added + * @param type paremeter type (full qualified name) + * @param name parameter name + * @return the new ObjectModelParameter added + */ + public ObjectModelParameter addParameter(ObjectModelOperation operation, String type, String name) { + ObjectModelOperationImpl impl = (ObjectModelOperationImpl) operation; + ObjectModelParameterImpl param = new ObjectModelParameterImpl(); + param.setType(type); + param.setName(name); + impl.addParameter(param); + return param; + } + + /** + * Add an exception to an operation. + * + * @param operation where the exception will be added + * @param exception name of the exception (full qualified name) + */ + public void addException(ObjectModelOperation operation, String exception) { + ObjectModelOperationImpl impl = (ObjectModelOperationImpl) operation; + ObjectModelParameterImpl param = new ObjectModelParameterImpl(); + param.setType(exception); + impl.addExceptionParameter(param); + } + + /** + * Set the documentation of an element in the model. + * + * @param element where the documentation will be setted + * @param documentation String documentation for the element + */ + public void setDocumentation(ObjectModelElement element, String documentation) { + ObjectModelElementImpl impl = (ObjectModelElementImpl) element; + impl.setDocumentation(documentation); + } + + /** + * Add a stereotype to an element. + * + * @param element where the stereotype will be added + * @param stereotype name + */ + public void addStereotype(ObjectModelElement element, String stereotype) { + ObjectModelElementImpl impl = (ObjectModelElementImpl) element; + ObjectModelImplRef ref = new ObjectModelImplRef(); + ref.setName(stereotype); + impl.addStereotype(ref); + } + + public void addLiteral(ObjectModelEnumeration enumz, String name) { + ObjectModelEnumerationImpl impl = (ObjectModelEnumerationImpl) enumz; + ObjectModelImplRef ref = new ObjectModelImplRef(); + ref.setName(name); + impl.addLiteral(ref); + } +} Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object.xml; @@ -29,7 +31,6 @@ import org.nuiton.eugene.models.object.ObjectModelAttribute; import org.nuiton.eugene.models.object.ObjectModelClass; import org.nuiton.eugene.models.object.ObjectModelClassifier; -import org.nuiton.eugene.models.object.ObjectModelInterface; import org.nuiton.eugene.models.object.ObjectModelOperation; /** @@ -44,21 +45,24 @@ * Last update : $Date$ * by : $Author$ */ -public class ObjectModelClassImpl extends ObjectModelClassifierImpl implements - ObjectModelClass { +public class ObjectModelClassImpl extends ObjectModelClassifierImpl implements ObjectModelClass { protected List<ObjectModelClass> superclasses = null; protected Map<ObjectModelClass, String> superclassesDiscriminators = new HashMap<ObjectModelClass, String>(); protected List<ObjectModelImplRef> superclassesRefs = new ArrayList<ObjectModelImplRef>(); protected List<ObjectModelClass> specialisations = null; - protected List<ObjectModelClass> innerClasses = null; + protected List<ObjectModelClassifier> innerClasses = null; protected boolean abstractz = false; - protected boolean inner = false; public ObjectModelClassImpl() { super(); } + public void clearSuperclasses() { + superclasses = null; + superclassesRefs.clear(); + } + public void addSuperclass(ObjectModelImplRef ref) { superclassesRefs.add(ref); // superclassesRefs is modified, superclasses must be reset @@ -69,18 +73,16 @@ * Digester method to add innerClass to this ObjectModelClass. * @param innerClass the ObjectModelClass to add */ - public void addClass(ObjectModelClassImpl innerClass) { + public void addInnerClassifier(ObjectModelClassifierImpl innerClass) { innerClass.setDeclaringElement(this); innerClass.setInner(true); if (innerClasses == null) { - innerClasses = new ArrayList<ObjectModelClass>(); + innerClasses = new ArrayList<ObjectModelClassifier>(); } innerClasses.add(innerClass); } - public void setInner(boolean inner) { - this.inner = inner; - } + public void setAbstract(boolean abstractz) { this.abstractz = abstractz; @@ -90,22 +92,26 @@ public Collection<ObjectModelClass> getSuperclasses() { if (superclasses == null) { superclasses = new ArrayList<ObjectModelClass>(); - Iterator<?> i = superclassesRefs.iterator(); - while (i.hasNext()) { - ObjectModelImplSuperClassRef ref = (ObjectModelImplSuperClassRef) i - .next(); - ObjectModelClass superclass = objectModelImpl.getClass(ref - .getName()); + for (ObjectModelImplRef superclassesRef : superclassesRefs) { + ObjectModelImplSuperClassRef ref = (ObjectModelImplSuperClassRef) superclassesRef; + ObjectModelClass superclass = objectModelImpl.getClass(ref.getName()); + + if (superclass == null) { + ExternalCacheExtension cache = objectModelImpl.getExtension( + ExternalCacheExtension.OBJECTMODEL_EXTENSION, ExternalCacheExtension.class); + + superclass = cache.getCache(ref, ObjectModelClassImpl.class); + } + superclasses.add(superclass); - superclassesDiscriminators.put(superclass, ref - .getDiscriminator()); + superclassesDiscriminators.put(superclass, ref.getDiscriminator()); } } return superclasses; } @Override - public Collection<ObjectModelClass> getInnerClasses() { + public Collection<ObjectModelClassifier> getInnerClassifiers() { return this.innerClasses; } @@ -132,9 +138,8 @@ public Collection<ObjectModelClass> getSpecialisations() { if (specialisations == null) { specialisations = new ArrayList<ObjectModelClass>(); - for (Iterator<?> i = objectModelImpl.getClasses().iterator(); i - .hasNext();) { - ObjectModelClass candidateClass = (ObjectModelClass) i.next(); + for (Object o : objectModelImpl.getClasses()) { + ObjectModelClass candidateClass = (ObjectModelClass) o; if (candidateClass.getSuperclasses().contains(this)) { specialisations.add(candidateClass); } @@ -155,9 +160,7 @@ @Override public Collection<ObjectModelClass> getSpecialisations(String discriminator) { List<ObjectModelClass> discriminatedSpecialisations = new ArrayList<ObjectModelClass>(); - for (Iterator<ObjectModelClass> i = getSpecialisations().iterator(); i - .hasNext();) { - ObjectModelClass candidateClass = i.next(); + for (ObjectModelClass candidateClass : getSpecialisations()) { if (discriminator.equals(candidateClass.getDiscriminator(this))) { discriminatedSpecialisations.add(candidateClass); } @@ -175,10 +178,10 @@ return abstractz; } - @Override - public boolean isInner() { - return inner; - } +// @Override +// public boolean isInner() { +// return inner; +// } @Override public Collection<ObjectModelOperation> getAllOtherOperations( @@ -191,7 +194,7 @@ @Override public Collection<ObjectModelOperation> getAllSuperclassOperations( boolean distinct) { - Collection<ObjectModelOperation> result = null; + Collection<ObjectModelOperation> result; if (distinct) { result = new HashSet<ObjectModelOperation>(); } else { @@ -203,8 +206,8 @@ protected Collection<ObjectModelOperation> getAllSuperclassOperations( Collection<ObjectModelOperation> result) { - for (Iterator<?> i = getSuperclasses().iterator(); i.hasNext();) { - ObjectModelClassImpl clazz = (ObjectModelClassImpl) i.next(); + for (Object o : getSuperclasses()) { + ObjectModelClassImpl clazz = (ObjectModelClassImpl) o; result.addAll(clazz.getOperations()); clazz.getAllSuperclassOperations(result); clazz.getAllInterfaceOperations(result); @@ -221,8 +224,8 @@ protected Collection<ObjectModelAttribute> getAllOtherAttributes( Collection<ObjectModelAttribute> result) { - for (Iterator<?> i = getSuperclasses().iterator(); i.hasNext();) { - ObjectModelClassImpl clazz = (ObjectModelClassImpl) i.next(); + for (Object o : getSuperclasses()) { + ObjectModelClassImpl clazz = (ObjectModelClassImpl) o; result.addAll(clazz.getAttributes()); clazz.getAllOtherAttributes(result); } @@ -232,51 +235,46 @@ @Override public String toString() { StringBuffer result = new StringBuffer(); - result.append("class " + getQualifiedName() + "<<" + getStereotypes() - + ">> tagvalue: " + getTagValues() + " "); - if (objectModelImpl != null) { - // impossible de recuperer les superclasses et les interfaces si le model est null - // En mode DEBUG Digester appel les toString et le model peut etre null lors du parse - result.append("extends "); - for (Iterator<?> i = getSuperclasses().iterator(); i.hasNext();) { - result.append(((ObjectModelClassifier) i.next()).getName()); - if (i.hasNext()) { - result.append(", "); - } + result.append("class ").append(getQualifiedName()).append("<<").append(getStereotypes()).append(">> tagvalue: ").append(getTagValues()).append(" "); + result.append("extends "); + for (Iterator<?> i = getSuperclasses().iterator(); i.hasNext();) { + result.append(((ObjectModelClassifier) i.next()).getName()); + if (i.hasNext()) { + result.append(", "); } - result.append("implements "); - for (Iterator<?> i = getInterfaces().iterator(); i.hasNext();) { - result.append(((ObjectModelClassifier) i.next()).getName()); - if (i.hasNext()) { - result.append(", "); - } + } + result.append("implements "); + for (Iterator<?> i = getInterfaces().iterator(); i.hasNext();) { + result.append(((ObjectModelClassifier) i.next()).getName()); + if (i.hasNext()) { + result.append(", "); } } return result.toString(); } - /** - * Returns whether this classifier is a class or not - * - * @see ObjectModelClass - * - * @return a boolean indicating whether this classifier is a class or not. - */ - @Override - public boolean isClass() { - return true; - } - - /** - * Returns whether this classifier is an interface or not - * - * @see ObjectModelInterface - * - * @return a boolean indicating whether this classifier is an interface or - * not. - */ - @Override - public boolean isInterface() { - return false; - } +// /** +// * Returns whether this classifier is a class or not +// * +// * @see ObjectModelClass +// * +// * @return a boolean indicating whether this classifier is a class or not. +// */ +// @Override +// public boolean isClass() { +// return true; +// } +// +// /** +// * Returns whether this classifier is an interface or not +// * +// * @see ObjectModelInterface +// * +// * @return a boolean indicating whether this classifier is an interface or +// * not. +// */ +// @Override +// public boolean isInterface() { +// return false; +// } } Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,26 +14,14 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object.xml; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; +import org.nuiton.eugene.models.object.*; -import java.util.Map; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.eugene.models.object.ObjectModelAttribute; -import org.nuiton.eugene.models.object.ObjectModelClassifier; -import org.nuiton.eugene.models.object.ObjectModelDependency; -import org.nuiton.eugene.models.object.ObjectModelInterface; -import org.nuiton.eugene.models.object.ObjectModelOperation; +import java.util.*; /** * ObjectModelClassifierImpl. @@ -47,8 +36,6 @@ public abstract class ObjectModelClassifierImpl extends ObjectModelElementImpl implements ObjectModelClassifier { - private static final Log log = LogFactory.getLog(ObjectModelClassifierImpl.class); - protected boolean extern = false; protected String qualifiedName = null; @@ -61,22 +48,13 @@ protected List<ObjectModelDependency> dependencies = new ArrayList<ObjectModelDependency>(); protected String type = null; - + protected boolean inner = false; + @Override public String toString() { - String result = "" + getQualifiedName(); - if (objectModelImpl != null) { - // impossible de recuperer les interfaces si le model est null - // En mode DEBUG Digester appel les toString et le model peut etre null lors du parse - result += " implements " + getInterfaces(); - } - return result; + return "" + getQualifiedName() + " implements " + getInterfaces(); } - public ObjectModelClassifierImpl() { - super(); - } - @Override public void postInit() { super.postInit(); @@ -91,6 +69,15 @@ this.packageName = packageName; } + public void setInner(boolean inner) { + this.inner = inner; + } + + @Override + public boolean isInner() { + return inner; + } + public void addInterface(ObjectModelImplRef ref) { //if (ref == null) // return new ObjectModelImplRef(); @@ -143,7 +130,19 @@ if (interfaces == null) { interfaces = new ArrayList<ObjectModelInterface>(); for(ObjectModelImplRef ref : interfacesRefs) { - interfaces.add(objectModelImpl.getInterface(ref.getName())); + + ObjectModelInterfaceImpl interfacez = + (ObjectModelInterfaceImpl)objectModelImpl.getInterface(ref.getName()); + + if (interfacez == null) { // Interface not exist in model + + ExternalCacheExtension cache = objectModelImpl.getExtension( + ExternalCacheExtension.OBJECTMODEL_EXTENSION, ExternalCacheExtension.class); + + // get external interface from cache (or create it) + interfacez = cache.getCache(ref, ObjectModelInterfaceImpl.class); + } + interfaces.add(interfacez); } } return interfaces; @@ -152,9 +151,7 @@ @Override public Collection<ObjectModelOperation> getOperations(String name) { List<ObjectModelOperation> result = new ArrayList<ObjectModelOperation>(); - for (Iterator<ObjectModelOperation> i = getOperations().iterator(); i - .hasNext();) { - ObjectModelOperation op = i.next(); + for (ObjectModelOperation op : getOperations()) { if (name.equals(op.getName())) { result.add(op); } @@ -227,8 +224,8 @@ protected Collection<ObjectModelAttribute> getAllInterfaceAttributes( Collection<ObjectModelAttribute> result) { - for (Iterator<?> i = getInterfaces().iterator(); i.hasNext();) { - ObjectModelClassifierImpl clazz = (ObjectModelClassifierImpl) i.next(); + for (Object o : getInterfaces()) { + ObjectModelClassifierImpl clazz = (ObjectModelClassifierImpl) o; result.addAll(clazz.getAttributes()); clazz.getAllInterfaceAttributes(result); } @@ -252,4 +249,19 @@ } return null; } + + @Override + public final boolean isClass() { + return this instanceof ObjectModelClass; + } + + @Override + public final boolean isInterface() { + return this instanceof ObjectModelInterface; + } + + @Override + public final boolean isEnum() { + return this instanceof ObjectModelEnumeration; + } } Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelDependencyImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelDependencyImpl.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelDependencyImpl.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object.xml; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,5 +1,6 @@ /* - * \*##% Eugene + * \*##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -14,7 +15,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* */ package org.nuiton.eugene.models.object.xml; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelEnumerationImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelEnumerationImpl.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelEnumerationImpl.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object.xml; @@ -33,7 +35,7 @@ * @version $Revision: 478 $ * */ -public class ObjectModelEnumerationImpl extends ObjectModelElementImpl +public class ObjectModelEnumerationImpl extends ObjectModelClassifierImpl implements ObjectModelEnumeration { /** @@ -41,23 +43,23 @@ */ private Collection<ObjectModelImplRef> literalRefs = new ArrayList<ObjectModelImplRef>(); - /** - * Collection of operations objectModel - */ - private Collection<ObjectModelOperation> operations = new ArrayList<ObjectModelOperation>(); +// /** +// * Collection of operations objectModel +// */ +// private Collection<ObjectModelOperation> operations = new ArrayList<ObjectModelOperation>(); - /** - * Package name from objectModel file, loaded with Digester - */ - private String packageName; +// /** +// * Package name from objectModel file, loaded with Digester +// */ +// private String packageName; - public void setPackage(String packageName) { - this.packageName = packageName; - } - - public String getPackage() { - return this.packageName; - } +// public void setPackage(String packageName) { +// this.packageName = packageName; +// } +// +// public String getPackage() { +// return this.packageName; +// } /** * Add a literal to the ObjectModelEnumeration from Digester * @param ref corresponding to a Literal value @@ -66,27 +68,27 @@ literalRefs.add(ref); } - /** - * Add an operation to the ObjectModelEnumeration from Digester - * @param operation - */ - public void addOperation(ObjectModelOperationImpl operation) { - operation.postInit(); - operation.setDeclaringElement(this); - operations.add(operation); - } +// /** +// * Add an operation to the ObjectModelEnumeration from Digester +// * @param operation +// */ +// public void addOperation(ObjectModelOperationImpl operation) { +// operation.postInit(); +// operation.setDeclaringElement(this); +// operations.add(operation); +// } +// +// @Override +// public String getPackageName() { +// return this.packageName; +// } +// +// @Override +// public String getQualifiedName() { +// return this.packageName+"."+this.getName(); +// } @Override - public String getPackageName() { - return this.packageName; - } - - @Override - public String getQualifiedName() { - return this.packageName+"."+this.getName(); - } - - @Override public Collection<String> getLiterals() { Collection<String> results = new ArrayList<String>(); for (ObjectModelImplRef ref : literalRefs) { @@ -95,9 +97,9 @@ return results; } - @Override - public Collection<ObjectModelOperation> getOperations() { - return operations; - } +// @Override +// public Collection<ObjectModelOperation> getOperations() { +// return operations; +// } } Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,8 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ - + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object.xml; import java.util.ArrayList; @@ -48,6 +49,8 @@ * * Last update : $Date$ * by : $Author$ + * + * @plexus.component role="org.nuiton.eugene.models.Model" role-hint="objectmodel" description="Object model implementation" */ public class ObjectModelImpl implements ObjectModel { @@ -59,7 +62,11 @@ protected Map<String, ObjectModelEnumeration> enumerations = new HashMap<String, ObjectModelEnumeration>(); protected List<String> comments = new ArrayList<String>(); private Map<String, String> tagValues = new HashMap<String, String>(); - + /** + * Used to add others specific object to the model + * The key defined must be unique to get the significative extension associated to + */ + private Map<String, Object> extensions = new HashMap<String, Object>(); private static Log log = LogFactory.getLog(ObjectModelImpl.class); public void setName(String name) { @@ -74,7 +81,7 @@ public String getVersion() { return this.version; } - + public void addClass(ObjectModelClassImpl clazz) { //if (clazz == null) // return new ObjectModelClassImpl(this, null); @@ -82,18 +89,14 @@ clazz.setObjectModelImpl(this); if (!clazz.isExtern()) { - ObjectModelElementImpl initialElement = (ObjectModelElementImpl) classes - .get(clazz.getQualifiedName()); + ObjectModelElementImpl initialElement = (ObjectModelElementImpl) classes.get(clazz.getQualifiedName()); if (initialElement == null) { classes.put(clazz.getQualifiedName(), clazz); classifiers.put(clazz.getQualifiedName(), clazz); } else { if (!(initialElement instanceof ObjectModelClassImpl)) { throw new IllegalArgumentException( - "\"" - + clazz - + "\" is incompatible with already defined element \"" - + initialElement + "\""); + "\"" + clazz + "\" is incompatible with already defined element \"" + initialElement + "\""); } ObjectModelClassImpl initialClazz = (ObjectModelClassImpl) initialElement; @@ -114,18 +117,14 @@ clazz.setObjectModelImpl(this); if (!clazz.isExtern()) { - ObjectModelElementImpl initialElement = (ObjectModelElementImpl) classes - .get(clazz.getQualifiedName()); + ObjectModelElementImpl initialElement = (ObjectModelElementImpl) classes.get(clazz.getQualifiedName()); if (initialElement == null) { classes.put(clazz.getQualifiedName(), clazz); classifiers.put(clazz.getQualifiedName(), clazz); } else { if (!(initialElement instanceof ObjectModelAssociationClassImpl)) { throw new IllegalArgumentException( - "\"" - + clazz - + "\" is incompatible with already defined element \"" - + initialElement + "\""); + "\"" + clazz + "\" is incompatible with already defined element \"" + initialElement + "\""); } ObjectModelAssociationClassImpl initialClazz = (ObjectModelAssociationClassImpl) initialElement; @@ -145,6 +144,7 @@ * * @return the name of this model. */ + @Override public String getName() { return name; } @@ -156,6 +156,7 @@ * * @return a Collection containing all ObjectModelClassifier for this model. */ + @Override public Collection<ObjectModelClassifier> getClassifiers() { return classifiers.values(); } @@ -170,10 +171,10 @@ * @return the ObjectModelClassifier of the found classifier, or null if the * model contains no classifier for this qualified name. */ + @Override public ObjectModelClassifier getClassifier(String qualifiedClassifierName) { return (qualifiedClassifierName == null ? null - : (ObjectModelClassifier) classifiers - .get(qualifiedClassifierName)); + : classifiers.get(qualifiedClassifierName)); } /** @@ -183,6 +184,7 @@ * * @return a Collection containing all ObjectModelClass for this model. */ + @Override public Collection<ObjectModelClass> getClasses() { return classes.values(); } @@ -197,35 +199,21 @@ * @return the ObjectModelClass of the found class, or null if the model * contains no class for this qualified name. */ + @Override public ObjectModelClass getClass(String qualifiedClassName) { if (qualifiedClassName == null) { return null; } if (!hasClass(qualifiedClassName)) { - //FIXME Decide if this is a good idea if (log.isWarnEnabled()) { log.warn("Class " + qualifiedClassName + " not found in model"); - log.warn("You may forgot to declare for good an external class ?"); - - log.warn("Generating fake class"); } - ObjectModelClassImpl result = new ObjectModelClassImpl(); - int index = qualifiedClassName.lastIndexOf("."); - if (index != -1) { - result.setPackage(qualifiedClassName.substring(0, index)); - } - result.setName(qualifiedClassName.substring(index + 1)); - result.postInit(); - return result; + return null; } - return (ObjectModelClass) classes.get(qualifiedClassName); + return classes.get(qualifiedClassName); } - /* - * (non-Javadoc) - * - * @see org.nuiton.eugene.models.object.ObjectModel#hasClass(java.lang.String) - */ + @Override public boolean hasClass(String qualifiedClassName) { boolean hasClass = classes.containsKey(qualifiedClassName); return hasClass; @@ -238,18 +226,14 @@ interfacez.setObjectModelImpl(this); if (!interfacez.isExtern()) { - ObjectModelElementImpl initialElement = (ObjectModelElementImpl) interfaces - .get(interfacez.getQualifiedName()); + ObjectModelElementImpl initialElement = (ObjectModelElementImpl) interfaces.get(interfacez.getQualifiedName()); if (initialElement == null) { interfaces.put(interfacez.getQualifiedName(), interfacez); classifiers.put(interfacez.getQualifiedName(), interfacez); } else { if (!(initialElement instanceof ObjectModelInterfaceImpl)) { throw new IllegalArgumentException( - "\"" - + interfacez - + "\" is incompatible with already defined element \"" - + initialElement + "\""); + "\"" + interfacez + "\" is incompatible with already defined element \"" + initialElement + "\""); } ObjectModelInterfaceImpl initialInterfacez = (ObjectModelInterfaceImpl) initialElement; @@ -270,9 +254,9 @@ * @return the ObjectModelInterface of the found interface, or null if the * model contains no interface for this qualified name. */ + @Override public ObjectModelInterface getInterface(String qualifiedInterfaceName) { - ObjectModelInterface result = null; - result = (ObjectModelInterface) interfaces.get(qualifiedInterfaceName); + ObjectModelInterface result = interfaces.get(qualifiedInterfaceName); if (result == null && log.isWarnEnabled()) { log.warn("Interface " + qualifiedInterfaceName + " not found in model"); } @@ -286,6 +270,7 @@ * * @return a Collection containing all ObjectModelInterface for this model. */ + @Override public Collection<ObjectModelInterface> getInterfaces() { return interfaces.values(); } @@ -293,6 +278,7 @@ public void addEnumeration(ObjectModelEnumerationImpl enumeration) { enumeration.postInit(); enumeration.setObjectModelImpl(this); + classifiers.put(enumeration.getQualifiedName(), enumeration); enumerations.put(enumeration.getQualifiedName(), enumeration); } @@ -315,6 +301,7 @@ * * @return a List containing all comments for this model as Strings. */ + @Override public List<String> getComments() { return comments; } @@ -365,8 +352,7 @@ // regénérer l'objet } for (it = additionalClazzifier.getOperations().iterator(); it.hasNext();) { - ObjectModelOperationImpl operation = (ObjectModelOperationImpl) it - .next(); + ObjectModelOperationImpl operation = (ObjectModelOperationImpl) it.next(); if (!contains(initialClazzifier.getOperations(), operation)) { initialClazzifier.operations.add(operation); } @@ -377,20 +363,17 @@ initialClazzifier.comments.add(comment); } } - for (it = additionalClazzifier.getStereotypes().iterator(); it - .hasNext();) { + for (it = additionalClazzifier.getStereotypes().iterator(); it.hasNext();) { String stereotype = (String) it.next(); if (!initialClazzifier.getStereotypes().contains(stereotype)) { initialClazzifier.stereotypes.add(stereotype); } } - for (it = additionalClazzifier.getTagValues().keySet().iterator(); it - .hasNext();) { + for (it = additionalClazzifier.getTagValues().keySet().iterator(); it.hasNext();) { String tagName = (String) it.next(); if (!initialClazzifier.getTagValues().containsKey(tagName)) { - initialClazzifier.tagValues.put(tagName, additionalClazzifier - .getTagValue(tagName)); + initialClazzifier.tagValues.put(tagName, additionalClazzifier.getTagValue(tagName)); } } } @@ -410,8 +393,7 @@ mergeClassifiers(initialClazz, additionalClazz); for (it = additionalClazz.getAttributes().iterator(); it.hasNext();) { - ObjectModelAttributeImpl attribute = (ObjectModelAttributeImpl) it - .next(); + ObjectModelAttributeImpl attribute = (ObjectModelAttributeImpl) it.next(); if (!contains(initialClazz.getAttributes(), attribute)) { initialClazz.attributes.put(attribute.getName(), attribute); initialClazz.orderedAttributes.add(attribute); @@ -432,10 +414,8 @@ ObjectModelAssociationClassImpl additionalAssocClazz) { mergeClasses(initialAssocClazz, additionalAssocClazz); Iterator it; - for (it = additionalAssocClazz.participantsRefs.iterator(); it - .hasNext();) { - ObjectModeImplAssociationClassParticipant participant = (ObjectModeImplAssociationClassParticipant) it - .next(); + for (it = additionalAssocClazz.participantsRefs.iterator(); it.hasNext();) { + ObjectModeImplAssociationClassParticipant participant = (ObjectModeImplAssociationClassParticipant) it.next(); if (!contains(initialAssocClazz.participantsRefs, participant)) { initialAssocClazz.participantsRefs.add(participant); } @@ -452,8 +432,7 @@ private boolean contains(Collection<ObjectModelAttribute> coll, ObjectModelAttributeImpl toFind) { - for (Iterator<ObjectModelAttribute> it = coll.iterator(); it.hasNext();) { - ObjectModelAttribute attribute = it.next(); + for (ObjectModelAttribute attribute : coll) { if (attribute.getName().equals(toFind.getName())) { // Seul le nom // de l'attribut // compte @@ -488,6 +467,7 @@ * * @return a Map containing all tagValues associated with this element */ + @Override public Map<String, String> getTagValues() { return tagValues; } @@ -499,7 +479,39 @@ * @return the value of the found tagValue, or null if the element has no * associated tagValue for this name. */ + @Override public String getTagValue(String tagValue) { - return (tagValue == null ? null : (String) tagValues.get(tagValue)); + return (tagValue == null ? null : tagValues.get(tagValue)); } + + /** + * Get the extension associated to the reference (unique). Create it if not exist. + * @param <O> object type returned + * @param reference unique corresponding to the extension to get + * @param extensionClass class of the extension + * @return the object value for the extension + * @throws ClassCastException when extensionClass is not valid + * @throws RuntimeException when instantiation problem to create new extension + */ + @Override + @SuppressWarnings("unchecked") + public <O> O getExtension(String reference, Class<O> extensionClass) throws RuntimeException { + Object object = extensions.get(reference); + O result; + if (object != null && !extensionClass.isAssignableFrom(object.getClass())) { + throw new ClassCastException("Invalid cast for " + extensionClass.getName()); + } + if (object == null) { + try { + result = extensionClass.newInstance(); + } catch (Exception eee) { // IllegalAccessException and InstantiationException + throw new RuntimeException("Unable to create new extension '" +extensionClass.getName() + + "' for '" + reference + "'", eee); + } + extensions.put(reference, result); + } else { + result = (O)object; + } + return result; + } } Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImplRef.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImplRef.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImplRef.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object.xml; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImplSuperClassRef.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImplSuperClassRef.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImplSuperClassRef.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object.xml; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImplTagValue.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImplTagValue.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImplTagValue.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object.xml; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelInterfaceImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelInterfaceImpl.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelInterfaceImpl.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object.xml; @@ -35,16 +37,11 @@ * Last update : $Date$ * by : $Author$ */ -public class ObjectModelInterfaceImpl extends ObjectModelClassifierImpl - implements ObjectModelInterface { +public class ObjectModelInterfaceImpl extends ObjectModelClassifierImpl implements ObjectModelInterface { - public ObjectModelInterfaceImpl() { - super(); - } - public String toString() { StringBuffer result = new StringBuffer(); - result.append("interface " + getQualifiedName() + " "); + result.append("interface ").append(getQualifiedName()).append(" "); result.append("extends "); for (Iterator i = getInterfaces().iterator(); i.hasNext();) { result.append(((ObjectModelClassifier) i.next()).getName()); @@ -55,26 +52,26 @@ return result.toString(); } - /** - * Returns whether this classifier is a class or not - * - * @see ObjectModelClass - * - * @return a boolean indicating whether this classifier is a class or not. - */ - public boolean isClass() { - return false; - } - - /** - * Returns whether this classifier is an interface or not - * - * @see ObjectModelInterface - * - * @return a boolean indicating whether this classifier is an interface or - * not. - */ - public boolean isInterface() { - return true; - } +// /** +// * Returns whether this classifier is a class or not +// * +// * @see ObjectModelClass +// * +// * @return a boolean indicating whether this classifier is a class or not. +// */ +// public boolean isClass() { +// return false; +// } +// +// /** +// * Returns whether this classifier is an interface or not +// * +// * @see ObjectModelInterface +// * +// * @return a boolean indicating whether this classifier is an interface or +// * not. +// */ +// public boolean isInterface() { +// return true; +// } } Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelOperationImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelOperationImpl.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelOperationImpl.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object.xml; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelParameterImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelParameterImpl.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelParameterImpl.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.object.xml; @@ -93,8 +95,7 @@ */ @Override public boolean isOrdered() { - return "ordered".equals(ordering) - || getTagValue("orderBy") != null; + return "ordered".equals(ordering); } @Override Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModel.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModel.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModel.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.state; @@ -38,6 +40,6 @@ * Return the collection of charts * @return collection of charts */ - public abstract List<StateModelStateChart> getStateCharts(); + List<StateModelStateChart> getStateCharts(); } Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelComplexState.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelComplexState.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelComplexState.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.state; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelSimpleState.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelSimpleState.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelSimpleState.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.state; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelState.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelState.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelState.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.state; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelStateChart.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelStateChart.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelStateChart.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.state; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelTransition.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelTransition.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelTransition.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.state; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/DigesterStateModelRuleSet.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/DigesterStateModelRuleSet.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/DigesterStateModelRuleSet.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.state.xml; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelComplexeStateImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelComplexeStateImpl.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelComplexeStateImpl.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.state.xml; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.state.xml; @@ -34,6 +36,8 @@ * * Last update : $Date$ * By : $Author$ + * + * @plexus.component role="org.nuiton.eugene.models.Model" role-hint="statemodel" description="State model implementation" */ public class StateModelImpl implements StateModel { @@ -51,7 +55,7 @@ * Version of this model */ protected String version = null; - + /** * Model tagged values */ @@ -66,9 +70,7 @@ modelTagValues = new HashMap<String, String>(); } - /* - * @see org.nuiton.eugene.models.state.StateModel#getName() - */ + @Override public String getName() { return this.name; } @@ -97,9 +99,7 @@ listStateCharts.add(chart); } - /* - * @see org.nuiton.eugene.models.state.StateModel#getStateCharts() - */ + @Override public List<StateModelStateChart> getStateCharts() { return listStateCharts; } @@ -112,9 +112,7 @@ listStateCharts.addAll(charts); } - /* - * @see org.nuiton.eugene.models.state.StateModel#getTagValues() - */ + @Override public Map<String, String> getTagValues() { return modelTagValues; } @@ -135,6 +133,7 @@ * @return the value of the found tagValue, or null if the element has no * associated tagValue for this name. */ + @Override public String getTagValue(String key) { return (key == null ? null : (String) modelTagValues.get(key)); } @@ -142,7 +141,7 @@ /** * Set model version. * - * @param name model version + * @param version model version */ public void setVersion(String version) { this.version = version; @@ -158,4 +157,5 @@ return this.version; } + } Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelSimpleStateImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelSimpleStateImpl.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelSimpleStateImpl.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.state.xml; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelStateChartImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelStateChartImpl.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelStateChartImpl.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.state.xml; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelStateImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelStateImpl.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelStateImpl.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.state.xml; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelTransitionImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelTransitionImpl.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelTransitionImpl.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.state.xml; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/package-info.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/package-info.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/main/java/org/nuiton/eugene/package-info.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,3 +1,23 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ /** * Eugene. */ Property changes on: trunk/eugene/src/main/resources/dtd ___________________________________________________________________ Deleted: svn:mergeinfo - Property changes on: trunk/eugene/src/main/xsl/xmi2.1ToObjectModel.xsl ___________________________________________________________________ Deleted: svn:mergeinfo - Deleted: trunk/eugene/src/site/fr/rst/DevUIDoc.rst =================================================================== --- branches/eugene-2.0/eugene/src/site/fr/rst/DevUIDoc.rst 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/site/fr/rst/DevUIDoc.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -1,103 +0,0 @@ -======= -UIModel -======= - -:Authors: Aurelie MAZELIER -:Revision: $Revision: 649 $ -:Date: $Date: 2009-10-21 14:21:03 +0200 (Wed, 21 Oct 2009) $ - - -.. contents:: - - -Model UIModel -============= - -En parcourant un fichier xml, il est possible de construire un objet -UIModel. Cet objet est défini par les interfaces suivantes. - - -Interfaces ----------- - -- UIModel : - - - version XML - - root de type UIModelObject - - le nom du package - - liste des objets du model - -- UIModelObject : - - - nom - - type - - un UIModelObject parent - - un UIModel - - une liste d'arguments - - une liste de propriétés - - une liste d'évènements - - une liste d'enfants - -- UIModelArgument : - - - une liste d'arguments - -- UIModelProperty : - - - un nom - - une valeur (de différents type : int, float ...) - - un index - -- UIModelEvent : - - - le nom de la addListenerMethod - - le nom de la listenerInterface - - le nom de la listenerMethod - - le nom du handler - - le nom de la eventProperty - -- UIModelChild : - - - un enfant UIModelObject - - la contrainte de l'enfant de type UIModelConstraint - -- UIModelConstraint : - - - une valeur de type Object ou String - - -Implantations -------------- - -Il existe deux implantations de ces interfaces. - - -impl -~~~~ - -Cette première implantation permet d'obtenir un UIModel lors -du parcours du fichier xml de type uimodel par le parser -XMLParser. - - -xml -~~~ - -Cette deuxième implantation permet d'obtenir un UIModel lors -du parcours du fichier xml de type javaxml par le parser -JavaXMLParser. - - -JavaXMLParser -------------- - -Ce parser permet de parcourir des fichiers javaxml afin d'obtenir un -objet UIModel. Ce parser utilise dom4j. - - -Générateurs -=========== - -- Génération d'objet UIModel (UIModelGenerator). Ce générateur utilise les classes précédentes afin d'obtenir un objet UIModel en fonction des fichiers xml. A partir de cet objet UIModel, il est possible de lancer la génération. Ces générateurs sont utilisées dans Topia pour générer les fichiers java à partir de l'objet UIModel. - -- Génération d'objet UIModel (UIModelGeneratorWithCapitalizeName). Ce générateur est une sous classe du premier. Il est possède une méthode permettant de mettre la première lettre en majuscule du nom d'un objet, d'une propriété... Copied: trunk/eugene/src/site/fr/rst/DevUIDoc.rst (from rev 754, branches/eugene-2.0/eugene/src/site/fr/rst/DevUIDoc.rst) =================================================================== --- trunk/eugene/src/site/fr/rst/DevUIDoc.rst (rev 0) +++ trunk/eugene/src/site/fr/rst/DevUIDoc.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,103 @@ +======= +UIModel +======= + +:Authors: Aurelie MAZELIER +:Revision: $Revision: 649 $ +:Date: $Date: 2009-10-21 14:21:03 +0200 (Wed, 21 Oct 2009) $ + + +.. contents:: + + +Model UIModel +============= + +En parcourant un fichier xml, il est possible de construire un objet +UIModel. Cet objet est défini par les interfaces suivantes. + + +Interfaces +---------- + +- UIModel : + + - version XML + - root de type UIModelObject + - le nom du package + - liste des objets du model + +- UIModelObject : + + - nom + - type + - un UIModelObject parent + - un UIModel + - une liste d'arguments + - une liste de propriétés + - une liste d'évènements + - une liste d'enfants + +- UIModelArgument : + + - une liste d'arguments + +- UIModelProperty : + + - un nom + - une valeur (de différents type : int, float ...) + - un index + +- UIModelEvent : + + - le nom de la addListenerMethod + - le nom de la listenerInterface + - le nom de la listenerMethod + - le nom du handler + - le nom de la eventProperty + +- UIModelChild : + + - un enfant UIModelObject + - la contrainte de l'enfant de type UIModelConstraint + +- UIModelConstraint : + + - une valeur de type Object ou String + + +Implantations +------------- + +Il existe deux implantations de ces interfaces. + + +impl +~~~~ + +Cette première implantation permet d'obtenir un UIModel lors +du parcours du fichier xml de type uimodel par le parser +XMLParser. + + +xml +~~~ + +Cette deuxième implantation permet d'obtenir un UIModel lors +du parcours du fichier xml de type javaxml par le parser +JavaXMLParser. + + +JavaXMLParser +------------- + +Ce parser permet de parcourir des fichiers javaxml afin d'obtenir un +objet UIModel. Ce parser utilise dom4j. + + +Générateurs +=========== + +- Génération d'objet UIModel (UIModelGenerator). Ce générateur utilise les classes précédentes afin d'obtenir un objet UIModel en fonction des fichiers xml. A partir de cet objet UIModel, il est possible de lancer la génération. Ces générateurs sont utilisées dans Topia pour générer les fichiers java à partir de l'objet UIModel. + +- Génération d'objet UIModel (UIModelGeneratorWithCapitalizeName). Ce générateur est une sous classe du premier. Il est possède une méthode permettant de mettre la première lettre en majuscule du nom d'un objet, d'une propriété... Deleted: trunk/eugene/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst =================================================================== --- branches/eugene-2.0/eugene/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -1,82 +0,0 @@ -========================= -Principe de la génération -========================= - -Il y a deux façon de voir la génération. - -La première que l'on rencontre le plus -souvent génère des fichiers avec des sections à -modifier par le développeur. Ces sections sont marquées par des commentaires -que le générateur interprète pour savoir qu'il n'a pas le droit de modifier -cette partie de code. - -La deuxième qui à pour principe: - -- le générateur ne doit jamais modifier les fichiers de l'utilisateur. -- l'utilisateur ne doit jamais modifier le code généré - -De cette façon les choses sont clairement séparé, et cela est possible sans -utilisation d'artifice perturbant le développeur grâce au nouveau langage à -objet et à l'héritage. - -La grosse différence n'est pas dans les générateurs eux même mais dans les -templates de génération. Si tous les générateurs de la première catégorie -peuvent très bien servir pour faire de la génération de la seconde, -l'inverse n'est pas vrai. Car la seconde catégorie demande des générateurs -beaucoup plus simple, ce qui est d'ailleur un avantage pour la maintenance. - -Code Lutin utilise un générateur du deuxième type: Eugene - -Quelques générateurs de la première catégorie: - -- Acceleo (Obeo) -- Pragmatic (Argia) - -Les principes de Eugene -======================= - -- le générateur ne doit jamais modifier les fichiers de l'utilisateur. -- l'utilisateur ne doit jamais modifier le code généré -- le modèle est toujours la source (pas de reverse, pas de modification du - modèle par le générateur -- être le plus simple possible (simple à maintenir) -- s'appuyer sur les normes (XMI) -- pouvoir utiliser plusieurs fichiers XMI pour la même génération -- ne pas mettre dans le modèle des choses techniques (ex: type pour la base de - données) mais dans un fichier de propriété à coté du modèle. -- avoir une couche d'abstraction du XMI pour évité la modification des - templates si la version de XMI change (XMLObjectModel) -- s'appuyer sur un modèle mémoire simple (ObjectModel écrit spécifiquement - car aucun modèle simple n'a été trouvé) -- s'appuyer sur un langage puissant et connu des développeurs (Java) -- ne jamais mélanger le code généré et le code utilisateur -- pouvoir générer n'importe quelle type de fichier (XML, Java, texte, ...) -- être facilement intégrable dans une phase de génération/compilation - (task ant, plugin maven) -- être indépendant d'un outil de développement spécifique (chacun à le droit de - choisir l'éditeur qu'il souhaite). - -Défaut de la première solution -============================== - -- il faut prévoir partout ou l'utilisateur pourrait souhaiter ajouter du - code. Par exemple dans Pragmatic, on ne peut pas utiliser les imports car il - n'y a pas de section utilisateur à cet endroit, il faut donc à chaque fois - écrire le package lorsque l'on souhaite utiliser une classe non encore - importée. - -- le développeur voit beaucoup de code qu'il n'a pas le droit de modifier - ce qui complexifie la vue du développeur pour rien - -Défaut des générateurs le plus souvent rencontré -================================================ - -- Les générateurs au lieu d'utiliser un langage et façon de faire que tous - les développeurs connaissent réinvente leur propre syntaxe et langage. - -Eugene lui utilise seulement du Java et les tags JSP (<%, <%=, %>). -De cette façon le générateur reste simple pas de langage à développer et -parser. L'utilisateur qui connait Java connait le langage de template. Et -surtout l'utilisateur n'est pas limité par le langage développé -spécifiquement pour les templates. - Copied: trunk/eugene/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst (from rev 754, branches/eugene-2.0/eugene/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst) =================================================================== --- trunk/eugene/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst (rev 0) +++ trunk/eugene/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,82 @@ +========================= +Principe de la génération +========================= + +Il y a deux façon de voir la génération. + +La première que l'on rencontre le plus +souvent génère des fichiers avec des sections à +modifier par le développeur. Ces sections sont marquées par des commentaires +que le générateur interprète pour savoir qu'il n'a pas le droit de modifier +cette partie de code. + +La deuxième qui à pour principe: + +- le générateur ne doit jamais modifier les fichiers de l'utilisateur. +- l'utilisateur ne doit jamais modifier le code généré + +De cette façon les choses sont clairement séparé, et cela est possible sans +utilisation d'artifice perturbant le développeur grâce au nouveau langage à +objet et à l'héritage. + +La grosse différence n'est pas dans les générateurs eux même mais dans les +templates de génération. Si tous les générateurs de la première catégorie +peuvent très bien servir pour faire de la génération de la seconde, +l'inverse n'est pas vrai. Car la seconde catégorie demande des générateurs +beaucoup plus simple, ce qui est d'ailleur un avantage pour la maintenance. + +Code Lutin utilise un générateur du deuxième type: Eugene + +Quelques générateurs de la première catégorie: + +- Acceleo (Obeo) +- Pragmatic (Argia) + +Les principes de Eugene +======================= + +- le générateur ne doit jamais modifier les fichiers de l'utilisateur. +- l'utilisateur ne doit jamais modifier le code généré +- le modèle est toujours la source (pas de reverse, pas de modification du + modèle par le générateur +- être le plus simple possible (simple à maintenir) +- s'appuyer sur les normes (XMI) +- pouvoir utiliser plusieurs fichiers XMI pour la même génération +- ne pas mettre dans le modèle des choses techniques (ex: type pour la base de + données) mais dans un fichier de propriété à coté du modèle. +- avoir une couche d'abstraction du XMI pour évité la modification des + templates si la version de XMI change (XMLObjectModel) +- s'appuyer sur un modèle mémoire simple (ObjectModel écrit spécifiquement + car aucun modèle simple n'a été trouvé) +- s'appuyer sur un langage puissant et connu des développeurs (Java) +- ne jamais mélanger le code généré et le code utilisateur +- pouvoir générer n'importe quelle type de fichier (XML, Java, texte, ...) +- être facilement intégrable dans une phase de génération/compilation + (task ant, plugin maven) +- être indépendant d'un outil de développement spécifique (chacun à le droit de + choisir l'éditeur qu'il souhaite). + +Défaut de la première solution +============================== + +- il faut prévoir partout ou l'utilisateur pourrait souhaiter ajouter du + code. Par exemple dans Pragmatic, on ne peut pas utiliser les imports car il + n'y a pas de section utilisateur à cet endroit, il faut donc à chaque fois + écrire le package lorsque l'on souhaite utiliser une classe non encore + importée. + +- le développeur voit beaucoup de code qu'il n'a pas le droit de modifier + ce qui complexifie la vue du développeur pour rien + +Défaut des générateurs le plus souvent rencontré +================================================ + +- Les générateurs au lieu d'utiliser un langage et façon de faire que tous + les développeurs connaissent réinvente leur propre syntaxe et langage. + +Eugene lui utilise seulement du Java et les tags JSP (<%, <%=, %>). +De cette façon le générateur reste simple pas de langage à développer et +parser. L'utilisateur qui connait Java connait le langage de template. Et +surtout l'utilisateur n'est pas limité par le langage développé +spécifiquement pour les templates. + Deleted: trunk/eugene/src/site/fr/rst/FAQ.rst =================================================================== --- branches/eugene-2.0/eugene/src/site/fr/rst/FAQ.rst 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/site/fr/rst/FAQ.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -1,16 +0,0 @@ -=== -FAQ -=== - -Comment convertir les modèles UML de Poseidon vers ArgoUML ? -============================================================ - -Il faut sauver le modèle sous Poseidon en XMI, on bien l'extraire du -fichier .zmul qui est en fait un fichier zip:: - - xlstproc -o <argo-file>.xmi poseidon2argouml.xsl <poseidon-file>.xmi - -Ensuite dans ArgoUML ouvrez le fichier généré. - -Les diagrammes ne sont pas convertie, il faut donc les recréer a partir des -classes en faisant du drag&drop. Copied: trunk/eugene/src/site/fr/rst/FAQ.rst (from rev 754, branches/eugene-2.0/eugene/src/site/fr/rst/FAQ.rst) =================================================================== --- trunk/eugene/src/site/fr/rst/FAQ.rst (rev 0) +++ trunk/eugene/src/site/fr/rst/FAQ.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,16 @@ +=== +FAQ +=== + +Comment convertir les modèles UML de Poseidon vers ArgoUML ? +============================================================ + +Il faut sauver le modèle sous Poseidon en XMI, on bien l'extraire du +fichier .zmul qui est en fait un fichier zip:: + + xlstproc -o <argo-file>.xmi poseidon2argouml.xsl <poseidon-file>.xmi + +Ensuite dans ArgoUML ouvrez le fichier généré. + +Les diagrammes ne sont pas convertie, il faut donc les recréer a partir des +classes en faisant du drag&drop. Deleted: trunk/eugene/src/site/fr/rst/ObjectModel.rst =================================================================== --- branches/eugene-2.0/eugene/src/site/fr/rst/ObjectModel.rst 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/site/fr/rst/ObjectModel.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -1,92 +0,0 @@ -=========== -ObjectModel -=========== - -:Authors: Arnaud Thimel, Florian Desbois -:Contact: eugene-devel@list.nuiton.org ou eugene-users@list.nuiton.org -:Revision: $Revision: 650 $ -:Date: $Date: 2009-10-21 15:22:32 +0200 (Wed, 21 Oct 2009) $ - - -.. contents:: - - -Introduction -============ - -Le générateur ObjectModelGenerator est prévu pour lire et analyser des modèles -objets puis générer du code à partir de ceux-ci. En UML, un modèle objet est -représenté par un diagramme de classe. Cette vision des modèles objet étant très -répandue, elle sert de base à l'ObjectModelGenerator (il est à noter cependant -que ce n'est pas obligatoire). - -Partons donc du principe que l'on dispose d'un modèle (diagramme de classe) créé -à l'aide d'un outil de modélisation au format XMI (XML Metadata Interchange). - -La génération de code se fait ensuite en trois étapes : - -- Epuration du XMI en un code XML ne conservant que les informations utiles ; -- Mise en mémoire du modèle simplifié ; -- Application des templates / génération de code. - - -Epuration du modèle XMI -======================= - -La plupart des outils de modélisation décrivent leur modèle en XMI. Or le XMI -est trop verbeux pour être compréhensible aisement. - -Eugene propose une tranformation XSLT permettant ainsi d'obtenir un XML -épuré décrivant le modèle et ne conservant que l'essentiel des informations. - -Parmi les informations extraites, on peut citer : - -- Objets (classes, classes abtraites, interfaces) -- Attributs (nom, type, visibilité, ...) -- Relations entre les classes (toutes multiplicités, navigabilité, classes d'association, ...) -- Opérations (nom, type de retour, noms et types des arguments, exceptions levées, ...) -- Stéréotypes - -A partir du diagramme suivant : - -.. image:: ../images/Hotel.png - -On obtient un ObjectModel tel que : - -.. image:: ../images/Hotel.objectmodel.png - - -Modèle mémoire -============== - -Une fois le XMI ramené à un XML compréhensible, le modèle est chargé en -mémoire afin de subir la génération. - -Ainsi, le modèle instancié est basé sur le diagramme de classes (méta-modèle) suivant : - -.. image:: ../images/ObjectModel.png - -Les interfaces disponibles pour les générateurs sont les suivantes : - -.. image:: ../images/ObjectModel_Interfaces.png - -ObjectModelGenerator : - -.. image:: ../images/ObjectModel_Generator.png - -Application des templates -========================= - -Chaque template est à lui seul un générateur qui hérite de ObjectModelGenerator. -Toute partie de ce générateur peut donc être surchargée permettant ainsi une -forte personnalisation des générateurs. Le rôle de l'ObjectModelGenerator est -donc de parcourir le modèle et à chaque élément clé du modèle, (model, classes -interfaces, classifier) les méthodes correspondantes sont appelées. Par défaut, -ces méthodes décrites dans le générateur de base sont vide, et il n'en ressort -donc aucun code généré. Les templates ont donc pour but de surcharger ses -méthodes et décrire le code qui va être généré. - -Les templates peuvent être de toutes sortes car ils peuvent générer un fichier -différent par modèle, par interface, par classe ou encore par classifier (souche -commune aux classes et interfaces). De plus, ils peuvent indifféremment générer -du code Java / XML ou encore tout autre type de code (texte ou autre...). Copied: trunk/eugene/src/site/fr/rst/ObjectModel.rst (from rev 754, branches/eugene-2.0/eugene/src/site/fr/rst/ObjectModel.rst) =================================================================== --- trunk/eugene/src/site/fr/rst/ObjectModel.rst (rev 0) +++ trunk/eugene/src/site/fr/rst/ObjectModel.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,92 @@ +=========== +ObjectModel +=========== + +:Authors: Arnaud Thimel, Florian Desbois +:Contact: eugene-devel@list.nuiton.org ou eugene-users@list.nuiton.org +:Revision: $Revision: 650 $ +:Date: $Date: 2009-10-21 15:22:32 +0200 (Wed, 21 Oct 2009) $ + + +.. contents:: + + +Introduction +============ + +Le générateur ObjectModelGenerator est prévu pour lire et analyser des modèles +objets puis générer du code à partir de ceux-ci. En UML, un modèle objet est +représenté par un diagramme de classe. Cette vision des modèles objet étant très +répandue, elle sert de base à l'ObjectModelGenerator (il est à noter cependant +que ce n'est pas obligatoire). + +Partons donc du principe que l'on dispose d'un modèle (diagramme de classe) créé +à l'aide d'un outil de modélisation au format XMI (XML Metadata Interchange). + +La génération de code se fait ensuite en trois étapes : + +- Epuration du XMI en un code XML ne conservant que les informations utiles ; +- Mise en mémoire du modèle simplifié ; +- Application des templates / génération de code. + + +Epuration du modèle XMI +======================= + +La plupart des outils de modélisation décrivent leur modèle en XMI. Or le XMI +est trop verbeux pour être compréhensible aisement. + +Eugene propose une tranformation XSLT permettant ainsi d'obtenir un XML +épuré décrivant le modèle et ne conservant que l'essentiel des informations. + +Parmi les informations extraites, on peut citer : + +- Objets (classes, classes abtraites, interfaces) +- Attributs (nom, type, visibilité, ...) +- Relations entre les classes (toutes multiplicités, navigabilité, classes d'association, ...) +- Opérations (nom, type de retour, noms et types des arguments, exceptions levées, ...) +- Stéréotypes + +A partir du diagramme suivant : + +.. image:: ../images/Hotel.png + +On obtient un ObjectModel tel que : + +.. image:: ../images/Hotel.objectmodel.png + + +Modèle mémoire +============== + +Une fois le XMI ramené à un XML compréhensible, le modèle est chargé en +mémoire afin de subir la génération. + +Ainsi, le modèle instancié est basé sur le diagramme de classes (méta-modèle) suivant : + +.. image:: ../images/ObjectModel.png + +Les interfaces disponibles pour les générateurs sont les suivantes : + +.. image:: ../images/ObjectModel_Interfaces.png + +ObjectModelGenerator : + +.. image:: ../images/ObjectModel_Generator.png + +Application des templates +========================= + +Chaque template est à lui seul un générateur qui hérite de ObjectModelGenerator. +Toute partie de ce générateur peut donc être surchargée permettant ainsi une +forte personnalisation des générateurs. Le rôle de l'ObjectModelGenerator est +donc de parcourir le modèle et à chaque élément clé du modèle, (model, classes +interfaces, classifier) les méthodes correspondantes sont appelées. Par défaut, +ces méthodes décrites dans le générateur de base sont vide, et il n'en ressort +donc aucun code généré. Les templates ont donc pour but de surcharger ses +méthodes et décrire le code qui va être généré. + +Les templates peuvent être de toutes sortes car ils peuvent générer un fichier +différent par modèle, par interface, par classe ou encore par classifier (souche +commune aux classes et interfaces). De plus, ils peuvent indifféremment générer +du code Java / XML ou encore tout autre type de code (texte ou autre...). Deleted: trunk/eugene/src/site/fr/rst/Todo.rst =================================================================== --- branches/eugene-2.0/eugene/src/site/fr/rst/Todo.rst 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/site/fr/rst/Todo.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -1,120 +0,0 @@ -==== -TODO -==== - - -:Revision: $Revision: 649 $ -:Date: $Date: 2009-10-21 14:21:03 +0200 (Wed, 21 Oct 2009) $ - - -Idées ou choses à faire -======================= - -- support des InnerClasses (en xmi argo: la classe est declarer dans une classe - dans un element UML:Namespace.ownedElement) (`Evolution #59`_ ) - -- support des static (tout element declarer dans une class/interface: methode, - attribut, enumeration, class, ...) - (en xmi argo: ownerScope='classifier' ou ownerScope='instance') (`Evolution #58`_ ) - -.. _Evolution #59: http://www.nuiton.org/issues/show/59 -.. _Evolution #58: http://www.nuiton.org/issues/show/58 - -- peut-etre faire des tests unitaires avec http://juxy.tigris.org/ pour le xls - -- Permettre de faire du 'model to model' avant la generation - -Model to Model -============== - -(2009-10-19 : En cours de developpement : `branches/1.0.1-javabuilder`_ ) - -.. _branches/1.0.1-javabuilder: http://nuiton.org/repositories/browse/eugene/branches/1.0.1-Javabuilder - -Pour tout ce qui est génération de classe Java, le principe de base d'Eugene -est de dire que le développeur écrit directement ce qu'il souhaite voir dans -le fichier final. - -Cela pose quelques difficultés: - -- difficulté de prévoir les imports -- difficulté d'éviter la génération de deux méthodes ayant le même nom - -L'idée serait alors de constuire la classe Java souhaitée au final en appelant -des méthodes (addImport, addMethod, addAttribute, ...). Ceci nous donnerait -alors un nouveau modèle mémoire dont on demanderait la génération à un -générateur sans inteligence qui se contenterait d'écrire le code Java modélisé. - -L'avantage est que pour chaque méthode à ajouter on peut demander avant si elle -n'a pas déjà été ajoutée et ainsi potentiellement la renomé avant de l'inclure. -D'ajouter de façon automatique tous les imports des arguments des méthodes, ... - -Pour pouvoir faire cela, nous pourrions nous baser sur ObjectModel, mais des -ajouter doivent être fait: - -- pouvoir indiquer sur une Class une série d'import. -- pouvoir ajouter un message de licence -- pouvoir ajouter sur une méthode sont code source - -Ce dernier élément est le plus problèmatique, car il deviendrait pénible de -devoir instancier tout le code de la méthode en objet et on perdrait l'idée -de départ d'Eugene. - -Dans eugène il est déjà possible de modifier la transformation des tags de -génération '/\*{' et '}\*/' qui par défaut génère un 'ouput.write("...");' -Dans notre cas, il faudrait quelque chose comme 'method.addCode("...");' ou -encore plus simplement '"..." +' ce qui pourrait donner:: - - addImport(MonObject.class); - method.addCode( - /*{ int i = 0; - i = 1+2; - MonObject result = new MonObject(result); - return result; - }*/ - ); - -qui deviendrait:: - - addImport(MonObject.class); - method.addCode( - "int i = 0;\n" + - "i = 1+2;\n" + - "MonObject result = new MonObject(result);\n" + - "return result;\n" - ); - -On garde la facilte d'écriture du code à générer et on permet d'ajouter -facilement des imports dont on aurait besoin dans le coprs de la méthode. Aucun -traitement complexe du code de la méthode n'est donc nécessaire. - -Ce nouveau mode de génération ne serait qu'une moyen complémentaire de la -génération actuelle. - -Travail a faire: - -- ajout d'objet dans ObjectModel -- ajout de méthode de modification dans ObjectModel -- création d'un template de génération d'un POJO (génération direct d'un modèle) - -Il serait toute fois dommage d'ajouter tout un ensemnble de setter sur les -interfaces d'ObjectModel qui le rendrait moins clair pour les générateurs. -Il faut donc trouver une solution pour permettre l'instanciation et la -modification de classe implantant l'ObjectModel sans pour autant les ajouter -au interface. - -Une idée pourrait-être l'utilisation de Helper qui permette de créer et modifier -le modèle:: - - ObjectModelClass clazz = ObjectModelHelper.createClass(); - ObjectModelOperation method = ObjectModelHelper.addMethod( - clazz, "name", "typeRetour", "paramName", "typeParam"); - ObjectModelHelper.addImport("java.util.List"); - ObjectModelHelper.addCode(method, - /*{ blablabla - }*/ - -Other -===== - -- Ajouter une gestion pour les annotations dans l'ObjectModel (Extension à l'instar des imports) Copied: trunk/eugene/src/site/fr/rst/Todo.rst (from rev 754, branches/eugene-2.0/eugene/src/site/fr/rst/Todo.rst) =================================================================== --- trunk/eugene/src/site/fr/rst/Todo.rst (rev 0) +++ trunk/eugene/src/site/fr/rst/Todo.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,120 @@ +==== +TODO +==== + + +:Revision: $Revision: 649 $ +:Date: $Date: 2009-10-21 14:21:03 +0200 (Wed, 21 Oct 2009) $ + + +Idées ou choses à faire +======================= + +- support des InnerClasses (en xmi argo: la classe est declarer dans une classe + dans un element UML:Namespace.ownedElement) (`Evolution #59`_ ) + +- support des static (tout element declarer dans une class/interface: methode, + attribut, enumeration, class, ...) + (en xmi argo: ownerScope='classifier' ou ownerScope='instance') (`Evolution #58`_ ) + +.. _Evolution #59: http://www.nuiton.org/issues/show/59 +.. _Evolution #58: http://www.nuiton.org/issues/show/58 + +- peut-etre faire des tests unitaires avec http://juxy.tigris.org/ pour le xls + +- Permettre de faire du 'model to model' avant la generation + +Model to Model +============== + +(2009-10-19 : En cours de developpement : `branches/1.0.1-javabuilder`_ ) + +.. _branches/1.0.1-javabuilder: http://nuiton.org/repositories/browse/eugene/branches/1.0.1-Javabuilder + +Pour tout ce qui est génération de classe Java, le principe de base d'Eugene +est de dire que le développeur écrit directement ce qu'il souhaite voir dans +le fichier final. + +Cela pose quelques difficultés: + +- difficulté de prévoir les imports +- difficulté d'éviter la génération de deux méthodes ayant le même nom + +L'idée serait alors de constuire la classe Java souhaitée au final en appelant +des méthodes (addImport, addMethod, addAttribute, ...). Ceci nous donnerait +alors un nouveau modèle mémoire dont on demanderait la génération à un +générateur sans inteligence qui se contenterait d'écrire le code Java modélisé. + +L'avantage est que pour chaque méthode à ajouter on peut demander avant si elle +n'a pas déjà été ajoutée et ainsi potentiellement la renomé avant de l'inclure. +D'ajouter de façon automatique tous les imports des arguments des méthodes, ... + +Pour pouvoir faire cela, nous pourrions nous baser sur ObjectModel, mais des +ajouter doivent être fait: + +- pouvoir indiquer sur une Class une série d'import. +- pouvoir ajouter un message de licence +- pouvoir ajouter sur une méthode sont code source + +Ce dernier élément est le plus problèmatique, car il deviendrait pénible de +devoir instancier tout le code de la méthode en objet et on perdrait l'idée +de départ d'Eugene. + +Dans eugène il est déjà possible de modifier la transformation des tags de +génération '/\*{' et '}\*/' qui par défaut génère un 'ouput.write("...");' +Dans notre cas, il faudrait quelque chose comme 'method.addCode("...");' ou +encore plus simplement '"..." +' ce qui pourrait donner:: + + addImport(MonObject.class); + method.addCode( + /*{ int i = 0; + i = 1+2; + MonObject result = new MonObject(result); + return result; + }*/ + ); + +qui deviendrait:: + + addImport(MonObject.class); + method.addCode( + "int i = 0;\n" + + "i = 1+2;\n" + + "MonObject result = new MonObject(result);\n" + + "return result;\n" + ); + +On garde la facilte d'écriture du code à générer et on permet d'ajouter +facilement des imports dont on aurait besoin dans le coprs de la méthode. Aucun +traitement complexe du code de la méthode n'est donc nécessaire. + +Ce nouveau mode de génération ne serait qu'une moyen complémentaire de la +génération actuelle. + +Travail a faire: + +- ajout d'objet dans ObjectModel +- ajout de méthode de modification dans ObjectModel +- création d'un template de génération d'un POJO (génération direct d'un modèle) + +Il serait toute fois dommage d'ajouter tout un ensemnble de setter sur les +interfaces d'ObjectModel qui le rendrait moins clair pour les générateurs. +Il faut donc trouver une solution pour permettre l'instanciation et la +modification de classe implantant l'ObjectModel sans pour autant les ajouter +au interface. + +Une idée pourrait-être l'utilisation de Helper qui permette de créer et modifier +le modèle:: + + ObjectModelClass clazz = ObjectModelHelper.createClass(); + ObjectModelOperation method = ObjectModelHelper.addMethod( + clazz, "name", "typeRetour", "paramName", "typeParam"); + ObjectModelHelper.addImport("java.util.List"); + ObjectModelHelper.addCode(method, + /*{ blablabla + }*/ + +Other +===== + +- Ajouter une gestion pour les annotations dans l'ObjectModel (Extension à l'instar des imports) Deleted: trunk/eugene/src/site/fr/rst/index.rst =================================================================== --- branches/eugene-2.0/eugene/src/site/fr/rst/index.rst 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/site/fr/rst/index.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -1,80 +0,0 @@ -====== -Eugene -====== - -.. contents:: - - -Origine du projet ------------------ - -Eugene est né à la suite d'une recherche de générateur de code basé sur -un modèle mémoire simple qui s'est terminée par un échec. - -Les projets alors étudiés étaient alors entre autres : - -- Jostraca ; -- EMF ; -- ... - -Le choix de la génération de code par rapport à l'introspection a été fait car -la génération code permet de passer par l'étape compilation et donc de -validation du code généré. En effet, si le besoin était initialement porté sur -de la génération de code Java, Eugene a été pensé pour générer tout type -de code. - - -Côté technique --------------- - -Eugene permet l'utilisation d'un ensemble de générateurs. Ces -générateurs sont abstraits de toute spécificité permettant ainsi de les adapter -en fonction des besoins. - -Par défaut, Eugene propose trois implantations de ces générateurs : - -- ObjectModelGenerator (génération à partir d'un modèle objet) ; -- StateModelGenerator (génération à partir d'un modèle d'états) ; -- UIModelGenerator (génération à partir d'un modèle graphique). - -Chacun de ces modèles a ses propres spécificités liés à sa structure et son mode -de fonctionnement... - -Cependant, ces générateurs sont inutiles sans des templates de génération. Les -templates sont les fichiers qui vont permettre de déterminer quel sera le -contenu généré en fonction du modèle initial. Grâce à NuitonProcessor_, ces -templates sont écrit avec une sytaxe proche de la syntaxe JSP en imbriquant les -portions de code Java avec les portions de code généré. Le rôle de -NuitonProcessor_ est de transformer ces templates en remplaçant la syntaxe JSP par -la syntaxe Java correpondante. Les classes Java obtenues peuvent donc être -compilées et deviennent autonomes. - -.. _NuitonProcessor: http://maven-site.nuiton.org/processor/ - -Règle ant ---------- - -Voici un exemple d'utilisation de la règle ant. - -:: - - <taskdef name="generator" classname="org.nuiton.eugene.GeneratorTask" - classpath="${compile.classpath}:${targetbuild}:${resources}" /> - - <target name="generate" description="generate"> - <generator srcdir="${modelDir}" destdir="${targetgen}" - resolver="org.nuiton.exemple.ResourceResolver" - templates="org.nuiton.example.JavaBeanGenerator" - properties="defaultPackage=org.nuiton,fullPackagePath=org.nuiton,extraPackages=org.nuiton" - classpath="${compile.classpath}:${targetbuild}:${resources}" /> - </target> - -Dans cette exemple, un template de génération sera apliqué sur tous les -fichiers. - -Plugin maven ------------- - -Un plugin maven est disponnible à l'adresse suivante -http://maven-site.nuiton.org/eugene/maven-eugene-plugin . Il permet l'utilisation -depuis maven de Eugene. Copied: trunk/eugene/src/site/fr/rst/index.rst (from rev 754, branches/eugene-2.0/eugene/src/site/fr/rst/index.rst) =================================================================== --- trunk/eugene/src/site/fr/rst/index.rst (rev 0) +++ trunk/eugene/src/site/fr/rst/index.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,80 @@ +====== +Eugene +====== + +.. contents:: + + +Origine du projet +----------------- + +Eugene est né à la suite d'une recherche de générateur de code basé sur +un modèle mémoire simple qui s'est terminée par un échec. + +Les projets alors étudiés étaient alors entre autres : + +- Jostraca ; +- EMF ; +- ... + +Le choix de la génération de code par rapport à l'introspection a été fait car +la génération code permet de passer par l'étape compilation et donc de +validation du code généré. En effet, si le besoin était initialement porté sur +de la génération de code Java, Eugene a été pensé pour générer tout type +de code. + + +Côté technique +-------------- + +Eugene permet l'utilisation d'un ensemble de générateurs. Ces +générateurs sont abstraits de toute spécificité permettant ainsi de les adapter +en fonction des besoins. + +Par défaut, Eugene propose trois implantations de ces générateurs : + +- ObjectModelGenerator (génération à partir d'un modèle objet) ; +- StateModelGenerator (génération à partir d'un modèle d'états) ; +- UIModelGenerator (génération à partir d'un modèle graphique). + +Chacun de ces modèles a ses propres spécificités liés à sa structure et son mode +de fonctionnement... + +Cependant, ces générateurs sont inutiles sans des templates de génération. Les +templates sont les fichiers qui vont permettre de déterminer quel sera le +contenu généré en fonction du modèle initial. Grâce à NuitonProcessor_, ces +templates sont écrit avec une sytaxe proche de la syntaxe JSP en imbriquant les +portions de code Java avec les portions de code généré. Le rôle de +NuitonProcessor_ est de transformer ces templates en remplaçant la syntaxe JSP par +la syntaxe Java correpondante. Les classes Java obtenues peuvent donc être +compilées et deviennent autonomes. + +.. _NuitonProcessor: http://maven-site.nuiton.org/processor/ + +Règle ant +--------- + +Voici un exemple d'utilisation de la règle ant. + +:: + + <taskdef name="generator" classname="org.nuiton.eugene.GeneratorTask" + classpath="${compile.classpath}:${targetbuild}:${resources}" /> + + <target name="generate" description="generate"> + <generator srcdir="${modelDir}" destdir="${targetgen}" + resolver="org.nuiton.exemple.ResourceResolver" + templates="org.nuiton.example.JavaBeanGenerator" + properties="defaultPackage=org.nuiton,fullPackagePath=org.nuiton,extraPackages=org.nuiton" + classpath="${compile.classpath}:${targetbuild}:${resources}" /> + </target> + +Dans cette exemple, un template de génération sera apliqué sur tous les +fichiers. + +Plugin maven +------------ + +Un plugin maven est disponnible à l'adresse suivante +http://maven-site.nuiton.org/eugene/maven-eugene-plugin . Il permet l'utilisation +depuis maven de Eugene. Deleted: trunk/eugene/src/site/fr/rst/plugineclipse.rst =================================================================== --- branches/eugene-2.0/eugene/src/site/fr/rst/plugineclipse.rst 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/site/fr/rst/plugineclipse.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -1,44 +0,0 @@ -Installation du plugin LutinGenerator -===================================== - -Ce guide détail comment installer le plugin eclipse LutinGenerator via -l'update site (assitant d'instalation de plugins). - -Installation ------------- - -Ouvrez l'assitant d'installation de plugin via le menu -(Help/Software Updates/Find and install...). - -.. image:: ../images/plugin_menu.png - -Sur la fenêtre suivante sélectionnez "Search for new features to install". - -.. image:: ../images/plugin_typeinstall.png - -Une nouvelle fenêtre s'affiche, sélectionnez "New remote site" pour ajouter le -dépot "LutinGenerator". - -L'adresse du dépot à utiliser est : - -:: - - http://lutingenerator.labs.libre-entreprise.org/eclipse/ - -.. image:: ../images/plugin_newdepot.png - - -Sélectionnez ensuite ce dépot et cliquez sur "Finish". - -Installez ensuite la dernière version disponible et redémarrez eclipse: - -.. image:: ../images/plugin_choix.png - - -Utilisation ------------ - -Pour disposer de la coloration des templates, cliquez droit sur un fichier -source java et sélectionnez "Open with > / LutinGenerator Template Editor" - -.. image:: ../images/plugin_utilisation_editeur.png \ No newline at end of file Copied: trunk/eugene/src/site/fr/rst/plugineclipse.rst (from rev 754, branches/eugene-2.0/eugene/src/site/fr/rst/plugineclipse.rst) =================================================================== --- trunk/eugene/src/site/fr/rst/plugineclipse.rst (rev 0) +++ trunk/eugene/src/site/fr/rst/plugineclipse.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,44 @@ +Installation du plugin LutinGenerator +===================================== + +Ce guide détail comment installer le plugin eclipse LutinGenerator via +l'update site (assitant d'instalation de plugins). + +Installation +------------ + +Ouvrez l'assitant d'installation de plugin via le menu +(Help/Software Updates/Find and install...). + +.. image:: ../images/plugin_menu.png + +Sur la fenêtre suivante sélectionnez "Search for new features to install". + +.. image:: ../images/plugin_typeinstall.png + +Une nouvelle fenêtre s'affiche, sélectionnez "New remote site" pour ajouter le +dépot "LutinGenerator". + +L'adresse du dépot à utiliser est : + +:: + + http://lutingenerator.labs.libre-entreprise.org/eclipse/ + +.. image:: ../images/plugin_newdepot.png + + +Sélectionnez ensuite ce dépot et cliquez sur "Finish". + +Installez ensuite la dernière version disponible et redémarrez eclipse: + +.. image:: ../images/plugin_choix.png + + +Utilisation +----------- + +Pour disposer de la coloration des templates, cliquez droit sur un fichier +source java et sélectionnez "Open with > / LutinGenerator Template Editor" + +.. image:: ../images/plugin_utilisation_editeur.png \ No newline at end of file Deleted: trunk/eugene/src/site/resources/images/Hotel.objectmodel.png =================================================================== (Binary files differ) Copied: trunk/eugene/src/site/resources/images/Hotel.objectmodel.png (from rev 754, branches/eugene-2.0/eugene/src/site/resources/images/Hotel.objectmodel.png) =================================================================== (Binary files differ) Deleted: trunk/eugene/src/site/resources/images/Hotel.png =================================================================== (Binary files differ) Copied: trunk/eugene/src/site/resources/images/Hotel.png (from rev 754, branches/eugene-2.0/eugene/src/site/resources/images/Hotel.png) =================================================================== (Binary files differ) Deleted: trunk/eugene/src/site/resources/images/ObjectModel.png =================================================================== (Binary files differ) Copied: trunk/eugene/src/site/resources/images/ObjectModel.png (from rev 754, branches/eugene-2.0/eugene/src/site/resources/images/ObjectModel.png) =================================================================== (Binary files differ) Deleted: trunk/eugene/src/site/resources/images/ObjectModel_Generator.png =================================================================== (Binary files differ) Copied: trunk/eugene/src/site/resources/images/ObjectModel_Generator.png (from rev 754, branches/eugene-2.0/eugene/src/site/resources/images/ObjectModel_Generator.png) =================================================================== (Binary files differ) Deleted: trunk/eugene/src/site/resources/images/ObjectModel_Interfaces.png =================================================================== (Binary files differ) Copied: trunk/eugene/src/site/resources/images/ObjectModel_Interfaces.png (from rev 754, branches/eugene-2.0/eugene/src/site/resources/images/ObjectModel_Interfaces.png) =================================================================== (Binary files differ) Deleted: trunk/eugene/src/site/resources/images/StateModel.png =================================================================== (Binary files differ) Copied: trunk/eugene/src/site/resources/images/StateModel.png (from rev 754, branches/eugene-2.0/eugene/src/site/resources/images/StateModel.png) =================================================================== (Binary files differ) Deleted: trunk/eugene/src/site/resources/images/plugin_choix.png =================================================================== (Binary files differ) Copied: trunk/eugene/src/site/resources/images/plugin_choix.png (from rev 754, branches/eugene-2.0/eugene/src/site/resources/images/plugin_choix.png) =================================================================== (Binary files differ) Deleted: trunk/eugene/src/site/resources/images/plugin_menu.png =================================================================== (Binary files differ) Copied: trunk/eugene/src/site/resources/images/plugin_menu.png (from rev 754, branches/eugene-2.0/eugene/src/site/resources/images/plugin_menu.png) =================================================================== (Binary files differ) Deleted: trunk/eugene/src/site/resources/images/plugin_newdepot.png =================================================================== (Binary files differ) Copied: trunk/eugene/src/site/resources/images/plugin_newdepot.png (from rev 754, branches/eugene-2.0/eugene/src/site/resources/images/plugin_newdepot.png) =================================================================== (Binary files differ) Deleted: trunk/eugene/src/site/resources/images/plugin_typeinstall.png =================================================================== (Binary files differ) Copied: trunk/eugene/src/site/resources/images/plugin_typeinstall.png (from rev 754, branches/eugene-2.0/eugene/src/site/resources/images/plugin_typeinstall.png) =================================================================== (Binary files differ) Deleted: trunk/eugene/src/site/resources/images/plugin_utilisation_editeur.png =================================================================== (Binary files differ) Copied: trunk/eugene/src/site/resources/images/plugin_utilisation_editeur.png (from rev 754, branches/eugene-2.0/eugene/src/site/resources/images/plugin_utilisation_editeur.png) =================================================================== (Binary files differ) Deleted: trunk/eugene/src/site/resources/models/buix.guix =================================================================== --- branches/eugene-2.0/eugene/src/site/resources/models/buix.guix 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/site/resources/models/buix.guix 2009-12-14 23:50:27 UTC (rev 755) @@ -1,409 +0,0 @@ -<GuixApplication id="Application"> - <properties> - <property name="name" type="String"><value>Buix Application</value></property> - </properties> - <WidgetWindow id="GuixWindow"> - <properties> - <property name="name" type="String"><value>Buix</value></property> - <property name="title" type="String"><value>Application Buix</value></property> - <property name="x" type="int"><value>50</value></property> - <property name="y" type="int"><value>50</value></property> - <property name="width" type="int"><value>1000</value></property> - <property name="height" type="int"><value>800</value></property> - <property name="menubar" type="ComponentResource"><value>MenuBar</value></property> - </properties> - <signals> - <signal name="closing" argument="false" handler="onClosing"/> - </signals> - <children> - <child> - <WidgetContainer id="GuixGridBag"> - <properties> - <property name="name" type="String"><value>vbox</value></property> - </properties> - <children> - <child> - <layout> - <property name="x" type="int"><value>0</value></property> - <property name="y" type="int"><value>1</value></property> - <property name="weightx" type="double"><value>1.0</value></property> - <property name="weighty" type="double"><value>1.0</value></property> - </layout> - <WidgetContainer id="GuixSpliter"> - <properties> - <property name="name" type="String"><value>verticalSpliter</value></property> - <property name="orientation" type="Enum"><value><enum type="int" select="0"><item>0</item><item>1</item></enum></value></property> - <property name="dividerSize" type="int"><value>9</value></property> - <property name="express" type="boolean"><value>true</value></property> - </properties> - <children> - <child> - <layout> - <property name="position" type="Enum"><value><enum type="String" select="3"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property> - </layout> - <WidgetContainer id="GuixScrollPane"> - <properties> - <property name="name" type="String"><value>scrollTree</value></property> - </properties> - <children> - <child> - <WidgetComponent id="GuixTree"> - <properties> - <property name="name" type="String"><value>tree</value></property> - </properties> - <signals> - <signal name="clicked" argument="false" handler="onTreeClicked"/> - </signals> - </WidgetComponent> - </child> - </children> - </WidgetContainer> - </child> - <child> - <layout> - <property name="position" type="Enum"><value><enum type="String" select="2"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property> - </layout> - <WidgetContainer id="GuixSpliter"> - <properties> - <property name="name" type="String"><value>horizontalSpliter</value></property> - <property name="orientation" type="Enum"><value><enum type="int" select="1"><item>0</item><item>1</item></enum></value></property> - <property name="dividerSize" type="int"><value>9</value></property> - <property name="express" type="boolean"><value>true</value></property> - </properties> - <children> - <child> - <layout> - <property name="position" type="Enum"><value><enum type="String" select="1"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property> - </layout> - <WidgetContainer id="GuixTabbedPane"> - <properties> - <property name="name" type="String"><value>tabProperties</value></property> - <property name="childCount" type="int"><value>3</value></property> - </properties> - <children> - <child> - <layout> - <property name="text" type="String"><value>Properties</value></property> - <property name="position" type="int"><value>0</value></property> - </layout> - <WidgetContainer id="GuixScrollPane"> - <properties> - <property name="name" type="String"><value>scrollProperties</value></property> - </properties> - <children> - <child> - <WidgetComponent id="GuixTable"> - <properties> - <property name="name" type="String"><value>tableProperties</value></property> - </properties> - </WidgetComponent> - </child> - </children> - </WidgetContainer> - </child> - <child> - <layout> - <property name="position" type="int"><value>1</value></property> - <property name="text" type="String"><value>Container Properties</value></property> - </layout> - <WidgetContainer id="GuixScrollPane"> - <properties> - <property name="name" type="String"><value>scrollContainerProperties</value></property> - </properties> - <children> - <child> - <WidgetComponent id="GuixTable"> - <properties> - <property name="name" type="String"><value>tableContainerProperties</value></property> - </properties> - </WidgetComponent> - </child> - </children> - </WidgetContainer> - </child> - <child> - <layout> - <property name="text" type="String"><value>Signals</value></property> - <property name="position" type="int"><value>2</value></property> - </layout> - <WidgetContainer id="GuixGridBag"> - <properties> - <property name="name" type="String"><value>gridSignals</value></property> - </properties> - <children> - <child> - <layout> - <property name="weighty" type="double"><value>0.0</value></property> - </layout> - <WidgetComponent id="GuixComboBox"> - <properties> - <property name="name" type="String"><value>comboAllSignals</value></property> - </properties> - </WidgetComponent> - </child> - <child> - <layout> - <property name="weightx" type="double"><value>0.0</value></property> - <property name="weighty" type="double"><value>0.0</value></property> - <property name="x" type="int"><value>1</value></property> - </layout> - <WidgetComponent id="GuixButton"> - <properties> - <property name="name" type="String"><value>addSignal</value></property> - <property name="text" type="String"><value>add</value></property> - </properties> - <signals> - <signal name="clicked" argument="false" handler="onAddSignal"/> - </signals> - </WidgetComponent> - </child> - <child> - <layout> - <property name="x" type="int"><value>0</value></property> - <property name="y" type="int"><value>1</value></property> - <property name="width" type="int"><value>2</value></property> - </layout> - <WidgetContainer id="GuixScrollPane"> - <properties> - <property name="name" type="String"><value>scrollSignals</value></property> - </properties> - <children> - <child> - <WidgetComponent id="GuixTable"> - <properties> - <property name="name" type="String"><value>tableSignals</value></property> - </properties> - </WidgetComponent> - </child> - </children> - </WidgetContainer> - </child> - </children> - </WidgetContainer> - </child> - </children> - </WidgetContainer> - </child> - <child> - <layout> - <property name="position" type="Enum"><value><enum type="String" select="0"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property> - </layout> - <WidgetContainer id="GuixGridBag"> - <properties> - <property name="name" type="String"><value>GuixGridBag1</value></property> - </properties> - <children> - <child> - <layout> - <property name="weightx" type="double"><value>0.0</value></property> - <property name="weighty" type="double"><value>0.0</value></property> - </layout> - <WidgetComponent id="GuixButton"> - <properties> - <property name="name" type="String"><value>GuixButton16</value></property> - <property name="text" type="String"><value>Selection</value></property> - </properties> - <signals> - <signal name="clicked" argument="false" handler="onSelectionButton"/> - </signals> - </WidgetComponent> - </child> - <child> - <layout> - <property name="y" type="int"><value>1</value></property> - <property name="width" type="int"><value>2</value></property> - </layout> - <WidgetContainer id="GuixTabbedPane"> - <properties> - <property name="name" type="String"><value>tabTools</value></property> - <property name="childCount" type="int"><value>4</value></property> - </properties> - </WidgetContainer> - </child> - </children> - </WidgetContainer> - </child> - </children> - </WidgetContainer> - </child> - </children> - </WidgetContainer> - </child> - <child> - <layout> - <property name="weighty" type="double"><value>0.0</value></property> - </layout> - <WidgetContainer id="GuixGrid"> - <properties> - <property name="name" type="String"><value>toolbar</value></property> - </properties> - <children> - <child> - <layout> - <property name="x" type="int"><value>8</value></property> - </layout> - <WidgetComponent id="GuixCheckBox"> - <properties> - <property name="name" type="String"><value>checkboxDesignTime</value></property> - <property name="text" type="String"><value>Design</value></property> - <property name="selected" type="boolean"><value>true</value></property> - </properties> - <signals> - <signal name="itemStateChanged" argument="true" handler="onDesignTime"/> - </signals> - </WidgetComponent> - </child> - </children> - </WidgetContainer> - </child> - <child> - <layout> - <property name="y" type="int"><value>2</value></property> - <property name="weighty" type="double"><value>0.0</value></property> - </layout> - <WidgetComponent id="GuixLabel"> - <properties> - <property name="name" type="String"><value>statusBar</value></property> - <property name="text" type="String"><value> </value></property> - </properties> - </WidgetComponent> - </child> - </children> - </WidgetContainer> - </child> - </children> - </WidgetWindow> - <WidgetWindow id="GuixWindowNG"> - <properties> - <property name="name" type="String"><value>GuixWindowNG1</value></property> - </properties> - <children> - <child> - <WidgetContainer id="GuixMenuBar"> - <properties> - <property name="name" type="String"><value>MenuBar</value></property> - </properties> - <children> - <child> - <WidgetContainer id="GuixMenu"> - <properties> - <property name="name" type="String"><value>GuixMenu1</value></property> - <property name="text" type="String"><value>File</value></property> - </properties> - <children> - <child> - <WidgetComponent id="GuixMenuItem"> - <properties> - <property name="name" type="String"><value>GuixMenuItem1</value></property> - <property name="text" type="String"><value>new</value></property> - <property name="icon" type="Resource"><value></value></property> - </properties> - <signals> - <signal name="menuClicked" argument="false" handler="onNew"/> - </signals> - </WidgetComponent> - </child> - <child> - <WidgetComponent id="GuixMenuItem"> - <properties> - <property name="name" type="String"><value>GuixMenuItem2</value></property> - <property name="text" type="String"><value>load</value></property> - </properties> - <signals> - <signal name="menuClicked" argument="false" handler="onLoad"/> - </signals> - </WidgetComponent> - </child> - <child> - <WidgetComponent id="GuixMenuItem"> - <properties> - <property name="name" type="String"><value>GuixMenuItem3</value></property> - <property name="text" type="String"><value>save</value></property> - </properties> - <signals> - <signal name="menuClicked" argument="false" handler="onSave"/> - </signals> - </WidgetComponent> - </child> - <child> - <WidgetComponent id="GuixMenuItem"> - <properties> - <property name="name" type="String"><value>GuixMenuItem4</value></property> - <property name="text" type="String"><value>export</value></property> - </properties> - <signals> - <signal name="menuClicked" argument="false" handler="onExport"/> - </signals> - </WidgetComponent> - </child> - <child> - <WidgetComponent id="GuixMenuItem"> - <properties> - <property name="name" type="String"><value>GuixMenuItem8</value></property> - <property name="text" type="String"><value>preview</value></property> - </properties> - <signals> - <signal name="menuClicked" argument="false" handler="onPreview"/> - </signals> - </WidgetComponent> - </child> - </children> - </WidgetContainer> - </child> - <child> - <WidgetContainer id="GuixMenu"> - <properties> - <property name="name" type="String"><value>GuixMenu2</value></property> - <property name="text" type="String"><value>Edit</value></property> - </properties> - <children> - <child> - <WidgetComponent id="GuixMenuItem"> - <properties> - <property name="name" type="String"><value>GuixMenuItem5</value></property> - <property name="text" type="String"><value>ajouter le composant</value></property> - </properties> - <signals> - <signal name="menuClicked" argument="false" handler="onAddComponent"/> - </signals> - </WidgetComponent> - </child> - <child> - <WidgetComponent id="GuixMenuItem"> - <properties> - <property name="name" type="String"><value>GuixMenuItem6</value></property> - <property name="text" type="String"><value>couper</value></property> - </properties> - <signals> - <signal name="menuClicked" argument="false" handler="onCouper"/> - </signals> - </WidgetComponent> - </child> - <child> - <WidgetComponent id="GuixMenuItem"> - <properties> - <property name="name" type="String"><value>GuixMenuItem7</value></property> - <property name="text" type="String"><value>coller</value></property> - </properties> - <signals> - <signal name="menuClicked" argument="false" handler="onColler"/> - </signals> - </WidgetComponent> - </child> - </children> - </WidgetContainer> - </child> - <child> - <WidgetContainer id="GuixMenu"> - <properties> - <property name="name" type="String"><value>GuixMenu3</value></property> - <property name="text" type="String"><value>help</value></property> - </properties> - </WidgetContainer> - </child> - </children> - </WidgetContainer> - </child> - </children> - </WidgetWindow> -</GuixApplication> Copied: trunk/eugene/src/site/resources/models/buix.guix (from rev 754, branches/eugene-2.0/eugene/src/site/resources/models/buix.guix) =================================================================== --- trunk/eugene/src/site/resources/models/buix.guix (rev 0) +++ trunk/eugene/src/site/resources/models/buix.guix 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,409 @@ +<GuixApplication id="Application"> + <properties> + <property name="name" type="String"><value>Buix Application</value></property> + </properties> + <WidgetWindow id="GuixWindow"> + <properties> + <property name="name" type="String"><value>Buix</value></property> + <property name="title" type="String"><value>Application Buix</value></property> + <property name="x" type="int"><value>50</value></property> + <property name="y" type="int"><value>50</value></property> + <property name="width" type="int"><value>1000</value></property> + <property name="height" type="int"><value>800</value></property> + <property name="menubar" type="ComponentResource"><value>MenuBar</value></property> + </properties> + <signals> + <signal name="closing" argument="false" handler="onClosing"/> + </signals> + <children> + <child> + <WidgetContainer id="GuixGridBag"> + <properties> + <property name="name" type="String"><value>vbox</value></property> + </properties> + <children> + <child> + <layout> + <property name="x" type="int"><value>0</value></property> + <property name="y" type="int"><value>1</value></property> + <property name="weightx" type="double"><value>1.0</value></property> + <property name="weighty" type="double"><value>1.0</value></property> + </layout> + <WidgetContainer id="GuixSpliter"> + <properties> + <property name="name" type="String"><value>verticalSpliter</value></property> + <property name="orientation" type="Enum"><value><enum type="int" select="0"><item>0</item><item>1</item></enum></value></property> + <property name="dividerSize" type="int"><value>9</value></property> + <property name="express" type="boolean"><value>true</value></property> + </properties> + <children> + <child> + <layout> + <property name="position" type="Enum"><value><enum type="String" select="3"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property> + </layout> + <WidgetContainer id="GuixScrollPane"> + <properties> + <property name="name" type="String"><value>scrollTree</value></property> + </properties> + <children> + <child> + <WidgetComponent id="GuixTree"> + <properties> + <property name="name" type="String"><value>tree</value></property> + </properties> + <signals> + <signal name="clicked" argument="false" handler="onTreeClicked"/> + </signals> + </WidgetComponent> + </child> + </children> + </WidgetContainer> + </child> + <child> + <layout> + <property name="position" type="Enum"><value><enum type="String" select="2"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property> + </layout> + <WidgetContainer id="GuixSpliter"> + <properties> + <property name="name" type="String"><value>horizontalSpliter</value></property> + <property name="orientation" type="Enum"><value><enum type="int" select="1"><item>0</item><item>1</item></enum></value></property> + <property name="dividerSize" type="int"><value>9</value></property> + <property name="express" type="boolean"><value>true</value></property> + </properties> + <children> + <child> + <layout> + <property name="position" type="Enum"><value><enum type="String" select="1"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property> + </layout> + <WidgetContainer id="GuixTabbedPane"> + <properties> + <property name="name" type="String"><value>tabProperties</value></property> + <property name="childCount" type="int"><value>3</value></property> + </properties> + <children> + <child> + <layout> + <property name="text" type="String"><value>Properties</value></property> + <property name="position" type="int"><value>0</value></property> + </layout> + <WidgetContainer id="GuixScrollPane"> + <properties> + <property name="name" type="String"><value>scrollProperties</value></property> + </properties> + <children> + <child> + <WidgetComponent id="GuixTable"> + <properties> + <property name="name" type="String"><value>tableProperties</value></property> + </properties> + </WidgetComponent> + </child> + </children> + </WidgetContainer> + </child> + <child> + <layout> + <property name="position" type="int"><value>1</value></property> + <property name="text" type="String"><value>Container Properties</value></property> + </layout> + <WidgetContainer id="GuixScrollPane"> + <properties> + <property name="name" type="String"><value>scrollContainerProperties</value></property> + </properties> + <children> + <child> + <WidgetComponent id="GuixTable"> + <properties> + <property name="name" type="String"><value>tableContainerProperties</value></property> + </properties> + </WidgetComponent> + </child> + </children> + </WidgetContainer> + </child> + <child> + <layout> + <property name="text" type="String"><value>Signals</value></property> + <property name="position" type="int"><value>2</value></property> + </layout> + <WidgetContainer id="GuixGridBag"> + <properties> + <property name="name" type="String"><value>gridSignals</value></property> + </properties> + <children> + <child> + <layout> + <property name="weighty" type="double"><value>0.0</value></property> + </layout> + <WidgetComponent id="GuixComboBox"> + <properties> + <property name="name" type="String"><value>comboAllSignals</value></property> + </properties> + </WidgetComponent> + </child> + <child> + <layout> + <property name="weightx" type="double"><value>0.0</value></property> + <property name="weighty" type="double"><value>0.0</value></property> + <property name="x" type="int"><value>1</value></property> + </layout> + <WidgetComponent id="GuixButton"> + <properties> + <property name="name" type="String"><value>addSignal</value></property> + <property name="text" type="String"><value>add</value></property> + </properties> + <signals> + <signal name="clicked" argument="false" handler="onAddSignal"/> + </signals> + </WidgetComponent> + </child> + <child> + <layout> + <property name="x" type="int"><value>0</value></property> + <property name="y" type="int"><value>1</value></property> + <property name="width" type="int"><value>2</value></property> + </layout> + <WidgetContainer id="GuixScrollPane"> + <properties> + <property name="name" type="String"><value>scrollSignals</value></property> + </properties> + <children> + <child> + <WidgetComponent id="GuixTable"> + <properties> + <property name="name" type="String"><value>tableSignals</value></property> + </properties> + </WidgetComponent> + </child> + </children> + </WidgetContainer> + </child> + </children> + </WidgetContainer> + </child> + </children> + </WidgetContainer> + </child> + <child> + <layout> + <property name="position" type="Enum"><value><enum type="String" select="0"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property> + </layout> + <WidgetContainer id="GuixGridBag"> + <properties> + <property name="name" type="String"><value>GuixGridBag1</value></property> + </properties> + <children> + <child> + <layout> + <property name="weightx" type="double"><value>0.0</value></property> + <property name="weighty" type="double"><value>0.0</value></property> + </layout> + <WidgetComponent id="GuixButton"> + <properties> + <property name="name" type="String"><value>GuixButton16</value></property> + <property name="text" type="String"><value>Selection</value></property> + </properties> + <signals> + <signal name="clicked" argument="false" handler="onSelectionButton"/> + </signals> + </WidgetComponent> + </child> + <child> + <layout> + <property name="y" type="int"><value>1</value></property> + <property name="width" type="int"><value>2</value></property> + </layout> + <WidgetContainer id="GuixTabbedPane"> + <properties> + <property name="name" type="String"><value>tabTools</value></property> + <property name="childCount" type="int"><value>4</value></property> + </properties> + </WidgetContainer> + </child> + </children> + </WidgetContainer> + </child> + </children> + </WidgetContainer> + </child> + </children> + </WidgetContainer> + </child> + <child> + <layout> + <property name="weighty" type="double"><value>0.0</value></property> + </layout> + <WidgetContainer id="GuixGrid"> + <properties> + <property name="name" type="String"><value>toolbar</value></property> + </properties> + <children> + <child> + <layout> + <property name="x" type="int"><value>8</value></property> + </layout> + <WidgetComponent id="GuixCheckBox"> + <properties> + <property name="name" type="String"><value>checkboxDesignTime</value></property> + <property name="text" type="String"><value>Design</value></property> + <property name="selected" type="boolean"><value>true</value></property> + </properties> + <signals> + <signal name="itemStateChanged" argument="true" handler="onDesignTime"/> + </signals> + </WidgetComponent> + </child> + </children> + </WidgetContainer> + </child> + <child> + <layout> + <property name="y" type="int"><value>2</value></property> + <property name="weighty" type="double"><value>0.0</value></property> + </layout> + <WidgetComponent id="GuixLabel"> + <properties> + <property name="name" type="String"><value>statusBar</value></property> + <property name="text" type="String"><value> </value></property> + </properties> + </WidgetComponent> + </child> + </children> + </WidgetContainer> + </child> + </children> + </WidgetWindow> + <WidgetWindow id="GuixWindowNG"> + <properties> + <property name="name" type="String"><value>GuixWindowNG1</value></property> + </properties> + <children> + <child> + <WidgetContainer id="GuixMenuBar"> + <properties> + <property name="name" type="String"><value>MenuBar</value></property> + </properties> + <children> + <child> + <WidgetContainer id="GuixMenu"> + <properties> + <property name="name" type="String"><value>GuixMenu1</value></property> + <property name="text" type="String"><value>File</value></property> + </properties> + <children> + <child> + <WidgetComponent id="GuixMenuItem"> + <properties> + <property name="name" type="String"><value>GuixMenuItem1</value></property> + <property name="text" type="String"><value>new</value></property> + <property name="icon" type="Resource"><value></value></property> + </properties> + <signals> + <signal name="menuClicked" argument="false" handler="onNew"/> + </signals> + </WidgetComponent> + </child> + <child> + <WidgetComponent id="GuixMenuItem"> + <properties> + <property name="name" type="String"><value>GuixMenuItem2</value></property> + <property name="text" type="String"><value>load</value></property> + </properties> + <signals> + <signal name="menuClicked" argument="false" handler="onLoad"/> + </signals> + </WidgetComponent> + </child> + <child> + <WidgetComponent id="GuixMenuItem"> + <properties> + <property name="name" type="String"><value>GuixMenuItem3</value></property> + <property name="text" type="String"><value>save</value></property> + </properties> + <signals> + <signal name="menuClicked" argument="false" handler="onSave"/> + </signals> + </WidgetComponent> + </child> + <child> + <WidgetComponent id="GuixMenuItem"> + <properties> + <property name="name" type="String"><value>GuixMenuItem4</value></property> + <property name="text" type="String"><value>export</value></property> + </properties> + <signals> + <signal name="menuClicked" argument="false" handler="onExport"/> + </signals> + </WidgetComponent> + </child> + <child> + <WidgetComponent id="GuixMenuItem"> + <properties> + <property name="name" type="String"><value>GuixMenuItem8</value></property> + <property name="text" type="String"><value>preview</value></property> + </properties> + <signals> + <signal name="menuClicked" argument="false" handler="onPreview"/> + </signals> + </WidgetComponent> + </child> + </children> + </WidgetContainer> + </child> + <child> + <WidgetContainer id="GuixMenu"> + <properties> + <property name="name" type="String"><value>GuixMenu2</value></property> + <property name="text" type="String"><value>Edit</value></property> + </properties> + <children> + <child> + <WidgetComponent id="GuixMenuItem"> + <properties> + <property name="name" type="String"><value>GuixMenuItem5</value></property> + <property name="text" type="String"><value>ajouter le composant</value></property> + </properties> + <signals> + <signal name="menuClicked" argument="false" handler="onAddComponent"/> + </signals> + </WidgetComponent> + </child> + <child> + <WidgetComponent id="GuixMenuItem"> + <properties> + <property name="name" type="String"><value>GuixMenuItem6</value></property> + <property name="text" type="String"><value>couper</value></property> + </properties> + <signals> + <signal name="menuClicked" argument="false" handler="onCouper"/> + </signals> + </WidgetComponent> + </child> + <child> + <WidgetComponent id="GuixMenuItem"> + <properties> + <property name="name" type="String"><value>GuixMenuItem7</value></property> + <property name="text" type="String"><value>coller</value></property> + </properties> + <signals> + <signal name="menuClicked" argument="false" handler="onColler"/> + </signals> + </WidgetComponent> + </child> + </children> + </WidgetContainer> + </child> + <child> + <WidgetContainer id="GuixMenu"> + <properties> + <property name="name" type="String"><value>GuixMenu3</value></property> + <property name="text" type="String"><value>help</value></property> + </properties> + </WidgetContainer> + </child> + </children> + </WidgetContainer> + </child> + </children> + </WidgetWindow> +</GuixApplication> Deleted: trunk/eugene/src/site/resources/models/exemple.topiaModel =================================================================== --- branches/eugene-2.0/eugene/src/site/resources/models/exemple.topiaModel 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/site/resources/models/exemple.topiaModel 2009-12-14 23:50:27 UTC (rev 755) @@ -1,48 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> -<topiaModel xmlns:topia="http://www.codelutin.org/topia/topiaModel"> - <class name="Person" stereotype="entity" package="org.codelutin.test"> - <attribute multiplicity="1" name="name" visibility="public" type="java.lang.String"> - <tag name="mandatory" value="true"/> - <tag name="indexed" value="false"/> - <tag name="primaryKey" value="false"/> - <tag name="readonly" value="false"/> - </attribute> - <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Address"> - <tag name="mandatory" value="true"/> - <tag name="indexed" value="false"/> - <tag name="primaryKey" value="false"/> - <tag name="readonly" value="false"/> - </attribute> - </class> - <class name="Employee" type="entity" extends="org.codelutin.test.Person" package="org.codelutin.test"> - <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Company"> - <tag name="mandatory" value="true"/> - <tag name="indexed" value="false"/> - <tag name="primaryKey" value="false"/> - <tag name="readonly" value="false"/> - </attribute> - </class> - <class name="Company" type="entity" package="org.codelutin.test"> - <attribute multiplicity="1" name="name" visibility="public" type="java.lang.String"> - <tag name="mandatory" value="true"/> - <tag name="indexed" value="false"/> - <tag name="primaryKey" value="false"/> - <tag name="readonly" value="false"/> - </attribute> - <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Address"> - <tag name="mandatory" value="true"/> - <tag name="indexed" value="false"/> - <tag name="primaryKey" value="false"/> - <tag name="readonly" value="false"/> - </attribute> - <attribute multiplicity="n" name="address" visibility="public" type="org.codelutin.test.Employee"> - <tag name="mandatory" value="true"/> - <tag name="indexed" value="false"/> - <tag name="primaryKey" value="false"/> - <tag name="readonly" value="false"/> - </attribute> - <operation name="getTime" visibility="public" returnType="int"> - <parameter name="year" type="org.codelutin.Employee"/> - </operation> - </class> -</topiaModel> Copied: trunk/eugene/src/site/resources/models/exemple.topiaModel (from rev 754, branches/eugene-2.0/eugene/src/site/resources/models/exemple.topiaModel) =================================================================== --- trunk/eugene/src/site/resources/models/exemple.topiaModel (rev 0) +++ trunk/eugene/src/site/resources/models/exemple.topiaModel 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<topiaModel xmlns:topia="http://www.codelutin.org/topia/topiaModel"> + <class name="Person" stereotype="entity" package="org.codelutin.test"> + <attribute multiplicity="1" name="name" visibility="public" type="java.lang.String"> + <tag name="mandatory" value="true"/> + <tag name="indexed" value="false"/> + <tag name="primaryKey" value="false"/> + <tag name="readonly" value="false"/> + </attribute> + <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Address"> + <tag name="mandatory" value="true"/> + <tag name="indexed" value="false"/> + <tag name="primaryKey" value="false"/> + <tag name="readonly" value="false"/> + </attribute> + </class> + <class name="Employee" type="entity" extends="org.codelutin.test.Person" package="org.codelutin.test"> + <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Company"> + <tag name="mandatory" value="true"/> + <tag name="indexed" value="false"/> + <tag name="primaryKey" value="false"/> + <tag name="readonly" value="false"/> + </attribute> + </class> + <class name="Company" type="entity" package="org.codelutin.test"> + <attribute multiplicity="1" name="name" visibility="public" type="java.lang.String"> + <tag name="mandatory" value="true"/> + <tag name="indexed" value="false"/> + <tag name="primaryKey" value="false"/> + <tag name="readonly" value="false"/> + </attribute> + <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Address"> + <tag name="mandatory" value="true"/> + <tag name="indexed" value="false"/> + <tag name="primaryKey" value="false"/> + <tag name="readonly" value="false"/> + </attribute> + <attribute multiplicity="n" name="address" visibility="public" type="org.codelutin.test.Employee"> + <tag name="mandatory" value="true"/> + <tag name="indexed" value="false"/> + <tag name="primaryKey" value="false"/> + <tag name="readonly" value="false"/> + </attribute> + <operation name="getTime" visibility="public" returnType="int"> + <parameter name="year" type="org.codelutin.Employee"/> + </operation> + </class> +</topiaModel> Deleted: trunk/eugene/src/site/resources/xmi/ObjectModel.zuml =================================================================== (Binary files differ) Copied: trunk/eugene/src/site/resources/xmi/ObjectModel.zuml (from rev 754, branches/eugene-2.0/eugene/src/site/resources/xmi/ObjectModel.zuml) =================================================================== (Binary files differ) Deleted: trunk/eugene/src/site/resources/xmi/objectmodel.zargo =================================================================== (Binary files differ) Copied: trunk/eugene/src/site/resources/xmi/objectmodel.zargo (from rev 754, branches/eugene-2.0/eugene/src/site/resources/xmi/objectmodel.zargo) =================================================================== (Binary files differ) Deleted: trunk/eugene/src/site/rst/LutinGenerator.rst =================================================================== --- branches/eugene-2.0/eugene/src/site/rst/LutinGenerator.rst 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/site/rst/LutinGenerator.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -1,57 +0,0 @@ -====== -Eugene -====== - -:Authors: Arnaud THIMEL -:Contact: thimel@codelutin.com -:Revision: $Revision$ -:Date: $Date$ - - -.. contents:: - - -Project origin -============== - -Eugene was born after a research of an easy-to-use code generator -oriented on "in memory" models. But the research ended by a failure. - -Analysed projects were : - -- Jostraca ; -- EMF ; -- ... - -Code Generation were chosen instead of Introspection because it allows to use -the compilation processes and therefore to validate the generated code. Even if -the initial need was to generate Java source code, Eugene is able to -generate any type of code. - - - -Technical part -============== - -Eugene allows using a set of generators. These generators are abstract -of any specificity enabling to adapt them to indicidual needs. - - -By default, Eugene has two implementations of these generators : - -- ObjectModelGenerator (generation from an object model) ; -- UIModelGenerator (generation from a graphic model). - -Each of these models has its own specificities due to its strucure and working -mode... - -Anyway, these generators are unuseful without generation templates. Templates -are files allowing to determinate what will be the generated content according -to the initial model. Thanks to LutinProcessor_, these templates are written -with a syntax close to the JSP syntax mixing Java and generated code. The goal -of LutinProcessor is to tranform the templates by replacing JSP code by the -matching Java code. Obtained Java classes can be compiled and so become -independants. - - -.. _LutinProcessor: http://lutinprocessor.labs.libre-entreprise.org/ Copied: trunk/eugene/src/site/rst/LutinGenerator.rst (from rev 754, branches/eugene-2.0/eugene/src/site/rst/LutinGenerator.rst) =================================================================== --- trunk/eugene/src/site/rst/LutinGenerator.rst (rev 0) +++ trunk/eugene/src/site/rst/LutinGenerator.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,57 @@ +====== +Eugene +====== + +:Authors: Arnaud THIMEL +:Contact: thimel@codelutin.com +:Revision: $Revision$ +:Date: $Date$ + + +.. contents:: + + +Project origin +============== + +Eugene was born after a research of an easy-to-use code generator +oriented on "in memory" models. But the research ended by a failure. + +Analysed projects were : + +- Jostraca ; +- EMF ; +- ... + +Code Generation were chosen instead of Introspection because it allows to use +the compilation processes and therefore to validate the generated code. Even if +the initial need was to generate Java source code, Eugene is able to +generate any type of code. + + + +Technical part +============== + +Eugene allows using a set of generators. These generators are abstract +of any specificity enabling to adapt them to indicidual needs. + + +By default, Eugene has two implementations of these generators : + +- ObjectModelGenerator (generation from an object model) ; +- UIModelGenerator (generation from a graphic model). + +Each of these models has its own specificities due to its strucure and working +mode... + +Anyway, these generators are unuseful without generation templates. Templates +are files allowing to determinate what will be the generated content according +to the initial model. Thanks to LutinProcessor_, these templates are written +with a syntax close to the JSP syntax mixing Java and generated code. The goal +of LutinProcessor is to tranform the templates by replacing JSP code by the +matching Java code. Obtained Java classes can be compiled and so become +independants. + + +.. _LutinProcessor: http://lutinprocessor.labs.libre-entreprise.org/ Deleted: trunk/eugene/src/site/rst/generatorHelp.rst =================================================================== --- branches/eugene-2.0/eugene/src/site/rst/generatorHelp.rst 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/site/rst/generatorHelp.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -1,89 +0,0 @@ - -How to create a UML model for use with Eugene ---------------------------------------------- - -In Poseidon, - - Create an empty project - - Rename root package to your application name (used by ???) - - create a package hierarchy according to your company name and project organisation (eg : org.codelutin.jdevis.entities) - - Create a class diagram is this package, so that classes you will define to it will belong to this package at creation. - - Make a model of your entities : - - All entities must be stereotyped 'entity' - - You may use both class and interface - - You may set several taggedValues on all items : - - doc : documentation related to this item, used for javadoc comments (not used yet) - - You may set several taggedValues on classes : - - asText : OCL expression used as for toString() method generation (eg : this.firstName+" "+this.lastName) - - You may set several taggedValues on attributes : - - readonly : boolean that indicates if change must be made impossible on this attribute (used for setter generation) - - mandatory : boolean that indicates if this attribute is mandatory (used to build a minimal not empty constructor) - - defines : boolean that indicates if this attribute is needed for defining the class (used for default UIs) - - primaryKey : boolean that indicates if this attribute is part of the primary key for the class (not used yet) - - indexed : boolean that indicates if it must be possible to search items by this attribute (not used yet) - - - -TopiaUI : ---------- - -<topiaUI xmlns="http://www.codelutin.org/topia/topiaUI" name="XXX"> - <content> - <item> - <containmentProperties> - <property name="_containementPropertyName_" type="_containementPropertyType_">XXX</property> - </containmentProperties> - <widget name="XXX" type="_widgetType_"> - <properties> - <property name="_propertyName_" type="_propertyType_">XXX</property> - </properties> - <signals> - <signal name="_signalName_" handler="XXX"/> - </signals> - <content> - <item> - ... - </item> - ... - </content> - </widget> - </item> - ... - </content> -</topiaUI> - -widgetType : - gridBag - panel - scrollPane - table - label - textfield - button - -properties : - minimumWidth of type int - minimumHeight of type int - preferedWidth of type int - preferedHeight of type int - maximumWidth of type int - maximumHeight of type int - text of type String (default to "") - editable of type boolean (default to true) - borderType of type String = {"SoftBevelBorder", "EtchedBorder"} - borderDepth of type String = {"LOWERED", "RAISED"} - borderText of type String - -containmentProperties : - gridX of type int (default to 0) - gridY of type int (default to 0) - gridWidth of type int (default to 1) - gridHeight of type int (default to 1) - anchor of type String = {"CENTER", "NORTH", "SOUTH", "EAST", "WEST", "NORTHEAST", "NORTHWEST", "SOUTHEAST", "SOUTHWEST"} (default to CENTER) - fill of type String = {"HORIZONTAL", "VERTICAL", "BOTH", "NONE"} (default to BOTH) - weightX of type double (default to 1.0) - weightY of type double (default to 1.0) - insetTop of type int (default to 2) - insetBottom of type int (default to 2) - insetLeft of type int (default to 2) - insetRight of type int (default to 2) - Copied: trunk/eugene/src/site/rst/generatorHelp.rst (from rev 754, branches/eugene-2.0/eugene/src/site/rst/generatorHelp.rst) =================================================================== --- trunk/eugene/src/site/rst/generatorHelp.rst (rev 0) +++ trunk/eugene/src/site/rst/generatorHelp.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,89 @@ + +How to create a UML model for use with Eugene +--------------------------------------------- + +In Poseidon, + - Create an empty project + - Rename root package to your application name (used by ???) + - create a package hierarchy according to your company name and project organisation (eg : org.codelutin.jdevis.entities) + - Create a class diagram is this package, so that classes you will define to it will belong to this package at creation. + - Make a model of your entities : + - All entities must be stereotyped 'entity' + - You may use both class and interface + - You may set several taggedValues on all items : + - doc : documentation related to this item, used for javadoc comments (not used yet) + - You may set several taggedValues on classes : + - asText : OCL expression used as for toString() method generation (eg : this.firstName+" "+this.lastName) + - You may set several taggedValues on attributes : + - readonly : boolean that indicates if change must be made impossible on this attribute (used for setter generation) + - mandatory : boolean that indicates if this attribute is mandatory (used to build a minimal not empty constructor) + - defines : boolean that indicates if this attribute is needed for defining the class (used for default UIs) + - primaryKey : boolean that indicates if this attribute is part of the primary key for the class (not used yet) + - indexed : boolean that indicates if it must be possible to search items by this attribute (not used yet) + + + +TopiaUI : +--------- + +<topiaUI xmlns="http://www.codelutin.org/topia/topiaUI" name="XXX"> + <content> + <item> + <containmentProperties> + <property name="_containementPropertyName_" type="_containementPropertyType_">XXX</property> + </containmentProperties> + <widget name="XXX" type="_widgetType_"> + <properties> + <property name="_propertyName_" type="_propertyType_">XXX</property> + </properties> + <signals> + <signal name="_signalName_" handler="XXX"/> + </signals> + <content> + <item> + ... + </item> + ... + </content> + </widget> + </item> + ... + </content> +</topiaUI> + +widgetType : + gridBag + panel + scrollPane + table + label + textfield + button + +properties : + minimumWidth of type int + minimumHeight of type int + preferedWidth of type int + preferedHeight of type int + maximumWidth of type int + maximumHeight of type int + text of type String (default to "") + editable of type boolean (default to true) + borderType of type String = {"SoftBevelBorder", "EtchedBorder"} + borderDepth of type String = {"LOWERED", "RAISED"} + borderText of type String + +containmentProperties : + gridX of type int (default to 0) + gridY of type int (default to 0) + gridWidth of type int (default to 1) + gridHeight of type int (default to 1) + anchor of type String = {"CENTER", "NORTH", "SOUTH", "EAST", "WEST", "NORTHEAST", "NORTHWEST", "SOUTHEAST", "SOUTHWEST"} (default to CENTER) + fill of type String = {"HORIZONTAL", "VERTICAL", "BOTH", "NONE"} (default to BOTH) + weightX of type double (default to 1.0) + weightY of type double (default to 1.0) + insetTop of type int (default to 2) + insetBottom of type int (default to 2) + insetLeft of type int (default to 2) + insetRight of type int (default to 2) + Deleted: trunk/eugene/src/site/rst/index.rst =================================================================== --- branches/eugene-2.0/eugene/src/site/rst/index.rst 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/site/rst/index.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -1,57 +0,0 @@ -====== -Eugene -====== - -:Authors: Arnaud THIMEL -:Contact: thimel@codelutin.com -:Revision: $Revision: 649 $ -:Date: $Date: 2009-10-21 14:21:03 +0200 (Wed, 21 Oct 2009) $ - - -.. contents:: - - -Project origin -============== - -Eugene was born after a research of an easy-to-use code generator -oriented on "in memory" models. But the research ended by a failure. - -Analysed projects were : - -- Jostraca ; -- EMF ; -- ... - -Code Generation were chosen instead of Introspection because it allows to use -the compilation processes and therefore to validate the generated code. Even if -the initial need was to generate Java source code, Eugene is able to -generate any type of code. - - - -Technical part -============== - -Eugene allows using a set of generators. These generators are abstract -of any specificity enabling to adapt them to indicidual needs. - - -By default, Eugene has two implementations of these generators : - -- ObjectModelGenerator (generation from an object model) ; -- UIModelGenerator (generation from a graphic model). - -Each of these models has its own specificities due to its strucure and working -mode... - -Anyway, these generators are unuseful without generation templates. Templates -are files allowing to determinate what will be the generated content according -to the initial model. Thanks to LutinProcessor_, these templates are written -with a syntax close to the JSP syntax mixing Java and generated code. The goal -of LutinProcessor is to tranform the templates by replacing JSP code by the -matching Java code. Obtained Java classes can be compiled and so become -independants. - - -.. _LutinProcessor: http://lutinprocessor.labs.libre-entreprise.org/ Copied: trunk/eugene/src/site/rst/index.rst (from rev 754, branches/eugene-2.0/eugene/src/site/rst/index.rst) =================================================================== --- trunk/eugene/src/site/rst/index.rst (rev 0) +++ trunk/eugene/src/site/rst/index.rst 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,57 @@ +====== +Eugene +====== + +:Authors: Arnaud THIMEL +:Contact: thimel@codelutin.com +:Revision: $Revision: 649 $ +:Date: $Date: 2009-10-21 14:21:03 +0200 (Wed, 21 Oct 2009) $ + + +.. contents:: + + +Project origin +============== + +Eugene was born after a research of an easy-to-use code generator +oriented on "in memory" models. But the research ended by a failure. + +Analysed projects were : + +- Jostraca ; +- EMF ; +- ... + +Code Generation were chosen instead of Introspection because it allows to use +the compilation processes and therefore to validate the generated code. Even if +the initial need was to generate Java source code, Eugene is able to +generate any type of code. + + + +Technical part +============== + +Eugene allows using a set of generators. These generators are abstract +of any specificity enabling to adapt them to indicidual needs. + + +By default, Eugene has two implementations of these generators : + +- ObjectModelGenerator (generation from an object model) ; +- UIModelGenerator (generation from a graphic model). + +Each of these models has its own specificities due to its strucure and working +mode... + +Anyway, these generators are unuseful without generation templates. Templates +are files allowing to determinate what will be the generated content according +to the initial model. Thanks to LutinProcessor_, these templates are written +with a syntax close to the JSP syntax mixing Java and generated code. The goal +of LutinProcessor is to tranform the templates by replacing JSP code by the +matching Java code. Obtained Java classes can be compiled and so become +independants. + + +.. _LutinProcessor: http://lutinprocessor.labs.libre-entreprise.org/ Deleted: trunk/eugene/src/site/site_en.xml =================================================================== --- trunk/eugene/src/site/site_en.xml 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/site/site_en.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project name="${project.name}"> - - <bannerLeft> - <name>${project.name}</name> - </bannerLeft> - - <body> - - <breadcrumbs> - <item name="${project.name}" href="index.html" /> - </breadcrumbs> - - <menu name="Parent"> - <item href="../../index.html" name="${project.parent.name}"/> - </menu> - - <menu name="Liens"> - <item href="../index.html" name="EUGene [ FR ]"/> - </menu> - - <menu ref="reports"/> - - </body> -</project> Copied: trunk/eugene/src/site/site_en.xml (from rev 754, branches/eugene-2.0/eugene/src/site/site_en.xml) =================================================================== --- trunk/eugene/src/site/site_en.xml (rev 0) +++ trunk/eugene/src/site/site_en.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project name="${project.name}"> + + <bannerLeft> + <name>${project.name}</name> + </bannerLeft> + + <body> + + <breadcrumbs> + <item name="${project.name}" href="index.html" /> + </breadcrumbs> + + <links> + <item name="Libre-Entreprise" href="http://www.libre-entreprise.org/" /> + <item name="[fr" href="../fr/index.html" /> + <item name="en]" href="index.html" /> + </links> + + <menu ref="parent"/> + + <menu name="User"> + <item href="index.html" name="Home"/> + </menu> + + <menu name="Downloads"> + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}.jar" + name="Library (jar)"/> + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}-javadoc.jar" + name="Javadoc (jar)"/> + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}-sources.jar" + name="Sources (jar)"/> + <item href="http://${platform}/projects/list_files/eugene" name="Archives" /> + </menu> + + <menu name="Trackers"> + <item name="Bugs" href="${project.issueManagement.url}?query_id=2"/> + <item name="Evolutions" href="${project.issueManagement.url}?query_id=1"/> + <item name="Help" href="${project.issueManagement.url}?query_id=3"/> + </menu> + + <menu name="Links"> + <item name="Nuiton-processor" href="http://maven-site.nuiton.org/processor"/> + <item name="ToPIA" href="http://maven-site.nuiton.org/topia"/> + </menu> + + <menu ref="reports"/> + + </body> +</project> Deleted: trunk/eugene/src/site/site_fr.xml =================================================================== --- trunk/eugene/src/site/site_fr.xml 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/site/site_fr.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project name="${project.name}"> - - <bannerLeft> - <name>${project.name}</name> - </bannerLeft> - - <body> - - <breadcrumbs> - <item name="${project.name}" href="index.html" /> - </breadcrumbs> - - <menu ref="parent"/> - - <menu name="Liens"> - <item href="en/index.html" name="EUGene [ EN ]"/> - </menu> - - <menu ref="reports"/> - - </body> -</project> Copied: trunk/eugene/src/site/site_fr.xml (from rev 754, branches/eugene-2.0/eugene/src/site/site_fr.xml) =================================================================== --- trunk/eugene/src/site/site_fr.xml (rev 0) +++ trunk/eugene/src/site/site_fr.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project name="${project.name}"> + + <bannerLeft> + <name>${project.name}</name> + </bannerLeft> + + <body> + + <breadcrumbs> + <item name="${project.name}" href="index.html" /> + </breadcrumbs> + + <links> + <item name="Libre-Entreprise" href="http://www.libre-entreprise.org/" /> + <item name="[fr" href="index.html" /> + <item name="en]" href="../index.html" /> + </links> + + <menu ref="parent"/> + + <menu name="Utilisateur"> + <item href="index.html" name="Accueil"/> + <item href="DiscussionSurTypeDeGeneration.html" name="Génération"/> + <item href="FAQ.html" name="FAQ"/> + </menu> + + <menu name="Developpeur"> + <item name="ObjectModel" href="ObjectModel.html"/> + <item name="UIModel" href="DevUIDoc.html"/> + <item name="Plugin Eclipse" href="plugineclipse.html"/> + <item name="Todo" href="Todo.html"/> + </menu> + + <menu name="Téléchargement"> + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}.jar" + name="Librairie (jar)"/> + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}-javadoc.jar" + name="Javadoc (jar)"/> + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}-sources.jar" + name="Sources (jar)"/> + <item href="http://${platform}/projects/list_files/eugene" name="Archives" /> + </menu> + + <menu name="Trackers"> + <item name="Bugs" href="${project.issueManagement.url}?query_id=2"/> + <item name="Améliorations" href="${project.issueManagement.url}?query_id=1"/> + <item name="Aide" href="${project.issueManagement.url}?query_id=3"/> + </menu> + + <menu name="Liens"> + <item name="Nuiton-processor" href="http://maven-site.nuiton.org/processor"/> + <item name="ToPIA" href="http://maven-site.nuiton.org/topia"/> + </menu> + + <menu ref="reports"/> + + </body> +</project> Property changes on: trunk/eugene/src/test/java/org/nuiton ___________________________________________________________________ Deleted: svn:mergeinfo - Modified: trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorTaskTest.java =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorTaskTest.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorTaskTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,20 +1,21 @@ -/* *##% - * Copyright (C) 2009 Code Lutin +/* *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU General Lesser Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - *##%*/ + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene; Copied: trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java (from rev 754, branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java) =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java (rev 0) +++ trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,204 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ + +package org.nuiton.eugene; + +import java.util.Set; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import static org.junit.Assert.*; + +/** + * + * @author fdesbois + */ +public class GeneratorUtilTest { + + private static Log log = LogFactory.getLog(GeneratorUtilTest.class); + + public GeneratorUtilTest() { + } + + @BeforeClass + public static void setUpClass() throws Exception { + } + + @AfterClass + public static void tearDownClass() throws Exception { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + + /** + * Test of getSimpleName method, of class GeneratorUtil. + */ + @Test + public void testGetSimpleName() { + System.out.println("getSimpleName"); + + String str = "List"; + String expResult = "List"; + String result = GeneratorUtil.getSimpleName(str); + log.info(str + " -> " + result); + assertEquals(expResult, result); + + str = "java.util.Regex"; + expResult = "Regex"; + result = GeneratorUtil.getSimpleName(str); + log.info(str + " -> " + result); + assertEquals(expResult, result); + + str = "java.util.List<? extends org.chorem.bonzoms.Bonzoms>"; + expResult = "List<? extends Bonzoms>"; + result = GeneratorUtil.getSimpleName(str); + log.info(str + " -> " + result); + assertEquals(expResult, result); + + str = "java.util.List<org.chorem.jtimer.Jtimer>"; + expResult = "List<Jtimer>"; + result = GeneratorUtil.getSimpleName(str); + log.info(str + " -> " + result); + assertEquals(expResult, result); + + str = "java.util.Set<java.util.Collection<java.util.Collection<java.util.Collection" + + "<java.lang.String>>>>"; + expResult = "Set<Collection<Collection<Collection<String>>>>"; + result = GeneratorUtil.getSimpleName(str); + log.info(str + " -> " + result); + assertEquals(expResult, result); + + str = "java.util.Map<org.chorem.jtimer.Jtimer, java.util.Collection<java.lang.String>>"; + expResult = "Map<Jtimer, Collection<String>>"; + result = GeneratorUtil.getSimpleName(str); + log.info(str + " -> " + result); + assertEquals(expResult, result); + + str = "new java.util.HashMap<org.chorem.jtimer.Jtimer, T extends java.lang.String>()"; + expResult = "new HashMap<Jtimer, T extends String>()"; + result = GeneratorUtil.getSimpleName(str); + log.info(str + " -> " + result); + assertEquals(expResult, result); + + str = "Class<O>"; + expResult = "Class<O>"; + result = GeneratorUtil.getSimpleName(str); + log.info(str + " -> " + result); + assertEquals(expResult, result); + + str = "2.0"; + expResult = "2.0"; + result = GeneratorUtil.getSimpleName(str); + log.info(str + " -> " + result); + assertEquals(expResult, result); + + str = "\"eric.chatellier\""; + expResult = "\"eric.chatellier\""; + result = GeneratorUtil.getSimpleName(str); + log.info(str + " -> " + result); + assertEquals(expResult, result); + + str = "<T extends org.nuiton.topia.TopiaEntity, D extends org.nuiton.topia.TopiaDAO<? super T>> D"; + expResult = "<T extends TopiaEntity, D extends TopiaDAO<? super T>> D"; + result = GeneratorUtil.getSimpleName(str); + log.info(str + " -> " + result); + assertEquals(expResult, result); + + str = "Object..."; + expResult = "Object..."; + result = GeneratorUtil.getSimpleName(str); + log.info(str + " -> " + result); + assertEquals(expResult, result); + + str = "Class<A>..."; + expResult = "Class<A>..."; + result = GeneratorUtil.getSimpleName(str); + log.info(str + " -> " + result); + assertEquals(expResult, result); + + str = "java.lang.Class<A>..."; + expResult = "Class<A>..."; + result = GeneratorUtil.getSimpleName(str); + log.info(str + " -> " + result); + assertEquals(expResult, result); + } + + @Test + public void testGetTypesList() { + String str = "List"; + Set<String> results = GeneratorUtil.getTypesList(str); + log.info(str + " -> " + results); + assertEquals(results.size(), 1); + + str = "java.util.Regex"; + results = GeneratorUtil.getTypesList(str); + log.info(str + " -> " + results); + assertEquals(results.size(), 1); + + str = "java.util.List<? extends org.chorem.bonzoms.Bonzoms>"; + results = GeneratorUtil.getTypesList(str); + log.info(str + " -> " + results); + assertEquals(results.size(), 2); + + str = "java.util.List<org.chorem.jtimer.Jtimer>"; + results = GeneratorUtil.getTypesList(str); + log.info(str + " -> " + results); + assertEquals(results.size(), 2); + + str = "java.util.Set<java.util.Collection<java.util.Collection<java.util.Collection" + + "<java.lang.String>>>>"; + results = GeneratorUtil.getTypesList(str); + log.info(str + " -> " + results); + assertEquals(results.size(), 3); + + str = "java.util.Map<org.chorem.jtimer.Jtimer, java.util.Collection<java.lang.String>>"; + results = GeneratorUtil.getTypesList(str); + log.info(str + " -> " + results); + assertEquals(results.size(), 4); + + str = "new java.util.HashMap<org.chorem.jtimer.Jtimer, T extends java.lang.String>()"; + results = GeneratorUtil.getTypesList(str); + log.info(str + " -> " + results); + assertEquals(results.size(), 3); + + str = "java.util.Map<org.chorem.jtimer.Jtimer, java.util.Collection<String>>"; + results = GeneratorUtil.getTypesList(str); + log.info(str + " -> " + results); + assertEquals(results.size(), 4); + +// str = "<T extends org.nuiton.topia.TopiaEntity> T"; +// results = GeneratorUtil.getTypesList(str); +// log.info(str + " -> " + results); +// assertEquals(results.size(), 1); + } + +} Modified: trunk/eugene/src/test/java/org/nuiton/eugene/ImportsManagerTest.java =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/ImportsManagerTest.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/test/java/org/nuiton/eugene/ImportsManagerTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,3 +1,23 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ package org.nuiton.eugene; import java.io.Serializable; Copied: trunk/eugene/src/test/java/org/nuiton/eugene/ModelFileWriterUtilTest.java (from rev 754, branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/ModelFileWriterUtilTest.java) =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/ModelFileWriterUtilTest.java (rev 0) +++ trunk/eugene/src/test/java/org/nuiton/eugene/ModelFileWriterUtilTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,117 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ +package org.nuiton.eugene; + +import org.junit.Assert; + +/** + * User: chemit + * Date: 25 nov. 2009 + * Time: 18:38:01 + */ + +public abstract class ModelFileWriterUtilTest extends Assert { +// /** +// * Les writers disponibles pour le test +// */ +// static Map<String, ToModelWriter> writers; +// +// @BeforeClass +// public static void beforeClass() throws Exception { +// writers = new HashMap<String, ToModelWriter>(); +// writers.put("test1", new ToModelWriter1()); +// writers.put("test2", new ToModelWriter2()); +// } +// +// @Before +// public void setUp() throws Exception { +// } +// +// @After +// public void tearDown() throws Exception { +// } +// +// @Test +// public void testConstructor() throws Exception { +// String pattern; +// ToModelWriterContext writerContext; +// ToModelWriter writer; +// writer = writers.get("test1"); +// +// pattern = "test1:"; +// writerContext = new ToModelWriterContext(basedir, pattern, ObjectModel.class, overwrite, writers); +// assertEquals(writerContext, pattern, "test1", writer.getDefaultInputDirectory(), writer.getDefaultIncludes()); +// +// pattern = "src/main/test1:**/*.test1"; +// writerContext = new ToModelWriterContext(basedir, pattern, ObjectModel.class, overwrite, writers); +// assertEquals(writerContext, pattern, "test1", "src/main/test1", "**/*.test1"); +// +// pattern = "test2:src/main/test1:**/*.test1"; +// writerContext = new ToModelWriterContext(basedir, pattern, ObjectModel.class, overwrite, writers); +// assertEquals(writerContext, pattern, "test2", "src/main/test1", "**/*.test1"); +// } +// +// @Test(expected = IllegalArgumentException.class) +// public void testConstructorUnknownInclude0() throws Exception { +// +// new ToModelWriterContext(basedir, ":", ObjectModel.class, overwrite, writers); +// } +// +// @Test(expected = IllegalArgumentException.class) +// public void testConstructorUnknownInclude1() throws Exception { +// +// new ToModelWriterContext(basedir, "test3:", ObjectModel.class, overwrite, writers); +// } +// +// @Test(expected = IllegalArgumentException.class) +// public void testConstructorUnknownInclude2() throws Exception { +// +// new ToModelWriterContext(basedir, "test1$", ObjectModel.class, overwrite, writers); +// } +// +// @Test(expected = IllegalArgumentException.class) +// public void testConstructorUnknownInclude3() throws Exception { +// +// new ToModelWriterContext(basedir, "test1$YO:", ObjectModel.class, overwrite, writers); +// } +// +// @Test(expected = IllegalArgumentException.class) +// public void testConstructorUnknownInclude4() throws Exception { +// +// new ToModelWriterContext(basedir, "test1$YO:yo", ObjectModel.class, overwrite, writers); +// } +// +// @Test(expected = IllegalArgumentException.class) +// public void testConstructorUnknownInclude5() throws Exception { +// +// new ToModelWriterContext(basedir, "test1$YO:yo:", ObjectModel.class, overwrite, writers); +// } + + +// protected void assertEquals(ToModelWriterContext writerContext, String pattern, String protocol, String inputDirectory, String includes) { +// assertNotNull(writerContext); +// assertEquals(pattern, writerContext.getPattern()); +// assertEquals(protocol, writerContext.getProtocol()); +// assertEquals(includes, writerContext.getIncludes()); +// assertEquals(inputDirectory, writerContext.getInputPath()); +// } + +} Modified: trunk/eugene/src/test/java/org/nuiton/eugene/ObjectModelGeneratorTest.java =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/ObjectModelGeneratorTest.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/test/java/org/nuiton/eugene/ObjectModelGeneratorTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,20 +1,21 @@ -/* *##% - * Copyright (C) 2009 Code Lutin +/* *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU General Lesser Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - *##%*/ + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene; Deleted: trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerExtensionTest.java =================================================================== --- branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerExtensionTest.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerExtensionTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,124 +0,0 @@ -/* - * *##% - * EUGene :: EUGene - * Copyright (C) 2004 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%* - */ - -package org.nuiton.eugene.java; - -import java.util.List; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.nuiton.eugene.ImportsManager; -import static org.junit.Assert.*; -import org.nuiton.eugene.models.object.ObjectModelClassifier; -import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelImpl; - - -/** - * ImportsManagerExtensionTest - * - * Created: 2 nov. 2009 - * - * @author fdesbois - * @version $Revision$ - * - * Mise a jour: $Date$ - * par : $Author$ - */ -public class ImportsManagerExtensionTest { - - public ImportsManagerExtensionTest() { - } - - @BeforeClass - public static void setUpClass() throws Exception { - } - - @AfterClass - public static void tearDownClass() throws Exception { - } - - @Before - public void setUp() { - } - - @After - public void tearDown() { - } - - /** - * Test of getManager method, of class ImportsManagerExtension. - * Prerequisite : Existing ObjectModel containing a classifier - * - Get an import Manager for a classifier - * - Test unique : one ImportsManager by classifier - */ - @Test - public void testGetManager() { - System.out.println("getManager"); - - ImportsManagerExtension managers = new ImportsManagerExtension(); - - ObjectModelImpl model = new ObjectModelImpl(); - model.setName("TestModel"); - - ObjectModelClassImpl clazz = new ObjectModelClassImpl(); - clazz.setName("Person"); - clazz.setPackage("org.chorem.bonzoms"); - model.addClass(clazz); - - ImportsManager manager = managers.getManager(clazz); - assertNotNull(manager); - - ImportsManager manager2 = managers.getManager(clazz); - assertEquals(manager, manager2); - } - - /** - * Test of getImports method, of class ImportsManagerExtension. - * Prerequisite : Existing ObjectModel containing a classifier, imports set for this classifier - * - Get imports for an existing classifier with its ImportsManager - */ - @Test - public void testGetImports() { - System.out.println("getImports"); - - ImportsManagerExtension managers = new ImportsManagerExtension(); - - ObjectModelImpl model = new ObjectModelImpl(); - model.setName("TestModel"); - - ObjectModelClassImpl clazz = new ObjectModelClassImpl(); - clazz.setName("Person"); - clazz.setPackage("org.chorem.bonzoms"); - model.addClass(clazz); - - ImportsManager manager = managers.getManager(clazz); - manager.addImport("java.util.List"); - - List<String> imports = managers.getImports(clazz); - assertNotNull(imports); - assertEquals(imports.size(), 1); - assertEquals(imports.get(0), "java.util.List"); - } - -} Copied: trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerExtensionTest.java (from rev 754, branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerExtensionTest.java) =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerExtensionTest.java (rev 0) +++ trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerExtensionTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,124 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ + +package org.nuiton.eugene.java; + +import java.util.List; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.nuiton.eugene.ImportsManager; +import static org.junit.Assert.*; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelImpl; + + +/** + * ImportsManagerExtensionTest + * + * Created: 2 nov. 2009 + * + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class ImportsManagerExtensionTest { + + public ImportsManagerExtensionTest() { + } + + @BeforeClass + public static void setUpClass() throws Exception { + } + + @AfterClass + public static void tearDownClass() throws Exception { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + /** + * Test of getManager method, of class ImportsManagerExtension. + * Prerequisite : Existing ObjectModel containing a classifier + * - Get an import Manager for a classifier + * - Test unique : one ImportsManager by classifier + */ + @Test + public void testGetManager() { + System.out.println("getManager"); + + ImportsManagerExtension managers = new ImportsManagerExtension(); + + ObjectModelImpl model = new ObjectModelImpl(); + model.setName("TestModel"); + + ObjectModelClassImpl clazz = new ObjectModelClassImpl(); + clazz.setName("Person"); + clazz.setPackage("org.chorem.bonzoms"); + model.addClass(clazz); + + ImportsManager manager = managers.getManager(clazz); + assertNotNull(manager); + + ImportsManager manager2 = managers.getManager(clazz); + assertEquals(manager, manager2); + } + + /** + * Test of getImports method, of class ImportsManagerExtension. + * Prerequisite : Existing ObjectModel containing a classifier, imports set for this classifier + * - Get imports for an existing classifier with its ImportsManager + */ + @Test + public void testGetImports() { + System.out.println("getImports"); + + ImportsManagerExtension managers = new ImportsManagerExtension(); + + ObjectModelImpl model = new ObjectModelImpl(); + model.setName("TestModel"); + + ObjectModelClassImpl clazz = new ObjectModelClassImpl(); + clazz.setName("Person"); + clazz.setPackage("org.chorem.bonzoms"); + model.addClass(clazz); + + ImportsManager manager = managers.getManager(clazz); + manager.addImport("java.util.List"); + + List<String> imports = managers.getImports(clazz); + assertNotNull(imports); + assertEquals(imports.size(), 1); + assertEquals(imports.get(0), "java.util.List"); + } + +} Deleted: trunk/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java =================================================================== --- branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,394 +0,0 @@ -/* - * *##% - * EUGene :: EUGene - * Copyright (C) 2004 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%* - */ - -package org.nuiton.eugene.java; - -import java.util.Iterator; -import java.util.List; -import java.util.Set; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.nuiton.eugene.models.object.ObjectModel; -import static org.junit.Assert.*; -import org.nuiton.eugene.models.object.ObjectModelAttribute; -import org.nuiton.eugene.models.object.ObjectModelClass; -import org.nuiton.eugene.models.object.ObjectModelClassifier; -import org.nuiton.eugene.models.object.ObjectModelModifier; -import org.nuiton.eugene.models.object.ObjectModelOperation; -import org.nuiton.eugene.models.object.ObjectModelParameter; -import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl; - -/** - * JavaBuilderTest - * - * Created: 29 oct. 2009 - * - * @author fdesbois - * @version $Revision$ - * - * Mise a jour: $Date$ - * par : $Author$ - */ -public class JavaBuilderTest { - - public JavaBuilderTest() { - } - - @BeforeClass - public static void setUpClass() throws Exception { - } - - @AfterClass - public static void tearDownClass() throws Exception { - } - - @Before - public void setUp() { - } - - @After - public void tearDown() { - } - - /** - * Test of getModel. - * No test needed : model created in modelBuilder instanciated in constructor (ObjectModelBuilder). - * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testGetModel() - */ - @Test - public void testGetModel() { - System.out.println("getModel"); - - JavaBuilder builder = new JavaBuilder("TestModel"); - - builder.getModel(); - } - - /** - * Test of addImport method, of class JavaBuilder. - * Prerequisite : existing classifier in model. - * - Add a simple type to import. - * - Add a type to import with generic (List of Category) : two imports are added. - * NOTE : Use of ImportsManager addImport() method and GeneratorUtil getTypesList() method. - * @see org.nuiton.eugene.ImportsManagerTest#testAddImport() - * @see org.nuiton.eugene.GeneratorUtilTest#testGetTypesList() - */ - @Test - public void testAddImport() { - System.out.println("addImport"); - JavaBuilder builder = new JavaBuilder("TestModel"); - - ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - String imports = "java.beans.PropertyChangeListener"; - builder.addImport(classifier, imports); - - ObjectModel model = builder.getModel(); - ImportsManagerExtension importsExtension = - model.getExtension(ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); - - String type = "java.util.List<org.chorem.cash.Category>"; // type add : 2 imports added - builder.addImport(classifier, type); - assertEquals(3, importsExtension.getImports(classifier).size()); - } - - /** - * Test of createClass method, of class JavaBuilder. - * No test needed : call of createClass in ObjectModelBuilder - * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testCreateClass() - */ - @Test - public void testCreateClass() { - System.out.println("createClass"); - - JavaBuilder builder = new JavaBuilder("TestModel"); - - builder.createClass("Person", "org.chorem.bonzoms"); - } - - /** - * Test of createAbstractClass method, of class JavaBuilder. - * Prerequisite : none. - * - Create an abstract class. - */ - @Test - public void testCreateAbstractClass() { - System.out.println("createAbstractClass"); - JavaBuilder builder = new JavaBuilder("TestModel"); - - ObjectModelClass clazz = builder.createAbstractClass("Person", "org.chorem.bonzoms"); - assertTrue(clazz.isAbstract()); - } - - /** - * Test of setSuperClass method, of class JavaBuilder. - * Only one superclass can be set. - * Check imports on superclass qualified name - * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testAddSuperclass() - */ - @Test - public void testSetSuperClass() { - System.out.println("setSuperClass"); - JavaBuilder builder = new JavaBuilder("TestModel"); - - ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms"); - - String superclassQualifiedName = "org.chorem.bonzoms.Party"; - builder.setSuperClass(clazz, superclassQualifiedName); - - superclassQualifiedName = "org.chorem.bonzoms.NamedElement"; - builder.setSuperClass(clazz, superclassQualifiedName); - - assertEquals(1, clazz.getSuperclasses().size()); - - // Check imports - ImportsManagerExtension ext = builder.getModel().getExtension( - ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); - - List<String> imports = ext.getImports(clazz); - assertEquals(0, imports.size()); - } - - /** - * Test of addInterface method, of class JavaBuilder. - * Check imports on adding interface : imports added on interfaceQualifiedName - * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testAddInterface() - */ - @Test - public void testAddInterface() { - System.out.println("addInterface"); - JavaBuilder builder = new JavaBuilder("TestModel"); - - ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - - String interfaceQualifiedName = "java.io.Serializable"; - builder.addInterface(classifier, interfaceQualifiedName); - - // Check imports - ImportsManagerExtension ext = builder.getModel().getExtension( - ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); - - List<String> imports = ext.getImports(classifier); - assertEquals(1, imports.size()); - assertTrue(imports.contains("java.io.Serializable")); - } - - /** - * Test of addConstant method, of class JavaBuilder. - * Prerequisite : existing classifier in model. - * - Add a public constant attribute (static, final) - */ - @Test - public void testAddConstant() { - System.out.println("addConstant"); - JavaBuilder builder = new JavaBuilder("TestModel"); - - ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - - ObjectModelAttribute constant = builder.addConstant(classifier, "GENDER_MALE", "boolean", "true", - ObjectModelModifier.PUBLIC); - - assertTrue(constant.isFinal()); - assertTrue(constant.isStatic()); - } - - /** - * Test of addAttribute method, of class JavaBuilder. - * Check imports on adding attribute : imports added on type and value. - * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testAddAttribute() - */ - @Test - public void testAddAttribute() { - System.out.println("addAttribute"); - JavaBuilder builder = new JavaBuilder("TestModel"); - - ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - - builder.addAttribute(classifier, "firstName", "java.lang.String", "", - ObjectModelModifier.PUBLIC); - - builder.addAttribute(classifier, "roles", "java.util.List<org.chorem.bonzoms.Role>", - "new java.util.ArrayList<org.chorem.bonzoms.Role>()", - ObjectModelModifier.PRIVATE, ObjectModelModifier.STATIC); - - // Check imports - ImportsManagerExtension ext = builder.getModel().getExtension( - ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); - - List<String> imports = ext.getImports(classifier); - assertEquals(2, imports.size()); // no imports for org.chorem.bonzoms.Role and java.lang.String - assertTrue(imports.contains("java.util.ArrayList")); - assertTrue(imports.contains("java.util.List")); - } - - /** - * Test of addAttribute method, of class JavaBuilder. - * Prerequisite : existing classifier in model. - * - Add an attribute from an existing one - */ - @Test - public void testAddAttributeObjectModelClassifierObjectModelAttribute() { - System.out.println("addAttribute"); - JavaBuilder builder = new JavaBuilder("modelName"); - - ObjectModelAttributeImpl attribute = new ObjectModelAttributeImpl(); - attribute.setName("name"); - attribute.setType("java.lang.String"); - attribute.setVisibility("public"); - attribute.setStatic(false); - attribute.setFinal(true); - attribute.setDefaultValue("\"\""); - - ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - - ObjectModelAttribute result = builder.addAttribute(classifier, attribute); - - assertNotSame(attribute, result); - } - - /** - * Test of addConstructor method, of class JavaBuilder. - * Prerequisite : existing class in model. - * - Add a constructor to an existing class. - * NOTE : operation.getReturnType doesn't get the good type (ie. "void") - */ - @Test - public void testAddConstructor() { - System.out.println("addConstructor"); - JavaBuilder builder = new JavaBuilder("modelName"); - - ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms"); - - ObjectModelOperation operation = builder.addConstructor(clazz, ObjectModelModifier.PUBLIC); - assertNotNull(operation); - assertEquals(operation.getName(), "Person"); - assertNull(operation.getReturnParameter()); - assertFalse(operation.isAbstract()); - } - - /** - * Test of addOperation method, of class JavaBuilder. - * Check imports on adding operation : returnType of the operation - * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testAddOperation() - */ - @Test - public void testAddOperation() { - System.out.println("addOperation"); - - JavaBuilder builder = new JavaBuilder("modelName"); - - ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - - ObjectModelOperation result = builder.addOperation(classifier, - "methodName", "java.util.List<java.lang.String>", ObjectModelModifier.PUBLIC); - - result = builder.addOperation(classifier, "addPropertyChangeListener", null, - ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT); - - // Check imports - ImportsManagerExtension ext = builder.getModel().getExtension( - ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); - - List<String> imports = ext.getImports(classifier); - assertEquals(1, imports.size()); - assertTrue(imports.contains("java.util.List")); - } - - /** - * Test of addParameter method, of class JavaBuilder. - * Check imports on adding parameter : type of the parameter - * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testAddParameter() - */ - @Test - public void testAddParameter() { - System.out.println("addParameter"); - - JavaBuilder builder = new JavaBuilder("modelName"); - - ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - - ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", - ObjectModelModifier.PUBLIC); - - builder.addParameter(operation, "java.lang.String", "name"); - - // Check imports - ImportsManagerExtension ext = builder.getModel().getExtension( - ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); - - List<String> imports = ext.getImports(classifier); - assertEquals(0, imports.size()); - - } - - /** - * Test of addException method, of class JavaBuilder. - * Check imports on adding exception : exception name - * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testAddException() - */ - @Test - public void testAddException() { - System.out.println("addException"); - - JavaBuilder builder = new JavaBuilder("modelName"); - - ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - - ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", - ObjectModelModifier.PUBLIC); - - builder.addException(operation, "java.lang.IllegalArgumentException"); - - // Check imports - ImportsManagerExtension ext = builder.getModel().getExtension( - ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); - - List<String> imports = ext.getImports(classifier); - assertEquals(0, imports.size()); - } - - /** - * Test of setOperationBody method, of class JavaBuilder. - * No body code for an abstract operation : throw an IllegalArgumentException - * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testSetOperationBody() - */ - @Test - public void testSetOperationBody() { - System.out.println("setOperationBody"); - - JavaBuilder builder = new JavaBuilder("modelName"); - - ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - - ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", - ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT); - - try { - builder.setOperationBody(operation, "this.name = name"); - } catch (Exception eee) { - assertEquals(IllegalArgumentException.class, eee.getClass()); - System.out.println("expected exception : " + eee.getMessage()); - } - } - -} Copied: trunk/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java (from rev 754, branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java) =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java (rev 0) +++ trunk/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,394 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ + +package org.nuiton.eugene.java; + +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.nuiton.eugene.models.object.ObjectModel; +import static org.junit.Assert.*; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelModifier; +import org.nuiton.eugene.models.object.ObjectModelOperation; +import org.nuiton.eugene.models.object.ObjectModelParameter; +import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl; + +/** + * JavaBuilderTest + * + * Created: 29 oct. 2009 + * + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class JavaBuilderTest { + + public JavaBuilderTest() { + } + + @BeforeClass + public static void setUpClass() throws Exception { + } + + @AfterClass + public static void tearDownClass() throws Exception { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + /** + * Test of getModel. + * No test needed : model created in modelBuilder instanciated in constructor (ObjectModelBuilder). + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testGetModel() + */ + @Test + public void testGetModel() { + System.out.println("getModel"); + + JavaBuilder builder = new JavaBuilder("TestModel"); + + builder.getModel(); + } + + /** + * Test of addImport method, of class JavaBuilder. + * Prerequisite : existing classifier in model. + * - Add a simple type to import. + * - Add a type to import with generic (List of Category) : two imports are added. + * NOTE : Use of ImportsManager addImport() method and GeneratorUtil getTypesList() method. + * @see org.nuiton.eugene.ImportsManagerTest#testAddImport() + * @see org.nuiton.eugene.GeneratorUtilTest#testGetTypesList() + */ + @Test + public void testAddImport() { + System.out.println("addImport"); + JavaBuilder builder = new JavaBuilder("TestModel"); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + String imports = "java.beans.PropertyChangeListener"; + builder.addImport(classifier, imports); + + ObjectModel model = builder.getModel(); + ImportsManagerExtension importsExtension = + model.getExtension(ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); + + String type = "java.util.List<org.chorem.cash.Category>"; // type add : 2 imports added + builder.addImport(classifier, type); + assertEquals(3, importsExtension.getImports(classifier).size()); + } + + /** + * Test of createClass method, of class JavaBuilder. + * No test needed : call of createClass in ObjectModelBuilder + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testCreateClass() + */ + @Test + public void testCreateClass() { + System.out.println("createClass"); + + JavaBuilder builder = new JavaBuilder("TestModel"); + + builder.createClass("Person", "org.chorem.bonzoms"); + } + + /** + * Test of createAbstractClass method, of class JavaBuilder. + * Prerequisite : none. + * - Create an abstract class. + */ + @Test + public void testCreateAbstractClass() { + System.out.println("createAbstractClass"); + JavaBuilder builder = new JavaBuilder("TestModel"); + + ObjectModelClass clazz = builder.createAbstractClass("Person", "org.chorem.bonzoms"); + assertTrue(clazz.isAbstract()); + } + + /** + * Test of setSuperClass method, of class JavaBuilder. + * Only one superclass can be set. + * Check imports on superclass qualified name + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testAddSuperclass() + */ + @Test + public void testSetSuperClass() { + System.out.println("setSuperClass"); + JavaBuilder builder = new JavaBuilder("TestModel"); + + ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms"); + + String superclassQualifiedName = "org.chorem.bonzoms.Party"; + builder.setSuperClass(clazz, superclassQualifiedName); + + superclassQualifiedName = "org.chorem.bonzoms.NamedElement"; + builder.setSuperClass(clazz, superclassQualifiedName); + + assertEquals(1, clazz.getSuperclasses().size()); + + // Check imports + ImportsManagerExtension ext = builder.getModel().getExtension( + ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); + + List<String> imports = ext.getImports(clazz); + assertEquals(0, imports.size()); + } + + /** + * Test of addInterface method, of class JavaBuilder. + * Check imports on adding interface : imports added on interfaceQualifiedName + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testAddInterface() + */ + @Test + public void testAddInterface() { + System.out.println("addInterface"); + JavaBuilder builder = new JavaBuilder("TestModel"); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + String interfaceQualifiedName = "java.io.Serializable"; + builder.addInterface(classifier, interfaceQualifiedName); + + // Check imports + ImportsManagerExtension ext = builder.getModel().getExtension( + ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); + + List<String> imports = ext.getImports(classifier); + assertEquals(1, imports.size()); + assertTrue(imports.contains("java.io.Serializable")); + } + + /** + * Test of addConstant method, of class JavaBuilder. + * Prerequisite : existing classifier in model. + * - Add a public constant attribute (static, final) + */ + @Test + public void testAddConstant() { + System.out.println("addConstant"); + JavaBuilder builder = new JavaBuilder("TestModel"); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + ObjectModelAttribute constant = builder.addConstant(classifier, "GENDER_MALE", "boolean", "true", + ObjectModelModifier.PUBLIC); + + assertTrue(constant.isFinal()); + assertTrue(constant.isStatic()); + } + + /** + * Test of addAttribute method, of class JavaBuilder. + * Check imports on adding attribute : imports added on type and value. + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testAddAttribute() + */ + @Test + public void testAddAttribute() { + System.out.println("addAttribute"); + JavaBuilder builder = new JavaBuilder("TestModel"); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + builder.addAttribute(classifier, "firstName", "java.lang.String", "", + ObjectModelModifier.PUBLIC); + + builder.addAttribute(classifier, "roles", "java.util.List<org.chorem.bonzoms.Role>", + "new java.util.ArrayList<org.chorem.bonzoms.Role>()", + ObjectModelModifier.PRIVATE, ObjectModelModifier.STATIC); + + // Check imports + ImportsManagerExtension ext = builder.getModel().getExtension( + ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); + + List<String> imports = ext.getImports(classifier); + assertEquals(2, imports.size()); // no imports for org.chorem.bonzoms.Role and java.lang.String + assertTrue(imports.contains("java.util.ArrayList")); + assertTrue(imports.contains("java.util.List")); + } + + /** + * Test of addAttribute method, of class JavaBuilder. + * Prerequisite : existing classifier in model. + * - Add an attribute from an existing one + */ + @Test + public void testAddAttributeObjectModelClassifierObjectModelAttribute() { + System.out.println("addAttribute"); + JavaBuilder builder = new JavaBuilder("modelName"); + + ObjectModelAttributeImpl attribute = new ObjectModelAttributeImpl(); + attribute.setName("name"); + attribute.setType("java.lang.String"); + attribute.setVisibility("public"); + attribute.setStatic(false); + attribute.setFinal(true); + attribute.setDefaultValue("\"\""); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + ObjectModelAttribute result = builder.addAttribute(classifier, attribute); + + assertNotSame(attribute, result); + } + + /** + * Test of addConstructor method, of class JavaBuilder. + * Prerequisite : existing class in model. + * - Add a constructor to an existing class. + * NOTE : operation.getReturnType doesn't get the good type (ie. "void") + */ + @Test + public void testAddConstructor() { + System.out.println("addConstructor"); + JavaBuilder builder = new JavaBuilder("modelName"); + + ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms"); + + ObjectModelOperation operation = builder.addConstructor(clazz, ObjectModelModifier.PUBLIC); + assertNotNull(operation); + assertEquals(operation.getName(), "Person"); + assertNull(operation.getReturnParameter()); + assertFalse(operation.isAbstract()); + } + + /** + * Test of addOperation method, of class JavaBuilder. + * Check imports on adding operation : returnType of the operation + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testAddOperation() + */ + @Test + public void testAddOperation() { + System.out.println("addOperation"); + + JavaBuilder builder = new JavaBuilder("modelName"); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + ObjectModelOperation result = builder.addOperation(classifier, + "methodName", "java.util.List<java.lang.String>", ObjectModelModifier.PUBLIC); + + result = builder.addOperation(classifier, "addPropertyChangeListener", null, + ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT); + + // Check imports + ImportsManagerExtension ext = builder.getModel().getExtension( + ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); + + List<String> imports = ext.getImports(classifier); + assertEquals(1, imports.size()); + assertTrue(imports.contains("java.util.List")); + } + + /** + * Test of addParameter method, of class JavaBuilder. + * Check imports on adding parameter : type of the parameter + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testAddParameter() + */ + @Test + public void testAddParameter() { + System.out.println("addParameter"); + + JavaBuilder builder = new JavaBuilder("modelName"); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", + ObjectModelModifier.PUBLIC); + + builder.addParameter(operation, "java.lang.String", "name"); + + // Check imports + ImportsManagerExtension ext = builder.getModel().getExtension( + ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); + + List<String> imports = ext.getImports(classifier); + assertEquals(0, imports.size()); + + } + + /** + * Test of addException method, of class JavaBuilder. + * Check imports on adding exception : exception name + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testAddException() + */ + @Test + public void testAddException() { + System.out.println("addException"); + + JavaBuilder builder = new JavaBuilder("modelName"); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", + ObjectModelModifier.PUBLIC); + + builder.addException(operation, "java.lang.IllegalArgumentException"); + + // Check imports + ImportsManagerExtension ext = builder.getModel().getExtension( + ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); + + List<String> imports = ext.getImports(classifier); + assertEquals(0, imports.size()); + } + + /** + * Test of setOperationBody method, of class JavaBuilder. + * No body code for an abstract operation : throw an IllegalArgumentException + * @see org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest#testSetOperationBody() + */ + @Test + public void testSetOperationBody() { + System.out.println("setOperationBody"); + + JavaBuilder builder = new JavaBuilder("modelName"); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", + ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT); + + try { + builder.setOperationBody(operation, "this.name = name"); + } catch (Exception eee) { + assertEquals(IllegalArgumentException.class, eee.getClass()); + System.out.println("expected exception : " + eee.getMessage()); + } + } + +} Deleted: trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtensionTest.java =================================================================== --- branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtensionTest.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtensionTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,125 +0,0 @@ -/* - * *##% - * EUGene :: EUGene - * Copyright (C) 2004 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%* - */ - -package org.nuiton.eugene.models.object.xml; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.nuiton.eugene.models.object.ObjectModelInterface; -import static org.junit.Assert.*; - -/** - * ExternalCacheExtensionTest - * - * Created: 2 nov. 2009 - * - * @author fdesbois - * @version $Revision$ - * - * Mise a jour: $Date$ - * par : $Author$ - */ -public class ExternalCacheExtensionTest { - - public ExternalCacheExtensionTest() { - } - - @BeforeClass - public static void setUpClass() throws Exception { - } - - @AfterClass - public static void tearDownClass() throws Exception { - } - - @Before - public void setUp() { - } - - @After - public void tearDown() { - } - - /** - * Test of getCache method, of class ExternalCacheExtension. - * Prerequisite : Existing model - * - Add an external interface to cache - * - No double add, get the existing one - */ - @Test - public void testGetCache() { - System.out.println("getCache"); - - ObjectModelImpl model = new ObjectModelImpl(); - model.setName("TestModel"); - - ObjectModelImplRef refInterface = new ObjectModelImplRef(); - refInterface.setName("java.io.Serializable"); - - // Creation if not exist - ExternalCacheExtension cache = - model.getExtension(ExternalCacheExtension.OBJECTMODEL_EXTENSION, ExternalCacheExtension.class); - - ObjectModelInterface interfacez = - cache.getCache(refInterface, ObjectModelInterfaceImpl.class); - - assertNotNull(interfacez); - - ObjectModelInterface interfacez2 = - cache.getCache(refInterface, ObjectModelInterfaceImpl.class); - - assertEquals(interfacez, interfacez2); - } - - /** - * Test of addClassifierToCache method, of class ExternalCacheExtension. - * Prerequisite : Existing model - * - Add a classifier which is an interface - * - The interface getting is the same as the first added classifier - */ - @Test - public void testAddClassifierToCache() { - System.out.println("addClassifierToCache"); - - ObjectModelImpl model = new ObjectModelImpl(); - model.setName("TestModel"); - - ObjectModelImplRef refInterface = new ObjectModelImplRef(); - refInterface.setName("java.io.Serializable"); - - ObjectModelClassifierImpl classifier = new ObjectModelInterfaceImpl(); - - ExternalCacheExtension cache = - model.getExtension(ExternalCacheExtension.OBJECTMODEL_EXTENSION, ExternalCacheExtension.class); - - cache.addClassifierToCache(refInterface, classifier); - - assertEquals(classifier.getQualifiedName(), "java.io.Serializable"); - - ObjectModelInterfaceImpl interfacez = cache.getCache(refInterface, ObjectModelInterfaceImpl.class); - - assertEquals(interfacez, classifier); - } - -} Copied: trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtensionTest.java (from rev 754, branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtensionTest.java) =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtensionTest.java (rev 0) +++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtensionTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,125 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ + +package org.nuiton.eugene.models.object.xml; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.nuiton.eugene.models.object.ObjectModelInterface; +import static org.junit.Assert.*; + +/** + * ExternalCacheExtensionTest + * + * Created: 2 nov. 2009 + * + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class ExternalCacheExtensionTest { + + public ExternalCacheExtensionTest() { + } + + @BeforeClass + public static void setUpClass() throws Exception { + } + + @AfterClass + public static void tearDownClass() throws Exception { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + /** + * Test of getCache method, of class ExternalCacheExtension. + * Prerequisite : Existing model + * - Add an external interface to cache + * - No double add, get the existing one + */ + @Test + public void testGetCache() { + System.out.println("getCache"); + + ObjectModelImpl model = new ObjectModelImpl(); + model.setName("TestModel"); + + ObjectModelImplRef refInterface = new ObjectModelImplRef(); + refInterface.setName("java.io.Serializable"); + + // Creation if not exist + ExternalCacheExtension cache = + model.getExtension(ExternalCacheExtension.OBJECTMODEL_EXTENSION, ExternalCacheExtension.class); + + ObjectModelInterface interfacez = + cache.getCache(refInterface, ObjectModelInterfaceImpl.class); + + assertNotNull(interfacez); + + ObjectModelInterface interfacez2 = + cache.getCache(refInterface, ObjectModelInterfaceImpl.class); + + assertEquals(interfacez, interfacez2); + } + + /** + * Test of addClassifierToCache method, of class ExternalCacheExtension. + * Prerequisite : Existing model + * - Add a classifier which is an interface + * - The interface getting is the same as the first added classifier + */ + @Test + public void testAddClassifierToCache() { + System.out.println("addClassifierToCache"); + + ObjectModelImpl model = new ObjectModelImpl(); + model.setName("TestModel"); + + ObjectModelImplRef refInterface = new ObjectModelImplRef(); + refInterface.setName("java.io.Serializable"); + + ObjectModelClassifierImpl classifier = new ObjectModelInterfaceImpl(); + + ExternalCacheExtension cache = + model.getExtension(ExternalCacheExtension.OBJECTMODEL_EXTENSION, ExternalCacheExtension.class); + + cache.addClassifierToCache(refInterface, classifier); + + assertEquals(classifier.getQualifiedName(), "java.io.Serializable"); + + ObjectModelInterfaceImpl interfacez = cache.getCache(refInterface, ObjectModelInterfaceImpl.class); + + assertEquals(interfacez, classifier); + } + +} Deleted: trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderTest.java =================================================================== --- branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderTest.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,443 +0,0 @@ -/* - * *##% - * EUGene :: EUGene - * Copyright (C) 2004 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%* - */ - -package org.nuiton.eugene.models.object.xml; - -import java.util.Iterator; -import java.util.List; -import java.util.Set; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.nuiton.eugene.models.object.ObjectModel; -import static org.junit.Assert.*; -import org.nuiton.eugene.models.object.ObjectModelAssociationClass; -import org.nuiton.eugene.models.object.ObjectModelAttribute; -import org.nuiton.eugene.models.object.ObjectModelClass; -import org.nuiton.eugene.models.object.ObjectModelClassifier; -import org.nuiton.eugene.models.object.ObjectModelElement; -import org.nuiton.eugene.models.object.ObjectModelModifier; -import org.nuiton.eugene.models.object.ObjectModelOperation; -import org.nuiton.eugene.models.object.ObjectModelParameter; - -/** - * ObjectModelBuilder - * - * Created: 3 nov. 2009 - * - * @author fdesbois - * @version $Revision$ - * - * Mise a jour: $Date$ - * par : $Author$ - */ -public class ObjectModelBuilderTest { - - public ObjectModelBuilderTest() { - } - - @BeforeClass - public static void setUpClass() throws Exception { - } - - @AfterClass - public static void tearDownClass() throws Exception { - } - - @Before - public void setUp() { - } - - @After - public void tearDown() { - } - - /** - * Test of getModel method, of class ObjectModelBuilder. - * Prerequisite : instanciation of ObjectModelBuilder. - * - ObjectModel created in ObjectModelBuilder constructor. ObjectModel name will be set. - */ - @Test - public void testGetModel() { - System.out.println("getModel"); - - ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); - - assertNotNull(builder.getModel()); - assertEquals("TestModel", builder.getModel().getName()); - } - - /** - * Test of addTagValue method, of class ObjectModelBuilder. - * Prerequisite : none. - * - Add a tag value to the model - * - Add a tag value to an element - */ - @Test - public void testAddTagValue() { - System.out.println("addTagValue"); - - ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); - - builder.addTagValue("fr.ifremer.isisfish.types.Month", - "fr.ifremer.isisfish.types.hibernate.MonthType"); - - // model.tagvalue.fr.ifremer.isisfish.types.Month=fr.ifremer.isisfish.types.hibernate.MonthType - ObjectModel model = builder.getModel(); - assertEquals("fr.ifremer.isisfish.types.hibernate.MonthType", - model.getTagValue("fr.ifremer.isisfish.types.Month")); - - // fr.isisfish.entities.Population.attribute.name.tagvalue.pk=topiaId - ObjectModelClass clazz = builder.createClass("Population", "fr.isisfish.entities"); - ObjectModelAttribute attr = builder.addAttribute(clazz, "name", "java.lang.String"); - builder.addTagValue(attr, "pk", "topiaId"); - - assertEquals("topiaId", attr.getTagValue("pk")); - } - - /** - * Test of createClass method, of class ObjectModelBuilder. - * Prerequisite : none. - * - Create a class with name and packageName. Qualified name of the class = name + packageName. - */ - @Test - public void testCreateClass() { - System.out.println("createClass"); - - ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); - - ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms"); - - assertNotNull(clazz); - assertEquals("Person", clazz.getName()); - assertEquals("org.chorem.bonzoms", clazz.getPackageName()); - assertEquals("org.chorem.bonzoms.Person", clazz.getQualifiedName()); - } - - /** - * Test of createInterface method, of class ObjectModelBuilder. - */ - //@Test - public void testCreateInterface() { - System.out.println("createInterface"); - } - - /** - * Test of addAttribute method, of class ObjectModelBuilder. - * Prerequisite : existing classifier in model. - * - Add an attribute with no default value - */ - @Test - public void testAddAttributeWithoutDefaultValue() { - System.out.println("addAttribute"); - ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); - ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - - ObjectModelAttribute attribute = builder.addAttribute(classifier, "firstName", "java.lang.String"); - assertEquals("", attribute.getDefaultValue()); - } - - /** - * Test of addAttribute method, of class ObjectModelBuilder. - * Prerequisite : existing classifier in model. - * - Add a public attribute without default value - * - Add a private static attribute with default value - */ - @Test - public void testAddAttribute() { - System.out.println("addAttribute"); - ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); - - ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - - ObjectModelAttribute attribute = builder.addAttribute(classifier, "firstName", "java.lang.String", "", - ObjectModelModifier.PUBLIC); - - assertNotNull(attribute); - assertEquals("firstName", attribute.getName()); - assertEquals("java.lang.String", attribute.getType()); - assertEquals("public", attribute.getVisibility()); - assertEquals("", attribute.getDefaultValue()); - assertFalse(attribute.isFinal()); - assertFalse(attribute.isStatic()); - - attribute = builder.addAttribute(classifier, "roles", "java.lang.List<org.chorem.bonzoms.Role>", - "new java.lang.ArrayList<org.chorem.bonzoms.Role>()", - ObjectModelModifier.PRIVATE, ObjectModelModifier.STATIC); - - assertEquals("new java.lang.ArrayList<org.chorem.bonzoms.Role>()", attribute.getDefaultValue()); - assertTrue(attribute.isStatic()); - } - - /** - * Test of addOperation method, of class ObjectModelBuilder. - * Prerequisite : existing classifier in model. - * - Add simple public method - * - Add abstract method - */ - @Test - public void testAddOperation() { - System.out.println("addOperation"); - ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); - - ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - - ObjectModelOperation result = builder.addOperation(classifier, - "methodName", "java.util.List<java.lang.String>", ObjectModelModifier.PUBLIC); - assertNotNull(result); - assertEquals(result.getName(), "methodName"); - assertEquals(result.getReturnType(), "java.util.List<java.lang.String>"); - assertEquals(result.getVisibility(), "public"); - assertFalse(result.isAbstract()); - - result = builder.addOperation(classifier, "addPropertyChangeListener", "void", - ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT); - assertTrue(result.isAbstract()); - } - - /** - * Test of setOperationBody method, of class ObjectModelBuilder. - * Prerequisite : existing classifier in model and operation associated to this classifier. - * - Add a body to an existing operation in a classifier - */ - @Test - public void testSetOperationBody() { - System.out.println("setOperationBody"); - - ObjectModelBuilder builder = new ObjectModelBuilder("modelName"); - - ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - - ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", - ObjectModelModifier.PUBLIC); - - builder.setOperationBody(operation, "this.name = name"); - assertNotNull(operation.getBodyCode()); - assertEquals(operation.getBodyCode(), "this.name = name"); - } - - /** - * Test of addInterface method, of class ObjectModelBuilder. - * Prerequisite : existing classifier in model. - * - Add an interface not included in the model to a classifier. - * - TODO : Add an existing interface in the model to a classfier. - */ - @Test - public void testAddInterface() { - System.out.println("addInterface"); - - ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); - - ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - - String interfaceQualifiedName = "java.io.Serializable"; - builder.addInterface(classifier, interfaceQualifiedName); - - assertNotNull(classifier.getInterfaces()); - assertEquals(classifier.getInterfaces().size(), 1); - } - - /** - * Test of addSuperclass method, of class ObjectModelBuilder. - * Prerequisite : existing classifier in model. - * - Add a superclass not included in the model to a classifier. - * - TODO : Add an existing superclass in the model to a classfier. - */ - @Test - public void testAddSuperclass() { - System.out.println("addSuperclass"); - ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); - - ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms"); - - String superclassQualifiedName = "org.chorem.bonzoms.Party"; - - builder.addSuperclass(clazz, superclassQualifiedName); - assertEquals(1, clazz.getSuperclasses().size()); - } - - /** - * Test of addParameter method, of class ObjectModelBuilder. - * Prerequisite : existing classifier in model and operation associated to this classifier. - * - Add a parameter to an existing operation in a classifier - */ - @Test - public void testAddParameter() { - System.out.println("addParameter"); - - ObjectModelBuilder builder = new ObjectModelBuilder("modelName"); - - ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - - ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", - ObjectModelModifier.PUBLIC); - - ObjectModelParameter param = builder.addParameter(operation, "java.lang.String", "name"); - assertNotNull(param); - assertEquals(param.getName(), "name"); - assertEquals(param.getType(), "java.lang.String"); - - List<ObjectModelParameter> listParams = (List<ObjectModelParameter>)operation.getParameters(); - ObjectModelParameter param1 = listParams.get(0); - assertEquals(param1, param); - } - - /** - * Test of addException method, of class ObjectModelBuilder. - * Prerequisite : existing classifier in model and operation associated to this classifier. - * - Add an exception to an existing operation in a classifier - */ - @Test - public void testAddException() { - System.out.println("addException"); - - ObjectModelBuilder builder = new ObjectModelBuilder("modelName"); - - ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - - ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", - ObjectModelModifier.PUBLIC); - - builder.addException(operation, "java.lang.IllegalArgumentException"); - Set<String> exceptions = operation.getExceptions(); - assertNotNull(exceptions); - assertEquals(exceptions.size(), 1); - Iterator<String> it = exceptions.iterator(); - assertNotNull(it.hasNext()); - assertEquals(it.next(), "java.lang.IllegalArgumentException"); - } - - /** - * Test of setDocumentation method, of class ObjectModelBuilder. - */ - //@Test - public void testSetDocumentation() { - System.out.println("setDocumentation"); - } - - /** - * Test of addAssociation method, of class ObjectModelBuilder. - * Prerequisite : two existing classifier in model. - * - Add an ordered navigable composite association 1..1 from Poll to Vote - */ - @Test - public void testAddAssociation() { - System.out.println("addAssociation"); - - ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); - - ObjectModelClass classA = builder.createClass("Poll", "org.chorem.pollen.business.persistence"); - - ObjectModelClass classB = builder.createClass("Vote", "org.chorem.pollen.business.persistence"); - - ObjectModelAttribute assoc = builder.addAssociation(classA, classB, "poll", 1, 1, - ObjectModelModifier.COMPOSITE, ObjectModelModifier.NAVIGABLE, ObjectModelModifier.ORDERED); - - assertNotNull(assoc); - assertTrue(assoc.isNavigable()); - assertTrue(assoc.isComposite()); - assertTrue(assoc.isOrdered()); - assertEquals("poll", assoc.getName()); - assertEquals(1, assoc.getMinMultiplicity()); - assertEquals(1, assoc.getMaxMultiplicity()); - assertEquals("org.chorem.pollen.business.persistence.Vote", assoc.getType()); - - } - - /** - * Test of addReverseAssociation method, of class ObjectModelBuilder. - * Prerequisite : two existing classifier in model and attribute association existing for one of the - * classifier. - * - Add a non navigable association 0..* from Vote to Poll - */ - @Test - public void testAddReverseAssociation() { - System.out.println("addReverseAssociation"); - - ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); - - ObjectModelClass classA = builder.createClass("Poll", "org.chorem.pollen.business.persistence"); - - ObjectModelClass classB = builder.createClass("Vote", "org.chorem.pollen.business.persistence"); - - ObjectModelAttribute assocA = builder.addAssociation(classA, classB, "poll", 1, 1, - ObjectModelModifier.COMPOSITE, ObjectModelModifier.NAVIGABLE, ObjectModelModifier.ORDERED); - - ObjectModelAttribute assocB = builder.addReverseAssociation(assocA, "vote", 0, -1); - - assertEquals(assocA, assocB.getReverseAttribute()); - assertEquals(assocB, assocA.getReverseAttribute()); - } - - /** - * Test of createAssociationClass method, of class ObjectModelBuilder. - * Prerequisite : two existing classifier in model and attribute association existing for both of the - * classifiers. - * - Add an association class VoteToChoice between Vote and Choice classes - */ - @Test - public void testCreateAssociationClass() { - System.out.println("createAssociationClass"); - - ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); - - ObjectModelClass classA = builder.createClass("Vote", "org.chorem.pollen.business.persistence"); - - ObjectModelClass classB = builder.createClass("Choice", "org.chorem.pollen.business.persistence"); - - ObjectModelAttribute assocA = builder.addAssociation(classA, classB, "vote", 0, -1, - ObjectModelModifier.NAVIGABLE, ObjectModelModifier.ORDERED); - - ObjectModelAttribute assocB = builder.addReverseAssociation(assocA, "choice", 1, -1, - ObjectModelModifier.NAVIGABLE, ObjectModelModifier.ORDERED); - - ObjectModelAssociationClass assocClass = builder.createAssociationClass("VoteToChoice", - "org.chorem.pollen.business.persistence", assocA, assocB); - - List<ObjectModelClassifier> classifiers = assocClass.getParticipantsClassifiers(); - - assertEquals(2, classifiers.size()); - assertTrue(classifiers.contains(classA)); - assertTrue(classifiers.contains(classB)); - } - - /** - * Test of addStereotype method, of class ObjectModelBuilder. - */ - @Test - public void testAddStereotype() { - System.out.println("addStereotype"); - - ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); - - ObjectModelClass classA = builder.createClass("Vote", "org.chorem.pollen.business.persistence"); - - assertEquals(0, classA.getStereotypes().size()); - - builder.addStereotype(classA, "entity"); - - assertEquals(1, classA.getStereotypes().size()); - - } - -} Copied: trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderTest.java (from rev 754, branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderTest.java) =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderTest.java (rev 0) +++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,443 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ + +package org.nuiton.eugene.models.object.xml; + +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.nuiton.eugene.models.object.ObjectModel; +import static org.junit.Assert.*; +import org.nuiton.eugene.models.object.ObjectModelAssociationClass; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelElement; +import org.nuiton.eugene.models.object.ObjectModelModifier; +import org.nuiton.eugene.models.object.ObjectModelOperation; +import org.nuiton.eugene.models.object.ObjectModelParameter; + +/** + * ObjectModelBuilder + * + * Created: 3 nov. 2009 + * + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class ObjectModelBuilderTest { + + public ObjectModelBuilderTest() { + } + + @BeforeClass + public static void setUpClass() throws Exception { + } + + @AfterClass + public static void tearDownClass() throws Exception { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + /** + * Test of getModel method, of class ObjectModelBuilder. + * Prerequisite : instanciation of ObjectModelBuilder. + * - ObjectModel created in ObjectModelBuilder constructor. ObjectModel name will be set. + */ + @Test + public void testGetModel() { + System.out.println("getModel"); + + ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); + + assertNotNull(builder.getModel()); + assertEquals("TestModel", builder.getModel().getName()); + } + + /** + * Test of addTagValue method, of class ObjectModelBuilder. + * Prerequisite : none. + * - Add a tag value to the model + * - Add a tag value to an element + */ + @Test + public void testAddTagValue() { + System.out.println("addTagValue"); + + ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); + + builder.addTagValue("fr.ifremer.isisfish.types.Month", + "fr.ifremer.isisfish.types.hibernate.MonthType"); + + // model.tagvalue.fr.ifremer.isisfish.types.Month=fr.ifremer.isisfish.types.hibernate.MonthType + ObjectModel model = builder.getModel(); + assertEquals("fr.ifremer.isisfish.types.hibernate.MonthType", + model.getTagValue("fr.ifremer.isisfish.types.Month")); + + // fr.isisfish.entities.Population.attribute.name.tagvalue.pk=topiaId + ObjectModelClass clazz = builder.createClass("Population", "fr.isisfish.entities"); + ObjectModelAttribute attr = builder.addAttribute(clazz, "name", "java.lang.String"); + builder.addTagValue(attr, "pk", "topiaId"); + + assertEquals("topiaId", attr.getTagValue("pk")); + } + + /** + * Test of createClass method, of class ObjectModelBuilder. + * Prerequisite : none. + * - Create a class with name and packageName. Qualified name of the class = name + packageName. + */ + @Test + public void testCreateClass() { + System.out.println("createClass"); + + ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); + + ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms"); + + assertNotNull(clazz); + assertEquals("Person", clazz.getName()); + assertEquals("org.chorem.bonzoms", clazz.getPackageName()); + assertEquals("org.chorem.bonzoms.Person", clazz.getQualifiedName()); + } + + /** + * Test of createInterface method, of class ObjectModelBuilder. + */ + //@Test + public void testCreateInterface() { + System.out.println("createInterface"); + } + + /** + * Test of addAttribute method, of class ObjectModelBuilder. + * Prerequisite : existing classifier in model. + * - Add an attribute with no default value + */ + @Test + public void testAddAttributeWithoutDefaultValue() { + System.out.println("addAttribute"); + ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + ObjectModelAttribute attribute = builder.addAttribute(classifier, "firstName", "java.lang.String"); + assertEquals("", attribute.getDefaultValue()); + } + + /** + * Test of addAttribute method, of class ObjectModelBuilder. + * Prerequisite : existing classifier in model. + * - Add a public attribute without default value + * - Add a private static attribute with default value + */ + @Test + public void testAddAttribute() { + System.out.println("addAttribute"); + ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + ObjectModelAttribute attribute = builder.addAttribute(classifier, "firstName", "java.lang.String", "", + ObjectModelModifier.PUBLIC); + + assertNotNull(attribute); + assertEquals("firstName", attribute.getName()); + assertEquals("java.lang.String", attribute.getType()); + assertEquals("public", attribute.getVisibility()); + assertEquals("", attribute.getDefaultValue()); + assertFalse(attribute.isFinal()); + assertFalse(attribute.isStatic()); + + attribute = builder.addAttribute(classifier, "roles", "java.lang.List<org.chorem.bonzoms.Role>", + "new java.lang.ArrayList<org.chorem.bonzoms.Role>()", + ObjectModelModifier.PRIVATE, ObjectModelModifier.STATIC); + + assertEquals("new java.lang.ArrayList<org.chorem.bonzoms.Role>()", attribute.getDefaultValue()); + assertTrue(attribute.isStatic()); + } + + /** + * Test of addOperation method, of class ObjectModelBuilder. + * Prerequisite : existing classifier in model. + * - Add simple public method + * - Add abstract method + */ + @Test + public void testAddOperation() { + System.out.println("addOperation"); + ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + ObjectModelOperation result = builder.addOperation(classifier, + "methodName", "java.util.List<java.lang.String>", ObjectModelModifier.PUBLIC); + assertNotNull(result); + assertEquals(result.getName(), "methodName"); + assertEquals(result.getReturnType(), "java.util.List<java.lang.String>"); + assertEquals(result.getVisibility(), "public"); + assertFalse(result.isAbstract()); + + result = builder.addOperation(classifier, "addPropertyChangeListener", "void", + ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT); + assertTrue(result.isAbstract()); + } + + /** + * Test of setOperationBody method, of class ObjectModelBuilder. + * Prerequisite : existing classifier in model and operation associated to this classifier. + * - Add a body to an existing operation in a classifier + */ + @Test + public void testSetOperationBody() { + System.out.println("setOperationBody"); + + ObjectModelBuilder builder = new ObjectModelBuilder("modelName"); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", + ObjectModelModifier.PUBLIC); + + builder.setOperationBody(operation, "this.name = name"); + assertNotNull(operation.getBodyCode()); + assertEquals(operation.getBodyCode(), "this.name = name"); + } + + /** + * Test of addInterface method, of class ObjectModelBuilder. + * Prerequisite : existing classifier in model. + * - Add an interface not included in the model to a classifier. + * - TODO : Add an existing interface in the model to a classfier. + */ + @Test + public void testAddInterface() { + System.out.println("addInterface"); + + ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + String interfaceQualifiedName = "java.io.Serializable"; + builder.addInterface(classifier, interfaceQualifiedName); + + assertNotNull(classifier.getInterfaces()); + assertEquals(classifier.getInterfaces().size(), 1); + } + + /** + * Test of addSuperclass method, of class ObjectModelBuilder. + * Prerequisite : existing classifier in model. + * - Add a superclass not included in the model to a classifier. + * - TODO : Add an existing superclass in the model to a classfier. + */ + @Test + public void testAddSuperclass() { + System.out.println("addSuperclass"); + ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); + + ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms"); + + String superclassQualifiedName = "org.chorem.bonzoms.Party"; + + builder.addSuperclass(clazz, superclassQualifiedName); + assertEquals(1, clazz.getSuperclasses().size()); + } + + /** + * Test of addParameter method, of class ObjectModelBuilder. + * Prerequisite : existing classifier in model and operation associated to this classifier. + * - Add a parameter to an existing operation in a classifier + */ + @Test + public void testAddParameter() { + System.out.println("addParameter"); + + ObjectModelBuilder builder = new ObjectModelBuilder("modelName"); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", + ObjectModelModifier.PUBLIC); + + ObjectModelParameter param = builder.addParameter(operation, "java.lang.String", "name"); + assertNotNull(param); + assertEquals(param.getName(), "name"); + assertEquals(param.getType(), "java.lang.String"); + + List<ObjectModelParameter> listParams = (List<ObjectModelParameter>)operation.getParameters(); + ObjectModelParameter param1 = listParams.get(0); + assertEquals(param1, param); + } + + /** + * Test of addException method, of class ObjectModelBuilder. + * Prerequisite : existing classifier in model and operation associated to this classifier. + * - Add an exception to an existing operation in a classifier + */ + @Test + public void testAddException() { + System.out.println("addException"); + + ObjectModelBuilder builder = new ObjectModelBuilder("modelName"); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", + ObjectModelModifier.PUBLIC); + + builder.addException(operation, "java.lang.IllegalArgumentException"); + Set<String> exceptions = operation.getExceptions(); + assertNotNull(exceptions); + assertEquals(exceptions.size(), 1); + Iterator<String> it = exceptions.iterator(); + assertNotNull(it.hasNext()); + assertEquals(it.next(), "java.lang.IllegalArgumentException"); + } + + /** + * Test of setDocumentation method, of class ObjectModelBuilder. + */ + //@Test + public void testSetDocumentation() { + System.out.println("setDocumentation"); + } + + /** + * Test of addAssociation method, of class ObjectModelBuilder. + * Prerequisite : two existing classifier in model. + * - Add an ordered navigable composite association 1..1 from Poll to Vote + */ + @Test + public void testAddAssociation() { + System.out.println("addAssociation"); + + ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); + + ObjectModelClass classA = builder.createClass("Poll", "org.chorem.pollen.business.persistence"); + + ObjectModelClass classB = builder.createClass("Vote", "org.chorem.pollen.business.persistence"); + + ObjectModelAttribute assoc = builder.addAssociation(classA, classB, "poll", 1, 1, + ObjectModelModifier.COMPOSITE, ObjectModelModifier.NAVIGABLE, ObjectModelModifier.ORDERED); + + assertNotNull(assoc); + assertTrue(assoc.isNavigable()); + assertTrue(assoc.isComposite()); + assertTrue(assoc.isOrdered()); + assertEquals("poll", assoc.getName()); + assertEquals(1, assoc.getMinMultiplicity()); + assertEquals(1, assoc.getMaxMultiplicity()); + assertEquals("org.chorem.pollen.business.persistence.Vote", assoc.getType()); + + } + + /** + * Test of addReverseAssociation method, of class ObjectModelBuilder. + * Prerequisite : two existing classifier in model and attribute association existing for one of the + * classifier. + * - Add a non navigable association 0..* from Vote to Poll + */ + @Test + public void testAddReverseAssociation() { + System.out.println("addReverseAssociation"); + + ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); + + ObjectModelClass classA = builder.createClass("Poll", "org.chorem.pollen.business.persistence"); + + ObjectModelClass classB = builder.createClass("Vote", "org.chorem.pollen.business.persistence"); + + ObjectModelAttribute assocA = builder.addAssociation(classA, classB, "poll", 1, 1, + ObjectModelModifier.COMPOSITE, ObjectModelModifier.NAVIGABLE, ObjectModelModifier.ORDERED); + + ObjectModelAttribute assocB = builder.addReverseAssociation(assocA, "vote", 0, -1); + + assertEquals(assocA, assocB.getReverseAttribute()); + assertEquals(assocB, assocA.getReverseAttribute()); + } + + /** + * Test of createAssociationClass method, of class ObjectModelBuilder. + * Prerequisite : two existing classifier in model and attribute association existing for both of the + * classifiers. + * - Add an association class VoteToChoice between Vote and Choice classes + */ + @Test + public void testCreateAssociationClass() { + System.out.println("createAssociationClass"); + + ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); + + ObjectModelClass classA = builder.createClass("Vote", "org.chorem.pollen.business.persistence"); + + ObjectModelClass classB = builder.createClass("Choice", "org.chorem.pollen.business.persistence"); + + ObjectModelAttribute assocA = builder.addAssociation(classA, classB, "vote", 0, -1, + ObjectModelModifier.NAVIGABLE, ObjectModelModifier.ORDERED); + + ObjectModelAttribute assocB = builder.addReverseAssociation(assocA, "choice", 1, -1, + ObjectModelModifier.NAVIGABLE, ObjectModelModifier.ORDERED); + + ObjectModelAssociationClass assocClass = builder.createAssociationClass("VoteToChoice", + "org.chorem.pollen.business.persistence", assocA, assocB); + + List<ObjectModelClassifier> classifiers = assocClass.getParticipantsClassifiers(); + + assertEquals(2, classifiers.size()); + assertTrue(classifiers.contains(classA)); + assertTrue(classifiers.contains(classB)); + } + + /** + * Test of addStereotype method, of class ObjectModelBuilder. + */ + @Test + public void testAddStereotype() { + System.out.println("addStereotype"); + + ObjectModelBuilder builder = new ObjectModelBuilder("TestModel"); + + ObjectModelClass classA = builder.createClass("Vote", "org.chorem.pollen.business.persistence"); + + assertEquals(0, classA.getStereotypes().size()); + + builder.addStereotype(classA, "entity"); + + assertEquals(1, classA.getStereotypes().size()); + + } + +} Deleted: trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelImplTest.java =================================================================== --- branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelImplTest.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelImplTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,380 +0,0 @@ -/* - * *##% - * EUGene :: EUGene - * Copyright (C) 2004 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%* - */ - -package org.nuiton.eugene.models.object.xml; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.nuiton.eugene.java.ImportsManagerExtension; -import static org.junit.Assert.*; - -/** - * - * @author fdesbois - */ -public class ObjectModelImplTest { - - private static final Log log = LogFactory.getLog(ObjectModelImplTest.class); - - public ObjectModelImplTest() { - } - - @BeforeClass - public static void setUpClass() throws Exception { - } - - @AfterClass - public static void tearDownClass() throws Exception { - } - - @Before - public void setUp() { - } - - @After - public void tearDown() { - } - -// /** -// * Test of setName method, of class ObjectModelImpl. -// */ -// @Test -// public void testSetName() { -// System.out.println("setName"); -// String name = ""; -// ObjectModelImpl instance = new ObjectModelImpl(); -// instance.setName(name); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of addClass method, of class ObjectModelImpl. -// */ -// @Test -// public void testAddClass() { -// System.out.println("addClass"); -// ObjectModelClassImpl clazz = null; -// ObjectModelImpl instance = new ObjectModelImpl(); -// instance.addClass(clazz); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of addAssociationClass method, of class ObjectModelImpl. -// */ -// @Test -// public void testAddAssociationClass() { -// System.out.println("addAssociationClass"); -// ObjectModelAssociationClassImpl clazz = null; -// ObjectModelImpl instance = new ObjectModelImpl(); -// instance.addAssociationClass(clazz); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of addComment method, of class ObjectModelImpl. -// */ -// @Test -// public void testAddComment() { -// System.out.println("addComment"); -// String comment = ""; -// ObjectModelImpl instance = new ObjectModelImpl(); -// instance.addComment(comment); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of getName method, of class ObjectModelImpl. -// */ -// @Test -// public void testGetName() { -// System.out.println("getName"); -// ObjectModelImpl instance = new ObjectModelImpl(); -// String expResult = ""; -// String result = instance.getName(); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of getClassifiers method, of class ObjectModelImpl. -// */ -// @Test -// public void testGetClassifiers() { -// System.out.println("getClassifiers"); -// ObjectModelImpl instance = new ObjectModelImpl(); -// Collection expResult = null; -// Collection result = instance.getClassifiers(); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of getClassifier method, of class ObjectModelImpl. -// */ -// @Test -// public void testGetClassifier() { -// System.out.println("getClassifier"); -// String qualifiedClassifierName = ""; -// ObjectModelImpl instance = new ObjectModelImpl(); -// ObjectModelClassifier expResult = null; -// ObjectModelClassifier result = instance.getClassifier(qualifiedClassifierName); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of getClasses method, of class ObjectModelImpl. -// */ -// @Test -// public void testGetClasses() { -// System.out.println("getClasses"); -// ObjectModelImpl instance = new ObjectModelImpl(); -// Collection expResult = null; -// Collection result = instance.getClasses(); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of getClass method, of class ObjectModelImpl. -// */ -// @Test -// public void testGetClass() { -// System.out.println("getClass"); -// String qualifiedClassName = ""; -// ObjectModelImpl instance = new ObjectModelImpl(); -// ObjectModelClass expResult = null; -// ObjectModelClass result = instance.getClass(qualifiedClassName); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of hasClass method, of class ObjectModelImpl. -// */ -// @Test -// public void testHasClass() { -// System.out.println("hasClass"); -// String qualifiedClassName = ""; -// ObjectModelImpl instance = new ObjectModelImpl(); -// boolean expResult = false; -// boolean result = instance.hasClass(qualifiedClassName); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of addInterface method, of class ObjectModelImpl. -// */ -// @Test -// public void testAddInterface() { -// System.out.println("addInterface"); -// ObjectModelInterfaceImpl interfacez = null; -// ObjectModelImpl instance = new ObjectModelImpl(); -// instance.addInterface(interfacez); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of getInterface method, of class ObjectModelImpl. -// */ -// @Test -// public void testGetInterface() { -// System.out.println("getInterface"); -// String qualifiedInterfaceName = ""; -// ObjectModelImpl instance = new ObjectModelImpl(); -// ObjectModelInterface expResult = null; -// ObjectModelInterface result = instance.getInterface(qualifiedInterfaceName); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of getInterfaces method, of class ObjectModelImpl. -// */ -// @Test -// public void testGetInterfaces() { -// System.out.println("getInterfaces"); -// ObjectModelImpl instance = new ObjectModelImpl(); -// Collection expResult = null; -// Collection result = instance.getInterfaces(); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of addEnumeration method, of class ObjectModelImpl. -// */ -// @Test -// public void testAddEnumeration() { -// System.out.println("addEnumeration"); -// ObjectModelEnumerationImpl enumeration = null; -// ObjectModelImpl instance = new ObjectModelImpl(); -// instance.addEnumeration(enumeration); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of getEnumerations method, of class ObjectModelImpl. -// */ -// @Test -// public void testGetEnumerations() { -// System.out.println("getEnumerations"); -// ObjectModelImpl instance = new ObjectModelImpl(); -// Collection expResult = null; -// Collection result = instance.getEnumerations(); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of getEnumeration method, of class ObjectModelImpl. -// */ -// @Test -// public void testGetEnumeration() { -// System.out.println("getEnumeration"); -// String qualifiedEnumerationName = ""; -// ObjectModelImpl instance = new ObjectModelImpl(); -// ObjectModelEnumeration expResult = null; -// ObjectModelEnumeration result = instance.getEnumeration(qualifiedEnumerationName); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of getComments method, of class ObjectModelImpl. -// */ -// @Test -// public void testGetComments() { -// System.out.println("getComments"); -// ObjectModelImpl instance = new ObjectModelImpl(); -// List expResult = null; -// List result = instance.getComments(); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of mergeClassifiers method, of class ObjectModelImpl. -// */ -// @Test -// public void testMergeClassifiers() { -// System.out.println("mergeClassifiers"); -// ObjectModelClassifierImpl initialClazzifier = null; -// ObjectModelClassifierImpl additionalClazzifier = null; -// ObjectModelImpl instance = new ObjectModelImpl(); -// instance.mergeClassifiers(initialClazzifier, additionalClazzifier); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of addTagValue method, of class ObjectModelImpl. -// */ -// @Test -// public void testAddTagValue() { -// System.out.println("addTagValue"); -// ObjectModelImplTagValue tagValue = null; -// ObjectModelImpl instance = new ObjectModelImpl(); -// ObjectModelImplTagValue expResult = null; -// ObjectModelImplTagValue result = instance.addTagValue(tagValue); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of getTagValues method, of class ObjectModelImpl. -// */ -// @Test -// public void testGetTagValues() { -// System.out.println("getTagValues"); -// ObjectModelImpl instance = new ObjectModelImpl(); -// Map expResult = null; -// Map result = instance.getTagValues(); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } -// -// /** -// * Test of getTagValue method, of class ObjectModelImpl. -// */ -// @Test -// public void testGetTagValue() { -// System.out.println("getTagValue"); -// String tagValue = ""; -// ObjectModelImpl instance = new ObjectModelImpl(); -// String expResult = ""; -// String result = instance.getTagValue(tagValue); -// assertEquals(expResult, result); -// // TODO review the generated test code and remove the default call to fail. -// fail("The test case is a prototype."); -// } - - /** - * Test of getExtension method, of class ObjectModelImpl. - * - Create and get ImportsManagerExtension - * - No double creation - */ - @Test - public void testGetExtension() { - System.out.println("getExtension"); - - ObjectModelImpl model = new ObjectModelImpl(); - model.setName("TestModel"); - - // Creation if not exist - ImportsManagerExtension result = - model.getExtension(ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); - - assertNotNull(result); - - ImportsManagerExtension result2 = - model.getExtension(ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); - - assertEquals(result, result2); - } - -} Copied: trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelImplTest.java (from rev 754, branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelImplTest.java) =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelImplTest.java (rev 0) +++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelImplTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,380 @@ +/* + * *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ + +package org.nuiton.eugene.models.object.xml; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.nuiton.eugene.java.ImportsManagerExtension; +import static org.junit.Assert.*; + +/** + * + * @author fdesbois + */ +public class ObjectModelImplTest { + + private static final Log log = LogFactory.getLog(ObjectModelImplTest.class); + + public ObjectModelImplTest() { + } + + @BeforeClass + public static void setUpClass() throws Exception { + } + + @AfterClass + public static void tearDownClass() throws Exception { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + +// /** +// * Test of setName method, of class ObjectModelImpl. +// */ +// @Test +// public void testSetName() { +// System.out.println("setName"); +// String name = ""; +// ObjectModelImpl instance = new ObjectModelImpl(); +// instance.setName(name); +// // TODO review the generated test code and remove the default call to fail. +// fail("The test case is a prototype."); +// } +// +// /** +// * Test of addClass method, of class ObjectModelImpl. +// */ +// @Test +// public void testAddClass() { +// System.out.println("addClass"); +// ObjectModelClassImpl clazz = null; +// ObjectModelImpl instance = new ObjectModelImpl(); +// instance.addClass(clazz); +// // TODO review the generated test code and remove the default call to fail. +// fail("The test case is a prototype."); +// } +// +// /** +// * Test of addAssociationClass method, of class ObjectModelImpl. +// */ +// @Test +// public void testAddAssociationClass() { +// System.out.println("addAssociationClass"); +// ObjectModelAssociationClassImpl clazz = null; +// ObjectModelImpl instance = new ObjectModelImpl(); +// instance.addAssociationClass(clazz); +// // TODO review the generated test code and remove the default call to fail. +// fail("The test case is a prototype."); +// } +// +// /** +// * Test of addComment method, of class ObjectModelImpl. +// */ +// @Test +// public void testAddComment() { +// System.out.println("addComment"); +// String comment = ""; +// ObjectModelImpl instance = new ObjectModelImpl(); +// instance.addComment(comment); +// // TODO review the generated test code and remove the default call to fail. +// fail("The test case is a prototype."); +// } +// +// /** +// * Test of getName method, of class ObjectModelImpl. +// */ +// @Test +// public void testGetName() { +// System.out.println("getName"); +// ObjectModelImpl instance = new ObjectModelImpl(); +// String expResult = ""; +// String result = instance.getName(); +// assertEquals(expResult, result); +// // TODO review the generated test code and remove the default call to fail. +// fail("The test case is a prototype."); +// } +// +// /** +// * Test of getClassifiers method, of class ObjectModelImpl. +// */ +// @Test +// public void testGetClassifiers() { +// System.out.println("getClassifiers"); +// ObjectModelImpl instance = new ObjectModelImpl(); +// Collection expResult = null; +// Collection result = instance.getClassifiers(); +// assertEquals(expResult, result); +// // TODO review the generated test code and remove the default call to fail. +// fail("The test case is a prototype."); +// } +// +// /** +// * Test of getClassifier method, of class ObjectModelImpl. +// */ +// @Test +// public void testGetClassifier() { +// System.out.println("getClassifier"); +// String qualifiedClassifierName = ""; +// ObjectModelImpl instance = new ObjectModelImpl(); +// ObjectModelClassifier expResult = null; +// ObjectModelClassifier result = instance.getClassifier(qualifiedClassifierName); +// assertEquals(expResult, result); +// // TODO review the generated test code and remove the default call to fail. +// fail("The test case is a prototype."); +// } +// +// /** +// * Test of getClasses method, of class ObjectModelImpl. +// */ +// @Test +// public void testGetClasses() { +// System.out.println("getClasses"); +// ObjectModelImpl instance = new ObjectModelImpl(); +// Collection expResult = null; +// Collection result = instance.getClasses(); +// assertEquals(expResult, result); +// // TODO review the generated test code and remove the default call to fail. +// fail("The test case is a prototype."); +// } +// +// /** +// * Test of getClass method, of class ObjectModelImpl. +// */ +// @Test +// public void testGetClass() { +// System.out.println("getClass"); +// String qualifiedClassName = ""; +// ObjectModelImpl instance = new ObjectModelImpl(); +// ObjectModelClass expResult = null; +// ObjectModelClass result = instance.getClass(qualifiedClassName); +// assertEquals(expResult, result); +// // TODO review the generated test code and remove the default call to fail. +// fail("The test case is a prototype."); +// } +// +// /** +// * Test of hasClass method, of class ObjectModelImpl. +// */ +// @Test +// public void testHasClass() { +// System.out.println("hasClass"); +// String qualifiedClassName = ""; +// ObjectModelImpl instance = new ObjectModelImpl(); +// boolean expResult = false; +// boolean result = instance.hasClass(qualifiedClassName); +// assertEquals(expResult, result); +// // TODO review the generated test code and remove the default call to fail. +// fail("The test case is a prototype."); +// } +// +// /** +// * Test of addInterface method, of class ObjectModelImpl. +// */ +// @Test +// public void testAddInterface() { +// System.out.println("addInterface"); +// ObjectModelInterfaceImpl interfacez = null; +// ObjectModelImpl instance = new ObjectModelImpl(); +// instance.addInterface(interfacez); +// // TODO review the generated test code and remove the default call to fail. +// fail("The test case is a prototype."); +// } +// +// /** +// * Test of getInterface method, of class ObjectModelImpl. +// */ +// @Test +// public void testGetInterface() { +// System.out.println("getInterface"); +// String qualifiedInterfaceName = ""; +// ObjectModelImpl instance = new ObjectModelImpl(); +// ObjectModelInterface expResult = null; +// ObjectModelInterface result = instance.getInterface(qualifiedInterfaceName); +// assertEquals(expResult, result); +// // TODO review the generated test code and remove the default call to fail. +// fail("The test case is a prototype."); +// } +// +// /** +// * Test of getInterfaces method, of class ObjectModelImpl. +// */ +// @Test +// public void testGetInterfaces() { +// System.out.println("getInterfaces"); +// ObjectModelImpl instance = new ObjectModelImpl(); +// Collection expResult = null; +// Collection result = instance.getInterfaces(); +// assertEquals(expResult, result); +// // TODO review the generated test code and remove the default call to fail. +// fail("The test case is a prototype."); +// } +// +// /** +// * Test of addEnumeration method, of class ObjectModelImpl. +// */ +// @Test +// public void testAddEnumeration() { +// System.out.println("addEnumeration"); +// ObjectModelEnumerationImpl enumeration = null; +// ObjectModelImpl instance = new ObjectModelImpl(); +// instance.addEnumeration(enumeration); +// // TODO review the generated test code and remove the default call to fail. +// fail("The test case is a prototype."); +// } +// +// /** +// * Test of getEnumerations method, of class ObjectModelImpl. +// */ +// @Test +// public void testGetEnumerations() { +// System.out.println("getEnumerations"); +// ObjectModelImpl instance = new ObjectModelImpl(); +// Collection expResult = null; +// Collection result = instance.getEnumerations(); +// assertEquals(expResult, result); +// // TODO review the generated test code and remove the default call to fail. +// fail("The test case is a prototype."); +// } +// +// /** +// * Test of getEnumeration method, of class ObjectModelImpl. +// */ +// @Test +// public void testGetEnumeration() { +// System.out.println("getEnumeration"); +// String qualifiedEnumerationName = ""; +// ObjectModelImpl instance = new ObjectModelImpl(); +// ObjectModelEnumeration expResult = null; +// ObjectModelEnumeration result = instance.getEnumeration(qualifiedEnumerationName); +// assertEquals(expResult, result); +// // TODO review the generated test code and remove the default call to fail. +// fail("The test case is a prototype."); +// } +// +// /** +// * Test of getComments method, of class ObjectModelImpl. +// */ +// @Test +// public void testGetComments() { +// System.out.println("getComments"); +// ObjectModelImpl instance = new ObjectModelImpl(); +// List expResult = null; +// List result = instance.getComments(); +// assertEquals(expResult, result); +// // TODO review the generated test code and remove the default call to fail. +// fail("The test case is a prototype."); +// } +// +// /** +// * Test of mergeClassifiers method, of class ObjectModelImpl. +// */ +// @Test +// public void testMergeClassifiers() { +// System.out.println("mergeClassifiers"); +// ObjectModelClassifierImpl initialClazzifier = null; +// ObjectModelClassifierImpl additionalClazzifier = null; +// ObjectModelImpl instance = new ObjectModelImpl(); +// instance.mergeClassifiers(initialClazzifier, additionalClazzifier); +// // TODO review the generated test code and remove the default call to fail. +// fail("The test case is a prototype."); +// } +// +// /** +// * Test of addTagValue method, of class ObjectModelImpl. +// */ +// @Test +// public void testAddTagValue() { +// System.out.println("addTagValue"); +// ObjectModelImplTagValue tagValue = null; +// ObjectModelImpl instance = new ObjectModelImpl(); +// ObjectModelImplTagValue expResult = null; +// ObjectModelImplTagValue result = instance.addTagValue(tagValue); +// assertEquals(expResult, result); +// // TODO review the generated test code and remove the default call to fail. +// fail("The test case is a prototype."); +// } +// +// /** +// * Test of getTagValues method, of class ObjectModelImpl. +// */ +// @Test +// public void testGetTagValues() { +// System.out.println("getTagValues"); +// ObjectModelImpl instance = new ObjectModelImpl(); +// Map expResult = null; +// Map result = instance.getTagValues(); +// assertEquals(expResult, result); +// // TODO review the generated test code and remove the default call to fail. +// fail("The test case is a prototype."); +// } +// +// /** +// * Test of getTagValue method, of class ObjectModelImpl. +// */ +// @Test +// public void testGetTagValue() { +// System.out.println("getTagValue"); +// String tagValue = ""; +// ObjectModelImpl instance = new ObjectModelImpl(); +// String expResult = ""; +// String result = instance.getTagValue(tagValue); +// assertEquals(expResult, result); +// // TODO review the generated test code and remove the default call to fail. +// fail("The test case is a prototype."); +// } + + /** + * Test of getExtension method, of class ObjectModelImpl. + * - Create and get ImportsManagerExtension + * - No double creation + */ + @Test + public void testGetExtension() { + System.out.println("getExtension"); + + ObjectModelImpl model = new ObjectModelImpl(); + model.setName("TestModel"); + + // Creation if not exist + ImportsManagerExtension result = + model.getExtension(ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); + + assertNotNull(result); + + ImportsManagerExtension result2 = + model.getExtension(ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); + + assertEquals(result, result2); + } + +} Modified: trunk/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelDTDTest.java =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelDTDTest.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelDTDTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.state; @@ -97,4 +99,4 @@ reader.parse(source); } } -} \ No newline at end of file +} Modified: trunk/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelTest.java =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelTest.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.state; Deleted: trunk/eugene/src/test/java/org/nuiton/eugene/models/ui/javaxml/JavaXMLParserTest.java =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/models/ui/javaxml/JavaXMLParserTest.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/test/java/org/nuiton/eugene/models/ui/javaxml/JavaXMLParserTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,126 +0,0 @@ -/* *##% Eugene - * Copyright (C) 2004 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ - -package org.nuiton.eugene.models.ui.javaxml; - -import java.io.File; -import java.util.List; - -import org.junit.Assert; -import org.junit.Test; -import org.nuiton.eugene.models.ui.UIModel; -import org.nuiton.eugene.models.ui.impl.UIModelChildImpl; -import org.nuiton.eugene.models.ui.impl.UIModelEventImpl; -import org.nuiton.eugene.models.ui.impl.UIModelObjectImpl; -import org.nuiton.util.Resource; - -/** - * JavaXMLParserTest. - * - * Created: Aug 9, 2004 - * - * @author Benjamin Poussin <poussin@codelutin.com> - * Copyright Code Lutin - * @version $Revision$ - * - * Mise a jour: $Date$ - * par : $Author$ - */ -public class JavaXMLParserTest { // JavaXMLParserTest - - @Test - public void testParse() throws Exception { - - // 1 panel, 2 boutons, gridbaglayout - File testFile = new File(Resource.getURL("models/uimodel/test.javaxml").toURI()); - - // 1 panel, 1 bouton, borderlayout - File testFile1 = new File(Resource.getURL("models/uimodel/test1.javaxml").toURI()); - - // alarmPanel de Chorem dans une JFrame - File testFile2 = new File(Resource.getURL("models/uimodel/test2.javaxml").toURI()); - - if (testFile.exists() && testFile1.exists() && testFile2.exists()) { - - JavaXMLParser parser = new JavaXMLParser(); - UIModel ui = parser.parse(testFile); - UIModel ui1 = parser.parse(testFile1); - UIModel ui2 = parser.parse(testFile2); - //UIModel ui3 = parser.parse(testFile3); - - //System.out.println("UI : \n" + ui); - //System.out.println("UI1 : \n" + ui1); - //System.out.println("UI2 : \n" + ui2); - //System.out.println("UI3 : \n" + ui3); - - // test si l'element racine est parse - Assert.assertNotNull(ui.getRoot()); - Assert.assertNotNull(ui.getRoot().getName()); - - // tests sur tous les elements du root - Assert.assertTrue(ui.getRoot().getArguments().size() == 0); - Assert.assertTrue(ui.getRoot().getChildren().size() == 2); - Assert.assertTrue(ui.getRoot().getEvents().size() == 1); - Assert.assertTrue(ui.getRoot().getProperties().size() == 2); - - // test si le layout est bien recupere - UIModelObjectImpl object = (UIModelObjectImpl) ui.getRoot().getProperty("layout").getValue(); - - Assert.assertEquals(object.getType(), "java.awt.GridBagLayout"); - - // test sur un event de l'enfant - List<?> children = (List<?>) ui.getRoot().getChildren(); - UIModelChildImpl child = (UIModelChildImpl) children.get(0); - - List<?> events = (List<?>) child.getObject().getEvents(); - UIModelEventImpl event = (UIModelEventImpl) events.get(0); - - Assert.assertEquals(event.getAction(), "actionPerformed"); - Assert.assertNotNull(event.getAddMethod()); - - // test sur constraint de l'enfant - UIModelObjectImpl constraint = (UIModelObjectImpl) child.getConstraint().getValue(); - List<?> argConstraint = (List<?>) constraint.getArguments(); - - Assert.assertEquals(constraint.getType(), "java.awt.GridBagConstraints"); - - Assert.assertEquals(argConstraint.get(1).toString(), "0"); - - // test sur le nombre d'enfant d'un enfant - Assert.assertTrue(child.getObject().getChildren().size() == 0); - - // test sur une contrainte string (BorderLayout) - List<?> children1 = (List<?>) ui1.getRoot().getChildren(); - UIModelChildImpl child1 = (UIModelChildImpl) children1.get(0); - - Object constraint1 = child1.getConstraint().getValue(); - Assert.assertEquals(constraint1, "Center"); - - // test sur le nombre d'enfants d'une Frame est correct - List<?> children2 = (List<?>) ui2.getRoot().getChildren(); - Assert.assertTrue(children2.size() == 1); - - // test sur une contrainte d'un panel genere - UIModelChildImpl child2 = (UIModelChildImpl) children2.get(0); - - Object constraint2 = child2.getConstraint().getValue(); - Assert.assertEquals(constraint2, "Center"); - } - } - -} // JavaXMLParserTest - Modified: trunk/eugene/src/test/java/org/nuiton/eugene/models/xml/ModelMergeTest.java =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/models/xml/ModelMergeTest.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/test/java/org/nuiton/eugene/models/xml/ModelMergeTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Eugene +/* *##% + * EUGene :: EUGene * Copyright (C) 2004 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.models.xml; Modified: trunk/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI12ToObjectModelTest.java =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI12ToObjectModelTest.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI12ToObjectModelTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,20 +1,21 @@ -/* *##% - * Copyright (C) 2009 Code Lutin +/* *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU General Lesser Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - *##%*/ + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.xmi.objectmodel; @@ -147,11 +148,12 @@ File objectModelFile = transformXMI(xmiFile, "topiatest.objectmodel"); - ObjectModel model = loadModel(objectModelFile); + ObjectModel model = loadModel(objectModelFile); + + // Test for model version + Assert.assertEquals("1.2",model.getVersion()); Assert.assertNotNull(model); - // Test for model version - Assert.assertEquals("1.2",model.getVersion()); Assert.assertEquals("TopiaTest", model.getName()); Assert.assertEquals(22, model.getClassifiers().size()); @@ -165,10 +167,10 @@ // Test for inner class ObjectModelClass storeClass = model.getClass("org.nuiton.topiatest.Store"); Assert.assertNotNull(storeClass); - List<ObjectModelClass> inners = (List<ObjectModelClass>) storeClass.getInnerClasses(); + List<ObjectModelClassifier> inners = (List<ObjectModelClassifier>) storeClass.getInnerClassifiers(); Assert.assertNotNull(inners); Assert.assertEquals(inners.size(), 1); - ObjectModelClass rowClass = inners.get(0); + ObjectModelClass rowClass = (ObjectModelClass) inners.get(0); Assert.assertNotNull(rowClass); Assert.assertEquals(rowClass.getDeclaringElement().getName(), "Store"); } Modified: trunk/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI21ToObjectModelTest.java =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI21ToObjectModelTest.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/test/java/org/nuiton/eugene/xmi/objectmodel/XMI21ToObjectModelTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,20 +1,21 @@ -/* *##% - * Copyright (C) 2009 Code Lutin +/* *##% + * EUGene :: EUGene + * Copyright (C) 2004 - 2009 CodeLutin * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU General Lesser Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - *##%*/ + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.xmi.objectmodel; @@ -40,12 +41,7 @@ import org.junit.Before; import org.junit.Test; import org.nuiton.eugene.ObjectModelGenerator; -import org.nuiton.eugene.models.object.ObjectModel; -import org.nuiton.eugene.models.object.ObjectModelAttribute; -import org.nuiton.eugene.models.object.ObjectModelClass; -import org.nuiton.eugene.models.object.ObjectModelEnumeration; -import org.nuiton.eugene.models.object.ObjectModelOperation; -import org.nuiton.eugene.models.object.ObjectModelParameter; +import org.nuiton.eugene.models.object.*; import org.nuiton.util.Resource; import org.nuiton.util.ResourceResolver; @@ -147,8 +143,10 @@ assertNotNull(model); assertEquals("XMITest21", model.getName()); - assertEquals(15, model.getClassifiers().size()); - + //FIXME check there is an xmi enumeration since we changed enumeration to classifier +// assertEquals(15, model.getClassifiers().size()); + assertEquals(16, model.getClassifiers().size()); + // ClassB ObjectModelClass clazzB = model.getClass("org.nuiton.eugene.test21.ClassB"); assertNotNull(clazzB); @@ -213,8 +211,10 @@ assertNotNull(model); assertEquals("org::sharengo::utils::container::link", model.getName()); - assertEquals(8, model.getClassifiers().size()); - + //FIXME check there is an xmi enumeration since we changed enumeration to classifier + assertEquals(9, model.getClassifiers().size()); +// assertEquals(8, model.getClassifiers().size()); + // LinkEntity ObjectModelClass clazzLinkEntity = model.getClass("org.sharengo.utils.container.link.entities.LinkEntity"); assertNotNull(clazzLinkEntity); @@ -505,12 +505,12 @@ // OuterClass ObjectModelClass outer = model.getClass("org.nuiton.eugene.test21.OuterClass"); - List<ObjectModelClass> inners = (List<ObjectModelClass>)outer.getInnerClasses(); + List<ObjectModelClassifier> inners = (List<ObjectModelClassifier>)outer.getInnerClassifiers(); assertNotNull(inners); assertEquals(inners.size(), 1); - + // InnerClass - ObjectModelClass inner = inners.get(0); + ObjectModelClass inner = (ObjectModelClass) inners.get(0); assertNotNull(inner); assertNotNull(inner.getDeclaringElement()); assertEquals(inner.getDeclaringElement().getName(), "OuterClass"); Modified: trunk/eugene/src/test/resources/log4j.properties =================================================================== --- trunk/eugene/src/test/resources/log4j.properties 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/test/resources/log4j.properties 2009-12-14 23:50:27 UTC (rev 755) @@ -7,5 +7,5 @@ log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n # package level -log4j.logger.org.nuiton.eugene=INFO +log4j.logger.org.nuiton.eugene=DEBUG log4j.logger.org.apache.commons.digester=INFO \ No newline at end of file Property changes on: trunk/eugene/src/test/resources/models ___________________________________________________________________ Deleted: svn:mergeinfo - Property changes on: trunk/eugene/src/test/resources/models/objectmodel ___________________________________________________________________ Deleted: svn:mergeinfo - Property changes on: trunk/eugene/src/test/resources/models/statemodel ___________________________________________________________________ Deleted: svn:mergeinfo - Property changes on: trunk/eugene/src/test/resources/models/uimodel ___________________________________________________________________ Deleted: svn:mergeinfo - Property changes on: trunk/eugene/src/test/resources/models/uimodel/test.javaxml ___________________________________________________________________ Deleted: svn:mergeinfo - Property changes on: trunk/eugene/src/test/resources/models/uimodel/test1.javaxml ___________________________________________________________________ Deleted: svn:mergeinfo - Property changes on: trunk/eugene/src/test/resources/models/uimodel/test2.javaxml ___________________________________________________________________ Deleted: svn:mergeinfo - Modified: trunk/eugene/src/test/resources/xmi/1.2/topiatest.xmi =================================================================== --- trunk/eugene/src/test/resources/xmi/1.2/topiatest.xmi 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/eugene/src/test/resources/xmi/1.2/topiatest.xmi 2009-12-14 23:50:27 UTC (rev 755) @@ -1,5 +1,5 @@ <?xml version = '1.0' encoding = 'UTF-8' ?> -<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Mon Oct 19 15:46:43 CEST 2009'> +<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Thu Nov 05 18:36:55 CET 2009'> <XMI.header> <XMI.documentation> <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter> <XMI.exporterVersion>0.28.1(6) revised on $Date: 2007-05-12 08:08:08 +0200 (Sat, 12 May 2007) $ </XMI.exporterVersion> Modified: trunk/eugene/src/test/resources/xmi/1.2/topiatest.zargo =================================================================== (Binary files differ) Property changes on: trunk/maven-eugene-plugin ___________________________________________________________________ Modified: svn:ignore - target target/* *.ipr *.iws *.iml .settings .classpath .project + target *.iml *.ipr *.iws .settings .classpath .project Deleted: svn:mergeinfo - Modified: trunk/maven-eugene-plugin/pom.xml =================================================================== --- trunk/maven-eugene-plugin/pom.xml 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/pom.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> @@ -9,7 +10,7 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>eugene</artifactId> - <version>1.0.2-SNAPSHOT</version> + <version>2.0.0-beta-2-SNAPSHOT</version> </parent> <groupId>org.nuiton.eugene</groupId> @@ -56,7 +57,7 @@ <!-- ************************************************************* --> <!-- *** Project Information ************************************* --> <!-- ************************************************************* --> - <name>EUGene - plugin maven</name> + <name>EUGene :: Maven plugin</name> <inceptionYear>2006</inceptionYear> <description>maven plugin to use the eugene library</description> @@ -82,6 +83,19 @@ </executions> </plugin> + <!-- expose new plexus components --> + <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-metadata</artifactId> + <executions> + <execution> + <goals> + <goal>generate-metadata</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> <pluginManagement> @@ -274,6 +288,12 @@ </taglets> </configuration> </plugin> + + <plugin> + <artifactId>maven-invoker-plugin</artifactId> + <version>1.4</version> + </plugin> + </plugins> </pluginManagement> @@ -287,6 +307,7 @@ <artifactId>maven-plugin-plugin</artifactId> </plugin> + <plugin> <artifactId>maven-javadoc-plugin</artifactId> <version>${javadoc.version}</version> @@ -482,5 +503,44 @@ </plugins> </reporting> + <profiles> + <profile> + <id>run-its</id> + <activation> + <property> + <name>performRelease</name> + <value>true</value> + </property> + </activation> + <build> + <plugins> + <plugin> + <artifactId>maven-invoker-plugin</artifactId> + <configuration> + <pomIncludes> + <!--<pomInclude>generate/generators/pom.xml</pomInclude>--> + <pomInclude>**/pom.xml</pomInclude> + </pomIncludes> + <postBuildHookScript>verify</postBuildHookScript> + <localRepositoryPath>${basedir}/target/local-repo</localRepositoryPath> + <settingsFile>src/it/settings.xml</settingsFile> + <cloneProjectsTo>${project.build.directory}/its</cloneProjectsTo> + </configuration> + <executions> + <execution> + <id>integration-test</id> + <goals> + <goal>install</goal> + <goal>run</goal> + </goals> + <phase>integration-test</phase> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + </project> Deleted: trunk/maven-eugene-plugin/src/it/generate/generators/LICENSE.txt =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/LICENSE.txt 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate/generators/LICENSE.txt 2009-12-14 23:50:27 UTC (rev 755) @@ -1,166 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. - - 0. Additional Definitions. - - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - - 1. Exception to Section 3 of the GNU GPL. - - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - - 2. Conveying Modified Versions. - - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or - - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. - - 3. Object Code Incorporating Material from Library Header Files. - - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the object code with a copy of the GNU GPL and this license - document. - - 4. Combined Works. - - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. - - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. - - d) Do one of the following: - - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. - - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. - - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) - - 5. Combined Libraries. - - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. - - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. - - 6. Revised Versions of the GNU Lesser General Public License. - - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. - Copied: trunk/maven-eugene-plugin/src/it/generate/generators/LICENSE.txt (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/LICENSE.txt) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate/generators/LICENSE.txt (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate/generators/LICENSE.txt 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,166 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + Deleted: trunk/maven-eugene-plugin/src/it/generate/generators/README.txt =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/README.txt 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate/generators/README.txt 2009-12-14 23:50:27 UTC (rev 755) @@ -1,2 +0,0 @@ -To deploy new version of pom: mvn deploy -To install localy: mvn install Copied: trunk/maven-eugene-plugin/src/it/generate/generators/README.txt (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/README.txt) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate/generators/README.txt (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate/generators/README.txt 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,2 @@ +To deploy new version of pom: mvn deploy +To install localy: mvn install Deleted: trunk/maven-eugene-plugin/src/it/generate/generators/changelog.txt =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/changelog.txt 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate/generators/changelog.txt 2009-12-14 23:50:27 UTC (rev 755) @@ -1,53 +0,0 @@ -1.0.0 xxx xxx - * Add multiple models loading and restricted package generation - * Recode EugenePlugin without ant - * Move to org.nuiton groupid - * Rename project to Eugene - -0.64 chemit 20090218 - * 20090211 [chatellier] add testPhase property in mojo to specify when using it in test phase - * 20090210 [chatellier] add info and debug maven log messages - * 20090210 [chatellier] add default value on all non required parameters - * 20090209 [chemit] fix bug when using sibling dependencies in a multi-module project - * 20090129 [chemit] use lutinproject 3.4 (suppress javadoc plugin invocation) - -0.63 chemit 20081215 - * 20081215 [chemit] follow lutingenerator release - -0.62 chemit 20081210 - * 20081210 [chemit] use lutinpluginproject 3.2 - * 20081203 [chemit] add a encoding goal property to be dispatched in all generator to control file generation encoding - * 20081118 [chemit] use lutinproject 3.1 - * 20081117 [chemit] - - add extraClassPathDirectory parameter to can specify an extra directory to add in classLoader - - bump lutingenerator version - -0.61 chatellier 20081114 - * 20081107 [chatellier] - - add test compile dir and test resources in generation gaol - * 20081101 [chemit] - - add an excludeTemplates property on GeneratorPlugin to permit exclusion of generators for some composite generator - - bump lutingenerator to 0.61 - -0.60 chemit 20081013 - * 20081013 [chemit] - - remove addCompileDirectory option (always done) + add dynamic resources - - use lutingenerator 0.60 - - clean pom - -0.51 thimel 20080925 - * 20080925 [thimel] Refactor pom using the correct architecture - * 20080925 [thimel] Switched License to LGPL - * 20080723 [chemit] - - add generated sources in maven project's compilation directories via addCompilationDirectory plugin property - - * 20070525 [chatellier] - - add Xmi2StateModel goal - - improve Xmi2Model Hierarchy - * 20070525 [chatellier] update ant dependency to 1.7.0 - * 20070525 [chatellier] replacing lutinxml.XSLAntTask by Ant.XSLTProcess - -0.50 ??? ??? - - * 20070420 [chatellier] add goal to copy a set of generated files - * 20070420 [chatellier] update lutingenerator depencency to 0.50 \ No newline at end of file Copied: trunk/maven-eugene-plugin/src/it/generate/generators/changelog.txt (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/changelog.txt) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate/generators/changelog.txt (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate/generators/changelog.txt 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,53 @@ +1.0.0 xxx xxx + * Add multiple models loading and restricted package generation + * Recode EugenePlugin without ant + * Move to org.nuiton groupid + * Rename project to Eugene + +0.64 chemit 20090218 + * 20090211 [chatellier] add testPhase property in mojo to specify when using it in test phase + * 20090210 [chatellier] add info and debug maven log messages + * 20090210 [chatellier] add default value on all non required parameters + * 20090209 [chemit] fix bug when using sibling dependencies in a multi-module project + * 20090129 [chemit] use lutinproject 3.4 (suppress javadoc plugin invocation) + +0.63 chemit 20081215 + * 20081215 [chemit] follow lutingenerator release + +0.62 chemit 20081210 + * 20081210 [chemit] use lutinpluginproject 3.2 + * 20081203 [chemit] add a encoding goal property to be dispatched in all generator to control file generation encoding + * 20081118 [chemit] use lutinproject 3.1 + * 20081117 [chemit] + - add extraClassPathDirectory parameter to can specify an extra directory to add in classLoader + - bump lutingenerator version + +0.61 chatellier 20081114 + * 20081107 [chatellier] + - add test compile dir and test resources in generation gaol + * 20081101 [chemit] + - add an excludeTemplates property on GeneratorPlugin to permit exclusion of generators for some composite generator + - bump lutingenerator to 0.61 + +0.60 chemit 20081013 + * 20081013 [chemit] + - remove addCompileDirectory option (always done) + add dynamic resources + - use lutingenerator 0.60 + - clean pom + +0.51 thimel 20080925 + * 20080925 [thimel] Refactor pom using the correct architecture + * 20080925 [thimel] Switched License to LGPL + * 20080723 [chemit] + - add generated sources in maven project's compilation directories via addCompilationDirectory plugin property + + * 20070525 [chatellier] + - add Xmi2StateModel goal + - improve Xmi2Model Hierarchy + * 20070525 [chatellier] update ant dependency to 1.7.0 + * 20070525 [chatellier] replacing lutinxml.XSLAntTask by Ant.XSLTProcess + +0.50 ??? ??? + + * 20070420 [chatellier] add goal to copy a set of generated files + * 20070420 [chatellier] update lutingenerator depencency to 0.50 \ No newline at end of file Deleted: trunk/maven-eugene-plugin/src/it/generate/generators/invoker.properties =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/invoker.properties 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate/generators/invoker.properties 2009-12-14 23:50:27 UTC (rev 755) @@ -1,21 +0,0 @@ -# A comma or space separated list of goals/phases to execute, may -# specify an empty list to execute the default goal of the IT project -invoker.goals=clean test - -# Optionally, a list of goals to run during further invocations of Maven -#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run - -# A comma or space separated list of profiles to activate -#invoker.profiles=run-all run-once - -# The value for the environment variable MAVEN_OPTS -#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m - -# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never" -invoker.failureBehavior=fail-at-end - -# The expected result of the build, possible values are "success" (default) and "failure" -#invoker.buildResult=success - -# A boolean value controlling the -N flag, defaults to "false" -#invoker.nonRecursive=false Copied: trunk/maven-eugene-plugin/src/it/generate/generators/invoker.properties (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/invoker.properties) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate/generators/invoker.properties (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate/generators/invoker.properties 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,21 @@ +# A comma or space separated list of goals/phases to execute, may +# specify an empty list to execute the default goal of the IT project +invoker.goals=clean test + +# Optionally, a list of goals to run during further invocations of Maven +#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run + +# A comma or space separated list of profiles to activate +#invoker.profiles=run-all run-once + +# The value for the environment variable MAVEN_OPTS +#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m + +# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never" +invoker.failureBehavior=fail-at-end + +# The expected result of the build, possible values are "success" (default) and "failure" +#invoker.buildResult=success + +# A boolean value controlling the -N flag, defaults to "false" +#invoker.nonRecursive=false Deleted: trunk/maven-eugene-plugin/src/it/generate/generators/pom.xml =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/pom.xml 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate/generators/pom.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -1,155 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - - <modelVersion>4.0.0</modelVersion> - - <!-- ************************************************************* --> - <!-- *** POM Relationships *************************************** --> - <!-- ************************************************************* --> - - <parent> - <groupId>org.nuiton</groupId> - <artifactId>eugene</artifactId> - <version>@pom.version@</version> - </parent> - - <groupId>org.nuiton.test</groupId> - <artifactId>eugene-test-modelreader</artifactId> - - <dependencies> - <dependency> - <groupId>org.nuiton.eugene</groupId> - <artifactId>eugene</artifactId> - <version>${project.version}</version> - <scope>compile</scope> - </dependency> - - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - </dependencies> - - - <!-- ************************************************************* --> - <!-- *** Project Information ************************************* --> - <!-- ************************************************************* --> - - <name>EUGene :: Test</name> - <description>Test module for generators.</description> - <inceptionYear>2007</inceptionYear> - - <contributors> - <contributor> - <name>Florian Desbois</name> - <email>fdesbois@codelutin.com</email> - <timezone>+2</timezone> - <roles> - <role>Developpeur</role> - </roles> - </contributor> - </contributors> - - <!-- ************************************************************* --> - <!-- *** Build Settings ****************************************** --> - <!-- ************************************************************* --> - - <packaging>jar</packaging> - - <build> - - <plugins> - - <plugin> - <groupId>org.nuiton.processor</groupId> - <artifactId>maven-processor-plugin</artifactId> - <executions> - <execution> - <phase>generate-sources</phase> - <goals> - <goal>process</goal> - </goals> - </execution> - </executions> - <configuration> - <includes>**/*.java</includes> - <filters> - org.nuiton.processor.filters.GeneratorTemplatesFilter - </filters> - </configuration> - </plugin> - - <plugin> - <groupId>org.nuiton.eugene</groupId> - <artifactId>maven-eugene-plugin</artifactId> - <version>${project.version}</version> - <executions> - <execution> - <id>Test Regression Generator</id> - <phase>generate-test-sources</phase> - <configuration> - <reader>org.nuiton.eugene.ObjectModelReader</reader> - <includes>dtotest.objectmodel</includes> - <templates>org.nuiton.eugene.test.generator.BeanGenerator</templates> - <defaultPackage>org.nuiton.eugene.test</defaultPackage> - <extraClassPathDirectory>target/classes</extraClassPathDirectory> - <generateResources> - <input>src/main/models</input> - </generateResources> - </configuration> - <goals> - <goal>generate</goal> - </goals> - </execution> - <execution> - <id>Test Java Generator</id> - <phase>generate-test-sources</phase> - <configuration> - <reader>org.nuiton.eugene.test.generator.TestReader</reader> - <templates>org.nuiton.eugene.java.JavaGenerator</templates> - <defaultPackage>org.nuiton.eugene.test</defaultPackage> - <extraClassPathDirectory>target/classes</extraClassPathDirectory> - <generateResources> - <input>src/main/models</input> - </generateResources> - </configuration> - <goals> - <goal>generate</goal> - </goals> - </execution> - <execution> - <id>Test Bean Transformer</id> - <phase>generate-test-sources</phase> - <configuration> - <reader>org.nuiton.eugene.ObjectModelReader</reader> - <includes>dtotest2.objectmodel</includes> - <templates>org.nuiton.eugene.test.generator.BeanTransformer</templates> - <defaultPackage>org.nuiton.eugene.test</defaultPackage> - <extraClassPathDirectory>target/classes</extraClassPathDirectory> - <generateResources> - <input>src/main/models</input> - </generateResources> - </configuration> - <goals> - <goal>generate</goal> - </goals> - </execution> - </executions> - <dependencies> - <dependency> - <groupId>log4j</groupId> - <artifactId>log4j</artifactId> - <version>1.2.14</version> - </dependency> - </dependencies> - </plugin> - - </plugins> - - </build> - -</project> - - Copied: trunk/maven-eugene-plugin/src/it/generate/generators/pom.xml (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/pom.xml) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate/generators/pom.xml (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate/generators/pom.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,155 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <!-- ************************************************************* --> + <!-- *** POM Relationships *************************************** --> + <!-- ************************************************************* --> + + <parent> + <groupId>org.nuiton</groupId> + <artifactId>eugene</artifactId> + <version>@pom.version@</version> + </parent> + + <groupId>org.nuiton.test</groupId> + <artifactId>eugene-test-modelreader</artifactId> + + <dependencies> + <dependency> + <groupId>org.nuiton.eugene</groupId> + <artifactId>eugene</artifactId> + <version>${project.version}</version> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + </dependencies> + + + <!-- ************************************************************* --> + <!-- *** Project Information ************************************* --> + <!-- ************************************************************* --> + + <name>EUGene :: Test</name> + <description>Test module for generators.</description> + <inceptionYear>2007</inceptionYear> + + <contributors> + <contributor> + <name>Florian Desbois</name> + <email>fdesbois@codelutin.com</email> + <timezone>+2</timezone> + <roles> + <role>Developpeur</role> + </roles> + </contributor> + </contributors> + + <!-- ************************************************************* --> + <!-- *** Build Settings ****************************************** --> + <!-- ************************************************************* --> + + <packaging>jar</packaging> + + <build> + + <plugins> + + <plugin> + <groupId>org.nuiton.processor</groupId> + <artifactId>maven-processor-plugin</artifactId> + <executions> + <execution> + <phase>generate-sources</phase> + <goals> + <goal>process</goal> + </goals> + </execution> + </executions> + <configuration> + <includes>**/*.java</includes> + <filters> + org.nuiton.processor.filters.GeneratorTemplatesFilter + </filters> + </configuration> + </plugin> + + <plugin> + <groupId>org.nuiton.eugene</groupId> + <artifactId>maven-eugene-plugin</artifactId> + <version>${project.version}</version> + <executions> + <execution> + <id>Test Regression Generator</id> + <phase>generate-test-sources</phase> + <configuration> + <reader>org.nuiton.eugene.ObjectModelReader</reader> + <includes>dtotest.objectmodel</includes> + <templates>org.nuiton.eugene.test.generator.BeanGenerator</templates> + <defaultPackage>org.nuiton.eugene.test</defaultPackage> + <extraClassPathDirectory>target/classes</extraClassPathDirectory> + <generateResources> + <input>src/main/models</input> + </generateResources> + </configuration> + <goals> + <goal>generate</goal> + </goals> + </execution> + <execution> + <id>Test Java Generator</id> + <phase>generate-test-sources</phase> + <configuration> + <reader>org.nuiton.eugene.test.generator.TestReader</reader> + <templates>org.nuiton.eugene.java.JavaGenerator</templates> + <defaultPackage>org.nuiton.eugene.test</defaultPackage> + <extraClassPathDirectory>target/classes</extraClassPathDirectory> + <generateResources> + <input>src/main/models</input> + </generateResources> + </configuration> + <goals> + <goal>generate</goal> + </goals> + </execution> + <execution> + <id>Test Bean Transformer</id> + <phase>generate-test-sources</phase> + <configuration> + <reader>org.nuiton.eugene.ObjectModelReader</reader> + <includes>dtotest2.objectmodel</includes> + <templates>org.nuiton.eugene.test.generator.BeanTransformer</templates> + <defaultPackage>org.nuiton.eugene.test</defaultPackage> + <extraClassPathDirectory>target/classes</extraClassPathDirectory> + <generateResources> + <input>src/main/models</input> + </generateResources> + </configuration> + <goals> + <goal>generate</goal> + </goals> + </execution> + </executions> + <dependencies> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <version>1.2.14</version> + </dependency> + </dependencies> + </plugin> + + </plugins> + + </build> + +</project> + + Deleted: trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,621 +0,0 @@ -/* *##% - * EUGene Test - * Copyright (C) 2007 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%*/ - -/* * -* BeanGenerator.java -* -* Created: 17 avril 2009 -* -* @author tony Chemit <chemit@codelutin.com> -* @version $Revision$ -* -* Mise a jour: $Date$ -* par : $Author: chemit $ -*/ - -package org.nuiton.eugene.test.generator; - -import org.apache.commons.lang.StringUtils; -import static org.nuiton.eugene.test.generator.TopiaGeneratorUtil.TAG_ANNOTATION; - -import java.io.File; -import java.io.IOException; -import java.io.Serializable; -import java.io.Writer; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Comparator; -import java.util.Iterator; - -import java.util.List; -import java.util.Set; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.eugene.ObjectModelGenerator; -import org.nuiton.eugene.GeneratorUtil; -import org.nuiton.eugene.ImportsManager; -import org.nuiton.eugene.models.object.ObjectModelAttribute; -import org.nuiton.eugene.models.object.ObjectModelClass; -import org.nuiton.eugene.models.object.ObjectModelClassifier; -import org.nuiton.eugene.models.object.ObjectModelDependency; -import org.nuiton.eugene.models.object.ObjectModelInterface; -import org.nuiton.eugene.models.object.ObjectModelOperation; -import org.nuiton.eugene.models.object.ObjectModelParameter; -//import org.nuiton.topia.persistence.TopiaEntity; -import static org.nuiton.eugene.test.generator.TopiaGeneratorUtil.isPrimitiveType; -import static org.nuiton.eugene.test.generator.TopiaGeneratorUtil.isDateType; - -/** - * DTO generator - */ -public class BeanGenerator extends ObjectModelGenerator { - - /** - * Logger for this class - */ - private static final Log log = LogFactory.getLog(BeanGenerator.class); - - public BeanGenerator() { - super(); - } - - @Override - public String getFilenameForClass(ObjectModelClass clazz) { - return clazz.getQualifiedName().replace('.', File.separatorChar) + ".java"; - } - - @Override - public void generateFromClass(Writer output, ObjectModelClass clazz) throws IOException { - if (!clazz.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_BEAN) && - !clazz.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_DTO)) { - return; - } - // - // première phase : calcul des variables - // - String copyright = TopiaGeneratorUtil.getCopyright(model); - String clazzName = clazz.getName(); - String abstractStr = isAbstract(clazz) ? " abstract " : " "; - boolean needGetEntityMethod = false; - boolean generateToString = TopiaGeneratorUtil.generateToString(clazz, model); - - ImportsManager imports = new ImportsManager(); - - String extendClass = ""; - Iterator<ObjectModelClass> j = clazz.getSuperclasses().iterator(); - if (j.hasNext()) { - ObjectModelClassifier p = j.next(); - imports.addImport(p.getQualifiedName()); - extendClass += p.getName(); - } - String implInterface = ""; - for (Iterator<ObjectModelInterface> i=clazz.getInterfaces().iterator(); i.hasNext();) { - ObjectModelClassifier parentInterface = i.next(); - imports.addImport(parentInterface.getQualifiedName()); - implInterface += parentInterface.getName(); - if (i.hasNext()) { - implInterface += ", "; - } - } - // Add Serializable implements for DTO generation - if (clazz.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_DTO)) { - imports.addImport(Serializable.class); - if (!implInterface.isEmpty()) { - implInterface += ", "; - } - implInterface += Serializable.class.getName(); - } - String svUID = TopiaGeneratorUtil.findTagValue("dto-serialVersionUID", clazz, model); - - List<ObjectModelAttribute> attributes = new ArrayList<ObjectModelAttribute>(); - List<ObjectModelAttribute> multipleAttr = new ArrayList<ObjectModelAttribute>(); - - setAttributesForDTO(clazz, attributes,imports); - - boolean needListInImport=false; - - for (ObjectModelAttribute attr : clazz.getAttributes()) { - if (attr.isNavigable()) { - attributes.add(attr); - imports.addImport(attr.getType()); - if (GeneratorUtil.isNMultiplicity(attr)) { - multipleAttr.add(attr); - ObjectModelClass attrEntity = null; - if (model.hasClass(attr.getType())) { - attrEntity = model.getClass(attr.getType()); - } - boolean isEntity = (attrEntity != null && attrEntity.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_ENTITY)); - needGetEntityMethod |= isEntity; - if (attr.isOrdered()) { - needListInImport = true; - } - } - } - } - - imports.addImport(java.beans.PropertyChangeListener.class.getName()); - imports.addImport(java.beans.PropertyChangeSupport.class.getName()); - - for (ObjectModelOperation operation : clazz.getOperations()) { - imports.addImport(operation.getReturnType()); - for (ObjectModelParameter parameter : operation.getParameters()) { - imports.addImport(parameter.getType()); - } - } - - if (needGetEntityMethod) { - imports.addImport("org.nuiton.topia.persistence.TopiaEntity"); - } - if (!multipleAttr.isEmpty()) { - imports.addImport(Collection.class); - } - if (needListInImport) { - imports.addImport(List.class); - } - if (generateToString) { - imports.addImport(org.apache.commons.lang.builder.ToStringBuilder.class); - } - - boolean sortAttribute = TopiaGeneratorUtil.sortAttribute(clazz, model); - if (sortAttribute) { - Comparator<ObjectModelAttribute> comp = new Comparator<ObjectModelAttribute>(){ - - @Override - public int compare(ObjectModelAttribute o1, ObjectModelAttribute o2) { - return o1.getName().compareTo(o2.getName()); - } - }; - java.util.Collections.sort(attributes,comp); - java.util.Collections.sort(multipleAttr,comp); - } - // - // seconde phase : génération - // - - if (TopiaGeneratorUtil.notEmpty(copyright)) { -/*{<%=copyright%> -}*/ - } - -/*{package <%=clazz.getPackageName()%>; - - }*/ - - if (log.isDebugEnabled()) { - log.debug("imports for class <" + clazzName + ">"); - } - //for (String anImport : imports) { - for (String anImport : imports.getImports(clazz.getPackageName())) { - if (log.isDebugEnabled()) { - log.debug("import " + anImport); - } -/*{import <%=anImport%>; -}*/ - } -/*{ -public<%=abstractStr%>class <%=clazzName%>}*/ - -/* - * Définition de la super classe : il ne doit y avoir qu'une - */ - if (extendClass.length() > 0) { -/*{ extends <%=extendClass%>}*/ - } - - if (implInterface.length() > 0) { -/*{ implements <%=implInterface%> { - -}*/ - } else { - /*{ { - -}*/ - } - - - // TODO Calculer un serialVersionUID si il n'y en a pas - if (svUID != null) { -/*{ public static final long serialVersionUID = <%=svUID%>; - -}*/ - } - generateInterfaceOperations(output, clazz); - generateAttributes(output, attributes); -/*{ protected final PropertyChangeSupport pcs; - - /** - * Default constructor of <%=clazzName%>. - *) - public <%=clazzName%>() { - pcs = new PropertyChangeSupport(this); - } - - public void addPropertyChangeListener(PropertyChangeListener listener) { - pcs.addPropertyChangeListener(listener); - } - - public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { - pcs.addPropertyChangeListener(propertyName, listener); - } - - public void removePropertyChangeListener(PropertyChangeListener listener) { - pcs.removePropertyChangeListener(listener); - } - - public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { - pcs.removePropertyChangeListener(propertyName, listener); - } - -}*/ - generateGetters(output, attributes); - generateSetters(output, attributes); - generateGetChild(output, multipleAttr); - generateAddChild(output, multipleAttr); - generateRemoveChild(output, multipleAttr); - if (generateToString) { - generateToString(output, clazz); - } - if (!multipleAttr.isEmpty()) { -/*{ - - protected <T> T getChild(Collection<T> childs, int index) { - if (childs != null) { - int i = 0; - for (T o : childs) { - if (index == i) { - return o; - } - i++; - } - } - return null; - } - - }*/ - if (needGetEntityMethod) { -/*{ protected <T extends TopiaEntity> T getEntity(Collection<T> childs, String topiaId) { - if (childs != null) { - for (T o : childs) { - if (topiaId.equals(o.getTopiaId())) { - return o; - } - } - } - return null; - } - }*/ - } - } - -/*{ - protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) { - pcs.firePropertyChange(propertyName, oldValue, newValue); - } - -} //<%=clazz.getName()%> -}*/ - } - - protected void generateAttributes(Writer output, List<ObjectModelAttribute> attributes) throws IOException { - - for (ObjectModelAttribute attr : attributes) { - - if (!(attr.isNavigable() - || attr.hasAssociationClass())) { - continue; - } - - if (TopiaGeneratorUtil.hasDocumentation(attr)) { -/*{ /** - * <%=attr.getDocumentation()%> - *) -}*/ - } - String annotation = attr.getTagValue(TAG_ANNOTATION); - if (annotation != null && annotation.length() > 0) { -/*{ <%=annotation%> -}*/ - } - String attrName = attr.getName(); - String attrVisibility = attr.getVisibility(); - String attrType = attr.getType(); - if (attr.hasAssociationClass()) { - String assocAttrName = TopiaGeneratorUtil.getAssocAttrName(attr); - attrName = GeneratorUtil.toLowerCaseFirstLetter(assocAttrName); - attrType = attr.getAssociationClass().getName(); - } - int dot = attrType.lastIndexOf("."); - if (dot>-1) { - attrType = attrType.substring(dot + 1); - } - if (GeneratorUtil.isNMultiplicity(attr)) { - attrType = getCollection(attr, attrType); - } - -/*{ <%=attrVisibility%> <%=attrType%> <%=attrName%>; -}*/ - } - } - - protected void generateGetters(Writer output, List<ObjectModelAttribute> attributes) throws IOException { - /* - * Définition des getteurs et setteurs - */ - for (ObjectModelAttribute attr : attributes) { - - if (!attr.isNavigable()) { - continue; - } - - String attrName = attr.getName(); - String attrType = attr.getType(); - if (attr.hasAssociationClass()) { - String assocAttrName = TopiaGeneratorUtil.getAssocAttrName(attr); - attrName = GeneratorUtil.toLowerCaseFirstLetter(assocAttrName); - attrType = attr.getAssociationClass().getName(); - } - String attrNameCapitalized = StringUtils.capitalize(attrName); - int dot = attrType.lastIndexOf("."); - if (dot>-1) { - attrType = attrType.substring(dot + 1); - } - if (GeneratorUtil.isNMultiplicity(attr)) { - attrType = getCollection(attr, attrType); - } -/*{ public <%=attrType%> get<%=attrNameCapitalized%>() { - return <%=attrName%>; - } - -}*/ - } - } - - protected void generateSetters(Writer output, List<ObjectModelAttribute> attributes) throws IOException { - /* - * Définition des getteurs et setteurs - */ - for (ObjectModelAttribute attr : attributes) { - - if (!attr.isNavigable()) { - continue; - } - - String attrName = attr.getName(); - String attrType = attr.getType(); - - if (attr.hasAssociationClass()) { - String assocAttrName = TopiaGeneratorUtil.getAssocAttrName(attr); - attrName = GeneratorUtil.toLowerCaseFirstLetter(assocAttrName); - attrType = attr.getAssociationClass().getName(); - } - String attrNameCapitalized = StringUtils.capitalize(attrName); - int dot = attrType.lastIndexOf("."); - if (dot>-1) { - attrType = attrType.substring(dot + 1); - } - if (GeneratorUtil.isNMultiplicity(attr)) { - attrType = getCollection(attr, attrType); - } -/*{ public void set<%=attrNameCapitalized%>(<%=attrType%> newValue) { - <%=attrType%> oldValue = get<%=attrNameCapitalized%>(); - this.<%=attrName%> = newValue; - firePropertyChange("<%=attrName%>", oldValue, newValue); - } - -}*/ - } - } - - protected void generateGetChild(Writer output, List<ObjectModelAttribute> multipleAttr) throws IOException { - - for (ObjectModelAttribute attr : multipleAttr) { - - String attrName = attr.getName(); - String attrNameCapitalized = StringUtils.capitalize(attrName); - String attrType = attr.getType(); - int dot = attrType.lastIndexOf("."); - if (dot>-1) { - attrType = attrType.substring(dot + 1); - } - ObjectModelClass attrEntity=null; - if (model.hasClass(attr.getType())) { - attrEntity = model.getClass(attr.getType()); - } - boolean isEntity = (attrEntity != null && attrEntity.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_ENTITY)); -/*{ public <%=attrType%> get<%=attrNameCapitalized%>(int index) { - <%=attrType%> o = getChild(<%=attrName%>, index); - return o; - } - -}*/ - if (isEntity) { -/*{ public <%=attrType%> get<%=attrNameCapitalized%>(String topiaId) { - <%=attrType%> o = getEntity(<%=attrName%>, topiaId); - return o; - } - -}*/ - } - } - } - protected void generateAddChild(Writer output, List<ObjectModelAttribute> multipleAttr) throws IOException { - for (ObjectModelAttribute attr : multipleAttr) { - - String attrName = attr.getName(); - String attrNameCapitalized = StringUtils.capitalize(attrName); - String attrType = attr.getType(); - int dot = attrType.lastIndexOf("."); - if (dot>-1) { - attrType = attrType.substring(dot + 1); - } -/*{ public <%=attrType%> add<%=attrNameCapitalized%>(<%=attrType%> <%=attrName%>) { - get<%=attrNameCapitalized%>().add(<%=attrName%>); - firePropertyChange("<%=attrName%>", null, <%=attrName%>); - return <%=attrName%>; - } - -}*/ - } - } - - protected void generateRemoveChild(Writer output, List<ObjectModelAttribute> multipleAttr) throws IOException { - for (ObjectModelAttribute attr : multipleAttr) { - String attrName = attr.getName(); - String attrNameCapitalized = StringUtils.capitalize(attrName); - String attrType = attr.getType(); - int dot = attrType.lastIndexOf("."); - if (dot>-1) { - attrType = attrType.substring(dot + 1); - } -/*{ public boolean remove<%=attrNameCapitalized%>(<%=attrType%> <%=attrName%>) { - boolean removed = get<%=attrNameCapitalized%>().remove(<%=attrName%>); - if (removed) { - firePropertyChange("<%=attrName%>", <%=attrName%>, null); - } - return removed; - } - -}*/ - } - } - - protected void generateInterfaceOperations(Writer output, ObjectModelClassifier classifier) throws IOException { - for (ObjectModelOperation op : classifier.getOperations()) { - String opName = op.getName(); -/*{ /** -}*/ - if (TopiaGeneratorUtil.hasDocumentation(op)) { - String opDocumentation = op.getDocumentation(); -/*{ * <%=opName%> : <%=opDocumentation%> -}*/ - } - Collection<ObjectModelParameter> params = op.getParameters(); - for (ObjectModelParameter param : params) { - String paramName = param.getName(); - String paramDocumentation = param.getDocumentation(); -/*{ * @param <%=paramName%> <%=paramDocumentation%> - }*/ - } - String opVisibility = op.getVisibility(); - String opType = op.getReturnType(); -/*{ *) - <%=opVisibility%> abstract <%=opType%> <%=opName%>(}*/ - String comma = ""; - for (ObjectModelParameter param : params) { - String paramName = param.getName(); - String paramType = param.getType(); -/*{<%=comma%><%=paramType%> <%=paramName%>}*/ - comma = ", "; - } -/*{)}*/ - Set<String> exceptions = op.getExceptions(); - comma = " throws "; - for (String exception : exceptions) { -/*{<%=comma%><%=exception%>}*/ - comma = ", "; - } -/*{; - -}*/ - } - } - protected void generateToString(Writer output, ObjectModelClass clazz) throws IOException { -/*{ - @Override - public String toString() { - String result = new ToStringBuilder(this). -}*/ - for (ObjectModelAttribute attr : clazz.getAttributes()) { - if (!(attr.isNavigable() || attr.hasAssociationClass())) { - continue; - } - //FIXME possibilité de boucles (non directes) - String attrName = attr.getName(); -/*{ append("<%=attrName%>", this.<%=attrName%>). -}*/ - } -/*{ toString(); - return result; - } - }*/ - } - - protected String getCollection(ObjectModelAttribute attr, String attrType) { - String nMultType; - if (attr.isOrdered()) { - nMultType = "List<"; - } else { - nMultType = "Collection<"; - } - nMultType += attrType; - nMultType += ">"; - return nMultType; - } - - protected boolean isAbstract(ObjectModelClass clazz) { - if (clazz.isAbstract()) { - return true; - } - return !clazz.getOperations().isEmpty(); - } - - /** - * Dependecy gestion for DTO generation. - * All primitives attributes (and dates) of dependencies entities of the DTO are - * copied in the DTO. This method only prepare a list of attributes to be generated. - * @param clazz DTO ObjectModelClass - * @param attributes list of attributes for the generation (may be not empty) - * @param imports the ImportsManager used to generate the header imports of the DTO - * @return the same list of attributes in parameter with attributes from entities dependencies - * @see org.nuiton.eugene.ImportsManager - * @see org.nuiton.eugene.models.object.ObjectModelDependency - */ - private List<ObjectModelAttribute> setAttributesForDTO(ObjectModelClass clazz, - List<ObjectModelAttribute> attributes, ImportsManager imports) { - - if (clazz.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_DTO)) { - if (log.isInfoEnabled()) { - log.info("DTO dependency gestion"); - } - for (ObjectModelDependency dependency : clazz.getDependencies()) { - ObjectModelClass supplier = (ObjectModelClass)dependency.getSupplier(); - - // ENTITY dependency - // Copy all primitives attributes from the Entity (supplier) to the DTO - // Prepare a list to future generation of all object generated attributes - if (supplier.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_ENTITY)) { - if (log.isInfoEnabled()) { - log.info("Create primitive and date fields in DTO from Entity : " - + supplier.getQualifiedName()); - } - for (ObjectModelAttribute attr : supplier.getAttributes()) { - if (isPrimitiveType(attr) || isDateType(attr)) { - attributes.add(attr); - imports.addImport(attr.getType()); - } - if (GeneratorUtil.isNMultiplicity(attr)) { - imports.addImport("java.util.Collection"); - } - } - } - } - } - return attributes; - } -} //BeanGenerator Copied: trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,621 @@ +/* *##% + * EUGene Test + * Copyright (C) 2007 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ + +/* * +* BeanGenerator.java +* +* Created: 17 avril 2009 +* +* @author tony Chemit <chemit@codelutin.com> +* @version $Revision$ +* +* Mise a jour: $Date$ +* par : $Author: chemit $ +*/ + +package org.nuiton.eugene.test.generator; + +import org.apache.commons.lang.StringUtils; +import static org.nuiton.eugene.test.generator.TopiaGeneratorUtil.TAG_ANNOTATION; + +import java.io.File; +import java.io.IOException; +import java.io.Serializable; +import java.io.Writer; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Comparator; +import java.util.Iterator; + +import java.util.List; +import java.util.Set; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.ObjectModelGenerator; +import org.nuiton.eugene.GeneratorUtil; +import org.nuiton.eugene.ImportsManager; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelDependency; +import org.nuiton.eugene.models.object.ObjectModelInterface; +import org.nuiton.eugene.models.object.ObjectModelOperation; +import org.nuiton.eugene.models.object.ObjectModelParameter; +//import org.nuiton.topia.persistence.TopiaEntity; +import static org.nuiton.eugene.test.generator.TopiaGeneratorUtil.isPrimitiveType; +import static org.nuiton.eugene.test.generator.TopiaGeneratorUtil.isDateType; + +/** + * DTO generator + */ +public class BeanGenerator extends ObjectModelGenerator { + + /** + * Logger for this class + */ + private static final Log log = LogFactory.getLog(BeanGenerator.class); + + public BeanGenerator() { + super(); + } + + @Override + public String getFilenameForClass(ObjectModelClass clazz) { + return clazz.getQualifiedName().replace('.', File.separatorChar) + ".java"; + } + + @Override + public void generateFromClass(Writer output, ObjectModelClass clazz) throws IOException { + if (!clazz.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_BEAN) && + !clazz.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_DTO)) { + return; + } + // + // première phase : calcul des variables + // + String copyright = TopiaGeneratorUtil.getCopyright(model); + String clazzName = clazz.getName(); + String abstractStr = isAbstract(clazz) ? " abstract " : " "; + boolean needGetEntityMethod = false; + boolean generateToString = TopiaGeneratorUtil.generateToString(clazz, model); + + ImportsManager imports = new ImportsManager(); + + String extendClass = ""; + Iterator<ObjectModelClass> j = clazz.getSuperclasses().iterator(); + if (j.hasNext()) { + ObjectModelClassifier p = j.next(); + imports.addImport(p.getQualifiedName()); + extendClass += p.getName(); + } + String implInterface = ""; + for (Iterator<ObjectModelInterface> i=clazz.getInterfaces().iterator(); i.hasNext();) { + ObjectModelClassifier parentInterface = i.next(); + imports.addImport(parentInterface.getQualifiedName()); + implInterface += parentInterface.getName(); + if (i.hasNext()) { + implInterface += ", "; + } + } + // Add Serializable implements for DTO generation + if (clazz.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_DTO)) { + imports.addImport(Serializable.class); + if (!implInterface.isEmpty()) { + implInterface += ", "; + } + implInterface += Serializable.class.getName(); + } + String svUID = TopiaGeneratorUtil.findTagValue("dto-serialVersionUID", clazz, model); + + List<ObjectModelAttribute> attributes = new ArrayList<ObjectModelAttribute>(); + List<ObjectModelAttribute> multipleAttr = new ArrayList<ObjectModelAttribute>(); + + setAttributesForDTO(clazz, attributes,imports); + + boolean needListInImport=false; + + for (ObjectModelAttribute attr : clazz.getAttributes()) { + if (attr.isNavigable()) { + attributes.add(attr); + imports.addImport(attr.getType()); + if (GeneratorUtil.isNMultiplicity(attr)) { + multipleAttr.add(attr); + ObjectModelClass attrEntity = null; + if (model.hasClass(attr.getType())) { + attrEntity = model.getClass(attr.getType()); + } + boolean isEntity = (attrEntity != null && attrEntity.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_ENTITY)); + needGetEntityMethod |= isEntity; + if (attr.isOrdered()) { + needListInImport = true; + } + } + } + } + + imports.addImport(java.beans.PropertyChangeListener.class.getName()); + imports.addImport(java.beans.PropertyChangeSupport.class.getName()); + + for (ObjectModelOperation operation : clazz.getOperations()) { + imports.addImport(operation.getReturnType()); + for (ObjectModelParameter parameter : operation.getParameters()) { + imports.addImport(parameter.getType()); + } + } + + if (needGetEntityMethod) { + imports.addImport("org.nuiton.topia.persistence.TopiaEntity"); + } + if (!multipleAttr.isEmpty()) { + imports.addImport(Collection.class); + } + if (needListInImport) { + imports.addImport(List.class); + } + if (generateToString) { + imports.addImport(org.apache.commons.lang.builder.ToStringBuilder.class); + } + + boolean sortAttribute = TopiaGeneratorUtil.sortAttribute(clazz, model); + if (sortAttribute) { + Comparator<ObjectModelAttribute> comp = new Comparator<ObjectModelAttribute>(){ + + @Override + public int compare(ObjectModelAttribute o1, ObjectModelAttribute o2) { + return o1.getName().compareTo(o2.getName()); + } + }; + java.util.Collections.sort(attributes,comp); + java.util.Collections.sort(multipleAttr,comp); + } + // + // seconde phase : génération + // + + if (TopiaGeneratorUtil.notEmpty(copyright)) { +/*{<%=copyright%> +}*/ + } + +/*{package <%=clazz.getPackageName()%>; + + }*/ + + if (log.isDebugEnabled()) { + log.debug("imports for class <" + clazzName + ">"); + } + //for (String anImport : imports) { + for (String anImport : imports.getImports(clazz.getPackageName())) { + if (log.isDebugEnabled()) { + log.debug("import " + anImport); + } +/*{import <%=anImport%>; +}*/ + } +/*{ +public<%=abstractStr%>class <%=clazzName%>}*/ + +/* + * Définition de la super classe : il ne doit y avoir qu'une + */ + if (extendClass.length() > 0) { +/*{ extends <%=extendClass%>}*/ + } + + if (implInterface.length() > 0) { +/*{ implements <%=implInterface%> { + +}*/ + } else { + /*{ { + +}*/ + } + + + // TODO Calculer un serialVersionUID si il n'y en a pas + if (svUID != null) { +/*{ public static final long serialVersionUID = <%=svUID%>; + +}*/ + } + generateInterfaceOperations(output, clazz); + generateAttributes(output, attributes); +/*{ protected final PropertyChangeSupport pcs; + + /** + * Default constructor of <%=clazzName%>. + *) + public <%=clazzName%>() { + pcs = new PropertyChangeSupport(this); + } + + public void addPropertyChangeListener(PropertyChangeListener listener) { + pcs.addPropertyChangeListener(listener); + } + + public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { + pcs.addPropertyChangeListener(propertyName, listener); + } + + public void removePropertyChangeListener(PropertyChangeListener listener) { + pcs.removePropertyChangeListener(listener); + } + + public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { + pcs.removePropertyChangeListener(propertyName, listener); + } + +}*/ + generateGetters(output, attributes); + generateSetters(output, attributes); + generateGetChild(output, multipleAttr); + generateAddChild(output, multipleAttr); + generateRemoveChild(output, multipleAttr); + if (generateToString) { + generateToString(output, clazz); + } + if (!multipleAttr.isEmpty()) { +/*{ + + protected <T> T getChild(Collection<T> childs, int index) { + if (childs != null) { + int i = 0; + for (T o : childs) { + if (index == i) { + return o; + } + i++; + } + } + return null; + } + + }*/ + if (needGetEntityMethod) { +/*{ protected <T extends TopiaEntity> T getEntity(Collection<T> childs, String topiaId) { + if (childs != null) { + for (T o : childs) { + if (topiaId.equals(o.getTopiaId())) { + return o; + } + } + } + return null; + } + }*/ + } + } + +/*{ + protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) { + pcs.firePropertyChange(propertyName, oldValue, newValue); + } + +} //<%=clazz.getName()%> +}*/ + } + + protected void generateAttributes(Writer output, List<ObjectModelAttribute> attributes) throws IOException { + + for (ObjectModelAttribute attr : attributes) { + + if (!(attr.isNavigable() + || attr.hasAssociationClass())) { + continue; + } + + if (TopiaGeneratorUtil.hasDocumentation(attr)) { +/*{ /** + * <%=attr.getDocumentation()%> + *) +}*/ + } + String annotation = attr.getTagValue(TAG_ANNOTATION); + if (annotation != null && annotation.length() > 0) { +/*{ <%=annotation%> +}*/ + } + String attrName = attr.getName(); + String attrVisibility = attr.getVisibility(); + String attrType = attr.getType(); + if (attr.hasAssociationClass()) { + String assocAttrName = TopiaGeneratorUtil.getAssocAttrName(attr); + attrName = GeneratorUtil.toLowerCaseFirstLetter(assocAttrName); + attrType = attr.getAssociationClass().getName(); + } + int dot = attrType.lastIndexOf("."); + if (dot>-1) { + attrType = attrType.substring(dot + 1); + } + if (GeneratorUtil.isNMultiplicity(attr)) { + attrType = getCollection(attr, attrType); + } + +/*{ <%=attrVisibility%> <%=attrType%> <%=attrName%>; +}*/ + } + } + + protected void generateGetters(Writer output, List<ObjectModelAttribute> attributes) throws IOException { + /* + * Définition des getteurs et setteurs + */ + for (ObjectModelAttribute attr : attributes) { + + if (!attr.isNavigable()) { + continue; + } + + String attrName = attr.getName(); + String attrType = attr.getType(); + if (attr.hasAssociationClass()) { + String assocAttrName = TopiaGeneratorUtil.getAssocAttrName(attr); + attrName = GeneratorUtil.toLowerCaseFirstLetter(assocAttrName); + attrType = attr.getAssociationClass().getName(); + } + String attrNameCapitalized = StringUtils.capitalize(attrName); + int dot = attrType.lastIndexOf("."); + if (dot>-1) { + attrType = attrType.substring(dot + 1); + } + if (GeneratorUtil.isNMultiplicity(attr)) { + attrType = getCollection(attr, attrType); + } +/*{ public <%=attrType%> get<%=attrNameCapitalized%>() { + return <%=attrName%>; + } + +}*/ + } + } + + protected void generateSetters(Writer output, List<ObjectModelAttribute> attributes) throws IOException { + /* + * Définition des getteurs et setteurs + */ + for (ObjectModelAttribute attr : attributes) { + + if (!attr.isNavigable()) { + continue; + } + + String attrName = attr.getName(); + String attrType = attr.getType(); + + if (attr.hasAssociationClass()) { + String assocAttrName = TopiaGeneratorUtil.getAssocAttrName(attr); + attrName = GeneratorUtil.toLowerCaseFirstLetter(assocAttrName); + attrType = attr.getAssociationClass().getName(); + } + String attrNameCapitalized = StringUtils.capitalize(attrName); + int dot = attrType.lastIndexOf("."); + if (dot>-1) { + attrType = attrType.substring(dot + 1); + } + if (GeneratorUtil.isNMultiplicity(attr)) { + attrType = getCollection(attr, attrType); + } +/*{ public void set<%=attrNameCapitalized%>(<%=attrType%> newValue) { + <%=attrType%> oldValue = get<%=attrNameCapitalized%>(); + this.<%=attrName%> = newValue; + firePropertyChange("<%=attrName%>", oldValue, newValue); + } + +}*/ + } + } + + protected void generateGetChild(Writer output, List<ObjectModelAttribute> multipleAttr) throws IOException { + + for (ObjectModelAttribute attr : multipleAttr) { + + String attrName = attr.getName(); + String attrNameCapitalized = StringUtils.capitalize(attrName); + String attrType = attr.getType(); + int dot = attrType.lastIndexOf("."); + if (dot>-1) { + attrType = attrType.substring(dot + 1); + } + ObjectModelClass attrEntity=null; + if (model.hasClass(attr.getType())) { + attrEntity = model.getClass(attr.getType()); + } + boolean isEntity = (attrEntity != null && attrEntity.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_ENTITY)); +/*{ public <%=attrType%> get<%=attrNameCapitalized%>(int index) { + <%=attrType%> o = getChild(<%=attrName%>, index); + return o; + } + +}*/ + if (isEntity) { +/*{ public <%=attrType%> get<%=attrNameCapitalized%>(String topiaId) { + <%=attrType%> o = getEntity(<%=attrName%>, topiaId); + return o; + } + +}*/ + } + } + } + protected void generateAddChild(Writer output, List<ObjectModelAttribute> multipleAttr) throws IOException { + for (ObjectModelAttribute attr : multipleAttr) { + + String attrName = attr.getName(); + String attrNameCapitalized = StringUtils.capitalize(attrName); + String attrType = attr.getType(); + int dot = attrType.lastIndexOf("."); + if (dot>-1) { + attrType = attrType.substring(dot + 1); + } +/*{ public <%=attrType%> add<%=attrNameCapitalized%>(<%=attrType%> <%=attrName%>) { + get<%=attrNameCapitalized%>().add(<%=attrName%>); + firePropertyChange("<%=attrName%>", null, <%=attrName%>); + return <%=attrName%>; + } + +}*/ + } + } + + protected void generateRemoveChild(Writer output, List<ObjectModelAttribute> multipleAttr) throws IOException { + for (ObjectModelAttribute attr : multipleAttr) { + String attrName = attr.getName(); + String attrNameCapitalized = StringUtils.capitalize(attrName); + String attrType = attr.getType(); + int dot = attrType.lastIndexOf("."); + if (dot>-1) { + attrType = attrType.substring(dot + 1); + } +/*{ public boolean remove<%=attrNameCapitalized%>(<%=attrType%> <%=attrName%>) { + boolean removed = get<%=attrNameCapitalized%>().remove(<%=attrName%>); + if (removed) { + firePropertyChange("<%=attrName%>", <%=attrName%>, null); + } + return removed; + } + +}*/ + } + } + + protected void generateInterfaceOperations(Writer output, ObjectModelClassifier classifier) throws IOException { + for (ObjectModelOperation op : classifier.getOperations()) { + String opName = op.getName(); +/*{ /** +}*/ + if (TopiaGeneratorUtil.hasDocumentation(op)) { + String opDocumentation = op.getDocumentation(); +/*{ * <%=opName%> : <%=opDocumentation%> +}*/ + } + Collection<ObjectModelParameter> params = op.getParameters(); + for (ObjectModelParameter param : params) { + String paramName = param.getName(); + String paramDocumentation = param.getDocumentation(); +/*{ * @param <%=paramName%> <%=paramDocumentation%> + }*/ + } + String opVisibility = op.getVisibility(); + String opType = op.getReturnType(); +/*{ *) + <%=opVisibility%> abstract <%=opType%> <%=opName%>(}*/ + String comma = ""; + for (ObjectModelParameter param : params) { + String paramName = param.getName(); + String paramType = param.getType(); +/*{<%=comma%><%=paramType%> <%=paramName%>}*/ + comma = ", "; + } +/*{)}*/ + Set<String> exceptions = op.getExceptions(); + comma = " throws "; + for (String exception : exceptions) { +/*{<%=comma%><%=exception%>}*/ + comma = ", "; + } +/*{; + +}*/ + } + } + protected void generateToString(Writer output, ObjectModelClass clazz) throws IOException { +/*{ + @Override + public String toString() { + String result = new ToStringBuilder(this). +}*/ + for (ObjectModelAttribute attr : clazz.getAttributes()) { + if (!(attr.isNavigable() || attr.hasAssociationClass())) { + continue; + } + //FIXME possibilité de boucles (non directes) + String attrName = attr.getName(); +/*{ append("<%=attrName%>", this.<%=attrName%>). +}*/ + } +/*{ toString(); + return result; + } + }*/ + } + + protected String getCollection(ObjectModelAttribute attr, String attrType) { + String nMultType; + if (attr.isOrdered()) { + nMultType = "List<"; + } else { + nMultType = "Collection<"; + } + nMultType += attrType; + nMultType += ">"; + return nMultType; + } + + protected boolean isAbstract(ObjectModelClass clazz) { + if (clazz.isAbstract()) { + return true; + } + return !clazz.getOperations().isEmpty(); + } + + /** + * Dependecy gestion for DTO generation. + * All primitives attributes (and dates) of dependencies entities of the DTO are + * copied in the DTO. This method only prepare a list of attributes to be generated. + * @param clazz DTO ObjectModelClass + * @param attributes list of attributes for the generation (may be not empty) + * @param imports the ImportsManager used to generate the header imports of the DTO + * @return the same list of attributes in parameter with attributes from entities dependencies + * @see org.nuiton.eugene.ImportsManager + * @see org.nuiton.eugene.models.object.ObjectModelDependency + */ + private List<ObjectModelAttribute> setAttributesForDTO(ObjectModelClass clazz, + List<ObjectModelAttribute> attributes, ImportsManager imports) { + + if (clazz.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_DTO)) { + if (log.isInfoEnabled()) { + log.info("DTO dependency gestion"); + } + for (ObjectModelDependency dependency : clazz.getDependencies()) { + ObjectModelClass supplier = (ObjectModelClass)dependency.getSupplier(); + + // ENTITY dependency + // Copy all primitives attributes from the Entity (supplier) to the DTO + // Prepare a list to future generation of all object generated attributes + if (supplier.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_ENTITY)) { + if (log.isInfoEnabled()) { + log.info("Create primitive and date fields in DTO from Entity : " + + supplier.getQualifiedName()); + } + for (ObjectModelAttribute attr : supplier.getAttributes()) { + if (isPrimitiveType(attr) || isDateType(attr)) { + attributes.add(attr); + imports.addImport(attr.getType()); + } + if (GeneratorUtil.isNMultiplicity(attr)) { + imports.addImport("java.util.Collection"); + } + } + } + } + } + return attributes; + } +} //BeanGenerator Deleted: trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,341 +0,0 @@ -/* - * *##% - * EUGene Test - * Copyright (C) 2007 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%* - */ -package org.nuiton.eugene.test.generator; - -import org.apache.commons.lang.StringUtils; -import org.nuiton.eugene.GeneratorUtil; -import org.nuiton.eugene.java.ObjectModelTransformerToJava; -import org.nuiton.eugene.models.object.*; - -import java.util.Collection; -import java.util.Iterator; -import java.util.List; - -/*{generator option: parentheses = false}*/ - -/*{generator option: writeString = +}*/ -/** - * BeanTransformer - * <p/> - * Created: 28 oct. 2009 - * - * @author fdesbois - * @version $Revision$ - * <p/> - * Mise a jour: $Date$ - * par : $Author: fdesbois $ - */ -public class BeanTransformer extends ObjectModelTransformerToJava { - - public BeanTransformer() { - super(); - } - - @Override - public void transformFromClass(ObjectModelClass clazz) { - if (!clazz.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_BEAN) && - !clazz.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_DTO)) { - return; - } - - ObjectModelClass resultClass; - if (!clazz.getOperations().isEmpty()) { - resultClass = createAbstractClass(clazz.getName(), clazz.getPackageName()); - } else { - resultClass = createClass(clazz.getName(), clazz.getPackageName()); - } - - createForDTO(resultClass, clazz); - - // Set superclass - Iterator<ObjectModelClass> j = clazz.getSuperclasses().iterator(); - if (j.hasNext()) { - ObjectModelClass p = j.next(); - setSuperClass(resultClass, p.getQualifiedName()); - } - - // Add interfaces from inputModel - for (ObjectModelInterface parentInterface : clazz.getInterfaces()) { - addInterface(resultClass, parentInterface.getQualifiedName()); - } - - createListeners(resultClass, clazz); - - boolean hasEntity = false; - boolean hasMultipleAttribute = false; - - // Add attributes with getter/setter - for (ObjectModelAttribute attr : clazz.getAttributes()) { - - if (attr.isNavigable()/* || attr.hasAssociationClass()*/) { - String attrType = attr.getType(); - String simpleType = GeneratorUtil.getSimpleName(attrType); - String attrName = attr.getName(); - String attrNameCapitalized = StringUtils.capitalize(attrName); - - // multiple attribute - if (GeneratorUtil.isNMultiplicity(attr)) { - hasMultipleAttribute = true; - - // Add getChild - ObjectModelOperation getChild = addOperation(resultClass, "get" + attrNameCapitalized, - attrType, ObjectModelModifier.PUBLIC); - addParameter(getChild, "int", "index"); - setOperationBody(getChild, "" - /*{ - <%=simpleType%> o = getChild(<%=attrName%>, index); - return o; - }*/ - ); - - // Add getEntity - ObjectModelClass attrEntity = null; - if (getModel().hasClass(attr.getType())) { - attrEntity = getModel().getClass(attr.getType()); - } - boolean isEntity = (attrEntity != null && attrEntity.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_ENTITY)); - - if (isEntity) { - hasEntity = true; - ObjectModelOperation getChildEntity = addOperation(resultClass, "get" + attrNameCapitalized, - attrType, ObjectModelModifier.PUBLIC); - addParameter(getChildEntity, String.class.getName(), "topiaId"); - setOperationBody(getChildEntity, "" - /*{ - <%=simpleType%> o = getEntity(<%=attrName%>, topiaId); - return o; - }*/ - ); - } - - // Add addChild - ObjectModelOperation addChild = addOperation(resultClass, "add" + attrNameCapitalized, - attrType, ObjectModelModifier.PUBLIC); - addParameter(addChild, attrType, attrName); - setOperationBody(addChild, "" - - /*{ - get<%=attrNameCapitalized%>().add(<%=attrName%>); - firePropertyChange("<%=attrName%>", null, <%=attrName%>); - return <%=attrName%>; - }*/ - ); - - // Add removeChild - ObjectModelOperation removeChild = addOperation(resultClass, "remove" + attrNameCapitalized, - "boolean", ObjectModelModifier.PUBLIC); - addParameter(removeChild, attrType, attrName); - setOperationBody(removeChild, "" - - /*{ - boolean removed = get<%=attrNameCapitalized%>().remove(<%=attrName%>); - if (removed) { - firePropertyChange("<%=attrName%>", <%=attrName%>, null); - } - return removed; - }*/ - ); - - // Change type for Multiple attribute - if (attr.isOrdered()) { - attrType = List.class.getName() + "<" + attrType + ">"; - } else { - attrType = Collection.class.getName() + "<" + attrType + ">"; - } - simpleType = GeneratorUtil.getSimpleName(attrType); - } - - if (attr.hasAssociationClass()) { - String assocAttrName = TopiaGeneratorUtil.getAssocAttrName(attr); - attrName = GeneratorUtil.toLowerCaseFirstLetter(assocAttrName); - attrType = attr.getAssociationClass().getName(); - } - - // Add attribute - String visibility = attr.getVisibility(); - addAttribute(resultClass, attrName, attrType, "", ObjectModelModifier.toValue(visibility)); - - // Add getter - ObjectModelOperation getter = addOperation(resultClass, "get" + attrNameCapitalized, attrType, - ObjectModelModifier.PUBLIC); - setOperationBody(getter, "" - /*{ - return this.<%=attrName%>; - }*/ - ); - - // Add setter - ObjectModelOperation setter = addOperation(resultClass, "set" + attrNameCapitalized, "void", - ObjectModelModifier.PUBLIC); - addParameter(setter, attrType, "newValue"); - setOperationBody(setter, "" - /*{ - <%=simpleType%> oldValue = get<%=attrNameCapitalized%>(); - this.<%=attrName%> = newValue; - firePropertyChange("<%=attrName%>", oldValue, newValue); - }*/ - ); - - } - } - - // Add helper methods - if (hasMultipleAttribute) { - ObjectModelOperation getChild = addOperation(resultClass, "getChild", "<T> T", - ObjectModelModifier.PROTECTED); - addParameter(getChild, "java.util.Collection<T>", "childs"); - addParameter(getChild, "int", "index"); - setOperationBody(getChild, "" - /*{ - if (childs != null) { - int i = 0; - for (T o : childs) { - if (index == i) { - return o; - } - i++; - } - } - return null; - }*/ - ); - } - - if (hasEntity) { - ObjectModelOperation getEntity = addOperation(resultClass, "getEntity", - "<T extends org.nuiton.topia.persistence.TopiaEntity> T", ObjectModelModifier.PROTECTED); - addParameter(getEntity, "java.util.Collection<T>", "childs"); - addParameter(getEntity, "java.lang.String", "topiaId"); - setOperationBody(getEntity, "" - /*{ - if (childs != null) { - for (T o : childs) { - if (topiaId.equals(o.getTopiaId())) { - return o; - } - } - } - return null; - }*/ - ); - } - - // Add operations - for (ObjectModelOperation op : clazz.getOperations()) { - String visibility = op.getVisibility(); - ObjectModelOperation resultOperation = addOperation(resultClass, op.getName(), op.getReturnType(), - ObjectModelModifier.toValue(visibility), ObjectModelModifier.ABSTRACT); - - for (ObjectModelParameter param : op.getParameters()) { - addParameter(resultOperation, param.getType(), param.getName()); - } - - for (String exception : op.getExceptions()) { - addException(resultOperation, exception); - } - } - - - } - - private void createForDTO(ObjectModelClass resultClass, ObjectModelClass inputClass) { - - // Add Serializable implements for DTO generation - if (inputClass.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_DTO)) { - addInterface(resultClass, "java.io.Serializable"); - } - - String svUID = TopiaGeneratorUtil.findTagValue("dto-serialVersionUID", inputClass, getModel()); - if (svUID != null) { - addConstant(resultClass, "serialVersionUID", "long", svUID, ObjectModelModifier.PUBLIC); - } - } - - protected void createListeners(ObjectModelClass resultClass, ObjectModelClass inputClass) { - - addAttribute(resultClass, "pcs", "java.beans.PropertyChangeSupport", "", - ObjectModelModifier.PROTECTED, ObjectModelModifier.FINAL); - - // Default constructor - ObjectModelOperation constructor = addConstructor(resultClass, ObjectModelModifier.PUBLIC); - setOperationBody(constructor, "" - /*{ - pcs = new PropertyChangeSupport(this); - }*/ - ); - - // Add PropertyListener - String propType = "java.beans.PropertyChangeListener"; - String strType = String.class.getName(); - String objectType = Object.class.getName(); - - ObjectModelOperation addPropertyChangeListener = addOperation(resultClass, - "addPropertyChangeListener", "void", ObjectModelModifier.PUBLIC); - addParameter(addPropertyChangeListener, propType, "listener"); - setOperationBody(addPropertyChangeListener, "" - /*{ - pcs.addPropertyChangeListener(listener); - }*/ - ); - - ObjectModelOperation addPropertyChangeListenerPlus = addOperation(resultClass, - "addPropertyChangeListener", "void", ObjectModelModifier.PUBLIC); - addParameter(addPropertyChangeListenerPlus, strType, "propertyName"); - addParameter(addPropertyChangeListenerPlus, propType, "listener"); - setOperationBody(addPropertyChangeListenerPlus, "" - /*{ - pcs.addPropertyChangeListener(propertyName, listener); - }*/ - ); - - ObjectModelOperation removePropertyChangeListener = addOperation(resultClass, - "removePropertyChangeListener", "void", ObjectModelModifier.PUBLIC); - addParameter(removePropertyChangeListener, propType, "listener"); - setOperationBody(removePropertyChangeListener, "" - /*{ - pcs.removePropertyChangeListener(listener); - }*/ - ); - - ObjectModelOperation removePropertyChangeListenerPlus = addOperation(resultClass, - "removePropertyChangeListener", "void", ObjectModelModifier.PUBLIC); - addParameter(removePropertyChangeListenerPlus, strType, "propertyName"); - addParameter(removePropertyChangeListenerPlus, propType, "listener"); - setOperationBody(removePropertyChangeListenerPlus, "" - /*{ - pcs.removePropertyChangeListener(propertyName, listener); - }*/ - ); - - ObjectModelOperation firePropertyChange = addOperation(resultClass, - "firePropertyChange", "void", ObjectModelModifier.PROTECTED); - addParameter(firePropertyChange, strType, "propertyName"); - addParameter(firePropertyChange, objectType, "oldValue"); - addParameter(firePropertyChange, objectType, "newValue"); - setOperationBody(firePropertyChange, "" - /*{ - pcs.firePropertyChange(propertyName, oldValue, newValue); - }*/ - ); - } - - -} Copied: trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,341 @@ +/* + * *##% + * EUGene Test + * Copyright (C) 2007 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ +package org.nuiton.eugene.test.generator; + +import org.apache.commons.lang.StringUtils; +import org.nuiton.eugene.GeneratorUtil; +import org.nuiton.eugene.java.ObjectModelTransformerToJava; +import org.nuiton.eugene.models.object.*; + +import java.util.Collection; +import java.util.Iterator; +import java.util.List; + +/*{generator option: parentheses = false}*/ + +/*{generator option: writeString = +}*/ +/** + * BeanTransformer + * <p/> + * Created: 28 oct. 2009 + * + * @author fdesbois + * @version $Revision$ + * <p/> + * Mise a jour: $Date$ + * par : $Author: fdesbois $ + */ +public class BeanTransformer extends ObjectModelTransformerToJava { + + public BeanTransformer() { + super(); + } + + @Override + public void transformFromClass(ObjectModelClass clazz) { + if (!clazz.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_BEAN) && + !clazz.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_DTO)) { + return; + } + + ObjectModelClass resultClass; + if (!clazz.getOperations().isEmpty()) { + resultClass = createAbstractClass(clazz.getName(), clazz.getPackageName()); + } else { + resultClass = createClass(clazz.getName(), clazz.getPackageName()); + } + + createForDTO(resultClass, clazz); + + // Set superclass + Iterator<ObjectModelClass> j = clazz.getSuperclasses().iterator(); + if (j.hasNext()) { + ObjectModelClass p = j.next(); + setSuperClass(resultClass, p.getQualifiedName()); + } + + // Add interfaces from inputModel + for (ObjectModelInterface parentInterface : clazz.getInterfaces()) { + addInterface(resultClass, parentInterface.getQualifiedName()); + } + + createListeners(resultClass, clazz); + + boolean hasEntity = false; + boolean hasMultipleAttribute = false; + + // Add attributes with getter/setter + for (ObjectModelAttribute attr : clazz.getAttributes()) { + + if (attr.isNavigable()/* || attr.hasAssociationClass()*/) { + String attrType = attr.getType(); + String simpleType = GeneratorUtil.getSimpleName(attrType); + String attrName = attr.getName(); + String attrNameCapitalized = StringUtils.capitalize(attrName); + + // multiple attribute + if (GeneratorUtil.isNMultiplicity(attr)) { + hasMultipleAttribute = true; + + // Add getChild + ObjectModelOperation getChild = addOperation(resultClass, "get" + attrNameCapitalized, + attrType, ObjectModelModifier.PUBLIC); + addParameter(getChild, "int", "index"); + setOperationBody(getChild, "" + /*{ + <%=simpleType%> o = getChild(<%=attrName%>, index); + return o; + }*/ + ); + + // Add getEntity + ObjectModelClass attrEntity = null; + if (getModel().hasClass(attr.getType())) { + attrEntity = getModel().getClass(attr.getType()); + } + boolean isEntity = (attrEntity != null && attrEntity.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_ENTITY)); + + if (isEntity) { + hasEntity = true; + ObjectModelOperation getChildEntity = addOperation(resultClass, "get" + attrNameCapitalized, + attrType, ObjectModelModifier.PUBLIC); + addParameter(getChildEntity, String.class.getName(), "topiaId"); + setOperationBody(getChildEntity, "" + /*{ + <%=simpleType%> o = getEntity(<%=attrName%>, topiaId); + return o; + }*/ + ); + } + + // Add addChild + ObjectModelOperation addChild = addOperation(resultClass, "add" + attrNameCapitalized, + attrType, ObjectModelModifier.PUBLIC); + addParameter(addChild, attrType, attrName); + setOperationBody(addChild, "" + + /*{ + get<%=attrNameCapitalized%>().add(<%=attrName%>); + firePropertyChange("<%=attrName%>", null, <%=attrName%>); + return <%=attrName%>; + }*/ + ); + + // Add removeChild + ObjectModelOperation removeChild = addOperation(resultClass, "remove" + attrNameCapitalized, + "boolean", ObjectModelModifier.PUBLIC); + addParameter(removeChild, attrType, attrName); + setOperationBody(removeChild, "" + + /*{ + boolean removed = get<%=attrNameCapitalized%>().remove(<%=attrName%>); + if (removed) { + firePropertyChange("<%=attrName%>", <%=attrName%>, null); + } + return removed; + }*/ + ); + + // Change type for Multiple attribute + if (attr.isOrdered()) { + attrType = List.class.getName() + "<" + attrType + ">"; + } else { + attrType = Collection.class.getName() + "<" + attrType + ">"; + } + simpleType = GeneratorUtil.getSimpleName(attrType); + } + + if (attr.hasAssociationClass()) { + String assocAttrName = TopiaGeneratorUtil.getAssocAttrName(attr); + attrName = GeneratorUtil.toLowerCaseFirstLetter(assocAttrName); + attrType = attr.getAssociationClass().getName(); + } + + // Add attribute + String visibility = attr.getVisibility(); + addAttribute(resultClass, attrName, attrType, "", ObjectModelModifier.toValue(visibility)); + + // Add getter + ObjectModelOperation getter = addOperation(resultClass, "get" + attrNameCapitalized, attrType, + ObjectModelModifier.PUBLIC); + setOperationBody(getter, "" + /*{ + return this.<%=attrName%>; + }*/ + ); + + // Add setter + ObjectModelOperation setter = addOperation(resultClass, "set" + attrNameCapitalized, "void", + ObjectModelModifier.PUBLIC); + addParameter(setter, attrType, "newValue"); + setOperationBody(setter, "" + /*{ + <%=simpleType%> oldValue = get<%=attrNameCapitalized%>(); + this.<%=attrName%> = newValue; + firePropertyChange("<%=attrName%>", oldValue, newValue); + }*/ + ); + + } + } + + // Add helper methods + if (hasMultipleAttribute) { + ObjectModelOperation getChild = addOperation(resultClass, "getChild", "<T> T", + ObjectModelModifier.PROTECTED); + addParameter(getChild, "java.util.Collection<T>", "childs"); + addParameter(getChild, "int", "index"); + setOperationBody(getChild, "" + /*{ + if (childs != null) { + int i = 0; + for (T o : childs) { + if (index == i) { + return o; + } + i++; + } + } + return null; + }*/ + ); + } + + if (hasEntity) { + ObjectModelOperation getEntity = addOperation(resultClass, "getEntity", + "<T extends org.nuiton.topia.persistence.TopiaEntity> T", ObjectModelModifier.PROTECTED); + addParameter(getEntity, "java.util.Collection<T>", "childs"); + addParameter(getEntity, "java.lang.String", "topiaId"); + setOperationBody(getEntity, "" + /*{ + if (childs != null) { + for (T o : childs) { + if (topiaId.equals(o.getTopiaId())) { + return o; + } + } + } + return null; + }*/ + ); + } + + // Add operations + for (ObjectModelOperation op : clazz.getOperations()) { + String visibility = op.getVisibility(); + ObjectModelOperation resultOperation = addOperation(resultClass, op.getName(), op.getReturnType(), + ObjectModelModifier.toValue(visibility), ObjectModelModifier.ABSTRACT); + + for (ObjectModelParameter param : op.getParameters()) { + addParameter(resultOperation, param.getType(), param.getName()); + } + + for (String exception : op.getExceptions()) { + addException(resultOperation, exception); + } + } + + + } + + private void createForDTO(ObjectModelClass resultClass, ObjectModelClass inputClass) { + + // Add Serializable implements for DTO generation + if (inputClass.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_DTO)) { + addInterface(resultClass, "java.io.Serializable"); + } + + String svUID = TopiaGeneratorUtil.findTagValue("dto-serialVersionUID", inputClass, getModel()); + if (svUID != null) { + addConstant(resultClass, "serialVersionUID", "long", svUID, ObjectModelModifier.PUBLIC); + } + } + + protected void createListeners(ObjectModelClass resultClass, ObjectModelClass inputClass) { + + addAttribute(resultClass, "pcs", "java.beans.PropertyChangeSupport", "", + ObjectModelModifier.PROTECTED, ObjectModelModifier.FINAL); + + // Default constructor + ObjectModelOperation constructor = addConstructor(resultClass, ObjectModelModifier.PUBLIC); + setOperationBody(constructor, "" + /*{ + pcs = new PropertyChangeSupport(this); + }*/ + ); + + // Add PropertyListener + String propType = "java.beans.PropertyChangeListener"; + String strType = String.class.getName(); + String objectType = Object.class.getName(); + + ObjectModelOperation addPropertyChangeListener = addOperation(resultClass, + "addPropertyChangeListener", "void", ObjectModelModifier.PUBLIC); + addParameter(addPropertyChangeListener, propType, "listener"); + setOperationBody(addPropertyChangeListener, "" + /*{ + pcs.addPropertyChangeListener(listener); + }*/ + ); + + ObjectModelOperation addPropertyChangeListenerPlus = addOperation(resultClass, + "addPropertyChangeListener", "void", ObjectModelModifier.PUBLIC); + addParameter(addPropertyChangeListenerPlus, strType, "propertyName"); + addParameter(addPropertyChangeListenerPlus, propType, "listener"); + setOperationBody(addPropertyChangeListenerPlus, "" + /*{ + pcs.addPropertyChangeListener(propertyName, listener); + }*/ + ); + + ObjectModelOperation removePropertyChangeListener = addOperation(resultClass, + "removePropertyChangeListener", "void", ObjectModelModifier.PUBLIC); + addParameter(removePropertyChangeListener, propType, "listener"); + setOperationBody(removePropertyChangeListener, "" + /*{ + pcs.removePropertyChangeListener(listener); + }*/ + ); + + ObjectModelOperation removePropertyChangeListenerPlus = addOperation(resultClass, + "removePropertyChangeListener", "void", ObjectModelModifier.PUBLIC); + addParameter(removePropertyChangeListenerPlus, strType, "propertyName"); + addParameter(removePropertyChangeListenerPlus, propType, "listener"); + setOperationBody(removePropertyChangeListenerPlus, "" + /*{ + pcs.removePropertyChangeListener(propertyName, listener); + }*/ + ); + + ObjectModelOperation firePropertyChange = addOperation(resultClass, + "firePropertyChange", "void", ObjectModelModifier.PROTECTED); + addParameter(firePropertyChange, strType, "propertyName"); + addParameter(firePropertyChange, objectType, "oldValue"); + addParameter(firePropertyChange, objectType, "newValue"); + setOperationBody(firePropertyChange, "" + /*{ + pcs.firePropertyChange(propertyName, oldValue, newValue); + }*/ + ); + } + + +} Deleted: trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/Megatron.java =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/Megatron.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/Megatron.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,40 +0,0 @@ -package org.nuiton.eugene.test.generator; - -import org.nuiton.eugene.java.ObjectModelTransformerToJava; -import org.nuiton.eugene.models.object.ObjectModelClass; - -/** - * Megatron - * - * Chainage des transformer : Modele de depart -> transformation dans BeanTransformer = modele d'entrée de Megatron - * - * Created: 12 nov. 2009 - * - * @author fdesbois - * @version $Revision$ - * - * Mise a jour: $Date$ - * par : $Author$ - */ -public class Megatron extends ObjectModelTransformerToJava { - - public Megatron() { - super(); - } - - /* - CAS modele de sortie vide : modele d'entree transformee par BeanTransformer - */ - @Override - protected ObjectModelTransformerToJava initPreviousTransformer() { - return new BeanTransformer(); - } - - @Override - public void transformFromClass(ObjectModelClass clazz) { - - - - } - -} Copied: trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/Megatron.java (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/Megatron.java) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/Megatron.java (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/Megatron.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,40 @@ +package org.nuiton.eugene.test.generator; + +import org.nuiton.eugene.java.ObjectModelTransformerToJava; +import org.nuiton.eugene.models.object.ObjectModelClass; + +/** + * Megatron + * + * Chainage des transformer : Modele de depart -> transformation dans BeanTransformer = modele d'entrée de Megatron + * + * Created: 12 nov. 2009 + * + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class Megatron extends ObjectModelTransformerToJava { + + public Megatron() { + super(); + } + + /* + CAS modele de sortie vide : modele d'entree transformee par BeanTransformer + */ + @Override + protected ObjectModelTransformerToJava initPreviousTransformer() { + return new BeanTransformer(); + } + + @Override + public void transformFromClass(ObjectModelClass clazz) { + + + + } + +} Deleted: trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,93 +0,0 @@ -/* - * *##% - * EUGene Test - * Copyright (C) 2007 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%* - */ - -package org.nuiton.eugene.test.generator; - -import org.nuiton.eugene.java.JavaBuilder; -import org.nuiton.eugene.models.object.ObjectModelClass; -import org.nuiton.eugene.models.object.ObjectModelModifier; -import org.nuiton.eugene.models.object.ObjectModelOperation; - -/*{generator option: parentheses = false}*/ -/*{generator option: writeString = +}*/ -/** - * TestBuilder - * - * Created: 25 oct. 2009 - * - * @author fdesbois - * @version $Revision$ - * - * Mise a jour: $Date$ - * par : $Author: fdesbois $ - */ -public class TestBuilder extends JavaBuilder { - - public TestBuilder() { - super("TestModel"); - } - - //@Override - public void build() { - createRole(); - createPerson(); - } - - private void createRole() { - ObjectModelClass roleClass = createClass("Role", "org.chorem.bonzoms"); - - addAttribute(roleClass, "name", "java.lang.String"); - - //this.addImportForClassifier(roleClass, Date.class); - addAttribute(roleClass, "fromDate", "java.util.Date"); - addAttribute(roleClass, "thruDate", "java.util.Date"); - } - - private void createPerson() { - ObjectModelClass personneClass = createClass("Person", "org.chorem.bonzoms"); - - addAttribute(personneClass, "lastName", "java.lang.String"); - addAttribute(personneClass, "firstName", "java.lang.String", "\"2.0\""); - - //this.addImportForClassifier(personneClass, List.class); - addAttribute(personneClass, "roles", "java.util.List<org.chorem.bonzoms.Role>", - "new java.util.ArrayList<org.chorem.bonzoms.Role>()"); - - - ObjectModelOperation setLastName = addOperation(personneClass, "setLastName", "void", - ObjectModelModifier.PUBLIC); - addParameter(setLastName, "java.lang.String", "lastName"); - setOperationBody(setLastName, "" - /*{ - this.lastName = lastName; - }*/ - ); - - ObjectModelOperation getLastName = addOperation(personneClass, "getLastName", "java.lang.String", - ObjectModelModifier.PUBLIC); - setOperationBody(getLastName, "" - /*{ - return this.lastName; - }*/ - ); - } - -} Copied: trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,93 @@ +/* + * *##% + * EUGene Test + * Copyright (C) 2007 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ + +package org.nuiton.eugene.test.generator; + +import org.nuiton.eugene.java.JavaBuilder; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelModifier; +import org.nuiton.eugene.models.object.ObjectModelOperation; + +/*{generator option: parentheses = false}*/ +/*{generator option: writeString = +}*/ +/** + * TestBuilder + * + * Created: 25 oct. 2009 + * + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author: fdesbois $ + */ +public class TestBuilder extends JavaBuilder { + + public TestBuilder() { + super("TestModel"); + } + + //@Override + public void build() { + createRole(); + createPerson(); + } + + private void createRole() { + ObjectModelClass roleClass = createClass("Role", "org.chorem.bonzoms"); + + addAttribute(roleClass, "name", "java.lang.String"); + + //this.addImportForClassifier(roleClass, Date.class); + addAttribute(roleClass, "fromDate", "java.util.Date"); + addAttribute(roleClass, "thruDate", "java.util.Date"); + } + + private void createPerson() { + ObjectModelClass personneClass = createClass("Person", "org.chorem.bonzoms"); + + addAttribute(personneClass, "lastName", "java.lang.String"); + addAttribute(personneClass, "firstName", "java.lang.String", "\"2.0\""); + + //this.addImportForClassifier(personneClass, List.class); + addAttribute(personneClass, "roles", "java.util.List<org.chorem.bonzoms.Role>", + "new java.util.ArrayList<org.chorem.bonzoms.Role>()"); + + + ObjectModelOperation setLastName = addOperation(personneClass, "setLastName", "void", + ObjectModelModifier.PUBLIC); + addParameter(setLastName, "java.lang.String", "lastName"); + setOperationBody(setLastName, "" + /*{ + this.lastName = lastName; + }*/ + ); + + ObjectModelOperation getLastName = addOperation(personneClass, "getLastName", "java.lang.String", + ObjectModelModifier.PUBLIC); + setOperationBody(getLastName, "" + /*{ + return this.lastName; + }*/ + ); + } + +} Deleted: trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TestReader.java =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TestReader.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TestReader.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,51 +0,0 @@ -/* - * *##% - * EUGene Test - * Copyright (C) 2007 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%* - */ - -package org.nuiton.eugene.test.generator; - -import java.io.File; -import org.nuiton.eugene.ModelReader; -import org.nuiton.eugene.models.object.ObjectModel; - -/** - * TestReader - * - * Created: 27 oct. 2009 - * - * @author fdesbois - * @version $Revision$ - * - * Mise a jour: $Date$ - * par : $Author: fdesbois $ - */ -public class TestReader extends ModelReader<ObjectModel> { - - - @Override - public ObjectModel read(File[] file) { - TestBuilder builder = new TestBuilder(); - - builder.build(); - - return builder.getModel(); - } - -} Copied: trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TestReader.java (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TestReader.java) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TestReader.java (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TestReader.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,51 @@ +/* + * *##% + * EUGene Test + * Copyright (C) 2007 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ + +package org.nuiton.eugene.test.generator; + +import java.io.File; +import org.nuiton.eugene.ModelReader; +import org.nuiton.eugene.models.object.ObjectModel; + +/** + * TestReader + * + * Created: 27 oct. 2009 + * + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author: fdesbois $ + */ +public class TestReader extends ModelReader<ObjectModel> { + + + @Override + public ObjectModel read(File[] file) { + TestBuilder builder = new TestBuilder(); + + builder.build(); + + return builder.getModel(); + } + +} Deleted: trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TopiaGeneratorUtil.java =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TopiaGeneratorUtil.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TopiaGeneratorUtil.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,948 +0,0 @@ -/* *##% - * EUGene Test - * Copyright (C) 2007 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%*/ -/******************************************************************************* - * GeneratorUtil.java - * - * Created: 13 déc. 2005 - * - * @author Arnaud Thimel <thimel@codelutin.com> - * - * @version $Revision$ - * - * Mise a jour: $Date$ par : $Author: tchemit $ - */ -package org.nuiton.eugene.test.generator; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import org.apache.commons.lang.StringUtils; -import org.nuiton.eugene.Template; -import org.nuiton.eugene.GeneratorUtil; -import org.nuiton.eugene.models.Model; -import org.nuiton.eugene.models.object.ObjectModel; -import org.nuiton.eugene.models.object.ObjectModelAssociationClass; -import org.nuiton.eugene.models.object.ObjectModelAttribute; -import org.nuiton.eugene.models.object.ObjectModelClass; -import org.nuiton.eugene.models.object.ObjectModelElement; -import org.nuiton.eugene.models.object.ObjectModelInterface; -import org.nuiton.eugene.models.object.ObjectModelOperation; -import org.nuiton.eugene.models.object.ObjectModelParameter; - -/** Classe regroupant divers méthodes utiles pour la génération des entités */ -public class TopiaGeneratorUtil extends GeneratorUtil { - - /** Stéréotype pour les interfaces devant être générées sous forme de facades */ - public final static String STEREOTYPE_FACADE = "facade"; - /** Stéréotype pour les objets devant être générées sous forme d'entités */ - public static final String STEREOTYPE_ENTITY = "entity"; - /** Stéréotype pour les objets devant être générées sous forme de DTO */ - public static final String STEREOTYPE_DTO = "dto"; - /** Stéréotype pour les objets devant être générées sous forme de bean */ - public static final String STEREOTYPE_BEAN = "bean"; - /** - * Stéréotype pour les interfaces devant être générées sous forme de - * services - */ - public static final String STEREOTYPE_SERVICE = "service"; - /** Stéréotype pour les interfaces devant être générées sous forme de DAO */ - public static final String STEREOTYPE_DAO = "dao"; - /** Stéréotype pour les attributs à indexer en base */ - public static final String STEREOTYPE_INDEXED = "indexed"; - /** Stéréotype pour les collections avec unicité */ - public static final String STEREOTYPE_UNIQUE = "unique"; - /** Stéréotype pour les attributs étant des clés primaires */ - public static final String STEREOTYPE_PRIMARYKAY = "primaryKey"; - /** Tag pour le type de persistence */ - public static final String TAG_PERSISTENCE_TYPE = "persistenceType"; - /** Tag pour le nom du champ / entité en BD */ - public static final String TAG_DB_NAME = "dbName"; - /** Tag pour le nom du schema en BD */ - public static final String TAG_SCHEMA_NAME = "dbSchema"; - /** Tag pour la taille du champ en BD */ - public static final String TAG_LENGTH = "length"; - /** Tag pour ajouter une annotation à un champ */ - public static final String TAG_ANNOTATION = "annotation"; - /** Tag pour ajouter specifier le copyright d'un fichier */ - public static final String TAG_COPYRIGHT = "copyright"; - /** Tag pour specfier le type d'acces a un champ */ - public static final String TAG_ACCESS = "access"; - /** Tag pour specfier si on doit générer i18n */ - public static final String TAG_I18N_PREFIX = "i18n"; - /** Tag pour ajouter un attribut dans une clef métier */ - public static final String TAG_NATURAL_ID = "naturalId"; - /** Tag pour specifier si une clef metier est mutable */ - public static final String TAG_NATURAL_ID_MUTABLE = "naturalIdMutable"; - /** Tag pour spécifier la caractèrelazy d'une association multiple */ - public static final String TAG_LAZY = "lazy"; - /** Tag pour spécifier la caractère fetch d'une association multiple */ - public static final String TAG_FETCH = "fetch"; - /** Tag pour spécifier la caractère order-by d'une association multiple */ - public static final String TAG_ORDER_BY = "orderBy"; - /** Tag pour spécifier la caractère not-null d'un attribut */ - public static final String TAG_NOT_NULL = "notNull"; - /** Tag pour spécifier la caractère embed-xml d'une association */ - public static final String TAG_EMBED_XML = "embedXml"; - /** - * Tag pour configurer l'interface du proxy sur autre chose que l'implementation par defaut. - * - * Par defaut : - * null > generere le proxy sur l'interface de l'implementation - * Autre valeur : - * "none" > laisse la configuration par defaut d'hibernate - */ - public static final String TAG_PROXY_INTERFACE = "hibernateProxyInterface"; - /** Tag pour spécifier le permissions à la création */ - public static final String TAG_SECURITY_CREATE = "securityCreate"; - /** Tag pour spécifier le permissions au chargement */ - public static final String TAG_SECURITY_LOAD = "securityLoad"; - /** Tag pour spécifier le permissions à la mise à jour */ - public static final String TAG_SECURITY_UPDATE = "securityUpdate"; - /** Tag pour spécifier le permissions à la suppression */ - public static final String TAG_SECURITY_DELETE = "securityDelete"; - /** Tag pour specifier de ne pas generer la methode toString */ - public static final String TAG_NOT_GENERATE_TO_STRING = "notGenerateToString"; - /** Tag pour specifier de trier les attributs par nom lors de la generation */ - public static final String TAG_SORT_ATTRIBUTE = "sortAttribute"; - /** Tag pour specfier si on doit générer la methode getOperator dans les daohelpers )*/ - public static final String TAG_GENERATE_OPERATOR_FOR_DAO_HELPER = "generateOperatorForDAOHelper"; - /** Type de persistence Hibernate */ - public static final String PERSISTENCE_TYPE_HIBERNATE = "hibernate"; - /** Type de persistence LDAP */ - public static final String PERSISTENCE_TYPE_LDAP = "ldap"; - /** Type de persistence par défaut (si aucun précisé) */ - public static final String PERSISTENCE_TYPE_DEFAULT = PERSISTENCE_TYPE_HIBERNATE; - /** Propriété des générateurs indiquant le package par défaut */ - public static final String PROPERTY_DEFAULT_PACKAGE = "defaultPackage"; - /** Le package par défaut si aucun n'est spécifié */ - public static final String DEFAULT_PACKAGE = "org.codelutin.malo"; - - /** - * Renvoie le package par défaut pour le générateur donné - * - * @param generator le générateur donné - * @return le package par défaut du générator donné - */ - public static String getDefaultPackage(Template generator) { - String packageName = generator.getProperty(PROPERTY_DEFAULT_PACKAGE); - if (packageName == null || "".equals(packageName)) { - packageName = DEFAULT_PACKAGE; - } - return packageName; - } - -// /** -// * @see GeneratorUtil#hasDocumentation -// * @deprecated -// */ -// @Deprecated -// public static boolean hasDocumentation(ObjectModelElement element) { -// return notEmpty(element.getDocumentation()); -// } - -// /** -// * @see GeneratorUtil#notEmpty -// * @deprecated -// */ -// @Deprecated -// public static boolean notEmpty(String s) { -// return (s != null && !"".equals(s)); -// } - - /** - * Renvoie l'interface DAO associée à la classe passée en paramètre - * - * @param clazz la classe à tester - * @param model le modele utilisé - * @return l'interface trouvée ou null sinon - */ - public static ObjectModelInterface getDAOInterface(ObjectModelClass clazz, - ObjectModel model) { - for (Object o : model.getInterfaces()) { - ObjectModelInterface daoInterface = (ObjectModelInterface) o; - if (daoInterface.getName().equals(clazz.getName() + "DAO")) { - if (daoInterface.hasStereotype(STEREOTYPE_DAO)) { - return daoInterface; - } - } - } - return null; - } - - /** - * Renvoie le type de persistence pour l'élément donné. Si aucun n'est - * trouvé, le type par défaut est utilisé - * - * @param element l'élément à tester - * @return le type de persitence pour l'élément donné. - */ - public static String getPersistenceType(ObjectModelElement element) { - String tag = element.getTagValue(TAG_PERSISTENCE_TYPE); - if (tag == null) { - tag = PERSISTENCE_TYPE_DEFAULT; - } - return tag; - } - - public static String getReverseDBName(ObjectModelAttribute attr) { - if (attr.getReverseAttribute() != null) { - return getDBName(attr.getReverseAttribute()); - } else { - return getDBName(attr) + "_id"; - } - } - - /** - * Renvoie le nom BD de l'élement passé en paramètre. Elle se base sur le - * tag associé si il existe, sinon sur le nom de l'élément - * - * @param element l'élément à tester - * @return le nom de table - */ - public static String getDBName(ObjectModelElement element) { - if (element == null) { - return null; - } - if (notEmpty(element.getTagValue(TAG_DB_NAME))) { - return element.getTagValue(TAG_DB_NAME); - } - return toLowerCaseFirstLetter(element.getName()); - } - - /** - * Cherche et renvoie le schema a utiliser sur cet element, sinon sur le model. - * - * @param element l'élément à tester - * @param model le modele utilisé - * @return le nom du schema ou null - */ - public static String getSchemaName(ObjectModelElement element, - ObjectModel model) { - return findTagValue(TAG_SCHEMA_NAME, element, model); - } - - /** - * Cherche et renvoie le prefixe i18n à utiliser sur cet element, sinon sur le model. - * - * @param element l'élément à tester - * @param model le modele utilisé - * @return le prefix i18n ou <code>null</code> si non spécifié - */ - public static String getI18nPrefix(ObjectModelElement element, - ObjectModel model) { - return GeneratorUtil.findTagValue(TAG_I18N_PREFIX, element, model); - } - - /** - * Cherche et renvoie le prefixe i18n à utiliser sur cet element, sinon sur le model. - * - * @param element l'élément à tester - * @param model le modele utilisé - * @return le prefix i18n ou <code>null</code> si non spécifié - */ - public static boolean shouldgenerateOperatorForDAOHelper(ObjectModelElement element, - ObjectModel model) { - String tagValue = GeneratorUtil.findTagValue(TAG_GENERATE_OPERATOR_FOR_DAO_HELPER, element, model); - boolean generate = GeneratorUtil.notEmpty(tagValue) && Boolean.valueOf(tagValue); - return generate; - } - - /** - * Cherche et renvoie la liste des attributs constituant la clef metier d'une classe. - * - * @param clazz la classe à tester - * @return la liste des attributs de la clef métier ou null si pas de clef métier. - */ - public static List<String> getNaturalId(ObjectModelClass clazz) { - String value = clazz.getTagValue(TAG_NATURAL_ID); - if (value == null || value.trim().isEmpty()) { - return java.util.Collections.emptyList(); - } - List<String> result = new ArrayList<String>(); - for (String attribute : value.split(",")) { - result.add(attribute.trim()); - } - return result; - } - - /** - * Cherche et renvoie la liste des attributs constituant la clef metier d'une classe. - * - * @param clazz la classe à tester - * @param model le modele - * @return la liste des attributs de la clef métier ou null si pas de clef métier. - */ - public static boolean generateToString(ObjectModelClass clazz, - ObjectModel model) { - String value; - value = model.getTagValue(TAG_NOT_GENERATE_TO_STRING); - if (value != null && !value.trim().isEmpty()) { - return false; - } - value = clazz.getTagValue(TAG_NOT_GENERATE_TO_STRING); - if (value != null && !value.trim().isEmpty()) { - return false; - } - return true; - } - - /** - * Cherche et renvoie la liste des attributs constituant la clef metier d'une classe. - * - * @param clazz la classe à tester - * @param model le modele - * @return la liste des attributs de la clef métier ou null si pas de clef métier. - */ - public static boolean sortAttribute(ObjectModelClass clazz, - ObjectModel model) { - String value; - value = clazz.getTagValue(TAG_SORT_ATTRIBUTE); - if (value == null || value.trim().isEmpty() || "false".equals(value.trim())) { - return false; - } - if (value != null && "true".equals(value.trim())) { - return true; - } - - value = model.getTagValue(TAG_SORT_ATTRIBUTE); - if (value == null || value.trim().isEmpty() || "false".equals(value.trim())) { - return false; - } - if (value != null && "true".equals(value.trim())) { - return true; - } - return true; - } - - /** - * Detecte si un attribut fait partie d'une clef metier. - * - * @param attribute l'attribut à tester - * @return <code>true</code> si l'attribut fait partie d'une clef metier, <code>false</cdoe> sinon. - */ - public static boolean isNaturalId(ObjectModelAttribute attribute) { - String value = attribute.getTagValue(TAG_NATURAL_ID); - if (!GeneratorUtil.notEmpty(value)) { - // valeur null, donc pas positionnee - return false; - } - try { - return Boolean.valueOf(value.trim()); - } catch (Exception e) { - // on a pas reussi a convertir en boolean. - //todo peut-être declancher une exception ? - return false; - } - } - - /** - * Cherches et renvoie le copyright a utiliser sur le model. - * - * @param model le modele utilisé - * @return le texte du copyright ou null - */ - public static String getCopyright(Model model) { - return findTagValue(TAG_COPYRIGHT, null, model); - } - -// /** -// * @see GeneratorUtil#findTagValue -// * @deprecated -// */ -// @Deprecated -// public static String findTagValue(String tagName, -// ObjectModelElement element, Model model) { -// if (element == null) { -// if (model != null) { -// if (notEmpty(model.getTagValue(tagName))) { -// return model.getTagValue(tagName); -// } -// } -// return null; -// } -// if (notEmpty(element.getTagValue(tagName))) { -// return element.getTagValue(tagName); -// } -// //On va chercher sur l'element declarant -// return findTagValue(tagName, element.getDeclaringElement(), model); -// } - - public static <Type extends ObjectModelElement> Collection<Type> getElementsWithStereotype( - Collection<Type> elements, String... stereotypes) { - Collection<Type> result = new ArrayList<Type>(); - for (Type element : elements) { - if (hasStereotypes(element, stereotypes)) { - result.add(element); - } - } - return result; - } - - public static boolean hasStereotypes(ObjectModelElement element, - String... stereotypes) { - for (String stereotype : stereotypes) { - if (!element.hasStereotype(stereotype)) { - return false; - } - } - return true; - } - - public static String getPrimaryKeyAttributesListDeclaration( - ObjectModelClass clazz, boolean includeName) { - String attributes = ""; - for (ObjectModelAttribute attr : getElementsWithStereotype(clazz.getAttributes(), STEREOTYPE_PRIMARYKAY)) { - attributes += attr.getType(); - if (includeName) { - attributes += " " + attr.getName(); - } - attributes += ", "; - } - if (attributes.length() > 0) { - attributes = attributes.substring(0, attributes.length() - 2); - } - return attributes; - } - -// public static String capitalize(String s) { -// return StringUtils.capitalize(s); -// } - - public static boolean isAssociationClassDoublon(ObjectModelAttribute attr) { - return (attr.getReverseAttribute() != null) && (attr.getDeclaringElement().equals(attr.getReverseAttribute().getDeclaringElement())) && (!GeneratorUtil.isFirstAttribute(attr)); - } - - /** - * Renvoie le nom de l'attribut de classe d'association en fonction des cas: - * Si l'attribut porte le même nom que le type (extrémité inverse de - * l'association), on lui ajoute le nom de la classe d'association - * - * @param attr l'attribut a traiter - * @return le nom de l'attribut de classe d'association - */ - public static String getAssocAttrName(ObjectModelAttribute attr) { - String typeName = attr.getType().substring( - attr.getType().lastIndexOf(".") + 1); - String result = attr.getName(); - if (attr.getName().equalsIgnoreCase(typeName)) { - result += StringUtils.capitalize(attr.getAssociationClass().getName()); - } - return result; - } - - public static String getDOType(ObjectModelElement elem, ObjectModel model) { - String type = elem.getName(); - if (elem instanceof ObjectModelAttribute) { - type = ((ObjectModelAttribute) elem).getType(); - } - if (elem instanceof ObjectModelClass) { - type = ((ObjectModelClass) elem).getQualifiedName(); - } - return getDOType(type, model); - } - - public static String getDOType(String type, ObjectModel model) { - if (!model.hasClass(type)) { - return type; - } - ObjectModelClass clazz = model.getClass(type); - if (clazz.hasStereotype(STEREOTYPE_ENTITY)) { - if (shouldBeAbstract(clazz)) { - type += "Abstract"; - } else { - type += "Impl"; - } - } - return type; - } - private static final Set<String> numberTypes = new HashSet<String>(); - private static final Set<String> textTypes = new HashSet<String>(); - private static final Set<String> booleanTypes = new HashSet<String>(); - private static final Set<String> primitiveTypes = new HashSet<String>(); - private static final String VOID_TYPE = "void"; - - static { - numberTypes.add("byte"); - numberTypes.add("java.lang.Byte"); - numberTypes.add("Byte"); - numberTypes.add("short"); - numberTypes.add("java.lang.Short"); - numberTypes.add("Short"); - numberTypes.add("int"); - numberTypes.add("java.lang.Integer"); - numberTypes.add("Integer"); - numberTypes.add("long"); - numberTypes.add("java.lang.Long"); - numberTypes.add("Long"); - numberTypes.add("float"); - numberTypes.add("java.lang.Float"); - numberTypes.add("Float"); - numberTypes.add("double"); - numberTypes.add("java.lang.Double"); - numberTypes.add("Double"); - - textTypes.add("char"); - textTypes.add("java.lang.Char"); - textTypes.add("Char"); - textTypes.add("java.lang.String"); - textTypes.add("String"); - - booleanTypes.add("boolean"); - booleanTypes.add("java.lang.Boolean"); - booleanTypes.add("Boolean"); - - primitiveTypes.addAll(numberTypes); - primitiveTypes.addAll(textTypes); - primitiveTypes.addAll(booleanTypes); - } - - public static boolean isNumericType(ObjectModelAttribute attr) { - return numberTypes.contains(attr.getType()); - } - - public static boolean isTextType(ObjectModelAttribute attr) { - return textTypes.contains(attr.getType()); - } - - public static boolean isDateType(ObjectModelAttribute attr) { - return "java.util.Date".equals(attr.getType()); - } - - public static boolean isBooleanType(ObjectModelAttribute attr) { - return booleanTypes.contains(attr.getType()); - } - - public static boolean isPrimitiveType(ObjectModelAttribute attr) { - return primitiveTypes.contains(attr.getType()); - } - - /** - * Indique si la classe specifiee n'a aucune ou que des methodes abstraites - * - * @param clazz l'instance de ObjectModelClass - * @return true si la classe n'a que des operations abstraite ou aucune - * operation - */ - public static boolean hasNothingOrAbstractMethods(ObjectModelClass clazz) { - boolean result = true; - Iterator<?> operations = clazz.getOperations().iterator(); - while (result && operations.hasNext()) { - ObjectModelOperation op = (ObjectModelOperation) operations.next(); - result = op.isAbstract(); - } - return result; - } - - /** - * Indique si la classe specifiee devrait etre abstraite - * - * @param clazz l'instance de ObjectModelClass - * @return true dans ce cas, false sinon - */ - public static boolean shouldBeAbstract(ObjectModelClass clazz) { - return clazz != null && (clazz.isAbstract() && hasNothingOrAbstractMethods(clazz)); - } - - /** - * <p> - * Cette méthode permet de détecter si - * - l'attribut représente une relation 1-n - * - cette relation est unidirectionnelle - * - le type de l'attribut représente un entité - * - cette entité a des sous-classes dans le modèle - * <p/> - * Ce cas correspond à une incompatibilité d'Hibernate qui nous oblige a - * adopter un comportement particulier. - * </p> - * - * @param attr l'attribut a tester - * @param model le model - * @return true si et seulement si il s'agit bien de ce type de relation - */ - public static boolean hasUnidirectionalRelationOnAbstractType( - ObjectModelAttribute attr, ObjectModel model) { - ObjectModelAttribute reverse = attr.getReverseAttribute(); - //relation 1-n - if (reverse != null && isNMultiplicity(attr) && !isNMultiplicity(reverse)) { - //Pas de navigabilité - if (!reverse.isNavigable()) { - //Il s'agit d'une entity - ObjectModelClass clazz = model.getClass(attr.getType()); - if (clazz != null && clazz.hasStereotype(STEREOTYPE_ENTITY)) { - //Cette classe a des sous-classes dans le modèle - for (ObjectModelClass subClass : model.getClasses()) { - if (subClass.getSuperclasses().contains(clazz)) { - return true; - } - } - } - } - } - return false; - } - - /** - * Renvoie le nom unique de table pour une relation ManyToMany en fonction - * de l'attribut <code>attr</code> - * <p/> - * Plusieurs cas de figure: - * <li> - * - * @param attr l'attribut servant de base au calcul du nom - * @return le nom de la table - */ - public static String getManyToManyTableName(ObjectModelAttribute attr) { - String result; - - if (attr.hasAssociationClass()) { - result = TopiaGeneratorUtil.getDBName(attr.getAssociationClass()); - } else { - String name = attr.getName(); - String revers = attr.getReverseAttributeName(); - - if (name.compareToIgnoreCase(revers) < 0) { - result = name + "_" + revers; - } else { - result = revers + "_" + name; - } - } - // String result; - // if (!Util.isFirstAttribute(attr)) { - // result = attr.getDeclaringElement().getName() + "_" + attr.getReverseAttribute().getDeclaringElement().getName(); - // } else { - // result = attr.getReverseAttribute().getDeclaringElement().getName() + "_" + attr.getDeclaringElement().getName(); - // } - return result.toLowerCase(); - } - - /** - * Renvoie le type d'interface à utiliser en fonction de l'attribut - * - * @param attr l'attribut a traiter - * @return String - */ - public static String getNMultiplicityInterfaceType(ObjectModelAttribute attr) { - if (attr.hasStereotype(STEREOTYPE_UNIQUE)) { - return Set.class.getName(); - } else if (attr.isIndexed() || attr.isOrdered()) { - return List.class.getName(); - } - return Collection.class.getName(); - } - - /** - * Renvoie le type d'objet (instance) à utiliser en fonction de l'attribut - * - * @param attr l'attribut a traiter - * @return String - */ - public static String getNMultiplicityObjectType(ObjectModelAttribute attr) { - if (attr.hasStereotype(STEREOTYPE_UNIQUE)) { - return HashSet.class.getName(); - } else if (attr.isIndexed() || attr.isOrdered()) { - //On considère qu'on ne sait pas traiter vraiment l'attribut "ordered" - // puisqu'on va conserver l'ordre d'insertion, et non un ordre en - // fonction d'un élément donné. Donc on renvoi une ArrayList - return ArrayList.class.getName(); - } - LinkedList.class.getName(); - return ArrayList.class.getName(); - } - - /** - * Renvoie le type d'interface à utiliser en fonction de l'attribut - * - * @param attr l'attribut a traiter - * @return String - */ - public static String getNMultiplicityHibernateType(ObjectModelAttribute attr) { - if (attr.hasStereotype(STEREOTYPE_UNIQUE)) { - return "set"; - } else if (attr.isIndexed()) { - return "list"; - } - //attr.isOrdered() - On génère le ordered en bag - return "bag"; - } - - /** - * Obtain the list of entities classes with the possibility to sort the result. - * - * @param model the current model to scan - * @param sort flag to allow sort the result - * @return the list of filtred classes by their stereotype - */ - public static List<ObjectModelClass> getEntityClasses(ObjectModel model, - boolean sort) { - return getClassesByStereotype(STEREOTYPE_ENTITY, model, sort); - } - - /** - * Obtain the list of classes for a given stereotype with the possibility to sort the result. - * - * @param stereotype filter stereotype - * @param model the current model to scan - * @param sort flag to allow sort the result - * @return the list of filtred classes by their stereotype - */ - public static List<ObjectModelClass> getClassesByStereotype( - String stereotype, ObjectModel model, boolean sort) { - List<ObjectModelClass> classes = new ArrayList<ObjectModelClass>(); - for (ObjectModelClass clazz : model.getClasses()) { - if (clazz.hasStereotype(stereotype)) { - classes.add(clazz); - } - } - if (sort && !classes.isEmpty()) { - java.util.Collections.sort(classes, - new java.util.Comparator<ObjectModelClass>() { - - @Override - public int compare(ObjectModelClass o1, - ObjectModelClass o2) { - return o1.getQualifiedName().compareTo( - o2.getQualifiedName()); - } - }); - } - return classes; - } - - /** - * Detecte si la clef metier d'une classe est mutable ou pas. - * <p/> - * On respecte la valeur par defaut d'hibernate, à savoir que par default une clef metier est non mutable. - * - * @param clazz la classe a tester - * @return <code>true</code> si le tag value a ete positionne sur la classe via le tag - * {@link #TAG_NATURAL_ID_MUTABLE}, , <code>false</code> sinon. - */ - public static boolean isNaturalIdMutable(ObjectModelClass clazz) { - String value = clazz.getTagValue(TAG_NATURAL_ID_MUTABLE); - if (!notEmpty(value)) { - // valeur null, donc par default positionnee - return false; - } - try { - return Boolean.valueOf(value.trim()); - } catch (Exception e) { - // on a pas reussi a convertir en boolean. - //todo peut-être declancher une exception ? - return false; - } - } - - /** - * Obtain the list of fqn of object involed in the given class. - * - * @param aClass the clazz to inspect - * @param incomingFqns incoming fqns - * @return the list of fqn of attributes - */ - public static List<String> getImports(ObjectModelClass aClass, String... incomingFqns) { - Set<String> tmp = new HashSet<String>(); - tmp.addAll(Arrays.asList(incomingFqns)); - getImports(aClass, tmp); - List<String> result = cleanImports(aClass.getPackageName(), tmp); - return result; - } - - /** - * Obtain the list of fqn of object involed in the given interface. - * - * @param anInterface the interface to inspect - * @param incomingFqns incoming fqns - * @return the list of fqn of attributes - */ - public static List<String> getImports(ObjectModelInterface anInterface, String... incomingFqns) { - Set<String> tmp = new HashSet<String>(); - tmp.addAll(Arrays.asList(incomingFqns)); - getImports(anInterface, tmp); - List<String> result = cleanImports(anInterface.getPackageName(), tmp); - return result; - } - - public static String getSimpleName(String fqn) { - int lasIndex = fqn.lastIndexOf("."); - if (lasIndex == 1) { - // primitive type - return fqn; - } - return fqn.substring(lasIndex + 1); - /*if (lasIndex == aClass.getPackageName().length()) { - // same package - return fqn.substring(lasIndex + 1); - } - - return fqn;*/ - } - - /** - * Obtain the list of fqn of object involed in the given class. - * - * @param aClass the class to inspect - * @param fqns where to store found fqns - */ - protected static void getImports(ObjectModelClass aClass, Set<String> fqns) { - // scan attributes - for (ObjectModelAttribute attr : aClass.getAttributes()) { - fqns.add(attr.getType()); - if (isNMultiplicity(attr)) { - String collectionType = getNMultiplicityInterfaceType(attr); - fqns.add(collectionType); - String collectionObject = getNMultiplicityObjectType(attr); - fqns.add(collectionObject); - } - } - for (ObjectModelAttribute attribute : aClass.getAllOtherAttributes()) { - fqns.add(attribute.getType()); - } - // scan associations - if (aClass instanceof ObjectModelAssociationClass) { - ObjectModelAssociationClass assoc = (ObjectModelAssociationClass) aClass; - for (ObjectModelAttribute attr : assoc.getParticipantsAttributes()) { - if (attr == null) { - continue; - } - fqns.add(attr.getType()); - if (isNMultiplicity(attr)) { - String collectionType = getNMultiplicityInterfaceType(attr); - fqns.add(collectionType); - String collectionObject = getNMultiplicityObjectType(attr); - fqns.add(collectionObject); - } - } - } - // scan operations - for (ObjectModelOperation operation : aClass.getOperations()) { - getImports(operation, fqns); - } - // scan super interfaces - for (ObjectModelInterface modelInterface : aClass.getInterfaces()) { - fqns.add(modelInterface.getQualifiedName()); - getImports(modelInterface, fqns); - } - // scan super classes - for (ObjectModelClass modelClass : aClass.getSuperclasses()) { - fqns.add(modelClass.getQualifiedName()); - getImports(modelClass); - } - } - - /** - * Obtain the list of fqn of object involed in the given interface. - * - * @param anInterface the interface to inspect - * @param fqns where to store found fqns - */ - protected static void getImports(ObjectModelInterface anInterface, Set<String> fqns) { - // scan operations - for (ObjectModelOperation operation : anInterface.getOperations()) { - getImports(operation, fqns); - } - // scan super interfaces - for (ObjectModelInterface modelInterface : anInterface.getInterfaces()) { - fqns.add(modelInterface.getQualifiedName()); - getImports(modelInterface, fqns); - } - } - - /** - * Obtain the fqn's list of all involed type in a givne operation. - * - * @param operation operation to inspect - * @param fqns where to store found fqns - */ - protected static void getImports(ObjectModelOperation operation, Set<String> fqns) { - String fqn = operation.getReturnType(); - fqns.add(fqn); - for (ObjectModelParameter parameter : operation.getParameters()) { - fqns.add(parameter.getType()); - } - } - - /** - * Clean a set of fqns, transform it into a {@link List} and sort it. - * - * @param packageName the current package name - * @param fqns the dirty set of fqns - * @return the sorted cleaned list of fqns. - */ - protected static List<String> cleanImports(String packageName, Set<String> fqns) { - fqns.removeAll(primitiveTypes); - fqns.remove(VOID_TYPE); - int packageLength = packageName.length(); - List<String> genericType = new ArrayList<String>(); - for (Iterator<String> it = fqns.iterator(); it.hasNext();) { - String fqn = it.next(); - int lastIndex = fqn.lastIndexOf("."); - if (lastIndex == packageLength && fqn.startsWith(packageName)) { - // same package - it.remove(); - continue; - } - int genericIndex = fqn.indexOf('<'); - if (genericIndex != -1) { - genericType.add(fqn.substring(0, genericIndex)); - it.remove(); - } - } - fqns.addAll(genericType); - - ArrayList<String> result = new ArrayList<String>(fqns); - java.util.Collections.sort(result); - return result; - } - - /** - * Convertit un nom de variable en nom de constante. - * - * @param variableName le nom de variable a convertir - * @return le nom de la constante à partir du nom de la variable - */ - public static String convertVariableNameToConstantName(String variableName) { - //TODO Faire des tests pour savoir si variableName est non null et valide - //TODO Ameliorer l'algo pour tenir compte des caractères non alpha - //TODO pour le moment cela convient, donc... - StringBuilder buffer = new StringBuilder(); - boolean lastCarIsUp = false; - for (int i = 0, j = variableName.length(); i < j; i++) { - char c = variableName.charAt(i); - boolean carIsUp = Character.isUpperCase(c); - if (i > 0 && !lastCarIsUp && carIsUp) { - // ajout d'un _ - buffer.append('_'); - } - if (carIsUp) { - buffer.append(c); - } else { - buffer.append(Character.toUpperCase(c)); - } - lastCarIsUp = carIsUp; - } - return buffer.toString(); - } -} // GeneratorUtil - Copied: trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TopiaGeneratorUtil.java (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TopiaGeneratorUtil.java) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TopiaGeneratorUtil.java (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/java/org/nuiton/eugene/test/generator/TopiaGeneratorUtil.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,948 @@ +/* *##% + * EUGene Test + * Copyright (C) 2007 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ +/******************************************************************************* + * GeneratorUtil.java + * + * Created: 13 déc. 2005 + * + * @author Arnaud Thimel <thimel@codelutin.com> + * + * @version $Revision$ + * + * Mise a jour: $Date$ par : $Author: tchemit $ + */ +package org.nuiton.eugene.test.generator; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Set; + +import org.apache.commons.lang.StringUtils; +import org.nuiton.eugene.Template; +import org.nuiton.eugene.GeneratorUtil; +import org.nuiton.eugene.models.Model; +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelAssociationClass; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelElement; +import org.nuiton.eugene.models.object.ObjectModelInterface; +import org.nuiton.eugene.models.object.ObjectModelOperation; +import org.nuiton.eugene.models.object.ObjectModelParameter; + +/** Classe regroupant divers méthodes utiles pour la génération des entités */ +public class TopiaGeneratorUtil extends GeneratorUtil { + + /** Stéréotype pour les interfaces devant être générées sous forme de facades */ + public final static String STEREOTYPE_FACADE = "facade"; + /** Stéréotype pour les objets devant être générées sous forme d'entités */ + public static final String STEREOTYPE_ENTITY = "entity"; + /** Stéréotype pour les objets devant être générées sous forme de DTO */ + public static final String STEREOTYPE_DTO = "dto"; + /** Stéréotype pour les objets devant être générées sous forme de bean */ + public static final String STEREOTYPE_BEAN = "bean"; + /** + * Stéréotype pour les interfaces devant être générées sous forme de + * services + */ + public static final String STEREOTYPE_SERVICE = "service"; + /** Stéréotype pour les interfaces devant être générées sous forme de DAO */ + public static final String STEREOTYPE_DAO = "dao"; + /** Stéréotype pour les attributs à indexer en base */ + public static final String STEREOTYPE_INDEXED = "indexed"; + /** Stéréotype pour les collections avec unicité */ + public static final String STEREOTYPE_UNIQUE = "unique"; + /** Stéréotype pour les attributs étant des clés primaires */ + public static final String STEREOTYPE_PRIMARYKAY = "primaryKey"; + /** Tag pour le type de persistence */ + public static final String TAG_PERSISTENCE_TYPE = "persistenceType"; + /** Tag pour le nom du champ / entité en BD */ + public static final String TAG_DB_NAME = "dbName"; + /** Tag pour le nom du schema en BD */ + public static final String TAG_SCHEMA_NAME = "dbSchema"; + /** Tag pour la taille du champ en BD */ + public static final String TAG_LENGTH = "length"; + /** Tag pour ajouter une annotation à un champ */ + public static final String TAG_ANNOTATION = "annotation"; + /** Tag pour ajouter specifier le copyright d'un fichier */ + public static final String TAG_COPYRIGHT = "copyright"; + /** Tag pour specfier le type d'acces a un champ */ + public static final String TAG_ACCESS = "access"; + /** Tag pour specfier si on doit générer i18n */ + public static final String TAG_I18N_PREFIX = "i18n"; + /** Tag pour ajouter un attribut dans une clef métier */ + public static final String TAG_NATURAL_ID = "naturalId"; + /** Tag pour specifier si une clef metier est mutable */ + public static final String TAG_NATURAL_ID_MUTABLE = "naturalIdMutable"; + /** Tag pour spécifier la caractèrelazy d'une association multiple */ + public static final String TAG_LAZY = "lazy"; + /** Tag pour spécifier la caractère fetch d'une association multiple */ + public static final String TAG_FETCH = "fetch"; + /** Tag pour spécifier la caractère order-by d'une association multiple */ + public static final String TAG_ORDER_BY = "orderBy"; + /** Tag pour spécifier la caractère not-null d'un attribut */ + public static final String TAG_NOT_NULL = "notNull"; + /** Tag pour spécifier la caractère embed-xml d'une association */ + public static final String TAG_EMBED_XML = "embedXml"; + /** + * Tag pour configurer l'interface du proxy sur autre chose que l'implementation par defaut. + * + * Par defaut : + * null > generere le proxy sur l'interface de l'implementation + * Autre valeur : + * "none" > laisse la configuration par defaut d'hibernate + */ + public static final String TAG_PROXY_INTERFACE = "hibernateProxyInterface"; + /** Tag pour spécifier le permissions à la création */ + public static final String TAG_SECURITY_CREATE = "securityCreate"; + /** Tag pour spécifier le permissions au chargement */ + public static final String TAG_SECURITY_LOAD = "securityLoad"; + /** Tag pour spécifier le permissions à la mise à jour */ + public static final String TAG_SECURITY_UPDATE = "securityUpdate"; + /** Tag pour spécifier le permissions à la suppression */ + public static final String TAG_SECURITY_DELETE = "securityDelete"; + /** Tag pour specifier de ne pas generer la methode toString */ + public static final String TAG_NOT_GENERATE_TO_STRING = "notGenerateToString"; + /** Tag pour specifier de trier les attributs par nom lors de la generation */ + public static final String TAG_SORT_ATTRIBUTE = "sortAttribute"; + /** Tag pour specfier si on doit générer la methode getOperator dans les daohelpers )*/ + public static final String TAG_GENERATE_OPERATOR_FOR_DAO_HELPER = "generateOperatorForDAOHelper"; + /** Type de persistence Hibernate */ + public static final String PERSISTENCE_TYPE_HIBERNATE = "hibernate"; + /** Type de persistence LDAP */ + public static final String PERSISTENCE_TYPE_LDAP = "ldap"; + /** Type de persistence par défaut (si aucun précisé) */ + public static final String PERSISTENCE_TYPE_DEFAULT = PERSISTENCE_TYPE_HIBERNATE; + /** Propriété des générateurs indiquant le package par défaut */ + public static final String PROPERTY_DEFAULT_PACKAGE = "defaultPackage"; + /** Le package par défaut si aucun n'est spécifié */ + public static final String DEFAULT_PACKAGE = "org.codelutin.malo"; + + /** + * Renvoie le package par défaut pour le générateur donné + * + * @param generator le générateur donné + * @return le package par défaut du générator donné + */ + public static String getDefaultPackage(Template generator) { + String packageName = generator.getProperty(PROPERTY_DEFAULT_PACKAGE); + if (packageName == null || "".equals(packageName)) { + packageName = DEFAULT_PACKAGE; + } + return packageName; + } + +// /** +// * @see GeneratorUtil#hasDocumentation +// * @deprecated +// */ +// @Deprecated +// public static boolean hasDocumentation(ObjectModelElement element) { +// return notEmpty(element.getDocumentation()); +// } + +// /** +// * @see GeneratorUtil#notEmpty +// * @deprecated +// */ +// @Deprecated +// public static boolean notEmpty(String s) { +// return (s != null && !"".equals(s)); +// } + + /** + * Renvoie l'interface DAO associée à la classe passée en paramètre + * + * @param clazz la classe à tester + * @param model le modele utilisé + * @return l'interface trouvée ou null sinon + */ + public static ObjectModelInterface getDAOInterface(ObjectModelClass clazz, + ObjectModel model) { + for (Object o : model.getInterfaces()) { + ObjectModelInterface daoInterface = (ObjectModelInterface) o; + if (daoInterface.getName().equals(clazz.getName() + "DAO")) { + if (daoInterface.hasStereotype(STEREOTYPE_DAO)) { + return daoInterface; + } + } + } + return null; + } + + /** + * Renvoie le type de persistence pour l'élément donné. Si aucun n'est + * trouvé, le type par défaut est utilisé + * + * @param element l'élément à tester + * @return le type de persitence pour l'élément donné. + */ + public static String getPersistenceType(ObjectModelElement element) { + String tag = element.getTagValue(TAG_PERSISTENCE_TYPE); + if (tag == null) { + tag = PERSISTENCE_TYPE_DEFAULT; + } + return tag; + } + + public static String getReverseDBName(ObjectModelAttribute attr) { + if (attr.getReverseAttribute() != null) { + return getDBName(attr.getReverseAttribute()); + } else { + return getDBName(attr) + "_id"; + } + } + + /** + * Renvoie le nom BD de l'élement passé en paramètre. Elle se base sur le + * tag associé si il existe, sinon sur le nom de l'élément + * + * @param element l'élément à tester + * @return le nom de table + */ + public static String getDBName(ObjectModelElement element) { + if (element == null) { + return null; + } + if (notEmpty(element.getTagValue(TAG_DB_NAME))) { + return element.getTagValue(TAG_DB_NAME); + } + return toLowerCaseFirstLetter(element.getName()); + } + + /** + * Cherche et renvoie le schema a utiliser sur cet element, sinon sur le model. + * + * @param element l'élément à tester + * @param model le modele utilisé + * @return le nom du schema ou null + */ + public static String getSchemaName(ObjectModelElement element, + ObjectModel model) { + return findTagValue(TAG_SCHEMA_NAME, element, model); + } + + /** + * Cherche et renvoie le prefixe i18n à utiliser sur cet element, sinon sur le model. + * + * @param element l'élément à tester + * @param model le modele utilisé + * @return le prefix i18n ou <code>null</code> si non spécifié + */ + public static String getI18nPrefix(ObjectModelElement element, + ObjectModel model) { + return GeneratorUtil.findTagValue(TAG_I18N_PREFIX, element, model); + } + + /** + * Cherche et renvoie le prefixe i18n à utiliser sur cet element, sinon sur le model. + * + * @param element l'élément à tester + * @param model le modele utilisé + * @return le prefix i18n ou <code>null</code> si non spécifié + */ + public static boolean shouldgenerateOperatorForDAOHelper(ObjectModelElement element, + ObjectModel model) { + String tagValue = GeneratorUtil.findTagValue(TAG_GENERATE_OPERATOR_FOR_DAO_HELPER, element, model); + boolean generate = GeneratorUtil.notEmpty(tagValue) && Boolean.valueOf(tagValue); + return generate; + } + + /** + * Cherche et renvoie la liste des attributs constituant la clef metier d'une classe. + * + * @param clazz la classe à tester + * @return la liste des attributs de la clef métier ou null si pas de clef métier. + */ + public static List<String> getNaturalId(ObjectModelClass clazz) { + String value = clazz.getTagValue(TAG_NATURAL_ID); + if (value == null || value.trim().isEmpty()) { + return java.util.Collections.emptyList(); + } + List<String> result = new ArrayList<String>(); + for (String attribute : value.split(",")) { + result.add(attribute.trim()); + } + return result; + } + + /** + * Cherche et renvoie la liste des attributs constituant la clef metier d'une classe. + * + * @param clazz la classe à tester + * @param model le modele + * @return la liste des attributs de la clef métier ou null si pas de clef métier. + */ + public static boolean generateToString(ObjectModelClass clazz, + ObjectModel model) { + String value; + value = model.getTagValue(TAG_NOT_GENERATE_TO_STRING); + if (value != null && !value.trim().isEmpty()) { + return false; + } + value = clazz.getTagValue(TAG_NOT_GENERATE_TO_STRING); + if (value != null && !value.trim().isEmpty()) { + return false; + } + return true; + } + + /** + * Cherche et renvoie la liste des attributs constituant la clef metier d'une classe. + * + * @param clazz la classe à tester + * @param model le modele + * @return la liste des attributs de la clef métier ou null si pas de clef métier. + */ + public static boolean sortAttribute(ObjectModelClass clazz, + ObjectModel model) { + String value; + value = clazz.getTagValue(TAG_SORT_ATTRIBUTE); + if (value == null || value.trim().isEmpty() || "false".equals(value.trim())) { + return false; + } + if (value != null && "true".equals(value.trim())) { + return true; + } + + value = model.getTagValue(TAG_SORT_ATTRIBUTE); + if (value == null || value.trim().isEmpty() || "false".equals(value.trim())) { + return false; + } + if (value != null && "true".equals(value.trim())) { + return true; + } + return true; + } + + /** + * Detecte si un attribut fait partie d'une clef metier. + * + * @param attribute l'attribut à tester + * @return <code>true</code> si l'attribut fait partie d'une clef metier, <code>false</cdoe> sinon. + */ + public static boolean isNaturalId(ObjectModelAttribute attribute) { + String value = attribute.getTagValue(TAG_NATURAL_ID); + if (!GeneratorUtil.notEmpty(value)) { + // valeur null, donc pas positionnee + return false; + } + try { + return Boolean.valueOf(value.trim()); + } catch (Exception e) { + // on a pas reussi a convertir en boolean. + //todo peut-être declancher une exception ? + return false; + } + } + + /** + * Cherches et renvoie le copyright a utiliser sur le model. + * + * @param model le modele utilisé + * @return le texte du copyright ou null + */ + public static String getCopyright(Model model) { + return findTagValue(TAG_COPYRIGHT, null, model); + } + +// /** +// * @see GeneratorUtil#findTagValue +// * @deprecated +// */ +// @Deprecated +// public static String findTagValue(String tagName, +// ObjectModelElement element, Model model) { +// if (element == null) { +// if (model != null) { +// if (notEmpty(model.getTagValue(tagName))) { +// return model.getTagValue(tagName); +// } +// } +// return null; +// } +// if (notEmpty(element.getTagValue(tagName))) { +// return element.getTagValue(tagName); +// } +// //On va chercher sur l'element declarant +// return findTagValue(tagName, element.getDeclaringElement(), model); +// } + + public static <Type extends ObjectModelElement> Collection<Type> getElementsWithStereotype( + Collection<Type> elements, String... stereotypes) { + Collection<Type> result = new ArrayList<Type>(); + for (Type element : elements) { + if (hasStereotypes(element, stereotypes)) { + result.add(element); + } + } + return result; + } + + public static boolean hasStereotypes(ObjectModelElement element, + String... stereotypes) { + for (String stereotype : stereotypes) { + if (!element.hasStereotype(stereotype)) { + return false; + } + } + return true; + } + + public static String getPrimaryKeyAttributesListDeclaration( + ObjectModelClass clazz, boolean includeName) { + String attributes = ""; + for (ObjectModelAttribute attr : getElementsWithStereotype(clazz.getAttributes(), STEREOTYPE_PRIMARYKAY)) { + attributes += attr.getType(); + if (includeName) { + attributes += " " + attr.getName(); + } + attributes += ", "; + } + if (attributes.length() > 0) { + attributes = attributes.substring(0, attributes.length() - 2); + } + return attributes; + } + +// public static String capitalize(String s) { +// return StringUtils.capitalize(s); +// } + + public static boolean isAssociationClassDoublon(ObjectModelAttribute attr) { + return (attr.getReverseAttribute() != null) && (attr.getDeclaringElement().equals(attr.getReverseAttribute().getDeclaringElement())) && (!GeneratorUtil.isFirstAttribute(attr)); + } + + /** + * Renvoie le nom de l'attribut de classe d'association en fonction des cas: + * Si l'attribut porte le même nom que le type (extrémité inverse de + * l'association), on lui ajoute le nom de la classe d'association + * + * @param attr l'attribut a traiter + * @return le nom de l'attribut de classe d'association + */ + public static String getAssocAttrName(ObjectModelAttribute attr) { + String typeName = attr.getType().substring( + attr.getType().lastIndexOf(".") + 1); + String result = attr.getName(); + if (attr.getName().equalsIgnoreCase(typeName)) { + result += StringUtils.capitalize(attr.getAssociationClass().getName()); + } + return result; + } + + public static String getDOType(ObjectModelElement elem, ObjectModel model) { + String type = elem.getName(); + if (elem instanceof ObjectModelAttribute) { + type = ((ObjectModelAttribute) elem).getType(); + } + if (elem instanceof ObjectModelClass) { + type = ((ObjectModelClass) elem).getQualifiedName(); + } + return getDOType(type, model); + } + + public static String getDOType(String type, ObjectModel model) { + if (!model.hasClass(type)) { + return type; + } + ObjectModelClass clazz = model.getClass(type); + if (clazz.hasStereotype(STEREOTYPE_ENTITY)) { + if (shouldBeAbstract(clazz)) { + type += "Abstract"; + } else { + type += "Impl"; + } + } + return type; + } + private static final Set<String> numberTypes = new HashSet<String>(); + private static final Set<String> textTypes = new HashSet<String>(); + private static final Set<String> booleanTypes = new HashSet<String>(); + private static final Set<String> primitiveTypes = new HashSet<String>(); + private static final String VOID_TYPE = "void"; + + static { + numberTypes.add("byte"); + numberTypes.add("java.lang.Byte"); + numberTypes.add("Byte"); + numberTypes.add("short"); + numberTypes.add("java.lang.Short"); + numberTypes.add("Short"); + numberTypes.add("int"); + numberTypes.add("java.lang.Integer"); + numberTypes.add("Integer"); + numberTypes.add("long"); + numberTypes.add("java.lang.Long"); + numberTypes.add("Long"); + numberTypes.add("float"); + numberTypes.add("java.lang.Float"); + numberTypes.add("Float"); + numberTypes.add("double"); + numberTypes.add("java.lang.Double"); + numberTypes.add("Double"); + + textTypes.add("char"); + textTypes.add("java.lang.Char"); + textTypes.add("Char"); + textTypes.add("java.lang.String"); + textTypes.add("String"); + + booleanTypes.add("boolean"); + booleanTypes.add("java.lang.Boolean"); + booleanTypes.add("Boolean"); + + primitiveTypes.addAll(numberTypes); + primitiveTypes.addAll(textTypes); + primitiveTypes.addAll(booleanTypes); + } + + public static boolean isNumericType(ObjectModelAttribute attr) { + return numberTypes.contains(attr.getType()); + } + + public static boolean isTextType(ObjectModelAttribute attr) { + return textTypes.contains(attr.getType()); + } + + public static boolean isDateType(ObjectModelAttribute attr) { + return "java.util.Date".equals(attr.getType()); + } + + public static boolean isBooleanType(ObjectModelAttribute attr) { + return booleanTypes.contains(attr.getType()); + } + + public static boolean isPrimitiveType(ObjectModelAttribute attr) { + return primitiveTypes.contains(attr.getType()); + } + + /** + * Indique si la classe specifiee n'a aucune ou que des methodes abstraites + * + * @param clazz l'instance de ObjectModelClass + * @return true si la classe n'a que des operations abstraite ou aucune + * operation + */ + public static boolean hasNothingOrAbstractMethods(ObjectModelClass clazz) { + boolean result = true; + Iterator<?> operations = clazz.getOperations().iterator(); + while (result && operations.hasNext()) { + ObjectModelOperation op = (ObjectModelOperation) operations.next(); + result = op.isAbstract(); + } + return result; + } + + /** + * Indique si la classe specifiee devrait etre abstraite + * + * @param clazz l'instance de ObjectModelClass + * @return true dans ce cas, false sinon + */ + public static boolean shouldBeAbstract(ObjectModelClass clazz) { + return clazz != null && (clazz.isAbstract() && hasNothingOrAbstractMethods(clazz)); + } + + /** + * <p> + * Cette méthode permet de détecter si + * - l'attribut représente une relation 1-n + * - cette relation est unidirectionnelle + * - le type de l'attribut représente un entité + * - cette entité a des sous-classes dans le modèle + * <p/> + * Ce cas correspond à une incompatibilité d'Hibernate qui nous oblige a + * adopter un comportement particulier. + * </p> + * + * @param attr l'attribut a tester + * @param model le model + * @return true si et seulement si il s'agit bien de ce type de relation + */ + public static boolean hasUnidirectionalRelationOnAbstractType( + ObjectModelAttribute attr, ObjectModel model) { + ObjectModelAttribute reverse = attr.getReverseAttribute(); + //relation 1-n + if (reverse != null && isNMultiplicity(attr) && !isNMultiplicity(reverse)) { + //Pas de navigabilité + if (!reverse.isNavigable()) { + //Il s'agit d'une entity + ObjectModelClass clazz = model.getClass(attr.getType()); + if (clazz != null && clazz.hasStereotype(STEREOTYPE_ENTITY)) { + //Cette classe a des sous-classes dans le modèle + for (ObjectModelClass subClass : model.getClasses()) { + if (subClass.getSuperclasses().contains(clazz)) { + return true; + } + } + } + } + } + return false; + } + + /** + * Renvoie le nom unique de table pour une relation ManyToMany en fonction + * de l'attribut <code>attr</code> + * <p/> + * Plusieurs cas de figure: + * <li> + * + * @param attr l'attribut servant de base au calcul du nom + * @return le nom de la table + */ + public static String getManyToManyTableName(ObjectModelAttribute attr) { + String result; + + if (attr.hasAssociationClass()) { + result = TopiaGeneratorUtil.getDBName(attr.getAssociationClass()); + } else { + String name = attr.getName(); + String revers = attr.getReverseAttributeName(); + + if (name.compareToIgnoreCase(revers) < 0) { + result = name + "_" + revers; + } else { + result = revers + "_" + name; + } + } + // String result; + // if (!Util.isFirstAttribute(attr)) { + // result = attr.getDeclaringElement().getName() + "_" + attr.getReverseAttribute().getDeclaringElement().getName(); + // } else { + // result = attr.getReverseAttribute().getDeclaringElement().getName() + "_" + attr.getDeclaringElement().getName(); + // } + return result.toLowerCase(); + } + + /** + * Renvoie le type d'interface à utiliser en fonction de l'attribut + * + * @param attr l'attribut a traiter + * @return String + */ + public static String getNMultiplicityInterfaceType(ObjectModelAttribute attr) { + if (attr.hasStereotype(STEREOTYPE_UNIQUE)) { + return Set.class.getName(); + } else if (attr.isIndexed() || attr.isOrdered()) { + return List.class.getName(); + } + return Collection.class.getName(); + } + + /** + * Renvoie le type d'objet (instance) à utiliser en fonction de l'attribut + * + * @param attr l'attribut a traiter + * @return String + */ + public static String getNMultiplicityObjectType(ObjectModelAttribute attr) { + if (attr.hasStereotype(STEREOTYPE_UNIQUE)) { + return HashSet.class.getName(); + } else if (attr.isIndexed() || attr.isOrdered()) { + //On considère qu'on ne sait pas traiter vraiment l'attribut "ordered" + // puisqu'on va conserver l'ordre d'insertion, et non un ordre en + // fonction d'un élément donné. Donc on renvoi une ArrayList + return ArrayList.class.getName(); + } + LinkedList.class.getName(); + return ArrayList.class.getName(); + } + + /** + * Renvoie le type d'interface à utiliser en fonction de l'attribut + * + * @param attr l'attribut a traiter + * @return String + */ + public static String getNMultiplicityHibernateType(ObjectModelAttribute attr) { + if (attr.hasStereotype(STEREOTYPE_UNIQUE)) { + return "set"; + } else if (attr.isIndexed()) { + return "list"; + } + //attr.isOrdered() - On génère le ordered en bag + return "bag"; + } + + /** + * Obtain the list of entities classes with the possibility to sort the result. + * + * @param model the current model to scan + * @param sort flag to allow sort the result + * @return the list of filtred classes by their stereotype + */ + public static List<ObjectModelClass> getEntityClasses(ObjectModel model, + boolean sort) { + return getClassesByStereotype(STEREOTYPE_ENTITY, model, sort); + } + + /** + * Obtain the list of classes for a given stereotype with the possibility to sort the result. + * + * @param stereotype filter stereotype + * @param model the current model to scan + * @param sort flag to allow sort the result + * @return the list of filtred classes by their stereotype + */ + public static List<ObjectModelClass> getClassesByStereotype( + String stereotype, ObjectModel model, boolean sort) { + List<ObjectModelClass> classes = new ArrayList<ObjectModelClass>(); + for (ObjectModelClass clazz : model.getClasses()) { + if (clazz.hasStereotype(stereotype)) { + classes.add(clazz); + } + } + if (sort && !classes.isEmpty()) { + java.util.Collections.sort(classes, + new java.util.Comparator<ObjectModelClass>() { + + @Override + public int compare(ObjectModelClass o1, + ObjectModelClass o2) { + return o1.getQualifiedName().compareTo( + o2.getQualifiedName()); + } + }); + } + return classes; + } + + /** + * Detecte si la clef metier d'une classe est mutable ou pas. + * <p/> + * On respecte la valeur par defaut d'hibernate, à savoir que par default une clef metier est non mutable. + * + * @param clazz la classe a tester + * @return <code>true</code> si le tag value a ete positionne sur la classe via le tag + * {@link #TAG_NATURAL_ID_MUTABLE}, , <code>false</code> sinon. + */ + public static boolean isNaturalIdMutable(ObjectModelClass clazz) { + String value = clazz.getTagValue(TAG_NATURAL_ID_MUTABLE); + if (!notEmpty(value)) { + // valeur null, donc par default positionnee + return false; + } + try { + return Boolean.valueOf(value.trim()); + } catch (Exception e) { + // on a pas reussi a convertir en boolean. + //todo peut-être declancher une exception ? + return false; + } + } + + /** + * Obtain the list of fqn of object involed in the given class. + * + * @param aClass the clazz to inspect + * @param incomingFqns incoming fqns + * @return the list of fqn of attributes + */ + public static List<String> getImports(ObjectModelClass aClass, String... incomingFqns) { + Set<String> tmp = new HashSet<String>(); + tmp.addAll(Arrays.asList(incomingFqns)); + getImports(aClass, tmp); + List<String> result = cleanImports(aClass.getPackageName(), tmp); + return result; + } + + /** + * Obtain the list of fqn of object involed in the given interface. + * + * @param anInterface the interface to inspect + * @param incomingFqns incoming fqns + * @return the list of fqn of attributes + */ + public static List<String> getImports(ObjectModelInterface anInterface, String... incomingFqns) { + Set<String> tmp = new HashSet<String>(); + tmp.addAll(Arrays.asList(incomingFqns)); + getImports(anInterface, tmp); + List<String> result = cleanImports(anInterface.getPackageName(), tmp); + return result; + } + + public static String getSimpleName(String fqn) { + int lasIndex = fqn.lastIndexOf("."); + if (lasIndex == 1) { + // primitive type + return fqn; + } + return fqn.substring(lasIndex + 1); + /*if (lasIndex == aClass.getPackageName().length()) { + // same package + return fqn.substring(lasIndex + 1); + } + + return fqn;*/ + } + + /** + * Obtain the list of fqn of object involed in the given class. + * + * @param aClass the class to inspect + * @param fqns where to store found fqns + */ + protected static void getImports(ObjectModelClass aClass, Set<String> fqns) { + // scan attributes + for (ObjectModelAttribute attr : aClass.getAttributes()) { + fqns.add(attr.getType()); + if (isNMultiplicity(attr)) { + String collectionType = getNMultiplicityInterfaceType(attr); + fqns.add(collectionType); + String collectionObject = getNMultiplicityObjectType(attr); + fqns.add(collectionObject); + } + } + for (ObjectModelAttribute attribute : aClass.getAllOtherAttributes()) { + fqns.add(attribute.getType()); + } + // scan associations + if (aClass instanceof ObjectModelAssociationClass) { + ObjectModelAssociationClass assoc = (ObjectModelAssociationClass) aClass; + for (ObjectModelAttribute attr : assoc.getParticipantsAttributes()) { + if (attr == null) { + continue; + } + fqns.add(attr.getType()); + if (isNMultiplicity(attr)) { + String collectionType = getNMultiplicityInterfaceType(attr); + fqns.add(collectionType); + String collectionObject = getNMultiplicityObjectType(attr); + fqns.add(collectionObject); + } + } + } + // scan operations + for (ObjectModelOperation operation : aClass.getOperations()) { + getImports(operation, fqns); + } + // scan super interfaces + for (ObjectModelInterface modelInterface : aClass.getInterfaces()) { + fqns.add(modelInterface.getQualifiedName()); + getImports(modelInterface, fqns); + } + // scan super classes + for (ObjectModelClass modelClass : aClass.getSuperclasses()) { + fqns.add(modelClass.getQualifiedName()); + getImports(modelClass); + } + } + + /** + * Obtain the list of fqn of object involed in the given interface. + * + * @param anInterface the interface to inspect + * @param fqns where to store found fqns + */ + protected static void getImports(ObjectModelInterface anInterface, Set<String> fqns) { + // scan operations + for (ObjectModelOperation operation : anInterface.getOperations()) { + getImports(operation, fqns); + } + // scan super interfaces + for (ObjectModelInterface modelInterface : anInterface.getInterfaces()) { + fqns.add(modelInterface.getQualifiedName()); + getImports(modelInterface, fqns); + } + } + + /** + * Obtain the fqn's list of all involed type in a givne operation. + * + * @param operation operation to inspect + * @param fqns where to store found fqns + */ + protected static void getImports(ObjectModelOperation operation, Set<String> fqns) { + String fqn = operation.getReturnType(); + fqns.add(fqn); + for (ObjectModelParameter parameter : operation.getParameters()) { + fqns.add(parameter.getType()); + } + } + + /** + * Clean a set of fqns, transform it into a {@link List} and sort it. + * + * @param packageName the current package name + * @param fqns the dirty set of fqns + * @return the sorted cleaned list of fqns. + */ + protected static List<String> cleanImports(String packageName, Set<String> fqns) { + fqns.removeAll(primitiveTypes); + fqns.remove(VOID_TYPE); + int packageLength = packageName.length(); + List<String> genericType = new ArrayList<String>(); + for (Iterator<String> it = fqns.iterator(); it.hasNext();) { + String fqn = it.next(); + int lastIndex = fqn.lastIndexOf("."); + if (lastIndex == packageLength && fqn.startsWith(packageName)) { + // same package + it.remove(); + continue; + } + int genericIndex = fqn.indexOf('<'); + if (genericIndex != -1) { + genericType.add(fqn.substring(0, genericIndex)); + it.remove(); + } + } + fqns.addAll(genericType); + + ArrayList<String> result = new ArrayList<String>(fqns); + java.util.Collections.sort(result); + return result; + } + + /** + * Convertit un nom de variable en nom de constante. + * + * @param variableName le nom de variable a convertir + * @return le nom de la constante à partir du nom de la variable + */ + public static String convertVariableNameToConstantName(String variableName) { + //TODO Faire des tests pour savoir si variableName est non null et valide + //TODO Ameliorer l'algo pour tenir compte des caractères non alpha + //TODO pour le moment cela convient, donc... + StringBuilder buffer = new StringBuilder(); + boolean lastCarIsUp = false; + for (int i = 0, j = variableName.length(); i < j; i++) { + char c = variableName.charAt(i); + boolean carIsUp = Character.isUpperCase(c); + if (i > 0 && !lastCarIsUp && carIsUp) { + // ajout d'un _ + buffer.append('_'); + } + if (carIsUp) { + buffer.append(c); + } else { + buffer.append(Character.toUpperCase(c)); + } + lastCarIsUp = carIsUp; + } + return buffer.toString(); + } +} // GeneratorUtil + Deleted: trunk/maven-eugene-plugin/src/it/generate/generators/src/main/models/dtotest.objectmodel =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/main/models/dtotest.objectmodel 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/models/dtotest.objectmodel 2009-12-14 23:50:27 UTC (rev 755) @@ -1,153 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<objectModel xmlns="http://www.codelutin.org/eugene/objectModel" name="TopiaTest" version="1"> - <class name="Personne" package="org.nuiton.eugene.test"> - <stereotype name="entity"/> - <superclass name="org.nuiton.eugene.test.Party2" discriminator=""/> - <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="otherNames" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="0" maxMultiplicity="-1"/> - <attribute visibility="public" type="org.nuiton.eugene.test.Address" reverseAttributeName="" associationType="aggregate" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> - </class> - <class name="Employe" package="org.nuiton.eugene.test"> - <stereotype name="entity"/> - <superclass name="org.nuiton.eugene.test.Personne" discriminator=""/> - <attribute name="salary" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> - <attribute visibility="public" type="org.nuiton.eugene.test.Company" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="false" ordering="unordered"/> - <attribute name="lead" visibility="public" type="org.nuiton.eugene.test.Department" reverseAttributeName="leader" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="1" navigable="false" ordering="unordered"/> - </class> - <class name="Company" package="org.nuiton.eugene.test"> - <stereotype name="entity"/> - <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute visibility="public" type="org.nuiton.eugene.test.Employe" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> - <attribute visibility="public" associationClassName="org.nuiton.eugene.test.Bill" type="org.nuiton.eugene.test.Store" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> - <attribute visibility="public" type="org.nuiton.eugene.test.Department" reverseAttributeName="" associationType="composite" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> - </class> - <class name="Address" package="org.nuiton.eugene.test"> - <stereotype name="entity"/> - <attribute name="city" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="adress" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute visibility="public" type="org.nuiton.eugene.test.Personne" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="false" ordering="unordered"/> - </class> - <class name="Department" package="org.nuiton.eugene.test"> - <stereotype name="entity"/> - <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="leader" visibility="public" type="org.nuiton.eugene.test.Employe" reverseAttributeName="lead" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> - <attribute visibility="public" type="org.nuiton.eugene.test.Company" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> - <attribute visibility="public" type="org.nuiton.eugene.test.Product" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> - </class> - <class name="Product" package="org.nuiton.eugene.test"> - <stereotype name="entity"/> - <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute visibility="public" type="org.nuiton.eugene.test.Department" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="false" ordering="unordered"/> - <attribute visibility="public" type="org.nuiton.eugene.test.Type" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> - </class> - <class name="Store" package="org.nuiton.eugene.test"> - <stereotype name="entity"/> - <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="DEFAULT_NUM" associationType="composite" visibility="public" static="true" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="numStore" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <operation name="getDefaultNum" visibility="public" static="true"> - <returnParameter type="java.lang.String"/> - </operation> - <class name="Row" package="org.nuiton.eugene.test"> - <attribute name="num" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="position" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - </class> - <attribute visibility="public" associationClassName="org.nuiton.eugene.test.Bill" type="org.nuiton.eugene.test.Company" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="0" maxMultiplicity="-1" navigable="false" ordering="unordered"/> - </class> - <class name="Type" package="org.nuiton.eugene.test"> - <stereotype name="entity"/> - <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute visibility="public" type="org.nuiton.eugene.test.Product" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="false" ordering="unordered"/> - </class> - <associationClass name="Bill" package="org.nuiton.eugene.test"> - <stereotype name="entity"/> - <participant name="org.nuiton.eugene.test.Company" attribute=""/> - <participant name="org.nuiton.eugene.test.Store" attribute=""/> - <attribute name="cost" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="date" associationType="composite" visibility="public" type="java.util.Date" minMultiplicity="1" maxMultiplicity="1"/> - </associationClass> - <class name="Voiture" abstract="true" package="org.nuiton.eugene.test.beangen"> - <stereotype name="bean"/> - <tagValue name="documentation" value="Doc for BeanA"/> - <attribute name="immatriculation" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"> - <tagValue name="documentation" value="attrA of BeanA"/> - </attribute> - <attribute name="modele" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="proprietaire" associationType="composite" visibility="public" type="org.nuiton.eugene.test.beangen.PersonneDTO" minMultiplicity="1" maxMultiplicity="1"/> - <attribute visibility="public" type="org.nuiton.eugene.test.beangen.Roue" reverseAttributeName="" associationType="composite" reverseMaxMultiplicity="1" minMultiplicity="4" maxMultiplicity="4" navigable="true" ordering="unordered"/> - <attribute visibility="public" type="org.nuiton.eugene.test.beangen.Siege" reverseAttributeName="" associationType="composite" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="4" navigable="true" ordering="unordered"/> - </class> - <class name="Roue" package="org.nuiton.eugene.test.beangen"> - <stereotype name="bean"/> - <operation name="mount" visibility="public"> - <returnParameter type="void"/> - </operation> - <operation name="getModel" visibility="public"> - <returnParameter type="int"/> - <parameter name="id" type="java.lang.String"/> - </operation> - <attribute visibility="public" type="org.nuiton.eugene.test.beangen.Voiture" reverseAttributeName="" reverseMaxMultiplicity="4" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> - </class> - <class name="RelationDTO" package="org.nuiton.eugene.test.beangen"> - <stereotype name="dto"/> - <attribute name="idCompany" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="idDepartement" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="dateDebut" associationType="composite" visibility="public" type="java.util.Date" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="person" visibility="public" type="org.nuiton.eugene.test.beangen.PersonneDTO" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> - </class> - <class name="PersonneDTO" package="org.nuiton.eugene.test.beangen"> - <dependency name="" supplierName="org.nuiton.eugene.test.Personne"/> - <stereotype name="dto"/> - <attribute visibility="public" type="org.nuiton.eugene.test.beangen.RelationDTO" reverseAttributeName="person" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="false" ordering="unordered"/> - </class> - <class name="Siege" package="org.nuiton.eugene.test.beangen"> - <stereotype name="bean"/> - <attribute name="noSerie" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> - <attribute visibility="public" type="org.nuiton.eugene.test.beangen.Voiture" reverseAttributeName="" reverseMaxMultiplicity="4" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> - </class> - <interface name="Vehicule" package="org.nuiton.eugene.test.beangen"> - <operation name="start" visibility="public"> - <returnParameter type="void"/> - </operation> - </interface> - <class name="Contact2" package="org.nuiton.eugene.test.deletetest"> - <stereotype name="entity"/> - <attribute name="contactValue" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="type" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <operation name="findAllByCompany" visibility="public"> - <returnParameter type="java.util.Set<Contact2>"/> - <parameter name="company" type="org.nuiton.eugene.test.Company"/> - <stereotype name="dao"/> - </operation> - <attribute visibility="public" type="org.nuiton.eugene.test.Party2" reverseAttributeName="contacts" reverseMaxMultiplicity="-1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> - </class> - <class name="Telephone2" package="org.nuiton.eugene.test.deletetest"> - <stereotype name="entity"/> - <superclass name="org.nuiton.eugene.test.Contact2" discriminator=""/> - <attribute name="prefix" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="country" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - </class> - <class name="Party2" package="org.nuiton.eugene.test.deletetest"> - <stereotype name="entity"/> - <attribute name="contacts" visibility="public" type="org.nuiton.eugene.test.Contact2" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> - </class> - <class name="Person" package="org.nuiton.topia.test.entities"> - <stereotype name="entity"/> - <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="firstname" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute visibility="public" type="org.nuiton.topia.test.entities.Pet" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> - </class> - <class name="Pet" package="org.nuiton.topia.test.entities"> - <stereotype name="entity"/> - <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="type" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute visibility="public" type="org.nuiton.topia.test.entities.Person" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> - <attribute visibility="public" type="org.nuiton.topia.test.entities.Race" reverseAttributeName="" associationType="composite" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> - </class> - <class name="Race" package="org.nuiton.topia.test.entities"> - <stereotype name="entity"/> - <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute visibility="public" type="org.nuiton.topia.test.entities.Pet" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="false" ordering="unordered"/> - </class> - <class name="Set<Contact2>" package="java.util"/> -</objectModel> Copied: trunk/maven-eugene-plugin/src/it/generate/generators/src/main/models/dtotest.objectmodel (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/main/models/dtotest.objectmodel) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate/generators/src/main/models/dtotest.objectmodel (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/models/dtotest.objectmodel 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,153 @@ +<?xml version="1.0" encoding="UTF-8"?> +<objectModel xmlns="http://www.codelutin.org/eugene/objectModel" name="TopiaTest" version="1"> + <class name="Personne" package="org.nuiton.eugene.test"> + <stereotype name="entity"/> + <superclass name="org.nuiton.eugene.test.Party2" discriminator=""/> + <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="otherNames" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="0" maxMultiplicity="-1"/> + <attribute visibility="public" type="org.nuiton.eugene.test.Address" reverseAttributeName="" associationType="aggregate" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> + </class> + <class name="Employe" package="org.nuiton.eugene.test"> + <stereotype name="entity"/> + <superclass name="org.nuiton.eugene.test.Personne" discriminator=""/> + <attribute name="salary" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> + <attribute visibility="public" type="org.nuiton.eugene.test.Company" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="false" ordering="unordered"/> + <attribute name="lead" visibility="public" type="org.nuiton.eugene.test.Department" reverseAttributeName="leader" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="1" navigable="false" ordering="unordered"/> + </class> + <class name="Company" package="org.nuiton.eugene.test"> + <stereotype name="entity"/> + <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute visibility="public" type="org.nuiton.eugene.test.Employe" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> + <attribute visibility="public" associationClassName="org.nuiton.eugene.test.Bill" type="org.nuiton.eugene.test.Store" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> + <attribute visibility="public" type="org.nuiton.eugene.test.Department" reverseAttributeName="" associationType="composite" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> + </class> + <class name="Address" package="org.nuiton.eugene.test"> + <stereotype name="entity"/> + <attribute name="city" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="adress" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute visibility="public" type="org.nuiton.eugene.test.Personne" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="false" ordering="unordered"/> + </class> + <class name="Department" package="org.nuiton.eugene.test"> + <stereotype name="entity"/> + <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="leader" visibility="public" type="org.nuiton.eugene.test.Employe" reverseAttributeName="lead" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> + <attribute visibility="public" type="org.nuiton.eugene.test.Company" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> + <attribute visibility="public" type="org.nuiton.eugene.test.Product" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> + </class> + <class name="Product" package="org.nuiton.eugene.test"> + <stereotype name="entity"/> + <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute visibility="public" type="org.nuiton.eugene.test.Department" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="false" ordering="unordered"/> + <attribute visibility="public" type="org.nuiton.eugene.test.Type" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> + </class> + <class name="Store" package="org.nuiton.eugene.test"> + <stereotype name="entity"/> + <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="DEFAULT_NUM" associationType="composite" visibility="public" static="true" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="numStore" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <operation name="getDefaultNum" visibility="public" static="true"> + <returnParameter type="java.lang.String"/> + </operation> + <class name="Row" package="org.nuiton.eugene.test"> + <attribute name="num" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="position" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + </class> + <attribute visibility="public" associationClassName="org.nuiton.eugene.test.Bill" type="org.nuiton.eugene.test.Company" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="0" maxMultiplicity="-1" navigable="false" ordering="unordered"/> + </class> + <class name="Type" package="org.nuiton.eugene.test"> + <stereotype name="entity"/> + <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute visibility="public" type="org.nuiton.eugene.test.Product" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="false" ordering="unordered"/> + </class> + <associationClass name="Bill" package="org.nuiton.eugene.test"> + <stereotype name="entity"/> + <participant name="org.nuiton.eugene.test.Company" attribute=""/> + <participant name="org.nuiton.eugene.test.Store" attribute=""/> + <attribute name="cost" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="date" associationType="composite" visibility="public" type="java.util.Date" minMultiplicity="1" maxMultiplicity="1"/> + </associationClass> + <class name="Voiture" abstract="true" package="org.nuiton.eugene.test.beangen"> + <stereotype name="bean"/> + <tagValue name="documentation" value="Doc for BeanA"/> + <attribute name="immatriculation" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"> + <tagValue name="documentation" value="attrA of BeanA"/> + </attribute> + <attribute name="modele" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="proprietaire" associationType="composite" visibility="public" type="org.nuiton.eugene.test.beangen.PersonneDTO" minMultiplicity="1" maxMultiplicity="1"/> + <attribute visibility="public" type="org.nuiton.eugene.test.beangen.Roue" reverseAttributeName="" associationType="composite" reverseMaxMultiplicity="1" minMultiplicity="4" maxMultiplicity="4" navigable="true" ordering="unordered"/> + <attribute visibility="public" type="org.nuiton.eugene.test.beangen.Siege" reverseAttributeName="" associationType="composite" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="4" navigable="true" ordering="unordered"/> + </class> + <class name="Roue" package="org.nuiton.eugene.test.beangen"> + <stereotype name="bean"/> + <operation name="mount" visibility="public"> + <returnParameter type="void"/> + </operation> + <operation name="getModel" visibility="public"> + <returnParameter type="int"/> + <parameter name="id" type="java.lang.String"/> + </operation> + <attribute visibility="public" type="org.nuiton.eugene.test.beangen.Voiture" reverseAttributeName="" reverseMaxMultiplicity="4" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> + </class> + <class name="RelationDTO" package="org.nuiton.eugene.test.beangen"> + <stereotype name="dto"/> + <attribute name="idCompany" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="idDepartement" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="dateDebut" associationType="composite" visibility="public" type="java.util.Date" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="person" visibility="public" type="org.nuiton.eugene.test.beangen.PersonneDTO" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> + </class> + <class name="PersonneDTO" package="org.nuiton.eugene.test.beangen"> + <dependency name="" supplierName="org.nuiton.eugene.test.Personne"/> + <stereotype name="dto"/> + <attribute visibility="public" type="org.nuiton.eugene.test.beangen.RelationDTO" reverseAttributeName="person" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="false" ordering="unordered"/> + </class> + <class name="Siege" package="org.nuiton.eugene.test.beangen"> + <stereotype name="bean"/> + <attribute name="noSerie" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> + <attribute visibility="public" type="org.nuiton.eugene.test.beangen.Voiture" reverseAttributeName="" reverseMaxMultiplicity="4" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> + </class> + <interface name="Vehicule" package="org.nuiton.eugene.test.beangen"> + <operation name="start" visibility="public"> + <returnParameter type="void"/> + </operation> + </interface> + <class name="Contact2" package="org.nuiton.eugene.test.deletetest"> + <stereotype name="entity"/> + <attribute name="contactValue" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="type" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <operation name="findAllByCompany" visibility="public"> + <returnParameter type="java.util.Set<Contact2>"/> + <parameter name="company" type="org.nuiton.eugene.test.Company"/> + <stereotype name="dao"/> + </operation> + <attribute visibility="public" type="org.nuiton.eugene.test.Party2" reverseAttributeName="contacts" reverseMaxMultiplicity="-1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> + </class> + <class name="Telephone2" package="org.nuiton.eugene.test.deletetest"> + <stereotype name="entity"/> + <superclass name="org.nuiton.eugene.test.Contact2" discriminator=""/> + <attribute name="prefix" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="country" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + </class> + <class name="Party2" package="org.nuiton.eugene.test.deletetest"> + <stereotype name="entity"/> + <attribute name="contacts" visibility="public" type="org.nuiton.eugene.test.Contact2" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> + </class> + <class name="Person" package="org.nuiton.topia.test.entities"> + <stereotype name="entity"/> + <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="firstname" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute visibility="public" type="org.nuiton.topia.test.entities.Pet" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> + </class> + <class name="Pet" package="org.nuiton.topia.test.entities"> + <stereotype name="entity"/> + <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="type" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute visibility="public" type="org.nuiton.topia.test.entities.Person" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> + <attribute visibility="public" type="org.nuiton.topia.test.entities.Race" reverseAttributeName="" associationType="composite" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> + </class> + <class name="Race" package="org.nuiton.topia.test.entities"> + <stereotype name="entity"/> + <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute visibility="public" type="org.nuiton.topia.test.entities.Pet" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="false" ordering="unordered"/> + </class> + <class name="Set<Contact2>" package="java.util"/> +</objectModel> Deleted: trunk/maven-eugene-plugin/src/it/generate/generators/src/main/models/dtotest2.objectmodel =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/main/models/dtotest2.objectmodel 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/models/dtotest2.objectmodel 2009-12-14 23:50:27 UTC (rev 755) @@ -1,153 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<objectModel xmlns="http://www.codelutin.org/eugene/objectModel" name="TopiaTest" version="1"> - <class name="Personne" package="org.nuiton.eugene.test2"> - <stereotype name="entity"/> - <superclass name="org.nuiton.eugene.test2.Party2" discriminator=""/> - <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="otherNames" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="0" maxMultiplicity="-1"/> - <attribute visibility="public" type="org.nuiton.eugene.test2.Address" reverseAttributeName="" associationType="aggregate" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> - </class> - <class name="Employe" package="org.nuiton.eugene.test2"> - <stereotype name="entity"/> - <superclass name="org.nuiton.eugene.test2.Personne" discriminator=""/> - <attribute name="salary" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> - <attribute visibility="public" type="org.nuiton.eugene.test2.Company" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="false" ordering="unordered"/> - <attribute name="lead" visibility="public" type="org.nuiton.eugene.test2.Department" reverseAttributeName="leader" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="1" navigable="false" ordering="unordered"/> - </class> - <class name="Company" package="org.nuiton.eugene.test2"> - <stereotype name="entity"/> - <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute visibility="public" type="org.nuiton.eugene.test2.Employe" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> - <attribute visibility="public" associationClassName="org.nuiton.eugene.test2.Bill" type="org.nuiton.eugene.test2.Store" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> - <attribute visibility="public" type="org.nuiton.eugene.test2.Department" reverseAttributeName="" associationType="composite" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> - </class> - <class name="Address" package="org.nuiton.eugene.test2"> - <stereotype name="entity"/> - <attribute name="city" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="adress" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute visibility="public" type="org.nuiton.eugene.test2.Personne" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="false" ordering="unordered"/> - </class> - <class name="Department" package="org.nuiton.eugene.test2"> - <stereotype name="entity"/> - <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="leader" visibility="public" type="org.nuiton.eugene.test2.Employe" reverseAttributeName="lead" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> - <attribute visibility="public" type="org.nuiton.eugene.test2.Company" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> - <attribute visibility="public" type="org.nuiton.eugene.test2.Product" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> - </class> - <class name="Product" package="org.nuiton.eugene.test2"> - <stereotype name="entity"/> - <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute visibility="public" type="org.nuiton.eugene.test2.Department" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="false" ordering="unordered"/> - <attribute visibility="public" type="org.nuiton.eugene.test2.Type" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> - </class> - <class name="Store" package="org.nuiton.eugene.test2"> - <stereotype name="entity"/> - <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="DEFAULT_NUM" associationType="composite" visibility="public" static="true" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="numStore" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <operation name="getDefaultNum" visibility="public" static="true"> - <returnParameter type="java.lang.String"/> - </operation> - <class name="Row" package="org.nuiton.eugene.test2"> - <attribute name="num" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="position" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - </class> - <attribute visibility="public" associationClassName="org.nuiton.eugene.test2.Bill" type="org.nuiton.eugene.test2.Company" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="0" maxMultiplicity="-1" navigable="false" ordering="unordered"/> - </class> - <class name="Type" package="org.nuiton.eugene.test2"> - <stereotype name="entity"/> - <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute visibility="public" type="org.nuiton.eugene.test2.Product" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="false" ordering="unordered"/> - </class> - <associationClass name="Bill" package="org.nuiton.eugene.test2"> - <stereotype name="entity"/> - <participant name="org.nuiton.eugene.test2.Company" attribute=""/> - <participant name="org.nuiton.eugene.test2.Store" attribute=""/> - <attribute name="cost" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="date" associationType="composite" visibility="public" type="java.util.Date" minMultiplicity="1" maxMultiplicity="1"/> - </associationClass> - <class name="Voiture" abstract="true" package="org.nuiton.eugene.test2.beangen"> - <stereotype name="bean"/> - <tagValue name="documentation" value="Doc for BeanA"/> - <attribute name="immatriculation" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"> - <tagValue name="documentation" value="attrA of BeanA"/> - </attribute> - <attribute name="modele" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="proprietaire" associationType="composite" visibility="public" type="org.nuiton.eugene.test2.beangen.PersonneDTO" minMultiplicity="1" maxMultiplicity="1"/> - <attribute visibility="public" type="org.nuiton.eugene.test2.beangen.Roue" reverseAttributeName="" associationType="composite" reverseMaxMultiplicity="1" minMultiplicity="4" maxMultiplicity="4" navigable="true" ordering="unordered"/> - <attribute visibility="public" type="org.nuiton.eugene.test2.beangen.Siege" reverseAttributeName="" associationType="composite" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="4" navigable="true" ordering="unordered"/> - </class> - <class name="Roue" package="org.nuiton.eugene.test2.beangen"> - <stereotype name="bean"/> - <operation name="mount" visibility="public"> - <returnParameter type="void"/> - </operation> - <operation name="getModel" visibility="public"> - <returnParameter type="int"/> - <parameter name="id" type="java.lang.String"/> - </operation> - <attribute visibility="public" type="org.nuiton.eugene.test2.beangen.Voiture" reverseAttributeName="" reverseMaxMultiplicity="4" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> - </class> - <class name="RelationDTO" package="org.nuiton.eugene.test2.beangen"> - <stereotype name="dto"/> - <attribute name="idCompany" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="idDepartement" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="dateDebut" associationType="composite" visibility="public" type="java.util.Date" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="person" visibility="public" type="org.nuiton.eugene.test2.beangen.PersonneDTO" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> - </class> - <class name="PersonneDTO" package="org.nuiton.eugene.test2.beangen"> - <dependency name="" supplierName="org.nuiton.eugene.test2.Personne"/> - <stereotype name="dto"/> - <attribute visibility="public" type="org.nuiton.eugene.test2.beangen.RelationDTO" reverseAttributeName="person" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="false" ordering="unordered"/> - </class> - <class name="Siege" package="org.nuiton.eugene.test2.beangen"> - <stereotype name="bean"/> - <attribute name="noSerie" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> - <attribute visibility="public" type="org.nuiton.eugene.test2.beangen.Voiture" reverseAttributeName="" reverseMaxMultiplicity="4" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> - </class> - <interface name="Vehicule" package="org.nuiton.eugene.test2.beangen"> - <operation name="start" visibility="public"> - <returnParameter type="void"/> - </operation> - </interface> - <class name="Contact2" package="org.nuiton.eugene.test2.deletetest"> - <stereotype name="entity"/> - <attribute name="contactValue" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="type" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <operation name="findAllByCompany" visibility="public"> - <returnParameter type="java.util.Set<Contact2>"/> - <parameter name="company" type="org.nuiton.eugene.test2.Company"/> - <stereotype name="dao"/> - </operation> - <attribute visibility="public" type="org.nuiton.eugene.test2.Party2" reverseAttributeName="contacts" reverseMaxMultiplicity="-1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> - </class> - <class name="Telephone2" package="org.nuiton.eugene.test2.deletetest"> - <stereotype name="entity"/> - <superclass name="org.nuiton.eugene.test2.Contact2" discriminator=""/> - <attribute name="prefix" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="country" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - </class> - <class name="Party2" package="org.nuiton.eugene.test2.deletetest"> - <stereotype name="entity"/> - <attribute name="contacts" visibility="public" type="org.nuiton.eugene.test2.Contact2" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> - </class> - <class name="Person" package="org.nuiton.topia.test.entities"> - <stereotype name="entity"/> - <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="firstname" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute visibility="public" type="org.nuiton.topia.test.entities.Pet" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> - </class> - <class name="Pet" package="org.nuiton.topia.test.entities"> - <stereotype name="entity"/> - <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute name="type" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute visibility="public" type="org.nuiton.topia.test.entities.Person" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> - <attribute visibility="public" type="org.nuiton.topia.test.entities.Race" reverseAttributeName="" associationType="composite" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> - </class> - <class name="Race" package="org.nuiton.topia.test.entities"> - <stereotype name="entity"/> - <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> - <attribute visibility="public" type="org.nuiton.topia.test.entities.Pet" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="false" ordering="unordered"/> - </class> - <class name="Set<Contact2>" package="java.util"/> -</objectModel> Copied: trunk/maven-eugene-plugin/src/it/generate/generators/src/main/models/dtotest2.objectmodel (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/main/models/dtotest2.objectmodel) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate/generators/src/main/models/dtotest2.objectmodel (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/models/dtotest2.objectmodel 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,153 @@ +<?xml version="1.0" encoding="UTF-8"?> +<objectModel xmlns="http://www.codelutin.org/eugene/objectModel" name="TopiaTest" version="1"> + <class name="Personne" package="org.nuiton.eugene.test2"> + <stereotype name="entity"/> + <superclass name="org.nuiton.eugene.test2.Party2" discriminator=""/> + <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="otherNames" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="0" maxMultiplicity="-1"/> + <attribute visibility="public" type="org.nuiton.eugene.test2.Address" reverseAttributeName="" associationType="aggregate" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> + </class> + <class name="Employe" package="org.nuiton.eugene.test2"> + <stereotype name="entity"/> + <superclass name="org.nuiton.eugene.test2.Personne" discriminator=""/> + <attribute name="salary" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> + <attribute visibility="public" type="org.nuiton.eugene.test2.Company" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="false" ordering="unordered"/> + <attribute name="lead" visibility="public" type="org.nuiton.eugene.test2.Department" reverseAttributeName="leader" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="1" navigable="false" ordering="unordered"/> + </class> + <class name="Company" package="org.nuiton.eugene.test2"> + <stereotype name="entity"/> + <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute visibility="public" type="org.nuiton.eugene.test2.Employe" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> + <attribute visibility="public" associationClassName="org.nuiton.eugene.test2.Bill" type="org.nuiton.eugene.test2.Store" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> + <attribute visibility="public" type="org.nuiton.eugene.test2.Department" reverseAttributeName="" associationType="composite" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> + </class> + <class name="Address" package="org.nuiton.eugene.test2"> + <stereotype name="entity"/> + <attribute name="city" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="adress" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute visibility="public" type="org.nuiton.eugene.test2.Personne" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="false" ordering="unordered"/> + </class> + <class name="Department" package="org.nuiton.eugene.test2"> + <stereotype name="entity"/> + <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="leader" visibility="public" type="org.nuiton.eugene.test2.Employe" reverseAttributeName="lead" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> + <attribute visibility="public" type="org.nuiton.eugene.test2.Company" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> + <attribute visibility="public" type="org.nuiton.eugene.test2.Product" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> + </class> + <class name="Product" package="org.nuiton.eugene.test2"> + <stereotype name="entity"/> + <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute visibility="public" type="org.nuiton.eugene.test2.Department" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="false" ordering="unordered"/> + <attribute visibility="public" type="org.nuiton.eugene.test2.Type" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> + </class> + <class name="Store" package="org.nuiton.eugene.test2"> + <stereotype name="entity"/> + <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="DEFAULT_NUM" associationType="composite" visibility="public" static="true" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="numStore" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <operation name="getDefaultNum" visibility="public" static="true"> + <returnParameter type="java.lang.String"/> + </operation> + <class name="Row" package="org.nuiton.eugene.test2"> + <attribute name="num" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="position" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + </class> + <attribute visibility="public" associationClassName="org.nuiton.eugene.test2.Bill" type="org.nuiton.eugene.test2.Company" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="0" maxMultiplicity="-1" navigable="false" ordering="unordered"/> + </class> + <class name="Type" package="org.nuiton.eugene.test2"> + <stereotype name="entity"/> + <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute visibility="public" type="org.nuiton.eugene.test2.Product" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="false" ordering="unordered"/> + </class> + <associationClass name="Bill" package="org.nuiton.eugene.test2"> + <stereotype name="entity"/> + <participant name="org.nuiton.eugene.test2.Company" attribute=""/> + <participant name="org.nuiton.eugene.test2.Store" attribute=""/> + <attribute name="cost" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="date" associationType="composite" visibility="public" type="java.util.Date" minMultiplicity="1" maxMultiplicity="1"/> + </associationClass> + <class name="Voiture" abstract="true" package="org.nuiton.eugene.test2.beangen"> + <stereotype name="bean"/> + <tagValue name="documentation" value="Doc for BeanA"/> + <attribute name="immatriculation" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"> + <tagValue name="documentation" value="attrA of BeanA"/> + </attribute> + <attribute name="modele" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="proprietaire" associationType="composite" visibility="public" type="org.nuiton.eugene.test2.beangen.PersonneDTO" minMultiplicity="1" maxMultiplicity="1"/> + <attribute visibility="public" type="org.nuiton.eugene.test2.beangen.Roue" reverseAttributeName="" associationType="composite" reverseMaxMultiplicity="1" minMultiplicity="4" maxMultiplicity="4" navigable="true" ordering="unordered"/> + <attribute visibility="public" type="org.nuiton.eugene.test2.beangen.Siege" reverseAttributeName="" associationType="composite" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="4" navigable="true" ordering="unordered"/> + </class> + <class name="Roue" package="org.nuiton.eugene.test2.beangen"> + <stereotype name="bean"/> + <operation name="mount" visibility="public"> + <returnParameter type="void"/> + </operation> + <operation name="getModel" visibility="public"> + <returnParameter type="int"/> + <parameter name="id" type="java.lang.String"/> + </operation> + <attribute visibility="public" type="org.nuiton.eugene.test2.beangen.Voiture" reverseAttributeName="" reverseMaxMultiplicity="4" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> + </class> + <class name="RelationDTO" package="org.nuiton.eugene.test2.beangen"> + <stereotype name="dto"/> + <attribute name="idCompany" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="idDepartement" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="dateDebut" associationType="composite" visibility="public" type="java.util.Date" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="person" visibility="public" type="org.nuiton.eugene.test2.beangen.PersonneDTO" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> + </class> + <class name="PersonneDTO" package="org.nuiton.eugene.test2.beangen"> + <dependency name="" supplierName="org.nuiton.eugene.test2.Personne"/> + <stereotype name="dto"/> + <attribute visibility="public" type="org.nuiton.eugene.test2.beangen.RelationDTO" reverseAttributeName="person" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="false" ordering="unordered"/> + </class> + <class name="Siege" package="org.nuiton.eugene.test2.beangen"> + <stereotype name="bean"/> + <attribute name="noSerie" associationType="composite" visibility="public" type="int" minMultiplicity="1" maxMultiplicity="1"/> + <attribute visibility="public" type="org.nuiton.eugene.test2.beangen.Voiture" reverseAttributeName="" reverseMaxMultiplicity="4" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> + </class> + <interface name="Vehicule" package="org.nuiton.eugene.test2.beangen"> + <operation name="start" visibility="public"> + <returnParameter type="void"/> + </operation> + </interface> + <class name="Contact2" package="org.nuiton.eugene.test2.deletetest"> + <stereotype name="entity"/> + <attribute name="contactValue" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="type" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <operation name="findAllByCompany" visibility="public"> + <returnParameter type="java.util.Set<Contact2>"/> + <parameter name="company" type="org.nuiton.eugene.test2.Company"/> + <stereotype name="dao"/> + </operation> + <attribute visibility="public" type="org.nuiton.eugene.test2.Party2" reverseAttributeName="contacts" reverseMaxMultiplicity="-1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> + </class> + <class name="Telephone2" package="org.nuiton.eugene.test2.deletetest"> + <stereotype name="entity"/> + <superclass name="org.nuiton.eugene.test2.Contact2" discriminator=""/> + <attribute name="prefix" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="country" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + </class> + <class name="Party2" package="org.nuiton.eugene.test2.deletetest"> + <stereotype name="entity"/> + <attribute name="contacts" visibility="public" type="org.nuiton.eugene.test2.Contact2" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> + </class> + <class name="Person" package="org.nuiton.topia.test.entities"> + <stereotype name="entity"/> + <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="firstname" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute visibility="public" type="org.nuiton.topia.test.entities.Pet" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="0" maxMultiplicity="-1" navigable="true" ordering="unordered"/> + </class> + <class name="Pet" package="org.nuiton.topia.test.entities"> + <stereotype name="entity"/> + <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute name="type" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute visibility="public" type="org.nuiton.topia.test.entities.Person" reverseAttributeName="" reverseMaxMultiplicity="-1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> + <attribute visibility="public" type="org.nuiton.topia.test.entities.Race" reverseAttributeName="" associationType="composite" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="true" ordering="unordered"/> + </class> + <class name="Race" package="org.nuiton.topia.test.entities"> + <stereotype name="entity"/> + <attribute name="name" associationType="composite" visibility="public" type="java.lang.String" minMultiplicity="1" maxMultiplicity="1"/> + <attribute visibility="public" type="org.nuiton.topia.test.entities.Pet" reverseAttributeName="" reverseMaxMultiplicity="1" minMultiplicity="1" maxMultiplicity="1" navigable="false" ordering="unordered"/> + </class> + <class name="Set<Contact2>" package="java.util"/> +</objectModel> Deleted: trunk/maven-eugene-plugin/src/it/generate/generators/src/main/resources/log4j.properties =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/main/resources/log4j.properties 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/resources/log4j.properties 2009-12-14 23:50:27 UTC (rev 755) @@ -1,12 +0,0 @@ -# Global logging configuration -log4j.rootLogger=ERROR, stdout - -# Console output... -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n - -# package level -log4j.logger.org.nuiton.eugene=DEBUG -log4j.logger.org.nuiton.eugene.test=DEBUG -log4j.logger.org.nuiton.processor=DEBUG Copied: trunk/maven-eugene-plugin/src/it/generate/generators/src/main/resources/log4j.properties (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/main/resources/log4j.properties) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate/generators/src/main/resources/log4j.properties (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/main/resources/log4j.properties 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,12 @@ +# Global logging configuration +log4j.rootLogger=ERROR, stdout + +# Console output... +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n + +# package level +log4j.logger.org.nuiton.eugene=DEBUG +log4j.logger.org.nuiton.eugene.test=DEBUG +log4j.logger.org.nuiton.processor=DEBUG Deleted: trunk/maven-eugene-plugin/src/it/generate/generators/src/test/java/org/nuiton/eugene/test/generator/TestBuilderTest.java =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/test/java/org/nuiton/eugene/test/generator/TestBuilderTest.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/test/java/org/nuiton/eugene/test/generator/TestBuilderTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,91 +0,0 @@ -/* - * *##% - * EUGene Test - * Copyright (C) 2007 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%* - */ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - -package org.nuiton.eugene.test.generator; - -import java.util.List; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import static org.junit.Assert.*; -import org.nuiton.eugene.models.object.ObjectModel; -import org.nuiton.eugene.models.object.ObjectModelClass; -import org.nuiton.eugene.models.object.ObjectModelOperation; - -/** - * - * @author fdesbois - */ -public class TestBuilderTest { - - private static final Log log = LogFactory.getLog(TestBuilderTest.class); - - public TestBuilderTest() { - } - - @BeforeClass - public static void setUpClass() throws Exception { - } - - @AfterClass - public static void tearDownClass() throws Exception { - } - - @Before - public void setUp() { - } - - @After - public void tearDown() { - } - - /** - * Test of build method, of class TestBuilder. - */ - @Test - public void testBuild() { - System.out.println("build"); - TestBuilder instance = new TestBuilder(); - - instance.build(); - - ObjectModel result = instance.getModel(); - assertNotNull(result); - assertEquals(result.getClasses().size(), 2); - ObjectModelClass clazz = result.getClass("org.chorem.bonzoms.Person"); - assertNotNull(clazz); - assertEquals(clazz.getAttributes().size(), 3); - assertEquals(clazz.getOperations().size(), 2); - List<ObjectModelOperation> operations = (List<ObjectModelOperation>)clazz.getOperations(); - ObjectModelOperation operation = operations.get(0); - log.debug("Body code [" + operation.getName() + "] : " + operation.getBodyCode()); - assertFalse(operation.getBodyCode().isEmpty()); - } - -} \ No newline at end of file Copied: trunk/maven-eugene-plugin/src/it/generate/generators/src/test/java/org/nuiton/eugene/test/generator/TestBuilderTest.java (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/test/java/org/nuiton/eugene/test/generator/TestBuilderTest.java) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate/generators/src/test/java/org/nuiton/eugene/test/generator/TestBuilderTest.java (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/test/java/org/nuiton/eugene/test/generator/TestBuilderTest.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,91 @@ +/* + * *##% + * EUGene Test + * Copyright (C) 2007 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.nuiton.eugene.test.generator; + +import java.util.List; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import static org.junit.Assert.*; +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelOperation; + +/** + * + * @author fdesbois + */ +public class TestBuilderTest { + + private static final Log log = LogFactory.getLog(TestBuilderTest.class); + + public TestBuilderTest() { + } + + @BeforeClass + public static void setUpClass() throws Exception { + } + + @AfterClass + public static void tearDownClass() throws Exception { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + /** + * Test of build method, of class TestBuilder. + */ + @Test + public void testBuild() { + System.out.println("build"); + TestBuilder instance = new TestBuilder(); + + instance.build(); + + ObjectModel result = instance.getModel(); + assertNotNull(result); + assertEquals(result.getClasses().size(), 2); + ObjectModelClass clazz = result.getClass("org.chorem.bonzoms.Person"); + assertNotNull(clazz); + assertEquals(clazz.getAttributes().size(), 3); + assertEquals(clazz.getOperations().size(), 2); + List<ObjectModelOperation> operations = (List<ObjectModelOperation>)clazz.getOperations(); + ObjectModelOperation operation = operations.get(0); + log.debug("Body code [" + operation.getName() + "] : " + operation.getBodyCode()); + assertFalse(operation.getBodyCode().isEmpty()); + } + +} \ No newline at end of file Deleted: trunk/maven-eugene-plugin/src/it/generate/generators/src/test/resources/log4j.properties =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/test/resources/log4j.properties 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/test/resources/log4j.properties 2009-12-14 23:50:27 UTC (rev 755) @@ -1,12 +0,0 @@ -# Global logging configuration -log4j.rootLogger=ERROR, stdout - -# Console output... -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n - -# package level -log4j.logger.org.nuiton.eugene=DEBUG -log4j.logger.org.nuiton.eugene.test=DEBUG -log4j.logger.org.nuiton.processor=DEBUG Copied: trunk/maven-eugene-plugin/src/it/generate/generators/src/test/resources/log4j.properties (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/src/test/resources/log4j.properties) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate/generators/src/test/resources/log4j.properties (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate/generators/src/test/resources/log4j.properties 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,12 @@ +# Global logging configuration +log4j.rootLogger=ERROR, stdout + +# Console output... +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n + +# package level +log4j.logger.org.nuiton.eugene=DEBUG +log4j.logger.org.nuiton.eugene.test=DEBUG +log4j.logger.org.nuiton.processor=DEBUG Deleted: trunk/maven-eugene-plugin/src/it/generate/generators/verify.groovy =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/verify.groovy 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate/generators/verify.groovy 2009-12-14 23:50:27 UTC (rev 755) @@ -1,5 +0,0 @@ - -//TODO - -return true; - Copied: trunk/maven-eugene-plugin/src/it/generate/generators/verify.groovy (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate/generators/verify.groovy) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate/generators/verify.groovy (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate/generators/verify.groovy 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,5 @@ + +//TODO + +return true; + Deleted: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/README.txt =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/README.txt 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/README.txt 2009-12-14 23:50:27 UTC (rev 755) @@ -1,16 +0,0 @@ -On teste ici le goal generate-model-files avec en include que des includes sans protocol -des writers connus : - -<execution> - <phase>generate-sources</phase> - <configuration> - <modelType>objectmodel</modelType> - <includes> - <include>src/main/zargo:**/*.zargo</include> - </includes> - <fullPackagePath>org.nuiton.topia.test.entities</fullPackagePath> - </configuration> - <goals> - <goal>generate-model</goal> - </goals> -</execution> \ No newline at end of file Copied: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/README.txt (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/README.txt) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/README.txt (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/README.txt 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,16 @@ +On teste ici le goal generate-model-files avec en include que des includes sans protocol +des writers connus : + +<execution> + <phase>generate-sources</phase> + <configuration> + <modelType>objectmodel</modelType> + <includes> + <include>src/main/zargo:**/*.zargo</include> + </includes> + <fullPackagePath>org.nuiton.topia.test.entities</fullPackagePath> + </configuration> + <goals> + <goal>generate-model</goal> + </goals> +</execution> \ No newline at end of file Deleted: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/invoker.properties =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/invoker.properties 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/invoker.properties 2009-12-14 23:50:27 UTC (rev 755) @@ -1,21 +0,0 @@ -# A comma or space separated list of goals/phases to execute, may -# specify an empty list to execute the default goal of the IT project -invoker.goals=clean generate-sources - -# Optionally, a list of goals to run during further invocations of Maven -#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run - -# A comma or space separated list of profiles to activate -#invoker.profiles=run-all run-once - -# The value for the environment variable MAVEN_OPTS -#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m - -# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never" -invoker.failureBehavior=fail-at-end - -# The expected result of the build, possible values are "success" (default) and "failure" -#invoker.buildResult=success - -# A boolean value controlling the -N flag, defaults to "false" -#invoker.nonRecursive=false Copied: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/invoker.properties (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/invoker.properties) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/invoker.properties (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/invoker.properties 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,21 @@ +# A comma or space separated list of goals/phases to execute, may +# specify an empty list to execute the default goal of the IT project +invoker.goals=clean generate-sources + +# Optionally, a list of goals to run during further invocations of Maven +#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run + +# A comma or space separated list of profiles to activate +#invoker.profiles=run-all run-once + +# The value for the environment variable MAVEN_OPTS +#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m + +# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never" +invoker.failureBehavior=fail-at-end + +# The expected result of the build, possible values are "success" (default) and "failure" +#invoker.buildResult=success + +# A boolean value controlling the -N flag, defaults to "false" +#invoker.nonRecursive=false Deleted: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/pom.xml =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/pom.xml 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/pom.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -1,137 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - - <modelVersion>4.0.0</modelVersion> - - <!-- ************************************************************* --> - <!-- *** POM Relationships *************************************** --> - <!-- ************************************************************* --> - - <groupId>org.nuiton.eugene.test</groupId> - <artifactId>testIncludeWithOnlyProtocol</artifactId> - <version>2.0.0</version> - - <dependencies> - <dependency> - <groupId>org.nuiton.eugene</groupId> - <artifactId>eugene</artifactId> - <version>${eugeneVersion}</version> - <scope>compile</scope> - </dependency> - - <dependency> - <groupId>org.nuiton</groupId> - <artifactId>nuiton-utils</artifactId> - <version>1.1.1</version> - <scope>compile</scope> - </dependency> - - </dependencies> - - - <!-- ************************************************************* --> - <!-- *** Project Information ************************************* --> - <!-- ************************************************************* --> - - <name>EUGene Test :: testIncludeWithOnlyProtocol</name> - - <!-- ************************************************************* --> - <!-- *** Build Settings ****************************************** --> - <!-- ************************************************************* --> - - <packaging>jar</packaging> - - <properties> - - <eugeneVersion>@pom.version@</eugeneVersion> - - <!-- default encoding --> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - - </properties> - - <build> - - <plugins> - - <plugin> - <groupId>org.nuiton.eugene</groupId> - <artifactId>maven-eugene-plugin</artifactId> - <version>${eugeneVersion}</version> - <executions> - <execution> - <id>Zargo to object model</id> - <phase>generate-sources</phase> - <configuration> - <modelType>objectmodel</modelType> - <includes> - <include>src/main/zargo:**/*.zargo</include> - </includes> - <fullPackagePath>org.nuiton.topia.test.entities</fullPackagePath> - <outputDirectory>target/generated-sources-zargo2ObjectModel</outputDirectory> - </configuration> - <goals> - <goal>generate-model-files</goal> - </goals> - </execution> - <execution> - <id>Zargo to state model</id> - <phase>generate-sources</phase> - <configuration> - <modelType>statemodel</modelType> - <includes> - <include>src/main/zargo:**/*.zargo</include> - </includes> - <fullPackagePath>org.nuiton.topia.test.entities</fullPackagePath> - <outputDirectory>target/generated-sources-zargo2StateModel</outputDirectory> - </configuration> - <goals> - <goal>generate-model-files</goal> - </goals> - </execution> - <execution> - <id>Xmi to object model</id> - <phase>generate-sources</phase> - <configuration> - <modelType>objectmodel</modelType> - <includes> - <include>src/main/xmi:**/*.xmi</include> - </includes> - <fullPackagePath>org.nuiton.topia</fullPackagePath> - <outputDirectory>target/generated-sources-xmi2ObjectModel</outputDirectory> - </configuration> - <goals> - <goal>generate-model-files</goal> - </goals> - </execution> - <execution> - <id>Xmi to state model</id> - <phase>generate-sources</phase> - <configuration> - <modelType>statemodel</modelType> - <includes> - <include>src/main/xmi:**/*.xmi</include> - </includes> - <fullPackagePath>org.nuiton.topia</fullPackagePath> - <outputDirectory>target/generated-sources-xmi2StateModel</outputDirectory> - </configuration> - <goals> - <goal>generate-model-files</goal> - </goals> - </execution> - </executions> - <dependencies> - <dependency> - <groupId>log4j</groupId> - <artifactId>log4j</artifactId> - <version>1.2.14</version> - </dependency> - </dependencies> - </plugin> - </plugins> - </build> - -</project> - - Copied: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/pom.xml (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/pom.xml) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/pom.xml (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/pom.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,137 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <!-- ************************************************************* --> + <!-- *** POM Relationships *************************************** --> + <!-- ************************************************************* --> + + <groupId>org.nuiton.eugene.test</groupId> + <artifactId>testIncludeWithOnlyProtocol</artifactId> + <version>2.0.0</version> + + <dependencies> + <dependency> + <groupId>org.nuiton.eugene</groupId> + <artifactId>eugene</artifactId> + <version>${eugeneVersion}</version> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-utils</artifactId> + <version>1.1.1</version> + <scope>compile</scope> + </dependency> + + </dependencies> + + + <!-- ************************************************************* --> + <!-- *** Project Information ************************************* --> + <!-- ************************************************************* --> + + <name>EUGene Test :: testIncludeWithOnlyProtocol</name> + + <!-- ************************************************************* --> + <!-- *** Build Settings ****************************************** --> + <!-- ************************************************************* --> + + <packaging>jar</packaging> + + <properties> + + <eugeneVersion>@pom.version@</eugeneVersion> + + <!-- default encoding --> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + + </properties> + + <build> + + <plugins> + + <plugin> + <groupId>org.nuiton.eugene</groupId> + <artifactId>maven-eugene-plugin</artifactId> + <version>${eugeneVersion}</version> + <executions> + <execution> + <id>Zargo to object model</id> + <phase>generate-sources</phase> + <configuration> + <modelType>objectmodel</modelType> + <includes> + <include>src/main/zargo:**/*.zargo</include> + </includes> + <fullPackagePath>org.nuiton.topia.test.entities</fullPackagePath> + <outputDirectory>target/generated-sources-zargo2ObjectModel</outputDirectory> + </configuration> + <goals> + <goal>generate-model-files</goal> + </goals> + </execution> + <execution> + <id>Zargo to state model</id> + <phase>generate-sources</phase> + <configuration> + <modelType>statemodel</modelType> + <includes> + <include>src/main/zargo:**/*.zargo</include> + </includes> + <fullPackagePath>org.nuiton.topia.test.entities</fullPackagePath> + <outputDirectory>target/generated-sources-zargo2StateModel</outputDirectory> + </configuration> + <goals> + <goal>generate-model-files</goal> + </goals> + </execution> + <execution> + <id>Xmi to object model</id> + <phase>generate-sources</phase> + <configuration> + <modelType>objectmodel</modelType> + <includes> + <include>src/main/xmi:**/*.xmi</include> + </includes> + <fullPackagePath>org.nuiton.topia</fullPackagePath> + <outputDirectory>target/generated-sources-xmi2ObjectModel</outputDirectory> + </configuration> + <goals> + <goal>generate-model-files</goal> + </goals> + </execution> + <execution> + <id>Xmi to state model</id> + <phase>generate-sources</phase> + <configuration> + <modelType>statemodel</modelType> + <includes> + <include>src/main/xmi:**/*.xmi</include> + </includes> + <fullPackagePath>org.nuiton.topia</fullPackagePath> + <outputDirectory>target/generated-sources-xmi2StateModel</outputDirectory> + </configuration> + <goals> + <goal>generate-model-files</goal> + </goals> + </execution> + </executions> + <dependencies> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <version>1.2.14</version> + </dependency> + </dependencies> + </plugin> + </plugins> + </build> + +</project> + + Deleted: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.properties =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.properties 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.properties 2009-12-14 23:50:27 UTC (rev 755) @@ -1 +0,0 @@ -model.tagvalue.generateOperatorForDAOHelper=true \ No newline at end of file Copied: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.properties (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.properties) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.properties (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.properties 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1 @@ +model.tagvalue.generateOperatorForDAOHelper=true \ No newline at end of file Deleted: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.xmi =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.xmi 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.xmi 2009-12-14 23:50:27 UTC (rev 755) @@ -1,1334 +0,0 @@ -<?xml version = '1.0' encoding = 'UTF-8' ?> -<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Mon Oct 19 15:56:54 CEST 2009'> - <XMI.header> <XMI.documentation> - <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter> - <XMI.exporterVersion>0.28.1(6) revised on $Date: 2007-05-12 08:08:08 +0200 (Sat, 12 May 2007) $ </XMI.exporterVersion> - </XMI.documentation> - <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header> - <XMI.content> - <UML:Model xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000077B' - name = 'xmiTopiaTest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:ModelElement.taggedValue> - <UML:TaggedValue xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E3' - isSpecification = 'false'> - <UML:TaggedValue.dataValue>1.2</UML:TaggedValue.dataValue> - <UML:TaggedValue.type> - <UML:TagDefinition xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E4'/> - </UML:TaggedValue.type> - </UML:TaggedValue> - </UML:ModelElement.taggedValue> - <UML:Namespace.ownedElement> - <UML:TagDefinition xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E4' - name = 'version' isSpecification = 'false' tagType = 'String'> - <UML:TagDefinition.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E6'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E5' - lower = '0' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:TagDefinition.multiplicity> - </UML:TagDefinition> - <UML:Stereotype xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7' - name = 'entity' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> - </UML:Stereotype> - <UML:Package xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000090B' - name = 'org' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Namespace.ownedElement> - <UML:Package xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000090C' - name = 'nuiton' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Namespace.ownedElement> - <UML:Package xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000090D' - name = 'topiatest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Namespace.ownedElement> - <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA' - name = 'Personne' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:GeneralizableElement.generalization> - <UML:Generalization xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001020'/> - </UML:GeneralizableElement.generalization> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF9' - name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFD'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFC' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '-64--88-99-15-67f6b63e:12187ee3a69:-8000:0000000000000EB0' - name = 'otherNames' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-67f6b63e:12187ee3a69:-8000:0000000000000EB8'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-67f6b63e:12187ee3a69:-8000:0000000000000EB7' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE' - name = 'Employe' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:GeneralizableElement.generalization> - <UML:Generalization xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E2'/> - </UML:GeneralizableElement.generalization> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D54' - name = 'salary' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D5A'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D59' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0' - name = 'Company' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000011BD' - name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000011C5'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000011C4' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008F9' - name = 'Address' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000903' - name = 'city' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF7'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF6' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CE8' - name = 'adress' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF3'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF2' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FB' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FC' - visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FD'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FE' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FF' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000900'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000901' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008F9'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Generalization xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E2' - isSpecification = 'false'> - <UML:Generalization.child> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'/> - </UML:Generalization.child> - <UML:Generalization.parent> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> - </UML:Generalization.parent> - </UML:Generalization> - <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFE' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFF' - visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102C'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102B' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D02' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102A'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001029' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B' - name = 'Department' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D25' - name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D29'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D28' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A' - name = 'Product' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D37' - name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D3F'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D3E' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D5B' - name = 'Store' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D7D' - name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D83'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D82' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D40' - name = 'Type' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D4D' - name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D53'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D52' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:AssociationClass xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D65' - name = 'Bill' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D66' - visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D89'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D88' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D69' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D8D'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D8C' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D5B'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D6D' - name = 'cost' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D75'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D74' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D76' - name = 'date' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D7A'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D79' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000085F'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:AssociationClass> - <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D18' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D19' - name = 'lead' visibility = 'public' isSpecification = 'false' isNavigable = 'false' - ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D24'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D23' - lower = '0' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D1C' - name = 'leader' visibility = 'public' isSpecification = 'false' isNavigable = 'true' - ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D1D'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D1E' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0D' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0E' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0F'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D10' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D11' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D17'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D16' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2C' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2D' - visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2E'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2F' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D30' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D36'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D35' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D42' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D43' - visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D4C'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D4B' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D46' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D47'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D48' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D40'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Package xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E71' - name = 'beangen' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Namespace.ownedElement> - <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72' - name = 'Voiture' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'true' isActive = 'false'> - <UML:ModelElement.clientDependency> - <UML:Abstraction xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E77'/> - </UML:ModelElement.clientDependency> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'/> - </UML:ModelElement.stereotype> - <UML:ModelElement.taggedValue> - <UML:TaggedValue xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA1' - isSpecification = 'false'> - <UML:TaggedValue.dataValue>Doc for BeanA</UML:TaggedValue.dataValue> - <UML:TaggedValue.type> - <UML:TagDefinition href = 'http://argouml.org/profiles/uml14/default-uml14.xmi#.:000000000000087C'/> - </UML:TaggedValue.type> - </UML:TaggedValue> - </UML:ModelElement.taggedValue> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7C' - name = 'immatriculation' visibility = 'public' isSpecification = 'false' - ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7D'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7E' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:ModelElement.taggedValue> - <UML:TaggedValue xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA2' - isSpecification = 'false'> - <UML:TaggedValue.dataValue>attrA of BeanA</UML:TaggedValue.dataValue> - <UML:TaggedValue.type> - <UML:TagDefinition href = 'http://argouml.org/profiles/uml14/default-uml14.xmi#.:000000000000087C'/> - </UML:TaggedValue.type> - </UML:TaggedValue> - </UML:ModelElement.taggedValue> - <UML:StructuralFeature.type> - <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7F' - name = 'modele' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E80'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E81' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE6' - name = 'proprietaire' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE7'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE8' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E75' - name = 'Roue' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Operation xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E85' - name = 'mount' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:BehavioralFeature.parameter> - <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E86' - name = 'return' isSpecification = 'false' kind = 'return'> - <UML:Parameter.type> - <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086B'/> - </UML:Parameter.type> - </UML:Parameter> - </UML:BehavioralFeature.parameter> - </UML:Operation> - <UML:Operation xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E87' - name = 'getModel' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:BehavioralFeature.parameter> - <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E88' - name = 'return' isSpecification = 'false' kind = 'return'> - <UML:Parameter.type> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'/> - </UML:Parameter.type> - </UML:Parameter> - <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E89' - name = 'id' isSpecification = 'false'> - <UML:Parameter.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:Parameter.type> - </UML:Parameter> - </UML:BehavioralFeature.parameter> - </UML:Operation> - </UML:Classifier.feature> - </UML:Class> - <UML:Abstraction xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E77' - isSpecification = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E78'/> - </UML:ModelElement.stereotype> - <UML:Dependency.client> - <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'/> - </UML:Dependency.client> - <UML:Dependency.supplier> - <UML:Interface xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E76'/> - </UML:Dependency.supplier> - </UML:Abstraction> - <UML:Interface xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E76' - name = 'Vehicule' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false'> - <UML:Classifier.feature> - <UML:Operation xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7A' - name = 'start' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:BehavioralFeature.parameter> - <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7B' - name = 'return' isSpecification = 'false' kind = 'return'> - <UML:Parameter.type> - <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086B'/> - </UML:Parameter.type> - </UML:Parameter> - </UML:BehavioralFeature.parameter> - </UML:Operation> - </UML:Classifier.feature> - </UML:Interface> - <UML:Association xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8A' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8B' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8C'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8D' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8E' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED2'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED1' - lower = '4' upper = '4'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E75'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAB' - name = 'RelationDTO' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E74'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAC' - name = 'idCompany' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAD'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAE' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAF' - name = 'idDepartement' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB0'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB1' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBB' - name = 'dateDebut' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBC'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBD' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000085F'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA9' - name = 'PersonneDTO' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.clientDependency> - <UML:Dependency xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAA'/> - </UML:ModelElement.clientDependency> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E74'/> - </UML:ModelElement.stereotype> - <UML:Namespace.ownedElement> - <UML:Dependency xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAA' - isSpecification = 'false'> - <UML:Dependency.client> - <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA9'/> - </UML:Dependency.client> - <UML:Dependency.supplier> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> - </UML:Dependency.supplier> - </UML:Dependency> - </UML:Namespace.ownedElement> - </UML:Class> - <UML:Association xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB2' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB3' - visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBA'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB9' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAB'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB6' - name = 'person' visibility = 'public' isSpecification = 'false' isNavigable = 'true' - ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB7'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB8' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA9'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED3' - name = 'Siege' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDB' - name = 'noSerie' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDC'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDD' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Association xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED4' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED5' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE5'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE4' - lower = '1' upper = '4'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED3'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED8' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED9'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDA' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - </UML:Namespace.ownedElement> - </UML:Package> - <UML:Package xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100A' - name = 'deletetest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Namespace.ownedElement> - <UML:Class xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100B' - name = 'Contact2' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001019' - name = 'contactValue' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101A'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101B' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101C' - name = 'type' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101D'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101E' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Operation xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102F' - name = 'findAllByCompany' visibility = 'public' isSpecification = 'false' - ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001034'/> - </UML:ModelElement.stereotype> - <UML:BehavioralFeature.parameter> - <UML:Parameter xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001030' - name = 'return' isSpecification = 'false' kind = 'return'> - <UML:Parameter.type> - <UML:Class xmi.idref = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001032'/> - </UML:Parameter.type> - </UML:Parameter> - <UML:Parameter xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001033' - name = 'company' isSpecification = 'false'> - <UML:Parameter.type> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/> - </UML:Parameter.type> - </UML:Parameter> - </UML:BehavioralFeature.parameter> - </UML:Operation> - </UML:Classifier.feature> - </UML:Class> - <UML:Association xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100C' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100D' - name = 'contacts' visibility = 'public' isSpecification = 'false' isNavigable = 'true' - ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001026'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001025' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100B'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001010' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001028'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001027' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101F'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Class xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001017' - name = 'Telephone2' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:GeneralizableElement.generalization> - <UML:Generalization xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001018'/> - </UML:GeneralizableElement.generalization> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001021' - name = 'prefix' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001022'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001023' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001024' - name = 'country' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001025'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001026' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Generalization xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001018' - isSpecification = 'false'> - <UML:Generalization.child> - <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001017'/> - </UML:Generalization.child> - <UML:Generalization.parent> - <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100B'/> - </UML:Generalization.parent> - </UML:Generalization> - <UML:Class xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101F' - name = 'Party2' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - </UML:Class> - </UML:Namespace.ownedElement> - </UML:Package> - <UML:Generalization xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001020' - isSpecification = 'false'> - <UML:Generalization.child> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> - </UML:Generalization.child> - <UML:Generalization.parent> - <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101F'/> - </UML:Generalization.parent> - </UML:Generalization> - </UML:Namespace.ownedElement> - </UML:Package> - <UML:Package xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000121D' - name = 'topia' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Namespace.ownedElement> - <UML:Package xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000121E' - name = 'test' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Namespace.ownedElement> - <UML:Package xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000121F' - name = 'entities' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Namespace.ownedElement> - <UML:Class xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001220' - name = 'Person' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001228' - name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001229'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122A' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122B' - name = 'firstname' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122C'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122D' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Class xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001221' - name = 'Pet' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001222' - name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001223'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001224' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001225' - name = 'type' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001226'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001227' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Association xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001237' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001238' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001239'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123A' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-13652238:1219c622604:-8000:0000000000001220'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123B' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123F'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123E' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-13652238:1219c622604:-8000:0000000000001221'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Association xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102A' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102B' - visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' - aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102C'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102D' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-13652238:1219c622604:-8000:0000000000001221'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102E' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102F'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001030' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001029'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Class xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001029' - name = 'Race' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001031' - name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001032'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001033' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - </UML:Namespace.ownedElement> - </UML:Package> - </UML:Namespace.ownedElement> - </UML:Package> - </UML:Namespace.ownedElement> - </UML:Package> - </UML:Namespace.ownedElement> - </UML:Package> - </UML:Namespace.ownedElement> - </UML:Package> - <UML:Stereotype xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73' - name = 'bean' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> - </UML:Stereotype> - <UML:Stereotype xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E74' - name = 'dto' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> - </UML:Stereotype> - <UML:Stereotype xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E78' - name = 'realize' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass> - </UML:Stereotype> - <UML:Package xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001031' - name = 'java.util' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Namespace.ownedElement> - <UML:Class xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001032' - name = 'Set<Contact2>' visibility = 'public' isSpecification = 'false' - isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> - </UML:Namespace.ownedElement> - </UML:Package> - <UML:Stereotype xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001034' - name = 'dao' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Stereotype.baseClass>Operation</UML:Stereotype.baseClass> - </UML:Stereotype> - </UML:Namespace.ownedElement> - </UML:Model> - <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001233'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001234' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123C'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123D' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </XMI.content> -</XMI> Copied: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.xmi (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.xmi) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.xmi (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.xmi 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,1334 @@ +<?xml version = '1.0' encoding = 'UTF-8' ?> +<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Mon Oct 19 15:56:54 CEST 2009'> + <XMI.header> <XMI.documentation> + <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter> + <XMI.exporterVersion>0.28.1(6) revised on $Date: 2007-05-12 08:08:08 +0200 (Sat, 12 May 2007) $ </XMI.exporterVersion> + </XMI.documentation> + <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header> + <XMI.content> + <UML:Model xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000077B' + name = 'xmiTopiaTest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E3' + isSpecification = 'false'> + <UML:TaggedValue.dataValue>1.2</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E4'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:Namespace.ownedElement> + <UML:TagDefinition xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E4' + name = 'version' isSpecification = 'false' tagType = 'String'> + <UML:TagDefinition.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E6'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E5' + lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:TagDefinition.multiplicity> + </UML:TagDefinition> + <UML:Stereotype xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7' + name = 'entity' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Package xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000090B' + name = 'org' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000090C' + name = 'nuiton' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000090D' + name = 'topiatest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA' + name = 'Personne' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001020'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF9' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFD'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFC' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '-64--88-99-15-67f6b63e:12187ee3a69:-8000:0000000000000EB0' + name = 'otherNames' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-67f6b63e:12187ee3a69:-8000:0000000000000EB8'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-67f6b63e:12187ee3a69:-8000:0000000000000EB7' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE' + name = 'Employe' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E2'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D54' + name = 'salary' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D5A'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D59' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0' + name = 'Company' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000011BD' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000011C5'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000011C4' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008F9' + name = 'Address' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000903' + name = 'city' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF7'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF6' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CE8' + name = 'adress' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF3'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF2' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FB' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FC' + visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FD'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FE' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FF' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000900'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000901' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008F9'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Generalization xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E2' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFE' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFF' + visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102B' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D02' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102A'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001029' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B' + name = 'Department' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D25' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D29'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D28' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A' + name = 'Product' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D37' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D3F'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D3E' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D5B' + name = 'Store' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D7D' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D83'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D82' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D40' + name = 'Type' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D4D' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D53'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D52' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:AssociationClass xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D65' + name = 'Bill' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D66' + visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D89'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D88' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D69' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D8D'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D8C' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D5B'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D6D' + name = 'cost' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D75'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D74' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D76' + name = 'date' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D7A'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D79' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000085F'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:AssociationClass> + <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D18' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D19' + name = 'lead' visibility = 'public' isSpecification = 'false' isNavigable = 'false' + ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D24'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D23' + lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D1C' + name = 'leader' visibility = 'public' isSpecification = 'false' isNavigable = 'true' + ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D1D'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D1E' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0D' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0E' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0F'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D10' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D11' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D17'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D16' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2C' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2D' + visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2E'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2F' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D30' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D36'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D35' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D42' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D43' + visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D4C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D4B' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D46' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D47'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D48' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D40'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Package xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E71' + name = 'beangen' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72' + name = 'Voiture' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'true' isActive = 'false'> + <UML:ModelElement.clientDependency> + <UML:Abstraction xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E77'/> + </UML:ModelElement.clientDependency> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'/> + </UML:ModelElement.stereotype> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA1' + isSpecification = 'false'> + <UML:TaggedValue.dataValue>Doc for BeanA</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition href = 'http://argouml.org/profiles/uml14/default-uml14.xmi#.:000000000000087C'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7C' + name = 'immatriculation' visibility = 'public' isSpecification = 'false' + ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7D'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7E' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA2' + isSpecification = 'false'> + <UML:TaggedValue.dataValue>attrA of BeanA</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition href = 'http://argouml.org/profiles/uml14/default-uml14.xmi#.:000000000000087C'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7F' + name = 'modele' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E80'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E81' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE6' + name = 'proprietaire' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE7'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE8' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E75' + name = 'Roue' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Operation xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E85' + name = 'mount' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E86' + name = 'return' isSpecification = 'false' kind = 'return'> + <UML:Parameter.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086B'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E87' + name = 'getModel' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E88' + name = 'return' isSpecification = 'false' kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E89' + name = 'id' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Abstraction xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E77' + isSpecification = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E78'/> + </UML:ModelElement.stereotype> + <UML:Dependency.client> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'/> + </UML:Dependency.client> + <UML:Dependency.supplier> + <UML:Interface xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E76'/> + </UML:Dependency.supplier> + </UML:Abstraction> + <UML:Interface xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E76' + name = 'Vehicule' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false'> + <UML:Classifier.feature> + <UML:Operation xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7A' + name = 'start' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7B' + name = 'return' isSpecification = 'false' kind = 'return'> + <UML:Parameter.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086B'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Interface> + <UML:Association xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8A' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8B' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8D' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8E' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED2'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED1' + lower = '4' upper = '4'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E75'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAB' + name = 'RelationDTO' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E74'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAC' + name = 'idCompany' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAD'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAE' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAF' + name = 'idDepartement' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB0'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB1' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBB' + name = 'dateDebut' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBC'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBD' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000085F'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA9' + name = 'PersonneDTO' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.clientDependency> + <UML:Dependency xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAA'/> + </UML:ModelElement.clientDependency> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E74'/> + </UML:ModelElement.stereotype> + <UML:Namespace.ownedElement> + <UML:Dependency xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAA' + isSpecification = 'false'> + <UML:Dependency.client> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA9'/> + </UML:Dependency.client> + <UML:Dependency.supplier> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> + </UML:Dependency.supplier> + </UML:Dependency> + </UML:Namespace.ownedElement> + </UML:Class> + <UML:Association xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB2' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB3' + visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBA'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB9' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAB'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB6' + name = 'person' visibility = 'public' isSpecification = 'false' isNavigable = 'true' + ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB7'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB8' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA9'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED3' + name = 'Siege' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDB' + name = 'noSerie' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDC'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDD' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED4' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED5' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE5'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE4' + lower = '1' upper = '4'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED3'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED8' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED9'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDA' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100A' + name = 'deletetest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100B' + name = 'Contact2' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001019' + name = 'contactValue' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101A'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101B' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101C' + name = 'type' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101D'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101E' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102F' + name = 'findAllByCompany' visibility = 'public' isSpecification = 'false' + ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001034'/> + </UML:ModelElement.stereotype> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001030' + name = 'return' isSpecification = 'false' kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001032'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001033' + name = 'company' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100C' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100D' + name = 'contacts' visibility = 'public' isSpecification = 'false' isNavigable = 'true' + ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001026'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001025' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100B'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001010' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001028'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001027' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101F'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001017' + name = 'Telephone2' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001018'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001021' + name = 'prefix' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001022'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001023' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001024' + name = 'country' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001025'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001026' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Generalization xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001018' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001017'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100B'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Class xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101F' + name = 'Party2' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + </UML:Class> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Generalization xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001020' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101F'/> + </UML:Generalization.parent> + </UML:Generalization> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000121D' + name = 'topia' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000121E' + name = 'test' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000121F' + name = 'entities' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001220' + name = 'Person' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001228' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001229'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122A' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122B' + name = 'firstname' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122D' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001221' + name = 'Pet' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001222' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001223'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001224' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001225' + name = 'type' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001226'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001227' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001237' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001238' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001239'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123A' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-13652238:1219c622604:-8000:0000000000001220'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123B' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123F'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123E' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-13652238:1219c622604:-8000:0000000000001221'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102A' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102B' + visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' + aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102D' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-13652238:1219c622604:-8000:0000000000001221'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102E' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102F'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001030' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001029'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001029' + name = 'Race' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001031' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001032'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001033' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Stereotype xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73' + name = 'bean' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E74' + name = 'dto' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E78' + name = 'realize' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Package xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001031' + name = 'java.util' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001032' + name = 'Set<Contact2>' visibility = 'public' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Stereotype xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001034' + name = 'dao' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>Operation</UML:Stereotype.baseClass> + </UML:Stereotype> + </UML:Namespace.ownedElement> + </UML:Model> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001233'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001234' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123D' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </XMI.content> +</XMI> Deleted: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/topiatest.properties =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/topiatest.properties 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/topiatest.properties 2009-12-14 23:50:27 UTC (rev 755) @@ -1 +0,0 @@ -model.tagvalue.generateOperatorForDAOHelper=true \ No newline at end of file Copied: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/topiatest.properties (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/topiatest.properties) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/topiatest.properties (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/topiatest.properties 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1 @@ +model.tagvalue.generateOperatorForDAOHelper=true \ No newline at end of file Deleted: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/topiatest.zargo =================================================================== (Binary files differ) Copied: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/topiatest.zargo (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/topiatest.zargo) =================================================================== (Binary files differ) Deleted: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/verify.groovy =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/verify.groovy 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/verify.groovy 2009-12-14 23:50:27 UTC (rev 755) @@ -1,42 +0,0 @@ - - -// Zargo to object model - -assert new File(basedir, 'target/generated-sources-zargo2ObjectModel').exists(); -assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/xmi').exists(); -assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/xmi/topiatest.properties').exists(); -assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/xmi/topiatest.xmi').exists(); - -assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/models').exists(); -assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/models/topiatest.properties').exists(); -assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/models/topiatest.objectmodel').exists(); - -// Zargo to state model - -assert new File(basedir, 'target/generated-sources-zargo2StateModel').exists(); - -assert new File(basedir, 'target/generated-sources-zargo2StateModel/xmi').exists(); -assert new File(basedir, 'target/generated-sources-zargo2StateModel/xmi/topiatest.properties').exists(); -assert new File(basedir, 'target/generated-sources-zargo2StateModel/xmi/topiatest.xmi').exists(); - -assert new File(basedir, 'target/generated-sources-zargo2StateModel/models').exists(); -assert new File(basedir, 'target/generated-sources-zargo2StateModel/models/topiatest.properties').exists(); -assert new File(basedir, 'target/generated-sources-zargo2StateModel/models/topiatest.statemodel').exists(); - -// Xmi to object model - -assert new File(basedir, 'target/generated-sources-xmi2ObjectModel').exists(); -assert new File(basedir, 'target/generated-sources-xmi2ObjectModel/models').exists(); -assert new File(basedir, 'target/generated-sources-xmi2ObjectModel/models/topiatest.properties').exists(); -assert new File(basedir, 'target/generated-sources-xmi2ObjectModel/models/topiatest.objectmodel').exists(); - - -// Xmi to state model - -assert new File(basedir, 'target/generated-sources-xmi2StateModel').exists(); -assert new File(basedir, 'target/generated-sources-xmi2StateModel/models').exists(); -assert new File(basedir, 'target/generated-sources-xmi2StateModel/models/topiatest.properties').exists(); -assert new File(basedir, 'target/generated-sources-xmi2StateModel/models/topiatest.statemodel').exists(); - -return true; - Copied: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/verify.groovy (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/verify.groovy) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/verify.groovy (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/verify.groovy 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,42 @@ + + +// Zargo to object model + +assert new File(basedir, 'target/generated-sources-zargo2ObjectModel').exists(); +assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/xmi').exists(); +assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/xmi/topiatest.properties').exists(); +assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/xmi/topiatest.xmi').exists(); + +assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/models').exists(); +assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/models/topiatest.properties').exists(); +assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/models/topiatest.objectmodel').exists(); + +// Zargo to state model + +assert new File(basedir, 'target/generated-sources-zargo2StateModel').exists(); + +assert new File(basedir, 'target/generated-sources-zargo2StateModel/xmi').exists(); +assert new File(basedir, 'target/generated-sources-zargo2StateModel/xmi/topiatest.properties').exists(); +assert new File(basedir, 'target/generated-sources-zargo2StateModel/xmi/topiatest.xmi').exists(); + +assert new File(basedir, 'target/generated-sources-zargo2StateModel/models').exists(); +assert new File(basedir, 'target/generated-sources-zargo2StateModel/models/topiatest.properties').exists(); +assert new File(basedir, 'target/generated-sources-zargo2StateModel/models/topiatest.statemodel').exists(); + +// Xmi to object model + +assert new File(basedir, 'target/generated-sources-xmi2ObjectModel').exists(); +assert new File(basedir, 'target/generated-sources-xmi2ObjectModel/models').exists(); +assert new File(basedir, 'target/generated-sources-xmi2ObjectModel/models/topiatest.properties').exists(); +assert new File(basedir, 'target/generated-sources-xmi2ObjectModel/models/topiatest.objectmodel').exists(); + + +// Xmi to state model + +assert new File(basedir, 'target/generated-sources-xmi2StateModel').exists(); +assert new File(basedir, 'target/generated-sources-xmi2StateModel/models').exists(); +assert new File(basedir, 'target/generated-sources-xmi2StateModel/models/topiatest.properties').exists(); +assert new File(basedir, 'target/generated-sources-xmi2StateModel/models/topiatest.statemodel').exists(); + +return true; + Deleted: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/README.txt =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/README.txt 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/README.txt 2009-12-14 23:50:27 UTC (rev 755) @@ -1,16 +0,0 @@ -On teste ici le goal generate-model-files avec en include que des includes simplifiés n'utilisant que les noms -des writers connus : - -<execution> - <phase>generate-sources</phase> - <configuration> - <modelType>objectmodel</modelType> - <includes> - <include>zargo</include> - </includes> - <fullPackagePath>org.nuiton.topia.test.entities</fullPackagePath> - </configuration> - <goals> - <goal>generate-model</goal> - </goals> -</execution> \ No newline at end of file Copied: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/README.txt (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/README.txt) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/README.txt (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/README.txt 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,16 @@ +On teste ici le goal generate-model-files avec en include que des includes simplifiés n'utilisant que les noms +des writers connus : + +<execution> + <phase>generate-sources</phase> + <configuration> + <modelType>objectmodel</modelType> + <includes> + <include>zargo</include> + </includes> + <fullPackagePath>org.nuiton.topia.test.entities</fullPackagePath> + </configuration> + <goals> + <goal>generate-model</goal> + </goals> +</execution> \ No newline at end of file Deleted: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/invoker.properties =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/invoker.properties 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/invoker.properties 2009-12-14 23:50:27 UTC (rev 755) @@ -1,21 +0,0 @@ -# A comma or space separated list of goals/phases to execute, may -# specify an empty list to execute the default goal of the IT project -invoker.goals=clean generate-sources - -# Optionally, a list of goals to run during further invocations of Maven -#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run - -# A comma or space separated list of profiles to activate -#invoker.profiles=run-all run-once - -# The value for the environment variable MAVEN_OPTS -#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m - -# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never" -invoker.failureBehavior=fail-at-end - -# The expected result of the build, possible values are "success" (default) and "failure" -#invoker.buildResult=success - -# A boolean value controlling the -N flag, defaults to "false" -#invoker.nonRecursive=false Copied: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/invoker.properties (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/invoker.properties) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/invoker.properties (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/invoker.properties 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,21 @@ +# A comma or space separated list of goals/phases to execute, may +# specify an empty list to execute the default goal of the IT project +invoker.goals=clean generate-sources + +# Optionally, a list of goals to run during further invocations of Maven +#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run + +# A comma or space separated list of profiles to activate +#invoker.profiles=run-all run-once + +# The value for the environment variable MAVEN_OPTS +#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m + +# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never" +invoker.failureBehavior=fail-at-end + +# The expected result of the build, possible values are "success" (default) and "failure" +#invoker.buildResult=success + +# A boolean value controlling the -N flag, defaults to "false" +#invoker.nonRecursive=false Deleted: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/pom.xml =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/pom.xml 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/pom.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -1,137 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - - <modelVersion>4.0.0</modelVersion> - - <!-- ************************************************************* --> - <!-- *** POM Relationships *************************************** --> - <!-- ************************************************************* --> - - <groupId>org.nuiton.eugene.test</groupId> - <artifactId>testIncludeWithOnlyProtocol</artifactId> - <version>2.0.0</version> - - <dependencies> - <dependency> - <groupId>org.nuiton.eugene</groupId> - <artifactId>eugene</artifactId> - <version>${eugeneVersion}</version> - <scope>compile</scope> - </dependency> - - <dependency> - <groupId>org.nuiton</groupId> - <artifactId>nuiton-utils</artifactId> - <version>1.1.1</version> - <scope>compile</scope> - </dependency> - - </dependencies> - - - <!-- ************************************************************* --> - <!-- *** Project Information ************************************* --> - <!-- ************************************************************* --> - - <name>EUGene Test :: testIncludeWithOnlyProtocol</name> - - <!-- ************************************************************* --> - <!-- *** Build Settings ****************************************** --> - <!-- ************************************************************* --> - - <packaging>jar</packaging> - - <properties> - - <eugeneVersion>@pom.version@</eugeneVersion> - - <!-- default encoding --> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - - </properties> - - <build> - - <plugins> - - <plugin> - <groupId>org.nuiton.eugene</groupId> - <artifactId>maven-eugene-plugin</artifactId> - <version>${eugeneVersion}</version> - <executions> - <execution> - <id>Zargo to object model</id> - <phase>generate-sources</phase> - <configuration> - <modelType>objectmodel</modelType> - <includes> - <include>zargo</include> - </includes> - <fullPackagePath>org.nuiton.topia.test.entities</fullPackagePath> - <outputDirectory>target/generated-sources-zargo2ObjectModel</outputDirectory> - </configuration> - <goals> - <goal>generate-model-files</goal> - </goals> - </execution> - <execution> - <id>Zargo to state model</id> - <phase>generate-sources</phase> - <configuration> - <modelType>statemodel</modelType> - <includes> - <include>zargo</include> - </includes> - <fullPackagePath>org.nuiton.topia.test.entities</fullPackagePath> - <outputDirectory>target/generated-sources-zargo2StateModel</outputDirectory> - </configuration> - <goals> - <goal>generate-model-files</goal> - </goals> - </execution> - <execution> - <id>Xmi to object model</id> - <phase>generate-sources</phase> - <configuration> - <modelType>objectmodel</modelType> - <includes> - <include>xmi</include> - </includes> - <fullPackagePath>org.nuiton.topia</fullPackagePath> - <outputDirectory>target/generated-sources-xmi2ObjectModel</outputDirectory> - </configuration> - <goals> - <goal>generate-model-files</goal> - </goals> - </execution> - <execution> - <id>Xmi to state model</id> - <phase>generate-sources</phase> - <configuration> - <modelType>statemodel</modelType> - <includes> - <include>xmi</include> - </includes> - <fullPackagePath>org.nuiton.topia</fullPackagePath> - <outputDirectory>target/generated-sources-xmi2StateModel</outputDirectory> - </configuration> - <goals> - <goal>generate-model-files</goal> - </goals> - </execution> - </executions> - <dependencies> - <dependency> - <groupId>log4j</groupId> - <artifactId>log4j</artifactId> - <version>1.2.14</version> - </dependency> - </dependencies> - </plugin> - </plugins> - </build> - -</project> - - Copied: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/pom.xml (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/pom.xml) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/pom.xml (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/pom.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,137 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <!-- ************************************************************* --> + <!-- *** POM Relationships *************************************** --> + <!-- ************************************************************* --> + + <groupId>org.nuiton.eugene.test</groupId> + <artifactId>testIncludeWithOnlyProtocol</artifactId> + <version>2.0.0</version> + + <dependencies> + <dependency> + <groupId>org.nuiton.eugene</groupId> + <artifactId>eugene</artifactId> + <version>${eugeneVersion}</version> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-utils</artifactId> + <version>1.1.1</version> + <scope>compile</scope> + </dependency> + + </dependencies> + + + <!-- ************************************************************* --> + <!-- *** Project Information ************************************* --> + <!-- ************************************************************* --> + + <name>EUGene Test :: testIncludeWithOnlyProtocol</name> + + <!-- ************************************************************* --> + <!-- *** Build Settings ****************************************** --> + <!-- ************************************************************* --> + + <packaging>jar</packaging> + + <properties> + + <eugeneVersion>@pom.version@</eugeneVersion> + + <!-- default encoding --> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + + </properties> + + <build> + + <plugins> + + <plugin> + <groupId>org.nuiton.eugene</groupId> + <artifactId>maven-eugene-plugin</artifactId> + <version>${eugeneVersion}</version> + <executions> + <execution> + <id>Zargo to object model</id> + <phase>generate-sources</phase> + <configuration> + <modelType>objectmodel</modelType> + <includes> + <include>zargo</include> + </includes> + <fullPackagePath>org.nuiton.topia.test.entities</fullPackagePath> + <outputDirectory>target/generated-sources-zargo2ObjectModel</outputDirectory> + </configuration> + <goals> + <goal>generate-model-files</goal> + </goals> + </execution> + <execution> + <id>Zargo to state model</id> + <phase>generate-sources</phase> + <configuration> + <modelType>statemodel</modelType> + <includes> + <include>zargo</include> + </includes> + <fullPackagePath>org.nuiton.topia.test.entities</fullPackagePath> + <outputDirectory>target/generated-sources-zargo2StateModel</outputDirectory> + </configuration> + <goals> + <goal>generate-model-files</goal> + </goals> + </execution> + <execution> + <id>Xmi to object model</id> + <phase>generate-sources</phase> + <configuration> + <modelType>objectmodel</modelType> + <includes> + <include>xmi</include> + </includes> + <fullPackagePath>org.nuiton.topia</fullPackagePath> + <outputDirectory>target/generated-sources-xmi2ObjectModel</outputDirectory> + </configuration> + <goals> + <goal>generate-model-files</goal> + </goals> + </execution> + <execution> + <id>Xmi to state model</id> + <phase>generate-sources</phase> + <configuration> + <modelType>statemodel</modelType> + <includes> + <include>xmi</include> + </includes> + <fullPackagePath>org.nuiton.topia</fullPackagePath> + <outputDirectory>target/generated-sources-xmi2StateModel</outputDirectory> + </configuration> + <goals> + <goal>generate-model-files</goal> + </goals> + </execution> + </executions> + <dependencies> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <version>1.2.14</version> + </dependency> + </dependencies> + </plugin> + </plugins> + </build> + +</project> + + Deleted: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.properties =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.properties 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.properties 2009-12-14 23:50:27 UTC (rev 755) @@ -1 +0,0 @@ -model.tagvalue.generateOperatorForDAOHelper=true \ No newline at end of file Copied: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.properties (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.properties) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.properties (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.properties 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1 @@ +model.tagvalue.generateOperatorForDAOHelper=true \ No newline at end of file Deleted: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.xmi =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.xmi 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.xmi 2009-12-14 23:50:27 UTC (rev 755) @@ -1,1334 +0,0 @@ -<?xml version = '1.0' encoding = 'UTF-8' ?> -<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Mon Oct 19 15:56:54 CEST 2009'> - <XMI.header> <XMI.documentation> - <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter> - <XMI.exporterVersion>0.28.1(6) revised on $Date: 2007-05-12 08:08:08 +0200 (Sat, 12 May 2007) $ </XMI.exporterVersion> - </XMI.documentation> - <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header> - <XMI.content> - <UML:Model xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000077B' - name = 'xmiTopiaTest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:ModelElement.taggedValue> - <UML:TaggedValue xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E3' - isSpecification = 'false'> - <UML:TaggedValue.dataValue>1.2</UML:TaggedValue.dataValue> - <UML:TaggedValue.type> - <UML:TagDefinition xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E4'/> - </UML:TaggedValue.type> - </UML:TaggedValue> - </UML:ModelElement.taggedValue> - <UML:Namespace.ownedElement> - <UML:TagDefinition xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E4' - name = 'version' isSpecification = 'false' tagType = 'String'> - <UML:TagDefinition.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E6'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E5' - lower = '0' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:TagDefinition.multiplicity> - </UML:TagDefinition> - <UML:Stereotype xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7' - name = 'entity' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> - </UML:Stereotype> - <UML:Package xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000090B' - name = 'org' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Namespace.ownedElement> - <UML:Package xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000090C' - name = 'nuiton' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Namespace.ownedElement> - <UML:Package xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000090D' - name = 'topiatest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Namespace.ownedElement> - <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA' - name = 'Personne' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:GeneralizableElement.generalization> - <UML:Generalization xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001020'/> - </UML:GeneralizableElement.generalization> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF9' - name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFD'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFC' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '-64--88-99-15-67f6b63e:12187ee3a69:-8000:0000000000000EB0' - name = 'otherNames' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-67f6b63e:12187ee3a69:-8000:0000000000000EB8'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-67f6b63e:12187ee3a69:-8000:0000000000000EB7' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE' - name = 'Employe' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:GeneralizableElement.generalization> - <UML:Generalization xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E2'/> - </UML:GeneralizableElement.generalization> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D54' - name = 'salary' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D5A'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D59' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0' - name = 'Company' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000011BD' - name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000011C5'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000011C4' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008F9' - name = 'Address' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000903' - name = 'city' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF7'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF6' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CE8' - name = 'adress' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF3'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF2' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FB' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FC' - visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FD'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FE' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FF' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000900'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000901' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008F9'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Generalization xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E2' - isSpecification = 'false'> - <UML:Generalization.child> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'/> - </UML:Generalization.child> - <UML:Generalization.parent> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> - </UML:Generalization.parent> - </UML:Generalization> - <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFE' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFF' - visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102C'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102B' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D02' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102A'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001029' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B' - name = 'Department' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D25' - name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D29'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D28' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A' - name = 'Product' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D37' - name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D3F'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D3E' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D5B' - name = 'Store' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D7D' - name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D83'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D82' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D40' - name = 'Type' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D4D' - name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D53'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D52' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:AssociationClass xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D65' - name = 'Bill' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D66' - visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D89'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D88' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D69' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D8D'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D8C' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D5B'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D6D' - name = 'cost' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D75'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D74' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D76' - name = 'date' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D7A'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D79' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000085F'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:AssociationClass> - <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D18' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D19' - name = 'lead' visibility = 'public' isSpecification = 'false' isNavigable = 'false' - ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D24'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D23' - lower = '0' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D1C' - name = 'leader' visibility = 'public' isSpecification = 'false' isNavigable = 'true' - ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D1D'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D1E' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0D' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0E' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0F'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D10' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D11' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D17'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D16' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2C' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2D' - visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2E'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2F' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D30' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D36'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D35' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D42' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D43' - visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D4C'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D4B' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D46' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D47'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D48' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D40'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Package xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E71' - name = 'beangen' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Namespace.ownedElement> - <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72' - name = 'Voiture' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'true' isActive = 'false'> - <UML:ModelElement.clientDependency> - <UML:Abstraction xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E77'/> - </UML:ModelElement.clientDependency> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'/> - </UML:ModelElement.stereotype> - <UML:ModelElement.taggedValue> - <UML:TaggedValue xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA1' - isSpecification = 'false'> - <UML:TaggedValue.dataValue>Doc for BeanA</UML:TaggedValue.dataValue> - <UML:TaggedValue.type> - <UML:TagDefinition href = 'http://argouml.org/profiles/uml14/default-uml14.xmi#.:000000000000087C'/> - </UML:TaggedValue.type> - </UML:TaggedValue> - </UML:ModelElement.taggedValue> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7C' - name = 'immatriculation' visibility = 'public' isSpecification = 'false' - ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7D'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7E' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:ModelElement.taggedValue> - <UML:TaggedValue xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA2' - isSpecification = 'false'> - <UML:TaggedValue.dataValue>attrA of BeanA</UML:TaggedValue.dataValue> - <UML:TaggedValue.type> - <UML:TagDefinition href = 'http://argouml.org/profiles/uml14/default-uml14.xmi#.:000000000000087C'/> - </UML:TaggedValue.type> - </UML:TaggedValue> - </UML:ModelElement.taggedValue> - <UML:StructuralFeature.type> - <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7F' - name = 'modele' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E80'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E81' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE6' - name = 'proprietaire' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE7'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE8' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E75' - name = 'Roue' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Operation xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E85' - name = 'mount' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:BehavioralFeature.parameter> - <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E86' - name = 'return' isSpecification = 'false' kind = 'return'> - <UML:Parameter.type> - <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086B'/> - </UML:Parameter.type> - </UML:Parameter> - </UML:BehavioralFeature.parameter> - </UML:Operation> - <UML:Operation xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E87' - name = 'getModel' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:BehavioralFeature.parameter> - <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E88' - name = 'return' isSpecification = 'false' kind = 'return'> - <UML:Parameter.type> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'/> - </UML:Parameter.type> - </UML:Parameter> - <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E89' - name = 'id' isSpecification = 'false'> - <UML:Parameter.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:Parameter.type> - </UML:Parameter> - </UML:BehavioralFeature.parameter> - </UML:Operation> - </UML:Classifier.feature> - </UML:Class> - <UML:Abstraction xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E77' - isSpecification = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E78'/> - </UML:ModelElement.stereotype> - <UML:Dependency.client> - <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'/> - </UML:Dependency.client> - <UML:Dependency.supplier> - <UML:Interface xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E76'/> - </UML:Dependency.supplier> - </UML:Abstraction> - <UML:Interface xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E76' - name = 'Vehicule' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false'> - <UML:Classifier.feature> - <UML:Operation xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7A' - name = 'start' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:BehavioralFeature.parameter> - <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7B' - name = 'return' isSpecification = 'false' kind = 'return'> - <UML:Parameter.type> - <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086B'/> - </UML:Parameter.type> - </UML:Parameter> - </UML:BehavioralFeature.parameter> - </UML:Operation> - </UML:Classifier.feature> - </UML:Interface> - <UML:Association xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8A' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8B' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8C'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8D' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8E' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED2'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED1' - lower = '4' upper = '4'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E75'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAB' - name = 'RelationDTO' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E74'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAC' - name = 'idCompany' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAD'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAE' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAF' - name = 'idDepartement' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB0'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB1' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBB' - name = 'dateDebut' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBC'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBD' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000085F'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA9' - name = 'PersonneDTO' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.clientDependency> - <UML:Dependency xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAA'/> - </UML:ModelElement.clientDependency> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E74'/> - </UML:ModelElement.stereotype> - <UML:Namespace.ownedElement> - <UML:Dependency xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAA' - isSpecification = 'false'> - <UML:Dependency.client> - <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA9'/> - </UML:Dependency.client> - <UML:Dependency.supplier> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> - </UML:Dependency.supplier> - </UML:Dependency> - </UML:Namespace.ownedElement> - </UML:Class> - <UML:Association xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB2' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB3' - visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBA'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB9' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAB'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB6' - name = 'person' visibility = 'public' isSpecification = 'false' isNavigable = 'true' - ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB7'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB8' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA9'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED3' - name = 'Siege' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDB' - name = 'noSerie' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDC'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDD' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Association xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED4' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED5' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE5'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE4' - lower = '1' upper = '4'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED3'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED8' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED9'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDA' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - </UML:Namespace.ownedElement> - </UML:Package> - <UML:Package xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100A' - name = 'deletetest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Namespace.ownedElement> - <UML:Class xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100B' - name = 'Contact2' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001019' - name = 'contactValue' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101A'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101B' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101C' - name = 'type' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101D'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101E' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Operation xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102F' - name = 'findAllByCompany' visibility = 'public' isSpecification = 'false' - ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001034'/> - </UML:ModelElement.stereotype> - <UML:BehavioralFeature.parameter> - <UML:Parameter xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001030' - name = 'return' isSpecification = 'false' kind = 'return'> - <UML:Parameter.type> - <UML:Class xmi.idref = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001032'/> - </UML:Parameter.type> - </UML:Parameter> - <UML:Parameter xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001033' - name = 'company' isSpecification = 'false'> - <UML:Parameter.type> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/> - </UML:Parameter.type> - </UML:Parameter> - </UML:BehavioralFeature.parameter> - </UML:Operation> - </UML:Classifier.feature> - </UML:Class> - <UML:Association xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100C' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100D' - name = 'contacts' visibility = 'public' isSpecification = 'false' isNavigable = 'true' - ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001026'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001025' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100B'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001010' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001028'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001027' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101F'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Class xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001017' - name = 'Telephone2' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:GeneralizableElement.generalization> - <UML:Generalization xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001018'/> - </UML:GeneralizableElement.generalization> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001021' - name = 'prefix' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001022'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001023' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001024' - name = 'country' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001025'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001026' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Generalization xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001018' - isSpecification = 'false'> - <UML:Generalization.child> - <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001017'/> - </UML:Generalization.child> - <UML:Generalization.parent> - <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100B'/> - </UML:Generalization.parent> - </UML:Generalization> - <UML:Class xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101F' - name = 'Party2' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - </UML:Class> - </UML:Namespace.ownedElement> - </UML:Package> - <UML:Generalization xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001020' - isSpecification = 'false'> - <UML:Generalization.child> - <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> - </UML:Generalization.child> - <UML:Generalization.parent> - <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101F'/> - </UML:Generalization.parent> - </UML:Generalization> - </UML:Namespace.ownedElement> - </UML:Package> - <UML:Package xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000121D' - name = 'topia' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Namespace.ownedElement> - <UML:Package xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000121E' - name = 'test' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Namespace.ownedElement> - <UML:Package xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000121F' - name = 'entities' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Namespace.ownedElement> - <UML:Class xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001220' - name = 'Person' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001228' - name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001229'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122A' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122B' - name = 'firstname' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122C'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122D' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Class xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001221' - name = 'Pet' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001222' - name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001223'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001224' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001225' - name = 'type' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001226'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001227' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - <UML:Association xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001237' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001238' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001239'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123A' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-13652238:1219c622604:-8000:0000000000001220'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123B' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123F'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123E' - lower = '0' upper = '-1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-13652238:1219c622604:-8000:0000000000001221'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Association xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102A' - name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> - <UML:Association.connection> - <UML:AssociationEnd xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102B' - visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' - aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102C'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102D' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1-13652238:1219c622604:-8000:0000000000001221'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - <UML:AssociationEnd xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102E' - visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' - aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> - <UML:AssociationEnd.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102F'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001030' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:AssociationEnd.multiplicity> - <UML:AssociationEnd.participant> - <UML:Class xmi.idref = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001029'/> - </UML:AssociationEnd.participant> - </UML:AssociationEnd> - </UML:Association.connection> - </UML:Association> - <UML:Class xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001029' - name = 'Race' visibility = 'public' isSpecification = 'false' isRoot = 'false' - isLeaf = 'false' isAbstract = 'false' isActive = 'false'> - <UML:ModelElement.stereotype> - <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> - </UML:ModelElement.stereotype> - <UML:Classifier.feature> - <UML:Attribute xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001031' - name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' - changeability = 'changeable' targetScope = 'instance'> - <UML:StructuralFeature.multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001032'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001033' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </UML:StructuralFeature.multiplicity> - <UML:StructuralFeature.type> - <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> - </UML:StructuralFeature.type> - </UML:Attribute> - </UML:Classifier.feature> - </UML:Class> - </UML:Namespace.ownedElement> - </UML:Package> - </UML:Namespace.ownedElement> - </UML:Package> - </UML:Namespace.ownedElement> - </UML:Package> - </UML:Namespace.ownedElement> - </UML:Package> - </UML:Namespace.ownedElement> - </UML:Package> - <UML:Stereotype xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73' - name = 'bean' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> - </UML:Stereotype> - <UML:Stereotype xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E74' - name = 'dto' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> - </UML:Stereotype> - <UML:Stereotype xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E78' - name = 'realize' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass> - </UML:Stereotype> - <UML:Package xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001031' - name = 'java.util' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Namespace.ownedElement> - <UML:Class xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001032' - name = 'Set<Contact2>' visibility = 'public' isSpecification = 'false' - isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> - </UML:Namespace.ownedElement> - </UML:Package> - <UML:Stereotype xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001034' - name = 'dao' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' - isAbstract = 'false'> - <UML:Stereotype.baseClass>Operation</UML:Stereotype.baseClass> - </UML:Stereotype> - </UML:Namespace.ownedElement> - </UML:Model> - <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001233'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001234' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123C'> - <UML:Multiplicity.range> - <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123D' - lower = '1' upper = '1'/> - </UML:Multiplicity.range> - </UML:Multiplicity> - </XMI.content> -</XMI> Copied: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.xmi (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.xmi) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.xmi (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.xmi 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,1334 @@ +<?xml version = '1.0' encoding = 'UTF-8' ?> +<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Mon Oct 19 15:56:54 CEST 2009'> + <XMI.header> <XMI.documentation> + <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter> + <XMI.exporterVersion>0.28.1(6) revised on $Date: 2007-05-12 08:08:08 +0200 (Sat, 12 May 2007) $ </XMI.exporterVersion> + </XMI.documentation> + <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header> + <XMI.content> + <UML:Model xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000077B' + name = 'xmiTopiaTest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E3' + isSpecification = 'false'> + <UML:TaggedValue.dataValue>1.2</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E4'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:Namespace.ownedElement> + <UML:TagDefinition xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E4' + name = 'version' isSpecification = 'false' tagType = 'String'> + <UML:TagDefinition.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E6'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E5' + lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:TagDefinition.multiplicity> + </UML:TagDefinition> + <UML:Stereotype xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7' + name = 'entity' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Package xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000090B' + name = 'org' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000090C' + name = 'nuiton' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000090D' + name = 'topiatest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA' + name = 'Personne' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001020'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF9' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFD'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFC' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '-64--88-99-15-67f6b63e:12187ee3a69:-8000:0000000000000EB0' + name = 'otherNames' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-67f6b63e:12187ee3a69:-8000:0000000000000EB8'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-67f6b63e:12187ee3a69:-8000:0000000000000EB7' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE' + name = 'Employe' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E2'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D54' + name = 'salary' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D5A'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D59' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0' + name = 'Company' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000011BD' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000011C5'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000011C4' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008F9' + name = 'Address' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000903' + name = 'city' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF7'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF6' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CE8' + name = 'adress' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF3'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF2' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FB' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FC' + visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FD'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FE' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FF' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000900'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000901' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008F9'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Generalization xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E2' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFE' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFF' + visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102B' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D02' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102A'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001029' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B' + name = 'Department' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D25' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D29'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D28' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A' + name = 'Product' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D37' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D3F'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D3E' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D5B' + name = 'Store' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D7D' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D83'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D82' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D40' + name = 'Type' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D4D' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D53'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D52' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:AssociationClass xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D65' + name = 'Bill' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D66' + visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D89'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D88' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D69' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D8D'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D8C' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D5B'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D6D' + name = 'cost' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D75'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D74' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D76' + name = 'date' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D7A'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D79' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000085F'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:AssociationClass> + <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D18' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D19' + name = 'lead' visibility = 'public' isSpecification = 'false' isNavigable = 'false' + ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D24'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D23' + lower = '0' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D1C' + name = 'leader' visibility = 'public' isSpecification = 'false' isNavigable = 'true' + ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D1D'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D1E' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0D' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0E' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0F'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D10' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D11' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D17'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D16' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2C' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2D' + visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2E'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2F' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D30' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D36'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D35' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D42' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D43' + visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D4C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D4B' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D46' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D47'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D48' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D40'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Package xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E71' + name = 'beangen' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72' + name = 'Voiture' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'true' isActive = 'false'> + <UML:ModelElement.clientDependency> + <UML:Abstraction xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E77'/> + </UML:ModelElement.clientDependency> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'/> + </UML:ModelElement.stereotype> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA1' + isSpecification = 'false'> + <UML:TaggedValue.dataValue>Doc for BeanA</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition href = 'http://argouml.org/profiles/uml14/default-uml14.xmi#.:000000000000087C'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7C' + name = 'immatriculation' visibility = 'public' isSpecification = 'false' + ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7D'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7E' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:ModelElement.taggedValue> + <UML:TaggedValue xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA2' + isSpecification = 'false'> + <UML:TaggedValue.dataValue>attrA of BeanA</UML:TaggedValue.dataValue> + <UML:TaggedValue.type> + <UML:TagDefinition href = 'http://argouml.org/profiles/uml14/default-uml14.xmi#.:000000000000087C'/> + </UML:TaggedValue.type> + </UML:TaggedValue> + </UML:ModelElement.taggedValue> + <UML:StructuralFeature.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7F' + name = 'modele' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E80'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E81' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE6' + name = 'proprietaire' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE7'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE8' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E75' + name = 'Roue' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Operation xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E85' + name = 'mount' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E86' + name = 'return' isSpecification = 'false' kind = 'return'> + <UML:Parameter.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086B'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + <UML:Operation xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E87' + name = 'getModel' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E88' + name = 'return' isSpecification = 'false' kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E89' + name = 'id' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Abstraction xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E77' + isSpecification = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E78'/> + </UML:ModelElement.stereotype> + <UML:Dependency.client> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'/> + </UML:Dependency.client> + <UML:Dependency.supplier> + <UML:Interface xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E76'/> + </UML:Dependency.supplier> + </UML:Abstraction> + <UML:Interface xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E76' + name = 'Vehicule' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false'> + <UML:Classifier.feature> + <UML:Operation xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7A' + name = 'start' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7B' + name = 'return' isSpecification = 'false' kind = 'return'> + <UML:Parameter.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086B'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Interface> + <UML:Association xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8A' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8B' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8D' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8E' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED2'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED1' + lower = '4' upper = '4'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E75'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAB' + name = 'RelationDTO' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E74'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAC' + name = 'idCompany' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAD'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAE' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAF' + name = 'idDepartement' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB0'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB1' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBB' + name = 'dateDebut' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBC'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBD' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000085F'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA9' + name = 'PersonneDTO' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.clientDependency> + <UML:Dependency xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAA'/> + </UML:ModelElement.clientDependency> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E74'/> + </UML:ModelElement.stereotype> + <UML:Namespace.ownedElement> + <UML:Dependency xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAA' + isSpecification = 'false'> + <UML:Dependency.client> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA9'/> + </UML:Dependency.client> + <UML:Dependency.supplier> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> + </UML:Dependency.supplier> + </UML:Dependency> + </UML:Namespace.ownedElement> + </UML:Class> + <UML:Association xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB2' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB3' + visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBA'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB9' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAB'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB6' + name = 'person' visibility = 'public' isSpecification = 'false' isNavigable = 'true' + ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB7'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB8' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA9'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED3' + name = 'Siege' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDB' + name = 'noSerie' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDC'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDD' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED4' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED5' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE5'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE4' + lower = '1' upper = '4'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED3'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED8' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED9'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDA' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100A' + name = 'deletetest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100B' + name = 'Contact2' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001019' + name = 'contactValue' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101A'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101B' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101C' + name = 'type' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101D'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101E' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Operation xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102F' + name = 'findAllByCompany' visibility = 'public' isSpecification = 'false' + ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001034'/> + </UML:ModelElement.stereotype> + <UML:BehavioralFeature.parameter> + <UML:Parameter xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001030' + name = 'return' isSpecification = 'false' kind = 'return'> + <UML:Parameter.type> + <UML:Class xmi.idref = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001032'/> + </UML:Parameter.type> + </UML:Parameter> + <UML:Parameter xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001033' + name = 'company' isSpecification = 'false'> + <UML:Parameter.type> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/> + </UML:Parameter.type> + </UML:Parameter> + </UML:BehavioralFeature.parameter> + </UML:Operation> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100C' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100D' + name = 'contacts' visibility = 'public' isSpecification = 'false' isNavigable = 'true' + ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001026'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001025' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100B'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001010' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001028'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001027' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101F'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001017' + name = 'Telephone2' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:GeneralizableElement.generalization> + <UML:Generalization xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001018'/> + </UML:GeneralizableElement.generalization> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001021' + name = 'prefix' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001022'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001023' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001024' + name = 'country' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001025'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001026' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Generalization xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001018' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001017'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100B'/> + </UML:Generalization.parent> + </UML:Generalization> + <UML:Class xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101F' + name = 'Party2' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + </UML:Class> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Generalization xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001020' + isSpecification = 'false'> + <UML:Generalization.child> + <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/> + </UML:Generalization.child> + <UML:Generalization.parent> + <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101F'/> + </UML:Generalization.parent> + </UML:Generalization> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Package xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000121D' + name = 'topia' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000121E' + name = 'test' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Package xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000121F' + name = 'entities' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001220' + name = 'Person' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001228' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001229'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122A' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122B' + name = 'firstname' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122D' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Class xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001221' + name = 'Pet' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001222' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001223'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001224' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001225' + name = 'type' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001226'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001227' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + <UML:Association xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001237' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001238' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001239'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123A' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-13652238:1219c622604:-8000:0000000000001220'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123B' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123F'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123E' + lower = '0' upper = '-1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-13652238:1219c622604:-8000:0000000000001221'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Association xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102A' + name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> + <UML:Association.connection> + <UML:AssociationEnd xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102B' + visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered' + aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102D' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1-13652238:1219c622604:-8000:0000000000001221'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + <UML:AssociationEnd xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102E' + visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' + aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> + <UML:AssociationEnd.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102F'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001030' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:AssociationEnd.multiplicity> + <UML:AssociationEnd.participant> + <UML:Class xmi.idref = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001029'/> + </UML:AssociationEnd.participant> + </UML:AssociationEnd> + </UML:Association.connection> + </UML:Association> + <UML:Class xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001029' + name = 'Race' visibility = 'public' isSpecification = 'false' isRoot = 'false' + isLeaf = 'false' isAbstract = 'false' isActive = 'false'> + <UML:ModelElement.stereotype> + <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/> + </UML:ModelElement.stereotype> + <UML:Classifier.feature> + <UML:Attribute xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001031' + name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' + changeability = 'changeable' targetScope = 'instance'> + <UML:StructuralFeature.multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001032'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001033' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </UML:StructuralFeature.multiplicity> + <UML:StructuralFeature.type> + <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/> + </UML:StructuralFeature.type> + </UML:Attribute> + </UML:Classifier.feature> + </UML:Class> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Stereotype xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73' + name = 'bean' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E74' + name = 'dto' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Stereotype xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E78' + name = 'realize' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass> + </UML:Stereotype> + <UML:Package xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001031' + name = 'java.util' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Namespace.ownedElement> + <UML:Class xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001032' + name = 'Set<Contact2>' visibility = 'public' isSpecification = 'false' + isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> + </UML:Namespace.ownedElement> + </UML:Package> + <UML:Stereotype xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001034' + name = 'dao' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' + isAbstract = 'false'> + <UML:Stereotype.baseClass>Operation</UML:Stereotype.baseClass> + </UML:Stereotype> + </UML:Namespace.ownedElement> + </UML:Model> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001233'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001234' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123C'> + <UML:Multiplicity.range> + <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123D' + lower = '1' upper = '1'/> + </UML:Multiplicity.range> + </UML:Multiplicity> + </XMI.content> +</XMI> Deleted: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.zargo =================================================================== (Binary files differ) Copied: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.zargo (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.zargo) =================================================================== (Binary files differ) Deleted: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/verify.groovy =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/verify.groovy 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/verify.groovy 2009-12-14 23:50:27 UTC (rev 755) @@ -1,42 +0,0 @@ - - -// Zargo to object model - -assert new File(basedir, 'target/generated-sources-zargo2ObjectModel').exists(); -assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/xmi').exists(); -assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/xmi/topiatest.properties').exists(); -assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/xmi/topiatest.xmi').exists(); - -assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/models').exists(); -assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/models/topiatest.properties').exists(); -assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/models/topiatest.objectmodel').exists(); - -// Zargo to state model - -assert new File(basedir, 'target/generated-sources-zargo2StateModel').exists(); - -assert new File(basedir, 'target/generated-sources-zargo2StateModel/xmi').exists(); -assert new File(basedir, 'target/generated-sources-zargo2StateModel/xmi/topiatest.properties').exists(); -assert new File(basedir, 'target/generated-sources-zargo2StateModel/xmi/topiatest.xmi').exists(); - -assert new File(basedir, 'target/generated-sources-zargo2StateModel/models').exists(); -assert new File(basedir, 'target/generated-sources-zargo2StateModel/models/topiatest.properties').exists(); -assert new File(basedir, 'target/generated-sources-zargo2StateModel/models/topiatest.statemodel').exists(); - -// Xmi to object model - -assert new File(basedir, 'target/generated-sources-xmi2ObjectModel').exists(); -assert new File(basedir, 'target/generated-sources-xmi2ObjectModel/models').exists(); -assert new File(basedir, 'target/generated-sources-xmi2ObjectModel/models/topiatest.properties').exists(); -assert new File(basedir, 'target/generated-sources-xmi2ObjectModel/models/topiatest.objectmodel').exists(); - - -// Xmi to state model - -assert new File(basedir, 'target/generated-sources-xmi2StateModel').exists(); -assert new File(basedir, 'target/generated-sources-xmi2StateModel/models').exists(); -assert new File(basedir, 'target/generated-sources-xmi2StateModel/models/topiatest.properties').exists(); -assert new File(basedir, 'target/generated-sources-xmi2StateModel/models/topiatest.statemodel').exists(); - -return true; - Copied: trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/verify.groovy (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/verify.groovy) =================================================================== --- trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/verify.groovy (rev 0) +++ trunk/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/verify.groovy 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,42 @@ + + +// Zargo to object model + +assert new File(basedir, 'target/generated-sources-zargo2ObjectModel').exists(); +assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/xmi').exists(); +assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/xmi/topiatest.properties').exists(); +assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/xmi/topiatest.xmi').exists(); + +assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/models').exists(); +assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/models/topiatest.properties').exists(); +assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/models/topiatest.objectmodel').exists(); + +// Zargo to state model + +assert new File(basedir, 'target/generated-sources-zargo2StateModel').exists(); + +assert new File(basedir, 'target/generated-sources-zargo2StateModel/xmi').exists(); +assert new File(basedir, 'target/generated-sources-zargo2StateModel/xmi/topiatest.properties').exists(); +assert new File(basedir, 'target/generated-sources-zargo2StateModel/xmi/topiatest.xmi').exists(); + +assert new File(basedir, 'target/generated-sources-zargo2StateModel/models').exists(); +assert new File(basedir, 'target/generated-sources-zargo2StateModel/models/topiatest.properties').exists(); +assert new File(basedir, 'target/generated-sources-zargo2StateModel/models/topiatest.statemodel').exists(); + +// Xmi to object model + +assert new File(basedir, 'target/generated-sources-xmi2ObjectModel').exists(); +assert new File(basedir, 'target/generated-sources-xmi2ObjectModel/models').exists(); +assert new File(basedir, 'target/generated-sources-xmi2ObjectModel/models/topiatest.properties').exists(); +assert new File(basedir, 'target/generated-sources-xmi2ObjectModel/models/topiatest.objectmodel').exists(); + + +// Xmi to state model + +assert new File(basedir, 'target/generated-sources-xmi2StateModel').exists(); +assert new File(basedir, 'target/generated-sources-xmi2StateModel/models').exists(); +assert new File(basedir, 'target/generated-sources-xmi2StateModel/models/topiatest.properties').exists(); +assert new File(basedir, 'target/generated-sources-xmi2StateModel/models/topiatest.statemodel').exists(); + +return true; + Deleted: trunk/maven-eugene-plugin/src/it/settings.xml =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/it/settings.xml 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/it/settings.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> - -<settings> - - <profiles> - <profile> - <id>it-repo</id> - <activation> - <activeByDefault>true</activeByDefault> - </activation> - <repositories> - <repository> - <id>local.central</id> - <url>file:///@localRepository@</url> - <releases> - <enabled>true</enabled> - </releases> - <snapshots> - <enabled>true</enabled> - </snapshots> - </repository> - </repositories> - <pluginRepositories> - <pluginRepository> - <id>local.central</id> - <url>file:///@localRepository@</url> - <releases> - <enabled>true</enabled> - </releases> - <snapshots> - <enabled>true</enabled> - </snapshots> - </pluginRepository> - </pluginRepositories> - </profile> - </profiles> -</settings> Copied: trunk/maven-eugene-plugin/src/it/settings.xml (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/it/settings.xml) =================================================================== --- trunk/maven-eugene-plugin/src/it/settings.xml (rev 0) +++ trunk/maven-eugene-plugin/src/it/settings.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<settings> + + <profiles> + <profile> + <id>it-repo</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <repositories> + <repository> + <id>local.central</id> + <url>file:///@localRepository@</url> + <releases> + <enabled>true</enabled> + </releases> + <snapshots> + <enabled>true</enabled> + </snapshots> + </repository> + </repositories> + <pluginRepositories> + <pluginRepository> + <id>local.central</id> + <url>file:///@localRepository@</url> + <releases> + <enabled>true</enabled> + </releases> + <snapshots> + <enabled>true</enabled> + </snapshots> + </pluginRepository> + </pluginRepositories> + </profile> + </profiles> +</settings> Property changes on: trunk/maven-eugene-plugin/src/main/java/org/nuiton ___________________________________________________________________ Deleted: svn:mergeinfo - Copied: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AbstractEugeneMojo.java (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AbstractEugeneMojo.java) =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AbstractEugeneMojo.java (rev 0) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AbstractEugeneMojo.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,161 @@ +/* + * *##% + * EUGene :: Maven plugin + * Copyright (C) 2006 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ +package org.nuiton.eugene.plugin; + +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.project.MavenProject; +import org.apache.maven.settings.Settings; +import org.nuiton.eugene.models.Model; +import org.nuiton.plugin.AbstractPlugin; + +import java.util.Map; + +/** + * User: chemit + * Date: 23 nov. 2009 + * Time: 20:19:35 + */ +public abstract class AbstractEugeneMojo extends AbstractPlugin { + + /** + * Maven project. + * + * @description Dépendance du projet. + * @parameter default-value="${project}" + * @readonly + * @since 2.0.0 + */ + protected MavenProject project; + /** + * @description le settings (pour obtenir le mode offline) + * @parameter default-value="${settings}" + * @readonly + * @since 2.0.0 + */ + protected Settings settings; + /** + * Ecrase les fichiers générés. + * + * @parameter expression="${eugene.overwrite}" default-value="false" + * @since 2.0.0 + */ + protected boolean overwrite; + /** + * Pour activer le mode verbeux. + * + * @parameter expression="${eugene.verbose}" default-value="${maven.verbose}" + * @since 2.0.0 + */ + protected boolean verbose; + /** + * Encoding to be used for generation of files. + * + * @parameter expression="${eugene.encoding}" default-value="${project.build.sourceEncoding}" + * @since 2.0.0 + */ + protected String encoding; + /** + * A flag to mark the mojo to be used in a test phase. This will permits to add generated sources in test compile roots. + * + * @parameter expression="${eugene.testPhase}" default-value="false" + * @since 2.0.0 + */ + protected boolean testPhase; + /** + * The type of model to be used. + * + * @parameter expression="${eugene.modelType}" + * @required + * @since 2.0.0 + */ + protected String modelType; + + + protected Class<? extends Model> modelClass; + + /** + * All available models + * + * @component role="org.nuiton.eugene.models.Model" + */ + protected Map<String, Model> _models; + + @Override + protected boolean init() throws Exception { + + // on recupere le fqn du model à traiter via le container plexus (plus pratique dans ce cas où on veut + // pouvoir associé un nom à un type de service). + Model model = _models.get(modelType.trim().toLowerCase()); + if (model == null) { + throw new MojoExecutionException("No modelType named '" + modelType + "', use one of " + _models.keySet()); + } + modelClass = model.getClass(); + return true; + } + + + @Override + public MavenProject getProject() { + return project; + } + + public void setProject(MavenProject project) { + this.project = project; + } + + @Override + public boolean isVerbose() { + return verbose; + } + + public void setVerbose(boolean verbose) { + this.verbose = verbose; + } + + public String getEncoding() { + return encoding; + } + + public void setEncoding(String encoding) { + this.encoding = encoding; + } + + public boolean isOverwrite() { + return overwrite; + } + + public void setOverwrite(boolean overwrite) { + this.overwrite = overwrite; + } + + public Settings getSettings() { + return settings; + } + + public void setSettings(Settings settings) { + this.settings = settings; + } + + public boolean isOffline() { + return settings.isOffline(); + } + +} Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Plugin maven Generator +/* *##% + * EUGene :: Maven plugin * Copyright (C) 2006 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.plugin; import org.nuiton.plugin.PluginIOContext; Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,3 +1,23 @@ +/* + * *##% + * EUGene :: Maven plugin + * Copyright (C) 2006 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ package org.nuiton.eugene.plugin; import org.nuiton.plugin.PluginIOContext; Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Plugin maven Generator +/* *##% + * EUGene :: Maven plugin * Copyright (C) 2006 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,10 +14,12 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.plugin; import java.io.File; +import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; @@ -28,12 +31,16 @@ import java.util.Map.Entry; import java.util.Set; + +import org.apache.commons.lang.StringUtils; import org.apache.maven.artifact.Artifact; import org.apache.maven.model.Resource; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.project.MavenProject; -import org.nuiton.eugene.Generator; +import org.nuiton.eugene.ModelReader; +import org.nuiton.eugene.Template; +import org.nuiton.eugene.models.Model; import org.nuiton.plugin.PluginIOContext; import org.nuiton.plugin.PluginHelper; @@ -43,10 +50,9 @@ * * @author ruchaud * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ - * + * <p/> + * Last update: $Date$ + * by : $Author$ * @goal generate * @projectRequired true */ @@ -54,9 +60,9 @@ /** * Les entrées sorties du plugin. - * * <p/> - * + * <p/> + * <p/> * En entrée on demande des répertoires où chercher les fichiers objectmodel a convertir. * <p/> * En sortie on demande le répertoire ou generer les classes java. @@ -73,7 +79,7 @@ * </generateResources> * </pre> * </p> - * + * <p/> * Note: si {@link #testPhase} est activée, les valeurs par défaut sont : * </p> * <pre> @@ -128,22 +134,32 @@ protected File extraClassPathDirectory; /** * List of packages to generate (comma separated). + * <p/> + * If the parameter is not filled, will generate all packages. * - * If the parameter is not filled, will generate all packages. - * * @parameter expression="${eugene.generatedPackages}" * @since 1.0.0-rc-8 */ protected String generatedPackages; + /** + * Reader for transform input files in a Model to generate + * + * @parameter expression="${eugene.reader}" + * @since 1.1.0 + */ + protected String reader; + + @Override public void doAction() throws MojoExecutionException, MojoFailureException { getLog().info("Generating java sources from models"); + getLog().info(" reader : " + reader); getLog().info(" includes : " + includes); getLog().info(" using template : " + templates); getLog().info(" using defaultPackage : " + defaultPackage); - + File[] modelFiles = getModelFiles(); if (modelFiles.length == 0) { // can skip @@ -155,22 +171,41 @@ getLog().info("will treate model file : " + m); } } + ModelReader<?> modelReader = getReader(); + generate(modelFiles, modelReader); - List<String> packages = getPackagesToGenerate(); + fixCompileSourceRoots(); + } - if (packages == null) { + protected <M extends Model> void generate(File[] modelFiles, ModelReader<M> modelReader) throws MojoFailureException, MojoExecutionException { + + if (modelReader == null) { + // can skip + getLog().warn("no reader to use"); + return; + } + M model = modelReader.read(modelFiles); + + //List<String> packages = getPackagesToGenerate(); + + if (StringUtils.isEmpty(generatedPackages)) { getLog().info(" generating all packages"); } else { - getLog().info(" generating only for packages " + packages); + getLog().info(" generating only for packages " + generatedPackages); } - List<Generator> generators = getGenerators(packages); + List<Template<M>> templatesList = getTemplates(modelReader); - for (Generator generator : generators) { - getLog().info("Apply " + generator.getClass().getSimpleName() + " generator"); + for (Template<M> template : templatesList) { + getLog().info("Apply " + template.getClass().getSimpleName() + " generator"); //TC-20090829 fix when loading more than one model together... - generator.generate(modelFiles, generateResources.getOutput()); + + try { + template.applyTemplate(model, generateResources.getOutput()); + } catch (IOException eee) { + throw new MojoExecutionException("Generation problem", eee); + } // for (File modelFile : modelFiles) { // getLog().debug(" on " + modelFile.getAbsolutePath()); // @@ -178,8 +213,6 @@ // generator.generate(modelFile, destDirGen); // } } - - fixCompileSourceRoots(); } @Override @@ -201,20 +234,9 @@ return generateResources; } - protected List<String> getPackagesToGenerate() { - List<String> generatedPackagesAsList = null; - if (generatedPackages != null && !generatedPackages.isEmpty()) { - generatedPackagesAsList = new ArrayList<String>(); - for (String s : generatedPackages.split(",")) { - generatedPackagesAsList.add(s); - } - } - return generatedPackagesAsList; - } - /** * Recuperation de la liste des fichiers de modele a traite. - * + * * @return la liste des modeles a utiliser */ protected File[] getModelFiles() { @@ -261,26 +283,47 @@ // return modelFiles.toArray(new File[modelFiles.size()]); // } - protected List<Generator> getGenerators(List<String> generatedPackagesAsList) throws MojoFailureException, MojoExecutionException { + protected ModelReader<?> getReader() throws MojoFailureException, MojoExecutionException { + ModelReader<?> modelReader = null; + try { + ClassLoader fixedClassLoader = fixClassLoader(); + modelReader = (ModelReader<?>) Class.forName(reader, true, fixedClassLoader).newInstance(); + } catch (InstantiationException eee) { + throw new MojoFailureException("Can't instantiate reader : " + reader, eee); + } catch (IllegalAccessException eee) { + throw new MojoFailureException("Can't access reader : " + reader, eee); + } catch (ClassNotFoundException eee) { + throw new MojoFailureException("Can't found reader : " + reader, eee); + } + return modelReader; + } + + @SuppressWarnings("unchecked") + protected <M extends Model> List<Template<M>> getTemplates(ModelReader<M> modelReader) + throws MojoFailureException, MojoExecutionException { // init generators - Properties generatorProperties = new Properties(); - generatorProperties.setProperty("defaultPackage", defaultPackage); - List<Generator> generators = new ArrayList<Generator>(); + Properties templateProperties = new Properties(); + templateProperties.setProperty(Template.PROP_DEFAULT_PACKAGE, defaultPackage); + templateProperties.setProperty(Template.PROP_OVERWRITE, String.valueOf(overwrite)); + templateProperties.setProperty(Template.PROP_ENCODING, encoding); + templateProperties.setProperty(Template.PROP_LAST_MODIFIED_SOURCE, String.valueOf(modelReader.getLastModifiedSource())); + if (generatedPackages != null) { + templateProperties.setProperty(Template.PROP_GENERATED_PACKAGES, generatedPackages); + } + templateProperties.setProperty(Template.PROP_EXCLUDE_TEMPLATES, getExcludeTemplatesAsString()); + + List<Template<M>> templatesList = new ArrayList<Template<M>>(); String[] templatesNames = templates.split(","); ClassLoader fixedClassLoader = fixClassLoader(); for (String templateName : templatesNames) { // remove trailing spaces templateName = templateName.trim(); try { - Generator generator = (Generator) Class.forName(templateName, + Template<M> template = (Template<M>) Class.forName(templateName, true, fixedClassLoader).newInstance(); // configuration - generator.setExcludeTemplates(Arrays.asList(excludeTemplates)); - generator.setProperties(generatorProperties); - generator.setOverwrite(overwrite); - generator.setEncoding(encoding); - generator.setGeneratedPackages(generatedPackagesAsList); - generators.add(generator); + template.setProperties(templateProperties); + templatesList.add(template); } catch (InstantiationException e) { throw new MojoFailureException("Can't instantiate generator : " + templateName, e); } catch (IllegalAccessException e) { @@ -289,9 +332,20 @@ throw new MojoFailureException("Can't found generator : " + templateName, e); } } - return generators; + return templatesList; } + protected String getExcludeTemplatesAsString() { + String result = ""; + for (int i = 0; i < excludeTemplates.length; i++) { + result += excludeTemplates[i]; + if (i != excludeTemplates.length - 1) { + result += ","; + } + } + return result; + } + /** * permet d'ajout le répertoire de génération des fichiers java dans les répertoires * de compilation du projet Maven. Copied: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/GeneratateModelFilesMojo.java (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/GeneratateModelFilesMojo.java) =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/GeneratateModelFilesMojo.java (rev 0) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/GeneratateModelFilesMojo.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,343 @@ +/* + * *##% + * EUGene :: Maven plugin + * Copyright (C) 2006 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ +package org.nuiton.eugene.plugin; + +import org.apache.maven.artifact.Artifact; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.project.MavenProject; +import org.nuiton.eugene.ModelFileWriter; +import org.nuiton.eugene.ModelFileWriterConfiguration; +import org.nuiton.eugene.ModelFileWriterUtil; +import org.nuiton.eugene.models.Model; +import org.nuiton.eugene.plugin.writer.BaseModelFileWriter; +import org.nuiton.eugene.plugin.writer.BaseXmiToModelFileWriter; + +import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.*; + +/** + * User: chemit + * Date: 24 nov. 2009 + * Time: 00:22:37 + * + * @goal generate-model-files + * @projectRequired true + * @requiresDependencyResolution compile + */ +public class GeneratateModelFilesMojo extends AbstractEugeneMojo implements ModelFileWriterConfiguration { + + /** + * Inputs files to used to generate the required model files. + * </p> + * An include has the following pattern : + * <pre> + * writer: + * </pre> + * when you want to use a specific writer with his default io values. + * <p/> + * Can also write : + * <pre> + * [writer:]directory:includes + * </pre> + * where {@code includes} is the pattern to find files from the directory given and must be terminated by the extension + * of files. + * <p/> + * Specifying the {@code writer} can be usefull when you want to use a writer for an unknown extension + * by any writer. + * <p/> + * Example : + * <pre> + * <includes> + * <include>zargo:<include> + * <include>src/main/xmi2:**\/*.zargo<include> + * <include>zargo:src/main/xmi:**\/*.zargo2<include> + * </includes> + * </pre> + * + * @parameter expression="${eugene.includes}" + * @required + * @since 2.0.0 + */ + protected String[] includes; + /** + * Where to generate files. + * + * @parameter expression="${eugene.outputDirectory}" default-value="target/generated-sources" + * @required + * @since 2.0.0 + */ + protected File outputDirectory; + /** + * Properties to pass to writer. + * + * @parameter + * @since 2.0.0 + */ + protected Map<String, Object> properties; + /** + * Ne génère rien, analyse juste la configuration. + * + * @parameter expression="${eugene.dryRun}" default-value="false" + * @since 2.0.0 + */ + protected boolean dryRun; + /** + * Nom du paquetage pour les fichiers générés + * + * @parameter expression="${generator.fullPackagePath}" default-value="${project.groupId}.${project.artifactId}" + * @since 2.0.0 + */ + protected String fullPackagePath; + /** + * Nom du paquetage à générer + * + * @parameter expression="${generator.extractedPackages}" default-value="${project.groupId}.${project.artifactId}" + * @since 2.0.0 + */ + protected String extractedPackages; + /** + * Nom du resolver a utiliser + * + * @parameter expression="${generator.resolver}" default-value="org.nuiton.util.ResourceResolver" + * @since 2.0.0 + */ + protected String resolver; + /** + * An extra directory to be added to the classpath. + * + * @parameter expression="${eugene.extraClassPathDirectory}" + * @since 2.0.0 + */ + protected File extraClassPathDirectory; + + /** + * All available writers + * + * @component role="org.nuiton.eugene.ModelFileWriter" + */ + protected Map<String, ModelFileWriter> writers; + + /** + * All available writers for the given {@link #getModelClass()} + */ + protected Set<ModelFileWriter> availableWriters; + + /** + * Writers to process + */ + protected List<ModelFileWriter> plan; + + @Override + protected boolean init() throws Exception { + boolean b = super.init(); + if (b) { + if (includes.length == 0) { + throw new MojoExecutionException("Must specify something to include using the includes property"); + } + + availableWriters = ModelFileWriterUtil.filterWriterForModelType(writers, getModelClass()); + + if (availableWriters.isEmpty()) { + throw new MojoExecutionException("Could not find any writer in class-path."); + } + + for (ModelFileWriter writer : availableWriters) { + if (writer instanceof BaseModelFileWriter) { + ((BaseModelFileWriter) writer).setLog(getLog()); + } + } + + plan = new ArrayList<ModelFileWriter>(); + + // first pass to detect top level writers + for (String include : includes) { + + getLog().info("Register include : " + include); + ModelFileWriterUtil.registerInclude(this, include, plan); + } + + if (properties == null) { + properties = new TreeMap<String, Object>(); + } + } + return b; + } + + @Override + protected void doAction() throws Exception { + if (dryRun) { + getLog().warn("dryRun property is set, no file will be generated."); + } + try { + // transfert to properties + + ClassLoader loader = fixClassLoader(); + + properties.put(BaseModelFileWriter.PROP_CLASS_LOADER, loader); + properties.put(BaseXmiToModelFileWriter.PROP_FULL_PACKAGE_PATH, fullPackagePath); + //properties.put("extractedPackages", extractedPackages); + properties.put(BaseXmiToModelFileWriter.PROP_RESOLVER, resolver); + + // launch writers in incoming order of dicovering of them + for (ModelFileWriter writer : plan) { + int size = writer.getEntries().size(); + if (size == 1) { + getLog().info("Process phase [" + writer.getInputProtocol() + "] for one entry."); + } else { + getLog().info("Process phase [" + writer.getInputProtocol() + "] for " + size + " entries."); + } + if (dryRun || isVerbose()) { + for (ModelFileWriterUtil.ModelFileWriterEntry entry : writer.getEntries()) { + getLog().info(" entry : " + entry.getInputDirectory() + " - " + entry.getIncludePattern()); + } + if (dryRun) { + continue; + } + } + if (getLog().isDebugEnabled()) { + getLog().debug("Generating files and copying resources..."); + } + + writer.generate(this); + + } + } finally { + // always clear everything to avoid side-effects in goal is invoked more than once + properties.clear(); + for (ModelFileWriter writer : plan) { + writer.clear(); + } + plan.clear(); + } + } + + @Override + public File getOutputDirectory() { + return outputDirectory; + } + + @Override + public Map<String, Object> getProperties() { + return properties; + } + + @Override + public Set<ModelFileWriter> getAvailableWriters() { + return availableWriters; + } + + @Override + public Class<? extends Model> getModelClass() { + return modelClass; + } + + @Override + public File getBasedir() { + return getProject().getBasedir(); + } + + /** + * Prepare le classLoader a utiliser dans le generateur. + * <p/> + * Si un {@link #extraClassPathDirectory} a été renseigné, il est rajouté. + * <p/> + * Si des références à des sibling modules, ils seront rajoutés aussi. + * + * @return le class loader modifie + * @throws MojoExecutionException if any pb + */ + protected ClassLoader fixClassLoader() throws MojoExecutionException { + Set<String> urlsAsString = new HashSet<String>(); + List<URL> urls = new ArrayList<URL>(); + try { + ClassLoader loader; + if (extraClassPathDirectory != null) { + if (verbose) { + getLog().info("Add extra directory in generator's classLoader : " + extraClassPathDirectory); + } + addDirectoryToUrlsList(extraClassPathDirectory, urls, urlsAsString); + } + if (project.getProjectReferences() != null) { + // this case is for multi-module when calling from a parent module + for (Object o : project.getProjectReferences().entrySet()) { + Map.Entry<?, ?> entry = (Map.Entry<?, ?>) o; + MavenProject relatedProject = (MavenProject) entry.getValue(); + if (verbose) { + getLog().info("Add project reference in generator's classLoader : '" + relatedProject.getArtifact() + "'"); + } + //TODO il faudrait peut-etre aussi ajouter les dependances ? + addDirectoryToUrlsList(relatedProject.getArtifact().getFile(), urls, urlsAsString); + } + } + if (!project.getArtifacts().isEmpty()) { + // this is a special case when artifacts were resolved (for example in site phase) + if (verbose) { + getLog().info("Use resolved artifacts to build class-path"); + } + for (Object o : project.getArtifacts()) { + Artifact a = (Artifact) o; + if (!a.getScope().equals("provided")) { + addDirectoryToUrlsList(a.getFile(), urls, urlsAsString); + } + } + } + // we ask to add the directory in classloader + loader = getClass().getClassLoader(); + if (getLog().isDebugEnabled()) { + getLog().info("original classloader " + loader); + } + if (loader instanceof URLClassLoader) { + // on reinjecte les urls de loader de base + // car sinon on risque de ne pas retrouver les resources... + for (URL u : ((URLClassLoader) loader).getURLs()) { + addUrlToUrlsList(u, urls, urlsAsString); + if (getLog().isDebugEnabled()) { + getLog().debug("original cp entry: " + u); + } + } + // et on force l'utilisation du classloader parent + // s'il existe + if (loader.getParent() != null) { + loader = loader.getParent(); + } + } + if (!urls.isEmpty()) { + loader = new URLClassLoader(urls.toArray(new URL[urls.size()]), + loader); + } + if (getLog().isDebugEnabled()) { + for (URL u : urls) { + getLog().debug("cp entry: " + u); + } + } + return loader; + } catch (MalformedURLException e) { + throw new MojoExecutionException(e.getMessage()); + } finally { + urls.clear(); + urlsAsString.clear(); + } + + } +} Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,5 +1,6 @@ -/* *##% Plugin maven Generator - * Copyright (C) 2006 - 2008 CodeLutin +/* *##% + * EUGene :: Maven plugin + * Copyright (C) 2006 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.plugin; import org.nuiton.plugin.PluginIOContext; @@ -291,7 +293,7 @@ URIResolver result = null; try { - Class<?> clazz = (Class<?>) Class.forName(resolver, true, cl); + Class<?> clazz = Class.forName(resolver, true, cl); // Try to set the base using the constructor try { @@ -343,7 +345,7 @@ Set<String> urlsAsString = new HashSet<String>(); List<URL> urls = new ArrayList<URL>(); try { - ClassLoader loader = null; + ClassLoader loader; if (extraClassPathDirectory != null) { if (verbose) { getLog().info("Add extra directory in generator's classLoader : " + extraClassPathDirectory); Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2ObjectModel.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2ObjectModel.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2ObjectModel.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Plugin maven Generator +/* *##% + * EUGene :: Maven plugin * Copyright (C) 2006 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* */ package org.nuiton.eugene.plugin; Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2StateModel.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2StateModel.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2StateModel.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Plugin maven Generator +/* *##% + * EUGene :: Maven plugin * Copyright (C) 2006 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.plugin; import java.io.File; Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,4 +1,5 @@ -/* *##% Plugin maven Generator +/* *##% + * EUGene :: Maven plugin * Copyright (C) 2006 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify @@ -13,7 +14,8 @@ * * You should have received a copy of the GNU General Lesser Public * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%*/ package org.nuiton.eugene.plugin; import java.io.IOException; Deleted: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseModelFileWriter.java =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseModelFileWriter.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseModelFileWriter.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,58 +0,0 @@ -/* - * *##% - * EUGene :: Maven plugin - * Copyright (C) 2006 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%* - */ -package org.nuiton.eugene.plugin.writer; - -import org.apache.maven.plugin.logging.Log; -import org.apache.maven.plugin.logging.SystemStreamLog; -import org.nuiton.eugene.AbstractModelFileWriter; - -/** - * Surcharge de l'implentation abstraite pour avoir le logger de la console maven. - * - * @author tchemit - * @since 2.0.0 - */ -public abstract class BaseModelFileWriter extends AbstractModelFileWriter { - - /** - * Logger - */ - private Log log; - public static final String PROP_CLASS_LOADER = "classLoader"; - - public void setLog(Log log) { - this.log = log; - } - - public Log getLog() { - if (log == null) { - log = new SystemStreamLog(); - } - - return log; - } - - public ClassLoader getClassLoader() { - return getProperty(PROP_CLASS_LOADER, ClassLoader.class); - } - - -} Copied: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseModelFileWriter.java (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseModelFileWriter.java) =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseModelFileWriter.java (rev 0) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseModelFileWriter.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,58 @@ +/* + * *##% + * EUGene :: Maven plugin + * Copyright (C) 2006 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ +package org.nuiton.eugene.plugin.writer; + +import org.apache.maven.plugin.logging.Log; +import org.apache.maven.plugin.logging.SystemStreamLog; +import org.nuiton.eugene.AbstractModelFileWriter; + +/** + * Surcharge de l'implentation abstraite pour avoir le logger de la console maven. + * + * @author tchemit + * @since 2.0.0 + */ +public abstract class BaseModelFileWriter extends AbstractModelFileWriter { + + /** + * Logger + */ + private Log log; + public static final String PROP_CLASS_LOADER = "classLoader"; + + public void setLog(Log log) { + this.log = log; + } + + public Log getLog() { + if (log == null) { + log = new SystemStreamLog(); + } + + return log; + } + + public ClassLoader getClassLoader() { + return getProperty(PROP_CLASS_LOADER, ClassLoader.class); + } + + +} Deleted: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseXmiToModelFileWriter.java =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseXmiToModelFileWriter.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseXmiToModelFileWriter.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,246 +0,0 @@ -/* - * *##% - * EUGene :: Maven plugin - * Copyright (C) 2006 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%* - */ -package org.nuiton.eugene.plugin.writer; - -import org.nuiton.eugene.models.Model; -import org.nuiton.plugin.PluginHelper; -import org.nuiton.plugin.PluginIOContext; -import org.nuiton.util.FasterCachedResourceResolver; -import org.nuiton.util.FileUtil; -import org.nuiton.util.Resource; -import org.nuiton.util.ResourceResolver; - -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.URIResolver; -import javax.xml.transform.stream.StreamResult; -import javax.xml.transform.stream.StreamSource; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.lang.reflect.Constructor; -import java.net.URL; -import java.util.List; - -/** - * Implentation pour les writer to type xmi (qui transforme du xmi via xsl). - * - * @author tchemit - * @since 2.0.0 - */ -public abstract class BaseXmiToModelFileWriter extends BaseModelFileWriter { - public static final String PROP_RESOLVER = "resolver"; - public static final String PROP_EXTRACTED_PACKAGES = "extractedPackages"; - public static final String PROP_FULL_PACKAGE_PATH = "fullPackagePath"; - - /** - * Get style sheet. - * - * @param model the model file used to determine the stylesheet to use - * @return the stylesheet name - */ - protected abstract String getStyleSheet(File model); - - /** - * Get extension. - * - * @return the extension - */ - protected abstract String getExtension(); - - @Override - public String getInputProtocol() { - return "xmi"; - } - - @Override - public <M extends Model> String getOutputProtocol(Class<M> modelType) { - // no next writer : write model files - return null; - } - - @Override - public boolean acceptInclude(String include) { - return include.startsWith("xmi:") || include.endsWith(".xmi") || include.endsWith(".uml"); - } - - @Override - public String getDefaultIncludes() { - return "**/*.xmi"; - } - - @Override - public String getDefaultInputDirectory() { - return "src/main/xmi"; - } - - @Override - public String getDefaultOutputDirectory() { - return "models"; - } - - protected TransformerFactory transformerFactory; - - protected TransformerFactory getTransformerFactory() { - if (transformerFactory == null) { - transformerFactory = TransformerFactory.newInstance(); - } - return transformerFactory; - } - - public String getFullPackagePath() { - return getProperty(PROP_FULL_PACKAGE_PATH, String.class); - } - - public String getExtractedPackages() { - return getProperty(PROP_EXTRACTED_PACKAGES, String.class); - } - - public String getResolver() { - return getProperty(PROP_RESOLVER, String.class); - } - - - @Override - public void generate(File outputDir, File inputDirectory, String includePattern, boolean overwrite) throws IOException { - long t0 = System.nanoTime(); - try { - getLog().info("Processing XSL tranformation on " + inputDirectory + " for " + includePattern); - - getLog().info(" with fullPackagePath : " + getFullPackagePath()); - getLog().info(" with extractedPackages : " + getExtractedPackages()); -// getLog().info(" with acceptedXmiTypes : " + getFullPackagePath()); - getLog().info(" with resolver : " + getResolver()); - - // recuperation des fichiers a traiter - List<File> files = PluginHelper.getIncludedFiles(inputDirectory, new String[]{includePattern}, null); - - // lancement des traitements xsl sur les fichiers trouvés - // dans le repertoire - actionXsl(outputDir, inputDirectory, files, getClassLoader(), overwrite); - } finally { - getLog().info("xsl done in " + PluginHelper.convertTime(System.nanoTime() - t0)); - } - - getLog().info("Copy resources files"); - - PluginIOContext ioContext = new PluginIOContext(); - ioContext.setInput(inputDirectory); - ioContext.setOutput(outputDir); -// String[] excludes = getSuffixPattern("**/*"); - PluginHelper.copyFiles(ioContext, null, new String[]{includePattern}, overwrite); - } - - - protected void actionXsl(File outputDir, File dir, List<File> files, ClassLoader fixedClassLoader, boolean overwrite) throws IOException { - - for (File file : files) { - try { - if (getLog().isDebugEnabled()) { - getLog().debug("treate file : " + file); - } - // Prepare resolver, stylesheet - URIResolver fileResolver = getUriResolver(file, fixedClassLoader); - String styleSheet = getStyleSheet(file); - URL xsl = Resource.getURL(styleSheet); - - //TC-20090820 : using recursive for xmi -// File result = new File(destDirModel, FileUtil.basename(file, -// acceptedSuffixes).concat(".").concat(getExtension())); - - String extension = "." + FileUtil.extension(file); - String filename = FileUtil.basename(file, extension).concat(".").concat(getExtension()); - String relatifPath = file.getParentFile().getAbsolutePath().substring(dir.getAbsolutePath().length()); - File dstDir = outputDir; - if (!relatifPath.isEmpty()) { - dstDir = new File(dstDir, relatifPath); - dstDir.mkdirs(); - } - File result = new File(dstDir, filename); - if (!overwrite && file.lastModified() < result.lastModified()) { - getLog().info("file up-to-date : " + result); - continue; - } - if (getLog().isDebugEnabled()) { - getLog().debug("generate " + result); - } - - // Create the xsl transformer and set parameters - Transformer transformer = getTransformerFactory().newTransformer(new StreamSource(xsl.openStream())); - - transformer.setParameter(PROP_FULL_PACKAGE_PATH, getFullPackagePath()); - //transformer.setParameter("extraPackages", getExtractedPackages()); - - transformer.setURIResolver(fileResolver); - transformer.transform(new StreamSource(file), new StreamResult( - new FileOutputStream(result))); - - } catch (Exception e) { - throw new IOException(e.getMessage(), e); - } - } - } - - - protected URIResolver getUriResolver(File model, ClassLoader cl) { - URIResolver result = null; - - try { - Class<?> clazz = Class.forName(getResolver(), true, cl); - - // Try to set the base using the constructor - try { - // Look for a constructor with a String parameter (base) - Constructor<?> withBaseConstructor = clazz.getConstructor(String.class); - // Set the xmi folder as the base - String base = model.getParentFile().getAbsolutePath(); - // Instantiate - result = (URIResolver) withBaseConstructor.newInstance(base); - } catch (Exception eee) { - getLog().warn("Unable to instantiate resolver with String parameter", - eee); - } - - // If resolver is still not created, create it using the default - // constructor - if (result == null) { - result = (URIResolver) clazz.newInstance(); - } - - if (result instanceof ResourceResolver) { - ((ResourceResolver) result).setVerbose(getConfiguration().isVerbose()); - ((ResourceResolver) result).setCl(cl); - if (result instanceof FasterCachedResourceResolver) { - boolean offline = getConfiguration().isOffline(); - getLog().debug("using offline mode ? : " + offline); - ((FasterCachedResourceResolver) result).setOffline(offline); - } - } - - } catch (Exception eee) { - getLog().warn("Unable to instantiate resolver using the default constructor", eee); - } - - return result; - } - - -} Copied: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseXmiToModelFileWriter.java (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseXmiToModelFileWriter.java) =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseXmiToModelFileWriter.java (rev 0) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseXmiToModelFileWriter.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,246 @@ +/* + * *##% + * EUGene :: Maven plugin + * Copyright (C) 2006 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ +package org.nuiton.eugene.plugin.writer; + +import org.nuiton.eugene.models.Model; +import org.nuiton.plugin.PluginHelper; +import org.nuiton.plugin.PluginIOContext; +import org.nuiton.util.FasterCachedResourceResolver; +import org.nuiton.util.FileUtil; +import org.nuiton.util.Resource; +import org.nuiton.util.ResourceResolver; + +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.URIResolver; +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.lang.reflect.Constructor; +import java.net.URL; +import java.util.List; + +/** + * Implentation pour les writer to type xmi (qui transforme du xmi via xsl). + * + * @author tchemit + * @since 2.0.0 + */ +public abstract class BaseXmiToModelFileWriter extends BaseModelFileWriter { + public static final String PROP_RESOLVER = "resolver"; + public static final String PROP_EXTRACTED_PACKAGES = "extractedPackages"; + public static final String PROP_FULL_PACKAGE_PATH = "fullPackagePath"; + + /** + * Get style sheet. + * + * @param model the model file used to determine the stylesheet to use + * @return the stylesheet name + */ + protected abstract String getStyleSheet(File model); + + /** + * Get extension. + * + * @return the extension + */ + protected abstract String getExtension(); + + @Override + public String getInputProtocol() { + return "xmi"; + } + + @Override + public <M extends Model> String getOutputProtocol(Class<M> modelType) { + // no next writer : write model files + return null; + } + + @Override + public boolean acceptInclude(String include) { + return include.startsWith("xmi:") || include.endsWith(".xmi") || include.endsWith(".uml"); + } + + @Override + public String getDefaultIncludes() { + return "**/*.xmi"; + } + + @Override + public String getDefaultInputDirectory() { + return "src/main/xmi"; + } + + @Override + public String getDefaultOutputDirectory() { + return "models"; + } + + protected TransformerFactory transformerFactory; + + protected TransformerFactory getTransformerFactory() { + if (transformerFactory == null) { + transformerFactory = TransformerFactory.newInstance(); + } + return transformerFactory; + } + + public String getFullPackagePath() { + return getProperty(PROP_FULL_PACKAGE_PATH, String.class); + } + + public String getExtractedPackages() { + return getProperty(PROP_EXTRACTED_PACKAGES, String.class); + } + + public String getResolver() { + return getProperty(PROP_RESOLVER, String.class); + } + + + @Override + public void generate(File outputDir, File inputDirectory, String includePattern, boolean overwrite) throws IOException { + long t0 = System.nanoTime(); + try { + getLog().info("Processing XSL tranformation on " + inputDirectory + " for " + includePattern); + + getLog().info(" with fullPackagePath : " + getFullPackagePath()); + getLog().info(" with extractedPackages : " + getExtractedPackages()); +// getLog().info(" with acceptedXmiTypes : " + getFullPackagePath()); + getLog().info(" with resolver : " + getResolver()); + + // recuperation des fichiers a traiter + List<File> files = PluginHelper.getIncludedFiles(inputDirectory, new String[]{includePattern}, null); + + // lancement des traitements xsl sur les fichiers trouvés + // dans le repertoire + actionXsl(outputDir, inputDirectory, files, getClassLoader(), overwrite); + } finally { + getLog().info("xsl done in " + PluginHelper.convertTime(System.nanoTime() - t0)); + } + + getLog().info("Copy resources files"); + + PluginIOContext ioContext = new PluginIOContext(); + ioContext.setInput(inputDirectory); + ioContext.setOutput(outputDir); +// String[] excludes = getSuffixPattern("**/*"); + PluginHelper.copyFiles(ioContext, null, new String[]{includePattern}, overwrite); + } + + + protected void actionXsl(File outputDir, File dir, List<File> files, ClassLoader fixedClassLoader, boolean overwrite) throws IOException { + + for (File file : files) { + try { + if (getLog().isDebugEnabled()) { + getLog().debug("treate file : " + file); + } + // Prepare resolver, stylesheet + URIResolver fileResolver = getUriResolver(file, fixedClassLoader); + String styleSheet = getStyleSheet(file); + URL xsl = Resource.getURL(styleSheet); + + //TC-20090820 : using recursive for xmi +// File result = new File(destDirModel, FileUtil.basename(file, +// acceptedSuffixes).concat(".").concat(getExtension())); + + String extension = "." + FileUtil.extension(file); + String filename = FileUtil.basename(file, extension).concat(".").concat(getExtension()); + String relatifPath = file.getParentFile().getAbsolutePath().substring(dir.getAbsolutePath().length()); + File dstDir = outputDir; + if (!relatifPath.isEmpty()) { + dstDir = new File(dstDir, relatifPath); + dstDir.mkdirs(); + } + File result = new File(dstDir, filename); + if (!overwrite && file.lastModified() < result.lastModified()) { + getLog().info("file up-to-date : " + result); + continue; + } + if (getLog().isDebugEnabled()) { + getLog().debug("generate " + result); + } + + // Create the xsl transformer and set parameters + Transformer transformer = getTransformerFactory().newTransformer(new StreamSource(xsl.openStream())); + + transformer.setParameter(PROP_FULL_PACKAGE_PATH, getFullPackagePath()); + //transformer.setParameter("extraPackages", getExtractedPackages()); + + transformer.setURIResolver(fileResolver); + transformer.transform(new StreamSource(file), new StreamResult( + new FileOutputStream(result))); + + } catch (Exception e) { + throw new IOException(e.getMessage(), e); + } + } + } + + + protected URIResolver getUriResolver(File model, ClassLoader cl) { + URIResolver result = null; + + try { + Class<?> clazz = Class.forName(getResolver(), true, cl); + + // Try to set the base using the constructor + try { + // Look for a constructor with a String parameter (base) + Constructor<?> withBaseConstructor = clazz.getConstructor(String.class); + // Set the xmi folder as the base + String base = model.getParentFile().getAbsolutePath(); + // Instantiate + result = (URIResolver) withBaseConstructor.newInstance(base); + } catch (Exception eee) { + getLog().warn("Unable to instantiate resolver with String parameter", + eee); + } + + // If resolver is still not created, create it using the default + // constructor + if (result == null) { + result = (URIResolver) clazz.newInstance(); + } + + if (result instanceof ResourceResolver) { + ((ResourceResolver) result).setVerbose(getConfiguration().isVerbose()); + ((ResourceResolver) result).setCl(cl); + if (result instanceof FasterCachedResourceResolver) { + boolean offline = getConfiguration().isOffline(); + getLog().debug("using offline mode ? : " + offline); + ((FasterCachedResourceResolver) result).setOffline(offline); + } + } + + } catch (Exception eee) { + getLog().warn("Unable to instantiate resolver using the default constructor", eee); + } + + return result; + } + + +} Deleted: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToObjectModelFileWriter.java =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToObjectModelFileWriter.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToObjectModelFileWriter.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,136 +0,0 @@ -/* - * *##% - * EUGene :: Maven plugin - * Copyright (C) 2006 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%* - */ -package org.nuiton.eugene.plugin.writer; - -import org.nuiton.eugene.models.Model; -import org.nuiton.eugene.models.object.ObjectModel; -import org.xml.sax.Attributes; -import org.xml.sax.SAXException; -import org.xml.sax.helpers.DefaultHandler; - -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; -import java.io.File; -import java.io.IOException; - -/** - * This {@link org.nuiton.eugene.ModelFileWriter} transform xmi files to object model file. - * - * @author tchemit - * @plexus.component role="org.nuiton.eugene.ModelFileWriter" role-hint="xmi2objectmodel" description="xmi to object model" - * @since 2.0.0 - */ -public class XmiToObjectModelFileWriter extends BaseXmiToModelFileWriter { - - - public static final String[] XMI_FILE_FILTER = new String[]{"*.xmi", "**/*.xmi"}; - - @Override - public <M extends Model> boolean acceptModel(Class<M> modelType) { - // accept only state models - return ObjectModel.class.isAssignableFrom(modelType); - } - - @Override - public String getExtension() { - return "objectmodel"; - } - - @Override - protected String getStyleSheet(File model) { - String styleSheet = null; - - String version = getXmiVersion(model); - if (version.startsWith("1.")) { - styleSheet = "xmi1.2ToObjectModel.xsl"; - } else if (version.startsWith("2.")) { - styleSheet = "xmi2.1ToObjectModel.xsl"; - } else { - getLog().error("Unsupported xmi version [" + version + "]"); - } - - return styleSheet; - } - - /** - * Try to find xmi version on a file. - * - * @param xmiFile file to inspect - * @return version or null if version can't have been found - */ - protected String getXmiVersion(File xmiFile) { - String version = null; - - SAXParserFactory factory = SAXParserFactory.newInstance(); - - try { - SAXParser parser = factory.newSAXParser(); - - XmiVersionHandler handler = new XmiVersionHandler(); - parser.parse(xmiFile, handler); - - version = handler.getVersion(); - } catch (ParserConfigurationException e) { - getLog().debug("Can't parse file as xmi", e); - } catch (SAXException e) { - getLog().debug("Can't parse file as xmi", e); - } catch (IOException e) { - getLog().debug("Can't parse file as xmi", e); - } - - return version; - } - - /** - * Sax handler to find xmi version into xmi document. - */ - protected class XmiVersionHandler extends DefaultHandler { - - public String version = null; - - public XmiVersionHandler() { - super(); - } - - public String getVersion() { - return version; - } - - @Override - public void startElement(String uri, String localName, String qName, - Attributes attributes) throws SAXException { - - if (qName.equals("XMI")) { - version = attributes.getValue("xmi.version"); - getLog().debug("XMI version found : " + version); - } - - if (version == null) { - version = attributes.getValue("xmi:version"); - getLog().debug("XMI version found : " + version); - } - - } - } - - -} Copied: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToObjectModelFileWriter.java (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToObjectModelFileWriter.java) =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToObjectModelFileWriter.java (rev 0) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToObjectModelFileWriter.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,136 @@ +/* + * *##% + * EUGene :: Maven plugin + * Copyright (C) 2006 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ +package org.nuiton.eugene.plugin.writer; + +import org.nuiton.eugene.models.Model; +import org.nuiton.eugene.models.object.ObjectModel; +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.helpers.DefaultHandler; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; +import java.io.File; +import java.io.IOException; + +/** + * This {@link org.nuiton.eugene.ModelFileWriter} transform xmi files to object model file. + * + * @author tchemit + * @plexus.component role="org.nuiton.eugene.ModelFileWriter" role-hint="xmi2objectmodel" description="xmi to object model" + * @since 2.0.0 + */ +public class XmiToObjectModelFileWriter extends BaseXmiToModelFileWriter { + + + public static final String[] XMI_FILE_FILTER = new String[]{"*.xmi", "**/*.xmi"}; + + @Override + public <M extends Model> boolean acceptModel(Class<M> modelType) { + // accept only state models + return ObjectModel.class.isAssignableFrom(modelType); + } + + @Override + public String getExtension() { + return "objectmodel"; + } + + @Override + protected String getStyleSheet(File model) { + String styleSheet = null; + + String version = getXmiVersion(model); + if (version.startsWith("1.")) { + styleSheet = "xmi1.2ToObjectModel.xsl"; + } else if (version.startsWith("2.")) { + styleSheet = "xmi2.1ToObjectModel.xsl"; + } else { + getLog().error("Unsupported xmi version [" + version + "]"); + } + + return styleSheet; + } + + /** + * Try to find xmi version on a file. + * + * @param xmiFile file to inspect + * @return version or null if version can't have been found + */ + protected String getXmiVersion(File xmiFile) { + String version = null; + + SAXParserFactory factory = SAXParserFactory.newInstance(); + + try { + SAXParser parser = factory.newSAXParser(); + + XmiVersionHandler handler = new XmiVersionHandler(); + parser.parse(xmiFile, handler); + + version = handler.getVersion(); + } catch (ParserConfigurationException e) { + getLog().debug("Can't parse file as xmi", e); + } catch (SAXException e) { + getLog().debug("Can't parse file as xmi", e); + } catch (IOException e) { + getLog().debug("Can't parse file as xmi", e); + } + + return version; + } + + /** + * Sax handler to find xmi version into xmi document. + */ + protected class XmiVersionHandler extends DefaultHandler { + + public String version = null; + + public XmiVersionHandler() { + super(); + } + + public String getVersion() { + return version; + } + + @Override + public void startElement(String uri, String localName, String qName, + Attributes attributes) throws SAXException { + + if (qName.equals("XMI")) { + version = attributes.getValue("xmi.version"); + getLog().debug("XMI version found : " + version); + } + + if (version == null) { + version = attributes.getValue("xmi:version"); + getLog().debug("XMI version found : " + version); + } + + } + } + + +} Deleted: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToStateModelFileWriter.java =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToStateModelFileWriter.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToStateModelFileWriter.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,54 +0,0 @@ -/* - * *##% - * EUGene :: Maven plugin - * Copyright (C) 2006 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%* - */ -package org.nuiton.eugene.plugin.writer; - -import org.nuiton.eugene.models.Model; -import org.nuiton.eugene.models.state.StateModel; -import org.nuiton.plugin.PluginIOContext; - -import java.io.File; -import java.io.IOException; -import java.util.Map; - -/** - * @author tchemit - * @plexus.component role="org.nuiton.eugene.ModelFileWriter" role-hint="xmi2statemodel" description="xmi to state model" - * @since 2.0.0 - */ -public class XmiToStateModelFileWriter extends BaseXmiToModelFileWriter { - - @Override - public <M extends Model> boolean acceptModel(Class<M> modelType) { - // accept only state models - return StateModel.class.isAssignableFrom(modelType); - } - - @Override - protected String getExtension() { - return "statemodel"; - } - - @Override - protected String getStyleSheet(File model) { - //TODO when StateModel will be supported in 2.1, compute the version to resolve the correct stylesheet - return "xmi1.2ToStateModel.xsl"; - } -} Copied: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToStateModelFileWriter.java (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToStateModelFileWriter.java) =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToStateModelFileWriter.java (rev 0) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToStateModelFileWriter.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,54 @@ +/* + * *##% + * EUGene :: Maven plugin + * Copyright (C) 2006 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ +package org.nuiton.eugene.plugin.writer; + +import org.nuiton.eugene.models.Model; +import org.nuiton.eugene.models.state.StateModel; +import org.nuiton.plugin.PluginIOContext; + +import java.io.File; +import java.io.IOException; +import java.util.Map; + +/** + * @author tchemit + * @plexus.component role="org.nuiton.eugene.ModelFileWriter" role-hint="xmi2statemodel" description="xmi to state model" + * @since 2.0.0 + */ +public class XmiToStateModelFileWriter extends BaseXmiToModelFileWriter { + + @Override + public <M extends Model> boolean acceptModel(Class<M> modelType) { + // accept only state models + return StateModel.class.isAssignableFrom(modelType); + } + + @Override + protected String getExtension() { + return "statemodel"; + } + + @Override + protected String getStyleSheet(File model) { + //TODO when StateModel will be supported in 2.1, compute the version to resolve the correct stylesheet + return "xmi1.2ToStateModel.xsl"; + } +} Deleted: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ZargoModelFileWriter.java =================================================================== --- branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ZargoModelFileWriter.java 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ZargoModelFileWriter.java 2009-12-14 23:50:27 UTC (rev 755) @@ -1,89 +0,0 @@ -/* - * *##% - * EUGene :: Maven plugin - * Copyright (C) 2006 - 2009 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * ##%* - */ -package org.nuiton.eugene.plugin.writer; - -import org.nuiton.eugene.models.Model; -import org.nuiton.plugin.PluginHelper; -import org.nuiton.plugin.PluginIOContext; - -import java.io.File; -import java.io.IOException; - -/** - * @author tchemit - * @plexus.component role="org.nuiton.eugene.ModelFileWriter" role-hint="zargo2xmi" description="zargo to xmi model" - * @since 2.0.0 - */ -public class ZargoModelFileWriter extends BaseModelFileWriter { - - public static final String[] XMI_FILE_FILTER = new String[]{"*.xmi", "**/*.xmi"}; - - @Override - public String getInputProtocol() { - return "zargo"; - } - - @Override - public <M extends Model> String getOutputProtocol(Class<M> modelType) { - // next writer to use is a xmi to model one - return "xmi"; - } - - @Override - public <M extends Model> boolean acceptModel(Class<M> modelType) { - // accept all models - return true; - } - - @Override - public boolean acceptInclude(String include) { - return include.startsWith("zargo:") || include.endsWith(".zargo") || include.endsWith(".zuml"); - } - - @Override - public String getDefaultIncludes() { - return "**/*.zargo"; - } - - @Override - public String getDefaultInputDirectory() { - return "src/main/xmi"; - } - - @Override - public String getDefaultOutputDirectory() { - return "xmi"; - } - - @Override - public void generate(File outputDir, File inputDirectory, String includePattern, boolean overwrite) throws IOException { - - PluginIOContext ioContext = new PluginIOContext(); - ioContext.setInput(inputDirectory); - ioContext.setOutput(outputDir); - - getLog().info("Expanding xmi from " + inputDirectory + " : " + includePattern); - PluginHelper.expandFiles(ioContext, new String[]{includePattern}, null, XMI_FILE_FILTER, overwrite); - - getLog().info("Copying resources from " + inputDirectory + " : " + includePattern); - PluginHelper.copyFiles(ioContext, null, new String[]{includePattern}, overwrite); - } -} Copied: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ZargoModelFileWriter.java (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ZargoModelFileWriter.java) =================================================================== --- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ZargoModelFileWriter.java (rev 0) +++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ZargoModelFileWriter.java 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,89 @@ +/* + * *##% + * EUGene :: Maven plugin + * Copyright (C) 2006 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * ##%* + */ +package org.nuiton.eugene.plugin.writer; + +import org.nuiton.eugene.models.Model; +import org.nuiton.plugin.PluginHelper; +import org.nuiton.plugin.PluginIOContext; + +import java.io.File; +import java.io.IOException; + +/** + * @author tchemit + * @plexus.component role="org.nuiton.eugene.ModelFileWriter" role-hint="zargo2xmi" description="zargo to xmi model" + * @since 2.0.0 + */ +public class ZargoModelFileWriter extends BaseModelFileWriter { + + public static final String[] XMI_FILE_FILTER = new String[]{"*.xmi", "**/*.xmi"}; + + @Override + public String getInputProtocol() { + return "zargo"; + } + + @Override + public <M extends Model> String getOutputProtocol(Class<M> modelType) { + // next writer to use is a xmi to model one + return "xmi"; + } + + @Override + public <M extends Model> boolean acceptModel(Class<M> modelType) { + // accept all models + return true; + } + + @Override + public boolean acceptInclude(String include) { + return include.startsWith("zargo:") || include.endsWith(".zargo") || include.endsWith(".zuml"); + } + + @Override + public String getDefaultIncludes() { + return "**/*.zargo"; + } + + @Override + public String getDefaultInputDirectory() { + return "src/main/xmi"; + } + + @Override + public String getDefaultOutputDirectory() { + return "xmi"; + } + + @Override + public void generate(File outputDir, File inputDirectory, String includePattern, boolean overwrite) throws IOException { + + PluginIOContext ioContext = new PluginIOContext(); + ioContext.setInput(inputDirectory); + ioContext.setOutput(outputDir); + + getLog().info("Expanding xmi from " + inputDirectory + " : " + includePattern); + PluginHelper.expandFiles(ioContext, new String[]{includePattern}, null, XMI_FILE_FILTER, overwrite); + + getLog().info("Copying resources from " + inputDirectory + " : " + includePattern); + PluginHelper.copyFiles(ioContext, null, new String[]{includePattern}, overwrite); + } +} Modified: trunk/maven-eugene-plugin/src/main/resources/log4j.properties =================================================================== --- trunk/maven-eugene-plugin/src/main/resources/log4j.properties 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/main/resources/log4j.properties 2009-12-14 23:50:27 UTC (rev 755) @@ -6,3 +6,4 @@ log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n # package level log4j.logger.org.nuiton=INFO +#log4j.logger.org.nuiton.eugene=DEBUG Deleted: trunk/maven-eugene-plugin/src/site/fr/rst/index.rst =================================================================== (Binary files differ) Copied: trunk/maven-eugene-plugin/src/site/fr/rst/index.rst (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/site/fr/rst/index.rst) =================================================================== (Binary files differ) Property changes on: trunk/maven-eugene-plugin/src/site/fr/rst/index.rst ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + /branches/1.0.1-Javabuilder/maven-eugene-plugin/src/site/fr/rst/index.rst:641-651 /branches/eugene-2.0/maven-eugene-plugin/src/site/fr/rst/index.rst:682-754 Deleted: trunk/maven-eugene-plugin/src/site/rst/index.rst =================================================================== (Binary files differ) Copied: trunk/maven-eugene-plugin/src/site/rst/index.rst (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/site/rst/index.rst) =================================================================== (Binary files differ) Property changes on: trunk/maven-eugene-plugin/src/site/rst/index.rst ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Deleted: trunk/maven-eugene-plugin/src/site/site_en.xml =================================================================== --- trunk/maven-eugene-plugin/src/site/site_en.xml 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/site/site_en.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project name="${project.name}"> - - <bannerLeft> - <name>${project.name}</name> - </bannerLeft> - - <body> - - <breadcrumbs> - <item name="${project.name}" href="index.html"/> - </breadcrumbs> - - <menu name="Parent"> - <item href="../../index.html" name="${project.parent.name}"/> - </menu> - - <menu name="Liens"> - <item href="../index.html" name="maven-eugene-plugin [ FR ]"/> - </menu> - - - <menu ref="reports"/> - - </body> -</project> Copied: trunk/maven-eugene-plugin/src/site/site_en.xml (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/site/site_en.xml) =================================================================== --- trunk/maven-eugene-plugin/src/site/site_en.xml (rev 0) +++ trunk/maven-eugene-plugin/src/site/site_en.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project name="${project.name}"> + + <bannerLeft> + <name>${project.name}</name> + </bannerLeft> + + <body> + <links> + <item name="Libre-Entreprise" href="http://www.libre-entreprise.org/" /> + <item name="[fr" href="../fr/index.html" /> + <item name="en]" href="index.html" /> + </links> + + <breadcrumbs> + <item name="${project.name}" href="index.html" /> + </breadcrumbs> + + <menu ref="parent"/> + + <menu name="User"> + <item href="index.html" name="Index"/> + <item name="Goals" href="plugin-info.html"> + <item name="zargo2xmi" href="zargo2xmi-mojo.html"/> + <item name="xmi2statemodel" href="xmi2statemodel-mojo.html"/> + <item name="xmi2objectmodel" href="xmi2objectmodel-mojo.html"/> + <item name="generate-model-files" href="generate-model-files-mojo.html"/> + <item name="generate" href="generate-mojo.html"/> + <item name="copyVersionFiles" href="copyVersionFiles-mojo.html"/> + <item name="help" href="help-mojo.html"/> + </item> + </menu> + + <menu name="Download"> + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}.jar" + name="Library (jar)"/> + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}-javadoc.jar" + name="Javadoc (jar)"/> + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}-sources.jar" + name="Sources (jar)"/> + </menu> + + <menu ref="reports"/> + + </body> +</project> Deleted: trunk/maven-eugene-plugin/src/site/site_fr.xml =================================================================== --- trunk/maven-eugene-plugin/src/site/site_fr.xml 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/maven-eugene-plugin/src/site/site_fr.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project name="${project.name}"> - - <bannerLeft> - <name>${project.name}</name> - </bannerLeft> - - <body> - - <breadcrumbs> - <item name="${project.name}" href="index.html" /> - </breadcrumbs> - - <menu ref="parent"/> - - <menu name="Liens"> - <item href="en/index.html" name="maven-eugene-plugin [ EN ]" /> - </menu> - - <menu ref="reports"/> - - - </body> -</project> Copied: trunk/maven-eugene-plugin/src/site/site_fr.xml (from rev 754, branches/eugene-2.0/maven-eugene-plugin/src/site/site_fr.xml) =================================================================== --- trunk/maven-eugene-plugin/src/site/site_fr.xml (rev 0) +++ trunk/maven-eugene-plugin/src/site/site_fr.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project name="${project.name}"> + + <bannerLeft> + <name>${project.name}</name> + </bannerLeft> + + <body> + <links> + <item name="Libre-Entreprise" href="http://www.libre-entreprise.org/"/> + <item name="[fr" href="index.html"/> + <item name="en]" href="../index.html"/> + </links> + + <breadcrumbs> + <item name="${project.name}" href="index.html"/> + </breadcrumbs> + + <menu ref="parent"/> + + <menu name="Utilisateur"> + <item href="index.html" name="Accueil"/> + <item name="Goals" href="plugin-info.html"> + <item name="zargo2xmi" href="zargo2xmi-mojo.html"/> + <item name="xmi2statemodel" href="xmi2statemodel-mojo.html"/> + <item name="xmi2objectmodel" href="xmi2objectmodel-mojo.html"/> + <item name="generate-model-files" href="generate-model-files-mojo.html"/> + <item name="generate" href="generate-mojo.html"/> + <item name="copyVersionFiles" href="copyVersionFiles-mojo.html"/> + <item name="help" href="help-mojo.html"/> + </item> + </menu> + + <menu name="Téléchargement"> + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}.jar" + name="Librairie (jar)"/> + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}-javadoc.jar" + name="Javadoc (jar)"/> + <item href="${repository.home.url}/org/nuiton/eugene/${project.artifactId}/${project.version}/${project.build.finalName}-sources.jar" + name="Sources (jar)"/> + </menu> + + <menu ref="reports"/> + + </body> +</project> Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/pom.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> @@ -9,16 +10,15 @@ <parent> <groupId>org.nuiton</groupId> <artifactId>mavenpom</artifactId> - <version>1.1.1</version> + <version>1.1.2</version> </parent> <artifactId>eugene</artifactId> - <version>1.0.2-SNAPSHOT</version> + <version>2.0.0-beta-2-SNAPSHOT</version> <modules> <module>eugene</module> <module>maven-eugene-plugin</module> - <!--module>eugene-demo</module--> </modules> <dependencyManagement> @@ -219,13 +219,21 @@ <scope>test</scope> </dependency> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <version>1.2.14</version> + <scope>test</scope> + </dependency> + + </dependencies> </dependencyManagement> <!-- ************************************************************* --> <!-- *** Project Information ************************************* --> <!-- ************************************************************* --> - <name>EUGene - project</name> + <name>EUGene</name> <description>Efficient Universal Generator</description> <inceptionYear>2004</inceptionYear> <url>http://maven-site.nuiton.org/eugene</url> @@ -242,15 +250,17 @@ <!-- TODO TC-20090823 remove ant deps --> <ant.version>1.7.1</ant.version> + <processor.version>1.0.3-SNAPSHOT</processor.version> <nuiton-utils.version>1.1.0</nuiton-utils.version> - + <!--Multilanguage maven-site --> - <maven.site.locales>fr,en</maven.site.locales> + <maven.site.locales>en,fr</maven.site.locales> </properties> <build> <defaultGoal>install</defaultGoal> + <pluginManagement> <plugins> @@ -265,6 +275,18 @@ </dependencies> </plugin> + <plugin> + <groupId>org.nuiton.processor</groupId> + <artifactId>maven-processor-plugin</artifactId> + <version>${processor.version}</version> + </plugin> + + <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-metadata</artifactId> + <version>1.4.0</version> + </plugin> + </plugins> </pluginManagement> Deleted: trunk/src/site/site_en.xml =================================================================== --- trunk/src/site/site_en.xml 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/src/site/site_en.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -1,50 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project name="${project.name}"> - - <bannerLeft> - <name>${project.name}</name> - </bannerLeft> - - <poweredBy> - <logo href="http://maven.apache.org" name="Maven" img="${project.url}/jrst/images/logos/maven-feather.png"/> - <logo href="http://maven-site.nuiton.org/jrst" name="JRst" img="${project.url}/jrst/images/jrst-logo.png"/> - <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" img="${project.url}/jrst/images/restructuredtext-logo.png"/> - </poweredBy> - - <body> - - <breadcrumbs> - <item name="${project.name}" href="index.html" /> - </breadcrumbs> - - <links> - <item name="Libre-Entreprise" href="http://www.libre-entreprise.org/" /> - </links> - - <menu name="User"> - <item href="index.html" name="Home"/> - <item href="../maven-eugene-plugin/en/plugin-info.html" name="Maven plugin" /> - </menu> - - <menu name="Links"> - <item href="../index.html" name="EUGene project [ FR ]" /> - <item href="http://${platform}/projects/list_files/eugene" name="Downloads" /> - <item href="http://maven-site.nuiton.org/processor" name="Nuiton-processor" /> - <item href="http://maven-site.nuiton.org/topia" name="ToPIA" /> - </menu> - - <menu name="Trackers"> - <item name="Bugs" href="${project.issueManagement.url}?query_id=2"/> - <item name="Evolutions" href="${project.issueManagement.url}?query_id=1"/> - <item name="Help" href="${project.issueManagement.url}?query_id=3"/> - </menu> - - <menu name="Modules"> - <item href="../eugene/en/index.html" name="EUGene"/> - <item href="../maven-eugene-plugin/en/index.html" name="EUGene - plugin maven"/> - </menu> - - <menu ref="reports"/> - - </body> -</project> Copied: trunk/src/site/site_en.xml (from rev 754, branches/eugene-2.0/src/site/site_en.xml) =================================================================== --- trunk/src/site/site_en.xml (rev 0) +++ trunk/src/site/site_en.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project name="${project.name}"> + + <bannerLeft> + <name>${project.name}</name> + <href>/</href> + </bannerLeft> + + <poweredBy> + <logo href="http://maven.apache.org" name="Maven" img="${project.url}/images/logos/maven-feather.png"/> + <logo href="http://jrst.labs.libre-entreprise.org" name="JRst" img="${project.url}/images/jrst-logo.png"/> + <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" img="${project.url}/images/restructuredtext-logo.png"/> + </poweredBy> + + <body> + + <breadcrumbs> + <item name="${project.name}" href="index.html" /> + </breadcrumbs> + + <menu ref="modules"/> + + <menu ref="reports"/> + </body> +</project> Deleted: trunk/src/site/site_fr.xml =================================================================== --- trunk/src/site/site_fr.xml 2009-12-14 23:33:15 UTC (rev 754) +++ trunk/src/site/site_fr.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project name="${project.name}"> - - <bannerLeft> - <name>${project.name}</name> - </bannerLeft> - - <poweredBy> - <logo href="http://maven.apache.org" name="Maven" img="${project.url}/images/logos/maven-feather.png"/> - <logo href="http://maven-site.nuiton.org/jrst" name="JRst" img="${project.url}/images/jrst-logo.png"/> - <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" img="${project.url}/images/restructuredtext-logo.png"/> - </poweredBy> - - <body> - - <breadcrumbs> - <item name="${project.name}" href="index.html" /> - </breadcrumbs> - - <links> - <item name="Libre-Entreprise" href="http://www.libre-entreprise.org/" /> - </links> - - <menu name="Utilisateur"> - <item href="index.html" name="Accueil"/> - <item href="DiscussionSurTypeDeGeneration.html" name="Génération"/> - <item href="maven-eugene-plugin/plugin-info.html" name="Plugin maven" /> - <item href="FAQ.html" name="FAQ"/> - </menu> - - <menu name="Développeur"> - <item name="ObjectModel" href="ObjectModel.html"/> - <item name="UIModel" href="DevUIDoc.html"/> - <item name="Plugin Eclipse" href="plugineclipse.html"/> - <item name="Todo" href="Todo.html"/> - </menu> - - <menu name="Liens"> - <item href="en/index.html" name="EUGene project [ EN ]" /> - <item href="http://${platform}/projects/list_files/eugene" name="Téléchargement" /> - <item href="http://maven-site.nuiton.org/processor" name="Nuiton-processor" /> - <item href="http://maven-site.nuiton.org/topia" name="ToPIA" /> - </menu> - - <menu name="Trackers"> - <item name="Bugs" href="${project.issueManagement.url}?query_id=2"/> - <item name="Améliorations" href="${project.issueManagement.url}?query_id=1"/> - <item name="Aide" href="${project.issueManagement.url}?query_id=3"/> - </menu> - - <menu ref="modules"/> - - <menu ref="reports"/> - - </body> -</project> Copied: trunk/src/site/site_fr.xml (from rev 754, branches/eugene-2.0/src/site/site_fr.xml) =================================================================== --- trunk/src/site/site_fr.xml (rev 0) +++ trunk/src/site/site_fr.xml 2009-12-14 23:50:27 UTC (rev 755) @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project name="${project.name}"> + + <bannerLeft> + <name>${project.name}</name> + <href>/</href> + </bannerLeft> + + <poweredBy> + <logo href="http://maven.apache.org" name="Maven" img="${project.url}/images/logos/maven-feather.png"/> + <logo href="http://jrst.labs.libre-entreprise.org" name="JRst" img="${project.url}/images/jrst-logo.png"/> + <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" img="${project.url}/images/restructuredtext-logo.png"/> + </poweredBy> + + <body> + + <breadcrumbs> + <item name="${project.name}" href="index.html" /> + </breadcrumbs> + + <menu ref="modules"/> + + <menu ref="reports"/> + </body> +</project>
participants (1)
-
tchemit@users.nuiton.org