From 91d7e0d18f14aca7eece836cd18f1706ee222b16 Mon Sep 17 00:00:00 2001 From: Vincent Amstoutz <46444652+vinceAmstoutz@users.noreply.github.com> Date: Fri, 25 Nov 2022 13:33:16 +0100 Subject: [PATCH 01/25] Add support for avif image formats (#755) --- book/image-formats.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/book/image-formats.rst b/book/image-formats.rst index 22aef48b..aa7262f5 100644 --- a/book/image-formats.rst +++ b/book/image-formats.rst @@ -116,6 +116,7 @@ This file does not exist by default and must be created on your own. default_imagine_options: jpeg_quality: 80 webp_quality: 80 + avif_quality: 80 png_compression_level: 6 Its recommended to have `jpeg_quality` between 70-90 as this is the best compromise between quality and image size. @@ -137,6 +138,7 @@ A image compression can also be set on a specific image format the following way + From 3fe85af861857dabcdd5de3f8819c3e5f4ce88e7 Mon Sep 17 00:00:00 2001 From: Alexander Schranz Date: Thu, 15 Dec 2022 17:03:19 +0100 Subject: [PATCH 02/25] Add comment about Symfony 5 for anonymous flag (#758) --- cookbook/user-context-caching.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cookbook/user-context-caching.rst b/cookbook/user-context-caching.rst index 25465310..10602ca4 100644 --- a/cookbook/user-context-caching.rst +++ b/cookbook/user-context-caching.rst @@ -75,7 +75,7 @@ User Context feature in Sulu. firewalls: website: pattern: ^/ - anonymous: true + anonymous: true # only required for Symfony 5 projects in Symfony 6 this can be removed lazy: true form_login: login_path: login From 88ec73b2d5d9f663668f667f2c3e4e2481e1acf0 Mon Sep 17 00:00:00 2001 From: Alexander Schranz Date: Thu, 15 Dec 2022 17:09:47 +0100 Subject: [PATCH 03/25] Add missing provider sulu (#759) --- cookbook/user-context-caching.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/cookbook/user-context-caching.rst b/cookbook/user-context-caching.rst index 10602ca4..a7de06dd 100644 --- a/cookbook/user-context-caching.rst +++ b/cookbook/user-context-caching.rst @@ -77,6 +77,7 @@ User Context feature in Sulu. pattern: ^/ anonymous: true # only required for Symfony 5 projects in Symfony 6 this can be removed lazy: true + provider: sulu form_login: login_path: login check_path: login From f5ac3c855096f7b1380c3ee1f00486c82cbcdaed Mon Sep 17 00:00:00 2001 From: Alexander Schranz Date: Mon, 19 Dec 2022 12:55:42 +0100 Subject: [PATCH 04/25] Fix azure blob storage connection_string (#760) --- cookbook/external-media-storage.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cookbook/external-media-storage.rst b/cookbook/external-media-storage.rst index f2c1c24f..6ee9c712 100644 --- a/cookbook/external-media-storage.rst +++ b/cookbook/external-media-storage.rst @@ -89,7 +89,7 @@ Configure the storage with following yaml-snippet: storage: azure_blob storages: azure_blob: - connection_string: ''DefaultEndpointsProtocol=https;AccountName={YOUR_ACCOUNT_NAME};AccountKey={YOUR_ACCOUNT_KEY};'' + connection_string: 'DefaultEndpointsProtocol=https;AccountName={YOUR_ACCOUNT_NAME};AccountKey={YOUR_ACCOUNT_KEY};' container_name: 'container-name' path_prefix: 'optional path prefix' From 874af7657b0ad899048b7a95fea6e0a269d4ecd4 Mon Sep 17 00:00:00 2001 From: Matthias Seghers <19349429+matthiasseghers@users.noreply.github.com> Date: Fri, 17 Mar 2023 17:14:17 +0100 Subject: [PATCH 05/25] Fix invalid YAML syntax (#768) --- cookbook/custom-page-data-provider.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cookbook/custom-page-data-provider.rst b/cookbook/custom-page-data-provider.rst index bc975cbf..4c3d7237 100644 --- a/cookbook/custom-page-data-provider.rst +++ b/cookbook/custom-page-data-provider.rst @@ -84,7 +84,7 @@ is implemented, which filters the pages for a specific author: - '@sulu_page.reference_store.content' - '%sulu_document_manager.show_drafts%' - '%sulu_security.permissions%' - - '@=container.hasParameter('sulu_audience_targeting.enabled')' + - '@=container.hasParameter(\'sulu_audience_targeting.enabled\')' - '@sulu_admin.form_metadata_provider' - '@security.token_storage' tags: From 5695af23d06be6bf465b753e8e9e18804686467f Mon Sep 17 00:00:00 2001 From: Remdan Date: Fri, 17 Mar 2023 17:18:56 +0100 Subject: [PATCH 06/25] Add controller.service_arguments tag (#769) --- cookbook/sulu-twig-attributes.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cookbook/sulu-twig-attributes.rst b/cookbook/sulu-twig-attributes.rst index 39bd7a70..d1f569eb 100644 --- a/cookbook/sulu-twig-attributes.rst +++ b/cookbook/sulu-twig-attributes.rst @@ -13,9 +13,11 @@ attributes to your template. To do this, you can use the``TemplateAttributeResol use Sulu\Bundle\HttpCacheBundle\Cache\SuluHttpCache; use Sulu\Bundle\WebsiteBundle\Resolver\TemplateAttributeResolverInterface; use Symfony\Component\HttpFoundation\Response; + use Symfony\Component\HttpKernel\Attribute\AsController; use Symfony\Component\Routing\Annotation\Route; use Twig\Environment; + #[AsController] class StaticController { /** From bc507fbf70b8fc015b9d7c74a289c4fff650e39f Mon Sep 17 00:00:00 2001 From: Matthias Seghers <19349429+matthiasseghers@users.noreply.github.com> Date: Wed, 12 Apr 2023 17:40:57 +0200 Subject: [PATCH 07/25] Add custom sorting documentation (#770) --- cookbook/custom-page-data-provider.rst | 85 ++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/cookbook/custom-page-data-provider.rst b/cookbook/custom-page-data-provider.rst index 4c3d7237..44ed265a 100644 --- a/cookbook/custom-page-data-provider.rst +++ b/cookbook/custom-page-data-provider.rst @@ -103,3 +103,88 @@ is implemented, which filters the pages for a specific author: + +Adding custom sorting +--------------------- + +You can implement custom sorting criteria by creating a new ``DataProvider`` class that extends from the ``PageDataProvider`` class and using it instead. +That way, you can sort by a property that isn't provided by the ``PageDataProvider``. +When a lot of business logic it is probably better to create a custom entity instead. + +**1. Create a custom** ``DataProvider`` **class that overrides the** ``PageDataProvider`` **configuration.** + +.. code-block:: php + + initConfiguration(); + } + + private function initConfiguration(): ProviderConfigurationInterface + { + /** @var ProviderConfiguration $configuration */ + $configuration = parent::getConfiguration(); + + $configuration->setSorting([ + ...$configuration->getSorting(), + ['column' => 'datetimeFrom', 'title' => 'sulu_admin.datetime_from'], + ]); + + return $configuration; + } + } + +Other configuration settings can be overriden as well. The available options are: + +.. list-table:: + :header-rows: 1 + + * - Method + - Parameters + - Description + * - `setTags` + - bool + - Enable tags to be selecteable for smart_content. + * - `setTags` + - bool + - Enable categories. + * - `setLimit` + - bool + - Enable limit. + * - `setPaginated` + - bool + - Enable pagination. + * - `setPresentAs` + - bool + - Enable present as. + * - `setAudienceTargeting` + - bool + - Enable audience targeting. + * - `setSorting` + - collection + - Accepts a nested array of two-dimensional arrays. Each two-dimensional array should include a `column` key with the property to sort by, and a `title` key with the label to display in the sorting dropdown menu. + * - `setView` + - `array $resultToView` + - Defines where the deep link when clicking on a smart content item should navigate to. + +**2. Use the custom** ``DataProvider`` **in the** ``services.yaml`` **.** + +.. code-block:: yaml + + app.smart_content.data_provider.author_pages: + class: App\SmartContent\EventPageDataProvider + + +All other parameters remain the same as you would register a ``PageDataProvider`` service that uses a custom ``QueryBuilder`` implementation. From 25c9f6f6f8042ce1b36a7cd5055494bbfb403164 Mon Sep 17 00:00:00 2001 From: mamazu <14860264+mamazu@users.noreply.github.com> Date: Tue, 27 Jun 2023 11:53:47 +0200 Subject: [PATCH 08/25] Add documentation for sulu-link "remove-if-not-exists" (#773) --- bundles/markup/link.rst | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/bundles/markup/link.rst b/bundles/markup/link.rst index ebb6dd6c..f4279ce1 100644 --- a/bundles/markup/link.rst +++ b/bundles/markup/link.rst @@ -76,7 +76,6 @@ Now you will be able to target the links in CSS and Javascript by using the data font-color: green; } - How the tag is processed ------------------------ @@ -86,3 +85,21 @@ linked pages from the PHPCR in a *single* query. If a twig function would be used to generate the links, each call would trigger a request to the PHPCR which would worsen the performance. + +Removing invalid links +---------------------- + +By default Sulu will remove links if the target they are linking to does not exist anymore: + +.. code-block:: html + Link Text + + + Link Text + +If you want to completely remove the link text as well you can add the "remove-if-not-exists": + +.. code-block:: html + Link Text + + From 93c86137468eabf4b304923224d1c887840003de Mon Sep 17 00:00:00 2001 From: Alexander Schranz Date: Wed, 22 Nov 2023 17:34:37 +0100 Subject: [PATCH 09/25] Fix html code blocks in link docs (#783) --- bundles/markup/link.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bundles/markup/link.rst b/bundles/markup/link.rst index f4279ce1..7db64de8 100644 --- a/bundles/markup/link.rst +++ b/bundles/markup/link.rst @@ -92,6 +92,7 @@ Removing invalid links By default Sulu will remove links if the target they are linking to does not exist anymore: .. code-block:: html + Link Text @@ -100,6 +101,7 @@ By default Sulu will remove links if the target they are linking to does not exi If you want to completely remove the link text as well you can add the "remove-if-not-exists": .. code-block:: html + Link Text From b01584c9a5a45fa4a8429b7ad1a7fd067a253bd4 Mon Sep 17 00:00:00 2001 From: Alexander Schranz Date: Thu, 23 Nov 2023 08:35:35 +0100 Subject: [PATCH 10/25] Add hint to use bun to build admin (#782) --- cookbook/build-admin-frontend.rst | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/cookbook/build-admin-frontend.rst b/cookbook/build-admin-frontend.rst index 91c333ac..2872e452 100644 --- a/cookbook/build-admin-frontend.rst +++ b/cookbook/build-admin-frontend.rst @@ -76,6 +76,34 @@ on your computer. npm install npm run build +Solution 4: Build manually locally with bun +------------------------------------------- + +As an alternative to node/npm Sulu also supports to use `bun`_ to build the administration interface. +The support for bun is experimental and can be removed in future versions of Sulu. + +1. Install Bun + +If not yet installed on your computer you would need to install `bun`_ +on your computer. + +2. Cleanup previously created node_modules folders and bun.lockb files + +.. code-block:: bash + + cd /var/project + rm -rf assets/admin/node_modules && rm -rf vendor/sulu/sulu/node_modules && rm -rf vendor/sulu/sulu/src/Sulu/Bundle/*/Resources/js/node_modules + rm -rf assets/admin/bun.lockb && rm -rf vendor/sulu/sulu/bun.lockb && rm -rf vendor/sulu/sulu/src/Sulu/Bundle/*/Resources/js/bun.lockb + +3. Create the administration interface build + +.. code-block:: bash + + cd /var/project/assets/admin + bun run preinstall + bun install + bun run build + Common errors ------------- @@ -110,3 +138,4 @@ If this does not solve the problem, you can try to clean the npm cache on your m .. _Test Application workflow: https://github.com/sulu/sulu/blob/2.x/.github/workflows/test-application.yaml .. _sulu/skeleton repository: https://github.com/sulu/skeleton .. _node: https://nodejs.org/en/ +.. _bun: https://bun.sh/ From 8b4a38550cdf05b8c42c30b97b699c5d205753c0 Mon Sep 17 00:00:00 2001 From: Prokyonn Date: Tue, 13 Feb 2024 10:35:32 +0100 Subject: [PATCH 11/25] Add documentation for snippet area cache settings (#788) --- cookbook/default-snippets.rst | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/cookbook/default-snippets.rst b/cookbook/default-snippets.rst index 6601aa14..4daf39c4 100644 --- a/cookbook/default-snippets.rst +++ b/cookbook/default-snippets.rst @@ -35,19 +35,28 @@ and can be assigned to a snippet that uses the respective template. - + Menu Social Media Links - + Footer Social Media Links +For each area you can also define if the cache should be invalidated when either the snippet is +changed or the snippet assigned to the area is modified/removed. This can be done by setting the +``cache-invalidation`` attribute of the area to ``true`` or ``false``, the default value is ``true``. + +.. note:: + + Be aware that if a default-snippet is used in a base twig template, modifying the snippet or the + area may result in a full cache invalidation of the website. + Loading the default snippet inside of a twig template ----------------------------------------------------- From bf0a10a7630cee3d7dd2f67310de9aac29e1f9cb Mon Sep 17 00:00:00 2001 From: martinlagler Date: Fri, 16 Feb 2024 11:25:48 +0100 Subject: [PATCH 12/25] Add mapquest to location documentation (#789) --- bundles/location.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bundles/location.rst b/bundles/location.rst index df2acaf0..f7414363 100644 --- a/bundles/location.rst +++ b/bundles/location.rst @@ -17,6 +17,9 @@ Configuration endpoint: 'http://open.mapquestapi.com/nominatim/v1/search.php' google: api_key: '' + mapquest: + api_key: '' + endpoint: 'https://www.mapquestapi.com/geocoding/v1/address' Services -------- From 6093d42ade2e7146e474ec65b7052998a78c74c1 Mon Sep 17 00:00:00 2001 From: Johannes Wachter Date: Wed, 21 Feb 2024 10:12:07 +0000 Subject: [PATCH 13/25] Add documentation for global-blocks (#787) * add documentation for global-blocks * fix code-block * fix code-review * Update book/templates.rst Co-authored-by: Prokyonn --------- Co-authored-by: Prokyonn --- book/templates.rst | 74 +++++++++++++++++++++++++++ reference/content-types/block.rst | 5 ++ reference/content-types/image_map.rst | 5 ++ 3 files changed, 84 insertions(+) diff --git a/book/templates.rst b/book/templates.rst index 92e07339..2d783700 100644 --- a/book/templates.rst +++ b/book/templates.rst @@ -641,6 +641,12 @@ type: More details about blocks, such as the available parameters, can be found on the :doc:`reference <../reference/content-types/block>` page. +.. note:: + + If you want to use a block-type in multiple templates, you can define it as a + global block. More information about global blocks can be found in the + :ref:`templates-global-blocks` section. + Aligning Fields on the Grid --------------------------- @@ -885,6 +891,74 @@ You can also match multiple elements of different types. Use the wildcard +.. _templates-global-blocks: + +Using Global blocks +------------------- + +Global blocks define a set of properties that can be used as type inside of a block or any other property. This is +useful if you want to reuse a block type in multiple templates. + +To define a global block, you have to create a new XML file in the ``config/templates/blocks`` directory. The following +file is an example and defines a global block with the name ``text_block``: + +.. code-block:: xml + + + + +This block can be used in any other template by using the ```` or ```` element within the ``type`` +node and the ``ref`` attribute: + +.. code-block:: xml + + + + + + + Editor + Editor + + + + + Text Editor + Texteditor + + + + + + + Caching ------- diff --git a/reference/content-types/block.rst b/reference/content-types/block.rst index 2761cf68..38771f7f 100644 --- a/reference/content-types/block.rst +++ b/reference/content-types/block.rst @@ -115,6 +115,11 @@ editor as described in the description. +.. note:: + + If you want to use a block-type in multiple templates, you can use global blocks. See + :ref:`template properties ` for more information. + Twig ---- diff --git a/reference/content-types/image_map.rst b/reference/content-types/image_map.rst index 5c4a8e47..bf32b148 100644 --- a/reference/content-types/image_map.rst +++ b/reference/content-types/image_map.rst @@ -72,6 +72,11 @@ XML +.. note:: + + You can use global block-types also for the image_map content-type. See + :ref:`template properties ` for more information. + Twig ^^^^ From 7e7603f4809c70188b78d9ee7a9ea7bb47e6e1be Mon Sep 17 00:00:00 2001 From: Oliver Kossin Date: Thu, 25 Apr 2024 16:09:15 +0200 Subject: [PATCH 14/25] Extend Docs for Admin View Debug Command (#793) * Extend Docs for Admin View Debug Command * Update book/extend-admin.rst Co-authored-by: Prokyonn --------- Co-authored-by: Prokyonn --- book/extend-admin.rst | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/book/extend-admin.rst b/book/extend-admin.rst index e92a0401..f7d9bdb1 100644 --- a/book/extend-admin.rst +++ b/book/extend-admin.rst @@ -421,8 +421,14 @@ Finally the ``View`` object has to be added to the ``ViewCollection``, which is ``configureViews`` method. This has been implemented like this to allow other bundles to further manipulate views that have already been added by bundles registered previously. -After that an empty list should appear on ``/admin/#/events``. But if you add some data to the ``event`` table it -should be listed: +The debug command can be used to check whether your view has been created correctly. ``sulu:admin:debug-view`` + +.. code-block:: bash + + $ bin/adminconsole sulu:admin:debug-view | grep event + app.events_list sulu_admin.list /events + +After that, an empty list should appear on ``/admin/#/events``. Once you add data to the `event` table, the list will populate with the new information: .. figure:: ../img/extend-admin-list.jpg From 67a3c6a8f72b7163fbe5eef86dfeedfdbf73ebfe Mon Sep 17 00:00:00 2001 From: Prokyonn Date: Fri, 26 Apr 2024 14:10:02 +0200 Subject: [PATCH 15/25] Add reference bundle documentation (#795) * Add reference bundle docs * Add review suggestion * Add review suggestion --- bundles/index.rst | 1 + bundles/reference.rst | 68 +++++++++++++++++++++++++++++++++++++++ img/snippet-insights.png | Bin 0 -> 104903 bytes 3 files changed, 69 insertions(+) create mode 100644 bundles/reference.rst create mode 100644 img/snippet-insights.png diff --git a/bundles/index.rst b/bundles/index.rst index a2f3b84d..0e8a8415 100644 --- a/bundles/index.rst +++ b/bundles/index.rst @@ -23,6 +23,7 @@ documented the most important ones. page/index persistence preview/index + reference route/index search security/index diff --git a/bundles/reference.rst b/bundles/reference.rst new file mode 100644 index 00000000..0be97526 --- /dev/null +++ b/bundles/reference.rst @@ -0,0 +1,68 @@ +ReferenceBundle +=============== + +The ReferenceBundle is tasked with tracking references among entities within the application. +It enables developers and maintainers to quickly determine the relationships between entities and understand the manner +and location in which an entity is utilized. Presently, the ReferenceBundle is capable of monitoring the usage of Snippets and +Media within PHPCR entities such as `pages` and `snippets`. These references are managed distinctly for the draft +state within the `admin context` and the live state within the `website context`. + +| + +The main reason we need this bundle is that, unlike traditional database references, our content management system +operates on an unstructured data model. Therefore, we cannot rely solely on database references, which are usually preferred. +It is essential to note that the ReferenceBundle should only be used for unstructured data, where database relations are +not feasible. + +| + +Content maintainers are able to see the references to a specific entity in the `Insights` tab of an entity like `Snippet`. + +.. figure:: ../img/snippet-insights.png + :alt: Snippet References + + Snippet References + +Refresh references +------------------ + +The references are automatically updated upon saving an entity. You also have the option to manually update the +references by executing the `bin/console sulu:references:refresh` command. This command optionally accepts the + argument. When this argument is provided, only the references for the specified resource key will be refreshed. + +.. code-block:: bash + + bin/console sulu:references:refresh + + +.. note:: + + Please note that references are only refreshed for the current context. To refresh the references for both the + admin and website contexts, you will need to execute the command twice via the `bin/adminconsole` and the `bin/websiteconsole`. + +Integrating references for custom content-types +----------------------------------------------- + +To integrate the ReferenceBundle for custom content-types, you need to implement the `ReferenceContentTypeInterface` in your +content-type class. The interface requires you to implement the `getReferences` method. The method already receives the +`ReferenceCollector` which you can use to add references to the collector. + +| + +Example implementation for a custom content-type: + +.. code-block:: php + + public function getReferences(PropertyInterface $property, ReferenceCollectorInterface $referenceCollector, string $propertyPrefix = ''): void + { + $data = $property->getValue(); + if (!\is_array($data) || !isset($data['id'])) { + return; + } + + $referenceCollector->addReference( + CustomEntity::RESOURCE_KEY, + (string) $data['id'], + $propertyPrefix . $property->getName() + ); + } \ No newline at end of file diff --git a/img/snippet-insights.png b/img/snippet-insights.png new file mode 100644 index 0000000000000000000000000000000000000000..2889bb74ceaf8d2d99a139b3d4b6d785903fbd1d GIT binary patch literal 104903 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

-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 z zF()Z&*bJ5ewfS^CU=HOsW(@#$qp)$STMwp@nmU_0T9laB$^XT?4OHFJU5+L>NyKd3 zzk+AGFAv#=r0=wn*}VZqF}izG!&g!{xE|VyPftD0$z@k67}jip9JJvT0fPylL1sT{6hF)ePVZCpKEi|6R(q6WZwf*p;5Gv2rgNDlOk$WVk{2DFoE7EBqdnv^lz z2|%lop>XW|lH>~}D4d)7ScggXeNQ#GV0b{_Y@H*j(eYci2p0e6R_MTvWxi{x!Btd6 zH4W?Nc7JrOwJKN`>G+R*v=yk`_jA7+Sx* z=&D1;6_Vz*Ct*4ifN;UN?ZY*Dwpqn0hjIy>r6?@~#x zX3ZRsL^SMYd>Vc6M=7b&gpsm?KQla(9#%KbJNI}0Iu|A=@MlN>!1`DRW<0sxyViT6 z|JG#}G5_hw&XZK%h5&TE-B$0)9$&3b-ue7a?1XDQF6nJM_xdNRZb~)m7oL>d25Ru| z_)1@5z@M3fuyJrMDY?BUDb?7SUOb`;kW!y5##onj+nd_5JF`BLo!T5-iOuR>Ss}?; z6>zDF7O6SPgJL5RZO4piWMc&eq&W_bU+i={J+(h)^ zJ~3I9C0Ptk3LZdbb@|OSprlTxt%8^G7WJ2BTgmsR;(BU4GvpYH>8yJWp?U<=wM)(r z{pxWFY7W(#Ux}l{HYg(^&x7(l;VZOHbQ zogf2^XU;b-LE4Pk?(Peq$**|VMDD#CZ%$p>MxS!&2{24$TUwmxQ>>&x~SHS<^U!+6PQM+vYvppTLDI9^*hQDhH}mN?*r|^Xv{Dk zgP6Cz{f^X3ZvZvNNBqUi%nU_&z1W$8(4bTm0Df*C0NOM1pKmuBO?My0Jd5q%X(PDPEW$DumQzrtLBI$k=ScpMa#ve5;}naD6`VbB8obG zAbwC$H%#^EXYXW+fC37h0uwvY-D@TfJsGiy<1x&#F5H7z*@)n8V))XLkUcUYWrWDc{yksL>74UE?>D#KAK(8z=PxI>>%Ok* z^?E($nmwho$UI@M7nkm#MG|kO*trz(z z?*yDd?purij4>&h|C-(|n94o5Xx;D29+s9`5-xYz>BWta)a0aJ2c{ZZzC|!n&CTr+ z`V?eYIGkh)?jWH}*Il%tpr~B^BJNfJS4mO4 zT^->adF5r75+Wxil2b-)Mbn~d2`1Iu=GDgT9V>B&b+Vo7wok5PbT6_U2bZF$Wf|f{ zLc(#3Pq_dByilvO#VPpZW4G1C-emB^$5Kzc)z6L)&0u^@HHknls$}M~hD;)*9ua4m zRzJmm5Wz4L&$IquIxe6dPN(cL;4hS;;nKrryz(%1>CkC6c+yNUk;~*wh{VQ8PM;#i zq1s`8k>wfg)t+rJh>0kDL*7l1@MZDl-J9kBPd+^qA9%~bO=RD}ERyjTz-!CdI@7x{`#hRhMk;a@;TN4Fi{eS+ zW9npGZuzTLi^kW>9V?!e(iR`fYicCgdnG8wZDH7Vw&L#dUbk1%kJK4&fOouLm3ArX zTe0d#WpWLcEh$A(ePu^qeOE0>WvltT1UBh(XfHRAbLNDnCo*5teG2q=6ezZkVmkz& zB2BGvt=oaQ(nF z#Gve_zuK2BYKMu&$M@X{;PP!ALTEF=7d;O6D_or#?~F z3Qffiik?)$B5~#h_Ghno3zqAXDcaLMZs;bmz4kG7PS$?8c1~lvlyn0|G$&vF#0P$p zZ_)O3Q6G9(m<|-N(3F$!1qxg~1LdI#S>Qhj-@rg|FW_Ghus=5t_8yXy7pGLx^S%K5Je(;Z?U%zjic&W~emm+W;`yvW*l*K3Ir6NGz$D&Z zu-b*?XBE)?B8lklG_5YWuV(2B--8H;X&F#h=hi%{!dZ7#GmH*ms@Vc<@LRfOm>-SC zmFzs765hq{x#3xYOE*7x4k|5_LhL^bj3R~M!v4h{z=6TRN1pZF-Wiq^7RFv#tZG{H z&Qt1^oj9=tX`7+!yo{A8bpxt^#vyWrV|HxPWB z`lx=urj}2pqHkK;zWc(}{rmPKz}nPx;<2fP(JWnSi(rNX5zN&X$FHf+(oVkc41I5x zW!n(yr_fR=1i6TfmSM0oS3v5Zto%<3O_76u+j#I|i<^1aaPWo!awy z*W_Z8iZ9L+xYF7BZIDey6ZPB9bS(hpGYK&TqCIQjrYbRdGOu?edUoz*$vsoc6TAILc?sQp z#5S)cADz5OHeSiUmw|{qMB_NX?5;l|OoE)b@oNO_6A`&HCNd1P0pcsaraO#cLrnv4 z_mOu7Y45zBtF$b1%rQfCa)dTgg5D*BF4AAU9x4iRUf9n5#jbKuT}>gBNIs-j=HtZ~ zs-eMemokgXzLaPPzj`v#8+GBLX5zS-kpF>GIZsYg@-{{7(Y#)r9OH|7R7KwiFXe&t zz`M{}h%et^C8q(Q=?%MQimA8HU!qHyD?4=Mf!aFR5}**MJLUYsB|I==g!;lBQ+t#a zXEo+wSLj3vGIicJ-!hqJqaf1z5l`ch`+lG!^xYda5sU+GI z#r#!>wd|c-GHxNKAqV)%Td9TTM%}BJy+c}GY59C7`dKgTJ{;sAyb6Kd(Tq7m=Eg>Q z{!nS7Zz~IJrJ3zCuQ_B_N#w_!6Vub5t`z&$Qp_9$=E;Rf>v#L)K1g9c0!Q_N)`Vr8 z@Qdq^WRLy`L2StiTMkEGb6!3kd85~4^VTyCj8$_O(M*l#b;=63g9Kg$1qIZ{t{Ia8 z{DPgc(Q|HgruIZVnZmP!I(9QuAHZ;{k=H-Yd#itR0m86M_46W*x}raHJ3HP>)DDzD zrX4=}j-PnYWK!;Q;Uyp2vF!}D%6nzxi_%3-W4@0CZt;qE7qtwAV z^qBk7+{hPf$DHIaWRe;q(GOIH;o;PPC@JiF*DTwXWmx2?GHhmDRETRZGgMe^abBQ& z6mb*+xJD<9o#3EM!?rSuvmIwJ&--|G-n7D5en54lmjh8cB7rZ!9Wa~~igh8M4#(d5 zN9XHzDvvV7vINq+^1e%k$`QO*-z2mSE)i4vgsdPoWR~+mlX+d2$qJoVA!>cQC|m>F|L^Uex>Tc6yRc0)!R@6gHmcsPfLhUavH7V9v>)G zgJ3?#~6~uo7gLF!AX2HowO*9%ZY?8b0b- z+m%TaKTX>{^C~L7IM=Pbne44M`LQuKi0)JkRfkN5YpCjiU&a-wlNW|fq*qM+njGL( zZ9E1MBn{`NbK}{0YI18AD+20%r^VyNiZ7cWGYAD_W7ES-;p=+{+2)EHwcFC&ZN#7u zv-V^p4V>gR?s3YD7ti%rjsooR9(Mq$`f<1Z428^7By@Fmxm6>owoHt-&0*chr@8OG zTW@&}L0aS?VWoOsN#e5NVctW8EHmy2;(_v{j>B2%OMIA1I!;j)xTQ}Km12ws?lUF5 zxC>F*lcgZV@Wn>U89mpS;<%=>Y}PV{j2u?1$EgtLv^Xta*mwW}OIf}Y;Sc;xwwIN3 z?>}iAc|9~`HdLUpefqrK&0g+qyFw>f?+A&w((0;UR_-J-pIUC+)rGdx7Ggp$dERbD*J+j34@gI48OUenAV+fb?k<4{ zo2y^~2sbpNgWN6S52u_j>R9Q9r7t%2mhN>O&b3)@DKOMkY_5V8Z!t^83&~1+=L(l+ zyXKS(BvV33lpP?Fk<<9Z2+;A9I-lQR%;pc+`}r<+hglWTcRGuVwdQZ*WjV@_Q3%cY@H zZk0(ZE5$=8N(JjBhG(gbec9=02(~FO5w};%#S`5`O1G#x1Om#IK1lIP`lU8wFv}u>DrbG8#kBIBv!}9Q4LXrlF`cATG z=WEbjNFTrHH>{&i8oR3IJBmz62G_U8Q#EexP5Y>A=UR}sG7dHMniN5|@^B z0A$$69fn&;{lmmcuWMvIiQFkKzC2B1cd?#XCp-6HXaI4`ejcCe?a!{7)QiqNeevep z%Y&YGXO19$DLsSg9TiSW8v0DxOEx}w_eMPK#k2}22VQoaY2nVPEQ0gSd0d-=FpY@* zvkpXpu3Uu-uazmOTXe5MHA5Dhmt5*gl-DCN7FPz8xCavlFSSFVoV)e3)+1P?wH&LH zW-F;dWdKjc+&2lKT~k10$!ED&0q&-!i)&%%gcPUeF0Rp}46?QYiMr;rG+DXmZwl4P zG-GaZSs#yNC}+IPvw|}sckgJSu}N{R*9-e^vFq}SRTI7<9cYyA8~|jP>Xn>c+YAWh#^r!vhJO3Q$I#m@X&-a8V~hM{F`~ev`h3@PzX$T%{i+9K|FdQIm-k?c z!U$GK&QKLR%n+itbijgyjKBxpw`7T!X{tMaZ+X_?9zR=M3^BS2jHB@eg zUYV+VU<2c|FIB;b*IC-XK|RU}^~B`5l46`j@}PPd*81x5FW|W8PVT2~n?xbotEQ2h zQp#~`;guJ%>t!Ijh)9D)q039}mzLJQqq7fqrEb9}XiAh98Q#Bb!1}u$7xKq`!+Rp5 zqPUNaLMc)fxNZ7t1W~KxEC=Y^H10fBq^zPlFPosL3wA>`N}x! z#h>+0OUX(PMODlXB0p;rB~hglm6_A?4sN9$JY$~75Pd`*ic*NWpVq#J+C->VC%TX+ zQ{eUM!&7OK5N8~1TiSZS6y;;sFuIchA0&$%yssDYkw7Esd7?|^BGkwDGM>F5?dWTN z4n>#7z6)fvrQmiriS3o(>rf@dNRN+%A9B~ElUBSTh=T>mVKU8lE!Zpwm#?k+fl+h)eCBp+iD7gPbVs*d^KLD;!5=YZ)J+k~nGD&K&P6hfq`Zhip6janvO zgOXhWov(vFPW5f=>g^`1B-{tU!-=U(K)vRVG#?4wCAvbJ)cq?|F&D3GdnLz{ukMFk zsS>2xC)NWN?fVQw2u4cY-?p+Ms;A$gJyR$&DcN{(s#p>y)Gk#pO(DrU)WG!1d}kN> z>caQO<)Oc{Bj7^|>T)8|rBF$q8UCad(@ZiaODCg@aUrkvG-u&uzHQACFS|r5MNtPl z!^q_xDa`BSShvXTu8GoBw_8@?u+KUs6kL)~d({@Y60<%xk-6vdk`z;@wXS5)SYYrY zO-nvMbUrcI`ZMs_ls+aGNztOx)DfuL-!g#`ixTi@&1a)%x6)WMR+e%L^*9(@&j!V? z>sbBymk+0UNao5CuEg4`cbtlewDkLq67$m#C>r@c*9uSc}yy8hpV#|ce=ZUC}wx2hx zXBpzXB-jp4Px|h3T#w>GS^}Igx6pn~S2FuGgT&ZGfqlzqzA(VKcy4$F)z&j|s=25- zDwv$frtPR7^P0Cmvu!xD{hB7@LVPThU1s?H-Qr6>d~-yko}Eds3&ezj^K^USoKfg| zj&&7IH_soOVjdZp!^g>OX&zHtWgpJ8PR)8rDTW zcray9ApPDtKDt>JN3qQj2Cn+4iM}j@qI>i;WuIjGf%8k5#FpP48O0nKcmvxcvH(ui zQ$N%h$TC$fuI!sbifD*$dd>4Ql0@wjWu^lMW-R(c2C%??gd3XWhxA0_OB_3WB z9X;w{`kH93JnHe#QVVj9-MVE7v0L;^_pNneH{O?ok?#T-b?>v2vnroq2D^TaVHGyG zky5^l)BKBX`aeX7 zVS6tgPDkNi&!VHEOV}p$&i5?WFH!FSAxlk-*Iu1V zX{D~U5SBDR;b@u6o2oRE}+LP)@7AO$-_uav+#0@j9)Ab)>$0p65 zxudV9ruN`WTx_|(AA?hfQ_G;4-H1eFbzmcXC*A2KK`&sct_7Bpc$ntZy3=HELa3AP zvz72S515ye02v6*lguL>AhSuxE>D`Wo~I~dqB359_4S)9kN*ucA4)F+YZeQDqKO1l zQBHdS(vyu4?(1qjU$0m|LS})LfFR4%((+&@Y384UI)@&XL2+zN-wLT9`1Rd^;8pvE zM66WwdedKsvoKBV*#`HZo_C(s>-8e@tK(}cp}Z3dLW4XR(3mqR_n|ZiIQ8`$sO_9_ zf@951K=mXV1u)%EtuldRE#LSe!#W$tql}5tn3I~+^NZ@0Kj*n9TVbKOm*5}@SOf;a ze3UUj%M4~EdkYJ$*RG7?QRbk%CwaN-cV7AM2=D0A+$2=W7X`o@XW07FN-+7DCRm^t zX$}(gl%(uGL9QV?%Wahru*?Z{k=sxknid2r5%4e(nM)Kq4SHW*pOT?Y!tc*0F1AzI z*uo;C{p#=Cu&Q232samc)&x3a+In7;gfvq@<+gPoF-0R@}c%;PFrAkWaxu zeXrusJqaF;7W||ZTect~4%>pJ^~~cx9s|QeNIG^H%0la&_P;-j(;@ImX{RQi>A!Gn zo%8s2b)160t15=c^L7+|NOejwMh>>S=%|Je-pgW`XgcMV&ftFs6e&>{+DCeR-i7mN z_;KaNd#ebj{VG^CLm=xWB&B@3`3rNDPw%#{u;BeGH(mb+JF2QA#1^(J;aY!d{z#hspmsDI z&H1-N*Qp2nb2U4ONGtUD-sAdo{@x>hZ>`^7|Hr?Ka4H*HS}MX@n=zN{-r(#1_*EIj zUS2D2j<(-g02Oa3O1EAS`{%d+ueUQqj+Ky~fQ4Mawc?#dMOR4R1?ZLjMEviYaOAME zv6fQ$3k418M%JKKIoA`;5j-So=;i}kNfvvyL9SJj>qtK$c< zQy80=nZ>WS+5YiuDe0KF)KpFZA)&T>%1vx)$;&w9BeX!6kX&TDF@tZP;(7=)JtT_v ztE`so@xf8!@hK1G$|458JcunCE1)LzqHYr5@Vt!6&lf;$$rb#x3BdJou9J-icD1Zi zrC-|~bPWW2irtNk50W0=tmbb~S4;f*_3PGd-RN|GOcRu;J3ZC>&fk%>z--s&ftu;H z1qggqi?}y_7P@l;2$2a2Qrdp@*KX{jUL(PI&PfK;?ttPd&0}5%aea-AMo8k~i2Bcr z(ly=BRzQE>FKKCJw*QmHsXJLmlWcvUdHzr5_wSp*V!8CL*x=lb=Z|SDHXrnY&hw8Q z<#`MPm4S>dd%ybqV@3b9ZQx3Dwgm44w|C13eXRS7& zt73c(j0cdJ>8Em=Oz@fZ23`W59CrR%qr~`sztMkN65LfH(hna#oG13WyS!w((O}lK zb>hE+2|EKPCzV+^{UN?P=2z3moYS8oxt?3w}O2~gS>c>gYhSF<$8SK8ithwLJ55Y0oiC5 zuU$PQ921w3p+M~AG@OQCoTG{`hw~t*7r}b<%YT?SOgBt5p&~_A!p;m+fp<~1{LVPo zHWymKxtC7` zn4>`677ZGIyn}9THPkUdvA}KxXk+BIamHOnxonbtz#uxEln1ZyHoCAAbO^yQ`Vj*J5d`%v{T(GYi0r1GY=F`e!c@0 zc*YCr(7d-v24st9eqNrs`SXo-rXG%jKcD;sEvx5kCNJz%aB~4;yi8!Gh1bKE1!{_? z4lg6Qb+fGETf!4XKNm8Dkk`bXR?j00iVrKzq#t;2ITZb#ULa2FQ0-9WMl$S1QuhB~YY<|J2V12rxF$b2C^(?=- zyIp}j!C3Z=HRni3T!;~QiHb%>-9-R`X+r(mrlYZd&K-uH#Kg0@t8ecnLQhsG0~l2% zz|k1}5fNklJu}92wu2oBc#5W0^KDbsTlzIQ46_g9pxtYUMCTfzd#l@|qk~}Xz)Q%; zQ|$zXR})O)2rB5l)fHKg_(x9tkF)pBQ=d;;brV|?qil9@rbV(3q!#V{?o+_MSqu6w zz9vPyHM7=cKwt)6ymZw|ar89gy~5pXQ4G;7KLG`t1lrp?``gDATmzzu2oQ`a65wJ@ zD4!JrWWDN^Glb0tKvCNyH8D&URf!dZ=b=p;HsX8BpwJtPVWZ%NY-Hjbj9iRpTztsq zZ7&BF1g8o0c?GMXrWb~~5Y$_VK=3orNdU8mO3F};y3SGrujOd*%EG8NF^9aZs=pBM z6dN4~5N7I@(%Jf6=xf*_LGR=2_xB4O-6=eL1jFoR&&oSku~%0f^_*y{D6re3LrHE| z$;mTLzTVDgm`<61vi+~GWGAdk5&o^i8blEFBCSg1g_ldDw4s}HPEDRqIud#bvUXAp z6)7t5IW~Ji)Uk2aCGMC7RGHPMg-V=1)B#5drS1?S4G)Iv)*Vl+MW?Xt z)Hivkds>w^Kbh;%k|9FylrYKxD4{5*DT&(og{UGdo!`nvkx%hnW8Y*KKs{*p0lG*I zdL_RmQHd?ukUS69-5qyC;NoVM3IqnNWR$0FIe0Lf;!^wzsuv7UG8X>WD`+*?f zOXk}Gk|Y7Ja}qCub|Tq_a)GK!7!vuP&pSd?HMKI3yhw4Sg#C2D@ez#|xSmCEYF`CLaaj-+n*L>qx|MS%R>soXIp~ zNtFD^P>Ma}{bv9?G4f2~i`cIeB=h4n>bmSIdxsl^vRV^DPtubGB)79VFuPai8S1bU zyNP5+htr)4m;nOQ@m~Iqix)JsLm6_RP9HjZp^ZwZp_0i|q#GK`FMrMsh$fNyBp0x@ ze}+{uN{t!us^Xqqj6tAi*jgnKO1-7F zl%V~r>IA5JxlwH%q~$k^CM7rlACv1gRsZ9vA!t&uCm_rJ#MLo6n39=zb>J1%BiSiV zkAAV*nuLN$C|+ONN{yHZ@E1>3h71U|Uja+*Xp=ZM)CLsS2Z;NqS}J?GYcC6x^t^q+ zu~ua5JHh%lf{i?_azi4IM)L?lCh`MxAWX<&z1anjf8w?iXvT~L#HfzFez}{u;TQp5 z6`f~j@I_bH;kBJtpx2w@;Tb{89CIt6`A5qj^dHXg1r=6vr6)k&iwC*DL`jxt*M!Ev z=3l{fOvl;F^-K=zS4x{pkP0eCO?pwDRe-M)=_?D@1$y|=Ro$Ox1E5)#N$4cCOA#86 zWINkogu2q4V*m@MsjMtO$a_sFYj~3X&#clZjlNO0HxVZn#^x^9oGUpxM@i zx`)zHh>~=xbZ|eKMw17IKM`R~IB(0dNMZ;D%0+3ma#H@F*e4mLWt#fkcLi#ohRN?l zO969jR5PDPVcmmTGt_5@Rr=k0oH+>$pLDHGv_dV@l5#GMwb$p zO35O3hAbs4obK5gCIScwj}!sV!w*II(1|)?OK!pGtJi=MEep+_>$7?DaEe3G&>KH3 zguSG;X_GnYDRNq(Vr%gwP0+&4HDT%JT&OCe&}6EXlb@jI9YB5jonJV5jb4@z@bS6< z(#1%rRVFFGVes&6eU=x8jzPzA&RmCOs1GdM2MsksZgW6fbU3-x@mWa9vr{xNNcnyz zbp#gp=#Np|RpG9fRbNaDpk@y1en|2|@QR!nhh9JmsS?ge`QAFcQyDZRe`Quo@9h2c zPAF$WF6MmPMGGm$Co6z0I!2r8ai3%XysJ^p%&&15I98g(!R-`kg;EqUI{l~JhvK}y zrfVu!f~(Wknn<@Z9f!EBEy`<(d@@f9X)HEj4wv>j z)hn}>cl=HA4d;@6Z?m~z$+I)}0`atW~$=0Rzd`6q)g(S$4+3xG^}kQ8Z}W?nbv zpjBLS1ds;95Qfw@zN*xNO)(%50v?vPS3P{rp-`0gHbiQz2=ADLCeN9%$2<$LUEm{$ zO8y+%yt|x#3tys?;r(CW_O3*#vNV1~VTK6|!BRx5@&v(wC3=!0rAt#CRI7Z(Iyx-e z5&(cF9o$D#Jy&saX0l~5y{#s26&mJf$dt0{Ig@1|z@3ArSTT4(9x+)yt$UId9wHh=}+;VDpmF>Tm$!s?Q`*%T4u&=ccAQ{gg{bZN5xgYe#?UP z)lGP`i_=_6h|ZF$VV*T3E6uB;3D2b=Q0SU|1$+dZn{aHZachh)UAV@6BP4gilz25xf+%PVEVDd`3k z`S?Z^+K0Zv=G)eH&Sg@lTp@3$|8~oss$_eF}p#u|Rw?w=omJ2~e0OK8Ij8*E^Juud2NcBk;0@?NXl_ z5!4*XmG@h;fi!veJ$tPDv65fQf+kd7F|G5KjuL-sEnX388cg?2m3LbxV zWsa}?72>14-X5(z8^LFwYN+Ld^PuAhI1cbNqlrPAcBB0xKiG*Q4AOif+*oqkis@f!4iO7zzP|V5ob(uprBBP;lt*K$<>RUnLi8n`V1ck5L*~J z@=7NAQtf!R!=6=mpkvX%pV%25X7CxnN>w@L>gJE{gr2&u3rGv8*Pns{?a{j#;G zd!EY2zSRt=i{21`ig#$q&rvj$+S=8(y%GN2e?oK!Ob&90XcnQ-m<+G1OYf+tm%PmG z^$^FfP3SeDH0D|Tq@jxObKjVAj3{%xY(q!r*F`k(tC5+HcmE)$g2)fN^XImhFlTm; zTm&~X`aS6Aa~WDMx{v^qgZ(s04ORep){aptwt>!OM-n8grA`_qqK)+vAT-etvM1Pb z3{@{$Q?6$y{+LP?g!JLDY8i%~U%wmxgf2frJMY&rQtGK{mjEpHNL8Yf zv;8OlP-eEdU!;N37uHOJ)?X})q7X$g!H7G_ z7)bijih9QlI|zi~8L#4(v#fAz~Wmw3JiLJ0=Cb*gmilFno&T#92di z2f%VQB1%Db*5v$bk~wIK3`5!E!}!2SC@a*}ls#EnkG+ z(_{QLNM6nOCmX%NLPG0kv*~7Y&=&gV0eHdA#S^_u$#3 z?8xfQdPsyI>3z8!jN2Xs&x#S7urhrHGg1p?BX10X9*tY(WVEe@jW?*qX*aEQsx_5;-qQ^{(g!s;8fJskWshBZ`QbmV{S&_`@ z)Sj(7_M1OD0?@Wh;$Bawb57R`M@qbM|GbO0)7i-IXN!t%S&;pb+! zQMPp$HbpG~9ShS}fJiM$MaMwsz~0%~eU~mo9PnU`b0u@d)MIBIfpDIyQK0H6zWnj5 zO!s3T{x_}VTM+#uL3VOD>Bg`refaroH!vA$MZ#Q2+U7&D)o=nwei`Z*ywPBjG#lQi%JGDP zYEbsl^!N9(Xrk**RR;i50%$nj~6%}=dyHbK>(xPqWHEm9@ zZB~&<9BM-I9#v>4Ux1#d%0gqS6iuhH8urCEr0t*@&DZhEWzV=RVCLwoD|T$a9@vEk#tx?&%GmS_z$)cz+WeZgG|-DVNIl ziQwQTMdfzVWhya1%xSy4HpV4ge8uAFQAo#){K)oE-gvS>D{fi`mnvG}z}KiD!$t%> zjr#{hoqlMmGiGr#b_Ft=7UaomkkG!q%Mo&F)fW|1-;pQ+A2||c2qru9kzyw*ol|nKB-ARo!_6^JeAqm-8Y#2mX^HmCyymaC^ZTxhE zs6dj3=)asv5iI`uPO!a7fRSm3fLVHz_ezY}e-)(vxdHTikn)Cvh(A#Ed3lLgc&~cy z5Vf z!Dgtd8rh++-l*9)fU6_m0YrhFr3Btitw)*i zUJiZ%0n{sv8}D1#z!U%ROju!3)bat*=zuqA_@NuBw74?-uoxy~CB#?a`>-k1(r^qj z7f>FG9X7EZcQDL3kVN!d-*9iPIm8jphQ`iLt@?!){Ovl5b6&H1HYHm+!WJaW2Gp8O z0$rfvs-I1=Ie^3;oSjWxn3S(r^77^Vn?wCT?+p}2qq6+)Z--l0+77Bu+t=BNe@7aa z;@^E%rxWRT2QUCE5TF!lYE2Cn*U$z-*fPk4K6%C;IId0z(Pd)X&D6|?>!uOPR9FcG zQ_ZU$^SSU}@4% z-Pa#0p}ZFh2SW`Ivzc;(T=+p(ARUU31)9{K$TqP_h`<0j3F0g_u_|%J38>7sPB-u$ z-_sz=`~_yZSXV$A)*3IDY-3A_qhGjHPkpaEbo~TL4s`uO9yNHyrk9zOeTEqTL&MnIi8qpv)IeA{ zwW7_~`(i>;h}2;1c6h`o{nM^ATa4<^w97Oynm$z*K zV@pB}N_}cJHYav$Vo?AW3vD7DW@21+st{Uz6}t;(9P&g zubqxD_mNf){NW5}o5ONYZ^lf}{0^H71)t#G$a=;*{|K9}8ut?Z<~gjtlbSCx?Nm;& zXC1-2GYR43{huY?O7MS{_|M(+f0p=f1NMKG_}?bx|19zUQ%futr+f~o7{~buL3=x& zA1bp*L>7rak`;d6XDwb2kR}rlgpoz6zX0d;*c^u#_&<@g2|$i>Rkap zBj5S&ZxgGLy>_Xe$as{2hs$x>>PEY;hRakyQcOAcxS16w%M#rwayhg|n?&{DEd5S|F(m zG=L82q8fGU0D7be9=L@g92dJm6tn9{!^an&etdqbCMPGiP4~iBp%~!_>IPm+v?1wCjMC?cWX32u|J6FpG-h40#XO-<9M$h3@HIeh&G z-NhCZSn~nKe}bU=E&AgFH(i$_^hG9sw5W&(fX8FnG%DT+XSw8AGMnpqwVKU^nE> zP5^Y(>RC{Tl00l9aZ37%%@ya6PfuJ*ul;SI{`+m^Q&d$xxjXXWitaA|Z!;G%`RZ$c zuO*!;!vD3h%{2?Dy?n<(EjV-0bNevmeEv6D&*|gZwCktoWroyn#i{Jn_wAu~&4h(& zcI_W0uzgYaCs;qQn0~wrfp}aGLdE;-Oz}mAx-8M>DHn>@6+%Qe9kla{feLhR>V+I9 z;xLwB`)7afdkf$&%t`jZ2r?_n9KESTI8|Tp^5si*Z}Mt`DYJSW;z8*`j`g1%`<^Q( zP#R#n@~v+C`U5XDE!%zCaP^{pQpJoe1^hYMb%XE>IL0ibiB>o2@PE_^^7-kx;~dim zYJ>lK8UFPzn2A5hV#VT3`~LO2|A@Q)xHs%UQfeoM$8R^d)8D^xrCsAYdP>ADKR)-r z6WxD&-!u@NK7CqR&9-OkvsP~-@W{G&Ji6hvt$~^+^K^h@R-6~TlZ`QRp0XrCoOgqq zhq7cAvmVJ|TZy3^#f0+S?QwJZa!xi!bwoA8%;jb~8^_&Ct%}pTADy;Y)vm9Dp}g#{ zdHpLA*fx>Z+bUpuy)$1vT94cRca}1A2g6x?nq#tI2j4^d^_yr~W5kKGZX&s#UiR$j z+s3}vo=q^DJ*o#FB-7AzOwhdk=jpifzB3-_3ani@r!RfitRKR~)F2uJ4M=4N+R?+PJ(ztqiCby><39OaN-8Ia%~ zjhC*jh>U`s*kfA2Fcrl`ftd3e&-VnE2x##jLwpXjDor~9xUIIjvivHC{P_6HXxlMYP-_{myJDSrbfJ~RmK}SSM3GL+#lc>SeYDY&5C+Y=C&DcYh2Lxk zyJ~aFyER=Llv|V6&_*E3lge-0fI|SSFT+NWCP}Rioi-w%;l2_AY&tRz5N2(kUhH}y zNJLM+f4`cmtE->0KgNg<0dx-B;H{umOF$@C1%Vdz_-I!cBVD7SgcCqEf5g5)+Vne9yWH2*R71GgUeVd5-Q``55RH0?5vs zr8y9Yh(Z1sNXU=tODl-VWltN@uiBo#-u)HyZu=G12F*2}$0>LhkZLV-o>bMY^&ppT z0$sQBfuggQoIrSHYGBH2e0^_2NYeZSL&*LZP<8QSuCV9|2&2BHGDOInXNl$(EPya- zOpN==ye&ZYpSy7`1FBL9-v4tZuVD41j|_x2eZ9w@v9!j0+aX2WibN^mbA@wf)3ZvP zb}ReLvtBy0(YRUV8iL?c%$Qvz?FH zPn!P268+a6G}Xqr)CtxVOKW-qcZ2(3`A=Yt%v*7YZcSodg3gl_`Qy0B>0zBFANwWPVZ`O}qP`p*tD9NYJX2;GPt6ZyIb zsGKIiqIY#@Dr{7d!f_EH(T3^CO2%aL=0heccC0$^SdK+61v>WU4;ftPLT3}9Kx{#9 z{1(?aW&(Qsn26^ZSvmuS^k1_iuwi@1Z&RoJ=+5X1(vPR+d6Hb%$if?^&Xsug?%m8< z%MFR|7g!sfTlI>Bp%^cL4;@5kk{WW#3IH90dl+Uhm^+Hb+-uX11SraJFaeG{Srwi) zV_8Kze8mL;abpX8|F0gNAggp3VS(eLUmbXi^r({}G*}yAFp{SZpL0Iu6o8Q-2;Lf( znVG3ZsWw=`5?u>>DcospJbGkwv_|RGMwJ8QhXg8-SJ5s7g?H7XT@>Fwv;5G5!0N+6 zuvH39Acb;s$E*WOb?PzT^UUW@@q2D3uNyqr&+?gMkB?YoVudisOVAq7Bs2)0Wd7>w zC_pf_gTLIHRV)EQ0;>tTdP-vrJ-{w}NY&Igpz073rZVO=tO~l)8J9lD+^Nm1w9)Y% z0_-`G0lMsL0S#~^U`!}F9~=B>i=_Ddx_((&cv9a2#9H(00o{KDj|~4+9U^n)t!1L#t5PMG{Bb<5J=|(K#dI^_YiJ$qS7?=h8p6A zK^mxTaNoOcCkGDvV7YhX!NTeD33DbYeM zE&+LQam+}$Z5Tks3J9#F1van=aGed~--ZF)s{q6;GbFqBldJr$?1si=lzDiB#+h-A8*dy2G9Crc>nF&HG}kVQ_H3uuqypVL@3o0J zNZSUfWSo-aYAlpLJ(kDGQo@p70|3D&G2nSn?|(yb@dcQF)r8Ps>8nMhhlLNV-&Gj8 zNFkp98I9(QdcgkB>ERPiFeV5tbj>QMr4-|OQ)HU&{l9% zd5yB%iI8UrAeFOu#Dm(QN+(@IwZXdO9|Gb}aJEZT5HrtPG&BKF{bM25VcZKMb0i>_ zi>Pj;2OrgGpgBm8vLzzzdTkI<9tN=^(?`$kCwff!%CG|ho)RyAo-8f;cy@p2s;v@E zjbN9*zkhV(>vF>`o=+#cr+Sc|>lNHBI zKvjK)6!Di(;@LUcYO}#J5T@xc<%G!Gka&C|3L=3f;9P{GX)#yCToGa$?d-^#)tqXj zZp%3p5TE_D*+xuO)dTK27udJpfp@>qbG zfc7g`QkT~^PL_L>9V_}F;l`8XTL6M?i3pL5Xk0Lo?vs(*M{&YJUrc}^N4Vn<+o+*{ zsT9*~Y7l4BBIJ}h6uuFU8-?aAoDCFjQRl7hUmrNZfT1qr9P z;aiW?b#-HFgvwouXrH&%SMc*$)KX8(&OxF& zbZbK4Lx%E1PqCS0E%8S2CGbYID2*v1l)0_)tv7NXC?v-EvMc*7911?OVa)WWkx`dr zGEz=SPfu50UD!lF^-wC63&}r2|Nm*Luzov3pknfnjFiT{V9WYR@1ITGCW6F;g@xwk zX7wf#;*DaPKQcu1i;#L%FRUwl`gd@~K`5)zbH;ajED^qYz~CMbAQ%v}kpBjL@y}l= zb7EE1)Zpnt8(Z)zM(ta!z+!X0uczcUYM$b32nKCX zonhkB{UpU}xjD=aMrb&C22^YI>lD9z+8wL_L>=yxObot%iUYE#)EeP!ZEd+Js@M|O#jnAlAS!%8_zfR;V*Snj>DNbQ zjYHaC8nA~Py>Lx4ON-NoZ-DVgL{Q`U6MAJHc|%X`CG`|LYiK(La%dihkdE3!ulf-c zBwi(GjG%pWP5B0IpRkanp~vwh@=OB!{I-d&(xTYwo9BztoQ*0iF{d!hZ2qd` zT6Q}>ISlv@gAif*_?d!z+EQ9*f}Tap%tqK1Z1s-je#e)Yroypp7hcAk((Q&U?jb8x zf3;1<0ueZajA<~vNk|Y3CiTgHT}w?P)^0v>9?^A2x}ID435!2yov;p6uCm z@958+iCZAN=^-(*tHuZarN<8`b7}bJ*ksdEm zEa7IX4T@z#zw7qmdo-};>Reizn^Vh&J@5!uE?MDXx3M!pk4H@aLBY$H`!<8I&_~`^ zxj#<7L>NEXgcPe9VsC6}dV3?&_GhgxB?5DFlF3tIlXtu;hyB-qzs>u9*MI)_mrz=c zmbNxf!s7by)E(biD0jj9R|(jh7Tk2Ac(;VI3RYFxx$P9*4`Of>93U_RH{n8ye^1Ji zhCt#96*{%U;c-^@ZW)7nM-<|aGD+_786QdqyMtNTZ)&%!h&+jD&3f3f_qr}i?wh-52)CR4ZrN2u({O=Hh+p9ZcOH8ec8~0A7XCx$f#IUzS=p2%VFV^Xe)Hz?0P1RxZ3gxXyO)riV^Wz7pSBH<7rbRRYb*HGWKtrL%l4{wJ7R}eWH}!b0FpJLh_l+FTqY0Gtkf14jd3S@1 zJBTRka+-UmQCn={wR@miO+=sO>~MB3!EJmmekhY5P-OB-q^Vz&>O{|ps)PpZ-h|0K zoy5YzLTaH5VWKBbJ!^Ng%=ggKY_K9&Q_2^k*vdwRIT2N!w|oJ+A(84lGk&ytY?+<)klU1Tw5r1Oi6Q3r{Br9s%!V@GX z5+a*8a`4)&K+E=Lp9MsmB=Hy(>^O^ZIa^5MkI#zw_TfV1PJeCib$-B_Qga9h3MN7N zX?h@vZzF}hKTc7%6b>~~Mn*;o-;Z3{wb2$?I}SK{l>M0=h}g`vWgrzF5=%Ewz<;#h zzAJFhVoJ9*f4812@ZVRlrGk<}+^^)QrvV%G@&2&OX(~8W_Mor4Cjajv{a;%KBeaJD z(ma&ETjt4L#3ObHmrD^`^T0r%>Fl{UfVa`wEeGzzHtRx;ApTp)-x1;$_N3NxgJbo( zT9Fch;S>g2pjxzvqK5>I8lkd(T*Yrlxi}jd+S@O^UzynqjVAF)#imf%G*nf=J7h)F zYc(qIzXj%?ZPZYExw_7d|K|#Fu_^oY5gtCs^)(%TfC2HWw4--Y5*r=fd)R{Y+wo-& zfU-Av#|=!*x9hk5^UnU>y8n0#WfQC_bW}kAys;L4c#+QoAz3r*&4Sw>@jFWz8jcHj z_R;u1NC@c-M34{8yf(s5?Mg|&K%6B8aq@+m`!*39nqGm*7X9iLI=rH`5fJ2XOyJ7j z-oX{%r8OzP`hQ*9+FbC$A{ZBP7p87y6Af)bcvjie++2QUX6DfU+zh`@@*igsat27Y zlEKIM@nG;Dk}Y5kx8jcuQBe?b!^3-Vn~4rNNx&YT|Hpp)&s+Ta)NrwZXQN(KH{ZI6 zY?_20LO2!tmWM=L9jC6L5e@+tcOk_lHgf)2g+(!kqj}c5YzSYPg-IlW0!!lFCwTK| z46cAkR$5NwE2=(Yl=ejEPrYx)f_N3S- zhFL*)_)s)`_2mh&^D6q+Q!CseE^1o8x2>yaOFmY*;PiAc!YH$&Q6W4w@}OgXN8aS@ zV&IGm+aU~YiXgXM*v8a2rM_$M-MggfV-0&qeB5sHTPWm z+l2yL4gW4LV@UWza@os$CHyh=RF@pEB_@j*g6B?~&p+I)G3H&tZ_WK&EucqS+wrZ% z@SB>|$QXC%MK_IebKIDGB$HIJSM!;gT!j6wf8$(a2xPm8edl5zbk*-e7y3B^@P;la z&ab7hUs#9b=;X(att0=-uIx23GRw-!+TT0Y$|+eSacabB$zTlZW=0Lz>^vaY5cIG> zX;bPfVVkrkWcD#w#UNar4!N}&rJ9sjPBq4{{UNMHnaMH2L%Oa5n%~=IlL9uMxG|~Vc+{70%v^JHz zC0PDaRVfpizG0nbxrN|GRK=51sPNtnqvHFW%8T*j((hK%*zBLf?rre)&`ve##@gVDw5-H{47{K5V_#7x_3hV;sJp%^=S!uK?Hd6k`@p$P4T}cf(N*whZP*0H4#L3o-z_Ee#8dO!c0W^qHv z=>EV<(owkssQ5)DiL>5mm1OMwCrloB|3?Qj|I;;AYcHk=pX5)&eFiB>!3-QCCH1hw z?qu}38F&Wyh(>F|DMS-4MrRTY#uWw?7|?%WM`8SkiDb8dKkPkMqBW$FvKk?u1u9-S z(;7LpJ37CfyY>1V{P1cd_{`G=#m#v41CnFPll)SW{GqF3>byOSX0l!snjbVX>C%>P zbL}**;LU6&FXORsqh5+WUa5MrLc|oLIZBL(yG*KFbO^DPcr) z3DM?i{E-o)}W4F-6rZIo8IrmZ)d zJEnVzywT})sz{|%Be5SV9SzWKtLM~Lc4!%AAB>yu3pFYtWoLklGqI$87ZcYUPiu<- z7=IZ|EY{kXh1JkS(Q#&uzwWMVR%E}Qzuxkh6!0Xw6(Xw~7nivWxjQV~hw$p(UlD`E z_tz~RyDwd+$q4{MJ&YDQdX{63J=#d5{0jkX2Q@hgroIoZif`h+h!)F)F0of)Y3+vQ z-@3$H4jajOK*YYVceb}rblhRxX5x>AM3ZJgSSMYp_fo`t^{{d=x=IcBu~K$$gn$T7 zENMgeQTkYM#X`8x!g}um%p`wt`Ex&7J@2pk`K6TMp|gjfpu2_j@o4lJfz}3a1|(I-A??a^~KXnBnP@Bvjg^&s6st z^t5#q7J?di;*qyRZjU*w6icYFmf#jD=lla)i?Nbx*dINmIq?1l(HTN>=fQ^s5-}6E znZjgl6_jExhoPAdo8ddfMB2UwWZCY|<~js~6PXffw8Q4gEw$toJeDN8V)Qi9up;^< zo@I9-$hy66jk1S*`^^gJ8W2fb`M&0m7lH}VYaO?lK6bdawHDI$0iXb!xG7Y&df$f? zyUUxtq!CzF42Dh!$05{|Nz|w&%l_xg1ExN+E_R2ZmwZV=7+Z0~TJv7^5!kUNRh{@M z)BU)NI+sp?c-`sV&Y80$+{i|% zT9W3drh&u$2tnREecP)8IS2cDiJ&+t!Uf?x@vAgUfYv__zl*HU5X zV2n5046)mivhC|gOcPd%g+^SYEnO8e66A@?@!$-at?2!%J*6Q(e|A~QCRqv;J?oEy`P>LOPq^LmBxZ*X33YIL zS<)2M`XOGRUrv~?9B7KRU0Rmm=%jA9N%VQosNgLkkM7hmcbb}Yl?Bwu59vc0*2hf` zasI;xfXxF8a-Qb(q+h&x`1Bd)@B_Fx(SMIG@x)Ekr~pVt-_&l+{nwfbW6&$(ylp6J zoOA8c*8Fu8gI%?uO)nx)EJEg0Osom$(`9&ufR=g>(?J$b@#>3?wAd{n+FNb1E|+{J zcG}%l=&vwu=s1h@-8Kaaja6kavG~0tnzhweIh(SW?|UFMS5`7YYmn@^DgFdK`TWbg z@-JCj?hympx+2c}I6Ov>6fTOJyNE7EY!DMXr|pCH55|$pbDuf|E1$cFO4vW$E`!?? z8}u#ET)#*yk_8N<#`6f32_OwR*y;_W4-!rdPrLOc(dj-4>{l;sOk2LC#iU%Ff9P20 zynEDej9+leSoUwTjZENP8W32<%kb72NeF%eWmSWWuZoPSD=C_dQj+miaI+1<@vj0;Dob_<< z7yEcx>X@O^yZ!VQP>y@+*qAiuU8E8~iJ)1Q$ zqpiQXmIAZII-t4h=dnJIRW-TcZ(F8tXXdV6UX$mf=#0w~E7e_veM?9N;ubh*KqlTuxZKLj6FuS;pW+1 zvu?4blX)^TD%S(1!G3cC@H82xG;R5ZA0qoJ&1t7^kun;0$Nb>(FyaGwI~H`uhtIY1 zwg9TvNM?>gm)p5N8m*+f#d{Hfnt^zjK)YpiZ^j#^ykdXKmLGXa)P?(AiL@PJJ_9Gv z7IZioR!D1XzIF*M`x;Gkq&Uba0u`2%na_S@5$fzgE`{Nsb+S#2$uub53;^jwrN zZ`P_E`Zee&UvKg=FLKpX_iS_{O<9oStRXkeK8)=HuC#nk3#YjY@k3U2zdseum8DaW`>{u| zS3OYC>5SkkgeW^GX*V*-)bWhlTd=&P4eMzI2|F)6#Qh0dibdWdRZAV^6W}*x*an@k zym*^!_aAG_d1C#rZ`QLDAgQJ^)zgh;);4{FsyTOiIQIx5jWg^M0_VZA^)y z48-q;l+-zRgaU$#+Hl&O^5LWKrOgK1*pb(Mi%M!*x*zPYN&b87B`JWkd9-1dy>dmV zV`Ur^hg`@U$LN=p3XFQ`DQzI;&I3cc{ihC@>JUI}- zU;Zm4;MYB#CfQu4S5}v08V_lYx~5KrH6K^Nf&BR1Ffi$B!&;J--jLh*H1~I%-#1KA zco^W?(e`Qh<|fDUMw0e^M`W<-$;tZIQj^50+HY0UC9tECy`OQou>m3I>YJmZY6bWC zkY;m|C&)}+P_IxcDD*jJEkWCDre${yhYIMq1_LPPZ~Yu= zp((Qg@?$&s+Z>TA+Y(;WRfvc~f)5WBZ|g()qMcT_$l@9^;a8&&y6raQcP z@22@cl`JP6k+7*QrR+~xd64QC5oN|Yt{^P~mCR%pg4P(-bY61lm?8D@%FMSqZ!me} zXT?0su7j<1CmX?Hf+hQ*t5a;}p9_DwJ4{K;4^_~_;j{aJ6jgq7PvK;as+4O@QuszCnHN6i`VrBqcwn{&;Z=auas3L6Qm7M7|^ z#_~}Ol@74k{qz8vq_vU9Eu?SUMr(*It|8*=t|n`V8+pZ6J||JR#wB&m8PIBl`tT^C z^0^s?;R6I-A@dmXFadXjLmB6#94Dgz*2o^E(eTQtbUP3cleW=aEv6f@t>bU|(5?U; zL3l>H7csSEoBmq$)@bao88rzUvmK3zLrDQ3tdjTQ4MREvXr-|@-0?N4Y6$fpB9efR z?1FR-*;Z2Wwn{&I{|lM!@_1IiW4lE&d=Fe~O!+}sX64I<5x}{=J)xz-l6HuyZ)_7T4QlVwJ+`pK%){@)Wn zL0drieUk=YU#h9e5g+IM8iAJit2I-LLZMS+RekbA~@dfr9Wz*#3!%;@Ob z#2(s(lYR)85G$&jep$!im5mUH|L{s~-q!3;yJU1GFaM6Dp-zo4k79=3IobVHxDSrY`aiv%70g+BU?EBtE4HTMh*g-I-lH>V1d39WhqE8~bUU#FRn4pZjP zXg#`F*B4MZ*N${}G6{MwF9HR#fVnRp8RVIBdX1^3dM)8@l}vV)@*7I1s1S+LaeO=^Wj`M$*W(O>4uzygW1?3kzq;SIMFcLv=&pX;yU1SU zn%f*vT_eGK@;R!CFOnh1rYU^bpiFaHV`IGNOD zbtch6ROlo{70-7$6s0D%D<{PH81({&mPA{|YL zv2U@Og9%s`*?1vLR*z6MESzzvbG~LJ1Hs9sFyqP@WIE7vSCZ4s2B4_fei2N!w0)*#m4FL z_6M(Ap6U7_VEGK}LM5uh?J&iW;Z(a4L4Yur|q~qbX9=AjQv7 zdilGYTPnJzwBeqqVM--v`#L1O4qEC#Y&Xt|GvGVdNZ9(E0`)AB@?8lGkqnfEPOT1S zV-q)U&6(pOp=q;lC(??!e=IiK_ukz_iw#V! z18%z3S!UsW;4=f0TZDby!li($&Yjo8hVj*=AIW92!OZ4T%#?HXI5+FGlb1q_mK-*W zG3W_<)zJ2X2prJ~(Hl@azHmUFv$LGit* zUG2cQ_B{*py7ED!yjY%rfc7Dpdx^v$;}qvLWocNZ0Sp@~Cpaz3ewS3DU&}%`Aej`x z7RCwyBi-HJ zX@QIMN!bX;9#-hnFG{#>h4 zOK^m2Q_cc8_aG;laA<|9`=D^h#v-OGBz+)di$;?P%hb9IA^juF;DNbQ!q?HE` z0aJ+XIck%)Q-SFjo%`s_>FU3Ud~`GrVPrDGSnP2cCZ*z7lb5_qZ8^hnGHpu2fzqV z=xO=6P(3(H2YUk8YiG+YmnFA{|Hi_@VX1hN^!dg9_KjjAlRMrf^~dcp!^myF>vBdT zw2_PxK;z~Ps&@2r+eYEyDPEl{vD^<#24Woe9(K5h=Zq+cy(iS#ZdBkRui@9WQ8`HC zVf{LLeiVKFrJ!21-KldB^OP&8^5&1-x}Hfy#$1vwKVt&!zta{}grS}uLZh?^go+TR zgGUSNsX+**FZyO%xR~BuwV0=p1Z@M4qxELHTq1Pw{zi1QDZ9CqW@yGoAoJ%--9eZy z8~gmLgm8?aS^4Ptg{vCk@{G9Lz!u|>7nkRy;6h1sU%Mc+dP8fobu`cm+uIRvd~WKpNtez$I%>^5!$ zNrY`ulhf<{EFwD30d(w_cYMXf5wsv9SzS}=^|>myQHY4dp+F8QHGP{S-5(RYO=?mB z!R5z9Ck|eQ1+SxD%7dmRf*1Mw$yK(GpPI9@<>S>WBKj(e^H^puuK`Qxznv7YuvdK? zOh;09wfU1CSBxd0yBH^jq!IOd$yF%Pl7^%0wH<<2*U9dVG*_jtBHLsp*qyJjkwMj| z9siAX1fPU)CKuCXd#%J)Igbim45A8Q_tU>B-+0ITvN!s2UQS&&BOb|Q;JZaETrg5o zAeYhBzEptY&G0K1)`nz+0U1h9wXk7YbN?d`>0kTd@F19s+=I5p;1XFO?B#$*$g=am zpj0=nHFs?Nqd-M0^K(dFtn2F^9ummdQ*a}50=oleRb-Y&jM6pOL>J_1<7g#ZBej$f ziOyJnJ5#eIgUb)(*Hjc{Z?QwBl%-|@5W=kCAN7WE6a34oMXKg+xIG=MBalK@hNr-GM1R@Vi~cq4I6?%=HhRtw9Yr1$oEN z)<-@8-P_}}{^o6uzlN98@)zTyO^1cNa^m9xxM}>* zOp^cv24Kr>p&VjtHYh08_XI52O)%k6lX=Ke>B`E9LoGq;eK`| zs|<{R16PIjU>@dM>xYSyCcT zWoz6vf|0+5+OgI_%NjGsL+ZEtMhydWjaG;9_G0&XiYo%7QH=s{Hf1A{Y5^Ns7~1)! z4k#QRj{(cSl(`SX3%|+0i3h#vN4EyaE#kH=xlcetN$7iXqua`5{J@+9!gRKnX19KyoAPo`$82N$aQ=F` z3yi2-543{zJ_J4QfG{GxbT}KbFjjZozd|^bfmNct!4&5nw&(c~cfGaf{pLhGuh^|E zpmDb-&P6Do=BFW>VzCG@<-q$u2Jn3>kT%$X8-2gBgCytrzMurW+|$DW4>+3Jd+$J} z8m%q9mT+@`q+qFWkaDTlpYTVB$M(&(Cl!zVH+aWH_`&ioq&B9n{=|Z`aVT&ZH1G3sH;s7^xEPnOxuon=!)vA}b8H0|X5iP!B-_w*S@c8@~!IhcK*qDKuaq zFCCJDe=5u%vk2i_RxBQ4IW)R?rGwhC;X>2qlrj1X_s`9wLcw@!X4YK`%BtV%i$Q5O zZ)0G!ep8)ApvcRi!7>hx^?p~MK0Mtq`d;VfQ6|hZh3LD+Zx?$xPJ`rwD)v{NA9ip~ z9-Fb>c0b&OXy`=xEO;37!CNcuX!o)PJTzZA^+=8>=d=MH$WkKp%^gOUr0*R|cKML| zGO9A{Hy-5j+t<`M>2%Z|(4_nexdqYi?u>;B=*?5wBdWL71*)@)9dT2&csalAMD(Tr zlU)iALMw&slW`2ydOpE+$M`7cWRHk^ckE7C(@|gP>1r7VgANHqsK+L3u+c8_Xr-%# zt}MbO$4>N(#Vlb2Aw%u$ROboB>1N6vFvP&x2{2|J?R z<3J2qA2}ok&XrvCBiCBpS38&t7TdktHuP_eeq!8b;O(5BLy=2yV`d&lW6{;JX_nQ7 zkCO71sOZS0$~X#@G;cH7&9L(UkRx;#yR%!?h{eX-w=)@$%@w2iM$%4YL-|T)jh)N& zb!z+z7*Aph0Kn_|*0N45E42upY=@!+i+NZhSeBTyfj0e7!;8{j?M~~mujdDWK~`u! z56MG%w=>|83;*`EV1pG2FXLD#fKn!hkl^OpO=KK1YsWddN!t!aTyil&Ke;HC+xu5= zqfF=HMoOPD9)J;dW2ft0&t;n)V(6b=@4dT z&G(p727isRVF?Q#7)b^TqO1!u;`_t@_F5(Z%yXgH9fV( zs>yYw{N04s%MpHCjmpqi^N4^86cy^qY{TgqI`yRbUd!h{~xQ^%V0os)jcEN(WR+L#QvE>fnvrETa%tv$XUmuEI&eScFs^ zj#};8Er6bk!(+1){hbE}S- zIxiUnQ{X($;?!ZbiJ>4*PMO%s(FV5Bz-rs7*NOA3-3b(o^Bqgl$=k7*nSkWVKAVkY z&d*CHRXBk$l%=ow*x;qSX<*FbT2SpCEQ`tD;-hfV0Al+9;XV(-c2S3NpWq^#(tz zx=gk`GTQYEANcjy);uXqh=SRurgq+8AUHx~IF?Q$s$3kC^Ho_t1gLN~bw2d)q%9#g z^tJ%B=%kQ^!vW2D^+Lx(wEO-Gzg&;7tMxL@RZ3~HZx~;)m2pngD_dy#gLzc1sRgx> zf?aWo@B#R!#B9{YPF%Vh(D?<}AzHUTJrlp0Kr29TJzhYRVqfUZB_s38tcJGa5tw}> z_l(yDW~d{bspUe*;>UXq#pV9;QI|_q#)4$F1Fp0CkFY2g7{VYMa*!?r*^e(X26z*0N5Ya?!@o$yw# zb`e^sJE8O^j4nkEm(Mn&NaT)lzHrM3EC+b`LnR~&!PWk)xGt=JB@IQ6?qt$qr^@>Z$=XeSvNFSFXe zVN~D|9^*&Cxtb%1Dh!?h8EKE6u(ZX z{1|)``)Vc4{drhYDm5Mx<8JEmnpbP8#<@&;f2AU#Tj_k%9`xWOanHTU_g;40a>Bj- zxn;#L$&9<=PL3Tl1SW;9wP^I{9p$(WlDkvYD4r z13#zxjxq~4yRliZTsnFDb!CfGV1hqL?X0^E$#c##c~Noe%(~p#X3w5IFu(y;jw_c4 zck-}}xU5|Lw)2}<(HYOkfT1(Gtej37h{5Mu+4VK?ZJ{=`e(hj@C6=E)W9jQVSe7WlKRG+~nY%rzy|sv#UzB|tJfYPQhplK~X zKI$?o=0-mGM&>enjo(lE-KbsJIt;fl;QRg2{#J1~C!|PlTY%?KbSZt<_=_ z+zaG}mc{)u?$)I0l9G{fd-}lxe;xVK3KT$ivN7y$Y1E%kovFaDCZi#C@U-sfOT6dc z@7j&rvy4zpzRLxlLa-x%zxZ=XIjHOsP}5{P>fU8WWPbty1bOd{m-41^yFoIhH;57E zY0=o^hT2QZ=%L&oGjHw^%Ny;*+5r0d@9F2&=N8@kH?^rrt{t*1b@9`KyKl{YZ+q;Y z2-3CGLDWL?JBohSBEK2V)y11>rUwwMjVkh!**uaKPH1m1hBUs1eiz~;JyrgVP3(^Y0r8NROUI)pM(MS_cN~1zU>(G{rz_tNmSf~l?Xr1C}G^f(3*B0 zTbjc($#y4M>eY*OmRwD@esT4%6M?E-cr+oh;8op+A*pSz!>+Yn!Dv`w{cmwnR$YK#W^ zOaR15uZqM006@OEb0n&(Ut9lc!zG_82qKShH*$Ua0Fn(eMr+5V1-QJf$F+38quY*W ze71R{f`2?T)j9X?+g6Hn^jG#^bnq;audwn7Z*4pB$gt7NAu2d5&4-^v+j#gb84dtt zgq}Xq_xC=q^q)R7tM%s&x8`^K0E&S4sr=*9&mQosOL%R|PPKq&3o>Jrt6XQ2B$czm zGh{e5fMqS4tKyE{9(2`ekH$e;vp&~@k!-p*ctrnp;gSC!&FB4yZHXbUG!v%^)X3h< zy}f$$WbwqiD-Hm^%BS;_w}IB#e>sZ3{7(?gzn0_l=U?0}H0JpGhXV9o09u9^ug`Ls z?Xw;~|B*wD;dusQk3j6+45e9R+i&#y|9)^)+`xA1{o=;ae+DKu)5zPVW~bkMSovq{ zka3gJ_4GSnVKV7TkF z2AL?dRftS7z<*JRhCT(@(vwD-XZ;;*`XB?R}^o0M-o0lSdTxYq%h9COs zgz>TGE+&)qw!FVc0aS!+o!1AB313nwdZzpoa8}#BMP9H!i0cwmDc&&N9G+yuKR2S$ z>g*c3nX5RQN$x2A%@Mh>P0=pifn&K!Aohi6zKUIg=S4z!D2)S6Bpz2UzzLQT;t58{2Ltgqjlha zJn1JX=<`_^pZwjg{qsiD^AD=6h}rb6E{pH~^K!q2Ymm|Wi?N!={c}72co9L)XEjo# z+-xLp;}ZXLV1N#7Wv)h|uCK4}e{|J12iH+3p>jU=zW;zcpjj~JYKG$PX|um{jelI< zpk~lmk-qNof5I^7uAUJa5$nCmRQk`4Bj`-!7czw!=jp#SA+oh(Bva_w_9hJV{YP92 z03)mr@;|#_Pk0z&yjPP-|CxF!$dKZmVrESZ^MAsj=0H(Q=I$B1_n&b0R8Si6Z{K!X z*7#4z7D{MF$Ycxu=@Tya&q&l}m|h+1?*nY;_5T5h+U+_j`_u3E^>Q_wsZ@S%4gJ48 zi2JjQ(a~8Ct$)BszzI*d@h|%otFA9XO*P5Dcpcg;EY#1AoraiShx7aI!c)-vBzw=X_Ny{ zS1+G<86ImLZ(2PKNEj^aohUaq$ImnOG|V29?4_*8+L~--r2@f1kvC}Cz!hQ#s#_K= zYrTYuZu~3sWRXBYr-0wN9bY-o$OkYsG(IUu4J0q6N{nqQp+t0zkbsJ1cD}Ok*2WSJh<2MH-r=w*}8<&$D;sE~2x`kP% z#@%-7w#x>BWU=>-qniLIuxLCdOF9}50a)_=CY@?#x|5Ok<#K?mIu2m9&S3*6c&(RW z4TNDN!gdGl+JwSi9$I%(3wt#gzU@H|TUM^y{FGaDD`~zd1OCfmDjtoNqXYS#FDV5e zO9JNnfK&nT%vgedI9VuQDH4LW^a04&r8)d57@X_ZawE_h05x`VBiDB_BQ%4SWG1qN zOrUQK5K9Z%rU!WX{A8VdLd35q#8WYwd`F7T{-s;D5T&WK=}+Mg{$VA(5D}}$Of`#z zVq@=(JYi_RuKOR-A;c{!VFqLvtZ+ama&Z_m&M zpd#->ydd?0SEh&$Yc{t5_Ub8@3Vu?2fY=>+|@70$OI%SC-P=L&|H!Be!M0C1`dBwB^ z>T9_0x1P-=>?}L89Yz9|fXZF=6@Ar+sVWtM9QBxY4}dWh$cvfJJRj_@s%NI}}&h z?{skzcS82sC7@+R-+!Dv@Lv(D8r3(B)fhk1>p)Q_ENC+x zjp*JO-!Or>5dcM|iYaE4U#i2=I22Rmo8IXmfeph)+{LCZ+iqE(LICD$AP&e7_zLxI zTgUYs1ULt?oyKgF8^Hg!qg%dyTR=SXo`Lpie}N^M=3;_BMFA|erQ>|s^}#uycf}!o zKdw*OP$D3^l=s^b|FA=8Q#F2$T7eJvfg3%UAsj|b0DJykbxl)oy{+bz2;|mwP zu?@(X8g)9^9mQfH;v44146UBP;c&D4uh7!-84^OL4rnww?>GY-XG;hq(X-2!<$L$s z6Zn@;*G^TY1NXCsfJK^9AJt6SB<}%dI7{S^E8v17P0ECG18QBKEWA>T!{&+Q1_6nHu!`9|WdmJcMnT3yH>z-NwFY?v9Urt0$5Z1II-;_?1 ziQhX~s-9ab=#u0P=C%R*x-@X!e`SJU`mhLGGrMcWm8QHP=8~t27dOqbcn_wNl@BhC^~gpkfoMD#KO$Y_P)fAFdkJD zJ5mI>2oGBQGz1v!aj3N+6;4yJ(@Vaw8E^3=i{LNFSd&8C`>!kzfX7k;i;%@fzBu@U z)6=kxE3q3T4JBqO27oiD-x4s}4FeZ~H!V2}v9Z&Umjo*pB4pwU^z!0>e@jmP08Sxf zqoz^fFAU?%#nt!CBj<D!_}%V`!#mT%U##d_pf zT4+$X*sH%L$Ft|m00o$18|yh)YhLK?C(uX{O&8Pm#V_h{=Tmsy?w@WF%kZ7D%R49* z+ff!haed;~Xero3YAri@ouL%fvp6AkJJuq|DpGPT@RVBg%+2w&Nbr8vjZ=nQXLiEP z@m~W*r2`LUw!t-9IPweS)2=-SecCretT?W0Je}<$F4ykG_`kW8q;X-=`*d=2F_(7R ziomI!cvDZqqfJ`{<1}>2%03F2VrJDWC_HJ_ul(>{U|GFy*NGu^=8s z!jja|@Uy_7#eu1H%delj?_)0u?hV;7kUwn@{*~2T~c0VtmJ31fLLSuMy8=W06wG?k|28q}=F6X+Qe@%(@afjUZ z8#0P%37SlAf@!7mK^EdY)`RQ$SrOl~v&~<(Pn8h%?t&1*HaVTP?w zqTw#>D9^FFe|q{-kqfXyhdrm&=@|#;LEM=%c|)uF=w)dWW}P|ZbANQ^wY10S9O+ty z9OWhyd{e;;qC&xbU2#$3H7k`Rn+Qh=8je~(n5IWfp!g~Ea|E;MiNO#B{4XQn8!JV6 zJ$j3PUXwWt8AQ3!xM8~eEnLPtbwq=;l!E5H+UI8_+BB`|Oo^B{S22WhgOmB|`^!t) zdsdHBJ%g0$TRCnmSKh!pSWQ2_}6pweTiB(8U|sfkL7T1saV=WmW2h>o$HvYN*0`k>MjY9=F)5>{qu8ekBQhBMzshjXG z#oQ>lZ6EE90lzn|hxe{~=ZQ}osV%=#W;U&)-Onxh@W`T(2LFo=lE1_xe^8)3su*bH z{rE$&)%fGdcOWo2nH|C_&90)RR8-L~?J))fzsVZa?qAs#&bxP3ItrXLCLNE%)&uUr zhcB^3HK$E4Byqim3>;yxl+xLaPu`r>lUDglI(0<}s@!D-9`ek%`vbrhRRixsFTMSK zyk0o2c|-CVyj}hEeNX%RJR-UhJoW1IBkEjC2|E#4ll@cM*gEzZ5!Ah@kmP2YWd}THJxmatJjmmx1>wHY+j^kR$U8~wU&Lpu{aFfwCGS^ zTB!_>F(Vmg9693m;$cNg%BSlWKkQX5iz&P&TC50YN81jHYe#D*i#t^pv7f^2rZqDN zz3#dZALCzDLwWPMfYzIV(>AiN;`{(AboDpTy@qIqSs-MaiWVQS+mVc$XdbF#5-6L1 zHt?kH6QlNMvXHj;!>tLW3}N%)`r+ds`JsO(}wl9n#ggxt87pqvV3 z6#f2%>s{q;j8vx7mh2~FU-gKt`h}^0Xnh%LuG0>E$6X17l|Y1Qg0k5+WiH<%oX1oI zSQG^$p8uL7)U-d0itgAyKoT)Ez^70~oR9P2X59qt1J8_nDGISyKXP(RGTZ7gj?1p0 z51xjpECInJTqn{Q(f`t!ks zH#H&>HKifz3a2!Dx(@(_75-rB2c3D+L^y_j%Wx7C{?-n`9!dPoL-tGa2nYs zyDQ>6p^r3d-nnppw)l4QXUl6(I}!ma62j)HY6!?0*&l^yO3YN6KN(O5!no_Cb^HM? zwG)YAHuHYrGqYi40Nu|K87;LjuCoE79LxpCK1i&9==cUqmaMwkIS9)AYtQZdhRW!1 zX_^R`^=pRl)f>i33AZ_d8R~sDf37vKbULYtyBp;tj>p{X6cs40)HSW_YJP$|e>i4k zc;$-KARMk2?+?T?>Z0BBn&1OO%-2_#H3f%{Gll0{m+XFJOKXe2YcZ;zLkR~9Irw6! zlFB*x7rp{J$A(2V> zOR1722!cZ-kK(|9*U8%Xs|rw%3)f(GbXXtPsN@7^1CWPNGO2$40X(9WZvOEqa8jYy_|C zr5gcAyex_87a$hPDcJxe0r}~Oi!Z~Ip-sJxcT+d}i{U9IWLzjM86N~hbmLN|a5H&B z3RcJON;B?hTVnv)5&Z1;NN+5Y=B|VJ9uVP0fP~r>mkk}~#7%Up2kZkHP{oOiW`MJc zuNpHd6#U*y5ztc!dk*AW>g590E4s)^hZsY%zodVhqhWrvL?g_?nD*L>_4;i)D&4CY z{OY&qFJ9vMj43oHd@E)9G0kS6>t`ECpjJ3kl3I$D`Pt(09vsG(}#FKOO z&8l&;D(6FL`JJF7rwq_?5i`qYY0QKrg7?6W(6}O33MGxzKu1BovsP0UC(n|B2K$aQ zAdb`Xm^bw zj{sXhZhwwuzXnqYt^$N|sx*?ti)TeHt$vo@yElPE)67W&kip)ITo9;R|5hmNnR?>> ze^c81dkK7oDIw_u)j?Xrzsg59zbT%cC1;UwWJh+xkZKm4hK*5XGR$t=c_+fABeZw^ zX#kLT2z5p5lz252rU1%O)_?#|sUr-?7&cCfkv-d<0tu~Py*^Svki<^frn|PY*v4!J zZ2R3{p{@q9jjNPj7;(tMc8P9%W2a}Qd%nJIK1n@t6v7GizF^Z?CJT7Hsx6;4beBSR z+C;!*NX(uMAb=+fNGbXIY#1YrsE2j2vIy`_3w2>ztbv&!5I&JH%&@~Yj~NL7UsQ=7 z+sdO8UD16K2FVRu^@Z7|aZiM-Suc%zJ`oWQ!!Ip;0{L6|427FLE#CqXp9NQ-m@?9` zGvYGd9-=6pZcf~b?*Zyb2DH+v8A-oh{=6VjbW(^#gV1A6)CB{%?Z0rn)%T}7w^^tz z-Q5AI5;gunUR*kk$3w~Sn_PhqGzW}Wy?eEB%cE3a1&~&Al;u3?R9Qc`H;%-Rolz`V z9rt?H4;6*up{vuQy~r0K>}n-zfDEvaP-+G6;+TUiMbjn0n82@;aby)nkp6D;zdyJC z0!OCw2}vZb%Nc{0jZ-gi-KL>*C1|tLsJ$*xe!FNX5~lzZ{` z=G*h#wzv760NE5FvX3k_NNdRp5(+vOZ{}+^X&EWEZZSr$!luJ)XkU=WTBAahunPT-STBo@7h3C^!bHT)3oBuHfEy6W7OeKy0(elJT^? z+yNOof!qKq^^n^9{&PLh;|>2_>@cI-*(a*h{45tE0SH!eTIz0UF3IYN>T6}a`(G1R zR-y$yyT#>|xqYgDcB?f&DFk{Vh1W~lDYZG8_w{0w${4H#23Tc`Racim_ty1` z8*dr3^09G2C(rVqi$WFvpEmhE##2=t^A^aX&2O~4=#q2;ENM(JgHq@&YD7=FIOsw8 zVJoj%_XB?%0_kis8W@V%lnoGT{L7MP^ObWNKET)7+|XGqUTf*71^Sm0d8fnRUr7?W&JCokD}Y=a+96EOpjKY=Rc)8GqV zXs#uyk>g23@8mMz-i$9bfA$-Dc&lk-H&FBc7P3poqtqRKnp{hvXG5U2zVPHqku$1Q zZokXLih}WGhmU8>AJ*60%A~5FYLx|CpQ(LadP{`3HAGj7chW_7>aRKuw@YcxJV_Yu zpXkJR*{8J+|68Tx3XB49?dj|NO=LIY%3E4HA0`a}WWYFFrNsWSF|%WJruWvp*>4B! z=^sBKZvI>0#f{0kO~6ct`FQ{TRCng_RBiwNFGT8;N&`hy#yE(~bGl_FL}ryC88c+2 zL&NPR^E_8V88b%4bTbb*IA#^cEM=bk-kZ9gTe|q`_jr8oU#^aQ_Fj9f_j(V{_iM$A zYOfjxV{F`%CNtg|^1^n3NQ&6NUyg@4F*#eKXzo9fk3u_F-?gK1kt)NzZ3P?%HRLg^!5V(Fi^9@erfNk?+D>RD}--7Cv8i1`U#lq;&?X%9fsI0mrR zTsUuk;Q7tNcxr&0@FjAu;k`HSoSWuY`S3zcX#4hE?&E7Y z1a8@8w<4>uo&Gq(P^hiezpnE8JUJCi+f< z|FeDdXiRf;C>P)-K`C3P37%Gz5z5p+Q*Clpcy>$*Y4!Jlw4E8@R@9Xj~hR92O!*BFFw*7i| zPoIj7*+mT)9%e8F+U<9|qO~w!AxXs?tQ0UCe=`ROMo1<4m7LkN-I+4v910OBXId*>P$nIY;a~{rDfC~wwtzoA6JN3S zhl&1=OPt%)cyW+C6auhKmth`#z4SB@)K>pa)csv%|EF)DB~VtzO8hnt^Yd!AQI6qG z40Qf|e(R^3!kCjbmV@&D7QcVB${qZFt;#JMRaXL~12tIQ0h1v@@g2S!y+Dc_0?NcF z@Rve)%-UXeUKHfXCQ#@-g0s8q4HUSLe8jA z$knjiAcy@b;h_3KhH0t85wO>#KHKOuaxnrzIYIUmE^3Yx-ULz)HkpY~-31b7%;?7C0_=?21zlUnYohKjg2;&`@n{+7vmPs-=e z3%iw*y#NM*O`a3{hZM6domZf-wet$X3EG8lup5mI73+Y(%j2^x1UEas%xS83kHv^Wbe)RFc z7TiR*vU+mtmQIct2ohtVX8Bf+*4e_Tcl&S9JGrBFiJ<=V*uQrOkc4_Ipe^A`!-(e8 zCZAW-$j~T!vXwEGi@CtCb?6Af1PcrH4e{EwI}^hZ0WJtfoSAIpL`Xx#k-Q2J4##>^ z@m}#G&C2Y>+^=tUSJ~pUdG8kt{RIQiqx=!-(=T!PEUEcc?*#230o`b8k&6%7pDK8m zo<-1S-Ks$g>Wtrngx95Yivaxb}8oW7{?Pc5bk$ zWoxi)UY!>-lAQ`-x$p_rYC$P_A-k? z>MbhMCGG0>$ZL^QHc}xxybvSKT1}9lcA7z^#Q=)X$BmB!Au$++Z6_7v zLh&uvy+?5qz!NC5y%|Y&#ZE)@B2UXHro^fWtyT-aPlqF4r_fG4k9mUtPe>kfnK-%h zy!%^&-yb(1^_{xl2uGQF26v{@ti91q|ipt5O@ z3+eVMcw+v_uB26j>pJ>t7%o4K{f=I!LC_#>3GPTqUg+DqbjT0}oa1Ici>r6xSqi{+=WUkk$-7IISfQFsD`O5Xj=}=D!HiOh& z{z!w?Xc<&cwUplW{&~tPBylSF`>0JG0eFEtACV*>e zw?bCPNboI7%Il}Zj7f07Jswhb2D-!%)VEunK&4du7Q9dI@p#dt7by$XMj{zO@;3zX zAno+t;Lh6&z^|;Pn$&pT@YgNN`jkVeS+wp;5%t<=^~l9=cik>u{%219_#w&^6Cg!l zEc5W*hs^1KuE==@s5%MCMGYGl6cl7N&uQ7|A<`K(`y}6YP4irT?>U|G%r(-)EJfEE zJATlaSEG{2J8o=cse2{)&D1w>esfK}dt&tQ>|4FBu-*FZ-B%nV@u3Sj{}U^QYY=ZiBp|UV>kkAdhMy z6*lq@s-tO^1?LLCOdMLobn76{Q6Y&r7Z%d_{du#YMp5e7kgfAO_^GuIiUqnkw{Y5a zdq!%JllnYCO>V~#R?=~4QuQO69zV1I+_jtztLyvvF%DXH&Ou?}?C0h5b15GzT!uAG zT0QzSLaa!Ttn~d6cHCQphBA2enCB&~4ymuQ!gt~E>~0SHkb!@ol@sa!%P{Cj{>L2# zP=#R0>9CUF%3TD+hZP_~J#>Z7b@O>0yH49GaT0131ad1h=%4%y#GK)h=zNE@KvvxO zbJF~tf5?da;eIkbm0$D`d!c>B8KHjuI_5E;O{9tO?d=_15-GWTVU7xwE-3}vSOtN> zSWcJu$?;d-E=fsHyRg-@igs#B)VW-^&^eZ!+Ax!s`@oRKx?8$CF)3ZTa|Ox%8iv1~ zZZla38k_u_KT(@#z-2{K-Op^mgwzGbzm}5Cprdd!^Yssgj2Ow4ubrym)`di}e0TaP zUnMU%s^TH@ImBt0E9#qPIvivej8u}|fu!iFm$rPWUiy6Ev0gW^{9kc-hG;QjzP-Ye z^-wVNZWPaqZK@^rp)7W6t<&_M(JOP&VGn7!OSuyKFutgWrCvr+ z%Gc5^Zrv_3O$G?PBk=VWl2H}UPx5Ef$9BUMpZDADje2RYkIsW#YERU5|1r0f1>2Yr z$XZ4uuOwlO^%$^jUp;67O7{vTU;Kl&`?nQ1-U#dF&CI;tx+Ch1sGK zlk0WduHzOr1uYJX*vCbHyx0-z#t(OYu@O&c6mh9p%euzT#L#_r7t}0pHVe#lKHE|P zL~qbsF&9wSCQke(l90oRW%P^8Kyu)DFJ(u?;vqtm z5dxoDgUOsf64tPaLdulm8V1SR+7{2Q;-=FX(VaQVu=-U|we9}h`Gkv@K#Df5o4r4tF?gNrHwYVLXUx%HL$O4wNkeE+s z_M->ALPvab9KGU5PSKJX5SnsBJYj=#b2CLN1-*{pNkpZ_>LO+dOBL8z<46MRkmr8q zN1E>Y8jOf>?K$Ck5B2v*7k3mlKX#Jjyr^F<+PcqAD!~|mOdYB;yOgH8-BymK1;^aO zpw&=QB|xNvJ5!AKsZMr z-WeVkotuNuw=YT4{+2IF~+8%m<+@i&>n85%$!DET`c-|Hz}IY&;QklQ84wX zqAp;6if<5k@qPZ&wS;t##o&<0YzbL&5;`)2IbeIzE7p54Gj++@HI@#fDrrGCk|;lH1j@&s|V z{-rBMk+#J0$0wI82@ZzEPld-Xkc^sAa3P>xUL)-I-M|x(`(t91Eze=ic)y$|qq3HT zyESELB~MT8AR$>u>g}>cNU0r+`URfWRDi}#xklY7A|lJqA)<-JTelD~_PTs&C)JWX z{2<^%`5cY8iOB9zj9X0}bLg4)q8(udOKX)Ae<{cwy!~B1XK9CD39Z>j)#a3nsnw79w2g7^>OTACr3batDYa-9>gGf*(6&wTK^X4TR_xLO<(;9}5)qcvh|5t=NINKAe*tqY)SgGGC$&!} zJ9PX4Vf)+N>{`tlCdmS-ehtS<&1#IU0=CZ%-btyYTE=%*rjbB-f<*4*?j6jsLvUu6i4=Jh(jU3*9JAGGoG(ZaM|SIQ(FFNgFuKye&xr1xtf9(>uaFNvqh4 zoELfvaW#uj8P2z8v(!apE6B}%%^kE}^Pc=AXj^x2)_1=^gXawqf4t81iIoNqbg*qa zRNqs}5UQDS#4!XPHf-4deh!prOkDUQI1kha%!Qg6d=*f)QhFI*@f2GqtHan+8xPe0|Q?H`+P&kfevLB z0h1n#8i)^gAK}jbe*Sp++g&WEj)KA&W-`C)axs$eb(M<4JnFl{oNNWmM94{rq#T~h zC(ogt=a*S(qR7wtDxG5f!*_&ij+Jisesxpn<;>Obl;uHMmonWNWqHn){feK zuBox*!tAOb=1`Fd3PoJj4yUmK33T(3fqK-W(Wkzn!i_O*@$wnTTy;VjdmH0><=pq) zzlm@&E>rU={JmLI8)_qlw$@*#zBz@;Bd; z*vS&a&pE1fYrKLHCq9jEJUuC%Q^NWQ*X0KvJ`rJ&NDhyA1atO8YWT;$YIwWzyZR?u zDMp5Y(9l(-yj?{hLqNq2OJ*Ff@oZvYhGP=$H2znA6m;izXIee0qq+M-edV8=pk6v@ zZ0#gFc&F*(l`O$rwS3PIW@O}Iy}mTX>{&d*lLo^!-#(A-UN%g#Z4ds2G)0ih#Voy; z!juI$RQ%=R$?b5?H6cj68%oq~g4(1IZp#0C5%ZJ}URB*7FwdULBF&aWeg()jtyN42 zg7-p^?QYQh5TJiKM7c_D1>qKCB=kl7E}igLDmA`Uj-AepK5MX(I0dI~TW)o|6QP*W zVPg(TOv!t>%5-85kfz(8Y*UO5)PGmr^0!`e;FD%KODPTO)Y{>=jxuhXmVb`63A;mu zOy!ICC=Ir}fv5A7D+uZ=dPKWDW~~9OScs{}vrhuA|um|{TA+B!l@5PBa-6K*DBS%bJ;{r+%u#`Vp zqo1*~1nC!T8R!WFLU&$S=#DnagJ57^2#R1~tjJBSuG=*Ur|agz-xqQn_NA2M(W?F_ z@O3pH5;6*a_MSYXQ)J1Ik-QW_DQ)cJ*y|oI1IP!Ag-45zLO)hvkefYRR#%37vL<5c z1Ldb`w z#fW|xQfXzwxu)G+YK7y0ejo1z*x5t)(9X-!Lwk|hR>h?V3?t5SzYABp&RNW(n%KUv zyF{$FPY(x71lD~n4yuzAnJ_*z$BG&$Lt<)h6ZY?j+besCZ$DYX`UA`bNRz-y;DM#O zH3uM(E{Q7um&(1VD?8R0v}9C2@?IjQK5-Qwh;vZ)t00Hot(yRPHl z^WifP3KpReD9t48o!b)5Ez6F(cNhV~xMki6c75|o|MvbE&Pm2gcp-9>QL+axz#$(O zRD=WKeiVDjD!lNFGnH^3yB6xCO2E&#E!v8dS;iN$r2km*V;T8})tpDe;Tj|Q1wSS7 z_-I$h8ZQpml)}xjnHi((uK}qiQ^^o+s`U7CVD*KHKLhkasAQbl0rIMZ42`apn|B2? zMXA^65}=fVn8kN`i_G7cgJzYk9F1w_g;4A8I`9PMsGifQWQWuGIPaZMzXIsBjI?2| z#b3MG^V8nVqb(d{mZ%4Y>vyj$t(eAhx*pF@_QEMXKQFeBastYCd@y)2QE`jF+1K-i z_@C{JhGbDCyuHg^)7d$J@ZO9v&LkBr&)deZcpPHx_bEw7X&Kx(>A~V~liPz4G4>4p zVgzpvpnOcOyAy_OOGSNVJXQ=WF#k!fJv=Qj#LT@?^F+JOnmwcsN+2ApxQ31WWYLE= zO8MI%PZ;-&=&{SE-MR@GT(2Wa29ey%=p(XufnkHMBB8eqO#1kdQGQgg)ciuz4J~2w z&DxN|ys6jD2)Wqt#(0q|i+M{OeOf0#Xp+S(Nc+lHTG=z}&lwW!&Mzs%x!l^}ST6MkaLb^NUdktVoc z)CKSCPRNbon>8(xaf3vDk7ErAP|fiN-(3k5mUnY#TP|Gql1RV955tJDAZ!QFwZw1x zDD(xL2)&B-++XomeI|gf&lZs;B??QQ1=YU4ZNB||guM!# z(_ufGvXf?eV=dRB|VJ?$> z*IA?=I#nH){VJ{{98N``IJWQw7blrPPv^tw>~mDT6QLi8SBaTE`502mh&Nfu++923 z;<|#?arz-61f;Cxp8)Ufo!iH-PUgc^%taQ zYScIxe`qsc9RAR|X<=bu?9CIQcDuv%KWf{UZ)`r}q~NTX7j??2-^(>)zVu-^({(~4 zw>$Sx)^}}_ujh9)ZrhRN6D4WY{%cn6`?RY#x!SJm{P?nr@qHQg0-K~fEZKL1@R9UT z2$J)gWDvUwMNox-`(`5#_wVCgc*obiF*x+>2;yQ~?0$IseXD&iw2xtS{hmTqT0iT1D`>3A6r7pb+?2 z7Ajzx`SY7UQi}9~Xlb@WIwc7#8NZQi<0GT#Od;V;2*WUvz2WTsd@8vS8 zy}Q*qF0IEooU^U$uf}}cwW|+=oOW`r+rH^7K%EsK(0s+8v{%pn5_+$HJb%p?L&Xp% zeD|taPOkswUw#9+mm1om+Wo)$`j?Fexp$CaSi|Pr>)?#vO+F8C=yzz&kT>Uv#bzHD z)AQR6bFD&j+uluU$wK=Hk^}4%KYw}{lf7rN3v)Q^(0~dMz3#f0XZ`Dm(IiNQ!g^&) zJz9GUmFLSbLH0MYH2Bt5?}j6yO^yVsr?K%0V}P|S_U@vSxWDoI2b-d2YMmebgn;Vb)zu=K9SP)eK%*q$K{g1zYUYu!+{Y&!MEr**U2RFRk6-J*k zHJ)ZS0j&wL4{3QYFhImSi`sBuap-{9jwgsz|J9D@muK2bm_gCO^0DH+1P;SEf!|xqe_xMyC$M-?2{bXE z;WV+02Z)v1kk5Iu8>u%y01CX>K-6#6+s}`I zT>1YNKoOU%kyYuzN#_5tlmqFSfStb~VnWKYeD8+(oS0juL6xQ2k7OubE}Tbxrr!K< zR&k?E!n@Kd8D6Q&R<1{`=xxW4_6%pX9NTDo{WWOGRQp-T)EOnkr&k`X+)5ZEhvmSy z>?{BI)WHajhYE!f8`)Bh+8qaCeN4Y1q!>M)c;(7Nr>7H-Mi%8eCWbdsMA<1zv|W4` z`6t%eISLJ_mFTwPZSM|B3LM;oGw#tYZt1fZm3Y=&r180geEQh~s#IaVoSv!b7WR!E zlc;Tnr&+d%Y&8zSutOM|FRd@r|GaWB-{|V4!%)6VJ%a%)M>f1R5}tk|`Yt<@f6Ds& zCJPJd2e0?vcpNVL>eS|+yn6_dn>tK+kYQxbR&TS<>uK%G1j?`ypysl_YgR0JE?xJCi1VjHIOZ~M{!{K!sO;sPH^S_ z&q`p${-?gyOOOR3=?X-cN1=9a3nC!>UQF*SE*%Lvbx06W>`aTluiXdJ6$ogl=PH~3 zd07;`Vu;hi$>jNG_1j-pHs%%iYfz)CLRhhBXd8VsoGGCI#R?XrRTu~^*M_SpQt(F< zk;OMs42+^23=8%~L1yV$`@>wVH?7Oe@e!QC!l;5a(dBR6R**=TT*!l(UcsajxI?0z&E>{=#c-A&1E^wxECx?#T2b8x=_6iizC!dD|2i1BJnbg)On(m?BI za@Z2|JXTX#>X3Mh( z{i{HNs(HpWKc8Z#kV|L!7T>}xXx0o4;NbuK=c)S{uMO6wFyO|G+wK8h%g<`~Lpc3^ z4s~%p>(?YB;Y2OCb!xItklAKOYA`ZNk5;n)_0$+BC8Uf%wj;yV73tvocsEd0;{_r! zz>37Z+J+CPZ!?kJY;j!}t%9`5CCHwLHVqoK}dh4#quA43(`ApgciS+W}w?;uRx8t3LO8NZC`?+#U2r1V|JLgd4$epY7Lf0 zuf+Rfk^u_MVJiaRkl;zse-Vn$hmKzs$}7fgP(D$f0RbWVi(D@jp=iPaGFn&pAs;!M z2|1>8HvgVB0FD-dOmt$saq#2@&_Btv8=a{rWj4tR^%*?0QQkZZ&94|KHV$4~I=^ox z)Uxr(7A_`eCm)j`q~loQ%SRdD!+a7A_bpk2enRVwXOD*j98|AcUA$x!j4rGoNBKUHijO&lyDIQKXqZA$>|^o(si9nN7}p*R4!Y4*rvPUT+Jk$ z-}3_5U!6f7hy}_$ss-Noj>4hKsi(Ukt8FyQPA(69=#J5qOX&7$VY9%?sxM{=JN*63 zJ_FG=`r4f97T?T3N2=)L6SAf{`DU4ik2{Wqr&`zY#}B3~0`$g=w2bdzt1vpjR%id7 ztFkZLLI;wWL_O>-N;+%y!EJZuxCBTwlKe6&^f-6X(b94k3hpsPDmMvOq#t!03IuLE zQAB(63lPzXr9Oigd{(N9*&LK&)O6-5)q+6t>6L7xKo%8HSq9Lc$p(T1-B8lYM_OZt zViba^wrMCirDnI?#P^G?I7odg2H~<+*0vdIP@p-Dw1HP4z0u=HwWqLFOe1O5|qh;t{l>%hCOe!=;%h=34t9aNHs?x+x)D4a^R zXu>>4xS-KTPI7mO=?;a2o3tvbAcQYc_pKU?hdTdbL^8o7Zz({qyx5*NR&a+K{T*7u zcLlctLnI`_liP_rMilViv_%?#u zIkh5ySk4?adO4HMhhv#^q)Pbo_CpA_Ns^+`O*V5pviMyGyS0LxQ>AiLgPmKoOM0#a z0y^4?9$*bIZuMT=<0E^LztGwIagoZo?o|sR7G12;Nv>2&~j3W*B#M|{1 zV~ri2aw%Lf)H_M2LirV`jx|=Nh;lLc1&M?O#oQ|;6U|QvF7ZVz$KzLY0lR zF;psxh7zSwg&F}Ff=%bSkqS_>jMG^XpslD7v5z8+4obR8+RMbdu5&|JxJRoK>R=4M z#geH85+CSdSj4YX-1VV-p+y)TWTHo0W$hxrP0f8rTRWnwXB8t@#k%wP3ncsgL`^dudkcl|#vJ>~ zy#;u*1v666tZBo#x|tuA4*E;KX%_Y`Ev`cbjv|b!t?9K(NZD=d@#svfZ^tuoQ@@WP z`tp+7q-$4<<0G3*3&)JUl>P&NouW)aq<&!C#}tXN_&T4QoquNkt6L(w7sK$H_W9m6 z&8RL@;vzpZE#bk6?E1|7WsnKGO!9})$tT97B9aRrK-U6-Q8RNz!Kjg5(hso%wPFhK zx8Lo*I0@QPoXq0B%i{qz7qGElO-)9xfe1vjnI4ORZ!I(56YMlec+hB<+sYF6z7y>x z7R=v#N?sC4>2n}5Ma7aS1`@{fz_<}Od@d5^J29+ZFA{3*C%*zJSEs?OT+~%_7#Aii zlgf$qBSMt2nDEwqt%hkqCX|E5uRaf@2)l&(0ux;WLn-%2RkB9k49*W^ue~xX#yE5Gu#>z7haz2fsL4xy<{5+jk6`%DWE|jKFaat!f9?X4)VU~`xgS9Pc&2j>np7^jUyJCLT1kD$ltGWlDN_;B2uk-j7oN-MTw0Xk@Pxf28c5 zifW&2_sz574%h3%4gvA~_5-rhi0~gVqdx5lvf52C`v((AWo7ivXLy%_-Xs3NV&LJN5{)lh zqzUEe&z6c7KXeEZ8y>hhZ8w~plftgN>pC5Jri#ej<|ZssnaB-+^(3Ek5Vd1+FD(VD>?Vk>Y>#_|DnPSAV{$cY_2Tt)A zmg0`w=8jl#ZWi&r=Uxs`?`kp|xfDz|*>`4wI}8t_IDt}?cfq#n(sf#EC_NxE zb$Dx+#u^MoWz#*e<^Exm5tUYyNtGf7dQ1vO5Ve664^GmP6cu+mikB#6MKELz2e{jX zKHViB!WA2YT_3a2A`G62+JFY|Rw+ZXR50 z99?Y;3t5P-8GZ2x?A&O?r(1QJx63RpjOGoeXd<#-f!@x&r=|*hsyQhY6)G_LW)xB~ zhLQim$HY*#qX#l|;*Fo>+OYz;9+{Wa%F5aEt&C=j&n@jC3n*FYW!&U>LS;hmN7#bS z!dr>tc71etL85Vu(KYk24|1Y}Zhgz)Vt)o4m16!&->ux}ggS449Yq3uEtZ_k0foAO z+s`I%{S#(=|A8S<%s)?1{a}NV+9I?8qSdFDIenGUQhTWZ7*X2rMz>qD`%y8rIXHIVwr|fp&pP_I=T$;1~s=Y*3pTC`i#-eR@6*L-L>sVWFn5z zwECl-vxi_L|%!NF&35YX8|3F&YbKgwU z;cBir*0HEVy@6IcV26EamR3SMRWTPk4T4of*3_WOlSOo1S{4-##v0dxhzZsIJqD9m zz#@s@U_)z1hv5BP2Ptj(AB3D~Jj3Wzr#Dkz!{3-!WAv0%rFy2B$F8-1p+s ztJo67y(;p3J&(_YqIUn!a5k+Z+x-%+Y{OL0`*7|B?CW4ng{dXf=>r@8HYYgp^cBSD zY5~aN!XpB-3T4?w3gy)dfwM@E5llUpGtDSWk`nIV;Kw(ZHKAf0ALPU)# z6r-;Uga*&dkl136qdkPACO+?PEM$lPbET=5iA%r0=ursTtGAK1ADMJ!RCCzbWw{p* zSaW~?Xat!ok7Pm1c|;4*?_=f~couypYdv;`xmF6=!2QMxL?zs7+}UgeaA$e8V-&Tn zd#BW;E_f0#qi%N}yV*$;9GeWiO;bjNODoe~&?*^oD}=M4niGGp?_9w3lMf@fVySx0 z?Y&g_iI`N1l$`h4pHyrSpWRRTmhL#QE7$UqV(mFU$z01nwV3>Ut0$6HCYGn&rpH2s zoeV{t+D+<4mhua;W~?=a7qo|`SWO-;EhW|U7wJ5U7YysEI8#QYEDT{7zI)f4ISl|; zR$A4s!o1h;@$;mO4;{5e%F7-e$jtcV?G&ej>WjOwf^e2Ti9J}vDxwv{HKn(Hn})Y- z-~*Z&+QhWGM3yG84`_nR^i|5Ki$e8|2Hk1V$MEYU=@z->jfFlcgibavKe_z0pF~m?v~Bdp0~T;LY=Kk zgxO+#aL+d+3qiy9Kf+BRrZ#eWMw9Sj_sOVro0w{LF~_mDpq+H(w#}8UtFLh{Y+ZoK z3})R8X&!UtEKAU6-6P889ZLHK>C~G*;8!96)AZt%qFLbAjhx=(=a_fq)!d8%KWe54 zA+|+|2IIoxaB`=|KZFfqX;4wnH_wa5zqV`t0=TTf+$Xx08@djzfL^PG#^%D;yhO{z zJTJ6MXGL&?kh)w`6Ad+O+slERT>LY!?`m(zsD>hrFA*erS`ESjIx1psb9U1;tsoLX z((Ilo;pzO=k*Rz6dwrC67!8iGfe*o1o90dQbP2Y>(%^8R+L^`hKyrJZZ5Tuu5gGwg zc?Q{^J9Ql=dXIM&IePb1#W_uTU(bC=>r&u>gQeLaIIpYGEBIU4*Xg@$Imu!l>&#pz zd$@w60@UY*z^Fh z#^nm~`J09&Xl5AJOgiSCngG=|b_{u_XBC~ak`7~*J%f=|zXikCdt)SKnF3=QpwdTr zR`SBbMxnZQmo&2RNXCfVr8S$#gvz$@(sPkT_M$~47vOIU#yRlxhzk6z`Vb^*nU0Qb>4XD9l3(aSka2B zZ6$NO3ZiT0FqTm#!cwx$1eeljTJV9_ua&lBJHMz7kaF~5EN(IihWC+#tN^07J&Uw; z@arNO&n9q#72WA!G30+p$)0zHHa@iaNw&h-&qJ~P@~3egBTm_ZJwVR^7Tb1{hD)?M zR|rFG%p7=zbuI&5bm;ZknJEzH)|A#nr8?z$;RVKF1qF}nd8>4Ee6OnKxwAvB+G2=vQ`Es##*|#CR7(kjS>#BdwEF?&XTsPO_ zHs7>mC%i=-dfIDOqMc{ev)TPGg$5jre}4CmbUOXFXyclR49BUV!EN^@eUtVfx}2cC znm0itj%r8RZl_IPjnWk2eYar%${EWwWs4)aOD}oCu7OceuLacSat_?J1-<+L6np8+ z1Mg7Q+RjlJeeEe&V5+OIAXEQL#4%uj>pwl!bg6bEU37$GjC4>$fU{)UdG|~mSU*G1 z=@h0T`W%zK0+QkFN#ds1-L>O%*+W)~jeH3j zB|lF7`N&~34X;Js1+V zuvVpgW_clMRhRV)0|u-*$=ZK8x+UnDSUNo&%iEWi6Q%P8JLm=FtIo?bSG`-&@?Z8S z8dU*u(PRo@>EIZ5NL)H)ytzy}{cHX%G@tzb_QmlnftvTjkKK5zLRr$-+ebU8o6YM{Yug^X5q zE^xIYx~A#%`k#eLbgZ)`!%;gSYgnJORHL;5E05J~gz@@$&LNa0XGiZmhh|#aH66kG zJ&zY=LF!rc;&BIk(#m7REstSqo2-|h=b#t2hn9~8xcNjd*eOIu8JMnj@N}Elu)56; z#*b?=)?d$jZgauwo@v$BSy{`qLq&I!QxKc5o0^%JjS(p4e(iUook&=>0qtasDu#8V zD9uxyQ?{6F*zv}|y6g)CVVbUeg0gX@ z9r(ePTsD|<|Ag5@!39P=OBrzw<}Ap91ujH-KQ&l&bGBj3=s5yWyZ)2wNt-1AlbJl8aRqJQ0&Va9 ze-Fuves_m3^oIsaThgAKXWFT9MQMiqm~7*S-=$+ej$>aBts(f+3KK_2(XzMj6&I(& z6#5=7SqzS6_otR;uYY$x4-f{=&e1eB6TG6+LikG__kSgmAH^TNH-{4hBjuY$Z|4j@ z&b;-D`}X5g|NFb*@xuw>aW9~yu1oi6@O-}^5hGP>>Edme-t4Zo6I5x&9M3#$ zaC}{6Wc^);X%g59sD6I3HN}nuf8_ijl8uiPL!P`ou2>}%XR<06{@Zu*&*lI>ymYJ| z-@W7CzxgpOe;&jbZp?wun0FFelGPw4pci{$d~_>E1T_;4tsXwKrBjVCVv*x}mt1MK zqW8p&QTi-Se6M*cNFjgNggyD>4_-PmcK<0t;a%y4OA!7`Zn6^EH94+=!q z>a(=0^(_4KGN>(iUAJvRSxB81SNUar$6UtbZS4>uik*#eSQSntzQezNYyX?^+b}#k zhRky`rxuoY%Iar$4u0)4mvENY@F6&|@8s6JdJ#10E-l2`o@$=IXKc!`2YqAXQ`B~v zN^G|dZ{O$k@P3LiqS8m-&_!Ij2-coc-;~f!;y-ZUwc+L{6ia8+H&@ndC9uVwz3iG9 z$O5%yylc+%M(Ay^)scM>X&pr+-*Vhe>)z&M+NnfAW0s2!1(;4f>*i&!3yFEEt=Ds1 z9%OH%#Z)X!Uan=^cg8^eigEWy(2UXP64KDL+The=Q_SLnQPD4fOVsUxzr3w~jWO~J zrl|xTEqC+UUf=4O&U49rw0_zD@|!E$32c=N=|+n-MjKbh=Y|ZjpGb$2Y=T9tnt>oO z=5O_?{ab*5cb<>YR}|X>M!vs5C$;9xR!*9G4L86s%l!#be7`*NuerFL`)(-f zz3d*#X)P*T+oyiF`u?#TU_>(R1;(x>h*e47hCHZmx|7}UYMG-eWr)}2p`c>BUEvcY7 z73jd$Ahop_4E~}(q`V2?z~)PXR#93=@7LG#n;klnS&@?|lmE_EY@Y2-$AaUV^P6|X zObDL8EB&apwHrlTZ04;z|Do^xwI=oX&6^&I^>-tFNjj74wD{)BLaZHe7e~dn!t`Z} z3E#L}DYP!lv3_=7vWbRllHN&du?vO~k;B`&g~L7NFfVjcafT~f(Zp4mioqY*^;;wJ z)0o3Mqvr%qX^YOP^qq6qv%gWSTQ|d!NgG$S@V0caCm}`vPd&dRvguNX!()&+=7HL^ z#eG7yBI+aG=F6e&Fk;8(JAxJ1zR30sa4;A_k3FAylZ`enI}Ue)=}}PwEf(^C{=_-2Wd5#xL*y literal 0 HcmV?d00001 From 7b3228bc8d66065c41376bab52b7941f45dea5c9 Mon Sep 17 00:00:00 2001 From: Johannes Wachter Date: Sun, 28 Apr 2024 20:46:28 +0200 Subject: [PATCH 16/25] Add cleanup phpcr database (#791) * add cleanup phpcr database * Apply suggestions from code review Co-authored-by: Prokyonn --------- Co-authored-by: Prokyonn --- cookbook/cleanup-phpcr-database.rst | 14 ++++++++++++++ cookbook/index.rst | 1 + 2 files changed, 15 insertions(+) create mode 100644 cookbook/cleanup-phpcr-database.rst diff --git a/cookbook/cleanup-phpcr-database.rst b/cookbook/cleanup-phpcr-database.rst new file mode 100644 index 00000000..afa2bc70 --- /dev/null +++ b/cookbook/cleanup-phpcr-database.rst @@ -0,0 +1,14 @@ +Cleanup PHPCR database +====================== + +If you have an older installation of Sulu, you may be dealing with a database cluttered with outdated PHPCR properties. +This is particularly common if you’ve made significant changes to your templates or content types over time. +To tidy up your database, try running the following command: + +.. code-block:: bash + + php bin/console sulu:document:phpcr-cleanup + +The command is quite powerful, but exercise caution when deploying it in a production environment. +It will remove all properties not currently utilized in your templates. To avoid potential pitfalls, ensure you have a +backup of your database in place before executing this command. diff --git a/cookbook/index.rst b/cookbook/index.rst index 938a59ff..777357c9 100644 --- a/cookbook/index.rst +++ b/cookbook/index.rst @@ -46,6 +46,7 @@ our recipes. user-context-caching build-admin-frontend multi-server-setup + cleanup-phpcr-database It is possible to work through the recipes, although most of the people will pick the ones, which are most similar to their own tasks. We're open to From 45b5a6b4ad1d52715759556b8399054b3395762f Mon Sep 17 00:00:00 2001 From: martinlagler Date: Thu, 2 May 2024 12:11:57 +0200 Subject: [PATCH 17/25] Add single sign on documentation (#792) --- bundles/security/index.rst | 45 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/bundles/security/index.rst b/bundles/security/index.rst index 190ea424..97222304 100644 --- a/bundles/security/index.rst +++ b/bundles/security/index.rst @@ -106,6 +106,51 @@ the object type and id are also passed the permissions of the security contexts from the role might be overridden by the permissions from this specific object (which are handled by the previously mentioned ``AccessControlManager``). +Single-Sign-On Authentication +------------------------------ + +Sulu supports authentication via Single-Sign-On (SSO). +To enable it, the security configuration needs to be adjusted to allow SSO in the admin firewall. +This can be configured in the ``config/packages/security.yaml``: + +.. code-block:: diff + + security: + # ... + + firewalls: + # ... + admin: + + # ... + logout: + path: sulu_admin.logout + + access_token: + + token_handler: sulu_security.single_sign_on_token_handler + + token_extractors: sulu_security.single_sign_on_token_extractor + + # ... + sulu_security: + checker: + enabled: true + password_policy: + enabled: true + + single_sign_on: + + providers: + + 'sulu.io': + + dsn: 'openid://%env(resolve:SULU_OPEN_ID_CLIENT_ID)%:%env(resolve:SULU_OPEN_ID_CLIENT_SECRET)%@%env(resolve:SULU_OPEN_ID_ENDPOINT)%' + + default_role_key: 'USER' + +After adjusting the configuration and clearing the symfony cache, +you only see the ``username or email`` field when you try to login to the administration interface. +When the user email matches the configured domain, +the user is then redirected to the SSO provider to authenticate. After successful authentication, the system redirects the user back to the administration interface. +If the domain does not match the configured domain, the user is authenticated using the standard login form. +On password reset, when the domain matches, the user is also redirected to the SSO provider. + +.. note:: + + At the moment, only the OpenID protocol is supported for Single-Sign-On authentication in Sulu. Two-Factor Authentication ------------------------- From d513a6351b388f10f650d411ecbf4fa224d386a5 Mon Sep 17 00:00:00 2001 From: Alexander Schranz Date: Thu, 2 May 2024 17:07:02 +0200 Subject: [PATCH 18/25] Bump Version --- conf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf.py b/conf.py index 88897ef3..77789ef3 100644 --- a/conf.py +++ b/conf.py @@ -59,9 +59,9 @@ # built documents. # # The short X.Y version. -version = '2.5' +version = '2.6' # The full version, including alpha/beta/rc tags. -release = '2.5' +release = '2.6' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 642db14e397297c8c64983c8e9bd585702bf559c Mon Sep 17 00:00:00 2001 From: Alexander Schranz Date: Tue, 7 May 2024 10:59:00 +0200 Subject: [PATCH 19/25] Simplify global blocks example to ref (#798) * Simplify global blocks example to ref * Update book/templates.rst --------- Co-authored-by: Prokyonn --- book/templates.rst | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/book/templates.rst b/book/templates.rst index 2d783700..dba2848b 100644 --- a/book/templates.rst +++ b/book/templates.rst @@ -382,7 +382,7 @@ from within a block. .. note:: - Because the ``&`` character needs to be escaped inside of XML files, you have to use ``AND`` instead of ``&&`` + Because the ``&`` character needs to be escaped inside of XML files, you have to use ``AND`` instead of ``&&`` if you want to connect conditions using a logical and. Additionally, you can use ``OR`` instead of ``||``. Language Independent Properties @@ -942,23 +942,15 @@ node and the ``ref`` attribute: - - - Editor - Editor - - - - - Text Editor - Texteditor - - - - +.. note:: + + Mixing global and local block types is supported, but it is recommended to keep your block type names unique + to avoid confusion. This approach also simplifies the transition to global blocks in the future, eliminating the need + for data migrations. + Caching ------- From 43af68ce021f320d14be2cf9fad292adc546dec9 Mon Sep 17 00:00:00 2001 From: Alexander Schranz Date: Mon, 13 May 2024 15:55:09 +0200 Subject: [PATCH 20/25] Update requirements for Sulu 2.6 (#799) --- reference/requirements.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reference/requirements.rst b/reference/requirements.rst index 7f7847dd..adc4a94b 100644 --- a/reference/requirements.rst +++ b/reference/requirements.rst @@ -12,7 +12,7 @@ The following requirements *must* be met to run Sulu: * Mac OSX, Linux or Windows * :doc:`Apache <../cookbook/web-server/apache>` or :doc:`Nginx <../cookbook/web-server/nginx>` with enabled URL rewriting -* `PHP`_ 8.1 or higher +* `PHP`_ 8.2 or higher * the `dom_extension`_ and `xml_extension`_ for PHP * the `gd`_, `imagick_extension`_ or `vips_extension`_ for PHP * a `database management system supported by Doctrine`_ From d671cd910d854053727b4d1f473567b62675cae7 Mon Sep 17 00:00:00 2001 From: Alexander Schranz Date: Tue, 21 May 2024 16:14:20 +0200 Subject: [PATCH 21/25] Fix some basic docs styling --- _themes/sulu/static/sulu.css_t | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/_themes/sulu/static/sulu.css_t b/_themes/sulu/static/sulu.css_t index b3f7965c..a89c2939 100644 --- a/_themes/sulu/static/sulu.css_t +++ b/_themes/sulu/static/sulu.css_t @@ -310,19 +310,6 @@ div.sphinxsidebar #searchbox input[type="submit"] { } /* Basics */ -h1, h2, h3, h4, h5, h6, ul, ol, p { - margin-top: 0; - margin-bottom: 0; -} - -.section > * { - margin-top: 16px; -} - - -.section > *:first-child { - margin-top: 0; -} ul { padding-left: 1.25em; @@ -376,9 +363,15 @@ h6 { } /* Figure */ -div.figure { - margin: 0; - padding: 0; +.align-default, +img.align-default, +figure.align-default, +table.align-default { + margin-left: 0; + margin-right: 0; + padding-left: 0; + margin-right: 0; + text-align: left; } /* Img */ @@ -404,10 +397,6 @@ table { max-width: 75ch; } -table.align-default { - margin-left: 0; -} - .sphinxsidebar code, .toctree-wrapper code { From f94fb664fd68fa37fdb198482aeedbe97b5f62af Mon Sep 17 00:00:00 2001 From: Alexander Schranz Date: Tue, 21 May 2024 16:46:22 +0200 Subject: [PATCH 22/25] Fix refernce bundle paragraph spaces (#801) --- bundles/reference.rst | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/bundles/reference.rst b/bundles/reference.rst index 0be97526..6bcc6c5e 100644 --- a/bundles/reference.rst +++ b/bundles/reference.rst @@ -7,15 +7,11 @@ and location in which an entity is utilized. Presently, the ReferenceBundle is c Media within PHPCR entities such as `pages` and `snippets`. These references are managed distinctly for the draft state within the `admin context` and the live state within the `website context`. -| - The main reason we need this bundle is that, unlike traditional database references, our content management system operates on an unstructured data model. Therefore, we cannot rely solely on database references, which are usually preferred. It is essential to note that the ReferenceBundle should only be used for unstructured data, where database relations are not feasible. -| - Content maintainers are able to see the references to a specific entity in the `Insights` tab of an entity like `Snippet`. .. figure:: ../img/snippet-insights.png @@ -34,7 +30,6 @@ references by executing the `bin/console sulu:references:refresh` command. This bin/console sulu:references:refresh - .. note:: Please note that references are only refreshed for the current context. To refresh the references for both the @@ -47,8 +42,6 @@ To integrate the ReferenceBundle for custom content-types, you need to implement content-type class. The interface requires you to implement the `getReferences` method. The method already receives the `ReferenceCollector` which you can use to add references to the collector. -| - Example implementation for a custom content-type: .. code-block:: php @@ -65,4 +58,4 @@ Example implementation for a custom content-type: (string) $data['id'], $propertyPrefix . $property->getName() ); - } \ No newline at end of file + } From beb04cce07d15c27d67cdd40a4193260be3e0d58 Mon Sep 17 00:00:00 2001 From: Alexander Schranz Date: Tue, 21 May 2024 16:46:22 +0200 Subject: [PATCH 23/25] Fix refernce bundle paragraph spaces (#801) --- bundles/reference.rst | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/bundles/reference.rst b/bundles/reference.rst index 0be97526..6bcc6c5e 100644 --- a/bundles/reference.rst +++ b/bundles/reference.rst @@ -7,15 +7,11 @@ and location in which an entity is utilized. Presently, the ReferenceBundle is c Media within PHPCR entities such as `pages` and `snippets`. These references are managed distinctly for the draft state within the `admin context` and the live state within the `website context`. -| - The main reason we need this bundle is that, unlike traditional database references, our content management system operates on an unstructured data model. Therefore, we cannot rely solely on database references, which are usually preferred. It is essential to note that the ReferenceBundle should only be used for unstructured data, where database relations are not feasible. -| - Content maintainers are able to see the references to a specific entity in the `Insights` tab of an entity like `Snippet`. .. figure:: ../img/snippet-insights.png @@ -34,7 +30,6 @@ references by executing the `bin/console sulu:references:refresh` command. This bin/console sulu:references:refresh - .. note:: Please note that references are only refreshed for the current context. To refresh the references for both the @@ -47,8 +42,6 @@ To integrate the ReferenceBundle for custom content-types, you need to implement content-type class. The interface requires you to implement the `getReferences` method. The method already receives the `ReferenceCollector` which you can use to add references to the collector. -| - Example implementation for a custom content-type: .. code-block:: php @@ -65,4 +58,4 @@ Example implementation for a custom content-type: (string) $data['id'], $propertyPrefix . $property->getName() ); - } \ No newline at end of file + } From 5e393040d780620b846cf3c66f0d4eb559f8fec3 Mon Sep 17 00:00:00 2001 From: Alexander Schranz Date: Tue, 7 May 2024 10:59:00 +0200 Subject: [PATCH 24/25] Simplify global blocks example to ref (#798) * Simplify global blocks example to ref * Update book/templates.rst --------- Co-authored-by: Prokyonn --- book/templates.rst | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/book/templates.rst b/book/templates.rst index 2d783700..dba2848b 100644 --- a/book/templates.rst +++ b/book/templates.rst @@ -382,7 +382,7 @@ from within a block. .. note:: - Because the ``&`` character needs to be escaped inside of XML files, you have to use ``AND`` instead of ``&&`` + Because the ``&`` character needs to be escaped inside of XML files, you have to use ``AND`` instead of ``&&`` if you want to connect conditions using a logical and. Additionally, you can use ``OR`` instead of ``||``. Language Independent Properties @@ -942,23 +942,15 @@ node and the ``ref`` attribute: - - - Editor - Editor - - - - - Text Editor - Texteditor - - - - +.. note:: + + Mixing global and local block types is supported, but it is recommended to keep your block type names unique + to avoid confusion. This approach also simplifies the transition to global blocks in the future, eliminating the need + for data migrations. + Caching ------- From 0c06bc320243e398da4bc439e77e446eab6560ec Mon Sep 17 00:00:00 2001 From: Gregor Nathanael Meyer Date: Wed, 29 May 2024 13:43:20 +0200 Subject: [PATCH 25/25] Update localization.rst: Added a note how to get the current locale Hopefully preventing confusion as noted in https://github.com/sulu/sulu/issues/7443 --- book/localization.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/book/localization.rst b/book/localization.rst index af261d46..3f145d02 100644 --- a/book/localization.rst +++ b/book/localization.rst @@ -70,6 +70,8 @@ For the developer the only touching points with localizations are the configuration and the eventual use of a language switcher on the homepage. For the language switcher the ``localizations`` variable delivered to the twig template can be used, which contains an associative array with the parameters ``locale``, ``url`` and ``country``. +The currently active locale can be obtained from the underlying Symfony Request object with +``app.request.locale``. .. code-block:: twig