From 46c0902c8403f9e379532c1c89c7b3fc8db10e2b Mon Sep 17 00:00:00 2001 From: Julien Richard-Foy Date: Wed, 7 Aug 2024 13:33:24 +0200 Subject: [PATCH 1/2] Fix broken links and emphasize the compatibility requirements --- docs/source/getting-started/ansible.rst | 2 +- docs/source/getting-started/aws-emr.rst | 4 ++-- docs/source/getting-started/docker.rst | 4 ++-- docs/source/getting-started/index.rst | 4 ++++ docs/source/getting-started/spark-standalone.rst | 4 ++-- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/docs/source/getting-started/ansible.rst b/docs/source/getting-started/ansible.rst index 9677a8c4..7638a772 100644 --- a/docs/source/getting-started/ansible.rst +++ b/docs/source/getting-started/ansible.rst @@ -35,7 +35,7 @@ The Ansible playbook expects to be run in an Ubuntu environment where the direct - Ensure networking is configured to allow you access spark master node via TCP ports 8080 and 4040 - visit ``http://:8080`` -9. `Review and modify config.yaml <../#configure-the-migration>`_ based whether you're performing a migration to CQL or Alternator +9. `Review and modify config.yaml <./#configure-the-migration>`_ based whether you're performing a migration to CQL or Alternator - If you're migrating to ScyllaDB CQL interface (from Apache Cassandra, ScyllaDB, or other CQL source), make a copy review the comments in ``config.yaml.example``, and edit as directed. - If you're migrating to Alternator (from DynamoDB or other ScyllaDB Alternator), make a copy, review the comments in ``config.dynamodb.yml``, and edit as directed. diff --git a/docs/source/getting-started/aws-emr.rst b/docs/source/getting-started/aws-emr.rst index 5e6e13e7..61b93837 100644 --- a/docs/source/getting-started/aws-emr.rst +++ b/docs/source/getting-started/aws-emr.rst @@ -12,7 +12,7 @@ This page describes how to use the Migrator in `Amazon EMR `_ according to your needs. +2. `Configure the migration <./#configure-the-migration>`_ according to your needs. 3. Download the latest release of the Migrator. @@ -67,7 +67,7 @@ This page describes how to use the Migrator in `Amazon EMR `_. + See also our `general recommendations to tune the Spark job <./#run-the-migration>`_. - Add a Bootstrap action to download the Migrator and the migration configuration: diff --git a/docs/source/getting-started/docker.rst b/docs/source/getting-started/docker.rst index 6c2b8416..071c06f9 100644 --- a/docs/source/getting-started/docker.rst +++ b/docs/source/getting-started/docker.rst @@ -33,7 +33,7 @@ This page describes how to set up a Spark cluster locally on your machine by usi http://localhost:8080 -5. Rename the file ``config.yaml.example`` to ``config.yaml``, and `configure <../#configure-the-migration>`_ it according to your needs. +5. Rename the file ``config.yaml.example`` to ``config.yaml``, and `configure <./#configure-the-migration>`_ it according to your needs. 6. Finally, run the migration. @@ -47,7 +47,7 @@ This page describes how to set up a Spark cluster locally on your machine by usi The ``spark-master`` container mounts the ``./migrator/target/scala-2.13`` dir on ``/jars`` and the repository root on ``/app``. - See also our `general recommendations to tune the Spark job <../#run-the-migration>`_. + See also our `general recommendations to tune the Spark job <./#run-the-migration>`_. 7. You can monitor progress by observing the Spark web console you opened in step 4. Additionally, after the job has started, you can track progress via ``http://localhost:4040``. diff --git a/docs/source/getting-started/index.rst b/docs/source/getting-started/index.rst index 875d8209..3a7f6aa3 100644 --- a/docs/source/getting-started/index.rst +++ b/docs/source/getting-started/index.rst @@ -12,6 +12,10 @@ A Spark cluster is made of several *nodes*, which can contain several *workers* We recommend provisioning at least 2 GB of memory per CPU on each node. For instance, a cluster node with 4 CPUs should have at least 8 GB of memory. +.. caution:: + + Make sure the Spark version, the Scala version, and the Migrator version you use are `compatible together <../#compatibility-matrix>`_. + The following pages describe various alternative ways to set up a Spark cluster: * :doc:`on your infrastructure, using Ansible `, diff --git a/docs/source/getting-started/spark-standalone.rst b/docs/source/getting-started/spark-standalone.rst index 9378e3ca..26bba072 100644 --- a/docs/source/getting-started/spark-standalone.rst +++ b/docs/source/getting-started/spark-standalone.rst @@ -21,7 +21,7 @@ This page describes how to set up a Spark cluster on your infrastructure and to wget https://github.com/scylladb/scylla-migrator/raw/master/config.yaml.example \ --output-document=config.yaml -4. `Configure the migration <../#configure-the-migration>`_ according to your needs. +4. `Configure the migration <./#configure-the-migration>`_ according to your needs. 5. Finally, run the migration as follows from the Spark master node. @@ -32,6 +32,6 @@ This page describes how to set up a Spark cluster on your infrastructure and to --conf spark.scylla.config= \ - See also our `general recommendations to tune the Spark job <../#run-the-migration>`_. + See also our `general recommendations to tune the Spark job <./#run-the-migration>`_. 6. You can monitor progress from the `Spark web UI `_. From 24eb472d20ab7b4a06269af6194a5e1ee5339303 Mon Sep 17 00:00:00 2001 From: Julien Richard-Foy Date: Wed, 7 Aug 2024 13:35:50 +0200 Subject: [PATCH 2/2] Add a tutorial illustrating how to migrate from DynamoDB Also include a GitHub workflow to check that the instructions shown in the tutorial work. --- .github/workflows/tutorial-dynamodb.yaml | 52 ++++++ docs/source/index.rst | 3 +- .../architecture.png | Bin 0 -> 43842 bytes .../create-25-items.sh | 27 ++++ .../create-data.sh | 14 ++ .../docker-compose.yaml | 40 +++++ .../dockerfiles | 1 + .../dynamodb-to-scylladb-alternator/index.rst | 151 ++++++++++++++++++ .../process.png | Bin 0 -> 57500 bytes .../run-migrator.sh | 9 ++ .../spark-cluster.png | Bin 0 -> 67346 bytes .../spark-data/config.yaml | 26 +++ .../stages.png | Bin 0 -> 53498 bytes docs/source/tutorials/index.rst | 8 + 14 files changed, 330 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/tutorial-dynamodb.yaml create mode 100644 docs/source/tutorials/dynamodb-to-scylladb-alternator/architecture.png create mode 100755 docs/source/tutorials/dynamodb-to-scylladb-alternator/create-25-items.sh create mode 100755 docs/source/tutorials/dynamodb-to-scylladb-alternator/create-data.sh create mode 100644 docs/source/tutorials/dynamodb-to-scylladb-alternator/docker-compose.yaml create mode 120000 docs/source/tutorials/dynamodb-to-scylladb-alternator/dockerfiles create mode 100644 docs/source/tutorials/dynamodb-to-scylladb-alternator/index.rst create mode 100644 docs/source/tutorials/dynamodb-to-scylladb-alternator/process.png create mode 100644 docs/source/tutorials/dynamodb-to-scylladb-alternator/run-migrator.sh create mode 100644 docs/source/tutorials/dynamodb-to-scylladb-alternator/spark-cluster.png create mode 100644 docs/source/tutorials/dynamodb-to-scylladb-alternator/spark-data/config.yaml create mode 100644 docs/source/tutorials/dynamodb-to-scylladb-alternator/stages.png create mode 100644 docs/source/tutorials/index.rst diff --git a/.github/workflows/tutorial-dynamodb.yaml b/.github/workflows/tutorial-dynamodb.yaml new file mode 100644 index 00000000..98f044ad --- /dev/null +++ b/.github/workflows/tutorial-dynamodb.yaml @@ -0,0 +1,52 @@ +name: "Tests / Tutorials" +on: + push: + branches: + - master + pull_request: + +env: + TUTORIAL_DIR: docs/source/tutorials/dynamodb-to-scylladb-alternator + +jobs: + test: + name: DynamoDB migration + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Cache Docker images + uses: ScribeMD/docker-cache@0.5.0 + with: + key: docker-${{ runner.os }}-${{ hashFiles('docker-compose-tests.yml') }} + - uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 8 + cache: sbt + - name: Build migrator + run: | + ./build.sh + mv migrator/target/scala-2.13/scylla-migrator-assembly.jar "$TUTORIAL_DIR/spark-data" + - name: Set up services + run: | + cd $TUTORIAL_DIR + docker compose up -d + - name: Wait for the services to be up + run: | + .github/wait-for-port.sh 8000 # DynamoDB + .github/wait-for-port.sh 8001 # ScyllaDB Alternator + .github/wait-for-port.sh 8080 # Spark master + .github/wait-for-port.sh 8081 # Spark worker + - name: Run tutorial + run: | + cd $TUTORIAL_DIR + aws configure set region us-west-1 + aws configure set aws_access_key_id dummy + aws configure set aws_secret_access_key dummy + sed -i 's/seq 1 40000/seq 1 40/g' ./create-data.sh + ./create-data.sh + . ./run-migrator.sh + - name: Stop services + run: | + cd $TUTORIAL_DIR + docker compose down diff --git a/docs/source/index.rst b/docs/source/index.rst index 4e26d901..eabac5e6 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -9,7 +9,7 @@ The ScyllaDB Migrator is a Spark application that migrates data to ScyllaDB. Its * It can rename columns along the way. * When migrating from DynamoDB it can transfer a snapshot of the source data, or continuously migrate new data as they come. -Read over the :doc:`Getting Started ` page to set up a Spark cluster for a migration. +Read over the :doc:`Getting Started ` page to set up a Spark cluster and to configure your migration. Alternatively, follow our :doc:`step-by-step tutorial to perform a migration between fake databases using Docker `. -------------------- Compatibility Matrix @@ -33,3 +33,4 @@ Migrator Spark Scala rename-columns validate configuration + tutorials/index diff --git a/docs/source/tutorials/dynamodb-to-scylladb-alternator/architecture.png b/docs/source/tutorials/dynamodb-to-scylladb-alternator/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..6a019613513a19d385512ac2e235754368ab1466 GIT binary patch literal 43842 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 D2?6j* literal 0 HcmV?d00001 diff --git a/docs/source/tutorials/dynamodb-to-scylladb-alternator/create-25-items.sh b/docs/source/tutorials/dynamodb-to-scylladb-alternator/create-25-items.sh new file mode 100755 index 00000000..9d0d03b2 --- /dev/null +++ b/docs/source/tutorials/dynamodb-to-scylladb-alternator/create-25-items.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env sh + +generate_25_items() { + local items="" + for i in `seq 1 25`; do + items="${items}"'{ + "PutRequest": { + "Item": { + "id": { "S": "'"$(uuidgen)"'" }, + "col1": { "S": "'"$(uuidgen)"'" }, + "col2": { "S": "'"$(uuidgen)"'" }, + "col3": { "S": "'"$(uuidgen)"'" }, + "col4": { "S": "'"$(uuidgen)"'" }, + "col5": { "S": "'"$(uuidgen)"'" } + } + } + },' + done + echo "${items%,}" # remove trailing comma +} + +aws \ + --endpoint-url http://localhost:8000 \ + dynamodb batch-write-item \ + --request-items '{ + "Example": ['"$(generate_25_items)"'] + }' > /dev/null diff --git a/docs/source/tutorials/dynamodb-to-scylladb-alternator/create-data.sh b/docs/source/tutorials/dynamodb-to-scylladb-alternator/create-data.sh new file mode 100755 index 00000000..c155340f --- /dev/null +++ b/docs/source/tutorials/dynamodb-to-scylladb-alternator/create-data.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env sh + +# Create table +aws \ + --endpoint-url http://localhost:8000 \ + dynamodb create-table \ + --table-name Example \ + --attribute-definitions AttributeName=id,AttributeType=S \ + --key-schema AttributeName=id,KeyType=HASH \ + --provisioned-throughput ReadCapacityUnits=100,WriteCapacityUnits=100 + +# Add items in parallel +# Change 40000 into 400 below for a faster demo (10,000 items instead of 1,000,000) +seq 1 40000 | xargs --max-procs=8 --max-args=1 ./create-25-items.sh diff --git a/docs/source/tutorials/dynamodb-to-scylladb-alternator/docker-compose.yaml b/docs/source/tutorials/dynamodb-to-scylladb-alternator/docker-compose.yaml new file mode 100644 index 00000000..20f1069d --- /dev/null +++ b/docs/source/tutorials/dynamodb-to-scylladb-alternator/docker-compose.yaml @@ -0,0 +1,40 @@ +services: + + dynamodb: + command: "-jar DynamoDBLocal.jar -sharedDb -inMemory" + image: "amazon/dynamodb-local:2.5.2" + ports: + - "8000:8000" + working_dir: /home/dynamodblocal + + spark-master: + build: dockerfiles/spark + command: master + environment: + SPARK_PUBLIC_DNS: localhost + ports: + - 4040:4040 + - 8080:8080 + volumes: + - ./spark-data:/app + + spark-worker: + build: dockerfiles/spark + command: worker + environment: + SPARK_WORKER_CORES: 2 + SPARK_WORKER_MEMORY: 4G + SPARK_WORKER_WEBUI_PORT: 8081 + SPARK_PUBLIC_DNS: localhost + ports: + - 8081:8081 + depends_on: + - spark-master + + scylla: + image: scylladb/scylla:6.0.1 + expose: + - 8001 + ports: + - "8001:8001" + command: "--smp 1 --memory 2048M --alternator-port 8001 --alternator-write-isolation only_rmw_uses_lwt" diff --git a/docs/source/tutorials/dynamodb-to-scylladb-alternator/dockerfiles b/docs/source/tutorials/dynamodb-to-scylladb-alternator/dockerfiles new file mode 120000 index 00000000..d141b4dd --- /dev/null +++ b/docs/source/tutorials/dynamodb-to-scylladb-alternator/dockerfiles @@ -0,0 +1 @@ +../../../../dockerfiles \ No newline at end of file diff --git a/docs/source/tutorials/dynamodb-to-scylladb-alternator/index.rst b/docs/source/tutorials/dynamodb-to-scylladb-alternator/index.rst new file mode 100644 index 00000000..02c90d3e --- /dev/null +++ b/docs/source/tutorials/dynamodb-to-scylladb-alternator/index.rst @@ -0,0 +1,151 @@ +========================================================= +Migrate from DynamoDB to ScyllaDB Alternator Using Docker +========================================================= + +In this tutorial, you will replicate 1,000,000 items from a DynamoDB table to ScyllaDB Alternator. + +All the scripts and configuration files shown on the tutorial can be found in our `GitHub repository `_. + +The whole system is composed of the DynamoDB service, a Spark cluster with a single worker node, and a ScyllaDB cluster with a single node, as illustrated below: + +.. image:: architecture.png + :alt: Architecture + :width: 600 + +To follow this tutorial, you need to install `Docker `_ and the `AWS CLI `_. + +---------------------------------------------------- +Set Up the Services and Populate the Source Database +---------------------------------------------------- + +In an empty directory, create the following ``docker-compose.yaml`` file to define all the services: + +.. literalinclude:: docker-compose.yaml + :language: YAML + +Let’s break down this Docker Compose file. + +1. We define the DynamoDB service by reusing the official image ``amazon/dynamodb-local``. We use the TCP port 8000 for communicating with DynamoDB. +2. We define the Spark master and Spark worker services by using a custom image (see below). Indeed, the official Docker images for Spark 3.5.1 only support Scala 2.12 for now, but we need Scala 2.13. We mount the local directory ``./spark-data`` to the Spark master container path ``/app`` so that we can supply the Migrator jar and configuration to the Spark master node. We expose the ports 8080 and 4040 of the master node to access the Spark UIs from our host environment. We allocate 2 cores and 4 GB of memory to the Spark worker node. As a general rule, we recommend allocating 2 GB of memory per core on each worker. +3. We define the ScyllaDB service by reusing the official image ``scylladb/scylla``. We use the TCP port 8001 for communicating with ScyllaDB Alternator. + +Create the ``Dockerfile`` required by the Spark services at path ``./dockerfiles/spark/Dockerfile`` and write the following content: + +.. literalinclude:: dockerfiles/spark/Dockerfile + :language: Dockerfile + +This ``Dockerfile`` installs Java and a Spark distribution. It uses a custom shell script as entry point. Create the file ``./dockerfiles/spark/entrypoint.sh``, and write the following content: + +.. literalinclude:: dockerfiles/spark/entrypoint.sh + :language: sh + +The entry point takes an argument that can be either ``master`` or ``worker`` to control whether to start a master node or a worker node. + +Prepare your system for building the Spark Docker image with the following commands, which create the ``spark-data`` directory and make the entry point executable: + +.. code-block:: sh + + mkdir spark-data + chmod +x entrypoint.sh + +Finally, start all the services with the following command: + +.. code-block:: sh + + docker compose up + +Your system's Docker daemon will download the DynamoDB and ScyllaDB images and build your Spark Docker image. + +Check that you can access the Spark cluster UI by opening http://localhost:8080 in your browser. You should see your worker node in the workers list. + +.. image:: spark-cluster.png + :alt: Spark UI listing the worker node + :width: 883 + +Once all the services are up, you can access your local DynamoDB instance and your local ScyllaDB instance by using the standard AWS CLI. Make sure to configure the AWS CLI as follows before running the ``dynamodb`` commands: + +.. code-block:: sh + + # Set dummy region and credentials + aws configure set region us-west-1 + aws configure set aws_access_key_id dummy + aws configure set aws_secret_access_key dummy + # Access DynamoDB + aws --endpoint-url http://localhost:8000 dynamodb list-tables + # Access ScyllaDB Alternator + aws --endpoint-url http://localhost:8001 dynamodb list-tables + +The last preparatory step consists of creating a table in DynamoDB and filling it with random data. Create a file named ``create-data.sh``, make it executable, and write the following content into it: + +.. literalinclude:: create-data.sh + :language: sh + +This script creates a table named ``Example`` and adds 1 million items to it. It does so by invoking another script, ``create-25-items.sh``, which uses the ``batch-write-item`` command to insert 25 items in a single call: + +.. literalinclude:: create-25-items.sh + :language: sh + +Every added item contains an id and five columns, all filled with random data. +Run the script ``./create-data.sh`` and wait for a couple of hours until all the data is inserted (or change the last line of ``create-data.sh`` to insert fewer items). + +--------------------- +Perform the Migration +--------------------- + +Once you have set up the services and populated the source database, you are ready to perform the migration. + +Download the latest stable release of the Migrator in the ``spark-data`` directory: + +.. code-block:: + + wget https://github.com/scylladb/scylla-migrator/releases/latest/download/scylla-migrator-assembly.jar \ + --directory-prefix=./spark-data + +Create a configuration file in ``./spark-data/config.yaml`` and write the following content: + +.. literalinclude:: spark-data/config.yaml + :language: YAML + +This configuration tells the Migrator to read the items from the table ``Example`` in the ``dynamodb`` service, and to write them to the table of the same name in the ``scylla`` service. + +Finally, start the migration with the following command: + +.. literalinclude:: run-migrator.sh + :language: sh + +This command calls ``spark-submit`` in the ``spark-master`` service with the file ``scylla-migrator-assembly.jar``, which bundles the Migrator and all its dependencies. + +In the ``spark-submit`` command invocation, we explicitly tell Spark to use 4 GB of memory; otherwise, it would default to 1 GB only. We also explicitly tell Spark to use 2 cores. This is not really necessary as the default behavior is to use all the available cores, but we set it for the sake of illustration. If the Spark worker node had 20 cores, it would be better to use only 10 cores per executor to optimize the throughput (big executors require more memory management operations, which decrease the overall application performance). We would achieve this by passing ``--executor-cores 10``, and the Spark engine would allocate two executors for our application to fully utilize the resources of the worker node. + +The migration process inspects the source table, replicates its schema to the target database if it does not exist, and then migrates the data. The data migration uses the Hadoop framework under the hood to leverage the Spark cluster resources. The migration process breaks down the data to transfer chunks of about 128 MB each, and processes all the partitions in parallel. Since the source is a DynamoDB table in our example, each partition translates into a `scan segment `_ to maximize the parallelism level when reading the data. Here is a diagram that illustrates the migration process: + +.. image:: process.png + :alt: Migration process + :width: 700 + +During the execution of the command, a lot of logs are printed, mostly related to Spark scheduling. Still, you should be able to spot the following relevant lines: + +.. code-block:: text + + 24/07/22 15:46:13 INFO migrator: ScyllaDB Migrator 0.9.2 + … + 24/07/22 15:46:20 INFO alternator: We need to transfer: 2 partitions in total + 24/07/22 15:46:20 INFO alternator: Starting write… + 24/07/22 15:46:20 INFO DynamoUtils: Checking for table existence at destination + +And when the migration ends, you will see the following line printed: + +.. code-block:: text + + 24/07/22 15:46:24 INFO alternator: Done transferring table snapshot + +During the migration, it is possible to monitor the underlying Spark job by opening the Spark UI available at http://localhost:4040. + +.. image:: stages.png + :alt: Spark stages + :width: 900 + +`Example of a migration broken down in 6 tasks. The Spark UI allows us to follow the overall progress, and it can also show specific metrics such as the memory consumption of an executor`. + +In our example the size of the source table is ~200 MB. In practice, it is common to migrate tables containing several terabytes of data. If necessary, and as long as your DynamoDB source supports a higher read throughput level, you can increase the migration throughput by adding more Spark worker nodes. The Spark engine will automatically spread the workload between all the worker nodes. + diff --git a/docs/source/tutorials/dynamodb-to-scylladb-alternator/process.png b/docs/source/tutorials/dynamodb-to-scylladb-alternator/process.png new file mode 100644 index 0000000000000000000000000000000000000000..d861a7e30f7e36d44328a9e62af418303bca1c8f GIT binary patch literal 57500 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 Pf`DOj;xxYgI5FWr>L56~ literal 0 HcmV?d00001 diff --git a/docs/source/tutorials/dynamodb-to-scylladb-alternator/run-migrator.sh b/docs/source/tutorials/dynamodb-to-scylladb-alternator/run-migrator.sh new file mode 100644 index 00000000..d508d451 --- /dev/null +++ b/docs/source/tutorials/dynamodb-to-scylladb-alternator/run-migrator.sh @@ -0,0 +1,9 @@ +docker compose exec spark-master \ + /spark/bin/spark-submit \ + --executor-memory 4G \ + --executor-cores 2 \ + --class com.scylladb.migrator.Migrator \ + --master spark://spark-master:7077 \ + --conf spark.driver.host=spark-master \ + --conf spark.scylla.config=/app/config.yaml \ + /app/scylla-migrator-assembly.jar diff --git a/docs/source/tutorials/dynamodb-to-scylladb-alternator/spark-cluster.png b/docs/source/tutorials/dynamodb-to-scylladb-alternator/spark-cluster.png new file mode 100644 index 0000000000000000000000000000000000000000..7dcb8eb88e3d24c2a8896b5e5933ac087f4e53f5 GIT binary patch literal 67346 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
&8Fb^2?-O3$ zBiauBZf%Z9q84Uk{P?z2x~4UXLMrM6QoRJJ zb80yBZIO`9uftgN%&C8SYv2^8Zkdx0E{%KZaELiACGMKqtLkIH@Ot>y3 z2UVO<vHluxAeMH0u2Kuweyz#cv=cS;gS&bb?o6n26`R+kZ?(I7 zJSE3`R>D_13K!30*rf^T-C9X+0zr3q5tdf*NtilT_6lMbQ@lQEQM2_jI9nH^WdlJ@?-;!QI2-aZ%z~M zV>NyQCzV7DGd$%MiJs9#vMvchRHnRFm1x>3&F4pPca5r@D#3D*52^zbIH$F$olN=x z1yWAU9-%=diB4qQNX=A)rZT{k?m`0%EKKc3XWsjKj2*A@a)v0fu@Ic3(#&Ef-CQK4Zs@GSztcO>;Inj9uMy0LwA)=YC?E1@TzrCocRK(Zd@?}1C zKo=%p#F#=656Ov6ueOG%L`6& z(|YEMIbz%FY)y90>BmRE#U_M>I3#Dy>LO z4!4)kB^ELQVW*^FVq%RhkLOtoAcI|j_P=`%@S|34T5R);t~G8w=!~7O-yq*|6hQ+) zAlB^PlD3FTlQQX6JK?G2Y{>|yo%YyqNYYHHGBth%Q}lAJZsk^Tw6Y-EH(qq-B!;`tAvZ_`J2V*B6x%FQ8`t90leD@auQ$V#_2UxV6pb9-j z3;GKm>u%cy3o|*=bf@W5z;{8D=NX6j>rb;&8bz^Wl#7Yvjfo6XI}oXJt^!O(-c0C3HytZ0%tvSpwU!ym}g+t~QAbGw-@6ThJIv{c~mi$v8tt|dxV zc*Ti>j=;?v_14;Qpvg`^D+)f=;VY&e9wtF|$OKETc8D{e30vw*ob(f9J$5?4H=%Ol zT{2#SVkTLzoksdSF8v@HSN2mcVJpty^zTAAKlB!HLy%WSpPs-r>#T6SdHUDV4o6~Q zspNzhACq_&uGK5A*rYh-wW2t4j*|z37sYUGf{>e;?RH7C)b&yaPRhti{HA)W z)L3H5hSFJG9GS%PT&?PpMadRiqTf3*+O6(F#16=M%ILdh)vR(O)Wk=jv{P}V_emp) zW}f{d;??}aOcg%-KWCA-<+}NDdxiRk-bAS);0Q@IyQ#K1Q3JRt>13QYt#0cfUzzYS z)Ldl}kn>zUaAp}AUOvR7cPNacN!XO#(*KlU(BM|nJiD5w?7XbwPsL?9m(BmblAneJ^pEvfM3(NypD;7<(FqFd))RW#o{9TkRi3Z9IQ+bH;u=Dp? zv{vm-Ks@AISitS$AOXM7^)vEYbFi40LU3{;(`|M;l81**UEa9|qBwG=h_k0u4;Iu4 z(Lm(E8oYtHZQf~F!YcJ%Vj-iE7t$}}{D6&4i+s_}PDg9P(defvMmg*F!(hkN*~7;l z7Z!}+Zv?>$Tud8@%0eH-Y}?uk_?6vwmuXE;D;M`Dxlb#<8B5jS#b_drm6ohIIz1*v zc1E+8Rc@b4X>CePG@LN)rFVSKOPwU~Kr>aMBTEi;mp3e#n zFka?+rKP@Z-^}MbUS^{wObt>(pYjKPg^g&Eg3aqZ*D9dDr5z^_hgi=sZ9a%I4s-0W zHX-#L?6sbPsg3M#>Rgpwp6hbdd{n?=i;eM833@(NKo!} zjuMtX0NJ)V-iW~7dj0rdcPg7}DHNm%JLuNc4Y>Esa?MadSsYiVy3IF|eK${8LAP__ zes$dBwS%0f`_x7$MyCo{7-d*fD*`0XC&~Ed0b0 z?T@F&e6Mfy)ttEh_#pZ6tYZ2`XhwGdf@+$|hxUE?TfFSFJU6+@tg`w-`5HsKB)(di z-XxGEqm5r_vf*s6%EROu=*t$z>gIF{7CvZEc^t4sBfVtZ|3npCdO9#Ne@X#9L(;h~ z4ajYPA#PDOlQ(D%f7HewWlM&tm2KQqtKVqc)N)5om$i$B;ZmR)xESD{gt;ZW;Iy0oKxz^QBiWcsT{3Idk}wdeFN z30{+do^-|@qABZdNPV9?>9K0y^glZx#{_Eb>)171ci$l_PI(kU zKN_7kT~E(F)6SiW==;q9vEV`0^0MRV-_&szeHXp+*js_V$n$*0nJ;?bJ1=}5bq?fTB|wmZsNOA6ey`2wg`-PEQTam`aah*pAn zw&8umEgya+aTY^r;_3ki@}u*vez-oPeE zGW?keHp-us##`UkFLdf^4lI0lk9#lyft{++hf!W_J7SytDptSYB2Hzn+24wgL(Y<% zhVxL3f(OL?s||R>Q(if=1%&k|`9E3MqNPE8D7wb^^x%Lw-`ZjnCbUd@;S?Unq^SFT z8aS${r{20kckxty=0NT8-C zM|(MLDjdlTzI%Vt)+VcsG(HMp{U60%&+<7|a}4Z0TZm!X5bhoDfE{i+!7L`#VTWUJ z1R%j`R{!vm#4*7CfXYx1_s>wQbxP{Dxpm2tmP=6ZJRF9f)|5Q@ z!SYM#u*T~GK^i!rKhlx-^6{|a#BjD|d2Ef6qBD4bh507mpp{VSvjDWtm(~~U8P2H> z$G)}#Hn`P*Ol&gc>4X*m{(f{rDe&YAsBmONDA^`pZ1# z%x`ZC^ijO%(JD=!X#YRL9@=nv1l2Q_eGrjuIa=i0PO3Oh!R>_5jvV>+yw7mP|ICY& z3ySmC-TR$qutpwf9(bfW1|oLYbIWhzU7q>7GOS(0MZ2^memY;vJdwWvKy0S9!= zrFgE3ole4Ue|3d@Y}Vkk1T!Cgi@r_17|||qYvC+oGw^X;<2Y|G0hqu&NtIi$CBCeK zOHLW0Vi~a!#h~tDMBCBDsXUb!*x{!RZbAAe3F8Rktc{`%fI{s$+4en^Z7C)Hwz0nx zV#vn;J56#6R8Eb3L8``65_D4wL4bOC4hrd+UdX~pO)8(VMy(x{2sh>JCVc)W3~D7}qFZr6V& zdB)UW(!mP!gi+D zH)m7)ZbEB z%TD|I)Z$oR?e#0#TW0Q>me;a*GhTe+t-qOA+e~jC!8}u?!IUpt` zwdI$5>VC5HbsiZKJ36a!fE!xsU)NQdJv{Y=v9R|EGKPGsJ;7BaC`Y!c1;xlVk3=@} zH-5whV!pM+m7Lk2{Wfd}&k3mtKF|2-T|S3a&-hACG&#>^u=MF5?r={uS+pU=4u?Mb zfJ`x`kqxw?jSQ{>(GfOIEx~MJjrLRmZUO zF~j|cC)}c*@3-1#KM;e!KqlmuDW#(VF+N!H65kNxD^=>9H&Ue7Z??NcbuIad@V(Qz zwGv+#h-(+HUP{bPaV^z1k`9cI_uWaXsT$F=b@C|E-T%5FAxa^WY_uL(*V3m=AwKj0)O`0M=D4xOLo>8 z^JM+nnF6G|tA@C7Z;^?A{?fBeP;DZ8A=R}W$MX|CA)ROWjs7*%=BYNiG$8(oDD-E> zW5Y&;K2=e=`k(z2)huTIL)yk{GEUZny~~z7{z4fHA%LYGKhbWv(#DbsyU1^G%{}?i zM80W5+W3cs+OVeE3W)@hcsF$j=fTk4RtGzS?iod0b~hngZYMhA&dpGb<9iVcA?+#> zc|8R>+6)$^miS_|!%eJ(_|n#6zTW2Sxp&7=FLO?|VW;0zvanIr&blpbZ)j=obmK!o z9=v%Uxirn&Qgm>42foo3Il5DP>bSuU9tQO^2&aq3vs@5h6yCaj5Jn7(qDTcb^8jMX zac5far2Qf7Ed63rn~)|csilZ6BB8+VwiVmH(6Pe7hL3g5T2r2ABBE{k&vx5=dVf9R z)H6%>h^8!212+c$*=Nb>ZqT7^w~bg1Ft^c3#ycZypI_^-KhiPEbSd};rQ+jPf=HZT zC)dmukn0Vx?}!JduNUpccu$TTxo?In&h0Rg-cgi|ZDvMvwcXx*t1FS>@7HsrY{X=)_ zNKQwLEnvdx{?gdiD;_xI{~dC{z4gyp^=uWx=tLz{)si};F9V@)7=FE-hg_`TSFe** zCJevHt^kKwCdoYvzgm?jSD**K*9#rWQH_U+ZBv5lC2i4n6#e!qUN5vqjb~jUDK=dB z_3gRlf?~jyc|DP^;f&ur16@Ap?0ENtd?VR%ctC|!;~Mz-@f%uC`K-%*EHH=*Vz=aD zHb{rLnwQIEEs8MwB4FiU%k~;IvvO9xWQ_|0ch)b7i(ff}Um-OfOZ#~6r2|%|Z-#Rj zfu5h2R`&mGnd`Zn=< zoTDu@SGEt^)VpwT;(45o|HO*c!AlHwfjMh+A^h~P0QZhNKS=fb^q1>uWKSOhCZV5T zv1PpL?vAVO(oPJ&%m+M8Bx7g72INmU2xB7rM>Z&|NN3i|foQCOyZC_XJCI^MSgVhb zox4aonn4UACPtY07rSJA5-Os>_%_O{u$*A!uV{cU;4>zY`1%0C#kHX>HRx!0*MlFH z)13<`D<_}6MarJ3E`B1~X>Xd`-!)nnZ;Ux;T&%vMyUA&8e2k}cj$KF`JwFAa z|BxX)-6@F4dY>d8Y@Ce48-`Y*7aqgkSr~F(km>gOn9!jVvw+lFkj5w#y5Q&wH~Uh= z2!{Q^EWSH`NCaz3zSjskDEhi5Ox#};F?>HgBB8Nz%v>0VJzx;jE-B{EfA-al@8&mb z$erzuWg4)x;_v0L;>NT}j2QI9Se8h?6&$J*NL-5x>z}Uk8f2`K;c=Fw{TL~U43SlY zPnKAOz%REibj0v4hu*Y)jHUok7@np@4WJBA#<$$y7RhCNJ?hHg5x&?c2&Y0PMrPOF zDVS}28MH<4*=(WAg^m_sC_Ck+o&SA zQQ{|j+W28n@F5hm?%7xM)V0n>97N!2d0QSeh!{DcEH|CxXJon>zobb)+bbiNSa|X* z)>Phz7*^aAt}534h&GsV0rx-2e}bmaJ$U;MJf;%RlY(fY1bCJ7>kn{9^F|Gx2M;mD zgOolq1^UGZiCM~JLBU~{pNpz9+}ZGbgLtAt;|a)jg5G5*CpxGU2iD z!S7%`!XZ==gp3I|iwf^Cf; zy)bPGI6)AUF7CMsdf+ssxgUl@9z;BCx0iNXe2iZ}=vO&S+nd}g)!ViYv-Uqd#OWbB zsGeS=hXLjJzaU+r*|x~?8T@MP{i}q@el~F}{KpFv- ztf^XyurI!oX@VkvCo}WyxRo+_!y4y8 zoywrn{-q}4ATU59ys?51=a=;Vut2`N`|ZZx*_Hgq45w(_AiYkVzUA)AF=CC8JdlBO znZYY5ta5jSVr7`+LOFutUZoUqI%OkS*kzoIt9&Du8D zrQ=VQPT0;k-OWTf4|{`{EYwA8&`m4{j9enPqvVvjGnUorGAqwDDnXKKDNiw6+fC)9 zM|;M<`tBTx1u*}GyuJtq<|Eofh6<&u8Vq@=@Bhn=(aP>bMAuxVYLt$io+xwrR9x_1;w{Jg@9G8q{r?Sp{QnNB{D1w;+fN2(;93RJYptv7-%QKn4UVu9 z#Iud2?7P)W4U@(w7w-JMu4fH;CXxWXWl{B)Hq3eZPE5QSPNd$cHd?4ZjVENtvKC^BDs`q8AVHrR>U>>UgEHXw6CGu3e1m1a6&2-DQ_kF=Dr9*d3 z2tW5|v6;*{weeo~`OH*+o$JnSc|Urlf!J!F>~%zg_Dp#9U9XsFB=xS%cb|O2YtMJr z>2sYz9xdaTgd9&hVpz)8aOeDA`UcC{TanqXSV3)-HL8EsUE*zEF%r8RRSP${xfgEh z`Lr)f4gu+K#q`FY=rUqV#<%QA#fe^m={XU%dIrTD+p4Gd{iw%$i{ZFrhUQl1EYkZ~ z0boGmrMzuOlj@ll1-g^&-b;J=+S=$tw=5=$o#jBs{k2)=N3qB4$2AwqvhacE!5s1wi-@Wfl zeD6gJjz0GT73B}YCIgsH)84|w*EN}Zl3Sv>e=h!9E6iFRUh1p5D%2MNqLCbw_8WR% zy!)2v%KF%wkM?5+x1c^2vjZlx6%4NCWrMDHn(0pKA};}--O^ZEJYwa(f_bH3rEgr} zVEgozErD&}8ttoHmHZ2aW{025m~eaY$bOZe0xN~A7B*0Y-VmTmD@ ztHG>>sssod5NKwP-#Vlr#<+C2vy&ZlbSMls9+EUZ4M`47f^dyyT>ZPE9g}W1%|RN{1VJUSjDoQv6kCT5-spm zj(Q)pGo{;-t$bFGY-xVhuJu)cQBg+=1#5jA{YhGBhJ=@-&j7$xtDMDXtPF57CzW{I zgkA)UG1ldMY0zur%GH6eVRZ}Et!x(-zYR$zTMGtoWY)QtuNQF}lW{V0g<^;DHso&^ z{fm1?c7bj$yWrbuA6UA@mvA?khIA$t7~Hm`E`5+5SxiexoBXwAr!jh)mV$a>W2W4z zLJQvB9_-9K;b^>^!B6cH@}+5xG*(O?1JRbFf801MYiL+fbhzNSpHY*$^?Z=D@)-jR zvPml#DLu!Y`2iiohk>C_zovg>1$^S9=E#tIr>7=1)4W0g=R>Xh3oeu7=-j2J$|nk7hm{2kL^{E3msvd+>G#O1Qc?Y*s{Kk4?Ht zG&zz4`9Q47!4XLN9@gKZh5hRK9#+XOXgiQ)mF0aj{)&wSNa7y?72YX{-?K~-6oOB zunXI@E45?-LUH%Eo2&Sz2;D_1-*HcQa zDuDE)VWZ}hV_b{D3;7H%Npt?1pE|CLZ#L|XO3H0tbe)FB2>fU&8B{X%>eT!@wa0J8 z#3Po1JoGi=Ga)3QSA0;6mL4&J%g1|eC^orgbTG(Ee`pqsXehaC_IksSN+JtDWFXpV z7%UU5PK;k!C?5mn^+0cM^T);w%s>^XlA^MWxSFle4@nFN>j;v-fjJ3 zGs5bnJ4qZgEQXth*K}86rA9(@R>aVunu2Gc?lMmrDk~O5LcfL0kt11;hvfS& zM9Btcayj{<0tT3vQZ!V)(cre${X!f+GIaKA=${3J@Q8PfS$^9od|f|FGur2kU7us3 zo)`ZFkI*lCy7SGr(l=H}hyZGVC{txw{ahBQ8jQmD{X56E59wiVAm(npq^vB;!j8u} zGsK5V6&}D(a-kItNjWS;nD2?Jy``&e9N@2363)AD6E)3kNehbP4mSBAChTyZh$1Vi zilb0WmLR=FLRYOI3?rRy9)5V1`itQmh(1b|D)A(>%2>*uPkh15$V^?+Qls)&}9jS05%Nr$I7Jh8^_5S z^I@7mGnw#Ms?m!Yx8W+@+@TqlX)eaf-(nV-(v;O1l_m+_^C2af2k>Q5Cj9ang?QBy zxjnW=U5|F%;3%={lJQ~p3v}xOtXsZh;Cm{YTfjy>c)v@dMk>|3rWY6oc!4?&?E*UuL9dhUL6nQU&vqwqKciA^sDPp5$kKr6 zZ)j;+G(w9fsv%0UqP?8v|8#}k=!@k|L|npvb(b;sWyM*Y{sQTaz)X8fdkBLo|028Id_h$8@%=8F{$^(P_8}Np;)TcjV>FoD*R#o z0(F$oEz8iopvEOy*M}wa?bO8rn{9iNS@W(>2I3O8)SAVe$kj2Q4js!Mz16=kC)!sd za-`H}NFK?H5ps)7k#Dr^3LZ6a>8Jf_EID(vy2XeOIYwgB4gy8ec9C%VHwOs#`O1zE)vd_Oc#ux5D+5dSz z@XG&z-l;_zI+%Wuv3OwJ67};k_ZrmXZ_SWLIuo$*Mz|W}zs@L`I1&cfxuRCR_WC^h z*nIK^$dfeIdn<5B_k(VP@8y~g*@i(a3aAhKpEYz^0l4nKm8f!dL2>r6g{n(;etP~&%0SXX{5+2E(0Ly zH=C?ex1~1#ZK!MNbPH)2zY_?k9?iWpkN+OR0mCyc%k|w<$>pjXuk?w%8;Iq?35aX? zS#wan0wZkR^CUcOZU6fSGzb1DP`Yz@51!XFed^PpE=0c}Y}&dmGdE2@hKYq@%gmM{ z3RHa(FhzFfCGVZtKSM&frXznUb9}QCIGlU+eY>aJy8dZ&==Tc&m%zgSxDbjb{3gaL zsvTYYgn%Wt=qPbmRnxF5yb4=~6H+Sm%B0ui(}2Weu(TgeB&4TIRLJnFE1GwRW6O_m zOjTE3g`6~+Zfd<}k=Rbsah%QeT?VS~f0x2(C}Sj|EtAG|Yrd-uUGZCT?W|2LKDzhe z7PAwt!Wif7>DyP?dD)J(I{`*@1FI7alhJAC8hjkKoW|L3X4B`duMQ$*T@uvEx{Djg zlsrQf=2s4UxTQbzE8k=msl% z1IR$frYD7y9wqR(dr=eC#wCkuVz0CV1W0U7qbONCL1`hhR z*df?frMimk6f=gZ@p7-(eAABG2?(HdM+WGOiusmw`+vJPB9L>8hem5`G|G%&C_0Q# z*LWWVSniOU4{ud!?+2&;5Vhu zuok?UiI#-4i0>mMhuUcF4F3|*cTKN%k{^4|FRWnO*)dO$uOT}b9?rw>zf~bSG#tzK z*!m1}r0MdJd482Y*>a~sUOI4KCfBAaf&Fv)uj{BxzJ=qPwJZV>Uprh zS*LWAc9BW7QYU?vp~|1q0P1@Q<#vPP0fG8=!Vl#~)*8L%c}coA zRrLwnW&COw8}lud>zKPUS~ydwAA9|rGc%?49z5AL0hugn4rhqrR1YgOIG0p%+%Gf&b6FvQWIQl8cciN|& zdmXAoP38-iA3SE%de+vdGyX>WIB@ZCa>vtu&8<_wwVmIO%m+gLeF$TX+5WkZ1damv z@VM(t6on#2R-=*gJUxCtU1U@ghKs1k>1kLjlG<;`k`-TcIsAk=bU?FU3b(SWXJ7Z~ z{4F2B)um4sld1Cl~tAShP2G9RQwEr#A{XbsZ zZKjUC#=hHl-bjfk#R`V1@?`rr%&`HjFT)m|6B4e&jL(5JbjRqgj#Yjb6j=kbJUL|f zeG0o3VD=hjG*qW`zK=}dGtyl;8RP}0Y6fNQsZ8$Y{SM4unE-sg^`DMIY?0r2q(STN zu!O!8K5sRN9##1rk`NwV*SiXW%rgX8}Oc~B0F_5*E^Uk?nQ78e!!I{=}`dghH z<(q43En$+uIOzZJK5YqD}bG z|IVsZ5jv2PYlE-SGyfqLs-v*KK5d5|{Z53um+>1gPA34)mM8Jqa?MYtamo++)8$@f zbz)c-z_&|W0c=iX+FRrXNE2B)9rTc0I}Ni^Cs0JfvMAxBPu|&m zpdnXPD3lXvJQ6Rv_z3OVpu9B>NP?e0ToLz)2SB3WY~mY#QbpV{sbz{xU3yox_XN9~ z``CWAU(hKm)92u6nWoQA=jOU9hrKi@y*W3tzY16va$e(MitBL)(wWwr>m@5sY5F2A z#oX}OyK%Q_Qv15ZH(R$g9QTD(>!f=au#=E|Jg1_4mGi7c-?>zR9idt426Ow390JZ6 z4DeAg96ZGLRt#jN0O|@j2OA6v--yA_ zasv%6*iNl~2Gu2ZXH-pv%?c~52DspTo}8lmRFCL`X;mK2=k`pXtV1o=0qfgSp4TeR ztiLu;8*y*^6cjCcT0C1)swgJxjpAz@E2|XgD@OR$&EEgH+Hqdam9wl_I&yK8^jt4H zT%W@73x^_!?cZ^2iqC4k|2LF+;H;O$-@qV&z3br!$wRovi$@4$UJ@erLDpOnT+aAP zHWeUZY7f;bG-XICF};{9Y>cO6iX{D0zAloLZp|Z(D}LS9tCrOi-#@Q%kz}|f?f!NK zBE$nP1L@P=GxXpcdb2XwV3%+Lsvg+%ck$3n#cXbs_>;d*9tSG7x@i1}*(BOK< zE?Pk_bPS^4*hLCDvgZTH4(X21CK38*pj(NuywD>VwmEw5UDv~KmbB_Jy+;_!T3>*! z-rsM$NC3RU2#=@_1?qnTS7fV3V>^4%8zjLpN5P>z|0bwf8s`-GHTL6;<1@f~(d7`F zxuH1DXFJIP(-y9k+XN~O!0%r*zW%MvnuC_rDbBEdCH@nj6u1S&2|(kCBP&Cops4|y zS{4Hg=l?pw)vKga`(Js(XbYU~Z+euN*+NM!@u;tV_Q5|!mg@+_Oe?U1G_V}jJb>Fdk_hWMdv4g^xjes*Xg9i(>%J%9+( zLN5tD6sZBScRu?0zVExUJHOf4*`1yBA4Z9R=g#w7_qonF*SUqBhKZ>nn2p-B$BTKX zb7@K*EhrCv9>``-faigkq2>-#LY_5!>#nM4;_wG>tizpH z>W1hHP(H<@Ilyfo4ClN#IL_)*Aic7fT1 zd;;|8Po$Np_VuRM3~|A+6sw&31@nLc89TLYs7q|BhwJ@;OD)fQgGE?nNT0~?|IK+p z^hz74OkB0CZ2P752aMXm{+|>%6@7jEri2N^grL*0fAQ0Wk43Z|#v6CEMUlLpey>fA zddwLZnI zp(>}Z-f=3D$dLn)7Hz**b}H`Zq?Z!nAa;PSbuST(7>1&ha1=#}guDu!u&aV#M*cpZ zvqvu>`r(&|*POrhVNcP35RJEUTJ*C|ZcTNgrH)8R$xny7t>29n`DS^63ErZl3yc^o zv~yJ&S%X#yo&N5D5{RjQ*O1>xNYl)}oF@lnbBFHR{A$01`nkw_-)48o6o4*9jk4z> zQXK?{=L&SAe}t^HF__^l>G%`f09&cSKA;)4W_Ymw!5Lc}YHy4p7gYBe>4YV_Rh=RG z=JNsQ0;Ll7XXxALDVFW@-0jXxGqCNNjciP6Wc{)keVBiJ3$%LZ$l48vsuT(tdftC> zjwKFG2<9;2H^vm&(vs2O2~QUVU@`~-9VqAoa$cLz{u{m`YcazV>IsoEK)OL@$Eiiq zC#BE#Eq-TdA53QOi}8X%UxHwpia#!DEWtp47zoqc!XZJ9MeDb?c2x=E*A>>50gE-e z3`*rU%9R0A+w$%@7n&*~d=RLn$P6s4P6-&E*9TYphYJao5(ZA7;wPIU&azfV9y^^Y zb73O+*P^7hz7v8)0DUDQ2uK`cx#ftJc3J~=^k~o=DWEE`lT64A$p*@d2FKp%2+GM` z7pRixcmvJH>nT#+Qx4c)9j_gVFAT&Jl$!3bC?PJTWGf)nni5(CWow|gEDS<~ia_N6 z8?Qr|!%6Z3jG`E;`IUaVczhk(s2~~V^ia{O{gT@@K(-O047;pb<1tndc5AHyx$|c2 zc&iQs4&382SY{RDB?OL)0ml2~RJNx)irG3`WDCqwqd&-7CO9$acc~%mpbg1leB+XK zbIyc@fS{$im0Ldt8u^Y@8Ex+_7(3k_^QxV0>NL7uqivrGdiyI-BF9rZ9W~hQ$}jkF z^qs+MbJ*BKrFY}CyoG6liuZ3P3uQUJQiX(5&yUQ;jzF3BZ;Wj0iG?Kr$OuV`JQRP& zEo>CI)$szYUT?-kkm4b(#Xx^YQOYF}QM-U{aIBp&8IFUl*T6lFf^I9xeKWE~($1G| zlX}B+(yAZ}|6jcYfkf`x=>;fTWq#NdM)K}iMkk*yAN-KlBsGjx` zG4XjnXmlND|4E=5(1su@Xp#wmGS-5=<_3KOu4qWE%s+20pULF|^B%pjEoJaSgy_#UUN$Atm#$k6_Sn zBCY_nX6^`RN)2)25YuoW=#&xGlqXA^N4ja2tq0@3b$&v|E_WR;U8w6gd+!0he+WXm z9l)vuT`Pc%2p5=!E8N$(uw8O)Ya~R3D-`Y{a99fxSnljTa<#m(-IEe9k86_}h33mC z@g(HWYsfRlU8fg0{d$u~m*5~_SV zXolJY6RyVF+9X0A3t!>lwsSK}0}OH5azK^~zDP_Qr#WtTvY0L#R9`lV*i^_j<09NO~_*?Eh9QR#+&`q@KT_sR$`I|ShsdTgtoyYt{#lF&@^!X zz#afUpU+juqoj2~-Pch&*oezvn*+`4E}o>w!E*vpWIQ+*ev?b-x1J1#G{9ha_l)H- z(n!zwI|)eBhKfw+yFQ%pdzx-z-J8mXK4aG{(FPZkB&Ka%yuQtiw&iPk4B<$H%kmHO z|A@T;MCJFLbcXe^7KYTAhA?yTKrqkR65;OK|0X88cg-&@hD&waE!@VXv09F$n19OI zdkkK27;dZlPm~#=H>U}~NF&QbQbi=tY^?l|+u5jaJ}-sstjuRJDF`e1W17`6T^xnn zSy$4>TxeT!*qd87DSH_Fp`yvJqGlMZ$r))DUHqZ`s7EYaJ0m3`$?!bw9IsEpj^me; zFbKwntbPo4OgZGzV8)07K}O-}jE|)46;AaRoa{F`6_ADnb1uYJx0=giyn?7c`5mcv zoQsnwWLXBpWX44=aR{yIO(Q7N_H2it(`B&NSQn)6q1#pACRm#G0pHHD4^H-DgrwAll-iAeF{8yw5Yyv2{CYX835u#j`3Q*H z&g}F^C`!n^V>>uz_3?a|TKh+_m_xsKV?+TzxH9T5K7p5k2p{-GtqHBRGJ-ylPP%Ty~gt1KWddV@AG0N{ ze!(+L=EU5FP{u_9&g_vTEQ~Li?)zI*n$OND7WZ;U>L*ERvE63(lyvgYVx+F1ww6^f zq98B}aqLqMdDVy}h4{Cg6wj`R!1fqxFMP0HIVaN`ajVcamie1m2elfB$oWUomyINL z)WhP($Ism7&0s5{ZhE%dMVtE;h9BFoXH_+w5|>h{wdYPqxl8yuX;( zP~2<&a?Nh_{V!Wenm56A@|~>5u1hnzPqZ7K^4}n4v92V2v+=6wQlF^&@P%zD%cX;3 zNZ`N42*j2^Iiu>{jPvaqC^wnFFADJ{$iWc>RC!nY+3s9}1X-AzFvPeasID{NV~Grt zB>TqY(mX9yo{l~t^c;-T9D1Z4!)k`rS(4VdP5w-f**?E6i5PG5<(7zYtk}uANkR$x z&m8>wwPfJPkr7tZWu;E0hzv6gU-GYFGn!TS-FKg)g;*`ZoyAvBE2zEtC@#~*DAKET zp|7_wFa+FSH=k)K2Kp?VUNXp!cttl5@bK|x+exanDg`gxuz@(tP>Eir9d60c|Lx+eVyi;3FdNx^XY!*r5@T7pOq5ryTS~3m z?vSgip{<8a4``BD&eL)Cr5Im%JLLVPC921(6oZ6szdJWvyZu@EpH^hT1AzXYOq>}? z;p!Lt_=tTKNnf)6QBn7$Q`QIei|0OZ~-}T!6@!}KT%m0I~{v(T#e&GJwv9u|` zUFe-bFc=a*ffl{fpFAL?^c$8 zBZsP_zdCWS2hc(bpO&~AZ-bzlcc5K`_Qdg=44|0+CmULi+u*YdoziRh4=dXb0?HBr zFDpRsj%@&H_F4eQ^b79ZUq{)b0u6V=9hcIkoXM302hnQsi;K+pMp4dtYa+Ft!1`9J zSMGMN_5={X>rMpJT_HlD+u$+wdtJEcH4V0Em07(~ntcZl)0s{&yY4NBE&{6wO|!@} z$2OqB?4DY+>XMmunTls^y;-kKw#H<~+EyB9GTf0aN(n-f!}t-@Nd^JnRk{*b(#n0{ zQ`CPqIQ8lFt`D>bix90$^l)c*GH8Jl*4hzZ$W??wgWZlFk03H_UK z1D!d6940818AN@_5|#nyuh#=QHIbTKs)RtOeqYqur((g^ou~}r3~Z7J-A@}$*Tn`C zqYZ)@>XcxAO&JK}i4EA_m51LSp8`u+q9OZ}gpXf(#+(3c_G}yre5#c=A>f5e5O++x zW^ct#F;75>*HNS*+o{mKj7hKRdCTThZ2(QEs(*WffCVQW5IA978I|_%!*7pA|0+?x zKR-e+vXN0gdN;Xest!Umpk5#Vuotv9Yp)>{fb+BD)vvQqCpbXd(LnL+-CGy4I#ll$ zH&;m$F-A>&cMa<$k-NS~NcD-709%!ne&bo}_&SJJ**!a=ns4V*B^}IWF=5x3*w_@B z3#?hs#%+k{7J+mbI(`hyg0RgWtT^wdx6xFwR;s|0VqM090&Mk`bJ)|zNY*FR4Pf-O z9Hq4)WIbV05YW{}(w8P>Q=tLpV9Oicdtn!(!C3nvD(V7j&& zaZgFX_)0_V5eD7s&=S2fU2~6{O1X50`p-j^MHm|K5boh?kEnF5!ijJy zC%oHvT{kqG|GJ)&bKt@o@Va_Hf9eU!d+I(YSrZ{BFl%3xD=$!R(>#O(^>7xqN3K6d z8cH~%l3c(0!|B6HpJQOBVox{q?BEVEiuK%cjxU2E-W z65>ZG#cb9?-3>lA+YUrcm*XGvr_5FTOS;HrLhja%A}|pri^bo%{ErW!W`7NO{sK;X z+v1+ilkbnY1hQ3<3<-dXpd*G(YmO77`cMhED;Z?caz8$zLZ_gQ`$4zA4iT##=&kV0 zW5<>0^CiHE&ZS4Ip8514&Ewq$pH6c{#LZ{JHkH;zuz2g?cMly7o}%RaEyMwsEf$&! z3^^a&FxUOe`z;Y9=+#G0mfHqh%zouA;dd5ED@-s%mwed%RCzaBbp)gMiIt$vo(kUA zDQSk;AJJI(lAimg?e30&#H0I9D%_5ZOg@UZwYKg>RNx|m7`VWj-q%9+(Evh{?=IV< z7Sx%l#rf74Q7H#34>Mrk` z0^dTsHQ|3?-A|vtuAcx(g6qf7&UYp(57@912)rCnt}f>-CV)gcln@gQr%DA1NT{3d zPB8yR{`S_p)JjA69QP#rLVzmM zJL&b)N+flE_4c1#`$NN3INb7AcFMKa&J&JNuE!xct#jvQ&0cpCWKz^#o37zP&Y~0w zl8WCIHpBZ8nIXOopa~h8#vM^XukI-gQQvh}HHiGVePZ6r9#fInNU3MZt9wX!CoV~D zJ|`7&Pp9$$J-t}(|KP8vSx(&$$C?S}Du0dCu2KQ{s1W!-Cqt!-TQN|uEU@!`% z2~NMOKZ9^R8vL133^c#S0IlSjtL%=tkdgoI-n$LlP2)oU7??1!u9cN;?F+Apv^&B< zqNP%*Ux-`89Tbqhm)5RXet}&tLp{kCWFKLS=pJDb0h(u{%dg}Hhu%{u&mL^{#Aq*? zrFA&LUEqAjQ6{a`q{(7K(&C!Z>{g``wTRgyM18v~0*yb~6jrxf5kg(iZE%|0qbD1~ zpA6WTtsTv0cXsZYO#~ho{R&z|j2foEZn|NCn_ssvRqs2qh;!Rgr^UFTTPW4Oc|3A$XI{{G^rSgu@W(58WPO_TcSq5Cm<+!+%O+2)9%g&4iKOHslnww)?5~BEL$7j<6OpdVWxPw^8DHtv` z8~>fKho5Daf4msaYf#}@X?p21CaLm!3pt?iaE4tkY9oHE0OMx@a0bApPfVdxi4Pjb zM7t2W1mB3b+?Oj94%TtYLeMB3Od{Jfc#O!fh@9 z(FFOMX4^w=A+7|Md`B3dJe=oRUU3ssF#=_%)vW{ni_0d$zd5E%Fh7rzgB!G>yb*Zi z?1QCa&$!O)Qz^l=>6uvVIn$Z`AS8aP`G)(kF{VgMdRNNqQq)C;n6PRI#?}Muq2**XRg~kR0F|O1zV{+{yb@>L{I7e zGgj%WvjFTeJ|4M~1}52kv~b=6Z3#4{X@wGIr#NTL1VQ}u?;!Q+$S(iHoEK%cQR9+! zt*7t&)n+sgY=PAS^O0!Ww`s9e*Qn2GHH^edFNtfxpKB%8+7QHKYKTXV+vL`=Yik*Z&xapk-Qz41QgBui)%(@^ zJ6`pLBO3|of-tlGK8)@NQrd$)N_==SXVMLq;#CcYGl=rI*U3^yiB@`72C+EO8n^`{ z33=A+U%irHk>VzLY86FGepGi*YCzG-)4IcY`!JFg`6mChiwbvZ;rd>m>wBu#S@l2n zA2cd?QRl`{iaQ#&hdWvhn~3eX;N$oV^lg)Arz8=!ohiil(sO@RRf~dA+rjeUN*fr-I9F{bmTk17m9p^p0^-4Z@q{QTo zb|uy~XyHqNe*O3ezIc{>`)B%&d6{RmqV&Nci|Mvc)%~fY(uo{3C+?UKNFF7P&7B3$6?Hx{vd91d_uo%1Ys$!awk2T0nE{HH&~LxUl@>=M{iY?aSEY8LLi+cIz=vmP zWN7v6wXGRs7M_Z&PLLhjLm)wwp{6bOW3;O6WA{gAs}1L77B|gQ@ zBZ^Wljq*|P&@1H0!F*IhVNlf9JL6QsF4fNl+F zSejZV*o9Skd?3fjf$Wg$U9d{cdw`DT_A+&IPW zFMLIo{%MBgL~|?QnMBYzjtch;_a+9K^I7 zKRbnE`HkbxV~r^*_8MBUg454$Yelx{#@AxI*3)RsL_GZQ%x+#h{o#IO@nj()GFAAR+Q zqZ%+;Bg=!kEj@DTB1YETLu=t#vkPLRb?Z*LSZWHxiJPv~7ER$Uv1z|PYCh!0VT56& zhH>H2f}~|~q*q>R(?Xov#a7Q>HT)1>EvR-~pUhv_k^X&0A8FgfXQdO^6nzgEdaT}y zpOCw!)Gc!oNOg((FZxnhxrNT|htG=ji&accHtyd;AZXY+{b`wRb4o66Eez@}eJ~Sz zmPo~BvQ*jt(DP@bJMW=ehF|EhzCqAx^{ zco>Ckz{HPD$*|2|e6Aw8d%4l0%T)77^Bh%amq5$aXCWfuuE?L&gS_r8TWux~Qt4sA zK&ofTJ}nO=WaOytgjcrWx~wAn3phcsita{=zNK+#nk`b^yAUiWE)+`z3pZ|6eBiqL zPRfonHOuzg)fIRb^pf2~NX|jXJ1VDen91;qLTT0-N}Z*hKC5U0F*E_L?O2oZ2YcUJ!A&Wnc&roWHp zZg1hUY1oZS-jw-GT^M`@_5IhdSEBdMqXep!ouR{QonyBOGIML5TWC1-707qjRj9|( zJiU2Ze3FHKmo}9g-n#0`{6kZGUN{%TTR*x-^9~4=OSK{BwScoE~W1 zdM~x_Y`xeRAoKn`U++?MBi)~K)1{tR@O?J@U%UPQ)l+1M+4{e+Z}hI5fYloWYlgTLdmP#u6wSA*g1->ETs#!P7|?MEU-H!V7%R7&hN%1*a?cnZ zQbZjs3$2_UgI2xe9&y^2sQ>)B#zDL8ZOn59h_KU z_w*TUR_KMSstC`}#wd--o>6LzE1%?7c|>D@>f4;EpTw7s_)`j-&4 zxP3zoIUqvmT7xN*Oi?*0HSL)Q#WwEu5bBuwLdk{~j#V~jF+iIw^1y5EP7Wq=r-!ex z3MjoxLZc>R-pL?Fze)$3da_>Hp>LhpTk(6UaKO0z07{l(+&fVdD4ZTO4Dkb#r&QrZm9V<^dv%{0_*i$j1)!@u1SZ%o_c28{cIbTM&e*eA`>ibxi zK@kdD*P}PG{KR?JF~xp0%s064G%#uVr|5=v^y=Xn%=K;iSrQg>q}1|DZ>X$BzSgXY zDEq#u}^kN1QpT*``8Eeji)4T#2v0E?#Oj7~J#$TfF6aw^?I7o3y}N3GQFOD)y+ zf0tijpi2AX-BD5Nt_EVBxvJ>}&CrnnL5W9im=@7Tf4%6zfuGe7jEruG0WYSx3({@Q zEh|f%Y=wZgisM3)k|T%$pJuXCPLtnQ8%c9(*Y-;2tGdV+spvAbCx%^#GFW1CXi|`; ztNZ=TfRB!l4aIc||ALtKHKLE@t)Kf=_kHB3ezwiYM|~j2 zFZ!9W1znegXTE1-i%TijXVE&?&5Q`FMmDU!v9pq)JB$iCy>+J2c7V-*ge%$O+cZg4 z1*vP@w?}X;8Sm-+R zpSX(}cvUSXT{Sfum8v*p{P`b?KOIiTj;*>jrt;UzV47f8nQ17Q)4dj$sC+$y&(ixX zLDb%O9CzhR4SodZwl&itV?bPWF}V8q8#bjeZ-BOMjc|pCi1AXb1O;89vLRt{GO=c2 zBQ8>}HlipR!?9fMRGhC#v3Jw(3A&lu+4KJVn84L@kigMPJK@5St5NaDZj-soU!yif z)p*@WA4#m2Vb4}O`j9-l>duKK#b@aS&aBsBeXUR3Z=)^5#63vc?wpHWRn=}h1uNUd zj=g}f8qxntwhyH}p@I3QmPAI&)4W!SroIwZ9VK~+;G2&D8e9Uy{xR){nw|TS}=T7wZI}f1n69_(Ato`?gmjH9Nd@9F@P}$b=kT=};9}USk0_re5;9Ak+7R7SRMW15oN(Ro z(7$l`__jWXXqAOPI<&;OV`LtyzrB~?z7F##zDbVNyO4d%xGhhv;gKO=8G}yTrccGB-KzAnlRx60e`( zo4<&+vKWMN<<-MPWZ39;OsVFcy7pXyg*Vo&B(CoKq~Z?HpKj86#+eJ5HJkB#{8Y_r z+vg@)+Q-l^&gIoA8+vavPu7~LxIUzG^L4Tldh9`WYwNkB;#=y|Qz7&u z%b(eSpEjVcdF_3$PY|;!GDt)~ksUQ=75IhoQF^$))YPwC{ps8srG>m7wL{?lPk=h( zwM}LQC2q&De$Dp?-!eLW1+J~#Y3s&Ce@x%#n(fyj05$8 z!Ys^WZ-9d|LhcOf5~*gnCXK@=_K|bvtUT^m29sp7%dE_K-LQ^hE>*#tYSNJ!rWD=6 z0SWF@l{`UKj@dLaeA2NoiY$rMHQ0WVl;KfOVLdM^=Noj!Jk8m+$XE`uuD7wb9vyUn z5jTc$!>v>2kUsAVdxIA1_I*kOeZs|Cu)a4R4Ov@vv9f(`flRm9aX zgREv&jQY%Cs_8KPu?xnTR3^cqGP_iaN-xiXy3B8QNqq*Uf_OKrX%HpcrS=rb`e{>K z`ziZW;$XjcM}K=)-Z`rmA5U!>=SOI1EWZqoJV7>}P)aV0uYC_=Q4c0%BOcHfZt_}_ zvK(HU*n{||yx<$6+Ypj-(~d>j7H?X z!9UnO#qZD3m&AYKS6m_a(EZ?Ik+4zJoFpa9;1ap@JoGsQ+{kat%29#YM}Af zyZ7d9d*5bn{gGrccmYleiIYCgur_n}zCU|5rs?YT_bEh;?=6a+-_)fl(oFpKF}X(_A~I{P$1(Kb`J;9iwb0ndf3*n0cm61L{!jlq zto&EPpkfR7uW_wQ|GuA0@c$aGM!SVoKMtd} z4ZY5zwd7US%<1~}OI3xsIRPKEcPY1gdzCkVE~vDFI!_OtfB-Sq)qI{-`EaD7@KbXM zl*Es9!^$3J_g@b$@E9~qG-lP}QP_n@?aoUnihuNbwR*5-tS|PYmY(xHq_P#Bb_){2 z9Fv_0v{<(wLcD5ekLq4pLMmlZlXp4MM|HnLrJR#eoN_;4#)GRxV3?X|==TKNc3#nZ zuWk{>y%svYwlJKpmn4RE$9m5I0HM)3oUcuT{d>USS9{Pyp!q_;vMlxu7JAC3wM#Y~Mm{`xh<$~!PgQ1qQeu)vI{lP#X zrmVj@$+~(H)H9*RCr|`qGQct$KYNNoE9^IBS|c4Qr(NUm`YZ6ib^~g4J_z9)uA}GD zb*hAxAgqK=4wWv?xZc(c9z`bu@125aijwlTc?I>fYb%yT{RJIlyIT8P$J@;Aj<$UJ zp1%sTN;0zGIIqQLEOXVkR9qFtU}?T)-{mJCi^CFi^?DCAY@SQWfx)UYfRcp?V*d$c zF{oj^{L{30_lv(K4|)p!#s_5*R^V|O9umWO2<22wor_mwQvd6{FaoRTL-mZ9(r96y z!DfTv;Q_xhib-$cQ|_QWYUYb^eE<)eRm0H{gYdiGbd6Tb4Mdb86MQtUJMHPrw4Who z>*sNHT&Z&!9{73#DW?gSH0$WdXvG_?W-}3D>&P-#kGu2ew8UVUrginF&Cs?95c0Rs z`hdFjLdLbCEW?fomz`n#nLwuna70MOUr~)TbIOR~IjMhRA&{PBr}+1_#7U8f<=F>E)C=-mjVpY2U;>>V{&P&^ejz`y#Qe+0cNHVupWtUN!(je~zaulw~FshkFB&7syf1Pzm3UIFTW>Q&|tXsfv3cIZE0S`VZ^a!z()O< z%PkP7aZK~UefCy-HE10^Ru=w`-zAc&iO?_wkg`S+s6hhxYHt`5o)}dq3v>sa z+A-bzxCFW{*u0`z&pnBz#?UiSbg9Bg16PXZV$%897xRktciy_plP-&&W~rYHopPe# zS^?Pb$L?RSmWBIdd^LndtCh2tOvCEj)t%H^7w?KY6;zD(v2^&;9wv*xG*V~J@^GN1 zJXWDnr;%e~ATuz&vTzgv;q>`yIS7t+1Hpi+Z9};5*s}OQ!F9>9mp6jr^-$~UT+gcK zzFF1>A>|Be>&2>~qz;F6*LLf`c|YQh&Xk6~F~$Q^M@?SQ>VoW5*K6n4sG{iEEKZNl zd!@zeFRuo$;!2pNik~L~$}-%NtfM_(R7I7S|1vzSWmVQ znJpB!dn~m~)a3RIFBIf)W0mx$W;(2R0LOI?KRqctbWdwno%iI|mg1z;q|{ImYA0Z; znYnKrzb%*6V1WKx7zgaX2E+aEo+kdZ^c{^NxA-OzBo&_hC9bP|9_ERv_@ba7%$Jd% z@4?lJdEQP0_9?C3y&(lN*kG^|CbqtAl>%=wvTphKYomVy^t|fA1EzTsT}7 z!OAbRA}PRkVj%c_ky3Ek`x8X2b0y8Yw*Ymt4Dm`cK3XJeI*Psy2?Asw-Ua_dH%0ew zKq;+4y{N=G$h?CyROI1SL9W*%Z+}FX=HGen7th)d$pK1iz~6p4mZPj4N8WhcC@)_{ z&djph=>5R`i$NtP`x|8I@6PD+)$`$6n|@+zzZ5poSm@BF_sdSbndxWyJZ)-{So~Re zdl{#RQRae;&hqt=V<)B~tQ#k}Jv3lsbMAya!kB)Zw#Z4|Y;RH5+iU+#<)V6~9(EuM zw(5I-ulA&;x^Pu^$K$CGgMOl85uQ$OKpUHFnWDK!z#6kjn$lR1%2zhyEf zaMc0oW>y~*+#t2_QDVcCrO)Bv;A@G5Yi^`{o(73aQLO?UDdk4c4LV3NYWu+M37p)^Sqqw#&dwNjllF zfMFn~p%UX($UgbzP(o)7Ah6T+=2aWfh#v-%f(S>JiXZM@<4h3xJZRp7n@J?%e)+;G zTC~?gLB)Gnq^7+U@~})C(ie4q+lLl9)WUM&&)15<&kRz#Y%y($3XK`YWE5(MJg$UMkXK}kn)|PSOytlCtcwU z%ck$wHvDq6KLk8~FF361Wk16`rcKYqtBoyK`9N*X>NKG&&_X5yah_l}oL>iDcQD## z4=eX6?B=gyg4h$ydx+U=b=&toSf_vFM4#ejXC;pZ=xS7uhL}dF$)Kn!qOU20^Ybv% zQgKoZ{8^vitzw;S{zZTNTqgi)N<*YIl{%a2S2=ed6;tq(#|9> z;*PuVTxoJK&TZ2Fb~+qq;pT))vFoa_?QL9ot&WtCFjAYU0H)@jG2|o4buDmVzcF@b zQi^+oBduv93xnxd8W>mog9nw3zU+~9zN8Nsyo0DE6(lbi7O{-hJC{E9dtp?F`h4gm zVNCWHFf8XtBN+YP7c#Pv1Sd6C3yb-NC@a~&!{=7-avITL+PGp;M*TTr-YZDY@hj>_ zE7t^EjpIg>#$Jw>jiN77y1D+7awJHbQ%wmO@I176N8?aIXB1d@uF0hSZA|2p{6a(? zA!4}~!uLE&X<$_2om@pc{8VpeYqY+8*XQylZPqQ}6oYhD!ZfO-w1vYKl+*gR-Y$lM zZu%_7FkydutV-BjlflShfO2ev`Epk<#H>NiYMhuS05K6}9Dk6&J0G7l|H~L>WTayJ zuU`v7eiyyca&OhF;J)#&yq_kO|EjevS6?`vpC%2z^u@VI=iZX=rm_SUOK$WgeC(i_ zE6BXmm&}dtl4{4WD{POP4-8Ven@R&+m`pR>^gpx_|Ka z2d}%lXgSwW6aMhDynAWH??t>8-~YY!Q=THf5W7bZ=}U`8lsD_Us91dc^PLRSn~?Y` zqztzf$|}-7g2LPv!OkPZtNQmXc{$K8h+|4_cEf{Bo4>7vCw_U8acysG|4U1m>7OfS z{TcL^W2chI`hOcZ5Y$T~oIR$?L?A(l6MQKZeeL4u-&EsL4A}UTymtxTi*L znos;qQ|->sUSjIea5dpFho~os9z(vRd%l#V=k{HB_3~1AeRfWRBQF8MIm-Qi=11n} zBbmI0N;ZTUtmZhC6B&!%2~4?^HTJiX3r{f?U6J|z=EgkpC}>^1rL^lz6zaM&amsEM z;d=uUUjqd+&i%^!di9;Vva085U31$+tfm1*?1qH9M4F=eZn>8vc@n_cyeHoU`}f}3 zG~)Dm3o7ncz;zlts-;e|3o0Tt7oTIE1+Q={Gt&(kHWHnj7~+8Ur15xLv99LA71+HX zqjf)gJ$s~NU-^_1$v!SZ*qNX{6Z|k6K`dUKP#83)?^LQ#mq0q8+Rf9v>5Jao4~^Z* zD{8a@4wg8+`6o%xWv6Kvi}Ox_^HnR9k%YqT5s*_Bj$TwcSBu$9TAoaG77%nD*H!pmzeVO=Cg8^8}tw>N~m6SPMR6a{rO={-CPV zp(D%XgC92iF^V^S0On?ExdblQKNF+6|GNi{QJ+V1A`|4Knv6=%o#k!c2Iw*?5^b+>#3Q-I$cF_;8=`H?&2 z{_PDNr=t51%@r^8B}t97DUxXqT+06C5{ZoWp4EH|q<-~cYgnPFx^k@lG%(s&_a;85 z-p#llFix`WV>ygzi-)}xAL4ku2$Y`fk<{JvEtU?vA+TTAiDAe44B}5H#D_eO#xP#q zpcU|t6P8NU~c&)jj!-!y4pLm$d7e%9B4mg{Xy0SvIxJS`=J z`nliZLT9q({UhDWed9bqbtG^k$F0QUb6q(p%kfd7d&JnS2WGwCEU`O|DwCyNYom76 zyWbTeyNJjN@9ayCpF623F7s|5!yK+(@cOO5t9+mG5~}Lm5X-H3Xd3pEU!r6VhdtSr4q~45CR=a?M8m1` zd-){XStxF%HEMf+=t-{ovs{mnpe)fMa&lgDQz}2NP6e{yb$K_pYaPu0!=`MI^OWbb z&0sF9LUwyIGYV&F&Fi31<-+6KuzbBSRf;E0{d(0s}7N-WbX^ z%4o{ArIVJh)2Ze`#uE+Z?>wG)xl4H2c(BEAoiS>sO2$*gCo-(I;Bkai4{x{f=?yK%dtx= zTK+%wmKf-`QtjOem7*l4TFWOTP-?6AzFMz(3958Y1D7t-!jYYN#kjm%->0+O9ze_~ ziN5j`A5}Qez)q$-EcGOkS6bZ;<(}^NkmlF_n9jhGep#m|u^z$KeIl)%g!v{*Haw|u^P2))ay8*?EW$UJYCVPQF}dl z*m^0=3z;vgU(5V?tS6bhhQd7jX$boK6p_(9S_!F*w-{Q2G(=iR@t|bwb?_Sa%9Cxd zYxU|^lJV~KxTtHjmz~@5Ijj0@i(m}A;VD{dEJ>gylMGws5AGu#ZhrPPb%*mM(*CpA z1oMb%(5(|k@h%_h)6+!eq~Q7MN?n%TItQ~?%=*gY;#2L%weCPVBtDrUnRRatFLkj0 zSgU&&TV+l`cc9kw&m$X8cw{5M@R9Y^qf-)=ZV82C0n=}kl`~@APi`AG?8w<2h0~wn ztk=geOc)mM`k!PD8ssQOf!GkMTur=Zd^ z5n!2LkJH_6YKz1(?ff00DmC_E{Ury~mG8OM=D$#CNCqV`@0R>=xr{|G8{66y& zA0`;0Q>_|$rif(3KeEDA$93jbB8vjF=m+s_y3~g>8bT`KT^5yJPTjlT8iUS5-2B2m z@z1%E?7x-r-(?SW{?de~P(RdxR{E({_Jy|<&n2D*5kY*iJbQ@@5sq3dkyN7*ew$}? zzq#zJg=C(nB|C1Mm(&-!f5R-@I1msJE-d7VF>soUn%fSP3+*o49Xu3C*K{0btUPQesZ_tZQPIo0;a-MfIGk1P_HSgh8v z9X}RiMv(j{hSZ`(BBI{HJHW}*OIO(+J>KESU2pR=yt$BYpH1oVYX6SZb-d8Jcj2hF zst6Q$$_~A9Yml)7KA#?MxUViguJ8$_dM6GGwq<~}fX#!7UGcHKUK>AGt47{0z}W>m`!E@i$A=u{l&4ryo%!6YPj}Q|%fYDxy~2Q~y3Cx`}4!?}arm?YA8NahE{;OhBj8j1{UqUA} z2BDj4U+({BwKJ{u&Y;8{O5m;YJp%jGZ^W;}yd34uFq(b!3^}%-C=^Jsc4RBTDwz%O zK0U`$YDRf;qXE-Ux0`VoJ+wF1!0$i5xWQ|F`u1KL0l*OTNfB8y=E%f*HNtUOX=E%uVQ za@L128W$i&ehZV?f8<`%NzBC>4rQA(TPP!WE`H1w93@p;82s8snSWc1 zs@YQnLrbe5LuQi*b?QXgA28UR+Jir*3CYg>O6KKP-&;WPFQlS5z75 zq5=jd&j~Y3@;6x*lx9D5RL3Yk5IjaO+aZ{7X^Zmkenymf)-k*0?6Y9fCE%gC;?PLnFZh zO{2jY2{aO%#-01H_x|3x_tbamoH})XoT~e?tKgCDxz?I<%rV9cJ0MI>U<_7&Fd6>y zKI~J*`uth^^39)7uJZkPd~tq9c@ARK){K+$f-d*7`q#h~6xxrCsPsA4U-Kn;mHlUY z1nW0W%X6%RNdBp?x*nYqm!@+T5LS2pFX9y2E#wD(gEFb@`P7iSy3bA69U{SX}~ z+pa9HSE;qthV`lzbPcEjZ0J5LF7`%RpcfxSij5M57ofi3ARO=j8J6bLg(Jow}Lo_ccHJ zi~`xaLCJrIEz}hFT0Lf#i*r$HiOW43`+xnr|8p@2pO)^-zoC_X5S9(=Bfwtl7HawD z^Ha;CJV27s9YqR!)=eq$%Pobyk-xY_5jtL1e1DZbV=|V}b$f+3eeMLwq}Bf-GO&#| zx|})y>XHPzg>4?C@4WvG*8TTK&}r#^Y6ajA&cx8$t1^yBY3d^W1zpU)zSS>O1+W|- z^#mT{sbv#Zf0VvZO}ssa1*_`O({IUNwuM@h5x@iLhpL{)>Vv-h1LcH#F|kS!0N@&t zNHG8``j)Ux$H8U&YgqbgUQ7!AuWzN=MRk*hY#?^vc}NB3?pbx0{tFNl`KG+-2SA{C zmQ~=bOXdFCmo$76**M?1)(`}Dei`e2dxH?6BPq>PUf}j43080*gPN;i&)m9IF#<*FV2LV_Me`7Zf2`CLLj3GRbNjRtDEsDa| zdKk5NF|+A3bbQftcCa=%RRk&%t8YoQCx+rVcG~c|(O$%O1O+W!@z z9fBR2<@4C=43!K~=Sb8|w`*(6jcL944&pj#cFAg*dX{xp4TI{fQ$8WG%E}O+x!UkP z(KsRS2ukBbIkogOXt440m6?7N8)|gcaJ#wMb1^-}=Zo<`uX1BH&*L%;(Qs>>$zOxi z7ORbrY^s&(jcmr9Ac5Y7)y^+YXH6D-hOHfZP{#pOQm}POmdJ7Rke}rOrtwI*&Sl-r z>slgdj$Y9NZuWDZs#gI0sZ#BWFri`9cZ=?F702#!c}Hezo^q{+rKm|k2geLcWe6d) zsO$TS?R@50{B%#c-GlYz2TqfSqcgxauGk5G$Ovl&(lD66fOHGW`V!404f~j8@|Ct= zBx>#+Igi1zQv=3&Vclo<>Q3WfC@%SV4U6B(ugOc{{N5N>_8i|ZhguKn`dd)p0lDdh zHG;$6cmbeJNc{fYIST+{p0{9y2SC7pBS$RaPh4)9yu#C9uKJ-?tOkG|{T5AOt&+;^ zI=SGIgaRt)%QFq}BX<$k(E=)zxjPswU^aBP^~M4<)e}p-djNPmc&!v_WJ|IFYPz5F z;qZ{nR)8t#1<)XxZ&}itE13s;?m9)PgQy~)RGkC(-8$%ofmEJ@Be}*>I)Fsu7V9rm zKAaxY`0@rwq8+w^6Oq1k7k|(imtN&ca9TxF!}*MQqXpS_xwWU( zq5XO&;Y(n8R3lIQ^!zOmhHtWn77Q@ErK{#JsC>uEoh6SWArh#6(0RJeob(0lACx}a z*tk@)#yym-g&1^ zHN(cTdejIl^iuhj2{{1itUYu2t>iQh_X$iF$3|%ZBs1tOd3*EbxLGKU-oSs*E~hx# zwXQ7{`;$ZY<}w+diIIg&^^o*U2d)29qSL_ys$uSArdJ9xJ|2|L}hLkenv~~d!l3(m$7(ehD#j(bIS9n5ocB)*zjxF(k{Rq$2yva4ztqSYVd$i|4eVJ`z?O&V@x4L&$V)~wsw+KH)Q3m?%IWFYwrmVA6 zUr%ThH_NOG^wD!k4sE>{n7xtyxIG+3yKXFywS3Q%YAp<*w{4%%*TPi8_)m9#73F(58yZZzulO{zv~Y*la=6t5{n^I- z$<=j78#?nRITv*ZjG>HJzt=DkY4XYp0;KrhXn$B_T4o1HuXaFtTHib9Wg)OhBodTN zL}aS^^SUv$pSt7DB2jjbFOh3^6Hhk9x_Y3+=LgNR4;)uIZ;f@YwC!y*V8J- zX;V?g;ZxEBHAEYU;&=ms&aUf7g*@TY_P2s93@;FX<_in==2IhYM9rB>YU9s?w5Ar{ z_@fVFb&G!W@vQBLv0u-1W}lu+er~ zb~f2)#Tbh9TQ<>TEBbop5|{6bD_sn}j4Ljiu+DgIlI)j#8lS7sLvaLF0~u%!{LF4^t156QsgZ5sF5 zA+!fl`+M*BDNaXvrQ5KL_OIu>g6)^f@=7%?`11qTUu%bnw&@fl^R4O?3Hq%W8#_3L z*GFvs5k-MacTd8o#q3|>q35T0l_zp8Iw-=i&5qMj4(FZwwG4x^|{~ZKL%) zo*q>NzIb><9lON<55UFM*?ap)#6QD^o-RZ+L%OA>jzSKf=$3MK=JuFY7;%e@mIErG z%YahN>5|}EhX2V$uSNJ@(`HFLZgM<7mmHA6v13Exy|FZ6{W1-CgR=k#FLd15$0b*} z*>ZAm@oDa4K4ABX3I&c}-ssqW=@+!Io_%d{`fA~=gJZl97N~dECO@WxZ3yETYgIUt zUAkB{4M@A#*!U}{WwKXuuE#JI=}3VOf6A&3{KNN3fx{z6>KS*E@OX53Je#$YKm_?Q znp1`@qudlx!nnE@F+4&q3PQQ&>NIWZzjzCON;42i!;36MD{i z5Q5e|-E>Iz{`GhJw0yIQ>2ZM#L(}P(%wJCfy^5f|y*6he%KgWE^=I=~{r=~MN$`_F z@zLNSzI~H|;Q`ELrC94$URv*C0!FKX?0&HmC({=tV}tMZk|t9|EZ?i(0eOqLs5g0~HNGL-IiM3F3IS_Nk$ z`;x}zFtVuhjPdhnHp?m)CBgjC>5RqDt8hlvv9RA{qp3?bW3#>SY_4m4MNgZ$i-T)^ zViQZfjByn~(pOxFxmc#C^Y<$%jo6#Zq1FM=GkYw%8X(hGT)RuueZm4FM`75rHt78S zEN+2{EpybFbseQNCf7N7F3fLBU*49>ukdFIc-e%lV~jpPNFGe=PI-ErY(a-6Maja< z9!WslKM_hPGrq~pz<-nJbnK&;Ig%JB!Q}n$WT!Gm;^ag0zQSW#P}i^C9Df6OL^?VD zq4Z)Xu7n|h)IMw>JkE+c?$2$`N4aW%C~p?&hZ6u zE~Om}XC@+xGgsq7HJ7|drD1EqBc{$z zDXlp=su6&Cht~vE(a)9iR)@3_OMrc9I|)~Xv= z6|SYgst^x0l&QTAgM00QO#afhrOX;_`y)Q(=ZDSQ)hxe8ZLZ`^nWf)qC`w~O4X1#T z^9_(d3ouuqi__@QA6@rG(ari!>-(h)x%aN8yrwgV&7)|jon@!A_^jORQPL7KK{A|U zcJ=B_lxtk$Bfat;(u!`T969cW6=N}moN#QtWTy?^Yic-ftb0>5kGM#(R9+L#NF=f- zZWSAul#;6&_6fY`+fx{MehOyPNTJN~fvdWne@1w)FGRS&1u^HM&JmRRid1xh9i&9V zP_mR`X>&kj6V1HZbTg1V)}f!o?RalRFYoUZ3{r8gjZ+dPSE2a4K9XTQkg(4o>M+Xiz5zno;EQJhnMxB@kM1i(%b9M_!WV8b^{%nC z&Uo=UMPEjF#FLHOVX+k)VU2CH$Hb4Q&LeMw9F}WBD|a*ArbD;-1E+2ODRMf#O@GFv zzTPdd%}qN%R%W8gG_~j0^%++M5I|I53g}z~ymlmajYSui$M(g?td+sMH80YedZ5b1 znQ^Z0*1S@^i(E(4&hP}T*naRk?9S05RZd-oV{&NO7)N9naC)ha(~GCUvy-64<3n}F7zEz3SP>S z%?S6JQ^$4grfi0a7DDOjWPpK%#MB+QdZi{9TdkbrdKgUQYsEl$!_$*ocHzJ@<@vd( zSCL{nRs`;TQ_;k@-7!3^tCFuHy94t)-?64JuTxk9h#TDzz$?FMsT|(TGXhOsMHXMS zL@tn9u`j1C2)DWJBYl2SL-3v1ef)RM$S+%G`G{O2^f#iK6bQq>J3D?mT&F0z$6OP~ zma!It>IfoxMGDF#T&>XG9r9tC7FR8%$UR06cTpk_>}RO7;R=~%he|)GvBqa0a_L$T zkP=pox)kkOL$A4TA&DH307;%n93=z@p9AR(V!n(98HI#ass71I>5RcxhJ5Y5(3X~b zmi%k9gg`;>#N)2u)=PBOXF)o;&W(0>iZwQ&+~OmggaT;B^r;{`m(3pIn;6#1GfT!- z>{E(h8#LUI%JC*fTV#wVD{)VGiwo|Dq~T!>&0n)|b2_^peksOX$l9X64;QyDZ#xce z)izT7ltK(OipPqM0Y#%^Ik{eYmQH#6u!qv}OL|9$?%x=%`tC7=Vo_c8EI|gN{)tmX zY!}fm*WT=Wl28v2=q*qU`~=#aRltQVXuTtD4&uiK_g;@Iavz3B2rE3I^%l>^h>P=k zZ&M_ZRdhZC#A*^6)i!H>Dn4Hwvpa|PG8vZoWETD1UDg|Z|A?p;La*PjrWvod0TKpt z$?jt2F7d5l=D6by-uX5dEdO#V`dtr{qQdzl*Mu~ot7NPaMI{0zEQfHrQ2#p|!?S#j zeOlEal&*b8va;d51=TNoZNq7ORAZsZ7Tx`}x?l02WrXT=Mkvn+z?A@-vS7;_32E_> zCjy5&AntJ31cb$w{caK75$BT@W5&E&X9UpF^9ml1Tfo%WGb}>w3Xu?D_Z}u0#h5A|Z+%fE zMxv@g9p)>F3jSDpaq|d_>mYVD^X0*}kji#UxEFP!GLu|LxmR>9 z=_Yli7GklAh>E<;lhuGcnZf`BQW9U(4u!jgY*e<+Mv7w#E_3pkgm}}^GIx|y=#Y7R z9DL;YSujhl<8)~|X$$Z)Xo$O@H)5u>pn1Fq6(+hB9-I}EsMu1TS#aaiHn|`&^#Ng5 zV9X*|Dr>Hw$({oUxIdcVj4s$JT_K@t>gn2kASKvSaCbTV5;6qpjVJ&?T{#>ZbxULP z#2_%jTFsD&LfTa3)jwuXI`MtUVedoCPM|**ib$@{Q#s7*fyS`@nn{9}W1vQr4a|We zZ0gsqj~gji>ZG*SnMNnor~#!Exe@yW=8| z4|Pr_<+yx}rHXzXh~U06bhzm(Ghj3FvpDB0po4#_r>3Be-NDEq6&wdraDTWyYqE#5 zq|bg)9Ls)sb2iMskjTZhN?~IO=6xa%AvTI1=mRGh`tGVVW#_EEPdgyWXC2WP@IjrO z)>~4_+WP@yjwBr^K_{Cr)wPu@!ZrbWk;tzOXRcFaPs5k+!Rf|kbdL$bWpBln7{v~A z*&+)2T>$qtphEXi$Xi*=$#J>wu;gDxXu>5tc?fkDg_8$5UJqiQF|$0Art1;q7Qa|L zt(Oa{v_|M=#)bMsPnvsg_VLYgZ2T%`Bnj(6k&!@abmVN%?xmX49G2bvCOaNqZiCBv z7Q1EH&q$`e3T&}Tt5}x*Pp}No&uMbMoWCRfTbW3Rqemt7HCx834N%HI<_1-_P zN1pRM%asvkqmkVj){2}Q;Z*Dzx$`K8uD3_^qdV1~+3quWw!(6o;qPW2hAb5vi#8PxR?9I$XGtxuY(K-i z8H|>}{2A3E7{m4gaAUcuD!~0XkpbVaF&Tym7&;cZ&ugAfCQe1&!IV87Jp5XLda-$8 z9*CHavX+mjnfTOummK2$iV7tm5qG7NMqlx@ZG3`Xfo2{;Smw#1JGlob(t3rW^Z()x zR0;w2u2Y=M0DW&%CrP9p8$9`^FQI92(uEVejWVwc!=0Ha_yp>m4A6k;gj7IEN-$+s z7|~Eq4Us`l@_K~0cyLH2Q8tD8n3H*G2rn5iRQ0sIH6$66ReV{>oJ^8Ov>Kcs8`pWF zhaml)rieJoS{x!_n{BtC2)Ae2+iTdPC6b$>yvw+?2Uh*PU!4A(kq|*>6`>u{KAf)q zo;Z$P?)Mcc_-v6XB(;YQuDzzna>=G6vY=|X5NSh=oP%bWb>u$@tI@6q=?Gm+_SWoU zM$arA2*y3ybr|JNg4;9TTXkhX6^lqrpE@Hpl&?ZAmhcL9`qOKx5@3Kr*|9VrOt%z| zMZfAhc{8uFF4BV^ZLYYL$I7Qn_p0k=Pe#F(-4j5A#2vXk2{o~?^%u{nyD(m zd1%ex)aFz^j5NISsp^cqc~IxDsrIBNe*3_glf~OpA7aH%pe_cEQ@5f)M!k*S>)|hB zEYrMTIE+G?ZPDg4t2Hfny>eYlVOizx(I#qop_Hs_-QiIfr%%rHx@V@w9NuW&N2?2z z)F5RAiXwZ(W|4S;w$QyJ>>5_KcG>$&WhCrY*q7lP%HKTY(=cLoAu7-QliHT~@ON;9!@@2UC_dLo7+(>|(u zz?9g`a5jfaryBJ&u!7cXlrBJKs+B)t@2Z$M!zxk zaUHc!weHP&I&RPkLjp(xV4h{qRlO0XgZIj|$@}2%Xt3rf4asRqL>>`;uoyspK8MmdPG#3}`z0%-c zZ!u;r$G}j!&cDQ1Ag{~uxRjCmO91SIo6{)aaujD-S@Nt1zr+F;PcZ*h?BIPx_%nos zxG6O)hpD$~sj|n7`%BD9&El}FjJIG%jrKO67>U{Z`T7|9rT8fJ!@!_bPWdi|cGymq z|K7Xz3BsGnIyQ(7Wz=Why${oX8O}-m4)!4WWUzo7J4X|NA^Z$tm;GTuIlV4nT4ny8aZe|`_Nkwg%%}b~H3@b?O*+2Qr1aRf{`mKwX1A77@ zn+oPI24r;v-9}YEgQ+?{-d5jb`cYz!7s=Go&gjgJpOk;x1xe^>B_%y0c;*Frn%sch zMZphpX8`{7uRAAeUIfRB7T%m&##Sp4V)H~jVo3-E&MYrUGWSoMX!P@5%3W1Beb~#` zq0nwdC+xp^qP56XP2=C?klut7-03&_@bwmYB{!KP^7T_O#_9^x!{10eSJ2$|i#7$D_Ad#)q_E0- z`&g^TSAi?(5o29C?Qud3tlGm{0DZ;JWeQZ;id^ml{s1?&wVK56G#PM*`$(qoy5r*G z(iOtdP&|gM#QTRcoVIRKTEF5kZKXGD53Y}X(89gB{cM^s%60!S9_dRgOh`SmKObpU zStX5XgPhWkNe8v`5#OQx-D*+9e)8DR*F+6Of0S9FPNyD?_@aC6)|9*W?ft2DHS^KE zNr4;jlBniWs)3I)Sd8I|Qw>vly2E)H0<2u{k1?K_FA?VO&Uk?yzI9$tRqid(GzVoX z?qa;~)QqCQ@pJuPmD)}gd6z|iaTQYsmP5w*pn2-ggk^20t7I?gk0j0V4%BU^@?9>xsI-^V4;pAxncNE{}tl02O%Gxjr8 zI=<`D6F+S!1waGvo~>|O>&MRi{?!Ez$a@^+f|GHZ$QGW*JTU`dmHDd4u>#Ty%^I-> zu<838){@T_4czFtj|qdZNF<;9mj1xMO6#vcA0l`-%Im}b!dSoH&gY>ClFzTG&XhQ+ z+g{Kz#GSS1Skt}x?dmw$YB4|cVy4DKZTNfHbkuE!(qa9-8jZFk0s_}DNWaW%GI{sk z%G`(G?HL34Uk=c^8qbKOo$xPM%v%0eX`>khE^4s3?e>J+lW&8>U zWTXGe?+H_Y9{4{B3C8~g->3h-3o-#cEN;;0Pr$A-Tm$4;7uc^m||04ZmDkEYI zG^)7yBMevcQyPy2gpvynt4?gv9aPSnbyCB_|8xKb_6M_@GqXo?6vj;%+#wm)YSpKWWFkK3;74g`FY=7c+WBf61&N z54uZJOmZ)eM~JTV+;clCe-yZMOtNtw4R~u}!fuT z`BCHvp~g6C`sRnX{R{+i;XLk!GEzNP+bz?Z^4^Ojsx7kKt;2*h%073>JLl3J;66pF z;|B|taVpqouEdk_S>d}50!&-TidCTXNwZ!5TmfKpXEty+27|?W07mGc3i=La+@Q=C)0dfEyTg zNWaWn&QZ@?q8Qy`sQ*opY8Ll7qXgMN!!u@X{cur6?t_MyJ^5jMx*dWITF{G`hw<@; zjPJ2W7Nmp)ytbZi!t<5yKK)`svC*Kki;<2!pL)uyNA!l0*;pYy(_h_xQb51=%2PX1ldv+5P{TdUV;&U3$`YB% zk4J#Id?RxP(k2s7Dy9`>qmvljOLjGBC$YX@M!q7-jt9Nrn!H|Wfp7!7uPX8OY}#~E ziHK65yBAi;#DaJ5WYIjc<{1|Yp^mQUI3uvA3w(WC9d#|i-Xrfe?d2%>o(K(Z{2ZCr z@#(awz7ihKN(qNNCP_7iS!tV`#|`b&9A7e0M8UeyHM$Izh!|xHsP5Jq~&w5Qh8Xpx@U}SN2 zOozx(47WC!A%1ZV*1>r)F%+8)RX0{#9ni;mjOcqI9qU_VxBFw`-EbEn^;-D!)H4!j zv2_o~zAvK`&I=^qx`2i+_}}{2M&049df# zByNO&5;zJ(gkzl~YnC^8_fceHb1M=_24h+6(CpxsQbvR(*@mnGD7RcvA;YRPZr5yk z`{rG^P0XP-03=3)az821ow$kaqOthl=qGmp4DPa6k>j3C2013YHdXd8>$R9QV#Hpv z{7g|Nv6m8QV(G@+!K?f&9%kY8kxrWtfvk1_>#z5rHa&7536dwL?>P%nuicqGV8mgQJ{R@>Ra#n@pCSd8jaa(oK^>WC8+{*e(gFXtw}g85l6 zQSUb;4ppVi*QF*yiy4!-4=cr@#S|W)8}#tmWz8R|qRL?~i(@6~dXH6!v87*P@53fX zLlRR+t0(Cg=Dp|svWu|p?4q%*<|Y1MCkUPKc=@%WK%BvUc+~OydY$r)Wwj{Naz~Zl zYNP<)ldzW}!W-G709KC6va)i-5Hc=Df#a~ea!>%GF2tE~Lt!t*druJ7EOtJ?eOs&S z^zkK?AeQ&?OPiusY*Xf{tY`-1&J6O;AV5kAq>D_E4@sf5c`(?$gDnO&M{X*M9`5@D zi#^`lJ#Lsleigy~?GkpJ527uMT{N)p2k19<;1A#VCktBhKH%TKG z`CQ#0@pUngz!&790-)Nqo)Av>t9BEt_V0r(>9?`-&U zt|u^#9_u;y^;ic1KQ^g#hKsPuZ(9FV$YZ=8bal+bj;a5?nKjqypWzw5whnzNO7shx zY|g{z*EeXN{jWL1uT4`~VIO%Uyi3OQ@_s9X$*+@48ts_rDs(304Dfl5*6m13PPhVqsS8?$9 zC?+2`Np($sH)DI*MS3RB?`G`dDv|x7i~fQ?6+g^sKc2rjEk3EZ0RGofv}-clB2IuI zp~QjB5Qnoq_OI;}OmL0Ze$-#=?jL=*-KE}5g7oM*PY`#qUrB~}ty<;CB1O9aJ# zikbh9y~O_K5^&()Q%eUa{a0xP&}}_x&NTrOoKY2(ra+!A+=?pPNiRk0lRg*b3!6w4 zY#S8wv@zNt{d6=J&J$tZzy_m703HA`0H-T7X=Oa&p{>PiFhVB9A!m5X(D{rH=M(W= zMxD7W>98T7WhreJgOV?Vg2OCZucUzpQC+#dZ)ex}@G zW}o`wDqQ5jQ5k(?t9S}oezJ9lj z3n=b^PsBdI{RUFuZ@*?u)CW?%LGT#Br>+9ggVaZgByTTq15EbqqSLq|>q@C-+X*8c zim1oQIG#qBeG4l@-@&>Nz@rBVI8T@U(nU1_q>Dog;C9ccz#*3To#gIBc>w(B8u#hOrt{JpH976Tyv#cNG-1N}{PTq5lhZcz?X-gd7vvdv z)AQi)t_+b!m>`G389VK(@i0YF=&cObG#5~6_WW(8ywd*$!*;|*2F1e*`mQz?`IKc< zUG(f3pB%pUVT2JH(9&+^w+yhapNGnns~JMJSBFd!4AT_UCiv+&d zlm-IU#BsLm>>u=?pbiQqBpvtO8XVjm&~7#ZFzch<)n->k zK-vzCQek?Jb^KWm!SLMbdpo8(i{CZ?3WKU7p`sAm4f~FPQl(4R4;!H(GRodGV`_GR`dEEdz7coS+Z; zfCjt&f)N--hM@J>!f}e8K>h8iJXCA{>*?+^S~SlUaq7Rf1#Ow*_1jt*c-7ee7~wY3 z55FV8I^T9~JK$~GO+`8G-WcWh7TGx6z~sQlRP()ryjIDApz9YtGDuj#ri~15{|_4u zG7He#lAZSc0KkIJ=+^GDBSHN0j%h$kPQ|_B_36#CSu$bc;%GqZ?A5)vmP|CDm9i@prCVC^UxhJEHAN!$NZKqQVpTM z=~x;J8Scoynq7h0I+|WCy9K73z9b)E;l8n_L9s6z8-w z>sIW1Z2Nj$Q83v%QB?7T#u>g|voZ_aHS*i`Sg%&@$N99s zF&TcvHkag|=c@P&aNqNvEs4H!_Qc0vv~Z_>X)zyZ14l=N{1@{iSa+mDV`g* zE}b!>7;|H?Pdd^H{6@?De+Sc3rfzchWu<;nQ_T1w=(f{(v6E-vg{bN+tYkC1zmL(+ zkaTvr!IF`j7FkJ}M5*w#IPR_1w@L-1IoJjv#nxsQ*VKG)gis-Mf#4bMwQ)!MJK+Z} zPb1m0GCR~oF$LrF#7Y~#C+n|QU0m*j$2$1%+WC!HJ5$edVT0<|4RU!P1^2QjX~La%0Y7hWD6FUAMXnqAO( z(aooc4+qpgxN=-W8e6MlIainB<|8&WDO?bWZJDD_ zDLnLNf7nM)9KgIbfapbaGT_L;u#CjyTpe9R@@b=sWxU^)1~fU*CbEJlsVj*z@Nb@4 z<)D`3);jrOahR{Q=HPiB65vEq+YrAYL3k5_HZ%boyn|JE8=qy#+`QnUH6al^FThi* zjm*Cs*9vg3D;{3nopnDLTt6p=pIUJ)5DuT(EZ>OUgVtVBh99x5G98$n^r-1{B5th0 zgBMBE!*2%U15=1|OuY_4y+zQ+v2n-krZkyPADFw#X zskc9R@kQ276~v;L%I{ykqE7+Yp+U!hnvA656=6^+HX7ZSu!AB09o)@=_lm9u1kQ;H zMiG^7zUdY_yn2Pv&Bk(n7$OK3#;M(p?th`w&rL=fz@60JZKN~*ynwnltY5>XU5xa@ z_o=I9KQ{K{e%B+R$%5SwlJ|nLFAB92oQo!#ri(u`Y=B_Jy=X+(Rk zQ+Z4iN4xso7-lvS9QQ~CHJrqcdWr3Rf83DD)=t;gJSbE1!ajFNe@YtfQ7{YRs!NHh zfWAo-gGF8D(4Ti^AKmN+zBRCe!$m;}&%5 zhn3lLK4!lsd4KR^rEbZGPZc@%&)SLGNT_OoJ?O=8sP104-Z>RIJ6-(|e}W3q6CNo_ za2l1*Dnb`QdZk4_^NOsnjysZkI*+tN8w>QW&R4D*YKz|E=FZB`X)mhU9tvDkS+Aye z9a)#-&hU8ud0cKZESRUQ)uYL2a;_~SmCXF@GM?vnswa)kLxa9=kh;0Rz3da`>>biz zO9&Vrq&TR$%z} zmwCdlF`Pu)g77 zI`Au>&)Ch(M6Ah0HoA^Y>$0=u=}w>{8jG%5c;c06U#N{Qp}K_~gxduak&$SPpupe! zkZ^j}*T3R&%Z4DI$xgHauoV1#)X70_9Y`|%jd;kl`eE(ke)vYMGsRZziS&A4$dzqQ zKsW}HpDKf{obQ_Tl-Nop4t{?xR2H2Xe;I-a$xGlAEq=yiY5z<+X6F8Dw+K};m==+q^W(QhK33ca&-!rWavqlQ_Gt$}T^q^`h{#NS?S*APWh>+95UjOY)#3` zlP-L5E~Cv|l*I{af*JQ>maA%@<0S#=JZkTx64IWvOGc}|M+W-_qe;L7pK0_oG%iKw zkLC#qc9SMt2fnD7bW7=*^u{Q)GvF-(Lsit*wl0?S&-xsObx)d?18N@lZJk{$O1hb6-J6(!$U~RC)juA?g#$+ zI5jI)gTko4qggvjEIS?=O427q#62>^Km6mM()FQ{i#ww z4gTOeq6o%I)F|COfyA4`MbY;WV*PM6#Pia-k%>FJ{}s24)2c^KXqXy>f5I_TY~c65O~@HI7)|`yR(H< z6)?rnrqG7GGk=Y%C`9=BWlZvo{=~CKj{~RoNx!&&mm{IJTz_Ot{9Vu6N)IV$7GH0? zl!? zmC0d3{)^t5+Ti|KMIN4*Wz3b5^f6{dX>+)cCck4;^P%xlX7qz&LPkP4mRc}BGd&NmKbfrFHc@m znDvY8GG}*gFkJ!R!TE18K*vugfANC4t6k7Fm$&C@X!&vPW9#)*~q8ERJL>!C@)y4L2tSFgAFFdIv4z0AUXwn?Wan<7k^C}iOU~Ogve;1JF z9$+k8wGDe0S*eA0pH$#c6z33C6)$YWGg-pnM$EL%AO4|;c&*F#S`u$$Snio8xA`}% zsQP`$2%(NMfT=a!U-1Mg`t(^Ug)?{X3qa`1{l24a_Wj>xq~4FbqLQ3>H}y@#-m|G}$Lr?>oQL9tn2NxoB|1U1 zWgc1^!j7mFP9I6|FmvXw8EsSSX6*MA1Eb9mjsC~%Gxw~y?2nrW#~r^5Q|o%|^ltI^iX zlgWBc{x7fEHa&Z+LwPm3X!4(-oiu&{{eE%Gt26yV{jtwG7&^!d5FTnahFP!>1O49L z_yeo2TsF=eSNhKiuhp*n4C&HVCPEGTgN0Gt5QcM)>(Lw#cHbEXXtMC{qs(A|s7sYU zn3i!B8~5|z({7`Awz{(~wXGgT^lcN9-*?mbb%i_%Z%;6jE+f^nr1#kGM8WqZXf{g_ zi^Ge0V?;|YR|mKcSfi?VQ?+b4aQU4XC@8JgAAwoKjm1UF&BwFWEz4uoazrg^KUk-0 zCdkCEfItrhii{cXxOL2vgCD*5R*B2FN--Uon5=BNXu#E`jd(6f&yBapr*3aJ|7&!P zg}8(;nPi2OPb-fJ)ZsekF-g!S7-eAaS7N82t)@O1VHXDj(mKtp^vzVAs6|i=&6=R= z%08M+v5=D-I&z2jMsFf5x{-phKg)hALJ_Y@!b!~IClD6*0F|vsj%xt71DD;m3y2Rv zVYO!dH(0cd#YurwD!v@Iv*j_>Dykfu)9;T)ANcV8Vt9gjEX9_EX$guDRtuct@&l<-NC!N87yq zzikxjU}%*u^NkOMV^pFU$3+X3aW_r1(&O*HOBDT-{qP}n@vU22hDeE>@n3`U$4D0Y zv&{F3((zIO2x83}9IkF7ZmC^ur18da!MI~)13&6Vc3&oiY$WTL@ixI4|4gl(HKnv# zdYy2h&WyY0VigN%M`C>8JY1+eb7 zvLNRH^!M2&&1mPhK;*nD49n~#Rya;{HHm7h%;){P7??cAmwiVZm&;bsD6>}cP0M-D z3)=y>V4!`OGwoz=#Zj#w<7(d@iafnq`y=t37d>IFFRa)saBz#mk$-he>34J(SUmNC zONLw-X_A>u%XSG)PsP2jTn>@Ty({ox(8jUG@_y91zc^X;kC)(QY(_)k*ZzF+l6=RH zT?o4L9pjdHRD7t&6E-EOq)tW0#>C6r^NP<9HTzC{`zDBY(-kC!JA{IkW%ObLbt>V1)BlY{^LBj>w8s zGURz|kyR?q6c*OS5AROKZEAe{g~%0}s+>40-*Md3I5#@K_d(Fp#C00;SJY1`Vy&0S zm}sZiGK$yrL>{wG6co~yxizlPLNAgTPK(o=pQUFfFh zvE4rxg!9jsr?PxxAFujji`sWfh6o>#jP*1ZM8i6N=HegF?2xO(>1{l;l6jqPm(Hq$ z@CPw>d5DU0Kj`s^6sfH%%z`}0ME?c}QdYBrn#nzar$sa6&%KXl3CX~5ey&J5%9-x} zq%=RNH>kInjxwZPO;NbEk3^@1)J~gX-yM~sOvphj6OwHk{2Oi9FK0TZ`ibKBs)hXL zb;}Pi{)(*@3zxvuv=VFi$i_Nx5Kis)hvz~&YCeK`O7!H?LZMKR+KLJ*YzH~o7K!B$6x zK3nm7tx9*661uU)sm0T)7F$KZN^~CX25YK6v|ZYvV#W8Eu2&BJ3Vz-WPAHY>;Q%Ms z>6){XLS2VlKenyBL^J@W8Zcx>F;mp`4{E#_TYEe56z>802YXLRM?X+NL?FPfi-IDT>~ z)QMYwQd?DwX;=T$0^@_<@zON28Cn)(P-d4DchPDQUX;I|R#zY%VrpxUah82N^KYo} zL*US+2(jF4*-Q&mjegF}(%Z1=x3z&K1?vwuXb|_ciqB-c#3RVfG1br1?66E;KbNe6 z(6B1#$IK>)Yz^cEFyV>5M$EY0Ovy+6Mngv_kBZ7No5#16zf6lVbh)IW)iP?5x)ReP za|f@%jU3hVHQ#DI%Tx_B`Zyt<;5Kib)KRE}+X+&reva{ejt5{KR?n#@4;4ha874|t zYk!;*Lx*3pvzfov7qks86YzU+{*!*m@X<67Yn->S)=_fmSv5HNf3QBAemqE=Br zMT#K3BTWzpAP`z;f{1{ipY#@_NfSaf6d{x#3Q~kXC<>yW(xi8RP=r9FcS4aSNDC4| zLb$>2+k1cKo;}9-b^n~Z-#^J%W34gPde>a@o#mPHr7ko+NZOMazZm&k?FX$!Pl>bM zpAio|Y!V;s!v)*fblj?=g(oAJ8B2eg7^wid($icOkSh}Yesruq3c(foSvLI+cw;b| zlId^+rwv|4gEL(l7xA{4wk{qsSfz}cNS3byo$2(U66?(!itjN#c69Ih_&TO9J5TOT zArJ+XXDd=gbW6trSzF3k4T|*~PA(EgvJ|~}AV*#0m9;1i^XjNnRvJ4uzbUwPx=4$HYHzSB@2WR9rF4u z10qhN|9%3}dc6Ofu(w#(6xnsxMT6MpSN_-qRbH2fZux zGyE%e3be63_1-&uYmjL+m>bUJ5nyHhZv!v^xbzIj@UM}0$?s14eXx{`8>IAO z0ol{5s2mnNe+kxtA4wT1KRi_FNwk`n9|m0t$Tc|D+UZLvx$Q%EZwD$Mxn51j`mN0I zebT4uI-icUw*5Riz5q8Ek~_xGzh`JC2Vfwk<6L3oPku&UM7Ofpf)3Dt^h=v{fu82q zrMQFw(SKyNOs+j=8B65zUy~tOL7c){Z2H+rDW%!62Ygf63I}uEQXJC(Vle~m zvAGR7j(}dXlUF**$8{e)6SATPbAkv;>FE4C*eFj=x0@N~`hR6axW zRj?QG1~$$S2V^QUA3i%Azu&^2Eu=fjmPp#1SgQ+kdbIhmr9n_FP@vZ_v}|d|>}~CF zji)i!v|pE+_=ZFal0hQT>^Nj(8|tm<>VE-B!Ygd<#lhil3dB%|fUdj==T^>E+SaoT z8JZ)xdmEowD*~wo9!!)zz}^k>&v)Pi;M*(6SSo(H`&H_Y5j(<(#EoKQXm{)il`Mu_8kH0srQ}Zd4lI1V9;c{d} zWighE-0fljd@Km7e$bF>i{SQ-8fjn7X&B22x(F6`2nzxCB?EWCQz@mKst@rMro2oo zW5?iMb04fWIm7t+>z1o4RbTlf8RvrbcT?#%NB%(D_%2#HRLoeb>sg0E*Xj*+I=`lb zuJj0&+{|j(5M`q$_bG%G=8ZVQj@z^DF>jTLC<-F@T>3jn3+3TUif_U!UuUeVy4`30pD z*Ov!b@G4$XTa5R@>lW9FxXYSMR~=!}v&WIG$J1fz49DP2OAiGMk`tuvqV651rwXdk zjI!QtS>7~cuLwB3uQe{Q>~ZfzY!CaWnIU!U$MF|Sq(Mg0ca^GZ7twP&JZHP90@Wa^ zWxg^JSE3vf_(N8+#M+7y*2!2S7dmzSJtwy~$7Zt)IH(`GE!(HaPHz->rfN%LbPu-`${9zp;zPztmtC@$+?aHmJD;B0k0=x7PHI`` zTDe3f2H-c5*fW5Tr8J69D1>BT`6#Ki?E;~du=^b$10 ze1A0h==kx>w#v>RBe!YR$m5*$I{Gf|^3G$|*NEapjfZn2xqOy>0yIob+TOQ|Ti}Xx zlF~*VSL{6eOkrHz<6450-1F@txs~+$%LeS&knNk|l6KBt?>wMI^JM|0NsJZ(t3eiY zGFBXz7ZXJiUd<3O=lW-Lj7H@(7m|8`S^)en(Y_Qz21~WZF43`Rq~l0tyAlJKbV*;c{DI3%dEVoWDRnDCD4#5sizr z=w_B~5uUJaPCZDK@YWye3hYO%vufM`1A zehtmXBqv3N#T3lDXD1r!7;ziDqwwW1ogR<%J)yu2Z#%iEVO@B&scTliNO3##XN7Z` z2sbXgcIj(7hkDj_?PhO_O~an#{z}JllTAeUe67FTm&?Q+gc>Xp;b?JnWqy?kPnX1M z}j70~XK6}{#083I?##&YE0qiZf=QpTersyRsk3aWkXOUu&i z%cb35Ec6L&mIpd7i`8V6ts8#M0KzRgqDlI6C)SKb$U9cZU1mQ+Eqa7uocjdG3`W^z znIC1XK6HvUsg|wOGj5^I^f5ahM}nNdnbOQr>l%XBjT>`>*!R(iX|eB;=9fe@d3nL~`!0vN4$d^>y>p|zw_CxCiFPpHmoa;>1 zn!6sIRdFod!tKL?@v>}Ij6)E+ncUNFe?GqM9J)|5ej7k@Oqjy;(ocnzQr;G$fDee9 zY=UZT43TDUJbFn`v-AWfaJ&vOqR5-upsMEGbA+(#w#jFzd@1p;W>q=1+iD2VsL~>eUTh^$`qEr{WNju@@qOu9R7E;{=M@NWBM!y8=p+koweXc>>6a}xD-6*c7hT7@0^I=2Q7`Eo zn20Tum)CQ{_RP>;UZx13tH#knQ2J7w;*(CYMwskVJ=AOyB2F;(_?lIJH?Q(Iaia<> zWjAUb-`hSWDc~gTHqI)o7+3Q!%&X5zwu=cO8UMXFzkHYl4)X5#UT;EKaC3k^H0b!t zypuS-jYGfEd8@1Z$T_jQlO`NAJEm*rqMCoW;ONPPLRm}vwyF`d^S=&u_I0zSL!{06 z0J%D7HRr^Nl(N>0L^j0sloR01J!S~4?5yi8c7sXt+iayZD>XmQIHxW&P#%7ev$R^& zQ0ZWYGi4V}18Mgw1yS$fnsC$V&WphE26_OqP^wPljdXi^a z8E$Lr*$zANr@vD1==+=42&fJpXbiC@Ka#*;OeVjnsa}G=AHS_(i zpZHq}VqZHNbKp;f=_RhiK}%<=YEO9^EE&EJ$)%9VzMfI2DVam2}k~KLsLWlRMF#NsOip5v91ttIisBCmuqF!8YST& zH_JLq$9#egGt={AgrrWE`XgO{nFIIy=lkrU#w?I^hW(43yOTi>ceC9i1VH<@HE?wE zznsFR!yVik))J)c!e(CGgC95h^CZ3hdXn?X!u4!E3EL>y3$}-CpSVw)nLz0eCpWjp z(2;fW3%|u+f<7_&DTf&UpB$pBQ^oZMzW?%I85k1JQ<{QXqV>Zw3U-kvAp?ZSn&RYJ zwDN!R_VW=|ZD>BZu9?y`qZ#ADctwJD&-1rXrNslCjAw*q1y{~$BimR>T<*nu9ec8PCb#%!&ufgJMow5X>sDa2CMpL-i0qMbT$cBzAY zlWQ)YAiQ1Ld^?C%2|L_jt8v&qZUMPyBGJO-RqJq&VR1Ck1>3(QP{V1PdXCm3(Pb`A+7#Fg^v>MQw5E8 z_!yKrF_@H+VuyowsY(%Ue3Y&)Z1lTIsTCV&nNJ}tyoSX(^rn^Ga%jyZ`~4brqI3XW zs4$^fv!TPfSwC{>(>di6_T%%?l3x4QNGwmd7GWUoZoIT#d7r+=>&kq$!j7g56*BgS zH+673A+ROz@viv$wDeN8o@RgT3Af+b?`L%sOAU5kgW<_|J~cy7w-B`=HpC$K>u@UA z>&=@K8xPS(sR-x{7dA_$`=Z_M?wg(Py~SL~=9z3u!qTht2!_z_b00pE6s!JCaZ z44>*=QljBb*dA8hXFGGO#cdmHn1k%+BW>$l>Q^Ub?MiT6I!PuFb9oNp9S#U=)-rTv zXn!H@^_9lCjv|~yB6PFvJ*kJmY#ACsDQec$Ebqph&Rutdw6Z$G z9Acz{t=gI!=9WXHVc>MI3*l89EdXCbNn(d?WI8&!bz$)l3V`^YjOBFxmc~=CXk~P7PL=)zVsA_E+}zV#(kD_+WCZ|UOi2)S zOdHsed*q?p#opfO7v5*-w?zn&UTTM{1?@v}a=E{?Ku6qZ%XM=4a$`!D z);Qx(1rA9edhGGMZ96m-Tw?7UykgyTuynm8M>mcsRr<+<#Ap$`#jehG`zebwz3{KmcMjmN?XAMFgV zq2u{v1^*K4gd=7iZ=f4jrxbh7=qU6y!+aO-Sg~)~aF6sgwlzw4iPZq0cx{V+@Tj2F z19*U5X+cB@1nbQ5Z4c!ZsLrWC!;WLyiCCX59+-3(;p198QEk+-(K`?XvV3ZpF-SV|*@o~5G8B^|DGTLyI36gH-bMrO`oECAV8S=A=lD!oX z7j^CVXvepY^fTU#?&KI~#FgND@};Q1-}~;SpI(nm!(&2Q4F=U}*$Bqu)F{WM-jarN zzDpAu#ap+=WMHS*>_YUP@X9rgpZjLAfMPUqVHu+)ZiZ`cF1@ur$Rb_L*&7blQ>ShK zpYunXKO|+2jd*lYOrOc$T|gXkIkO z&-a4LJSxRB{1$f+%no~qY;Qfstx&R5_x7hDvdJ^3lpi(y&bw~QrM2hPdtuR+WW^uS z{s~(@_p{XogRLgZB@S&oa;u;2%{*BzUaMG@qgNrp=YRdyC*uk}3=PZhu&RG17@99) zpvTL6yfHJ-t)`;m*NKh0Js(ZYkw?)8N7j9Jt5BhlsaVjV59}x9V+*qTAwPDPjG>5g zvYKg)#hOldCy>zEgoBz&(H5(M%8|z5`?&R}o4ErIN-7;HkB8kKREK=e&%K2$jjPM@ ztib|o@FS(3RYpN;Dld>mt{<3F?n+;KV&eT=aZ4_TUl@W<_t zu$h4_Ze%||UU`x#+~@HJmZ*XAni)FE0ffn|%2z@@bKFF$>X4hanT5YFB-dEk}PkLHQ6tVv5Ujv}xP$qig#{ zX<&R{G@UqM((krTum1hpUb;z#c_&vtYyWA&6}fe|ldJD3y((?d?2y|}s3}izFLmnK zN|Ovw@y~Au_(8jKAI!=v`l*jKoY=59_I(ja1Df?dc9_sXYSrsA_-7^{t9giX@cQZ0 z^t%;?u0KxjlCNS&X!|>F{du~wGQWhdGsw^U9f5!XqeDp`< zSCI62HSrrvKCk$oshe~9%dQF_=wB9cs#+@ag z4a&OM(Bm(OuO_GrjLC}OK8!Uxl#R_2-x8Vj^F#M}I%{57lApIfVTMfoEW3A`j+&n3 z%nOM6E^{YyjMlrktU>t8qJdk0N6dG>o^J<6$Sy(vu_pK6_g}MX>dDJSYOX{&>fW?( z0$BSjy;^HfLNN}Z2`nCD)l^`<_}2j&IV60CQTN<3IVtA7B=iC2^$3~5qy6Kr+s(j& zAPEeWv;6t+pIizyqKy(KlyQd|hGPEgg)33jA>4Z#ZYlP2zm!(OMV0R{&F=087C>}= za(orWtbS*7sKJIoADtp_)6~7Nw9F%|Ud>!JO|WinQfkxRy6lprm4or1mr3p#>^I5Z z2Uf|S-q)}lJcW}~KBvs^<5Ge#Tn+APuco%M7&Hb2y=*qN?7IG5D)V_11Md$4tXec@vPvo7)}8|Q-0y9 zZhb@QUve9Z$XKvXi$2ul=_JD_1f9JFS`5%*Y|{F>Q*FD_WB8!Y1a1~px~=JD|#O8VaMY+6@Ub>R!kkT>z3X$l%D z+RB2PfOfXL&y{}>F^X|@jO*j~euKeNq+v^}a!Fz?z6x#+Z+!T&O5!j2z0h7MJ?Zot zFI-V?Av*$#wP-jk^K>Q?iT2keJMYQ?J?EwzwqG{x`+1 zkArqP){Z|9IzEoNS0r?a$qt@Sq#$(qx4>~~wsEv(Mp+VWE`cA=cSHL*LK6m#&7CJw z1B10$WwasW}MN*^YWt6z5WQau#-gp#A3T%Z=g6opew}w}Mi!+^_rw z6I&yz_2|omvDUq<6|m~cSXlS92u^K)q8SzzG+}^5xL^ARfcrf!Vj>RV&v1HrgbXg? z`NnXg;JWQqHhRd$FYzs40>WKlOiYpbJdD=L6)<)q`%iw32c{y4lxQtlsdy!^l76W8 zYs)j(I?amh(axnw4+_e(Iz})E@8suS$wyhI|6a=6L-iQtTIm9!5JHl0g^w(dVC493 zg2^Y8WNFvi?9ygFGW_cI3dRHh*ced@o?3u2Z9M*zFB_{J>u9J47s`;XK&Oj!)|>0T zc_aCyF~a^~YJmhiY1MCSt~SOb@Lfusf3t-D64W{o=0&rq~o{$n;E zQoq?G^rWT$b0erJCs8_v-NcLCntkE}VZjl@=DZ%mqS zM|d|R81OL4Xm_pXaR=X5?rIhC8aUr!pryqh12KD6*U0ls_+zDu=G*k3zaZ^m?S6c3 zN3Z>)2a_i1@<6v)PtrjJ-T4J!kSJhg;e6Su!9iuk^cA1_EN4rSuHk#9Eek0|*i zG%uh#GN1FO@K0c6f!g6`iu<=!d(TV}I;E0QxCEi*B&hE10Sq*bL_e`W%J&)#fPqC* zDW(-Z3vC`WP(cXzlyKUez$#EyyXzP@!|6cYX>wA>$Zcposw??Et)6DSU`_3-oK19>vsS_0w=Aoksbz3s?g@_B?vj$_dx}C;xxi4yrF6F@F8p$O$b6P+bHFUF`b9a@oJtCK~@QhHp95W8>bHnSZ z8$T8_=wH=9lgd3(O$2p&ioVOUdkzntQR=@hyV*M#FnA^VvfHzmPsQBsS6DL_(5sTt zH1@3LpaQuI&GM_B&u`z8S~hoPTe|FhqpySe#Q>#pZg6G%LiVMd{Kf;1-&Im42(P?Q zbGc%kF2&nT#ow(ycOx^+!q=XUdxK{2Qf#HSl2V9h8Uz)loVI2nZLZuCym5})H?Q{& z5+&|=w^1Q8$qMdgkMziS=QyvLg|JjXouW5zaKpg$BqI`zg#T%wC-@CXeIwLNfR)@g z#GM~dtF#B(hx31nOXh8JjkQR=m2grKyVRP z>e1cbNGJf;@tkpNezlB+eMNY7crq=Z+T?KptPA}RorBu29lqqe_?UieaRQ=k4hL>_ z0HF_E+5TzLhR7GfQlC9fsP%z$V>Zv^i2*LvTYRzV zAfSpu!{yBmc_qzm%dK5xD!QTaX#HfxQael-_kLmgg*?+uB-JoGK41xt3X>6G%S2ft zb1m1cdWn?;m8#|d5frza?$x~gdY}E)=yHww&bnS49R)k@$`f_fpJ&IM)ke8?mxY|o zLmzyO;Ll&9JK#MB*Jc%3^;mt_8ADuv^8^nMxMjQYFZ;C$*7b*sLP=6%~JjioNlHnLc+3DMy8 zZ+QI6Wpf>4$$JzY^JSQAA{wnEWRq%zPB1n#`j%=|1zkpMb#IF_nD`Y@=yAIf;oFz? z;Z|nTo0L%Q9naMk?e8Q8O$qR$UE66XzG+A3EchlD8;GNIg<#AqQvrk165)y$mZ7yh z0kjFkpIfHWWo|vMjDTSn&(tO(gFX?xI3WCV{o{>HkEA3o=b*ft%YizY8x7RXDopyS z@uUTE<7oiJ_W3P#Un+O{*94cJR#W*Tcn&#-lH=_-`fW!J-z2|dd;M63Ston>czTWB zHmUy9;pdI&x$Xk4(hqy9^_%eK$>OL<^i3 zpE9;vBq(|g8eP_N7Kv0K#xLce!@iY_PFBf!dJ4X;blc7O!(<#R$@8wyUM5a<;oOaH z4@y$cxjp>GJkJ6%&rchsUN=B%-lLQ#m^k&l=Be)4xUwc14)+#+ICY4B_gn7rPfG3# zxL&Kz>kXFLOVi5k7YdycZ^-1S`W^k?4b=*FoV6gdwQ&8#e8}o)diCGqjQ`{| zO*7e>z*q}Xr=?^SZ}iDUX&$C;WBx5DN$D}si8=us3*^gLVw^b8J>^{yYE*{icts=U zuOc@e{Wq2oL+MQO+2Mc8OZ=}+-(ZHp{q27nj-MSlSs=WB8(gc1m?G4lc{aEQI}79_ y*(WHdrUN)hqYDZSYX9fZe`eyhDEvnz$RJE@fA|wsgX&Y1p?}jzr$oy>^8WymjktXP literal 0 HcmV?d00001 diff --git a/docs/source/tutorials/dynamodb-to-scylladb-alternator/spark-data/config.yaml b/docs/source/tutorials/dynamodb-to-scylladb-alternator/spark-data/config.yaml new file mode 100644 index 00000000..1ba8896e --- /dev/null +++ b/docs/source/tutorials/dynamodb-to-scylladb-alternator/spark-data/config.yaml @@ -0,0 +1,26 @@ +source: + type: dynamodb + endpoint: + host: http://dynamodb + port: 8000 + region: us-west-1 + credentials: + accessKey: dummy + secretKey: dummy + table: Example + +target: + type: dynamodb + endpoint: + host: http://scylla + port: 8001 + region: us-west-1 + credentials: + accessKey: dummy + secretKey: dummy + table: Example + streamChanges: false + +savepoints: + path: /app/savepoints + intervalSeconds: 300 diff --git a/docs/source/tutorials/dynamodb-to-scylladb-alternator/stages.png b/docs/source/tutorials/dynamodb-to-scylladb-alternator/stages.png new file mode 100644 index 0000000000000000000000000000000000000000..10fc0876e14ff32ccb6ca73e958d6a55d81231a6 GIT binary patch literal 53498 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 O@#K;E!{P@Pum3+O=}E8v literal 0 HcmV?d00001 diff --git a/docs/source/tutorials/index.rst b/docs/source/tutorials/index.rst new file mode 100644 index 00000000..27c3277c --- /dev/null +++ b/docs/source/tutorials/index.rst @@ -0,0 +1,8 @@ +========= +Tutorials +========= + + +.. toctree:: + + dynamodb-to-scylladb-alternator/index